9 #ifndef Tempus_StepperDIRK_decl_hpp
10 #define Tempus_StepperDIRK_decl_hpp
12 #include "Tempus_config.hpp"
14 #include "Tempus_StepperImplicit.hpp"
16 #ifndef TEMPUS_HIDE_DEPRECATED_CODE
17 #include "Tempus_StepperRKObserverComposite.hpp"
152 template<
class Scalar>
160 #ifndef TEMPUS_HIDE_DEPRECATED_CODE
164 virtual Teuchos::RCP<StepperObserver<Scalar> >
getObserver()
const
189 const int numStages = this->
tableau_->numStages();
190 Teuchos::SerialDenseMatrix<int,Scalar> A = this->
tableau_->A();
192 for (
int i=0; i<numStages; ++i)
if (A(i,i) == 0.0)
isExplicit =
true;
204 Teuchos::RCP<Teuchos::ParameterList> pl)
const;
215 const Teuchos::SerialDenseMatrix<int,Scalar> & A=this->
tableau_->A();
216 return Scalar(1.0)/(dt*A(0,0));
219 virtual Scalar
getBeta (
const Scalar )
const {
return Scalar(1.0); }
225 virtual void describe(Teuchos::FancyOStream & out,
226 const Teuchos::EVerbosityLevel verbLevel)
const;
229 virtual bool isValidSetup(Teuchos::FancyOStream & out)
const;
246 #ifndef TEMPUS_HIDE_DEPRECATED_CODE
248 const Teuchos::RCP<
const Thyra::ModelEvaluator<Scalar> >& wrapperModel,
250 const Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> >& solver,
252 std::string ICConsistency,
253 bool ICConsistencyCheck,
255 bool zeroInitialGuess);
258 const Teuchos::RCP<
const Thyra::ModelEvaluator<Scalar> >& wrapperModel,
259 const Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> >& solver,
261 std::string ICConsistency,
262 bool ICConsistencyCheck,
264 bool zeroInitialGuess,
269 std::vector<Teuchos::RCP<Thyra::VectorBase<Scalar> > >
stageXDot_;
270 Teuchos::RCP<Thyra::VectorBase<Scalar> >
xTilde_;
272 #ifndef TEMPUS_HIDE_DEPRECATED_CODE
278 Teuchos::RCP<Thyra::VectorBase<Scalar> >
ee_;
279 Teuchos::RCP<Thyra::VectorBase<Scalar> >
abs_u0;
280 Teuchos::RCP<Thyra::VectorBase<Scalar> >
abs_u;
281 Teuchos::RCP<Thyra::VectorBase<Scalar> >
sc;
299 template <
typename Scalar>
307 Scalar s, Teuchos::RCP<
const Thyra::VectorBase<Scalar> > xTilde)
315 Teuchos::RCP<
const Thyra::VectorBase<Scalar> > x,
316 Teuchos::RCP< Thyra::VectorBase<Scalar> > xDot,
317 Teuchos::RCP< Thyra::VectorBase<Scalar> > xDotDot = Teuchos::null)
319 xDotDot = Teuchos::null;
324 Teuchos::RCP<
const Thyra::VectorBase<Scalar> > xTilde)
329 Teuchos::RCP<const Thyra::VectorBase<Scalar> >
xTilde_;
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Time-derivative interface for DIRK.
StepperDIRKTimeDerivative(Scalar s, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xTilde)
Constructor.
virtual void initialize(Scalar s, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xTilde)
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 ~StepperDIRKTimeDerivative()
Destructor.
Teuchos::RCP< const Thyra::VectorBase< Scalar > > xTilde_
Diagonally Implicit Runge-Kutta (DIRK) time stepper.
Teuchos::RCP< Thyra::VectorBase< Scalar > > xTilde_
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
virtual void setupDefault()
Default setup for constructor.
virtual bool isImplicit() const
virtual bool getUseEmbeddedDefault() const
virtual OrderODE getOrderODE() const
virtual bool isExplicitImplicit() const
virtual bool isOneStepMethod() const
virtual Scalar getAlpha(const Scalar dt) const
Return alpha = d(xDot)/dx.
virtual void setObserver(Teuchos::RCP< StepperObserver< Scalar > > obs=Teuchos::null)
Set Observer.
Teuchos::RCP< Thyra::VectorBase< Scalar > > abs_u0
virtual bool getResetInitialGuess() const
Teuchos::RCP< Thyra::VectorBase< Scalar > > sc
virtual std::string getDescription() const =0
std::vector< Teuchos::RCP< Thyra::VectorBase< Scalar > > > & getStageXDot()
virtual bool getUseEmbedded() const
virtual Teuchos::RCP< StepperObserver< Scalar > > getObserver() const
Get Observer.
virtual Scalar getBeta(const Scalar) const
Return beta = d(x)/dx.
virtual void setInitialConditions(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Set the initial conditions and make them consistent.
virtual void initialize()
Initialize after construction and changing input parameters.
virtual bool isValidSetup(Teuchos::FancyOStream &out) const
virtual void setResetInitialGuess(bool reset_guess)
Set parameter so that the initial guess is reset at the beginning of each timestep.
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
virtual void setup(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &wrapperModel, const Teuchos::RCP< StepperRKObserver< Scalar > > &obs, const Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > &solver, bool useFSAL, std::string ICConsistency, bool ICConsistencyCheck, bool useEmbedded, bool zeroInitialGuess)
Setup for constructor.
void getValidParametersBasicDIRK(Teuchos::RCP< Teuchos::ParameterList > pl) const
virtual Teuchos::RCP< Tempus::StepperState< Scalar > > getDefaultStepperState()
Get a default (initial) StepperState.
virtual void setupTableau()=0
Teuchos::RCP< Thyra::VectorBase< Scalar > > & getXTilde()
Teuchos::RCP< Thyra::VectorBase< Scalar > > ee_
Teuchos::RCP< Thyra::VectorBase< Scalar > > abs_u
virtual bool isExplicit() const
virtual void takeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Take the specified timestep, dt, and return true if successful.
virtual bool isMultiStepMethod() const
Teuchos::RCP< StepperRKObserverComposite< Scalar > > stepperObserver_
virtual void setUseEmbedded(bool a)
Use embedded if avialable.
std::vector< Teuchos::RCP< Thyra::VectorBase< Scalar > > > stageXDot_
Thyra Base interface for implicit time steppers.
StepperObserver class for Stepper class.
Application Action for StepperRKBase.
Base class for Runge-Kutta methods, ExplicitRK, DIRK and IMEX.
Teuchos::RCP< RKButcherTableau< Scalar > > tableau_
StepperRKObserver class for StepperRK.
This interface defines the time derivative connection between an implicit Stepper and WrapperModelEva...
@ FIRST_ORDER_ODE
Stepper integrates first-order ODEs.