Tempus
Version of the Day
Time Integration
|
Explicit Runge-Kutta time stepper. More...
#include <Tempus_StepperExplicitRK_decl.hpp>
Public Member Functions | |
StepperExplicitRK () | |
Default constructor. More... | |
StepperExplicitRK (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel, Teuchos::RCP< Teuchos::ParameterList > pList) | |
Constructor to specialize Stepper parameters. More... | |
StepperExplicitRK (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel, std::string stepperType="RK Explicit 4 Stage") | |
Constructor to use default Stepper parameters. More... | |
StepperExplicitRK (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 | setTableau (Teuchos::RCP< const RKButcherTableau< Scalar > > ERK_ButcherTableau) |
virtual void | initialize () |
Initialize during construction and after changing input parameters. More... | |
virtual void | setInitialConditions (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) |
Set the initial conditions and make them consistent. More... | |
virtual void | takeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) |
Take the specified timestep, dt, and return true if successful. More... | |
virtual std::string | getStepperType () const |
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 Scalar | getInitTimeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) const |
virtual bool | isExplicit () const |
virtual bool | isImplicit () const |
virtual bool | isExplicitImplicit () const |
virtual bool | isOneStepMethod () const |
virtual bool | isMultiStepMethod () const |
virtual OrderODE | getOrderODE () const |
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 |
Overridden from Teuchos::Describable | |
virtual std::string | description () const |
virtual void | describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const |
Public Member Functions inherited from Tempus::StepperExplicit< 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 void | setInitialGuess (Teuchos::RCP< const Thyra::VectorBase< Scalar > >) |
Pass initial guess to Newton solver (only relevant for implicit solvers) More... | |
virtual bool | getEmbedded () const |
virtual void | setUseFSAL (bool a) |
virtual bool | getUseFSAL () const |
virtual void | setICConsistency (std::string s) |
virtual std::string | getICConsistency () const |
virtual void | setICConsistencyCheck (bool c) |
virtual bool | getICConsistencyCheck () const |
virtual void | setStepperX (Teuchos::RCP< Thyra::VectorBase< Scalar > > x) |
Set x for Stepper storage. More... | |
virtual void | setStepperXDot (Teuchos::RCP< Thyra::VectorBase< Scalar > > xDot) |
Set xDot for Stepper storage. More... | |
virtual void | setStepperXDotDot (Teuchos::RCP< Thyra::VectorBase< Scalar > > xDotDot) |
Set x for Stepper storage. More... | |
virtual Teuchos::RCP < Thyra::VectorBase< Scalar > > | getStepperX (Teuchos::RCP< SolutionState< Scalar > > state) |
Get x from SolutionState or Stepper storage. More... | |
virtual Teuchos::RCP < Thyra::VectorBase< Scalar > > | getStepperXDot (Teuchos::RCP< SolutionState< Scalar > > state) |
Get xDot from SolutionState or Stepper storage. More... | |
virtual Teuchos::RCP < Thyra::VectorBase< Scalar > > | getStepperXDotDot (Teuchos::RCP< SolutionState< Scalar > > state) |
Get xDotDot from SolutionState or Stepper storage. More... | |
virtual void | evaluateExplicitODE (Teuchos::RCP< Thyra::VectorBase< Scalar > > xDot, Teuchos::RCP< const Thyra::VectorBase< Scalar > > x, const Scalar time) |
Evaluate xDot = f(x,t). More... | |
virtual void | evaluateExplicitODE (Teuchos::RCP< Thyra::VectorBase< Scalar > > xDotDot, Teuchos::RCP< const Thyra::VectorBase< Scalar > > x, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xDot, const Scalar time) |
Evaluate xDotDot = f(x, xDot, t). More... | |
Public Member Functions inherited from Tempus::Stepper< Scalar > | |
virtual void | modelWarning () const |
void | getValidParametersBasic (Teuchos::RCP< Teuchos::ParameterList > pl) const |
virtual void | createSubSteppers (std::vector< Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > >) |
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 |
Protected Attributes | |
Teuchos::RCP< const RKButcherTableau< Scalar > > | ERK_ButcherTableau_ |
std::vector< Teuchos::RCP < Thyra::VectorBase< Scalar > > > | stageXDot_ |
Teuchos::RCP < Thyra::VectorBase< Scalar > > | stageX_ |
Teuchos::RCP < StepperExplicitRKObserver < Scalar > > | stepperExplicitRKObserver_ |
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 |
Protected Attributes inherited from Tempus::StepperExplicit< Scalar > | |
Teuchos::RCP < Teuchos::ParameterList > | stepperPL_ |
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > | appModel_ |
Explicit ODE ModelEvaluator. More... | |
Thyra::ModelEvaluatorBase::InArgs < Scalar > | inArgs_ |
Thyra::ModelEvaluatorBase::OutArgs < Scalar > | outArgs_ |
Teuchos::RCP< StepperObserver < Scalar > > | stepperObserver_ |
Teuchos::RCP < Thyra::VectorBase< Scalar > > | stepperX_ |
Teuchos::RCP < Thyra::VectorBase< Scalar > > | stepperXDot_ |
Teuchos::RCP < Thyra::VectorBase< Scalar > > | stepperXDotDot_ |
Explicit Runge-Kutta time stepper.
For the explicit ODE system,
the general explicit Runge-Kutta method for -stages can be written as
where 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 explicit RK that for and does not require any solves. Note that the stage time derivatives are
and the time derivative by definition is
Algorithm The single-timestep algorithm for Explicit RK is simply,
When using the First-Step-As-Last (FSAL) priniciple, where one can reuse the last function evaulation as the first evaluation of the next time step, the algorithm is only slightly more complicated.
For Explicit RK, FSAL requires , , and be stiffly accurate ( ). An example of this is the Bogacki-Shampine 3(2) method.
Definition at line 91 of file Tempus_StepperExplicitRK_decl.hpp.
Tempus::StepperExplicitRK< Scalar >::StepperExplicitRK | ( | ) |
Default constructor.
Definition at line 21 of file Tempus_StepperExplicitRK_impl.hpp.
Tempus::StepperExplicitRK< Scalar >::StepperExplicitRK | ( | const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > & | appModel, |
Teuchos::RCP< Teuchos::ParameterList > | pList | ||
) |
Constructor to specialize Stepper parameters.
Definition at line 29 of file Tempus_StepperExplicitRK_impl.hpp.
Tempus::StepperExplicitRK< Scalar >::StepperExplicitRK | ( | const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > & | appModel, |
std::string | stepperType = "RK Explicit 4 Stage" |
||
) |
Constructor to use default Stepper parameters.
Definition at line 46 of file Tempus_StepperExplicitRK_impl.hpp.
Tempus::StepperExplicitRK< Scalar >::StepperExplicitRK | ( | const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > & | appModel, |
std::string | stepperType, | ||
Teuchos::RCP< Teuchos::ParameterList > | pList | ||
) |
Constructor for StepperFactory.
Definition at line 62 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Definition at line 422 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Definition at line 415 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 472 of file Tempus_StepperExplicitRK_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 406 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Reimplemented from Tempus::StepperExplicit< Scalar >.
Definition at line 80 of file Tempus_StepperExplicitRK_impl.hpp.
Teuchos::RCP< Teuchos::ParameterList > Tempus::StepperExplicitRK< Scalar >::getNonconstParameterList | ( | ) |
Definition at line 487 of file Tempus_StepperExplicitRK_impl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 148 of file Tempus_StepperExplicitRK_decl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 150 of file Tempus_StepperExplicitRK_decl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 149 of file Tempus_StepperExplicitRK_decl.hpp.
|
inlinevirtual |
Implements Tempus::Stepper< Scalar >.
Definition at line 161 of file Tempus_StepperExplicitRK_decl.hpp.
|
inlinevirtual |
Reimplemented from Tempus::StepperExplicit< Scalar >.
Definition at line 143 of file Tempus_StepperExplicitRK_decl.hpp.
Teuchos::RCP< const Teuchos::ParameterList > Tempus::StepperExplicitRK< Scalar >::getValidParameters | ( | ) | const |
Definition at line 449 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Initialize during construction and after changing input parameters.
Implements Tempus::Stepper< Scalar >.
Definition at line 230 of file Tempus_StepperExplicitRK_impl.hpp.
|
inlinevirtual |
Reimplemented from Tempus::StepperExplicit< Scalar >.
Definition at line 154 of file Tempus_StepperExplicitRK_decl.hpp.
|
inlinevirtual |
Reimplemented from Tempus::StepperExplicit< Scalar >.
Definition at line 156 of file Tempus_StepperExplicitRK_decl.hpp.
|
inlinevirtual |
Reimplemented from Tempus::StepperExplicit< Scalar >.
Definition at line 155 of file Tempus_StepperExplicitRK_decl.hpp.
|
inlinevirtual |
Reimplemented from Tempus::StepperExplicit< Scalar >.
Definition at line 159 of file Tempus_StepperExplicitRK_decl.hpp.
|
inlinevirtual |
Reimplemented from Tempus::StepperExplicit< Scalar >.
Definition at line 158 of file Tempus_StepperExplicitRK_decl.hpp.
|
virtual |
Set the initial conditions and make them consistent.
Reimplemented from Tempus::StepperExplicit< Scalar >.
Definition at line 265 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Set Observer.
Implements Tempus::Stepper< Scalar >.
Definition at line 208 of file Tempus_StepperExplicitRK_impl.hpp.
void Tempus::StepperExplicitRK< Scalar >::setParameterList | ( | const Teuchos::RCP< Teuchos::ParameterList > & | pl | ) |
Definition at line 432 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Definition at line 163 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Definition at line 175 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Definition at line 195 of file Tempus_StepperExplicitRK_impl.hpp.
|
virtual |
Take the specified timestep, dt, and return true if successful.
Implements Tempus::Stepper< Scalar >.
Definition at line 281 of file Tempus_StepperExplicitRK_impl.hpp.
Teuchos::RCP< Teuchos::ParameterList > Tempus::StepperExplicitRK< Scalar >::unsetParameterList | ( | ) |
Definition at line 495 of file Tempus_StepperExplicitRK_impl.hpp.
|
protected |
Definition at line 192 of file Tempus_StepperExplicitRK_decl.hpp.
|
protected |
Definition at line 191 of file Tempus_StepperExplicitRK_decl.hpp.
|
protected |
Definition at line 190 of file Tempus_StepperExplicitRK_decl.hpp.
|
protected |
Definition at line 182 of file Tempus_StepperExplicitRK_decl.hpp.
|
protected |
Definition at line 193 of file Tempus_StepperExplicitRK_decl.hpp.
|
protected |
Definition at line 185 of file Tempus_StepperExplicitRK_decl.hpp.
|
protected |
Definition at line 184 of file Tempus_StepperExplicitRK_decl.hpp.
|
protected |
Definition at line 187 of file Tempus_StepperExplicitRK_decl.hpp.