72 const ModelEvaluatorBase::OutArgs<Scalar>& outArgs)
const
74 typedef Thyra::ModelEvaluatorBase MEB;
75 MEB::OutArgs<Scalar> model_outArgs =
76 this->getUnderlyingModel()->createOutArgs();
78 if (model_outArgs.supports(MEB::OUT_ARG_W) &&
79 outArgs.get_W() != Teuchos::null) {
80 RCP<DefaultAdjointLinearOpWithSolve<Scalar> > adjoint_op =
81 Teuchos::rcp_dynamic_cast<DefaultAdjointLinearOpWithSolve<Scalar> >(
82 outArgs.get_W(),
true);
83 model_outArgs.set_W(adjoint_op->getNonconstOp());
86 if (model_outArgs.supports(MEB::OUT_ARG_W_op) &&
87 outArgs.get_W_op() != Teuchos::null) {
88 RCP<DefaultScaledAdjointLinearOp<Scalar> > adjoint_op =
89 Teuchos::rcp_dynamic_cast<DefaultScaledAdjointLinearOp<Scalar> >(
90 outArgs.get_W_op(),
true);
91 model_outArgs.set_W_op(adjoint_op->getNonconstOp());
94 if (model_outArgs.supports(MEB::OUT_ARG_W_prec) &&
95 outArgs.get_W_prec() != Teuchos::null) {
96 RCP<AdjointPreconditioner<Scalar> > adjoint_op =
97 Teuchos::rcp_dynamic_cast<AdjointPreconditioner<Scalar> >(
98 outArgs.get_W_prec(),
true);
99 model_outArgs.set_W_prec(adjoint_op->getNonconstPreconditioner());
102 this->getUnderlyingModel()->evalModel(inArgs, model_outArgs);