mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
[feature] make ILU relaxation and iteration a dynamic parameter.
This commit is contained in:
parent
a774128fb7
commit
e4f1bf9955
@ -295,8 +295,9 @@ namespace Opm
|
|||||||
template <class Operator>
|
template <class Operator>
|
||||||
std::unique_ptr<SeqPreconditioner> constructPrecond(Operator& opA, const Dune::Amg::SequentialInformation&) const
|
std::unique_ptr<SeqPreconditioner> constructPrecond(Operator& opA, const Dune::Amg::SequentialInformation&) const
|
||||||
{
|
{
|
||||||
const double relax = 0.9;
|
const double relax = parameters_.ilu_relaxation_;
|
||||||
std::unique_ptr<SeqPreconditioner> precond(new SeqPreconditioner(opA.getmat(), relax));
|
const int iteration = parameters_.ilu_iteration_;
|
||||||
|
std::unique_ptr<SeqPreconditioner> precond(new SeqPreconditioner(opA.getmat(), iteration, relax));
|
||||||
return precond;
|
return precond;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,7 +309,7 @@ namespace Opm
|
|||||||
constructPrecond(Operator& opA, const Comm& comm) const
|
constructPrecond(Operator& opA, const Comm& comm) const
|
||||||
{
|
{
|
||||||
typedef std::unique_ptr<ParPreconditioner> Pointer;
|
typedef std::unique_ptr<ParPreconditioner> Pointer;
|
||||||
const double relax = 0.9;
|
const double relax = parameters_.ilu_relaxation_;
|
||||||
return Pointer(new ParPreconditioner(opA.getmat(), comm, relax));
|
return Pointer(new ParPreconditioner(opA.getmat(), comm, relax));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -37,9 +37,11 @@ namespace Opm
|
|||||||
struct NewtonIterationBlackoilInterleavedParameters
|
struct NewtonIterationBlackoilInterleavedParameters
|
||||||
{
|
{
|
||||||
double linear_solver_reduction_;
|
double linear_solver_reduction_;
|
||||||
|
double ilu_relaxation_;
|
||||||
int linear_solver_maxiter_;
|
int linear_solver_maxiter_;
|
||||||
int linear_solver_restart_;
|
int linear_solver_restart_;
|
||||||
int linear_solver_verbosity_;
|
int linear_solver_verbosity_;
|
||||||
|
int ilu_iteration_;
|
||||||
bool newton_use_gmres_;
|
bool newton_use_gmres_;
|
||||||
bool require_full_sparsity_pattern_;
|
bool require_full_sparsity_pattern_;
|
||||||
bool ignoreConvergenceFailure_;
|
bool ignoreConvergenceFailure_;
|
||||||
@ -61,6 +63,8 @@ namespace Opm
|
|||||||
require_full_sparsity_pattern_ = param.getDefault("require_full_sparsity_pattern", require_full_sparsity_pattern_);
|
require_full_sparsity_pattern_ = param.getDefault("require_full_sparsity_pattern", require_full_sparsity_pattern_);
|
||||||
ignoreConvergenceFailure_ = param.getDefault("linear_solver_ignoreconvergencefailure", ignoreConvergenceFailure_);
|
ignoreConvergenceFailure_ = param.getDefault("linear_solver_ignoreconvergencefailure", ignoreConvergenceFailure_);
|
||||||
linear_solver_use_amg_ = param.getDefault("linear_solver_use_amg", linear_solver_use_amg_ );
|
linear_solver_use_amg_ = param.getDefault("linear_solver_use_amg", linear_solver_use_amg_ );
|
||||||
|
ilu_relaxation_ = param.getDefault("ilu_relaxation", ilu_relaxation_ );
|
||||||
|
ilu_iteration_ = param.getDefault("ilu_iteration", ilu_iteration_ );
|
||||||
}
|
}
|
||||||
|
|
||||||
// set default values
|
// set default values
|
||||||
@ -74,6 +78,8 @@ namespace Opm
|
|||||||
require_full_sparsity_pattern_ = false;
|
require_full_sparsity_pattern_ = false;
|
||||||
ignoreConvergenceFailure_ = false;
|
ignoreConvergenceFailure_ = false;
|
||||||
linear_solver_use_amg_ = false;
|
linear_solver_use_amg_ = false;
|
||||||
|
ilu_iteration_ = 0;
|
||||||
|
ilu_relaxation_ = 0.9;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user