Resort to support the usual parameters (as for flow_legacy)

These are solver_approach=cpr cpr_use_amg=(true|false), etc.
This commit is contained in:
Markus Blatt
2018-02-05 12:43:20 +01:00
parent c367382a59
commit e24d338ddc
5 changed files with 94 additions and 27 deletions

View File

@@ -25,6 +25,7 @@
#ifndef OPM_NEWTONITERATIONBLACKOILINTERLEAVED_HEADER_INCLUDED
#define OPM_NEWTONITERATIONBLACKOILINTERLEAVED_HEADER_INCLUDED
#include <opm/autodiff/CPRPreconditioner.hpp>
#include <opm/autodiff/NewtonIterationBlackoilInterface.hpp>
#include <opm/common/utility/parameters/ParameterGroup.hpp>
@@ -35,6 +36,7 @@ namespace Opm
{
/// This class carries all parameters for the NewtonIterationBlackoilInterleaved class
struct NewtonIterationBlackoilInterleavedParameters
: public CPRParameter
{
double linear_solver_reduction_;
double ilu_relaxation_;
@@ -46,11 +48,12 @@ namespace Opm
bool require_full_sparsity_pattern_;
bool ignoreConvergenceFailure_;
bool linear_solver_use_amg_;
bool amg_blackoil_system_;
bool use_cpr_;
NewtonIterationBlackoilInterleavedParameters() { reset(); }
// read values from parameter class
NewtonIterationBlackoilInterleavedParameters( const ParameterGroup& param )
: CPRParameter(param)
{
// set default parameters
reset();
@@ -64,15 +67,18 @@ namespace Opm
require_full_sparsity_pattern_ = param.getDefault("require_full_sparsity_pattern", require_full_sparsity_pattern_);
ignoreConvergenceFailure_ = param.getDefault("linear_solver_ignoreconvergencefailure", ignoreConvergenceFailure_);
linear_solver_use_amg_ = param.getDefault("linear_solver_use_amg", linear_solver_use_amg_ );
amg_blackoil_system_ = param.getDefault("amg_blackoil_system", amg_blackoil_system_);
ilu_relaxation_ = param.getDefault("ilu_relaxation", ilu_relaxation_ );
ilu_fillin_level_ = param.getDefault("ilu_fillin_level", ilu_fillin_level_ );
// Check whether to use cpr approach
const std::string cprSolver = "cpr";
use_cpr_ = ( param.getDefault("solver_approach", std::string()) == cprSolver );
}
// set default values
void reset()
{
amg_blackoil_system_ = false;
use_cpr_ = false;
newton_use_gmres_ = false;
linear_solver_reduction_ = 1e-2;
linear_solver_maxiter_ = 150;