|
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_323.png)
where 


![\[
\eta_{min} < \eta_{n-1} < \eta_{max}
\]](form_326.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_329.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_332.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 108 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inline |
Full Constructor.
Definition at line 118 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Destructor.
Definition at line 129 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverridevirtual |
Set the time step size.
Reimplemented from Tempus::TimeStepControlStrategy< Scalar >.
Definition at line 132 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverride |
Definition at line 208 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverride |
Definition at line 213 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverridevirtual |
Return ParameterList with current values.
Reimplemented from Tempus::TimeStepControlStrategy< Scalar >.
Definition at line 241 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlineoverridevirtual |
Reimplemented from Tempus::TimeStepControlStrategy< Scalar >.
Definition at line 258 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 281 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 282 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 283 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 284 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 286 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 291 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 296 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
inlinevirtual |
Definition at line 301 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
private |
Amplification Factor.
Definition at line 308 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
private |
Reduction Factor.
Definition at line 309 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
private |
Minimum Value Monitoring Function.
Definition at line 310 of file Tempus_TimeStepControlStrategyBasicVS.hpp.
|
private |
Maximum Value Monitoring Function.
Definition at line 311 of file Tempus_TimeStepControlStrategyBasicVS.hpp.