45 #ifndef DUMMY_TEST_MODEL_EVALUATOR_DEF_HPP 46 #define DUMMY_TEST_MODEL_EVALUATOR_DEF_HPP 49 #include "Thyra_DummyTestModelEvaluator_decl.hpp" 50 #include "Thyra_SimpleDenseLinearOp.hpp" 51 #include "Thyra_DefaultSpmdVectorSpace.hpp" 52 #include "Thyra_DefaultSerialDenseLinearOpWithSolveFactory.hpp" 53 #include "Thyra_DefaultPreconditioner.hpp" 54 #include "Thyra_DetachedMultiVectorView.hpp" 55 #include "Thyra_DetachedVectorView.hpp" 56 #include "Thyra_MultiVectorStdOps.hpp" 57 #include "Thyra_VectorStdOps.hpp" 65 template<
class Scalar>
66 Teuchos::RCP<DummyTestModelEvaluator<Scalar> >
67 dummyTestModelEvaluator(
69 const ArrayView<const Ordinal> &p_sizes,
70 const ArrayView<const Ordinal> &g_sizes,
71 const bool supports_x_dot,
72 const bool supports_x_dot_dot,
73 const bool supports_extended_inargs,
74 const bool supports_extended_outargs
77 return Teuchos::rcp(
new DummyTestModelEvaluator<Scalar>(x_size, p_sizes, g_sizes, supports_x_dot, supports_x_dot_dot,supports_extended_inargs,supports_extended_outargs));
84 template<
class Scalar>
87 const ArrayView<const Ordinal> &p_sizes,
88 const ArrayView<const Ordinal> &g_sizes,
89 const bool supports_x_dot,
90 const bool supports_x_dot_dot,
91 const bool supports_extended_inargs,
92 const bool supports_extended_outargs
97 typedef Teuchos::ScalarTraits<Scalar> ST;
99 x_space_ = defaultSpmdVectorSpace<Scalar>(x_size);
101 p_space_.resize(p_sizes.size());
102 for (
Ordinal l = 0; l < p_sizes.size(); ++l) {
103 p_space_[l] = defaultSpmdVectorSpace<Scalar>(p_sizes[l]);
108 g_space_.resize(g_sizes.size());
109 for (
Ordinal j = 0; j < g_sizes.size(); ++j) {
110 g_space_[j] = defaultSpmdVectorSpace<Scalar>(g_sizes[j]);
113 W_factory_ = defaultSerialDenseLinearOpWithSolveFactory<Scalar>();
115 MEB::InArgsSetup<Scalar> inArgs;
116 inArgs.setModelEvalDescription(this->description());
117 inArgs.set_Np(p_space_.size());
118 inArgs.setSupports(MEB::IN_ARG_x);
120 inArgs.setSupports(MEB::IN_ARG_x_dot);
121 if (supports_x_dot_dot)
122 inArgs.setSupports(MEB::IN_ARG_x_dot_dot);
123 inArgs.setSupports(MEB::IN_ARG_step_size);
124 inArgs.setSupports(MEB::IN_ARG_stage_number);
125 inArgs.template setSupports<Thyra::MockExtendedInArgs<Scalar> >(
true);
127 if (!supports_extended_inargs)
128 inArgs.template setSupports<Thyra::MockExtendedInArgs<Scalar> >(
false);
129 prototypeInArgs_ = inArgs;
131 MEB::OutArgsSetup<Scalar> outArgs;
132 outArgs.setModelEvalDescription(this->description());
133 outArgs.set_Np_Ng(p_space_.size(), g_space_.size());
134 outArgs.setSupports(MEB::OUT_ARG_f);
135 outArgs.setSupports(MEB::OUT_ARG_W_op);
136 outArgs.setSupports(MEB::OUT_ARG_W_prec);
137 outArgs.template setSupports<Thyra::MockExtendedOutArgs<Scalar> >(
true);
139 if (!supports_extended_outargs)
140 outArgs.template setSupports<Thyra::MockExtendedOutArgs<Scalar> >(
false);
141 prototypeOutArgs_ = outArgs;
143 nominalValues_ = inArgs;
144 const RCP<VectorBase<Scalar> > x0 = createMember(x_space_);
145 V_S(x0.ptr(), ST::zero());
146 nominalValues_.set_x(x0);
154 template<
class Scalar>
155 Teuchos::RCP<const VectorSpaceBase<Scalar> >
162 template<
class Scalar>
163 Teuchos::RCP<const VectorSpaceBase<Scalar> >
170 template<
class Scalar>
171 Teuchos::RCP<const Teuchos::Array<std::string> >
174 return Teuchos::null;
178 template<
class Scalar>
179 Teuchos::RCP<const VectorSpaceBase<Scalar> >
186 template<
class Scalar>
187 Teuchos::RCP<const VectorSpaceBase<Scalar> >
194 template<
class Scalar>
195 Teuchos::ArrayView<const std::string>
202 template<
class Scalar>
206 return nominalValues_;
210 template<
class Scalar>
218 template<
class Scalar>
226 template<
class Scalar>
227 Teuchos::RCP<LinearOpBase<Scalar> >
230 return createNonconstSimpleDenseLinearOp<Scalar>(
231 createMembers<Scalar>(f_space_, x_space_->dim())
236 template<
class Scalar>
237 Teuchos::RCP<PreconditionerBase<Scalar> >
240 return nonconstUnspecifiedPrec<Scalar>(
241 createNonconstSimpleDenseLinearOp<Scalar>(
242 createMembers<Scalar>(f_space_, x_space_->dim())
248 template<
class Scalar>
249 Teuchos::RCP<const LinearOpWithSolveFactoryBase<Scalar> >
256 template<
class Scalar>
260 return prototypeInArgs_;
264 template<
class Scalar>
277 template<
class Scalar>
281 return prototypeOutArgs_;
285 template<
class Scalar>
286 void DummyTestModelEvaluator<Scalar>::evalModelImpl(
287 const ModelEvaluatorBase::InArgs<Scalar> &inArgs,
288 const ModelEvaluatorBase::OutArgs<Scalar> &outArgs
291 TEUCHOS_TEST_FOR_EXCEPT(
true);
304 #define DUMMY_TEST_MODEL_EVALUATOR_INSTANT(SCALAR) \ 306 template class DummyTestModelEvaluator<SCALAR >; \ 308 template Teuchos::RCP<DummyTestModelEvaluator<SCALAR > > \ 309 dummyTestModelEvaluator( \ 310 const Ordinal x_size, \ 311 const ArrayView<const Ordinal> &p_sizes, \ 312 const ArrayView<const Ordinal> &g_sizes, \ 313 const bool supports_x_dot, \ 314 const bool supports_x_dot_dot, \ 315 const bool supports_extended_inargs, \ 316 const bool supports_extended_outargs \ 320 #endif // DUMMY_TEST_MODEL_EVALUATOR_DEF_HPP ModelEvaluatorBase::InArgs< Scalar > getUpperBounds() const
RCP< const VectorSpaceBase< Scalar > > get_f_space() const
RCP< const Teuchos::Array< std::string > > get_p_names(int l) const
ModelEvaluatorBase::InArgs< Scalar > getNominalValues() const
Concrete aggregate class for all output arguments computable by a ModelEvaluator subclass object...
void reportFinalPoint(const ModelEvaluatorBase::InArgs< Scalar > &finalPoint, const bool wasSolved)
DummyTestModelEvaluator(const Ordinal x_size, const ArrayView< const Ordinal > &p_sizes, const ArrayView< const Ordinal > &g_sizes, const bool supports_x_dot=false, const bool supports_x_dot_dot=false, const bool supports_extended_inargs=true, const bool supports_extended_outargs=true)
RCP< const LinearOpWithSolveFactoryBase< Scalar > > get_W_factory() const
Test helper ModelEvaluator.
RCP< LinearOpBase< Scalar > > create_W_op() const
Teuchos::Ordinal Ordinal
Type for the dimension of a vector space. `*.
RCP< PreconditionerBase< Scalar > > create_W_prec() const
RCP< const VectorSpaceBase< Scalar > > get_p_space(int l) const
ModelEvaluatorBase::InArgs< Scalar > createInArgs() const
RCP< const VectorSpaceBase< Scalar > > get_g_space(int j) const
Base subclass for ModelEvaluator that defines some basic types.
ModelEvaluatorBase::InArgs< Scalar > getLowerBounds() const
Teuchos::ArrayView< const std::string > get_g_names(int j) const
RCP< const VectorSpaceBase< Scalar > > get_x_space() const
Concrete aggregate class for all input arguments computable by a ModelEvaluator subclass object...