9 #ifndef Tempus_WrapperModelEvaluatorBasic_impl_hpp
10 #define Tempus_WrapperModelEvaluatorBasic_impl_hpp
14 template <
typename Scalar>
20 MEB::InArgsSetup<Scalar> inArgs(appModel_->getNominalValues());
23 if (y_ != Teuchos::null) inArgs.set_p(index_, y_);
24 if (inArgs.supports(MEB::IN_ARG_x_dot)) inArgs.set_x_dot(xDot_);
25 if (inArgs.supports(MEB::IN_ARG_t)) inArgs.set_t(time_);
26 if (inArgs.supports(MEB::IN_ARG_step_size))
27 inArgs.set_step_size(p_->timeStepSize_);
28 if (inArgs.supports(MEB::IN_ARG_alpha)) inArgs.set_alpha(p_->alpha_);
29 if (inArgs.supports(MEB::IN_ARG_beta)) inArgs.set_beta(p_->beta_);
30 if (inArgs.supports(MEB::IN_ARG_stage_number))
31 inArgs.set_stage_number(p_->stageNumber_);
33 inArgs.setModelEvalDescription(this->description());
34 return std::move(inArgs);
37 template <
typename Scalar>
42 MEB::OutArgsSetup<Scalar> outArgs(appModel_->createOutArgs());
43 outArgs.setModelEvalDescription(this->description());
44 return std::move(outArgs);
47 template <
typename Scalar>
55 MEB::InArgs<Scalar> appInArgs(inArgs);
56 MEB::OutArgs<Scalar> appOutArgs(outArgs);
59 switch (evaluationType_) {
62 appInArgs.set_x(inArgs.
get_x());
66 appOutArgs.set_f(outArgs.
get_f());
76 RCP<const Thyra::VectorBase<Scalar> > x = inArgs.
get_x();
78 RCP<Thyra::VectorBase<Scalar> > xDot =
80 appInArgs.get_x_dot());
81 timeDer_->compute(x, xDot);
82 appInArgs.set_x_dot(xDot);
90 appOutArgs.set_f(outArgs.
get_f());
91 appOutArgs.set_W_op(outArgs.
get_W_op());
92 if (outArgs.
supports(MEB::OUT_ARG_W_prec)) {
109 appInArgs.set_x_dot(inArgs.
get_x());
112 appOutArgs.set_f(outArgs.
get_f());
113 appOutArgs.set_W_op(outArgs.
get_W_op());
114 if (outArgs.
supports(MEB::OUT_ARG_W_prec)) {
126 appModel_->evalModel(appInArgs, appOutArgs);
131 #endif // Tempus_WrapperModelEvaluatorBasic_impl_hpp
Evaluate residual for the implicit ODE.
RCP< const VectorBase< Scalar > > get_x_dot() const
Evaluation< VectorBase< Scalar > > get_f() const
bool supports(EOutArgsMembers arg) const
Solve for xDot keeping x constant (for ICs).
RCP< PreconditionerBase< Scalar > > get_W_prec() const
void evalModelImpl(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Thyra::ModelEvaluatorBase::InArgs< Scalar > createInArgs() const
RCP< LinearOpBase< Scalar > > get_W_op() const
Solve for x and determine xDot from x.
RCP< const VectorBase< Scalar > > get_x() const
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
Thyra::ModelEvaluatorBase::OutArgs< Scalar > createOutArgsImpl() const