From c6f24926c9259ffba6e56c04c7b8221ce5446ada Mon Sep 17 00:00:00 2001
From: Ivan Buntic <st116086@stud.uni-stuttgart.de>
Date: Fri, 17 Sep 2021 14:25:05 +0200
Subject: [PATCH] [discmethod] Update laws in flux and multidomain to use
 discretization tags

---
 dumux/flux/box/darcyslaw.hh                        |  4 ++--
 dumux/flux/box/fickslaw.hh                         |  4 ++--
 dumux/flux/box/forchheimerslaw.hh                  |  7 ++++---
 dumux/flux/box/fourierslaw.hh                      |  4 ++--
 dumux/flux/box/fourierslawnonequilibrium.hh        |  4 ++--
 dumux/flux/box/maxwellstefanslaw.hh                |  4 ++--
 dumux/flux/ccmpfa/darcyslaw.hh                     |  7 ++++---
 dumux/flux/ccmpfa/fickslaw.hh                      |  7 ++++---
 dumux/flux/ccmpfa/fourierslaw.hh                   |  7 ++++---
 dumux/flux/cctpfa/darcyslaw.hh                     | 10 ++++++----
 dumux/flux/cctpfa/fickslaw.hh                      | 10 ++++++----
 dumux/flux/cctpfa/forchheimerslaw.hh               |  7 ++++---
 dumux/flux/cctpfa/fourierslaw.hh                   |  9 +++++----
 dumux/flux/cctpfa/fourierslawnonequilibrium.hh     |  9 +++++----
 dumux/flux/cctpfa/maxwellstefanslaw.hh             |  8 +++++---
 dumux/flux/darcyslaw_fwd.hh                        |  4 ++--
 dumux/flux/effectivestresslaw_fwd.hh               |  2 +-
 dumux/flux/fickslaw_fwd.hh                         |  4 ++--
 dumux/flux/forchheimerslaw_fwd.hh                  |  9 +++++----
 dumux/flux/fourierslaw_fwd.hh                      |  4 ++--
 dumux/flux/fourierslawnonequilibrium_fwd.hh        |  4 ++--
 dumux/flux/hookeslaw_fwd.hh                        |  2 +-
 dumux/flux/maxwellstefanslaw_fwd.hh                |  4 ++--
 dumux/flux/staggered/freeflow/fickslaw.hh          |  8 +++++---
 dumux/flux/staggered/freeflow/fourierslaw.hh       |  7 ++++---
 dumux/flux/staggered/freeflow/maxwellstefanslaw.hh |  8 +++++---
 .../boundary/stokesdarcy/couplingdata.hh           | 14 +++++++-------
 dumux/multidomain/facet/box/fickslaw.hh            |  4 ++--
 dumux/multidomain/facet/box/fourierslaw.hh         |  4 ++--
 .../facet/cellcentered/tpfa/darcyslaw.hh           |  6 ++++--
 .../facet/cellcentered/tpfa/fickslaw.hh            | 14 ++++++++------
 .../facet/cellcentered/tpfa/fourierslaw.hh         | 14 ++++++++------
 32 files changed, 119 insertions(+), 94 deletions(-)

diff --git a/dumux/flux/box/darcyslaw.hh b/dumux/flux/box/darcyslaw.hh
index 0c011f5d1d..a1326195e3 100644
--- a/dumux/flux/box/darcyslaw.hh
+++ b/dumux/flux/box/darcyslaw.hh
@@ -37,7 +37,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 // forward declaration
@@ -49,7 +49,7 @@ class BoxDarcysLaw;
  * \brief Specialization of Darcy's Law for the box method.
  */
 template<class TypeTag>
-class DarcysLawImplementation<TypeTag, DiscretizationMethod::box>
+class DarcysLawImplementation<TypeTag, DiscretizationMethods::Box>
 : public BoxDarcysLaw<GetPropType<TypeTag, Properties::Scalar>, GetPropType<TypeTag, Properties::GridGeometry>>
 { };
 
diff --git a/dumux/flux/box/fickslaw.hh b/dumux/flux/box/fickslaw.hh
index 61b7a17b26..0349e2549c 100644
--- a/dumux/flux/box/fickslaw.hh
+++ b/dumux/flux/box/fickslaw.hh
@@ -39,7 +39,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template<class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -47,7 +47,7 @@ class FicksLawImplementation;
  * \brief Specialization of Fick's Law for the box method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class FicksLawImplementation<TypeTag, DiscretizationMethod::box, referenceSystem>
+class FicksLawImplementation<TypeTag, DiscretizationMethods::Box, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
diff --git a/dumux/flux/box/forchheimerslaw.hh b/dumux/flux/box/forchheimerslaw.hh
index eee7bb7b32..0ce29b5f0e 100644
--- a/dumux/flux/box/forchheimerslaw.hh
+++ b/dumux/flux/box/forchheimerslaw.hh
@@ -39,7 +39,7 @@
 namespace Dumux {
 
 // forward declarations
-template<class TypeTag, class ForchheimerVelocity, DiscretizationMethod discMethod>
+template<class TypeTag, class ForchheimerVelocity, class DiscretizationMethod>
 class ForchheimersLawImplementation;
 
 /*!
@@ -59,7 +59,7 @@ class BoxForchheimersLaw;
  * \brief Forchheimer's law for box scheme
  */
 template <class TypeTag, class ForchheimerVelocity>
-class ForchheimersLawImplementation<TypeTag, ForchheimerVelocity, DiscretizationMethod::box>
+class ForchheimersLawImplementation<TypeTag, ForchheimerVelocity, DiscretizationMethods::Box>
 : public BoxForchheimersLaw<GetPropType<TypeTag, Properties::Scalar>,
                             GetPropType<TypeTag, Properties::GridGeometry>,
                             ForchheimerVelocity>
@@ -88,8 +88,9 @@ public:
     //! state the scalar type of the law
     using Scalar = ScalarType;
 
+    using DiscretizationMethod = DiscretizationMethods::Box;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::box;
+    static constexpr DiscretizationMethod discMethod{};
 
     /*! \brief Compute the advective flux of a phase across
     *          the given sub-control volume face using the Forchheimer equation.
diff --git a/dumux/flux/box/fourierslaw.hh b/dumux/flux/box/fourierslaw.hh
index 988f87024b..6a825e6946 100644
--- a/dumux/flux/box/fourierslaw.hh
+++ b/dumux/flux/box/fourierslaw.hh
@@ -33,7 +33,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -41,7 +41,7 @@ class FouriersLawImplementation;
  * \brief Specialization of Fourier's Law for the box method.
  */
 template <class TypeTag>
-class FouriersLawImplementation<TypeTag, DiscretizationMethod::box>
+class FouriersLawImplementation<TypeTag, DiscretizationMethods::Box>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
diff --git a/dumux/flux/box/fourierslawnonequilibrium.hh b/dumux/flux/box/fourierslawnonequilibrium.hh
index 40bf51f39a..22ea175d80 100644
--- a/dumux/flux/box/fourierslawnonequilibrium.hh
+++ b/dumux/flux/box/fourierslawnonequilibrium.hh
@@ -36,7 +36,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class FouriersLawNonEquilibriumImplementation;
 
 /*!
@@ -44,7 +44,7 @@ class FouriersLawNonEquilibriumImplementation;
  * \brief Specialization of Fourier's Law for the box method for thermal nonequilibrium models.
  */
 template <class TypeTag>
-class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::box>
+class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethods::Box>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
diff --git a/dumux/flux/box/maxwellstefanslaw.hh b/dumux/flux/box/maxwellstefanslaw.hh
index 76b2b5b583..fa2a845e9a 100644
--- a/dumux/flux/box/maxwellstefanslaw.hh
+++ b/dumux/flux/box/maxwellstefanslaw.hh
@@ -40,7 +40,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class MaxwellStefansLawImplementation;
 
 /*!
@@ -48,7 +48,7 @@ class MaxwellStefansLawImplementation;
  * \brief Specialization of Maxwell Stefan's Law for the Box method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::box, referenceSystem>
+class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethods::Box, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
diff --git a/dumux/flux/ccmpfa/darcyslaw.hh b/dumux/flux/ccmpfa/darcyslaw.hh
index 97a5a3a2d8..9627f8e7ac 100644
--- a/dumux/flux/ccmpfa/darcyslaw.hh
+++ b/dumux/flux/ccmpfa/darcyslaw.hh
@@ -35,7 +35,7 @@
 namespace Dumux {
 
 //! forward declaration of the method-specific implementation
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 /*!
@@ -44,7 +44,7 @@ class DarcysLawImplementation;
  *        with multi-point flux approximation.
  */
 template<class TypeTag>
-class DarcysLawImplementation<TypeTag, DiscretizationMethod::ccmpfa>
+class DarcysLawImplementation<TypeTag, DiscretizationMethods::CCMpfa>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -151,8 +151,9 @@ class DarcysLawImplementation<TypeTag, DiscretizationMethod::ccmpfa>
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCMpfa;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::ccmpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     // export the type for the corresponding cache
     using Cache = MpfaDarcysLawCache;
diff --git a/dumux/flux/ccmpfa/fickslaw.hh b/dumux/flux/ccmpfa/fickslaw.hh
index 0e13b4eebc..071a9b2e23 100644
--- a/dumux/flux/ccmpfa/fickslaw.hh
+++ b/dumux/flux/ccmpfa/fickslaw.hh
@@ -34,7 +34,7 @@
 namespace Dumux {
 
 //! forward declaration of the method-specific implemetation
-template<class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template<class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -42,7 +42,7 @@ class FicksLawImplementation;
  * \brief Fick's law for cell-centered finite volume schemes with multi-point flux approximation
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class FicksLawImplementation<TypeTag, DiscretizationMethod::ccmpfa, referenceSystem>
+class FicksLawImplementation<TypeTag, DiscretizationMethods::CCMpfa, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -162,8 +162,9 @@ class FicksLawImplementation<TypeTag, DiscretizationMethod::ccmpfa, referenceSys
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCMpfa;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::ccmpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
diff --git a/dumux/flux/ccmpfa/fourierslaw.hh b/dumux/flux/ccmpfa/fourierslaw.hh
index 55fe8dbd46..c094d4abed 100644
--- a/dumux/flux/ccmpfa/fourierslaw.hh
+++ b/dumux/flux/ccmpfa/fourierslaw.hh
@@ -33,7 +33,7 @@
 namespace Dumux {
 
 //! forward declaration of the method-specific implementation
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -41,7 +41,7 @@ class FouriersLawImplementation;
  * \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation
  */
 template <class TypeTag>
-class FouriersLawImplementation<TypeTag, DiscretizationMethod::ccmpfa>
+class FouriersLawImplementation<TypeTag, DiscretizationMethods::CCMpfa>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -148,8 +148,9 @@ class FouriersLawImplementation<TypeTag, DiscretizationMethod::ccmpfa>
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCMpfa;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::ccmpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     // state the type for the corresponding cache and its filler
     using Cache = MpfaFouriersLawCache;
diff --git a/dumux/flux/cctpfa/darcyslaw.hh b/dumux/flux/cctpfa/darcyslaw.hh
index 98e6bc3f7a..fa9b7eb164 100644
--- a/dumux/flux/cctpfa/darcyslaw.hh
+++ b/dumux/flux/cctpfa/darcyslaw.hh
@@ -35,7 +35,7 @@
 namespace Dumux {
 
 // forward declarations
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 /*!
@@ -55,7 +55,7 @@ class CCTpfaDarcysLaw;
  * \note Darcy's law is specialized for network and surface grids (i.e. if grid dim < dimWorld)
  */
 template <class TypeTag>
-class DarcysLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
+class DarcysLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 : public CCTpfaDarcysLaw<GetPropType<TypeTag, Properties::Scalar>,
                          GetPropType<TypeTag, Properties::GridGeometry>,
                          (GetPropType<TypeTag, Properties::GridGeometry>::GridView::dimension < GetPropType<TypeTag, Properties::GridGeometry>::GridView::dimensionworld)>
@@ -145,8 +145,9 @@ class CCTpfaDarcysLaw<ScalarType, GridGeometry, /*isNetwork*/ false>
     //! state the scalar type of the law
     using Scalar = ScalarType;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! state the type for the corresponding cache
     using Cache = TpfaDarcysLawCache<ThisType, GridGeometry>;
@@ -309,8 +310,9 @@ public:
     //! state the scalar type of the law
     using Scalar = ScalarType;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! state the type for the corresponding cache
     using Cache = TpfaDarcysLawCache<ThisType, GridGeometry>;
diff --git a/dumux/flux/cctpfa/fickslaw.hh b/dumux/flux/cctpfa/fickslaw.hh
index 29c1aa8ea5..7876e600e1 100644
--- a/dumux/flux/cctpfa/fickslaw.hh
+++ b/dumux/flux/cctpfa/fickslaw.hh
@@ -39,7 +39,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template<class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -47,9 +47,9 @@ class FicksLawImplementation;
  * \brief Fick's law for cell-centered finite volume schemes with two-point flux approximation
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>
+class FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>
 {
-    using Implementation = FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>;
+    using Implementation = FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>;
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -117,8 +117,10 @@ class FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSys
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
+
     //! Return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
     { return referenceSystem; }
diff --git a/dumux/flux/cctpfa/forchheimerslaw.hh b/dumux/flux/cctpfa/forchheimerslaw.hh
index ccc07f448e..7e1065254d 100644
--- a/dumux/flux/cctpfa/forchheimerslaw.hh
+++ b/dumux/flux/cctpfa/forchheimerslaw.hh
@@ -39,7 +39,7 @@
 namespace Dumux {
 
 // forward declarations
-template<class TypeTag, class ForchheimerVelocity, DiscretizationMethod discMethod>
+template<class TypeTag, class ForchheimerVelocity, class DiscretizationMethod>
 class ForchheimersLawImplementation;
 
 /*!
@@ -60,7 +60,7 @@ class CCTpfaForchheimersLaw;
  * \note Forchheimer's law is specialized for network and surface grids (i.e. if grid dim < dimWorld)
  */
 template <class TypeTag, class ForchheimerVelocity>
-class ForchheimersLawImplementation<TypeTag, ForchheimerVelocity, DiscretizationMethod::cctpfa>
+class ForchheimersLawImplementation<TypeTag, ForchheimerVelocity, DiscretizationMethods::CCTpfa>
 : public CCTpfaForchheimersLaw<GetPropType<TypeTag, Properties::Scalar>,
                                GetPropType<TypeTag, Properties::GridGeometry>,
                                ForchheimerVelocity,
@@ -157,8 +157,9 @@ class CCTpfaForchheimersLaw<ScalarType, GridGeometry, ForchheimerVelocity, /*isN
     //! state the scalar type of the law
     using Scalar = ScalarType;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! state the type for the corresponding cache
     using Cache = TpfaForchheimersLawCache<ThisType, GridGeometry>;
diff --git a/dumux/flux/cctpfa/fourierslaw.hh b/dumux/flux/cctpfa/fourierslaw.hh
index 90fa112ac9..ac3b95b99c 100644
--- a/dumux/flux/cctpfa/fourierslaw.hh
+++ b/dumux/flux/cctpfa/fourierslaw.hh
@@ -34,7 +34,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -42,9 +42,9 @@ class FouriersLawImplementation;
  * \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation
  */
 template <class TypeTag>
-class FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
+class FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 {
-    using Implementation = FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>;
+    using Implementation = FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>;
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -103,8 +103,9 @@ class FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! export the type for the corresponding cache
     using Cache = TpfaFouriersLawCache;
diff --git a/dumux/flux/cctpfa/fourierslawnonequilibrium.hh b/dumux/flux/cctpfa/fourierslawnonequilibrium.hh
index cf0dc419c7..a2ddb1e83d 100644
--- a/dumux/flux/cctpfa/fourierslawnonequilibrium.hh
+++ b/dumux/flux/cctpfa/fourierslawnonequilibrium.hh
@@ -33,7 +33,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawNonEquilibriumImplementation;
 
 /*!
@@ -41,9 +41,9 @@ class FouriersLawNonEquilibriumImplementation;
  * \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation
  */
 template <class TypeTag>
-class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::cctpfa>
+class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 {
-    using Implementation = FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::cctpfa>;
+    using Implementation = FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethods::CCTpfa>;
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -66,8 +66,9 @@ class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::cct
     static constexpr auto sPhaseIdx = ModelTraits::numFluidPhases();
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     using Cache = FluxVariablesCaching::EmptyHeatConductionCache;
 
diff --git a/dumux/flux/cctpfa/maxwellstefanslaw.hh b/dumux/flux/cctpfa/maxwellstefanslaw.hh
index 87b3fd4717..89f3a1a48a 100644
--- a/dumux/flux/cctpfa/maxwellstefanslaw.hh
+++ b/dumux/flux/cctpfa/maxwellstefanslaw.hh
@@ -40,7 +40,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class MaxwellStefansLawImplementation;
 
 /*!
@@ -48,7 +48,7 @@ class MaxwellStefansLawImplementation;
  * \brief Specialization of Maxwell Stefan's Law for the CCTpfa method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem >
+class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem >
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -78,8 +78,10 @@ class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::cctpfa, ref
     using ReducedComponentMatrix = Dune::FieldMatrix<Scalar, numComponents-1, numComponents-1>;
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
+
     //return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
     { return referenceSystem; }
diff --git a/dumux/flux/darcyslaw_fwd.hh b/dumux/flux/darcyslaw_fwd.hh
index 9cba7efb4f..f69444c702 100644
--- a/dumux/flux/darcyslaw_fwd.hh
+++ b/dumux/flux/darcyslaw_fwd.hh
@@ -33,7 +33,7 @@
 namespace Dumux {
 
 // declaration of primary template
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 /*!
@@ -43,7 +43,7 @@ class DarcysLawImplementation;
  * These specializations are found in the headers included below.
  */
 template <class TypeTag>
-using DarcysLaw = DarcysLawImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod>;
+using DarcysLaw = DarcysLawImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/effectivestresslaw_fwd.hh b/dumux/flux/effectivestresslaw_fwd.hh
index 75e66af3e3..9b2092081d 100644
--- a/dumux/flux/effectivestresslaw_fwd.hh
+++ b/dumux/flux/effectivestresslaw_fwd.hh
@@ -35,7 +35,7 @@ namespace Dumux {
  * \note Specializations are provided for the different discretization methods.
  * These specializations are found in the headers included below.
  */
-template <class StressType, class GridGeometry, DiscretizationMethod dm = GridGeometry::discMethod>
+template <class StressType, class GridGeometry, class DiscretizationMethod = typename GridGeometry::DiscretizationMethod>
 class EffectiveStressLaw;
 
 } // end namespace Dumux
diff --git a/dumux/flux/fickslaw_fwd.hh b/dumux/flux/fickslaw_fwd.hh
index 265c964c03..8264f2c6c5 100644
--- a/dumux/flux/fickslaw_fwd.hh
+++ b/dumux/flux/fickslaw_fwd.hh
@@ -34,7 +34,7 @@
 namespace Dumux {
 
 // declaration of primary template
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -42,7 +42,7 @@ class FicksLawImplementation;
  * \brief Evaluates the diffusive mass flux according to Fick's law
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem =  ReferenceSystemFormulation::massAveraged>
-using FicksLaw = FicksLawImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod, referenceSystem>;
+using FicksLaw = FicksLawImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod, referenceSystem>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/forchheimerslaw_fwd.hh b/dumux/flux/forchheimerslaw_fwd.hh
index fe008ed2ff..9e45d2165e 100644
--- a/dumux/flux/forchheimerslaw_fwd.hh
+++ b/dumux/flux/forchheimerslaw_fwd.hh
@@ -34,12 +34,13 @@
 namespace Dumux {
 
 // definition of primary template
-template <class TypeTag, class VelocityLaw, DiscretizationMethod discMethod>
+template <class TypeTag, class VelocityLaw, class DiscretizationMethod>
 class ForchheimersLawImplementation
 {
     static_assert(
-        discMethod == DiscretizationMethod::cctpfa || discMethod == DiscretizationMethod::box,
-        "Forchheimer only implemented for cctpfa or box!"
+        GetPropType<TypeTag, Properties::GridGeometry>::discMethod == DiscretizationMethods::cctpfa || 
+        GetPropType<TypeTag, Properties::GridGeometry>::discMethod == DiscretizationMethods::box, 
+        "Forchheimer only implemented for cctpfa or box!")
     );
 };
 
@@ -57,7 +58,7 @@ using ForchheimersLaw = ForchheimersLawImplementation<
         GetPropType<TypeTag, Properties::GridGeometry>,
         GetPropType<TypeTag, Properties::FluxVariables>
     >,
-    GetPropType<TypeTag, Properties::GridGeometry>::discMethod
+    typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod
 >;
 
 } // end namespace Dumux
diff --git a/dumux/flux/fourierslaw_fwd.hh b/dumux/flux/fourierslaw_fwd.hh
index 1658102bfa..ef6da70c55 100644
--- a/dumux/flux/fourierslaw_fwd.hh
+++ b/dumux/flux/fourierslaw_fwd.hh
@@ -32,7 +32,7 @@
 namespace Dumux {
 
 // declaration of primary template
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -40,7 +40,7 @@ class FouriersLawImplementation;
  * \brief Evaluates the heat conduction flux according to Fouriers's law
  */
 template <class TypeTag>
-using FouriersLaw = FouriersLawImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod>;
+using FouriersLaw = FouriersLawImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/fourierslawnonequilibrium_fwd.hh b/dumux/flux/fourierslawnonequilibrium_fwd.hh
index a940df1c0d..77969c91d2 100644
--- a/dumux/flux/fourierslawnonequilibrium_fwd.hh
+++ b/dumux/flux/fourierslawnonequilibrium_fwd.hh
@@ -31,7 +31,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class FouriersLawNonEquilibriumImplementation;
 
 /*!
@@ -39,7 +39,7 @@ class FouriersLawNonEquilibriumImplementation;
  * \brief Evaluates the heat conduction flux according to Fouriers's law
  */
 template <class TypeTag>
-using FouriersLawNonEquilibrium = FouriersLawNonEquilibriumImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod>;
+using FouriersLawNonEquilibrium = FouriersLawNonEquilibriumImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/hookeslaw_fwd.hh b/dumux/flux/hookeslaw_fwd.hh
index 2ee6c30c7a..e3cc7c4982 100644
--- a/dumux/flux/hookeslaw_fwd.hh
+++ b/dumux/flux/hookeslaw_fwd.hh
@@ -35,7 +35,7 @@ namespace Dumux {
  * \note Specializations are provided for the different discretization methods.
  * These specializations are found in the headers included below.
  */
-template <class Scalar, class GridGeometry, DiscretizationMethod dm = GridGeometry::discMethod>
+template <class Scalar, class GridGeometry, class DiscretizationMethod = typename GridGeometry::DiscretizationMethod>
 class HookesLaw;
 
 } // end namespace Dumux
diff --git a/dumux/flux/maxwellstefanslaw_fwd.hh b/dumux/flux/maxwellstefanslaw_fwd.hh
index fad0ea05a8..f320dd1aa8 100644
--- a/dumux/flux/maxwellstefanslaw_fwd.hh
+++ b/dumux/flux/maxwellstefanslaw_fwd.hh
@@ -32,7 +32,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class MaxwellStefansLawImplementation;
 
 /*!
@@ -40,7 +40,7 @@ class MaxwellStefansLawImplementation;
  * \brief Evaluates the diffusive mass flux according to Maxwell Stefan's law
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem =  ReferenceSystemFormulation::massAveraged>
-using MaxwellStefansLaw = MaxwellStefansLawImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod, referenceSystem>;
+using MaxwellStefansLaw = MaxwellStefansLawImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod, referenceSystem>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/staggered/freeflow/fickslaw.hh b/dumux/flux/staggered/freeflow/fickslaw.hh
index a1a36d25ae..146b025e11 100644
--- a/dumux/flux/staggered/freeflow/fickslaw.hh
+++ b/dumux/flux/staggered/freeflow/fickslaw.hh
@@ -42,7 +42,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template<class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -50,7 +50,7 @@ class FicksLawImplementation;
  * \brief Specialization of Fick's Law for the staggered free flow method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class FicksLawImplementation<TypeTag, DiscretizationMethod::staggered, referenceSystem>
+class FicksLawImplementation<TypeTag, DiscretizationMethods::Staggered, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -72,8 +72,10 @@ class FicksLawImplementation<TypeTag, DiscretizationMethod::staggered, reference
     static_assert(ModelTraits::numFluidPhases() == 1, "Only one phase supported!");
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::Staggered;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::staggered;
+    static constexpr DiscretizationMethod discMethod{};
+
     //return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
     { return referenceSystem; }
diff --git a/dumux/flux/staggered/freeflow/fourierslaw.hh b/dumux/flux/staggered/freeflow/fourierslaw.hh
index 578777bda0..1221ec07c1 100644
--- a/dumux/flux/staggered/freeflow/fourierslaw.hh
+++ b/dumux/flux/staggered/freeflow/fourierslaw.hh
@@ -34,7 +34,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -42,7 +42,7 @@ class FouriersLawImplementation;
  * \brief Specialization of Fourier's Law for the staggered free flow method.
  */
 template <class TypeTag>
-class FouriersLawImplementation<TypeTag, DiscretizationMethod::staggered>
+class FouriersLawImplementation<TypeTag, DiscretizationMethods::Staggered>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -54,8 +54,9 @@ class FouriersLawImplementation<TypeTag, DiscretizationMethod::staggered>
     using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices;
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::Staggered;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::staggered;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! state the type for the corresponding cache
     //! We don't cache anything for this law
diff --git a/dumux/flux/staggered/freeflow/maxwellstefanslaw.hh b/dumux/flux/staggered/freeflow/maxwellstefanslaw.hh
index d74deb7523..d6408f7893 100644
--- a/dumux/flux/staggered/freeflow/maxwellstefanslaw.hh
+++ b/dumux/flux/staggered/freeflow/maxwellstefanslaw.hh
@@ -38,7 +38,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class MaxwellStefansLawImplementation;
 
 /*!
@@ -46,7 +46,7 @@ class MaxwellStefansLawImplementation;
  * \brief Specialization of Maxwell Stefan's Law for the Staggered method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::staggered, referenceSystem>
+class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethods::Staggered, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -75,8 +75,10 @@ class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::staggered,
     static_assert(referenceSystem == ReferenceSystemFormulation::massAveraged, "only the mass averaged reference system is supported for the Maxwell-Stefan formulation");
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::Staggered;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::staggered;
+    static constexpr DiscretizationMethod discMethod{};
+
     //return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
     { return referenceSystem; }
diff --git a/dumux/multidomain/boundary/stokesdarcy/couplingdata.hh b/dumux/multidomain/boundary/stokesdarcy/couplingdata.hh
index a4afec061f..25f6a562a4 100644
--- a/dumux/multidomain/boundary/stokesdarcy/couplingdata.hh
+++ b/dumux/multidomain/boundary/stokesdarcy/couplingdata.hh
@@ -100,7 +100,7 @@ struct IsSameFluidSystem<FS, FS>
 };
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -116,8 +116,8 @@ struct IsFicksLaw : public std::false_type {};
  * \brief This structs indicates that Fick's law is used for diffusion.
  * \tparam DiffLaw The diffusion law.
  */
-template<class T, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
-struct IsFicksLaw<FicksLawImplementation<T, discMethod, referenceSystem>> : public std::true_type {};
+template<class T, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
+struct IsFicksLaw<FicksLawImplementation<T, DiscretizationMethod, referenceSystem>> : public std::true_type {};
 
 /*!
  * \ingroup StokesDarcyCoupling
@@ -194,11 +194,11 @@ struct IndexHelper<stokesIdx, darcyIdx, FFFS, true>
 };
 
 //! forward declare
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 //! forward declare
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class ForchheimersLawImplementation;
 
 
@@ -241,8 +241,8 @@ class StokesDarcyCouplingDataImplementationBase
     static constexpr auto darcyIdx = CouplingManager::darcyIdx;
 
     using AdvectionType = GetPropType<SubDomainTypeTag<darcyIdx>, Properties::AdvectionType>;
-    using DarcysLaw = DarcysLawImplementation<SubDomainTypeTag<darcyIdx>, GridGeometry<darcyIdx>::discMethod>;
-    using ForchheimersLaw = ForchheimersLawImplementation<SubDomainTypeTag<darcyIdx>, GridGeometry<darcyIdx>::discMethod>;
+    using DarcysLaw = DarcysLawImplementation<SubDomainTypeTag<darcyIdx>, typename GridGeometry<darcyIdx>::DiscretizationMethod>;
+    using ForchheimersLaw = ForchheimersLawImplementation<SubDomainTypeTag<darcyIdx>, typename GridGeometry<darcyIdx>::DiscretizationMethod>;
 
     static constexpr bool adapterUsed = ModelTraits<darcyIdx>::numFluidPhases() > 1;
     using IndexHelper = Dumux::IndexHelper<stokesIdx, darcyIdx, FluidSystem<stokesIdx>, adapterUsed>;
diff --git a/dumux/multidomain/facet/box/fickslaw.hh b/dumux/multidomain/facet/box/fickslaw.hh
index 6ae5704709..075aa5f175 100644
--- a/dumux/multidomain/facet/box/fickslaw.hh
+++ b/dumux/multidomain/facet/box/fickslaw.hh
@@ -49,9 +49,9 @@ namespace Dumux {
  */
 template<class TypeTag, ReferenceSystemFormulation referenceSystem = ReferenceSystemFormulation::massAveraged>
 class BoxFacetCouplingFicksLaw
-: public FicksLawImplementation<TypeTag, DiscretizationMethod::box, referenceSystem>
+: public FicksLawImplementation<TypeTag, DiscretizationMethods::Box, referenceSystem>
 {
-    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethod::box, referenceSystem>;
+    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethods::Box, referenceSystem>;
 
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
     using FVElementGeometry = typename GridGeometry::LocalView;
diff --git a/dumux/multidomain/facet/box/fourierslaw.hh b/dumux/multidomain/facet/box/fourierslaw.hh
index e492a8b3d7..a6363228c3 100644
--- a/dumux/multidomain/facet/box/fourierslaw.hh
+++ b/dumux/multidomain/facet/box/fourierslaw.hh
@@ -50,9 +50,9 @@ namespace Dumux {
  */
 template<class TypeTag>
 class BoxFacetCouplingFouriersLaw
-: public FouriersLawImplementation<TypeTag, DiscretizationMethod::box>
+: public FouriersLawImplementation<TypeTag, DiscretizationMethods::Box>
 {
-    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethod::box>;
+    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethods::Box>;
 
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
diff --git a/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh b/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh
index 937c76b9a3..05c4ec5d7a 100644
--- a/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh
+++ b/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh
@@ -155,7 +155,8 @@ class CCTpfaFacetCouplingDarcysLawImpl<ScalarType, GridGeometry, /*isNetwork*/fa
     //! state the scalar type of the law
     using Scalar = ScalarType;
     //! export the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
+    static constexpr DiscretizationMethod discMethod{};
     //! export the type for the corresponding cache
     using Cache = CCTpfaFacetCouplingDarcysLawCache<ThisType, GridGeometry, /*isNetwork*/false>;
     //! export the type used to store transmissibilities
@@ -428,7 +429,8 @@ class CCTpfaFacetCouplingDarcysLawImpl<ScalarType, GridGeometry, /*isNetwork*/tr
     //! state the scalar type of the law
     using Scalar = ScalarType;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
+    static constexpr DiscretizationMethod discMethod{};
     //! state the type for the corresponding cache
     using Cache = CCTpfaFacetCouplingDarcysLawCache<ThisType, GridGeometry, /*isNetwork*/true>;
     //! export the type used to store transmissibilities
diff --git a/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh b/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh
index e009f41b12..f56365cb5e 100644
--- a/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh
+++ b/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh
@@ -67,10 +67,10 @@ using CCTpfaFacetCouplingFicksLaw =
  */
 template<class TypeTag, ReferenceSystemFormulation referenceSystem>
 class CCTpfaFacetCouplingFicksLawImpl<TypeTag, referenceSystem, /*isNetwork*/false>
-: public FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>
+: public FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>
 {
     using Implementation = CCTpfaFacetCouplingFicksLawImpl<TypeTag, referenceSystem, false>;
-    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>;
+    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>;
 
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
     using FVElementGeometry = typename GridGeometry::LocalView;
@@ -150,8 +150,9 @@ public:
     //! export the type for the corresponding cache
     using Cache = FacetCouplingFicksLawCache;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! Return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
@@ -306,10 +307,10 @@ public:
  */
 template<class TypeTag, ReferenceSystemFormulation referenceSystem>
 class CCTpfaFacetCouplingFicksLawImpl<TypeTag, referenceSystem, /*isNetwork*/true>
-: public FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>
+: public FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>
 {
     using Implementation = CCTpfaFacetCouplingFicksLawImpl<TypeTag, referenceSystem, true>;
-    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>;
+    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>;
 
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
     using FVElementGeometry = typename GridGeometry::LocalView;
@@ -384,8 +385,9 @@ public:
     //! export the type for the corresponding cache
     using Cache = FacetCouplingFicksLawCache;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! Return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
diff --git a/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh b/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh
index 6e43c638be..4c979da2c2 100644
--- a/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh
+++ b/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh
@@ -64,10 +64,10 @@ using CCTpfaFacetCouplingFouriersLaw =
  */
 template<class TypeTag>
 class CCTpfaFacetCouplingFouriersLawImpl<TypeTag, /*isNetwork*/false>
-: public FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
+: public FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 {
     using Implementation = CCTpfaFacetCouplingFouriersLawImpl<TypeTag, false>;
-    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>;
+    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>;
 
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -137,7 +137,8 @@ public:
     using Cache = FacetCouplingFouriersLawCache;
 
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! Compute the conductive heat flux
     template< class Problem, class ElementVolumeVariables, class ElementFluxVarsCache >
@@ -270,10 +271,10 @@ public:
  */
 template<class TypeTag>
 class CCTpfaFacetCouplingFouriersLawImpl<TypeTag, /*isNetwork*/true>
-: public FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
+: public FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 {
     using Implementation = CCTpfaFacetCouplingFouriersLawImpl<TypeTag, true>;
-    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>;
+    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>;
 
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -338,7 +339,8 @@ public:
     using Cache = FacetCouplingFouriersLawCache;
 
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! Compute the conductive heat flux
     template< class Problem, class ElementVolumeVariables, class ElementFluxVarsCache >
-- 
GitLab