Tempus  Version of the Day
Time Integration
Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.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_CombinedFSA_hpp
10 #define Tempus_ModelEvaluatorPairIMEX_CombinedFSA_hpp
11 
13 #include "Tempus_WrapperModelEvaluatorPairIMEX_Basic.hpp"
14 #include "Tempus_CombinedForwardSensitivityModelEvaluator.hpp"
15 
16 namespace Tempus {
17 
18 /** \brief Specialization of IMEX ME for "combined" FSA method.
19  *
20  * For the combined forward sensitivitymethod, the implementation found in
21  * WrapperModelEvaluatorPairIMEX_Basic works just fine. We go ahead and
22  * create a specialized class to follow the pattern of other methods and also
23  * handle the wrapping of the underlying MEs.
24  */
25 template <typename Scalar>
27  : public SensitivityModelEvaluatorBase<Scalar>,
29 {
30 public:
31 
32  /// Constructor
34  const Teuchos::RCP<const WrapperModelEvaluatorPairIMEX_Basic<Scalar> >& forwardModel,
35  const Teuchos::RCP<const Teuchos::ParameterList>& pList = Teuchos::null)
36  {
37  forwardModel_ = forwardModel;
38  appExplicitModel_ = forwardModel_->getExplicitModel();
39  appImplicitModel_ = forwardModel_->getImplicitModel();
40  fsaExplicitModel_ = rcp(new FSAME(appExplicitModel_, pList));
41  fsaImplicitModel_ = rcp(new FSAME(appImplicitModel_, pList));
43  }
44 
45  /// Destructor
47 
48  /// \name Overridden from Tempus::SensitivityModelEvaluatorBase
49  //@{
50 
51  /// Get the underlying forward model
52  virtual Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >
54  {
55  return forwardModel_;
56  }
57 
58  //@}
59 
60 private:
61 
62  /// Default constructor - not allowed
64 
65 protected:
66 
69 
70  Teuchos::RCP<const WrapperModelEvaluatorPairIMEX_Basic<Scalar> > forwardModel_;
71  Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > appExplicitModel_;
72  Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > appImplicitModel_;
73  Teuchos::RCP<FSAME> fsaExplicitModel_;
74  Teuchos::RCP<FSAME> fsaImplicitModel_;
75 };
76 
77 } // namespace Tempus
78 
79 #endif // Tempus_ModelEvaluatorPairIMEX_CombinedFSA_hpp
Tempus::WrapperModelEvaluatorPairIMEX_Basic
ModelEvaluator pair for implicit and explicit (IMEX) evaulations.
Definition: Tempus_WrapperModelEvaluatorPairIMEX_Basic_decl.hpp:38
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::Base
WrapperModelEvaluatorPairIMEX_Basic< Scalar > Base
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:67
Tempus::SensitivityModelEvaluatorBase
A ModelEvaluator decorator for sensitivity analysis.
Definition: Tempus_SensitivityModelEvaluatorBase.hpp:26
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::appExplicitModel_
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > appExplicitModel_
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:71
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::forwardModel_
Teuchos::RCP< const WrapperModelEvaluatorPairIMEX_Basic< Scalar > > forwardModel_
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:70
Tempus_SensitivityModelEvaluatorBase.hpp
Tempus
Definition: Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp:20
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::appImplicitModel_
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > appImplicitModel_
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:72
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::getForwardModel
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getForwardModel() const
Get the underlying forward model.
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:53
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA
Specialization of IMEX ME for "combined" FSA method.
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:26
Tempus::CombinedForwardSensitivityModelEvaluator
Transform a ModelEvaluator's sensitivity equations to its residual.
Definition: Tempus_CombinedForwardSensitivityModelEvaluator_decl.hpp:37
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::fsaExplicitModel_
Teuchos::RCP< FSAME > fsaExplicitModel_
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:73
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::WrapperModelEvaluatorPairIMEX_CombinedFSA
WrapperModelEvaluatorPairIMEX_CombinedFSA()
Default constructor - not allowed.
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:63
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::~WrapperModelEvaluatorPairIMEX_CombinedFSA
virtual ~WrapperModelEvaluatorPairIMEX_CombinedFSA()
Destructor.
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:46
Tempus::WrapperModelEvaluatorPairIMEX_Basic::setup
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.
Definition: Tempus_WrapperModelEvaluatorPairIMEX_Basic_decl.hpp:149
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::WrapperModelEvaluatorPairIMEX_CombinedFSA
WrapperModelEvaluatorPairIMEX_CombinedFSA(const Teuchos::RCP< const WrapperModelEvaluatorPairIMEX_Basic< Scalar > > &forwardModel, const Teuchos::RCP< const Teuchos::ParameterList > &pList=Teuchos::null)
Constructor.
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:33
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::FSAME
CombinedForwardSensitivityModelEvaluator< Scalar > FSAME
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:68
Tempus::WrapperModelEvaluatorPairIMEX_CombinedFSA::fsaImplicitModel_
Teuchos::RCP< FSAME > fsaImplicitModel_
Definition: Tempus_WrapperModelEvaluatorPairIMEX_CombinedFSA.hpp:74