diff --git a/dumux/common/properties.hh b/dumux/common/properties.hh
index ff39703da05ff497bff27cb8bbdbb138d2012ff8..acde51138f8bcf8c06c658337a3c8bcb7fa38fa2 100644
--- a/dumux/common/properties.hh
+++ b/dumux/common/properties.hh
@@ -266,12 +266,6 @@ struct NumEnergyEqFluid { using type = UndefinedProperty; };
 template<class TypeTag, class MyTypeTag>
 struct NumEnergyEqSolid { using type = UndefinedProperty; };
 
-template<class TypeTag, class MyTypeTag>
-struct AwnSurface { using type = UndefinedProperty; };
-template<class TypeTag, class MyTypeTag>
-struct AwsSurface { using type = UndefinedProperty; };
-template<class TypeTag, class MyTypeTag>
-struct AnsSurface { using type = UndefinedProperty; };
 template<class TypeTag, class MyTypeTag>
 struct NusseltFormulation { using type = UndefinedProperty; };
 template<class TypeTag, class MyTypeTag>
diff --git a/dumux/discretization/box/fourierslawnonequilibrium.hh b/dumux/discretization/box/fourierslawnonequilibrium.hh
index ee9fca8d306c40d8f5a1b3c805fd0816b84c3e3f..4e045c9b8e7e35de3ead7ef0d942b70b11afad0b 100644
--- a/dumux/discretization/box/fourierslawnonequilibrium.hh
+++ b/dumux/discretization/box/fourierslawnonequilibrium.hh
@@ -46,26 +46,20 @@ class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::box
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
-    using FluidState = GetPropType<TypeTag, Properties::FluidState>;
-    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
-    using VolumeVariables = GetPropType<TypeTag, Properties::VolumeVariables>;
     using FVElementGeometry = typename GetPropType<TypeTag, Properties::FVGridGeometry>::LocalView;
-    using SubControlVolume = typename FVElementGeometry::SubControlVolume;
-    using PrimaryVariables = GetPropType<TypeTag, Properties::PrimaryVariables>;
     using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace;
     using ElementVolumeVariables = typename GetPropType<TypeTag, Properties::GridVolumeVariables>::LocalView;
     using ElementFluxVariablesCache = typename GetPropType<TypeTag, Properties::GridFluxVariablesCache>::LocalView;
     using GridView = GetPropType<TypeTag, Properties::GridView>;
-    using IndexType = typename GridView::IndexSet::IndexType;
     using ThermalConductivityModel = GetPropType<TypeTag, Properties::ThermalConductivityModel>;
-
+    using ModelTraits = GetPropType<TypeTag, Properties::ModelTraits>;
     using Element = typename GridView::template Codim<0>::Entity;
 
     enum { dim = GridView::dimension} ;
     enum { dimWorld = GridView::dimensionworld} ;
-    enum { numPhases = GetPropType<TypeTag, Properties::ModelTraits>::numPhases()} ;
+
     enum { numEnergyEqFluid = getPropValue<TypeTag, Properties::NumEnergyEqFluid>() };
-    enum {sPhaseIdx = FluidSystem::numPhases};
+    enum { sPhaseIdx = ModelTraits::numPhases() };
 
     using DimWorldMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>;
 
@@ -88,8 +82,9 @@ public:
        // effective diffusion tensors
         if (phaseIdx != sPhaseIdx)
         {
-           if (numEnergyEqFluid == 1)
-            {   //when only one energy equation for fluids is used, we need an effective law for that
+            //when number of energyEq for the fluid are smaller than numPhases that means that we need an effecitve law
+            if (numEnergyEqFluid < ModelTraits::numPhases())
+            {
                 insideLambda += ThermalConductivityModel::effectiveThermalConductivity(insideVolVars, problem.spatialParams(), element, fvGeometry, insideScv);
                 outsideLambda += ThermalConductivityModel::effectiveThermalConductivity(outsideVolVars, problem.spatialParams(), element, fvGeometry, outsideScv);
             }
@@ -102,8 +97,8 @@ public:
         //solid phase
         else
         {
-            insideLambda += insideVolVars.solidThermalConductivity()*(1-insideVolVars.porosity());
-            outsideLambda +=outsideVolVars.solidThermalConductivity()*(1-outsideVolVars.porosity());
+            insideLambda += insideVolVars.solidThermalConductivity()*(1.0-insideVolVars.porosity());
+            outsideLambda += outsideVolVars.solidThermalConductivity()*(1.0-outsideVolVars.porosity());
         }
 
         // scale by extrusion factor
diff --git a/dumux/discretization/cellcentered/tpfa/fourierslawnonequilibrium.hh b/dumux/discretization/cellcentered/tpfa/fourierslawnonequilibrium.hh
new file mode 100644
index 0000000000000000000000000000000000000000..ba1958b1e13ebe4ed7eddb604d83096f4dcbf81b
--- /dev/null
+++ b/dumux/discretization/cellcentered/tpfa/fourierslawnonequilibrium.hh
@@ -0,0 +1,183 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+* \file
+* \ingroup CCTpfaDiscretization
+* \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation
+*/
+#ifndef DUMUX_DISCRETIZATION_CC_TPFA_FOURIERS_LAW_NONEQUILIBRIUM_HH
+#define DUMUX_DISCRETIZATION_CC_TPFA_FOURIERS_LAW_NONEQUILIBRIUM_HH
+
+#include <dumux/common/properties.hh>
+#include <dumux/discretization/method.hh>
+#include <dumux/discretization/cellcentered/tpfa/computetransmissibility.hh>
+
+namespace Dumux {
+
+// forward declaration
+template<class TypeTag, DiscretizationMethod discMethod>
+class FouriersLawNonEquilibriumImplementation;
+
+/*!
+* \ingroup CCTpfaDiscretization
+* \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation
+*/
+template <class TypeTag>
+class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::cctpfa>
+{
+    using Implementation = FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::cctpfa>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using Problem = GetPropType<TypeTag, Properties::Problem>;
+    using FVElementGeometry = typename GetPropType<TypeTag, Properties::FVGridGeometry>::LocalView;
+    using SubControlVolume = typename FVElementGeometry::SubControlVolume;
+    using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace;
+    using GridView = GetPropType<TypeTag, Properties::GridView>;
+    using ElementVolumeVariables = typename GetPropType<TypeTag, Properties::GridVolumeVariables>::LocalView;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using ElementFluxVarsCache = typename GetPropType<TypeTag, Properties::GridFluxVariablesCache>::LocalView;
+
+    static constexpr int dim = GridView::dimension;
+    static constexpr int dimWorld = GridView::dimensionworld;
+
+    using ThermalConductivityModel = GetPropType<TypeTag, Properties::ThermalConductivityModel>;
+    using ModelTraits = GetPropType<TypeTag, Properties::ModelTraits>;
+
+    enum { numEnergyEqFluid = ModelTraits::numEnergyEqFluid() };
+    enum { sPhaseIdx = ModelTraits::numPhases() };
+
+public:
+    //! state the discretization method this implementation belongs to
+    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+
+    using Cache = FluxVariablesCaching::EmptyHeatConductionCache;
+
+    //! Compute the heat condution flux assuming thermal equilibrium
+    static Scalar flux(const Problem& problem,
+                       const Element& element,
+                       const FVElementGeometry& fvGeometry,
+                       const ElementVolumeVariables& elemVolVars,
+                       const SubControlVolumeFace& scvf,
+                       const int phaseIdx,
+                       const ElementFluxVarsCache& elemFluxVarsCache)
+    {
+        Scalar tInside = 0.0;
+        Scalar tOutside = 0.0;
+        // get the inside/outside temperatures
+        if (phaseIdx < numEnergyEqFluid)
+        {
+            tInside += elemVolVars[scvf.insideScvIdx()].temperatureFluid(phaseIdx);
+            tOutside += elemVolVars[scvf.outsideScvIdx()].temperatureFluid(phaseIdx);
+        }
+        else //temp solid
+        {
+            tInside += elemVolVars[scvf.insideScvIdx()].temperatureSolid();
+            tOutside += elemVolVars[scvf.outsideScvIdx()].temperatureSolid();
+        }
+
+        Scalar tij = calculateTransmissibility(problem, element, fvGeometry, elemVolVars, scvf, phaseIdx);
+        return tij*(tInside - tOutside);
+    }
+
+    //! Compute transmissibilities
+    static Scalar calculateTransmissibility(const Problem& problem,
+                                            const Element& element,
+                                            const FVElementGeometry& fvGeometry,
+                                            const ElementVolumeVariables& elemVolVars,
+                                            const SubControlVolumeFace& scvf,
+                                            const int phaseIdx)
+    {
+        Scalar tij;
+
+        const auto insideScvIdx = scvf.insideScvIdx();
+        const auto& insideScv = fvGeometry.scv(insideScvIdx);
+        const auto& insideVolVars = elemVolVars[insideScvIdx];
+        Scalar insideLambda = 0.0;
+        Scalar outsideLambda = 0.0;
+
+        // effective diffusion tensors
+        if (phaseIdx != sPhaseIdx)
+        {
+            //when number of energyEq for the fluid are smaller than numPhases that means that we need an effecitve law
+           if (numEnergyEqFluid < ModelTraits::numPhases())
+            {
+                insideLambda += ThermalConductivityModel::effectiveThermalConductivity(insideVolVars, problem.spatialParams(), element, fvGeometry, insideScv);
+            }
+            else //numEnergyEqFluid >1
+            {
+                insideLambda += insideVolVars.fluidThermalConductivity(phaseIdx)*insideVolVars.saturation(phaseIdx)*insideVolVars.porosity();
+            }
+        }
+        //solid phase
+        else
+        {
+            insideLambda += insideVolVars.solidThermalConductivity()*(1.0-insideVolVars.porosity());
+        }
+
+        const Scalar ti = computeTpfaTransmissibility(scvf, insideScv, insideLambda, insideVolVars.extrusionFactor());
+
+        // for the boundary (dirichlet) or at branching points we only need ti
+        if (scvf.boundary() || scvf.numOutsideScvs() > 1)
+        {
+            tij = scvf.area()*ti;
+        }
+        // otherwise we compute a tpfa harmonic mean
+        else
+        {
+            const auto outsideScvIdx = scvf.outsideScvIdx();
+            const auto& outsideScv = fvGeometry.scv(outsideScvIdx);
+            const auto& outsideVolVars = elemVolVars[outsideScvIdx];
+
+       // effective diffusion tensors
+        if (phaseIdx != sPhaseIdx)
+        {
+            //when number of energyEq for the fluid are smaller than numPhases that means that we need an effecitve law
+           if (numEnergyEqFluid < ModelTraits::numPhases())
+            {
+                outsideLambda += ThermalConductivityModel::effectiveThermalConductivity(outsideVolVars, problem.spatialParams(), element, fvGeometry, outsideScv);
+            }
+            else
+            {
+                outsideLambda += outsideVolVars.fluidThermalConductivity(phaseIdx)*outsideVolVars.saturation(phaseIdx)*outsideVolVars.porosity();
+            }
+        }
+        //solid phase
+        else
+        {
+            outsideLambda +=outsideVolVars.solidThermalConductivity()*(1.0-outsideVolVars.porosity());
+        }
+            Scalar tj;
+            if (dim == dimWorld)
+                // assume the normal vector from outside is anti parallel so we save flipping a vector
+                tj = -1.0*computeTpfaTransmissibility(scvf, outsideScv, outsideLambda, outsideVolVars.extrusionFactor());
+            else
+                tj = computeTpfaTransmissibility(fvGeometry.flipScvf(scvf.index()), outsideScv, outsideLambda, outsideVolVars.extrusionFactor());
+
+            // check for division by zero!
+            if (ti*tj <= 0.0)
+                tij = 0;
+            else
+                tij = scvf.area()*(ti * tj)/(ti + tj);
+        }
+        return tij;
+    }
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/dumux/flux/fourierslawnonequilibrium.hh b/dumux/flux/fourierslawnonequilibrium.hh
index cbd9c38946d9d29decd08e89b7f6cc2795383d20..ad6822283a5826727ca3837d65dd69c2d2a1f91f 100644
--- a/dumux/flux/fourierslawnonequilibrium.hh
+++ b/dumux/flux/fourierslawnonequilibrium.hh
@@ -43,6 +43,7 @@ using FouriersLawNonEquilibrium = FouriersLawNonEquilibriumImplementation<TypeTa
 
 } // end namespace Dumux
 
+#include <dumux/discretization/cellcentered/tpfa/fourierslawnonequilibrium.hh>
 #include <dumux/discretization/box/fourierslawnonequilibrium.hh>
 
 #endif
diff --git a/dumux/material/constraintsolvers/immiscibleflash.hh b/dumux/material/constraintsolvers/immiscibleflash.hh
index c8cf66acd2542ba1dcba046efa04daeba7db9750..366b02617ef6d938d6319f1b6f0370913c29279a 100644
--- a/dumux/material/constraintsolvers/immiscibleflash.hh
+++ b/dumux/material/constraintsolvers/immiscibleflash.hh
@@ -80,6 +80,14 @@ class ImmiscibleFlash
 public:
     using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
 
+    /*!
+     * \brief Contruct a new flash
+     * \param wettingPhaseIdx the phase index of the wetting phase
+     */
+    explicit ImmiscibleFlash(int wettingPhaseIdx = 0)
+    : wettingPhaseIdx_(wettingPhaseIdx)
+    {}
+
     /*!
      * \brief Guess initial values for all quantities.
      * \param fluidState Thermodynamic state of the fluids
@@ -87,9 +95,9 @@ public:
      * \param globalMolarities
      */
     template <class FluidState>
-    static void guessInitial(FluidState &fluidState,
-                             ParameterCache &paramCache,
-                             const ComponentVector &globalMolarities)
+    void guessInitial(FluidState &fluidState,
+                      ParameterCache &paramCache,
+                      const ComponentVector &globalMolarities)
     {
         // the sum of all molarities
         Scalar sumMoles = 0;
@@ -116,10 +124,10 @@ public:
      * The phase's fugacities must already be set.
      */
     template <class MaterialLaw, class FluidState>
-    static void solve(FluidState &fluidState,
-                      ParameterCache &paramCache,
-                      const typename MaterialLaw::Params &matParams,
-                      const ComponentVector &globalMolarities)
+    void solve(FluidState &fluidState,
+               ParameterCache &paramCache,
+               const typename MaterialLaw::Params &matParams,
+               const ComponentVector &globalMolarities)
     {
 #if DUNE_VERSION_LT(DUNE_COMMON, 2, 7)
         Dune::FMatrixPrecision<Scalar>::set_singular_limit(1e-25);
@@ -151,7 +159,7 @@ public:
             }
         }
 
-        /////////////////////////
+//         /////////////////////////
         // Newton method
         /////////////////////////
 
@@ -235,7 +243,7 @@ public:
 
 protected:
     template <class FluidState>
-    static void printFluidState_(const FluidState &fs)
+    void printFluidState_(const FluidState &fs)
     {
         std::cout << "saturations: ";
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
@@ -264,12 +272,12 @@ protected:
     }
 
     template <class MaterialLaw, class FluidState>
-    static void linearize_(Matrix &J,
-                           Vector &b,
-                           FluidState &fluidState,
-                           ParameterCache &paramCache,
-                           const typename MaterialLaw::Params &matParams,
-                           const ComponentVector &globalMolarities)
+    void linearize_(Matrix &J,
+                    Vector &b,
+                    FluidState &fluidState,
+                    ParameterCache &paramCache,
+                    const typename MaterialLaw::Params &matParams,
+                    const ComponentVector &globalMolarities)
     {
         FluidState origFluidState(fluidState);
         ParameterCache origParamCache(paramCache);
@@ -314,10 +322,10 @@ protected:
     }
 
     template <class FluidState>
-    static void calculateDefect_(Vector &b,
-                                 const FluidState &fluidStateEval,
-                                 const FluidState &fluidState,
-                                 const ComponentVector &globalMolarities)
+    void calculateDefect_(Vector &b,
+                          const FluidState &fluidStateEval,
+                          const FluidState &fluidState,
+                          const ComponentVector &globalMolarities)
     {
         // global molarities are given
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
@@ -330,10 +338,10 @@ protected:
     }
 
     template <class MaterialLaw, class FluidState>
-    static Scalar update_(FluidState &fluidState,
-                          ParameterCache &paramCache,
-                          const typename MaterialLaw::Params &matParams,
-                          const Vector &deltaX)
+    Scalar update_(FluidState &fluidState,
+                   ParameterCache &paramCache,
+                   const typename MaterialLaw::Params &matParams,
+                   const Vector &deltaX)
     {
         Scalar relError = 0;
         for (int pvIdx = 0; pvIdx < numEq; ++ pvIdx) {
@@ -364,9 +372,9 @@ protected:
     }
 
     template <class MaterialLaw, class FluidState>
-    static void completeFluidState_(FluidState &fluidState,
-                                    ParameterCache &paramCache,
-                                    const typename MaterialLaw::Params &matParams)
+    void completeFluidState_(FluidState &fluidState,
+                             ParameterCache &paramCache,
+                             const typename MaterialLaw::Params &matParams)
     {
         // calculate the saturation of the last phase as a function of
         // the other saturations
@@ -392,7 +400,7 @@ protected:
         // and first pressure are already set because it is implicitly
         // solved for.)
         ComponentVector pc;
-        MaterialLaw::capillaryPressures(pc, matParams, fluidState);
+        MaterialLaw::capillaryPressures(pc, matParams, fluidState, wettingPhaseIdx_);
         for (int phaseIdx = 1; phaseIdx < numPhases; ++phaseIdx)
             fluidState.setPressure(phaseIdx,
                                    fluidState.pressure(0)
@@ -410,15 +418,15 @@ protected:
         }
     }
 
-    static bool isPressureIdx_(int pvIdx)
+    bool isPressureIdx_(int pvIdx)
     { return pvIdx == 0; }
 
-    static bool isSaturationIdx_(int pvIdx)
+    bool isSaturationIdx_(int pvIdx)
     { return 1 <= pvIdx && pvIdx < numPhases; }
 
     // retrieves a quantity from the fluid state
     template <class FluidState>
-    static Scalar getQuantity_(const FluidState &fs, int pvIdx)
+    Scalar getQuantity_(const FluidState &fs, int pvIdx)
     {
         assert(pvIdx < numEq);
 
@@ -437,11 +445,11 @@ protected:
 
     // set a quantity in the fluid state
     template <class MaterialLaw, class FluidState>
-    static void setQuantity_(FluidState &fs,
-                             ParameterCache &paramCache,
-                             const typename MaterialLaw::Params &matParams,
-                             int pvIdx,
-                             Scalar value)
+    void setQuantity_(FluidState &fs,
+                      ParameterCache &paramCache,
+                      const typename MaterialLaw::Params &matParams,
+                      int pvIdx,
+                      Scalar value)
     {
         assert(0 <= pvIdx && pvIdx < numEq);
 
@@ -478,7 +486,7 @@ protected:
             // update all fluid pressures using the capillary pressure
             // law
             ComponentVector pc;
-            MaterialLaw::capillaryPressures(pc, matParams, fs);
+            MaterialLaw::capillaryPressures(pc, matParams, fs, wettingPhaseIdx_);
             for (int phaseIdx = 1; phaseIdx < numPhases; ++phaseIdx)
                 fs.setPressure(phaseIdx,
                                fs.pressure(0)
@@ -498,7 +506,7 @@ protected:
 
     // set a quantity in the fluid state
     template <class FluidState>
-    static void setQuantityRaw_(FluidState &fs, int pvIdx, Scalar value)
+    void setQuantityRaw_(FluidState &fs, int pvIdx, Scalar value)
     {
         assert(pvIdx < numEq);
 
@@ -521,7 +529,7 @@ protected:
     }
 
     template <class FluidState>
-    static Scalar quantityWeight_(const FluidState &fs, int pvIdx)
+    Scalar quantityWeight_(const FluidState &fs, int pvIdx)
     {
         // first pressure
         if (pvIdx < 1)
@@ -532,6 +540,10 @@ protected:
             return 1.0;
         }
     }
+
+private:
+    int wettingPhaseIdx_ = 0; //!< the phase index of the wetting phase
+
 };
 
 } // end namespace Dumux
diff --git a/dumux/material/constraintsolvers/ncpflash.hh b/dumux/material/constraintsolvers/ncpflash.hh
index a10c2c3959f69e2ce1ba656bbf3123c35a52da1a..91af2f2bd438ca130633bc5e7ada7db645a5c76d 100644
--- a/dumux/material/constraintsolvers/ncpflash.hh
+++ b/dumux/material/constraintsolvers/ncpflash.hh
@@ -91,6 +91,14 @@ class NcpFlash
 public:
     using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
 
+    /*!
+     * \brief Contruct a new flash
+     * \param wettingPhaseIdx the phase index of the wetting phase
+     */
+    explicit NcpFlash(int wettingPhaseIdx = 0)
+    : wettingPhaseIdx_(wettingPhaseIdx)
+    {}
+
     /*!
      * \brief Guess initial values for all quantities.
      * \param fluidState Thermodynamic state of the fluids
@@ -98,9 +106,9 @@ public:
      * \param globalMolarities
      */
     template <class FluidState>
-    static void guessInitial(FluidState &fluidState,
-                             ParameterCache &paramCache,
-                             const ComponentVector &globalMolarities)
+    void guessInitial(FluidState &fluidState,
+                      ParameterCache &paramCache,
+                      const ComponentVector &globalMolarities)
     {
         // the sum of all molarities
         Scalar sumMoles = 0;
@@ -142,10 +150,10 @@ public:
      * The phase's fugacities must already be set.
      */
     template <class MaterialLaw, class FluidState>
-    static void solve(FluidState &fluidState,
-                      ParameterCache &paramCache,
-                      const typename MaterialLaw::Params &matParams,
-                      const ComponentVector &globalMolarities)
+    void solve(FluidState &fluidState,
+               ParameterCache &paramCache,
+               const typename MaterialLaw::Params &matParams,
+               const ComponentVector &globalMolarities)
     {
 #if DUNE_VERSION_LT(DUNE_COMMON, 2, 7)
         Dune::FMatrixPrecision<Scalar>::set_singular_limit(1e-25);
@@ -264,7 +272,7 @@ public:
 
 protected:
     template <class FluidState>
-    static void printFluidState_(const FluidState &fs)
+    void printFluidState_(const FluidState &fs)
     {
         std::cout << "saturations: ";
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
@@ -314,12 +322,12 @@ protected:
     }
 
     template <class MaterialLaw, class FluidState>
-    static void linearize_(Matrix &J,
-                           Vector &b,
-                           FluidState &fluidState,
-                           ParameterCache &paramCache,
-                           const typename MaterialLaw::Params &matParams,
-                           const ComponentVector &globalMolarities)
+    void linearize_(Matrix &J,
+                    Vector &b,
+                    FluidState &fluidState,
+                    ParameterCache &paramCache,
+                    const typename MaterialLaw::Params &matParams,
+                    const ComponentVector &globalMolarities)
     {
         FluidState origFluidState(fluidState);
         ParameterCache origParamCache(paramCache);
@@ -365,10 +373,10 @@ protected:
     }
 
     template <class FluidState>
-    static void calculateDefect_(Vector &b,
-                                 const FluidState &fluidStateEval,
-                                 const FluidState &fluidState,
-                                 const ComponentVector &globalMolarities)
+    void calculateDefect_(Vector &b,
+                          const FluidState &fluidStateEval,
+                          const FluidState &fluidState,
+                          const ComponentVector &globalMolarities)
     {
         int eqIdx = 0;
 
@@ -423,10 +431,10 @@ protected:
     }
 
     template <class MaterialLaw, class FluidState>
-    static Scalar update_(FluidState &fluidState,
-                          ParameterCache &paramCache,
-                          const typename MaterialLaw::Params &matParams,
-                          const Vector &deltaX)
+    Scalar update_(FluidState &fluidState,
+                   ParameterCache &paramCache,
+                   const typename MaterialLaw::Params &matParams,
+                   const Vector &deltaX)
     {
         Scalar relError = 0;
         for (int pvIdx = 0; pvIdx < numEq; ++ pvIdx) {
@@ -499,9 +507,9 @@ protected:
     }
 
     template <class MaterialLaw, class FluidState>
-    static void completeFluidState_(FluidState &fluidState,
-                                    ParameterCache &paramCache,
-                                    const typename MaterialLaw::Params &matParams)
+    void completeFluidState_(FluidState &fluidState,
+                             ParameterCache &paramCache,
+                             const typename MaterialLaw::Params &matParams)
     {
         // calculate the saturation of the last phase as a function of
         // the other saturations
@@ -514,7 +522,7 @@ protected:
         // and first pressure are already set because it is implicitly
         // solved for.)
         ComponentVector pc;
-        MaterialLaw::capillaryPressures(pc, matParams, fluidState);
+        MaterialLaw::capillaryPressures(pc, matParams, fluidState, wettingPhaseIdx_);
         for (int phaseIdx = 1; phaseIdx < numPhases; ++phaseIdx)
             fluidState.setPressure(phaseIdx,
                                    fluidState.pressure(0)
@@ -538,18 +546,18 @@ protected:
         }
     }
 
-    static bool isPressureIdx_(int pvIdx)
+    bool isPressureIdx_(int pvIdx)
     { return pvIdx == 0; }
 
-    static bool isSaturationIdx_(int pvIdx)
+    bool isSaturationIdx_(int pvIdx)
     { return 1 <= pvIdx && pvIdx < numPhases; }
 
-    static bool isMoleFracIdx_(int pvIdx)
+    bool isMoleFracIdx_(int pvIdx)
     { return numPhases <= pvIdx && pvIdx < numPhases + numPhases*numComponents; }
 
     // retrieves a quantity from the fluid state
     template <class FluidState>
-    static Scalar getQuantity_(const FluidState &fs, int pvIdx)
+    Scalar getQuantity_(const FluidState &fs, int pvIdx)
     {
         assert(pvIdx < numEq);
 
@@ -574,11 +582,11 @@ protected:
 
     // set a quantity in the fluid state
     template <class MaterialLaw, class FluidState>
-    static void setQuantity_(FluidState &fs,
-                             ParameterCache &paramCache,
-                             const typename MaterialLaw::Params &matParams,
-                             int pvIdx,
-                             Scalar value)
+    void setQuantity_(FluidState &fs,
+                      ParameterCache &paramCache,
+                      const typename MaterialLaw::Params &matParams,
+                      int pvIdx,
+                      Scalar value)
     {
         assert(0 <= pvIdx && pvIdx < numEq);
 
@@ -616,7 +624,7 @@ protected:
             // update all fluid pressures using the capillary pressure
             // law
             ComponentVector pc;
-            MaterialLaw::capillaryPressures(pc, matParams, fs);
+            MaterialLaw::capillaryPressures(pc, matParams, fs, wettingPhaseIdx_);
             for (int phaseIdx = 1; phaseIdx < numPhases; ++phaseIdx)
                 fs.setPressure(phaseIdx,
                                fs.pressure(0)
@@ -666,7 +674,7 @@ protected:
 
     // set a quantity in the fluid state
     template <class FluidState>
-    static void setQuantityRaw_(FluidState &fs, int pvIdx, Scalar value)
+    void setQuantityRaw_(FluidState &fs, int pvIdx, Scalar value)
     {
         assert(pvIdx < numEq);
 
@@ -690,7 +698,7 @@ protected:
     }
 
     template <class FluidState>
-    static Scalar quantityWeight_(const FluidState &fs, int pvIdx)
+    Scalar quantityWeight_(const FluidState &fs, int pvIdx)
     {
         // first pressure
         if (pvIdx < 1)
@@ -702,6 +710,9 @@ protected:
         else // if (pvIdx < numPhases + numPhases*numComponents)
             return 1.0;
     }
+
+private:
+    int wettingPhaseIdx_ = 0; //!< the phase index of the wetting phase
 };
 
 } // end namespace Dumux
diff --git a/dumux/material/fluidmatrixinteractions/1pia/CMakeLists.txt b/dumux/material/fluidmatrixinteractions/1pia/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f531c299e63e82d7423ee38a078fdb662753f474
--- /dev/null
+++ b/dumux/material/fluidmatrixinteractions/1pia/CMakeLists.txt
@@ -0,0 +1,3 @@
+install(FILES
+fluidsolidinterfacialareashiwang.hh
+DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/material/fluidmatrixinteractions/1pia)
diff --git a/dumux/material/fluidmatrixinteractions/1pia/fluidsolidinterfacialareashiwang.hh b/dumux/material/fluidmatrixinteractions/1pia/fluidsolidinterfacialareashiwang.hh
new file mode 100644
index 0000000000000000000000000000000000000000..c9009ff698c78e0f8c21b7dec6adeedd12dc0df2
--- /dev/null
+++ b/dumux/material/fluidmatrixinteractions/1pia/fluidsolidinterfacialareashiwang.hh
@@ -0,0 +1,50 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup Fluidmatrixinteractions
+ * \brief Description of a interfacial area between solid and fluid phase
+ */
+#ifndef FLUIDSOLID_INTERFACIALAREA_SHI_WANG_HH
+#define FLUIDSOLID_INTERFACIALAREA_SHI_WANG_HH
+
+namespace Dumux {
+
+/*!
+ * \ingroup Fluidmatrixinteractions
+ * \brief Description of a interfacial area between solid and fluid phase
+ */
+template<class Scalar>
+class FluidSolidInterfacialAreaShiWang
+{
+public:
+    /*!
+     * \brief Relation for the interfacial area between a fluid and a solid phase
+     * after Shi & Wang, Transport in porous media (2011)
+     *
+     * \return interfacial area
+     */
+    static Scalar fluidSolidInterfacialArea(const Scalar porosity,
+                                            const Scalar characteristicLength)
+    { return 6.0*(1.0-porosity)/characteristicLength; }
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/dumux/material/fluidmatrixinteractions/CMakeLists.txt b/dumux/material/fluidmatrixinteractions/CMakeLists.txt
index 49de0b5b04c0465e7e3f071320bd8255aa2fc60c..9e1fe9ded7883cdd0dfacf41c80321a683a6c3e1 100644
--- a/dumux/material/fluidmatrixinteractions/CMakeLists.txt
+++ b/dumux/material/fluidmatrixinteractions/CMakeLists.txt
@@ -1,4 +1,5 @@
 add_subdirectory(1p)
+add_subdirectory(1pia)
 add_subdirectory(2p)
 add_subdirectory(2pia)
 add_subdirectory(3p)
diff --git a/dumux/material/fluidmatrixinteractions/mp/2poftadapter.hh b/dumux/material/fluidmatrixinteractions/mp/2poftadapter.hh
index 8f694447c43a45969f975266d7802e5ca13731cc..44a4bc7a7404d249b48397fe5f4ebb3ee97dad83 100644
--- a/dumux/material/fluidmatrixinteractions/mp/2poftadapter.hh
+++ b/dumux/material/fluidmatrixinteractions/mp/2poftadapter.hh
@@ -50,11 +50,13 @@ public:
      * \param pc Container for capillary pressure in \f$\mathrm{[Pa]}\f$
      * \param params Array of parameters
      * \param fluidState Fluidstate
+     * \param wPhaseIdx the phase index of the wetting phase
      */
     template <class pcContainerT, class FluidState>
     static void capillaryPressures(pcContainerT &pc,
-                   const Params &params,
-                   const FluidState &fluidState)
+                                   const Params &params,
+                                   const FluidState &fluidState,
+                                   int wPhaseIdx = 0)
     {
         // non-wetting phase gets the capillary pressure added
         pc[nPhaseIdx] = 0;
diff --git a/dumux/material/fluidmatrixinteractions/mp/CMakeLists.txt b/dumux/material/fluidmatrixinteractions/mp/CMakeLists.txt
index 1e3eda3176ae69248539d6f629b3b4ac543f5cca..b07d7c81529b26c99713d96f611af7e66c171460 100644
--- a/dumux/material/fluidmatrixinteractions/mp/CMakeLists.txt
+++ b/dumux/material/fluidmatrixinteractions/mp/CMakeLists.txt
@@ -1,5 +1,5 @@
 install(FILES
-2padapter.hh
+mpadapter.hh
 2poftadapter.hh
 mplinearmaterial.hh
 mplinearmaterialparams.hh
diff --git a/dumux/material/fluidmatrixinteractions/mp/2padapter.hh b/dumux/material/fluidmatrixinteractions/mp/mpadapter.hh
similarity index 66%
rename from dumux/material/fluidmatrixinteractions/mp/2padapter.hh
rename to dumux/material/fluidmatrixinteractions/mp/mpadapter.hh
index 08f35e84796e066f0efdd86aaa383c2b94994d36..050135d640b02f46b8877739fd23e640ae56c5da 100644
--- a/dumux/material/fluidmatrixinteractions/mp/2padapter.hh
+++ b/dumux/material/fluidmatrixinteractions/mp/mpadapter.hh
@@ -19,52 +19,54 @@
 /*!
  * \file
  * \ingroup Fluidmatrixinteractions
- * \brief Makes the twophase capillary pressure-saturation relations available under the M-phase API for material laws
+ * \brief Makes the capillary pressure-saturation relations available under the M-phase API for material laws
  *
- * Makes the twophase capillary pressure-saturation relations
+ * Makes the capillary pressure-saturation relations
  * available under the M-phase API for material laws
  */
-#ifndef DUMUX_MP_2P_ADAPTER_HH
-#define DUMUX_MP_2P_ADAPTER_HH
+#ifndef DUMUX_MP_ADAPTER_HH
+#define DUMUX_MP_ADAPTER_HH
 
 #include <algorithm>
+#include <cassert>
+#include <dumux/common/typetraits/typetraits.hh>
 
 namespace Dumux
 {
 /*!
  * \ingroup Fluidmatrixinteractions
- * \brief Implements a brookscorey saturation-capillary pressure relation
- *
- * Implements a brookscorey saturation-capillary pressure relation for
- * M-phase fluid systems.
- *
- * \sa MpBrookscoreyMaterialParams
+ * \brief An adapter for mpnc to use the capillary pressure-saturation relationships
  */
-template <int wPhaseIdx, class TwoPLaw >
-class TwoPAdapter
+template <class MaterialLaw, int numPhases>
+class MPAdapter
 {
-    enum { nPhaseIdx = (wPhaseIdx == 0)?1:0 };
+    static_assert(AlwaysFalse<MaterialLaw>::value, "Adapter not implemented for the specified number of phases");
+};
 
+template <class MaterialLaw>
+class MPAdapter<MaterialLaw, 2 /*numPhases*/>
+{
 public:
-    using Params = typename TwoPLaw::Params;
-    enum { numPhases = 2 };
-
+    using Params = typename MaterialLaw::Params;
     /*!
      * \brief The capillary pressure-saturation curve.
      * \param values Container for the return values
      * \param params Array of parameters
      * \param state Fluidstate
+     * \param wPhaseIdx the phase index of the wetting phase
      */
     template <class ContainerT, class FluidState>
     static void capillaryPressures(ContainerT &values,
                                    const Params &params,
-                                   const FluidState &state)
+                                   const FluidState &state,
+                                   int wPhaseIdx)
     {
+        assert(values.size() == 2);
+        const int nPhaseIdx = 1 - wPhaseIdx;
         // non-wetting phase gets the capillary pressure added
         values[nPhaseIdx] = 0;
-
         // wetting phase does not get anything added
-        values[wPhaseIdx] = - TwoPLaw::pc(params, state.saturation(wPhaseIdx));
+        values[wPhaseIdx] = - MaterialLaw::pc(params, state.saturation(wPhaseIdx));
     }
 
     /*!
@@ -78,8 +80,11 @@ public:
                                        const Params &params,
                                        const FluidState &state)
     {
-        values[wPhaseIdx] = TwoPLaw::krw(params, state.saturation(wPhaseIdx));
-        values[nPhaseIdx] = TwoPLaw::krn(params, state.saturation(wPhaseIdx));
+        const int wPhaseIdx = state.wettingPhase();
+        assert(values.size() == 2);
+        const int nPhaseIdx = 1 - wPhaseIdx;
+        values[wPhaseIdx] = MaterialLaw::krw(params, state.saturation(wPhaseIdx));
+        values[nPhaseIdx] = MaterialLaw::krn(params, state.saturation(wPhaseIdx));
     }
 };
 }
diff --git a/dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh b/dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh
index d1b1aa33be4aa8f7be1c91fefc151fa429de22c7..055ef6bfae89a77773224f85862ee83d8c786f91 100644
--- a/dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh
+++ b/dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh
@@ -61,11 +61,13 @@ public:
      * \param values Container for the return values
      * \param params Array of Parameters
      * \param state The fluid state
+     * \param wPhaseIdx the phase index of the wetting phase
      */
     template <class ContainerT, class FluidState>
     static void capillaryPressures(ContainerT &values,
                                    const Params &params,
-                                   const FluidState &state)
+                                   const FluidState &state,
+                                   int wPhaseIdx = 0)
     {
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
             Scalar S = state.saturation(phaseIdx);
diff --git a/dumux/material/fluidstates/compositional.hh b/dumux/material/fluidstates/compositional.hh
index b15c708aedd91b7aa9649f9b1478e7247c7a52b6..ba3e7dd19d16f354278641feb76bb15318d430ee 100644
--- a/dumux/material/fluidstates/compositional.hh
+++ b/dumux/material/fluidstates/compositional.hh
@@ -73,8 +73,6 @@ public:
     /*!
      * \brief Returns the index of the wetting phase in the
      *        fluid-solid configuration (for porous medium systems).
-     *
-     * \param phaseIdx the index of the phase
      */
     int wettingPhase() const { return wPhaseIdx_; }
 
diff --git a/dumux/material/fluidstates/immiscible.hh b/dumux/material/fluidstates/immiscible.hh
index 68b6e29cc2395dc79a167ce8912d7fe47d7e78a0..e03e69332b02bac5aeb507676e700879551f0236 100644
--- a/dumux/material/fluidstates/immiscible.hh
+++ b/dumux/material/fluidstates/immiscible.hh
@@ -65,6 +65,7 @@ public:
      * Generic access to fluid properties (No assumptions
      * on thermodynamic equilibrium required)
      *****************************************************/
+
     /*!
      * \brief Returns the saturation \f$S_\alpha\f$ of a fluid phase \f$\alpha\f$ in \f$\mathrm{[-]}\f$.
      *
@@ -332,7 +333,6 @@ public:
      */
     void setViscosity(int phaseIdx, Scalar value)
     { viscosity_[phaseIdx] = value; }
-
 protected:
     //! zero-initialize all data members with braces syntax
     Scalar pressure_[numPhases] = {};
diff --git a/dumux/material/spatialparams/fvnonequilibrium.hh b/dumux/material/spatialparams/fvnonequilibrium.hh
new file mode 100644
index 0000000000000000000000000000000000000000..809adc95e9271c79ad619ff2bd5f174dc1e76488
--- /dev/null
+++ b/dumux/material/spatialparams/fvnonequilibrium.hh
@@ -0,0 +1,127 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup SpatialParameters
+ * \brief base class for spatialparameters dealing with thermal and chemical nonequilibrium
+ *
+ */
+#ifndef DUMUX_FV_SPATIALPARAMS_NONEQUILIBRIUM_HH
+#define DUMUX_FV_SPATIALPARAMS_NONEQUILIBRIUM_HH
+
+#include <dumux/material/spatialparams/fv.hh>
+
+namespace Dumux {
+
+/**
+ * \brief Definition of the spatial parameters for nonequilibrium
+ */
+template<class FVGridGeometry, class Scalar, class Implementation>
+class FVNonEquilibriumSpatialParams
+: public FVSpatialParams<FVGridGeometry, Scalar, Implementation>
+{
+    using ParentType = FVSpatialParams<FVGridGeometry, Scalar, Implementation>;
+    using GridView = typename FVGridGeometry::GridView;
+    using FVElementGeometry = typename FVGridGeometry::LocalView;
+    using SubControlVolume = typename FVGridGeometry::SubControlVolume;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    //! export the types used for interfacial area calculations
+    using AwnSurfaceParams = Scalar;
+    using AwsSurfaceParams = Scalar;
+    using AnsSurfaceParams = Scalar;
+
+    FVNonEquilibriumSpatialParams(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {  }
+
+    /*!\brief Return the characteristic length for the mass transfer.
+     *
+     *        The position is determined based on the coordinate of
+     *        the vertex belonging to the considered sub controle volume.
+     * \param element     The finite element
+     * \param fvGeometry  The finite volume geometry
+     * \param scvIdx      The local index of the sub control volume */
+    template<class ElementSolution>
+    const Scalar characteristicLength(const Element & element,
+                                      const SubControlVolume &scv,
+                                      const ElementSolution &elemSol) const
+
+    { return this->asImp_().characteristicLengthAtPos(scv.dofPosition()); }
+
+    /*!\brief Return the characteristic length for the mass transfer.
+     * \param globalPos The position in global coordinates.*/
+    const Scalar characteristicLengthAtPos(const GlobalPosition & globalPos) const
+    {
+        DUNE_THROW(Dune::InvalidStateException,
+                   "The spatial parameters do not provide "
+                   "a characteristicLengthAtPos() method.");
+    }
+
+    /*!\brief Return the pre factor the the energy transfer
+     *
+     *        The position is determined based on the coordinate of
+     *        the vertex belonging to the considered sub controle volume.
+     * \param element     The finite element
+     * \param fvGeometry  The finite volume geometry
+     * \param scvIdx      The local index of the sub control volume */
+    template<class ElementSolution>
+    const Scalar factorEnergyTransfer(const Element &element,
+                                      const SubControlVolume &scv,
+                                      const ElementSolution &elemSol) const
+    { return this->asImp_().factorEnergyTransferAtPos(scv.dofPosition()); }
+
+    /*!\brief Return the pre factor the the energy transfer
+     * \param globalPos The position in global coordinates.*/
+    const Scalar factorEnergyTransferAtPos(const  GlobalPosition & globalPos) const
+    {
+        DUNE_THROW(Dune::InvalidStateException,
+                   "The spatial parameters do not provide "
+                   "a factorEnergyTransferAtPos() method.");
+    }
+
+    /*!\brief Return the pre factor the the mass transfer
+     *
+     *        The position is determined based on the coordinate of
+     *        the vertex belonging to the considered sub controle volume.
+     * \param element     The finite element
+     * \param fvGeometry  The finite volume geometry
+     * \param scvIdx      The local index of the sub control volume */
+    template<class ElementSolution>
+    const Scalar factorMassTransfer(const Element &element,
+                                      const SubControlVolume &scv,
+                                      const ElementSolution &elemSol) const
+    { return this->asImp_().factorMassTransferAtPos(scv.dofPosition()); }
+
+
+    /*!\brief Return the pre factor the the mass transfer
+     * \param globalPos The position in global coordinates.*/
+    const Scalar factorMassTransferAtPos(const  GlobalPosition & globalPos) const
+    {
+        DUNE_THROW(Dune::InvalidStateException,
+                   "The spatial parameters do not provide "
+                   "a factorMassTransferAtPos() method.");
+    }
+};
+
+}
+
+#endif // GUARDIAN
diff --git a/dumux/porousmediumflow/1pnc/model.hh b/dumux/porousmediumflow/1pnc/model.hh
index f710c2b2aac84ff9f33ce91a4fdea98ba491c734..856bfdd71674bc125fa4fa379553fc69def5e5cd 100644
--- a/dumux/porousmediumflow/1pnc/model.hh
+++ b/dumux/porousmediumflow/1pnc/model.hh
@@ -68,6 +68,8 @@
 #include <dumux/porousmediumflow/nonisothermal/model.hh>
 #include <dumux/porousmediumflow/nonisothermal/indices.hh>
 #include <dumux/porousmediumflow/nonisothermal/iofields.hh>
+#include <dumux/porousmediumflow/nonequilibrium/model.hh>
+#include <dumux/porousmediumflow/nonequilibrium/volumevariables.hh>
 #include <dumux/material/fluidmatrixinteractions/diffusivitymillingtonquirk.hh>
 
 #include "indices.hh"
@@ -165,7 +167,6 @@ public:
 template<class TypeTag>
 struct ModelTraits<TypeTag, TTag::OnePNC> { using type = GetPropType<TypeTag, Properties::BaseModelTraits>; }; //!< default the actually used traits to the base traits
 
-
 /*!
  * \brief The fluid state which is used by the volume variables to
  *        store the thermodynamic state. This should be chosen
@@ -245,6 +246,95 @@ public:
     using type = PorousMediumFlowNIModelTraits<IsothermalTraits>;
 };
 
+} // end namespace Properties
+
+template<class OnePNCModelTraits>
+struct OnePNCUnconstrainedModelTraits : public OnePNCModelTraits
+{
+    static constexpr int numConstraintEq() { return 0; }
+};
+
+namespace Properties {
+//////////////////////////////////////////////////////////////////
+// Type tags
+//////////////////////////////////////////////////////////////////
+namespace TTag {
+struct OnePNCNonEquil { using InheritsFrom = std::tuple<NonEquilibrium, OnePNC>; };
+} // end namespace TTag
+
+
+/////////////////////////////////////////////////
+// Properties for the non-equilibrium OnePNC model
+/////////////////////////////////////////////////
+
+template<class TypeTag>
+struct EquilibriumLocalResidual<TypeTag, TTag::OnePNCNonEquil> { using type = CompositionalLocalResidual<TypeTag>; };
+
+//! Set the vtk output fields specific to this model
+template<class TypeTag>
+struct EquilibriumIOFields<TypeTag, TTag::OnePNCNonEquil> { using type = OnePNCIOFields; };
+
+template<class TypeTag>
+struct ModelTraits<TypeTag, TTag::OnePNCNonEquil>
+{
+private:
+    using EquiTraits = GetPropType<TypeTag, Properties::EquilibriumModelTraits>;
+    static constexpr bool enableTNE = getPropValue<TypeTag, Properties::EnableThermalNonEquilibrium>();
+    static constexpr bool enableCNE = getPropValue<TypeTag, Properties::EnableChemicalNonEquilibrium>();
+    static constexpr int numEF = getPropValue<TypeTag, Properties::NumEnergyEqFluid>();
+    static constexpr int numES = getPropValue<TypeTag, Properties::NumEnergyEqSolid>();
+    static constexpr auto nf = getPropValue<TypeTag, Properties::NusseltFormulation>();
+    static constexpr auto ns = getPropValue<TypeTag, Properties::SherwoodFormulation>();
+
+    using NonEquilTraits = NonEquilibriumModelTraits<EquiTraits, enableCNE, enableTNE, numEF, numES, nf, ns>;
+public:
+    using type = NonEquilTraits;
+};
+
+// by default chemical non equilibrium is enabled in the nonequil model, switch that off here
+template<class TypeTag>
+struct EnableChemicalNonEquilibrium<TypeTag, TTag::OnePNCNonEquil> { static constexpr bool value = false; };
+
+//! set equilibrium model traits
+template<class TypeTag>
+struct EquilibriumModelTraits<TypeTag, TTag::OnePNCNonEquil>
+{
+private:
+     using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
+     using EquilibriumTraits = OnePNCModelTraits<FluidSystem::numComponents,  getPropValue<TypeTag, Properties::UseMoles>(), getPropValue<TypeTag, Properties::ReplaceCompEqIdx>()>;
+public:
+    using type = OnePNCUnconstrainedModelTraits<EquilibriumTraits>;
+};
+
+//! in case we do not assume full non-equilibrium one needs a thermal conductivity
+template<class TypeTag>
+struct ThermalConductivityModel<TypeTag, TTag::OnePNCNonEquil>
+{
+private:
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+public:
+    using type = ThermalConductivityAverage<Scalar>;
+};
+
+//! use the mineralization volume variables together with the 2pnc vol vars
+template<class TypeTag>
+struct VolumeVariables<TypeTag, TTag::OnePNCNonEquil>
+{
+private:
+    using PV = GetPropType<TypeTag, Properties::PrimaryVariables>;
+    using FSY = GetPropType<TypeTag, Properties::FluidSystem>;
+    using FST = GetPropType<TypeTag, Properties::FluidState>;
+    using SSY = GetPropType<TypeTag, Properties::SolidSystem>;
+    using SST = GetPropType<TypeTag, Properties::SolidState>;
+    using MT = GetPropType<TypeTag, Properties::ModelTraits>;
+    using PT = typename GetPropType<TypeTag, Properties::SpatialParams>::PermeabilityType;
+
+    using Traits = OnePNCVolumeVariablesTraits<PV, FSY, FST, SSY, SST, PT, MT>;
+    using EquilibriumVolVars = OnePNCVolumeVariables<Traits>;
+public:
+    using type = NonEquilibriumVolumeVariables<Traits, EquilibriumVolVars>;
+};
+
 } // end namespace Properties
 } // end namespace Dumux
 
diff --git a/dumux/porousmediumflow/mpnc/volumevariables.hh b/dumux/porousmediumflow/mpnc/volumevariables.hh
index 5d3a4e3459ea2da6780502013df397ef1e6b4acf..ff7f03165fa795f1352a06372b0a23ef39ff1aa7 100644
--- a/dumux/porousmediumflow/mpnc/volumevariables.hh
+++ b/dumux/porousmediumflow/mpnc/volumevariables.hh
@@ -28,10 +28,10 @@
 #include <dumux/porousmediumflow/volumevariables.hh>
 #include <dumux/porousmediumflow/nonisothermal/volumevariables.hh>
 
-#include <dumux/material/constraintsolvers/ncpflash.hh>
 #include <dumux/material/constraintsolvers/compositionfromfugacities.hh>
 #include <dumux/material/constraintsolvers/misciblemultiphasecomposition.hh>
 #include <dumux/material/solidstates/updatesolidvolumefractions.hh>
+#include <dumux/material/fluidmatrixinteractions/mp/mpadapter.hh>
 #include "pressureformulation.hh"
 
 namespace Dumux {
@@ -108,7 +108,8 @@ public:
         const auto& materialParams = problem.spatialParams().materialLawParams(element, scv, elemSol);
         // relative permeabilities
         using MaterialLaw = typename Problem::SpatialParams::MaterialLaw;
-        MaterialLaw::relativePermeabilities(relativePermeability_,
+        using MPAdapter = MPAdapter<MaterialLaw, numPhases()>;
+        MPAdapter::relativePermeabilities(relativePermeability_,
                                             materialParams,
                                             fluidState_);
         typename FluidSystem::ParameterCache paramCache;
@@ -180,12 +181,15 @@ public:
         // set the phase pressures
         /////////////
         // capillary pressure parameters
+        const int wPhaseIdx = problem.spatialParams().template wettingPhase<FluidSystem>(element, scv, elemSol);
+        fluidState.setWettingPhase(wPhaseIdx);
         const auto& materialParams =
             problem.spatialParams().materialLawParams(element, scv, elemSol);
         // capillary pressures
-        Scalar capPress[numPhases()];
+        std::vector<Scalar> capPress(numPhases());
         using MaterialLaw = typename Problem::SpatialParams::MaterialLaw;
-        MaterialLaw::capillaryPressures(capPress, materialParams, fluidState);
+        using MPAdapter = MPAdapter<MaterialLaw, numPhases()>;
+        MPAdapter::capillaryPressures(capPress, materialParams, fluidState, wPhaseIdx);
         // add to the pressure of the first fluid phase
 
         // depending on which pressure is stored in the primary variables
@@ -488,7 +492,7 @@ protected:
 
     std::array<std::array<Scalar, numFluidComps-1>, numPhases()> diffCoefficient_;
     Scalar porosity_; //!< Effective porosity within the control volume
-    Scalar relativePermeability_[numPhases()]; //!< Effective relative permeability within the control volume
+    std::array<Scalar, ModelTraits::numPhases()> relativePermeability_; //!< Effective relative permeability within the control volume
     PermeabilityType permeability_;
 
     //! Mass fractions of each component within each phase
@@ -559,9 +563,10 @@ public:
 
         // relative permeabilities
         using MaterialLaw = typename Problem::SpatialParams::MaterialLaw;
-        MaterialLaw::relativePermeabilities(relativePermeability_,
-                                            materialParams,
-                                            fluidState_);
+        using MPAdapter = MPAdapter<MaterialLaw, numPhases()>;
+        MPAdapter::relativePermeabilities(relativePermeability_,
+                                          materialParams,
+                                          fluidState_);
         typename FluidSystem::ParameterCache paramCache;
         paramCache.updateAll(fluidState_);
         if (enableDiffusion)
@@ -632,10 +637,13 @@ public:
         // capillary pressure parameters
         const auto& materialParams =
             problem.spatialParams().materialLawParams(element, scv, elemSol);
+        const int wPhaseIdx = problem.spatialParams().template wettingPhase<FluidSystem>(element, scv, elemSol);
+        fluidState.setWettingPhase(wPhaseIdx);
         // capillary pressures
-        Scalar capPress[numPhases()];
+        std::vector<Scalar> capPress(numPhases());
         using MaterialLaw = typename Problem::SpatialParams::MaterialLaw;
-        MaterialLaw::capillaryPressures(capPress, materialParams, fluidState);
+        using MPAdapter = MPAdapter<MaterialLaw, numPhases()>;
+        MPAdapter::capillaryPressures(capPress, materialParams, fluidState, wPhaseIdx);
         // add to the pressure of the first fluid phase
 
         // depending on which pressure is stored in the primary variables
@@ -996,7 +1004,7 @@ protected:
     }
 
     std::array<std::array<Scalar, numFluidComps-1>, numPhases()> diffCoefficient_;
-    Scalar relativePermeability_[numPhases()]; //!< Effective relative permeability within the control volume
+    std::array<Scalar, ModelTraits::numPhases()> relativePermeability_; //!< Effective relative permeability within the control volume
     PermeabilityType permeability_;
     Scalar xEquil_[numPhases()][numFluidComps];
 
diff --git a/dumux/porousmediumflow/nonequilibrium/model.hh b/dumux/porousmediumflow/nonequilibrium/model.hh
index 1013d4031250b048857bca135bfa10e42a0f4354..893f81330c3e7a597c8837d12547cd887dcf607f 100644
--- a/dumux/porousmediumflow/nonequilibrium/model.hh
+++ b/dumux/porousmediumflow/nonequilibrium/model.hh
@@ -63,7 +63,7 @@ template<class ET, bool chem, bool therm, int numEF, int numES, NusseltFormulati
 struct NonEquilibriumModelTraits : public ET
 {
     static constexpr int numEq() { return numEnergyEqFluid()+numEnergyEqSolid()+numTransportEq()+ET::numConstraintEq(); }
-    static constexpr int numTransportEq() { return chem ? ET::numPhases()*ET::numComponents() : ET::numPhases(); }
+    static constexpr int numTransportEq() { return chem ? ET::numPhases()*ET::numComponents() : ET::numComponents(); }
 
     static constexpr int numEnergyEqFluid() { return therm ? numEF : 0; }
     static constexpr int numEnergyEqSolid() { return therm ? numES : 0; }
diff --git a/dumux/porousmediumflow/nonequilibrium/thermal/localresidual.hh b/dumux/porousmediumflow/nonequilibrium/thermal/localresidual.hh
index f7148515093eb7510a77bb5c32d1d5bb5e9b766b..b55b9e0e0ded869fc52c7c9b1c145237742e9531 100644
--- a/dumux/porousmediumflow/nonequilibrium/thermal/localresidual.hh
+++ b/dumux/porousmediumflow/nonequilibrium/thermal/localresidual.hh
@@ -66,8 +66,6 @@ class EnergyLocalResidualNonEquilibrium<TypeTag, 1/*numEnergyEqFluid*/>
     enum { numPhases        = ModelTraits::numPhases() };
 
     enum { numComponents    = ModelTraits::numComponents() };
-    enum { phase0Idx        = FluidSystem::phase0Idx};
-    enum { phase1Idx        = FluidSystem::phase1Idx};
 
 public:
     //! The energy storage in the fluid phase with index phaseIdx
@@ -147,12 +145,10 @@ public:
                                    FluxVariables& fluxVars)
     {
         //in case we have one energy equation for more than one fluid phase we use an effective law in the nonequilibrium fourierslaw
-         flux[energyEq0Idx] += fluxVars.heatConductionFlux(0);
+        flux[energyEq0Idx] += fluxVars.heatConductionFlux(0);
          //heat conduction for the solid phases
-       for(int sPhaseIdx=0; sPhaseIdx<numEnergyEqSolid; ++sPhaseIdx)
-       {
+        for(int sPhaseIdx=0; sPhaseIdx<numEnergyEqSolid; ++sPhaseIdx)
             flux[energyEqSolidIdx+sPhaseIdx] += fluxVars.heatConductionFlux(numPhases + sPhaseIdx);
-       }
     }
 
     /*!
@@ -168,82 +164,25 @@ public:
     {
         //specialization for 2 fluid phases
         const auto& volVars = elemVolVars[scv];
-        const auto& fs = volVars.fluidState() ;
         const Scalar characteristicLength = volVars.characteristicLength()  ;
 
         //interfacial area
         // Shi & Wang, Transport in porous media (2011)
-        const Scalar as = 6.0 * (1.0-volVars.porosity()) / characteristicLength ;
+        const Scalar as = volVars.fluidSolidInterfacialArea();
 
         //temperature fluid is the same for both fluids
         const Scalar TFluid     = volVars.temperatureFluid(0);
         const Scalar TSolid     = volVars.temperatureSolid();
 
-        const Scalar satW       = fs.saturation(phase0Idx) ;
-        const Scalar satN       = fs.saturation(phase1Idx) ;
-
-        const Scalar eps = 1e-6 ;
         Scalar solidToFluidEnergyExchange ;
 
-        Scalar fluidConductivity ;
-            if (satW < 1.0 - eps)
-                fluidConductivity = volVars.fluidThermalConductivity(phase1Idx) ;
-            else if (satW >= 1.0 - eps)
-                fluidConductivity = volVars.fluidThermalConductivity(phase0Idx) ;
-            else
-                DUNE_THROW(Dune::NotImplemented,
-                        "wrong range");
+        const Scalar fluidConductivity = volVars.fluidThermalConductivity(0) ;
 
         const Scalar factorEnergyTransfer   = volVars.factorEnergyTransfer()  ;
 
         solidToFluidEnergyExchange = factorEnergyTransfer * (TSolid - TFluid) / characteristicLength * as * fluidConductivity ;
-        const Scalar epsRegul = 1e-3 ;
 
-        if (satW < (0 + eps) )
-        {
-                solidToFluidEnergyExchange *=  volVars.nusseltNumber(phase1Idx) ;
-        }
-        else if ( (satW >= 0 + eps) and (satW < 1.0-eps) )
-        {
-            solidToFluidEnergyExchange *=  (volVars.nusseltNumber(phase1Idx) * satN );
-            Scalar qBoil ;
-            if (satW<=epsRegul)
-            {// regularize
-                typedef Dumux::Spline<Scalar> Spline;
-                    Spline sp(0.0, epsRegul,                           // x1, x2
-                        QBoilFunc(volVars, 0.0), QBoilFunc(volVars, epsRegul),       // y1, y2
-                        0.0,dQBoil_dSw(volVars, epsRegul));    // m1, m2
-
-                qBoil = sp.eval(satW) ;
-            }
-
-            else if (satW>= (1.0-epsRegul) )
-            {// regularize
-                typedef Dumux::Spline<Scalar> Spline;
-                Spline sp(1.0-epsRegul, 1.0,    // x1, x2
-                        QBoilFunc(volVars, 1.0-epsRegul), 0.0,    // y1, y2
-                        dQBoil_dSw(volVars, 1.0-epsRegul), 0.0 );      // m1, m2
-
-                qBoil = sp.eval(satW) ;
-            }
-            else
-            {
-                qBoil = QBoilFunc(volVars, satW)  ;
-             }
-
-            solidToFluidEnergyExchange += qBoil;
-        }
-        else if (satW >= 1.0-eps)
-        {
-            solidToFluidEnergyExchange *=  volVars.nusseltNumber(phase0Idx) ;
-        }
-        else
-            DUNE_THROW(Dune::NotImplemented,
-                    "wrong range");
-
-        using std::isfinite;
-        if (!isfinite(solidToFluidEnergyExchange))
-            DUNE_THROW(NumericalProblem, "Calculated non-finite source, " << "TFluid="<< TFluid << " TSolid="<< TSolid);
+        solidToFluidEnergyExchange *=  volVars.nusseltNumber(0) ;
 
         for(int energyEqIdx =0; energyEqIdx<numEnergyEqFluid+numEnergyEqSolid; ++energyEqIdx)
         {
@@ -261,53 +200,6 @@ public:
             } // end switch
         }// end energyEqIdx
     }// end source
-
-
-  /*! \brief Calculate the energy transfer during boiling, i.e. latent heat
-   *
-   * \param volVars The volume variables
-   * \param satW The wetting phase saturation. Not taken from volVars, because we regularize.
-   */
-    static Scalar QBoilFunc(const VolumeVariables & volVars,
-                            const  Scalar satW)
-    {
-        // using saturation as input (instead of from volVars)
-        // in order to make regularization (evaluation at different points) easyer
-        const auto& fs = volVars.fluidState() ;
-        const Scalar g( 9.81 ) ;
-        const Scalar gamma(0.0589) ;
-        const Scalar TSolid     = volVars.temperatureSolid();
-        const Scalar characteristicLength   = volVars.characteristicLength()  ;
-        using std::pow;
-        const Scalar as = 6.0 * (1.0-volVars.porosity()) / characteristicLength ;
-        const Scalar mul = fs.viscosity(phase0Idx) ;
-        const Scalar deltahv = fs.enthalpy(phase1Idx) - fs.enthalpy(phase0Idx);
-        const Scalar deltaRho = fs.density(phase0Idx) - fs.density(phase1Idx) ;
-        const Scalar firstBracket = pow(g * deltaRho / gamma, 0.5);
-        const Scalar cp = FluidSystem::heatCapacity(fs, phase0Idx) ;
-        // This use of Tsat is only justified if the fluid is always boiling (tsat equals boiling conditions)
-        // If a different state is to be simulated, please use the actual fluid temperature instead.
-        const Scalar Tsat = FluidSystem::vaporTemperature(fs, phase1Idx ) ;
-        const Scalar deltaT = TSolid - Tsat ;
-        const Scalar secondBracket = pow( (cp *deltaT / (0.006 * deltahv)  ) , 3.0 ) ;
-        const Scalar Prl = volVars.prandtlNumber(phase0Idx) ;
-        const Scalar thirdBracket = pow( 1/Prl , (1.7/0.33) );
-        const Scalar QBoil = satW * as * mul * deltahv * firstBracket * secondBracket * thirdBracket ;
-            return QBoil;
-    }
-
-    /*! \brief Calculate the derivative of the energy transfer function during boiling. Needed for regularization.
-   *
-   * \param volVars The volume variables
-   * \param satW The wetting phase saturation. Not taken from volVars, because we regularize.
-   */
-    static Scalar dQBoil_dSw(const VolumeVariables & volVars,
-                                const Scalar satW)
-    {
-        // on the fly derive w.r.t. Sw.
-        // Only linearly depending on it (directly)
-        return (QBoilFunc(volVars, satW) / satW ) ;
-    }
 };
 
 template<class TypeTag>
@@ -476,16 +368,16 @@ public:
         //we only need to do this for when there is more than 1 fluid phase
         if (enableChemicalNonEquilibrium)
         {
-                // Here comes the catch: We are not doing energy conservation for the whole
-                // system, but rather for each individual phase.
-                //        -> Therefore the energy fluxes over each phase boundary need be
-                //           individually accounted for.
-                //        -> Each particle crossing a phase boundary does carry some mass and
-                //           thus energy!
-                //        -> Therefore, this contribution needs to be added.
-                //        -> the particle always brings the energy of the originating phase.
-                //        -> Energy advectivly transported into a phase = the moles of a component that go into a  phase
-                //           * molMass * enthalpy of the component in the *originating* phase
+            // Here comes the catch: We are not doing energy conservation for the whole
+            // system, but rather for each individual phase.
+            //        -> Therefore the energy fluxes over each phase boundary need be
+            //           individually accounted for.
+            //        -> Each particle crossing a phase boundary does carry some mass and
+            //           thus energy!
+            //        -> Therefore, this contribution needs to be added.
+            //        -> the particle always brings the energy of the originating phase.
+            //        -> Energy advectivly transported into a phase = the moles of a component that go into a  phase
+            //           * molMass * enthalpy of the component in the *originating* phase
 
             const auto& fluidState = volVars.fluidState();
 
diff --git a/dumux/porousmediumflow/nonequilibrium/volumevariables.hh b/dumux/porousmediumflow/nonequilibrium/volumevariables.hh
index 09c73d50a4e30e5cb4317f7a402e6933559cc957..f07f08c0b0686cd363af9c443df466ac4a5af4a2 100644
--- a/dumux/porousmediumflow/nonequilibrium/volumevariables.hh
+++ b/dumux/porousmediumflow/nonequilibrium/volumevariables.hh
@@ -42,7 +42,7 @@ namespace Dumux {
  *        modules which require the specific interfacial area between
  *        fluid phases.
  */
-template<class Traits, class EquilibriumVolumeVariables, bool enableChemicalNonEquilibrium ,bool enableThermalNonEquilibrium>
+template<class Traits, class EquilibriumVolumeVariables, bool enableChemicalNonEquilibrium ,bool enableThermalNonEquilibrium, int numEnergyEqFluid>
 class NonEquilibriumVolumeVariablesImplementation;
 
 template<class Traits, class EquilibriumVolumeVariables>
@@ -50,16 +50,18 @@ using NonEquilibriumVolumeVariables =
       NonEquilibriumVolumeVariablesImplementation< Traits,
                                                    EquilibriumVolumeVariables,
                                                    Traits::ModelTraits::enableChemicalNonEquilibrium(),
-                                                   Traits::ModelTraits::enableThermalNonEquilibrium() >;
+                                                   Traits::ModelTraits::enableThermalNonEquilibrium(),
+                                                   Traits::ModelTraits::numEnergyEqFluid()>;
 
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// specialization for the case of NO kinetic mass but kinetic energy transfer of a fluid mixture and solid
+// specialization for the case of NO kinetic mass but kinetic energy transfer of  two fluids and a solid
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
 template<class Traits, class EquilibriumVolumeVariables>
 class NonEquilibriumVolumeVariablesImplementation< Traits,
                                                    EquilibriumVolumeVariables,
                                                    false/*chemicalNonEquilibrium?*/,
-                                                   true/*thermalNonEquilibrium?*/ >
+                                                   true/*thermalNonEquilibrium?*/,
+                                                   2>
     :public EquilibriumVolumeVariables
 {
     using ParentType = EquilibriumVolumeVariables;
@@ -67,16 +69,20 @@ class NonEquilibriumVolumeVariablesImplementation< Traits,
     using Scalar = typename Traits::PrimaryVariables::value_type;
 
     using ModelTraits = typename Traits::ModelTraits;
-    using Indices = typename ModelTraits::Indices;
+
+    using FS = typename Traits::FluidSystem;
     static constexpr auto numEnergyEqFluid = ModelTraits::numEnergyEqFluid();
     static constexpr auto numEnergyEqSolid = ModelTraits::numEnergyEqSolid();
 
-    static_assert((numEnergyEqFluid < 2), "This model is a specialization for a energy transfer of a fluid mixture and a solid");
+    static constexpr auto phase0Idx = FS::phase0Idx;
+    static constexpr auto phase1Idx = FS::phase1Idx;
+    static constexpr auto sPhaseIdx = FS::numPhases;
 
     using DimLessNum = DimensionlessNumbers<Scalar>;
 
 public:
      using FluidState = typename Traits::FluidState;
+     using Indices = typename ModelTraits::Indices;
     /*!
      * \brief Update all quantities for a given control volume
      *
@@ -97,9 +103,55 @@ public:
 
         ParameterCache paramCache;
         paramCache.updateAll(this->fluidState());
+        updateDimLessNumbers(elemSol, this->fluidState(), paramCache, problem, element, scv);
         updateInterfacialArea(elemSol, this->fluidState(), paramCache, problem, element, scv);
     }
 
+    /*!
+     * \brief Updates dimensionless numbers
+     *
+     * \param elemSol A vector containing all primary variables connected to the element
+     * \param fluidState Container for all the secondary variables concerning the fluids
+     * \param paramCache The parameter cache corresponding to the fluid state
+     * \param problem The problem to be solved
+     * \param element An element which contains part of the control volume
+     * \param scv The sub-control volume
+     */
+    template<class ElemSol, class Problem, class Element, class Scv>
+    void updateDimLessNumbers(const ElemSol& elemSol,
+                               const FluidState& fluidState,
+                               const ParameterCache& paramCache,
+                               const Problem& problem,
+                               const Element& element,
+                               const Scv& scv)
+    {
+        factorEnergyTransfer_ = problem.spatialParams().factorEnergyTransfer(element, scv, elemSol);
+        characteristicLength_ = problem.spatialParams().characteristicLength(element, scv, elemSol);
+
+        // set the dimensionless numbers and obtain respective quantities
+        const unsigned int vIdxGlobal = scv.dofIndex();
+        for (int phaseIdx = 0; phaseIdx < ModelTraits::numPhases(); ++phaseIdx)
+        {
+            const auto darcyMagVelocity     = problem.gridVariables().volumeDarcyMagVelocity(phaseIdx, vIdxGlobal);
+            const auto dynamicViscosity     = fluidState.viscosity(phaseIdx);
+            const auto density              = fluidState.density(phaseIdx);
+            const auto kinematicViscosity   = dynamicViscosity/density;
+
+            using FluidSystem = typename Traits::FluidSystem;
+            const auto heatCapacity        = FluidSystem::heatCapacity(fluidState, paramCache, phaseIdx);
+            const auto thermalConductivity = FluidSystem::thermalConductivity(fluidState, paramCache, phaseIdx);
+            const auto porosity            = this->porosity();
+
+            reynoldsNumber_[phaseIdx] = DimLessNum::reynoldsNumber(darcyMagVelocity, characteristicLength_,kinematicViscosity);
+            prandtlNumber_[phaseIdx]  = DimLessNum::prandtlNumber(dynamicViscosity, heatCapacity, thermalConductivity);
+            nusseltNumber_[phaseIdx]  = DimLessNum::nusseltNumberForced(reynoldsNumber_[phaseIdx],
+                                                                        prandtlNumber_[phaseIdx],
+                                                                        porosity,
+                                                                        ModelTraits::nusseltFormulation());
+
+        }
+    }
+
     /*!
      * \brief Updates the volume specific interfacial area [m^2 / m^3] between the phases.
      *
@@ -118,7 +170,153 @@ public:
                                const Element& element,
                                const Scv& scv)
     {
-        factorMassTransfer_  = problem.spatialParams().factorMassTransfer(element, scv, elemSol);
+        // obtain (standard) material parameters (needed for the residual saturations)
+        const auto& materialParams = problem.spatialParams().materialLawParams(element, scv, elemSol);
+
+        //obtain parameters for interfacial area constitutive relations
+        const auto& aWettingNonWettingSurfaceParams =problem.spatialParams().aWettingNonWettingSurfaceParams(element, scv, elemSol);
+        const auto& aNonWettingSolidSurfaceParams =problem.spatialParams().aNonWettingSolidSurfaceParams(element, scv, elemSol);
+
+        const Scalar pc = fluidState.pressure(phase1Idx) - fluidState.pressure(phase0Idx);
+        const Scalar Sw = fluidState.saturation(phase0Idx);
+
+        Scalar awn;
+
+        using AwnSurface = typename Problem::SpatialParams::AwnSurface;
+        awn = AwnSurface::interfacialArea(aWettingNonWettingSurfaceParams, materialParams, Sw, pc );
+        interfacialArea_[phase0Idx][phase1Idx] = awn;
+        interfacialArea_[phase1Idx][phase0Idx] = interfacialArea_[phase0Idx][phase1Idx];
+        interfacialArea_[phase0Idx][phase0Idx] = 0.;
+
+        using AnsSurface = typename Problem::SpatialParams::AnsSurface;
+        Scalar ans = AnsSurface::interfacialArea(aNonWettingSolidSurfaceParams, materialParams,Sw, pc);
+
+        // Switch for using a a_{wn} relations that has some "maximum capillary pressure" as parameter            // That value is obtained by regularization of the pc(Sw) function.
+#if USE_PCMAX
+        const Scalar pcMax = problem.spatialParams().pcMax(element, scv, elemSol);
+        //I know the solid surface from the pore network. But it is more consistent to use the fitvalue.
+        using AnsSurface = typename Problem::SpatialParams::AnsSurface;
+        solidSurface_ = AnsSurface::interfacialArea(aNonWettingSolidSurfaceParams, materialParams, /*Sw=*/0., pcMax);
+
+        const Scalar aws = solidSurface_ - ans;
+        interfacialArea_[phase0Idx][sPhaseIdx] = aws;
+        interfacialArea_[sPhaseIdx][phase0Idx] = interfacialArea_[phase0Idx][sPhaseIdx];
+        interfacialArea_[sPhaseIdx][sPhaseIdx] = 0.;
+#else
+        using AwsSurface = typename Problem::SpatialParams::AwsSurface;
+        const auto& aWettingSolidSurfaceParams = problem.spatialParams().aWettingSolidSurfaceParams(element, scv, elemSol);
+        const auto aws = AwsSurface::interfacialArea(aWettingSolidSurfaceParams,materialParams, Sw, pc);
+        interfacialArea_[phase0Idx][sPhaseIdx] = aws ;
+        interfacialArea_[sPhaseIdx][phase0Idx] = interfacialArea_[phase0Idx][sPhaseIdx];
+        interfacialArea_[sPhaseIdx][sPhaseIdx] = 0.;
+#endif
+        interfacialArea_[phase1Idx][sPhaseIdx] = ans;
+        interfacialArea_[sPhaseIdx][phase1Idx] = interfacialArea_[phase1Idx][sPhaseIdx];
+        interfacialArea_[phase1Idx][phase1Idx] = 0.;
+    }
+
+    /*!
+     * \brief The specific interfacial area between two fluid phases [m^2 / m^3]
+     * \note This is _only_ required by the kinetic mass/energy modules
+     */
+    const Scalar interfacialArea(const unsigned int phaseIIdx, const unsigned int phaseJIdx) const
+    {
+        // there is no interfacial area between a phase and itself
+        assert(phaseIIdx not_eq phaseJIdx);
+        return interfacialArea_[phaseIIdx][phaseJIdx];
+    }
+
+    //! access function Reynolds Number
+    const Scalar reynoldsNumber(const unsigned int phaseIdx) const { return reynoldsNumber_[phaseIdx]; }
+    //! access function Prandtl Number
+    const Scalar prandtlNumber(const unsigned int phaseIdx) const { return prandtlNumber_[phaseIdx]; }
+    //! access function Nusselt Number
+    const Scalar nusseltNumber(const unsigned int phaseIdx) const { return nusseltNumber_[phaseIdx]; }
+    //! access function characteristic length
+    const Scalar characteristicLength() const { return characteristicLength_; }
+    //! access function pre factor energy transfer
+    const Scalar factorEnergyTransfer() const { return factorEnergyTransfer_; }
+
+private:
+    //! dimensionless numbers
+    Scalar reynoldsNumber_[ModelTraits::numPhases()];
+    Scalar prandtlNumber_[ModelTraits::numPhases()];
+    Scalar nusseltNumber_[ModelTraits::numPhases()];
+
+    Scalar characteristicLength_;
+    Scalar factorEnergyTransfer_;
+    Scalar solidSurface_ ;
+    Scalar interfacialArea_[ModelTraits::numPhases()+numEnergyEqSolid][ModelTraits::numPhases()+numEnergyEqSolid];
+};
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// specialization for the case of NO kinetic mass but kinetic energy transfer of  a fluid mixture and a solid
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+template<class Traits, class EquilibriumVolumeVariables>
+class NonEquilibriumVolumeVariablesImplementation< Traits,
+                                                   EquilibriumVolumeVariables,
+                                                   false/*chemicalNonEquilibrium?*/,
+                                                   true/*thermalNonEquilibrium?*/,
+                                                   1>
+    :public EquilibriumVolumeVariables
+{
+    using ParentType = EquilibriumVolumeVariables;
+    using ParameterCache = typename Traits::FluidSystem::ParameterCache;
+    using Scalar = typename Traits::PrimaryVariables::value_type;
+
+    using ModelTraits = typename Traits::ModelTraits;
+    using Indices = typename ModelTraits::Indices;
+    using FS = typename Traits::FluidSystem;
+    static constexpr auto numEnergyEqFluid = ModelTraits::numEnergyEqFluid();
+    static constexpr auto numEnergyEqSolid = ModelTraits::numEnergyEqSolid();
+
+    using DimLessNum = DimensionlessNumbers<Scalar>;
+
+public:
+     using FluidState = typename Traits::FluidState;
+    /*!
+     * \brief Update all quantities for a given control volume
+     *
+     * \param elemSol A vector containing all primary variables connected to the element
+     * \param problem The object specifying the problem which ought to
+     *                be simulated
+     * \param element An element which contains part of the control volume
+     * \param scv The sub-control volume
+     */
+    template<class ElemSol, class Problem, class Element, class Scv>
+    void update(const ElemSol &elemSol,
+                const Problem &problem,
+                const Element &element,
+                const Scv& scv)
+    {
+        // Update parent type (also completes the fluid state)
+        ParentType::update(elemSol, problem, element, scv);
+
+        ParameterCache paramCache;
+        paramCache.updateAll(this->fluidState());
+        //only update of DimLessNumbers is necessary here, as interfacial area is easy due to only one fluid with a solid and is directly computed in localresidual
+        updateDimLessNumbers(elemSol, this->fluidState(), paramCache, problem, element, scv);
+        updateInterfacialArea(elemSol, this->fluidState(), paramCache, problem, element, scv);
+    }
+
+    /*!
+     * \brief Updates dimensionless numbers
+     *
+     * \param elemSol A vector containing all primary variables connected to the element
+     * \param fluidState Container for all the secondary variables concerning the fluids
+     * \param paramCache The parameter cache corresponding to the fluid state
+     * \param problem The problem to be solved
+     * \param element An element which contains part of the control volume
+     * \param scv The sub-control volume
+     */
+    template<class ElemSol, class Problem, class Element, class Scv>
+    void updateDimLessNumbers(const ElemSol& elemSol,
+                               const FluidState& fluidState,
+                               const ParameterCache& paramCache,
+                               const Problem& problem,
+                               const Element& element,
+                               const Scv& scv)
+    {
         factorEnergyTransfer_ = problem.spatialParams().factorEnergyTransfer(element, scv, elemSol);
         characteristicLength_ = problem.spatialParams().characteristicLength(element, scv, elemSol);
 
@@ -136,7 +334,7 @@ public:
             const auto thermalConductivity = FluidSystem::thermalConductivity(fluidState, paramCache, phaseIdx);
             const auto porosity            = this->porosity();
 
-            reynoldsNumber_[phaseIdx] = DimLessNum::reynoldsNumber(darcyMagVelocity, characteristicLength_, kinematicViscosity);
+            reynoldsNumber_[phaseIdx] = DimLessNum::reynoldsNumber(darcyMagVelocity, characteristicLength_,kinematicViscosity);
             prandtlNumber_[phaseIdx]  = DimLessNum::prandtlNumber(dynamicViscosity, heatCapacity, thermalConductivity);
             nusseltNumber_[phaseIdx]  = DimLessNum::nusseltNumberForced(reynoldsNumber_[phaseIdx],
                                                                         prandtlNumber_[phaseIdx],
@@ -145,6 +343,29 @@ public:
         }
     }
 
+
+    /*!
+     * \brief Updates the volume specific interfacial area [m^2 / m^3] between the solid and the fluid phase.
+     *
+     * \param elemSol A vector containing all primary variables connected to the element
+     * \param fluidState Container for all the secondary variables concerning the fluids
+     * \param paramCache The parameter cache corresponding to the fluid state
+     * \param problem The problem to be solved
+     * \param element An element which contains part of the control volume
+     * \param scv The sub-control volume
+     */
+    template<class ElemSol, class Problem, class Element, class Scv>
+    void updateInterfacialArea(const ElemSol& elemSol,
+                               const FluidState& fluidState,
+                               const ParameterCache& paramCache,
+                               const Problem& problem,
+                               const Element& element,
+                               const Scv& scv)
+    {
+       using FluidSolidInterfacialAreaFormulation = typename Problem::SpatialParams::FluidSolidInterfacialAreaFormulation;
+       interfacialArea_ =  FluidSolidInterfacialAreaFormulation::fluidSolidInterfacialArea(this->porosity(), characteristicLength());
+    }
+
     //! access function Reynolds Number
     const Scalar reynoldsNumber(const unsigned int phaseIdx) const { return reynoldsNumber_[phaseIdx]; }
     //! access function Prandtl Number
@@ -155,8 +376,8 @@ public:
     const Scalar characteristicLength() const { return characteristicLength_; }
     //! access function pre factor energy transfer
     const Scalar factorEnergyTransfer() const { return factorEnergyTransfer_; }
-    //! access function pre factor mass transfer
-    const Scalar factorMassTransfer() const { return factorMassTransfer_; }
+
+    const Scalar fluidSolidInterfacialArea() const {return interfacialArea_;}
 
 private:
     //! dimensionless numbers
@@ -166,8 +387,7 @@ private:
 
     Scalar characteristicLength_;
     Scalar factorEnergyTransfer_;
-    Scalar factorMassTransfer_;
-    Scalar solidSurface_ ;
+    Scalar interfacialArea_ ;
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -177,7 +397,8 @@ template<class Traits, class EquilibriumVolumeVariables>
 class NonEquilibriumVolumeVariablesImplementation< Traits,
                                                    EquilibriumVolumeVariables,
                                                    true/*chemicalNonEquilibrium?*/,
-                                                   false/*thermalNonEquilibrium?*/>
+                                                   false/*thermalNonEquilibrium?*/,
+                                                   0>
     :public EquilibriumVolumeVariables
 {
     using ParentType = EquilibriumVolumeVariables;
@@ -216,6 +437,7 @@ public:
 
         ParameterCache paramCache;
         paramCache.updateAll(this->fluidState());
+        updateDimLessNumbers(elemSol, this->fluidState(), paramCache, problem, element, scv);
         updateInterfacialArea(elemSol, this->fluidState(), paramCache, problem, element, scv);
     }
 
@@ -230,24 +452,13 @@ public:
      * \param scv The sub-control volume
      */
     template<class ElemSol, class Problem, class Element, class Scv>
-    void updateInterfacialArea(const ElemSol& elemSol,
-                               const FluidState& fluidState,
-                               const ParameterCache& paramCache,
-                               const Problem& problem,
-                               const Element& element,
-                               const Scv& scv)
+    void updateDimLessNumbers(const ElemSol& elemSol,
+                              const FluidState& fluidState,
+                              const ParameterCache& paramCache,
+                              const Problem& problem,
+                              const Element& element,
+                              const Scv& scv)
     {
-        // obtain parameters for awnsurface and material law
-        const auto& awnSurfaceParams = problem.spatialParams().aWettingNonWettingSurfaceParams(element, scv, elemSol) ;
-        const auto& materialParams  = problem.spatialParams().materialLawParams(element, scv, elemSol) ;
-
-        const auto Sw = fluidState.saturation(phase0Idx) ;
-        const auto pc = fluidState.pressure(phase1Idx) - fluidState.pressure(phase0Idx);
-
-        // so far there is only a model for kinetic mass transfer between fluid phases
-        using AwnSurface = typename Problem::SpatialParams::AwnSurface;
-        interfacialArea_ = AwnSurface::interfacialArea(awnSurfaceParams, materialParams, Sw, pc);
-
         factorMassTransfer_ = problem.spatialParams().factorMassTransfer(element, scv, elemSol);
         characteristicLength_ = problem.spatialParams().characteristicLength(element, scv, elemSol);
 
@@ -276,6 +487,36 @@ public:
         }
     }
 
+     /*!
+     * \brief Updates the volume specific interfacial area [m^2 / m^3] between the phases.
+     *
+     * \param elemSol A vector containing all primary variables connected to the element
+     * \param fluidState Container for all the secondary variables concerning the fluids
+     * \param paramCache The parameter cache corresponding to the fluid state
+     * \param problem The problem to be solved
+     * \param element An element which contains part of the control volume
+     * \param scv The sub-control volume
+     */
+    template<class ElemSol, class Problem, class Element, class Scv>
+    void updateInterfacialArea(const ElemSol& elemSol,
+                               const FluidState& fluidState,
+                               const ParameterCache& paramCache,
+                               const Problem& problem,
+                               const Element& element,
+                               const Scv& scv)
+    {
+        // obtain parameters for awnsurface and material law
+        const auto& awnSurfaceParams = problem.spatialParams().aWettingNonWettingSurfaceParams(element, scv, elemSol) ;
+        const auto& materialParams  = problem.spatialParams().materialLawParams(element, scv, elemSol) ;
+
+        const auto Sw = fluidState.saturation(phase0Idx) ;
+        const auto pc = fluidState.pressure(phase1Idx) - fluidState.pressure(phase0Idx);
+
+        // so far there is only a model for kinetic mass transfer between fluid phases
+        using AwnSurface = typename Problem::SpatialParams::AwnSurface;
+        interfacialArea_ = AwnSurface::interfacialArea(awnSurfaceParams, materialParams, Sw, pc);
+    }
+
     /*!
      * \brief The specific interfacial area between two fluid phases [m^2 / m^3]
      */
@@ -313,7 +554,8 @@ template<class Traits, class EquilibriumVolumeVariables>
 class NonEquilibriumVolumeVariablesImplementation< Traits,
                                                    EquilibriumVolumeVariables,
                                                    true/*chemicalNonEquilibrium?*/,
-                                                   true/*thermalNonEquilibrium?*/>
+                                                   true/*thermalNonEquilibrium?*/,
+                                                   2>
    :public EquilibriumVolumeVariables
 {
     using ParentType = EquilibriumVolumeVariables;
@@ -357,6 +599,7 @@ public:
 
         ParameterCache paramCache;
         paramCache.updateAll(this->fluidState());
+        updateDimLessNumbers(elemSol, this->fluidState(), paramCache, problem, element, scv);
         updateInterfacialArea(elemSol, this->fluidState(), paramCache, problem, element, scv);
     }
 
@@ -371,6 +614,61 @@ public:
      * \param scv The sub-control volume
      */
     template<class ElemSol, class Problem, class Element, class Scv>
+    void updateDimLessNumbers(const ElemSol& elemSol,
+                              const FluidState& fluidState,
+                              const ParameterCache& paramCache,
+                              const Problem& problem,
+                              const Element& element,
+                              const Scv& scv)
+    {
+        factorMassTransfer_ = problem.spatialParams().factorMassTransfer(element, scv, elemSol);
+        factorEnergyTransfer_ = problem.spatialParams().factorEnergyTransfer(element, scv, elemSol);
+        characteristicLength_ = problem.spatialParams().characteristicLength(element, scv, elemSol);
+
+        const auto vIdxGlobal = scv.dofIndex();
+        using FluidSystem = typename Traits::FluidSystem;
+        for (int phaseIdx = 0; phaseIdx < ModelTraits::numPhases(); ++phaseIdx)
+        {
+            const auto darcyMagVelocity    = problem.gridVariables().volumeDarcyMagVelocity(phaseIdx, vIdxGlobal);
+            const auto dynamicViscosity    = fluidState.viscosity(phaseIdx);
+            const auto density             = fluidState.density(phaseIdx);
+            const auto kinematicViscosity  = dynamicViscosity/density;
+            const auto heatCapacity        = FluidSystem::heatCapacity(fluidState, paramCache, phaseIdx);
+            const auto thermalConductivity = FluidSystem::thermalConductivity(fluidState, paramCache, phaseIdx);
+
+            // diffusion coefficient of non-wetting component in wetting phase
+            const auto porosity = this->porosity();
+            const auto diffCoeff = FluidSystem::binaryDiffusionCoefficient(fluidState,
+                                                                           paramCache,
+                                                                           phaseIdx,
+                                                                           wCompIdx,
+                                                                           nCompIdx);
+
+            reynoldsNumber_[phaseIdx] = DimLessNum::reynoldsNumber(darcyMagVelocity, characteristicLength_, kinematicViscosity);
+            prandtlNumber_[phaseIdx]  = DimLessNum::prandtlNumber(dynamicViscosity, heatCapacity, thermalConductivity);
+            schmidtNumber_[phaseIdx]  = DimLessNum::schmidtNumber(dynamicViscosity, density, diffCoeff);
+            nusseltNumber_[phaseIdx]  = DimLessNum::nusseltNumberForced(reynoldsNumber_[phaseIdx],
+                                                                        prandtlNumber_[phaseIdx],
+                                                                        porosity,
+                                                                        ModelTraits::nusseltFormulation());
+            // If Diffusion is not enabled, Sherwood is divided by zero
+            sherwoodNumber_[phaseIdx] = DimLessNum::sherwoodNumber(reynoldsNumber_[phaseIdx],
+                                                                   schmidtNumber_[phaseIdx],
+                                                                   ModelTraits::sherwoodFormulation());
+        }
+    }
+
+     /*!
+     * \brief Updates the volume specific interfacial area [m^2 / m^3] between the phases.
+     *
+     * \param elemSol A vector containing all primary variables connected to the element
+     * \param fluidState Container for all the secondary variables concerning the fluids
+     * \param paramCache The parameter cache corresponding to the fluid state
+     * \param problem The problem to be solved
+     * \param element An element which contains part of the control volume
+     * \param scv The sub-control volume
+     */
+    template<class ElemSol, class Problem, class Element, class Scv>
     void updateInterfacialArea(const ElemSol& elemSol,
                                const FluidState& fluidState,
                                const ParameterCache& paramCache,
@@ -390,24 +688,6 @@ public:
 
         Scalar awn;
 
-        // TODO can we delete this??? awn is overwritten anyway!
-#define AwnRegul 0
-        // This regularizes the interfacial area between the fluid phases.
-        // This makes sure, that
-        // a) some saturation cannot be lost: Never leave two phase region.
-        // b) We cannot leave the fit region: no crazy (e.g. negative) values possible
-
-        // const Scalar Swr =  aWettingNonWettingSurfaceParams.Swr() ;
-        // const Scalar Snr =  aWettingNonWettingSurfaceParams.Snr() ;
-
-        // this just leads to a stalling newton error as soon as this kicks in.
-        // May be a spline or sth like this would help, but I do not which derivatives
-        // to specify.
-#if AwnRegul
-        if(Sw < 5e-3 ) // or Sw > (1.-1e-5 )
-            awn = 0. ; // 10.; //
-#endif
-
         using AwnSurface = typename Problem::SpatialParams::AwnSurface;
         awn = AwnSurface::interfacialArea(aWettingNonWettingSurfaceParams, materialParams, Sw, pc );
         interfacialArea_[phase0Idx][phase1Idx] = awn;
@@ -441,42 +721,6 @@ public:
         interfacialArea_[phase1Idx][sPhaseIdx] = ans;
         interfacialArea_[sPhaseIdx][phase1Idx] = interfacialArea_[phase1Idx][sPhaseIdx];
         interfacialArea_[phase1Idx][phase1Idx] = 0.;
-
-        factorMassTransfer_ = problem.spatialParams().factorMassTransfer(element, scv, elemSol);
-        factorEnergyTransfer_ = problem.spatialParams().factorEnergyTransfer(element, scv, elemSol);
-        characteristicLength_ = problem.spatialParams().characteristicLength(element, scv, elemSol);
-
-        const auto vIdxGlobal = scv.dofIndex();
-        using FluidSystem = typename Traits::FluidSystem;
-        for (int phaseIdx = 0; phaseIdx < ModelTraits::numPhases(); ++phaseIdx)
-        {
-            const auto darcyMagVelocity    = problem.gridVariables().volumeDarcyMagVelocity(phaseIdx, vIdxGlobal);
-            const auto dynamicViscosity    = fluidState.viscosity(phaseIdx);
-            const auto density             = fluidState.density(phaseIdx);
-            const auto kinematicViscosity  = dynamicViscosity/density;
-            const auto heatCapacity        = FluidSystem::heatCapacity(fluidState, paramCache, phaseIdx);
-            const auto thermalConductivity = FluidSystem::thermalConductivity(fluidState, paramCache, phaseIdx);
-
-            // diffusion coefficient of non-wetting component in wetting phase
-            const auto porosity = this->porosity();
-            const auto diffCoeff = FluidSystem::binaryDiffusionCoefficient(fluidState,
-                                                                           paramCache,
-                                                                           phaseIdx,
-                                                                           wCompIdx,
-                                                                           nCompIdx);
-
-            reynoldsNumber_[phaseIdx] = DimLessNum::reynoldsNumber(darcyMagVelocity, characteristicLength_, kinematicViscosity);
-            prandtlNumber_[phaseIdx]  = DimLessNum::prandtlNumber(dynamicViscosity, heatCapacity, thermalConductivity);
-            schmidtNumber_[phaseIdx]  = DimLessNum::schmidtNumber(dynamicViscosity, density, diffCoeff);
-            nusseltNumber_[phaseIdx]  = DimLessNum::nusseltNumberForced(reynoldsNumber_[phaseIdx],
-                                                                        prandtlNumber_[phaseIdx],
-                                                                        porosity,
-                                                                        ModelTraits::nusseltFormulation());
-            // If Diffusion is not enabled, Sherwood is divided by zero
-            sherwoodNumber_[phaseIdx] = DimLessNum::sherwoodNumber(reynoldsNumber_[phaseIdx],
-                                                                   schmidtNumber_[phaseIdx],
-                                                                   ModelTraits::sherwoodFormulation());
-        }
     }
 
     /*!
diff --git a/dumux/porousmediumflow/nonisothermal/volumevariables.hh b/dumux/porousmediumflow/nonisothermal/volumevariables.hh
index ef6395fe32dbcb33aa1a3d64b1c6e65bc63eb5d0..87c1e91572b7afd214092304fc733f9e0b92165c 100644
--- a/dumux/porousmediumflow/nonisothermal/volumevariables.hh
+++ b/dumux/porousmediumflow/nonisothermal/volumevariables.hh
@@ -179,7 +179,10 @@ public:
             if (numEnergyEq == 2)
             {
                 const Scalar T = elemSol[scv.localDofIndex()][temperatureIdx];
-                fluidState.setTemperature(T);
+                for(int phaseIdx=0; phaseIdx < FluidSystem::numPhases; ++phaseIdx)
+                {
+                    fluidState.setTemperature(phaseIdx, T);
+                }
             }
             //this is for numEnergyEqFluid > 1
             else
diff --git a/test/material/immiscibleflash/test_immiscibleflash.cc b/test/material/immiscibleflash/test_immiscibleflash.cc
index 99f1e99db90238ca0ce72943a64ed82dac89d021..e0090971108a33e46d2516ea85265716099bb00b 100644
--- a/test/material/immiscibleflash/test_immiscibleflash.cc
+++ b/test/material/immiscibleflash/test_immiscibleflash.cc
@@ -37,7 +37,7 @@
 #include <dumux/material/fluidsystems/h2on2.hh>
 
 #include <dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh>
-#include <dumux/material/fluidmatrixinteractions/mp/2padapter.hh>
+#include <dumux/material/fluidmatrixinteractions/mp/mpadapter.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedlinearmaterial.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
@@ -100,16 +100,17 @@ void checkImmiscibleFlash(const FluidState &fsRef,
         }
     }
 
+    // create the flash
+    Dumux::ImmiscibleFlash<Scalar, FluidSystem> flash(/*wettingPhaseIdx=*/0);
     // initialize the fluid state for the flash calculation
-    using ImmiscibleFlash = Dumux::ImmiscibleFlash<Scalar, FluidSystem>;
     FluidState fsFlash;
 
     fsFlash.setTemperature(fsRef.temperature(/*phaseIdx=*/0));
 
     // run the flash calculation
     typename FluidSystem::ParameterCache paramCache;
-    ImmiscibleFlash::guessInitial(fsFlash, paramCache, globalMolarities);
-    ImmiscibleFlash::template solve<MaterialLaw>(fsFlash, paramCache, matParams, globalMolarities);
+    flash.guessInitial(fsFlash, paramCache, globalMolarities);
+    flash.template solve<MaterialLaw>(fsFlash, paramCache, matParams, globalMolarities);
 
     // compare the "flashed" fluid state with the reference one
     checkSame<Scalar>(fsRef, fsFlash);
@@ -132,7 +133,7 @@ void completeReferenceFluidState(FluidState &fs,
 
     // calulate the capillary pressure
     PhaseVector pc;
-    MaterialLaw::capillaryPressures(pc, matParams, fs);
+    MaterialLaw::capillaryPressures(pc, matParams, fs, /*wPhaseIdx=*/0);
     fs.setPressure(otherPhaseIdx,
                    fs.pressure(refPhaseIdx)
                    + (pc[otherPhaseIdx] - pc[refPhaseIdx]));
@@ -161,8 +162,8 @@ int main()
     enum { gasPhaseIdx = FluidSystem::gasPhaseIdx };
 
     using EffMaterialLaw = Dumux::RegularizedBrooksCorey<Scalar>;
-    using TwoPMaterialLaw = Dumux::EffToAbsLaw<EffMaterialLaw>;
-    using MaterialLaw = Dumux::TwoPAdapter<liquidPhaseIdx, TwoPMaterialLaw>;
+    using MaterialLaw = Dumux::EffToAbsLaw<EffMaterialLaw>;
+    using MPAdapter = Dumux::MPAdapter<MaterialLaw, numPhases>;
     using MaterialLawParams = MaterialLaw::Params;
 
     Scalar T = 273.15 + 25;
@@ -202,10 +203,10 @@ int main()
     fsRef.setPressure(liquidPhaseIdx, 1e6);
 
     // set the remaining parameters of the reference fluid state
-    completeReferenceFluidState<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams, liquidPhaseIdx);
+    completeReferenceFluidState<Scalar, FluidSystem, MPAdapter>(fsRef, matParams, liquidPhaseIdx);
 
     // check the flash calculation
-    checkImmiscibleFlash<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams);
+    checkImmiscibleFlash<Scalar, FluidSystem, MPAdapter>(fsRef, matParams);
 
     ////////////////
     // only gas
@@ -217,10 +218,10 @@ int main()
     fsRef.setPressure(gasPhaseIdx, 1e6);
 
     // set the remaining parameters of the reference fluid state
-    completeReferenceFluidState<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams, gasPhaseIdx);
+    completeReferenceFluidState<Scalar, FluidSystem, MPAdapter>(fsRef, matParams, gasPhaseIdx);
 
     // check the flash calculation
-    checkImmiscibleFlash<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams);
+    checkImmiscibleFlash<Scalar, FluidSystem, MPAdapter>(fsRef, matParams);
 
     ////////////////
     // both phases
@@ -232,10 +233,10 @@ int main()
     fsRef.setPressure(liquidPhaseIdx, 1e6);
 
     // set the remaining parameters of the reference fluid state
-    completeReferenceFluidState<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams, liquidPhaseIdx);
+    completeReferenceFluidState<Scalar, FluidSystem, MPAdapter>(fsRef, matParams, liquidPhaseIdx);
 
     // check the flash calculation
-    checkImmiscibleFlash<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams);
+    checkImmiscibleFlash<Scalar, FluidSystem, MPAdapter>(fsRef, matParams);
 
     ////////////////
     // with capillary pressure
@@ -255,10 +256,10 @@ int main()
     fsRef.setPressure(liquidPhaseIdx, 1e6);
 
     // set the remaining parameters of the reference fluid state
-    completeReferenceFluidState<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams2, liquidPhaseIdx);
+    completeReferenceFluidState<Scalar, FluidSystem, MPAdapter>(fsRef, matParams2, liquidPhaseIdx);
 
     // check the flash calculation
-    checkImmiscibleFlash<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams2);
+    checkImmiscibleFlash<Scalar, FluidSystem, MPAdapter>(fsRef, matParams2);
 
     return 0;
 }
diff --git a/test/material/ncpflash/test_ncpflash.cc b/test/material/ncpflash/test_ncpflash.cc
index 71d82f0b87f86de2307cf496b33522750e265035..b466c8c4fda0828adf66b01477c32cdeeddcd2c3 100644
--- a/test/material/ncpflash/test_ncpflash.cc
+++ b/test/material/ncpflash/test_ncpflash.cc
@@ -37,7 +37,7 @@
 #include <dumux/material/fluidsystems/h2on2.hh>
 
 #include <dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh>
-#include <dumux/material/fluidmatrixinteractions/mp/2padapter.hh>
+#include <dumux/material/fluidmatrixinteractions/mp/mpadapter.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedlinearmaterial.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
@@ -100,16 +100,17 @@ void checkNcpFlash(const FluidState &fsRef,
         }
     }
 
+    // make a new flash
+    Dumux::NcpFlash<Scalar, FluidSystem> flash(/*wettingPhaseIdx=*/0);
     // initialize the fluid state for the flash calculation
-    using NcpFlash = Dumux::NcpFlash<Scalar, FluidSystem>;
     FluidState fsFlash;
 
     fsFlash.setTemperature(fsRef.temperature(/*phaseIdx=*/0));
 
     // run the flash calculation
     typename FluidSystem::ParameterCache paramCache;
-    NcpFlash::guessInitial(fsFlash, paramCache, globalMolarities);
-    NcpFlash::template solve<MaterialLaw>(fsFlash, paramCache, matParams, globalMolarities);
+    flash.guessInitial(fsFlash, paramCache, globalMolarities);
+    flash.template solve<MaterialLaw>(fsFlash, paramCache, matParams, globalMolarities);
 
     // compare the "flashed" fluid state with the reference one
     checkSame<Scalar>(fsRef, fsFlash);
@@ -133,7 +134,7 @@ void completeReferenceFluidState(FluidState &fs,
 
     // calulate the capillary pressure
     PhaseVector pc;
-    MaterialLaw::capillaryPressures(pc, matParams, fs);
+    MaterialLaw::capillaryPressures(pc, matParams, fs, /*wPhaseIdx=*/0);
     fs.setPressure(otherPhaseIdx,
                    fs.pressure(refPhaseIdx)
                    + (pc[otherPhaseIdx] - pc[refPhaseIdx]));
@@ -157,14 +158,15 @@ int main()
     enum { numComponents = FluidSystem::numComponents };
     enum { liquidPhaseIdx = FluidSystem::liquidPhaseIdx };
     enum { gasPhaseIdx = FluidSystem::gasPhaseIdx };
+    enum { wPhaseIdx = liquidPhaseIdx };
 
     enum { H2OIdx = FluidSystem::H2OIdx };
     enum { N2Idx = FluidSystem::N2Idx };
 
     using EffMaterialLaw = Dumux::RegularizedBrooksCorey<Scalar>;
-    using TwoPMaterialLaw = Dumux::EffToAbsLaw<EffMaterialLaw>;
-    using MaterialLaw = Dumux::TwoPAdapter<liquidPhaseIdx, TwoPMaterialLaw>;
+    using MaterialLaw = Dumux::EffToAbsLaw<EffMaterialLaw>;
     using MaterialLawParams = MaterialLaw::Params;
+    using MPAdapter = Dumux::MPAdapter<MaterialLaw, numPhases>;
 
     Scalar T = 273.15 + 25;
 
@@ -208,11 +210,13 @@ int main()
     fsRef.setMoleFraction(liquidPhaseIdx, N2Idx, 0.0);
     fsRef.setMoleFraction(liquidPhaseIdx, H2OIdx, 1.0);
 
+    fsRef.setWettingPhase(wPhaseIdx);
+
     // "complete" the fluid state
-    completeReferenceFluidState<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams, liquidPhaseIdx);
+    completeReferenceFluidState<Scalar, FluidSystem, MPAdapter>(fsRef, matParams, liquidPhaseIdx);
 
     // check the flash calculation
-    checkNcpFlash<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams);
+    checkNcpFlash<Scalar, FluidSystem, MPAdapter>(fsRef, matParams);
 
     ////////////////
     // only gas
@@ -229,10 +233,10 @@ int main()
     fsRef.setMoleFraction(gasPhaseIdx, H2OIdx, 0.001);
 
     // "complete" the fluid state
-    completeReferenceFluidState<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams, gasPhaseIdx);
+    completeReferenceFluidState<Scalar, FluidSystem, MPAdapter>(fsRef, matParams, gasPhaseIdx);
 
     // check the flash calculation
-    checkNcpFlash<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams);
+    checkNcpFlash<Scalar, FluidSystem, MPAdapter>(fsRef, matParams);
 
     ////////////////
     // both phases
@@ -252,7 +256,7 @@ int main()
     MiscibleMultiPhaseComposition::solve(fsRef, paramCache);
 
     // check the flash calculation
-    checkNcpFlash<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams);
+    checkNcpFlash<Scalar, FluidSystem, MPAdapter>(fsRef, matParams);
 
     ////////////////
     // with capillary pressure
@@ -274,7 +278,7 @@ int main()
     // calulate the capillary pressure
     using PhaseVector = Dune::FieldVector<Scalar, numPhases>;
     PhaseVector pc;
-    MaterialLaw::capillaryPressures(pc, matParams2, fsRef);
+    MPAdapter::capillaryPressures(pc, matParams2, fsRef, /*wPhaseIdx=*/0);
     fsRef.setPressure(gasPhaseIdx,
                       fsRef.pressure(liquidPhaseIdx)
                       + (pc[gasPhaseIdx] - pc[liquidPhaseIdx]));
@@ -284,7 +288,7 @@ int main()
 
 
     // check the flash calculation
-    checkNcpFlash<Scalar, FluidSystem, MaterialLaw>(fsRef, matParams2);
+    checkNcpFlash<Scalar, FluidSystem, MPAdapter>(fsRef, matParams2);
 
     return 0;
 }
diff --git a/test/material/pengrobinson/test_pengrobinson.cc b/test/material/pengrobinson/test_pengrobinson.cc
index 3996032d46ff998b98edb79179253504692a16c7..484d9a8b43119a4500d6b00b43ec2297c66cc83b 100644
--- a/test/material/pengrobinson/test_pengrobinson.cc
+++ b/test/material/pengrobinson/test_pengrobinson.cc
@@ -42,11 +42,12 @@ Scalar bringOilToSurface(FluidState &surfaceFluidState, Scalar alpha, const Flui
         numComponents = FluidSystem::numComponents
     };
 
-    using Flash = Dumux::NcpFlash<Scalar, FluidSystem>;
     using MaterialLaw = Dumux::MpLinearMaterial<numPhases, Scalar>;
     using MaterialLawParams = typename MaterialLaw::Params;
     using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
 
+    // create a flash
+    Dumux::NcpFlash<Scalar, FluidSystem> flash(/*wettingPhaseIdx=*/0);
     const Scalar refPressure = 1.0135e5; // [Pa]
 
     // set the parameters for the capillary pressure law
@@ -93,7 +94,7 @@ Scalar bringOilToSurface(FluidState &surfaceFluidState, Scalar alpha, const Flui
         // calculate the deviation from the standard pressure
         tmpMolarities = molarities;
         tmpMolarities /= alpha;
-        Flash::template solve<MaterialLaw>(surfaceFluidState, paramCache, matParams, tmpMolarities);
+        flash.template solve<MaterialLaw>(surfaceFluidState, paramCache, matParams, tmpMolarities);
         Scalar f = surfaceFluidState.pressure(gPhaseIdx) - refPressure;
 
         // calculate the derivative of the deviation from the standard
@@ -101,7 +102,7 @@ Scalar bringOilToSurface(FluidState &surfaceFluidState, Scalar alpha, const Flui
         Scalar eps = alpha*1e-10;
         tmpMolarities = molarities;
         tmpMolarities /= alpha + eps;
-        Flash::template solve<MaterialLaw>(surfaceFluidState, paramCache, matParams, tmpMolarities);
+        flash.template solve<MaterialLaw>(surfaceFluidState, paramCache, matParams, tmpMolarities);
         Scalar fStar = surfaceFluidState.pressure(gPhaseIdx) - refPressure;
         Scalar fPrime = (fStar - f)/eps;
 
@@ -117,7 +118,7 @@ Scalar bringOilToSurface(FluidState &surfaceFluidState, Scalar alpha, const Flui
     // calculate the final result
     tmpMolarities = molarities;
     tmpMolarities /= alpha;
-    Flash::template solve<MaterialLaw>(surfaceFluidState, paramCache, matParams, tmpMolarities);
+    flash.template solve<MaterialLaw>(surfaceFluidState, paramCache, matParams, tmpMolarities);
     return alpha;
 }
 
@@ -142,7 +143,6 @@ int main(int argc, char** argv)
         C20Idx = FluidSystem::C20Idx
     };
 
-    using Flash = Dumux::NcpFlash<Scalar, FluidSystem>;
     using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
     using FluidState = Dumux::CompositionalFluidState<Scalar, FluidSystem>;
 
@@ -208,10 +208,11 @@ int main(int argc, char** argv)
     // volume factor.
     ////////////
 
+    Dumux::NcpFlash<Scalar, FluidSystem> flash(/*wettingPhaseIdx=*/0);
     FluidState flashFluidState, surfaceFluidState;
     flashFluidState.assign(fluidState);
-    Flash::guessInitial(flashFluidState, paramCache, molarities);
-    Flash::solve<MaterialLaw>(flashFluidState, paramCache, matParams, molarities);
+    flash.guessInitial(flashFluidState, paramCache, molarities);
+    flash.solve<MaterialLaw>(flashFluidState, paramCache, matParams, molarities);
 
     Scalar surfaceAlpha = 50;
     bringOilToSurface<Scalar, FluidSystem>(surfaceFluidState, surfaceAlpha, flashFluidState, /*guessInitial=*/true);
@@ -232,7 +233,7 @@ int main(int argc, char** argv)
         curMolarities /= alpha;
 
         // "flash" the modified reservoir oil
-        Flash::solve<MaterialLaw>(flashFluidState, paramCache, matParams, curMolarities);
+        flash.solve<MaterialLaw>(flashFluidState, paramCache, matParams, curMolarities);
 
         Scalar alphaSurface = bringOilToSurface<Scalar, FluidSystem>(surfaceFluidState,
                                                                      surfaceAlpha,
diff --git a/test/porousmediumflow/1pnc/implicit/CMakeLists.txt b/test/porousmediumflow/1pnc/implicit/CMakeLists.txt
index ec7ae9628bc44fcb31bdbf899235633899be947f..4e56daf211c600eae100a875076422aa077a1cf1 100644
--- a/test/porousmediumflow/1pnc/implicit/CMakeLists.txt
+++ b/test/porousmediumflow/1pnc/implicit/CMakeLists.txt
@@ -1 +1,2 @@
 add_subdirectory(1p2c)
+add_subdirectory(nonequilibrium)
diff --git a/test/porousmediumflow/1pnc/implicit/nonequilibrium/CMakeLists.txt b/test/porousmediumflow/1pnc/implicit/nonequilibrium/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4ca17d93c0bb906553d8b79a201e05641b9e29b1
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/nonequilibrium/CMakeLists.txt
@@ -0,0 +1,23 @@
+add_input_file_links()
+
+# non-isothermal tests
+# conduction
+dune_add_test(NAME test_1p2c_nonequilibrium_box
+              SOURCES main.cc
+              COMPILE_DEFINITIONS TYPETAG=OnePTwoCThermalNonequilibriumBox
+              COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
+              CMD_ARGS  --script fuzzy
+                        --files ${CMAKE_SOURCE_DIR}/test/references/test_1p2c_nonequilibrium_box-reference.vtu
+                                ${CMAKE_CURRENT_BINARY_DIR}/test_1p2c_nonequilibrium_box-00045.vtu
+                        --command "${CMAKE_CURRENT_BINARY_DIR}/test_1p2c_nonequilibrium_box params.input -Problem.Name test_1p2c_nonequilibrium_box"
+                        --zeroThreshold {"velocity_liq \(m/s\)_1":1e-15})
+
+dune_add_test(NAME test_1p2c_nonequilibrium_tpfa
+              SOURCES main.cc
+              COMPILE_DEFINITIONS TYPETAG=OnePTwoCThermalNonequilibriumCCTpfa
+              COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
+              CMD_ARGS  --script fuzzy
+                        --files ${CMAKE_SOURCE_DIR}/test/references/test_1p2c_nonequilibrium_tpfa-reference.vtu
+                                ${CMAKE_CURRENT_BINARY_DIR}/test_1p2c_nonequilibrium_tpfa-00044.vtu
+                        --command "${CMAKE_CURRENT_BINARY_DIR}/test_1p2c_nonequilibrium_tpfa params.input -Problem.Name test_1p2c_nonequilibrium_tpfa"
+                        --zeroThreshold {"velocity_liq \(m/s\)_1":1e-15})
diff --git a/test/porousmediumflow/1pnc/implicit/nonequilibrium/main.cc b/test/porousmediumflow/1pnc/implicit/nonequilibrium/main.cc
new file mode 100644
index 0000000000000000000000000000000000000000..be1998bbf3cc7382a07c566e57d3341ca793a8fc
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/nonequilibrium/main.cc
@@ -0,0 +1,203 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief test for the 1pnc model
+ */
+#include <config.h>
+
+#include "problem.hh"
+
+#include <ctime>
+#include <iostream>
+
+#include <dune/common/parallel/mpihelper.hh>
+#include <dune/common/timer.hh>
+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
+#include <dune/grid/io/file/vtk.hh>
+#include <dune/istl/io.hh>
+
+#include <dumux/discretization/method.hh>
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/porousmediumflow/nonequilibrium/newtonsolver.hh>
+#include <dumux/linear/seqsolverbackend.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+#include <dumux/io/grid/gridmanager.hh>
+
+int main(int argc, char** argv) try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = Properties::TTag::TYPETAG;
+
+    ////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////
+
+    // initialize MPI, finalize is done automatically on exit
+    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+
+    // print dumux start message
+    if (mpiHelper.rank() == 0)
+    DumuxMessage::print(/*firstCall=*/true);
+
+    // initialize parameter tree
+    Parameters::init(argc, argv);
+
+    //////////////////////////////////////////////////////////////////////
+    // try to create a grid (from the given grid file or the input file)
+    /////////////////////////////////////////////////////////////////////
+
+    GridManager<GetPropType<TypeTag, Properties::Grid>> gridManager;
+    gridManager.init();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = gridManager.grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = GetPropType<TypeTag, Properties::Problem>;
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = GetPropType<TypeTag, Properties::SolutionVector>;
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = GetPropType<TypeTag, Properties::GridVariables>;
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x);
+    problem->setGridVariables(gridVariables);
+
+    // get some time loop parameters
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+    auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+
+    // intialize the vtk output module
+     using IOFields = GetPropType<TypeTag, Properties::IOFields>;
+    VtkOutputModule<GridVariables, SolutionVector> vtkWriter(*gridVariables, x, problem->name());
+    using VelocityOutput = GetPropType<TypeTag, Properties::VelocityOutput>;
+    vtkWriter.addVelocityOutput(std::make_shared<VelocityOutput>(*gridVariables));
+    IOFields::initOutputModule(vtkWriter); //!< Add model specific output fields
+    vtkWriter.write(0.0);
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(0.0, dt, tEnd);
+    timeLoop->setMaxTimeStepSize(maxDt);
+
+    // the assembler with time loop for instationary problem
+    using Assembler = FVAssembler<TypeTag, DiffMethod::numeric>;
+    auto assembler = std::make_shared<Assembler>(problem, fvGridGeometry, gridVariables, timeLoop);
+
+    // the linear solver
+    //  using LinearSolver = UMFPackBackend;
+    using LinearSolver = ILU0BiCGSTABBackend;
+    auto linearSolver = std::make_shared<LinearSolver>();
+
+    // the non-linear solver
+    using NewtonSolver = Dumux::NonEquilibriumNewtonSolver<Assembler, LinearSolver>;
+    NewtonSolver nonLinearSolver(assembler, linearSolver);
+
+    // time loop
+    timeLoop->start(); do
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        // linearize & solve
+        nonLinearSolver.solve(x, *timeLoop);
+
+        // make the new solution the old solution
+        xOld = x;
+        gridVariables->advanceTimeStep();
+
+        // advance to the time loop to the next step
+        timeLoop->advanceTimeStep();
+
+        // write vtk output
+        vtkWriter.write(timeLoop->time());
+
+        // report statistics of this time step
+        timeLoop->reportTimeStep();
+
+        // set new dt as suggested by the newton solver
+        timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize()));
+
+    } while (!timeLoop->finished());
+
+    timeLoop->finalize(leafGridView.comm());
+
+    ////////////////////////////////////////////////////////////
+    // finalize, print dumux message to say goodbye
+    ////////////////////////////////////////////////////////////
+
+    // print dumux end message
+    if (mpiHelper.rank() == 0)
+    {
+        Parameters::print();
+        DumuxMessage::print(/*firstCall=*/false);
+    }
+    return 0;
+
+}
+catch (Dumux::ParameterException &e)
+{
+    std::cerr << std::endl << e << " ---> Abort!" << std::endl;
+    return 1;
+}
+catch (Dune::DGFException & e)
+{
+    std::cerr << "DGF exception thrown (" << e <<
+                 "). Most likely, the DGF file name is wrong "
+                 "or the DGF file is corrupted, "
+                 "e.g. missing hash at end of file or wrong number (dimensions) of entries."
+                 << " ---> Abort!" << std::endl;
+    return 2;
+}
+catch (Dune::Exception &e)
+{
+    std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl;
+    return 3;
+}
+catch (...)
+{
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
+}
diff --git a/test/porousmediumflow/1pnc/implicit/nonequilibrium/params.input b/test/porousmediumflow/1pnc/implicit/nonequilibrium/params.input
new file mode 100644
index 0000000000000000000000000000000000000000..6b887c773fa13afa72a4ff4524440d1691ed9a71
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/nonequilibrium/params.input
@@ -0,0 +1,21 @@
+[TimeLoop]
+DtInitial = 1 # [s]
+TEnd = 3e4 # [s]
+MaxTimeStepSize = 1e3
+
+[Grid]
+UpperRight = 5 1
+Cells = 200 1
+
+[Problem]
+Name = test_1p2c_nonequilibrium # name passed to the output routines
+EnableGravity = 0 # disable gravity
+DarcyVelocity = 1e-4 # [m/s] inflow at the left boundary
+
+[Vtk]
+AddVelocity = 1 # enable velocity output
+
+[Component]
+SolidDensity = 2700
+SolidThermalConductivity = 2.8
+SolidHeatCapacity = 790
diff --git a/test/porousmediumflow/1pnc/implicit/nonequilibrium/problem.hh b/test/porousmediumflow/1pnc/implicit/nonequilibrium/problem.hh
new file mode 100644
index 0000000000000000000000000000000000000000..65e2e08394594a1573966db5b5c440f25183d77a
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/nonequilibrium/problem.hh
@@ -0,0 +1,310 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/**
+ * \file
+ * \ingroup OnePNCTests
+ * \brief Test for the OnePNCModel in combination with the nonequilibrium model for a thermal nonequilibrium problem problem:
+ * The simulation domain is a tube warmer water is injected at the right side.
+ */
+#ifndef DUMUX_1P2CNI_CONDUCTION_TEST_PROBLEM_HH
+#define DUMUX_1P2CNI_CONDUCTION_TEST_PROBLEM_HH
+
+#if HAVE_UG
+#include <dune/grid/uggrid.hh>
+#endif
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/discretization/elementsolution.hh>
+#include <dumux/discretization/cellcentered/tpfa/properties.hh>
+#include <dumux/discretization/cellcentered/mpfa/properties.hh>
+#include <dumux/discretization/box/properties.hh>
+#include <dumux/porousmediumflow/1pnc/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
+
+#include <dumux/material/fluidsystems/1padapter.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+#include <dumux/material/components/h2o.hh>
+#include "spatialparams.hh"
+
+namespace Dumux
+{
+
+template <class TypeTag>
+class OnePTwoCThermalNonequilibriumProblem;
+
+namespace Properties
+{
+// Create new type tags
+namespace TTag {
+struct OnePTwoCThermalNonequilibrium { using InheritsFrom = std::tuple<OnePNCNonEquil>; };
+struct OnePTwoCThermalNonequilibriumCCTpfa { using InheritsFrom = std::tuple<OnePTwoCThermalNonequilibrium, CCTpfaModel>; };
+struct OnePTwoCThermalNonequilibriumBox { using InheritsFrom = std::tuple<OnePTwoCThermalNonequilibrium, BoxModel>; };
+} // end namespace TTag
+
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePTwoCThermalNonequilibrium> { using type = Dune::YaspGrid<2>; };
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePTwoCThermalNonequilibrium> { using type = OnePTwoCThermalNonequilibriumProblem<TypeTag>; };
+
+// Set fluid configuration
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePTwoCThermalNonequilibrium>
+{
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using H2ON2 = FluidSystems::H2ON2<Scalar, FluidSystems::H2ON2DefaultPolicy</*simplified=*/true>>;
+    using type = FluidSystems::OnePAdapter<H2ON2, H2ON2::liquidPhaseIdx>;
+};
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePTwoCThermalNonequilibrium>
+{
+    using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = OnePNCNonequilibriumTestSpatialParams<FVGridGeometry, Scalar>;
+};
+
+// Define whether mole(true) or mass (false) fractions are used
+template<class TypeTag>
+struct UseMoles<TypeTag, TTag::OnePTwoCThermalNonequilibrium> { static constexpr bool value = true; };
+}
+
+
+/*!
+ * \ingroup OnePNCTests
+ * \brief Definition of a problem, for the 1pnc problem:
+ *
+ * The model domain is 1 m times 1 m with a discretization length of 0.05 m
+ * and homogeneous soil properties (\f$ \mathrm{K=10e-11, \Phi=0.4).
+ * Initially the domain is filled with water and a small nitrogen fraction
+ *
+ * At the right side warmer water is injected via a Neumann boundary and at the left side
+ * Dirichlet values are set to the inital conditions.
+ *
+ * This problem uses the \ref OnePNCModel model.
+ *
+ * To run the simulation execute the following line in shell:
+ * <tt>./test_1p2c_nonequilibrium_box params.input</tt> or
+ * <tt>./test_1p2c_nonequilibrium_tpfa params.input</tt>
+ */
+template <class TypeTag>
+class OnePTwoCThermalNonequilibriumProblem : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices;
+    using GridView = GetPropType<TypeTag, Properties::GridView>;
+    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
+    using BoundaryTypes = GetPropType<TypeTag, Properties::BoundaryTypes>;
+    using PrimaryVariables = GetPropType<TypeTag, Properties::PrimaryVariables>;
+    using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
+    using FVElementGeometry = typename GetPropType<TypeTag, Properties::FVGridGeometry>::LocalView;
+    using NumEqVector = GetPropType<TypeTag, Properties::NumEqVector>;
+    using ElementVolumeVariables = typename GetPropType<TypeTag, Properties::GridVolumeVariables>::LocalView;
+    using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using SolutionVector = GetPropType<TypeTag, Properties::SolutionVector>;
+    using VolumeVariables = GetPropType<TypeTag, Properties::VolumeVariables>;
+    using IapwsH2O = Components::H2O<Scalar>;
+
+    using GridVariables = GetPropType<TypeTag, Properties::GridVariables>;
+
+    // copy some indices for convenience
+    enum
+    {
+        // indices of the primary variables
+        pressureIdx = Indices::pressureIdx,
+        temperatureIdx = Indices::temperatureIdx,
+        temperatureSolidIdx = Indices::temperatureSolidIdx,
+
+       // component indices
+        H2OIdx = FluidSystem::compIdx(FluidSystem::MultiPhaseFluidSystem::H2OIdx),
+        N2Idx = FluidSystem::compIdx(FluidSystem::MultiPhaseFluidSystem::N2Idx),
+
+        // indices of the equations
+        contiH2OEqIdx = Indices::conti0EqIdx + H2OIdx,
+        contiN2EqIdx = Indices::conti0EqIdx + N2Idx,
+        energyEqIdx = Indices::energyEqIdx
+    };
+
+    //! property that defines whether mole or mass fractions are used
+    static constexpr bool useMoles = getPropValue<TypeTag, Properties::UseMoles>();
+    static const int dimWorld = GridView::dimensionworld;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    OnePTwoCThermalNonequilibriumProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        //initialize fluid system
+        FluidSystem::init();
+
+        // stating in the console whether mole or mass fractions are used
+        if(useMoles)
+            std::cout<<"problem uses mole fractions"<<std::endl;
+        else
+            std::cout<<"problem uses mass fractions"<<std::endl;
+
+         darcyVelocity_ = getParam<Scalar>("Problem.DarcyVelocity");
+    }
+
+    void setGridVariables(std::shared_ptr<GridVariables> gridVariables)
+    { gridVariables_ = gridVariables; }
+
+     const GridVariables& gridVariables() const
+    { return *gridVariables_; }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    // \}
+
+    /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+        BoundaryTypes values;
+
+        if(globalPos[0] < eps_)
+            values.setAllDirichlet();
+        else
+            values.setAllNeumann();
+
+        return values;
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a dirichlet
+     *        boundary segment.
+     *
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values = initial_(globalPos);
+
+        return values;
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * This is the method for the case where the Neumann condition is
+     * potentially solution dependent and requires some quantities that
+     * are specific to the fully-implicit method.
+     *
+     * \param values The neumann values for the conservation equations in units of
+     *                 \f$ [ \textnormal{unit of conserved quantity} / (m^2 \cdot s )] \f$
+     * \param element The finite element
+     * \param fvGeometry The finite-volume geometry
+     * \param elemVolVars All volume variables for the element
+     * \param scvf The sub control volume face
+     *
+     * For this method, the \a values parameter stores the flux
+     * in normal direction of each phase. Negative values mean influx.
+     * E.g. for the mass balance that would the mass flux in \f$ [ kg / (m^2 \cdot s)] \f$.
+     */
+    NumEqVector neumann(const Element& element,
+                        const FVElementGeometry& fvGeometry,
+                        const ElementVolumeVariables& elemVolVars,
+                        const SubControlVolumeFace& scvf) const
+    {
+        NumEqVector flux(0.0);
+        const auto& globalPos = scvf.ipGlobal();
+        const auto& scv = fvGeometry.scv(scvf.insideScvIdx());
+
+        if (globalPos[0] > this->fvGridGeometry().bBoxMax()[0] - eps_)
+        {
+             flux[contiH2OEqIdx] = -darcyVelocity_*elemVolVars[scv].molarDensity();
+             flux[contiN2EqIdx] = -darcyVelocity_*elemVolVars[scv].molarDensity()*elemVolVars[scv].moleFraction(0, N2Idx);
+             flux[energyEqIdx] = -darcyVelocity_
+                                 *elemVolVars[scv].density()
+                                 *IapwsH2O::liquidEnthalpy(305, elemVolVars[scv].pressure());
+        }
+        return flux;
+    }
+
+    // \}
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the source term for all phases within a given
+     *        sub-control-volume.
+     *
+     * For this method, the \a priVars parameter stores the rate mass
+     * of a component is generated or annihilate per volume
+     * unit. Positive values mean that mass is created, negative ones
+     * mean that it vanishes.
+     *
+     * The units must be according to either using mole or mass fractions. (mole/(m^3*s) or kg/(m^3*s))
+     */
+    NumEqVector sourceAtPos(const GlobalPosition &globalPos) const
+    { return NumEqVector(0.0); }
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+    { return initial_(globalPos); }
+
+    // \}
+private:
+
+    // the internal method for the initial condition
+    PrimaryVariables initial_(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables priVars;
+        priVars[pressureIdx] = 1e5; // initial condition for the pressure
+        priVars[N2Idx] = 1e-5;  // initial condition for the N2 molefraction
+        priVars[temperatureIdx] = 285.;
+        priVars[temperatureSolidIdx] = 285.;
+        return priVars;
+    }
+        static constexpr Scalar eps_ = 1e-6;
+        std::shared_ptr<GridVariables> gridVariables_;
+        Scalar darcyVelocity_;
+    };
+
+} //end namespace Dumux
+
+#endif
diff --git a/test/porousmediumflow/1pnc/implicit/nonequilibrium/spatialparams.hh b/test/porousmediumflow/1pnc/implicit/nonequilibrium/spatialparams.hh
new file mode 100644
index 0000000000000000000000000000000000000000..abb43103aaf2c82427e6e33afe76bfe01dfbea3c
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/nonequilibrium/spatialparams.hh
@@ -0,0 +1,106 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePNCTests
+ * \brief Definition of the spatial parameters for the 1pnc
+ *        problems.
+ */
+#ifndef DUMUX_1PNC_TEST_SPATIAL_PARAMS_HH
+#define DUMUX_1PNC_TEST_SPATIAL_PARAMS_HH
+
+#include <dumux/porousmediumflow/properties.hh>
+#include <dumux/material/spatialparams/fv1p.hh>
+#include <dumux/material/spatialparams/fvnonequilibrium.hh>
+#include <dumux/material/fluidmatrixinteractions/1pia/fluidsolidinterfacialareashiwang.hh>
+
+namespace Dumux {
+
+/*!
+ * \ingroup OnePNCTests
+ * \brief Definition of the spatial parameters for the 1pnc
+ *        test problems.
+ */
+template<class FVGridGeometry, class Scalar>
+class OnePNCNonequilibriumTestSpatialParams
+: public FVNonEquilibriumSpatialParams<FVGridGeometry, Scalar,
+                                       OnePNCNonequilibriumTestSpatialParams<FVGridGeometry, Scalar>>
+{
+    using GridView = typename FVGridGeometry::GridView;
+    using FVElementGeometry = typename FVGridGeometry::LocalView;
+    using SubControlVolume = typename FVElementGeometry::SubControlVolume;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using ParentType = FVNonEquilibriumSpatialParams<FVGridGeometry, Scalar,
+                                           OnePNCNonequilibriumTestSpatialParams<FVGridGeometry, Scalar>>;
+
+    static const int dimWorld = GridView::dimensionworld;
+    using GlobalPosition = typename Dune::FieldVector<Scalar, dimWorld>;
+
+public:
+    // export permeability type
+    using PermeabilityType = Scalar;
+    using FluidSolidInterfacialAreaFormulation = FluidSolidInterfacialAreaShiWang<Scalar>;
+
+    OnePNCNonequilibriumTestSpatialParams(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        permeability_ = 1e-11;
+        porosity_ = 0.4;
+
+        characteristicLength_ = 5e-4;
+        factorEnergyTransfer_ = 0.5;
+    }
+
+    /*!
+     * \brief Define the intrinsic permeability \f$\mathrm{[m^2]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const
+    { return permeability_; }
+
+    /*!
+     * \brief Define the porosity \f$\mathrm{[-]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    Scalar porosityAtPos(const GlobalPosition& globalPos) const
+    { return porosity_; }
+
+    /*!\brief Return the characteristic length for the mass transfer.
+     * \param globalPos The position in global coordinates.*/
+    const Scalar characteristicLengthAtPos(const  GlobalPosition & globalPos) const
+    { return characteristicLength_ ; }
+
+    /*!\brief Return the pre factor the the energy transfer
+     * \param globalPos The position in global coordinates.*/
+    const Scalar factorEnergyTransferAtPos(const  GlobalPosition & globalPos) const
+    { return factorEnergyTransfer_; }
+
+private:
+    Scalar permeability_;
+    Scalar porosity_;
+
+    Scalar factorEnergyTransfer_ ;
+    Scalar characteristicLength_ ;
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/CMakeLists.txt b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/CMakeLists.txt
index e233b1b0961b640a444e7de1b169d106919390f1..b54f2473cbd6c6758224bc73b3a250ed6f703738 100644
--- a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/CMakeLists.txt
+++ b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/CMakeLists.txt
@@ -2,6 +2,7 @@ add_input_file_links()
 
 dune_add_test(NAME test_mpnc_2p2c_comparison_box
               SOURCES main.cc
+              LABELS mpnc
               COMPILE_DEFINITIONS TYPETAG=MPNCComparisonBox
               COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
               CMD_ARGS  --script fuzzy
@@ -11,6 +12,7 @@ dune_add_test(NAME test_mpnc_2p2c_comparison_box
 
 dune_add_test(NAME test_mpnc_2p2c_comparison_tpfa
               SOURCES main.cc
+              LABELS mpnc
               COMPILE_DEFINITIONS TYPETAG=MPNCComparisonCC
               COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
               CMD_ARGS  --script fuzzy
diff --git a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/problem.hh b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/problem.hh
index 43fd63f3acc56b4b799437f7767b8bda4e2b03fa..12436f264ebb71f4afe36111a15c4de6131d25f4 100644
--- a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/problem.hh
+++ b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/problem.hh
@@ -71,8 +71,7 @@ struct SpatialParams<TypeTag, TTag::MPNCComparison>
 {
     using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
-    using type = MPNCComparisonSpatialParams<FVGridGeometry, Scalar, FluidSystem>;
+    using type = MPNCComparisonSpatialParams<FVGridGeometry, Scalar>;
 };
 
 // Set fluid configuration
@@ -284,7 +283,10 @@ private:
             this->spatialParams().materialLawParamsAtPos(globalPos);
         PhaseVector pc;
         using MaterialLaw = typename ParentType::SpatialParams::MaterialLaw;
-        MaterialLaw::capillaryPressures(pc, matParams, fs);
+        using MPAdapter = MPAdapter<MaterialLaw, numPhases>;
+
+        const int wPhaseIdx = this->spatialParams().template wettingPhaseAtPos<FluidSystem>(globalPos);
+        MPAdapter::capillaryPressures(pc, matParams, fs, wPhaseIdx);
         fs.setPressure(liquidPhaseIdx,
                        fs.pressure(gasPhaseIdx) + pc[liquidPhaseIdx] - pc[gasPhaseIdx]);
 
diff --git a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/spatialparams.hh b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/spatialparams.hh
index c52f0452d856d335fc5aea23c77652e967d312ff..c6898dccdb381fd3cdcea8114b86c20394b0717a 100644
--- a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/spatialparams.hh
+++ b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/spatialparams.hh
@@ -30,8 +30,6 @@
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedlinearmaterial.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
 
-#include <dumux/material/fluidmatrixinteractions/mp/2padapter.hh>
-
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
 
 namespace Dumux {
@@ -42,10 +40,10 @@ namespace Dumux {
  * \brief Definition of the spatial params properties for the obstacle problem
  *
  */
-template<class FVGridGeometry, class Scalar, class FluidSystem>
+template<class FVGridGeometry, class Scalar>
 class MPNCComparisonSpatialParams
 : public FVSpatialParams<FVGridGeometry, Scalar,
-                         MPNCComparisonSpatialParams<FVGridGeometry, Scalar, FluidSystem>>
+                         MPNCComparisonSpatialParams<FVGridGeometry, Scalar>>
 {
     using GridView = typename FVGridGeometry::GridView;
     using FVElementGeometry = typename FVGridGeometry::LocalView;
@@ -53,17 +51,14 @@ class MPNCComparisonSpatialParams
 
     using Element = typename GridView::template Codim<0>::Entity;
     using ParentType = FVSpatialParams<FVGridGeometry, Scalar,
-                                       MPNCComparisonSpatialParams<FVGridGeometry, Scalar, FluidSystem>>;
+                                       MPNCComparisonSpatialParams<FVGridGeometry, Scalar>>;
 
     using GlobalPosition = typename SubControlVolume::GlobalPosition;
-
-    enum {liquidPhaseIdx = FluidSystem::liquidPhaseIdx};
-
     using EffectiveLaw = RegularizedBrooksCorey<Scalar>;
 
 public:
     using PermeabilityType = Scalar;
-    using MaterialLaw = TwoPAdapter<liquidPhaseIdx, EffToAbsLaw<EffectiveLaw>>;
+    using MaterialLaw = EffToAbsLaw<EffectiveLaw>;
     using MaterialLawParams = typename MaterialLaw::Params;
 
     //! The constructor
@@ -127,6 +122,18 @@ public:
             return coarseMaterialParams_;
     }
 
+    /*!
+     * \brief Function for defining which phase is to be considered as the wetting phase.
+     *
+     * \return the wetting phase index
+     * \param globalPos The global position
+     */
+    template<class FluidSystem>
+    int wettingPhaseAtPos(const GlobalPosition& globalPos) const
+    {
+        return FluidSystem::phase0Idx;
+    }
+
 private:
     /*!
      * \brief Returns whether a given global position is in the
diff --git a/test/porousmediumflow/mpnc/implicit/kinetic/CMakeLists.txt b/test/porousmediumflow/mpnc/implicit/kinetic/CMakeLists.txt
index ef8c5c7d10a386e49a2d8405b385951126db9e6f..a161e5df9a5749fa15ec7af4361d7c7f4b3baaa1 100644
--- a/test/porousmediumflow/mpnc/implicit/kinetic/CMakeLists.txt
+++ b/test/porousmediumflow/mpnc/implicit/kinetic/CMakeLists.txt
@@ -3,6 +3,7 @@ add_input_file_links()
 # build target for the full kinetic test problem
 dune_add_test(NAME test_mpnc_kinetic_box
               SOURCES main.cc
+              LABELS mpnc
               COMPILE_DEFINITIONS TYPETAG=EvaporationAtmosphereBox
               COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
               CMD_ARGS  --script fuzzy
diff --git a/test/porousmediumflow/mpnc/implicit/kinetic/problem.hh b/test/porousmediumflow/mpnc/implicit/kinetic/problem.hh
index 2edd0f301285a6fe9f6f3db4dcfb931e134d5190..92dd18bd10115b859dcd1bf6d9f12fd4e3a091c4 100644
--- a/test/porousmediumflow/mpnc/implicit/kinetic/problem.hh
+++ b/test/porousmediumflow/mpnc/implicit/kinetic/problem.hh
@@ -118,43 +118,11 @@ struct SolidSystem<TypeTag, TTag::EvaporationAtmosphere>
 
 // Set the spatial parameters
 template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::EvaporationAtmosphere> { using type = EvaporationAtmosphereSpatialParams<TypeTag>; };
-
-// Set the interfacial area relation: wetting -- non-wetting
-template<class TypeTag>
-struct AwnSurface<TypeTag, TTag::EvaporationAtmosphere>
-{
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using MaterialLaw = typename GetPropType<TypeTag, Properties::SpatialParams>::MaterialLaw;
-    using MaterialLawParams = typename MaterialLaw::Params;
-    using EffectiveIALaw = AwnSurfacePcMaxFct<Scalar>;
-public:
-    using type = EffToAbsLawIA<EffectiveIALaw, MaterialLawParams>;
-};
-
-
-// Set the interfacial area relation: wetting -- solid
-template<class TypeTag>
-struct AwsSurface<TypeTag, TTag::EvaporationAtmosphere>
+struct SpatialParams<TypeTag, TTag::EvaporationAtmosphere>
 {
+    using FVGridGeometry = GetPropType<TypeTag, FVGridGeometry>;
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using MaterialLaw = typename GetPropType<TypeTag, Properties::SpatialParams>::MaterialLaw;
-    using MaterialLawParams = typename MaterialLaw::Params;
-    using EffectiveIALaw = AwnSurfacePolynomial2ndOrder<Scalar>;
-public:
-    using type = EffToAbsLawIA<EffectiveIALaw, MaterialLawParams>;
-};
-
-// Set the interfacial area relation: non-wetting -- solid
-template<class TypeTag>
-struct AnsSurface<TypeTag, TTag::EvaporationAtmosphere>
-{
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using MaterialLaw = typename GetPropType<TypeTag, Properties::SpatialParams>::MaterialLaw;
-    using MaterialLawParams = typename MaterialLaw::Params;
-    using EffectiveIALaw = AwnSurfaceExpSwPcTo3<Scalar>;
-public:
-    using type = EffToAbsLawIA<EffectiveIALaw, MaterialLawParams>;
+    using type = EvaporationAtmosphereSpatialParams<FVGridGeometry, Scalar>;
 };
 } // end namespace Properties
 
@@ -452,11 +420,13 @@ private:
 
         const auto &materialParams =
             this->spatialParams().materialLawParamsAtPos(globalPos);
-        Scalar capPress[numPhases];
-
+        std::vector<Scalar> capPress(numPhases);
         //obtain pc according to saturation
         using MaterialLaw = typename ParentType::SpatialParams::MaterialLaw;
-        MaterialLaw::capillaryPressures(capPress, materialParams, equilibriumFluidState);
+        using MPAdapter = MPAdapter<MaterialLaw, numPhases>;
+
+        const int wPhaseIdx = this->spatialParams().template wettingPhaseAtPos<FluidSystem>(globalPos);
+        MPAdapter::capillaryPressures(capPress, materialParams, equilibriumFluidState, wPhaseIdx);
 
         Scalar p[numPhases];
         if (this->spatialParams().inPM_(globalPos)){
diff --git a/test/porousmediumflow/mpnc/implicit/kinetic/spatialparams.hh b/test/porousmediumflow/mpnc/implicit/kinetic/spatialparams.hh
index 58f32f356bbd2acee42391fce042454e91ba8b9a..6d9eea798cf78d44a5411d2e3bff11c4be3f748f 100644
--- a/test/porousmediumflow/mpnc/implicit/kinetic/spatialparams.hh
+++ b/test/porousmediumflow/mpnc/implicit/kinetic/spatialparams.hh
@@ -26,56 +26,56 @@
 #define DUMUX_EVAPORATION_ATMOSPHERE_SPATIALPARAMS_HH
 
 #include <dumux/porousmediumflow/properties.hh>
-#include <dumux/material/spatialparams/fv.hh>
+#include <dumux/material/spatialparams/fvnonequilibrium.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/vangenuchtenoftemperature.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh>
-#include <dumux/material/fluidmatrixinteractions/mp/2padapter.hh>
-#include <dumux/material/fluidmatrixinteractions/mp/2poftadapter.hh>
 #include <dumux/common/parameters.hh>
 
+// material laws for interfacial area
+#include <dumux/material/fluidmatrixinteractions/2pia/efftoabslawia.hh>
+#include <dumux/material/fluidmatrixinteractions/2pia/awnsurfacepolynomial2ndorder.hh>
+#include <dumux/material/fluidmatrixinteractions/2pia/awnsurfacepcmaxfct.hh>
+#include <dumux/material/fluidmatrixinteractions/2pia/awnsurfaceexpswpcto3.hh>
+
 namespace Dumux {
 
 /**
  * \brief Definition of the spatial parameters for the evaporation atmosphere Problem (using a "poor man's coupling")
  */
-template<class TypeTag>
+template<class FVGridGeometry, class Scalar>
 class EvaporationAtmosphereSpatialParams
-: public FVSpatialParams<GetPropType<TypeTag, Properties::FVGridGeometry>,
-                         GetPropType<TypeTag, Properties::Scalar>,
-                         EvaporationAtmosphereSpatialParams<TypeTag>>
+: public FVNonEquilibriumSpatialParams<FVGridGeometry, Scalar,
+                                       EvaporationAtmosphereSpatialParams<FVGridGeometry, Scalar>>
 {
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
     using GridView = typename FVGridGeometry::GridView;
     using FVElementGeometry = typename FVGridGeometry::LocalView;
     using SubControlVolume = typename FVElementGeometry::SubControlVolume;
     using Element = typename GridView::template Codim<0>::Entity;
-    using ParentType = FVSpatialParams<FVGridGeometry, Scalar, EvaporationAtmosphereSpatialParams<TypeTag>>;
+    using ThisType = EvaporationAtmosphereSpatialParams<FVGridGeometry, Scalar>;
+    using ParentType = FVNonEquilibriumSpatialParams<FVGridGeometry, Scalar, ThisType>;
 
     using GlobalPosition = Dune::FieldVector<Scalar, GridView::dimension>;
 
     enum { dimWorld = GridView::dimensionworld };
-    enum { numPhases = GetPropType<TypeTag, Properties::ModelTraits>::numPhases() };
-
-    using FluidState = GetPropType<TypeTag, Properties::FluidState>;
-    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
-
-    enum { liquidPhaseIdx   = FluidSystem::liquidPhaseIdx };
 public:
     //! export the type used for the permeability
     using PermeabilityType = Scalar;
     //! export the material law type used
-    using MaterialLaw = TwoPAdapter<liquidPhaseIdx, EffToAbsLaw<RegularizedBrooksCorey<Scalar>>>;
-    //! export the types used for interfacial area calculations
-    using AwnSurface = GetPropType<TypeTag, Properties::AwnSurface>;
-    using AwsSurface = GetPropType<TypeTag, Properties::AwsSurface>;
-    using AnsSurface = GetPropType<TypeTag, Properties::AnsSurface>;
-
+    using MaterialLaw = EffToAbsLaw<RegularizedBrooksCorey<Scalar>>;
     //! convenience aliases of the law parameters
     using MaterialLawParams = typename MaterialLaw::Params;
+
+    //! export the types used for interfacial area calculations
+    using EffectiveIALawAws = AwnSurfacePolynomial2ndOrder<Scalar>;
+    using EffectiveIALawAwn = AwnSurfacePcMaxFct<Scalar>;
+    using EffectiveIALawAns = AwnSurfaceExpSwPcTo3<Scalar>;
+    using AwnSurface = EffToAbsLawIA<EffectiveIALawAwn, MaterialLawParams>;
+    using AwsSurface = EffToAbsLawIA<EffectiveIALawAws, MaterialLawParams>;
+    using AnsSurface = EffToAbsLawIA<EffectiveIALawAns, MaterialLawParams>;
+
     using AwnSurfaceParams = typename AwnSurface::Params;
     using AwsSurfaceParams = typename AwsSurface::Params;
     using AnsSurfaceParams = typename AnsSurface::Params;
@@ -126,28 +126,10 @@ public:
         materialParamsFF_.setLambda(42.);
         materialParamsFF_.setPe(0.);
 
-        {//scope it
-            // capillary pressure parameters
-            FluidState fluidState ;
-            Scalar S[numPhases] ;
-            Scalar capPress[numPhases];
-            //set saturation to inital values, this needs to be done in order for the fluidState to tell me pc
-            for (int phaseIdx = 0; phaseIdx < numPhases ; ++phaseIdx) {
-                // set saturation to zero for getting pcmax
-                S[phaseIdx] = 0. ;
-                Scalar TInitial  = getParam<Scalar>("InitialConditions.TInitial");
-                fluidState.setSaturation(phaseIdx, S[phaseIdx]);
-                fluidState.setTemperature(phaseIdx,TInitial);
-            }
-
-            //obtain pc according to saturation
-            MaterialLaw::capillaryPressures(capPress, materialParamsPM_, fluidState);
-            using std::abs;
-            pcMax_ = abs(capPress[0]);
-
-            // set pressures from capillary pressures
-            aWettingNonWettingSurfaceParams_.setPcMax(pcMax_);
-        }
+        // determine maximum capillary pressure for wetting-nonwetting surface
+        using TwoPLaw = EffToAbsLaw<RegularizedBrooksCorey<Scalar>>;
+        pcMax_ = TwoPLaw::pc(materialParamsPM_, /*sw = */0.0);
+        aWettingNonWettingSurfaceParams_.setPcMax(pcMax_);
 
         // wetting-non wetting: surface which goes to zero on the edges, but is a polynomial
         aWettingNonWettingSurfaceParams_.setA1(aWettingNonWettingA1_);
@@ -284,21 +266,6 @@ public:
                        const ElementSolution &elemSol) const
     { return aWettingNonWettingSurfaceParams_.pcMax() ; }
 
-
-    /*!\brief Return the characteristic length for the mass transfer.
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub controle volume.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub control volume */
-    template<class ElementSolution>
-    const Scalar characteristicLength(const Element & element,
-                                      const SubControlVolume &scv,
-                                      const ElementSolution &elemSol) const
-
-    { return characteristicLengthAtPos(scv.dofPosition()); }
-
     /*!\brief Return the characteristic length for the mass transfer.
      * \param globalPos The position in global coordinates.*/
     const Scalar characteristicLengthAtPos(const  GlobalPosition & globalPos) const
@@ -310,19 +277,6 @@ public:
         else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]);
     }
 
-    /*!\brief Return the pre factor the the energy transfer
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub controle volume.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub control volume */
-    template<class ElementSolution>
-    const Scalar factorEnergyTransfer(const Element &element,
-                                      const SubControlVolume &scv,
-                                      const ElementSolution &elemSol) const
-    { return factorEnergyTransferAtPos(scv.dofPosition()); }
-
     /*!\brief Return the pre factor the the energy transfer
      * \param globalPos The position in global coordinates.*/
     const Scalar factorEnergyTransferAtPos(const  GlobalPosition & globalPos) const
@@ -334,19 +288,6 @@ public:
         else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]);
     }
 
-    /*!\brief Return the pre factor the the mass transfer
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub controle volume.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub control volume */
-    template<class ElementSolution>
-    const Scalar factorMassTransfer(const Element &element,
-                                      const SubControlVolume &scv,
-                                      const ElementSolution &elemSol) const
-    { return factorMassTransferAtPos(scv.dofPosition()); }
-
     /*!\brief Return the pre factor the the mass transfer
      * \param globalPos The position in global coordinates.*/
     const Scalar factorMassTransferAtPos(const  GlobalPosition & globalPos) const
@@ -358,6 +299,18 @@ public:
         else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]);
     }
 
+    /*!
+     * \brief Function for defining which phase is to be considered as the wetting phase.
+     *
+     * \return the wetting phase index
+     * \param globalPos The global position
+     */
+    template<class FluidSystem>
+    int wettingPhaseAtPos(const GlobalPosition& globalPos) const
+    {
+        return FluidSystem::phase0Idx;
+    }
+
     /*!\brief Give back whether the tested position (input) is a specific region (porous medium part) in the domain
      *
      * This setting ensures, that the boundary between the two domains has porous medium properties.
diff --git a/test/porousmediumflow/mpnc/implicit/obstacle/CMakeLists.txt b/test/porousmediumflow/mpnc/implicit/obstacle/CMakeLists.txt
index bc50f0573eb5e4421e6cb84644157e8d6a12159c..fc08f85ee3c577de2673f2c64bdc299b746bd174 100644
--- a/test/porousmediumflow/mpnc/implicit/obstacle/CMakeLists.txt
+++ b/test/porousmediumflow/mpnc/implicit/obstacle/CMakeLists.txt
@@ -3,6 +3,7 @@ dune_symlink_to_source_files(FILES grids)
 
 dune_add_test(NAME test_mpnc_obstacle_box
               SOURCES main.cc
+              LABELS mpnc
               COMPILE_DEFINITIONS TYPETAG=ObstacleBox
               COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
               CMD_ARGS  --script fuzzy
@@ -12,6 +13,7 @@ dune_add_test(NAME test_mpnc_obstacle_box
 
 dune_add_test(NAME test_mpnc_obstacle_tpfa
               SOURCES main.cc
+              LABELS mpnc
               COMPILE_DEFINITIONS TYPETAG=ObstacleCC
               COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
               CMD_ARGS  --script fuzzy
diff --git a/test/porousmediumflow/mpnc/implicit/obstacle/problem.hh b/test/porousmediumflow/mpnc/implicit/obstacle/problem.hh
index 1ebb273a5d170d9d9acc30035c78bb81c85e3bb8..93276cb70179d2a05420334c650f23487cefb5df 100644
--- a/test/porousmediumflow/mpnc/implicit/obstacle/problem.hh
+++ b/test/porousmediumflow/mpnc/implicit/obstacle/problem.hh
@@ -74,8 +74,7 @@ struct SpatialParams<TypeTag, TTag::Obstacle>
 {
     using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
-    using type = ObstacleSpatialParams<FVGridGeometry, Scalar, FluidSystem>;
+    using type = ObstacleSpatialParams<FVGridGeometry, Scalar>;
 };
 
 // Set fluid configuration
@@ -362,7 +361,10 @@ private:
         const auto& matParams = this->spatialParams().materialLawParamsAtPos(globalPos);
         PhaseVector pc;
         using MaterialLaw = typename ParentType::SpatialParams::MaterialLaw;
-        MaterialLaw::capillaryPressures(pc, matParams, fs);
+        using MPAdapter = MPAdapter<MaterialLaw, numPhases>;
+
+        const int wPhaseIdx = this->spatialParams().template wettingPhaseAtPos<FluidSystem>(globalPos);
+        MPAdapter::capillaryPressures(pc, matParams, fs, wPhaseIdx);
         fs.setPressure(otherPhaseIdx,
                        fs.pressure(refPhaseIdx)
                        + (pc[otherPhaseIdx] - pc[refPhaseIdx]));
diff --git a/test/porousmediumflow/mpnc/implicit/obstacle/spatialparams.hh b/test/porousmediumflow/mpnc/implicit/obstacle/spatialparams.hh
index e8a5b7831c82bb0d6036e332ba7ca0f9c9075565..51c9fdc9f4483db179257e19b7bf30a26c171e4c 100644
--- a/test/porousmediumflow/mpnc/implicit/obstacle/spatialparams.hh
+++ b/test/porousmediumflow/mpnc/implicit/obstacle/spatialparams.hh
@@ -30,9 +30,6 @@
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedlinearmaterial.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
 
-#include <dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh>
-#include <dumux/material/fluidmatrixinteractions/mp/2padapter.hh>
-
 namespace Dumux {
 
 /**
@@ -41,30 +38,27 @@ namespace Dumux {
  * \brief Definition of the spatial params properties for the obstacle problem
  *
  */
-template<class FVGridGeometry, class Scalar, class FluidSystem>
+template<class FVGridGeometry, class Scalar>
 class ObstacleSpatialParams
 : public FVSpatialParams<FVGridGeometry, Scalar,
-                         ObstacleSpatialParams<FVGridGeometry, Scalar, FluidSystem>>
+                         ObstacleSpatialParams<FVGridGeometry, Scalar>>
 {
     using GridView = typename FVGridGeometry::GridView;
     using FVElementGeometry = typename FVGridGeometry::LocalView;
     using SubControlVolume = typename FVElementGeometry::SubControlVolume;
     using Element = typename GridView::template Codim<0>::Entity;
     using ParentType = FVSpatialParams<FVGridGeometry, Scalar,
-                                       ObstacleSpatialParams<FVGridGeometry, Scalar, FluidSystem>>;
+                                       ObstacleSpatialParams<FVGridGeometry, Scalar>>;
 
     enum {dimWorld=GridView::dimensionworld};
     using GlobalPosition = typename SubControlVolume::GlobalPosition;
-
-    enum {liquidPhaseIdx = FluidSystem::liquidPhaseIdx};
-
     using EffectiveLaw = RegularizedLinearMaterial<Scalar>;
 
 public:
     //! export the type used for the permeability
     using PermeabilityType = Scalar;
     //! export the material law type used
-    using MaterialLaw = TwoPAdapter<liquidPhaseIdx, EffToAbsLaw<EffectiveLaw>>;
+    using MaterialLaw = EffToAbsLaw<EffectiveLaw>;
     using MaterialLawParams = typename MaterialLaw::Params;
 
     //! the constructor
@@ -127,6 +121,18 @@ public:
             return coarseMaterialParams_;
     }
 
+    /*!
+     * \brief Function for defining which phase is to be considered as the wetting phase.
+     *
+     * \return the wetting phase index
+     * \param globalPos The global position
+     */
+    template<class FluidSystem>
+    int wettingPhaseAtPos(const GlobalPosition& globalPos) const
+    {
+        return FluidSystem::phase0Idx;
+    }
+
 private:
     /*!
      * \brief Returns whether a given global position is in the
diff --git a/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/CMakeLists.txt b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/CMakeLists.txt
index 9fff88d75d67722b2e117654a72b1e0b52b12b33..d4abf64f53223069c21cc588e5f13a4f93497d8c 100644
--- a/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/CMakeLists.txt
+++ b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/CMakeLists.txt
@@ -5,6 +5,7 @@ dune_symlink_to_source_files(FILES grids)
 dune_add_test(COMPILE_ONLY # since it currently fails miserably with very different results on different machines
               NAME test_mpnc_thermalnonequil_box
               SOURCES main.cc
+              LABELS mpnc
               COMPILE_DEFINITIONS TYPETAG=CombustionOneComponentBox
               COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
               CMD_ARGS  --script fuzzy
@@ -15,6 +16,7 @@ dune_add_test(COMPILE_ONLY # since it currently fails miserably with very differ
 #install sources
 install(FILES
 combustionfluidsystem.hh
+combustionlocalresidual.hh
 problem.hh
 spatialparams.hh
 main.cc
diff --git a/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/combustionlocalresidual.hh b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/combustionlocalresidual.hh
new file mode 100644
index 0000000000000000000000000000000000000000..4810977f3f39625fe36d3318a3685eef3309e0d6
--- /dev/null
+++ b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/combustionlocalresidual.hh
@@ -0,0 +1,222 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup PorousmediumThermalNonEquilibriumModel
+ * \brief This file contains the parts of the local residual to
+ *        calculate the heat conservation in the thermal non-equilibrium model.
+ */
+#ifndef DUMUX_ENERGY_COMBUSTION_LOCAL_RESIDUAL_HH
+#define DUMUX_ENERGY_COMBUSTION_LOCAL_RESIDUAL_HH
+
+#include <cmath>
+#include <dumux/common/spline.hh>
+#include <dumux/common/exceptions.hh>
+#include <dumux/common/properties.hh>
+
+#include <dumux/porousmediumflow/nonequilibrium/thermal/localresidual.hh>
+
+namespace Dumux {
+
+/*!
+ * \ingroup PorousmediumThermalNonEquilibriumModel
+ * \brief This file contains the parts of the local residual to
+ *        calculate the heat conservation in the thermal non-equilibrium  model.
+ */
+template<class TypeTag>
+class CombustionEnergyLocalResidual
+: public  EnergyLocalResidualNonEquilibrium<TypeTag, 1/*numEnergyEqFluid*/>
+{
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using NumEqVector = GetPropType<TypeTag, Properties::NumEqVector>;
+    using VolumeVariables = GetPropType<TypeTag, Properties::VolumeVariables>;
+    using FVElementGeometry = typename GetPropType<TypeTag, Properties::FVGridGeometry>::LocalView;
+    using SubControlVolume = typename FVElementGeometry::SubControlVolume;
+    using FluxVariables = GetPropType<TypeTag, Properties::FluxVariables>;
+    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
+    using SolidSystem = GetPropType<TypeTag, Properties::SolidSystem>;
+    using GridView = GetPropType<TypeTag, Properties::GridView>;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using ElementVolumeVariables = typename GetPropType<TypeTag, Properties::GridVolumeVariables>::LocalView;
+    using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace;
+
+    using ModelTraits = GetPropType<TypeTag, Properties::ModelTraits>;
+    using Indices = typename ModelTraits::Indices;
+
+    enum { numEnergyEqFluid = ModelTraits::numEnergyEqFluid() };
+    enum { numEnergyEqSolid = ModelTraits::numEnergyEqSolid() };
+    enum { energyEq0Idx = Indices::energyEq0Idx };
+    enum { energyEqSolidIdx = Indices::energyEqSolidIdx};
+
+    enum { numComponents    = ModelTraits::numComponents() };
+
+public:
+    /*!
+     * \brief Calculate the source term of the equation
+     *
+     * \param scv The sub-control volume over which we integrate the source term
+     */
+    static void computeSourceEnergy(NumEqVector& source,
+                                    const Element& element,
+                                    const FVElementGeometry& fvGeometry,
+                                    const ElementVolumeVariables& elemVolVars,
+                                    const SubControlVolume &scv)
+    {
+        //specialization for 2 fluid phases
+        const auto& volVars = elemVolVars[scv];
+        const auto& fs = volVars.fluidState() ;
+        const Scalar characteristicLength = volVars.characteristicLength()  ;
+
+        //interfacial area
+        // Shi & Wang, Transport in porous media (2011)
+        const Scalar as = volVars.fluidSolidInterfacialArea();
+
+        //temperature fluid is the same for both fluids
+        const Scalar TFluid = volVars.temperatureFluid(0);
+        const Scalar TSolid = volVars.temperatureSolid();
+
+        const Scalar satW = fs.saturation(0) ;
+        const Scalar satN = fs.saturation(1) ;
+
+        const Scalar eps = 1e-6 ;
+        Scalar solidToFluidEnergyExchange ;
+
+        Scalar fluidConductivity ;
+        if (satW < 1.0 - eps)
+            fluidConductivity = volVars.fluidThermalConductivity(1) ;
+        else if (satW >= 1.0 - eps)
+            fluidConductivity = volVars.fluidThermalConductivity(0) ;
+        else
+            DUNE_THROW(Dune::NotImplemented, "wrong range");
+
+        const Scalar factorEnergyTransfer   = volVars.factorEnergyTransfer()  ;
+
+        solidToFluidEnergyExchange = factorEnergyTransfer * (TSolid - TFluid) / characteristicLength * as * fluidConductivity ;
+        const Scalar epsRegul = 1e-3 ;
+
+        if (satW < (0 + eps) )
+        {
+            solidToFluidEnergyExchange *=  volVars.nusseltNumber(1) ;
+        }
+        else if ( (satW >= 0 + eps) and (satW < 1.0-eps) )
+        {
+            solidToFluidEnergyExchange *=  (volVars.nusseltNumber(1) * satN );
+            Scalar qBoil ;
+            if (satW<=epsRegul)
+            {// regularize
+                typedef Dumux::Spline<Scalar> Spline;
+                    Spline sp(0.0, epsRegul,                           // x1, x2
+                        QBoilFunc(volVars, 0.0), QBoilFunc(volVars, epsRegul),       // y1, y2
+                        0.0,dQBoil_dSw(volVars, epsRegul));    // m1, m2
+
+                qBoil = sp.eval(satW);
+            }
+
+            else if (satW>= (1.0-epsRegul) )
+            {   // regularize
+                typedef Dumux::Spline<Scalar> Spline;
+                Spline sp(1.0-epsRegul, 1.0,    // x1, x2
+                        QBoilFunc(volVars, 1.0-epsRegul), 0.0,    // y1, y2
+                        dQBoil_dSw(volVars, 1.0-epsRegul), 0.0 );      // m1, m2
+
+                qBoil = sp.eval(satW) ;
+            }
+            else
+            {
+                qBoil = QBoilFunc(volVars, satW)  ;
+            }
+
+            solidToFluidEnergyExchange += qBoil;
+        }
+        else if (satW >= 1.0-eps)
+        {
+            solidToFluidEnergyExchange *=  volVars.nusseltNumber(0) ;
+        }
+        else
+            DUNE_THROW(Dune::NotImplemented, "wrong range");
+
+        using std::isfinite;
+        if (!isfinite(solidToFluidEnergyExchange))
+            DUNE_THROW(NumericalProblem, "Calculated non-finite source, " << "TFluid="<< TFluid << " TSolid="<< TSolid);
+
+        for(int energyEqIdx =0; energyEqIdx<numEnergyEqFluid+numEnergyEqSolid; ++energyEqIdx)
+        {
+            switch (energyEqIdx)
+            {
+            case 0 :
+                source[energyEq0Idx + energyEqIdx] += solidToFluidEnergyExchange;
+                break;
+            case 1 :
+                source[energyEq0Idx + energyEqIdx] -=   solidToFluidEnergyExchange;
+                break;
+            default:
+                DUNE_THROW(Dune::NotImplemented,
+                        "wrong index");
+            } // end switch
+        }// end energyEqIdx
+    }// end source
+
+
+  /*! \brief Calculate the energy transfer during boiling, i.e. latent heat
+   *
+   * \param volVars The volume variables
+   * \param satW The wetting phase saturation. Not taken from volVars, because we regularize.
+   */
+    static Scalar QBoilFunc(const VolumeVariables & volVars,
+                            const  Scalar satW)
+    {
+        // using saturation as input (instead of from volVars)
+        // in order to make regularization (evaluation at different points) easyer
+        const auto& fs = volVars.fluidState();
+        const Scalar g( 9.81 );
+        const Scalar gamma(0.0589);
+        const Scalar TSolid = volVars.temperatureSolid();
+        using std::pow;
+        const Scalar as = volVars.fluidSolidInterfacialArea();
+        const Scalar mul = fs.viscosity(0);
+        const Scalar deltahv = fs.enthalpy(1) - fs.enthalpy(0);
+        const Scalar deltaRho = fs.density(0) - fs.density(1);
+        const Scalar firstBracket = pow(g * deltaRho / gamma, 0.5);
+        const Scalar cp = FluidSystem::heatCapacity(fs, 0);
+        // This use of Tsat is only justified if the fluid is always boiling (tsat equals boiling conditions)
+        // If a different state is to be simulated, please use the actual fluid temperature instead.
+        const Scalar Tsat = FluidSystem::vaporTemperature(fs, 1 ) ;
+        const Scalar deltaT = TSolid - Tsat;
+        const Scalar secondBracket = pow( (cp *deltaT / (0.006 * deltahv)  ) , 3.0 );
+        const Scalar Prl = volVars.prandtlNumber(0);
+        const Scalar thirdBracket = pow( 1/Prl , (1.7/0.33));
+        const Scalar QBoil = satW * as * mul * deltahv * firstBracket * secondBracket * thirdBracket;
+        return QBoil;
+    }
+
+    /*! \brief Calculate the derivative of the energy transfer function during boiling. Needed for regularization.
+   *
+   * \param volVars The volume variables
+   * \param satW The wetting phase saturation. Not taken from volVars, because we regularize.
+   */
+    static Scalar dQBoil_dSw(const VolumeVariables & volVars,
+                                const Scalar satW)
+    {
+        // on the fly derive w.r.t. Sw.
+        // Only linearly depending on it (directly)
+        return (QBoilFunc(volVars, satW) / satW ) ;
+    }
+};
+} // end namespace Dumux
+
+#endif //
diff --git a/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh
index 438bbe7184d77f318560b85e8666520192680612..dc56fb8f76e6872a17a4895e0c4ff700d5c0777c 100644
--- a/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh
+++ b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh
@@ -44,6 +44,7 @@
 
 #include "spatialparams.hh"
 #include "combustionfluidsystem.hh"
+#include "combustionlocalresidual.hh"
 
 namespace Dumux {
 
@@ -73,6 +74,15 @@ template<class TypeTag>
 struct Problem<TypeTag, TTag::CombustionOneComponent>
 { using type = CombustionProblemOneComponent<TypeTag>; };
 
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::CombustionOneComponent>
+{
+    using FVGridGeometry = GetPropType<TypeTag, FVGridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = CombustionSpatialParams<FVGridGeometry, Scalar>;
+};
+
 template<class TypeTag>
 struct FluidSystem<TypeTag, TTag::CombustionOneComponent>
 { using type = FluidSystems::CombustionFluidsystem<GetPropType<TypeTag, Properties::Scalar>>; };
@@ -145,10 +155,9 @@ public:
     using type = CompositionalSolidState<Scalar, SolidSystem>;
 };
 
-// Set the spatial parameters
 template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::CombustionOneComponent> { using type = CombustionSpatialParams<TypeTag>; };
-
+struct EnergyLocalResidual<TypeTag, TTag::CombustionOneComponent>
+{ using type = CombustionEnergyLocalResidual<TypeTag>; };
 }
 /*!
  * \ingroup MPNCTests
@@ -440,13 +449,16 @@ private:
         //////////////////////////////////////
         priVars[energyEq0Idx] = thisTemperature;
         priVars[energyEqSolidIdx] = thisTemperature;
-        Scalar capPress[numPhases];
+        std::vector<Scalar> capPress(numPhases);
 
         //obtain pc according to saturation
         const auto &materialParams =
         this->spatialParams().materialLawParamsAtPos(globalPos);
         using MaterialLaw = typename ParentType::SpatialParams::MaterialLaw;
-         MaterialLaw::capillaryPressures(capPress, materialParams, fluidState);
+        using MPAdapter = MPAdapter<MaterialLaw, numPhases>;
+
+        const int wettingPhaseIdx = this->spatialParams().template wettingPhaseAtPos<FluidSystem>(globalPos);
+        MPAdapter::capillaryPressures(capPress, materialParams, fluidState, wettingPhaseIdx);
 
         Scalar p[numPhases];
 
diff --git a/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/spatialparams.hh b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/spatialparams.hh
index edb715a66929ef6d6db71056d67872fcd6453f1c..55ad7e809f3f8436736f2cdabfb4667e2b174f1b 100644
--- a/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/spatialparams.hh
+++ b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/spatialparams.hh
@@ -26,10 +26,11 @@
 
 #include <dune/common/parametertreeparser.hh>
 
+#include <dumux/material/spatialparams/fvnonequilibrium.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/heatpipelaw.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh>
-#include <dumux/material/fluidmatrixinteractions/mp/2padapter.hh>
+#include <dumux/material/fluidmatrixinteractions/1pia/fluidsolidinterfacialareashiwang.hh>
 #include <dumux/porousmediumflow/properties.hh>
 #include <dumux/material/spatialparams/fv.hh>
 
@@ -39,34 +40,30 @@ namespace Dumux {
  * \brief Definition of the spatial parameters for the one component combustion problem
  *
  */
-template<class TypeTag>
+template<class FVGridGeometry, class Scalar>
 class CombustionSpatialParams
-: public FVSpatialParams<GetPropType<TypeTag, Properties::FVGridGeometry>,
-                         GetPropType<TypeTag, Properties::Scalar>,
-                         CombustionSpatialParams<TypeTag>>
+: public FVNonEquilibriumSpatialParams<FVGridGeometry, Scalar,
+                                       CombustionSpatialParams<FVGridGeometry, Scalar>>
 {
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
     using GridView = typename FVGridGeometry::GridView;
     using FVElementGeometry = typename FVGridGeometry::LocalView;
     using SubControlVolume = typename FVElementGeometry::SubControlVolume;
     using Element = typename GridView::template Codim<0>::Entity;
-    using ParentType = FVSpatialParams<FVGridGeometry, Scalar, CombustionSpatialParams<TypeTag>>;
+    using ThisType = CombustionSpatialParams<FVGridGeometry, Scalar>;
+    using ParentType = FVNonEquilibriumSpatialParams<FVGridGeometry, Scalar, ThisType>;
 
     enum {dimWorld = GridView::dimensionworld};
     using GlobalPosition = typename SubControlVolume::GlobalPosition;
 
     using EffectiveLaw = HeatPipeLaw<Scalar>;
 
-    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
-    enum {wPhaseIdx = FluidSystem::wPhaseIdx};
-
 public:
     //! export the type used for the permeability
     using PermeabilityType = Scalar;
     //! export the material law type used
-    using MaterialLaw = TwoPAdapter<wPhaseIdx, EffToAbsLaw<EffectiveLaw>>;
+    using MaterialLaw = EffToAbsLaw<EffectiveLaw>;
     using MaterialLawParams = typename MaterialLaw::Params;
+    using FluidSolidInterfacialAreaFormulation = FluidSolidInterfacialAreaShiWang<Scalar>;
 
     CombustionSpatialParams(std::shared_ptr<const FVGridGeometry> fvGridGeometry) : ParentType(fvGridGeometry)
     {
@@ -85,7 +82,6 @@ public:
         intrinsicPermeability_  =  (pow(characteristicLength_,2.0)  * pow(porosity_, 3.0)) / (150.0 * pow((1.0-porosity_),2.0)); // 1.69e-10 ; //
 
         factorEnergyTransfer_ = getParam<Scalar>("SpatialParams.PorousMedium.factorEnergyTransfer");
-        factorMassTransfer_ =getParam<Scalar>("SpatialParams.PorousMedium.factorMassTransfer");
         lengthPM_ = getParam<Scalar>("Grid.lengthPM");
 
         // residual saturations
@@ -160,71 +156,34 @@ public:
         }
     }
 
+    /*!
+     * \brief Function for defining which phase is to be considered as the wetting phase.
+     *
+     * \return the wetting phase index
+     * \param globalPos The global position
+     */
+    template<class FluidSystem>
+    int wettingPhaseAtPos(const GlobalPosition& globalPos) const
+    {
+        return FluidSystem::phase0Idx;
+    }
+
     /*!
      * \brief Return a reference to the material parameters of the material law.
      * \param globalPos The position in global coordinates. */
     const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition & globalPos) const
     { return materialParams_ ; }
 
-    /*!\brief Return the characteristic length for the mass transfer.
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub controle volume.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub control volume */
-    template<class ElementSolution>
-    const Scalar characteristicLength(const Element & element,
-                                      const SubControlVolume &scv,
-                                      const ElementSolution &elemSol) const
-
-    { return characteristicLengthAtPos(scv.center()); }
-
-
     /*!\brief Return the characteristic length for the mass transfer.
      * \param globalPos The position in global coordinates.*/
     const Scalar characteristicLengthAtPos(const  GlobalPosition & globalPos) const
     { return characteristicLength_ ; }
 
-    /*!\brief Return the pre factor the the energy transfer
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub controle volume.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub control volume */
-    template<class ElementSolution>
-    const Scalar factorEnergyTransfer(const Element &element,
-                                      const SubControlVolume &scv,
-                                      const ElementSolution &elemSol) const
-    { return factorEnergyTransferAtPos(scv.dofPosition()); }
-
-
     /*!\brief Return the pre factor the the energy transfer
      * \param globalPos The position in global coordinates.*/
     const Scalar factorEnergyTransferAtPos(const  GlobalPosition & globalPos) const
     { return factorEnergyTransfer_; }
 
-
-    /*!\brief Return the pre factor the the mass transfer
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub controle volume.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub control volume */
-    template<class ElementSolution>
-    const Scalar factorMassTransfer(const Element &element,
-                                    const SubControlVolume &scv,
-                                    const ElementSolution &elemSol) const
-    { return factorMassTransferAtPos(scv.dofPosition()); }
-
-    /*!\brief Return the pre factor the the mass transfer
-     * \param globalPos The position in global coordinates.*/
-    const Scalar factorMassTransferAtPos(const  GlobalPosition & globalPos) const
-    { return factorMassTransfer_; }
-
-
     //! Return if the tested position (input) is a specific region (right end of porous medium) in the domain
     bool inOutFlow(const GlobalPosition & globalPos) const { return globalPos[0] > (lengthPM_ - eps_) ;    }
     //! Return the length of the porous medium domain
@@ -239,7 +198,6 @@ private:
     Scalar intrinsicPermeability_ ;
     Scalar porosity_ ;
     Scalar factorEnergyTransfer_ ;
-    Scalar factorMassTransfer_ ;
     Scalar characteristicLength_ ;
     MaterialLawParams materialParams_ ;
 
diff --git a/test/references/test_1p2c_nonequilibrium_box-reference.vtu b/test/references/test_1p2c_nonequilibrium_box-reference.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..341d936ec7c6145c6f0162c5c2922494ee8eeec4
--- /dev/null
+++ b/test/references/test_1p2c_nonequilibrium_box-reference.vtu
@@ -0,0 +1,815 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
+  <UnstructuredGrid>
+    <Piece NumberOfCells="200" NumberOfPoints="402">
+      <PointData Scalars="p" Vectors="velocity_liq (m/s)">
+        <DataArray type="Float32" Name="p" NumberOfComponents="1" format="ascii">
+          100000 100284 100000 100284 100563 100563 100841 100841 101117 101117 101393 101393
+          101667 101667 101940 101940 102212 102212 102482 102482 102752 102752 103020 103020
+          103286 103286 103552 103552 103816 103816 104079 104079 104340 104340 104601 104601
+          104860 104860 105117 105117 105374 105374 105629 105629 105883 105883 106135 106135
+          106386 106386 106636 106636 106884 106884 107131 107131 107376 107376 107620 107620
+          107863 107863 108104 108104 108344 108344 108583 108583 108820 108820 109056 109056
+          109291 109291 109524 109524 109757 109757 109987 109987 110217 110217 110445 110445
+          110672 110672 110898 110898 111123 111123 111346 111346 111568 111568 111789 111789
+          112009 112009 112228 112228 112446 112446 112663 112663 112879 112879 113093 113093
+          113307 113307 113520 113520 113732 113732 113943 113943 114153 114153 114362 114362
+          114570 114570 114778 114778 114984 114984 115190 115190 115395 115395 115600 115600
+          115803 115803 116006 116006 116209 116209 116411 116411 116612 116612 116813 116813
+          117013 117013 117213 117213 117412 117412 117611 117611 117810 117810 118007 118007
+          118205 118205 118402 118402 118599 118599 118795 118795 118991 118991 119187 119187
+          119382 119382 119578 119578 119772 119772 119967 119967 120161 120161 120356 120356
+          120550 120550 120743 120743 120937 120937 121130 121130 121323 121323 121517 121517
+          121710 121710 121902 121902 122095 122095 122288 122288 122480 122480 122673 122673
+          122865 122865 123057 123057 123250 123250 123442 123442 123634 123634 123826 123826
+          124018 124018 124210 124210 124402 124402 124594 124594 124786 124786 124978 124978
+          125169 125169 125361 125361 125553 125553 125745 125745 125937 125937 126128 126128
+          126320 126320 126512 126512 126704 126704 126895 126895 127087 127087 127279 127279
+          127470 127470 127662 127662 127854 127854 128046 128046 128237 128237 128429 128429
+          128621 128621 128812 128812 129004 129004 129196 129196 129388 129388 129579 129579
+          129771 129771 129963 129963 130154 130154 130346 130346 130538 130538 130729 130729
+          130921 130921 131113 131113 131305 131305 131496 131496 131688 131688 131880 131880
+          132071 132071 132263 132263 132455 132455 132646 132646 132838 132838 133030 133030
+          133222 133222 133413 133413 133605 133605 133797 133797 133988 133988 134180 134180
+          134372 134372 134564 134564 134755 134755 134947 134947 135139 135139 135330 135330
+          135522 135522 135714 135714 135905 135905 136097 136097 136289 136289 136481 136481
+          136672 136672 136864 136864 137056 137056 137247 137247 137439 137439 137631 137631
+          137822 137822 138014 138014 138206 138206 138398 138398 138589 138589 138781 138781
+          138973 138973 139164 139164 139356 139356 139548 139548 139740 139740 139931 139931
+          140123 140123 140315 140315 140506 140506 140698 140698 140890 140890 141082 141082
+          141273 141273 141465 141465 141657 141657
+        </DataArray>
+        <DataArray type="Float32" Name="rho" NumberOfComponents="1" format="ascii">
+          999.498 999.075 999.498 999.075 998.977 998.977 998.942 998.942 998.916 998.916 998.891 998.891
+          998.865 998.865 998.838 998.838 998.811 998.811 998.783 998.783 998.755 998.755 998.726 998.726
+          998.697 998.697 998.667 998.667 998.631 998.631 998.592 998.592 998.552 998.552 998.512 998.512
+          998.471 998.471 998.43 998.43 998.388 998.388 998.345 998.345 998.302 998.302 998.258 998.258
+          998.214 998.214 998.169 998.169 998.124 998.124 998.078 998.078 998.033 998.033 997.986 997.986
+          997.938 997.938 997.882 997.882 997.826 997.826 997.771 997.771 997.715 997.715 997.658 997.658
+          997.602 997.602 997.546 997.546 997.49 997.49 997.433 997.433 997.377 997.377 997.321 997.321
+          997.266 997.266 997.21 997.21 997.155 997.155 997.098 997.098 997.036 997.036 996.974 996.974
+          996.913 996.913 996.853 996.853 996.794 996.794 996.735 996.735 996.677 996.677 996.62 996.62
+          996.564 996.564 996.509 996.509 996.454 996.454 996.401 996.401 996.349 996.349 996.298 996.298
+          996.249 996.249 996.2 996.2 996.152 996.152 996.1 996.1 996.05 996.05 996.001 996.001
+          995.954 995.954 995.908 995.908 995.864 995.864 995.821 995.821 995.78 995.78 995.74 995.74
+          995.702 995.702 995.665 995.665 995.63 995.63 995.596 995.596 995.564 995.564 995.533 995.533
+          995.504 995.504 995.476 995.476 995.449 995.449 995.424 995.424 995.399 995.399 995.377 995.377
+          995.355 995.355 995.335 995.335 995.316 995.316 995.298 995.298 995.281 995.281 995.265 995.265
+          995.25 995.25 995.237 995.237 995.224 995.224 995.212 995.212 995.201 995.201 995.19 995.19
+          995.181 995.181 995.172 995.172 995.164 995.164 995.157 995.157 995.15 995.15 995.144 995.144
+          995.138 995.138 995.133 995.133 995.128 995.128 995.124 995.124 995.12 995.12 995.117 995.117
+          995.113 995.113 995.111 995.111 995.108 995.108 995.106 995.106 995.104 995.104 995.102 995.102
+          995.101 995.101 995.099 995.099 995.098 995.098 995.097 995.097 995.096 995.096 995.095 995.095
+          995.094 995.094 995.094 995.094 995.093 995.093 995.093 995.093 995.092 995.092 995.092 995.092
+          995.092 995.092 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091
+          995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091
+          995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.092 995.092 995.092 995.092
+          995.092 995.092 995.092 995.092 995.092 995.092 995.092 995.092 995.092 995.092 995.092 995.092
+          995.092 995.092 995.092 995.092 995.092 995.092 995.093 995.093 995.093 995.093 995.093 995.093
+          995.093 995.093 995.093 995.093 995.093 995.093 995.093 995.093 995.093 995.093 995.093 995.093
+          995.093 995.093 995.094 995.094 995.094 995.094 995.094 995.094 995.094 995.094 995.094 995.094
+          995.094 995.094 995.094 995.094 995.094 995.094 995.094 995.094 995.094 995.094 995.095 995.095
+          995.095 995.095 995.095 995.095 995.095 995.095 995.095 995.095 995.095 995.095 995.095 995.095
+          995.095 995.095 995.095 995.095 995.095 995.095 995.096 995.096 995.096 995.096 995.096 995.096
+          995.096 995.096 995.096 995.096 995.096 995.096 995.096 995.096 995.096 995.096 995.096 995.096
+          995.096 995.096 995.096 995.096 995.097 995.097 995.097 995.097 995.097 995.097 995.097 995.097
+          995.097 995.097 995.097 995.097 995.097 995.097
+        </DataArray>
+        <DataArray type="Float32" Name="mu" NumberOfComponents="1" format="ascii">
+          0.00124138 0.00113672 0.00124138 0.00113672 0.00111914 0.00111914 0.00111281 0.00111281 0.00110805 0.00110805 0.00110344 0.00110344
+          0.00109876 0.00109876 0.00109396 0.00109396 0.00108906 0.00108906 0.00108405 0.00108405 0.00107893 0.00107893 0.00107371 0.00107371
+          0.00106837 0.00106837 0.00106293 0.00106293 0.00105792 0.00105792 0.00105304 0.00105304 0.00104807 0.00104807 0.00104301 0.00104301
+          0.00103788 0.00103788 0.00103266 0.00103266 0.00102737 0.00102737 0.00102201 0.00102201 0.00101658 0.00101658 0.00101108 0.00101108
+          0.00100552 0.00100552 0.000999898 0.000999898 0.000994223 0.000994223 0.000988496 0.000988496 0.000982721 0.000982721 0.000976905 0.000976905
+          0.000971242 0.000971242 0.000966106 0.000966106 0.000960945 0.000960945 0.000955763 0.000955763 0.000950564 0.000950564 0.000945353 0.000945353
+          0.000940134 0.000940134 0.000934913 0.000934913 0.000929693 0.000929693 0.00092448 0.00092448 0.000919278 0.000919278 0.000914093 0.000914093
+          0.000908928 0.000908928 0.000903789 0.000903789 0.000898681 0.000898681 0.000893799 0.000893799 0.000889381 0.000889381 0.000885002 0.000885002
+          0.000880666 0.000880666 0.000876377 0.000876377 0.000872139 0.000872139 0.000867956 0.000867956 0.000863832 0.000863832 0.000859769 0.000859769
+          0.000855772 0.000855772 0.000851844 0.000851844 0.000847987 0.000847987 0.000844206 0.000844206 0.000840501 0.000840501 0.000836877 0.000836877
+          0.000833336 0.000833336 0.000829879 0.000829879 0.000826596 0.000826596 0.000823699 0.000823699 0.000820881 0.000820881 0.000818143 0.000818143
+          0.000815488 0.000815488 0.000812915 0.000812915 0.000810426 0.000810426 0.00080802 0.00080802 0.000805699 0.000805699 0.000803462 0.000803462
+          0.000801308 0.000801308 0.000799239 0.000799239 0.000797253 0.000797253 0.000795349 0.000795349 0.000793528 0.000793528 0.000791787 0.000791787
+          0.000790127 0.000790127 0.000788544 0.000788544 0.000787039 0.000787039 0.00078561 0.00078561 0.000784254 0.000784254 0.000782971 0.000782971
+          0.000781757 0.000781757 0.000780613 0.000780613 0.000779534 0.000779534 0.00077852 0.00077852 0.000777567 0.000777567 0.000776675 0.000776675
+          0.00077584 0.00077584 0.00077506 0.00077506 0.000774333 0.000774333 0.000773656 0.000773656 0.000773028 0.000773028 0.000772446 0.000772446
+          0.000771907 0.000771907 0.00077141 0.00077141 0.000770952 0.000770952 0.00077053 0.00077053 0.000770144 0.000770144 0.00076979 0.00076979
+          0.000769466 0.000769466 0.000769172 0.000769172 0.000768903 0.000768903 0.00076866 0.00076866 0.00076844 0.00076844 0.000768241 0.000768241
+          0.000768061 0.000768061 0.0007679 0.0007679 0.000767756 0.000767756 0.000767626 0.000767626 0.000767511 0.000767511 0.000767409 0.000767409
+          0.000767318 0.000767318 0.000767244 0.000767244 0.000767181 0.000767181 0.000767126 0.000767126 0.000767077 0.000767077 0.000767035 0.000767035
+          0.000766998 0.000766998 0.000766966 0.000766966 0.000766938 0.000766938 0.000766914 0.000766914 0.000766893 0.000766893 0.000766876 0.000766876
+          0.000766861 0.000766861 0.000766848 0.000766848 0.000766838 0.000766838 0.000766829 0.000766829 0.000766821 0.000766821 0.000766815 0.000766815
+          0.00076681 0.00076681 0.000766806 0.000766806 0.000766802 0.000766802 0.0007668 0.0007668 0.000766798 0.000766798 0.000766796 0.000766796
+          0.000766795 0.000766795 0.000766794 0.000766794 0.000766793 0.000766793 0.000766793 0.000766793 0.000766793 0.000766793 0.000766793 0.000766793
+          0.000766793 0.000766793 0.000766793 0.000766793 0.000766793 0.000766793 0.000766794 0.000766794 0.000766794 0.000766794 0.000766795 0.000766795
+          0.000766795 0.000766795 0.000766796 0.000766796 0.000766796 0.000766796 0.000766797 0.000766797 0.000766797 0.000766797 0.000766798 0.000766798
+          0.000766799 0.000766799 0.000766799 0.000766799 0.0007668 0.0007668 0.0007668 0.0007668 0.000766801 0.000766801 0.000766802 0.000766802
+          0.000766802 0.000766802 0.000766803 0.000766803 0.000766803 0.000766803 0.000766804 0.000766804 0.000766805 0.000766805 0.000766805 0.000766805
+          0.000766806 0.000766806 0.000766806 0.000766806 0.000766807 0.000766807 0.000766808 0.000766808 0.000766808 0.000766808 0.000766809 0.000766809
+          0.000766809 0.000766809 0.00076681 0.00076681 0.000766811 0.000766811 0.000766811 0.000766811 0.000766812 0.000766812 0.000766812 0.000766812
+          0.000766813 0.000766813 0.000766814 0.000766814 0.000766814 0.000766814 0.000766815 0.000766815 0.000766816 0.000766816 0.000766816 0.000766816
+          0.000766817 0.000766817 0.000766817 0.000766817 0.000766818 0.000766818 0.000766819 0.000766819 0.000766819 0.000766819 0.00076682 0.00076682
+          0.00076682 0.00076682 0.000766821 0.000766821 0.000766822 0.000766822 0.000766822 0.000766822 0.000766823 0.000766823 0.000766823 0.000766823
+          0.000766824 0.000766824 0.000766825 0.000766825 0.000766825 0.000766825
+        </DataArray>
+        <DataArray type="Float32" Name="delp" NumberOfComponents="1" format="ascii">
+          0 283.675 0 283.675 562.987 562.987 840.725 840.725 1117.28 1117.28 1392.69 1392.69
+          1666.93 1666.93 1939.97 1939.97 2211.8 2211.8 2482.38 2482.38 2751.68 2751.68 3019.69 3019.69
+          3286.36 3286.36 3551.68 3551.68 3815.76 3815.76 4078.62 4078.62 4340.24 4340.24 4600.61 4600.61
+          4859.7 4859.7 5117.49 5117.49 5373.97 5373.97 5629.11 5629.11 5882.9 5882.9 6135.32 6135.32
+          6386.36 6386.36 6636.01 6636.01 6884.23 6884.23 7131.04 7131.04 7376.41 7376.41 7620.33 7620.33
+          7862.84 7862.84 8104.07 8104.07 8344.03 8344.03 8582.69 8582.69 8820.06 8820.06 9056.14 9056.14
+          9290.92 9290.92 9524.4 9524.4 9756.58 9756.58 9987.47 9987.47 10217.1 10217.1 10445.4 10445.4
+          10672.4 10672.4 10898.1 10898.1 11122.6 11122.6 11345.9 11345.9 11568 11568 11789.1 11789.1
+          12009.1 12009.1 12228 12228 12445.9 12445.9 12662.7 12662.7 12878.5 12878.5 13093.3 13093.3
+          13307.1 13307.1 13520 13520 13731.8 13731.8 13942.8 13942.8 14152.8 14152.8 14361.9 14361.9
+          14570.1 14570.1 14777.5 14777.5 14984.1 14984.1 15189.9 15189.9 15395 15395 15599.5 15599.5
+          15803.3 15803.3 16006.5 16006.5 16209 16209 16410.9 16410.9 16612.3 16612.3 16813.1 16813.1
+          17013.4 17013.4 17213.2 17213.2 17412.4 17412.4 17611.2 17611.2 17809.6 17809.6 18007.5 18007.5
+          18205 18205 18402.1 18402.1 18598.8 18598.8 18795.2 18795.2 18991.2 18991.2 19187 19187
+          19382.4 19382.4 19577.5 19577.5 19772.4 19772.4 19967 19967 20161.4 20161.4 20355.5 20355.5
+          20549.5 20549.5 20743.3 20743.3 20936.8 20936.8 21130.2 21130.2 21323.5 21323.5 21516.6 21516.6
+          21709.6 21709.6 21902.4 21902.4 22095.2 22095.2 22287.8 22287.8 22480.3 22480.3 22672.8 22672.8
+          22865.1 22865.1 23057.4 23057.4 23249.7 23249.7 23441.8 23441.8 23633.9 23633.9 23826 23826
+          24018 24018 24210 24210 24401.9 24401.9 24593.8 24593.8 24785.7 24785.7 24977.6 24977.6
+          25169.4 25169.4 25361.2 25361.2 25553 25553 25744.8 25744.8 25936.6 25936.6 26128.3 26128.3
+          26320.1 26320.1 26511.8 26511.8 26703.6 26703.6 26895.3 26895.3 27087 27087 27278.8 27278.8
+          27470.5 27470.5 27662.2 27662.2 27853.9 27853.9 28045.6 28045.6 28237.3 28237.3 28429 28429
+          28620.7 28620.7 28812.4 28812.4 29004.1 29004.1 29195.8 29195.8 29387.5 29387.5 29579.2 29579.2
+          29771 29771 29962.7 29962.7 30154.4 30154.4 30346.1 30346.1 30537.8 30537.8 30729.5 30729.5
+          30921.2 30921.2 31112.9 31112.9 31304.6 31304.6 31496.3 31496.3 31688 31688 31879.7 31879.7
+          32071.4 32071.4 32263.1 32263.1 32454.8 32454.8 32646.5 32646.5 32838.2 32838.2 33029.9 33029.9
+          33221.6 33221.6 33413.3 33413.3 33605 33605 33796.7 33796.7 33988.4 33988.4 34180.1 34180.1
+          34371.8 34371.8 34563.5 34563.5 34755.2 34755.2 34946.9 34946.9 35138.6 35138.6 35330.3 35330.3
+          35522 35522 35713.7 35713.7 35905.4 35905.4 36097.1 36097.1 36288.8 36288.8 36480.5 36480.5
+          36672.3 36672.3 36864 36864 37055.7 37055.7 37247.4 37247.4 37439.1 37439.1 37630.8 37630.8
+          37822.5 37822.5 38014.2 38014.2 38205.9 38205.9 38397.6 38397.6 38589.3 38589.3 38781 38781
+          38972.7 38972.7 39164.4 39164.4 39356.1 39356.1 39547.8 39547.8 39739.5 39739.5 39931.3 39931.3
+          40123 40123 40314.7 40314.7 40506.4 40506.4 40698.1 40698.1 40889.8 40889.8 41081.5 41081.5
+          41273.2 41273.2 41464.9 41464.9 41656.6 41656.6
+        </DataArray>
+        <DataArray type="Float32" Name="x^H2O_liq" NumberOfComponents="1" format="ascii">
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+        </DataArray>
+        <DataArray type="Float32" Name="x^N2_liq" NumberOfComponents="1" format="ascii">
+          1e-05 9.97984e-06 1e-05 9.97984e-06 9.97964e-06 9.97964e-06 9.97944e-06 9.97944e-06 9.97925e-06 9.97925e-06 9.97905e-06 9.97905e-06
+          9.97885e-06 9.97885e-06 9.97866e-06 9.97866e-06 9.97846e-06 9.97846e-06 9.97827e-06 9.97827e-06 9.97807e-06 9.97807e-06 9.97787e-06 9.97787e-06
+          9.97767e-06 9.97767e-06 9.97748e-06 9.97748e-06 9.97728e-06 9.97728e-06 9.97708e-06 9.97708e-06 9.97688e-06 9.97688e-06 9.97669e-06 9.97669e-06
+          9.97649e-06 9.97649e-06 9.97629e-06 9.97629e-06 9.97609e-06 9.97609e-06 9.97589e-06 9.97589e-06 9.9757e-06 9.9757e-06 9.9755e-06 9.9755e-06
+          9.9753e-06 9.9753e-06 9.9751e-06 9.9751e-06 9.9749e-06 9.9749e-06 9.9747e-06 9.9747e-06 9.9745e-06 9.9745e-06 9.97431e-06 9.97431e-06
+          9.97411e-06 9.97411e-06 9.97391e-06 9.97391e-06 9.97371e-06 9.97371e-06 9.97351e-06 9.97351e-06 9.97331e-06 9.97331e-06 9.97311e-06 9.97311e-06
+          9.97291e-06 9.97291e-06 9.97271e-06 9.97271e-06 9.97252e-06 9.97252e-06 9.97232e-06 9.97232e-06 9.97212e-06 9.97212e-06 9.97192e-06 9.97192e-06
+          9.97172e-06 9.97172e-06 9.97152e-06 9.97152e-06 9.97132e-06 9.97132e-06 9.97112e-06 9.97112e-06 9.97092e-06 9.97092e-06 9.97072e-06 9.97072e-06
+          9.97052e-06 9.97052e-06 9.97033e-06 9.97033e-06 9.97013e-06 9.97013e-06 9.96993e-06 9.96993e-06 9.96973e-06 9.96973e-06 9.96953e-06 9.96953e-06
+          9.96933e-06 9.96933e-06 9.96913e-06 9.96913e-06 9.96893e-06 9.96893e-06 9.96873e-06 9.96873e-06 9.96853e-06 9.96853e-06 9.96833e-06 9.96833e-06
+          9.96814e-06 9.96814e-06 9.96794e-06 9.96794e-06 9.96774e-06 9.96774e-06 9.96754e-06 9.96754e-06 9.96734e-06 9.96734e-06 9.96714e-06 9.96714e-06
+          9.96694e-06 9.96694e-06 9.96674e-06 9.96674e-06 9.96654e-06 9.96654e-06 9.96635e-06 9.96635e-06 9.96615e-06 9.96615e-06 9.96595e-06 9.96595e-06
+          9.96575e-06 9.96575e-06 9.96555e-06 9.96555e-06 9.96535e-06 9.96535e-06 9.96515e-06 9.96515e-06 9.96496e-06 9.96496e-06 9.96476e-06 9.96476e-06
+          9.96456e-06 9.96456e-06 9.96436e-06 9.96436e-06 9.96416e-06 9.96416e-06 9.96396e-06 9.96396e-06 9.96376e-06 9.96376e-06 9.96356e-06 9.96356e-06
+          9.96337e-06 9.96337e-06 9.96317e-06 9.96317e-06 9.96297e-06 9.96297e-06 9.96277e-06 9.96277e-06 9.96257e-06 9.96257e-06 9.96237e-06 9.96237e-06
+          9.96217e-06 9.96217e-06 9.96198e-06 9.96198e-06 9.96178e-06 9.96178e-06 9.96158e-06 9.96158e-06 9.96138e-06 9.96138e-06 9.96118e-06 9.96118e-06
+          9.96098e-06 9.96098e-06 9.96079e-06 9.96079e-06 9.96059e-06 9.96059e-06 9.96039e-06 9.96039e-06 9.96019e-06 9.96019e-06 9.95999e-06 9.95999e-06
+          9.95979e-06 9.95979e-06 9.9596e-06 9.9596e-06 9.9594e-06 9.9594e-06 9.9592e-06 9.9592e-06 9.959e-06 9.959e-06 9.9588e-06 9.9588e-06
+          9.9586e-06 9.9586e-06 9.95841e-06 9.95841e-06 9.95821e-06 9.95821e-06 9.95801e-06 9.95801e-06 9.95781e-06 9.95781e-06 9.95761e-06 9.95761e-06
+          9.95742e-06 9.95742e-06 9.95722e-06 9.95722e-06 9.95702e-06 9.95702e-06 9.95682e-06 9.95682e-06 9.95662e-06 9.95662e-06 9.95642e-06 9.95642e-06
+          9.95623e-06 9.95623e-06 9.95603e-06 9.95603e-06 9.95583e-06 9.95583e-06 9.95563e-06 9.95563e-06 9.95543e-06 9.95543e-06 9.95524e-06 9.95524e-06
+          9.95504e-06 9.95504e-06 9.95484e-06 9.95484e-06 9.95464e-06 9.95464e-06 9.95444e-06 9.95444e-06 9.95424e-06 9.95424e-06 9.95405e-06 9.95405e-06
+          9.95385e-06 9.95385e-06 9.95365e-06 9.95365e-06 9.95345e-06 9.95345e-06 9.95325e-06 9.95325e-06 9.95306e-06 9.95306e-06 9.95286e-06 9.95286e-06
+          9.95266e-06 9.95266e-06 9.95246e-06 9.95246e-06 9.95226e-06 9.95226e-06 9.95207e-06 9.95207e-06 9.95187e-06 9.95187e-06 9.95167e-06 9.95167e-06
+          9.95147e-06 9.95147e-06 9.95127e-06 9.95127e-06 9.95108e-06 9.95108e-06 9.95088e-06 9.95088e-06 9.95068e-06 9.95068e-06 9.95048e-06 9.95048e-06
+          9.95028e-06 9.95028e-06 9.95009e-06 9.95009e-06 9.94989e-06 9.94989e-06 9.94969e-06 9.94969e-06 9.94949e-06 9.94949e-06 9.9493e-06 9.9493e-06
+          9.9491e-06 9.9491e-06 9.9489e-06 9.9489e-06 9.9487e-06 9.9487e-06 9.9485e-06 9.9485e-06 9.94831e-06 9.94831e-06 9.94811e-06 9.94811e-06
+          9.94791e-06 9.94791e-06 9.94771e-06 9.94771e-06 9.94751e-06 9.94751e-06 9.94732e-06 9.94732e-06 9.94712e-06 9.94712e-06 9.94692e-06 9.94692e-06
+          9.94672e-06 9.94672e-06 9.94653e-06 9.94653e-06 9.94633e-06 9.94633e-06 9.94613e-06 9.94613e-06 9.94593e-06 9.94593e-06 9.94573e-06 9.94573e-06
+          9.94554e-06 9.94554e-06 9.94534e-06 9.94534e-06 9.94514e-06 9.94514e-06 9.94494e-06 9.94494e-06 9.94475e-06 9.94475e-06 9.94455e-06 9.94455e-06
+          9.94435e-06 9.94435e-06 9.94415e-06 9.94415e-06 9.94395e-06 9.94395e-06 9.94376e-06 9.94376e-06 9.94356e-06 9.94356e-06 9.94336e-06 9.94336e-06
+          9.94316e-06 9.94316e-06 9.94297e-06 9.94297e-06 9.94277e-06 9.94277e-06 9.94257e-06 9.94257e-06 9.94237e-06 9.94237e-06 9.94218e-06 9.94218e-06
+          9.94198e-06 9.94198e-06 9.94178e-06 9.94178e-06 9.94158e-06 9.94158e-06 9.94139e-06 9.94139e-06 9.94119e-06 9.94119e-06 9.94099e-06 9.94099e-06
+          9.94079e-06 9.94079e-06 9.9406e-06 9.9406e-06 9.9404e-06 9.9404e-06
+        </DataArray>
+        <DataArray type="Float32" Name="X^H2O_liq" NumberOfComponents="1" format="ascii">
+          0.999984 0.999985 0.999984 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+        </DataArray>
+        <DataArray type="Float32" Name="X^N2_liq" NumberOfComponents="1" format="ascii">
+          1.55498e-05 1.55184e-05 1.55498e-05 1.55184e-05 1.55181e-05 1.55181e-05 1.55178e-05 1.55178e-05 1.55175e-05 1.55175e-05 1.55172e-05 1.55172e-05
+          1.55169e-05 1.55169e-05 1.55166e-05 1.55166e-05 1.55163e-05 1.55163e-05 1.5516e-05 1.5516e-05 1.55157e-05 1.55157e-05 1.55154e-05 1.55154e-05
+          1.55151e-05 1.55151e-05 1.55148e-05 1.55148e-05 1.55145e-05 1.55145e-05 1.55142e-05 1.55142e-05 1.55139e-05 1.55139e-05 1.55135e-05 1.55135e-05
+          1.55132e-05 1.55132e-05 1.55129e-05 1.55129e-05 1.55126e-05 1.55126e-05 1.55123e-05 1.55123e-05 1.5512e-05 1.5512e-05 1.55117e-05 1.55117e-05
+          1.55114e-05 1.55114e-05 1.55111e-05 1.55111e-05 1.55108e-05 1.55108e-05 1.55105e-05 1.55105e-05 1.55102e-05 1.55102e-05 1.55098e-05 1.55098e-05
+          1.55095e-05 1.55095e-05 1.55092e-05 1.55092e-05 1.55089e-05 1.55089e-05 1.55086e-05 1.55086e-05 1.55083e-05 1.55083e-05 1.5508e-05 1.5508e-05
+          1.55077e-05 1.55077e-05 1.55074e-05 1.55074e-05 1.55071e-05 1.55071e-05 1.55068e-05 1.55068e-05 1.55064e-05 1.55064e-05 1.55061e-05 1.55061e-05
+          1.55058e-05 1.55058e-05 1.55055e-05 1.55055e-05 1.55052e-05 1.55052e-05 1.55049e-05 1.55049e-05 1.55046e-05 1.55046e-05 1.55043e-05 1.55043e-05
+          1.5504e-05 1.5504e-05 1.55037e-05 1.55037e-05 1.55033e-05 1.55033e-05 1.5503e-05 1.5503e-05 1.55027e-05 1.55027e-05 1.55024e-05 1.55024e-05
+          1.55021e-05 1.55021e-05 1.55018e-05 1.55018e-05 1.55015e-05 1.55015e-05 1.55012e-05 1.55012e-05 1.55009e-05 1.55009e-05 1.55006e-05 1.55006e-05
+          1.55003e-05 1.55003e-05 1.54999e-05 1.54999e-05 1.54996e-05 1.54996e-05 1.54993e-05 1.54993e-05 1.5499e-05 1.5499e-05 1.54987e-05 1.54987e-05
+          1.54984e-05 1.54984e-05 1.54981e-05 1.54981e-05 1.54978e-05 1.54978e-05 1.54975e-05 1.54975e-05 1.54972e-05 1.54972e-05 1.54969e-05 1.54969e-05
+          1.54965e-05 1.54965e-05 1.54962e-05 1.54962e-05 1.54959e-05 1.54959e-05 1.54956e-05 1.54956e-05 1.54953e-05 1.54953e-05 1.5495e-05 1.5495e-05
+          1.54947e-05 1.54947e-05 1.54944e-05 1.54944e-05 1.54941e-05 1.54941e-05 1.54938e-05 1.54938e-05 1.54935e-05 1.54935e-05 1.54931e-05 1.54931e-05
+          1.54928e-05 1.54928e-05 1.54925e-05 1.54925e-05 1.54922e-05 1.54922e-05 1.54919e-05 1.54919e-05 1.54916e-05 1.54916e-05 1.54913e-05 1.54913e-05
+          1.5491e-05 1.5491e-05 1.54907e-05 1.54907e-05 1.54904e-05 1.54904e-05 1.54901e-05 1.54901e-05 1.54897e-05 1.54897e-05 1.54894e-05 1.54894e-05
+          1.54891e-05 1.54891e-05 1.54888e-05 1.54888e-05 1.54885e-05 1.54885e-05 1.54882e-05 1.54882e-05 1.54879e-05 1.54879e-05 1.54876e-05 1.54876e-05
+          1.54873e-05 1.54873e-05 1.5487e-05 1.5487e-05 1.54867e-05 1.54867e-05 1.54864e-05 1.54864e-05 1.5486e-05 1.5486e-05 1.54857e-05 1.54857e-05
+          1.54854e-05 1.54854e-05 1.54851e-05 1.54851e-05 1.54848e-05 1.54848e-05 1.54845e-05 1.54845e-05 1.54842e-05 1.54842e-05 1.54839e-05 1.54839e-05
+          1.54836e-05 1.54836e-05 1.54833e-05 1.54833e-05 1.5483e-05 1.5483e-05 1.54827e-05 1.54827e-05 1.54823e-05 1.54823e-05 1.5482e-05 1.5482e-05
+          1.54817e-05 1.54817e-05 1.54814e-05 1.54814e-05 1.54811e-05 1.54811e-05 1.54808e-05 1.54808e-05 1.54805e-05 1.54805e-05 1.54802e-05 1.54802e-05
+          1.54799e-05 1.54799e-05 1.54796e-05 1.54796e-05 1.54793e-05 1.54793e-05 1.5479e-05 1.5479e-05 1.54787e-05 1.54787e-05 1.54783e-05 1.54783e-05
+          1.5478e-05 1.5478e-05 1.54777e-05 1.54777e-05 1.54774e-05 1.54774e-05 1.54771e-05 1.54771e-05 1.54768e-05 1.54768e-05 1.54765e-05 1.54765e-05
+          1.54762e-05 1.54762e-05 1.54759e-05 1.54759e-05 1.54756e-05 1.54756e-05 1.54753e-05 1.54753e-05 1.5475e-05 1.5475e-05 1.54746e-05 1.54746e-05
+          1.54743e-05 1.54743e-05 1.5474e-05 1.5474e-05 1.54737e-05 1.54737e-05 1.54734e-05 1.54734e-05 1.54731e-05 1.54731e-05 1.54728e-05 1.54728e-05
+          1.54725e-05 1.54725e-05 1.54722e-05 1.54722e-05 1.54719e-05 1.54719e-05 1.54716e-05 1.54716e-05 1.54713e-05 1.54713e-05 1.5471e-05 1.5471e-05
+          1.54706e-05 1.54706e-05 1.54703e-05 1.54703e-05 1.547e-05 1.547e-05 1.54697e-05 1.54697e-05 1.54694e-05 1.54694e-05 1.54691e-05 1.54691e-05
+          1.54688e-05 1.54688e-05 1.54685e-05 1.54685e-05 1.54682e-05 1.54682e-05 1.54679e-05 1.54679e-05 1.54676e-05 1.54676e-05 1.54673e-05 1.54673e-05
+          1.5467e-05 1.5467e-05 1.54666e-05 1.54666e-05 1.54663e-05 1.54663e-05 1.5466e-05 1.5466e-05 1.54657e-05 1.54657e-05 1.54654e-05 1.54654e-05
+          1.54651e-05 1.54651e-05 1.54648e-05 1.54648e-05 1.54645e-05 1.54645e-05 1.54642e-05 1.54642e-05 1.54639e-05 1.54639e-05 1.54636e-05 1.54636e-05
+          1.54633e-05 1.54633e-05 1.5463e-05 1.5463e-05 1.54627e-05 1.54627e-05 1.54623e-05 1.54623e-05 1.5462e-05 1.5462e-05 1.54617e-05 1.54617e-05
+          1.54614e-05 1.54614e-05 1.54611e-05 1.54611e-05 1.54608e-05 1.54608e-05 1.54605e-05 1.54605e-05 1.54602e-05 1.54602e-05 1.54599e-05 1.54599e-05
+          1.54596e-05 1.54596e-05 1.54593e-05 1.54593e-05 1.5459e-05 1.5459e-05 1.54587e-05 1.54587e-05 1.54584e-05 1.54584e-05 1.5458e-05 1.5458e-05
+          1.54577e-05 1.54577e-05 1.54574e-05 1.54574e-05 1.54571e-05 1.54571e-05
+        </DataArray>
+        <DataArray type="Float32" Name="T_liq" NumberOfComponents="1" format="ascii">
+          285 288.228 285 288.228 288.834 288.834 289.052 289.052 289.216 289.216 289.375 289.375
+          289.537 289.537 289.702 289.702 289.871 289.871 290.043 290.043 290.22 290.22 290.4 290.4
+          290.584 290.584 290.771 290.771 290.962 290.962 291.157 291.157 291.355 291.355 291.556 291.556
+          291.761 291.761 291.968 291.968 292.179 292.179 292.392 292.392 292.609 292.609 292.828 292.828
+          293.049 293.049 293.273 293.273 293.499 293.499 293.727 293.727 293.957 293.957 294.189 294.189
+          294.422 294.422 294.657 294.657 294.892 294.892 295.129 295.129 295.367 295.367 295.605 295.605
+          295.843 295.843 296.082 296.082 296.32 296.32 296.558 296.558 296.796 296.796 297.033 297.033
+          297.269 297.269 297.504 297.504 297.737 297.737 297.969 297.969 298.199 298.199 298.427 298.427
+          298.652 298.652 298.876 298.876 299.096 299.096 299.314 299.314 299.529 299.529 299.74 299.74
+          299.948 299.948 300.153 300.153 300.354 300.354 300.55 300.55 300.743 300.743 300.932 300.932
+          301.116 301.116 301.296 301.296 301.472 301.472 301.642 301.642 301.809 301.809 301.97 301.97
+          302.127 302.127 302.278 302.278 302.425 302.425 302.567 302.567 302.704 302.704 302.836 302.836
+          302.963 302.963 303.085 303.085 303.202 303.202 303.314 303.314 303.422 303.422 303.524 303.524
+          303.622 303.622 303.715 303.715 303.804 303.804 303.888 303.888 303.968 303.968 304.044 304.044
+          304.116 304.116 304.183 304.183 304.247 304.247 304.307 304.307 304.363 304.363 304.415 304.415
+          304.465 304.465 304.511 304.511 304.553 304.553 304.593 304.593 304.63 304.63 304.665 304.665
+          304.696 304.696 304.726 304.726 304.753 304.753 304.778 304.778 304.8 304.8 304.821 304.821
+          304.84 304.84 304.858 304.858 304.874 304.874 304.888 304.888 304.901 304.901 304.913 304.913
+          304.923 304.923 304.933 304.933 304.941 304.941 304.949 304.949 304.956 304.956 304.962 304.962
+          304.967 304.967 304.972 304.972 304.976 304.976 304.98 304.98 304.983 304.983 304.986 304.986
+          304.988 304.988 304.99 304.99 304.992 304.992 304.994 304.994 304.995 304.995 304.996 304.996
+          304.997 304.997 304.998 304.998 304.999 304.999 304.999 304.999 305 305 305 305
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.002 305.002 305.002 305.002
+          305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002
+          305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002
+          305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305 305 305 305 305 305 305 305 305 305 305 305
+          305 305 305 305 305 305 305 305 305 305 305 305
+          305 305 305 305 305 305 305 305 305 305 305 305
+          305 305 305 305 305 305
+        </DataArray>
+        <DataArray type="Float32" Name="T_s" NumberOfComponents="1" format="ascii">
+          285 288.228 285 288.228 288.834 288.834 289.052 289.052 289.216 289.216 289.375 289.375
+          289.537 289.537 289.702 289.702 289.871 289.871 290.043 290.043 290.22 290.22 290.4 290.4
+          290.584 290.584 290.771 290.771 290.962 290.962 291.157 291.157 291.355 291.355 291.556 291.556
+          291.76 291.76 291.968 291.968 292.179 292.179 292.392 292.392 292.609 292.609 292.828 292.828
+          293.049 293.049 293.273 293.273 293.499 293.499 293.727 293.727 293.957 293.957 294.189 294.189
+          294.422 294.422 294.656 294.656 294.892 294.892 295.129 295.129 295.366 295.366 295.605 295.605
+          295.843 295.843 296.081 296.081 296.32 296.32 296.558 296.558 296.796 296.796 297.033 297.033
+          297.269 297.269 297.503 297.503 297.737 297.737 297.969 297.969 298.198 298.198 298.426 298.426
+          298.652 298.652 298.875 298.875 299.096 299.096 299.314 299.314 299.529 299.529 299.74 299.74
+          299.948 299.948 300.153 300.153 300.353 300.353 300.55 300.55 300.743 300.743 300.932 300.932
+          301.116 301.116 301.296 301.296 301.472 301.472 301.642 301.642 301.809 301.809 301.97 301.97
+          302.127 302.127 302.278 302.278 302.425 302.425 302.567 302.567 302.704 302.704 302.836 302.836
+          302.963 302.963 303.085 303.085 303.202 303.202 303.314 303.314 303.422 303.422 303.524 303.524
+          303.622 303.622 303.715 303.715 303.804 303.804 303.888 303.888 303.968 303.968 304.044 304.044
+          304.116 304.116 304.183 304.183 304.247 304.247 304.307 304.307 304.363 304.363 304.415 304.415
+          304.465 304.465 304.511 304.511 304.553 304.553 304.593 304.593 304.63 304.63 304.665 304.665
+          304.696 304.696 304.726 304.726 304.753 304.753 304.778 304.778 304.8 304.8 304.821 304.821
+          304.84 304.84 304.858 304.858 304.874 304.874 304.888 304.888 304.901 304.901 304.913 304.913
+          304.923 304.923 304.933 304.933 304.941 304.941 304.949 304.949 304.956 304.956 304.962 304.962
+          304.967 304.967 304.972 304.972 304.976 304.976 304.98 304.98 304.983 304.983 304.986 304.986
+          304.988 304.988 304.99 304.99 304.992 304.992 304.994 304.994 304.995 304.995 304.996 304.996
+          304.997 304.997 304.998 304.998 304.999 304.999 304.999 304.999 305 305 305 305
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.002 305.002 305.002 305.002
+          305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002
+          305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002
+          305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305 305 305 305 305 305 305 305 305 305 305 305
+          305 305 305 305 305 305 305 305 305 305 305 305
+          305 305 305 305 305 305 305 305 305 305 305 305
+          305 305 305 305 305 305
+        </DataArray>
+        <DataArray type="Float32" Name="reynoldsNumber_liq" NumberOfComponents="1" format="ascii">
+          0.0401861 0.0438693 0.0401861 0.0438693 0.0445563 0.0445563 0.0448092 0.0448092 0.0450008 0.0450008 0.0451882 0.0451882
+          0.0453802 0.0453802 0.0455783 0.0455783 0.0457827 0.0457827 0.0459937 0.0459937 0.0462112 0.0462112 0.0464354 0.0464354
+          0.0466664 0.0466664 0.0469045 0.0469045 0.0471259 0.0471259 0.0473435 0.0473435 0.0475669 0.0475669 0.0477963 0.0477963
+          0.0480317 0.0480317 0.0482731 0.0482731 0.0485204 0.0485204 0.0487738 0.0487738 0.0490333 0.0490333 0.0492987 0.0492987
+          0.0495701 0.0495701 0.0498475 0.0498475 0.0501308 0.0501308 0.0504199 0.0504199 0.0507148 0.0507148 0.0510155 0.0510155
+          0.0513117 0.0513117 0.0515829 0.0515829 0.0518584 0.0518584 0.0521379 0.0521379 0.0524214 0.0524214 0.0527086 0.0527086
+          0.0529995 0.0529995 0.0532938 0.0532938 0.0535913 0.0535913 0.0538918 0.0538918 0.054195 0.054195 0.0545007 0.0545007
+          0.0548087 0.0548087 0.0551186 0.0551186 0.0554302 0.0554302 0.0557313 0.0557313 0.0560063 0.0560063 0.0562814 0.0562814
+          0.0565566 0.0565566 0.0568314 0.0568314 0.0571056 0.0571056 0.0573789 0.0573789 0.0576509 0.0576509 0.0579215 0.0579215
+          0.0581901 0.0581901 0.0584566 0.0584566 0.0587207 0.0587207 0.0589819 0.0589819 0.0592401 0.0592401 0.0594949 0.0594949
+          0.0597461 0.0597461 0.0599933 0.0599933 0.06023 0.06023 0.0604402 0.0604402 0.0606459 0.0606459 0.0608471 0.0608471
+          0.0610436 0.0610436 0.0612352 0.0612352 0.0614217 0.0614217 0.0616031 0.0616031 0.0617791 0.0617791 0.0619497 0.0619497
+          0.0621148 0.0621148 0.0622744 0.0622744 0.0624282 0.0624282 0.0625764 0.0625764 0.0627189 0.0627189 0.0628556 0.0628556
+          0.0629867 0.0629867 0.0631121 0.0631121 0.0632318 0.0632318 0.0633459 0.0633459 0.0634545 0.0634545 0.0635577 0.0635577
+          0.0636555 0.0636555 0.0637482 0.0637482 0.0638357 0.0638357 0.0639182 0.0639182 0.0639958 0.0639958 0.0640688 0.0640688
+          0.0641372 0.0641372 0.0642012 0.0642012 0.064261 0.064261 0.0643167 0.0643167 0.0643686 0.0643686 0.0644167 0.0644167
+          0.0644613 0.0644613 0.0645026 0.0645026 0.0645406 0.0645406 0.0645756 0.0645756 0.0646078 0.0646078 0.0646372 0.0646372
+          0.0646642 0.0646642 0.0646888 0.0646888 0.0647111 0.0647111 0.0647315 0.0647315 0.0647499 0.0647499 0.0647665 0.0647665
+          0.0647815 0.0647815 0.064795 0.064795 0.0648071 0.0648071 0.0648179 0.0648179 0.0648276 0.0648276 0.0648362 0.0648362
+          0.0648438 0.0648438 0.06485 0.06485 0.0648552 0.0648552 0.0648599 0.0648599 0.0648639 0.0648639 0.0648675 0.0648675
+          0.0648706 0.0648706 0.0648733 0.0648733 0.0648756 0.0648756 0.0648776 0.0648776 0.0648793 0.0648793 0.0648808 0.0648808
+          0.064882 0.064882 0.0648831 0.0648831 0.064884 0.064884 0.0648847 0.0648847 0.0648853 0.0648853 0.0648859 0.0648859
+          0.0648863 0.0648863 0.0648866 0.0648866 0.0648869 0.0648869 0.0648871 0.0648871 0.0648873 0.0648873 0.0648874 0.0648874
+          0.0648875 0.0648875 0.0648876 0.0648876 0.0648877 0.0648877 0.0648877 0.0648877 0.0648877 0.0648877 0.0648877 0.0648877
+          0.0648877 0.0648877 0.0648877 0.0648877 0.0648876 0.0648876 0.0648876 0.0648876 0.0648876 0.0648876 0.0648875 0.0648875
+          0.0648875 0.0648875 0.0648874 0.0648874 0.0648874 0.0648874 0.0648873 0.0648873 0.0648873 0.0648873 0.0648872 0.0648872
+          0.0648872 0.0648872 0.0648871 0.0648871 0.0648871 0.0648871 0.064887 0.064887 0.064887 0.064887 0.0648869 0.0648869
+          0.0648869 0.0648869 0.0648868 0.0648868 0.0648868 0.0648868 0.0648867 0.0648867 0.0648867 0.0648867 0.0648866 0.0648866
+          0.0648866 0.0648866 0.0648865 0.0648865 0.0648865 0.0648865 0.0648864 0.0648864 0.0648863 0.0648863 0.0648863 0.0648863
+          0.0648862 0.0648862 0.0648862 0.0648862 0.0648861 0.0648861 0.0648861 0.0648861 0.064886 0.064886 0.064886 0.064886
+          0.0648859 0.0648859 0.0648859 0.0648859 0.0648858 0.0648858 0.0648858 0.0648858 0.0648857 0.0648857 0.0648857 0.0648857
+          0.0648856 0.0648856 0.0648855 0.0648855 0.0648855 0.0648855 0.0648854 0.0648854 0.0648854 0.0648854 0.0648853 0.0648853
+          0.0648853 0.0648853 0.0648852 0.0648852 0.0648852 0.0648852 0.0648851 0.0648851 0.0648851 0.0648851 0.064885 0.064885
+          0.064885 0.064885 0.0648849 0.0648849 0.0648849 0.0648849
+        </DataArray>
+        <DataArray type="Float32" Name="nusseltNumber_liq" NumberOfComponents="1" format="ascii">
+          2.33126 2.33785 2.33126 2.33785 2.33903 2.33903 2.33946 2.33946 2.33978 2.33978 2.3401 2.3401
+          2.34043 2.34043 2.34076 2.34076 2.34111 2.34111 2.34146 2.34146 2.34183 2.34183 2.3422 2.3422
+          2.34259 2.34259 2.34298 2.34298 2.34335 2.34335 2.3437 2.3437 2.34406 2.34406 2.34443 2.34443
+          2.34481 2.34481 2.3452 2.3452 2.3456 2.3456 2.346 2.346 2.34641 2.34641 2.34684 2.34684
+          2.34727 2.34727 2.3477 2.3477 2.34815 2.34815 2.3486 2.3486 2.34906 2.34906 2.34953 2.34953
+          2.34999 2.34999 2.3504 2.3504 2.35082 2.35082 2.35124 2.35124 2.35167 2.35167 2.3521 2.3521
+          2.35254 2.35254 2.35298 2.35298 2.35342 2.35342 2.35387 2.35387 2.35432 2.35432 2.35477 2.35477
+          2.35522 2.35522 2.35567 2.35567 2.35613 2.35613 2.35657 2.35657 2.35696 2.35696 2.35735 2.35735
+          2.35774 2.35774 2.35813 2.35813 2.35852 2.35852 2.3589 2.3589 2.35929 2.35929 2.35967 2.35967
+          2.36004 2.36004 2.36041 2.36041 2.36078 2.36078 2.36114 2.36114 2.3615 2.3615 2.36185 2.36185
+          2.3622 2.3622 2.36254 2.36254 2.36286 2.36286 2.36315 2.36315 2.36342 2.36342 2.36369 2.36369
+          2.36396 2.36396 2.36421 2.36421 2.36446 2.36446 2.3647 2.3647 2.36494 2.36494 2.36516 2.36516
+          2.36538 2.36538 2.36559 2.36559 2.3658 2.3658 2.36599 2.36599 2.36618 2.36618 2.36636 2.36636
+          2.36653 2.36653 2.3667 2.3667 2.36686 2.36686 2.367 2.367 2.36715 2.36715 2.36728 2.36728
+          2.36741 2.36741 2.36753 2.36753 2.36765 2.36765 2.36775 2.36775 2.36785 2.36785 2.36795 2.36795
+          2.36804 2.36804 2.36812 2.36812 2.3682 2.3682 2.36827 2.36827 2.36834 2.36834 2.3684 2.3684
+          2.36846 2.36846 2.36851 2.36851 2.36856 2.36856 2.36861 2.36861 2.36865 2.36865 2.36869 2.36869
+          2.36872 2.36872 2.36875 2.36875 2.36878 2.36878 2.36881 2.36881 2.36883 2.36883 2.36885 2.36885
+          2.36887 2.36887 2.36889 2.36889 2.36891 2.36891 2.36892 2.36892 2.36893 2.36893 2.36894 2.36894
+          2.36895 2.36895 2.36896 2.36896 2.36897 2.36897 2.36897 2.36897 2.36898 2.36898 2.36898 2.36898
+          2.36899 2.36899 2.36899 2.36899 2.36899 2.36899 2.369 2.369 2.369 2.369 2.369 2.369
+          2.369 2.369 2.369 2.369 2.369 2.369 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.369 2.369
+          2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369
+          2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369
+          2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369
+          2.369 2.369 2.369 2.369 2.369 2.369
+        </DataArray>
+        <DataArray type="Float32" Name="prandtlNumber_liq" NumberOfComponents="1" format="ascii">
+          8.89203 8.05538 8.89203 8.05538 7.91563 7.91563 7.86539 7.86539 7.82774 7.82774 7.79125 7.79125
+          7.7542 7.7542 7.71637 7.71637 7.6777 7.6777 7.63822 7.63822 7.59792 7.59792 7.55682 7.55682
+          7.51493 7.51493 7.47227 7.47227 7.43275 7.43275 7.39416 7.39416 7.35495 7.35495 7.31513 7.31513
+          7.27471 7.27471 7.23373 7.23373 7.1922 7.1922 7.15015 7.15015 7.10761 7.10761 7.06461 7.06461
+          7.02116 7.02116 6.97732 6.97732 6.9331 6.9331 6.88854 6.88854 6.84367 6.84367 6.79853 6.79853
+          6.75457 6.75457 6.71448 6.71448 6.67425 6.67425 6.63391 6.63391 6.59349 6.59349 6.55303 6.55303
+          6.51257 6.51257 6.47213 6.47213 6.43176 6.43176 6.3915 6.3915 6.35138 6.35138 6.31143 6.31143
+          6.27169 6.27169 6.23221 6.23221 6.19301 6.19301 6.15551 6.15551 6.12142 6.12142 6.08768 6.08768
+          6.05431 6.05431 6.02134 6.02134 5.98879 5.98879 5.95671 5.95671 5.92511 5.92511 5.89402 5.89402
+          5.86346 5.86346 5.83346 5.83346 5.80404 5.80404 5.77522 5.77522 5.74701 5.74701 5.71945 5.71945
+          5.69254 5.69254 5.66629 5.66629 5.64136 5.64136 5.61924 5.61924 5.59775 5.59775 5.57689 5.57689
+          5.55667 5.55667 5.53709 5.53709 5.51817 5.51817 5.49989 5.49989 5.48226 5.48226 5.46528 5.46528
+          5.44895 5.44895 5.43327 5.43327 5.41823 5.41823 5.40382 5.40382 5.39004 5.39004 5.37687 5.37687
+          5.36432 5.36432 5.35236 5.35236 5.341 5.341 5.33021 5.33021 5.31998 5.31998 5.3103 5.3103
+          5.30115 5.30115 5.29252 5.29252 5.28439 5.28439 5.27675 5.27675 5.26957 5.26957 5.26285 5.26285
+          5.25657 5.25657 5.2507 5.2507 5.24523 5.24523 5.24014 5.24014 5.23541 5.23541 5.23103 5.23103
+          5.22698 5.22698 5.22324 5.22324 5.2198 5.2198 5.21663 5.21663 5.21372 5.21372 5.21106 5.21106
+          5.20863 5.20863 5.20641 5.20641 5.2044 5.2044 5.20257 5.20257 5.20091 5.20091 5.19942 5.19942
+          5.19807 5.19807 5.19686 5.19686 5.19577 5.19577 5.1948 5.1948 5.19393 5.19393 5.19316 5.19316
+          5.19248 5.19248 5.19192 5.19192 5.19144 5.19144 5.19102 5.19102 5.19065 5.19065 5.19033 5.19033
+          5.19005 5.19005 5.18981 5.18981 5.1896 5.1896 5.18941 5.18941 5.18926 5.18926 5.18912 5.18912
+          5.18901 5.18901 5.18891 5.18891 5.18883 5.18883 5.18876 5.18876 5.1887 5.1887 5.18865 5.18865
+          5.18861 5.18861 5.18858 5.18858 5.18855 5.18855 5.18853 5.18853 5.18852 5.18852 5.1885 5.1885
+          5.18849 5.18849 5.18848 5.18848 5.18848 5.18848 5.18847 5.18847 5.18847 5.18847 5.18847 5.18847
+          5.18847 5.18847 5.18847 5.18847 5.18847 5.18847 5.18847 5.18847 5.18847 5.18847 5.18847 5.18847
+          5.18848 5.18848 5.18848 5.18848 5.18848 5.18848 5.18848 5.18848 5.18849 5.18849 5.18849 5.18849
+          5.18849 5.18849 5.1885 5.1885 5.1885 5.1885 5.1885 5.1885 5.18851 5.18851 5.18851 5.18851
+          5.18851 5.18851 5.18851 5.18851 5.18852 5.18852 5.18852 5.18852 5.18852 5.18852 5.18853 5.18853
+          5.18853 5.18853 5.18853 5.18853 5.18854 5.18854 5.18854 5.18854 5.18854 5.18854 5.18855 5.18855
+          5.18855 5.18855 5.18855 5.18855 5.18855 5.18855 5.18856 5.18856 5.18856 5.18856 5.18856 5.18856
+          5.18857 5.18857 5.18857 5.18857 5.18857 5.18857 5.18858 5.18858 5.18858 5.18858 5.18858 5.18858
+          5.18859 5.18859 5.18859 5.18859 5.18859 5.18859 5.18859 5.18859 5.1886 5.1886 5.1886 5.1886
+          5.1886 5.1886 5.18861 5.18861 5.18861 5.18861 5.18861 5.18861 5.18862 5.18862 5.18862 5.18862
+          5.18862 5.18862 5.18863 5.18863 5.18863 5.18863
+        </DataArray>
+        <DataArray type="Float32" Name="velocity_liq (m/s)" NumberOfComponents="3" format="ascii">
+          -9.98222e-05 2.9306e-20 0 -9.98265e-05 1.28017e-19 0 -9.98222e-05 2.9306e-20 0 -9.98265e-05 1.28017e-19 0
+          -9.98319e-05 0 0 -9.98319e-05 0 0 -9.98336e-05 -1.47114e-19 0 -9.98336e-05 -1.47114e-19 0
+          -9.98348e-05 -1.96993e-19 0 -9.98348e-05 -1.96993e-19 0 -9.98359e-05 -4.9454e-19 0 -9.98359e-05 -4.9454e-19 0
+          -9.9837e-05 -4.80095e-19 0 -9.9837e-05 -4.80095e-19 0 -9.98382e-05 -5.3208e-19 0 -9.98382e-05 -5.3208e-19 0
+          -9.98393e-05 -3.34047e-19 0 -9.98393e-05 -3.34047e-19 0 -9.98405e-05 0 0 -9.98405e-05 0 0
+          -9.98417e-05 1.68592e-20 0 -9.98417e-05 1.68592e-20 0 -9.9843e-05 -1.01647e-19 0 -9.9843e-05 -1.01647e-19 0
+          -9.98443e-05 -3.40516e-20 0 -9.98443e-05 -3.40516e-20 0 -9.98458e-05 3.42258e-20 0 -9.98458e-05 3.42258e-20 0
+          -9.98476e-05 -8.597e-20 0 -9.98476e-05 -8.597e-20 0 -9.98494e-05 -3.10928e-19 0 -9.98494e-05 -3.10928e-19 0
+          -9.98511e-05 -8.67784e-20 0 -9.98511e-05 -8.67784e-20 0 -9.98528e-05 -4.70874e-19 0 -9.98528e-05 -4.70874e-19 0
+          -9.98546e-05 -9.63934e-19 0 -9.98546e-05 -9.63934e-19 0 -9.98564e-05 -5.28437e-19 0 -9.98564e-05 -5.28437e-19 0
+          -9.98582e-05 -5.31157e-20 0 -9.98582e-05 -5.31157e-20 0 -9.98601e-05 3.55963e-20 0 -9.98601e-05 3.55963e-20 0
+          -9.98619e-05 -1.25253e-19 0 -9.98619e-05 -1.25253e-19 0 -9.98638e-05 -5.39717e-20 0 -9.98638e-05 -5.39717e-20 0
+          -9.98657e-05 -8.32143e-19 0 -9.98657e-05 -8.32143e-19 0 -9.98677e-05 -2.43769e-18 0 -9.98677e-05 -2.43769e-18 0
+          -9.98696e-05 -2.45161e-18 0 -9.98696e-05 -2.45161e-18 0 -9.98716e-05 -2.11618e-18 0 -9.98716e-05 -2.11618e-18 0
+          -9.98736e-05 1.48078e-19 0 -9.98736e-05 1.48078e-19 0 -9.98757e-05 1.37787e-18 0 -9.98757e-05 1.37787e-18 0
+          -9.98782e-05 9.36425e-20 0 -9.98782e-05 9.36425e-20 0 -9.98808e-05 2.44765e-19 0 -9.98808e-05 2.44765e-19 0
+          -9.98832e-05 -3.40725e-19 0 -9.98832e-05 -3.40725e-19 0 -9.98856e-05 -8.94495e-19 0 -9.98856e-05 -8.94495e-19 0
+          -9.9888e-05 3.06174e-19 0 -9.9888e-05 3.06174e-19 0 -9.98905e-05 6.34965e-19 0 -9.98905e-05 6.34965e-19 0
+          -9.98929e-05 -5.80446e-20 0 -9.98929e-05 -5.80446e-20 0 -9.98953e-05 9.339e-19 0 -9.98953e-05 9.339e-19 0
+          -9.98978e-05 8.02185e-19 0 -9.98978e-05 8.02185e-19 0 -9.99002e-05 2.69559e-18 0 -9.99002e-05 2.69559e-18 0
+          -9.99026e-05 5.26338e-18 0 -9.99026e-05 5.26338e-18 0 -9.9905e-05 4.27837e-18 0 -9.9905e-05 4.27837e-18 0
+          -9.99075e-05 4.30268e-18 0 -9.99075e-05 4.30268e-18 0 -9.99099e-05 3.48184e-18 0 -9.99099e-05 3.48184e-18 0
+          -9.99124e-05 2.20623e-18 0 -9.99124e-05 2.20623e-18 0 -9.99152e-05 -1.13967e-18 0 -9.99152e-05 -1.13967e-18 0
+          -9.9918e-05 -3.49735e-18 0 -9.9918e-05 -3.49735e-18 0 -9.99206e-05 -5.75498e-19 0 -9.99206e-05 -5.75498e-19 0
+          -9.99233e-05 8.05534e-19 0 -9.99233e-05 8.05534e-19 0 -9.99259e-05 1.24535e-18 0 -9.99259e-05 1.24535e-18 0
+          -9.99285e-05 -8.34266e-20 0 -9.99285e-05 -8.34266e-20 0 -9.9931e-05 -2.45199e-18 0 -9.9931e-05 -2.45199e-18 0
+          -9.99335e-05 -2.40052e-18 0 -9.99335e-05 -2.40052e-18 0 -9.9936e-05 -1.29056e-18 0 -9.9936e-05 -1.29056e-18 0
+          -9.99384e-05 8.71477e-19 0 -9.99384e-05 8.71477e-19 0 -9.99408e-05 3.48063e-18 0 -9.99408e-05 3.48063e-18 0
+          -9.99431e-05 2.55263e-18 0 -9.99431e-05 2.55263e-18 0 -9.99454e-05 4.41709e-18 0 -9.99454e-05 4.41709e-18 0
+          -9.99477e-05 2.0776e-18 0 -9.99477e-05 2.0776e-18 0 -9.99499e-05 3.32552e-18 0 -9.99499e-05 3.32552e-18 0
+          -9.9952e-05 7.42145e-18 0 -9.9952e-05 7.42145e-18 0 -9.99542e-05 1.22745e-17 0 -9.99542e-05 1.22745e-17 0
+          -9.99565e-05 1.08929e-17 0 -9.99565e-05 1.08929e-17 0 -9.99588e-05 1.50607e-17 0 -9.99588e-05 1.50607e-17 0
+          -9.9961e-05 1.83033e-17 0 -9.9961e-05 1.83033e-17 0 -9.99631e-05 1.63414e-17 0 -9.99631e-05 1.63414e-17 0
+          -9.99651e-05 1.35841e-17 0 -9.99651e-05 1.35841e-17 0 -9.99671e-05 1.15461e-17 0 -9.99671e-05 1.15461e-17 0
+          -9.9969e-05 1.32874e-17 0 -9.9969e-05 1.32874e-17 0 -9.99708e-05 1.46776e-17 0 -9.99708e-05 1.46776e-17 0
+          -9.99726e-05 7.85664e-18 0 -9.99726e-05 7.85664e-18 0 -9.99743e-05 8.08227e-18 0 -9.99743e-05 8.08227e-18 0
+          -9.9976e-05 4.78975e-18 0 -9.9976e-05 4.78975e-18 0 -9.99775e-05 9.78638e-19 0 -9.99775e-05 9.78638e-19 0
+          -9.99791e-05 3.58207e-18 0 -9.99791e-05 3.58207e-18 0 -9.99805e-05 2.72157e-18 0 -9.99805e-05 2.72157e-18 0
+          -9.99819e-05 1.97136e-18 0 -9.99819e-05 1.97136e-18 0 -9.99832e-05 -2.41219e-18 0 -9.99832e-05 -2.41219e-18 0
+          -9.99845e-05 4.6043e-20 0 -9.99845e-05 4.6043e-20 0 -9.99857e-05 -2.07609e-18 0 -9.99857e-05 -2.07609e-18 0
+          -9.99868e-05 -7.39578e-19 0 -9.99868e-05 -7.39578e-19 0 -9.99879e-05 -8.33539e-19 0 -9.99879e-05 -8.33539e-19 0
+          -9.99889e-05 -3.47908e-19 0 -9.99889e-05 -3.47908e-19 0 -9.99899e-05 -1.83532e-18 0 -9.99899e-05 -1.83532e-18 0
+          -9.99908e-05 -3.46692e-18 0 -9.99908e-05 -3.46692e-18 0 -9.99917e-05 -2.95936e-18 0 -9.99917e-05 -2.95936e-18 0
+          -9.99925e-05 -8.8437e-18 0 -9.99925e-05 -8.8437e-18 0 -9.99933e-05 -9.18233e-18 0 -9.99933e-05 -9.18233e-18 0
+          -9.9994e-05 -1.15563e-17 0 -9.9994e-05 -1.15563e-17 0 -9.99947e-05 -9.60229e-18 0 -9.99947e-05 -9.60229e-18 0
+          -9.99953e-05 -5.95514e-18 0 -9.99953e-05 -5.95514e-18 0 -9.99959e-05 -2.67547e-18 0 -9.99959e-05 -2.67547e-18 0
+          -9.99964e-05 -2.44307e-18 0 -9.99964e-05 -2.44307e-18 0 -9.99969e-05 -3.73834e-18 0 -9.99969e-05 -3.73834e-18 0
+          -9.99974e-05 -1.08241e-18 0 -9.99974e-05 -1.08241e-18 0 -9.99978e-05 -4.5213e-18 0 -9.99978e-05 -4.5213e-18 0
+          -9.99982e-05 -4.19455e-18 0 -9.99982e-05 -4.19455e-18 0 -9.99986e-05 -2.31085e-18 0 -9.99986e-05 -2.31085e-18 0
+          -9.99989e-05 -2.83129e-18 0 -9.99989e-05 -2.83129e-18 0 -9.99992e-05 -1.60527e-18 0 -9.99992e-05 -1.60527e-18 0
+          -9.99995e-05 2.62169e-18 0 -9.99995e-05 2.62169e-18 0 -9.99998e-05 2.10304e-18 0 -9.99998e-05 2.10304e-18 0
+          -0.0001 3.35683e-18 0 -0.0001 3.35683e-18 0 -0.0001 6.85812e-19 0 -0.0001 6.85812e-19 0
+          -0.0001 -1.60867e-18 0 -0.0001 -1.60867e-18 0 -0.000100001 1.27788e-18 0 -0.000100001 1.27788e-18 0
+          -0.000100001 6.43857e-18 0 -0.000100001 6.43857e-18 0 -0.000100001 7.71881e-18 0 -0.000100001 7.71881e-18 0
+          -0.000100001 7.29432e-18 0 -0.000100001 7.29432e-18 0 -0.000100001 1.05648e-17 0 -0.000100001 1.05648e-17 0
+          -0.000100001 6.98923e-18 0 -0.000100001 6.98923e-18 0 -0.000100001 3.38857e-18 0 -0.000100001 3.38857e-18 0
+          -0.000100001 4.88217e-18 0 -0.000100001 4.88217e-18 0 -0.000100001 4.93023e-18 0 -0.000100001 4.93023e-18 0
+          -0.000100002 2.46541e-18 0 -0.000100002 2.46541e-18 0 -0.000100002 1.56473e-18 0 -0.000100002 1.56473e-18 0
+          -0.000100002 -8.29851e-19 0 -0.000100002 -8.29851e-19 0 -0.000100002 -7.11353e-19 0 -0.000100002 -7.11353e-19 0
+          -0.000100002 1.44651e-18 0 -0.000100002 1.44651e-18 0 -0.000100002 2.15803e-18 0 -0.000100002 2.15803e-18 0
+          -0.000100002 2.27671e-18 0 -0.000100002 2.27671e-18 0 -0.000100002 1.82619e-18 0 -0.000100002 1.82619e-18 0
+          -0.000100002 -2.98841e-18 0 -0.000100002 -2.98841e-18 0 -0.000100002 -2.94107e-18 0 -0.000100002 -2.94107e-18 0
+          -0.000100002 5.45535e-19 0 -0.000100002 5.45535e-19 0 -0.000100002 3.32073e-19 0 -0.000100002 3.32073e-19 0
+          -0.000100002 6.64158e-19 0 -0.000100002 6.64158e-19 0 -0.000100002 1.42322e-18 0 -0.000100002 1.42322e-18 0
+          -0.000100002 -2.56183e-18 0 -0.000100002 -2.56183e-18 0 -0.000100002 1.28093e-18 0 -0.000100002 1.28093e-18 0
+          -0.000100002 4.88656e-18 0 -0.000100002 4.88656e-18 0 -0.000100002 -9.96297e-19 0 -0.000100002 -9.96297e-19 0
+          -0.000100002 -4.36476e-18 0 -0.000100002 -4.36476e-18 0 -0.000100002 -6.66578e-18 0 -0.000100002 -6.66578e-18 0
+          -0.000100002 -1.19558e-17 0 -0.000100002 -1.19558e-17 0 -0.000100002 -1.39247e-17 0 -0.000100002 -1.39247e-17 0
+          -0.000100002 -1.72221e-17 0 -0.000100002 -1.72221e-17 0 -0.000100002 -2.1587e-17 0 -0.000100002 -2.1587e-17 0
+          -0.000100002 -1.80762e-17 0 -0.000100002 -1.80762e-17 0 -0.000100002 -7.51988e-18 0 -0.000100002 -7.51988e-18 0
+          -0.000100002 -5.19512e-18 0 -0.000100002 -5.19512e-18 0 -0.000100002 -1.09359e-17 0 -0.000100002 -1.09359e-17 0
+          -0.000100002 -1.24541e-17 0 -0.000100002 -1.24541e-17 0 -0.000100002 -1.29997e-17 0 -0.000100002 -1.29997e-17 0
+          -0.000100002 -1.04851e-17 0 -0.000100002 -1.04851e-17 0 -0.000100002 -1.75543e-17 0 -0.000100002 -1.75543e-17 0
+          -0.000100002 -1.89302e-17 0 -0.000100002 -1.89302e-17 0 -0.000100002 -1.74594e-17 0 -0.000100002 -1.74594e-17 0
+          -0.000100002 -1.84557e-17 0 -0.000100002 -1.84557e-17 0 -0.000100002 -2.24884e-17 0 -0.000100002 -2.24884e-17 0
+          -0.000100002 -1.52769e-17 0 -0.000100002 -1.52769e-17 0 -0.000100002 -1.10544e-17 0 -0.000100002 -1.10544e-17 0
+          -0.000100002 -1.09121e-17 0 -0.000100002 -1.09121e-17 0 -0.000100002 -1.25726e-17 0 -0.000100002 -1.25726e-17 0
+          -0.000100002 -1.44229e-17 0 -0.000100002 -1.44229e-17 0 -0.000100002 -1.54667e-17 0 -0.000100002 -1.54667e-17 0
+          -0.000100002 -1.19084e-17 0 -0.000100002 -1.19084e-17 0 -0.000100002 -4.36482e-18 0 -0.000100002 -4.36482e-18 0
+          -0.000100001 -7.40121e-18 0 -0.000100001 -7.40121e-18 0 -0.000100001 -1.42331e-17 0 -0.000100001 -1.42331e-17 0
+          -0.000100001 -1.19083e-17 0 -0.000100001 -1.19083e-17 0 -0.000100001 -9.29894e-18 0 -0.000100001 -9.29894e-18 0
+          -0.000100001 -3.60571e-18 0 -0.000100001 -3.60571e-18 0 -0.000100001 -6.92675e-18 0 -0.000100001 -6.92675e-18 0
+          -0.000100001 -1.58936e-17 0 -0.000100001 -1.58936e-17 0 -0.000100001 -1.97839e-17 0 -0.000100001 -1.97839e-17 0
+          -0.000100001 -2.41012e-17 0 -0.000100001 -2.41012e-17 0 -0.000100001 -2.08276e-17 0 -0.000100001 -2.08276e-17 0
+          -0.000100001 -1.62256e-17 0 -0.000100001 -1.62256e-17 0 -0.000100001 -1.37585e-17 0 -0.000100001 -1.37585e-17 0
+          -0.000100001 -7.59091e-18 0 -0.000100001 -7.59091e-18 0 -0.000100001 3.79545e-19 0 -0.000100001 3.79545e-19 0
+          -0.000100001 3.51079e-18 0 -0.000100001 3.51079e-18 0 -0.000100001 3.84289e-18 0 -0.000100001 3.84289e-18 0
+          -0.000100001 4.83919e-18 0 -0.000100001 4.83919e-18 0 -0.000100001 5.74061e-18 0 -0.000100001 5.74061e-18 0
+          -0.000100001 8.44485e-18 0 -0.000100001 8.44485e-18 0 -0.000100001 6.87923e-18 0 -0.000100001 6.87923e-18 0
+          -0.000100001 3.70055e-18 0 -0.000100001 3.70055e-18 0 -0.000100001 4.22242e-18 0 -0.000100001 4.22242e-18 0
+          -0.000100001 7.21131e-18 0 -0.000100001 7.21131e-18 0 -0.000100001 4.50707e-18 0 -0.000100001 4.50707e-18 0
+          -0.000100001 2.75168e-18 0 -0.000100001 2.75168e-18 0 -0.000100001 7.82805e-18 0 -0.000100001 7.82805e-18 0
+          -0.000100001 7.4485e-18 0 -0.000100001 7.4485e-18 0 -0.000100001 6.02522e-18 0 -0.000100001 6.02522e-18 0
+          -0.000100001 6.16754e-18 0 -0.000100001 6.16754e-18 0 -0.000100001 1.18606e-17 0 -0.000100001 1.18606e-17 0
+          -0.000100001 8.72943e-18 0 -0.000100001 8.72943e-18 0 -0.000100001 -2.65678e-18 0 -0.000100001 -2.65678e-18 0
+          -0.000100001 -6.02519e-18 0 -0.000100001 -6.02519e-18 0 -0.000100001 -2.41956e-18 0 -0.000100001 -2.41956e-18 0
+          -0.000100001 5.69309e-19 0 -0.000100001 5.69309e-19 0 -0.000100001 -4.45958e-18 0 -0.000100001 -4.45958e-18 0
+          -0.000100001 -1.3189e-17 0 -0.000100001 -1.3189e-17 0 -0.000100001 -3.22607e-17 0 -0.000100001 -3.22607e-17 0
+          -0.000100001 -3.14542e-17 0 -0.000100001 -3.14542e-17 0 -0.000100001 -4.63036e-17 0 -0.000100001 -4.63036e-17 0
+          -0.000100001 -5.27082e-17 0 -0.000100001 -5.27082e-17 0 -0.000100001 -6.25287e-17 0 -0.000100001 -6.25287e-17 0
+          -0.000100001 -6.39519e-17 0 -0.000100001 -6.39519e-17 0
+        </DataArray>
+      </PointData>
+      <CellData Scalars="process rank">
+        <DataArray type="Float32" Name="process rank" NumberOfComponents="1" format="ascii">
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0
+        </DataArray>
+      </CellData>
+      <Points>
+        <DataArray type="Float32" Name="Coordinates" NumberOfComponents="3" format="ascii">
+          0 0 0 0.025 0 0 0 1 0 0.025 1 0
+          0.05 0 0 0.05 1 0 0.075 0 0 0.075 1 0
+          0.1 0 0 0.1 1 0 0.125 0 0 0.125 1 0
+          0.15 0 0 0.15 1 0 0.175 0 0 0.175 1 0
+          0.2 0 0 0.2 1 0 0.225 0 0 0.225 1 0
+          0.25 0 0 0.25 1 0 0.275 0 0 0.275 1 0
+          0.3 0 0 0.3 1 0 0.325 0 0 0.325 1 0
+          0.35 0 0 0.35 1 0 0.375 0 0 0.375 1 0
+          0.4 0 0 0.4 1 0 0.425 0 0 0.425 1 0
+          0.45 0 0 0.45 1 0 0.475 0 0 0.475 1 0
+          0.5 0 0 0.5 1 0 0.525 0 0 0.525 1 0
+          0.55 0 0 0.55 1 0 0.575 0 0 0.575 1 0
+          0.6 0 0 0.6 1 0 0.625 0 0 0.625 1 0
+          0.65 0 0 0.65 1 0 0.675 0 0 0.675 1 0
+          0.7 0 0 0.7 1 0 0.725 0 0 0.725 1 0
+          0.75 0 0 0.75 1 0 0.775 0 0 0.775 1 0
+          0.8 0 0 0.8 1 0 0.825 0 0 0.825 1 0
+          0.85 0 0 0.85 1 0 0.875 0 0 0.875 1 0
+          0.9 0 0 0.9 1 0 0.925 0 0 0.925 1 0
+          0.95 0 0 0.95 1 0 0.975 0 0 0.975 1 0
+          1 0 0 1 1 0 1.025 0 0 1.025 1 0
+          1.05 0 0 1.05 1 0 1.075 0 0 1.075 1 0
+          1.1 0 0 1.1 1 0 1.125 0 0 1.125 1 0
+          1.15 0 0 1.15 1 0 1.175 0 0 1.175 1 0
+          1.2 0 0 1.2 1 0 1.225 0 0 1.225 1 0
+          1.25 0 0 1.25 1 0 1.275 0 0 1.275 1 0
+          1.3 0 0 1.3 1 0 1.325 0 0 1.325 1 0
+          1.35 0 0 1.35 1 0 1.375 0 0 1.375 1 0
+          1.4 0 0 1.4 1 0 1.425 0 0 1.425 1 0
+          1.45 0 0 1.45 1 0 1.475 0 0 1.475 1 0
+          1.5 0 0 1.5 1 0 1.525 0 0 1.525 1 0
+          1.55 0 0 1.55 1 0 1.575 0 0 1.575 1 0
+          1.6 0 0 1.6 1 0 1.625 0 0 1.625 1 0
+          1.65 0 0 1.65 1 0 1.675 0 0 1.675 1 0
+          1.7 0 0 1.7 1 0 1.725 0 0 1.725 1 0
+          1.75 0 0 1.75 1 0 1.775 0 0 1.775 1 0
+          1.8 0 0 1.8 1 0 1.825 0 0 1.825 1 0
+          1.85 0 0 1.85 1 0 1.875 0 0 1.875 1 0
+          1.9 0 0 1.9 1 0 1.925 0 0 1.925 1 0
+          1.95 0 0 1.95 1 0 1.975 0 0 1.975 1 0
+          2 0 0 2 1 0 2.025 0 0 2.025 1 0
+          2.05 0 0 2.05 1 0 2.075 0 0 2.075 1 0
+          2.1 0 0 2.1 1 0 2.125 0 0 2.125 1 0
+          2.15 0 0 2.15 1 0 2.175 0 0 2.175 1 0
+          2.2 0 0 2.2 1 0 2.225 0 0 2.225 1 0
+          2.25 0 0 2.25 1 0 2.275 0 0 2.275 1 0
+          2.3 0 0 2.3 1 0 2.325 0 0 2.325 1 0
+          2.35 0 0 2.35 1 0 2.375 0 0 2.375 1 0
+          2.4 0 0 2.4 1 0 2.425 0 0 2.425 1 0
+          2.45 0 0 2.45 1 0 2.475 0 0 2.475 1 0
+          2.5 0 0 2.5 1 0 2.525 0 0 2.525 1 0
+          2.55 0 0 2.55 1 0 2.575 0 0 2.575 1 0
+          2.6 0 0 2.6 1 0 2.625 0 0 2.625 1 0
+          2.65 0 0 2.65 1 0 2.675 0 0 2.675 1 0
+          2.7 0 0 2.7 1 0 2.725 0 0 2.725 1 0
+          2.75 0 0 2.75 1 0 2.775 0 0 2.775 1 0
+          2.8 0 0 2.8 1 0 2.825 0 0 2.825 1 0
+          2.85 0 0 2.85 1 0 2.875 0 0 2.875 1 0
+          2.9 0 0 2.9 1 0 2.925 0 0 2.925 1 0
+          2.95 0 0 2.95 1 0 2.975 0 0 2.975 1 0
+          3 0 0 3 1 0 3.025 0 0 3.025 1 0
+          3.05 0 0 3.05 1 0 3.075 0 0 3.075 1 0
+          3.1 0 0 3.1 1 0 3.125 0 0 3.125 1 0
+          3.15 0 0 3.15 1 0 3.175 0 0 3.175 1 0
+          3.2 0 0 3.2 1 0 3.225 0 0 3.225 1 0
+          3.25 0 0 3.25 1 0 3.275 0 0 3.275 1 0
+          3.3 0 0 3.3 1 0 3.325 0 0 3.325 1 0
+          3.35 0 0 3.35 1 0 3.375 0 0 3.375 1 0
+          3.4 0 0 3.4 1 0 3.425 0 0 3.425 1 0
+          3.45 0 0 3.45 1 0 3.475 0 0 3.475 1 0
+          3.5 0 0 3.5 1 0 3.525 0 0 3.525 1 0
+          3.55 0 0 3.55 1 0 3.575 0 0 3.575 1 0
+          3.6 0 0 3.6 1 0 3.625 0 0 3.625 1 0
+          3.65 0 0 3.65 1 0 3.675 0 0 3.675 1 0
+          3.7 0 0 3.7 1 0 3.725 0 0 3.725 1 0
+          3.75 0 0 3.75 1 0 3.775 0 0 3.775 1 0
+          3.8 0 0 3.8 1 0 3.825 0 0 3.825 1 0
+          3.85 0 0 3.85 1 0 3.875 0 0 3.875 1 0
+          3.9 0 0 3.9 1 0 3.925 0 0 3.925 1 0
+          3.95 0 0 3.95 1 0 3.975 0 0 3.975 1 0
+          4 0 0 4 1 0 4.025 0 0 4.025 1 0
+          4.05 0 0 4.05 1 0 4.075 0 0 4.075 1 0
+          4.1 0 0 4.1 1 0 4.125 0 0 4.125 1 0
+          4.15 0 0 4.15 1 0 4.175 0 0 4.175 1 0
+          4.2 0 0 4.2 1 0 4.225 0 0 4.225 1 0
+          4.25 0 0 4.25 1 0 4.275 0 0 4.275 1 0
+          4.3 0 0 4.3 1 0 4.325 0 0 4.325 1 0
+          4.35 0 0 4.35 1 0 4.375 0 0 4.375 1 0
+          4.4 0 0 4.4 1 0 4.425 0 0 4.425 1 0
+          4.45 0 0 4.45 1 0 4.475 0 0 4.475 1 0
+          4.5 0 0 4.5 1 0 4.525 0 0 4.525 1 0
+          4.55 0 0 4.55 1 0 4.575 0 0 4.575 1 0
+          4.6 0 0 4.6 1 0 4.625 0 0 4.625 1 0
+          4.65 0 0 4.65 1 0 4.675 0 0 4.675 1 0
+          4.7 0 0 4.7 1 0 4.725 0 0 4.725 1 0
+          4.75 0 0 4.75 1 0 4.775 0 0 4.775 1 0
+          4.8 0 0 4.8 1 0 4.825 0 0 4.825 1 0
+          4.85 0 0 4.85 1 0 4.875 0 0 4.875 1 0
+          4.9 0 0 4.9 1 0 4.925 0 0 4.925 1 0
+          4.95 0 0 4.95 1 0 4.975 0 0 4.975 1 0
+          5 0 0 5 1 0
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii">
+          0 1 3 2 1 4 5 3 4 6 7 5
+          6 8 9 7 8 10 11 9 10 12 13 11
+          12 14 15 13 14 16 17 15 16 18 19 17
+          18 20 21 19 20 22 23 21 22 24 25 23
+          24 26 27 25 26 28 29 27 28 30 31 29
+          30 32 33 31 32 34 35 33 34 36 37 35
+          36 38 39 37 38 40 41 39 40 42 43 41
+          42 44 45 43 44 46 47 45 46 48 49 47
+          48 50 51 49 50 52 53 51 52 54 55 53
+          54 56 57 55 56 58 59 57 58 60 61 59
+          60 62 63 61 62 64 65 63 64 66 67 65
+          66 68 69 67 68 70 71 69 70 72 73 71
+          72 74 75 73 74 76 77 75 76 78 79 77
+          78 80 81 79 80 82 83 81 82 84 85 83
+          84 86 87 85 86 88 89 87 88 90 91 89
+          90 92 93 91 92 94 95 93 94 96 97 95
+          96 98 99 97 98 100 101 99 100 102 103 101
+          102 104 105 103 104 106 107 105 106 108 109 107
+          108 110 111 109 110 112 113 111 112 114 115 113
+          114 116 117 115 116 118 119 117 118 120 121 119
+          120 122 123 121 122 124 125 123 124 126 127 125
+          126 128 129 127 128 130 131 129 130 132 133 131
+          132 134 135 133 134 136 137 135 136 138 139 137
+          138 140 141 139 140 142 143 141 142 144 145 143
+          144 146 147 145 146 148 149 147 148 150 151 149
+          150 152 153 151 152 154 155 153 154 156 157 155
+          156 158 159 157 158 160 161 159 160 162 163 161
+          162 164 165 163 164 166 167 165 166 168 169 167
+          168 170 171 169 170 172 173 171 172 174 175 173
+          174 176 177 175 176 178 179 177 178 180 181 179
+          180 182 183 181 182 184 185 183 184 186 187 185
+          186 188 189 187 188 190 191 189 190 192 193 191
+          192 194 195 193 194 196 197 195 196 198 199 197
+          198 200 201 199 200 202 203 201 202 204 205 203
+          204 206 207 205 206 208 209 207 208 210 211 209
+          210 212 213 211 212 214 215 213 214 216 217 215
+          216 218 219 217 218 220 221 219 220 222 223 221
+          222 224 225 223 224 226 227 225 226 228 229 227
+          228 230 231 229 230 232 233 231 232 234 235 233
+          234 236 237 235 236 238 239 237 238 240 241 239
+          240 242 243 241 242 244 245 243 244 246 247 245
+          246 248 249 247 248 250 251 249 250 252 253 251
+          252 254 255 253 254 256 257 255 256 258 259 257
+          258 260 261 259 260 262 263 261 262 264 265 263
+          264 266 267 265 266 268 269 267 268 270 271 269
+          270 272 273 271 272 274 275 273 274 276 277 275
+          276 278 279 277 278 280 281 279 280 282 283 281
+          282 284 285 283 284 286 287 285 286 288 289 287
+          288 290 291 289 290 292 293 291 292 294 295 293
+          294 296 297 295 296 298 299 297 298 300 301 299
+          300 302 303 301 302 304 305 303 304 306 307 305
+          306 308 309 307 308 310 311 309 310 312 313 311
+          312 314 315 313 314 316 317 315 316 318 319 317
+          318 320 321 319 320 322 323 321 322 324 325 323
+          324 326 327 325 326 328 329 327 328 330 331 329
+          330 332 333 331 332 334 335 333 334 336 337 335
+          336 338 339 337 338 340 341 339 340 342 343 341
+          342 344 345 343 344 346 347 345 346 348 349 347
+          348 350 351 349 350 352 353 351 352 354 355 353
+          354 356 357 355 356 358 359 357 358 360 361 359
+          360 362 363 361 362 364 365 363 364 366 367 365
+          366 368 369 367 368 370 371 369 370 372 373 371
+          372 374 375 373 374 376 377 375 376 378 379 377
+          378 380 381 379 380 382 383 381 382 384 385 383
+          384 386 387 385 386 388 389 387 388 390 391 389
+          390 392 393 391 392 394 395 393 394 396 397 395
+          396 398 399 397 398 400 401 399
+        </DataArray>
+        <DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii">
+          4 8 12 16 20 24 28 32 36 40 44 48
+          52 56 60 64 68 72 76 80 84 88 92 96
+          100 104 108 112 116 120 124 128 132 136 140 144
+          148 152 156 160 164 168 172 176 180 184 188 192
+          196 200 204 208 212 216 220 224 228 232 236 240
+          244 248 252 256 260 264 268 272 276 280 284 288
+          292 296 300 304 308 312 316 320 324 328 332 336
+          340 344 348 352 356 360 364 368 372 376 380 384
+          388 392 396 400 404 408 412 416 420 424 428 432
+          436 440 444 448 452 456 460 464 468 472 476 480
+          484 488 492 496 500 504 508 512 516 520 524 528
+          532 536 540 544 548 552 556 560 564 568 572 576
+          580 584 588 592 596 600 604 608 612 616 620 624
+          628 632 636 640 644 648 652 656 660 664 668 672
+          676 680 684 688 692 696 700 704 708 712 716 720
+          724 728 732 736 740 744 748 752 756 760 764 768
+          772 776 780 784 788 792 796 800
+        </DataArray>
+        <DataArray type="UInt8" Name="types" NumberOfComponents="1" format="ascii">
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/test/references/test_1p2c_nonequilibrium_tpfa-reference.vtu b/test/references/test_1p2c_nonequilibrium_tpfa-reference.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..3f6138551c2c06a26e5ed17d969c86a73b8272d8
--- /dev/null
+++ b/test/references/test_1p2c_nonequilibrium_tpfa-reference.vtu
@@ -0,0 +1,541 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
+  <UnstructuredGrid>
+    <Piece NumberOfCells="200" NumberOfPoints="402">
+      <CellData Scalars="p" Vectors="velocity_liq (m/s)">
+        <DataArray type="Float32" Name="p" NumberOfComponents="1" format="ascii">
+          100144 100424 100702 100979 101255 101530 101803 102076 102347 102617 102885 103153
+          103418 103683 103946 104209 104470 104729 104988 105245 105501 105755 106008 106260
+          106510 106759 107007 107253 107497 107740 107982 108223 108462 108700 108937 109172
+          109406 109639 109871 110101 110330 110558 110784 111009 111233 111456 111678 111898
+          112118 112336 112553 112770 112985 113199 113413 113625 113837 114047 114257 114466
+          114673 114880 115087 115292 115497 115701 115905 116108 116310 116512 116713 116913
+          117113 117313 117512 117711 117909 118106 118304 118501 118697 118894 119090 119285
+          119480 119675 119870 120065 120259 120453 120647 120841 121034 121228 121421 121614
+          121807 122000 122192 122385 122577 122770 122962 123154 123347 123539 123731 123923
+          124115 124307 124499 124691 124882 125074 125266 125458 125650 125842 126033 126225
+          126417 126609 126800 126992 127184 127375 127567 127759 127951 128142 128334 128526
+          128717 128909 129101 129293 129484 129676 129868 130059 130251 130443 130634 130826
+          131018 131210 131401 131593 131785 131976 132168 132360 132552 132743 132935 133127
+          133318 133510 133702 133893 134085 134277 134469 134660 134852 135044 135235 135427
+          135619 135810 136002 136194 136386 136577 136769 136961 137152 137344 137536 137728
+          137919 138111 138303 138494 138686 138878 139069 139261 139453 139645 139836 140028
+          140220 140411 140603 140795 140987 141178 141370 141562
+        </DataArray>
+        <DataArray type="Float32" Name="rho" NumberOfComponents="1" format="ascii">
+          999.15 998.997 998.954 998.927 998.902 998.876 998.85 998.823 998.796 998.768 998.74 998.71
+          998.681 998.648 998.61 998.571 998.531 998.491 998.449 998.408 998.365 998.323 998.279 998.235
+          998.191 998.146 998.101 998.055 998.009 997.963 997.91 997.854 997.799 997.743 997.687 997.631
+          997.574 997.518 997.462 997.406 997.35 997.294 997.239 997.184 997.129 997.069 997.007 996.946
+          996.885 996.826 996.766 996.708 996.651 996.594 996.539 996.484 996.43 996.378 996.326 996.276
+          996.227 996.179 996.129 996.078 996.029 995.981 995.934 995.889 995.846 995.804 995.763 995.724
+          995.687 995.651 995.616 995.583 995.551 995.521 995.492 995.465 995.439 995.414 995.39 995.368
+          995.347 995.327 995.309 995.291 995.275 995.259 995.245 995.232 995.219 995.208 995.197 995.187
+          995.178 995.169 995.161 995.154 995.148 995.141 995.136 995.131 995.127 995.122 995.119 995.115
+          995.112 995.11 995.107 995.105 995.103 995.102 995.1 995.099 995.098 995.096 995.096 995.095
+          995.094 995.093 995.093 995.093 995.092 995.092 995.092 995.091 995.091 995.091 995.091 995.091
+          995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.091 995.092 995.092
+          995.092 995.092 995.092 995.092 995.092 995.092 995.092 995.092 995.093 995.093 995.093 995.093
+          995.093 995.093 995.093 995.093 995.093 995.093 995.094 995.094 995.094 995.094 995.094 995.094
+          995.094 995.094 995.094 995.094 995.094 995.095 995.095 995.095 995.095 995.095 995.095 995.095
+          995.095 995.095 995.095 995.096 995.096 995.096 995.096 995.096 995.096 995.096 995.096 995.096
+          995.096 995.097 995.097 995.097 995.097 995.097 995.097 995.097
+        </DataArray>
+        <DataArray type="Float32" Name="mu" NumberOfComponents="1" format="ascii">
+          0.00115023 0.00112276 0.001115 0.00111008 0.00110549 0.00110086 0.00109613 0.00109128 0.00108633 0.00108127 0.0010761 0.00107083
+          0.00106545 0.00106015 0.00105532 0.00105039 0.00104539 0.0010403 0.00103514 0.00102989 0.00102457 0.00101919 0.00101373 0.00100821
+          0.00100263 0.000996991 0.0009913 0.00098556 0.000979776 0.000973951 0.000968661 0.000963522 0.00095836 0.00095318 0.000947985 0.000942781
+          0.000937571 0.00093236 0.000927154 0.000921956 0.000916772 0.000911607 0.000906465 0.00090135 0.000896269 0.000891706 0.000887315 0.000882965
+          0.00087866 0.000874403 0.000870199 0.000866051 0.000861963 0.000857938 0.00085398 0.000850092 0.000846277 0.000842537 0.000838876 0.000835296
+          0.000831799 0.000828388 0.000825319 0.000822462 0.000819685 0.000816989 0.000814374 0.000811842 0.000809394 0.000807029 0.000804747 0.00080255
+          0.000800436 0.000798406 0.000796458 0.000794592 0.000792808 0.000791103 0.000789478 0.00078793 0.000786459 0.000785062 0.000783738 0.000782485
+          0.000781301 0.000780185 0.000779134 0.000778146 0.000777218 0.00077635 0.000775538 0.00077478 0.000774074 0.000773417 0.000772807 0.000772242
+          0.00077172 0.000771239 0.000770795 0.000770387 0.000770013 0.000769671 0.000769359 0.000769074 0.000768816 0.000768581 0.000768369 0.000768177
+          0.000768004 0.000767849 0.000767711 0.000767586 0.000767476 0.000767377 0.000767291 0.000767223 0.000767163 0.00076711 0.000767063 0.000767023
+          0.000766987 0.000766957 0.00076693 0.000766908 0.000766888 0.000766871 0.000766857 0.000766845 0.000766835 0.000766827 0.00076682 0.000766814
+          0.000766809 0.000766805 0.000766802 0.0007668 0.000766798 0.000766796 0.000766795 0.000766794 0.000766794 0.000766793 0.000766793 0.000766793
+          0.000766793 0.000766794 0.000766794 0.000766794 0.000766795 0.000766795 0.000766796 0.000766796 0.000766797 0.000766797 0.000766798 0.000766799
+          0.000766799 0.0007668 0.0007668 0.000766801 0.000766802 0.000766802 0.000766803 0.000766803 0.000766804 0.000766805 0.000766805 0.000766806
+          0.000766806 0.000766807 0.000766808 0.000766808 0.000766809 0.000766809 0.00076681 0.000766811 0.000766811 0.000766812 0.000766812 0.000766813
+          0.000766814 0.000766814 0.000766815 0.000766816 0.000766816 0.000766817 0.000766817 0.000766818 0.000766819 0.000766819 0.00076682 0.00076682
+          0.000766821 0.000766822 0.000766822 0.000766823 0.000766823 0.000766824 0.000766825 0.000766825
+        </DataArray>
+        <DataArray type="Float32" Name="delp" NumberOfComponents="1" format="ascii">
+          143.507 423.707 701.977 979.025 1254.93 1529.68 1803.26 2075.63 2346.76 2616.64 2885.23 3152.51
+          3418.44 3683.06 3946.48 4208.67 4469.62 4729.31 4987.71 5244.8 5500.58 5755.01 6008.09 6259.79
+          6510.1 6759.01 7006.51 7252.58 7497.2 7740.38 7982.24 8222.83 8462.14 8700.15 8936.88 9172.31
+          9406.45 9639.29 9870.84 10101.1 10330.1 10557.7 10784.1 11009.3 11233.1 11455.9 11677.5 11898.1
+          12117.6 12336 12553.4 12769.8 12985.1 13199.5 13412.8 13625.2 13836.7 14047.2 14256.8 14465.5
+          14673.4 14880.4 15086.6 15292.1 15497 15701.1 15904.7 16107.6 16309.8 16511.5 16712.7 16913.3
+          17113.3 17312.9 17511.9 17710.6 17908.7 18106.5 18303.8 18500.8 18697.3 18893.6 19089.5 19285.1
+          19480.4 19675.4 19870.2 20064.7 20259 20453.1 20647 20840.7 21034.2 21227.5 21420.7 21613.8
+          21806.7 21999.5 22192.2 22384.8 22577.3 22769.7 22962.1 23154.3 23346.5 23538.7 23730.8 23922.8
+          24114.8 24306.8 24498.7 24690.6 24882.5 25074.3 25266.2 25458 25649.8 25841.5 26033.3 26225.1
+          26416.8 26608.6 26800.3 26992 27183.8 27375.5 27567.2 27758.9 27950.6 28142.3 28334 28525.7
+          28717.5 28909.2 29100.9 29292.6 29484.3 29676 29867.7 30059.4 30251.1 30442.8 30634.5 30826.2
+          31017.9 31209.6 31401.3 31593 31784.7 31976.4 32168.1 32359.8 32551.5 32743.2 32934.9 33126.6
+          33318.3 33510 33701.7 33893.4 34085.1 34276.8 34468.5 34660.2 34851.9 35043.6 35235.3 35427
+          35618.7 35810.5 36002.2 36193.9 36385.6 36577.3 36769 36960.7 37152.4 37344.1 37535.8 37727.5
+          37919.2 38110.9 38302.6 38494.3 38686 38877.7 39069.4 39261.2 39452.9 39644.6 39836.3 40028
+          40219.7 40411.4 40603.1 40794.8 40986.5 41178.2 41369.9 41561.6
+        </DataArray>
+        <DataArray type="Float32" Name="x^H2O_liq" NumberOfComponents="1" format="ascii">
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+        </DataArray>
+        <DataArray type="Float32" Name="x^N2_liq" NumberOfComponents="1" format="ascii">
+          9.98991e-06 9.9898e-06 9.98971e-06 9.98961e-06 9.98951e-06 9.98941e-06 9.98931e-06 9.98921e-06 9.98911e-06 9.98902e-06 9.98892e-06 9.98882e-06
+          9.98872e-06 9.98862e-06 9.98852e-06 9.98842e-06 9.98832e-06 9.98822e-06 9.98813e-06 9.98803e-06 9.98793e-06 9.98783e-06 9.98773e-06 9.98763e-06
+          9.98753e-06 9.98743e-06 9.98733e-06 9.98723e-06 9.98713e-06 9.98703e-06 9.98693e-06 9.98683e-06 9.98673e-06 9.98663e-06 9.98653e-06 9.98643e-06
+          9.98633e-06 9.98623e-06 9.98613e-06 9.98603e-06 9.98593e-06 9.98583e-06 9.98573e-06 9.98563e-06 9.98553e-06 9.98543e-06 9.98533e-06 9.98523e-06
+          9.98513e-06 9.98503e-06 9.98493e-06 9.98483e-06 9.98473e-06 9.98463e-06 9.98454e-06 9.98444e-06 9.98434e-06 9.98424e-06 9.98414e-06 9.98404e-06
+          9.98394e-06 9.98384e-06 9.98374e-06 9.98364e-06 9.98354e-06 9.98344e-06 9.98334e-06 9.98324e-06 9.98314e-06 9.98304e-06 9.98294e-06 9.98284e-06
+          9.98274e-06 9.98264e-06 9.98254e-06 9.98244e-06 9.98234e-06 9.98224e-06 9.98214e-06 9.98204e-06 9.98194e-06 9.98184e-06 9.98174e-06 9.98164e-06
+          9.98154e-06 9.98144e-06 9.98134e-06 9.98124e-06 9.98114e-06 9.98104e-06 9.98094e-06 9.98084e-06 9.98075e-06 9.98065e-06 9.98055e-06 9.98045e-06
+          9.98035e-06 9.98025e-06 9.98015e-06 9.98005e-06 9.97995e-06 9.97985e-06 9.97975e-06 9.97965e-06 9.97955e-06 9.97945e-06 9.97935e-06 9.97925e-06
+          9.97915e-06 9.97905e-06 9.97895e-06 9.97885e-06 9.97875e-06 9.97865e-06 9.97855e-06 9.97846e-06 9.97836e-06 9.97826e-06 9.97816e-06 9.97806e-06
+          9.97796e-06 9.97786e-06 9.97776e-06 9.97766e-06 9.97756e-06 9.97746e-06 9.97736e-06 9.97726e-06 9.97716e-06 9.97706e-06 9.97696e-06 9.97686e-06
+          9.97676e-06 9.97666e-06 9.97656e-06 9.97646e-06 9.97637e-06 9.97627e-06 9.97617e-06 9.97607e-06 9.97597e-06 9.97587e-06 9.97577e-06 9.97567e-06
+          9.97557e-06 9.97547e-06 9.97537e-06 9.97527e-06 9.97517e-06 9.97507e-06 9.97497e-06 9.97487e-06 9.97477e-06 9.97467e-06 9.97457e-06 9.97447e-06
+          9.97438e-06 9.97428e-06 9.97418e-06 9.97408e-06 9.97398e-06 9.97388e-06 9.97378e-06 9.97368e-06 9.97358e-06 9.97348e-06 9.97338e-06 9.97328e-06
+          9.97318e-06 9.97308e-06 9.97298e-06 9.97288e-06 9.97278e-06 9.97268e-06 9.97259e-06 9.97249e-06 9.97239e-06 9.97229e-06 9.97219e-06 9.97209e-06
+          9.97199e-06 9.97189e-06 9.97179e-06 9.97169e-06 9.97159e-06 9.97149e-06 9.97139e-06 9.97129e-06 9.97119e-06 9.97109e-06 9.971e-06 9.9709e-06
+          9.9708e-06 9.9707e-06 9.9706e-06 9.9705e-06 9.9704e-06 9.9703e-06 9.9702e-06 9.9701e-06
+        </DataArray>
+        <DataArray type="Float32" Name="X^H2O_liq" NumberOfComponents="1" format="ascii">
+          0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984
+          0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984
+          0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984
+          0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999984 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+          0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985 0.999985
+        </DataArray>
+        <DataArray type="Float32" Name="X^N2_liq" NumberOfComponents="1" format="ascii">
+          1.55341e-05 1.55339e-05 1.55338e-05 1.55336e-05 1.55335e-05 1.55333e-05 1.55332e-05 1.5533e-05 1.55329e-05 1.55327e-05 1.55326e-05 1.55324e-05
+          1.55323e-05 1.55321e-05 1.5532e-05 1.55318e-05 1.55316e-05 1.55315e-05 1.55313e-05 1.55312e-05 1.5531e-05 1.55309e-05 1.55307e-05 1.55306e-05
+          1.55304e-05 1.55303e-05 1.55301e-05 1.55299e-05 1.55298e-05 1.55296e-05 1.55295e-05 1.55293e-05 1.55292e-05 1.5529e-05 1.55289e-05 1.55287e-05
+          1.55285e-05 1.55284e-05 1.55282e-05 1.55281e-05 1.55279e-05 1.55278e-05 1.55276e-05 1.55275e-05 1.55273e-05 1.55272e-05 1.5527e-05 1.55268e-05
+          1.55267e-05 1.55265e-05 1.55264e-05 1.55262e-05 1.55261e-05 1.55259e-05 1.55258e-05 1.55256e-05 1.55254e-05 1.55253e-05 1.55251e-05 1.5525e-05
+          1.55248e-05 1.55247e-05 1.55245e-05 1.55244e-05 1.55242e-05 1.5524e-05 1.55239e-05 1.55237e-05 1.55236e-05 1.55234e-05 1.55233e-05 1.55231e-05
+          1.5523e-05 1.55228e-05 1.55226e-05 1.55225e-05 1.55223e-05 1.55222e-05 1.5522e-05 1.55219e-05 1.55217e-05 1.55216e-05 1.55214e-05 1.55213e-05
+          1.55211e-05 1.55209e-05 1.55208e-05 1.55206e-05 1.55205e-05 1.55203e-05 1.55202e-05 1.552e-05 1.55199e-05 1.55197e-05 1.55196e-05 1.55194e-05
+          1.55192e-05 1.55191e-05 1.55189e-05 1.55188e-05 1.55186e-05 1.55185e-05 1.55183e-05 1.55182e-05 1.5518e-05 1.55178e-05 1.55177e-05 1.55175e-05
+          1.55174e-05 1.55172e-05 1.55171e-05 1.55169e-05 1.55168e-05 1.55166e-05 1.55165e-05 1.55163e-05 1.55161e-05 1.5516e-05 1.55158e-05 1.55157e-05
+          1.55155e-05 1.55154e-05 1.55152e-05 1.55151e-05 1.55149e-05 1.55147e-05 1.55146e-05 1.55144e-05 1.55143e-05 1.55141e-05 1.5514e-05 1.55138e-05
+          1.55137e-05 1.55135e-05 1.55134e-05 1.55132e-05 1.5513e-05 1.55129e-05 1.55127e-05 1.55126e-05 1.55124e-05 1.55123e-05 1.55121e-05 1.5512e-05
+          1.55118e-05 1.55117e-05 1.55115e-05 1.55113e-05 1.55112e-05 1.5511e-05 1.55109e-05 1.55107e-05 1.55106e-05 1.55104e-05 1.55103e-05 1.55101e-05
+          1.551e-05 1.55098e-05 1.55096e-05 1.55095e-05 1.55093e-05 1.55092e-05 1.5509e-05 1.55089e-05 1.55087e-05 1.55086e-05 1.55084e-05 1.55083e-05
+          1.55081e-05 1.55079e-05 1.55078e-05 1.55076e-05 1.55075e-05 1.55073e-05 1.55072e-05 1.5507e-05 1.55069e-05 1.55067e-05 1.55066e-05 1.55064e-05
+          1.55062e-05 1.55061e-05 1.55059e-05 1.55058e-05 1.55056e-05 1.55055e-05 1.55053e-05 1.55052e-05 1.5505e-05 1.55049e-05 1.55047e-05 1.55045e-05
+          1.55044e-05 1.55042e-05 1.55041e-05 1.55039e-05 1.55038e-05 1.55036e-05 1.55035e-05 1.55033e-05
+        </DataArray>
+        <DataArray type="Float32" Name="T_liq" NumberOfComponents="1" format="ascii">
+          287.763 288.71 288.977 289.147 289.305 289.464 289.627 289.794 289.965 290.139 290.317 290.499
+          290.685 290.873 291.066 291.262 291.461 291.664 291.87 292.079 292.29 292.505 292.722 292.942
+          293.164 293.389 293.615 293.844 294.074 294.306 294.54 294.775 295.01 295.247 295.484 295.722
+          295.96 296.198 296.436 296.674 296.91 297.146 297.381 297.615 297.847 298.078 298.306 298.533
+          298.757 298.978 299.197 299.413 299.626 299.835 300.042 300.244 300.443 300.637 300.828 301.014
+          301.196 301.374 301.547 301.715 301.879 302.038 302.192 302.342 302.486 302.625 302.76 302.89
+          303.014 303.134 303.249 303.359 303.464 303.565 303.66 303.752 303.838 303.921 303.999 304.073
+          304.143 304.208 304.27 304.329 304.383 304.435 304.482 304.527 304.569 304.607 304.643 304.677
+          304.707 304.736 304.762 304.786 304.808 304.828 304.847 304.864 304.879 304.893 304.905 304.916
+          304.927 304.936 304.944 304.951 304.958 304.964 304.969 304.973 304.977 304.981 304.984 304.987
+          304.989 304.991 304.993 304.994 304.996 304.997 304.998 304.998 304.999 305 305 305
+          305.001 305.001 305.001 305.001 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002
+          305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305
+          305 305 305 305 305 305 305 305 305 305 305 305
+          305 305 305 305 305 305 305 305
+        </DataArray>
+        <DataArray type="Float32" Name="T_s" NumberOfComponents="1" format="ascii">
+          287.761 288.709 288.977 289.146 289.304 289.464 289.627 289.794 289.965 290.139 290.317 290.499
+          290.684 290.873 291.066 291.262 291.461 291.664 291.87 292.078 292.29 292.505 292.722 292.942
+          293.164 293.389 293.615 293.844 294.074 294.306 294.54 294.774 295.01 295.247 295.484 295.722
+          295.96 296.198 296.436 296.673 296.91 297.146 297.381 297.615 297.847 298.077 298.306 298.532
+          298.757 298.978 299.197 299.413 299.626 299.835 300.041 300.244 300.442 300.637 300.828 301.014
+          301.196 301.374 301.547 301.715 301.879 302.038 302.192 302.342 302.486 302.625 302.76 302.889
+          303.014 303.134 303.249 303.359 303.464 303.564 303.66 303.752 303.838 303.921 303.999 304.073
+          304.142 304.208 304.27 304.329 304.383 304.434 304.482 304.527 304.569 304.607 304.643 304.677
+          304.707 304.736 304.762 304.786 304.808 304.828 304.847 304.863 304.879 304.893 304.905 304.916
+          304.927 304.936 304.944 304.951 304.958 304.964 304.969 304.973 304.977 304.981 304.984 304.987
+          304.989 304.991 304.993 304.994 304.996 304.997 304.998 304.998 304.999 305 305 305
+          305.001 305.001 305.001 305.001 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002
+          305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.002 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001
+          305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305.001 305
+          305 305 305 305 305 305 305 305 305 305 305 305
+          305 305 305 305 305 305 305 305
+        </DataArray>
+        <DataArray type="Float32" Name="reynoldsNumber_liq" NumberOfComponents="1" format="ascii">
+          0.0433537 0.0444115 0.0447198 0.0449172 0.0451029 0.045292 0.0454869 0.0456881 0.0458956 0.0461097 0.0463304 0.0465578
+          0.0467921 0.0470254 0.04724 0.0474604 0.0476867 0.0479188 0.0481569 0.048401 0.048651 0.048907 0.049169 0.049437
+          0.0497109 0.0499908 0.0502765 0.050568 0.0508652 0.0511682 0.0514463 0.0517193 0.0519963 0.0522774 0.0525622 0.0528507
+          0.0531427 0.053438 0.0537364 0.0540376 0.0543414 0.0546476 0.0549559 0.055266 0.0555777 0.0558604 0.0561351 0.0564098
+          0.0566844 0.0569584 0.0572317 0.0575039 0.0577747 0.0580438 0.058311 0.0585759 0.0588382 0.0590975 0.0593537 0.0596064
+          0.0598553 0.0601003 0.0603221 0.0605301 0.0607335 0.0609324 0.0611264 0.0613155 0.0614994 0.0616782 0.0618516 0.0620195
+          0.062182 0.0623388 0.06249 0.0626356 0.0627754 0.0629096 0.063038 0.0631609 0.0632781 0.0633898 0.063496 0.0635968
+          0.0636924 0.0637828 0.0638682 0.0639486 0.0640243 0.0640954 0.0641619 0.0642242 0.0642824 0.0643365 0.0643869 0.0644336
+          0.0644768 0.0645168 0.0645536 0.0645875 0.0646186 0.0646471 0.0646731 0.0646969 0.0647185 0.0647381 0.0647558 0.0647718
+          0.0647863 0.0647992 0.0648109 0.0648213 0.0648305 0.0648388 0.064846 0.0648517 0.0648568 0.0648612 0.0648651 0.0648685
+          0.0648714 0.064874 0.0648762 0.0648781 0.0648797 0.0648811 0.0648823 0.0648833 0.0648842 0.0648849 0.0648855 0.064886
+          0.0648864 0.0648867 0.0648869 0.0648871 0.0648873 0.0648874 0.0648875 0.0648876 0.0648876 0.0648876 0.0648877 0.0648877
+          0.0648876 0.0648876 0.0648876 0.0648875 0.0648875 0.0648875 0.0648874 0.0648874 0.0648873 0.0648873 0.0648872 0.0648872
+          0.0648871 0.0648871 0.064887 0.064887 0.0648869 0.0648869 0.0648868 0.0648868 0.0648867 0.0648867 0.0648866 0.0648866
+          0.0648865 0.0648865 0.0648864 0.0648863 0.0648863 0.0648862 0.0648862 0.0648861 0.0648861 0.064886 0.064886 0.0648859
+          0.0648859 0.0648858 0.0648858 0.0648857 0.0648857 0.0648856 0.0648855 0.0648855 0.0648854 0.0648854 0.0648853 0.0648853
+          0.0648852 0.0648852 0.0648851 0.0648851 0.064885 0.064885 0.0648849 0.0648849
+        </DataArray>
+        <DataArray type="Float32" Name="nusseltNumber_liq" NumberOfComponents="1" format="ascii">
+          2.33695 2.33877 2.3393 2.33964 2.33995 2.34027 2.3406 2.34094 2.34129 2.34165 2.34202 2.3424
+          2.34279 2.34318 2.34353 2.34388 2.34425 2.34463 2.34501 2.3454 2.3458 2.34621 2.34663 2.34705
+          2.34748 2.34792 2.34837 2.34883 2.34929 2.34976 2.35019 2.35061 2.35103 2.35145 2.35188 2.35231
+          2.35275 2.35319 2.35363 2.35408 2.35453 2.35498 2.35543 2.35589 2.35634 2.35675 2.35714 2.35753
+          2.35792 2.35831 2.3587 2.35908 2.35946 2.35984 2.36021 2.36058 2.36094 2.3613 2.36166 2.36201
+          2.36235 2.36268 2.36299 2.36327 2.36354 2.36381 2.36407 2.36432 2.36456 2.3648 2.36503 2.36526
+          2.36547 2.36568 2.36588 2.36607 2.36626 2.36643 2.3666 2.36676 2.36692 2.36706 2.3672 2.36733
+          2.36746 2.36758 2.36769 2.36779 2.36789 2.36798 2.36807 2.36815 2.36823 2.3683 2.36836 2.36842
+          2.36848 2.36853 2.36858 2.36862 2.36866 2.3687 2.36873 2.36876 2.36879 2.36882 2.36884 2.36886
+          2.36888 2.3689 2.36891 2.36892 2.36894 2.36895 2.36896 2.36896 2.36897 2.36898 2.36898 2.36898
+          2.36899 2.36899 2.36899 2.369 2.369 2.369 2.369 2.369 2.369 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901
+          2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.36901 2.369 2.369
+          2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369
+          2.369 2.369 2.369 2.369 2.369 2.369 2.369 2.369
+        </DataArray>
+        <DataArray type="Float32" Name="prandtlNumber_liq" NumberOfComponents="1" format="ascii">
+          8.16314 7.94433 7.88273 7.84377 7.80746 7.77083 7.73344 7.69522 7.65618 7.61633 7.57568 7.53423
+          7.49201 7.45037 7.41216 7.37332 7.33385 7.2938 7.25316 7.21197 7.17025 7.12803 7.08533 7.04218
+          6.99861 6.95466 6.91035 6.86572 6.82081 6.77564 6.73441 6.69433 6.65413 6.61382 6.57346 6.53308
+          6.49271 6.45238 6.41215 6.37203 6.33207 6.2923 6.25276 6.21349 6.17452 6.13936 6.1055 6.072
+          6.03888 6.00617 5.97391 5.94211 5.9108 5.88002 5.84977 5.82009 5.791 5.76251 5.73465 5.70743
+          5.68087 5.65498 5.63161 5.60981 5.58863 5.56809 5.54819 5.52893 5.51032 5.49236 5.47504 5.45837
+          5.44234 5.42696 5.41221 5.39809 5.38459 5.3717 5.35942 5.34773 5.33661 5.32607 5.31608 5.30663
+          5.29771 5.28929 5.28137 5.27393 5.26695 5.26041 5.25429 5.24859 5.24327 5.23833 5.23375 5.2295
+          5.22557 5.22195 5.21862 5.21555 5.21274 5.21017 5.20782 5.20568 5.20374 5.20197 5.20038 5.19894
+          5.19764 5.19648 5.19543 5.1945 5.19367 5.19293 5.19228 5.19176 5.1913 5.1909 5.19055 5.19024
+          5.18997 5.18974 5.18954 5.18937 5.18922 5.18909 5.18898 5.18889 5.18881 5.18874 5.18869 5.18864
+          5.18861 5.18858 5.18855 5.18853 5.18851 5.1885 5.18849 5.18848 5.18848 5.18848 5.18847 5.18847
+          5.18847 5.18847 5.18847 5.18847 5.18848 5.18848 5.18848 5.18848 5.18849 5.18849 5.18849 5.18849
+          5.1885 5.1885 5.1885 5.18851 5.18851 5.18851 5.18852 5.18852 5.18852 5.18852 5.18853 5.18853
+          5.18853 5.18854 5.18854 5.18854 5.18855 5.18855 5.18855 5.18856 5.18856 5.18856 5.18856 5.18857
+          5.18857 5.18857 5.18858 5.18858 5.18858 5.18859 5.18859 5.18859 5.1886 5.1886 5.1886 5.18861
+          5.18861 5.18861 5.18861 5.18862 5.18862 5.18862 5.18863 5.18863
+        </DataArray>
+        <DataArray type="Float32" Name="velocity_liq (m/s)" NumberOfComponents="3" format="ascii">
+          -9.98183e-05 0 0 -9.9827e-05 0 0 -9.98291e-05 0 0 -9.98303e-05 0 0
+          -9.98314e-05 0 0 -9.98325e-05 0 0 -9.98337e-05 0 0 -9.98348e-05 0 0
+          -9.9836e-05 0 0 -9.98372e-05 0 0 -9.98385e-05 0 0 -9.98397e-05 0 0
+          -9.98411e-05 0 0 -9.98429e-05 0 0 -9.98449e-05 0 0 -9.98469e-05 0 0
+          -9.98489e-05 0 0 -9.98508e-05 0 0 -9.98527e-05 0 0 -9.98545e-05 0 0
+          -9.98564e-05 0 0 -9.98582e-05 0 0 -9.98601e-05 0 0 -9.9862e-05 0 0
+          -9.98639e-05 0 0 -9.98659e-05 0 0 -9.98678e-05 0 0 -9.98698e-05 0 0
+          -9.98718e-05 0 0 -9.98741e-05 0 0 -9.98769e-05 0 0 -9.98796e-05 0 0
+          -9.98823e-05 0 0 -9.9885e-05 0 0 -9.98875e-05 0 0 -9.989e-05 0 0
+          -9.98924e-05 0 0 -9.98949e-05 0 0 -9.98973e-05 0 0 -9.98997e-05 0 0
+          -9.99021e-05 0 0 -9.99046e-05 0 0 -9.9907e-05 0 0 -9.99093e-05 0 0
+          -9.9912e-05 0 0 -9.9915e-05 0 0 -9.9918e-05 0 0 -9.99209e-05 0 0
+          -9.99237e-05 0 0 -9.99264e-05 0 0 -9.9929e-05 0 0 -9.99315e-05 0 0
+          -9.9934e-05 0 0 -9.99364e-05 0 0 -9.99388e-05 0 0 -9.99412e-05 0 0
+          -9.99435e-05 0 0 -9.99458e-05 0 0 -9.9948e-05 0 0 -9.99502e-05 0 0
+          -9.99523e-05 0 0 -9.99545e-05 0 0 -9.9957e-05 0 0 -9.99594e-05 0 0
+          -9.99617e-05 0 0 -9.99639e-05 0 0 -9.99659e-05 0 0 -9.99679e-05 0 0
+          -9.99698e-05 0 0 -9.99716e-05 0 0 -9.99733e-05 0 0 -9.9975e-05 0 0
+          -9.99766e-05 0 0 -9.99782e-05 0 0 -9.99797e-05 0 0 -9.99811e-05 0 0
+          -9.99824e-05 0 0 -9.99837e-05 0 0 -9.9985e-05 0 0 -9.99861e-05 0 0
+          -9.99873e-05 0 0 -9.99883e-05 0 0 -9.99893e-05 0 0 -9.99903e-05 0 0
+          -9.99912e-05 0 0 -9.9992e-05 0 0 -9.99928e-05 0 0 -9.99936e-05 0 0
+          -9.99942e-05 0 0 -9.99949e-05 0 0 -9.99955e-05 0 0 -9.99961e-05 0 0
+          -9.99966e-05 0 0 -9.99971e-05 0 0 -9.99976e-05 0 0 -9.9998e-05 0 0
+          -9.99984e-05 0 0 -9.99987e-05 0 0 -9.9999e-05 0 0 -9.99993e-05 0 0
+          -9.99996e-05 0 0 -9.99999e-05 0 0 -0.0001 0 0 -0.0001 0 0
+          -0.0001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0 -0.000100002 0 0
+          -0.000100002 0 0 -0.000100002 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+          -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0 -0.000100001 0 0
+        </DataArray>
+        <DataArray type="Float32" Name="process rank" NumberOfComponents="1" format="ascii">
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0
+        </DataArray>
+      </CellData>
+      <Points>
+        <DataArray type="Float32" Name="Coordinates" NumberOfComponents="3" format="ascii">
+          0 0 0 0.025 0 0 0 1 0 0.025 1 0
+          0.05 0 0 0.05 1 0 0.075 0 0 0.075 1 0
+          0.1 0 0 0.1 1 0 0.125 0 0 0.125 1 0
+          0.15 0 0 0.15 1 0 0.175 0 0 0.175 1 0
+          0.2 0 0 0.2 1 0 0.225 0 0 0.225 1 0
+          0.25 0 0 0.25 1 0 0.275 0 0 0.275 1 0
+          0.3 0 0 0.3 1 0 0.325 0 0 0.325 1 0
+          0.35 0 0 0.35 1 0 0.375 0 0 0.375 1 0
+          0.4 0 0 0.4 1 0 0.425 0 0 0.425 1 0
+          0.45 0 0 0.45 1 0 0.475 0 0 0.475 1 0
+          0.5 0 0 0.5 1 0 0.525 0 0 0.525 1 0
+          0.55 0 0 0.55 1 0 0.575 0 0 0.575 1 0
+          0.6 0 0 0.6 1 0 0.625 0 0 0.625 1 0
+          0.65 0 0 0.65 1 0 0.675 0 0 0.675 1 0
+          0.7 0 0 0.7 1 0 0.725 0 0 0.725 1 0
+          0.75 0 0 0.75 1 0 0.775 0 0 0.775 1 0
+          0.8 0 0 0.8 1 0 0.825 0 0 0.825 1 0
+          0.85 0 0 0.85 1 0 0.875 0 0 0.875 1 0
+          0.9 0 0 0.9 1 0 0.925 0 0 0.925 1 0
+          0.95 0 0 0.95 1 0 0.975 0 0 0.975 1 0
+          1 0 0 1 1 0 1.025 0 0 1.025 1 0
+          1.05 0 0 1.05 1 0 1.075 0 0 1.075 1 0
+          1.1 0 0 1.1 1 0 1.125 0 0 1.125 1 0
+          1.15 0 0 1.15 1 0 1.175 0 0 1.175 1 0
+          1.2 0 0 1.2 1 0 1.225 0 0 1.225 1 0
+          1.25 0 0 1.25 1 0 1.275 0 0 1.275 1 0
+          1.3 0 0 1.3 1 0 1.325 0 0 1.325 1 0
+          1.35 0 0 1.35 1 0 1.375 0 0 1.375 1 0
+          1.4 0 0 1.4 1 0 1.425 0 0 1.425 1 0
+          1.45 0 0 1.45 1 0 1.475 0 0 1.475 1 0
+          1.5 0 0 1.5 1 0 1.525 0 0 1.525 1 0
+          1.55 0 0 1.55 1 0 1.575 0 0 1.575 1 0
+          1.6 0 0 1.6 1 0 1.625 0 0 1.625 1 0
+          1.65 0 0 1.65 1 0 1.675 0 0 1.675 1 0
+          1.7 0 0 1.7 1 0 1.725 0 0 1.725 1 0
+          1.75 0 0 1.75 1 0 1.775 0 0 1.775 1 0
+          1.8 0 0 1.8 1 0 1.825 0 0 1.825 1 0
+          1.85 0 0 1.85 1 0 1.875 0 0 1.875 1 0
+          1.9 0 0 1.9 1 0 1.925 0 0 1.925 1 0
+          1.95 0 0 1.95 1 0 1.975 0 0 1.975 1 0
+          2 0 0 2 1 0 2.025 0 0 2.025 1 0
+          2.05 0 0 2.05 1 0 2.075 0 0 2.075 1 0
+          2.1 0 0 2.1 1 0 2.125 0 0 2.125 1 0
+          2.15 0 0 2.15 1 0 2.175 0 0 2.175 1 0
+          2.2 0 0 2.2 1 0 2.225 0 0 2.225 1 0
+          2.25 0 0 2.25 1 0 2.275 0 0 2.275 1 0
+          2.3 0 0 2.3 1 0 2.325 0 0 2.325 1 0
+          2.35 0 0 2.35 1 0 2.375 0 0 2.375 1 0
+          2.4 0 0 2.4 1 0 2.425 0 0 2.425 1 0
+          2.45 0 0 2.45 1 0 2.475 0 0 2.475 1 0
+          2.5 0 0 2.5 1 0 2.525 0 0 2.525 1 0
+          2.55 0 0 2.55 1 0 2.575 0 0 2.575 1 0
+          2.6 0 0 2.6 1 0 2.625 0 0 2.625 1 0
+          2.65 0 0 2.65 1 0 2.675 0 0 2.675 1 0
+          2.7 0 0 2.7 1 0 2.725 0 0 2.725 1 0
+          2.75 0 0 2.75 1 0 2.775 0 0 2.775 1 0
+          2.8 0 0 2.8 1 0 2.825 0 0 2.825 1 0
+          2.85 0 0 2.85 1 0 2.875 0 0 2.875 1 0
+          2.9 0 0 2.9 1 0 2.925 0 0 2.925 1 0
+          2.95 0 0 2.95 1 0 2.975 0 0 2.975 1 0
+          3 0 0 3 1 0 3.025 0 0 3.025 1 0
+          3.05 0 0 3.05 1 0 3.075 0 0 3.075 1 0
+          3.1 0 0 3.1 1 0 3.125 0 0 3.125 1 0
+          3.15 0 0 3.15 1 0 3.175 0 0 3.175 1 0
+          3.2 0 0 3.2 1 0 3.225 0 0 3.225 1 0
+          3.25 0 0 3.25 1 0 3.275 0 0 3.275 1 0
+          3.3 0 0 3.3 1 0 3.325 0 0 3.325 1 0
+          3.35 0 0 3.35 1 0 3.375 0 0 3.375 1 0
+          3.4 0 0 3.4 1 0 3.425 0 0 3.425 1 0
+          3.45 0 0 3.45 1 0 3.475 0 0 3.475 1 0
+          3.5 0 0 3.5 1 0 3.525 0 0 3.525 1 0
+          3.55 0 0 3.55 1 0 3.575 0 0 3.575 1 0
+          3.6 0 0 3.6 1 0 3.625 0 0 3.625 1 0
+          3.65 0 0 3.65 1 0 3.675 0 0 3.675 1 0
+          3.7 0 0 3.7 1 0 3.725 0 0 3.725 1 0
+          3.75 0 0 3.75 1 0 3.775 0 0 3.775 1 0
+          3.8 0 0 3.8 1 0 3.825 0 0 3.825 1 0
+          3.85 0 0 3.85 1 0 3.875 0 0 3.875 1 0
+          3.9 0 0 3.9 1 0 3.925 0 0 3.925 1 0
+          3.95 0 0 3.95 1 0 3.975 0 0 3.975 1 0
+          4 0 0 4 1 0 4.025 0 0 4.025 1 0
+          4.05 0 0 4.05 1 0 4.075 0 0 4.075 1 0
+          4.1 0 0 4.1 1 0 4.125 0 0 4.125 1 0
+          4.15 0 0 4.15 1 0 4.175 0 0 4.175 1 0
+          4.2 0 0 4.2 1 0 4.225 0 0 4.225 1 0
+          4.25 0 0 4.25 1 0 4.275 0 0 4.275 1 0
+          4.3 0 0 4.3 1 0 4.325 0 0 4.325 1 0
+          4.35 0 0 4.35 1 0 4.375 0 0 4.375 1 0
+          4.4 0 0 4.4 1 0 4.425 0 0 4.425 1 0
+          4.45 0 0 4.45 1 0 4.475 0 0 4.475 1 0
+          4.5 0 0 4.5 1 0 4.525 0 0 4.525 1 0
+          4.55 0 0 4.55 1 0 4.575 0 0 4.575 1 0
+          4.6 0 0 4.6 1 0 4.625 0 0 4.625 1 0
+          4.65 0 0 4.65 1 0 4.675 0 0 4.675 1 0
+          4.7 0 0 4.7 1 0 4.725 0 0 4.725 1 0
+          4.75 0 0 4.75 1 0 4.775 0 0 4.775 1 0
+          4.8 0 0 4.8 1 0 4.825 0 0 4.825 1 0
+          4.85 0 0 4.85 1 0 4.875 0 0 4.875 1 0
+          4.9 0 0 4.9 1 0 4.925 0 0 4.925 1 0
+          4.95 0 0 4.95 1 0 4.975 0 0 4.975 1 0
+          5 0 0 5 1 0
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii">
+          0 1 3 2 1 4 5 3 4 6 7 5
+          6 8 9 7 8 10 11 9 10 12 13 11
+          12 14 15 13 14 16 17 15 16 18 19 17
+          18 20 21 19 20 22 23 21 22 24 25 23
+          24 26 27 25 26 28 29 27 28 30 31 29
+          30 32 33 31 32 34 35 33 34 36 37 35
+          36 38 39 37 38 40 41 39 40 42 43 41
+          42 44 45 43 44 46 47 45 46 48 49 47
+          48 50 51 49 50 52 53 51 52 54 55 53
+          54 56 57 55 56 58 59 57 58 60 61 59
+          60 62 63 61 62 64 65 63 64 66 67 65
+          66 68 69 67 68 70 71 69 70 72 73 71
+          72 74 75 73 74 76 77 75 76 78 79 77
+          78 80 81 79 80 82 83 81 82 84 85 83
+          84 86 87 85 86 88 89 87 88 90 91 89
+          90 92 93 91 92 94 95 93 94 96 97 95
+          96 98 99 97 98 100 101 99 100 102 103 101
+          102 104 105 103 104 106 107 105 106 108 109 107
+          108 110 111 109 110 112 113 111 112 114 115 113
+          114 116 117 115 116 118 119 117 118 120 121 119
+          120 122 123 121 122 124 125 123 124 126 127 125
+          126 128 129 127 128 130 131 129 130 132 133 131
+          132 134 135 133 134 136 137 135 136 138 139 137
+          138 140 141 139 140 142 143 141 142 144 145 143
+          144 146 147 145 146 148 149 147 148 150 151 149
+          150 152 153 151 152 154 155 153 154 156 157 155
+          156 158 159 157 158 160 161 159 160 162 163 161
+          162 164 165 163 164 166 167 165 166 168 169 167
+          168 170 171 169 170 172 173 171 172 174 175 173
+          174 176 177 175 176 178 179 177 178 180 181 179
+          180 182 183 181 182 184 185 183 184 186 187 185
+          186 188 189 187 188 190 191 189 190 192 193 191
+          192 194 195 193 194 196 197 195 196 198 199 197
+          198 200 201 199 200 202 203 201 202 204 205 203
+          204 206 207 205 206 208 209 207 208 210 211 209
+          210 212 213 211 212 214 215 213 214 216 217 215
+          216 218 219 217 218 220 221 219 220 222 223 221
+          222 224 225 223 224 226 227 225 226 228 229 227
+          228 230 231 229 230 232 233 231 232 234 235 233
+          234 236 237 235 236 238 239 237 238 240 241 239
+          240 242 243 241 242 244 245 243 244 246 247 245
+          246 248 249 247 248 250 251 249 250 252 253 251
+          252 254 255 253 254 256 257 255 256 258 259 257
+          258 260 261 259 260 262 263 261 262 264 265 263
+          264 266 267 265 266 268 269 267 268 270 271 269
+          270 272 273 271 272 274 275 273 274 276 277 275
+          276 278 279 277 278 280 281 279 280 282 283 281
+          282 284 285 283 284 286 287 285 286 288 289 287
+          288 290 291 289 290 292 293 291 292 294 295 293
+          294 296 297 295 296 298 299 297 298 300 301 299
+          300 302 303 301 302 304 305 303 304 306 307 305
+          306 308 309 307 308 310 311 309 310 312 313 311
+          312 314 315 313 314 316 317 315 316 318 319 317
+          318 320 321 319 320 322 323 321 322 324 325 323
+          324 326 327 325 326 328 329 327 328 330 331 329
+          330 332 333 331 332 334 335 333 334 336 337 335
+          336 338 339 337 338 340 341 339 340 342 343 341
+          342 344 345 343 344 346 347 345 346 348 349 347
+          348 350 351 349 350 352 353 351 352 354 355 353
+          354 356 357 355 356 358 359 357 358 360 361 359
+          360 362 363 361 362 364 365 363 364 366 367 365
+          366 368 369 367 368 370 371 369 370 372 373 371
+          372 374 375 373 374 376 377 375 376 378 379 377
+          378 380 381 379 380 382 383 381 382 384 385 383
+          384 386 387 385 386 388 389 387 388 390 391 389
+          390 392 393 391 392 394 395 393 394 396 397 395
+          396 398 399 397 398 400 401 399
+        </DataArray>
+        <DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii">
+          4 8 12 16 20 24 28 32 36 40 44 48
+          52 56 60 64 68 72 76 80 84 88 92 96
+          100 104 108 112 116 120 124 128 132 136 140 144
+          148 152 156 160 164 168 172 176 180 184 188 192
+          196 200 204 208 212 216 220 224 228 232 236 240
+          244 248 252 256 260 264 268 272 276 280 284 288
+          292 296 300 304 308 312 316 320 324 328 332 336
+          340 344 348 352 356 360 364 368 372 376 380 384
+          388 392 396 400 404 408 412 416 420 424 428 432
+          436 440 444 448 452 456 460 464 468 472 476 480
+          484 488 492 496 500 504 508 512 516 520 524 528
+          532 536 540 544 548 552 556 560 564 568 572 576
+          580 584 588 592 596 600 604 608 612 616 620 624
+          628 632 636 640 644 648 652 656 660 664 668 672
+          676 680 684 688 692 696 700 704 708 712 716 720
+          724 728 732 736 740 744 748 752 756 760 764 768
+          772 776 780 784 788 792 796 800
+        </DataArray>
+        <DataArray type="UInt8" Name="types" NumberOfComponents="1" format="ascii">
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9 9 9 9 9
+          9 9 9 9 9 9 9 9
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>