diff --git a/opm/core/linalg/LinearSolverFactory.cpp b/opm/core/linalg/LinearSolverFactory.cpp index 6943b88cd..9b6d89095 100644 --- a/opm/core/linalg/LinearSolverFactory.cpp +++ b/opm/core/linalg/LinearSolverFactory.cpp @@ -55,20 +55,29 @@ namespace Opm LinearSolverFactory::LinearSolverFactory(const parameter::ParameterGroup& param) { - const std::string ls = param.getDefault("linsolver", "umfpack"); + const std::string ls = + param.getDefault("linsolver", "umfpack"); + if (ls == "umfpack") { #if HAVE_SUITESPARSE_UMFPACK_H solver_.reset(new LinearSolverUmfpack); -#else - THROW("Linear solver " << ls <<" is not available."); #endif - } else if (ls == "istl") { + } + + else if (ls == "istl") { #if HAVE_DUNE_ISTL solver_.reset(new LinearSolverIstl(param)); -#else - THROW("Linear solver " << ls <<" is not available."); #endif } + + else { + THROW("Linear solver " << ls << " is unknown."); + } + + if (! solver_) { + THROW("Linear solver " << ls << " is not enabled in " + "this configuration."); + } }