From e6da69575abad7f0f74b83ccf6c552d1cb522792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Wed, 15 Jun 2016 14:18:11 +0200 Subject: [PATCH 1/2] Set default solver depending on configuration. --- opm/core/linalg/LinearSolverFactory.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/opm/core/linalg/LinearSolverFactory.cpp b/opm/core/linalg/LinearSolverFactory.cpp index d2bd3120..6cea6924 100644 --- a/opm/core/linalg/LinearSolverFactory.cpp +++ b/opm/core/linalg/LinearSolverFactory.cpp @@ -61,8 +61,18 @@ namespace Opm LinearSolverFactory::LinearSolverFactory(const parameter::ParameterGroup& param) { +#if HAVE_SUITESPARSE_UMFPACK_H + std::string default_solver = "umfpack"; +#elif HAVE_DUNE_ISTL + std::string default_solver = "istl"; +#elif HAVE_PETSC + std::string default_solver = "petsc"; +#else + OPM_THROW(std::runtime_error, "No linear solver available, you must have UMFPACK , dune-istl or Petsc installed to use LinearSolverFactory."); +#endif + const std::string ls = - param.getDefault("linsolver", "umfpack"); + param.getDefault("linsolver", default_solver); if (ls == "umfpack") { #if HAVE_SUITESPARSE_UMFPACK_H From 8b2ebc690b52322cdddb32351a4ac1a6fc178e5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Wed, 15 Jun 2016 15:01:45 +0200 Subject: [PATCH 2/2] Address review comments. --- opm/core/linalg/LinearSolverFactory.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/opm/core/linalg/LinearSolverFactory.cpp b/opm/core/linalg/LinearSolverFactory.cpp index 6cea6924..f8eca83d 100644 --- a/opm/core/linalg/LinearSolverFactory.cpp +++ b/opm/core/linalg/LinearSolverFactory.cpp @@ -68,11 +68,12 @@ namespace Opm #elif HAVE_PETSC std::string default_solver = "petsc"; #else + std::string default_solver = "no_solver_available"; OPM_THROW(std::runtime_error, "No linear solver available, you must have UMFPACK , dune-istl or Petsc installed to use LinearSolverFactory."); #endif const std::string ls = - param.getDefault("linsolver", default_solver); + param.getDefault("linsolver", default_solver); if (ls == "umfpack") { #if HAVE_SUITESPARSE_UMFPACK_H