|
Tempus Version of the Day
Time Integration
|
StepControlStrategy class for TimeStepControl. More...
#include <Tempus_TimeStepControlStrategyBasicVS.hpp>
Public Member Functions | |
| TimeStepControlStrategyBasicVS () | |
| Default Constructor. | |
| TimeStepControlStrategyBasicVS (Scalar rho, Scalar sigma, Scalar minEta, Scalar maxEta, std::string name="Basic VS") | |
| Full Constructor. | |
| virtual | ~TimeStepControlStrategyBasicVS () |
| Destructor. | |
| virtual void | setNextTimeStep (const TimeStepControl< Scalar > &tsc, Teuchos::RCP< SolutionHistory< Scalar > > solutionHistory, Status &) override |
| Set the time step size. | |
Public Member Functions inherited from Tempus::TimeStepControlStrategy< Scalar > | |
| TimeStepControlStrategy () | |
| Constructor. | |
| virtual | ~TimeStepControlStrategy () |
| Destructor. | |
| virtual bool | isInitialized () |
| virtual void | checkInitialized () |
| virtual void | setName (std::string s) |
| virtual std::string | getStrategyType () const |
| virtual std::string | getStepType () const |
| virtual std::string | getName () const |
Overridden from Teuchos::Describable | |
| Scalar | rho_ |
| Amplification Factor. | |
| Scalar | sigma_ |
| Reduction Factor. | |
| Scalar | minEta_ |
| Minimum Value Monitoring Function. | |
| Scalar | maxEta_ |
| Maximum Value Monitoring Function. | |
| std::string | description () const override |
| void | describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override |
| virtual Teuchos::RCP< const Teuchos::ParameterList > | getValidParameters () const override |
| Return ParameterList with current values. | |
| virtual void | initialize () const override |
| virtual Scalar | getAmplFactor () const |
| virtual Scalar | getReductFactor () const |
| virtual Scalar | getMinEta () const |
| virtual Scalar | getMaxEta () const |
| virtual void | setAmplFactor (Scalar rho) |
| virtual void | setReductFactor (Scalar sigma) |
| virtual void | setMinEta (Scalar minEta) |
| virtual void | setMaxEta (Scalar maxEta) |
Additional Inherited Members | |
Protected Member Functions inherited from Tempus::TimeStepControlStrategy< Scalar > | |
| virtual void | setStrategyType (std::string s) |
| virtual void | setStepType (std::string s) |
Protected Attributes inherited from Tempus::TimeStepControlStrategy< Scalar > | |
| std::string | strategyType_ |
| Strategy type. | |
| std::string | stepType_ |
| Step Type - "Constant" or "Variable". | |
| std::string | name_ |
| Name of strategy. | |
| bool | isInitialized_ |
| Bool if strategy is initialized. | |
StepControlStrategy class for TimeStepControl.
This TimeStepControlStrategy primarily tries to maintain a certain level of change in the solution ill-respective of the error involved, e.g., the solution should change between 1% and 3% ( 

![\[ \eta_{n-1} = \frac{|| x_{n-1} - x_{n-2} ||}{ || x_{n-2} || + \epsilon }
\]](form_313.png)
where 


![\[ \eta_{min} < \eta_{n-1} < \eta_{max}
\]](form_316.png)
If the solution change is outside this range, an amplification ( 

![\[ \Delta t_n = \left\{
\begin{array}{rll}
\sigma \Delta t_{n-1} & \mbox{if $\eta_{n-1} > \eta_{max}$}
& \mbox{where $0 < \sigma < 1$} \\
\rho \Delta t_{n-1} & \mbox{else if $\eta_{n-1} < \eta_{min}$}
& \mbox{where $\rho > 1$} \\
\Delta t_{n-1} &
\mbox{else if $\eta_{min}<\eta_{n-1}<\eta_{max}$} \\
\end{array}
\right.
\]](form_319.png)
In the full implementation, several other mechanisms can amplify or reduce the timestep.


![\[ \Delta t_n = \left\{
\begin{array}{rll}
\sigma \Delta t_{n-1} & \mbox{if Stepper fails}
& \mbox{where $0 < \sigma < 1$} \\
\rho \Delta t_{n-1} & \mbox{else if $\eta_{n-1} < \eta_{min}$}
& \mbox{where $\rho > 1$} \\
\sigma \Delta t_{n-1} & \mbox{else if $\eta_{n-1} > \eta_{max}$}
& \mbox{where $0 < \sigma < 1$} \\
\sigma \Delta t_{n-1} & \mbox{else if $e_{abs} > e_{abs}^{max}$}
& \mbox{where $0 < \sigma < 1$} \\
\sigma \Delta t_{n-1} & \mbox{else if $e_{rel} > e_{rel}^{max}$}
& \mbox{where $0 < \sigma < 1$} \\
\rho \Delta t_{n-1} & \mbox{else if $p < p_{min}$}
& \mbox{where $\rho > 1$} \\
\sigma \Delta t_{n-1} & \mbox{else if $p > p_{max}$}
& \mbox{where $0 < \sigma < 1$} \\
\Delta t_{n-1} & \mbox{else} & \\
\end{array}
\right.
\]](form_322.png)
Note








Section 2.2.1 / Algorithm 2.4 of A. Denner, "Experiments on Temporal Variable Step BDF2 Algorithms", Masters Thesis, U Wisconsin-Madison, 2014.
Definition at line 104 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inline |
Default Constructor.
Definition at line 110 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inline |
Full Constructor.
Definition at line 120 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Destructor.
Definition at line 131 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverridevirtual |
Set the time step size.
Reimplemented from Tempus::TimeStepControlStrategy< Scalar >.
Definition at line 134 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverride |
Definition at line 209 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverride |
Definition at line 212 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverridevirtual |
Return ParameterList with current values.
Reimplemented from Tempus::TimeStepControlStrategy< Scalar >.
Definition at line 234 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverridevirtual |
Reimplemented from Tempus::TimeStepControlStrategy< Scalar >.
Definition at line 248 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 267 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 268 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 269 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 270 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 272 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 273 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 274 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 275 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
private |
Amplification Factor.
Definition at line 280 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
private |
Reduction Factor.
Definition at line 281 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
private |
Minimum Value Monitoring Function.
Definition at line 282 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
private |
Maximum Value Monitoring Function.
Definition at line 283 of file Tempus_TimeStepControlStrategyBasicVS.hpp.