9#ifndef Tempus_StepperBDF2_decl_hpp
10#define Tempus_StepperBDF2_decl_hpp
12#include "Tempus_config.hpp"
13#include "Tempus_StepperImplicit.hpp"
112 const Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> >& solver,
113 const Teuchos::RCP<Stepper<Scalar> >& startUpStepper,
115 std::string ICConsistency,
116 bool ICConsistencyCheck,
117 bool zeroInitialGuess,
118 const Teuchos::RCP<StepperBDF2AppAction<Scalar> >& stepperBDF2AppAction);
126 Teuchos::RCP<StepperBDF2AppAction<Scalar> > appAction);
128 virtual Teuchos::RCP<StepperBDF2AppAction<Scalar> >
getAppAction()
const
140 const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory);
144 const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory);
163 virtual Scalar
getAlpha(
const Scalar dt,
const Scalar dtOld)
const
164 {
return (Scalar(2.0)*dt + dtOld)/(dt*(dt + dtOld)); }
166 virtual Scalar
getBeta (
const Scalar )
const {
return Scalar(1.0); }
170 const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory);
176 virtual void describe(Teuchos::FancyOStream & out,
177 const Teuchos::EVerbosityLevel verbLevel)
const;
180 virtual bool isValidSetup(Teuchos::FancyOStream & out)
const;
205template <
typename Scalar>
226 xDotDot = Teuchos::null;
231 Thyra::V_StVpStV(xDot.ptr(), a, *x, -(a+b), *
xOld_);
232 Thyra::Vp_StV(xDot.ptr(), b, *
xOldOld_);
242 Teuchos::RCP<const Thyra::VectorBase<Scalar> >
xOld_;
243 Teuchos::RCP<const Thyra::VectorBase<Scalar> >
xOldOld_;
251template<
class Scalar>
252Teuchos::RCP<StepperBDF2<Scalar> >
255 Teuchos::RCP<Teuchos::ParameterList> pl);
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< 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 void setAppAction(Teuchos::RCP< StepperBDF2AppAction< Scalar > > appAction)
virtual Scalar getOrder() const
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
Set the model.
virtual bool isImplicit() const
virtual bool isOneStepMethod() const
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.
Teuchos::RCP< StepperBDF2AppAction< Scalar > > stepperBDF2AppAction_
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 Teuchos::RCP< StepperBDF2AppAction< Scalar > > getAppAction() const
virtual void initialize()
Initialize during construction and after changing input parameters.
virtual Scalar getOrderMin() const
Thyra Base interface for implicit time steppers.
This interface defines the time derivative connection between an implicit Stepper and WrapperModelEva...
Teuchos::RCP< StepperBDF2< Scalar > > createStepperBDF2(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model, Teuchos::RCP< Teuchos::ParameterList > pl)
Nonmember constructor - ModelEvaluator and ParameterList.
@ FIRST_ORDER_ODE
Stepper integrates first-order ODEs.