diff --git a/opm/simulators/linalg/FlexibleSolver_impl.hpp b/opm/simulators/linalg/FlexibleSolver_impl.hpp index 46a5aa922..4553f88f3 100644 --- a/opm/simulators/linalg/FlexibleSolver_impl.hpp +++ b/opm/simulators/linalg/FlexibleSolver_impl.hpp @@ -148,33 +148,33 @@ namespace Dune const int verbosity = is_iorank ? prm.get("verbosity", 0) : 0; const std::string solver_type = prm.get("solver", "bicgstab"); if (solver_type == "bicgstab") { - linsolver_.reset(new Dune::BiCGSTABSolver(*linearoperator_for_solver_, - *scalarproduct_, - *preconditioner_, - tol, // desired residual reduction factor - maxiter, // maximum number of iterations - verbosity)); + linsolver_ = std::make_shared>(*linearoperator_for_solver_, + *scalarproduct_, + *preconditioner_, + tol, // desired residual reduction factor + maxiter, // maximum number of iterations + verbosity); } else if (solver_type == "loopsolver") { - linsolver_.reset(new Dune::LoopSolver(*linearoperator_for_solver_, - *scalarproduct_, - *preconditioner_, - tol, // desired residual reduction factor - maxiter, // maximum number of iterations - verbosity)); - } else if (solver_type == "gmres") { - int restart = prm.get("restart", 15); - linsolver_.reset(new Dune::RestartedGMResSolver(*linearoperator_for_solver_, + linsolver_ = std::make_shared>(*linearoperator_for_solver_, *scalarproduct_, *preconditioner_, - tol, - restart, // desired residual reduction factor + tol, // desired residual reduction factor maxiter, // maximum number of iterations - verbosity)); + verbosity); + } else if (solver_type == "gmres") { + int restart = prm.get("restart", 15); + linsolver_ = std::make_shared>(*linearoperator_for_solver_, + *scalarproduct_, + *preconditioner_, + tol, + restart, // desired residual reduction factor + maxiter, // maximum number of iterations + verbosity); #if HAVE_SUITESPARSE_UMFPACK } else if (solver_type == "umfpack") { bool dummy = false; using MatrixType = std::remove_const_tgetmat())>>; - linsolver_.reset(new Dune::UMFPack(linearoperator_for_solver_->getmat(), verbosity, dummy)); + linsolver_ = std::make_shared>(linearoperator_for_solver_->getmat(), verbosity, dummy); #endif } else { OPM_THROW(std::invalid_argument,