diff --git a/packages/ifpack2/src/Ifpack2_Details_Chebyshev_def.hpp b/packages/ifpack2/src/Ifpack2_Details_Chebyshev_def.hpp index a47b343d668a..5a9ca35f0ba7 100644 --- a/packages/ifpack2/src/Ifpack2_Details_Chebyshev_def.hpp +++ b/packages/ifpack2/src/Ifpack2_Details_Chebyshev_def.hpp @@ -654,7 +654,7 @@ setParameters (Teuchos::ParameterList& plist) minDiagVal_ = minDiagVal; numIters_ = numIters; eigMaxIters_ = eigMaxIters; - eigNormalizationFreq_ = eigNormalizationFreq_; + eigNormalizationFreq_ = eigNormalizationFreq; zeroStartingSolution_ = zeroStartingSolution; assumeMatrixUnchanged_ = assumeMatrixUnchanged; textbookAlgorithm_ = textbookAlgorithm; diff --git a/packages/piro/src/Piro_NOXSolver_Def.hpp b/packages/piro/src/Piro_NOXSolver_Def.hpp index 347bf95c4a11..d4c6f8e52740 100644 --- a/packages/piro/src/Piro_NOXSolver_Def.hpp +++ b/packages/piro/src/Piro_NOXSolver_Def.hpp @@ -202,7 +202,19 @@ void Piro::NOXSolver::evalModelImpl( modelInArgs.set_x(finalSolution); this->evalConvergedModelResponsesAndSensitivities(modelInArgs, outArgs); - this->evalReducedHessian(modelInArgs, outArgs); + + bool computeReducedHessian = false; + for (int g_index=0; g_indexnum_g(); ++g_index) { + for (int p_index=0; p_indexnum_p(); ++p_index) + if (outArgs.supports(Thyra::ModelEvaluatorBase::OUT_ARG_hess_vec_prod_g_pp, g_index, p_index, p_index)) + if(Teuchos::nonnull(outArgs.get_hess_vec_prod_g_pp(g_index, p_index, p_index))) { + computeReducedHessian = true; + break; + } + } + + if(computeReducedHessian == true) + this->evalReducedHessian(modelInArgs, outArgs); if (Teuchos::nonnull(this->observer) && observeFinalSolution) { this->observer->observeSolution(*finalSolution);