Tempus Version of the Day
Time Integration
Loading...
Searching...
No Matches
Tempus::StepperSDIRK_ImplicitMidpoint< Scalar > Class Template Reference

SDIRK Implicit Midpoint. More...

#include <Tempus_StepperRKButcherTableau.hpp>

Inheritance diagram for Tempus::StepperSDIRK_ImplicitMidpoint< Scalar >:
Tempus::StepperDIRK< Scalar > Tempus::StepperImplicit< Scalar > Tempus::StepperRKBase< Scalar > Tempus::Stepper< Scalar > Tempus::Stepper< Scalar >

Public Member Functions

 StepperSDIRK_ImplicitMidpoint ()
 Default constructor.
 StepperSDIRK_ImplicitMidpoint (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel, const Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > &solver, bool useFSAL, std::string ICConsistency, bool ICConsistencyCheck, bool useEmbedded, bool zeroInitialGuess, const Teuchos::RCP< StepperRKAppAction< Scalar > > &stepperRKAppAction)
std::string getDescription () const
virtual void describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
virtual bool isValidSetup (Teuchos::FancyOStream &out) const override
virtual void setStepperDIRKValues (Teuchos::RCP< Teuchos::ParameterList > pl)
 Set StepperDIRK member data from the ParameterList.
virtual void initialize () override
 Initialize after construction and changing input parameters.
virtual void setModel (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel) override
 Set the model.
virtual void setInitialConditions (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) override
 Set the initial conditions and make them consistent.
virtual void setResetInitialGuess (bool reset_guess)
 Set parameter so that the initial guess is reset at the beginning of each timestep.
virtual bool getResetInitialGuess () const
virtual void takeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) override
 Take the specified timestep, dt, and return true if successful.
virtual Teuchos::RCP< Tempus::StepperState< Scalar > > getDefaultStepperState () override
 Get a default (initial) StepperState.
virtual bool isExplicit () const override
virtual bool isImplicit () const override
virtual bool isExplicitImplicit () const override
virtual bool isOneStepMethod () const override
virtual bool isMultiStepMethod () const override
virtual OrderODE getOrderODE () const override
std::vector< Teuchos::RCP< Thyra::VectorBase< Scalar > > > & getStageXDot ()
Teuchos::RCP< Thyra::VectorBase< Scalar > > & getXTilde ()
virtual Scalar getAlpha (const Scalar dt) const override
 Return alpha = d(xDot)/dx.
virtual Scalar getBeta (const Scalar) const override
 Return beta = d(x)/dx.
virtual Scalar getAlpha (const Scalar dt, int i) const
 Return alpha = d(xDot)/dx for stage i.
virtual Teuchos::RCP< const Teuchos::ParameterList > getValidParameters () const override
Teuchos::RCP< Teuchos::ParameterList > getValidParametersBasicDIRK () const
Teuchos::RCP< Teuchos::ParameterList > getValidParametersBasicImplicit () const
void setStepperImplicitValues (Teuchos::RCP< Teuchos::ParameterList > pl)
 Set StepperImplicit member data from the ParameterList.
void setStepperSolverValues (Teuchos::RCP< Teuchos::ParameterList > pl)
 Set solver from ParameterList.
void setSolverName (std::string i)
 Set the Solver Name.
std::string getSolverName () const
 Get the Solver Name.
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getModel () const override
virtual Teuchos::RCP< const WrapperModelEvaluator< Scalar > > getWrapperModel ()
virtual void setDefaultSolver ()
virtual void setSolver (Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver) override
 Set solver.
virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > getSolver () const override
 Get solver.
const Thyra::SolveStatus< Scalar > solveImplicitODE (const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &xDot, const Scalar time, const Teuchos::RCP< ImplicitODEParameters< Scalar > > &p, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &y=Teuchos::null, const int index=0)
 Solve implicit ODE, f(x, xDot, t, p) = 0.
void evaluateImplicitODE (Teuchos::RCP< Thyra::VectorBase< Scalar > > &f, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &xDot, const Scalar time, const Teuchos::RCP< ImplicitODEParameters< Scalar > > &p)
 Evaluate implicit ODE residual, f(x, xDot, t, p).
virtual void setInitialGuess (Teuchos::RCP< const Thyra::VectorBase< Scalar > > initialGuess) override
 Pass initial guess to Newton solver (only relevant for implicit solvers).
virtual void setZeroInitialGuess (bool zIG)
 Set parameter so that the initial guess is set to zero (=True) or use last timestep (=False).
virtual bool getZeroInitialGuess () const
virtual Scalar getInitTimeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &) const override
virtual std::string description () const
void setStepperValues (const Teuchos::RCP< Teuchos::ParameterList > pl)
 Set Stepper member data from ParameterList.
Teuchos::RCP< Teuchos::ParameterList > getValidParametersBasic () const
 Add basic parameters to Steppers ParameterList.
virtual bool isInitialized ()
 True if stepper's member data is initialized.
virtual void checkInitialized ()
 Check initialization, and error out on failure.
void setStepperName (std::string s)
 Set the stepper name.
std::string getStepperName () const
 Get the stepper name.
std::string getStepperType () const
 Get the stepper type. The stepper type is used as an identifier for the stepper, and can only be set by the derived Stepper class.
virtual void setUseFSAL (bool a)
void setUseFSALTrueOnly (bool a)
void setUseFSALFalseOnly (bool a)
bool getUseFSAL () const
void setICConsistency (std::string s)
std::string getICConsistency () const
void setICConsistencyCheck (bool c)
bool getICConsistencyCheck () const
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getStepperX ()
 Get Stepper x.
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getStepperXDot ()
 Get Stepper xDot.
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getStepperXDotDot ()
 Get Stepper xDotDot.
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getStepperXDotDot (Teuchos::RCP< SolutionState< Scalar > > state)
 Get xDotDot from SolutionState or Stepper storage.
Public Member Functions inherited from Tempus::StepperRKBase< Scalar >
virtual Teuchos::RCP< const RKButcherTableau< Scalar > > getTableau () const
virtual Scalar getOrder () const
virtual Scalar getOrderMin () const
virtual Scalar getOrderMax () const
virtual int getNumberOfStages () const
virtual int getStageNumber () const
virtual void setStageNumber (int s)
virtual void setUseEmbedded (bool a)
virtual bool getUseEmbedded () const
virtual void setErrorNorm (const Teuchos::RCP< Stepper_ErrorNorm< Scalar > > &errCalculator=Teuchos::null)
virtual void setAppAction (Teuchos::RCP< StepperRKAppAction< Scalar > > appAction)
virtual Teuchos::RCP< StepperRKAppAction< Scalar > > getAppAction () const
virtual void setStepperRKValues (Teuchos::RCP< Teuchos::ParameterList > pl)
 Set StepperRK member data from the ParameterList.
virtual Teuchos::RCP< RKButcherTableau< Scalar > > createTableau (Teuchos::RCP< Teuchos::ParameterList > pl)

Protected Member Functions

void setupTableau ()
virtual void setupDefault ()
 Default setup for constructor.
virtual void setup (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &wrapperModel, const Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > &solver, bool useFSAL, std::string ICConsistency, bool ICConsistencyCheck, bool useEmbedded, bool zeroInitialGuess, const Teuchos::RCP< StepperRKAppAction< Scalar > > &stepperRKAppAction)
 Setup for constructor.
virtual void setEmbeddedMemory () override
virtual void setStepperX (Teuchos::RCP< Thyra::VectorBase< Scalar > > x)
 Set x for Stepper storage.
virtual void setStepperXDot (Teuchos::RCP< Thyra::VectorBase< Scalar > > xDot)
 Set xDot for Stepper storage.
virtual void setStepperXDotDot (Teuchos::RCP< Thyra::VectorBase< Scalar > > xDotDot)
 Set x for Stepper storage.
void setStepperType (std::string s)
 Set the stepper type.

Additional Inherited Members

std::vector< Teuchos::RCP< Thyra::VectorBase< Scalar > > > stageXDot_
Teuchos::RCP< Thyra::VectorBase< Scalar > > xTilde_
bool resetGuess_ = true
Teuchos::RCP< WrapperModelEvaluator< Scalar > > wrapperModel_
Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver_
Teuchos::RCP< const Thyra::VectorBase< Scalar > > initialGuess_
bool zeroInitialGuess_
std::string solverName_
bool useFSAL_ = false
 Use First-Same-As-Last (FSAL) principle.
bool isInitialized_ = false
 True if stepper's member data is initialized.
Protected Attributes inherited from Tempus::StepperRKBase< Scalar >
Teuchos::RCP< RKButcherTableau< Scalar > > tableau_
bool useEmbedded_
Teuchos::RCP< Thyra::VectorBase< Scalar > > ee_
Teuchos::RCP< Thyra::VectorBase< Scalar > > abs_u0
Teuchos::RCP< Thyra::VectorBase< Scalar > > abs_u
Teuchos::RCP< Thyra::VectorBase< Scalar > > sc
Teuchos::RCP< Stepper_ErrorNorm< Scalar > > stepperErrorNormCalculator_
int stageNumber_
 The current Runge-Kutta stage number, {0,...,s-1}. -1 indicates outside stage loop.
Teuchos::RCP< StepperRKAppAction< Scalar > > stepperRKAppAction_

Detailed Description

template<class Scalar>
class Tempus::StepperSDIRK_ImplicitMidpoint< Scalar >

SDIRK Implicit Midpoint.

The tableau (order = 1 or 2) is

\‍[\begin{array}{c|c}
  c & A \\ \hline
    & b^T
\end{array}
\;\;\;\;\mbox{ where }\;\;\;\;
\begin{array}{c|c} 1/2  & 1/2  \\ \hline
                        & 1    \end{array}
\‍]

Implicit midpoint method is second-order accurate, and is A-stable.

Reference: Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems, 2nd Revised Edition, E. Hairer and G. Wanner, Table 5.2, pg 72.

Solving Ordinary Differential Equations I: Nonstiff Problems, 2nd Revised Edition, E. Hairer, S. P. Norsett, and G. Wanner, Table 7.1, pg 205,

See StepperDIRK for additional details.

Definition at line 3460 of file Tempus_StepperRKButcherTableau.hpp.

Constructor & Destructor Documentation

◆ StepperSDIRK_ImplicitMidpoint() [1/2]

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

Default constructor.

Requires subsequent setModel() and initialize() calls before calling takestep().

Definition at line 3469 of file Tempus_StepperRKButcherTableau.hpp.

◆ StepperSDIRK_ImplicitMidpoint() [2/2]

template<class Scalar>
Tempus::StepperSDIRK_ImplicitMidpoint< Scalar >::StepperSDIRK_ImplicitMidpoint ( const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > & appModel,
const Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > & solver,
bool useFSAL,
std::string ICConsistency,
bool ICConsistencyCheck,
bool useEmbedded,
bool zeroInitialGuess,
const Teuchos::RCP< StepperRKAppAction< Scalar > > & stepperRKAppAction )
inline

Definition at line 3480 of file Tempus_StepperRKButcherTableau.hpp.

Member Function Documentation

◆ getDescription()

template<class Scalar>
std::string Tempus::StepperSDIRK_ImplicitMidpoint< Scalar >::getDescription ( ) const
inlinevirtual

◆ setupTableau()

template<class Scalar>
void Tempus::StepperSDIRK_ImplicitMidpoint< Scalar >::setupTableau ( )
inlineprotectedvirtual

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