diff --git a/dumux/porousmediumflow/nonequilibrium/indices.hh b/dumux/porousmediumflow/nonequilibrium/indices.hh index 0bd3dca45cefb3e449d1a71a283d13bcae833864..3ff9b9d5906e5435504c07586744ba170e39ea65 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 21c3043e86ba0e66367deae9b99f3890dfee47b8..ce3385be411991ed1a2299a3e0238f7add8536e7 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) {