|
Tempus
Version of the Day
Time Integration
|
Diagonally Implicit Runge-Kutta (DIRK) time stepper. More...
#include <Tempus_StepperDIRK_decl.hpp>
Public Member Functions | |
| StepperDIRK (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel, std::string stepperType="SDIRK 2 Stage 2nd order") | |
| Constructor to use default Stepper parameters. More... | |
| StepperDIRK (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel, Teuchos::RCP< Teuchos::ParameterList > pList) | |
| Constructor to specialize Stepper parameters. More... | |
| StepperDIRK (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel, std::string stepperType, Teuchos::RCP< Teuchos::ParameterList > pList) | |
| Constructor for StepperFactory. More... | |
Basic stepper methods | |
| virtual void | setObserver (Teuchos::RCP< StepperObserver< Scalar > > obs=Teuchos::null) |
| Set Observer. More... | |
| virtual void | setTableau (std::string stepperType) |
| virtual void | setTableau (Teuchos::RCP< Teuchos::ParameterList > pList=Teuchos::null) |
| virtual void | initialize () |
| Initialize during construction and after changing input parameters. More... | |
| virtual void | takeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) |
| Take the specified timestep, dt, and return true if successful. More... | |
| virtual Teuchos::RCP< Tempus::StepperState< Scalar > > | getDefaultStepperState () |
| Get a default (initial) StepperState. More... | |
| virtual Scalar | getOrder () const |
| virtual Scalar | getOrderMin () const |
| virtual Scalar | getOrderMax () const |
| virtual bool | isExplicit () const |
| virtual bool | isImplicit () const |
| virtual bool | isExplicitImplicit () const |
| virtual bool | isOneStepMethod () const |
| virtual bool | isMultiStepMethod () const |
| virtual void | setInitialGuess (Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_guess) |
| Pass initial guess to Newton solver. More... | |
ParameterList methods | |
| void | setParameterList (const Teuchos::RCP< Teuchos::ParameterList > &pl) |
| Teuchos::RCP< Teuchos::ParameterList > | getNonconstParameterList () |
| Teuchos::RCP< Teuchos::ParameterList > | unsetParameterList () |
| Teuchos::RCP< const Teuchos::ParameterList > | getValidParameters () const |
| Teuchos::RCP< Teuchos::ParameterList > | getDefaultParameters () const |
Public Member Functions inherited from Tempus::StepperImplicit< Scalar > | |
| virtual void | setModel (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel) |
| virtual void | setNonConstModel (const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &appModel) |
| virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > | getModel () |
| virtual void | setSolver (std::string solverName) |
| Set solver via ParameterList solver name. More... | |
| virtual void | setSolver (Teuchos::RCP< Teuchos::ParameterList > solverPL=Teuchos::null) |
| Set solver via solver ParameterList. More... | |
| virtual void | setSolver (Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver) |
| Set solver. More... | |
| virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > | getSolver () const |
| Get solver. More... | |
| virtual std::string | getStepperType () const |
| const Thyra::SolveStatus< Scalar > | solveImplicitODE (const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x) |
| Solve problem using x in-place. More... | |
| virtual void | setZeroInitialGuess (bool zIG) |
| Set parameter so that the initial guess is set to zero (=True) or use last timestep (=False). More... | |
| virtual bool | getZeroInitialGuess () const |
| virtual bool | getEmbedded () const |
| virtual Scalar | getInitTimeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) const |
Public Member Functions inherited from Tempus::Stepper< Scalar > | |
| virtual void | createSubSteppers (std::vector< Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > > models) |
| void | validExplicitODE (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model) const |
| Validate that the model supports explicit ODE evaluation, f(x,t) [=xdot]. More... | |
| void | validSecondOrderExplicitODE (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model) const |
| Validate that the model supports explicit second order ODE evaluation, f(x,xdot,t) [=xdotdot]. More... | |
| void | validImplicitODE_DAE (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model) const |
| Validate ME supports implicit ODE/DAE evaluation, f(xdot,x,t) [= 0]. More... | |
| void | validSecondOrderODE_DAE (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model) const |
| Validate ME supports 2nd order implicit ODE/DAE evaluation, f(xdotdot,xdot,x,t) [= 0]. More... | |
| Teuchos::RCP< Teuchos::ParameterList > | defaultSolverParameters () const |
Overridden from Teuchos::Describable | |
| std::string | description_ |
| Teuchos::RCP< const RKButcherTableau< Scalar > > | DIRK_ButcherTableau_ |
| std::vector< Teuchos::RCP< Thyra::VectorBase< Scalar > > > | stageXDot_ |
| Teuchos::RCP< Thyra::VectorBase< Scalar > > | stageX_ |
| Teuchos::RCP< Thyra::VectorBase< Scalar > > | xTilde_ |
| Teuchos::RCP< StepperObserver< Scalar > > | stepperObserver_ |
| Teuchos::RCP< StepperDIRKObserver< Scalar > > | stepperDIRKObserver_ |
| 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< const Thyra::VectorBase< Scalar > > | initial_guess_ |
| virtual std::string | description () const |
| virtual void | describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const |
| StepperDIRK () | |
| Default Constructor – not allowed. More... | |
Additional Inherited Members | |
Protected Attributes inherited from Tempus::StepperImplicit< Scalar > | |
| Teuchos::RCP< Teuchos::ParameterList > | stepperPL_ |
| Teuchos::RCP< WrapperModelEvaluator< Scalar > > | wrapperModel_ |
| Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > | solver_ |
| Teuchos::RCP< const Thyra::VectorBase< Scalar > > | initial_guess_ |
Diagonally Implicit Runge-Kutta (DIRK) time stepper.
For the implicit ODE system,
, the general DIRK method for
-stages, can be written as
where
is the explicit form of the ODE,
are intermediate approximations to the solution at times,
, (stage solutions) which may be correct to a lower order of accuracy than the solution,
. We should note that these lower-order approximations are combined through
so that error terms cancel out and produce a more accurate solution. Note for DIRK methods that
for all the diagonal components is referred to as Singly Diagonal Implicit Runge-Kutta (SDIRK) methods.
Note that the stage time derivatives,
can be found via
where
Recalling that the definition for a DIRK is that for
,
and
for at least one
. Thus for stages where
, we can use the explicit RK methods (see StepperExplicitRK for additional details).
Algorithm The single-timestep algorithm for DIRK is,
do





for 


for
[Optional] Definition at line 84 of file Tempus_StepperDIRK_decl.hpp.
| Tempus::StepperDIRK< Scalar >::StepperDIRK | ( | const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > & | appModel, |
| std::string | stepperType = "SDIRK 2 Stage 2nd order" |
||
| ) |
Constructor to use default Stepper parameters.
Definition at line 27 of file Tempus_StepperDIRK_impl.hpp.
| Tempus::StepperDIRK< Scalar >::StepperDIRK | ( | const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > & | appModel, |
| Teuchos::RCP< Teuchos::ParameterList > | pList | ||
| ) |
Constructor to specialize Stepper parameters.
Definition at line 37 of file Tempus_StepperDIRK_impl.hpp.
| Tempus::StepperDIRK< Scalar >::StepperDIRK | ( | const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > & | appModel, |
| std::string | stepperType, | ||
| Teuchos::RCP< Teuchos::ParameterList > | pList | ||
| ) |
Constructor for StepperFactory.
Definition at line 48 of file Tempus_StepperDIRK_impl.hpp.
|
private |
Default Constructor – not allowed.
|
virtual |
Definition at line 331 of file Tempus_StepperDIRK_impl.hpp.
|
virtual |
Definition at line 324 of file Tempus_StepperDIRK_impl.hpp.
|
virtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 367 of file Tempus_StepperDIRK_impl.hpp.
|
virtual |
Get a default (initial) StepperState.
Provide a StepperState to the SolutionState. This Stepper does not have any special state data, so just provide the base class StepperState with the Stepper description. This can be checked to ensure that the input StepperState can be used by this Stepper.
Implements Tempus::Stepper< Scalar >.
Definition at line 315 of file Tempus_StepperDIRK_impl.hpp.
| Teuchos::RCP< Teuchos::ParameterList > Tempus::StepperDIRK< Scalar >::getNonconstParameterList | ( | ) |
Definition at line 387 of file Tempus_StepperDIRK_impl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 121 of file Tempus_StepperDIRK_decl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 123 of file Tempus_StepperDIRK_decl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 122 of file Tempus_StepperDIRK_decl.hpp.
| Teuchos::RCP< const Teuchos::ParameterList > Tempus::StepperDIRK< Scalar >::getValidParameters | ( | ) | const |
Definition at line 357 of file Tempus_StepperDIRK_impl.hpp.
|
virtual |
Initialize during construction and after changing input parameters.
Implements Tempus::Stepper< Scalar >.
Definition at line 123 of file Tempus_StepperDIRK_impl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 125 of file Tempus_StepperDIRK_decl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 134 of file Tempus_StepperDIRK_decl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 133 of file Tempus_StepperDIRK_decl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 137 of file Tempus_StepperDIRK_decl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 136 of file Tempus_StepperDIRK_decl.hpp.
|
inlinevirtual |
Pass initial guess to Newton solver.
Reimplemented from Tempus::StepperImplicit< Scalar >.
Definition at line 141 of file Tempus_StepperDIRK_decl.hpp.
|
virtual |
Set Observer.
Implements Tempus::Stepper< Scalar >.
Definition at line 102 of file Tempus_StepperDIRK_impl.hpp.
| void Tempus::StepperDIRK< Scalar >::setParameterList | ( | const Teuchos::RCP< Teuchos::ParameterList > & | pl | ) |
Definition at line 341 of file Tempus_StepperDIRK_impl.hpp.
|
virtual |
Definition at line 61 of file Tempus_StepperDIRK_impl.hpp.
|
virtual |
Definition at line 78 of file Tempus_StepperDIRK_impl.hpp.
|
virtual |
Take the specified timestep, dt, and return true if successful.
Implements Tempus::Stepper< Scalar >.
Definition at line 155 of file Tempus_StepperDIRK_impl.hpp.
| Teuchos::RCP< Teuchos::ParameterList > Tempus::StepperDIRK< Scalar >::unsetParameterList | ( | ) |
Definition at line 395 of file Tempus_StepperDIRK_impl.hpp.
|
protected |
Definition at line 183 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 182 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 168 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 170 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 179 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 186 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 184 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 173 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 172 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 177 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 176 of file Tempus_StepperDIRK_decl.hpp.
|
protected |
Definition at line 174 of file Tempus_StepperDIRK_decl.hpp.