changed: move the LinearSolverMaxIterations parameter to Opm::Parameters

This commit is contained in:
Arne Morten Kvarving 2024-07-01 14:13:14 +02:00
parent 59f586189e
commit 0e06d6491b
6 changed files with 14 additions and 13 deletions

View File

@ -80,7 +80,7 @@ namespace Opm::Linear {
Preconditioner& parPreCond) \
{ \
Scalar tolerance = Parameters::get<TypeTag, Parameters::LinearSolverTolerance>(); \
int maxIter = Parameters::get<TypeTag, Properties::LinearSolverMaxIterations>(); \
int maxIter = Parameters::get<TypeTag, Parameters::LinearSolverMaxIterations>(); \
\
int verbosity = 0; \
if (parOperator.overlap().myRank() == 0) \
@ -135,7 +135,7 @@ public:
Preconditioner& parPreCond)
{
Scalar tolerance = Parameters::get<TypeTag, Parameters::LinearSolverTolerance>();
int maxIter = Parameters::get<TypeTag, Properties::LinearSolverMaxIterations>();
int maxIter = Parameters::get<TypeTag, Parameters::LinearSolverMaxIterations>();
int verbosity = 0;
if (parOperator.overlap().myRank() == 0)

View File

@ -39,6 +39,10 @@ namespace Opm::Parameters {
template<class TypeTag, class MyTypeTag>
struct LinearSolverAbsTolerance { using type = Properties::UndefinedProperty; };
//! Maximum number of iterations eyecuted by the linear solver
template<class TypeTag, class MyTypeTag>
struct LinearSolverMaxIterations { using type = Properties::UndefinedProperty; };
/*!
* \brief The size of the algebraic overlap of the linear solver.
*

View File

@ -45,10 +45,6 @@ struct PreconditionerWrapper { using type = UndefinedProperty; };
template<class TypeTag, class MyTypeTag>
struct LinearSolverScalar { using type = UndefinedProperty; };
//! Maximum number of iterations eyecuted by the linear solver
template<class TypeTag, class MyTypeTag>
struct LinearSolverMaxIterations { using type = UndefinedProperty; };
//! The order of the sequential preconditioner
template<class TypeTag, class MyTypeTag>
struct PreconditionerOrder { using type = UndefinedProperty; };

View File

@ -210,7 +210,7 @@ protected:
if (parOperator.overlap().myRank() == 0)
verbosity = Parameters::get<TypeTag, Parameters::LinearSolverVerbosity>();
bicgstabSolver->setVerbosity(verbosity);
bicgstabSolver->setMaxIterations(Parameters::get<TypeTag, Properties::LinearSolverMaxIterations>());
bicgstabSolver->setMaxIterations(Parameters::get<TypeTag, Parameters::LinearSolverMaxIterations>());
bicgstabSolver->setLinearOperator(&parOperator);
bicgstabSolver->setRhs(this->overlappingb_);

View File

@ -158,7 +158,7 @@ public:
("The maximum accepted error of the norm of the residual");
Parameters::registerParam<TypeTag, Parameters::LinearSolverOverlapSize>
("The size of the algebraic overlap for the linear solver");
Parameters::registerParam<TypeTag, Properties::LinearSolverMaxIterations>
Parameters::registerParam<TypeTag, Parameters::LinearSolverMaxIterations>
("The maximum number of iterations of the linear solver");
Parameters::registerParam<TypeTag, Parameters::LinearSolverVerbosity>
("The verbosity level of the linear solver");
@ -454,14 +454,15 @@ template<class TypeTag>
struct PreconditionerWrapper<TypeTag, TTag::ParallelBaseLinearSolver>
{ using type = Opm::Linear::PreconditionerWrapperILU<TypeTag>; };
//! set the default number of maximum iterations for the linear solver
template<class TypeTag>
struct LinearSolverMaxIterations<TypeTag, TTag::ParallelBaseLinearSolver> { static constexpr int value = 1000; };
} // namespace Opm::Properties
namespace Opm::Parameters {
//! set the default number of maximum iterations for the linear solver
template<class TypeTag>
struct LinearSolverMaxIterations<TypeTag, Properties::TTag::ParallelBaseLinearSolver>
{ static constexpr int value = 1000; };
//! set the default overlap size to 2
template<class TypeTag>
struct LinearSolverOverlapSize<TypeTag, Properties::TTag::ParallelBaseLinearSolver>

View File

@ -154,7 +154,7 @@ protected:
if (parOperator.overlap().myRank() == 0)
verbosity = Parameters::get<TypeTag, Parameters::LinearSolverVerbosity>();
bicgstabSolver->setVerbosity(verbosity);
bicgstabSolver->setMaxIterations(Parameters::get<TypeTag, Properties::LinearSolverMaxIterations>());
bicgstabSolver->setMaxIterations(Parameters::get<TypeTag, Parameters::LinearSolverMaxIterations>());
bicgstabSolver->setLinearOperator(&parOperator);
bicgstabSolver->setRhs(this->overlappingb_);