Tempus  Version of the Day
Time Integration
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tempus_StepperExplicit_decl.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ****************************************************************************
3 // Tempus: Copyright (2017) Sandia Corporation
4 //
5 // Distributed under BSD 3-clause license (See accompanying file Copyright.txt)
6 // ****************************************************************************
7 // @HEADER
8 
9 #ifndef Tempus_StepperExplicit_decl_hpp
10 #define Tempus_StepperExplicit_decl_hpp
11 
12 // Tempus
13 #include "Tempus_config.hpp"
14 #include "Tempus_Stepper.hpp"
15 
16 template <class Scalar>
18  public:
21 
23  ExplicitODEParameters(Scalar timeStepSize, int stageNumber = 0)
24  : timeStepSize_(timeStepSize), stageNumber_(stageNumber)
25  {
26  }
27 
28  Scalar timeStepSize_;
30 };
31 
32 namespace Tempus {
33 
37 template <class Scalar>
38 class StepperExplicit : virtual public Tempus::Stepper<Scalar> {
39  public:
41 
42  virtual void setModel(
44  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& appModel);
45 
48  {
49  return appModel_;
50  }
51 
52  virtual Scalar getInitTimeStep(
53  const Teuchos::RCP<SolutionHistory<Scalar> >& /* solutionHistory */) const
54  {
55  return std::numeric_limits<Scalar>::max();
56  }
57 
59  virtual void setInitialConditions(
60  const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory);
61 
62  virtual void setSolver(
64 
66  {
67  return Teuchos::null;
68  }
69 
71  // thus a no-op for explicit steppers.
72  virtual void setInitialGuess(
73  Teuchos::RCP<const Thyra::VectorBase<Scalar> > /* initial_guess */)
74  {
75  }
76 
77  virtual bool isExplicit() const { return true; }
78  virtual bool isImplicit() const { return false; }
79  virtual bool isExplicitImplicit() const
80  {
81  return isExplicit() && isImplicit();
82  }
83  virtual bool isOneStepMethod() const { return true; }
84  virtual bool isMultiStepMethod() const { return !isOneStepMethod(); }
85 
87  virtual void evaluateExplicitODE(
89  Teuchos::RCP<const Thyra::VectorBase<Scalar> > x, const Scalar time,
91 
93  virtual void evaluateExplicitODE(
96  Teuchos::RCP<const Thyra::VectorBase<Scalar> > xDot, const Scalar time,
99 
101 
102  virtual void describe(Teuchos::FancyOStream& out,
103  const Teuchos::EVerbosityLevel verbLevel) const;
105 
106  virtual bool isValidSetup(Teuchos::FancyOStream& out) const;
107 
110 
111  protected:
114 
117 };
118 
119 } // namespace Tempus
120 #endif // Tempus_StepperExplicit_decl_hpp
virtual bool isValidSetup(Teuchos::FancyOStream &out) const
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > appModel_
Explicit ODE ModelEvaluator.
virtual void setSolver(Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver)
Set solver.
Thyra::ModelEvaluatorBase::OutArgs< Scalar > outArgs_
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getModel() const
Return the application ModelEvaluator.
Thyra Base interface for time steppers.
ExplicitODEParameters(Scalar timeStepSize, int stageNumber=0)
Constructor.
virtual Scalar getInitTimeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &) const
virtual void setInitialConditions(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Set the initial conditions, make them consistent, and set needed memory.
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
Set model.
virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > getSolver() const
Get solver.
virtual void setInitialGuess(Teuchos::RCP< const Thyra::VectorBase< Scalar > >)
Pass initial guess to Newton solver (only relevant for implicit solvers)
virtual void evaluateExplicitODE(Teuchos::RCP< Thyra::VectorBase< Scalar > > xDot, Teuchos::RCP< const Thyra::VectorBase< Scalar > > x, const Scalar time, const Teuchos::RCP< ExplicitODEParameters< Scalar > > &p)
Evaluate xDot = f(x,t).
virtual bool isExplicitImplicit() const
virtual bool isMultiStepMethod() const
Thyra::ModelEvaluatorBase::InArgs< Scalar > inArgs_
void setStepperExplicitValues(Teuchos::RCP< Teuchos::ParameterList > pl)
Set StepperExplicit member data from the ParameterList.
Thyra Base interface for implicit time steppers.