From 2a26c4b43ec66bee42ed694318d789c1e9b09a47 Mon Sep 17 00:00:00 2001
From: Beatrix Becker <beatrix.becker@iws.uni-stuttgart.de>
Date: Wed, 7 Mar 2018 16:51:30 +0100
Subject: [PATCH] [mpnc nonequilibrium] remove TypeTage in indices

---
 dumux/porousmediumflow/nonequilibrium/indices.hh | 15 +++++++--------
 dumux/porousmediumflow/nonequilibrium/model.hh   | 12 +++++++++++-
 2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/dumux/porousmediumflow/nonequilibrium/indices.hh b/dumux/porousmediumflow/nonequilibrium/indices.hh
index 0bd3dca45c..3ff9b9d590 100644
--- a/dumux/porousmediumflow/nonequilibrium/indices.hh
+++ b/dumux/porousmediumflow/nonequilibrium/indices.hh
@@ -33,22 +33,21 @@ namespace Dumux
  * \ingroup PorousmediumNonEquilibriumModel
  * \brief The primary variable and equation indices for the MpNc model.
  */
-template <class TypeTag, int BasePVOffset = 0>
-class NonEquilbriumIndices: public GET_PROP_TYPE(TypeTag, EquilibriumIndices)
+template <class EquilibriumIndices, class FluidSystem, int numEnergyEquationFluid, int numEnergyEquationSolid, int numEquationBalance, int BasePVOffset = 0>
+class NonEquilbriumIndices: public EquilibriumIndices
 {
 public:
-     using FluidSystem  = typename GET_PROP_TYPE(TypeTag, FluidSystem);
      enum { numPhases = FluidSystem::numPhases };
-     enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) };
-     enum { numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid) };
+     enum { numEnergyEqFluid = numEnergyEquationFluid };
+     enum { numEnergyEqSolid = numEnergyEquationSolid };
      /*! \todo Replacing the sum below with GET_PROP_VALUE(TypeTag, NumEq)
       *        yields a compilation error with clang, due to complex
       *        interdependencies of MPNC and NonEquilibrium type tags and
       *        Indices classes. This should be fixed.
       */
-     static const unsigned int numEq = GET_PROP_VALUE(TypeTag, NumEqBalance)
-                                     + GET_PROP_VALUE(TypeTag, NumEnergyEqFluid)
-                                     + GET_PROP_VALUE(TypeTag, NumEnergyEqSolid);
+     static const unsigned int numEq = numEquationBalance
+                                     + numEnergyEqFluid
+                                     + numEnergyEqSolid;
 
     /*!
      * \brief Index for the temperature of the wetting phase in a vector of primary
diff --git a/dumux/porousmediumflow/nonequilibrium/model.hh b/dumux/porousmediumflow/nonequilibrium/model.hh
index 21c3043e86..ce3385be41 100644
--- a/dumux/porousmediumflow/nonequilibrium/model.hh
+++ b/dumux/porousmediumflow/nonequilibrium/model.hh
@@ -75,7 +75,17 @@ SET_TYPE_PROP(NonEquilibrium, HeatConductionType , FouriersLawNonEquilibrium<Typ
 SET_INT_PROP(NonEquilibrium, NumEq, GET_PROP_VALUE(TypeTag, NumEqBalance) +  GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) + GET_PROP_VALUE(TypeTag, NumEnergyEqSolid));
 
 //! indices for non-isothermal models
-SET_TYPE_PROP(NonEquilibrium, Indices, NonEquilbriumIndices<TypeTag, 0>);
+SET_PROP(NonEquilibrium, Indices)
+{
+private:
+    using EquilibriumIndices = typename GET_PROP_TYPE(TypeTag, EquilibriumIndices);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    static constexpr int numEnergyEquationFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid);
+    static constexpr int numEnergyEquationSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid);
+    static constexpr int numEquationBalance = GET_PROP_VALUE(TypeTag, NumEqBalance);
+public:
+    using type = NonEquilbriumIndices<EquilibriumIndices, FluidSystem, numEnergyEquationFluid, numEnergyEquationSolid, numEquationBalance, 0>;
+};
 
 SET_PROP(NonEquilibrium, FluidState)
 {
-- 
GitLab