diff --git a/opm/autodiff/NewtonIterationBlackoilCPR.cpp b/opm/autodiff/NewtonIterationBlackoilCPR.cpp index 4d4409c13..0b89b894e 100644 --- a/opm/autodiff/NewtonIterationBlackoilCPR.cpp +++ b/opm/autodiff/NewtonIterationBlackoilCPR.cpp @@ -62,7 +62,8 @@ namespace Opm linear_solver_reduction_( param.getDefault("linear_solver_reduction", 1e-2 ) ), linear_solver_maxiter_( param.getDefault("linear_solver_maxiter", 50 ) ), linear_solver_restart_( param.getDefault("linear_solver_restart", 40 ) ), - linear_solver_verbosity_( param.getDefault("linear_solver_verbosity", 0 )) + linear_solver_verbosity_( param.getDefault("linear_solver_verbosity", 0 )), + ignoreConvergenceFailure_(param.getDefault("linear_solver_ignoreconvergencefailure", ignoreConvergenceFailure_)) { } @@ -167,7 +168,7 @@ namespace Opm iterations_ = result.iterations; // Check for failure of linear solver. - if (!result.converged) { + if (!result.converged && !ignoreConvergenceFailure_) { OPM_THROW(LinearSolverProblem, "Convergence failure for linear solver."); } diff --git a/opm/autodiff/NewtonIterationBlackoilCPR.hpp b/opm/autodiff/NewtonIterationBlackoilCPR.hpp index 2b2d6bde5..b6b069ed0 100644 --- a/opm/autodiff/NewtonIterationBlackoilCPR.hpp +++ b/opm/autodiff/NewtonIterationBlackoilCPR.hpp @@ -128,6 +128,7 @@ namespace Opm const int linear_solver_maxiter_; const int linear_solver_restart_; const int linear_solver_verbosity_; + const bool ignoreConvergenceFailure_; }; } // namespace Opm