SolutionTimeAdaptiveDT

Compute simulation timestep based on actual solution time.

The idea is to find the simulation time step such as the computational cost of a step is the lowest. The computational cost of a time step solve depends on many factors, this time stepper studies the time step dependence.

This time stepper tries to decrease the simulation time in every time step by reacting to changes in computational time. If the computational cost of a time step increases two steps in a row, then it will either lower or increase the time step, depending on what it did for those two previous steps. For example, if it increased the time steps twice in a row and the solve time increased, then it will attempt to decrease the time steps, for at least two steps, until the dynamic is reversed.

When changing the time step, it is modified using this equation

The sign of the update is chosen as explained above.

Example input syntax

[Executioner]
  type = Transient
  [./TimeStepper]
    type = SolutionTimeAdaptiveDT
    dt = 0.1
  [../]
  scheme = 'implicit-euler'

  solve_type = 'PJFNK'

  start_time = 0.0
  num_steps = 5
[]
(test/tests/executioners/executioner/sln-time-adapt.i)

Input Parameters

  • dtThe timestep size between solves

    C++ Type:double

    Controllable:No

    Description:The timestep size between solves

Required Parameters

  • adapt_logFalseOutput adaptive time step log

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Output adaptive time step log

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

    Default:0.5

    C++ Type:double

    Controllable:No

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

  • initial_direction1Direction for the first step. 1 for up... -1 for down.

    Default:1

    C++ Type:int

    Controllable:No

    Description:Direction for the first step. 1 for up... -1 for down.

  • percent_change0.1Fraction to change the timestep by. Should be between 0 and 1

    Default:0.1

    C++ Type:double

    Controllable:No

    Description:Fraction to change the timestep by. Should be between 0 and 1

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

    Default:False

    C++ Type:bool

    Controllable:No

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

Optional Parameters

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

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

    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

    Controllable:Yes

    Description:whether or not to enable the time stepper

Advanced Parameters

Input Files