1285template<
class Scalar>
1294template<
class Scalar>
1304template<
class Scalar>
1313template<
class Scalar>
1318 return W_properties_;
1322template<
class Scalar>
1332template<
class Scalar>
1341template<
class Scalar>
1346 return DfDp_properties_[l];
1350template<
class Scalar>
1356 DfDp_mp_[l] = DfDp_mp_l;
1360template<
class Scalar>
1369template<
class Scalar>
1370ModelEvaluatorBase::DerivativeProperties
1371ModelEvaluatorBase::OutArgs<Scalar>::get_DfDp_mp_properties(
int l)
const
1374 return DfDp_mp_properties_[l];
1378template<
class Scalar>
1384 DgDx_dot_[j] = DgDx_dot_j;
1388template<
class Scalar>
1393 return DgDx_dot_[j];
1397template<
class Scalar>
1402 return DgDx_dot_properties_[j];
1406template<
class Scalar>
1412 DgDx_dot_mp_[j] = DgDx_dot_mp_j;
1416template<
class Scalar>
1421 return DgDx_dot_mp_[j];
1425template<
class Scalar>
1426ModelEvaluatorBase::DerivativeProperties
1427ModelEvaluatorBase::OutArgs<Scalar>::get_DgDx_dot_mp_properties(
int j)
const
1430 return DgDx_dot_mp_properties_[j];
1434template<
class Scalar>
1444template<
class Scalar>
1453template<
class Scalar>
1458 return DgDx_properties_[j];
1462template<
class Scalar>
1468 DgDx_mp_[j] = DgDx_mp_j;
1472template<
class Scalar>
1481template<
class Scalar>
1482ModelEvaluatorBase::DerivativeProperties
1483ModelEvaluatorBase::OutArgs<Scalar>::get_DgDx_mp_properties(
int j)
const
1486 return DgDx_mp_properties_[j];
1490template<
class Scalar>
1496 DgDp_[ j*Np() + l ] = DgDp_j_l;
1500template<
class Scalar>
1505 return DgDp_[ j*Np() + l ];
1509template<
class Scalar>
1514 return DgDp_properties_[ j*Np() + l ];
1518template<
class Scalar>
1524 DgDp_mp_[ j*Np() + l ] = DgDp_mp_j_l;
1528template<
class Scalar>
1533 return DgDp_mp_[ j*Np() + l ];
1537template<
class Scalar>
1538ModelEvaluatorBase::DerivativeProperties
1539ModelEvaluatorBase::OutArgs<Scalar>::get_DgDp_mp_properties(
int j,
int l)
const
1542 return DgDp_mp_properties_[ j*Np() + l ];
1546#ifdef Thyra_BUILD_HESSIAN_SUPPORT
1548template<
class Scalar>
1549void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_f_xx(
1550 const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_f_xx
1553 assert_supports(OUT_ARG_hess_vec_prod_f_xx);
1554 hess_vec_prod_f_xx_ = hess_vec_prod_f_xx;
1557template<
class Scalar>
1558void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_f_xp(
1559 int l,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_f_xp_l
1562 assert_supports(OUT_ARG_hess_vec_prod_f_xp,l);
1563 hess_vec_prod_f_xp_[l] = hess_vec_prod_f_xp_l;
1566template<
class Scalar>
1567void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_f_px(
1568 int l,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_f_px_l
1571 assert_supports(OUT_ARG_hess_vec_prod_f_px,l);
1572 hess_vec_prod_f_px_[l] = hess_vec_prod_f_px_l;
1575template<
class Scalar>
1576void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_f_pp(
1577 int l1,
int l2,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_f_pp_l1_l2
1580 assert_supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2);
1581 hess_vec_prod_f_pp_[ l1*Np() + l2 ] = hess_vec_prod_f_pp_l1_l2;
1584template<
class Scalar>
1585RCP<MultiVectorBase<Scalar> >
1586ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_f_xx()
const
1588 assert_supports(OUT_ARG_hess_vec_prod_f_xx);
1589 return hess_vec_prod_f_xx_;
1592template<
class Scalar>
1593RCP<MultiVectorBase<Scalar> >
1594ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_f_xp(
int l)
const
1596 assert_supports(OUT_ARG_hess_vec_prod_f_xp,l);
1597 return hess_vec_prod_f_xp_[l];
1600template<
class Scalar>
1601RCP<MultiVectorBase<Scalar> >
1602ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_f_px(
int l)
const
1604 assert_supports(OUT_ARG_hess_vec_prod_f_px,l);
1605 return hess_vec_prod_f_px_[l];
1608template<
class Scalar>
1609RCP<MultiVectorBase<Scalar> >
1610ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_f_pp(
int l1,
int l2)
const
1612 assert_supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2);
1613 return hess_vec_prod_f_pp_[ l1*Np() + l2 ];
1617template<
class Scalar>
1618void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_g_xx(
1619 int j,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_g_xx_j
1622 assert_supports(OUT_ARG_hess_vec_prod_g_xx,j);
1623 hess_vec_prod_g_xx_[j] = hess_vec_prod_g_xx_j;
1626template<
class Scalar>
1627void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_g_xp(
1628 int j,
int l,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_g_xp_j_l
1631 assert_supports(OUT_ARG_hess_vec_prod_g_xp,j,l);
1632 hess_vec_prod_g_xp_[ j*Np() + l ] = hess_vec_prod_g_xp_j_l;
1635template<
class Scalar>
1636void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_g_px(
1637 int j,
int l,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_g_px_j_l
1640 assert_supports(OUT_ARG_hess_vec_prod_g_px,j,l);
1641 hess_vec_prod_g_px_[ j*Np() + l ] = hess_vec_prod_g_px_j_l;
1644template<
class Scalar>
1645void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_vec_prod_g_pp(
1646 int j,
int l1,
int l2,
const RCP<MultiVectorBase<Scalar> > &hess_vec_prod_g_pp_j_l1_l2
1649 assert_supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2);
1650 hess_vec_prod_g_pp_[ j*Np()*Np() + l1*Np() + l2 ] = hess_vec_prod_g_pp_j_l1_l2;
1653template<
class Scalar>
1654RCP<MultiVectorBase<Scalar> >
1655ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_g_xx(
int j)
const
1657 assert_supports(OUT_ARG_hess_vec_prod_g_xx,j);
1658 return hess_vec_prod_g_xx_[j];
1661template<
class Scalar>
1662RCP<MultiVectorBase<Scalar> >
1663ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_g_xp(
int j,
int l)
const
1665 assert_supports(OUT_ARG_hess_vec_prod_g_xp,j,l);
1666 return hess_vec_prod_g_xp_[ j*Np() + l ];
1669template<
class Scalar>
1670RCP<MultiVectorBase<Scalar> >
1671ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_g_px(
int j,
int l)
const
1673 assert_supports(OUT_ARG_hess_vec_prod_g_px,j,l);
1674 return hess_vec_prod_g_px_[ j*Np() + l ];
1677template<
class Scalar>
1678RCP<MultiVectorBase<Scalar> >
1679ModelEvaluatorBase::OutArgs<Scalar>::get_hess_vec_prod_g_pp(
int j,
int l1,
int l2)
const
1681 assert_supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2);
1682 return hess_vec_prod_g_pp_[ j*Np()*Np() + l1*Np() + l2 ];
1685template<
class Scalar>
1686void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_f_xx(
1687 const RCP<LinearOpBase<Scalar> > &hess_f_xx
1690 assert_supports(OUT_ARG_hess_f_xx);
1691 hess_f_xx_ = hess_f_xx;
1694template<
class Scalar>
1695void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_f_xp(
1696 int l,
const RCP<LinearOpBase<Scalar> > &hess_f_xp_l
1699 assert_supports(OUT_ARG_hess_f_xp,l);
1700 hess_f_xp_[l] = hess_f_xp_l;
1703template<
class Scalar>
1704void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_f_pp(
1705 int l1,
int l2,
const RCP<LinearOpBase<Scalar> > &hess_f_pp_l1_l2
1708 assert_supports(OUT_ARG_hess_f_pp,l1,l2);
1709 hess_f_pp_[ l1*Np() + l2 ] = hess_f_pp_l1_l2;
1712template<
class Scalar>
1713RCP<LinearOpBase<Scalar> >
1714ModelEvaluatorBase::OutArgs<Scalar>::get_hess_f_xx()
const
1716 assert_supports(OUT_ARG_hess_f_xx);
1720template<
class Scalar>
1721RCP<LinearOpBase<Scalar> >
1722ModelEvaluatorBase::OutArgs<Scalar>::get_hess_f_xp(
int l)
const
1724 assert_supports(OUT_ARG_hess_f_xp,l);
1725 return hess_f_xp_[l];
1728template<
class Scalar>
1729RCP<LinearOpBase<Scalar> >
1730ModelEvaluatorBase::OutArgs<Scalar>::get_hess_f_pp(
int l1,
int l2)
const
1732 assert_supports(OUT_ARG_hess_f_pp,l1,l2);
1733 return hess_f_pp_[ l1*Np() + l2 ];
1736template<
class Scalar>
1737void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_g_xx(
1738 int j,
const RCP<LinearOpBase<Scalar> > &hess_g_xx_j
1741 assert_supports(OUT_ARG_hess_g_xx,j);
1742 hess_g_xx_[j] = hess_g_xx_j;
1745template<
class Scalar>
1746void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_g_xp(
1747 int j,
int l,
const RCP<LinearOpBase<Scalar> > &hess_g_xp_j_l
1750 assert_supports(OUT_ARG_hess_g_xp,j,l);
1751 hess_g_xp_[ j*Np() + l ] = hess_g_xp_j_l;
1754template<
class Scalar>
1755void ModelEvaluatorBase::OutArgs<Scalar>::set_hess_g_pp(
1756 int j,
int l1,
int l2,
const RCP<LinearOpBase<Scalar> > &hess_g_pp_j_l1_l2
1759 assert_supports(OUT_ARG_hess_g_pp,j,l1,l2);
1760 hess_g_pp_[ j*Np()*Np() + l1*Np() + l2 ] = hess_g_pp_j_l1_l2;
1763template<
class Scalar>
1764RCP<LinearOpBase<Scalar> >
1765ModelEvaluatorBase::OutArgs<Scalar>::get_hess_g_xx(
int j)
const
1767 assert_supports(OUT_ARG_hess_g_xx,j);
1768 return hess_g_xx_[j];
1771template<
class Scalar>
1772RCP<LinearOpBase<Scalar> >
1773ModelEvaluatorBase::OutArgs<Scalar>::get_hess_g_xp(
int j,
int l)
const
1775 assert_supports(OUT_ARG_hess_g_xp,j,l);
1776 return hess_g_xp_[ j*Np() + l ];
1779template<
class Scalar>
1780RCP<LinearOpBase<Scalar> >
1781ModelEvaluatorBase::OutArgs<Scalar>::get_hess_g_pp(
int j,
int l1,
int l2)
const
1783 assert_supports(OUT_ARG_hess_g_pp,j,l1,l2);
1784 return hess_g_pp_[ j*Np()*Np() + l1*Np() + l2 ];
1787template<
class Scalar>
1788void ModelEvaluatorBase::OutArgs<Scalar>::set_H_xx(
1789 const RCP<LinearOpBase<Scalar> > &H_xx
1792 assert_supports(OUT_ARG_H_xx);
1796template<
class Scalar>
1797void ModelEvaluatorBase::OutArgs<Scalar>::set_H_xp(
1798 int l,
const RCP<LinearOpBase<Scalar> > &H_xp_l
1801 assert_supports(OUT_ARG_H_xp,l);
1805template<
class Scalar>
1806void ModelEvaluatorBase::OutArgs<Scalar>::set_H_pp(
1807 int l1,
int l2,
const RCP<LinearOpBase<Scalar> > &H_pp_l1_l2
1810 assert_supports(OUT_ARG_H_pp,l1,l2);
1811 H_pp_[ l1*Np() + l2 ] = H_pp_l1_l2;
1814template<
class Scalar>
1815RCP<LinearOpBase<Scalar> >
1816ModelEvaluatorBase::OutArgs<Scalar>::get_H_xx()
const
1818 assert_supports(OUT_ARG_H_xx);
1822template<
class Scalar>
1823RCP<LinearOpBase<Scalar> >
1824ModelEvaluatorBase::OutArgs<Scalar>::get_H_xp(
int l)
const
1826 assert_supports(OUT_ARG_H_xp,l);
1830template<
class Scalar>
1831RCP<LinearOpBase<Scalar> >
1832ModelEvaluatorBase::OutArgs<Scalar>::get_H_pp(
int l1,
int l2)
const
1834 assert_supports(OUT_ARG_H_pp,l1,l2);
1835 return H_pp_[ l1*Np() + l2 ];
1841#ifdef HAVE_THYRA_ME_POLYNOMIAL
1844template<
class Scalar>
1845void ModelEvaluatorBase::OutArgs<Scalar>::set_f_poly(
1853template<
class Scalar>
1854RCP<Teuchos::Polynomial< VectorBase<Scalar> > >
1855ModelEvaluatorBase::OutArgs<Scalar>::get_f_poly()
const
1864template<
class Scalar>
1870 const int min_Np = TEUCHOS_MIN(this->Np(),inputOutArgs.
Np());
1871 const int min_Ng = TEUCHOS_MIN(this->Ng(),inputOutArgs.
Ng());
1874 if ( supports(
OUT_ARG_f) || !ignoreUnsupported )
1875 set_f(inputOutArgs.
get_f());
1881#ifdef HAVE_THYRA_ME_POLYNOMIAL
1885 set_f_poly(inputOutArgs.get_f_poly());
1889 for (
int j = 0; j < min_Ng; ++j ) {
1890 if ( nonnull(inputOutArgs.
get_g(j)) )
1891 set_g(j,inputOutArgs.
get_g(j));
1893 for (
int j = 0; j < min_Ng; ++j ) {
1896 set_g_mp(j,inputOutArgs.
get_g_mp(j));
1901 if ( supports(
OUT_ARG_W) || !ignoreUnsupported )
1902 set_W(inputOutArgs.
get_W());
1919 for (
int l = 0; l < min_Np; ++l ) {
1920 MEB::Derivative<Scalar> DfDp_l;
1922 && !(DfDp_l=inputOutArgs.
get_DfDp(l)).isEmpty() )
1924 if ( DfDp_l.isSupportedBy(supports(
OUT_ARG_DfDp,l)) || !ignoreUnsupported )
1928 for (
int l = 0; l < min_Np; ++l ) {
1929 MEB::MPDerivative DfDp_mp_l;
1931 && !(DfDp_mp_l=inputOutArgs.get_DfDp_mp(l)).isEmpty() )
1933 if ( DfDp_mp_l.isSupportedBy(supports(
OUT_ARG_DfDp_mp,l)) || !ignoreUnsupported )
1934 set_DfDp_mp(l,DfDp_mp_l);
1938 for (
int j = 0; j < min_Ng; ++j ) {
1940 MEB::Derivative<Scalar> DgDx_dot_j;
1942 && !(DgDx_dot_j=inputOutArgs.
get_DgDx_dot(j)).isEmpty() )
1944 if( DgDx_dot_j.isSupportedBy(supports(
OUT_ARG_DgDx_dot,j)) || !ignoreUnsupported )
1945 set_DgDx_dot(j,DgDx_dot_j);
1948 MEB::Derivative<Scalar> DgDx_j;
1950 && !(DgDx_j=inputOutArgs.
get_DgDx(j)).isEmpty() ) {
1951 if ( DgDx_j.isSupportedBy(supports(
OUT_ARG_DgDx,j)) || !ignoreUnsupported )
1955 for (
int j = 0; j < min_Ng; ++j ) {
1957 MEB::MPDerivative DgDx_dot_mp_j;
1959 && !(DgDx_dot_mp_j=inputOutArgs.get_DgDx_dot_mp(j)).isEmpty() )
1962 set_DgDx_dot_mp(j,DgDx_dot_mp_j);
1965 MEB::MPDerivative DgDx_mp_j;
1967 && !(DgDx_mp_j=inputOutArgs.get_DgDx_mp(j)).isEmpty() ) {
1968 if ( DgDx_mp_j.isSupportedBy(supports(
OUT_ARG_DgDx_mp,j)) || !ignoreUnsupported )
1969 set_DgDx_mp(j,DgDx_mp_j);
1973 for (
int l = 0; l < min_Np; ++l ) {
1974 for (
int j = 0; j < min_Ng; ++j ) {
1975 MEB::Derivative<Scalar> DgDp_j_l;
1977 && !(DgDp_j_l=inputOutArgs.
get_DgDp(j,l)).isEmpty() )
1979 if ( DgDp_j_l.isSupportedBy(supports(
OUT_ARG_DgDp,j,l)) || !ignoreUnsupported )
1980 set_DgDp(j,l,DgDp_j_l);
1984 for (
int l = 0; l < min_Np; ++l ) {
1985 for (
int j = 0; j < min_Ng; ++j ) {
1986 MEB::MPDerivative DgDp_mp_j_l;
1988 && !(DgDp_mp_j_l=inputOutArgs.get_DgDp_mp(j,l)).isEmpty() )
1990 if ( DgDp_mp_j_l.isSupportedBy(supports(
OUT_ARG_DgDp_mp,j,l)) || !ignoreUnsupported )
1991 set_DgDp_mp(j,l,DgDp_mp_j_l);
1996#ifdef Thyra_BUILD_HESSIAN_SUPPORT
1999 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_xx) && nonnull(inputOutArgs.get_hess_vec_prod_f_xx()) ) {
2000 if ( supports(OUT_ARG_hess_vec_prod_f_xx) || !ignoreUnsupported )
2001 set_hess_vec_prod_f_xx(inputOutArgs.get_hess_vec_prod_f_xx());
2003 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
2004 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_xp,l1) && nonnull(inputOutArgs.get_hess_vec_prod_f_xp(l1)) ) {
2005 if ( supports(OUT_ARG_hess_vec_prod_f_xp,l1) || !ignoreUnsupported )
2006 set_hess_vec_prod_f_xp(l1,inputOutArgs.get_hess_vec_prod_f_xp(l1));
2008 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_px,l1) && nonnull(inputOutArgs.get_hess_vec_prod_f_px(l1)) ) {
2009 if ( supports(OUT_ARG_hess_vec_prod_f_px,l1) || !ignoreUnsupported )
2010 set_hess_vec_prod_f_px(l1,inputOutArgs.get_hess_vec_prod_f_px(l1));
2012 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
2013 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2) && nonnull(inputOutArgs.get_hess_vec_prod_f_pp(l1,l2)) ) {
2014 if ( supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2) || !ignoreUnsupported )
2015 set_hess_vec_prod_f_pp(l1,l2,inputOutArgs.get_hess_vec_prod_f_pp(l1,l2));
2021 for (
int j = 0; j < min_Ng; ++j ) {
2022 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_g_xx,j) && nonnull(inputOutArgs.get_hess_vec_prod_g_xx(j)) ) {
2023 if ( supports(OUT_ARG_hess_vec_prod_g_xx,j) || !ignoreUnsupported )
2024 set_hess_vec_prod_g_xx(j,inputOutArgs.get_hess_vec_prod_g_xx(j));
2026 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
2027 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_g_xp,j,l1) && nonnull(inputOutArgs.get_hess_vec_prod_g_xp(j,l1)) ) {
2028 if ( supports(OUT_ARG_hess_vec_prod_g_xp,j,l1) || !ignoreUnsupported )
2029 set_hess_vec_prod_g_xp(j,l1,inputOutArgs.get_hess_vec_prod_g_xp(j,l1));
2031 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_g_px,j,l1) && nonnull(inputOutArgs.get_hess_vec_prod_g_px(j,l1)) ) {
2032 if ( supports(OUT_ARG_hess_vec_prod_g_px,j,l1) || !ignoreUnsupported )
2033 set_hess_vec_prod_g_px(j,l1,inputOutArgs.get_hess_vec_prod_g_px(j,l1));
2035 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
2036 if( inputOutArgs.
supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2) && nonnull(inputOutArgs.get_hess_vec_prod_g_pp(j,l1,l2)) ) {
2037 if ( supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2) || !ignoreUnsupported )
2038 set_hess_vec_prod_g_pp(j,l1,l2,inputOutArgs.get_hess_vec_prod_g_pp(j,l1,l2));
2045 if( inputOutArgs.
supports(OUT_ARG_hess_f_xx) && nonnull(inputOutArgs.get_hess_f_xx()) ) {
2046 if ( supports(OUT_ARG_hess_f_xx) || !ignoreUnsupported )
2047 set_hess_f_xx(inputOutArgs.get_hess_f_xx());
2049 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
2050 if( inputOutArgs.
supports(OUT_ARG_hess_f_xp,l1) && nonnull(inputOutArgs.get_hess_f_xp(l1)) ) {
2051 if ( supports(OUT_ARG_hess_f_xp,l1) || !ignoreUnsupported )
2052 set_hess_f_xp(l1,inputOutArgs.get_hess_f_xp(l1));
2054 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
2055 if( inputOutArgs.
supports(OUT_ARG_hess_f_pp,l1,l2) && nonnull(inputOutArgs.get_hess_f_pp(l1,l2)) ) {
2056 if ( supports(OUT_ARG_hess_f_pp,l1,l2) || !ignoreUnsupported )
2057 set_hess_f_pp(l1,l2,inputOutArgs.get_hess_f_pp(l1,l2));
2063 for (
int j = 0; j < min_Ng; ++j ) {
2064 if( inputOutArgs.
supports(OUT_ARG_hess_g_xx,j) && nonnull(inputOutArgs.get_hess_g_xx(j)) ) {
2065 if ( supports(OUT_ARG_hess_g_xx,j) || !ignoreUnsupported )
2066 set_hess_g_xx(j,inputOutArgs.get_hess_g_xx(j));
2068 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
2069 if( inputOutArgs.
supports(OUT_ARG_hess_g_xp,j,l1) && nonnull(inputOutArgs.get_hess_g_xp(j,l1)) ) {
2070 if ( supports(OUT_ARG_hess_g_xp,j,l1) || !ignoreUnsupported )
2071 set_hess_g_xp(j,l1,inputOutArgs.get_hess_g_xp(j,l1));
2073 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
2074 if( inputOutArgs.
supports(OUT_ARG_hess_g_pp,j,l1,l2) && nonnull(inputOutArgs.get_hess_g_pp(j,l1,l2)) ) {
2075 if ( supports(OUT_ARG_hess_g_pp,j,l1,l2) || !ignoreUnsupported )
2076 set_hess_g_pp(j,l1,l2,inputOutArgs.get_hess_g_pp(j,l1,l2));
2083 if( inputOutArgs.
supports(OUT_ARG_H_xx) && nonnull(inputOutArgs.get_H_xx()) ) {
2084 if ( supports(OUT_ARG_H_xx) || !ignoreUnsupported )
2085 set_H_xx(inputOutArgs.get_H_xx());
2087 for (
int l1 = 0; l1 < min_Np; ++l1 ) {
2088 if( inputOutArgs.
supports(OUT_ARG_H_xp,l1) && nonnull(inputOutArgs.get_H_xp(l1)) ) {
2089 if ( supports(OUT_ARG_H_xp,l1) || !ignoreUnsupported )
2090 set_H_xp(l1,inputOutArgs.get_H_xp(l1));
2092 for (
int l2 = 0; l2 < min_Np; ++l2 ) {
2093 if( inputOutArgs.
supports(OUT_ARG_H_pp,l1,l2) && nonnull(inputOutArgs.get_H_pp(l1,l2)) ) {
2094 if ( supports(OUT_ARG_H_pp,l1,l2) || !ignoreUnsupported )
2095 set_H_pp(l1,l2,inputOutArgs.get_H_pp(l1,l2));
2103 this->extended_outargs_ = inputOutArgs.extended_outargs_;
2109template<
class Scalar>
2114 if( this->supports(
OUT_ARG_f) && nonnull(this->get_f()) ) {
2115 assign(this->get_f().ptr(),ST::nan());
2117 for(
int j = 0; j < this->Ng(); ++j ) {
2118 if (nonnull(this->get_g(j)))
2119 assign(this->get_g(j).ptr(),ST::nan());
2125template<
class Scalar>
2132template<
class Scalar>
2139 if (!is_null(W_op_))
2141 for (
int l = 0; l < Np(); ++l ) {
2142 if (!DfDp_[l].isEmpty())
2145#ifdef HAVE_THYRA_ME_POLYNOMIAL
2146 if (!is_null(f_poly_))
2149 for (
int j = 0; j < Ng(); ++j ) {
2150 if (!is_null(g_[j]))
2152 if (!DgDx_dot_[j].isEmpty())
2154 if (!DgDx_[j].isEmpty())
2156 for (
int l = 0; l < Np(); ++l ) {
2157 if (!DgDp_[j*Np()+l].isEmpty())
2165template<
class Scalar>
2173 const std::string outArg_name = toString(outArg_arg);
2175 supports(outArg_arg) != outArgs.
supports(outArg_arg), std::logic_error,
2176 "Error, the output argument "<<outArg_name<<
" with support "<<outArgs.
supports(outArg_arg)<<
"\n"
2177 "in the OutArgs object for the model:\n\n"
2179 "is not the same the argument "<<outArg_name<<
" with support "<<supports(outArg_arg)<<
"\n"
2180 "in the OutArgs object for the model:\n\n"
2181 " "<<modelEvalDescription()<<
"\n\n"
2182 "and these two OutArgs objects are not compatible!"
2186 const int l_Np = this->Np();
2187 const int l_Ng = this->Ng();
2192 for (
int l = 0; l < l_Np; ++l ) {
2196 "Error, the support for DfDp("<<l<<
") is not the same for the models\n\n"
2199 " "<<modelEvalDescription()<<
"\n\n"
2200 "and these two OutArgs objects are not compatible!"
2205 for (
int j = 0; j < l_Ng; ++j ) {
2209 "Error, the support for DgDx_dot("<<j<<
") is not the same for the models\n\n"
2212 " "<<modelEvalDescription()<<
"\n\n"
2213 "and these two OutArgs objects are not compatible!"
2218 "Error, the support for DgDx("<<j<<
") is not the same for the models\n\n"
2221 " "<<modelEvalDescription()<<
"\n\n"
2222 "and these two OutArgs objects are not compatible!"
2224 for (
int l = 0; l < l_Np; ++l ) {
2228 "Error, the support for DgDp("<<j<<
","<<l<<
") is not the same for the models\n\n"
2231 " "<<modelEvalDescription()<<
"\n\n"
2232 "and these two OutArgs objects are not compatible!"
2239template<
class Scalar>
2242 return modelEvalDescription_;
2246template<
class Scalar>
2250 std::ostringstream oss;
2252 <<
"Thyra::ModelEvaluatorBase::OutArgs<"<<ST::name()<<
">"
2254 <<
"model="<<modelEvalDescription_
2262template<
class Scalar>
2269 using Teuchos::describe;
2275 typedef MEB::Derivative<Scalar> Deriv;
2284 *out <<
"Thyra::ModelEvaluatorBase::OutArgs<"<<ST::name()<<
">:\n";
2287 *out <<
"model = " << modelEvalDescription_ <<
"\n";
2288 *out <<
"Np = " << Np() <<
"\n";
2289 *out <<
"Ng = " << Ng() <<
"\n";
2292 if (this->supports(
OUT_ARG_f) && !is_null(f=get_f()) ) {
2293 *out <<
"f = " << Teuchos::describe(*f,verbLevel);
2296 for(
int j = 0; j < Ng(); ++j ) {
2298 if (!is_null(g_j=this->get_g(j)))
2299 *out <<
"g("<<j<<
") = " << Teuchos::describe(*g_j,verbLevel);
2303 if ( this->supports(
OUT_ARG_W) && !is_null(W=get_W()) ) {
2304 *out <<
"W = " << Teuchos::describe(*W,verbLevel);
2308 if ( this->supports(
OUT_ARG_W_op) && !is_null(W_op=get_W_op()) ) {
2309 *out <<
"W_op = " << Teuchos::describe(*W_op,verbLevel);
2312 for(
int l = 0; l < Np(); ++l ) {
2316 && !(DfDp_l=get_DfDp(l)).isEmpty()
2319 *out <<
"DfDp("<<l<<
") = ";
2320 DfDp_l.describe(*out,verbLevel);
2324 for(
int j = 0; j < Ng(); ++j ) {
2329 && !(DgDx_dot_j=get_DgDx_dot(j)).isEmpty()
2332 *out <<
"DgDx_dot("<<j<<
") = ";
2333 DgDx_dot_j.describe(*out,verbLevel);
2339 && !(DgDx_j=get_DgDx(j)).isEmpty()
2342 *out <<
"DgDx("<<j<<
") = ";
2343 DgDx_j.describe(*out,verbLevel);
2346 for(
int l = 0; l < Np(); ++l ) {
2351 && !(DgDp_j_l=get_DgDp(j,l)).isEmpty()
2354 *out <<
"DgDp("<<j<<
","<<l<<
") = ";
2355 DgDp_j_l.describe(*out,verbLevel);
2369template<
class Scalar>
2371 const std::string &modelEvalDescription_in
2374 modelEvalDescription_ = modelEvalDescription_in;
2377template<
class Scalar>
2381 supports_DfDp_.resize(Np_in);
2383 DfDp_properties_.resize(Np_in); std::fill_n(DfDp_properties_.begin(),Np_in,
DerivativeProperties());
2385 supports_DfDp_mp_.resize(Np_in);
2386 DfDp_mp_.resize(Np_in); std::fill_n(DfDp_mp_.begin(),Np_in,
MPDerivative());
2387 DfDp_mp_properties_.resize(Np_in); std::fill_n(DfDp_mp_properties_.begin(),Np_in,
DerivativeProperties());
2390 g_.resize(Ng_in); std::fill_n(g_.begin(),Ng_in,
Teuchos::null);
2391 supports_DgDx_dot_.resize(Ng_in);
2393 DgDx_dot_properties_.resize(Ng_in); std::fill_n(DgDx_dot_properties_.begin(),Ng_in,
DerivativeProperties());
2394 supports_DgDx_.resize(Ng_in);
2396 DgDx_properties_.resize(Ng_in); std::fill_n(DgDx_properties_.begin(),Ng_in,
DerivativeProperties());
2398#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2399 supports_hess_vec_prod_g_xx_.resize(Ng_in);
2402 supports_hess_g_xx_.resize(Ng_in);
2406 g_mp_.resize(Ng_in); std::fill_n(g_mp_.begin(),Ng_in,
Teuchos::null);
2407 supports_g_mp_.resize(Ng_in);
2408 supports_DgDx_dot_mp_.resize(Ng_in);
2409 DgDx_dot_mp_.resize(Ng_in); std::fill_n(DgDx_dot_mp_.begin(),Ng_in,
MPDerivative());
2410 DgDx_dot_mp_properties_.resize(Ng_in); std::fill_n(DgDx_dot_mp_properties_.begin(),Ng_in,
DerivativeProperties());
2411 supports_DgDx_mp_.resize(Ng_in);
2412 DgDx_mp_.resize(Ng_in); std::fill_n(DgDx_mp_.begin(),Ng_in,
MPDerivative());
2413 DgDx_mp_properties_.resize(Ng_in); std::fill_n(DgDx_mp_properties_.begin(),Ng_in,
DerivativeProperties());
2415#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2417 const int Np = Np_in;
2418 const int NpNp = Np_in*Np_in;
2420 supports_hess_vec_prod_f_xp_.resize(Np);
2423 supports_hess_vec_prod_f_px_.resize(Np);
2426 supports_hess_vec_prod_f_pp_.resize(NpNp);
2429 supports_hess_f_xp_.resize(Np);
2432 supports_hess_f_pp_.resize(NpNp);
2435 supports_H_xp_.resize(Np);
2438 supports_H_pp_.resize(NpNp);
2442 if(Np_in && Ng_in) {
2443 const int NpNg = Np_in*Ng_in;
2444 const int NpNpNg = Np_in*Np_in*Ng_in;
2445 supports_DgDp_.resize(NpNg);
2447 DgDp_properties_.resize(NpNg); std::fill_n(DgDp_properties_.begin(),NpNg,
DerivativeProperties());
2449#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2450 supports_hess_vec_prod_g_xp_.resize(NpNg);
2453 supports_hess_vec_prod_g_px_.resize(NpNg);
2456 supports_hess_vec_prod_g_pp_.resize(NpNpNg);
2459 supports_hess_g_xp_.resize(NpNg);
2462 supports_hess_g_pp_.resize(NpNpNg);
2466 supports_DgDp_mp_.resize(NpNg);
2467 DgDp_mp_.resize(NpNg); std::fill_n(DgDp_mp_.begin(),NpNg,
MPDerivative());
2468 DgDp_mp_properties_.resize(NpNg); std::fill_n(DgDp_mp_properties_.begin(),NpNg,
DerivativeProperties());
2473template<
class Scalar>
2479 ,
"model = \'"<<modelEvalDescription_
2480 <<
"\': Error, arg="<<toString(arg)<<
" is invalid!"
2482 supports_[arg] = supports_in;
2486template<
class Scalar>
2493 supports_DfDp_[l] = supports_in;
2497template<
class Scalar>
2503 supports_DgDx_dot_[j] = supports_in;
2507template<
class Scalar>
2513 supports_DgDx_[j] = supports_in;
2517#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2519template<
class Scalar>
2521 EOutArgs_hess_vec_prod_f_xx ,
bool supports_in
2524 supports_hess_vec_prod_f_xx_ = supports_in;
2527template<
class Scalar>
2529 EOutArgs_hess_vec_prod_f_xp ,
int l,
bool supports_in
2533 supports_hess_vec_prod_f_xp_[l] = supports_in;
2536template<
class Scalar>
2538 EOutArgs_hess_vec_prod_f_px ,
int l,
bool supports_in
2542 supports_hess_vec_prod_f_px_[l] = supports_in;
2545template<
class Scalar>
2547 EOutArgs_hess_vec_prod_f_pp ,
int l1,
int l2,
bool supports_in
2552 supports_hess_vec_prod_f_pp_[ l1*Np()+ l2 ] = supports_in;
2558template<
class Scalar>
2565 supports_DgDp_[ j*Np()+ l ] = supports_in;
2569#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2571template<
class Scalar>
2573 EOutArgs_hess_vec_prod_g_xx ,
int j,
bool supports_in
2577 supports_hess_vec_prod_g_xx_[j] = supports_in;
2580template<
class Scalar>
2582 EOutArgs_hess_vec_prod_g_xp ,
int j,
int l,
bool supports_in
2587 supports_hess_vec_prod_g_xp_[ j*Np()+ l ] = supports_in;
2590template<
class Scalar>
2592 EOutArgs_hess_vec_prod_g_px ,
int j,
int l,
bool supports_in
2597 supports_hess_vec_prod_g_px_[ j*Np()+ l ] = supports_in;
2600template<
class Scalar>
2602 EOutArgs_hess_vec_prod_g_pp ,
int j,
int l1,
int l2,
bool supports_in
2608 supports_hess_vec_prod_g_pp_[ j*Np()*Np()+ l1*Np() + l2 ] = supports_in;
2612template<
class Scalar>
2614 EOutArgs_hess_f_xx ,
bool supports_in
2617 supports_hess_f_xx_ = supports_in;
2620template<
class Scalar>
2622 EOutArgs_hess_f_xp ,
int l,
bool supports_in
2626 supports_hess_f_xp_[l] = supports_in;
2629template<
class Scalar>
2631 EOutArgs_hess_f_pp ,
int l1,
int l2,
bool supports_in
2636 supports_hess_f_pp_[ l1*Np()+ l2 ] = supports_in;
2639template<
class Scalar>
2641 EOutArgs_hess_g_xx ,
int j,
bool supports_in
2645 supports_hess_g_xx_[j] = supports_in;
2648template<
class Scalar>
2650 EOutArgs_hess_g_xp ,
int j,
int l,
bool supports_in
2655 supports_hess_g_xp_[ j*Np()+ l ] = supports_in;
2658template<
class Scalar>
2660 EOutArgs_hess_g_pp ,
int j,
int l1,
int l2,
bool supports_in
2666 supports_hess_g_pp_[ j*Np()*Np()+ l1*Np() + l2 ] = supports_in;
2669template<
class Scalar>
2671 EOutArgs_H_xx ,
bool supports_in
2674 supports_H_xx_ = supports_in;
2677template<
class Scalar>
2679 EOutArgs_H_xp ,
int l,
bool supports_in
2683 supports_H_xp_[l] = supports_in;
2686template<
class Scalar>
2688 EOutArgs_H_pp ,
int l1,
int l2,
bool supports_in
2693 supports_H_pp_[ l1*Np()+ l2 ] = supports_in;
2699template<
class Scalar>
2706 supports_g_mp_[j] = supports_in;
2710template<
class Scalar>
2717 supports_DfDp_mp_[l] = supports_in;
2721template<
class Scalar>
2727 supports_DgDx_dot_mp_[j] = supports_in;
2731template<
class Scalar>
2737 supports_DgDx_mp_[j] = supports_in;
2741template<
class Scalar>
2748 supports_DgDp_mp_[ j*Np()+ l ] = supports_in;
2752template<
class Scalar>
2757 W_properties_ = properties;
2761template<
class Scalar>
2767 DfDp_properties_[l] = properties;
2771template<
class Scalar>
2777 DgDx_dot_properties_[j] = properties;
2781template<
class Scalar>
2787 DgDx_properties_[j] = properties;
2791template<
class Scalar>
2797 DgDp_properties_[ j*Np()+ l ] = properties;
2801template<
class Scalar>
2807 DfDp_mp_properties_[l] = properties;
2811template<
class Scalar>
2813 int j,
const DerivativeProperties &properties
2817 DgDx_dot_mp_properties_[j] = properties;
2821template<
class Scalar>
2822void ModelEvaluatorBase::OutArgs<Scalar>::_set_DgDx_mp_properties(
2823 int j,
const DerivativeProperties &properties
2827 DgDx_mp_properties_[j] = properties;
2831template<
class Scalar>
2832void ModelEvaluatorBase::OutArgs<Scalar>::_set_DgDp_mp_properties(
2833 int j,
int l,
const DerivativeProperties &properties
2837 DgDp_mp_properties_[ j*Np()+ l ] = properties;
2841template<
class Scalar>
2847 const int l_Np = TEUCHOS_MIN(this->Np(),inputOutArgs.
Np());
2848 const int l_Ng = TEUCHOS_MIN(this->Ng(),inputOutArgs.
Ng());
2850 &inputOutArgs.supports_[0],
2852 for(
int l = 0; l < l_Np; ++l ) {
2855 this->_setSupports(MEB::OUT_ARG_DfDp,l,ds);
2859 for(
int l = 0; l < l_Np; ++l ) {
2862 this->_setSupports(MEB::OUT_ARG_DfDp_mp,l,ds);
2863 this->_set_DfDp_mp_properties(l,inputOutArgs.get_DfDp_mp_properties(l));
2866 for(
int j = 0; j < l_Ng; ++j ) {
2868 this->_setSupports(MEB::OUT_ARG_DgDx_dot,j,ds);
2871 for(
int j = 0; j < l_Ng; ++j ) {
2873 this->_setSupports(MEB::OUT_ARG_DgDx_dot_mp,j,ds);
2874 if(!ds.
none()) this->_set_DgDx_dot_mp_properties(j,inputOutArgs.get_DgDx_dot_mp_properties(j));
2876 for(
int j = 0; j < l_Ng; ++j ) {
2878 this->_setSupports(MEB::OUT_ARG_DgDx,j,ds);
2881 for(
int j = 0; j < l_Ng; ++j ) {
2883 this->_setSupports(MEB::OUT_ARG_DgDx_mp,j,ds);
2884 if(!ds.
none()) this->_set_DgDx_mp_properties(j,inputOutArgs.get_DgDx_mp_properties(j));
2886 for(
int j = 0; j < l_Ng; ++j )
for(
int l = 0; l < l_Np; ++l ) {
2888 this->_setSupports(MEB::OUT_ARG_DgDp,j,l,ds);
2891 for(
int j = 0; j < l_Ng; ++j )
for(
int l = 0; l < l_Np; ++l ) {
2893 this->_setSupports(MEB::OUT_ARG_DgDp_mp,j,l,ds);
2894 if(!ds.
none()) this->_set_DgDp_mp_properties(j,l,inputOutArgs.get_DgDp_mp_properties(j,l));
2901#ifdef Thyra_BUILD_HESSIAN_SUPPORT
2902 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_xx,inputOutArgs.
supports(OUT_ARG_hess_vec_prod_f_xx));
2903 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2904 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_xp,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_f_xp,l1));
2905 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_px,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_f_px,l1));
2906 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2907 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_pp,l1,l2,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_f_pp,l1,l2));
2910 for(
int j = 0; j < l_Ng; ++j ) {
2911 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_xx,j,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_g_xx,j));
2912 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2913 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_xp,j,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_g_xp,j,l1));
2914 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_px,j,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_vec_prod_g_px,j,l1));
2915 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2916 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));
2920 this->_setSupports(MEB::OUT_ARG_hess_f_xx,inputOutArgs.
supports(OUT_ARG_hess_f_xx));
2921 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2922 this->_setSupports(MEB::OUT_ARG_hess_f_xp,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_f_xp,l1));
2923 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2924 this->_setSupports(MEB::OUT_ARG_hess_f_pp,l1,l2,inputOutArgs.
supports(MEB::OUT_ARG_hess_f_pp,l1,l2));
2927 for(
int j = 0; j < l_Ng; ++j ) {
2928 this->_setSupports(MEB::OUT_ARG_hess_g_xx,j,inputOutArgs.
supports(MEB::OUT_ARG_hess_g_xx,j));
2929 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2930 this->_setSupports(MEB::OUT_ARG_hess_g_xp,j,l1,inputOutArgs.
supports(MEB::OUT_ARG_hess_g_xp,j,l1));
2931 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2932 this->_setSupports(MEB::OUT_ARG_hess_g_pp,j,l1,l2,inputOutArgs.
supports(MEB::OUT_ARG_hess_g_pp,j,l1,l2));
2936 this->_setSupports(MEB::OUT_ARG_H_xx,inputOutArgs.
supports(OUT_ARG_H_xx));
2937 for(
int l1 = 0; l1 < l_Np; ++l1 ) {
2938 this->_setSupports(MEB::OUT_ARG_H_xp,l1,inputOutArgs.
supports(MEB::OUT_ARG_H_xp,l1));
2939 for(
int l2 = 0; l2 < l_Np; ++l2 ) {
2940 this->_setSupports(MEB::OUT_ARG_H_pp,l1,l2,inputOutArgs.
supports(MEB::OUT_ARG_H_pp,l1,l2));
2945 extended_outargs_ = inputOutArgs.extended_outargs_;
2949template<
class Scalar>
2956 const int l_Ng = this->Ng();
2957 for(
int j = 0; j < l_Ng; ++j ) {
2964 const int l_Ng = this->Ng();
2965 for(
int j = 0; j < l_Ng; ++j ) {
2973 true ,std::logic_error,
2974 "Error, can not handle args other than IN_ARG_x yet!"
2980template<
class Scalar>
2990 const int l_Np = this->Np();
2991 for(
int l = 0; l < l_Np; ++l )
2999 const int l_Np = this->Np();
3000 for(
int l = 0; l < l_Np; ++l )
3006 true ,std::logic_error,
3007 "Error, can not handle args other than OUT_ARG_f yet!"
3010 this->_setSupports(arg,
false);
3013#ifdef Thyra_BUILD_HESSIAN_SUPPORT
3014template<
class Scalar>
3020 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_xx,supports);
3021 this->_setSupports(MEB::OUT_ARG_hess_f_xx,supports);
3022 this->_setSupports(MEB::OUT_ARG_H_xx,supports);
3023 for (
int l1=0; l1<this->Np(); ++l1)
3025 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_xp,l1,supports);
3026 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_px,l1,supports);
3027 this->_setSupports(MEB::OUT_ARG_hess_f_xp,l1,supports);
3028 this->_setSupports(MEB::OUT_ARG_H_xp,l1,supports);
3029 for (
int l2=0; l2<this->Np(); ++l2)
3031 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_f_pp,l1,l2,supports);
3032 this->_setSupports(MEB::OUT_ARG_hess_f_pp,l1,l2,supports);
3033 this->_setSupports(MEB::OUT_ARG_H_pp,l1,l2,supports);
3037 for (
int j=0; j<this->Ng(); ++j)
3039 this->_setSupports(MEB::OUT_ARG_hess_g_xx,j,supports);
3040 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_xx,j,supports);
3041 for (
int l1=0; l1<this->Np(); ++l1)
3043 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_xp,j,l1,supports);
3044 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_px,j,l1,supports);
3045 this->_setSupports(MEB::OUT_ARG_hess_g_xp,j,l1,supports);
3046 for (
int l2=0; l2<this->Np(); ++l2)
3048 this->_setSupports(MEB::OUT_ARG_hess_vec_prod_g_pp,j,l1,l2,supports);
3049 this->_setSupports(MEB::OUT_ARG_hess_g_pp,j,l1,l2,supports);
3059template<
class Scalar>
3060void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
EOutArgsMembers arg)
const
3063 !this->supports(arg), std::logic_error
3064 ,
"Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(arg):\n\n"
3065 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3066 "Error, The argument arg = " << toString(arg) <<
" is not supported!"
3071template<
class Scalar>
3072void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3073 EOutArgsDfDp arg,
int l,
const Derivative<Scalar> &deriv
3076 const DerivativeSupport derivSupport = this->supports(arg,l);
3078 !deriv.isSupportedBy(derivSupport), std::logic_error,
3079 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DfDp,l):\n\n"
3080 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3081 "Error, The argument DfDp("<<l<<
") = " << deriv.description() <<
"\n"
3082 "is not supported!\n\n"
3083 "The supported types include " << derivSupport.description() <<
"!"
3088template<
class Scalar>
3089void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3093 const DerivativeSupport derivSupport = this->supports(arg,j);
3095 !deriv.isSupportedBy(derivSupport), std::logic_error,
3096 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDx_dot,j):\n\n"
3097 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3098 "Error, The argument DgDx_dot("<<j<<
") = " << deriv.description() <<
"\n"
3099 "is not supported!\n\n"
3100 "The supported types include " << derivSupport.description() <<
"!"
3105template<
class Scalar>
3106void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3107 EOutArgsDgDx arg,
int j,
const Derivative<Scalar> &deriv
3110 const DerivativeSupport derivSupport = this->supports(arg,j);
3112 !deriv.isSupportedBy(derivSupport), std::logic_error,
3113 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDx,j):\n\n"
3114 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3115 "Error, The argument DgDx("<<j<<
") = " << deriv.description() <<
"\n"
3116 "is not supported!\n\n"
3117 "The supported types include " << derivSupport.description() <<
"!"
3122template<
class Scalar>
3123void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3124 EOutArgsDgDp arg,
int j,
int l,
const Derivative<Scalar> &deriv
3127 const DerivativeSupport derivSupport = this->supports(arg,j,l);
3129 !deriv.isSupportedBy(derivSupport), std::logic_error,
3130 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDp,j,l):\n\n"
3131 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3132 "Error, The argument DgDp("<<j<<
","<<l<<
") = " << deriv.description() <<
"\n"
3133 "is not supported!\n\n"
3134 "The supported types include " << derivSupport.description() <<
"!"
3139#ifdef Thyra_BUILD_HESSIAN_SUPPORT
3141template<
class Scalar>
3142void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3143 EOutArgs_hess_vec_prod_f_xx arg
3146 const bool support = this->supports(arg);
3148 !support, std::logic_error,
3149 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_f_xx):\n\n"
3150 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3151 "Error, The argument hess_vec_prod_f_xx() is not supported!"
3155template<
class Scalar>
3156void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3157 EOutArgs_hess_vec_prod_f_xp arg,
int l
3160 const bool support = this->supports(arg,l);
3162 !support, std::logic_error,
3163 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_f_xp,l):\n\n"
3164 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3165 "Error, The argument hess_vec_prod_f_xp("<<l<<
") is not supported!"
3169template<
class Scalar>
3170void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3171 EOutArgs_hess_vec_prod_f_px arg,
int l
3174 const bool support = this->supports(arg,l);
3176 !support, std::logic_error,
3177 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_f_px,l):\n\n"
3178 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3179 "Error, The argument hess_vec_prod_f_px("<<l<<
") is not supported!"
3183template<
class Scalar>
3184void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3185 EOutArgs_hess_vec_prod_f_pp arg,
int l1,
int l2
3188 const bool support = this->supports(arg,l1,l2);
3190 !support, std::logic_error,
3191 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_f_pp,l1,l2):\n\n"
3192 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3193 "Error, The argument hess_vec_prod_f_pp("<<l1<<
","<<l2<<
") is not supported!"
3197template<
class Scalar>
3198void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3199 EOutArgs_hess_vec_prod_g_xx arg,
int j
3202 const bool support = this->supports(arg,j);
3204 !support, std::logic_error,
3205 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_g_xx,j):\n\n"
3206 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3207 "Error, The argument hess_vec_prod_g_xx("<<j<<
") is not supported!"
3211template<
class Scalar>
3212void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3213 EOutArgs_hess_vec_prod_g_xp arg,
int j,
int l
3216 const bool support = this->supports(arg,j,l);
3218 !support, std::logic_error,
3219 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_g_xp,j,l):\n\n"
3220 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3221 "Error, The argument hess_vec_prod_g_xp("<<j<<
","<<l<<
") is not supported!"
3225template<
class Scalar>
3226void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3227 EOutArgs_hess_vec_prod_g_px arg,
int j,
int l
3230 const bool support = this->supports(arg,j,l);
3232 !support, std::logic_error,
3233 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_g_px,j,l):\n\n"
3234 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3235 "Error, The argument hess_vec_prod_g_px("<<j<<
","<<l<<
") is not supported!"
3239template<
class Scalar>
3240void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3241 EOutArgs_hess_vec_prod_g_pp arg,
int j,
int l1,
int l2
3244 const bool support = this->supports(arg,j,l1,l2);
3246 !support, std::logic_error,
3247 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_vec_prod_g_pp,j,l1,l2):\n\n"
3248 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3249 "Error, The argument hess_vec_prod_g_pp("<<j<<
","<<l1<<
","<<l2<<
") is not supported!"
3253template<
class Scalar>
3254void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3255 EOutArgs_hess_f_xx arg
3258 const bool support = this->supports(arg);
3260 !support, std::logic_error,
3261 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_f_xx):\n\n"
3262 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3263 "Error, The argument hess_f_xx() is not supported!"
3267template<
class Scalar>
3268void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3269 EOutArgs_hess_f_xp arg,
int l
3272 const bool support = this->supports(arg,l);
3274 !support, std::logic_error,
3275 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_f_xp,l):\n\n"
3276 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3277 "Error, The argument hess_f_xp() is not supported!"
3281template<
class Scalar>
3282void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3283 EOutArgs_hess_f_pp arg,
int l1,
int l2
3286 const bool support = this->supports(arg,l1,l2);
3288 !support, std::logic_error,
3289 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_f_pp,l1,l2):\n\n"
3290 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3291 "Error, The argument hess_f_pp() is not supported!"
3295template<
class Scalar>
3296void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3297 EOutArgs_hess_g_xx arg,
int j
3300 const bool support = this->supports(arg,j);
3302 !support, std::logic_error,
3303 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_g_xx,j):\n\n"
3304 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3305 "Error, The argument hess_g_xx() is not supported!"
3309template<
class Scalar>
3310void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3311 EOutArgs_hess_g_xp arg,
int j,
int l
3314 const bool support = this->supports(arg,j,l);
3316 !support, std::logic_error,
3317 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_g_xp,j,l):\n\n"
3318 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3319 "Error, The argument hess_g_xp() is not supported!"
3323template<
class Scalar>
3324void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3325 EOutArgs_hess_g_pp arg,
int j,
int l1,
int l2
3328 const bool support = this->supports(arg,j,l1,l2);
3330 !support, std::logic_error,
3331 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_hess_g_pp,j,l1,l2):\n\n"
3332 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3333 "Error, The argument hess_g_pp() is not supported!"
3337template<
class Scalar>
3338void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3342 const bool support = this->supports(arg);
3344 !support, std::logic_error,
3345 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_H_xx):\n\n"
3346 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3347 "Error, The argument H_xx() is not supported!"
3351template<
class Scalar>
3352void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3353 EOutArgs_H_xp arg,
int l
3356 const bool support = this->supports(arg,l);
3358 !support, std::logic_error,
3359 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_H_xp,l):\n\n"
3360 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3361 "Error, The argument H_xp() is not supported!"
3365template<
class Scalar>
3366void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3367 EOutArgs_H_pp arg,
int l1,
int l2
3370 const bool support = this->supports(arg,l1,l2);
3372 !support, std::logic_error,
3373 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_H_pp,l1,l2):\n\n"
3374 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3375 "Error, The argument H_pp() is not supported!"
3382template<
class Scalar>
3383void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3389 !supports_g_mp_[j], std::logic_error,
3390 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_g_mp,j):\n\n"
3391 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3392 "Error, The argument g_mp("<<j<<
") \n"
3393 "is not supported!\n\n"
3398template<
class Scalar>
3399void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3403 const DerivativeSupport derivSupport = this->supports(arg,l);
3405 !deriv.isSupportedBy(derivSupport), std::logic_error,
3406 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DfDp_mp,l):\n\n"
3407 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3408 "Error, The argument DfDp_mp("<<l<<
") = " << deriv.description() <<
"\n"
3409 "is not supported!\n\n"
3410 "The supported types include " << derivSupport.description() <<
"!"
3415template<
class Scalar>
3416void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3420 const DerivativeSupport derivSupport = this->supports(arg,j);
3422 !deriv.isSupportedBy(derivSupport), std::logic_error,
3423 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDx_dot_mp,j):\n\n"
3424 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3425 "Error, The argument DgDx_dot_mp("<<j<<
") = " << deriv.description() <<
"\n"
3426 "is not supported!\n\n"
3427 "The supported types include " << derivSupport.description() <<
"!"
3432template<
class Scalar>
3433void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3437 const DerivativeSupport derivSupport = this->supports(arg,j);
3439 !deriv.isSupportedBy(derivSupport), std::logic_error,
3440 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDx_mp,j):\n\n"
3441 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3442 "Error, The argument DgDx_mp("<<j<<
") = " << deriv.description() <<
"\n"
3443 "is not supported!\n\n"
3444 "The supported types include " << derivSupport.description() <<
"!"
3449template<
class Scalar>
3450void ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(
3454 const DerivativeSupport derivSupport = this->supports(arg,j,l);
3456 !deriv.isSupportedBy(derivSupport), std::logic_error,
3457 "Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports(OUT_ARG_DgDp_mp,j,l):\n\n"
3458 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3459 "Error, The argument DgDp_mp("<<j<<
","<<l<<
") = " << deriv.description() <<
"\n"
3460 "is not supported!\n\n"
3461 "The supported types include " << derivSupport.description() <<
"!"
3466template<
class Scalar>
3467void ModelEvaluatorBase::OutArgs<Scalar>::assert_l(
int l)
const
3470 !( 0 <= l && l < Np() ), std::logic_error
3471 ,
"Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_l(l):\n\n"
3472 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3473 "Error, The parameter subvector p("<<l<<
")"
3474 " is not in the range [0,"<<Np()<<
")!"
3479template<
class Scalar>
3480void ModelEvaluatorBase::OutArgs<Scalar>::assert_j(
int j)
const
3483 !( 0 <= j && j < Ng() ), std::logic_error
3484 ,
"Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_j(j):\n\n"
3485 "model = \'"<<modelEvalDescription_<<
"\':\n\n"
3486 "Error, The auxiliary function g("<<j<<
")"
3487 " is not in the range [0,"<<Ng()<<
")!"
3497template<
class Scalar>
3502template<
class Scalar>
3508template<
class Scalar>
3510 const std::string &modelEvalDescription_in )
3512 this->_setModelEvalDescription(modelEvalDescription_in);
3516template<
class Scalar>
3518{ this->_set_Np_Ng(Np_in, 0); }
3520template<
class Scalar>
3522{ this->_set_Np_Ng(Np_in, Ng_in); }
3524template<
class Scalar>
3526{ this->_setSupports(arg,supports_in); }
3529template<
class Scalar>
3531{ this->_setSupports(arg,l,supports_in); }
3534template<
class Scalar>
3539 this->_setSupports(inArgs, Np_in);
3543template<
class Scalar>
3548 this->_setUnsupportsAndRelated(arg);
3557template<
class Scalar>
3562template<
class Scalar>
3566 :
OutArgs<Scalar>(inputOutArgs)
3570template<
class Scalar>
3572 const std::string &modelEvalDescription_in
3574{ this->_setModelEvalDescription(modelEvalDescription_in); }
3577template<
class Scalar>
3579{ this->_set_Np_Ng(Np_in, Ng_in); }
3582template<
class Scalar>
3586{ this->_setSupports(arg,supports_in); }
3589template<
class Scalar>
3593{ this->_setSupports(arg,l,supports_in); }
3596template<
class Scalar>
3600{ this->_setSupports(arg,j,supports_in); }
3603template<
class Scalar>
3607{ this->_setSupports(arg,j,supports_in); }
3610#ifdef Thyra_BUILD_HESSIAN_SUPPORT
3612template<
class Scalar>
3614 EOutArgs_hess_vec_prod_f_xx arg,
bool supports_in
3616{ this->_setSupports(arg,supports_in); }
3618template<
class Scalar>
3620 EOutArgs_hess_vec_prod_f_xp arg,
int l,
bool supports_in
3622{ this->_setSupports(arg,l,supports_in); }
3624template<
class Scalar>
3626 EOutArgs_hess_vec_prod_f_px arg,
int l,
bool supports_in
3628{ this->_setSupports(arg,l,supports_in); }
3630template<
class Scalar>
3632 EOutArgs_hess_vec_prod_f_pp arg,
int l1,
int l2,
bool supports_in
3634{ this->_setSupports(arg,l1,l2,supports_in); }
3639template<
class Scalar>
3643{ this->_setSupports(arg,j,l,supports_in); }
3646#ifdef Thyra_BUILD_HESSIAN_SUPPORT
3648template<
class Scalar>
3650 EOutArgs_hess_vec_prod_g_xx arg,
int j,
bool supports_in
3652{ this->_setSupports(arg,j,supports_in); }
3654template<
class Scalar>
3656 EOutArgs_hess_vec_prod_g_xp arg,
int j,
int l,
bool supports_in
3658{ this->_setSupports(arg,j,l,supports_in); }
3660template<
class Scalar>
3662 EOutArgs_hess_vec_prod_g_px arg,
int j,
int l,
bool supports_in
3664{ this->_setSupports(arg,j,l,supports_in); }
3666template<
class Scalar>
3668 EOutArgs_hess_vec_prod_g_pp arg,
int j,
int l1,
int l2,
bool supports_in
3670{ this->_setSupports(arg,j,l1,l2,supports_in); }
3672template<
class Scalar>
3674 EOutArgs_hess_f_xx arg,
bool supports_in
3676{ this->_setSupports(arg,supports_in); }
3678template<
class Scalar>
3680 EOutArgs_hess_f_xp arg,
int l,
bool supports_in
3682{ this->_setSupports(arg,l,supports_in); }
3684template<
class Scalar>
3686 EOutArgs_hess_f_pp arg,
int l1,
int l2,
bool supports_in
3688{ this->_setSupports(arg,l1,l2,supports_in); }
3690template<
class Scalar>
3692 EOutArgs_hess_g_xx arg,
int j,
bool supports_in
3694{ this->_setSupports(arg,j,supports_in); }
3696template<
class Scalar>
3698 EOutArgs_hess_g_xp arg,
int j,
int l,
bool supports_in
3700{ this->_setSupports(arg,j,l,supports_in); }
3702template<
class Scalar>
3704 EOutArgs_hess_g_pp arg,
int j,
int l1,
int l2,
bool supports_in
3706{ this->_setSupports(arg,j,l1,l2,supports_in); }
3708template<
class Scalar>
3710 EOutArgs_H_xx arg,
bool supports_in
3712{ this->_setSupports(arg,supports_in); }
3714template<
class Scalar>
3716 EOutArgs_H_xp arg,
int l,
bool supports_in
3718{ this->_setSupports(arg,l,supports_in); }
3720template<
class Scalar>
3722 EOutArgs_H_pp arg,
int l1,
int l2,
bool supports_in
3724{ this->_setSupports(arg,l1,l2,supports_in); }
3729template<
class Scalar>
3733{ this->_setSupports(arg,j,supports_in); }
3736template<
class Scalar>
3740{ this->_setSupports(arg,l,supports_in); }
3743template<
class Scalar>
3747{ this->_setSupports(arg,j,supports_in); }
3750template<
class Scalar>
3754{ this->_setSupports(arg,j,supports_in); }
3757template<
class Scalar>
3759 EOutArgsDgDp_mp arg,
int j,
int l,
const DerivativeSupport& supports_in
3761{ this->_setSupports(arg,j,l,supports_in); }
3764template<
class Scalar>
3768{ this->_set_W_properties(properties); }
3771template<
class Scalar>
3775{ this->_set_DfDp_properties(l,properties); }
3778template<
class Scalar>
3782{ this->_set_DgDx_dot_properties(j,properties); }
3785template<
class Scalar>
3789{ this->_set_DgDx_properties(j,properties); }
3792template<
class Scalar>
3796{ this->_set_DgDp_properties(j,l,properties); }
3799template<
class Scalar>
3803{ this->_set_DfDp_mp_properties(l,properties); }
3806template<
class Scalar>
3808 int j,
const DerivativeProperties &properties
3810{ this->_set_DgDx_dot_mp_properties(j,properties); }
3813template<
class Scalar>
3814void ModelEvaluatorBase::OutArgsSetup<Scalar>::set_DgDx_mp_properties(
3815 int j,
const DerivativeProperties &properties
3817{ this->_set_DgDx_mp_properties(j,properties); }
3820template<
class Scalar>
3821void ModelEvaluatorBase::OutArgsSetup<Scalar>::set_DgDp_mp_properties(
3822 int j,
int l,
const DerivativeProperties &properties
3824{ this->_set_DgDp_mp_properties(j,l,properties); }
3827template<
class Scalar>
3831{ this->_setSupports(inputOutArgs); }
3834template<
class Scalar>
3838{ this->_setUnsupportsAndRelated(arg); }
3841template<
class Scalar>
3845{ this->_setUnsupportsAndRelated(arg); }
3848#ifdef Thyra_BUILD_HESSIAN_SUPPORT
3849template<
class Scalar>
3853{ this->_setHessianSupports(supports); }
3867#define THYRA_MODEL_EVALUATOR_BASE_INSTANT(SCALAR) \
3869 template class ModelEvaluatorBase::InArgs<SCALAR >; \
3871 template std::string \
3872 ModelEvaluatorBase::Derivative<SCALAR >::description() const; \
3875 void ModelEvaluatorBase::Derivative<SCALAR >::describe( \
3876 Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel \
3879 template class ModelEvaluatorBase::OutArgs<SCALAR >; \
3881 template class ModelEvaluatorBase::InArgsSetup<SCALAR >; \
3883 template class ModelEvaluatorBase::OutArgsSetup<SCALAR >;