- alphaThe parameter alpha used in the scaling of the timestep
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The parameter alpha used in the scaling of the timestep
- initial_dtInitial timestep
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Initial timestep
- methodSERThe method used for pseudotimestep timemarching
Default:SER
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:The method used for pseudotimestep timemarching
PseudoTimestep
The methods implemented in this postprocessor compute timesteps adaptively using Pseudo Transient Continuation strategies. This allows for steady-state problems to be solved via a time marching approach to reach the final state rapidly. As a reminder, the time marching approach to computing steady states reframes a problem in discrete form , where is the mass matrix and an operator gathering the right-hand side discrete terms. Using implicit Euler, the problem reads
To be consistent with the literature the current implementation has been tested only on implicit Euler.
Overview
This object computes a timestep to accelerate the convergence to steady-state using pseudo-transient continuation. The change in timestep is determined by the steady-state residual behavior from one iteration to another, i.e., small changes in residual indicate larger timesteps are allowed. In contrast, significant changes in the residual indicate a timestep decrease is necessary. Following (Bücker et al., 2009), we recognize and implement three methods.
The user must make a method choice, between SER
, EXP
and RDM
, which are implemented as listed below. All methods require a parameter "alpha", which controls how sensitive the timestep should be with respect to residual changes, and "initial_dt" to provide a first timestep length. If nothing is known about the problem we recommend initial_dt = 1
and alpha = 2
, keeping in mind that a high "alpha" corresponds to a higher sensitivity to residual changes. More specific choices for fluid dynamics problems are available in (Bücker et al., 2009) or (Ceze and Fidkowski, 2013). The parameter "alpha" is always larger than 0, noting that for some versions of Pseudo Timestep Continuation methods it can be lower than 1. We refer the user to the literature, or to perform a preliminary study for their specific problem.
Methods supported include:
Switched evolution relaxation (SER)
where is a user chosen parameter. The l2-norm of the steady-state residual at step is , and the residual at iterations before is denoted as . To set a number of previous iterations corresponding to the user can prescribe an integer value for the parameter "iterations_window".
Residual Difference Method (RDM)
This implementation is the
RDM
method variant as found in (Ceze and Fidkowski, 2013), other variants are available in e.g. (Bücker et al., 2009).Exponential progression (EXP)
where is a user chosen parameter, is the current iteration step.
As noted also in (Bücker et al., 2009) the EXP method has an infinite growth, so for this method a "max_dt" parameter may be recommended. If no "max_dt" is provided by the user then infinite growth of the timestep is not bounded and the user will be informed by a message at the console. Ideally this method is used in conjunction with a steady state detection, i.e. setting "steady_state_detection" to true
and a "steady_state_tolerance".
Example Input File Syntax
[Postprocessors]
[pseudotimestep]
type = PseudoTimestep
method = 'SER'
initial_dt = 1
alpha = 1.5
[]
[]
(moose/test/tests/postprocessors/pseudotimestep/fv_burgers_pseudo.i)Input Parameters
- iterations_windowFor how many iterations should the residual be tracked (only applies to the SER method)
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:For how many iterations should the residual be tracked (only applies to the SER method)
- max_dtThe largest timestep allowed
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The largest timestep allowed
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- 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.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Unit:(no unit assumed)
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
- outputsVector of output names where you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector<OutputName>
Unit:(no unit assumed)
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
References
- H Martin Bücker, Bernhard Pollul, and Arno Rasch.
On CFL evolution strategies for implicit upwind methods in linearized euler equations.
International journal for numerical methods in fluids, 59(1):1–18, 2009.[BibTeX]
- Marco Ceze and Krzysztof Fidkowski.
Pseudo-transient continuation, solution update methods, and CFL strategies for dg discretizations of the rans-sa equations.
21st AIAA Computational Fluid Dynamics Conference, pages, 2013.
URL: https://arc.aiaa.org/doi/abs/10.2514/6.2013-2686, arXiv:https://arc.aiaa.org/doi/pdf/10.2514/6.2013-2686, doi:10.2514/6.2013-2686.[BibTeX]