• TimeSteppers are lightweight objects used for computing suggested time steps for transient executioners.
  • Use by extending TimeStepper and overriding computeDT()
  • Using a TimeStepper is easier than extending the Transient class if all you want to do is provide a custom method for picking the time step.
  • TimeSteppers have access to current and old values of time and dt as well as access to the Problem and Executioner

Built-in TimeSteppers

  • MOOSE has several built-in TimeSteppers
    • ConstantDT
    • SolutionTimeAdaptiveDT
    • IterationAdaptiveDT
    • FunctionDT
    • PostprocessorDT
    • DT2
    • TimeSequenceStepper
  • Example 16 creates a custom TimeStepper that multiplies the current time step size by a fixed ratio each time step until it reaches a user-specified minimum value.

DT2 Adaptive TimeStepper

  • Take one time step of size $$$\Delta t$$$ to get $$$\hat u_{n+1}$$$ from $$$u_n$$$
  • Take two time steps of size $$$\frac{\Delta t}{2}$$$ to get $$$u_{n+1}$$$ from $$$u_n$$$
  • Calculate local relative time discretization error estimate $$$$\hat e_n \equiv \frac{\|u_{n+1} - \hat u_{n+1}\|_2}{\max (\|u_{n+1}\|_2, \|\hat u_{n+1}\|_2)}$$$$
  • Obtain global relative time discretization error estimate $$$e_n \equiv \frac{\hat e_n}{\Delta t}$$$
  • Adaptivity is based on target error tolerance $$$e_{TOL}$$$ and a maximum acceptable error tolerance $$$e_{MAX}$$$.
    • If $$$e_{n} < e_{MAX}$$$, continue with a new time step size $$$$\Delta t_{n+1} \equiv \Delta t_n \cdot \left(\frac{e_{TOL}}{e_n} \right)^{1/p}$$$$ where $$$p$$$ is the global convergence rate of the time stepping scheme.
    • If $$$e_{n} \ge e_{MAX}$$$, or if the solver fails, shrink $$$\Delta t$$$.
  • Parameters $$$e_{TOL}$$$ and $$$e_{MAX}$$$ can be specified in the input file as e_tol and e_max (in the Executioner block).


  • Provide a vector of time points using parameter time_sequence.
  • TimeSequenceStepper simply moves through these time points.
  • The time stepper automatically adds $$$t_{start}$$$ and $$$t_{end}$$$ to the sequence.
  • Only time points satisfying $$$t_{start}< t <t_{end}$$$ are considered.
  • If a solve fails at step $$$n$$$ an additional time point $$$t_{new} = \frac{1}{2}(t_{n+1}+t_n)$$$ is inserted and the step is resolved.

Look at Example 16

Look at Example 16