mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-01-27 16:16:28 -06:00
changed: move the AmgCoarsenTarget parameter to Opm::Parameters
This commit is contained in:
parent
f3af89447b
commit
4e0cdd289d
@ -33,6 +33,9 @@
|
|||||||
|
|
||||||
namespace Opm::Parameters {
|
namespace Opm::Parameters {
|
||||||
|
|
||||||
|
template<class TypeTag, class MyTypeTag>
|
||||||
|
struct AmgCoarsenTarget { using type = Properties::UndefinedProperty; };
|
||||||
|
|
||||||
//! number of iterations between solver restarts for the GMRES solver
|
//! number of iterations between solver restarts for the GMRES solver
|
||||||
template<class TypeTag, class MyTypeTag>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct GMResRestart { using type = Properties::UndefinedProperty; };
|
struct GMResRestart { using type = Properties::UndefinedProperty; };
|
||||||
|
@ -53,9 +53,6 @@ struct SparseMatrixAdapter { using type = UndefinedProperty; };
|
|||||||
template<class TypeTag, class MyTypeTag>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct GlobalEqVector { using type = UndefinedProperty; };
|
struct GlobalEqVector { using type = UndefinedProperty; };
|
||||||
|
|
||||||
template<class TypeTag, class MyTypeTag>
|
|
||||||
struct AmgCoarsenTarget { using type = UndefinedProperty; };
|
|
||||||
|
|
||||||
template<class TypeTag, class MyTypeTag>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct LinearSolverWrapper { using type = UndefinedProperty; };
|
struct LinearSolverWrapper { using type = UndefinedProperty; };
|
||||||
|
|
||||||
|
@ -59,12 +59,6 @@ struct ParallelAmgLinearSolver
|
|||||||
|
|
||||||
} // end namespace TTag
|
} // end namespace TTag
|
||||||
|
|
||||||
//! The target number of DOFs per processor for the parallel algebraic
|
|
||||||
//! multi-grid solver
|
|
||||||
template<class TypeTag>
|
|
||||||
struct AmgCoarsenTarget<TypeTag, TTag::ParallelAmgLinearSolver>
|
|
||||||
{ static constexpr int value = 5000; };
|
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct LinearSolverBackend<TypeTag, TTag::ParallelAmgLinearSolver>
|
struct LinearSolverBackend<TypeTag, TTag::ParallelAmgLinearSolver>
|
||||||
{ using type = Opm::Linear::ParallelAmgBackend<TypeTag>; };
|
{ using type = Opm::Linear::ParallelAmgBackend<TypeTag>; };
|
||||||
@ -73,6 +67,12 @@ struct LinearSolverBackend<TypeTag, TTag::ParallelAmgLinearSolver>
|
|||||||
|
|
||||||
namespace Opm::Parameters {
|
namespace Opm::Parameters {
|
||||||
|
|
||||||
|
//! The target number of DOFs per processor for the parallel algebraic
|
||||||
|
//! multi-grid solver
|
||||||
|
template<class TypeTag>
|
||||||
|
struct AmgCoarsenTarget<TypeTag, Properties::TTag::ParallelAmgLinearSolver>
|
||||||
|
{ static constexpr int value = 5000; };
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct LinearSolverMaxError<TypeTag, Properties::TTag::ParallelAmgLinearSolver>
|
struct LinearSolverMaxError<TypeTag, Properties::TTag::ParallelAmgLinearSolver>
|
||||||
{
|
{
|
||||||
@ -163,7 +163,7 @@ public:
|
|||||||
Parameters::registerParam<TypeTag, Parameters::LinearSolverMaxError>
|
Parameters::registerParam<TypeTag, Parameters::LinearSolverMaxError>
|
||||||
("The maximum residual error which the linear solver tolerates "
|
("The maximum residual error which the linear solver tolerates "
|
||||||
"without giving up");
|
"without giving up");
|
||||||
Parameters::registerParam<TypeTag, Properties::AmgCoarsenTarget>
|
Parameters::registerParam<TypeTag, Parameters::AmgCoarsenTarget>
|
||||||
("The coarsening target for the agglomerations of "
|
("The coarsening target for the agglomerations of "
|
||||||
"the AMG preconditioner");
|
"the AMG preconditioner");
|
||||||
}
|
}
|
||||||
@ -299,7 +299,7 @@ protected:
|
|||||||
// Dune::Amg::FirstDiagonal>>
|
// Dune::Amg::FirstDiagonal>>
|
||||||
using CoarsenCriterion = Dune::Amg::
|
using CoarsenCriterion = Dune::Amg::
|
||||||
CoarsenCriterion<Dune::Amg::SymmetricCriterion<IstlMatrix, Dune::Amg::FrobeniusNorm> >;
|
CoarsenCriterion<Dune::Amg::SymmetricCriterion<IstlMatrix, Dune::Amg::FrobeniusNorm> >;
|
||||||
int coarsenTarget = Parameters::get<TypeTag, Properties::AmgCoarsenTarget>();
|
int coarsenTarget = Parameters::get<TypeTag, Parameters::AmgCoarsenTarget>();
|
||||||
CoarsenCriterion coarsenCriterion(/*maxLevel=*/15, coarsenTarget);
|
CoarsenCriterion coarsenCriterion(/*maxLevel=*/15, coarsenTarget);
|
||||||
coarsenCriterion.setDefaultValuesAnisotropic(GridView::dimension,
|
coarsenCriterion.setDefaultValuesAnisotropic(GridView::dimension,
|
||||||
/*aggregateSizePerDim=*/3);
|
/*aggregateSizePerDim=*/3);
|
||||||
|
Loading…
Reference in New Issue
Block a user