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

StepControlStrategy class for TimeStepControl. More...

#include <Tempus_TimeStepControlStrategyIntegralController.hpp>

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

Public Member Functions

 TimeStepControlStrategyIntegralController ()
 Default Constructor.
 
 TimeStepControlStrategyIntegralController (std::string controller, Scalar KI, Scalar KP, Scalar KD, Scalar safetyFactor, Scalar safetyFactorAfterReject, Scalar facMax, Scalar facMin, std::string name="Integral Controller")
 Full Constructor.
 
virtual ~TimeStepControlStrategyIntegralController ()
 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

std::string controller_
 Control type ['I', 'PI', 'PID'].
 
Scalar KI_
 Integral gain.
 
Scalar KP_
 Proportional gain.
 
Scalar KD_
 Derivative gain.
 
Scalar safetyFactor_
 Safety Factor.
 
Scalar safetyFactorAfterReject_
 Safety Factor Following Step Rejection.
 
Scalar facMaxINPUT_
 Maximum Safety Factor from input.
 
Scalar facMax_
 Maximum Safety Factor.
 
Scalar facMin_
 Minimum Safety Factor.
 
bool firstSuccessfulStep_ = false
 
bool lastStepRejected_ = false
 
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 std::string getController () const
 
virtual Scalar getKI () const
 
virtual Scalar getKP () const
 
virtual Scalar getKD () const
 
virtual Scalar getSafetyFactor () const
 
virtual Scalar getSafetyFactorAfterReject () const
 
virtual Scalar getFacMax () const
 
virtual Scalar getFacMin () const
 
virtual void setController (std::string c)
 
virtual void setKI (Scalar k)
 
virtual void setKP (Scalar k)
 
virtual void setKD (Scalar k)
 
virtual void setSafetyFactor (Scalar f)
 
virtual void setSafetyFactorAfterReject (Scalar f)
 
virtual void setFacMax (Scalar f)
 
virtual void setFacMin (Scalar f)
 

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::TimeStepControlStrategyIntegralController< Scalar >

StepControlStrategy class for TimeStepControl.

Gustaf Soderlind. Automatic control and adaptive time-stepping. Numerical Algorithms, 31(1):281–310, Dec 2002.

The step size is chosen based on "Controller Type":

PID = Proportional-Integral-Derivative Controller

\[
     (\Delta t)_{n+1} =
     (\Delta t)_n \left( \epsilon_n ^{-k_I / p}
          \epsilon_{n-1}^{k_P / p} \epsilon_{n-2}^{-k_D / p} \right)
\]

PI = Proportional-Integral Controller

\[
     (\Delta t)_{n+1} =
     (\Delta t)_n \left( \epsilon_n ^{-k_I / p}
          \epsilon_{n-1}^{k_P / p} \right)
\]

I = Integral Controller

\[
     (\Delta t)_{n+1} =
     (\Delta t)_n \left( \epsilon_n ^{-k_I / p} \right)
\]

where $\epsilon_n $ is the error at time step $n$ and $p$ is the order of the embedded solution, which is assumed to be the low order solution (i.e., the time step order minus one).

Appropriate for Explicit Methods

Definition at line 59 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

Constructor & Destructor Documentation

◆ TimeStepControlStrategyIntegralController() [1/2]

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

Default Constructor.

Definition at line 65 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ TimeStepControlStrategyIntegralController() [2/2]

template<class Scalar >
Tempus::TimeStepControlStrategyIntegralController< Scalar >::TimeStepControlStrategyIntegralController ( std::string controller,
Scalar KI,
Scalar KP,
Scalar KD,
Scalar safetyFactor,
Scalar safetyFactorAfterReject,
Scalar facMax,
Scalar facMin,
std::string name = "Integral Controller" )
inline

Full Constructor.

Definition at line 79 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ ~TimeStepControlStrategyIntegralController()

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

Destructor.

Definition at line 98 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

Member Function Documentation

◆ setNextTimeStep()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyIntegralController< 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 101 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ description()

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

◆ describe()

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

◆ getValidParameters()

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

Return ParameterList with current values.

Reimplemented from Tempus::TimeStepControlStrategy< Scalar >.

Definition at line 203 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ initialize()

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

◆ getController()

template<class Scalar >
virtual std::string Tempus::TimeStepControlStrategyIntegralController< Scalar >::getController ( ) const
inlinevirtual

◆ getKI()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::getKI ( ) const
inlinevirtual

◆ getKP()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::getKP ( ) const
inlinevirtual

◆ getKD()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::getKD ( ) const
inlinevirtual

◆ getSafetyFactor()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::getSafetyFactor ( ) const
inlinevirtual

◆ getSafetyFactorAfterReject()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::getSafetyFactorAfterReject ( ) const
inlinevirtual

◆ getFacMax()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::getFacMax ( ) const
inlinevirtual

◆ getFacMin()

template<class Scalar >
virtual Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::getFacMin ( ) const
inlinevirtual

◆ setController()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyIntegralController< Scalar >::setController ( std::string c)
inlinevirtual

◆ setKI()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyIntegralController< Scalar >::setKI ( Scalar k)
inlinevirtual

◆ setKP()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyIntegralController< Scalar >::setKP ( Scalar k)
inlinevirtual

◆ setKD()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyIntegralController< Scalar >::setKD ( Scalar k)
inlinevirtual

◆ setSafetyFactor()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyIntegralController< Scalar >::setSafetyFactor ( Scalar f)
inlinevirtual

◆ setSafetyFactorAfterReject()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyIntegralController< Scalar >::setSafetyFactorAfterReject ( Scalar f)
inlinevirtual

◆ setFacMax()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyIntegralController< Scalar >::setFacMax ( Scalar f)
inlinevirtual

◆ setFacMin()

template<class Scalar >
virtual void Tempus::TimeStepControlStrategyIntegralController< Scalar >::setFacMin ( Scalar f)
inlinevirtual

Member Data Documentation

◆ controller_

template<class Scalar >
std::string Tempus::TimeStepControlStrategyIntegralController< Scalar >::controller_
private

Control type ['I', 'PI', 'PID'].

Definition at line 268 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ KI_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::KI_
private

Integral gain.

Definition at line 269 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ KP_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::KP_
private

Proportional gain.

Definition at line 270 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ KD_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::KD_
private

Derivative gain.

Definition at line 271 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ safetyFactor_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::safetyFactor_
private

Safety Factor.

Definition at line 272 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ safetyFactorAfterReject_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::safetyFactorAfterReject_
private

Safety Factor Following Step Rejection.

Definition at line 273 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ facMaxINPUT_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::facMaxINPUT_
private

Maximum Safety Factor from input.

Definition at line 274 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ facMax_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::facMax_
private

Maximum Safety Factor.

Definition at line 275 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ facMin_

template<class Scalar >
Scalar Tempus::TimeStepControlStrategyIntegralController< Scalar >::facMin_
private

Minimum Safety Factor.

Definition at line 276 of file Tempus_TimeStepControlStrategyIntegralController.hpp.

◆ firstSuccessfulStep_

template<class Scalar >
bool Tempus::TimeStepControlStrategyIntegralController< Scalar >::firstSuccessfulStep_ = false
private

◆ lastStepRejected_

template<class Scalar >
bool Tempus::TimeStepControlStrategyIntegralController< Scalar >::lastStepRejected_ = false
private

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