9#ifndef Tempus_Stepper_decl_hpp
10#define Tempus_Stepper_decl_hpp
12#include "Teuchos_TimeMonitor.hpp"
14#include "Thyra_ModelEvaluator.hpp"
15#include "Thyra_NonlinearSolverBase.hpp"
17#include "Tempus_config.hpp"
18#include "Tempus_SolutionHistory.hpp"
58 :
virtual public Teuchos::Describable,
59 virtual public Teuchos::VerboseObject<Stepper<Scalar> >
68 virtual Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >
getModel()
const
69 {
return Teuchos::null; }
73 Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> > solver) {}
76 virtual Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> >
getSolver()
const
77 {
return Teuchos::null; }
98 initialGuess = Teuchos::null) = 0;
100 virtual Teuchos::RCP<Tempus::StepperState<Scalar> >
159 virtual Teuchos::RCP<Thyra::VectorBase<Scalar> >
getStepperX();
162 virtual Teuchos::RCP<Thyra::VectorBase<Scalar> >
getStepperXDot();
179 virtual void describe(Teuchos::FancyOStream & out,
180 const Teuchos::EVerbosityLevel verbLevel)
const;
183 virtual bool isValidSetup(Teuchos::FancyOStream & out)
const;
231 template<
class Scalar>
240 template<
class Scalar>
245 template<
class Scalar>
250 template<
class Scalar>
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Solution state for integrators and steppers. SolutionState contains the metadata for solutions and th...
Thyra Base interface for time steppers.
bool isInitialized_
True if stepper's member data is initialized.
std::string getStepperName() const
Get the stepper name.
virtual Teuchos::RCP< Tempus::StepperState< Scalar > > getDefaultStepperState()=0
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getModel() const
void setICConsistencyCheck(bool c)
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getStepperXDotDot()
Get Stepper xDotDot.
bool ICConsistencyCheck_
Check if the initial condition is consistent.
void setUseFSALFalseOnly(bool a)
bool getICConsistencyCheck() const
virtual void setStepperXDot(Teuchos::RCP< Thyra::VectorBase< Scalar > > xDot)
Set xDot for Stepper storage.
std::string stepperType_
Name of stepper type.
virtual void setStepperXDotDot(Teuchos::RCP< Thyra::VectorBase< Scalar > > xDotDot)
Set x for Stepper storage.
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getStepperXDot()
Get Stepper xDot.
virtual void setInitialConditions(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)=0
Set initial conditions, make them consistent, and set stepper memory.
void setStepperName(std::string s)
Set the stepper name.
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
virtual void setSolver(Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver)
Set solver.
bool useFSAL_
Use First-Same-As-Last (FSAL) principle.
virtual std::string description() const
virtual void setInitialGuess(Teuchos::RCP< const Thyra::VectorBase< Scalar > > initialGuess=Teuchos::null)=0
Pass initial guess to Newton solver (for implicit schemes)
virtual Scalar getOrder() const =0
virtual bool isMultiStepMethod() const =0
virtual OrderODE getOrderODE() const =0
virtual void setStepperX(Teuchos::RCP< Thyra::VectorBase< Scalar > > x)
Set x for Stepper storage.
void setStepperValues(const Teuchos::RCP< Teuchos::ParameterList > pl)
Set Stepper member data from ParameterList.
Teuchos::RCP< Thyra::VectorBase< Scalar > > stepperXDot_
virtual bool isImplicit() const =0
virtual void initialize()
Initialize after construction and changing input parameters.
std::string getICConsistency() const
virtual bool isExplicitImplicit() const =0
std::string getStepperType() const
Get the stepper type. The stepper type is used as an identifier for the stepper, and can only be set ...
virtual bool isExplicit() const =0
Teuchos::RCP< Teuchos::ParameterList > getValidParametersBasic() const
Add basic parameters to Steppers ParameterList.
virtual void setUseFSAL(bool a)
virtual bool isValidSetup(Teuchos::FancyOStream &out) const
virtual void checkInitialized()
Check initialization, and error out on failure.
virtual Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getStepperX()
Get Stepper x.
Teuchos::RCP< Thyra::VectorBase< Scalar > > stepperX_
virtual Scalar getOrderMax() const =0
void setUseFSALTrueOnly(bool a)
virtual Scalar getInitTimeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) const =0
Teuchos::RCP< Thyra::VectorBase< Scalar > > stepperXDotDot_
std::string ICConsistency_
Type of consistency to apply to ICs.
virtual void takeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)=0
Take the specified timestep, dt, and return true if successful.
void setStepperType(std::string s)
Set the stepper type.
virtual bool isOneStepMethod() const =0
virtual bool isInitialized()
True if stepper's member data is initialized.
virtual Scalar getOrderMin() const =0
void setICConsistency(std::string s)
virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > getSolver() const
Get solver.
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
std::string stepperName_
Name used for output and ParameterLists.
void validSecondOrderExplicitODE(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model)
Validate that the model supports explicit second order ODE evaluation, f(x,xdot,t) [=xdotdot].
void validSecondOrderODE_DAE(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model)
Validate ME supports 2nd order implicit ODE/DAE evaluation, f(xdotdot,xdot,x,t) [= 0].
void validImplicitODE_DAE(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model)
Validate ME supports implicit ODE/DAE evaluation, f(xdot,x,t) [= 0].
@ SECOND_ORDER_ODE
Stepper integrates second-order ODEs.
@ FIRST_ORDER_ODE
Stepper integrates first-order ODEs.
void validExplicitODE(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model)
Validate that the model supports explicit ODE evaluation, f(x,t) [=xdot].
Teuchos::RCP< Teuchos::ParameterList > defaultSolverParameters()
Returns the default solver ParameterList for implicit Steppers.