mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
changed: move the LinearSolverMaxError parameter to Opm::Parameters
This commit is contained in:
parent
5cab2e668a
commit
b23f0289e3
@ -39,6 +39,9 @@ namespace Opm::Parameters {
|
||||
template<class TypeTag, class MyTypeTag>
|
||||
struct LinearSolverAbsTolerance { using type = Properties::UndefinedProperty; };
|
||||
|
||||
template<class TypeTag, class MyTypeTag>
|
||||
struct LinearSolverMaxError { using type = Properties::UndefinedProperty; };
|
||||
|
||||
//! Maximum number of iterations eyecuted by the linear solver
|
||||
template<class TypeTag, class MyTypeTag>
|
||||
struct LinearSolverMaxIterations { using type = Properties::UndefinedProperty; };
|
||||
|
@ -64,9 +64,6 @@ struct GlobalEqVector { using type = UndefinedProperty; };
|
||||
template<class TypeTag, class MyTypeTag>
|
||||
struct AmgCoarsenTarget { using type = UndefinedProperty; };
|
||||
|
||||
template<class TypeTag, class MyTypeTag>
|
||||
struct LinearSolverMaxError { using type = UndefinedProperty; };
|
||||
|
||||
template<class TypeTag, class MyTypeTag>
|
||||
struct LinearSolverWrapper { using type = UndefinedProperty; };
|
||||
|
||||
|
@ -43,28 +43,27 @@
|
||||
#include <utility>
|
||||
|
||||
namespace Opm::Linear {
|
||||
|
||||
template <class TypeTag>
|
||||
class ParallelAmgBackend;
|
||||
|
||||
} // namespace Opm::Linear
|
||||
|
||||
namespace Opm::Properties {
|
||||
|
||||
// Create new type tags
|
||||
namespace TTag {
|
||||
struct ParallelAmgLinearSolver { using InheritsFrom = std::tuple<ParallelBaseLinearSolver>; };
|
||||
|
||||
struct ParallelAmgLinearSolver
|
||||
{ using InheritsFrom = std::tuple<ParallelBaseLinearSolver>; };
|
||||
|
||||
} // 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>
|
||||
struct LinearSolverMaxError<TypeTag, TTag::ParallelAmgLinearSolver>
|
||||
{
|
||||
using type = GetPropType<TypeTag, Scalar>;
|
||||
static constexpr type value = 1e7;
|
||||
};
|
||||
struct AmgCoarsenTarget<TypeTag, TTag::ParallelAmgLinearSolver>
|
||||
{ static constexpr int value = 5000; };
|
||||
|
||||
template<class TypeTag>
|
||||
struct LinearSolverBackend<TypeTag, TTag::ParallelAmgLinearSolver>
|
||||
@ -72,8 +71,19 @@ struct LinearSolverBackend<TypeTag, TTag::ParallelAmgLinearSolver>
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
namespace Opm {
|
||||
namespace Linear {
|
||||
namespace Opm::Parameters {
|
||||
|
||||
template<class TypeTag>
|
||||
struct LinearSolverMaxError<TypeTag, Properties::TTag::ParallelAmgLinearSolver>
|
||||
{
|
||||
using type = GetPropType<TypeTag, Properties::Scalar>;
|
||||
static constexpr type value = 1e7;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
namespace Opm::Linear {
|
||||
|
||||
/*!
|
||||
* \ingroup Linear
|
||||
*
|
||||
@ -150,7 +160,7 @@ public:
|
||||
{
|
||||
ParentType::registerParameters();
|
||||
|
||||
Parameters::registerParam<TypeTag, Properties::LinearSolverMaxError>
|
||||
Parameters::registerParam<TypeTag, Parameters::LinearSolverMaxError>
|
||||
("The maximum residual error which the linear solver tolerates "
|
||||
"without giving up");
|
||||
Parameters::registerParam<TypeTag, Properties::AmgCoarsenTarget>
|
||||
@ -201,7 +211,7 @@ protected:
|
||||
convCrit_.reset(new CCC(gridView.comm(),
|
||||
/*residualReductionTolerance=*/linearSolverTolerance,
|
||||
/*absoluteResidualTolerance=*/linearSolverAbsTolerance,
|
||||
Parameters::get<TypeTag, Properties::LinearSolverMaxError>()));
|
||||
Parameters::get<TypeTag, Parameters::LinearSolverMaxError>()));
|
||||
|
||||
auto bicgstabSolver =
|
||||
std::make_shared<RawLinearSolver>(parPreCond, *convCrit_, parScalarProduct);
|
||||
@ -323,7 +333,6 @@ protected:
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace Linear
|
||||
} // namespace Opm
|
||||
} // namespace Opm::Linear
|
||||
|
||||
#endif
|
||||
|
@ -37,32 +37,41 @@
|
||||
#include <memory>
|
||||
|
||||
namespace Opm::Linear {
|
||||
|
||||
template <class TypeTag>
|
||||
class ParallelBiCGStabSolverBackend;
|
||||
|
||||
} // namespace Opm::Linear
|
||||
|
||||
namespace Opm::Properties {
|
||||
|
||||
// Create new type tags
|
||||
namespace TTag {
|
||||
struct ParallelBiCGStabLinearSolver { using InheritsFrom = std::tuple<ParallelBaseLinearSolver>; };
|
||||
|
||||
struct ParallelBiCGStabLinearSolver
|
||||
{ using InheritsFrom = std::tuple<ParallelBaseLinearSolver>; };
|
||||
|
||||
} // end namespace TTag
|
||||
|
||||
template<class TypeTag>
|
||||
struct LinearSolverBackend<TypeTag, TTag::ParallelBiCGStabLinearSolver>
|
||||
{ using type = Opm::Linear::ParallelBiCGStabSolverBackend<TypeTag>; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
namespace Opm::Parameters {
|
||||
|
||||
template<class TypeTag>
|
||||
struct LinearSolverMaxError<TypeTag, TTag::ParallelBiCGStabLinearSolver>
|
||||
struct LinearSolverMaxError<TypeTag, Properties::TTag::ParallelBiCGStabLinearSolver>
|
||||
{
|
||||
using type = GetPropType<TypeTag, Scalar>;
|
||||
using type = GetPropType<TypeTag, Properties::Scalar>;
|
||||
static constexpr type value = 1e7;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
}
|
||||
|
||||
namespace Opm::Linear {
|
||||
|
||||
namespace Opm {
|
||||
namespace Linear {
|
||||
/*!
|
||||
* \ingroup Linear
|
||||
*
|
||||
@ -122,7 +131,7 @@ public:
|
||||
{
|
||||
ParentType::registerParameters();
|
||||
|
||||
Parameters::registerParam<TypeTag, Properties::LinearSolverMaxError>
|
||||
Parameters::registerParam<TypeTag, Parameters::LinearSolverMaxError>
|
||||
("The maximum residual error which the linear solver tolerates"
|
||||
" without giving up");
|
||||
}
|
||||
@ -145,7 +154,7 @@ protected:
|
||||
convCrit_.reset(new CCC(gridView.comm(),
|
||||
/*residualReductionTolerance=*/linearSolverTolerance,
|
||||
/*absoluteResidualTolerance=*/linearSolverAbsTolerance,
|
||||
Parameters::get<TypeTag, Properties::LinearSolverMaxError>()));
|
||||
Parameters::get<TypeTag, Parameters::LinearSolverMaxError>()));
|
||||
|
||||
auto bicgstabSolver =
|
||||
std::make_shared<RawLinearSolver>(parPreCond, *convCrit_, parScalarProduct);
|
||||
@ -173,6 +182,6 @@ protected:
|
||||
std::unique_ptr<ConvergenceCriterion<OverlappingVector> > convCrit_;
|
||||
};
|
||||
|
||||
}} // namespace Linear, Opm
|
||||
} // namespace Opm::Linear
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user