Tempus Version of the Day
Time Integration
Loading...
Searching...
No Matches
Tempus_WrapperModelEvaluatorBasic_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_WrapperModelEvaluatorBasic_decl_hpp
10#define Tempus_WrapperModelEvaluatorBasic_decl_hpp
11
12#include <functional>
13#include "Tempus_config.hpp"
15
16namespace Tempus {
17
18
26template <typename Scalar>
28 : public Tempus::WrapperModelEvaluator<Scalar>
29{
30public:
31
34 const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& appModel)
36 {
38 wrapperOutArgs_ = this->createOutArgs();
39 }
40
42 virtual void setAppModel(
43 const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > & me)
44 { appModel_ = me; }
45
47 virtual Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >
48 getAppModel() const { return appModel_; }
49
51 virtual void setInArgs(Thyra::ModelEvaluatorBase::InArgs<Scalar> inArgs)
52 { wrapperInArgs_.setArgs(inArgs); }
53
55 virtual Thyra::ModelEvaluatorBase::InArgs<Scalar> getInArgs()
56 { return wrapperInArgs_; }
57
59 virtual void setOutArgs(Thyra::ModelEvaluatorBase::OutArgs<Scalar> outArgs)
60 { wrapperOutArgs_.setArgs(outArgs); }
61
63 virtual Thyra::ModelEvaluatorBase::OutArgs<Scalar> getOutArgs()
64 { return wrapperOutArgs_; }
65
67 virtual void setForSolve(Teuchos::RCP<TimeDerivative<Scalar> > timeDer,
68 Thyra::ModelEvaluatorBase::InArgs<Scalar> inArgs,
69 Thyra::ModelEvaluatorBase::OutArgs<Scalar> outArgs,
70 EVALUATION_TYPE evaluationType = SOLVE_FOR_X)
71 {
72 timeDer_ = timeDer;
73 wrapperInArgs_.setArgs(inArgs);
74 wrapperOutArgs_.setArgs(outArgs);
75 evaluationType_ = evaluationType;
76 }
77
79
80 Teuchos::RCP<Thyra::LinearOpBase<Scalar> > create_W_op() const
81 { return appModel_->create_W_op(); }
82
83 Teuchos::RCP<Thyra::PreconditionerBase<Scalar> > create_W_prec() const
84 { return appModel_->create_W_prec(); }
85
86 Teuchos::RCP<const Thyra::LinearOpWithSolveFactoryBase<Scalar> >
87 get_W_factory() const { return appModel_->get_W_factory(); }
88
89 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> > get_f_space() const
90 { return appModel_->get_f_space(); }
91
92 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> > get_p_space(int p) const
93 { return appModel_->get_p_space(p); }
94
95 Teuchos::RCP<const Teuchos::Array<std::string> > get_p_names(int p) const
96 { return appModel_->get_p_names(p); }
97
98 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> > get_x_space() const
99 { return appModel_->get_x_space(); }
100
101 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> > get_g_space(int i) const
102 { return appModel_->get_g_space(i); }
103
104 Thyra::ModelEvaluatorBase::InArgs<Scalar> getNominalValues() const
105 { return appModel_->getNominalValues(); }
106
107 Thyra::ModelEvaluatorBase::InArgs<Scalar> createInArgs() const;
108 Thyra::ModelEvaluatorBase::OutArgs<Scalar> createOutArgsImpl() const;
109
110 void evalModelImpl(
111 const Thyra::ModelEvaluatorBase::InArgs<Scalar> &inArgs,
112 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs) const;
114
115private:
118
119private:
120 Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > appModel_;
121 Teuchos::RCP<TimeDerivative<Scalar> > timeDer_;
122 Thyra::ModelEvaluatorBase::InArgs<Scalar> wrapperInArgs_;
123 Thyra::ModelEvaluatorBase::OutArgs<Scalar> wrapperOutArgs_;
125};
126
127} // namespace Tempus
128
129#endif // Tempus_WrapperModelEvaluatorBasic_decl_hpp
A ModelEvaluator for residual evaluations given a state. This ModelEvaluator takes a state,...
Thyra::ModelEvaluatorBase::OutArgs< Scalar > wrapperOutArgs_
Thyra::ModelEvaluatorBase::InArgs< Scalar > wrapperInArgs_
virtual void setOutArgs(Thyra::ModelEvaluatorBase::OutArgs< Scalar > outArgs)
Set OutArgs the wrapper ModelEvalutor.
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > create_W_op() const
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_g_space(int i) const
Get the g space.
Teuchos::RCP< Thyra::PreconditionerBase< Scalar > > create_W_prec() const
WrapperModelEvaluatorBasic(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
Constructor.
Teuchos::RCP< TimeDerivative< Scalar > > timeDer_
void evalModelImpl(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Thyra::ModelEvaluatorBase::InArgs< Scalar > createInArgs() const
virtual void setForSolve(Teuchos::RCP< TimeDerivative< Scalar > > timeDer, Thyra::ModelEvaluatorBase::InArgs< Scalar > inArgs, Thyra::ModelEvaluatorBase::OutArgs< Scalar > outArgs, EVALUATION_TYPE evaluationType=SOLVE_FOR_X)
Set parameters for application implicit ModelEvaluator solve.
virtual void setAppModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &me)
Set the underlying application ModelEvaluator.
virtual void setInArgs(Thyra::ModelEvaluatorBase::InArgs< Scalar > inArgs)
Set InArgs the wrapper ModelEvalutor.
Thyra::ModelEvaluatorBase::OutArgs< Scalar > createOutArgsImpl() const
Teuchos::RCP< const Thyra::LinearOpWithSolveFactoryBase< Scalar > > get_W_factory() const
Thyra::ModelEvaluatorBase::InArgs< Scalar > getNominalValues() const
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_x_space() const
Get the x-solution space.
WrapperModelEvaluatorBasic()
Default constructor - not allowed.
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_f_space() const
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_p_space(int p) const
Get the p space.
virtual Thyra::ModelEvaluatorBase::OutArgs< Scalar > getOutArgs()
Get OutArgs the wrapper ModelEvalutor.
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > appModel_
virtual Thyra::ModelEvaluatorBase::InArgs< Scalar > getInArgs()
Get InArgs the wrapper ModelEvalutor.
Teuchos::RCP< const Teuchos::Array< std::string > > get_p_names(int p) const
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getAppModel() const
Get the underlying application model 'f'.
A ModelEvaluator which wraps the application ModelEvaluator.
EVALUATION_TYPE
EVALUATION_TYPE indicates the evaluation to apply to the implicit ODE.
@ SOLVE_FOR_X
Solve for x and determine xDot from x.