mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-11-21 08:54:08 -06:00
[properties] replace SET_TAG_PROP calls
This commit is contained in:
parent
cbffa2a7ba
commit
3ba67ebaa8
@ -44,10 +44,12 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionFlashEcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, FlashModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionFlashEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionFlashEcfvProblem> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
// use automatic differentiation for this simulator
|
||||
SET_TAG_PROP(Co2InjectionFlashEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::Co2InjectionFlashEcfvProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
// use the flash solver adapted to the CO2 injection problem
|
||||
SET_TYPE_PROP(
|
||||
@ -64,7 +66,8 @@ struct Scalar<TypeTag, TTag::Co2InjectionFlashEcfvProblem> { using type = quad;
|
||||
|
||||
// the default linear solver used for this problem (-> AMG) cannot be used with quadruple
|
||||
// precision scalars... (this seems to only apply to Dune >= 2.4)
|
||||
SET_TAG_PROP(Co2InjectionFlashEcfvProblem, LinearSolverSplice, ParallelBiCGStabLinearSolver);
|
||||
template<class TypeTag>
|
||||
struct LinearSolverSplice<TypeTag, TTag::Co2InjectionFlashEcfvProblem> { using type = TTag::ParallelBiCGStabLinearSolver; };
|
||||
#else
|
||||
template<class TypeTag>
|
||||
struct NewtonTolerance<TypeTag, TTag::Co2InjectionFlashEcfvProblem>
|
||||
|
@ -41,13 +41,15 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionFlashNiEcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, FlashModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionFlashNiEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionFlashNiEcfvProblem> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::Co2InjectionFlashNiEcfvProblem> { static constexpr bool value = true; };
|
||||
|
||||
//! Use automatic differentiation to linearize the system of PDEs
|
||||
SET_TAG_PROP(Co2InjectionFlashNiEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::Co2InjectionFlashNiEcfvProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
// use the CO2 injection problem adapted flash solver
|
||||
SET_TYPE_PROP(
|
||||
@ -64,7 +66,8 @@ struct Scalar<TypeTag, TTag::Co2InjectionFlashNiEcfvProblem> { using type = quad
|
||||
|
||||
// the default linear solver used for this problem (-> AMG) cannot be used with quadruple
|
||||
// precision scalars... (this seems to only apply to Dune >= 2.4)
|
||||
SET_TAG_PROP(Co2InjectionFlashNiEcfvProblem, LinearSolverSplice, ParallelBiCGStabLinearSolver);
|
||||
template<class TypeTag>
|
||||
struct LinearSolverSplice<TypeTag, TTag::Co2InjectionFlashNiEcfvProblem> { using type = TTag::ParallelBiCGStabLinearSolver; };
|
||||
#else
|
||||
template<class TypeTag>
|
||||
struct NewtonTolerance<TypeTag, TTag::Co2InjectionFlashNiEcfvProblem>
|
||||
|
@ -41,7 +41,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionFlashNiVcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, FlashModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionFlashNiVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionFlashNiVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::Co2InjectionFlashNiVcfvProblem> { static constexpr bool value = true; };
|
||||
@ -61,7 +62,8 @@ struct Scalar<TypeTag, TTag::Co2InjectionFlashNiVcfvProblem> { using type = quad
|
||||
|
||||
// the default linear solver used for this problem (-> AMG) cannot be used with quadruple
|
||||
// precision scalars... (this seems to only apply to Dune >= 2.4)
|
||||
SET_TAG_PROP(Co2InjectionFlashNiVcfvProblem, LinearSolverSplice, ParallelBiCGStabLinearSolver);
|
||||
template<class TypeTag>
|
||||
struct LinearSolverSplice<TypeTag, TTag::Co2InjectionFlashNiVcfvProblem> { using type = TTag::ParallelBiCGStabLinearSolver; };
|
||||
#else
|
||||
template<class TypeTag>
|
||||
struct NewtonTolerance<TypeTag, TTag::Co2InjectionFlashNiVcfvProblem>
|
||||
|
@ -44,7 +44,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionFlashVcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, FlashModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionFlashVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionFlashVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
// use the flash solver adapted to the CO2 injection problem
|
||||
SET_TYPE_PROP(
|
||||
@ -61,7 +62,8 @@ struct Scalar<TypeTag, TTag::Co2InjectionFlashVcfvProblem> { using type = quad;
|
||||
|
||||
// the default linear solver used for this problem (-> AMG) cannot be used with quadruple
|
||||
// precision scalars... (this seems to only apply to Dune >= 2.4)
|
||||
SET_TAG_PROP(Co2InjectionFlashVcfvProblem, LinearSolverSplice, ParallelBiCGStabLinearSolver);
|
||||
template<class TypeTag>
|
||||
struct LinearSolverSplice<TypeTag, TTag::Co2InjectionFlashVcfvProblem> { using type = TTag::ParallelBiCGStabLinearSolver; };
|
||||
#else
|
||||
template<class TypeTag>
|
||||
struct NewtonTolerance<TypeTag, TTag::Co2InjectionFlashVcfvProblem>
|
||||
|
@ -44,7 +44,8 @@ template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::Co2InjectionImmiscibleNiEcfvProblem> { static constexpr bool value = true; };
|
||||
|
||||
//! Use automatic differentiation to linearize the system of PDEs
|
||||
SET_TAG_PROP(Co2InjectionImmiscibleNiEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::Co2InjectionImmiscibleNiEcfvProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -37,7 +37,8 @@ namespace Opm::Properties {
|
||||
|
||||
NEW_TYPE_TAG(Co2InjectionImmiscibleNiVcfvProblem, INHERITS_FROM(ImmiscibleModel,
|
||||
Co2InjectionBaseProblem));
|
||||
SET_TAG_PROP(Co2InjectionImmiscibleNiVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionImmiscibleNiVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::Co2InjectionImmiscibleNiVcfvProblem> { static constexpr bool value = true; };
|
||||
|
@ -38,7 +38,8 @@ namespace Opm::Properties {
|
||||
|
||||
NEW_TYPE_TAG(Co2InjectionImmiscibleVcfvProblem, INHERITS_FROM(ImmiscibleModel,
|
||||
Co2InjectionBaseProblem));
|
||||
SET_TAG_PROP(Co2InjectionImmiscibleVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionImmiscibleVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionNcpEcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, NcpModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionNcpEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionNcpEcfvProblem> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,12 +39,14 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionNcpNiEcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, NcpModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionNcpNiEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionNcpNiEcfvProblem> { using type = TTag::EcfvDiscretization; };
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::Co2InjectionNcpNiEcfvProblem> { static constexpr bool value = true; };
|
||||
|
||||
//! Use automatic differentiation to linearize the system of PDEs
|
||||
SET_TAG_PROP(Co2InjectionNcpNiEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::Co2InjectionNcpNiEcfvProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionNcpNiVcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, NcpModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionNcpNiVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionNcpNiVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::Co2InjectionNcpNiVcfvProblem> { static constexpr bool value = true; };
|
||||
|
||||
|
@ -40,7 +40,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionNcpVcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, NcpModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionNcpVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionNcpVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionPvsEcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, PvsModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionPvsEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionPvsEcfvProblem> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,13 +39,15 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionPvsNiEcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, PvsModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionPvsNiEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionPvsNiEcfvProblem> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::Co2InjectionPvsNiEcfvProblem> { static constexpr bool value = true; };
|
||||
|
||||
//! Use automatic differentiation to linearize the system of PDEs
|
||||
SET_TAG_PROP(Co2InjectionPvsNiEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::Co2InjectionPvsNiEcfvProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionPvsNiVcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, PvsModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionPvsNiVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionPvsNiVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::Co2InjectionPvsNiVcfvProblem> { static constexpr bool value = true; };
|
||||
|
@ -40,7 +40,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct Co2InjectionPvsVcfvProblem { using InheritsFrom = std::tuple<Co2InjectionBaseProblem, PvsModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(Co2InjectionPvsVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionPvsVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -38,7 +38,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct FingerProblemEcfv { using InheritsFrom = std::tuple<FingerBaseProblem, ImmiscibleTwoPhaseModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(FingerProblemEcfv, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::FingerProblemEcfv> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -38,7 +38,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct FingerProblemVcfv { using InheritsFrom = std::tuple<FingerBaseProblem, ImmiscibleTwoPhaseModel>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(FingerProblemVcfv, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::FingerProblemVcfv> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -41,10 +41,12 @@ struct LensProblemEcfvAd { using InheritsFrom = std::tuple<LensBaseProblem, Immi
|
||||
} // end namespace TTag
|
||||
|
||||
// use the element centered finite volume spatial discretization
|
||||
SET_TAG_PROP(LensProblemEcfvAd, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::LensProblemEcfvAd> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
// use automatic differentiation for this simulator
|
||||
SET_TAG_PROP(LensProblemEcfvAd, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::LensProblemEcfvAd> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
// this problem works fine if the linear solver uses single precision scalars
|
||||
template<class TypeTag>
|
||||
|
@ -40,7 +40,8 @@ struct LensProblemVcfvAd { using InheritsFrom = std::tuple<LensBaseProblem, Immi
|
||||
} // end namespace TTag
|
||||
|
||||
// use automatic differentiation for this simulator
|
||||
SET_TAG_PROP(LensProblemVcfvAd, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::LensProblemVcfvAd> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
// use linear finite element gradients if dune-localfunctions is available
|
||||
#if HAVE_DUNE_LOCALFUNCTIONS
|
||||
|
@ -40,7 +40,8 @@ struct LensProblemVcfvFd { using InheritsFrom = std::tuple<LensBaseProblem, Immi
|
||||
} // end namespace TTag
|
||||
|
||||
// use the finite difference methodfor this simulator
|
||||
SET_TAG_PROP(LensProblemVcfvFd, LocalLinearizerSplice, FiniteDifferenceLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::LensProblemVcfvFd> { using type = TTag::FiniteDifferenceLocalLinearizer; };
|
||||
|
||||
// use linear finite element gradients if dune-localfunctions is available
|
||||
#if HAVE_DUNE_LOCALFUNCTIONS
|
||||
|
@ -38,10 +38,12 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct RichardsLensEcfvProblem { using InheritsFrom = std::tuple<RichardsLensProblem>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(RichardsLensEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::RichardsLensEcfvProblem> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
//! Use automatic differentiation to linearize the system of PDEs
|
||||
SET_TAG_PROP(RichardsLensEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::RichardsLensEcfvProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -38,7 +38,8 @@ namespace Opm::Properties {
|
||||
namespace TTag {
|
||||
struct RichardsLensVcfvProblem { using InheritsFrom = std::tuple<RichardsLensProblem>; };
|
||||
} // end namespace TTag
|
||||
SET_TAG_PROP(RichardsLensVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::RichardsLensVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,8 @@ NEW_TYPE_TAG(PowerInjectionDarcyAdProblem,
|
||||
|
||||
template<class TypeTag>
|
||||
struct FluxModule<TypeTag, TTag::PowerInjectionDarcyAdProblem> { using type = Opm::DarcyFluxModule<TypeTag>; };
|
||||
SET_TAG_PROP(PowerInjectionDarcyAdProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::PowerInjectionDarcyAdProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,8 @@ NEW_TYPE_TAG(PowerInjectionDarcyFdProblem,
|
||||
|
||||
template<class TypeTag>
|
||||
struct FluxModule<TypeTag, TTag::PowerInjectionDarcyFdProblem> { using type = Opm::DarcyFluxModule<TypeTag>; };
|
||||
SET_TAG_PROP(PowerInjectionDarcyFdProblem, LocalLinearizerSplice, FiniteDifferenceLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::PowerInjectionDarcyFdProblem> { using type = TTag::FiniteDifferenceLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,8 @@ NEW_TYPE_TAG(PowerInjectionForchheimerAdProblem,
|
||||
|
||||
template<class TypeTag>
|
||||
struct FluxModule<TypeTag, TTag::PowerInjectionForchheimerAdProblem> { using type = Opm::ForchheimerFluxModule<TypeTag>; };
|
||||
SET_TAG_PROP(PowerInjectionForchheimerAdProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::PowerInjectionForchheimerAdProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,8 @@ NEW_TYPE_TAG(PowerInjectionForchheimerFdProblem,
|
||||
|
||||
template<class TypeTag>
|
||||
struct FluxModule<TypeTag, TTag::PowerInjectionForchheimerFdProblem> { using type = Opm::ForchheimerFluxModule<TypeTag>; };
|
||||
SET_TAG_PROP(PowerInjectionForchheimerFdProblem, LocalLinearizerSplice, FiniteDifferenceLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::PowerInjectionForchheimerFdProblem> { using type = TTag::FiniteDifferenceLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -155,7 +155,8 @@ SET_TYPE_PROP(Co2InjectionBaseProblem, SolidEnergyLaw,
|
||||
Opm::ConstantSolidHeatCapLaw<GetPropType<TypeTag, Properties::Scalar>>);
|
||||
|
||||
// Use the algebraic multi-grid linear solver for this problem
|
||||
SET_TAG_PROP(Co2InjectionBaseProblem, LinearSolverSplice, ParallelAmgLinearSolver);
|
||||
template<class TypeTag>
|
||||
struct LinearSolverSplice<TypeTag, TTag::Co2InjectionBaseProblem> { using type = TTag::ParallelAmgLinearSolver; };
|
||||
|
||||
// Write the Newton convergence behavior to disk?
|
||||
template<class TypeTag>
|
||||
|
@ -166,7 +166,8 @@ SET_STRING_PROP(GroundWaterBaseProblem, GridFile, "./data/groundwater_2d.dgf");
|
||||
|
||||
// Use the conjugated gradient linear solver with the default preconditioner (i.e.,
|
||||
// ILU-0) from dune-istl
|
||||
SET_TAG_PROP(GroundWaterBaseProblem, LinearSolverSplice, ParallelIstlLinearSolver);
|
||||
template<class TypeTag>
|
||||
struct LinearSolverSplice<TypeTag, TTag::GroundWaterBaseProblem> { using type = TTag::ParallelIstlLinearSolver; };
|
||||
SET_TYPE_PROP(GroundWaterBaseProblem, LinearSolverWrapper,
|
||||
Opm::Linear::SolverWrapperConjugatedGradients<TypeTag>);
|
||||
|
||||
|
@ -145,7 +145,8 @@ struct InitialTimeStepSize<TypeTag, TTag::WaterAirBaseProblem>
|
||||
SET_STRING_PROP(WaterAirBaseProblem, GridFile, "./data/waterair.dgf");
|
||||
|
||||
// Use the restarted GMRES linear solver with the ILU-2 preconditioner from dune-istl
|
||||
SET_TAG_PROP(WaterAirBaseProblem, LinearSolverSplice, ParallelIstlLinearSolver);
|
||||
template<class TypeTag>
|
||||
struct LinearSolverSplice<TypeTag, TTag::WaterAirBaseProblem> { using type = TTag::ParallelIstlLinearSolver; };
|
||||
SET_TYPE_PROP(WaterAirBaseProblem, LinearSolverWrapper,
|
||||
Opm::Linear::SolverWrapperRestartedGMRes<TypeTag>);
|
||||
#if DUNE_VERSION_NEWER(DUNE_ISTL, 2,7)
|
||||
|
@ -41,10 +41,12 @@ struct ReservoirBlackOilEcfvProblem { using InheritsFrom = std::tuple<ReservoirB
|
||||
} // end namespace TTag
|
||||
|
||||
// Select the element centered finite volume method as spatial discretization
|
||||
SET_TAG_PROP(ReservoirBlackOilEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::ReservoirBlackOilEcfvProblem> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
// Use automatic differentiation to linearize the system of PDEs
|
||||
SET_TAG_PROP(ReservoirBlackOilEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::ReservoirBlackOilEcfvProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -40,7 +40,8 @@ struct ReservoirBlackOilVcfvProblem { using InheritsFrom = std::tuple<ReservoirB
|
||||
} // end namespace TTag
|
||||
|
||||
// Select the vertex centered finite volume method as spatial discretization
|
||||
SET_TAG_PROP(ReservoirBlackOilVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::ReservoirBlackOilVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -40,10 +40,12 @@ struct ReservoirNcpEcfvProblem { using InheritsFrom = std::tuple<ReservoirBasePr
|
||||
} // end namespace TTag
|
||||
|
||||
// Select the element centered finite volume method as spatial discretization
|
||||
SET_TAG_PROP(ReservoirNcpEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::ReservoirNcpEcfvProblem> { using type = TTag::EcfvDiscretization; };
|
||||
|
||||
//! use automatic differentiation to linearize the system of PDEs
|
||||
SET_TAG_PROP(ReservoirNcpEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::ReservoirNcpEcfvProblem> { using type = TTag::AutoDiffLocalLinearizer; };
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -41,7 +41,8 @@ struct ReservoirNcpVcfvProblem { using InheritsFrom = std::tuple<ReservoirBasePr
|
||||
} // end namespace TTag
|
||||
|
||||
// Select the vertex centered finite volume method as spatial discretization
|
||||
SET_TAG_PROP(ReservoirNcpVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::ReservoirNcpVcfvProblem> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
// enable the storage cache for this problem so that the storage cache receives wider
|
||||
// testing
|
||||
|
@ -64,7 +64,8 @@ SET_SPLICES(MultiPhaseBaseModel, SpatialDiscretizationSplice);
|
||||
//! Set the default spatial discretization
|
||||
//!
|
||||
//! We use a vertex centered finite volume method by default
|
||||
SET_TAG_PROP(MultiPhaseBaseModel, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||
template<class TypeTag>
|
||||
struct SpatialDiscretizationSplice<TypeTag, TTag::MultiPhaseBaseModel> { using type = TTag::VcfvDiscretization; };
|
||||
|
||||
//! set the number of equations to the number of phases
|
||||
template<class TypeTag>
|
||||
|
@ -57,10 +57,12 @@ struct LocalLinearizerSplice { using type = UndefinedProperty; };
|
||||
SET_SPLICES(FvBaseDiscretization, LinearSolverSplice, LocalLinearizerSplice);
|
||||
|
||||
//! use a parallel BiCGStab linear solver by default
|
||||
SET_TAG_PROP(FvBaseDiscretization, LinearSolverSplice, ParallelBiCGStabLinearSolver);
|
||||
template<class TypeTag>
|
||||
struct LinearSolverSplice<TypeTag, TTag::FvBaseDiscretization> { using type = TTag::ParallelBiCGStabLinearSolver; };
|
||||
|
||||
//! by default, use finite differences to linearize the system of PDEs
|
||||
SET_TAG_PROP(FvBaseDiscretization, LocalLinearizerSplice, FiniteDifferenceLocalLinearizer);
|
||||
template<class TypeTag>
|
||||
struct LocalLinearizerSplice<TypeTag, TTag::FvBaseDiscretization> { using type = TTag::FiniteDifferenceLocalLinearizer; };
|
||||
|
||||
/*!
|
||||
* \brief Representation of a function evaluation and all necessary derivatives with
|
||||
|
Loading…
Reference in New Issue
Block a user