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>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct LinearSolverAbsTolerance { using type = Properties::UndefinedProperty; };
|
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
|
//! Maximum number of iterations eyecuted by the linear solver
|
||||||
template<class TypeTag, class MyTypeTag>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct LinearSolverMaxIterations { using type = Properties::UndefinedProperty; };
|
struct LinearSolverMaxIterations { using type = Properties::UndefinedProperty; };
|
||||||
|
@ -64,9 +64,6 @@ struct GlobalEqVector { using type = UndefinedProperty; };
|
|||||||
template<class TypeTag, class MyTypeTag>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct AmgCoarsenTarget { using type = UndefinedProperty; };
|
struct AmgCoarsenTarget { using type = UndefinedProperty; };
|
||||||
|
|
||||||
template<class TypeTag, class MyTypeTag>
|
|
||||||
struct LinearSolverMaxError { using type = UndefinedProperty; };
|
|
||||||
|
|
||||||
template<class TypeTag, class MyTypeTag>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct LinearSolverWrapper { using type = UndefinedProperty; };
|
struct LinearSolverWrapper { using type = UndefinedProperty; };
|
||||||
|
|
||||||
|
@ -43,28 +43,27 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
namespace Opm::Linear {
|
namespace Opm::Linear {
|
||||||
|
|
||||||
template <class TypeTag>
|
template <class TypeTag>
|
||||||
class ParallelAmgBackend;
|
class ParallelAmgBackend;
|
||||||
|
|
||||||
} // namespace Opm::Linear
|
} // namespace Opm::Linear
|
||||||
|
|
||||||
namespace Opm::Properties {
|
namespace Opm::Properties {
|
||||||
|
|
||||||
// Create new type tags
|
// Create new type tags
|
||||||
namespace TTag {
|
namespace TTag {
|
||||||
struct ParallelAmgLinearSolver { using InheritsFrom = std::tuple<ParallelBaseLinearSolver>; };
|
|
||||||
|
struct ParallelAmgLinearSolver
|
||||||
|
{ using InheritsFrom = std::tuple<ParallelBaseLinearSolver>; };
|
||||||
|
|
||||||
} // end namespace TTag
|
} // end namespace TTag
|
||||||
|
|
||||||
//! The target number of DOFs per processor for the parallel algebraic
|
//! The target number of DOFs per processor for the parallel algebraic
|
||||||
//! multi-grid solver
|
//! multi-grid solver
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct AmgCoarsenTarget<TypeTag, TTag::ParallelAmgLinearSolver> { static constexpr int value = 5000; };
|
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;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct LinearSolverBackend<TypeTag, TTag::ParallelAmgLinearSolver>
|
struct LinearSolverBackend<TypeTag, TTag::ParallelAmgLinearSolver>
|
||||||
@ -72,8 +71,19 @@ struct LinearSolverBackend<TypeTag, TTag::ParallelAmgLinearSolver>
|
|||||||
|
|
||||||
} // namespace Opm::Properties
|
} // namespace Opm::Properties
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm::Parameters {
|
||||||
namespace Linear {
|
|
||||||
|
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
|
* \ingroup Linear
|
||||||
*
|
*
|
||||||
@ -150,7 +160,7 @@ public:
|
|||||||
{
|
{
|
||||||
ParentType::registerParameters();
|
ParentType::registerParameters();
|
||||||
|
|
||||||
Parameters::registerParam<TypeTag, Properties::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, Properties::AmgCoarsenTarget>
|
||||||
@ -201,7 +211,7 @@ protected:
|
|||||||
convCrit_.reset(new CCC(gridView.comm(),
|
convCrit_.reset(new CCC(gridView.comm(),
|
||||||
/*residualReductionTolerance=*/linearSolverTolerance,
|
/*residualReductionTolerance=*/linearSolverTolerance,
|
||||||
/*absoluteResidualTolerance=*/linearSolverAbsTolerance,
|
/*absoluteResidualTolerance=*/linearSolverAbsTolerance,
|
||||||
Parameters::get<TypeTag, Properties::LinearSolverMaxError>()));
|
Parameters::get<TypeTag, Parameters::LinearSolverMaxError>()));
|
||||||
|
|
||||||
auto bicgstabSolver =
|
auto bicgstabSolver =
|
||||||
std::make_shared<RawLinearSolver>(parPreCond, *convCrit_, parScalarProduct);
|
std::make_shared<RawLinearSolver>(parPreCond, *convCrit_, parScalarProduct);
|
||||||
@ -323,7 +333,6 @@ protected:
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Linear
|
} // namespace Opm::Linear
|
||||||
} // namespace Opm
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -37,32 +37,41 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
namespace Opm::Linear {
|
namespace Opm::Linear {
|
||||||
|
|
||||||
template <class TypeTag>
|
template <class TypeTag>
|
||||||
class ParallelBiCGStabSolverBackend;
|
class ParallelBiCGStabSolverBackend;
|
||||||
|
|
||||||
} // namespace Opm::Linear
|
} // namespace Opm::Linear
|
||||||
|
|
||||||
namespace Opm::Properties {
|
namespace Opm::Properties {
|
||||||
|
|
||||||
// Create new type tags
|
// Create new type tags
|
||||||
namespace TTag {
|
namespace TTag {
|
||||||
struct ParallelBiCGStabLinearSolver { using InheritsFrom = std::tuple<ParallelBaseLinearSolver>; };
|
|
||||||
|
struct ParallelBiCGStabLinearSolver
|
||||||
|
{ using InheritsFrom = std::tuple<ParallelBaseLinearSolver>; };
|
||||||
|
|
||||||
} // end namespace TTag
|
} // end namespace TTag
|
||||||
|
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct LinearSolverBackend<TypeTag, TTag::ParallelBiCGStabLinearSolver>
|
struct LinearSolverBackend<TypeTag, TTag::ParallelBiCGStabLinearSolver>
|
||||||
{ using type = Opm::Linear::ParallelBiCGStabSolverBackend<TypeTag>; };
|
{ using type = Opm::Linear::ParallelBiCGStabSolverBackend<TypeTag>; };
|
||||||
|
|
||||||
|
} // namespace Opm::Properties
|
||||||
|
|
||||||
|
namespace Opm::Parameters {
|
||||||
|
|
||||||
template<class TypeTag>
|
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;
|
static constexpr type value = 1e7;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Opm::Properties
|
}
|
||||||
|
|
||||||
|
namespace Opm::Linear {
|
||||||
|
|
||||||
namespace Opm {
|
|
||||||
namespace Linear {
|
|
||||||
/*!
|
/*!
|
||||||
* \ingroup Linear
|
* \ingroup Linear
|
||||||
*
|
*
|
||||||
@ -122,7 +131,7 @@ public:
|
|||||||
{
|
{
|
||||||
ParentType::registerParameters();
|
ParentType::registerParameters();
|
||||||
|
|
||||||
Parameters::registerParam<TypeTag, Properties::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");
|
||||||
}
|
}
|
||||||
@ -145,7 +154,7 @@ protected:
|
|||||||
convCrit_.reset(new CCC(gridView.comm(),
|
convCrit_.reset(new CCC(gridView.comm(),
|
||||||
/*residualReductionTolerance=*/linearSolverTolerance,
|
/*residualReductionTolerance=*/linearSolverTolerance,
|
||||||
/*absoluteResidualTolerance=*/linearSolverAbsTolerance,
|
/*absoluteResidualTolerance=*/linearSolverAbsTolerance,
|
||||||
Parameters::get<TypeTag, Properties::LinearSolverMaxError>()));
|
Parameters::get<TypeTag, Parameters::LinearSolverMaxError>()));
|
||||||
|
|
||||||
auto bicgstabSolver =
|
auto bicgstabSolver =
|
||||||
std::make_shared<RawLinearSolver>(parPreCond, *convCrit_, parScalarProduct);
|
std::make_shared<RawLinearSolver>(parPreCond, *convCrit_, parScalarProduct);
|
||||||
@ -173,6 +182,6 @@ protected:
|
|||||||
std::unique_ptr<ConvergenceCriterion<OverlappingVector> > convCrit_;
|
std::unique_ptr<ConvergenceCriterion<OverlappingVector> > convCrit_;
|
||||||
};
|
};
|
||||||
|
|
||||||
}} // namespace Linear, Opm
|
} // namespace Opm::Linear
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user