42 #ifndef THYRA_MODEL_EVALUATOR_BASE_DECL_HPP 43 #define THYRA_MODEL_EVALUATOR_BASE_DECL_HPP 46 #include "Thyra_LinearOpWithSolveBase.hpp" 47 #include "Teuchos_Describable.hpp" 48 #include "Teuchos_Assert.hpp" 50 #ifdef HAVE_THYRA_ME_POLYNOMIAL 51 # include "Teuchos_Polynomial.hpp" 55 class ProductEpetraVector;
56 class ProductEpetraMultiVector;
57 class ProductEpetraOperator;
83 :
virtual public Teuchos::Describable,
84 virtual public Teuchos::VerboseObject<ModelEvaluatorBase>
123 template<
class Scalar>
124 class InArgs :
public Teuchos::Describable {
127 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType
ScalarMag;
138 RCP<const VectorBase<Scalar> >
get_x_dot()
const;
142 RCP<const VectorBase<Scalar> >
get_x()
const;
144 #ifdef HAVE_THYRA_ME_POLYNOMIAL 149 RCP<const Teuchos::Polynomial< VectorBase<Scalar> > > get_x_poly()
const;
154 RCP<const Teuchos::Polynomial< VectorBase<Scalar> > > get_x_dot_poly()
const;
155 #endif // HAVE_THYRA_ME_POLYNOMIAL 159 RCP<const VectorBase<Scalar> >
get_p(
int l)
const;
163 void set_x_dot_mp(
const RCP<const Stokhos::ProductEpetraVector > &x_dot_mp );
165 RCP<const Stokhos::ProductEpetraVector >
get_x_dot_mp()
const;
168 void set_x_mp(
const RCP<const Stokhos::ProductEpetraVector > &x_mp );
170 RCP<const Stokhos::ProductEpetraVector >
get_x_mp()
const;
172 void set_p_mp(
int l,
const RCP<const Stokhos::ProductEpetraVector > &p_mp_l );
173 RCP<const Stokhos::ProductEpetraVector > get_p_mp(
int l)
const;
202 bool cloneObjects =
false 213 Teuchos::FancyOStream &out,
const Teuchos::EVerbosityLevel verbLevel
230 typedef Teuchos::Array<RCP<const VectorBase<Scalar> > > p_t;
232 std::string modelEvalDescription_;
233 RCP<const VectorBase<Scalar> > x_dot_;
234 RCP<const VectorBase<Scalar> > x_;
235 RCP<const Stokhos::ProductEpetraVector > x_dot_mp_;
236 RCP<const Stokhos::ProductEpetraVector > x_mp_;
237 Teuchos::Array< RCP< const Stokhos::ProductEpetraVector > > p_mp_;
238 #ifdef HAVE_THYRA_ME_POLYNOMIAL 239 RCP<const Teuchos::Polynomial< VectorBase<Scalar> > > x_dot_poly_;
240 RCP<const Teuchos::Polynomial< VectorBase<Scalar> > > x_poly_;
241 #endif // HAVE_THYRA_ME_POLYNOMIAL 247 Scalar stage_number_;
249 Teuchos::Array<bool> supports_p_mp_;
253 void assert_l(
int l)
const;
269 template<
class ObjType>
274 : evalType_(EVAL_TYPE_EXACT) {}
279 : RCP<ObjType>(obj), evalType_(EVAL_TYPE_EXACT) {}
282 : RCP<ObjType>(obj), evalType_(evalType) {}
287 { this->operator=(obj); evalType_ = evalType; }
311 :supportsLinearOp_(false), supportsMVByCol_(false), supportsTransMVByRow_(false)
315 :supportsLinearOp_(true), supportsMVByCol_(false), supportsTransMVByRow_(false)
319 :supportsLinearOp_(false), supportsMVByCol_(mvOrientation==
DERIV_MV_BY_COL)
324 { supportsLinearOp_ =
true;
return *
this; }
328 switch(mvOrientation) {
331 default: TEUCHOS_TEST_FOR_EXCEPT(
true);
337 {
return ( !supportsLinearOp_ && !supportsMVByCol_ && !supportsTransMVByRow_ ); }
340 {
return supportsLinearOp_; }
344 switch(mvOrientation) {
347 default: TEUCHOS_TEST_FOR_EXCEPT(
true);
355 supportsLinearOp_ == derivSupport.supportsLinearOp_
356 && supportsMVByCol_ == derivSupport.supportsMVByCol_
357 && supportsTransMVByRow_ == derivSupport.supportsTransMVByRow_
363 bool supportsLinearOp_;
364 bool supportsMVByCol_;
365 bool supportsTransMVByRow_;
400 bool in_supportsAdjoint
410 template<
class Scalar>
424 { orientation_ = orientation; };
427 { mv_.assert_not_null();
return *
this; }
433 {
return orientation_; }
438 Teuchos::FancyOStream &out,
const Teuchos::EVerbosityLevel verbLevel
441 RCP<MultiVectorBase<Scalar> > mv_;
448 template<
class Scalar>
460 ) : dmv_(mv,orientation) {}
466 {
return ( lo_.get()==NULL && dmv_.getMultiVector().get()==NULL ); }
469 { dmv_.assert_not_null(); lo_.assert_not_null();
return *
this; }
475 {
return dmv_.getMultiVector(); }
478 {
return dmv_.getOrientation(); }
488 if (derivSupport.
none())
503 Teuchos::FancyOStream &out,
const Teuchos::EVerbosityLevel verbLevel
506 RCP<LinearOpBase<Scalar> > lo_;
521 const RCP<Stokhos::ProductEpetraMultiVector > &mv
523 ,
const Teuchos::Array<int> ¶mIndexes = Teuchos::Array<int>()
524 ) : mv_(mv.
assert_not_null()), orientation_(orientation), paramIndexes_(paramIndexes) {}
527 { orientation_ = orientation; };
530 { mv_.assert_not_null();
return *
this; }
536 {
return orientation_; }
539 {
return paramIndexes_; }
544 Teuchos::FancyOStream &out,
const Teuchos::EVerbosityLevel verbLevel
547 RCP<Stokhos::ProductEpetraMultiVector > mv_;
549 Teuchos::Array<int> paramIndexes_;
564 const RCP<Stokhos::ProductEpetraMultiVector > &mv,
566 ) : dmv_(mv,orientation) {}
572 {
return ( lo_.get()==NULL && dmv_.
getMultiVector().get()==NULL ); }
594 if (derivSupport.
none())
609 Teuchos::FancyOStream &out,
const Teuchos::EVerbosityLevel verbLevel
612 RCP<Stokhos::ProductEpetraOperator > lo_;
694 template<
class Scalar>
730 RCP<LinearOpWithSolveBase<Scalar> >
get_W()
const;
738 void set_f_mp(
const RCP<Stokhos::ProductEpetraVector> &f_mp );
740 RCP<Stokhos::ProductEpetraVector>
get_f_mp()
const;
742 void set_g_mp(
int j,
const RCP<Stokhos::ProductEpetraVector> &g_mp_j );
744 RCP<Stokhos::ProductEpetraVector>
get_g_mp(
int j)
const;
746 void set_W_mp(
const RCP<Stokhos::ProductEpetraOperator> &W_mp );
748 RCP<Stokhos::ProductEpetraOperator>
get_W_mp()
const;
753 RCP<LinearOpBase<Scalar> >
get_W_op()
const;
757 RCP<PreconditionerBase<Scalar> >
get_W_prec()
const;
793 void set_DgDx_dot_mp(
int j,
const MPDerivative &DgDx_dot_mp_j);
799 void set_DgDp_mp(
int j,
int l,
const MPDerivative &DgDp_mp_j_l );
803 #ifdef HAVE_THYRA_ME_POLYNOMIAL 807 RCP<Teuchos::Polynomial< VectorBase<Scalar> > > get_f_poly()
const;
808 #endif // HAVE_THYRA_ME_POLYNOMIAL 844 Teuchos::FancyOStream &out,
const Teuchos::EVerbosityLevel verbLevel
892 typedef Teuchos::Array<Evaluation<VectorBase<Scalar> > > g_t;
893 typedef Teuchos::Array<Derivative<Scalar> > deriv_t;
894 typedef Teuchos::Array<DerivativeProperties> deriv_properties_t;
895 typedef Teuchos::Array<DerivativeSupport> supports_t;
897 std::string modelEvalDescription_;
899 supports_t supports_DfDp_;
900 supports_t supports_DgDx_dot_;
901 supports_t supports_DgDx_;
902 supports_t supports_DgDp_;
905 RCP<LinearOpWithSolveBase<Scalar> > W_;
906 RCP<LinearOpBase<Scalar> > W_op_;
907 RCP<PreconditionerBase<Scalar> > W_prec_;
910 deriv_properties_t DfDp_properties_;
913 deriv_properties_t DgDx_dot_properties_;
914 deriv_properties_t DgDx_properties_;
916 deriv_properties_t DgDp_properties_;
918 Teuchos::Array<bool> supports_g_mp_;
919 supports_t supports_DfDp_mp_;
920 supports_t supports_DgDx_dot_mp_;
921 supports_t supports_DgDx_mp_;
922 supports_t supports_DgDp_mp_;
923 Teuchos::Array< RCP< Stokhos::ProductEpetraVector > > g_mp_;
924 RCP<Stokhos::ProductEpetraVector> f_mp_;
925 RCP<Stokhos::ProductEpetraOperator> W_mp_;
926 Teuchos::Array<MPDerivative> DfDp_mp_;
927 Teuchos::Array<MPDerivative> DgDx_dot_mp_;
928 Teuchos::Array<MPDerivative> DgDx_mp_;
929 Teuchos::Array<MPDerivative> DgDp_mp_;
930 deriv_properties_t DfDp_mp_properties_;
931 deriv_properties_t DgDx_dot_mp_properties_;
932 deriv_properties_t DgDx_mp_properties_;
933 deriv_properties_t DgDp_mp_properties_;
935 #ifdef HAVE_THYRA_ME_POLYNOMIAL 936 RCP<Teuchos::Polynomial< VectorBase<Scalar> > > f_poly_;
937 #endif // HAVE_THYRA_ME_POLYNOMIAL 938 mutable bool isFailed_;
941 void assert_supports(
945 void assert_supports(
949 void assert_supports(
953 void assert_supports(
959 void assert_supports(
963 void assert_supports(
967 void assert_supports(
971 void assert_supports(
976 void assert_l(
int l)
const;
977 void assert_j(
int j)
const;
983 #ifdef HAVE_PROTECTED_NESTED_TEMPLATE_CLASS_ACCESS 997 template<
class Scalar>
1025 template<
class Scalar>
1111 getOtherDerivativeMultiVectorOrientation(
1132 case ModelEvaluatorBase::IN_ARG_x_dot:
1133 return "IN_ARG_x_dot";
1134 case ModelEvaluatorBase::IN_ARG_x:
1136 case ModelEvaluatorBase::IN_ARG_x_dot_poly:
1137 return "IN_ARG_x_dot_poly";
1138 case ModelEvaluatorBase::IN_ARG_x_poly:
1139 return "IN_ARG_x_poly";
1140 case ModelEvaluatorBase::IN_ARG_x_dot_mp:
1141 return "IN_ARG_x_dot_mp";
1142 case ModelEvaluatorBase::IN_ARG_x_mp:
1143 return "IN_ARG_x_mp";
1144 case ModelEvaluatorBase::IN_ARG_t:
1146 case ModelEvaluatorBase::IN_ARG_alpha:
1147 return "IN_ARG_alpha";
1148 case ModelEvaluatorBase::IN_ARG_beta:
1149 return "IN_ARG_beta";
1150 case ModelEvaluatorBase::IN_ARG_step_size:
1151 return "IN_ARG_step_size";
1152 case ModelEvaluatorBase::IN_ARG_stage_number:
1153 return "IN_ARG_stage_number";
1154 #ifdef TEUCHOS_DEBUG 1156 TEUCHOS_TEST_FOR_EXCEPT(
true);
1167 case ModelEvaluatorBase::OUT_ARG_f:
1169 case ModelEvaluatorBase::OUT_ARG_W:
1171 case ModelEvaluatorBase::OUT_ARG_f_mp:
1172 return "OUT_ARG_f_mp";
1173 case ModelEvaluatorBase::OUT_ARG_W_mp:
1174 return "OUT_ARG_W_mp";
1175 case ModelEvaluatorBase::OUT_ARG_W_op:
1176 return "OUT_ARG_W_op";
1177 case ModelEvaluatorBase::OUT_ARG_W_prec:
1178 return "OUT_ARG_W_prec";
1179 case ModelEvaluatorBase::OUT_ARG_f_poly:
1180 return "OUT_ARG_f_poly";
1181 #ifdef TEUCHOS_DEBUG 1183 TEUCHOS_TEST_FOR_EXCEPT(
true);
1192 ModelEvaluatorBase::EDerivativeMultiVectorOrientation orientation
1195 switch(orientation) {
1196 case ModelEvaluatorBase::DERIV_MV_BY_COL:
1197 return "DERIV_MV_BY_COL";
1198 case ModelEvaluatorBase::DERIV_TRANS_MV_BY_ROW:
1199 return "DERIV_TRANS_MV_BY_ROW";
1200 #ifdef TEUCHOS_DEBUG 1202 TEUCHOS_TEST_FOR_EXCEPT(
true);
1211 Thyra::getOtherDerivativeMultiVectorOrientation(
1212 ModelEvaluatorBase::EDerivativeMultiVectorOrientation orientation
1215 switch(orientation) {
1216 case ModelEvaluatorBase::DERIV_MV_BY_COL:
1217 return ModelEvaluatorBase::DERIV_TRANS_MV_BY_ROW;
1218 case ModelEvaluatorBase::DERIV_TRANS_MV_BY_ROW:
1219 return ModelEvaluatorBase::DERIV_MV_BY_COL;
1220 #ifdef TEUCHOS_DEBUG 1222 TEUCHOS_TEST_FOR_EXCEPT(
true);
1225 return ModelEvaluatorBase::DERIV_MV_BY_COL;
1229 #endif // THYRA_MODEL_EVALUATOR_BASE_DECL_HPP Protected subclass of InArgs that only ModelEvaluator subclasses can access to set up the selection o...
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
RCP< const Stokhos::ProductEpetraVector > get_x_dot_mp() const
Precondition: supports(IN_ARG_x_dotmp)==true.
bool isSupportedBy(const DerivativeSupport &derivSupport) const
Returns true if the form of the derivative contained here is supported by deriveSupport.
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Scalar get_step_size() const
Precondition: supports(IN_ARG_step_size)==true.
std::string description() const
void set_DgDx_properties(int j, const DerivativeProperties &properties)
void _set_Np_Ng(int Np, int Ng)
std::string modelEvalDescription() const
MPDerivative(const RCP< Stokhos::ProductEpetraOperator > &lo)
RCP< LinearOpWithSolveBase< Scalar > > get_W() const
Precondition: supports(OUT_ARG_W)==true.
void set_DfDp_properties(int l, const DerivativeProperties &properties)
Base class for all linear operators that can support a high-level solve operation.
void set_step_size(Scalar step_size)
Precondition: supports(IN_ARG_step_size)==true.
std::string description() const
void setArgs(const OutArgs< Scalar > &outArgs, bool ignoreUnsupported=false)
Set all arguments fron outArgs into *this.
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Create a more detailed description along about this object and the ModelEvaluator that created it...
bool supports(EInArgsMembers arg) const
Determines if an input argument is supported or not.
bool isSupportedBy(const DerivativeSupport &derivSupport) const
Returns true if the form of the derivative contained here is supported by deriveSupport.
static const int NUM_E_IN_ARGS_MEMBERS
void _set_DfDp_properties(int l, const DerivativeProperties &properties)
Concrete aggregate class for all output arguments computable by a ModelEvaluator subclass object...
void set_g(int j, const Evaluation< VectorBase< Scalar > > &g_j)
Precondition: supports(OUT_ARG_g)==true.
DerivativeProperties get_DgDp_properties(int j, int l) const
Return the know properties of DgDp(j,l) (precondition: supports(OUT_ARG_DgDp,j,l)==true).
EDerivativeMultiVectorOrientation
MPDerivative(const RCP< Stokhos::ProductEpetraMultiVector > &mv, const EDerivativeMultiVectorOrientation orientation=DERIV_MV_BY_COL)
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
static const int NUM_E_OUT_ARGS_MEMBERS
void setModelEvalDescription(const std::string &modelEvalDescription)
void set_W_mp(const RCP< Stokhos::ProductEpetraOperator > &W_mp)
Precondition: supports(OUT_ARG_W_mp)==true.
void _set_DgDx_dot_properties(int j, const DerivativeProperties &properties)
void set_W_prec(const RCP< PreconditionerBase< Scalar > > &W_prec)
Precondition: supports(OUT_ARG_W_op)==true.
Derivative< Scalar > get_DfDp(int l) const
Precondition: supports(OUT_ARG_DfDp,l)==true.
Scalar get_beta() const
Precondition: supports(IN_ARG_beta)==true.
void set_Np_Ng(int Np, int Ng)
Derivative< Scalar > get_DgDp(int j, int l) const
Precondition: supports(OUT_ARG_DgDp,j,l)==true.
void _setUnsupportsAndRelated(EInArgsMembers arg)
RCP< LinearOpBase< Scalar > > getLinearOp() const
void changeOrientation(const EDerivativeMultiVectorOrientation orientation)
MPDerivativeMultiVector()
void set_x_dot_mp(const RCP< const Stokhos::ProductEpetraVector > &x_dot_mp)
Precondition: supports(IN_ARG_x_dot_mp)==true.
void _setUnsupportsAndRelated(EInArgsMembers arg)
Simple aggregate class that stores a derivative object as a general linear operator or as a multi-vec...
DerivativeMultiVector(const RCP< MultiVectorBase< Scalar > > &mv, const EDerivativeMultiVectorOrientation orientation=DERIV_MV_BY_COL)
Scalar get_stage_number() const
Precondition: supports(IN_ARG_stage_number)==true.
RCP< const VectorBase< Scalar > > get_x() const
Precondition: supports(IN_ARG_x)==true.
Jacobian form DhDz (nz columns of h_space vectors)
bool supports(EDerivativeMultiVectorOrientation mvOrientation) const
DerivativeProperties get_DfDp_properties(int l) const
Return the know properties of DfDp(l) (precondition: supports(OUT_ARG_DfDp,l)==true).
EDerivativeLinearity linearity
RCP< const Stokhos::ProductEpetraVector > get_x_mp() const
Precondition: supports(IN_ARG_x_mp)==true.
Derivative< Scalar > get_DgDx(int j) const
Precondition: supports(OUT_ARG_DgDx,j)==true.
Do an exact evaluation (default)
void _setSupports(EOutArgsMembers arg, bool supports)
MPDerivative(const MPDerivativeMultiVector &dmv)
MPDerivativeMultiVector getDerivativeMultiVector() const
Derivative(const RCP< MultiVectorBase< Scalar > > &mv, const EDerivativeMultiVectorOrientation orientation=DERIV_MV_BY_COL)
Evaluation(const RCP< ObjType > &obj)
Implicit conversion from RCP<ObjType>.
Simple interface class to access a precreated preconditioner as one or more linear operators objects ...
Scalar get_alpha() const
Precondition: supports(IN_ARG_alph)==true.
RCP< Stokhos::ProductEpetraVector > get_f_mp() const
Precondition: supports(OUT_ARG_f_mp)==true.
EDerivativeMultiVectorOrientation getMultiVectorOrientation() const
ScalarMag get_t() const
.Precondition: supports(IN_ARG_t)==true
DerivativeSupport & plus(EDerivativeMultiVectorOrientation mvOrientation)
Simple aggregate class for a derivative object represented as a column-wise multi-vector or its trans...
std::string description() const
void changeOrientation(const EDerivativeMultiVectorOrientation orientation)
Gradient form DhDz^T (nh columns of z_space vectors)
Evaluation(const RCP< ObjType > &obj, EEvalType evalType)
RCP< const VectorBase< Scalar > > get_p(int l) const
Get p(l) where 0 <= l && l < this->Np().
void set_W_properties(const DerivativeProperties &properties)
Derivative< Scalar > get_DgDx_dot(int j) const
Precondition: supports(OUT_ARG_DgDx_dot,j)==true.
void setSupports(EInArgsMembers arg, bool supports=true)
RCP< Stokhos::ProductEpetraOperator > getLinearOp() const
void set_stage_number(Scalar stage_number)
Precondition: supports(IN_ARG_stage_number)==true.
An approx. eval. for a F.D. deriv.
EEvalType getType() const
void set_x(const RCP< const VectorBase< Scalar > > &x)
Precondition: supports(IN_ARG_x)==true.
Simple aggregate class for a derivative object represented as a column-wise multi-vector or its trans...
void setUnsupportsAndRelated(EInArgsMembers arg)
Interface for a collection of column vectors called a multi-vector.
void setUnsupportsAndRelated(EInArgsMembers arg)
void setArgs(const InArgs< Scalar > &inArgs, bool ignoreUnsupported=false, bool cloneObjects=false)
Set non-null arguments (does not overwrite non-NULLs with NULLs) .
void set_DgDp(int j, int l, const Derivative< Scalar > &DgDp_j_l)
Precondition: supports(OUT_ARG_DgDp,j,l)==true.
RCP< MultiVectorBase< Scalar > > getMultiVector() const
void setFailed() const
Set that the evaluation as a whole failed.
RCP< const VectorBase< Scalar > > get_x_dot() const
Precondition: supports(IN_ARG_x_dot)==true.
void set_DgDp_properties(int j, int l, const DerivativeProperties &properties)
Teuchos::ScalarTraits< Scalar >::magnitudeType ScalarMag
RCP< PreconditionerBase< Scalar > > get_W_prec() const
Precondition: supports(OUT_ARG_W_op)==true.
DerivativeSupport(EDerivativeMultiVectorOrientation mvOrientation)
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Derivative(const DerivativeMultiVector< Scalar > &dmv)
const MPDerivativeMultiVector & assert_not_null() const
std::string modelEvalDescription() const
void _setModelEvalDescription(const std::string &modelEvalDescription)
bool supports(EOutArgsMembers arg) const
Determine if an input argument is supported or not.
Abstract interface for finite-dimensional dense vectors.
Simple public strict containing properties of a derivative object.
void _setSupports(EInArgsMembers arg, bool supports)
bool isFailed() const
Return if the evaluation failed or not.
RCP< Stokhos::ProductEpetraOperator > get_W_mp() const
Precondition: supports(OUT_ARG_W_mp)==true.
Evaluation< VectorBase< Scalar > > get_g(int j) const
Precondition: supports(OUT_ARG_g)==true..
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Create a more detailed description along about this object and the ModelEvaluator that created it...
EEvalType
The type of an evaluation.
void set_x_dot(const RCP< const VectorBase< Scalar > > &x_dot)
Precondition: supports(IN_ARG_x_dot)==true.
Base class for all linear operators.
DerivativeSupport(EDerivativeLinearOp)
Derivative(const RCP< LinearOpBase< Scalar > > &lo)
std::string description() const
void set_DgDx_dot_properties(int j, const DerivativeProperties &properties)
void _set_DgDx_properties(int j, const DerivativeProperties &properties)
void set_g_mp(int j, const RCP< Stokhos::ProductEpetraVector > &g_mp_j)
Precondition: supports(OUT_ARG_g_mp)==true.
DerivativeProperties(EDerivativeLinearity in_linearity, ERankStatus in_rank, bool in_supportsAdjoint)
int Ng() const
Return the number of axillary response functions g(j)(...) supported (Ng >= 0).
Base subclass for ModelEvaluator that defines some basic types.
void set_t(ScalarMag t)
Precondition: supports(IN_ARG_t)==true.
void set_x_mp(const RCP< const Stokhos::ProductEpetraVector > &x_mp)
Precondition: supports(IN_ARG_x_mp)==true.
void set_DgDx_dot(int j, const Derivative< Scalar > &DgDx_dot_j)
Precondition: supports(OUT_ARG_DgDx_dot,j)==true.
int Np() const
Return the number of parameter subvectors p(l) supported (Np >= 0).
void set_p(int l, const RCP< const VectorBase< Scalar > > &p_l)
Set p(l) where 0 <= l && l < this->Np().
void setSupports(EOutArgsMembers arg, bool supports=true)
const Derivative< Scalar > & assert_not_null() const
void _set_DgDp_properties(int j, int l, const DerivativeProperties &properties)
void set_W(const RCP< LinearOpWithSolveBase< Scalar > > &W)
Precondition: supports(OUT_ARG_W)==true.
RCP< Stokhos::ProductEpetraMultiVector > getMultiVector() const
DerivativeProperties get_DgDx_properties(int j) const
Return the know properties of DgDx(j) (precondition: supports(OUT_ARG_DgDx,j)==true).
DerivativeProperties get_DgDx_dot_properties(int j) const
Return the know properties of DgDx_dot(j) (precondition: supports(OUT_ARG_DgDx_dot,j)==true).
const MPDerivative & assert_not_null() const
void set_alpha(Scalar alpha)
Precondition: supports(IN_ARG_alpha)==true.
RCP< MultiVectorBase< Scalar > > getMultiVector() const
RCP< LinearOpBase< Scalar > > get_W_op() const
Precondition: supports(OUT_ARG_W_op)==true.
Evaluation< VectorBase< Scalar > > get_f() const
Precondition: supports(OUT_ARG_f)==true.
void _set_W_properties(const DerivativeProperties &properties)
EDerivativeMultiVectorOrientation getOrientation() const
void set_DfDp(int l, const Derivative< Scalar > &DfDp_l)
Precondition: supports(OUT_ARG_DfDp,l)==true.
ModelEvaluatorBase()
constructor
void set_f_mp(const RCP< Stokhos::ProductEpetraVector > &f_mp)
Precondition: supports(OUT_ARG_f_mp)==true.
Determines the forms of a general derivative that are supported.
EDerivativeMultiVectorOrientation getOrientation() const
void assertSameSupport(const OutArgs< Scalar > &outArgs) const
Assert that two OutArgs objects have the same support.
const char * toString(EConj conj)
Return a string name for a EOpTransp value. `*.
DerivativeSupport & plus(EDerivativeLinearOp)
bool supports(EDerivativeLinearOp) const
void set_f(const Evaluation< VectorBase< Scalar > > &f)
Precondition: supports(OUT_ARG_f)==true.
DerivativeMultiVector< Scalar > getDerivativeMultiVector() const
void assertSameSupport(const InArgs< Scalar > &inArgs) const
Assert that two InArgs objects have the same support.
std::string description() const
void set_beta(Scalar beta)
Precondition: supports(IN_ARG_beta)==true.
void set_DgDx(int j, const Derivative< Scalar > &DgDx_j)
Precondition: supports(OUT_ARG_DgDx,j)==true.
void setModelEvalDescription(const std::string &modelEvalDescription)
Type to embed evaluation accuracy with an RCP-managed object.
Simple aggregate class that stores a derivative object as a general linear operator or as a multi-vec...
RCP< Stokhos::ProductEpetraMultiVector > getMultiVector() const
MPDerivativeMultiVector(const RCP< Stokhos::ProductEpetraMultiVector > &mv, const EDerivativeMultiVectorOrientation orientation=DERIV_MV_BY_COL, const Teuchos::Array< int > ¶mIndexes=Teuchos::Array< int >())
RCP< Stokhos::ProductEpetraVector > get_g_mp(int j) const
Precondition: supports(OUT_ARG_g_mp)==true..
void set_W_op(const RCP< LinearOpBase< Scalar > > &W_op)
Precondition: supports(OUT_ARG_W_op)==true.
std::string description() const
void _setModelEvalDescription(const std::string &modelEvalDescription)
EDerivativeMultiVectorOrientation getMultiVectorOrientation() const
Protected subclass of OutArgs that only ModelEvaluator subclasses can access to set up the selection ...
DerivativeProperties get_W_properties() const
Return the known properties of W (precondition: supports(OUT_ARG_f)==true).
int Np() const
Return the number of parameter subvectors p(l) supported (Np >= 0).
const Teuchos::Array< int > & getParamIndexes() const
const DerivativeMultiVector< Scalar > & assert_not_null() const
Evaluation(Teuchos::ENull)
bool isSameSupport(const DerivativeSupport &derivSupport) const
void reset(const RCP< ObjType > &obj, EEvalType evalType)
Concrete aggregate class for all output arguments computable by a ModelEvaluator subclass object...
std::string description() const