- reset_dtFalseUse when restarting a calculation to force a change in dt.
Default:False
C++ Type:bool
Description:Use when restarting a calculation to force a change in dt.
- line_search_packagepetscThe solver package to use to conduct the line-search
Default:petsc
C++ Type:MooseEnum
Description:The solver package to use to conduct the line-search
- verboseFalsePrint detailed diagnostics on timestep calculation
Default:False
C++ Type:bool
Description:Print detailed diagnostics on timestep calculation
- update_xfem_at_timestep_beginFalseShould XFEM update the mesh at the beginning of the timestep
Default:False
C++ Type:bool
Description:Should XFEM update the mesh at the beginning of the timestep
- petsc_options_inameNames of PETSc name/value pairs
C++ Type:MultiMooseEnum
Description:Names of PETSc name/value pairs
- petsc_optionsSingleton PETSc options
C++ Type:MultiMooseEnum
Description:Singleton PETSc options
- max_xfem_update4294967295Maximum number of times to update XFEM crack topology in a step due to evolving cracks
Default:4294967295
C++ Type:unsigned int
Description:Maximum number of times to update XFEM crack topology in a step due to evolving cracks
- num_steps4294967295The number of timesteps in a transient run
Default:4294967295
C++ Type:unsigned int
Description:The number of timesteps in a transient run
- line_searchdefaultSpecifies the line search type (Note: none = basic)
Default:default
C++ Type:MooseEnum
Description:Specifies the line search type (Note: none = basic)
- splittingTop-level splitting defining a hierarchical decomposition into subsystems to help the solver.
C++ Type:std::vector
Description:Top-level splitting defining a hierarchical decomposition into subsystems to help the solver.
- contact_line_search_ltolThe linear relative tolerance to be used while the contact state is changing between non-linear iterations. We recommend that this tolerance be looser than the standard linear tolerance
C++ Type:double
Description:The linear relative tolerance to be used while the contact state is changing between non-linear iterations. We recommend that this tolerance be looser than the standard linear tolerance
- petsc_options_valueValues of PETSc name/value pairs (must correspond with "petsc_options_iname"
C++ Type:std::vector
Description:Values of PETSc name/value pairs (must correspond with "petsc_options_iname"
- end_time1e+30The end time of the simulation
Default:1e+30
C++ Type:double
Description:The end time of the simulation
- solve_typePJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem
C++ Type:MooseEnum
Description:PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem
- mffd_typewpSpecifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice).
Default:wp
C++ Type:MooseEnum
Description:Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice).
- dt1The timestep size between solves
Default:1
C++ Type:double
Description:The timestep size between solves
- schemeimplicit-eulerTime integration scheme used.
Default:implicit-euler
C++ Type:MooseEnum
Description:Time integration scheme used.
- contact_line_search_allowed_lambda_cuts2The number of times lambda is allowed to be cut in half in the contact line search. We recommend this number be roughly bounded by 0 <= allowed_lambda_cuts <= 3
Default:2
C++ Type:unsigned int
Description:The number of times lambda is allowed to be cut in half in the contact line search. We recommend this number be roughly bounded by 0 <= allowed_lambda_cuts <= 3
Transient
!syntax description /Executioner/Transient
Normal Usage
The Transient
Executioner is the primary workhorse Executioner in MOOSE. Most simulations will use it.
At its most basic the Transient
Executioner allows a simulation to step through multiple steps in _time_... doing one nonlinear solve per timestep. Most of the time this type of execution will utilize one or more TimeDerivative
Kernels on the variables to solve for their time evolution.
Primary Parameters
The most important parameters for Transient
(beyond what Steady
already provides) are:
- dt: The initial timestep size - num_steps: Number of steps to do - end_time: Finish time for the simulation - scheme: The TimeIntegrator to use (see below) - defaults to Implicit/Backward Euler.
See down below for the full list of parameters for this class.
TimeIntegrators
It's important to note that transient simulations generally use a TimeIntegrator. As mentioned above, there is a scheme
parameter that is shortcut syntax for selection of that TimeIntegrator. However, there is also a whole TimeIntegrator system for creating your own or specifying detailed parameters for time integration.
TimeSteppers
Similarly, the choice of how to move through time (the choice of timestep size) is important as well. The default TimeStepper is ConstantDT
but many other choices can be made using the TimeStepper system.
Load Steps
Transient
can also be used for simulations that don't necessarily need _time_. In this context a "transient" calculation can simply be thought of as a series of nonlinear solves. The time parameter will move forward - but what you do with it, or what it means is up to you.
One good example of this is doing "load steps" for a solid mechanics calculation. If the only thing that is desired is the final, steady state, solution, but getting to it is extremely difficult, then you might employ "load steps" to slowly ramp up a boundary condition so you can more easily solve from the initial state (the "initial condition") to the final configuration. In this case you would use "time" as a parameter to control how much of the force is applied (for instance, by using FunctionDirichletBC
).
In this case you don't use any TimeDerivative
Kernels. The "transient" behavior comes from changing a condition based on "time". What that "time" means is up to you to identify (generally, I like to just step through time = 1,2,3,4..
and define my functions so that at time = end_steps
the full load is applied.
Quasi-Transient
Similarly to Load Steps, you can use Transient
to do "Quasi-Transient" calculations. This is where some variables are evolving with time derivatives, while others are solved to steady state each step.
A classic example of this is doing coupled thermo-mechanics. It's very normal for the heat flow to move much more slowly than the solid mechanics. Therefore, classically, it is normal to have a time derivative for your heat conduction equation but none for the solid mechanics so that at each timestep the solid-mechanics is solved to a full steady state based on the current configuration of heat.
This idea works perfectly in MOOSE with Transient
: just simply only apply TimeDerivative
Kernels to the equations you want and leave them off for the others.
Solving To Steady State
Another use-case is to use Transient
to solve to a steady state. In this case there are a few built-in parameters to help detect steady state and stop the solve when it's reached. You can see them down below in the "Steady State Detection Parameters" section.
It is important to know that you must turn _on_ steady state detection using steady_state_detection = true
before the other two parameters will do anything.
Input Parameters
- use_multiapp_dtFalseIf true then the dt for the simulation will be chosen by the MultiApps. If false (the default) then the minimum over the master dt and the MultiApps is used
Default:False
C++ Type:bool
Description:If true then the dt for the simulation will be chosen by the MultiApps. If false (the default) then the minimum over the master dt and the MultiApps is used
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Description:Set the enabled status of the MooseObject.
- abort_on_solve_failFalseabort if solve not converged rather than cut timestep
Default:False
C++ Type:bool
Description:abort if solve not converged rather than cut timestep
- timestep_tolerance2e-14the tolerance setting for final timestep size and sync times
Default:2e-14
C++ Type:double
Description:the tolerance setting for final timestep size and sync times
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector
Description:Adds user-defined labels for accessing object parameters via control logic.
- no_fe_reinitFalseSpecifies whether or not to reinitialize FEs
Default:False
C++ Type:bool
Description:Specifies whether or not to reinitialize FEs
- dtmax1e+30The maximum timestep size in an adaptive run
Default:1e+30
C++ Type:double
Description:The maximum timestep size in an adaptive run
- dtmin2e-14The minimum timestep size in an adaptive run
Default:2e-14
C++ Type:double
Description:The minimum timestep size in an adaptive run
- n_startup_steps0The number of timesteps during startup
Default:0
C++ Type:int
Description:The number of timesteps during startup
- start_time0The start time of the simulation
Default:0
C++ Type:double
Description:The start time of the simulation
Advanced Parameters
- l_abs_step_tol-1Linear Absolute Step Tolerance
Default:-1
C++ Type:double
Description:Linear Absolute Step Tolerance
- nl_abs_tol1e-50Nonlinear Absolute Tolerance
Default:1e-50
C++ Type:double
Description:Nonlinear Absolute Tolerance
- nl_max_its50Max Nonlinear Iterations
Default:50
C++ Type:unsigned int
Description:Max Nonlinear Iterations
- l_max_its10000Max Linear Iterations
Default:10000
C++ Type:unsigned int
Description:Max Linear Iterations
- compute_initial_residual_before_preset_bcsFalseUse the residual norm computed *before* PresetBCs are imposed in relative convergence check
Default:False
C++ Type:bool
Description:Use the residual norm computed *before* PresetBCs are imposed in relative convergence check
- nl_rel_tol1e-08Nonlinear Relative Tolerance
Default:1e-08
C++ Type:double
Description:Nonlinear Relative Tolerance
- l_tol1e-05Linear Tolerance
Default:1e-05
C++ Type:double
Description:Linear Tolerance
- nl_max_funcs10000Max Nonlinear solver function evaluations
Default:10000
C++ Type:unsigned int
Description:Max Nonlinear solver function evaluations
- nl_rel_step_tol1e-50Nonlinear Relative step Tolerance
Default:1e-50
C++ Type:double
Description:Nonlinear Relative step Tolerance
- nl_abs_step_tol1e-50Nonlinear Absolute step Tolerance
Default:1e-50
C++ Type:double
Description:Nonlinear Absolute step Tolerance
Solver Parameters
- picard_abs_tol1e-50The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.
Default:1e-50
C++ Type:double
Description:The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.
- picard_rel_tol1e-08The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.
Default:1e-08
C++ Type:double
Description:The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.
- relaxed_variablesList of variables to relax during Picard Iteration
C++ Type:std::vector
Description:List of variables to relax during Picard Iteration
- picard_max_its1Number of times each timestep will be solved. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin
Default:1
C++ Type:unsigned int
Description:Number of times each timestep will be solved. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin
- relaxation_factor1Fraction of newly computed value to keep.Set between 0 and 2.
Default:1
C++ Type:double
Description:Fraction of newly computed value to keep.Set between 0 and 2.
Picard Parameters
Restart Parameters
- steady_state_start_time0Minimum amount of time to run before checking for steady state conditions.
Default:0
C++ Type:double
Description:Minimum amount of time to run before checking for steady state conditions.
- steady_state_tolerance1e-08Whenever the relative residual changes by less than this the solution will be considered to be at steady state.
Default:1e-08
C++ Type:double
Description:Whenever the relative residual changes by less than this the solution will be considered to be at steady state.
- steady_state_detectionFalseWhether or not to check for steady state conditions
Default:False
C++ Type:bool
Description:Whether or not to check for steady state conditions
Steady State Detection Parameters
- time_period_startsThe start times of time periods
C++ Type:std::vector
Description:The start times of time periods
- time_period_endsThe end times of time periods
C++ Type:std::vector
Description:The end times of time periods
- time_periodsThe names of periods
C++ Type:std::vector
Description:The names of periods