[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