9 #ifndef Tempus_StepperDIRK_decl_hpp 10 #define Tempus_StepperDIRK_decl_hpp 12 #include "Tempus_config.hpp" 14 #include "Tempus_StepperImplicit.hpp" 155 template<
class Scalar>
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;
210 virtual Scalar
getAlpha(
const Scalar dt)
const override 212 const int numStages = this->
tableau_->numStages();
213 const Teuchos::SerialDenseMatrix<int,Scalar> & A=this->
tableau_->A();
215 for (
int i=0; i<numStages; ++i) {
216 if (A(i,i) != 0.0) aii = A(i,i);
219 return (aii == 0.0) ? std::numeric_limits<Scalar>::infinity() : Scalar(1.0)/(dt*aii);
222 virtual Scalar
getBeta (
const Scalar )
const override {
return Scalar(1.0); }
225 virtual Scalar
getAlpha(
const Scalar dt,
int i)
const 227 const Teuchos::SerialDenseMatrix<int,Scalar> & A=this->
tableau_->A();
228 return (A(i,i) == 0.0) ? std::numeric_limits<Scalar>::infinity() : Scalar(1.0)/(dt*A(i,i));
231 virtual Teuchos::RCP<const Teuchos::ParameterList>
getValidParameters()
const override;
237 virtual void describe(Teuchos::FancyOStream & out,
238 const Teuchos::EVerbosityLevel verbLevel)
const override;
241 virtual bool isValidSetup(Teuchos::FancyOStream & out)
const override;
246 if (pl != Teuchos::null) {
250 if ( pl->isParameter(
"Use Embedded") )
252 if ( pl->isParameter(
"Zero Initial Guess") )
254 if (pl->isParameter(
"Solver Name") )
268 const Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> >& solver,
270 std::string ICConsistency,
271 bool ICConsistencyCheck,
273 bool zeroInitialGuess,
281 std::vector<Teuchos::RCP<Thyra::VectorBase<Scalar> > >
stageXDot_;
282 Teuchos::RCP<Thyra::VectorBase<Scalar> >
xTilde_;
300 template <
typename Scalar>
320 xDotDot = Teuchos::null;
330 Teuchos::RCP<const Thyra::VectorBase<Scalar> >
xTilde_;
337 #endif // Tempus_StepperDIRK_decl_hpp Teuchos::RCP< Thyra::VectorBase< Scalar > > xTilde_
Teuchos::RCP< const Thyra::VectorBase< Scalar > > xTilde_
virtual bool isMultiStepMethod() const override
virtual Scalar getBeta(const Scalar) const override
Return beta = d(x)/dx.
virtual bool isImplicit() const override
virtual bool isExplicitImplicit() const override
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel) override
Set the model.
Teuchos::RCP< RKButcherTableau< Scalar > > tableau_
virtual Scalar getAlpha(const Scalar dt) const override
Return alpha = d(xDot)/dx.
virtual void setUseEmbedded(bool a)
virtual void setupTableau()=0
virtual ~StepperDIRKTimeDerivative()
Destructor.
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
virtual bool isExplicit() const override
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 void setResetInitialGuess(bool reset_guess)
Set parameter so that the initial guess is reset at the beginning of each timestep.
Base class for Runge-Kutta methods, ExplicitRK, DIRK and IMEX.
virtual OrderODE getOrderODE() const override
Diagonally Implicit Runge-Kutta (DIRK) time stepper.
Thyra Base interface for implicit time steppers.
Application Action for StepperRKBase.
virtual bool isOneStepMethod() const override
Time-derivative interface for DIRK.
virtual void setupDefault()
Default setup for constructor.
virtual Scalar getAlpha(const Scalar dt, int i) const
Return alpha = d(xDot)/dx for stage i.
virtual void setStepperDIRKValues(Teuchos::RCP< Teuchos::ParameterList > pl)
Set StepperDIRK member data from the ParameterList.
virtual Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const override
void setStepperSolverValues(Teuchos::RCP< Teuchos::ParameterList > pl)
Set solver from ParameterList.
virtual void setZeroInitialGuess(bool zIG)
Set parameter so that the initial guess is set to zero (=True) or use last timestep (=False)...
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
virtual bool isValidSetup(Teuchos::FancyOStream &out) const override
void setStepperValues(const Teuchos::RCP< Teuchos::ParameterList > pl)
Set Stepper member data from ParameterList.
std::vector< Teuchos::RCP< Thyra::VectorBase< Scalar > > > & getStageXDot()
Stepper integrates first-order ODEs.
virtual void initialize() override
Initialize after construction and changing input parameters.
virtual std::string getDescription() const =0
Teuchos::RCP< Teuchos::ParameterList > getValidParametersBasicDIRK() const
virtual void setInitialConditions(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) override
Set the initial conditions and make them consistent.
This interface defines the time derivative connection between an implicit Stepper and WrapperModelEva...
virtual void setEmbeddedMemory() override
virtual bool getResetInitialGuess() const
virtual void setup(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &wrapperModel, const Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > &solver, bool useFSAL, std::string ICConsistency, bool ICConsistencyCheck, bool useEmbedded, bool zeroInitialGuess, const Teuchos::RCP< StepperRKAppAction< Scalar > > &stepperRKAppAction)
Setup for constructor.
virtual Teuchos::RCP< Tempus::StepperState< Scalar > > getDefaultStepperState() override
Get a default (initial) StepperState.
std::vector< Teuchos::RCP< Thyra::VectorBase< Scalar > > > stageXDot_
virtual void initialize(Scalar s, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xTilde)
virtual void takeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) override
Take the specified timestep, dt, and return true if successful.
Teuchos::RCP< Thyra::VectorBase< Scalar > > & getXTilde()
StepperDIRKTimeDerivative(Scalar s, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xTilde)
Constructor.