Tempus Version of the Day
Time Integration
Loading...
Searching...
No Matches
Public Member Functions | List of all members
Tempus::TimeStepControlStrategyBasicVS< Scalar > Class Template Reference

StepControlStrategy class for TimeStepControl. More...

#include <Tempus_TimeStepControlStrategyBasicVS.hpp>

Inheritance diagram for Tempus::TimeStepControlStrategyBasicVS< Scalar >:
Tempus::TimeStepControlStrategy< Scalar >

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.
 

Detailed Description

template<class Scalar>
class Tempus::TimeStepControlStrategyBasicVS< Scalar >

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_{min}=0.01$ and $\eta_{max}=0.03$) every time step. The relative solution change is measured by

\[
  \eta_{n-1} = \frac{|| x_{n-1} - x_{n-2} ||}{ || x_{n-2} || + \epsilon }
\]

where $\epsilon$ is a small constant to ensure that $\eta_{n-1}$ remains finite. The user can select the desired relative change in the solution by choosing a range for $\eta_{n-1}$

\[
  \eta_{min} < \eta_{n-1} < \eta_{max}
\]

If the solution change is outside this range, an amplification ( $\rho$) or reduction factor ( $\sigma$) is applied to the timestep to bring the solution change back into the desired range. This can be written as

\[
  \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.
\]

In the full implementation, several other mechanisms can amplify or reduce the timestep.

Note

References

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.

Constructor & Destructor Documentation

◆ TimeStepControlStrategyBasicVS() [1/2]

template<class Scalar >
Tempus::TimeStepControlStrategyBasicVS< Scalar >::TimeStepControlStrategyBasicVS ( )
inline

Default Constructor.

Definition at line 110 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ TimeStepControlStrategyBasicVS() [2/2]

template<class Scalar >
Tempus::TimeStepControlStrategyBasicVS< Scalar >::TimeStepControlStrategyBasicVS ( Scalar rho,
Scalar sigma,
Scalar minEta,
Scalar maxEta,
std::string name = "Basic VS" )
inline

Full Constructor.

Definition at line 120 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ ~TimeStepControlStrategyBasicVS()

template<class Scalar >
virtual Tempus::TimeStepControlStrategyBasicVS< Scalar >::~TimeStepControlStrategyBasicVS ( )
inlinevirtual

Destructor.

Definition at line 131 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

Member Function Documentation

◆ setNextTimeStep()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyBasicVS< Scalar >::setNextTimeStep ( const TimeStepControl< Scalar > & tsc,
Teuchos::RCP< SolutionHistory< Scalar > > solutionHistory,
Status &  )
inlineoverridevirtual

Set the time step size.

Reimplemented from Tempus::TimeStepControlStrategy< Scalar >.

Definition at line 134 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ description()

template<class Scalar >
std::string Tempus::TimeStepControlStrategyBasicVS< Scalar >::description ( ) const
inlineoverride

Definition at line 209 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ describe()

template<class Scalar >
void Tempus::TimeStepControlStrategyBasicVS< Scalar >::describe ( Teuchos::FancyOStream & out,
const Teuchos::EVerbosityLevel verbLevel ) const
inlineoverride

Definition at line 212 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ getValidParameters()

template<class Scalar >
virtual Teuchos::RCP< const Teuchos::ParameterList > Tempus::TimeStepControlStrategyBasicVS< Scalar >::getValidParameters ( ) const
inlineoverridevirtual

Return ParameterList with current values.

Reimplemented from Tempus::TimeStepControlStrategy< Scalar >.

Definition at line 234 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ initialize()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyBasicVS< Scalar >::initialize ( ) const
inlineoverridevirtual

◆ getAmplFactor()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyBasicVS< Scalar >::getAmplFactor ( ) const
inlinevirtual

Definition at line 267 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ getReductFactor()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyBasicVS< Scalar >::getReductFactor ( ) const
inlinevirtual

Definition at line 268 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ getMinEta()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyBasicVS< Scalar >::getMinEta ( ) const
inlinevirtual

Definition at line 269 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ getMaxEta()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyBasicVS< Scalar >::getMaxEta ( ) const
inlinevirtual

Definition at line 270 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ setAmplFactor()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyBasicVS< Scalar >::setAmplFactor ( Scalar rho)
inlinevirtual

Definition at line 272 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ setReductFactor()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyBasicVS< Scalar >::setReductFactor ( Scalar sigma)
inlinevirtual

Definition at line 273 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ setMinEta()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyBasicVS< Scalar >::setMinEta ( Scalar minEta)
inlinevirtual

Definition at line 274 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ setMaxEta()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyBasicVS< Scalar >::setMaxEta ( Scalar maxEta)
inlinevirtual

Definition at line 275 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

Member Data Documentation

◆ rho_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyBasicVS< Scalar >::rho_
private

Amplification Factor.

Definition at line 280 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ sigma_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyBasicVS< Scalar >::sigma_
private

Reduction Factor.

Definition at line 281 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ minEta_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyBasicVS< Scalar >::minEta_
private

Minimum Value Monitoring Function.

Definition at line 282 of file Tempus_TimeStepControlStrategyBasicVS.hpp.

◆ maxEta_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyBasicVS< Scalar >::maxEta_
private

Maximum Value Monitoring Function.

Definition at line 283 of file Tempus_TimeStepControlStrategyBasicVS.hpp.


The documentation for this class was generated from the following file: