AB2PredictorCorrector

Implements second order Adams-Bashforth method for timestep calculation.

This time stepper first adds an AdamsPredictor to the problem. The predictor uses previous solutions to compute a predicted solution vector. This prediction is then compared using a norm to the solution. If the error is lower than "e_max", then the time step is accepted. If not, then it is reduced.

The time step is regularly increased based on the "steps_between_increase" parameter. The magnitude of the increase is based on the magnitude of the prediction error.

The AB2PredictorCorrector may be used with the following three time integration schemes: implicit Euler (default in MOOSE), Crank Nicholson and 2nd order backward differences (BDF2).

Example input syntax

In this example, we solve a simple heating problem with backwards differences and a predictor corrector scheme. The prediction and correction steps can be observed during the solve.

[Executioner]
  type = Transient
  scheme = 'BDF2'
  #scheme = 'crank-nicolson'
  start_time = 0
  num_steps = 4
  nl_abs_tol = 1e-15
  petsc_options = '-snes_converged_reason'
  abort_on_solve_fail = true
  [./TimeStepper]
    type = AB2PredictorCorrector
    dt = .01
    e_max = 10
    e_tol = 1
  [../]
[]
(moose/test/tests/time_integrators/aee/aee.i)

Input Parameters

  • dtInitial time step size

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial time step size

  • e_maxMaximum acceptable error.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Maximum acceptable error.

  • e_tolTarget error tolerance.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Target error tolerance.

Required Parameters

  • cutback_factor_at_failure0.5Factor to apply to timestep if a time step fails to converge.

    Default:0.5

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Factor to apply to timestep if a time step fails to converge.

  • max_increase1e+09Maximum ratio that the time step can increase.

    Default:1e+09

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Maximum ratio that the time step can increase.

  • reset_dtFalseUse when restarting a calculation to force a change in dt.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Use when restarting a calculation to force a change in dt.

  • scaling_parameter0.8scaling parameter for dt selection

    Default:0.8

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:scaling parameter for dt selection

  • start_adapting2when to start taking adaptive time steps

    Default:2

    C++ Type:int

    Unit:(no unit assumed)

    Controllable:No

    Description:when to start taking adaptive time steps

  • steps_between_increase1the number of time steps before recalculating dt

    Default:1

    C++ Type:int

    Unit:(no unit assumed)

    Controllable:No

    Description:the number of time steps before recalculating dt

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTruewhether or not to enable the time stepper

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:Yes

    Description:whether or not to enable the time stepper

Advanced Parameters