10#ifndef THYRA_MODEL_EVALUATOR_BASE_DECL_HPP 
   11#define THYRA_MODEL_EVALUATOR_BASE_DECL_HPP 
   14#include "Thyra_LinearOpWithSolveBase.hpp" 
   15#include "Teuchos_Describable.hpp" 
   16#include "Teuchos_any.hpp" 
   17#include "Teuchos_Assert.hpp" 
   19#ifdef HAVE_THYRA_ME_POLYNOMIAL 
   20#  include "Teuchos_Polynomial.hpp" 
   24  class ProductEpetraVector;
 
   25  class ProductEpetraMultiVector;
 
   26  class ProductEpetraOperator;
 
  126  template<
class Scalar>
 
  173    template<
typename ObjectType>
 
  176    template<
typename ObjectType>
 
  179    template<
typename ObjectType>
 
  182#ifdef HAVE_THYRA_ME_POLYNOMIAL 
  195    void set_p( int l, const RCP<const VectorBase<Scalar> > &p_l );
 
  244      bool cloneObjects = 
false 
  269    template<
typename ObjectType>
 
  278    std::string modelEvalDescription_;
 
  289#ifdef HAVE_THYRA_ME_POLYNOMIAL 
  298    Scalar W_x_dot_dot_coeff_;
 
  300    Scalar stage_number_;
 
  306    void assert_l(
int l) 
const;
 
  307    void assert_j(
int j) 
const;
 
  309    std::map<std::string,Teuchos::any> extended_inargs_;
 
  325  template<
class ObjType>
 
  330      : evalType_(EVAL_TYPE_EXACT)  {}
 
 
  335      : 
RCP<ObjType>(obj), evalType_(EVAL_TYPE_EXACT) {}
 
 
  338      : 
RCP<ObjType>(obj), evalType_(evalType) {}
 
 
  343    { this->
operator=(obj); evalType_ = evalType; }
 
 
 
  367      :supportsLinearOp_(false), supportsMVByCol_(false), supportsTransMVByRow_(false)
 
 
  371      :supportsLinearOp_(true), supportsMVByCol_(false), supportsTransMVByRow_(false)
 
 
  375      :supportsLinearOp_(false), supportsMVByCol_(mvOrientation==
DERIV_MV_BY_COL)
 
 
  380      { supportsLinearOp_ = 
true; 
return *
this; }
 
 
  384        switch(mvOrientation) {
 
 
  393      { 
return ( !supportsLinearOp_ && !supportsMVByCol_ && !supportsTransMVByRow_ ); }
 
 
  396      { 
return supportsLinearOp_; }
 
 
  400        switch(mvOrientation) {
 
 
  411          supportsLinearOp_ == derivSupport.supportsLinearOp_
 
  412          && supportsMVByCol_ == derivSupport.supportsMVByCol_
 
  413          && supportsTransMVByRow_ == derivSupport.supportsTransMVByRow_
 
 
  419    bool supportsLinearOp_;
 
  420    bool supportsMVByCol_;
 
  421    bool supportsTransMVByRow_;
 
 
  456      bool in_supportsAdjoint
 
 
 
  466  template<
class Scalar>
 
  480      { orientation_ = orientation; };
 
 
  483      { mv_.assert_not_null(); 
return *
this; }
 
 
  489      { 
return orientation_; }
 
 
 
  504  template<
class Scalar>
 
  516      ) : dmv_(mv,orientation) {}
 
 
  522      { 
return ( lo_.get()==NULL && dmv_.getMultiVector().get()==NULL ); }
 
 
  525      { dmv_.assert_not_null(); lo_.assert_not_null(); 
return *
this; }
 
 
  531      { 
return dmv_.getMultiVector(); }
 
 
  534      { 
return dmv_.getOrientation(); }
 
 
  544        if (derivSupport.
none())
 
 
 
  580      ) : mv_(mv.
assert_not_null()), orientation_(orientation), paramIndexes_(paramIndexes) {}
 
 
  583      { orientation_ = orientation; };
 
 
  592      { 
return orientation_; }
 
 
  595      { 
return paramIndexes_; }
 
 
 
  622      ) : dmv_(mv,orientation) {}
 
 
  650        if (derivSupport.
none())
 
 
 
  705#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
  707  enum EOutArgs_hess_vec_prod_f_xx {
 
  708    OUT_ARG_hess_vec_prod_f_xx   
 
  712  enum EOutArgs_hess_vec_prod_f_xp {
 
  713    OUT_ARG_hess_vec_prod_f_xp   
 
  717  enum EOutArgs_hess_vec_prod_f_px {
 
  718    OUT_ARG_hess_vec_prod_f_px   
 
  722  enum EOutArgs_hess_vec_prod_f_pp {
 
  723    OUT_ARG_hess_vec_prod_f_pp   
 
  727  enum EOutArgs_hess_vec_prod_g_xx {
 
  728    OUT_ARG_hess_vec_prod_g_xx   
 
  732  enum EOutArgs_hess_vec_prod_g_xp {
 
  733    OUT_ARG_hess_vec_prod_g_xp   
 
  737  enum EOutArgs_hess_vec_prod_g_px {
 
  738    OUT_ARG_hess_vec_prod_g_px   
 
  742  enum EOutArgs_hess_vec_prod_g_pp {
 
  743    OUT_ARG_hess_vec_prod_g_pp   
 
  747  enum EOutArgs_hess_f_xx {
 
  752  enum EOutArgs_hess_f_xp {
 
  757  enum EOutArgs_hess_f_pp {
 
  762  enum EOutArgs_hess_g_xx {
 
  767  enum EOutArgs_hess_g_xp {
 
  772  enum EOutArgs_hess_g_pp {
 
  869  template<
class Scalar>
 
  895#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
  897    bool supports(EOutArgs_hess_vec_prod_f_xx arg) 
const;
 
  900    bool supports(EOutArgs_hess_vec_prod_f_xp arg, 
int l) 
const;
 
  903    bool supports(EOutArgs_hess_vec_prod_f_px arg, 
int l) 
const;
 
  906    bool supports(EOutArgs_hess_vec_prod_f_pp arg, 
int l1, 
int l2) 
const;
 
  909    bool supports(EOutArgs_hess_vec_prod_g_xx arg, 
int j) 
const;
 
  912    bool supports(EOutArgs_hess_vec_prod_g_xp arg, 
int j, 
int l) 
const;
 
  915    bool supports(EOutArgs_hess_vec_prod_g_px arg, 
int j, 
int l) 
const;
 
  918    bool supports(EOutArgs_hess_vec_prod_g_pp arg, 
int j, 
int l1, 
int l2) 
const;
 
  920    bool supports(EOutArgs_hess_f_xx arg) 
const;
 
  923    bool supports(EOutArgs_hess_f_xp arg, 
int l) 
const;
 
  926    bool supports(EOutArgs_hess_f_pp arg, 
int l1, 
int l2) 
const;
 
  929    bool supports(EOutArgs_hess_g_xx arg, 
int j) 
const;
 
  932    bool supports(EOutArgs_hess_g_xp arg, 
int j, 
int l) 
const;
 
  935    bool supports(EOutArgs_hess_g_pp arg, 
int j, 
int l1, 
int l2) 
const;
 
  937    bool supports(EOutArgs_H_xx arg) 
const;
 
  940    bool supports(EOutArgs_H_xp arg, 
int l) 
const;
 
  943    bool supports(EOutArgs_H_pp arg, 
int l1, 
int l2) 
const;
 
  960    template<
typename ObjectType>
 
  963    template<
typename ObjectType>
 
  966    template<
typename ObjectType>
 
 1027#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
 1105    void set_DfDp_mp(
int l,  
const MPDerivative &DfDp_mp_l);
 
 1108    void set_DgDx_dot_mp(
int j, 
const MPDerivative &DgDx_dot_mp_j);
 
 1111    void set_DgDx_mp(
int j, 
const MPDerivative &DgDx_mp_j);
 
 1114    void set_DgDp_mp( 
int j, 
int l, 
const MPDerivative &DgDp_mp_j_l );
 
 1118#ifdef HAVE_THYRA_ME_POLYNOMIAL 
 1129    void setArgs( const OutArgs<Scalar>& outArgs, bool ignoreUnsupported = false );
 
 1169    template<
typename ObjectType>
 
 1180#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
 1248#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
 1250    void _setHessianSupports( 
const bool supports );
 
 1259#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
 1266    std::string modelEvalDescription_;
 
 1273#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
 1275    bool supports_hess_f_xx_;
 
 1276    hess_supports_t supports_hess_f_xp_;
 
 1277    hess_supports_t supports_hess_f_pp_;
 
 1278    hess_supports_t supports_hess_g_xx_;
 
 1279    hess_supports_t supports_hess_g_xp_;
 
 1280    hess_supports_t supports_hess_g_pp_;
 
 1281    bool supports_H_xx_;
 
 1282    hess_supports_t supports_H_xp_;
 
 1283    hess_supports_t supports_H_pp_;
 
 1285    bool supports_hess_vec_prod_f_xx_;
 
 1286    hess_supports_t supports_hess_vec_prod_f_xp_;
 
 1287    hess_supports_t supports_hess_vec_prod_f_px_;
 
 1288    hess_supports_t supports_hess_vec_prod_f_pp_;
 
 1289    hess_supports_t supports_hess_vec_prod_g_xx_;
 
 1290    hess_supports_t supports_hess_vec_prod_g_xp_;
 
 1291    hess_supports_t supports_hess_vec_prod_g_px_;
 
 1292    hess_supports_t supports_hess_vec_prod_g_pp_;
 
 1311#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
 1324    hess_vec_t hess_vec_prod_f_xp_; 
 
 1325    hess_vec_t hess_vec_prod_f_px_; 
 
 1326    hess_vec_t hess_vec_prod_f_pp_; 
 
 1328    hess_vec_t hess_vec_prod_g_xx_; 
 
 1329    hess_vec_t hess_vec_prod_g_xp_; 
 
 1330    hess_vec_t hess_vec_prod_g_px_; 
 
 1331    hess_vec_t hess_vec_prod_g_pp_; 
 
 1352#ifdef HAVE_THYRA_ME_POLYNOMIAL 
 1355    mutable bool isFailed_;
 
 1357    std::map<std::string,Teuchos::any> extended_outargs_;
 
 1361    void assert_supports(
 
 1365    void assert_supports(
 
 1369    void assert_supports(
 
 1373    void assert_supports(
 
 1378#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
 1380    void assert_supports(
 
 1381      EOutArgs_hess_vec_prod_f_xx arg
 
 1383    void assert_supports(
 
 1384      EOutArgs_hess_vec_prod_f_xp arg, 
int l
 
 1386    void assert_supports(
 
 1387      EOutArgs_hess_vec_prod_f_px arg, 
int l
 
 1389    void assert_supports(
 
 1390      EOutArgs_hess_vec_prod_f_pp arg, 
int l1, 
int l2
 
 1392    void assert_supports(
 
 1393      EOutArgs_hess_vec_prod_g_xx arg, 
int j
 
 1395    void assert_supports(
 
 1396      EOutArgs_hess_vec_prod_g_xp arg, 
int j, 
int l
 
 1398    void assert_supports(
 
 1399      EOutArgs_hess_vec_prod_g_px arg, 
int j, 
int l
 
 1401    void assert_supports(
 
 1402      EOutArgs_hess_vec_prod_g_pp arg, 
int j, 
int l1, 
int l2
 
 1405    void assert_supports(
 
 1406      EOutArgs_hess_f_xx arg
 
 1408    void assert_supports(
 
 1409      EOutArgs_hess_f_xp arg, 
int l
 
 1411    void assert_supports(
 
 1412      EOutArgs_hess_f_pp arg, 
int l1, 
int l2
 
 1414    void assert_supports(
 
 1415      EOutArgs_hess_g_xx arg, 
int j
 
 1417    void assert_supports(
 
 1418      EOutArgs_hess_g_xp arg, 
int j, 
int l
 
 1420    void assert_supports(
 
 1421      EOutArgs_hess_g_pp arg, 
int j, 
int l1, 
int l2
 
 1423    void assert_supports(
 
 1426    void assert_supports(
 
 1427      EOutArgs_H_xp arg, 
int l
 
 1429    void assert_supports(
 
 1430      EOutArgs_H_pp arg, 
int l1, 
int l2
 
 1436    void assert_supports(
 
 1440    void assert_supports(
 
 1444    void assert_supports(
 
 1448    void assert_supports(
 
 1453    void assert_l(
int l) 
const;
 
 1454    void assert_j(
int j) 
const;
 
 1460#ifdef HAVE_PROTECTED_NESTED_TEMPLATE_CLASS_ACCESS 
 1474  template<
class Scalar>
 
 1492    template<
typename ObjectType>
 
 
 1507  template<
class Scalar>
 
 1529#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
 1545    void setSupports(EOutArgs_hess_vec_prod_g_pp arg, 
int j, 
int l1, 
int l2, 
bool supports = 
true );
 
 1567    template<
typename ObjectType>
 
 1599#ifdef Thyra_BUILD_HESSIAN_SUPPORT 
 1601    void setHessianSupports( 
const bool supports = 
true );
 
 
 1639getOtherDerivativeMultiVectorOrientation(
 
 1651template<
class Scalar>
 
 1652template<
typename ObjectType>
 
 1655  std::map<std::string,Teuchos::any>::const_iterator search =
 
 1656    extended_inargs_.find(
typeid(ObjectType).name());
 
 1658  if (search == extended_inargs_.end())
 
 
 1664template<
class Scalar>
 
 1665template<
typename ObjectType>
 
 1668  std::map<std::string,Teuchos::any>::iterator search = extended_inargs_.find(
typeid(ObjectType).name());
 
 1671                             "ERROR: InArgs::set<ObjectType>() was called with unsupported extended data type \"" 
 1672                             << 
typeid(ObjectType).name() << 
"\"!");
 
 
 1677template<
class Scalar>
 
 1678template<
typename ObjectType>
 
 1682  std::map<std::string,Teuchos::any>::const_iterator search = extended_inargs_.find(
typeid(ObjectType).name());
 
 1685                             "ERROR: InArgs::get<ObjectType>() was called with unsupported extended data type \"" 
 1686                             << 
typeid(ObjectType).name() << 
"\"!");
 
 1691template<
class Scalar>
 
 1692template<
class ObjectType>
 
 1696  this->
template _setSupports<ObjectType>(in_supports);
 
 
 1699template<
class Scalar>
 
 1700template<
class ObjectType>
 
 1709    this->extended_inargs_[
typeid(ObjectType).name()] = 
Teuchos::any();
 
 1712    std::map<std::string,Teuchos::any>::iterator search =
 
 1713      this->extended_inargs_.find(
typeid(ObjectType).name());
 
 1715    if (search != this->extended_inargs_.end())
 
 1716      this->extended_inargs_.erase(
typeid(ObjectType).name());
 
 
 1721template<
class Scalar>
 
 1722template<
typename ObjectType>
 
 1725  std::map<std::string,Teuchos::any>::const_iterator search =
 
 1726    extended_outargs_.find(
typeid(ObjectType).name());
 
 1728  if (search == extended_outargs_.end())
 
 
 1734template<
class Scalar>
 
 1735template<
typename ObjectType>
 
 1738  std::map<std::string,Teuchos::any>::iterator search = extended_outargs_.find(
typeid(ObjectType).name());
 
 1741                             "ERROR: OutArgs::set<ObjectType>() was called with unsupported extended data type \"" 
 1742                             << 
typeid(ObjectType).name() << 
"\"!");
 
 
 1747template<
class Scalar>
 
 1748template<
typename ObjectType>
 
 1752  std::map<std::string,Teuchos::any>::const_iterator search = extended_outargs_.find(
typeid(ObjectType).name());
 
 1755                             "ERROR: OutArgs::get<ObjectType>() was called with unsupported extended data type \"" 
 1756                             << 
typeid(ObjectType).name() << 
"\"!");
 
 1761template<
class Scalar>
 
 1762template<
class ObjectType>
 
 1766  this->
template _setSupports<ObjectType>(in_supports);
 
 
 1769template<
class Scalar>
 
 1770template<
class ObjectType>
 
 1779    this->extended_outargs_[
typeid(ObjectType).name()] = 
Teuchos::any();
 
 1782    std::map<std::string,Teuchos::any>::iterator search =
 
 1783      this->extended_outargs_.find(
typeid(ObjectType).name());
 
 1785    if (search != this->extended_outargs_.end())
 
 1786      this->extended_outargs_.erase(
typeid(ObjectType).name());
 
 
 
 1799    case ModelEvaluatorBase::IN_ARG_x_dot_dot:
 
 1800      return "IN_ARG_x_dot_dot";
 
 1801    case ModelEvaluatorBase::IN_ARG_x_dot:
 
 1802      return "IN_ARG_x_dot";
 
 1803    case ModelEvaluatorBase::IN_ARG_x:
 
 1805    case ModelEvaluatorBase::IN_ARG_x_dot_poly:
 
 1806      return "IN_ARG_x_dot_poly";
 
 1807    case ModelEvaluatorBase::IN_ARG_x_poly:
 
 1808      return "IN_ARG_x_poly";
 
 1809    case ModelEvaluatorBase::IN_ARG_x_dot_mp:
 
 1810      return "IN_ARG_x_dot_mp";
 
 1811    case ModelEvaluatorBase::IN_ARG_x_mp:
 
 1812      return "IN_ARG_x_mp";
 
 1813    case ModelEvaluatorBase::IN_ARG_t:
 
 1815    case ModelEvaluatorBase::IN_ARG_alpha:
 
 1816      return "IN_ARG_alpha";
 
 1817    case ModelEvaluatorBase::IN_ARG_beta:
 
 1818      return "IN_ARG_beta";
 
 1819    case ModelEvaluatorBase::IN_ARG_W_x_dot_dot_coeff:
 
 1820      return "IN_ARG_W_x_dot_dot_coeff";
 
 1821    case ModelEvaluatorBase::IN_ARG_step_size:
 
 1822      return "IN_ARG_step_size";
 
 1823    case ModelEvaluatorBase::IN_ARG_stage_number:
 
 1824      return "IN_ARG_stage_number";
 
 1838    case ModelEvaluatorBase::OUT_ARG_f:
 
 1840    case ModelEvaluatorBase::OUT_ARG_W:
 
 1842    case ModelEvaluatorBase::OUT_ARG_f_mp:
 
 1843      return "OUT_ARG_f_mp";
 
 1844    case ModelEvaluatorBase::OUT_ARG_W_mp:
 
 1845      return "OUT_ARG_W_mp";
 
 1846    case ModelEvaluatorBase::OUT_ARG_W_op:
 
 1847      return "OUT_ARG_W_op";
 
 1848    case ModelEvaluatorBase::OUT_ARG_W_prec:
 
 1849      return "OUT_ARG_W_prec";
 
 1850    case ModelEvaluatorBase::OUT_ARG_f_poly:
 
 1851      return "OUT_ARG_f_poly";
 
 1863  ModelEvaluatorBase::EDerivativeMultiVectorOrientation orientation
 
 1866  switch(orientation) {
 
 1867    case ModelEvaluatorBase::DERIV_MV_BY_COL:
 
 1868      return "DERIV_MV_BY_COL";
 
 1869    case ModelEvaluatorBase::DERIV_TRANS_MV_BY_ROW:
 
 1870      return "DERIV_TRANS_MV_BY_ROW";
 
 1882Thyra::getOtherDerivativeMultiVectorOrientation(
 
 1883  ModelEvaluatorBase::EDerivativeMultiVectorOrientation orientation
 
 1886  switch(orientation) {
 
 1887    case ModelEvaluatorBase::DERIV_MV_BY_COL:
 
 1888      return ModelEvaluatorBase::DERIV_TRANS_MV_BY_ROW;
 
 1889    case ModelEvaluatorBase::DERIV_TRANS_MV_BY_ROW:
 
 1890      return ModelEvaluatorBase::DERIV_MV_BY_COL;
 
 1896  return ModelEvaluatorBase::DERIV_MV_BY_COL; 
 
 
 
 
 
 
 
 
 
const RCP< T > & assert_not_null() const
 
RCP< T > & operator=(const RCP< T > &r_ptr)
 
Base class for all linear operators.
 
Base class for all linear operators that can support a high-level solve operation.
 
Simple aggregate class for a derivative object represented as a column-wise multi-vector or its trans...
 
DerivativeMultiVector(const RCP< MultiVectorBase< Scalar > > &mv, const EDerivativeMultiVectorOrientation orientation=DERIV_MV_BY_COL)
 
void changeOrientation(const EDerivativeMultiVectorOrientation orientation)
 
const DerivativeMultiVector< Scalar > & assert_not_null() const
 
EDerivativeMultiVectorOrientation getOrientation() const
 
RCP< MultiVectorBase< Scalar > > getMultiVector() const
 
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
 
std::string description() const
 
Determines the forms of a general derivative that are supported.
 
DerivativeSupport(EDerivativeLinearOp)
 
bool supports(EDerivativeLinearOp) const
 
bool supports(EDerivativeMultiVectorOrientation mvOrientation) const
 
DerivativeSupport & plus(EDerivativeLinearOp)
 
bool isSameSupport(const DerivativeSupport &derivSupport) const
 
DerivativeSupport(EDerivativeMultiVectorOrientation mvOrientation)
 
std::string description() const
 
DerivativeSupport & plus(EDerivativeMultiVectorOrientation mvOrientation)
 
Simple aggregate class that stores a derivative object as a general linear operator or as a multi-vec...
 
DerivativeMultiVector< Scalar > getDerivativeMultiVector() const
 
RCP< MultiVectorBase< Scalar > > getMultiVector() const
 
Derivative(const DerivativeMultiVector< Scalar > &dmv)
 
Derivative(const RCP< MultiVectorBase< Scalar > > &mv, const EDerivativeMultiVectorOrientation orientation=DERIV_MV_BY_COL)
 
const Derivative< Scalar > & assert_not_null() const
 
std::string description() const
 
bool isSupportedBy(const DerivativeSupport &derivSupport) const
Returns true if the form of the derivative contained here is supported by deriveSupport.
 
Derivative(const RCP< LinearOpBase< Scalar > > &lo)
 
RCP< LinearOpBase< Scalar > > getLinearOp() const
 
EDerivativeMultiVectorOrientation getMultiVectorOrientation() const
 
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
 
Type to embed evaluation accuracy with an RCP-managed object.
 
EEvalType getType() const
 
void reset(const RCP< ObjType > &obj, EEvalType evalType)
 
Evaluation(const RCP< ObjType > &obj, EEvalType evalType)
 
Evaluation(const RCP< ObjType > &obj)
Implicit conversion from RCP<ObjType>.
 
Evaluation(Teuchos::ENull)
 
Protected subclass of InArgs that only ModelEvaluator subclasses can access to set up the selection o...
 
void setModelEvalDescription(const std::string &modelEvalDescription)
 
void set_Np_Ng(int Np, int Ng)
 
void setUnsupportsAndRelated(EInArgsMembers arg)
 
void setSupports(EInArgsMembers arg, bool supports=true)
 
Concrete aggregate class for all input arguments computable by a ModelEvaluator subclass object.
 
void set_stage_number(Scalar stage_number)
Precondition: supports(IN_ARG_stage_number)==true.
 
std::string modelEvalDescription() const
 
Scalar get_W_x_dot_dot_coeff() const
Precondition: supports(IN_ARG_W_x_dot_dot_coeff)==true.
 
int Ng() const
Return the number of axillary response functions g(j)(...) supported (Ng >= 0).
 
Scalar get_alpha() const
Precondition: supports(IN_ARG_alpha)==true.
 
RCP< const VectorBase< Scalar > > get_f_multiplier() const
Precondition: supports(IN_ARG_x)==true.
 
RCP< const MultiVectorBase< Scalar > > get_x_direction() const
Precondition: supports(IN_ARG_x)==true.
 
RCP< const VectorBase< Scalar > > get_p(int l) const
Get p(l) where 0 <= l && l < this->Np().
 
void set_W_x_dot_dot_coeff(Scalar W_x_dot_dot_coeff)
Precondition: supports(IN_ARG_W_x_dot_dot_coeff)==true.
 
void setArgs(const InArgs< Scalar > &inArgs, bool ignoreUnsupported=false, bool cloneObjects=false)
Set non-null arguments (does not overwrite non-NULLs with NULLs) .
 
void _setUnsupportsAndRelated(EInArgsMembers arg)
 
void set_x_mp(const RCP< const Stokhos::ProductEpetraVector > &x_mp)
Precondition: supports(IN_ARG_x_mp)==true.
 
void set_p_direction(int l, const RCP< const MultiVectorBase< Scalar > > &p_direction_l)
Precondition: supports(IN_ARG_x)==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.
 
void _set_Np_Ng(int Np, int Ng)
 
RCP< const Stokhos::ProductEpetraVector > get_x_mp() const
Precondition: supports(IN_ARG_x_mp)==true.
 
RCP< const MultiVectorBase< Scalar > > get_p_direction(int l) const
Get p(l) where 0 <= l && l < this->Np().
 
void set_x_dot_mp(const RCP< const Stokhos::ProductEpetraVector > &x_dot_mp)
Precondition: supports(IN_ARG_x_dot_mp)==true.
 
void set_f_multiplier(const RCP< const VectorBase< Scalar > > &f_multiplier)
Precondition: supports(IN_ARG_x)==true.
 
std::string description() const
 
void assertSameSupport(const InArgs< Scalar > &inArgs) const
Assert that two InArgs objects have the same support.
 
void set_x(const RCP< const VectorBase< Scalar > > &x)
Precondition: supports(IN_ARG_x)==true.
 
Scalar get_beta() const
Precondition: supports(IN_ARG_beta)==true.
 
void set_beta(Scalar beta)
Precondition: supports(IN_ARG_beta)==true.
 
void set(const RCP< const ObjectType > &uo)
Set an extended input object of type ObjectType in the InArgs. Precondition: supports()==true.
 
void set_step_size(Scalar step_size)
Precondition: supports(IN_ARG_step_size)==true.
 
void set_x_direction(const RCP< const MultiVectorBase< Scalar > > &x_direction)
Precondition: supports(IN_ARG_x)==true.
 
RCP< const VectorBase< Scalar > > get_x() const
Precondition: supports(IN_ARG_x)==true.
 
void _setSupports(const bool supports)
 
bool supports() const
Determines if an extended input argument of type ObjectType is supported.
 
Teuchos::ScalarTraits< Scalar >::magnitudeType ScalarMag
.
 
RCP< const ObjectType > get() const
Get an extended input object of type ObjectType>/tt> from the InArgs. Precondition: supports()==true.
 
ScalarMag get_t() const
.Precondition: supports(IN_ARG_t)==true
 
void set_x_dot(const RCP< const VectorBase< Scalar > > &x_dot)
Precondition: supports(IN_ARG_x_dot)==true.
 
Scalar get_stage_number() const
Precondition: supports(IN_ARG_stage_number)==true.
 
RCP< const VectorBase< Scalar > > get_g_multiplier(int j) const
Precondition: supports(IN_ARG_x)==true.
 
void set_alpha(Scalar alpha)
Precondition: supports(IN_ARG_alpha)==true.
 
void set_t(ScalarMag t)
Precondition: supports(IN_ARG_t)==true.
 
RCP< const VectorBase< Scalar > > get_x_dot() const
Precondition: supports(IN_ARG_x_dot)==true.
 
bool supports(EInArgsMembers arg) const
Determines if an input argument is supported or not.
 
void set_g_multiplier(int j, const RCP< const VectorBase< Scalar > > &g_multiplier)
Precondition: supports(IN_ARG_x)==true.
 
void set_x_dot_dot(const RCP< const VectorBase< Scalar > > &x_dot_dot)
Precondition: supports(IN_ARG_x_dot_dot)==true.
 
void _setSupports(EInArgsMembers arg, bool supports)
 
Scalar get_step_size() const
Precondition: supports(IN_ARG_step_size)==true.
 
void _setModelEvalDescription(const std::string &modelEvalDescription)
 
RCP< const Stokhos::ProductEpetraVector > get_x_dot_mp() const
Precondition: supports(IN_ARG_x_dotmp)==true.
 
int Np() const
Return the number of parameter subvectors p(l) supported (Np >= 0).
 
RCP< const VectorBase< Scalar > > get_x_dot_dot() const
Precondition: supports(IN_ARG_x_dot_dot)==true.
 
Simple aggregate class for a derivative object represented as a column-wise multi-vector or its trans...
 
RCP< Stokhos::ProductEpetraMultiVector > getMultiVector() const
 
std::string description() const
 
void describe(Teuchos::FancyOStream &, const Teuchos::EVerbosityLevel) const
 
void changeOrientation(const EDerivativeMultiVectorOrientation orientation)
 
const Teuchos::Array< int > & getParamIndexes() const
 
MPDerivativeMultiVector()
 
const MPDerivativeMultiVector & assert_not_null() const
 
MPDerivativeMultiVector(const RCP< Stokhos::ProductEpetraMultiVector > &mv, const EDerivativeMultiVectorOrientation orientation=DERIV_MV_BY_COL, const Teuchos::Array< int > ¶mIndexes=Teuchos::Array< int >())
 
EDerivativeMultiVectorOrientation getOrientation() const
 
Simple aggregate class that stores a derivative object as a general linear operator or as a multi-vec...
 
std::string description() const
 
MPDerivativeMultiVector getDerivativeMultiVector() const
 
RCP< Stokhos::ProductEpetraMultiVector > getMultiVector() const
 
MPDerivative(const RCP< Stokhos::ProductEpetraMultiVector > &mv, const EDerivativeMultiVectorOrientation orientation=DERIV_MV_BY_COL)
 
const MPDerivative & assert_not_null() const
 
MPDerivative(const RCP< Stokhos::ProductEpetraOperator > &lo)
 
MPDerivative(const MPDerivativeMultiVector &dmv)
 
bool isSupportedBy(const DerivativeSupport &derivSupport) const
Returns true if the form of the derivative contained here is supported by deriveSupport.
 
EDerivativeMultiVectorOrientation getMultiVectorOrientation() const
 
RCP< Stokhos::ProductEpetraOperator > getLinearOp() const
 
void describe(Teuchos::FancyOStream &, const Teuchos::EVerbosityLevel) const
 
Protected subclass of OutArgs that only ModelEvaluator subclasses can access to set up the selection ...
 
void setSupports(EOutArgsMembers arg, bool supports=true)
 
void set_DgDx_dot_properties(int j, const DerivativeProperties &properties)
 
void set_DfDp_properties(int l, const DerivativeProperties &properties)
 
void set_W_properties(const DerivativeProperties &properties)
 
void set_DgDx_properties(int j, const DerivativeProperties &properties)
 
void set_DgDp_properties(int j, int l, const DerivativeProperties &properties)
 
void setUnsupportsAndRelated(EInArgsMembers arg)
 
void setModelEvalDescription(const std::string &modelEvalDescription)
 
void set_Np_Ng(int Np, int Ng)
 
Concrete aggregate class for all output arguments computable by a ModelEvaluator subclass object.
 
void _set_DfDp_properties(int l, const DerivativeProperties &properties)
 
Derivative< Scalar > get_DfDp(int l) const
Precondition: supports(OUT_ARG_DfDp,l)==true.
 
void _setSupports(EOutArgsMembers arg, bool supports)
 
void _set_DgDx_dot_properties(int j, const DerivativeProperties &properties)
 
void set(const RCP< const ObjectType > &uo)
Set an extended output argument of type ObjectType in OutArgs. Precondition: supports()==true.
 
RCP< LinearOpWithSolveBase< Scalar > > get_W() const
Precondition: supports(OUT_ARG_W)==true.
 
DerivativeProperties get_DfDp_properties(int l) const
Return the know properties of DfDp(l) (precondition: supports(OUT_ARG_DfDp,l)==true).
 
int Ng() const
Return the number of axillary response functions g(j)(...) supported (Ng >= 0).
 
void set_f_mp(const RCP< Stokhos::ProductEpetraVector > &f_mp)
Precondition: supports(OUT_ARG_f_mp)==true.
 
std::string description() const
 
std::string modelEvalDescription() const
 
void set_f(const Evaluation< VectorBase< Scalar > > &f)
Precondition: supports(OUT_ARG_f)==true.
 
void _set_DgDx_properties(int j, const DerivativeProperties &properties)
 
bool supports() const
Determines if an extended output argument of type ObjectType is supported.
 
Derivative< Scalar > get_DgDp(int j, int l) const
Precondition: supports(OUT_ARG_DgDp,j,l)==true.
 
void assertSameSupport(const OutArgs< Scalar > &outArgs) const
Assert that two OutArgs objects have the same support.
 
Evaluation< VectorBase< Scalar > > get_f() const
Precondition: supports(OUT_ARG_f)==true.
 
void set_W(const RCP< LinearOpWithSolveBase< Scalar > > &W)
Precondition: supports(OUT_ARG_W)==true.
 
void set_DfDp(int l, const Derivative< Scalar > &DfDp_l)
Precondition: supports(OUT_ARG_DfDp,l)==true.
 
DerivativeProperties get_W_properties() const
Return the known properties of W (precondition: supports(OUT_ARG_f)==true).
 
void set_W_prec(const RCP< PreconditionerBase< Scalar > > &W_prec)
Precondition: supports(OUT_ARG_W_op)==true.
 
RCP< Stokhos::ProductEpetraOperator > get_W_mp() const
Precondition: supports(OUT_ARG_W_mp)==true.
 
void _set_Np_Ng(int Np, int Ng)
 
void set_W_mp(const RCP< Stokhos::ProductEpetraOperator > &W_mp)
Precondition: supports(OUT_ARG_W_mp)==true.
 
void _set_DgDp_properties(int j, int l, const DerivativeProperties &properties)
 
RCP< LinearOpBase< Scalar > > get_W_op() const
Precondition: supports(OUT_ARG_W_op)==true.
 
void set_DgDx(int j, const Derivative< Scalar > &DgDx_j)
Precondition: supports(OUT_ARG_DgDx,j)==true.
 
void set_DgDx_dot(int j, const Derivative< Scalar > &DgDx_dot_j)
Precondition: supports(OUT_ARG_DgDx_dot,j)==true.
 
void _setSupports(const bool supports)
 
DerivativeProperties get_DgDx_dot_properties(int j) const
Return the know properties of DgDx_dot(j) (precondition: supports(OUT_ARG_DgDx_dot,...
 
Derivative< Scalar > get_DgDx_dot(int j) const
Precondition: supports(OUT_ARG_DgDx_dot,j)==true.
 
DerivativeProperties get_DgDx_properties(int j) const
Return the know properties of DgDx(j) (precondition: supports(OUT_ARG_DgDx,j)==true).
 
Derivative< Scalar > get_DgDx(int j) const
Precondition: supports(OUT_ARG_DgDx,j)==true.
 
void set_W_op(const RCP< LinearOpBase< Scalar > > &W_op)
Precondition: supports(OUT_ARG_W_op)==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).
 
bool supports(EOutArgsMembers arg) const
Determine if an input argument is supported or not.
 
RCP< PreconditionerBase< Scalar > > get_W_prec() const
Precondition: supports(OUT_ARG_W_op)==true.
 
RCP< Stokhos::ProductEpetraVector > get_g_mp(int j) const
Precondition: supports(OUT_ARG_g_mp)==true..
 
void set_DgDp(int j, int l, const Derivative< Scalar > &DgDp_j_l)
Precondition: supports(OUT_ARG_DgDp,j,l)==true.
 
int Np() const
Return the number of parameter subvectors p(l) supported (Np >= 0).
 
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.
 
void _setModelEvalDescription(const std::string &modelEvalDescription)
 
void _set_W_properties(const DerivativeProperties &properties)
 
void setFailed() const
Set that the evaluation as a whole failed.
 
RCP< Stokhos::ProductEpetraVector > get_f_mp() const
Precondition: supports(OUT_ARG_f_mp)==true.
 
void set_g(int j, const Evaluation< VectorBase< Scalar > > &g_j)
Precondition: supports(OUT_ARG_g)==true.
 
RCP< const ObjectType > get() const
Get an extended output argument of type ObjectType from OutArgs. Precondition: supports()==true.
 
void set_g_mp(int j, const RCP< Stokhos::ProductEpetraVector > &g_mp_j)
Precondition: supports(OUT_ARG_g_mp)==true.
 
bool isFailed() const
Return if the evaluation failed or not.
 
Evaluation< VectorBase< Scalar > > get_g(int j) const
Precondition: supports(OUT_ARG_g)==true..
 
void _setUnsupportsAndRelated(EInArgsMembers arg)
 
Base subclass for ModelEvaluator that defines some basic types.
 
@ IN_ARG_W_x_dot_dot_coeff
 
@ DERIV_LINEARITY_NONCONST
 
@ DERIV_LINEARITY_UNKNOWN
 
static const int NUM_E_OUT_ARGS_MEMBERS
.
 
ModelEvaluatorBase()
constructor
 
static const int NUM_E_IN_ARGS_MEMBERS
.
 
EDerivativeMultiVectorOrientation
 
@ DERIV_MV_BY_COL
Deprecated!
 
@ DERIV_MV_GRADIENT_FORM
Gradient form DhDz^T (nh columns of z_space vectors)
 
@ DERIV_MV_JACOBIAN_FORM
Jacobian form DhDz (nz columns of h_space vectors)
 
@ DERIV_TRANS_MV_BY_ROW
Deprecated!
 
EEvalType
The type of an evaluation.
 
@ EVAL_TYPE_APPROX_DERIV
Do an exact evaluation (default)
 
@ EVAL_TYPE_VERY_APPROX_DERIV
An approx. eval. for a F.D. deriv.
 
Interface for a collection of column vectors called a multi-vector.
 
Simple interface class to access a precreated preconditioner as one or more linear operators objects ...
 
Abstract interface for finite-dimensional dense vectors.
 
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
 
const char * toString(EConj conj)
Return a string name for a EOpTransp value. `*.
 
#define TEUCHOS_UNREACHABLE_RETURN(dummyReturnVal)
 
T_To & dyn_cast(T_From &from)
 
Simple public strict containing properties of a derivative object.
 
EDerivativeLinearity linearity
 
DerivativeProperties(EDerivativeLinearity in_linearity, ERankStatus in_rank, bool in_supportsAdjoint)