[CIG-SHORT] pylith time stepping
Brad Aagaard
baagaard at usgs.gov
Tue May 13 16:33:43 PDT 2008
Chris-
Line 56 in libsrc/feassemble/ElasticityImplicit.cc is
assert(_dt == _dtm1); // For now, don't allow variable time step
I know we need this assertion in ElasticityExplicit.cc, because the current
explicit time stepping implementation uses a uniform time step. I don't think
there is anything in the implicit time integration implementation that limits
it to a uniform time step. However, there might be issues in the current
implementation of the viscoelastic materials that require a uniform time
step.
If Charles verifies that the viscoelastic materials do not require a uniform
time step, we can remove the assertion and the code will not abort when it
encounters a different time step for implicit time stepping.
There are hooks for providing feedback from the integrators on what is a
stable time step. Right now they are hardwired to return the initial time
step that was assigned to them. If someone provided the algorithms for
computing the stable time step for the various material models (the elastic
cases for implicit time integration are trivial), we could get automatic
variable time stepping implemented very easily.
Brad
On Tuesday 13 May 2008, Christopher DiCaprio wrote:
> PyLith developers,
>
> I'm trying to write a PyLith component for rudimentary variable time
> step size. My component, called ImplicitManualdt, is similar to
> Implicit, but it replaces the Formulation.stableTimeStep() with a
> method that reads time step sizes sequentially from a text file. It
> works when I specify the same size for every step (i.e. repeat the
> same value in the timestep file), but I get the following error when
> I give it a file that has more than one time step size:
>
> -- Advancing solution from t=1.57788e+06*s to t=4.73364e+06*s.
>
> >> /home/dicaprio/local/pylith-build/lib/python2.4/site-packages/
>
> pylith/problem
> s/Formulation.py:381:_reformResidual
> -- implicit_manualdt(info)
> -- Integrating residual term in operator.
> [0]0:Return code = 0, signaled with Aborted
>
> Does this have anything to do with the initialization of the
> integrator(s) in Formulation.py? Formulation.initialize() calculates
> numTimeSteps assuming a constant time step size and that value is
> used here:
>
> integrator.initialize(totalTime, numTimeSteps)
>
> Any advice?
>
> Thanks,
> Chris
> _______________________________________________
> CIG-SHORT mailing list
> CIG-SHORT at geodynamics.org
> http://geodynamics.org/cgi-bin/mailman/listinfo/cig-short
More information about the CIG-SHORT
mailing list