Enable user control of linear solver for full and elliptic system.

This is done by using parameter subgroups 'cpr_elliptic' and 'cpr_full'.
If groups are not present, parent (root) group will be queried.
This commit is contained in:
Atgeirr Flø Rasmussen 2014-05-12 17:12:04 +02:00
parent 54c07f3d0c
commit 3e41bf11e9

View File

@ -22,7 +22,7 @@
#include <opm/autodiff/NewtonIterationBlackoilCPR.hpp>
#include <opm/autodiff/AutoDiffHelpers.hpp>
#include <opm/core/utility/ErrorMacros.hpp>
#include <opm/core/linalg/LinearSolverUmfpack.hpp>
#include <opm/core/linalg/LinearSolverFactory.hpp>
namespace Opm
{
@ -31,7 +31,10 @@ namespace Opm
/// \param[in] linsolver linear solver to use
NewtonIterationBlackoilCPR::NewtonIterationBlackoilCPR(const parameter::ParameterGroup& param)
{
linsolver_full_.reset(new LinearSolverUmfpack);
parameter::ParameterGroup cpr_elliptic = param.getDefault("cpr_elliptic", param);
linsolver_elliptic_.reset(new LinearSolverFactory(cpr_elliptic));
parameter::ParameterGroup cpr_full = param.getDefault("cpr_full", param);
linsolver_full_.reset(new LinearSolverFactory(cpr_full));
}
/// Solve the linear system Ax = b, with A being the