diff --git a/examples/co2injection_flash_ecfv.cpp b/examples/co2injection_flash_ecfv.cpp index 391dfb0d9..86c67ad3f 100644 --- a/examples/co2injection_flash_ecfv.cpp +++ b/examples/co2injection_flash_ecfv.cpp @@ -44,10 +44,12 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionFlashEcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionFlashEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; // use automatic differentiation for this simulator -SET_TAG_PROP(Co2InjectionFlashEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; // use the flash solver adapted to the CO2 injection problem SET_TYPE_PROP( @@ -64,7 +66,8 @@ struct Scalar { 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 +struct LinearSolverSplice { using type = TTag::ParallelBiCGStabLinearSolver; }; #else template struct NewtonTolerance diff --git a/examples/co2injection_flash_ni_ecfv.cpp b/examples/co2injection_flash_ni_ecfv.cpp index c41279b49..617e274c3 100644 --- a/examples/co2injection_flash_ni_ecfv.cpp +++ b/examples/co2injection_flash_ni_ecfv.cpp @@ -41,13 +41,15 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionFlashNiEcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionFlashNiEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; template struct EnableEnergy { static constexpr bool value = true; }; //! Use automatic differentiation to linearize the system of PDEs -SET_TAG_PROP(Co2InjectionFlashNiEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; // use the CO2 injection problem adapted flash solver SET_TYPE_PROP( @@ -64,7 +66,8 @@ struct Scalar { 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 +struct LinearSolverSplice { using type = TTag::ParallelBiCGStabLinearSolver; }; #else template struct NewtonTolerance diff --git a/examples/co2injection_flash_ni_vcfv.cpp b/examples/co2injection_flash_ni_vcfv.cpp index 54a8408ad..30ffdb224 100644 --- a/examples/co2injection_flash_ni_vcfv.cpp +++ b/examples/co2injection_flash_ni_vcfv.cpp @@ -41,7 +41,8 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionFlashNiVcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionFlashNiVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; template struct EnableEnergy { static constexpr bool value = true; }; @@ -61,7 +62,8 @@ struct Scalar { 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 +struct LinearSolverSplice { using type = TTag::ParallelBiCGStabLinearSolver; }; #else template struct NewtonTolerance diff --git a/examples/co2injection_flash_vcfv.cpp b/examples/co2injection_flash_vcfv.cpp index 8be53d8fe..a20d878a3 100644 --- a/examples/co2injection_flash_vcfv.cpp +++ b/examples/co2injection_flash_vcfv.cpp @@ -44,7 +44,8 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionFlashVcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionFlashVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; // use the flash solver adapted to the CO2 injection problem SET_TYPE_PROP( @@ -61,7 +62,8 @@ struct Scalar { 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 +struct LinearSolverSplice { using type = TTag::ParallelBiCGStabLinearSolver; }; #else template struct NewtonTolerance diff --git a/examples/co2injection_immiscible_ni_ecfv.cpp b/examples/co2injection_immiscible_ni_ecfv.cpp index 12b856b35..7be38a41e 100644 --- a/examples/co2injection_immiscible_ni_ecfv.cpp +++ b/examples/co2injection_immiscible_ni_ecfv.cpp @@ -44,7 +44,8 @@ template struct EnableEnergy { static constexpr bool value = true; }; //! Use automatic differentiation to linearize the system of PDEs -SET_TAG_PROP(Co2InjectionImmiscibleNiEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/co2injection_immiscible_ni_vcfv.cpp b/examples/co2injection_immiscible_ni_vcfv.cpp index ca6d4cd0a..526988f9b 100644 --- a/examples/co2injection_immiscible_ni_vcfv.cpp +++ b/examples/co2injection_immiscible_ni_vcfv.cpp @@ -37,7 +37,8 @@ namespace Opm::Properties { NEW_TYPE_TAG(Co2InjectionImmiscibleNiVcfvProblem, INHERITS_FROM(ImmiscibleModel, Co2InjectionBaseProblem)); -SET_TAG_PROP(Co2InjectionImmiscibleNiVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; template struct EnableEnergy { static constexpr bool value = true; }; diff --git a/examples/co2injection_immiscible_vcfv.cpp b/examples/co2injection_immiscible_vcfv.cpp index 655f39647..a810ff04e 100644 --- a/examples/co2injection_immiscible_vcfv.cpp +++ b/examples/co2injection_immiscible_vcfv.cpp @@ -38,7 +38,8 @@ namespace Opm::Properties { NEW_TYPE_TAG(Co2InjectionImmiscibleVcfvProblem, INHERITS_FROM(ImmiscibleModel, Co2InjectionBaseProblem)); -SET_TAG_PROP(Co2InjectionImmiscibleVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; } // namespace Opm::Properties diff --git a/examples/co2injection_ncp_ecfv.cpp b/examples/co2injection_ncp_ecfv.cpp index a1c44bc60..4d41603f9 100644 --- a/examples/co2injection_ncp_ecfv.cpp +++ b/examples/co2injection_ncp_ecfv.cpp @@ -39,7 +39,8 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionNcpEcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionNcpEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; } // namespace Opm::Properties diff --git a/examples/co2injection_ncp_ni_ecfv.cpp b/examples/co2injection_ncp_ni_ecfv.cpp index 01bd0305a..ad1ef927b 100644 --- a/examples/co2injection_ncp_ni_ecfv.cpp +++ b/examples/co2injection_ncp_ni_ecfv.cpp @@ -39,12 +39,14 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionNcpNiEcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionNcpNiEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; template struct EnableEnergy { static constexpr bool value = true; }; //! Use automatic differentiation to linearize the system of PDEs -SET_TAG_PROP(Co2InjectionNcpNiEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/co2injection_ncp_ni_vcfv.cpp b/examples/co2injection_ncp_ni_vcfv.cpp index 94fce7eba..565624818 100644 --- a/examples/co2injection_ncp_ni_vcfv.cpp +++ b/examples/co2injection_ncp_ni_vcfv.cpp @@ -39,7 +39,8 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionNcpNiVcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionNcpNiVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; template struct EnableEnergy { static constexpr bool value = true; }; diff --git a/examples/co2injection_ncp_vcfv.cpp b/examples/co2injection_ncp_vcfv.cpp index 3b1ed63cd..aa05afdf9 100644 --- a/examples/co2injection_ncp_vcfv.cpp +++ b/examples/co2injection_ncp_vcfv.cpp @@ -40,7 +40,8 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionNcpVcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionNcpVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; } // namespace Opm::Properties diff --git a/examples/co2injection_pvs_ecfv.cpp b/examples/co2injection_pvs_ecfv.cpp index 286b79b2a..cd8d8da61 100644 --- a/examples/co2injection_pvs_ecfv.cpp +++ b/examples/co2injection_pvs_ecfv.cpp @@ -39,7 +39,8 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionPvsEcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionPvsEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; } // namespace Opm::Properties diff --git a/examples/co2injection_pvs_ni_ecfv.cpp b/examples/co2injection_pvs_ni_ecfv.cpp index 0395b761b..cb6264620 100644 --- a/examples/co2injection_pvs_ni_ecfv.cpp +++ b/examples/co2injection_pvs_ni_ecfv.cpp @@ -39,13 +39,15 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionPvsNiEcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionPvsNiEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; template struct EnableEnergy { static constexpr bool value = true; }; //! Use automatic differentiation to linearize the system of PDEs -SET_TAG_PROP(Co2InjectionPvsNiEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/co2injection_pvs_ni_vcfv.cpp b/examples/co2injection_pvs_ni_vcfv.cpp index 68e6a3051..5853a9527 100644 --- a/examples/co2injection_pvs_ni_vcfv.cpp +++ b/examples/co2injection_pvs_ni_vcfv.cpp @@ -39,7 +39,8 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionPvsNiVcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionPvsNiVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; template struct EnableEnergy { static constexpr bool value = true; }; diff --git a/examples/co2injection_pvs_vcfv.cpp b/examples/co2injection_pvs_vcfv.cpp index dad2ff5fc..b8b426675 100644 --- a/examples/co2injection_pvs_vcfv.cpp +++ b/examples/co2injection_pvs_vcfv.cpp @@ -40,7 +40,8 @@ namespace Opm::Properties { namespace TTag { struct Co2InjectionPvsVcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(Co2InjectionPvsVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; } // namespace Opm::Properties diff --git a/examples/finger_immiscible_ecfv.cpp b/examples/finger_immiscible_ecfv.cpp index 72db8287f..713b98d7d 100644 --- a/examples/finger_immiscible_ecfv.cpp +++ b/examples/finger_immiscible_ecfv.cpp @@ -38,7 +38,8 @@ namespace Opm::Properties { namespace TTag { struct FingerProblemEcfv { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(FingerProblemEcfv, SpatialDiscretizationSplice, EcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; } // namespace Opm::Properties diff --git a/examples/finger_immiscible_vcfv.cpp b/examples/finger_immiscible_vcfv.cpp index fb218fb01..b23dfa940 100644 --- a/examples/finger_immiscible_vcfv.cpp +++ b/examples/finger_immiscible_vcfv.cpp @@ -38,7 +38,8 @@ namespace Opm::Properties { namespace TTag { struct FingerProblemVcfv { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(FingerProblemVcfv, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; } // namespace Opm::Properties diff --git a/examples/lens_immiscible_ecfv_ad.hh b/examples/lens_immiscible_ecfv_ad.hh index 16752dca1..609fcb4e7 100644 --- a/examples/lens_immiscible_ecfv_ad.hh +++ b/examples/lens_immiscible_ecfv_ad.hh @@ -41,10 +41,12 @@ struct LensProblemEcfvAd { using InheritsFrom = std::tuple +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; // use automatic differentiation for this simulator -SET_TAG_PROP(LensProblemEcfvAd, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; // this problem works fine if the linear solver uses single precision scalars template diff --git a/examples/lens_immiscible_vcfv_ad.cpp b/examples/lens_immiscible_vcfv_ad.cpp index 1ce7155c1..ff5203a8d 100644 --- a/examples/lens_immiscible_vcfv_ad.cpp +++ b/examples/lens_immiscible_vcfv_ad.cpp @@ -40,7 +40,8 @@ struct LensProblemVcfvAd { using InheritsFrom = std::tuple +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; // use linear finite element gradients if dune-localfunctions is available #if HAVE_DUNE_LOCALFUNCTIONS diff --git a/examples/lens_immiscible_vcfv_fd.cpp b/examples/lens_immiscible_vcfv_fd.cpp index 2a6209203..0cb7d017d 100644 --- a/examples/lens_immiscible_vcfv_fd.cpp +++ b/examples/lens_immiscible_vcfv_fd.cpp @@ -40,7 +40,8 @@ struct LensProblemVcfvFd { using InheritsFrom = std::tuple +struct LocalLinearizerSplice { using type = TTag::FiniteDifferenceLocalLinearizer; }; // use linear finite element gradients if dune-localfunctions is available #if HAVE_DUNE_LOCALFUNCTIONS diff --git a/examples/lens_richards_ecfv.cpp b/examples/lens_richards_ecfv.cpp index 91d228098..813867ba7 100644 --- a/examples/lens_richards_ecfv.cpp +++ b/examples/lens_richards_ecfv.cpp @@ -38,10 +38,12 @@ namespace Opm::Properties { namespace TTag { struct RichardsLensEcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(RichardsLensEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; //! Use automatic differentiation to linearize the system of PDEs -SET_TAG_PROP(RichardsLensEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/lens_richards_vcfv.cpp b/examples/lens_richards_vcfv.cpp index 9aaa0e396..68be56209 100644 --- a/examples/lens_richards_vcfv.cpp +++ b/examples/lens_richards_vcfv.cpp @@ -38,7 +38,8 @@ namespace Opm::Properties { namespace TTag { struct RichardsLensVcfvProblem { using InheritsFrom = std::tuple; }; } // end namespace TTag -SET_TAG_PROP(RichardsLensVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization); +template +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; } // namespace Opm::Properties diff --git a/examples/powerinjection_darcy_ad.cpp b/examples/powerinjection_darcy_ad.cpp index b835890a8..2bc047666 100644 --- a/examples/powerinjection_darcy_ad.cpp +++ b/examples/powerinjection_darcy_ad.cpp @@ -39,7 +39,8 @@ NEW_TYPE_TAG(PowerInjectionDarcyAdProblem, template struct FluxModule { using type = Opm::DarcyFluxModule; }; -SET_TAG_PROP(PowerInjectionDarcyAdProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/powerinjection_darcy_fd.cpp b/examples/powerinjection_darcy_fd.cpp index 599166f04..a853873c5 100644 --- a/examples/powerinjection_darcy_fd.cpp +++ b/examples/powerinjection_darcy_fd.cpp @@ -39,7 +39,8 @@ NEW_TYPE_TAG(PowerInjectionDarcyFdProblem, template struct FluxModule { using type = Opm::DarcyFluxModule; }; -SET_TAG_PROP(PowerInjectionDarcyFdProblem, LocalLinearizerSplice, FiniteDifferenceLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::FiniteDifferenceLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/powerinjection_forchheimer_ad.cpp b/examples/powerinjection_forchheimer_ad.cpp index 0f969d35b..ec4e006cb 100644 --- a/examples/powerinjection_forchheimer_ad.cpp +++ b/examples/powerinjection_forchheimer_ad.cpp @@ -39,7 +39,8 @@ NEW_TYPE_TAG(PowerInjectionForchheimerAdProblem, template struct FluxModule { using type = Opm::ForchheimerFluxModule; }; -SET_TAG_PROP(PowerInjectionForchheimerAdProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/powerinjection_forchheimer_fd.cpp b/examples/powerinjection_forchheimer_fd.cpp index ea513fb94..c7c818133 100644 --- a/examples/powerinjection_forchheimer_fd.cpp +++ b/examples/powerinjection_forchheimer_fd.cpp @@ -39,7 +39,8 @@ NEW_TYPE_TAG(PowerInjectionForchheimerFdProblem, template struct FluxModule { using type = Opm::ForchheimerFluxModule; }; -SET_TAG_PROP(PowerInjectionForchheimerFdProblem, LocalLinearizerSplice, FiniteDifferenceLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::FiniteDifferenceLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/problems/co2injectionproblem.hh b/examples/problems/co2injectionproblem.hh index c5fa001f0..29ef9a82a 100644 --- a/examples/problems/co2injectionproblem.hh +++ b/examples/problems/co2injectionproblem.hh @@ -155,7 +155,8 @@ SET_TYPE_PROP(Co2InjectionBaseProblem, SolidEnergyLaw, Opm::ConstantSolidHeatCapLaw>); // Use the algebraic multi-grid linear solver for this problem -SET_TAG_PROP(Co2InjectionBaseProblem, LinearSolverSplice, ParallelAmgLinearSolver); +template +struct LinearSolverSplice { using type = TTag::ParallelAmgLinearSolver; }; // Write the Newton convergence behavior to disk? template diff --git a/examples/problems/groundwaterproblem.hh b/examples/problems/groundwaterproblem.hh index bddd294fb..a2084fa06 100644 --- a/examples/problems/groundwaterproblem.hh +++ b/examples/problems/groundwaterproblem.hh @@ -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 +struct LinearSolverSplice { using type = TTag::ParallelIstlLinearSolver; }; SET_TYPE_PROP(GroundWaterBaseProblem, LinearSolverWrapper, Opm::Linear::SolverWrapperConjugatedGradients); diff --git a/examples/problems/waterairproblem.hh b/examples/problems/waterairproblem.hh index 0bac9ed2f..51845c112 100644 --- a/examples/problems/waterairproblem.hh +++ b/examples/problems/waterairproblem.hh @@ -145,7 +145,8 @@ struct InitialTimeStepSize 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 +struct LinearSolverSplice { using type = TTag::ParallelIstlLinearSolver; }; SET_TYPE_PROP(WaterAirBaseProblem, LinearSolverWrapper, Opm::Linear::SolverWrapperRestartedGMRes); #if DUNE_VERSION_NEWER(DUNE_ISTL, 2,7) diff --git a/examples/reservoir_blackoil_ecfv.cpp b/examples/reservoir_blackoil_ecfv.cpp index 2b77634c1..bb476c29c 100644 --- a/examples/reservoir_blackoil_ecfv.cpp +++ b/examples/reservoir_blackoil_ecfv.cpp @@ -41,10 +41,12 @@ struct ReservoirBlackOilEcfvProblem { using InheritsFrom = std::tuple +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; // Use automatic differentiation to linearize the system of PDEs -SET_TAG_PROP(ReservoirBlackOilEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/reservoir_blackoil_vcfv.cpp b/examples/reservoir_blackoil_vcfv.cpp index 8167e0aa0..5b71926a6 100644 --- a/examples/reservoir_blackoil_vcfv.cpp +++ b/examples/reservoir_blackoil_vcfv.cpp @@ -40,7 +40,8 @@ struct ReservoirBlackOilVcfvProblem { using InheritsFrom = std::tuple +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; } // namespace Opm::Properties diff --git a/examples/reservoir_ncp_ecfv.cpp b/examples/reservoir_ncp_ecfv.cpp index 3ddeb7b1c..e18cd5990 100644 --- a/examples/reservoir_ncp_ecfv.cpp +++ b/examples/reservoir_ncp_ecfv.cpp @@ -40,10 +40,12 @@ struct ReservoirNcpEcfvProblem { using InheritsFrom = std::tuple +struct SpatialDiscretizationSplice { using type = TTag::EcfvDiscretization; }; //! use automatic differentiation to linearize the system of PDEs -SET_TAG_PROP(ReservoirNcpEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::AutoDiffLocalLinearizer; }; } // namespace Opm::Properties diff --git a/examples/reservoir_ncp_vcfv.cpp b/examples/reservoir_ncp_vcfv.cpp index acf478efd..363fa7dd8 100644 --- a/examples/reservoir_ncp_vcfv.cpp +++ b/examples/reservoir_ncp_vcfv.cpp @@ -41,7 +41,8 @@ struct ReservoirNcpVcfvProblem { using InheritsFrom = std::tuple +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; // enable the storage cache for this problem so that the storage cache receives wider // testing diff --git a/opm/models/common/multiphasebasemodel.hh b/opm/models/common/multiphasebasemodel.hh index 28743f789..4a177b229 100644 --- a/opm/models/common/multiphasebasemodel.hh +++ b/opm/models/common/multiphasebasemodel.hh @@ -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 +struct SpatialDiscretizationSplice { using type = TTag::VcfvDiscretization; }; //! set the number of equations to the number of phases template diff --git a/opm/models/discretization/common/fvbaseproperties.hh b/opm/models/discretization/common/fvbaseproperties.hh index 698c600b5..5fc6bfaa5 100644 --- a/opm/models/discretization/common/fvbaseproperties.hh +++ b/opm/models/discretization/common/fvbaseproperties.hh @@ -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 +struct LinearSolverSplice { using type = TTag::ParallelBiCGStabLinearSolver; }; //! by default, use finite differences to linearize the system of PDEs -SET_TAG_PROP(FvBaseDiscretization, LocalLinearizerSplice, FiniteDifferenceLocalLinearizer); +template +struct LocalLinearizerSplice { using type = TTag::FiniteDifferenceLocalLinearizer; }; /*! * \brief Representation of a function evaluation and all necessary derivatives with