mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user