28 epsilon_(Scalar(1.0e-01)),
33 typedef ::Thyra::ModelEvaluatorBase MEB;
41 MEB::InArgsSetup<Scalar> inArgs;
42 inArgs.setModelEvalDescription(this->description());
43 inArgs.setSupports( MEB::IN_ARG_t );
44 inArgs.setSupports( MEB::IN_ARG_x );
45 inArgs.setSupports( MEB::IN_ARG_x_dot );
51 MEB::OutArgsSetup<Scalar> outArgs;
52 outArgs.setModelEvalDescription(this->description());
53 outArgs.setSupports( MEB::OUT_ARG_f );
60 const RCP<Thyra::VectorBase<Scalar> > x_ic = createMember(
x_space_);
62 Thyra::DetachedVectorView<Scalar> x_ic_view( *x_ic );
68 const RCP<Thyra::VectorBase<Scalar> > xDot_ic = createMember(
x_space_);
70 Thyra::DetachedVectorView<Scalar> xDot_ic_view( *xDot_ic );
83 const Thyra::ModelEvaluatorBase::InArgs<Scalar> &inArgs,
84 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs
89 const RCP<const Thyra::VectorBase<Scalar> > x_in =
90 inArgs.get_x().assert_not_null();
91 Thyra::ConstDetachedVectorView<Scalar> x_in_view( *x_in );
93 const RCP<Thyra::VectorBase<Scalar> > f_out =
94 outArgs.get_f().assert_not_null();
96 if (inArgs.get_x_dot().is_null()) {
98 Thyra::DetachedVectorView<Scalar> f_out_view( *f_out );
99 f_out_view[0] = x_in_view[1];
101 ((1.0-x_in_view[0]*x_in_view[0])*x_in_view[1]-x_in_view[0])/epsilon_;
105 RCP<const Thyra::VectorBase<Scalar> > x_dot_in;
106 x_dot_in = inArgs.get_x_dot().assert_not_null();
107 Thyra::DetachedVectorView<Scalar> f_out_view( *f_out );
108 Thyra::ConstDetachedVectorView<Scalar> x_dot_in_view( *x_dot_in );
109 f_out_view[0] = x_dot_in_view[0] - x_in_view[1];
110 f_out_view[1] = x_dot_in_view[1]
111 - ((1.0-x_in_view[0]*x_in_view[0])*x_in_view[1]-x_in_view[0])/epsilon_;