9#include "Thyra_DefaultSpmdVectorSpace.hpp"
10#include "Thyra_DetachedVectorView.hpp"
11#include "Thyra_DetachedMultiVectorView.hpp"
12#include "Thyra_DefaultSerialDenseLinearOpWithSolveFactory.hpp"
13#include "Thyra_DefaultMultiVectorLinearOpWithSolve.hpp"
14#include "Thyra_DefaultLinearOpSource.hpp"
15#include "Thyra_VectorStdOps.hpp"
27 epsilon_(Scalar(1.0e-01)),
32 typedef ::Thyra::ModelEvaluatorBase MEB;
40 MEB::InArgsSetup<Scalar> inArgs;
41 inArgs.setModelEvalDescription(this->description());
42 inArgs.setSupports( MEB::IN_ARG_t );
43 inArgs.setSupports( MEB::IN_ARG_x );
44 inArgs.setSupports( MEB::IN_ARG_x_dot );
50 MEB::OutArgsSetup<Scalar> outArgs;
51 outArgs.setModelEvalDescription(this->description());
52 outArgs.setSupports( MEB::OUT_ARG_f );
59 const RCP<Thyra::VectorBase<Scalar> > x_ic = createMember(
x_space_);
61 Thyra::DetachedVectorView<Scalar> x_ic_view( *x_ic );
67 const RCP<Thyra::VectorBase<Scalar> > xDot_ic = createMember(
x_space_);
69 Thyra::DetachedVectorView<Scalar> xDot_ic_view( *xDot_ic );
82 const Thyra::ModelEvaluatorBase::InArgs<Scalar> &inArgs,
83 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs
88 const RCP<const Thyra::VectorBase<Scalar> > x_in =
89 inArgs.get_x().assert_not_null();
90 Thyra::ConstDetachedVectorView<Scalar> x_in_view( *x_in );
92 const RCP<Thyra::VectorBase<Scalar> > f_out =
93 outArgs.get_f().assert_not_null();
95 if (inArgs.get_x_dot().is_null()) {
97 Thyra::DetachedVectorView<Scalar> f_out_view( *f_out );
98 f_out_view[0] = x_in_view[1];
100 ((1.0-x_in_view[0]*x_in_view[0])*x_in_view[1]-x_in_view[0])/epsilon_;
104 RCP<const Thyra::VectorBase<Scalar> > x_dot_in;
105 x_dot_in = inArgs.get_x_dot().assert_not_null();
106 Thyra::DetachedVectorView<Scalar> f_out_view( *f_out );
107 Thyra::ConstDetachedVectorView<Scalar> x_dot_in_view( *x_dot_in );
108 f_out_view[0] = x_dot_in_view[0] - x_in_view[1];
109 f_out_view[1] = x_dot_in_view[1]
110 - ((1.0-x_in_view[0]*x_in_view[0])*x_in_view[1]-x_in_view[0])/epsilon_;
ModelEvaluator implementation for the example van der Pol Problem.
Thyra::ModelEvaluatorBase::OutArgs< Scalar > prototypicalOutArgs_
Prototypical OutArgs that just supports the evaluation vector (OUT_ARG_f)
Thyra::ModelEvaluatorBase::InArgs< Scalar > prototypicalInArgs_
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > f_space_
Function evaluation vector space (a defaultSpmdVectorSpace of dimension 2)
Scalar x1_ic_
initial condition for
Scalar x0_ic_
initial condition for
void evalModelImpl(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs_bar, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs_bar) const
int dim_
Number of state unknowns (2)
Scalar epsilon_
This is a model parameter ( )
Thyra::ModelEvaluatorBase::InArgs< Scalar > nominalValues_
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > x_space_
Solution vector space (a defaultSpmdVectorSpace of dimension 2)
VanDerPol_ModelEvaluator_02()
Scalar t0_ic_
initial time = 0