Transient

Executioner for time varying simulations.

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. The parameter steady_state_tolerance corresponds to in the following steady-state convergence criteria:

Input Parameters

  • auto_advanceFalseWhether to automatically advance sub-applications regardless of whether their solve converges.

    Default:False

    C++ Type:bool

    Options:

    Description:Whether to automatically advance sub-applications regardless of whether their solve converges.

  • 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

    Options:

    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

  • 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

    Options:

    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

  • custom_abs_tol1e-50The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual.

    Default:1e-50

    C++ Type:double

    Options:

    Description:The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual.

  • custom_rel_tol1e-08The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual.

    Default:1e-08

    C++ Type:double

    Options:

    Description:The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual.

  • direct_pp_valueFalseTrue to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between picard iterations.

    Default:False

    C++ Type:bool

    Options:

    Description:True to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between picard iterations.

  • dt1The timestep size between solves

    Default:1

    C++ Type:double

    Options:

    Description:The timestep size between solves

  • end_time1e+30The end time of the simulation

    Default:1e+30

    C++ Type:double

    Options:

    Description:The end time of the simulation

  • line_searchdefaultSpecifies the line search type (Note: none = basic)

    Default:default

    C++ Type:MooseEnum

    Options:basic bt contact cp default l2 none project shell

    Description:Specifies the line search type (Note: none = basic)

  • line_search_packagepetscThe solver package to use to conduct the line-search

    Default:petsc

    C++ Type:MooseEnum

    Options:petsc moose

    Description:The solver package to use to conduct the line-search

  • max_xfem_update4294967295Maximum number of times to update XFEM crack topology in a step due to evolving cracks

    Default:4294967295

    C++ Type:unsigned int

    Options:

    Description:Maximum number of times to update XFEM crack topology in a step due to evolving cracks

  • 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

    Options:wp ds

    Description:Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice).

  • nl_div_tol-1Nonlinear Divergence Tolerance

    Default:-1

    C++ Type:double

    Options:

    Description:Nonlinear Divergence Tolerance

  • num_steps4294967295The number of timesteps in a transient run

    Default:4294967295

    C++ Type:unsigned int

    Options:

    Description:The number of timesteps in a transient run

  • petsc_optionsSingleton PETSc options

    C++ Type:MultiMooseEnum

    Options:-dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view

    Description:Singleton PETSc options

  • petsc_options_inameNames of PETSc name/value pairs

    C++ Type:MultiMooseEnum

    Options:-ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type

    Description:Names of PETSc name/value pairs

  • petsc_options_valueValues of PETSc name/value pairs (must correspond with "petsc_options_iname"

    C++ Type:std::vector

    Options:

    Description:Values of PETSc name/value pairs (must correspond with "petsc_options_iname"

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

    Default:False

    C++ Type:bool

    Options:

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

  • resid_vs_jac_scaling_param0A parameter that indicates the weighting of the residual vs the Jacobian in determining variable scaling parameters. A value of 1 indicates pure residual-based scaling. A value of 0 indicates pure Jacobian-based scaling

    Default:0

    C++ Type:double

    Options:

    Description:A parameter that indicates the weighting of the residual vs the Jacobian in determining variable scaling parameters. A value of 1 indicates pure residual-based scaling. A value of 0 indicates pure Jacobian-based scaling

  • scaling_group_variablesName of variables that are grouped together to for determing scale factors. (Multiple groups can be provided, separated by semicolon)

    C++ Type:std::vector>

    Options:

    Description:Name of variables that are grouped together to for determing scale factors. (Multiple groups can be provided, separated by semicolon)

  • schemeimplicit-eulerTime integration scheme used.

    Default:implicit-euler

    C++ Type:MooseEnum

    Options:implicit-euler explicit-euler crank-nicolson bdf2 explicit-midpoint dirk explicit-tvd-rk-2 newmark-beta

    Description:Time integration scheme used.

  • skip_exception_checkFalseSpecifies whether or not to skip exception check

    Default:False

    C++ Type:bool

    Options:

    Description:Specifies whether or not to skip exception check

  • 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

    Options:PJFNK JFNK NEWTON FD LINEAR

    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

  • splittingTop-level splitting defining a hierarchical decomposition into subsystems to help the solver.

    C++ Type:std::vector

    Options:

    Description:Top-level splitting defining a hierarchical decomposition into subsystems to help the solver.

  • update_xfem_at_timestep_beginFalseShould XFEM update the mesh at the beginning of the timestep

    Default:False

    C++ Type:bool

    Options:

    Description:Should XFEM update the mesh at the beginning of the timestep

  • verboseFalseSet to true to print additional information

    Default:False

    C++ Type:bool

    Options:

    Description:Set to true to print additional information

Optional Parameters

  • abort_on_solve_failFalseabort if solve not converged rather than cut timestep

    Default:False

    C++ Type:bool

    Options:

    Description:abort if solve not converged rather than cut timestep

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

    C++ Type:std::vector

    Options:

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

  • dtmax1e+30The maximum timestep size in an adaptive run

    Default:1e+30

    C++ Type:double

    Options:

    Description:The maximum timestep size in an adaptive run

  • dtmin2e-14The minimum timestep size in an adaptive run

    Default:2e-14

    C++ Type:double

    Options:

    Description:The minimum timestep size in an adaptive run

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Options:

    Description:Set the enabled status of the MooseObject.

  • n_startup_steps0The number of timesteps during startup

    Default:0

    C++ Type:int

    Options:

    Description:The number of timesteps during startup

  • start_time0The start time of the simulation

    Default:0

    C++ Type:double

    Options:

    Description:The start time of the simulation

  • timestep_tolerance2e-14the tolerance setting for final timestep size and sync times

    Default:2e-14

    C++ Type:double

    Options:

    Description:the tolerance setting for final timestep size and sync times

  • 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

    Options:

    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

Advanced Parameters

  • accept_on_max_picard_iterationFalseTrue to treat reaching the maximum number of Picard iterations as converged.

    Default:False

    C++ Type:bool

    Options:

    Description:True to treat reaching the maximum number of Picard iterations as converged.

  • disable_picard_residual_norm_checkFalseDisable the Picard residual norm evaluation thus the three parameters picard_rel_tol, picard_abs_tol and picard_force_norms.

    Default:False

    C++ Type:bool

    Options:

    Description:Disable the Picard residual norm evaluation thus the three parameters picard_rel_tol, picard_abs_tol and picard_force_norms.

  • 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

    Options:

    Description:The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.

  • picard_custom_ppPostprocessor for custom picard convergence check.

    C++ Type:PostprocessorName

    Options:

    Description:Postprocessor for custom picard convergence check.

  • picard_force_normsFalseForce the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existance of active MultiApps with those execute_on flags, default: false.

    Default:False

    C++ Type:bool

    Options:

    Description:Force the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existance of active MultiApps with those execute_on flags, default: false.

  • picard_max_its1Specifies the maximum number of Picard iterations. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin. Setting this parameter to 1 turns off the Picard iterations.

    Default:1

    C++ Type:unsigned int

    Options:

    Description:Specifies the maximum number of Picard iterations. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin. Setting this parameter to 1 turns off the Picard iterations.

  • 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

    Options:

    Description:The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.

  • relaxation_factor1Fraction of newly computed value to keep.Set between 0 and 2.

    Default:1

    C++ Type:double

    Options:

    Description:Fraction of newly computed value to keep.Set between 0 and 2.

  • relaxed_variablesList of variables to relax during Picard Iteration

    C++ Type:std::vector

    Options:

    Description:List of variables to relax during Picard Iteration

Picard Parameters

  • automatic_scalingFalseWhether to use automatic scaling for the variables.

    Default:False

    C++ Type:bool

    Options:

    Description:Whether to use automatic scaling for the variables.

  • compute_initial_residual_before_preset_bcsFalseUse the residual norm computed *before* preset BCs are imposed in relative convergence check

    Default:False

    C++ Type:bool

    Options:

    Description:Use the residual norm computed *before* preset BCs are imposed in relative convergence check

  • compute_scaling_onceTrueWhether the scaling factors should only be computed once at the beginning of the simulation through an extra Jacobian evaluation. If this is set to false, then the scaling factors will be computed during an extra Jacobian evaluation at the beginning of every time step.

    Default:True

    C++ Type:bool

    Options:

    Description:Whether the scaling factors should only be computed once at the beginning of the simulation through an extra Jacobian evaluation. If this is set to false, then the scaling factors will be computed during an extra Jacobian evaluation at the beginning of every time step.

  • l_abs_tol1e-50Linear Absolute Tolerance

    Default:1e-50

    C++ Type:double

    Options:

    Description:Linear Absolute Tolerance

  • l_max_its10000Max Linear Iterations

    Default:10000

    C++ Type:unsigned int

    Options:

    Description:Max Linear Iterations

  • l_tol1e-05Linear Tolerance

    Default:1e-05

    C++ Type:double

    Options:

    Description:Linear Tolerance

  • nl_abs_step_tol1e-50Nonlinear Absolute step Tolerance

    Default:1e-50

    C++ Type:double

    Options:

    Description:Nonlinear Absolute step Tolerance

  • nl_abs_tol1e-50Nonlinear Absolute Tolerance

    Default:1e-50

    C++ Type:double

    Options:

    Description:Nonlinear Absolute Tolerance

  • nl_max_funcs10000Max Nonlinear solver function evaluations

    Default:10000

    C++ Type:unsigned int

    Options:

    Description:Max Nonlinear solver function evaluations

  • nl_max_its50Max Nonlinear Iterations

    Default:50

    C++ Type:unsigned int

    Options:

    Description:Max Nonlinear Iterations

  • nl_rel_step_tol1e-50Nonlinear Relative step Tolerance

    Default:1e-50

    C++ Type:double

    Options:

    Description:Nonlinear Relative step Tolerance

  • nl_rel_tol1e-08Nonlinear Relative Tolerance

    Default:1e-08

    C++ Type:double

    Options:

    Description:Nonlinear Relative Tolerance

  • num_grids1The number of grids to use for a grid sequencing algorithm. This includes the final grid, so num_grids = 1 indicates just one solve in a time-step

    Default:1

    C++ Type:unsigned int

    Options:

    Description:The number of grids to use for a grid sequencing algorithm. This includes the final grid, so num_grids = 1 indicates just one solve in a time-step

  • snesmf_reuse_baseTrueSpecifies whether or not to reuse the base vector for matrix-free calculation

    Default:True

    C++ Type:bool

    Options:

    Description:Specifies whether or not to reuse the base vector for matrix-free calculation

Solver Parameters

    Restart Parameters

    • steady_state_detectionFalseWhether or not to check for steady state conditions

      Default:False

      C++ Type:bool

      Options:

      Description:Whether or not to check for steady state conditions

    • steady_state_start_time0Minimum amount of time to run before checking for steady state conditions.

      Default:0

      C++ Type:double

      Options:

      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

      Options:

      Description:Whenever the relative residual changes by less than this the solution will be considered to be at steady state.

    Steady State Detection Parameters

    • time_period_endsThe end times of time periods

      C++ Type:std::vector

      Options:

      Description:The end times of time periods

    • time_period_startsThe start times of time periods

      C++ Type:std::vector

      Options:

      Description:The start times of time periods

    • time_periodsThe names of periods

      C++ Type:std::vector

      Options:

      Description:The names of periods

    Time Periods Parameters

    Input Files