9 #ifndef Tempus_StepperBDF2_decl_hpp
10 #define Tempus_StepperBDF2_decl_hpp
12 #include "Tempus_StepperImplicit.hpp"
14 #include "Tempus_StepperObserverComposite.hpp"
75 template<
class Scalar>
92 const Teuchos::RCP<
const Thyra::ModelEvaluator<Scalar> >& appModel,
94 const Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> >& solver,
97 std::string ICConsistency,
98 bool ICConsistencyCheck,
99 bool zeroInitialGuess);
104 const Teuchos::RCP<
const Thyra::ModelEvaluator<Scalar> >& appModel);
109 virtual Teuchos::RCP<StepperObserver<Scalar> >
getObserver()
const
145 virtual Scalar
getAlpha(
const Scalar dt,
const Scalar dtOld)
const
146 {
return (Scalar(2.0)*dt + dtOld)/(dt*(dt + dtOld)); }
148 virtual Scalar
getBeta (
const Scalar )
const {
return Scalar(1.0); }
159 virtual void describe(Teuchos::FancyOStream & out,
160 const Teuchos::EVerbosityLevel verbLevel)
const;
163 virtual bool isValidSetup(Teuchos::FancyOStream & out)
const;
188 template <
typename Scalar>
196 Scalar dt, Scalar dtOld, Teuchos::RCP<
const Thyra::VectorBase<Scalar> > xOld,
197 Teuchos::RCP<
const Thyra::VectorBase<Scalar> > xOldOld)
205 Teuchos::RCP<
const Thyra::VectorBase<Scalar> > x,
206 Teuchos::RCP< Thyra::VectorBase<Scalar> > xDot,
207 Teuchos::RCP< Thyra::VectorBase<Scalar> > xDotDot = Teuchos::null)
209 xDotDot = Teuchos::null;
214 Thyra::V_StVpStV(xDot.ptr(), a, *x, -(a+b), *
xOld_);
215 Thyra::Vp_StV(xDot.ptr(), b, *
xOldOld_);
219 Teuchos::RCP<
const Thyra::VectorBase<Scalar> > xOld,
220 Teuchos::RCP<
const Thyra::VectorBase<Scalar> > xOldOld)
225 Teuchos::RCP<const Thyra::VectorBase<Scalar> >
xOld_;
226 Teuchos::RCP<const Thyra::VectorBase<Scalar> >
xOldOld_;
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Time-derivative interface for BDF2.
virtual void compute(Teuchos::RCP< const Thyra::VectorBase< Scalar > > x, Teuchos::RCP< Thyra::VectorBase< Scalar > > xDot, Teuchos::RCP< Thyra::VectorBase< Scalar > > xDotDot=Teuchos::null)
Compute the time derivative.
virtual ~StepperBDF2TimeDerivative()
Destructor.
virtual void initialize(Scalar dt, Scalar dtOld, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xOld, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xOldOld)
Teuchos::RCP< const Thyra::VectorBase< Scalar > > xOld_
Teuchos::RCP< const Thyra::VectorBase< Scalar > > xOldOld_
StepperBDF2TimeDerivative(Scalar dt, Scalar dtOld, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xOld, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xOldOld)
Constructor.
BDF2 (Backward-Difference-Formula-2) time stepper.
Teuchos::RCP< StepperObserverComposite< Scalar > > stepperObserver_
Teuchos::RCP< Stepper< Scalar > > startUpStepper_
virtual bool isExplicitImplicit() const
void setStartUpStepper(std::string startupStepperType)
Set the stepper to use in first step.
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
virtual bool isMultiStepMethod() const
virtual void takeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Take the specified timestep, dt, and return true if successful.
virtual Scalar getOrderMax() const
virtual bool isValidSetup(Teuchos::FancyOStream &out) const
virtual Scalar getOrder() const
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
virtual void setObserver(Teuchos::RCP< StepperObserver< Scalar > > obs=Teuchos::null)
Set Observer.
virtual bool isImplicit() const
virtual Teuchos::RCP< StepperObserver< Scalar > > getObserver() const
Get Observer.
virtual bool isOneStepMethod() const
Teuchos::RCP< StepperBDF2Observer< Scalar > > stepperBDF2Observer_
virtual Scalar getBeta(const Scalar) const
Return beta = d(x)/dx.
virtual OrderODE getOrderODE() const
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
virtual void setInitialConditions(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Set the initial conditions and make them consistent.
virtual bool isExplicit() const
virtual Scalar getAlpha(const Scalar dt, const Scalar dtOld) const
StepperBDF2()
Default constructor.
virtual Teuchos::RCP< Tempus::StepperState< Scalar > > getDefaultStepperState()
Get a default (initial) StepperState.
virtual void computeStartUp(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Compute the first time step given the supplied startup stepper.
virtual Scalar getAlpha(const Scalar dt) const
Return alpha = d(xDot)/dx.
virtual void initialize()
Initialize during construction and after changing input parameters.
virtual Scalar getOrderMin() const
virtual bool getICConsistencyCheckDefault() const
Thyra Base interface for implicit time steppers.
StepperObserver class for Stepper class.
Thyra Base interface for time steppers.
This interface defines the time derivative connection between an implicit Stepper and WrapperModelEva...
@ FIRST_ORDER_ODE
Stepper integrates first-order ODEs.