Tempus  Version of the Day
Time Integration
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tempus_WrapperModelEvaluatorPairIMEX_Basic_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_ModelEvaluatorPairIMEX_Basic_decl_hpp
10 #define Tempus_ModelEvaluatorPairIMEX_Basic_decl_hpp
11 
12 #include "Tempus_config.hpp"
14 #include "Thyra_StateFuncModelEvaluatorBase.hpp"
15 
16 namespace Tempus {
17 
37 template <typename Scalar>
39  : public Tempus::WrapperModelEvaluatorPairIMEX<Scalar> {
40  public:
43  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& explicitModel,
44  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& implicitModel)
45  : timeDer_(Teuchos::null)
46  {
47  setExplicitModel(explicitModel);
48  setImplicitModel(implicitModel);
49  initialize();
50  }
51 
54 
56  virtual void initialize();
57 
59 
60  virtual void setAppModel(
63  const;
64 
68  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& xDot, const Scalar time,
70  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& y = Teuchos::null,
71  const int index = -1 /* index and y are for IMEX_RK_Partition */)
72  {
73  x_ = x;
74  xDot_ = xDot;
75  time_ = time;
76  p_ = p;
77  y_ = y;
78  index_ = index;
79  timeDer_ = p->timeDer_;
80  }
81 
83 
85 
88  const;
89 
92  int i) const;
93 
96  int i) const;
98 
100  virtual void setExplicitModel(
101  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& model)
102  {
103  explicitModel_ = model;
104  }
105  virtual void setImplicitModel(
106  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& model)
107  {
108  implicitModel_ = model;
109  }
111  const
112  {
113  return explicitModel_;
114  }
116  const
117  {
118  return implicitModel_;
119  }
121 
123 
125  {
126  return implicitModel_->create_W_op();
127  }
128 
131  {
132  return implicitModel_->get_W_factory();
133  }
134 
136  const
137  {
138  return explicitModel_->get_f_space();
139  }
140 
144 
145  virtual void evalModelImpl(
149 
150  protected:
153 
155  void setup(
156  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& explicitModel,
157  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& implicitModel)
158  {
159  setExplicitModel(explicitModel);
160  setImplicitModel(implicitModel);
161  initialize();
162  }
163 
164  protected:
167 
170  Scalar time_;
173  int index_;
175 };
176 
177 } // namespace Tempus
178 
179 #endif // Tempus_ModelEvaluatorPairIMEX_Basic_decl_hpp
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > implicitModel_
WrapperModelEvaluatorPairIMEX_Basic(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &explicitModel, const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &implicitModel)
Constructor.
virtual Thyra::ModelEvaluatorBase::OutArgs< Scalar > createOutArgsImpl() const
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getAppModel() const
Get the underlying application ModelEvaluator.
virtual Thyra::ModelEvaluatorBase::InArgs< Scalar > createInArgs() const
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_g_space(int i) const
Get the g space.
virtual void evalModelImpl(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &in, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &out) const
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getExplicitModel() const
ModelEvaluator pair for implicit and explicit (IMEX) evaulations.
ModelEvaluator pair for implicit and explicit (IMEX) evaluations.
void setup(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &explicitModel, const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &implicitModel)
Setup ME when using default constructor – for derived classes.
virtual void setImplicitModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model)
virtual Thyra::ModelEvaluatorBase::InArgs< Scalar > getNominalValues() const
virtual void initialize()
Initialize after setting member data.
void setForSolve(const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &xDot, const Scalar time, const Teuchos::RCP< ImplicitODEParameters< Scalar > > &p, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &y=Teuchos::null, const int index=-1)
Set parameters for application implicit ModelEvaluator solve.
virtual void setExplicitModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model)
virtual void setAppModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &me)
Set the underlying application ModelEvaluator.
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_p_space(int i) const
Get the p space.
Teuchos::RCP< const Thyra::LinearOpWithSolveFactoryBase< Scalar > > get_W_factory() const
WrapperModelEvaluatorPairIMEX_Basic()
Default constructor – only allowed for derived classes.
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getImplicitModel() const
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > explicitModel_
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_x_space() const
Get the x-solution space.
virtual Teuchos::RCP< Thyra::LinearOpBase< Scalar > > create_W_op() const
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_f_space() const