Skip to content

Commit

Permalink
Merge Pull Request #8601 from rppawlo/Trilinos/loca-constraints
Browse files Browse the repository at this point in the history
Automatically Merged using Trilinos Pull Request AutoTester
PR Title: LOCA: Update householder constraints for case with model evaluator decorator
PR Author: rppawlo
  • Loading branch information
trilinos-autotester authored Jan 19, 2021
2 parents a8ca635 + 28d4234 commit deeb82f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include "Thyra_ModelEvaluator.hpp"
#include "Thyra_TpetraThyraWrappers.hpp"
#include "Thyra_VectorStdOps.hpp"
#include "Thyra_DefaultScaledAdjointLinearOp.hpp"
#include "NOX_Thyra_MultiVector.H"
#include "NOX_Thyra_Vector.H"
#include "NOX_TpetraTypedefs.hpp"
Expand Down Expand Up @@ -71,7 +72,12 @@ namespace LOCA {
i.resize(me_p_.size());
for (size_t j=0; j < numResponses; ++j) {
me_g_[j] = ::Thyra::createMember(*model->get_g_space(meResponseIndices_[j]),"g_j");
me_dgdx_[j] = Teuchos::rcp_dynamic_cast<::Thyra::MultiVectorBase<double>>(model->create_DgDx_op(meResponseIndices_[j]),true);
me_dgdx_[j] = Teuchos::rcp_dynamic_cast<::Thyra::MultiVectorBase<double>>(model->create_DgDx_op(meResponseIndices_[j]),false);
if (me_dgdx_[j].is_null()) {
// It might be wrapped in an Adjoint linear op for the transpose.
auto ptr = Teuchos::rcp_dynamic_cast<::Thyra::DefaultScaledAdjointLinearOp<double>>(model->create_DgDx_op(meResponseIndices_[j]),true);
me_dgdx_[j] = Teuchos::rcp_dynamic_cast<::Thyra::MultiVectorBase<double>>(ptr->getNonconstOp(),true);
}
for (size_t l=0; l < me_p_.size(); ++l)
me_dgdp_[j][l] = Teuchos::rcp_dynamic_cast<::Thyra::MultiVectorBase<double>>(model->create_DgDp_op(meResponseIndices_[j],
meParameterIndices_[l]),
Expand Down Expand Up @@ -194,7 +200,7 @@ namespace LOCA {

auto outArgs = model_->createOutArgs();
for (size_t i=0; i < me_dgdx_.size(); ++i)
outArgs.set_DgDx(meResponseIndices_[i],::Thyra::ModelEvaluatorBase::Derivative<NOX::Scalar>(me_dgdx_[i]));
outArgs.set_DgDx(meResponseIndices_[i],::Thyra::ModelEvaluatorBase::Derivative<NOX::Scalar>(me_dgdx_[i],::Thyra::ModelEvaluatorBase::DERIV_MV_GRADIENT_FORM));

model_->evalModel(inArgs,outArgs);

Expand Down
4 changes: 2 additions & 2 deletions packages/nox/test/tpetra/ME_Tpetra_1DFEM_def.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,11 @@ EvaluatorTpetra1DFEM(const Teuchos::RCP<const Teuchos::Comm<int> >& comm,
outArgs.setSupports(MEB::OUT_ARG_W_prec);
outArgs.set_Np_Ng(Np_,Ng_);
outArgs.setSupports(MEB::OUT_ARG_DfDp,2,MEB::DerivativeSupport(MEB::DERIV_MV_JACOBIAN_FORM));
outArgs.setSupports(MEB::OUT_ARG_DgDx,4,MEB::DerivativeSupport(MEB::DERIV_MV_JACOBIAN_FORM));
outArgs.setSupports(MEB::OUT_ARG_DgDx,4,MEB::DerivativeSupport(MEB::DERIV_MV_GRADIENT_FORM));
outArgs.setSupports(MEB::OUT_ARG_DgDp,4,2,MEB::DerivativeSupport(MEB::DERIV_MV_JACOBIAN_FORM));

outArgs.setSupports(MEB::OUT_ARG_DfDp,4,MEB::DerivativeSupport(MEB::DERIV_MV_JACOBIAN_FORM));
outArgs.setSupports(MEB::OUT_ARG_DgDx,6,MEB::DerivativeSupport(MEB::DERIV_MV_JACOBIAN_FORM));
outArgs.setSupports(MEB::OUT_ARG_DgDx,6,MEB::DerivativeSupport(MEB::DERIV_MV_GRADIENT_FORM));
outArgs.setSupports(MEB::OUT_ARG_DgDp,4,4,MEB::DerivativeSupport(MEB::DERIV_MV_JACOBIAN_FORM));
outArgs.setSupports(MEB::OUT_ARG_DgDp,6,2,MEB::DerivativeSupport(MEB::DERIV_MV_JACOBIAN_FORM));
outArgs.setSupports(MEB::OUT_ARG_DgDp,6,4,MEB::DerivativeSupport(MEB::DERIV_MV_JACOBIAN_FORM));
Expand Down
4 changes: 2 additions & 2 deletions packages/nox/test/tpetra/tTpetra_1DFEM_ME_UnitTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ TEUCHOS_UNIT_TEST(NOX_Tpetra_1DFEM, Responses_g4_p2)

outArgs.set_g(4,::Thyra::ModelEvaluatorBase::Evaluation<::Thyra::VectorBase<Scalar>>(g_thyra));
outArgs.set_DfDp(2,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(DfDp_thyra));
outArgs.set_DgDx(4,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(DgDx_thyra));
outArgs.set_DgDx(4,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(DgDx_thyra,Thyra::ModelEvaluatorBase::DERIV_MV_GRADIENT_FORM));
outArgs.set_DgDp(4,2,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(Dg4Dp2_thyra));
outArgs.set_DgDp(4,4,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(Dg4Dp4_thyra));

Expand Down Expand Up @@ -206,7 +206,7 @@ TEUCHOS_UNIT_TEST(NOX_Tpetra_1DFEM, Responses_g6_p4)

outArgs.set_g(6,::Thyra::ModelEvaluatorBase::Evaluation<::Thyra::VectorBase<Scalar>>(g_thyra));
outArgs.set_DfDp(4,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(DfDp4_thyra));
outArgs.set_DgDx(6,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(DgDx_thyra));
outArgs.set_DgDx(6,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(DgDx_thyra,Thyra::ModelEvaluatorBase::DERIV_MV_GRADIENT_FORM));
outArgs.set_DgDp(6,2,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(Dg6Dp2_thyra));
outArgs.set_DgDp(6,4,::Thyra::ModelEvaluatorBase::Derivative<Scalar>(Dg6Dp4_thyra));

Expand Down

0 comments on commit deeb82f

Please sign in to comment.