1253template<
class Scalar>
1262template<
class Scalar>
1272template<
class Scalar>
1281template<
class Scalar>
1286 return W_properties_;
1290template<
class Scalar>
1300template<
class Scalar>
1309template<
class Scalar>
1314 return DfDp_properties_[l];
1318template<
class Scalar>
1324 DfDp_mp_[l] = DfDp_mp_l;
1328template<
class Scalar>
1337template<
class Scalar>
1338ModelEvaluatorBase::DerivativeProperties
1339ModelEvaluatorBase::OutArgs<Scalar>::get_DfDp_mp_properties(
int l)
const
1342 return DfDp_mp_properties_[l];
1346template<
class Scalar>
1352 DgDx_dot_[j] = DgDx_dot_j;
1356template<
class Scalar>
1361 return DgDx_dot_[j];
1365template<
class Scalar>
1370 return DgDx_dot_properties_[j];
1374template<
class Scalar>
1380 DgDx_dot_mp_[j] = DgDx_dot_mp_j;
1384template<
class Scalar>
1389 return DgDx_dot_mp_[j];
1393template<
class Scalar>
1394ModelEvaluatorBase::DerivativeProperties
1395ModelEvaluatorBase::OutArgs<Scalar>::get_DgDx_dot_mp_properties(
int j)
const
1398 return DgDx_dot_mp_properties_[j];
1402template<
class Scalar>
1412template<
class Scalar>
1421template<
class Scalar>
1426 return DgDx_properties_[j];
1430template<
class Scalar>
1436 DgDx_mp_[j] = DgDx_mp_j;
1440template<
class Scalar>
1449template<
class Scalar>
1450ModelEvaluatorBase::DerivativeProperties
1451ModelEvaluatorBase::OutArgs<Scalar>::get_DgDx_mp_properties(
int j)
const
1454 return DgDx_mp_properties_[j];
1458template<
class Scalar>
1464 DgDp_[ j*Np() + l ] = DgDp_j_l;
1468template<
class Scalar>
1473 return DgDp_[ j*Np() + l ];
1477template<
class Scalar>
1482 return DgDp_properties_[ j*Np() + l ];
1486template<
class Scalar>
1492 DgDp_mp_[ j*Np() + l ] = DgDp_mp_j_l;
1496template<
class Scalar>
1501 return DgDp_mp_[ j*Np() + l ];
1505template<
class Scalar>
1506ModelEvaluatorBase::DerivativeProperties
1507ModelEvaluatorBase::OutArgs<Scalar>::get_DgDp_mp_properties(
int j,
int l)
const
1510 return DgDp_mp_properties_[ j*Np() + l ];
1514#ifdef Thyra_BUILD_HESSIAN_SUPPORT
1516template<
class Scalar>
1517void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_f_xx(
1518 const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_f_xx
1521 assert_supports(OUT_ARG_hess_vec_prod_f_xx);
1522 hess_vec_prod_f_xx_ = hess_vec_prod_f_xx;
1525template<
class Scalar>
1526void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_f_xp(
1527 int l,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_f_xp_l
1530 assert_supports(OUT_ARG_hess_vec_prod_f_xp,l);
1531 hess_vec_prod_f_xp_[l] = hess_vec_prod_f_xp_l;
1534template<
class Scalar>
1535void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_f_px(
1536 int l,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_f_px_l
1539 assert_supports(OUT_ARG_hess_vec_prod_f_px,l);
1540 hess_vec_prod_f_px_[l] = hess_vec_prod_f_px_l;
1543template<
class Scalar>
1544void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_f_pp(
1545 int l1,
int l2,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_f_pp_l1_l2
1548 assert_supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2);
1549 hess_vec_prod_f_pp_[ l1*Np() + l2 ] = hess_vec_prod_f_pp_l1_l2;
1552template<
class Scalar>
1553RCP<MultiVectorBase<Scalar> >
1554ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_f_xx()
const
1556 assert_supports(OUT_ARG_hess_vec_prod_f_xx);
1557 return hess_vec_prod_f_xx_;
1560template<
class Scalar>
1561RCP<MultiVectorBase<Scalar> >
1562ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_f_xp(
int l)
const
1564 assert_supports(OUT_ARG_hess_vec_prod_f_xp,l);
1565 return hess_vec_prod_f_xp_[l];
1568template<
class Scalar>
1569RCP<MultiVectorBase<Scalar> >
1570ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_f_px(
int l)
const
1572 assert_supports(OUT_ARG_hess_vec_prod_f_px,l);
1573 return hess_vec_prod_f_px_[l];
1576template<
class Scalar>
1577RCP<MultiVectorBase<Scalar> >
1578ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_f_pp(
int l1,
int l2)
const
1580 assert_supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2);
1581 return hess_vec_prod_f_pp_[ l1*Np() + l2 ];
1585template<
class Scalar>
1586void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_g_xx(
1587 int j,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_g_xx_j
1590 assert_supports(OUT_ARG_hess_vec_prod_g_xx,j);
1591 hess_vec_prod_g_xx_[j] = hess_vec_prod_g_xx_j;
1594template<
class Scalar>
1595void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_g_xp(
1596 int j,
int l,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_g_xp_j_l
1599 assert_supports(OUT_ARG_hess_vec_prod_g_xp,j,l);
1600 hess_vec_prod_g_xp_[ j*Np() + l ] = hess_vec_prod_g_xp_j_l;
1603template<
class Scalar>
1604void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_g_px(
1605 int j,
int l,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_g_px_j_l
1608 assert_supports(OUT_ARG_hess_vec_prod_g_px,j,l);
1609 hess_vec_prod_g_px_[ j*Np() + l ] = hess_vec_prod_g_px_j_l;
1612template<
class Scalar>
1613void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_g_pp(
1614 int j,
int l1,
int l2,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_g_pp_j_l1_l2
1617 assert_supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2);
1618 hess_vec_prod_g_pp_[ j*Np()*Np() + l1*Np() + l2 ] = hess_vec_prod_g_pp_j_l1_l2;
1621template<
class Scalar>
1622RCP<MultiVectorBase<Scalar> >
1623ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_g_xx(
int j)
const
1625 assert_supports(OUT_ARG_hess_vec_prod_g_xx,j);
1626 return hess_vec_prod_g_xx_[j];
1629template<
class Scalar>
1630RCP<MultiVectorBase<Scalar> >
1631ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_g_xp(
int j,
int l)
const
1633 assert_supports(OUT_ARG_hess_vec_prod_g_xp,j,l);
1634 return hess_vec_prod_g_xp_[ j*Np() + l ];
1637template<
class Scalar>
1638RCP<MultiVectorBase<Scalar> >
1639ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_g_px(
int j,
int l)
const
1641 assert_supports(OUT_ARG_hess_vec_prod_g_px,j,l);
1642 return hess_vec_prod_g_px_[ j*Np() + l ];
1645template<
class Scalar>
1646RCP<MultiVectorBase<Scalar> >
1647ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_g_pp(
int j,
int l1,
int l2)
const
1649 assert_supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2);
1650 return hess_vec_prod_g_pp_[ j*Np()*Np() + l1*Np() + l2 ];
1653template<
class Scalar>
1654void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_f_xx(
1655 const RCP<LinearOpBase<Scalar> > &hess_f_xx
1658 assert_supports(OUT_ARG_hess_f_xx);
1659 hess_f_xx_ = hess_f_xx;
1662template<
class Scalar>
1663void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_f_xp(
1664 int l,
const RCP<LinearOpBase<Scalar> > &hess_f_xp_l
1667 assert_supports(OUT_ARG_hess_f_xp,l);
1668 hess_f_xp_[l] = hess_f_xp_l;
1671template<
class Scalar>
1672void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_f_pp(
1673 int l1,
int l2,
const RCP<LinearOpBase<Scalar> > &hess_f_pp_l1_l2
1676 assert_supports(OUT_ARG_hess_f_pp,l1,l2);
1677 hess_f_pp_[ l1*Np() + l2 ] = hess_f_pp_l1_l2;
1680template<
class Scalar>
1681RCP<LinearOpBase<Scalar> >
1682ModelEvaluatorBase::OutArgs<Scalar>::get_hess_f_xx()
const
1684 assert_supports(OUT_ARG_hess_f_xx);
1688template<
class Scalar>
1689RCP<LinearOpBase<Scalar> >
1690ModelEvaluatorBase::OutArgs<Scalar>::get_hess_f_xp(
int l)
const
1692 assert_supports(OUT_ARG_hess_f_xp,l);
1693 return hess_f_xp_[l];
1696template<
class Scalar>
1697RCP<LinearOpBase<Scalar> >
1698ModelEvaluatorBase::OutArgs<Scalar>::get_hess_f_pp(
int l1,
int l2)
const
1700 assert_supports(OUT_ARG_hess_f_pp,l1,l2);
1701 return hess_f_pp_[ l1*Np() + l2 ];
1704template<
class Scalar>
1705void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_g_xx(
1706 int j,
const RCP<LinearOpBase<Scalar> > &hess_g_xx_j
1709 assert_supports(OUT_ARG_hess_g_xx,j);
1710 hess_g_xx_[j] = hess_g_xx_j;
1713template<
class Scalar>
1714void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_g_xp(
1715 int j,
int l,
const RCP<LinearOpBase<Scalar> > &hess_g_xp_j_l
1718 assert_supports(OUT_ARG_hess_g_xp,j,l);
1719 hess_g_xp_[ j*Np() + l ] = hess_g_xp_j_l;
1722template<
class Scalar>
1723void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_g_pp(
1724 int j,
int l1,
int l2,
const RCP<LinearOpBase<Scalar> > &hess_g_pp_j_l1_l2
1727 assert_supports(OUT_ARG_hess_g_pp,j,l1,l2);
1728 hess_g_pp_[ j*Np()*Np() + l1*Np() + l2 ] = hess_g_pp_j_l1_l2;
1731template<
class Scalar>
1732RCP<LinearOpBase<Scalar> >
1733ModelEvaluatorBase::OutArgs<Scalar>::get_hess_g_xx(
int j)
const
1735 assert_supports(OUT_ARG_hess_g_xx,j);
1736 return hess_g_xx_[j];
1739template<
class Scalar>
1740RCP<LinearOpBase<Scalar> >
1741ModelEvaluatorBase::OutArgs<Scalar>::get_hess_g_xp(
int j,
int l)
const
1743 assert_supports(OUT_ARG_hess_g_xp,j,l);
1744 return hess_g_xp_[ j*Np() + l ];
1747template<
class Scalar>
1748RCP<LinearOpBase<Scalar> >
1749ModelEvaluatorBase::OutArgs<Scalar>::get_hess_g_pp(
int j,
int l1,
int l2)
const
1751 assert_supports(OUT_ARG_hess_g_pp,j,l1,l2);
1752 return hess_g_pp_[ j*Np()*Np() + l1*Np() + l2 ];
1755template<
class Scalar>
1756void ModelEvaluatorBase::OutArgs<Scalar>::set_H_xx(
1757 const RCP<LinearOpBase<Scalar> > &H_xx
1760 assert_supports(OUT_ARG_H_xx);
1764template<
class Scalar>
1765void ModelEvaluatorBase::OutArgs<Scalar>::set_H_xp(
1766 int l,
const RCP<LinearOpBase<Scalar> > &H_xp_l
1769 assert_supports(OUT_ARG_H_xp,l);
1773template<
class Scalar>
1774void ModelEvaluatorBase::OutArgs<Scalar>::set_H_pp(
1775 int l1,
int l2,
const RCP<LinearOpBase<Scalar> > &H_pp_l1_l2
1778 assert_supports(OUT_ARG_H_pp,l1,l2);
1779 H_pp_[ l1*Np() + l2 ] = H_pp_l1_l2;
1782template<
class Scalar>
1783RCP<LinearOpBase<Scalar> >
1784ModelEvaluatorBase::OutArgs<Scalar>::get_H_xx()
const
1786 assert_supports(OUT_ARG_H_xx);
1790template<
class Scalar>
1791RCP<LinearOpBase<Scalar> >
1792ModelEvaluatorBase::OutArgs<Scalar>::get_H_xp(
int l)
const
1794 assert_supports(OUT_ARG_H_xp,l);
1798template<
class Scalar>
1799RCP<LinearOpBase<Scalar> >
1800ModelEvaluatorBase::OutArgs<Scalar>::get_H_pp(
int l1,
int l2)
const
1802 assert_supports(OUT_ARG_H_pp,l1,l2);
1803 return H_pp_[ l1*Np() + l2 ];
1809#ifdef HAVE_THYRA_ME_POLYNOMIAL
1812template<
class Scalar>
1813void ModelEvaluatorBase::OutArgs<Scalar>::set_f_poly(
1821template<
class Scalar>
1822RCP<Teuchos::Polynomial< VectorBase<Scalar> > >
1823ModelEvaluatorBase::OutArgs<Scalar>::get_f_poly()
const
1832template<
class Scalar>
1838 const int min_Np = TEUCHOS_MIN(this->Np(),inputOutArgs.
Np());
1839 const int min_Ng = TEUCHOS_MIN(this->Ng(),inputOutArgs.
Ng());
1842 if ( supports(
OUT_ARG_f) || !ignoreUnsupported )
1843 set_f(inputOutArgs.
get_f());
1849#ifdef HAVE_THYRA_ME_POLYNOMIAL
1853 set_f_poly(inputOutArgs.get_f_poly());
1857 for (
int j = 0; j < min_Ng; ++j ) {
1858 if ( nonnull(inputOutArgs.
get_g(j)) )
1859 set_g(j,inputOutArgs.
get_g(j));
1861 for (
int j = 0; j < min_Ng; ++j ) {
1864 set_g_mp(j,inputOutArgs.
get_g_mp(j));
1869 if ( supports(
OUT_ARG_W) || !ignoreUnsupported )
1870 set_W(inputOutArgs.
get_W());
1887 for (
int l = 0; l < min_Np; ++l ) {
1888 MEB::Derivative<Scalar> DfDp_l;
1890 && !(DfDp_l=inputOutArgs.
get_DfDp(l)).isEmpty() )
1892 if ( DfDp_l.isSupportedBy(supports(
OUT_ARG_DfDp,l)) || !ignoreUnsupported )
1896 for (
int l = 0; l < min_Np; ++l ) {
1897 MEB::MPDerivative DfDp_mp_l;
1899 && !(DfDp_mp_l=inputOutArgs.get_DfDp_mp(l)).isEmpty() )
1901 if ( DfDp_mp_l.isSupportedBy(supports(
OUT_ARG_DfDp_mp,l)) || !ignoreUnsupported )
1902 set_DfDp_mp(l,DfDp_mp_l);
1906 for (
int j = 0; j < min_Ng; ++j ) {
1908 MEB::Derivative<Scalar> DgDx_dot_j;
1910 && !(DgDx_dot_j=inputOutArgs.
get_DgDx_dot(j)).isEmpty() )
1912 if( DgDx_dot_j.isSupportedBy(supports(
OUT_ARG_DgDx_dot,j)) || !ignoreUnsupported )
1913 set_DgDx_dot(j,DgDx_dot_j);
1916 MEB::Derivative<Scalar> DgDx_j;
1918 && !(DgDx_j=inputOutArgs.
get_DgDx(j)).isEmpty() ) {
1919 if ( DgDx_j.isSupportedBy(supports(
OUT_ARG_DgDx,j)) || !ignoreUnsupported )
1923 for (
int j = 0; j < min_Ng; ++j ) {
1925 MEB::MPDerivative DgDx_dot_mp_j;
1927 && !(DgDx_dot_mp_j=inputOutArgs.get_DgDx_dot_mp(j)).isEmpty() )
1930 set_DgDx_dot_mp(j,DgDx_dot_mp_j);
1933 MEB::MPDerivative DgDx_mp_j;
1935 && !(DgDx_mp_j=inputOutArgs.get_DgDx_mp(j)).isEmpty() ) {
1936 if ( DgDx_mp_j.isSupportedBy(supports(
OUT_ARG_DgDx_mp,j)) || !ignoreUnsupported )
1937 set_DgDx_mp(j,DgDx_mp_j);
1941 for (
int l = 0; l < min_Np; ++l ) {
1942 for (
int j = 0; j < min_Ng; ++j ) {
1943 MEB::Derivative<Scalar> DgDp_j_l;
1945 && !(DgDp_j_l=inputOutArgs.
get_DgDp(j,l)).isEmpty() )
1947 if ( DgDp_j_l.isSupportedBy(supports(
OUT_ARG_DgDp,j,l)) || !ignoreUnsupported )
1948 set_DgDp(j,l,DgDp_j_l);
1952 for (
int l = 0; l < min_Np; ++l ) {
1953 for (
int j = 0; j < min_Ng; ++j ) {
1954 MEB::MPDerivative DgDp_mp_j_l;
1956 && !(DgDp_mp_j_l=inputOutArgs.get_DgDp_mp(j,l)).isEmpty() )
1958 if ( DgDp_mp_j_l.isSupportedBy(supports(
OUT_ARG_DgDp_mp,j,l)) || !ignoreUnsupported )
1959 set_DgDp_mp(j,l,DgDp_mp_j_l);
1964#ifdef Thyra_BUILD_HESSIAN_SUPPORT
1967 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_xx) && nonnull(inputOutArgs.get_hess_vec_prod_f_xx()) ) {
1968 if ( supports(OUT_ARG_hess_vec_prod_f_xx) || !ignoreUnsupported )
1969 set_hess_vec_prod_f_xx(inputOutArgs.get_hess_vec_prod_f_xx());
1971 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
1972 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_xp,l1) && nonnull(inputOutArgs.get_hess_vec_prod_f_xp(l1)) ) {
1973 if ( supports(OUT_ARG_hess_vec_prod_f_xp,l1) || !ignoreUnsupported )
1974 set_hess_vec_prod_f_xp(l1,inputOutArgs.get_hess_vec_prod_f_xp(l1));
1976 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_px,l1) && nonnull(inputOutArgs.get_hess_vec_prod_f_px(l1)) ) {
1977 if ( supports(OUT_ARG_hess_vec_prod_f_px,l1) || !ignoreUnsupported )
1978 set_hess_vec_prod_f_px(l1,inputOutArgs.get_hess_vec_prod_f_px(l1));
1980 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
1981 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2) && nonnull(inputOutArgs.get_hess_vec_prod_f_pp(l1,l2)) ) {
1982 if ( supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2) || !ignoreUnsupported )
1983 set_hess_vec_prod_f_pp(l1,l2,inputOutArgs.get_hess_vec_prod_f_pp(l1,l2));
1989 for (
int j = 0; j < min_Ng; ++j ) {
1990 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_g_xx,j) && nonnull(inputOutArgs.get_hess_vec_prod_g_xx(j)) ) {
1991 if ( supports(OUT_ARG_hess_vec_prod_g_xx,j) || !ignoreUnsupported )
1992 set_hess_vec_prod_g_xx(j,inputOutArgs.get_hess_vec_prod_g_xx(j));
1994 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
1995 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_g_xp,j,l1) && nonnull(inputOutArgs.get_hess_vec_prod_g_xp(j,l1)) ) {
1996 if ( supports(OUT_ARG_hess_vec_prod_g_xp,j,l1) || !ignoreUnsupported )
1997 set_hess_vec_prod_g_xp(j,l1,inputOutArgs.get_hess_vec_prod_g_xp(j,l1));
1999 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_g_px,j,l1) && nonnull(inputOutArgs.get_hess_vec_prod_g_px(j,l1)) ) {
2000 if ( supports(OUT_ARG_hess_vec_prod_g_px,j,l1) || !ignoreUnsupported )
2001 set_hess_vec_prod_g_px(j,l1,inputOutArgs.get_hess_vec_prod_g_px(j,l1));
2003 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
2004 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2) && nonnull(inputOutArgs.get_hess_vec_prod_g_pp(j,l1,l2)) ) {
2005 if ( supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2) || !ignoreUnsupported )
2006 set_hess_vec_prod_g_pp(j,l1,l2,inputOutArgs.get_hess_vec_prod_g_pp(j,l1,l2));
2013 if( inputOutArgs.
supports(OUT_ARG_hess_f_xx) && nonnull(inputOutArgs.get_hess_f_xx()) ) {
2014 if ( supports(OUT_ARG_hess_f_xx) || !ignoreUnsupported )
2015 set_hess_f_xx(inputOutArgs.get_hess_f_xx());
2017 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
2018 if( inputOutArgs.
supports(OUT_ARG_hess_f_xp,l1) && nonnull(inputOutArgs.get_hess_f_xp(l1)) ) {
2019 if ( supports(OUT_ARG_hess_f_xp,l1) || !ignoreUnsupported )
2020 set_hess_f_xp(l1,inputOutArgs.get_hess_f_xp(l1));
2022 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
2023 if( inputOutArgs.
supports(OUT_ARG_hess_f_pp,l1,l2) && nonnull(inputOutArgs.get_hess_f_pp(l1,l2)) ) {
2024 if ( supports(OUT_ARG_hess_f_pp,l1,l2) || !ignoreUnsupported )
2025 set_hess_f_pp(l1,l2,inputOutArgs.get_hess_f_pp(l1,l2));
2031 for (
int j = 0; j < min_Ng; ++j ) {
2032 if( inputOutArgs.
supports(OUT_ARG_hess_g_xx,j) && nonnull(inputOutArgs.get_hess_g_xx(j)) ) {
2033 if ( supports(OUT_ARG_hess_g_xx,j) || !ignoreUnsupported )
2034 set_hess_g_xx(j,inputOutArgs.get_hess_g_xx(j));
2036 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
2037 if( inputOutArgs.
supports(OUT_ARG_hess_g_xp,j,l1) && nonnull(inputOutArgs.get_hess_g_xp(j,l1)) ) {
2038 if ( supports(OUT_ARG_hess_g_xp,j,l1) || !ignoreUnsupported )
2039 set_hess_g_xp(j,l1,inputOutArgs.get_hess_g_xp(j,l1));
2041 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
2042 if( inputOutArgs.
supports(OUT_ARG_hess_g_pp,j,l1,l2) && nonnull(inputOutArgs.get_hess_g_pp(j,l1,l2)) ) {
2043 if ( supports(OUT_ARG_hess_g_pp,j,l1,l2) || !ignoreUnsupported )
2044 set_hess_g_pp(j,l1,l2,inputOutArgs.get_hess_g_pp(j,l1,l2));
2051 if( inputOutArgs.
supports(OUT_ARG_H_xx) && nonnull(inputOutArgs.get_H_xx()) ) {
2052 if ( supports(OUT_ARG_H_xx) || !ignoreUnsupported )
2053 set_H_xx(inputOutArgs.get_H_xx());
2055 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
2056 if( inputOutArgs.
supports(OUT_ARG_H_xp,l1) && nonnull(inputOutArgs.get_H_xp(l1)) ) {
2057 if ( supports(OUT_ARG_H_xp,l1) || !ignoreUnsupported )
2058 set_H_xp(l1,inputOutArgs.get_H_xp(l1));
2060 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
2061 if( inputOutArgs.
supports(OUT_ARG_H_pp,l1,l2) && nonnull(inputOutArgs.get_H_pp(l1,l2)) ) {
2062 if ( supports(OUT_ARG_H_pp,l1,l2) || !ignoreUnsupported )
2063 set_H_pp(l1,l2,inputOutArgs.get_H_pp(l1,l2));
2071 this->extended_outargs_ = inputOutArgs.extended_outargs_;
2077template<
class Scalar>
2082 if( this->supports(
OUT_ARG_f) && nonnull(this->get_f()) ) {
2083 assign(this->get_f().ptr(),ST::nan());
2085 for(
int j = 0; j < this->Ng(); ++j ) {
2086 if (nonnull(this->get_g(j)))
2087 assign(this->get_g(j).ptr(),ST::nan());
2093template<
class Scalar>
2100template<
class Scalar>
2107 if (!is_null(W_op_))
2109 for (
int l = 0; l < Np(); ++l ) {
2110 if (!DfDp_[l].isEmpty())
2113#ifdef HAVE_THYRA_ME_POLYNOMIAL
2114 if (!is_null(f_poly_))
2117 for (
int j = 0; j < Ng(); ++j ) {
2118 if (!is_null(g_[j]))
2120 if (!DgDx_dot_[j].isEmpty())
2122 if (!DgDx_[j].isEmpty())
2124 for (
int l = 0; l < Np(); ++l ) {
2125 if (!DgDp_[j*Np()+l].isEmpty())
2133template<
class Scalar>
2141 const std::string outArg_name = toString(outArg_arg);
2143 supports(outArg_arg) != outArgs.
supports(outArg_arg), std::logic_error,
2144 "Error, the output argument "<<outArg_name<<
" with support "<<outArgs.
supports(outArg_arg)<<
"\n"
2145 "in the OutArgs object for the model:\n\n"
2147 "is not the same the argument "<<outArg_name<<
" with support "<<supports(outArg_arg)<<
"\n"
2148 "in the OutArgs object for the model:\n\n"
2149 " "<<modelEvalDescription()<<
"\n\n"
2150 "and these two OutArgs objects are not compatible!"
2154 const int l_Np = this->Np();
2155 const int l_Ng = this->Ng();
2160 for (
int l = 0; l < l_Np; ++l ) {
2164 "Error, the support for DfDp("<<l<<
") is not the same for the models\n\n"
2167 " "<<modelEvalDescription()<<
"\n\n"
2168 "and these two OutArgs objects are not compatible!"
2173 for (
int j = 0; j < l_Ng; ++j ) {
2177 "Error, the support for DgDx_dot("<<j<<
") is not the same for the models\n\n"
2180 " "<<modelEvalDescription()<<
"\n\n"
2181 "and these two OutArgs objects are not compatible!"
2186 "Error, the support for DgDx("<<j<<
") is not the same for the models\n\n"
2189 " "<<modelEvalDescription()<<
"\n\n"
2190 "and these two OutArgs objects are not compatible!"
2192 for (
int l = 0; l < l_Np; ++l ) {
2196 "Error, the support for DgDp("<<j<<
","<<l<<
") is not the same for the models\n\n"
2199 " "<<modelEvalDescription()<<
"\n\n"
2200 "and these two OutArgs objects are not compatible!"
2207template<
class Scalar>
2210 return modelEvalDescription_;
2214template<
class Scalar>
2218 std::ostringstream oss;
2220 <<
"Thyra::ModelEvaluatorBase::OutArgs<"<<ST::name()<<
">"
2222 <<
"model="<<modelEvalDescription_
2230template<
class Scalar>
2237 using Teuchos::describe;
2243 typedef MEB::Derivative<Scalar> Deriv;
2252 *out <<
"Thyra::ModelEvaluatorBase::OutArgs<"<<ST::name()<<
">:\n";
2255 *out <<
"model = " << modelEvalDescription_ <<
"\n";
2256 *out <<
"Np = " << Np() <<
"\n";
2257 *out <<
"Ng = " << Ng() <<
"\n";
2260 if (this->supports(
OUT_ARG_f) && !is_null(f=get_f()) ) {
2261 *out <<
"f = " << Teuchos::describe(*f,verbLevel);
2264 for(
int j = 0; j < Ng(); ++j ) {
2266 if (!is_null(g_j=this->get_g(j)))
2267 *out <<
"g("<<j<<
") = " << Teuchos::describe(*g_j,verbLevel);
2271 if ( this->supports(
OUT_ARG_W) && !is_null(W=get_W()) ) {
2272 *out <<
"W = " << Teuchos::describe(*W,verbLevel);
2276 if ( this->supports(
OUT_ARG_W_op) && !is_null(W_op=get_W_op()) ) {
2277 *out <<
"W_op = " << Teuchos::describe(*W_op,verbLevel);
2280 for(
int l = 0; l < Np(); ++l ) {
2284 && !(DfDp_l=get_DfDp(l)).isEmpty()
2287 *out <<
"DfDp("<<l<<
") = ";
2288 DfDp_l.describe(*out,verbLevel);
2292 for(
int j = 0; j < Ng(); ++j ) {
2297 && !(DgDx_dot_j=get_DgDx_dot(j)).isEmpty()
2300 *out <<
"DgDx_dot("<<j<<
") = ";
2301 DgDx_dot_j.describe(*out,verbLevel);
2307 && !(DgDx_j=get_DgDx(j)).isEmpty()
2310 *out <<
"DgDx("<<j<<
") = ";
2311 DgDx_j.describe(*out,verbLevel);
2314 for(
int l = 0; l < Np(); ++l ) {
2319 && !(DgDp_j_l=get_DgDp(j,l)).isEmpty()
2322 *out <<
"DgDp("<<j<<
","<<l<<
") = ";
2323 DgDp_j_l.describe(*out,verbLevel);
2337template<
class Scalar>
2339 const std::string &modelEvalDescription_in
2342 modelEvalDescription_ = modelEvalDescription_in;
2345template<
class Scalar>
2349 supports_DfDp_.resize(Np_in);
2351 DfDp_properties_.resize(Np_in); std::fill_n(DfDp_properties_.begin(),Np_in,
DerivativeProperties());
2353 supports_DfDp_mp_.resize(Np_in);
2354 DfDp_mp_.resize(Np_in); std::fill_n(DfDp_mp_.begin(),Np_in,
MPDerivative());
2355 DfDp_mp_properties_.resize(Np_in); std::fill_n(DfDp_mp_properties_.begin(),Np_in,
DerivativeProperties());
2358 g_.resize(Ng_in); std::fill_n(g_.begin(),Ng_in,
Teuchos::null);
2359 supports_DgDx_dot_.resize(Ng_in);
2361 DgDx_dot_properties_.resize(Ng_in); std::fill_n(DgDx_dot_properties_.begin(),Ng_in,
DerivativeProperties());
2362 supports_DgDx_.resize(Ng_in);
2364 DgDx_properties_.resize(Ng_in); std::fill_n(DgDx_properties_.begin(),Ng_in,
DerivativeProperties());
2366#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2367 supports_hess_vec_prod_g_xx_.resize(Ng_in);
2370 supports_hess_g_xx_.resize(Ng_in);
2374 g_mp_.resize(Ng_in); std::fill_n(g_mp_.begin(),Ng_in,
Teuchos::null);
2375 supports_g_mp_.resize(Ng_in);
2376 supports_DgDx_dot_mp_.resize(Ng_in);
2377 DgDx_dot_mp_.resize(Ng_in); std::fill_n(DgDx_dot_mp_.begin(),Ng_in,
MPDerivative());
2378 DgDx_dot_mp_properties_.resize(Ng_in); std::fill_n(DgDx_dot_mp_properties_.begin(),Ng_in,
DerivativeProperties());
2379 supports_DgDx_mp_.resize(Ng_in);
2380 DgDx_mp_.resize(Ng_in); std::fill_n(DgDx_mp_.begin(),Ng_in,
MPDerivative());
2381 DgDx_mp_properties_.resize(Ng_in); std::fill_n(DgDx_mp_properties_.begin(),Ng_in,
DerivativeProperties());
2383#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2385 const int Np = Np_in;
2386 const int NpNp = Np_in*Np_in;
2388 supports_hess_vec_prod_f_xp_.resize(Np);
2391 supports_hess_vec_prod_f_px_.resize(Np);
2394 supports_hess_vec_prod_f_pp_.resize(NpNp);
2397 supports_hess_f_xp_.resize(Np);
2400 supports_hess_f_pp_.resize(NpNp);
2403 supports_H_xp_.resize(Np);
2406 supports_H_pp_.resize(NpNp);
2410 if(Np_in && Ng_in) {
2411 const int NpNg = Np_in*Ng_in;
2412 const int NpNpNg = Np_in*Np_in*Ng_in;
2413 supports_DgDp_.resize(NpNg);
2415 DgDp_properties_.resize(NpNg); std::fill_n(DgDp_properties_.begin(),NpNg,
DerivativeProperties());
2417#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2418 supports_hess_vec_prod_g_xp_.resize(NpNg);
2421 supports_hess_vec_prod_g_px_.resize(NpNg);
2424 supports_hess_vec_prod_g_pp_.resize(NpNpNg);
2427 supports_hess_g_xp_.resize(NpNg);
2430 supports_hess_g_pp_.resize(NpNpNg);
2434 supports_DgDp_mp_.resize(NpNg);
2435 DgDp_mp_.resize(NpNg); std::fill_n(DgDp_mp_.begin(),NpNg,
MPDerivative());
2436 DgDp_mp_properties_.resize(NpNg); std::fill_n(DgDp_mp_properties_.begin(),NpNg,
DerivativeProperties());
2441template<
class Scalar>
2447 ,
"model = \'"<<modelEvalDescription_
2448 <<
"\': Error, arg="<<toString(arg)<<
" is invalid!"
2450 supports_[arg] = supports_in;
2454template<
class Scalar>
2461 supports_DfDp_[l] = supports_in;
2465template<
class Scalar>
2471 supports_DgDx_dot_[j] = supports_in;
2475template<
class Scalar>
2481 supports_DgDx_[j] = supports_in;
2485#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2487template<
class Scalar>
2489 EOutArgs_hess_vec_prod_f_xx ,
bool supports_in
2492 supports_hess_vec_prod_f_xx_ = supports_in;
2495template<
class Scalar>
2497 EOutArgs_hess_vec_prod_f_xp ,
int l,
bool supports_in
2501 supports_hess_vec_prod_f_xp_[l] = supports_in;
2504template<
class Scalar>
2506 EOutArgs_hess_vec_prod_f_px ,
int l,
bool supports_in
2510 supports_hess_vec_prod_f_px_[l] = supports_in;
2513template<
class Scalar>
2515 EOutArgs_hess_vec_prod_f_pp ,
int l1,
int l2,
bool supports_in
2520 supports_hess_vec_prod_f_pp_[ l1*Np()+ l2 ] = supports_in;
2526template<
class Scalar>
2533 supports_DgDp_[ j*Np()+ l ] = supports_in;
2537#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2539template<
class Scalar>
2541 EOutArgs_hess_vec_prod_g_xx ,
int j,
bool supports_in
2545 supports_hess_vec_prod_g_xx_[j] = supports_in;
2548template<
class Scalar>
2550 EOutArgs_hess_vec_prod_g_xp ,
int j,
int l,
bool supports_in
2555 supports_hess_vec_prod_g_xp_[ j*Np()+ l ] = supports_in;
2558template<
class Scalar>
2560 EOutArgs_hess_vec_prod_g_px ,
int j,
int l,
bool supports_in
2565 supports_hess_vec_prod_g_px_[ j*Np()+ l ] = supports_in;
2568template<
class Scalar>
2570 EOutArgs_hess_vec_prod_g_pp ,
int j,
int l1,
int l2,
bool supports_in
2576 supports_hess_vec_prod_g_pp_[ j*Np()*Np()+ l1*Np() + l2 ] = supports_in;
2580template<
class Scalar>
2582 EOutArgs_hess_f_xx ,
bool supports_in
2585 supports_hess_f_xx_ = supports_in;
2588template<
class Scalar>
2590 EOutArgs_hess_f_xp ,
int l,
bool supports_in
2594 supports_hess_f_xp_[l] = supports_in;
2597template<
class Scalar>
2599 EOutArgs_hess_f_pp ,
int l1,
int l2,
bool supports_in
2604 supports_hess_f_pp_[ l1*Np()+ l2 ] = supports_in;
2607template<
class Scalar>
2609 EOutArgs_hess_g_xx ,
int j,
bool supports_in
2613 supports_hess_g_xx_[j] = supports_in;
2616template<
class Scalar>
2618 EOutArgs_hess_g_xp ,
int j,
int l,
bool supports_in
2623 supports_hess_g_xp_[ j*Np()+ l ] = supports_in;
2626template<
class Scalar>
2628 EOutArgs_hess_g_pp ,
int j,
int l1,
int l2,
bool supports_in
2634 supports_hess_g_pp_[ j*Np()*Np()+ l1*Np() + l2 ] = supports_in;
2637template<
class Scalar>
2639 EOutArgs_H_xx ,
bool supports_in
2642 supports_H_xx_ = supports_in;
2645template<
class Scalar>
2647 EOutArgs_H_xp ,
int l,
bool supports_in
2651 supports_H_xp_[l] = supports_in;
2654template<
class Scalar>
2656 EOutArgs_H_pp ,
int l1,
int l2,
bool supports_in
2661 supports_H_pp_[ l1*Np()+ l2 ] = supports_in;
2667template<
class Scalar>
2674 supports_g_mp_[j] = supports_in;
2678template<
class Scalar>
2685 supports_DfDp_mp_[l] = supports_in;
2689template<
class Scalar>
2695 supports_DgDx_dot_mp_[j] = supports_in;
2699template<
class Scalar>
2705 supports_DgDx_mp_[j] = supports_in;
2709template<
class Scalar>
2716 supports_DgDp_mp_[ j*Np()+ l ] = supports_in;
2720template<
class Scalar>
2725 W_properties_ = properties;
2729template<
class Scalar>
2735 DfDp_properties_[l] = properties;
2739template<
class Scalar>
2745 DgDx_dot_properties_[j] = properties;
2749template<
class Scalar>
2755 DgDx_properties_[j] = properties;
2759template<
class Scalar>
2765 DgDp_properties_[ j*Np()+ l ] = properties;
2769template<
class Scalar>
2775 DfDp_mp_properties_[l] = properties;
2779template<
class Scalar>
2781 int j,
const DerivativeProperties &properties
2785 DgDx_dot_mp_properties_[j] = properties;
2789template<
class Scalar>
2790void ModelEvaluatorBase::OutArgs<Scalar>::_set_DgDx_mp_properties(
2791 int j,
const DerivativeProperties &properties
2795 DgDx_mp_properties_[j] = properties;
2799template<
class Scalar>
2800void ModelEvaluatorBase::OutArgs<Scalar>::_set_DgDp_mp_properties(
2801 int j,
int l,
const DerivativeProperties &properties
2805 DgDp_mp_properties_[ j*Np()+ l ] = properties;
2809template<
class Scalar>
2815 const int l_Np = TEUCHOS_MIN(this->Np(),inputOutArgs.
Np());
2816 const int l_Ng = TEUCHOS_MIN(this->Ng(),inputOutArgs.
Ng());
2818 &inputOutArgs.supports_[0],
2820 for(
int l = 0; l < l_Np; ++l ) {
2823 this->_setSupports(MEB::OUT_ARG_DfDp,l,ds);
2827 for(
int l = 0; l < l_Np; ++l ) {
2830 this->_setSupports(MEB::OUT_ARG_DfDp_mp,l,ds);
2831 this->_set_DfDp_mp_properties(l,inputOutArgs.get_DfDp_mp_properties(l));
2834 for(
int j = 0; j < l_Ng; ++j ) {
2836 this->_setSupports(MEB::OUT_ARG_DgDx_dot,j,ds);
2839 for(
int j = 0; j < l_Ng; ++j ) {
2841 this->_setSupports(MEB::OUT_ARG_DgDx_dot_mp,j,ds);
2842 if(!ds.
none()) this->_set_DgDx_dot_mp_properties(j,inputOutArgs.get_DgDx_dot_mp_properties(j));
2844 for(
int j = 0; j < l_Ng; ++j ) {
2846 this->_setSupports(MEB::OUT_ARG_DgDx,j,ds);
2849 for(
int j = 0; j < l_Ng; ++j ) {
2851 this->_setSupports(MEB::OUT_ARG_DgDx_mp,j,ds);
2852 if(!ds.
none()) this->_set_DgDx_mp_properties(j,inputOutArgs.get_DgDx_mp_properties(j));
2854 for(
int j = 0; j < l_Ng; ++j )
for(
int l = 0; l < l_Np; ++l ) {
2856 this->_setSupports(MEB::OUT_ARG_DgDp,j,l,ds);
2859 for(
int j = 0; j < l_Ng; ++j )
for(
int l = 0; l < l_Np; ++l ) {
2861 this->_setSupports(MEB::OUT_ARG_DgDp_mp,j,l,ds);
2862 if(!ds.
none()) this->_set_DgDp_mp_properties(j,l,inputOutArgs.get_DgDp_mp_properties(j,l));
2869#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2870 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_xx,inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_xx));
2871 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2872 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_xp,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_f_xp,l1));
2873 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_px,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_f_px,l1));
2874 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2875 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_pp,l1,l2,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_f_pp,l1,l2));
2878 for(
int j = 0; j < l_Ng; ++j ) {
2879 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_xx,j,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_g_xx,j));
2880 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2881 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_xp,j,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_g_xp,j,l1));
2882 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_px,j,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_g_px,j,l1));
2883 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2884 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_pp,j,l1,l2,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_g_pp,j,l1,l2));
2888 this->_setSupports(MEB::OUT_ARG_hess_f_xx,inputOutArgs.
supports(OUT_ARG_hess_f_xx));
2889 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2890 this->_setSupports(MEB::OUT_ARG_hess_f_xp,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_f_xp,l1));
2891 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2892 this->_setSupports(MEB::OUT_ARG_hess_f_pp,l1,l2,inputOutArgs.
supports(MEB::OUT_ARG_hess_f_pp,l1,l2));
2895 for(
int j = 0; j < l_Ng; ++j ) {
2896 this->_setSupports(MEB::OUT_ARG_hess_g_xx,j,inputOutArgs.
supports(MEB::OUT_ARG_hess_g_xx,j));
2897 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2898 this->_setSupports(MEB::OUT_ARG_hess_g_xp,j,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_g_xp,j,l1));
2899 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2900 this->_setSupports(MEB::OUT_ARG_hess_g_pp,j,l1,l2,inputOutArgs.
supports(MEB::OUT_ARG_hess_g_pp,j,l1,l2));
2904 this->_setSupports(MEB::OUT_ARG_H_xx,inputOutArgs.
supports(OUT_ARG_H_xx));
2905 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2906 this->_setSupports(MEB::OUT_ARG_H_xp,l1,inputOutArgs.
supports(MEB::OUT_ARG_H_xp,l1));
2907 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2908 this->_setSupports(MEB::OUT_ARG_H_pp,l1,l2,inputOutArgs.
supports(MEB::OUT_ARG_H_pp,l1,l2));
2913 extended_outargs_ = inputOutArgs.extended_outargs_;
2917template<
class Scalar>
2924 const int l_Ng = this->Ng();
2925 for(
int j = 0; j < l_Ng; ++j ) {
2932 const int l_Ng = this->Ng();
2933 for(
int j = 0; j < l_Ng; ++j ) {
2941 true ,std::logic_error,
2942 "Error, can not handle args other than IN_ARG_x yet!"
2948template<
class Scalar>
2958 const int l_Np = this->Np();
2959 for(
int l = 0; l < l_Np; ++l )
2967 const int l_Np = this->Np();
2968 for(
int l = 0; l < l_Np; ++l )
2974 true ,std::logic_error,
2975 "Error, can not handle args other than OUT_ARG_f yet!"
2978 this->_setSupports(arg,
false);
2981#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2982template<
class Scalar>
2988 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_xx,supports);
2989 this->_setSupports(MEB::OUT_ARG_hess_f_xx,supports);
2990 this->_setSupports(MEB::OUT_ARG_H_xx,supports);
2991 for (
int l1=0; l1<this->Np(); ++l1)
2993 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_xp,l1,supports);
2994 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_px,l1,supports);
2995 this->_setSupports(MEB::OUT_ARG_hess_f_xp,l1,supports);
2996 this->_setSupports(MEB::OUT_ARG_H_xp,l1,supports);
2997 for (
int l2=0; l2<this->Np(); ++l2)
2999 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_pp,l1,l2,supports);
3000 this->_setSupports(MEB::OUT_ARG_hess_f_pp,l1,l2,supports);
3001 this->_setSupports(MEB::OUT_ARG_H_pp,l1,l2,supports);
3005 for (
int j=0; j<this->Ng(); ++j)
3007 this->_setSupports(MEB::OUT_ARG_hess_g_xx,j,supports);
3008 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_xx,j,supports);
3009 for (
int l1=0; l1<this->Np(); ++l1)
3011 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_xp,j,l1,supports);
3012 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_px,j,l1,supports);
3013 this->_setSupports(MEB::OUT_ARG_hess_g_xp,j,l1,supports);
3014 for (
int l2=0; l2<this->Np(); ++l2)
3016 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_pp,j,l1,l2,supports);
3017 this->_setSupports(MEB::OUT_ARG_hess_g_pp,j,l1,l2,supports);
3027template<
class Scalar>
3028void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
EOutArgsMembers arg)
const
3031 !this->supports(arg), std::logic_error
3032 ,
"Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(arg):\n\n"
3033 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3034 "Error, The argument arg = " << toString(arg) <<
" is not supported!"
3039template<
class Scalar>
3040void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3041 EOutArgsDfDp arg,
int l,
const Derivative<Scalar> &deriv
3044 const DerivativeSupport derivSupport = this->supports(arg,l);
3046 !deriv.isSupportedBy(derivSupport), std::logic_error,
3047 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DfDp,l):\n\n"
3048 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3049 "Error, The argument DfDp("<<l<<
") = " << deriv.description() <<
"\n"
3050 "is not supported!\n\n"
3051 "The supported types include " << derivSupport.description() <<
"!"
3056template<
class Scalar>
3057void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3061 const DerivativeSupport derivSupport = this->supports(arg,j);
3063 !deriv.isSupportedBy(derivSupport), std::logic_error,
3064 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDx_dot,j):\n\n"
3065 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3066 "Error, The argument DgDx_dot("<<j<<
") = " << deriv.description() <<
"\n"
3067 "is not supported!\n\n"
3068 "The supported types include " << derivSupport.description() <<
"!"
3073template<
class Scalar>
3074void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3075 EOutArgsDgDx arg,
int j,
const Derivative<Scalar> &deriv
3078 const DerivativeSupport derivSupport = this->supports(arg,j);
3080 !deriv.isSupportedBy(derivSupport), std::logic_error,
3081 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDx,j):\n\n"
3082 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3083 "Error, The argument DgDx("<<j<<
") = " << deriv.description() <<
"\n"
3084 "is not supported!\n\n"
3085 "The supported types include " << derivSupport.description() <<
"!"
3090template<
class Scalar>
3091void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3092 EOutArgsDgDp arg,
int j,
int l,
const Derivative<Scalar> &deriv
3095 const DerivativeSupport derivSupport = this->supports(arg,j,l);
3097 !deriv.isSupportedBy(derivSupport), std::logic_error,
3098 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDp,j,l):\n\n"
3099 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3100 "Error, The argument DgDp("<<j<<
","<<l<<
") = " << deriv.description() <<
"\n"
3101 "is not supported!\n\n"
3102 "The supported types include " << derivSupport.description() <<
"!"
3107#ifdef Thyra_BUILD_HESSIAN_SUPPORT
3109template<
class Scalar>
3110void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3111 EOutArgs_hess_vec_prod_f_xx arg
3114 const bool support = this->supports(arg);
3116 !support, std::logic_error,
3117 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_f_xx):\n\n"
3118 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3119 "Error, The argument hess_vec_prod_f_xx() is not supported!"
3123template<
class Scalar>
3124void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3125 EOutArgs_hess_vec_prod_f_xp arg,
int l
3128 const bool support = this->supports(arg,l);
3130 !support, std::logic_error,
3131 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_f_xp,l):\n\n"
3132 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3133 "Error, The argument hess_vec_prod_f_xp("<<l<<
") is not supported!"
3137template<
class Scalar>
3138void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3139 EOutArgs_hess_vec_prod_f_px arg,
int l
3142 const bool support = this->supports(arg,l);
3144 !support, std::logic_error,
3145 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_f_px,l):\n\n"
3146 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3147 "Error, The argument hess_vec_prod_f_px("<<l<<
") is not supported!"
3151template<
class Scalar>
3152void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3153 EOutArgs_hess_vec_prod_f_pp arg,
int l1,
int l2
3156 const bool support = this->supports(arg,l1,l2);
3158 !support, std::logic_error,
3159 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2):\n\n"
3160 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3161 "Error, The argument hess_vec_prod_f_pp("<<l1<<
","<<l2<<
") is not supported!"
3165template<
class Scalar>
3166void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3167 EOutArgs_hess_vec_prod_g_xx arg,
int j
3170 const bool support = this->supports(arg,j);
3172 !support, std::logic_error,
3173 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_g_xx,j):\n\n"
3174 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3175 "Error, The argument hess_vec_prod_g_xx("<<j<<
") is not supported!"
3179template<
class Scalar>
3180void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3181 EOutArgs_hess_vec_prod_g_xp arg,
int j,
int l
3184 const bool support = this->supports(arg,j,l);
3186 !support, std::logic_error,
3187 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_g_xp,j,l):\n\n"
3188 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3189 "Error, The argument hess_vec_prod_g_xp("<<j<<
","<<l<<
") is not supported!"
3193template<
class Scalar>
3194void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3195 EOutArgs_hess_vec_prod_g_px arg,
int j,
int l
3198 const bool support = this->supports(arg,j,l);
3200 !support, std::logic_error,
3201 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_g_px,j,l):\n\n"
3202 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3203 "Error, The argument hess_vec_prod_g_px("<<j<<
","<<l<<
") is not supported!"
3207template<
class Scalar>
3208void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3209 EOutArgs_hess_vec_prod_g_pp arg,
int j,
int l1,
int l2
3212 const bool support = this->supports(arg,j,l1,l2);
3214 !support, std::logic_error,
3215 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2):\n\n"
3216 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3217 "Error, The argument hess_vec_prod_g_pp("<<j<<
","<<l1<<
","<<l2<<
") is not supported!"
3221template<
class Scalar>
3222void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3223 EOutArgs_hess_f_xx arg
3226 const bool support = this->supports(arg);
3228 !support, std::logic_error,
3229 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_f_xx):\n\n"
3230 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3231 "Error, The argument hess_f_xx() is not supported!"
3235template<
class Scalar>
3236void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3237 EOutArgs_hess_f_xp arg,
int l
3240 const bool support = this->supports(arg,l);
3242 !support, std::logic_error,
3243 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_f_xp,l):\n\n"
3244 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3245 "Error, The argument hess_f_xp() is not supported!"
3249template<
class Scalar>
3250void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3251 EOutArgs_hess_f_pp arg,
int l1,
int l2
3254 const bool support = this->supports(arg,l1,l2);
3256 !support, std::logic_error,
3257 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_f_pp,l1,l2):\n\n"
3258 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3259 "Error, The argument hess_f_pp() is not supported!"
3263template<
class Scalar>
3264void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3265 EOutArgs_hess_g_xx arg,
int j
3268 const bool support = this->supports(arg,j);
3270 !support, std::logic_error,
3271 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_g_xx,j):\n\n"
3272 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3273 "Error, The argument hess_g_xx() is not supported!"
3277template<
class Scalar>
3278void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3279 EOutArgs_hess_g_xp arg,
int j,
int l
3282 const bool support = this->supports(arg,j,l);
3284 !support, std::logic_error,
3285 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_g_xp,j,l):\n\n"
3286 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3287 "Error, The argument hess_g_xp() is not supported!"
3291template<
class Scalar>
3292void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3293 EOutArgs_hess_g_pp arg,
int j,
int l1,
int l2
3296 const bool support = this->supports(arg,j,l1,l2);
3298 !support, std::logic_error,
3299 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_g_pp,j,l1,l2):\n\n"
3300 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3301 "Error, The argument hess_g_pp() is not supported!"
3305template<
class Scalar>
3306void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3310 const bool support = this->supports(arg);
3312 !support, std::logic_error,
3313 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_H_xx):\n\n"
3314 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3315 "Error, The argument H_xx() is not supported!"
3319template<
class Scalar>
3320void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3321 EOutArgs_H_xp arg,
int l
3324 const bool support = this->supports(arg,l);
3326 !support, std::logic_error,
3327 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_H_xp,l):\n\n"
3328 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3329 "Error, The argument H_xp() is not supported!"
3333template<
class Scalar>
3334void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3335 EOutArgs_H_pp arg,
int l1,
int l2
3338 const bool support = this->supports(arg,l1,l2);
3340 !support, std::logic_error,
3341 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_H_pp,l1,l2):\n\n"
3342 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3343 "Error, The argument H_pp() is not supported!"
3350template<
class Scalar>
3351void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3357 !supports_g_mp_[j], std::logic_error,
3358 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_g_mp,j):\n\n"
3359 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3360 "Error, The argument g_mp("<<j<<
") \n"
3361 "is not supported!\n\n"
3366template<
class Scalar>
3367void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3371 const DerivativeSupport derivSupport = this->supports(arg,l);
3373 !deriv.isSupportedBy(derivSupport), std::logic_error,
3374 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DfDp_mp,l):\n\n"
3375 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3376 "Error, The argument DfDp_mp("<<l<<
") = " << deriv.description() <<
"\n"
3377 "is not supported!\n\n"
3378 "The supported types include " << derivSupport.description() <<
"!"
3383template<
class Scalar>
3384void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3388 const DerivativeSupport derivSupport = this->supports(arg,j);
3390 !deriv.isSupportedBy(derivSupport), std::logic_error,
3391 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDx_dot_mp,j):\n\n"
3392 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3393 "Error, The argument DgDx_dot_mp("<<j<<
") = " << deriv.description() <<
"\n"
3394 "is not supported!\n\n"
3395 "The supported types include " << derivSupport.description() <<
"!"
3400template<
class Scalar>
3401void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3405 const DerivativeSupport derivSupport = this->supports(arg,j);
3407 !deriv.isSupportedBy(derivSupport), std::logic_error,
3408 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDx_mp,j):\n\n"
3409 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3410 "Error, The argument DgDx_mp("<<j<<
") = " << deriv.description() <<
"\n"
3411 "is not supported!\n\n"
3412 "The supported types include " << derivSupport.description() <<
"!"
3417template<
class Scalar>
3418void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3422 const DerivativeSupport derivSupport = this->supports(arg,j,l);
3424 !deriv.isSupportedBy(derivSupport), std::logic_error,
3425 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDp_mp,j,l):\n\n"
3426 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3427 "Error, The argument DgDp_mp("<<j<<
","<<l<<
") = " << deriv.description() <<
"\n"
3428 "is not supported!\n\n"
3429 "The supported types include " << derivSupport.description() <<
"!"
3434template<
class Scalar>
3435void ModelEvaluatorBase::OutArgs<Scalar>::assert_l(
int l)
const
3438 !( 0 <= l && l < Np() ), std::logic_error
3439 ,
"Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_l(l):\n\n"
3440 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3441 "Error, The parameter subvector p("<<l<<
")"
3442 " is not in the range [0,"<<Np()<<
")!"
3447template<
class Scalar>
3448void ModelEvaluatorBase::OutArgs<Scalar>::assert_j(
int j)
const
3451 !( 0 <= j && j < Ng() ), std::logic_error
3452 ,
"Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_j(j):\n\n"
3453 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3454 "Error, The auxiliary function g("<<j<<
")"
3455 " is not in the range [0,"<<Ng()<<
")!"
3465template<
class Scalar>
3470template<
class Scalar>
3476template<
class Scalar>
3478 const std::string &modelEvalDescription_in )
3480 this->_setModelEvalDescription(modelEvalDescription_in);
3484template<
class Scalar>
3486{ this->_set_Np_Ng(Np_in, 0); }
3488template<
class Scalar>
3490{ this->_set_Np_Ng(Np_in, Ng_in); }
3492template<
class Scalar>
3494{ this->_setSupports(arg,supports_in); }
3497template<
class Scalar>
3499{ this->_setSupports(arg,l,supports_in); }
3502template<
class Scalar>
3507 this->_setSupports(inArgs, Np_in);
3511template<
class Scalar>
3516 this->_setUnsupportsAndRelated(arg);
3525template<
class Scalar>
3530template<
class Scalar>
3534 :
OutArgs<Scalar>(inputOutArgs)
3538template<
class Scalar>
3540 const std::string &modelEvalDescription_in
3542{ this->_setModelEvalDescription(modelEvalDescription_in); }
3545template<
class Scalar>
3547{ this->_set_Np_Ng(Np_in, Ng_in); }
3550template<
class Scalar>
3554{ this->_setSupports(arg,supports_in); }
3557template<
class Scalar>
3561{ this->_setSupports(arg,l,supports_in); }
3564template<
class Scalar>
3568{ this->_setSupports(arg,j,supports_in); }
3571template<
class Scalar>
3575{ this->_setSupports(arg,j,supports_in); }
3578#ifdef Thyra_BUILD_HESSIAN_SUPPORT
3580template<
class Scalar>
3582 EOutArgs_hess_vec_prod_f_xx arg,
bool supports_in
3584{ this->_setSupports(arg,supports_in); }
3586template<
class Scalar>
3588 EOutArgs_hess_vec_prod_f_xp arg,
int l,
bool supports_in
3590{ this->_setSupports(arg,l,supports_in); }
3592template<
class Scalar>
3594 EOutArgs_hess_vec_prod_f_px arg,
int l,
bool supports_in
3596{ this->_setSupports(arg,l,supports_in); }
3598template<
class Scalar>
3600 EOutArgs_hess_vec_prod_f_pp arg,
int l1,
int l2,
bool supports_in
3602{ this->_setSupports(arg,l1,l2,supports_in); }
3607template<
class Scalar>
3611{ this->_setSupports(arg,j,l,supports_in); }
3614#ifdef Thyra_BUILD_HESSIAN_SUPPORT
3616template<
class Scalar>
3618 EOutArgs_hess_vec_prod_g_xx arg,
int j,
bool supports_in
3620{ this->_setSupports(arg,j,supports_in); }
3622template<
class Scalar>
3624 EOutArgs_hess_vec_prod_g_xp arg,
int j,
int l,
bool supports_in
3626{ this->_setSupports(arg,j,l,supports_in); }
3628template<
class Scalar>
3630 EOutArgs_hess_vec_prod_g_px arg,
int j,
int l,
bool supports_in
3632{ this->_setSupports(arg,j,l,supports_in); }
3634template<
class Scalar>
3636 EOutArgs_hess_vec_prod_g_pp arg,
int j,
int l1,
int l2,
bool supports_in
3638{ this->_setSupports(arg,j,l1,l2,supports_in); }
3640template<
class Scalar>
3642 EOutArgs_hess_f_xx arg,
bool supports_in
3644{ this->_setSupports(arg,supports_in); }
3646template<
class Scalar>
3648 EOutArgs_hess_f_xp arg,
int l,
bool supports_in
3650{ this->_setSupports(arg,l,supports_in); }
3652template<
class Scalar>
3654 EOutArgs_hess_f_pp arg,
int l1,
int l2,
bool supports_in
3656{ this->_setSupports(arg,l1,l2,supports_in); }
3658template<
class Scalar>
3660 EOutArgs_hess_g_xx arg,
int j,
bool supports_in
3662{ this->_setSupports(arg,j,supports_in); }
3664template<
class Scalar>
3666 EOutArgs_hess_g_xp arg,
int j,
int l,
bool supports_in
3668{ this->_setSupports(arg,j,l,supports_in); }
3670template<
class Scalar>
3672 EOutArgs_hess_g_pp arg,
int j,
int l1,
int l2,
bool supports_in
3674{ this->_setSupports(arg,j,l1,l2,supports_in); }
3676template<
class Scalar>
3678 EOutArgs_H_xx arg,
bool supports_in
3680{ this->_setSupports(arg,supports_in); }
3682template<
class Scalar>
3684 EOutArgs_H_xp arg,
int l,
bool supports_in
3686{ this->_setSupports(arg,l,supports_in); }
3688template<
class Scalar>
3690 EOutArgs_H_pp arg,
int l1,
int l2,
bool supports_in
3692{ this->_setSupports(arg,l1,l2,supports_in); }
3697template<
class Scalar>
3701{ this->_setSupports(arg,j,supports_in); }
3704template<
class Scalar>
3708{ this->_setSupports(arg,l,supports_in); }
3711template<
class Scalar>
3715{ this->_setSupports(arg,j,supports_in); }
3718template<
class Scalar>
3722{ this->_setSupports(arg,j,supports_in); }
3725template<
class Scalar>
3727 EOutArgsDgDp_mp arg,
int j,
int l,
const DerivativeSupport& supports_in
3729{ this->_setSupports(arg,j,l,supports_in); }
3732template<
class Scalar>
3736{ this->_set_W_properties(properties); }
3739template<
class Scalar>
3743{ this->_set_DfDp_properties(l,properties); }
3746template<
class Scalar>
3750{ this->_set_DgDx_dot_properties(j,properties); }
3753template<
class Scalar>
3757{ this->_set_DgDx_properties(j,properties); }
3760template<
class Scalar>
3764{ this->_set_DgDp_properties(j,l,properties); }
3767template<
class Scalar>
3771{ this->_set_DfDp_mp_properties(l,properties); }
3774template<
class Scalar>
3776 int j,
const DerivativeProperties &properties
3778{ this->_set_DgDx_dot_mp_properties(j,properties); }
3781template<
class Scalar>
3782void ModelEvaluatorBase::OutArgsSetup<Scalar>::set_DgDx_mp_properties(
3783 int j,
const DerivativeProperties &properties
3785{ this->_set_DgDx_mp_properties(j,properties); }
3788template<
class Scalar>
3789void ModelEvaluatorBase::OutArgsSetup<Scalar>::set_DgDp_mp_properties(
3790 int j,
int l,
const DerivativeProperties &properties
3792{ this->_set_DgDp_mp_properties(j,l,properties); }
3795template<
class Scalar>
3799{ this->_setSupports(inputOutArgs); }
3802template<
class Scalar>
3806{ this->_setUnsupportsAndRelated(arg); }
3809template<
class Scalar>
3813{ this->_setUnsupportsAndRelated(arg); }
3816#ifdef Thyra_BUILD_HESSIAN_SUPPORT
3817template<
class Scalar>
3821{ this->_setHessianSupports(supports); }
3835#define THYRA_MODEL_EVALUATOR_BASE_INSTANT(SCALAR) \
3837 template class ModelEvaluatorBase::InArgs<SCALAR >; \
3839 template std::string \
3840 ModelEvaluatorBase::Derivative<SCALAR >::description() const; \
3843 void ModelEvaluatorBase::Derivative<SCALAR >::describe( \
3844 Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel \
3847 template class ModelEvaluatorBase::OutArgs<SCALAR >; \
3849 template class ModelEvaluatorBase::InArgsSetup<SCALAR >; \
3851 template class ModelEvaluatorBase::OutArgsSetup<SCALAR >;