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

View File

@ -39,6 +39,10 @@ namespace Opm::Parameters {
template<class TypeTag, class MyTypeTag> template<class TypeTag, class MyTypeTag>
struct LinearSolverAbsTolerance { using type = Properties::UndefinedProperty; }; 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. * \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> template<class TypeTag, class MyTypeTag>
struct LinearSolverScalar { using type = UndefinedProperty; }; 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 //! The order of the sequential preconditioner
template<class TypeTag, class MyTypeTag> template<class TypeTag, class MyTypeTag>
struct PreconditionerOrder { using type = UndefinedProperty; }; struct PreconditionerOrder { using type = UndefinedProperty; };

View File

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

View File

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

View File

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