9 #ifndef Tempus_WrapperModelEvaluatorBasic_impl_hpp
10 #define Tempus_WrapperModelEvaluatorBasic_impl_hpp
15 template <
typename Scalar>
16 Thyra::ModelEvaluatorBase::InArgs<Scalar>
20 typedef Thyra::ModelEvaluatorBase MEB;
22 MEB::InArgsSetup<Scalar> inArgs(appModel_->getNominalValues());
23 inArgs.setModelEvalDescription(this->description());
28 template <
typename Scalar>
29 Thyra::ModelEvaluatorBase::OutArgs<Scalar>
33 typedef Thyra::ModelEvaluatorBase MEB;
34 MEB::OutArgsSetup<Scalar> outArgs(appModel_->createOutArgs());
35 outArgs.setModelEvalDescription(this->description());
40 template <
typename Scalar>
44 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const
46 typedef Thyra::ModelEvaluatorBase MEB;
49 MEB::InArgs<Scalar> appInArgs (wrapperInArgs_);
50 MEB::OutArgs<Scalar> appOutArgs(wrapperOutArgs_);
53 RCP<const Thyra::VectorBase<Scalar> > x = inArgs.get_x();
55 for (
int i=0; i<appModel_->Np(); ++i) {
56 if (inArgs.get_p(i) != Teuchos::null)
57 appInArgs.set_p(i, inArgs.get_p(i));
60 RCP<Thyra::VectorBase<Scalar> > x_dot = Thyra::createMember(get_x_space());
61 timeDer_->compute(x, x_dot);
62 appInArgs.set_x_dot(x_dot);
69 appOutArgs.set_f(outArgs.get_f());
70 appOutArgs.set_W_op(outArgs.get_W_op());
71 if (outArgs.supports(MEB::OUT_ARG_W_prec)) {
72 appOutArgs.set_W_prec(outArgs.get_W_prec());
75 appModel_->evalModel(appInArgs,appOutArgs);
81 #endif // Tempus_WrapperModelEvaluatorBasic_impl_hpp