The MOOSE framework implements a number of time integration methods, which include both explicit and implicit methods, of varying truncation error orders and stability properties:
- ActuallyExplicitEulerImplementation of Explicit/Forward Euler without invoking any of the nonlinear solver
Execution of a Time Step
For most time integrators, at least one nonlinear solve is required per time step; for others (e.g., ActuallyExplicitEuler), only a linear solve is required. If solution fails, then that time step is aborted, and depending on parameters of the Executioner and TimeStepper, the transient may abort completely or just decrease the time step size and try again.
For multi-stage time integrators such as ExplicitTVDRK2, a check is performed after each stage to verify nonlinear convergence; if the nonlinear system is not converged, then the time step is aborted immediately. This is achieved by simply returning prematurely from the
solve() function and allowing the post-
solve() convergence check to report failure, since the convergence flag should still be set to
false. If convergence checks are not after each stage, then only the last stage will be required to converge; other stages could just reach the maximum number of nonlinear iterations without convergence and proceed to the next stage anyway.
Actions associated with the
TimeIntegrator system are the following: