diff --git a/dumux/common/properties.hh b/dumux/common/properties.hh
index ad0a554530d78ed8fb77aef6f1296b150701909d..19d1a093dbac30b2be49ee4926ecc0fe91be7084 100644
--- a/dumux/common/properties.hh
+++ b/dumux/common/properties.hh
@@ -181,6 +181,7 @@ NEW_PROP_TAG(OnlyGasPhaseCanDisappear); //!< reduces the phasestates to threePha
 /////////////////////////////////////////////////////////////
 // Properties used by the staggered-grid discretization method
 /////////////////////////////////////////////////////////////
+
 NEW_PROP_TAG(NumEqCellCenter);                     //!< The number of equations for cell-centered dofs
 NEW_PROP_TAG(NumEqFace);                           //!< The number of equations for face dofs
 NEW_PROP_TAG(CellCenterSolutionVector);            //!< The solution vector type for cell-centered dofs
@@ -196,6 +197,31 @@ NEW_PROP_TAG(BaseEpsilon);                         //!< A base epsilon for numer
 NEW_PROP_TAG(FaceVariables);                       //!< Class containing local face-related data
 NEW_PROP_TAG(BoundaryValues);                      //!< Class containing local boundary data
 
+/////////////////////////////////////////////////////////////
+// Properties used by the mpnc model
+/////////////////////////////////////////////////////////////
+
+NEW_PROP_TAG(PressureFormulation); //! the formulation of the pressure e.g most wetting first
+
+/////////////////////////////////////////////////////////////
+// Properties used by the nonequilibrium model
+/////////////////////////////////////////////////////////////
+
+NEW_PROP_TAG(EquilibriumLocalResidual);
+NEW_PROP_TAG(EquilibriumIndices);
+NEW_PROP_TAG(EquilibriumVtkOutputFields);
+NEW_PROP_TAG(NumEqBalance);
+NEW_PROP_TAG(EnableThermalNonEquilibrium);
+NEW_PROP_TAG(EnableChemicalNonEquilibrium);
+NEW_PROP_TAG(NumEnergyEqFluid);
+NEW_PROP_TAG(NumEnergyEqSolid);
+
+NEW_PROP_TAG(AwnSurface);
+NEW_PROP_TAG(AwsSurface);
+NEW_PROP_TAG(AnsSurface);
+NEW_PROP_TAG(NusseltFormulation);
+NEW_PROP_TAG(SherwoodFormulation);
+
 } // end namespace Properties
 } // end namespace Dumux
 
diff --git a/dumux/discretization/box/fourierslawnonequilibrium.hh b/dumux/discretization/box/fourierslawnonequilibrium.hh
new file mode 100644
index 0000000000000000000000000000000000000000..b32460e55504bffc9e11faf31cb8429cf8a55e1a
--- /dev/null
+++ b/dumux/discretization/box/fourierslawnonequilibrium.hh
@@ -0,0 +1,134 @@
+// -*- 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 This file contains the data which is required to calculate
+ *        energy fluxes due to molecular diffusion with Fourier's law.
+ */
+#ifndef DUMUX_DISCRETIZATION_BOX_FOURIERS_LAW_NONEQUILIBRIUM_HH
+#define DUMUX_DISCRETIZATION_BOX_FOURIERS_LAW_NONEQUILIBRIUM_HH
+
+#include <dune/common/float_cmp.hh>
+
+#include <dumux/common/math.hh>
+#include <dumux/common/properties.hh>
+
+#include <dumux/discretization/methods.hh>
+
+namespace Dumux
+{
+
+/*!
+ * \ingroup BoxFouriersLaw
+ * \brief Specialization of Fourier's Law for the box method for thermal nonequilibrium models.
+ */
+template <class TypeTag>
+class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethods::Box>
+{
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
+    using ElementFluxVariablesCache = typename GET_PROP_TYPE(TypeTag, ElementFluxVariablesCache);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using IndexType = typename GridView::IndexSet::IndexType;
+    using ThermalConductivityModel = typename GET_PROP_TYPE(TypeTag, ThermalConductivityModel);
+
+    using Element = typename GridView::template Codim<0>::Entity;
+
+    enum { dim = GridView::dimension} ;
+    enum { dimWorld = GridView::dimensionworld} ;
+    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases)} ;
+    enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) };
+    enum {sPhaseIdx = FluidSystem::sPhaseIdx};
+
+    using DimWorldMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>;
+    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
+
+public:
+    static Scalar flux(const Problem& problem,
+                       const Element& element,
+                       const FVElementGeometry& fvGeometry,
+                       const ElementVolumeVariables& elemVolVars,
+                       const SubControlVolumeFace& scvf,
+                       const int phaseIdx,
+                       const ElementFluxVariablesCache& elemFluxVarsCache)
+    {
+        // get inside and outside diffusion tensors and calculate the harmonic mean
+        const auto& insideScv = fvGeometry.scv(scvf.insideScvIdx());
+        const auto& outsideScv = fvGeometry.scv(scvf.outsideScvIdx());
+        const auto& insideVolVars = elemVolVars[insideScv];
+        const auto& outsideVolVars = elemVolVars[outsideScv];
+        Scalar insideLambda = 0.0;
+        Scalar outsideLambda = 0.0;
+       // 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
+                insideLambda += ThermalConductivityModel::effectiveThermalConductivity(insideVolVars, problem.spatialParams(), element, fvGeometry, insideScv);
+                outsideLambda += ThermalConductivityModel::effectiveThermalConductivity(outsideVolVars, problem.spatialParams(), element, fvGeometry, outsideScv);
+            }
+            else
+            {
+                insideLambda += insideVolVars.fluidThermalConductivity(phaseIdx)*insideVolVars.saturation(phaseIdx)*insideVolVars.porosity();
+                outsideLambda += outsideVolVars.fluidThermalConductivity(phaseIdx)*outsideVolVars.saturation(phaseIdx)*outsideVolVars.porosity();
+            }
+        }
+        //solid phase
+        else
+        {
+            insideLambda += insideVolVars.solidThermalConductivity()*(1-insideVolVars.porosity());
+            outsideLambda +=outsideVolVars.solidThermalConductivity()*(1-outsideVolVars.porosity());
+        }
+
+        // scale by extrusion factor
+        insideLambda *= insideVolVars.extrusionFactor();
+        outsideLambda *= outsideVolVars.extrusionFactor();
+
+        // the resulting averaged diffusion tensor
+        const auto lambda = problem.spatialParams().harmonicMean(insideLambda, outsideLambda, scvf.unitOuterNormal());
+
+        // evaluate gradTemp at integration point
+        const auto& fluxVarsCache = elemFluxVarsCache[scvf];
+
+        GlobalPosition gradTemp(0.0);
+        for (auto&& scv : scvs(fvGeometry))
+        {
+            // compute the temperature gradient with the shape functions
+            if (phaseIdx < numEnergyEqFluid)
+                gradTemp.axpy(elemVolVars[scv].temperature(phaseIdx), fluxVarsCache.gradN(scv.indexInElement()));
+            else
+               gradTemp.axpy(elemVolVars[scv].temperatureSolid(), fluxVarsCache.gradN(scv.indexInElement()));
+        }
+
+        // comute the heat conduction flux
+        return -1.0*vtmv(scvf.unitOuterNormal(), lambda, gradTemp)*scvf.area();
+    }
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/dumux/discretization/fourierslawnonequilibrium.hh b/dumux/discretization/fourierslawnonequilibrium.hh
new file mode 100644
index 0000000000000000000000000000000000000000..9c3d000ba855722da8fdec43f7e86256562ed96c
--- /dev/null
+++ b/dumux/discretization/fourierslawnonequilibrium.hh
@@ -0,0 +1,47 @@
+// -*- 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 This file contains the data which is required to calculate
+ *        diffusive mass fluxes due to molecular diffusion with Fourier's law.
+ */
+#ifndef DUMUX_DISCRETIZATION_FOURIERS_LAW_NONEQUILIBRIUM_HH
+#define DUMUX_DISCRETIZATION_FOURIERS_LAW_NONEQUILIBRIUM_HH
+
+#include <dumux/discretization/methods.hh>
+
+namespace Dumux
+{
+// forward declaration
+template <class TypeTag, DiscretizationMethods Method>
+class FouriersLawNonEquilibriumImplementation
+{};
+
+/*!
+ * \ingroup FouriersLaw
+ * \brief Evaluates the heat conduction flux according to Fouriers's law
+ */
+template <class TypeTag>
+using FouriersLawNonEquilibrium = FouriersLawNonEquilibriumImplementation<TypeTag, GET_PROP_VALUE(TypeTag, DiscretizationMethod)>;
+
+} // end namespace Dumux
+
+#include <dumux/discretization/box/fourierslawnonequilibrium.hh>
+
+#endif
diff --git a/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh b/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh
index 70893500fdce1ce723fee01cb4177a69cff0969e..87b0df4f099a6739ff8cf87a328f0ad1fd9503c5 100644
--- a/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh
+++ b/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh
@@ -25,23 +25,25 @@
 #define THERMALCONDUCTIVITY_SIMPLE_FLUID_LUMPING_HH
 
 #include <algorithm>
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
+#include <dumux/common/properties.hh>
 
 namespace Dumux
 {
+struct SimpleLumpingIndices
+{
+    static const int wPhaseIdx = 0;
+    static const int nPhaseIdx = 1;
+};
 
 /*!
  * \ingroup fluidmatrixinteractionslaws
  * \brief   Relation for the saturation-dependent effective thermal conductivity
  * \todo This shouldn't depend on TypeTag!!
  */
-template<class TypeTag>
+template<class TypeTag, class Scalar, class Indices = SimpleLumpingIndices>
 class ThermalConductivitySimpleFluidLumping
 {
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    enum { numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
-
+    enum { numEnergyEquationsFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid)};
 
 public:
     /*!
@@ -55,12 +57,12 @@ public:
      *
      * \return effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$
      */
-    template<class VolumeVariables, class SpatialParams, class Element, class FVGeometry>
+    template<class VolumeVariables, class SpatialParams, class Element, class FVGeometry, class SubControlVolume>
     static Scalar effectiveThermalConductivity(const VolumeVariables& volVars,
                                                const SpatialParams& spatialParams,
                                                const Element& element,
                                                const FVGeometry& fvGeometry,
-                                               int scvIdx)
+                                               SubControlVolume& scv)
     {
         Scalar sw = volVars.saturation(Indices::wPhaseIdx);
         Scalar lambdaW = volVars.fluidThermalConductivity(Indices::wPhaseIdx);
@@ -90,7 +92,7 @@ public:
                                                const Scalar porosity,
                                                const Scalar rhoSolid = 0.0 /*unused*/)
     {
-        assert(numEnergyEquations != 3) ;
+        assert(numEnergyEquationsFluid != 2) ;
 
         // Franz Lindner / Shi & Wang 2011
         using std::max;
@@ -100,7 +102,7 @@ public:
 
         Scalar keff ;
 
-        if (numEnergyEquations == 2){ // solid dealed with individually (extra balance equation)
+        if (numEnergyEquationsFluid == 1){ // solid dealed with individually (extra balance equation)
             keff = kfeff ;
         }
         else {
diff --git a/dumux/material/fluidstates/nonequilibrium.hh b/dumux/material/fluidstates/nonequilibrium.hh
index 330206ae02e4e430006e0b26063a09a7ceb70d38..ad564533acf32c777c7acab4b6c04604f59194de 100644
--- a/dumux/material/fluidstates/nonequilibrium.hh
+++ b/dumux/material/fluidstates/nonequilibrium.hh
@@ -23,8 +23,8 @@
  *        multi-phase, multi-component fluid system without using
  *        any assumptions.
  */
-#ifndef DUMUX_GENERIC_FLUID_STATE_HH
-#define DUMUX_GENERIC_FLUID_STATE_HH
+#ifndef DUMUX_NONEQUILIBRIUM_FLUID_STATE_HH
+#define DUMUX_NONEQUILIBRIUM_FLUID_STATE_HH
 
 #include <cmath>
 #include <algorithm>
@@ -35,6 +35,7 @@
 
 namespace Dumux
 {
+
 /*!
  * \ingroup FluidStates
  * \brief Represents all relevant thermodynamic quantities of a
@@ -45,8 +46,8 @@ template <class Scalar, class FluidSystem>
 class NonEquilibriumFluidState
 {
 public:
-    enum { numPhases = FluidSystem::numPhases };
-    enum { numComponents = FluidSystem::numComponents };
+    static constexpr int numPhases = FluidSystem::numPhases;
+    static constexpr int numComponents = FluidSystem::numComponents;
 
     NonEquilibriumFluidState()
     {
@@ -116,7 +117,14 @@ public:
      * @copydoc Dumux::CompositionalFluidState::fugacity()
      */
     Scalar fugacity(int phaseIdx, int compIdx) const
-    { return pressure_[phaseIdx]*fugacityCoefficient_[phaseIdx][compIdx]*moleFraction_[phaseIdx][compIdx]; }
+    {
+            return pressure_[phaseIdx]*fugacityCoefficient_[phaseIdx][compIdx]*moleFraction_[phaseIdx][compIdx];
+    }
+
+    Scalar fugacity(int compIdx) const
+    {
+           return fugacity(0, compIdx);
+    }
 
     /*!
      * @copydoc Dumux::CompositionalFluidState::molarVolume()
@@ -140,8 +148,16 @@ public:
     /*!
      * @copydoc Dumux::CompositionalFluidState::temperature()
      */
-    Scalar temperature(int phaseIdx) const
-    { return temperature_[phaseIdx]; }
+    Scalar temperature(const int phaseIdx) const
+    {  return temperature_[phaseIdx];  }
+
+    /*!
+     * \brief Get the equilibrium temperature \f$\mathrm{[K]}\f$ of the fluid phases.
+     */
+    Scalar temperature() const
+    {
+        return temperatureEquil_ ;
+    }
 
     /*!
      * @copydoc Dumux::CompositionalFluidState::pressure()
@@ -178,13 +194,17 @@ public:
      * \brief Set the temperature \f$\mathrm{[K]}\f$ of a fluid phase
      */
     void setTemperature(int phaseIdx, Scalar value)
-    { temperature_[phaseIdx] = value; }
+    {
+        temperature_[phaseIdx] = value;
+    }
 
     /*!
      * \brief Set the temperature \f$\mathrm{[K]}\f$ of all fluid phases.
      */
     void setTemperature(Scalar value)
-    {DUNE_THROW(Dune::NotImplemented, "This is a fluidstate for non-equilibrium, temperature in which phase?");}
+    {
+        temperatureEquil_ = value;
+    }
 
     /*!
      * \brief Set the fluid pressure of a phase \f$\mathrm{[Pa]}\f$
@@ -319,7 +339,8 @@ protected:
     Scalar density_[numPhases];
     Scalar enthalpy_[numPhases];
     Scalar viscosity_[numPhases];
-    Scalar temperature_[numPhases];
+    Scalar temperature_[numPhases]; //
+    Scalar temperatureEquil_;
 };
 
 } // end namespace Dumux
diff --git a/dumux/porousmediumflow/CMakeLists.txt b/dumux/porousmediumflow/CMakeLists.txt
index 72d29d38d12058273311cda4da365d4b0203e9b6..9c7ecde9cf7633eea4b6a419e4ae346039b46c4a 100644
--- a/dumux/porousmediumflow/CMakeLists.txt
+++ b/dumux/porousmediumflow/CMakeLists.txt
@@ -18,3 +18,4 @@ add_subdirectory("richards")
 add_subdirectory("richardsnc")
 add_subdirectory("sequential")
 add_subdirectory("tracer")
+add_subdirectory("nonequilibrium")
diff --git a/dumux/porousmediumflow/fluxvariables.hh b/dumux/porousmediumflow/fluxvariables.hh
index f928453830ceec24098845f4f550183399dbed39..2132d520c635b3c6d11f72119bdbc8c15c3f7f41 100644
--- a/dumux/porousmediumflow/fluxvariables.hh
+++ b/dumux/porousmediumflow/fluxvariables.hh
@@ -61,6 +61,7 @@ class PorousMediumFluxVariables : public FluxVariablesBase<TypeTag>
     static constexpr bool enableAdvection = GET_PROP_VALUE(TypeTag, EnableAdvection);
     static constexpr bool enableMolecularDiffusion = GET_PROP_VALUE(TypeTag, EnableMolecularDiffusion);
     static constexpr bool enableEnergyBalance = GET_PROP_VALUE(TypeTag, EnableEnergyBalance);
+    static constexpr bool enableThermalNonEquilibrium = GET_PROP_VALUE(TypeTag, EnableThermalNonEquilibrium);
 
 public:
 
@@ -115,6 +116,7 @@ public:
         }
     }
 
+    template <bool enable = !enableThermalNonEquilibrium, typename std::enable_if_t<enable, int> = 0>
     Scalar heatConductionFlux() const
     {
         if (enableEnergyBalance)
@@ -132,6 +134,19 @@ public:
         }
     }
 
+    template <bool enable = enableThermalNonEquilibrium, typename std::enable_if_t<enable, int> = 0>
+    Scalar heatConductionFlux(const int phaseIdx) const
+    {
+            return HeatConductionType::flux(this->problem(),
+                                            this->element(),
+                                            this->fvGeometry(),
+                                            this->elemVolVars(),
+                                            this->scvFace(),
+                                            phaseIdx,
+                                            this->elemFluxVarsCache());
+
+    }
+
 private:
     //! simple caching if advection flux is used twice with different upwind function
     mutable std::bitset<numPhases> advFluxIsCached_;
diff --git a/dumux/porousmediumflow/mpnc/CMakeLists.txt b/dumux/porousmediumflow/mpnc/CMakeLists.txt
index ba8341c614f1a2c797c95f5402f602025f1087b1..178f4c5f8d9e4911dded69490b6d1f6f053862c4 100644
--- a/dumux/porousmediumflow/mpnc/CMakeLists.txt
+++ b/dumux/porousmediumflow/mpnc/CMakeLists.txt
@@ -1 +1,8 @@
-add_subdirectory("implicit")
+#install headers
+install(FILES
+indices.hh
+localresidual.hh
+model.hh
+volumevariables.hh
+vtkoutputfield.hh
+DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/porousmediumflow/mpnc)
diff --git a/dumux/porousmediumflow/mpnc/implicit/CMakeLists.txt b/dumux/porousmediumflow/mpnc/implicit/CMakeLists.txt
deleted file mode 100644
index 6348e2566a21ab374fbdf41fc0e636123ff3d0e5..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-add_subdirectory("diffusion")
-add_subdirectory("energy")
-add_subdirectory("mass")
-
-#install headers
-install(FILES
-fluxvariables.hh
-indices.hh
-localresidual.hh
-model.hh
-modelkinetic.hh
-newtoncontroller.hh
-properties.hh
-propertieskinetic.hh
-propertydefaults.hh
-propertydefaultskinetic.hh
-volumevariables.hh
-volumevariablesia.hh
-volumevariablesiakinetic.hh
-vtkwritercommon.hh
-vtkwriter.hh
-vtkwritermodule.hh
-velomodelnewtoncontroller.hh
-DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/porousmediumflow/mpnc/implicit)
diff --git a/dumux/porousmediumflow/mpnc/implicit/diffusion/CMakeLists.txt b/dumux/porousmediumflow/mpnc/implicit/diffusion/CMakeLists.txt
deleted file mode 100644
index 59bc8bfab55aeb9bdc5c12881db77e66c619bba3..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/diffusion/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-
-#install headers
-install(FILES
-diffusion.hh
-fluxvariables.hh
-volumevariables.hh
-DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/porousmediumflow/mpnc/implicit/diffusion)
diff --git a/dumux/porousmediumflow/mpnc/implicit/diffusion/diffusion.hh b/dumux/porousmediumflow/mpnc/implicit/diffusion/diffusion.hh
deleted file mode 100644
index 7189c1db2bbf166a5c0689c1715ffe8f156450ae..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/diffusion/diffusion.hh
+++ /dev/null
@@ -1,200 +0,0 @@
-// -*- 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 This file contains parts to calculate the diffusive flux in
- *        the fully coupled MpNc model
- */
-#ifndef DUMUX_MPNC_DIFFUSION_HH
-#define DUMUX_MPNC_DIFFUSION_HH
-
-#include <dune/common/float_cmp.hh>
-#include <dune/common/fmatrix.hh>
-#include <dune/common/fvector.hh>
-
-
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-
-namespace Dumux {
-/*!
- * \brief Calculates the diffusive flux in the fully coupled MpNc model.
- *        Called from the mass module.
- */
-template <class TypeTag, bool enableDiffusion>
-class MPNCDiffusion
-{
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents)};
-    enum { nPhaseIdx = FluidSystem::nPhaseIdx };
-    enum { wPhaseIdx = FluidSystem::wPhaseIdx };
-    enum { nCompIdx = FluidSystem::nCompIdx };
-
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using ComponentMatrix = Dune::FieldMatrix<Scalar, numComponents, numComponents>;
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-
-public:
-
-    /*!
-     * \brief Calls the function for the diffusion in the gas and liquid phases, respectively.
-     *
-     *        In the gas phase, the mutual influence of mole fractions can be considered.
-     *
-     * \param fluxes The Diffusive flux over the sub-control-volume face for each component
-     * \param phaseIdx The index of the phase we are calculating the diffusive flux for
-     * \param fluxVars The flux variables at the current sub control volume face
-     * \param molarDensity The (molar) density of the phase
-     */
-    static void flux(ComponentVector &fluxes,
-                     const unsigned int phaseIdx,
-                     const FluxVariables &fluxVars,
-                     const Scalar molarDensity )
-    {
-        if (FluidSystem::isLiquid(phaseIdx))
-        {
-            #if MACROSCALE_DIFFUSION_ONLY_GAS
-                    return ; // in the case that only the diffusion in the gas phase is considered,
-                             // the liquidFlux should not be called
-            #endif
-            liquidFlux_(fluxes, fluxVars, molarDensity);
-        }
-        else
-        {
-            gasFlux_(fluxes, fluxVars, molarDensity);
-        }
-    }
-
-protected:
-
-    /*!
-     * \brief Calculates the diffusive flux in the liquid phase: only Fick diffusion (no mutual influence) is considered.
-     *
-     * \param fluxes The Diffusive flux over the sub-control-volume face for each component
-     * \param fluxVars The flux variables at the current sub control volume face
-     * \param molarDensity The (molar) density of the phase
-     */
-    static void liquidFlux_(ComponentVector &fluxes,
-                            const FluxVariables &fluxVars,
-                            const Scalar molarDensity)
-    {
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-            // TODO: tensorial diffusion coefficients
-            const Scalar xGrad = fluxVars.moleFractionGrad(wPhaseIdx, compIdx)*fluxVars.face().normal;
-            fluxes[compIdx] =
-                - xGrad *
-                molarDensity *
-                fluxVars.porousDiffCoeffL(compIdx) ;
-        }
-    }
-
-    /*!
-     * \brief Calculates the diffusive flux in the gas phase:
-     *        The property UseMaxwellDiffusion selects whether Maxwell or Fick diffusion is applied.
-     *        Has to be the same for a 2-component system. However, Maxwells does not work always.
-     *
-     * \param fluxes The Diffusive flux over the sub-control-volume face for each component
-     * \param fluxVars The flux variables at the current sub control volume face
-     * \param molarDensity The (molar) density of the phase
-     *
-     * Reid et al. (1987, p. 596) \cite reid1987 <BR>
-     */
-    static void gasFlux_(ComponentVector &fluxes,
-                         const FluxVariables &fluxVars,
-                         const Scalar molarDensity)
-    {
-        // Alternative: use Fick Diffusion: no mutual influence of diffusion
-        if (GET_PROP_VALUE(TypeTag, UseMaxwellDiffusion) ){
-            // Stefan-Maxwell equation
-            //
-            // See: R. Reid, et al.: "The Properties of Liquids and
-            // Gases", 4th edition, 1987, McGraw-Hill, p 596
-
-            // TODO: tensorial diffusion coefficients
-            ComponentMatrix M(0);
-
-            for (int compIIdx = 0; compIIdx < numComponents - 1; ++compIIdx) {
-                for (int compJIdx = 0; compJIdx < numComponents; ++compJIdx) {
-                    Scalar Dij = fluxVars.porousDiffCoeffG(compIIdx, compJIdx);
-                    if (Dune::FloatCmp::ne<Scalar, Dune::FloatCmp::absolute>(Dij, 0.0, 1.0e-30)) {
-                        M[compIIdx][compJIdx] += fluxVars.moleFraction(nPhaseIdx, compIIdx) / Dij;
-                        M[compIIdx][compIIdx] -= fluxVars.moleFraction(nPhaseIdx, compJIdx) / Dij;
-                    }
-                }
-            }
-
-            for (int compIIdx = 0; compIIdx < numComponents; ++compIIdx) {
-                M[numComponents - 1][compIIdx] = 1.0;
-            }
-
-            ComponentVector rightHandSide ; // see source cited above
-            for (int compIIdx = 0; compIIdx < numComponents - 1; ++compIIdx) {
-                rightHandSide[compIIdx] = molarDensity*(fluxVars.moleFractionGrad(nPhaseIdx, compIIdx)*fluxVars.face().normal);
-            }
-            rightHandSide[numComponents - 1] = 0.0;
-
-            M.solve(fluxes, rightHandSide);
-        }
-        else{// Fick Diffusion
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                // TODO: tensorial diffusion coefficients
-                const Scalar xGrad = fluxVars.moleFractionGrad(nPhaseIdx, compIdx)*fluxVars.face().normal;
-                fluxes[compIdx] =
-                    - xGrad *
-                    molarDensity
-                    * fluxVars.porousDiffCoeffG(compIdx, nCompIdx) ; // this is == 0 for nComp==comp,
-                                                                     // i.e. no diffusion of the main component of the phase
-                }
-        }
-    }
-
-    // return whether a concentration can be assumed to be a trace
-    // component in the context of diffusion
-    static Scalar isTraceComp_(Scalar x)
-    { return x < 0.5/numComponents; }
-};
-
-/*!
- * \brief Specialization of the diffusion module for the case where
- *        diffusion is disabled.
- *
- * This class just does nothing.
- */
-template <class TypeTag>
-class MPNCDiffusion<TypeTag, false>
-{
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-
-public:
-    static void flux(ComponentVector &fluxes,
-                     const unsigned int phaseIdx,
-                     const FluxVariables &fluxVars,
-                     const Scalar molarDensity)
-    { fluxes = 0;  }
-};
-
-}
-
-#endif // DUMUX_MPNC_DIFFUSION_HH
diff --git a/dumux/porousmediumflow/mpnc/implicit/diffusion/fluxvariables.hh b/dumux/porousmediumflow/mpnc/implicit/diffusion/fluxvariables.hh
deleted file mode 100644
index d98fdac9f8b489514cadd7ca6e1aba9d33fba9ef..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/diffusion/fluxvariables.hh
+++ /dev/null
@@ -1,258 +0,0 @@
-// -*- 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 This file contains the diffusion module for the flux data of
- *        the fully coupled MpNc model
- */
-#ifndef DUMUX_MPNC_DIFFUSION_FLUX_VARIABLES_HH
-#define DUMUX_MPNC_DIFFUSION_FLUX_VARIABLES_HH
-
-#include <dune/common/fvector.hh>
-
-#include "../properties.hh"
-
-namespace Dumux {
-
-/*!
- * \ingroup MPNCModel
- * \ingroup ImplicitFluxVariables
- * \brief Variables for the diffusive fluxes in the MpNc model
- */
-template<class TypeTag, bool enableDiffusion>
-class MPNCFluxVariablesDiffusion
-{
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using SCVFace = typename FVElementGeometry::SubControlVolumeFace;
-
-    enum{dim = GridView::dimension};
-    enum{dimWorld = GridView::dimensionworld};
-    enum{numPhases = GET_PROP_VALUE(TypeTag, NumPhases)};
-    enum{numComponents = GET_PROP_VALUE(TypeTag, NumComponents)};
-    enum{wPhaseIdx = FluidSystem::wPhaseIdx};
-    enum{nPhaseIdx = FluidSystem::nPhaseIdx};
-
-    using DimVector = Dune::FieldVector<Scalar, dim>;
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-
-public:
-    /*!
-     * \brief The constructor
-     */
-    MPNCFluxVariablesDiffusion()
-    {}
-    /*!
-     * \brief update
-     *
-     * \param problem The problem
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param face The SCV (sub-control-volume) face
-     * \param elemVolVars The volume variables of the current element
-     */
-    void update(const Problem & problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const SCVFace & face,
-                const ElementVolumeVariables & elemVolVars)
-    {
-        const unsigned int i = face.i;
-        const unsigned int j = face.j;
-
-
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx){
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx){
-                moleFraction_[phaseIdx][compIdx] = 0. ;
-                moleFractionGrad_[phaseIdx][compIdx] = 0. ;
-            }
-        }
-
-
-        GlobalPosition tmp ;
-        for (unsigned int idx = 0;
-             idx < face.numFap;
-             idx++) // loop over adjacent vertices
-        {
-            // FE gradient at vertex idx
-            const GlobalPosition & feGrad = face.grad[idx];
-
-            // index for the element volume variables
-            int volVarsIdx = face.fapIndices[idx];
-
-            for (int phaseIdx = 0; phaseIdx < numPhases; phaseIdx++){
-                for (int compIdx = 0; compIdx < numComponents; ++compIdx){
-
-                    // calculate mole fractions at the integration points of the face
-                    moleFraction_[phaseIdx][compIdx] += elemVolVars[volVarsIdx].moleFraction(phaseIdx, compIdx)*
-                    face.shapeValue[idx];
-
-                    // calculate mole fraction gradients
-                    tmp =  feGrad;
-                    tmp *= elemVolVars[volVarsIdx].moleFraction(phaseIdx, compIdx);
-                    moleFractionGrad_[phaseIdx][compIdx] += tmp;
-                }
-            }
-        }
-
-        // initialize the diffusion coefficients to zero
-        for (int compIIdx = 0; compIIdx < numComponents; ++compIIdx) {
-            porousDiffCoeffL_[compIIdx] = 0.0;
-            for (int compJIdx = 0; compJIdx < numComponents; ++compJIdx)
-                porousDiffCoeffG_[compIIdx][compJIdx] = 0.0;
-        }
-
-        // calculate the diffusion coefficients at the integration
-        // point in the porous medium
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
-        {
-            // make sure to only calculate diffusion coefficients
-            // for phases which exist in both finite volumes
-            if (elemVolVars[i].saturation(phaseIdx) <= 1e-4 ||
-                elemVolVars[j].saturation(phaseIdx) <= 1e-4)
-            {
-                continue;
-            }
-
-            // reduction factor for the diffusion coefficients in the
-            // porous medium in nodes i and j. this is the tortuosity
-            // times porosity times phase saturation at the nodes i
-            // and j
-            //
-            Scalar red_i =
-                elemVolVars[i].saturation(phaseIdx)/elemVolVars[i].porosity() *
-                pow(elemVolVars[i].porosity() * elemVolVars[i].saturation(phaseIdx), 7.0/3);
-            Scalar red_j =
-                elemVolVars[j].saturation(phaseIdx)/elemVolVars[j].porosity() *
-                pow(elemVolVars[j].porosity() * elemVolVars[j].saturation(phaseIdx), 7.0/3);
-
-            if (phaseIdx == wPhaseIdx) {
-                // Liquid phase diffusion coefficients in the porous medium
-                for (int compIIdx = 0; compIIdx < numComponents; ++compIIdx) {
-                    // -> arithmetic mean
-                    porousDiffCoeffL_[compIIdx]
-                        = 1./2*(red_i * elemVolVars[i].diffCoeff(wPhaseIdx, 0, compIIdx) +
-                                red_j * elemVolVars[j].diffCoeff(wPhaseIdx, 0, compIIdx));
-                }
-            }
-            else {
-                // Gas phase diffusion coefficients in the porous medium
-                for (int compIIdx = 0; compIIdx < numComponents; ++compIIdx) {
-                    for (int compJIdx = 0; compJIdx < numComponents; ++compJIdx) {
-                        // -> arithmetic mean
-                        porousDiffCoeffG_[compIIdx][compJIdx]
-                            = 1./2*(red_i * elemVolVars[i].diffCoeff(nPhaseIdx, compIIdx, compJIdx) +
-                                    red_j * elemVolVars[j].diffCoeff(nPhaseIdx, compIIdx, compJIdx));
-                    }
-                }
-            }
-        }
-    }
-    /*!
-     * \brief The binary diffusion coefficient for each component in the fluid phase.
-     * \param compIdx The local index of the components
-     */
-    Scalar porousDiffCoeffL(const unsigned int compIdx) const
-    {
-        // TODO: tensorial diffusion coefficients
-        return porousDiffCoeffL_[compIdx];
-    }
-    /*!
-     * \brief The binary diffusion coefficient for each component in the gas phase.
-     * \param compIIdx The local index of the first component in the phase
-     * \param compJIdx The local index of the second component in the phase
-     */
-    Scalar porousDiffCoeffG(const unsigned int compIIdx,
-                            const unsigned int compJIdx) const
-    {
-        // TODO: tensorial diffusion coefficients
-        return porousDiffCoeffG_[compIIdx][compJIdx];
-    }
-    /*!
-     * \brief The mole fraction and concentration gradient for all phases and components
-     * \param phaseIdx The local index of the phases
-     * \param compIdx The local index of the component
-     */
-    Scalar moleFraction(const unsigned int phaseIdx,
-                        const unsigned int compIdx) const
-    { return moleFraction_[phaseIdx][compIdx]; }
-
-    const GlobalPosition &moleFractionGrad(const unsigned int phaseIdx,
-                                  const unsigned int compIdx) const
-    { return moleFractionGrad_[phaseIdx][compIdx];}
-
-protected:
-    // the diffusion coefficients for the porous medium for the
-    // liquid phase
-    Scalar porousDiffCoeffL_[numComponents];
-
-    // the diffusion coefficients for the porous medium for the
-    // gas phase
-    Scalar porousDiffCoeffG_[numComponents][numComponents];
-
-    // the concentration gradients of all components in all phases
-    GlobalPosition moleFractionGrad_[numPhases][numComponents];
-
-    // the mole fractions of each component at the integration point
-    Scalar moleFraction_[numPhases][numComponents];
-};
-
-
-template<class TypeTag>
-class MPNCFluxVariablesDiffusion<TypeTag, false>
-{
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using SCVFace = typename FVElementGeometry::SubControlVolumeFace;
-
-public:
-    /*!
-     * \brief The constructor
-     */
-    MPNCFluxVariablesDiffusion()
-    {}
-    /*!
-     * \brief update
-     *
-     * \param problem The problem
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param face The SCV (sub-control-volume) face
-     * \param elemVolVars The volume variables of the current element
-     */
-    void update(const Problem & problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const SCVFace & face,
-                const ElementVolumeVariables & elemVolVars)
-    {
-    }
-};
-
-}
-
-#endif // DUMUX_MPNC_DIFFUSION_FLUX_VARIABLES_HH
diff --git a/dumux/porousmediumflow/mpnc/implicit/diffusion/volumevariables.hh b/dumux/porousmediumflow/mpnc/implicit/diffusion/volumevariables.hh
deleted file mode 100644
index b2fc50cb4b3115b329154369d39430bf59e4df28..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/diffusion/volumevariables.hh
+++ /dev/null
@@ -1,201 +0,0 @@
-// -*- 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 This file contains the diffusion module for the vertex data
- *        of the fully coupled MpNc model
- */
-#ifndef DUMUX_MPNC_DIFFUSION_VOLUME_VARIABLES_HH
-#define DUMUX_MPNC_DIFFUSION_VOLUME_VARIABLES_HH
-
-#include <dumux/common/valgrind.hh>
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-
-namespace Dumux {
-
-/*!
- * \brief Variables for the diffusive fluxes in the MpNc model within
- *        a finite volume.
- */
-template<class TypeTag, bool enableDiffusion>
-class MPNCVolumeVariablesDiffusion
-{
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { wPhaseIdx = FluidSystem::wPhaseIdx };
-    enum { nPhaseIdx = FluidSystem::nPhaseIdx };
-
-public:
-    /*!
-     * \brief The constructor
-     */
-    MPNCVolumeVariablesDiffusion()
-    {}
-    /*!
-     * \brief update
-     *
-     * \param fluidState An arbitrary fluid state
-     * \param paramCache Container for cache parameters
-     * \param volVars The volume variables
-     * \param problem  The problem
-     */
-    void update(FluidState &fluidState,
-                ParameterCache &paramCache,
-                const VolumeVariables &volVars,
-                const Problem &problem)
-    {
-        Valgrind::SetUndefined(*this);
-
-        // diffusion coefficients in liquid
-        diffCoeffL_[0] = 0.0;
-        for (int compIdx = 1; compIdx < numComponents; ++compIdx) {
-            diffCoeffL_[compIdx] =
-                FluidSystem::binaryDiffusionCoefficient(fluidState,
-                                                        paramCache,
-                                                        wPhaseIdx,
-                                                        0,
-                                                        compIdx);
-        }
-        Valgrind::CheckDefined(diffCoeffL_);
-
-        // diffusion coefficients in gas
-        for (int compIIdx = 0; compIIdx < numComponents; ++compIIdx) {
-            diffCoeffG_[compIIdx][compIIdx] = 0;
-            for (int compJIdx = compIIdx + 1; compJIdx < numComponents; ++compJIdx) {
-                diffCoeffG_[compIIdx][compJIdx] =
-                        FluidSystem::binaryDiffusionCoefficient(fluidState,
-                                                                paramCache,
-                                                                nPhaseIdx,
-                                                                compIIdx,
-                                                                compJIdx);
-
-                // fill the symmetric part of the diffusion coefficient
-                // matrix
-                diffCoeffG_[compJIdx][compIIdx] = diffCoeffG_[compIIdx][compJIdx];
-            }
-        }
-        Valgrind::CheckDefined(diffCoeffG_);
-    }
-
-    /*!
-     * \brief The binary diffusion coefficient for each fluid phase.
-     * \param phaseIdx The local index of the phases
-     * \param compIIdx The local index of the first component in the phase
-     * \param compJIdx The local index of the second component in the phase
-     */
-    Scalar diffCoeff(const unsigned int phaseIdx,
-                     const unsigned int compIIdx,
-                     const unsigned int compJIdx) const
-    {
-        if (phaseIdx == nPhaseIdx)
-            // TODO: tensorial diffusion coefficients
-            return diffCoeffG_[compIIdx][compJIdx];
-
-        using std::max;
-        using std::min;
-        const unsigned int i = min(compIIdx, compJIdx);
-        const unsigned int j = max(compIIdx, compJIdx);
-        if (i != 0)
-            return 0;
-        return diffCoeffL_[j];
-    }
-
-    /*!
-     * \brief If running under valgrind this produces an error message
-     *        if some of the object's attributes is undefined.
-     */
-    void checkDefined() const
-    {
-        Valgrind::CheckDefined(diffCoeffL_);
-        Valgrind::CheckDefined(diffCoeffG_);
-    }
-
-
-protected:
-    // the diffusion coefficients for the porous medium for the
-    // liquid phase
-    Scalar diffCoeffL_[numComponents];
-
-    // the diffusion coefficients for the porous medium for the
-    // gas phase
-    Scalar diffCoeffG_[numComponents][numComponents];
-};
-
-// dummy class for the case where diffusion is disabled
-template<class TypeTag>
-class MPNCVolumeVariablesDiffusion<TypeTag, false>
-{
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-
-public:
-    /*!
-     * \brief The constructor
-     */
-    MPNCVolumeVariablesDiffusion()
-    {}
-    /*!
-     * \brief update
-     *
-     * \param fluidState An arbitrary fluid state
-     * \param paramCache Container for cache parameters
-     * \param volVars The volume variables
-     * \param problem  The problem
-     */
-    void update(FluidState &fluidState,
-                ParameterCache &paramCache,
-                const VolumeVariables &volVars,
-                const Problem &problem)
-    { }
-    /*!
-     * \brief The binary diffusion coefficient for each component in the fluid phase.
-     * \param compIdx The local index of the components
-     */
-    Scalar diffCoeffL(const unsigned int compIdx) const
-    { return 0; }
-    /*!
-     * \brief The binary diffusion coefficient for each component in the gas phase.
-     * \param compIIdx The local index of the first component in the phase
-     * \param compJIdx The local index of the second component in the phase
-     */
-    Scalar diffCoeffG(const unsigned int compIIdx, const unsigned int compJIdx) const
-    { return 0; }
-
-    /*!
-     * \brief If running under valgrind this produces an error message
-     *        if some of the object's attributes is undefined.
-     */
-    void checkDefined() const
-    { }
-};
-
-}
-
-#endif // DUMUX_MPNC_DIFFUSION_VOLUME_VARIABLES_HH
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/CMakeLists.txt b/dumux/porousmediumflow/mpnc/implicit/energy/CMakeLists.txt
deleted file mode 100644
index 2a501842a5d419405b8cc300161925171e3f62e5..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-install(FILES
-  fluxvariables.hh
-  fluxvariableskinetic.hh
-  indices.hh
-  indiceskinetic.hh
-  localresidual.hh
-  localresidualkinetic.hh
-  volumevariables.hh
-  volumevariableskinetic.hh
-  vtkwriter.hh
-  vtkwriterkinetic.hh
-  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/porousmediumflow/mpnc/implicit/energy)
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/fluxvariables.hh b/dumux/porousmediumflow/mpnc/implicit/energy/fluxvariables.hh
deleted file mode 100644
index 5af08a341aa04f1296f315cf0a7017277964d15a..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/fluxvariables.hh
+++ /dev/null
@@ -1,243 +0,0 @@
-// -*- 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 Contains the quantities to calculate the energy flux in the
- *        MpNc fully implicit model.
- */
-#ifndef DUMUX_MPNC_ENERGY_FLUX_VARIABLES_HH
-#define DUMUX_MPNC_ENERGY_FLUX_VARIABLES_HH
-
-#include <dune/common/fvector.hh>
-
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-#include <dumux/common/spline.hh>
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- * \ingroup ImplicitFluxVariables
- * \brief Variables for the enthalpy fluxes in the MpNc model
- */
-template <class TypeTag, bool enableEnergy/*=false*/, int numEnergyEquations/*=0*/>
-class MPNCFluxVariablesEnergy
-{
-    static_assert(!(numEnergyEquations && !enableEnergy),
-                  "No kinetic energy transfer may only be enabled "
-                  "if energy is enabled in general.");
-    static_assert(!numEnergyEquations,
-                  "No kinetic energy transfer module included, "
-                  "but kinetic energy transfer enabled.");
-
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using SCVFace = typename FVElementGeometry::SubControlVolumeFace;
-
-public:
-    /*!
-     * \brief The constructor
-     */
-    MPNCFluxVariablesEnergy()
-    {
-    }
-    /*!
-     * \brief update
-     *
-     * \param problem The problem
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param face The SCV (sub-control-volume) face
-     * \param fluxVars The flux variables
-     * \param elemVolVars The volume variables of the current element
-     */
-    void update(const Problem & problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const SCVFace & face,
-                const FluxVariables & fluxVars,
-                const ElementVolumeVariables & elemVolVars)
-    {}
-};
-
-template <class TypeTag>
-class MPNCFluxVariablesEnergy<TypeTag, /*enableEnergy=*/true,  /*numEnergyEquations=*/1>
-{
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-    using CoordScalar = typename GridView::ctype;
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum{dimWorld = GridView::dimensionworld};
-    enum{dim = GridView::dimension};
-    enum{nPhaseIdx = FluidSystem::nPhaseIdx};
-    enum{wPhaseIdx = FluidSystem::wPhaseIdx};
-
-    using DimVector = Dune::FieldVector<CoordScalar, dim>;
-    using GlobalPosition = Dune::FieldVector<CoordScalar, dimWorld>;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using SCVFace = typename FVElementGeometry::SubControlVolumeFace;
-    using ThermalConductivityModel = typename GET_PROP_TYPE(TypeTag, ThermalConductivityModel);
-
-public:
-    /*!
-     * \brief The constructor
-     */
-    MPNCFluxVariablesEnergy()
-    {}
-    /*!
-     * \brief update
-     *
-     * \param problem The problem
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param face The SCV (sub-control-volume) face
-     * \param fluxVars The flux variables
-     * \param elemVolVars The volume variables of the current element
-     */
-    void update(const Problem & problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const SCVFace & face,
-                const FluxVariables & fluxVars,
-                const ElementVolumeVariables & elemVolVars)
-    {
-        // calculate temperature gradient using finite element
-        // gradients
-        GlobalPosition tmp(0.0);
-        GlobalPosition temperatureGradient(0.);
-        for (int idx = 0; idx < face.numFap; idx++)
-        {
-            tmp = face.grad[idx];
-
-            // index for the element volume variables
-            int volVarsIdx = face.fapIndices[idx];
-
-            tmp *= elemVolVars[volVarsIdx].temperature(/*phaseIdx=*/0);
-            temperatureGradient += tmp;
-        }
-
-        // project the heat flux vector on the face's normal vector
-        temperatureGradientNormal_ = temperatureGradient * face.normal;
-
-        lambdaEff_ = 0;
-        calculateEffThermalConductivity_(problem,
-                                         element,
-                                         fvGeometry,
-                                         face,
-                                         elemVolVars);
-    }
-
-    /*!
-     * \brief The lumped / average conductivity of solid plus phases \f$[W/mK]\f$.
-     */
-    Scalar lambdaEff() const
-    { return lambdaEff_; }
-
-    /*!
-     * \brief The normal of the gradient of temperature .
-     */
-    Scalar temperatureGradientNormal() const
-    {
-        return temperatureGradientNormal_;
-    }
-
-protected:
-    /*!
-     * \brief Calculate the effective thermal conductivity of
-     *        the porous medium plus residing phases \f$[W/mK]\f$.
-     *        This basically means to access the model for averaging
-     *        the individual conductivities, set by the property ThermalConductivityModel.
-     *        Except the adapted arguments, this is the same function
-     *        as used in the implicit TwoPTwoCNIFluxVariables.
-     */
-    void calculateEffThermalConductivity_(const Problem &problem,
-                                          const Element &element,
-                                          const FVElementGeometry & fvGeometry,
-                                          const SCVFace & face,
-                                          const ElementVolumeVariables &elemVolVars)
-    {
-        const unsigned i = face.i;
-        const unsigned j = face.j;
-        Scalar lambdaI, lambdaJ;
-
-        if (GET_PROP_VALUE(TypeTag, ImplicitIsBox))
-        {
-            lambdaI =
-                ThermalConductivityModel::effectiveThermalConductivity(elemVolVars[i].saturation(wPhaseIdx),
-                                                                   elemVolVars[i].thermalConductivity(wPhaseIdx),
-                                                                   elemVolVars[i].thermalConductivity(nPhaseIdx),
-                                                                   problem.spatialParams().solidThermalConductivity(element, fvGeometry, i),
-                                                                   problem.spatialParams().porosity(element, fvGeometry, i));
-            lambdaJ =
-                ThermalConductivityModel::effectiveThermalConductivity(elemVolVars[j].saturation(wPhaseIdx),
-                                                                   elemVolVars[j].thermalConductivity(wPhaseIdx),
-                                                                   elemVolVars[j].thermalConductivity(nPhaseIdx),
-                                                                   problem.spatialParams().solidThermalConductivity(element, fvGeometry, j),
-                                                                   problem.spatialParams().porosity(element, fvGeometry, j));
-        }
-        else
-        {
-            const Element & elementI = fvGeometry.neighbors[i];
-            FVElementGeometry fvGeometryI;
-            fvGeometryI.subContVol[0].global = elementI.geometry().center();
-
-            lambdaI =
-                ThermalConductivityModel::effectiveThermalConductivity(elemVolVars[i].saturation(wPhaseIdx),
-                                                                   elemVolVars[i].thermalConductivity(wPhaseIdx),
-                                                                   elemVolVars[i].thermalConductivity(nPhaseIdx),
-                                                                   problem.spatialParams().solidThermalConductivity(elementI, fvGeometryI, 0),
-                                                                   problem.spatialParams().porosity(elementI, fvGeometryI, 0));
-
-            const Element & elementJ = fvGeometry.neighbors[j];
-            FVElementGeometry fvGeometryJ;
-            fvGeometryJ.subContVol[0].global = elementJ.geometry().center();
-
-            lambdaJ =
-                ThermalConductivityModel::effectiveThermalConductivity(elemVolVars[j].saturation(wPhaseIdx),
-                                                                   elemVolVars[j].thermalConductivity(wPhaseIdx),
-                                                                   elemVolVars[j].thermalConductivity(nPhaseIdx),
-                                                                   problem.spatialParams().solidThermalConductivity(elementJ, fvGeometryJ, 0),
-                                                                   problem.spatialParams().porosity(elementJ, fvGeometryJ, 0));
-        }
-
-        // -> harmonic mean
-        lambdaEff_ = harmonicMean(lambdaI, lambdaJ);
-    }
-
-private:
-    Scalar lambdaEff_ ;
-    Scalar temperatureGradientNormal_;
-};
-
-} // end namespace
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/fluxvariableskinetic.hh b/dumux/porousmediumflow/mpnc/implicit/energy/fluxvariableskinetic.hh
deleted file mode 100644
index aecec74592897ecae0bb5981f248bff0d85cc17d..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/fluxvariableskinetic.hh
+++ /dev/null
@@ -1,298 +0,0 @@
-// -*- 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 Contains the quantities to calculate the energy flux in the
- *        MpNc box model with kinetic energy transfer enabled.
- */
-#ifndef DUMUX_MPNC_ENERGY_FLUX_VARIABLES_KINETIC_HH
-#define DUMUX_MPNC_ENERGY_FLUX_VARIABLES_KINETIC_HH
-
-#include <dune/common/fvector.hh>
-
-#include <dumux/common/spline.hh>
-#include <dumux/porousmediumflow/mpnc/implicit/fluxvariables.hh>
-
-namespace Dumux
-{
-
-/*!
- * \brief Specialization for the case of *3* energy balance equations.
- */
-template <class TypeTag>
-class MPNCFluxVariablesEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquations=*/3>
-{
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using CoordScalar = typename GridView::ctype;
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum {dim = GridView::dimension};
-    enum {dimWorld = GridView::dimensionworld};
-    enum {numEnergyEqs             = Indices::numPrimaryEnergyVars};
-
-    using DimVector = Dune::FieldVector<CoordScalar, dim>;
-    using GlobalPosition = Dune::FieldVector<CoordScalar, dimWorld>;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using SCV = typename FVElementGeometry::SubControlVolume;
-    using SCVFace = typename FVElementGeometry::SubControlVolumeFace;
-
-public:
-    /*!
-     * \brief The constructor
-     */
-    MPNCFluxVariablesEnergy()
-    {}
-    /*!
-     * \brief update
-     *
-     * \param problem The problem
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param face The SCV (sub-control-volume) face
-     * \param fluxVars The flux variables
-     * \param elemVolVars The volume variables of the current element
-     */
-    void update(const Problem & problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const SCVFace & face,
-                const FluxVariables & fluxVars,
-                const ElementVolumeVariables & elemVolVars)
-    {
-        // calculate temperature gradient using finite element
-        // gradients
-        GlobalPosition tmp ;
-
-        for(int energyEqIdx=0; energyEqIdx<numEnergyEqs; energyEqIdx++)
-            temperatureGradient_[energyEqIdx] = 0.;
-
-        for (unsigned int idx = 0;
-                idx < face.numFap;
-                idx++){
-            // FE gradient at vertex idx
-            const GlobalPosition & feGrad = face.grad[idx];
-
-            for (int energyEqIdx =0; energyEqIdx < numEnergyEqs; ++energyEqIdx){
-                // index for the element volume variables
-                int volVarsIdx = face.fapIndices[idx];
-
-                tmp = feGrad;
-                tmp   *= elemVolVars[volVarsIdx].temperature(energyEqIdx);
-                temperatureGradient_[energyEqIdx] += tmp;
-            }
-        }
-    }
-
-    /*!
-     * \brief The total heat flux \f$[J/s]\f$ due to heat conduction
-     *        of the rock matrix over the sub-control volume's face.
-     *
-     * \param energyEqIdx The index of the energy equation
-     */
-    GlobalPosition temperatureGradient(const unsigned int energyEqIdx) const
-    {
-        return temperatureGradient_[energyEqIdx];
-    }
-
-private:
-    GlobalPosition temperatureGradient_[numEnergyEqs];
-};
-
-
-/*!
- * \brief Specialization for the case of *2* energy balance equations.
- */
-template <class TypeTag>
-class MPNCFluxVariablesEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquations=*/2>
-{
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-
-    using CoordScalar = typename GridView::ctype;
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum {dim = GridView::dimension};
-    enum {dimWorld = GridView::dimensionworld};
-    enum {numEnergyEqs          = Indices::numPrimaryEnergyVars};
-    enum {wPhaseIdx             = FluidSystem::wPhaseIdx};
-    enum {nPhaseIdx             = FluidSystem::nPhaseIdx};
-
-
-    using GlobalPosition = Dune::FieldVector<CoordScalar, dimWorld>;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using SCV = typename FVElementGeometry::SubControlVolume;
-    using SCVFace = typename FVElementGeometry::SubControlVolumeFace;
-    using ThermalConductivityModel = typename GET_PROP_TYPE(TypeTag, ThermalConductivityModel);
-
-
-public:
-    /*!
-     * \brief The constructor
-     */
-    MPNCFluxVariablesEnergy()
-    {}
-    /*!
-     * \brief update
-     *
-     * \param problem The problem
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param face The SCV (sub-control-volume) face
-     * \param fluxVars The flux variables
-     * \param elemVolVars The volume variables of the current element
-     */
-    void update(const Problem & problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const SCVFace & face,
-                const FluxVariables & fluxVars,
-                const ElementVolumeVariables & elemVolVars)
-    {
-        // calculate temperature gradient using finite element
-        // gradients
-        GlobalPosition tmp ;
-
-        for(int energyEqIdx=0; energyEqIdx<numEnergyEqs; energyEqIdx++)
-            temperatureGradient_[energyEqIdx] = 0.;
-
-        for (unsigned int idx = 0;
-                idx < face.numFap;
-                idx++){
-            // FE gradient at vertex idx
-            const GlobalPosition & feGrad = face.grad[idx];
-
-            for (int energyEqIdx =0; energyEqIdx < numEnergyEqs; ++energyEqIdx){
-                // index for the element volume variables
-                int volVarsIdx = face.fapIndices[idx];
-
-                tmp = feGrad;
-                tmp   *= elemVolVars[volVarsIdx].temperature(energyEqIdx);
-                temperatureGradient_[energyEqIdx] += tmp;
-            }
-        }
-
-        lambdaEff_ = 0;
-        calculateEffThermalConductivity_(problem,
-                                         element,
-                                         fvGeometry,
-                                         face,
-                                         elemVolVars);
-
-
-    }
-
-    /*!
-     * \brief The lumped / average conductivity of solid plus phases \f$[W/mK]\f$.
-     */
-    Scalar lambdaEff() const
-    { return lambdaEff_; }
-
-    /*!
-     * \brief The total heat flux \f$[J/s]\f$ due to heat conduction
-     *        of the rock matrix over the sub-control volume's face.
-     *
-     * \param energyEqIdx The index of the energy equation
-     */
-    GlobalPosition temperatureGradient(const unsigned int energyEqIdx) const
-    {
-        return temperatureGradient_[energyEqIdx];
-    }
-
-protected:
-    /*!
-     * \brief Calculate the effective thermal conductivity of
-     *        the porous medium plus residing phases \f$[W/mK]\f$.
-     *        This basically means to access the model for averaging
-     *        the individual conductivities, set by the property ThermalConductivityModel.
-     *        Except the adapted arguments, this is the same function
-     *        as used in the implicit TwoPTwoCNIFluxVariables.
-     */
-    void calculateEffThermalConductivity_(const Problem &problem,
-                                          const Element &element,
-                                          const FVElementGeometry & fvGeometry,
-                                          const SCVFace & face,
-                                          const ElementVolumeVariables &elemVolVars)
-    {
-        const unsigned i = face.i;
-        const unsigned j = face.j;
-        Scalar lambdaI, lambdaJ;
-
-        if (GET_PROP_VALUE(TypeTag, ImplicitIsBox))
-        {
-            lambdaI =
-                ThermalConductivityModel::effectiveThermalConductivity(elemVolVars[i].saturation(wPhaseIdx),
-                                                                   elemVolVars[i].thermalConductivity(wPhaseIdx),
-                                                                   elemVolVars[i].thermalConductivity(nPhaseIdx),
-                                                                   problem.spatialParams().solidThermalConductivity(element, fvGeometry, i),
-                                                                   problem.spatialParams().porosity(element, fvGeometry, i));
-            lambdaJ =
-                ThermalConductivityModel::effectiveThermalConductivity(elemVolVars[j].saturation(wPhaseIdx),
-                                                                   elemVolVars[j].thermalConductivity(wPhaseIdx),
-                                                                   elemVolVars[j].thermalConductivity(nPhaseIdx),
-                                                                   problem.spatialParams().solidThermalConductivity(element, fvGeometry, j),
-                                                                   problem.spatialParams().porosity(element, fvGeometry, j));
-        }
-        else
-        {
-            const Element & elementI = fvGeometry.neighbors[i];
-            FVElementGeometry fvGeometryI;
-            fvGeometryI.subContVol[0].global = elementI.geometry().center();
-
-            lambdaI =
-                ThermalConductivityModel::effectiveThermalConductivity(elemVolVars[i].saturation(wPhaseIdx),
-                                                                   elemVolVars[i].thermalConductivity(wPhaseIdx),
-                                                                   elemVolVars[i].thermalConductivity(nPhaseIdx),
-                                                                   problem.spatialParams().solidThermalConductivity(elementI, fvGeometryI, 0),
-                                                                   problem.spatialParams().porosity(elementI, fvGeometryI, 0));
-
-            const Element & elementJ = fvGeometry.neighbors[j];
-            FVElementGeometry fvGeometryJ;
-            fvGeometryJ.subContVol[0].global = elementJ.geometry().center();
-
-            lambdaJ =
-                ThermalConductivityModel::effectiveThermalConductivity(elemVolVars[j].saturation(wPhaseIdx),
-                                                                   elemVolVars[j].thermalConductivity(wPhaseIdx),
-                                                                   elemVolVars[j].thermalConductivity(nPhaseIdx),
-                                                                   problem.spatialParams().solidThermalConductivity(elementJ, fvGeometryJ, 0),
-                                                                   problem.spatialParams().porosity(elementJ, fvGeometryJ, 0));
-        }
-
-        // -> arithmetic mean, open to discussion
-        lambdaEff_ = 0.5 * (lambdaI+lambdaJ);
-    }
-
-
-private:
-    Scalar lambdaEff_ ;
-    GlobalPosition temperatureGradient_[numEnergyEqs];
-};
-
-} // end namespace
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/indices.hh b/dumux/porousmediumflow/mpnc/implicit/energy/indices.hh
deleted file mode 100644
index 50e8ab7f1a2be2805585147daf51821707a9a314..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/indices.hh
+++ /dev/null
@@ -1,81 +0,0 @@
-// -*- 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 The indices for the non-isothermal part of the compositional
- *        multi-phase model.
- */
-#ifndef DUMUX_MPNC_INDICES_ENERGY_HH
-#define DUMUX_MPNC_INDICES_ENERGY_HH
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- * \ingroup ImplicitIndices
- * \brief The indices for the energy equation.
- *
- * This is a dummy class for the isothermal case.
- */
-template <int PVOffset, bool enableEnergy/*=false*/, int numEnergyEquations/*=0*/>
-struct MPNCEnergyIndices
-{
-    static_assert(((numEnergyEquations < 1) && !enableEnergy),
-                  "No kinetic energy transfer may only be enabled "
-                  "if energy is enabled in general.");
-
-    static_assert( (numEnergyEquations < 1) ,
-                  "No kinetic energy transfer module included, "
-                  "but kinetic energy transfer enabled.");
-public:
-    /*!
-     * \brief This module does not define any primary variables in the
-     *        isothermal case.
-     */
-    static const unsigned int numPrimaryVars = 0;
-};
-
-/*!
- * \ingroup MPNCModel
- * \ingroup ImplicitIndices
- * \brief The indices required for the energy equation.
- */
-template <int PVOffset>
-struct MPNCEnergyIndices<PVOffset, /*isNonIsothermal=*/true, /*numEnergyEquations=*/ 1 >
-{
-public:
-    /*!
-     * \brief This module defines one new primary variable.
-     */
-    static const unsigned int numPrimaryVars = 1;
-
-    /*!
-     * \brief Index for the temperature in a vector of primary
-     *        variables.
-     */
-    static const unsigned int temperatureIdx = PVOffset + 0;
-    /*!
-     * \brief Equation index of the energy equation.
-     */
-    static const unsigned int energyEqIdx = PVOffset + 0;
-};
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/indiceskinetic.hh b/dumux/porousmediumflow/mpnc/implicit/energy/indiceskinetic.hh
deleted file mode 100644
index dcbf9563dd37873d046c88ad1a12c2f4218adafa..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/indiceskinetic.hh
+++ /dev/null
@@ -1,167 +0,0 @@
-// -*- 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 The indices for the thermal non-equilibrium part of the MpNc model.
- */
-#ifndef DUMUX_MPNC_INDICES_ENERGY_KINETIC_HH
-#define DUMUX_MPNC_INDICES_ENERGY_KINETIC_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/indices.hh>
-
-namespace Dumux
-{
-
-/*!
- * \brief The indices required for the energy equation. Specialization for the case of
- *        *3* energy balance equations.
- */
-template <int PVOffset>
-struct MPNCEnergyIndices<PVOffset, /*enableEnergy=*/true, /*numEnergyEquations=*/3>
-{
-public:
-    /*!
-     * \brief This module defines one new primary variable.
-     */
-    static const unsigned int numPrimaryVars = 3;
-
-    /*!
-     * \brief Index for the temperature of the wetting phase in a vector of primary
-     *        variables.
-     */
-    static const unsigned int temperature0Idx = PVOffset + 0;
-
-    /*!
-     * \brief Compatibility with non kinetic models
-     */
-    static const unsigned int temperatureIdx = temperature0Idx;
-    /*!
-     * \brief Equation index of the energy equation.
-     */
-    static const unsigned int energyEq0Idx = PVOffset + 0;
-    /*!
-     * \brief Compatibility with non kinetic models
-     */
-    static const unsigned int energyEqIdx = energyEq0Idx;
-};
-
-/*!
- * \brief The indices required for the energy equation. Specialization for the case of
- *        *2* energy balance equations.
- */
-template <int PVOffset>
-struct MPNCEnergyIndices<PVOffset, /*enableEnergy=*/true, /*numEnergyEquations=*/2>
-{
-public:
-    /*!
-     * \brief This module defines one new primary variable.
-     */
-    static const unsigned int numPrimaryVars = 2;
-
-    /*!
-     * \brief Index for the temperature of the wetting phase in a vector of primary
-     *        variables.
-     */
-    static const unsigned int temperature0Idx = PVOffset + 0;
-
-    /*!
-     * \brief Compatibility with non kinetic models
-     */
-    static const unsigned int temperatureIdx = temperature0Idx;
-    /*!
-     * \brief Equation index of the energy equation.
-     */
-    static const unsigned int energyEq0Idx = PVOffset + 0;
-    /*!
-     * \brief Equation index of the energy equation.
-     */
-    static const unsigned int energyEqSolidIdx = energyEq0Idx + numPrimaryVars - 1  ;
-
-    /*!
-     * \brief Index for storing e.g. temperature fluidState
-     */
-    static const unsigned int  temperatureFluidIdx = 0 ;
-    static const unsigned int  temperatureSolidIdx = 1 ;
-
-
-    /*!
-     * \brief Compatibility with non kinetic models
-     */
-    static const unsigned int energyEqIdx = energyEq0Idx;
-
-
-};
-
-/*!
- * \brief The indices required for the energy equation.
- */
-template <int PVOffset, bool isNonIsothermal>
-struct MPNCEnergyIndices<PVOffset, isNonIsothermal, /*numEnergyEquations=*/1 >
-{
-public:
-    /*!
-     * \brief This module defines one new primary variable.
-     */
-    static const unsigned int numPrimaryVars = 1;
-
-    /*!
-     * \brief Index for the temperature in a vector of primary
-     *        variables.
-     */
-    static const unsigned int temperatureIdx = PVOffset + 0;
-    /*!
-     * \brief Equation index of the energy equation.
-     */
-    static const unsigned int energyEqIdx = PVOffset + 0;
-};
-
-/*!
- * \brief The indices for the energy equation.
- *
- * This is a dummy class for the isothermal case.
- */
-template <int PVOffset>
-struct MPNCEnergyIndices<PVOffset, /*isNonIsothermal=*/false, /*numEnergyEquations*/0>
-{
-public:
-    /*!
-     * \brief This module does not define any primary variables in the
-     *        isothermal case.
-     */
-    static const unsigned int numPrimaryVars = 0;
-
-    /*!
-     * \brief Equation index of the temperature primary variable. This
-     *        is a dummy value which hopefully makes the simulation
-     *        crash if used.
-     */
-    static const unsigned int temperatureIdx = -1;
-
-    /*!
-     * \brief Equation index of the energy equation. This is a dummy
-     *        value which hopefully makes the simulation crash if used.
-     */
-    static const unsigned int energyEqIdx = -1;
-};
-
-
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/localresidual.hh b/dumux/porousmediumflow/mpnc/implicit/energy/localresidual.hh
deleted file mode 100644
index 1c26b4c5415f3b2ce5208b55c06412ed3f011309..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/localresidual.hh
+++ /dev/null
@@ -1,299 +0,0 @@
-// -*- 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 This file contains the parts of the local residual to
- *        calculate the heat flux in the fully coupled MpNc model.
- */
-#ifndef DUMUX_MPNC_LOCAL_RESIDUAL_ENERGY_HH
-#define DUMUX_MPNC_LOCAL_RESIDUAL_ENERGY_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-
-namespace Dumux {
-
-/*!
- * \brief Specialization of the energy module for the isothermal case.
- *
- * This class just does nothing.
- */
-template <class TypeTag, bool enableEnergy/*=false*/, int numEnergyEquations /*=0*/>
-class MPNCLocalResidualEnergy
-{
-    static_assert(!(numEnergyEquations && !enableEnergy),
-                  "No kinetic energy transfer may only be enabled "
-                  "if energy is enabled in general.");
-    static_assert(!numEnergyEquations,
-                  "No kinetic energy transfer module included, "
-                  "but kinetic energy transfer enabled.");
-
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-
-    enum { numPhases        = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents    = GET_PROP_VALUE(TypeTag, NumComponents) };
-
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-
-public:
-    /*!
-     * \brief Evaluate the amount all conservation quantities
-     *        (e.g. phase mass) within a sub-control volume.
-     *
-     * The result should be averaged over the volume (e.g. phase mass
-     * inside a sub-control volume divided by the volume)
-     *
-     *  \param storage The mass of the component within the sub-control volume
-     *  \param volVars the Volume Variables
-     */
-    static void computeStorage(PrimaryVariables &storage,
-                               const VolumeVariables &volVars)
-    {
-        // do nothing, we're isothermal!
-    }
-
-    /*!
-     * \brief Calculate the storage for all mass balance equations
-     *        within a single fluid phase
-     *
-     *  \param storage The mass of the component within the sub-control volume
-     *  \param volVars the Volume Variables
-     *  \param phaseIdx The local index of the phases
-     */
-    static void addPhaseStorage(PrimaryVariables &storage,
-                                const VolumeVariables &volVars,
-                                const unsigned int phaseIdx)
-    {
-        // do nothing, we're isothermal!
-    }
-
-    /*!
-     * \brief Evaluates the total flux of all conservation quantities
-     *        over a face of a sub-control volume.
-     *
-     * \param flux The flux over the SCV (sub-control-volume) face for each component
-     * \param fluxVars The flux variables
-     * \param volVars The volume variables
-     * \param molarPhaseComponentValuesMassTransport The component-wise flux within a phase. Needed for energy transport.
-     */
-    static void computeFlux(PrimaryVariables & flux,
-                                const FluxVariables & fluxVars,
-                                const ElementVolumeVariables & volVars,
-                                const ComponentVector molarPhaseComponentValuesMassTransport[numPhases])
-    {
-        // do nothing, we're isothermal!
-    }
-    /*!
-     * \brief Calculate the source term of the equation
-     *
-     * \param source The source/sink in the sub-control volume for each component
-     * \param volVars The volume variables
-     * \param componentIntoPhaseMassTransfer The component-wise transfer from one phase. Needed for energy transfer.
-     *
-     */
-    static void computeSource(PrimaryVariables &source,
-                              const VolumeVariables &volVars,
-                              const ComponentVector componentIntoPhaseMassTransfer[numPhases])
-    {
-        // do nothing, we're isothermal!
-    }
-};
-
-
-template <class TypeTag>
-class MPNCLocalResidualEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquations=*/ 1 >
-{
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { energyEqIdx = Indices::energyEqIdx };
-
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-
-public:
-    /*!
-     * \brief Evaluate the amount all conservation quantities
-     *        (e.g. phase mass) within a sub-control volume.
-     *
-     * The result should be averaged over the volume (e.g. phase mass
-     * inside a sub-control volume divided by the volume)
-     *
-     *  \param storage The mass of the component within the sub-control volume
-     *  \param volVars the Volume Variables
-     */
-    static void computeStorage(PrimaryVariables &storage,
-                               const VolumeVariables &volVars)
-    {
-        storage[energyEqIdx] = 0;
-
-        // energy of the fluids
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            addPhaseStorage(storage, volVars, phaseIdx);
-        }
-
-        // heat stored in the rock matrix
-        storage[energyEqIdx] +=
-            volVars.temperature(/*phaseIdx=*/0)
-            * volVars.solidDensity()
-            * (1.0 - volVars.porosity())
-            * volVars.solidHeatCapacity();
-    }
-    /*!
-     * \brief Calculate the storage for all mass balance equations
-     *        within a single fluid phase
-     *
-     *  \param storage The mass of the component within the sub-control volume
-     *  \param volVars the Volume Variables
-     *  \param phaseIdx The local index of the phases
-     */
-    static void addPhaseStorage(PrimaryVariables &storage,
-                                const VolumeVariables &volVars,
-                                const unsigned int phaseIdx)
-    {
-        const FluidState &fs = volVars.fluidState();
-
-        // energy of the fluid
-        storage[energyEqIdx] +=
-            fs.density(phaseIdx)
-            * fs.internalEnergy(phaseIdx)
-            * fs.saturation(phaseIdx)
-            * volVars.porosity();
-
-#ifndef NDEBUG
-using std::isfinite;
-if (!isfinite(storage[energyEqIdx]))
-    DUNE_THROW(NumericalProblem, "Calculated non-finite energy storage");
-#endif
-    }
-    /*!
-      * \brief Evaluates the total flux of all conservation quantities
-      *        over a face of a sub-control volume.
-      *
-      * \param flux The flux over the SCV (sub-control-volume) face for each component
-      * \param fluxVars The flux Variables
-      * \param elemVolVars The volume variables of the current element
-      * \param molarPhaseComponentValuesMassTransport The component-wise flux within a phase. Needed for energy transport.
-      */
-    static void computeFlux(PrimaryVariables & flux,
-                            const FluxVariables & fluxVars,
-                            const ElementVolumeVariables & elemVolVars,
-                            const ComponentVector molarPhaseComponentValuesMassTransport[numPhases])
-    {
-        flux[energyEqIdx] = 0.0;
-
-        // fluid phases transport enthalpy individually
-        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx)
-            computePhaseEnthalpyFlux(flux,
-                                fluxVars,
-                                elemVolVars,
-                                phaseIdx,
-                                molarPhaseComponentValuesMassTransport[phaseIdx]);
-
-        //conduction is treated lumped in this model
-        computeHeatConduction(flux,
-                             fluxVars,
-                             elemVolVars);
-    }
-    /*!
-        * \brief The advective Flux of the enthalpy
-        *        \param flux The flux over the SCV (sub-control-volume) face for each component
-        *        \param fluxVars The flux Variables
-        *        \param elemVolVars The volume variables of the current element
-        *        \param phaseIdx The local index of the phases
-        *        \param molarComponentValuesMassTransport The component-wise flux in the current phase. Needed for energy transport.
-        */
-    static void computePhaseEnthalpyFlux(PrimaryVariables & flux,
-                                         const FluxVariables & fluxVars,
-                                         const ElementVolumeVariables & elemVolVars,
-                                         const unsigned int phaseIdx,
-                                         const ComponentVector & molarComponentValuesMassTransport)
-    {
-        Scalar massFlux = 0;
-
-        // calculate the mass flux in the phase i.e. make mass flux out of mole flux and add up the fluxes of a phase
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-            massFlux += molarComponentValuesMassTransport[compIdx]
-                                    * FluidSystem::molarMass(compIdx);
-
-        unsigned int upIdx = fluxVars.face().i;
-        if (massFlux < 0) upIdx = fluxVars.face().j;
-
-        // use the phase enthalpy of the upstream vertex to calculate
-        // the enthalpy transport
-        const VolumeVariables &up = elemVolVars[upIdx];
-        flux[energyEqIdx] += up.enthalpy(phaseIdx) * massFlux;
-#ifndef NDEBUG
-using std::isfinite;
-if (!isfinite(flux[energyEqIdx]) )
-    DUNE_THROW(NumericalProblem, "Calculated non-finite energy flux");
-#endif
-    }
-    /*!
-        * \brief The heat conduction in the phase
-        *
-        *        \param flux The flux over the SCV (sub-control-volume) face for each component
-        *        \param fluxVars The flux Variables
-        *        \param elemVolVars The volume variables of the current element
-        */
-    static void computeHeatConduction(PrimaryVariables & flux,
-                                    const FluxVariables & fluxVars,
-                                    const ElementVolumeVariables & elemVolVars)
-    {
-        //lumped heat conduction of the rock matrix and the fluid phases
-        Scalar lumpedConductivity   = fluxVars.fluxVarsEnergy().lambdaEff() ;
-        Scalar temperatureGradientNormal  = fluxVars.fluxVarsEnergy().temperatureGradientNormal() ;
-        Scalar lumpedHeatConduction = - lumpedConductivity * temperatureGradientNormal ;
-        flux[energyEqIdx] += lumpedHeatConduction;
-#ifndef NDEBUG
-using std::isfinite
-if (!isfinite(flux[energyEqIdx]) )
-    DUNE_THROW(NumericalProblem, "Calculated non-finite energy flux");
-#endif
-    }
-
-    /*!
-     * \brief Calculate the source term of the equation
-     *
-     * \param source The source/sink in the sub-control volume for each component
-     * \param volVars The volume variables
-     * \param componentIntoPhaseMassTransfer The component-wise transfer from one phase. Needed for energy transfer.
-     */
-    static void computeSource(PrimaryVariables &source,
-                              const VolumeVariables &volVars,
-                              const ComponentVector componentIntoPhaseMassTransfer[numPhases])
-    {
-        source[energyEqIdx] = 0.0;
-    }
-};
-
-}
-
-#endif // DUMUX_MPNC_ENERGY_HH
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/localresidualkinetic.hh b/dumux/porousmediumflow/mpnc/implicit/energy/localresidualkinetic.hh
deleted file mode 100644
index 80b988da48b4e022bc0eef2c8ad15810a0c3ce66..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/localresidualkinetic.hh
+++ /dev/null
@@ -1,791 +0,0 @@
-// -*- 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
- *
- * \brief This file contains the parts of the local residual to
- *        calculate the heat conservation in the thermal non-equilibrium M-phase
- *        N-component model.
- */
-#ifndef DUMUX_MPNC_LOCAL_RESIDUAL_ENERGY_KINETIC_HH
-#define DUMUX_MPNC_LOCAL_RESIDUAL_ENERGY_KINETIC_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/localresidual.hh>
-#include <dumux/common/spline.hh>
-
-
-namespace Dumux
-{
-
-/*!
- * \brief Specialization for the case of *3* energy balance equations.
- */
-template <class TypeTag>
-class MPNCLocalResidualEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquations=*/3>
-{
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-
-    enum { numPhases        = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents    = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { energyEq0Idx     = Indices::energyEq0Idx };
-    enum { numEnergyEqs     = Indices::numPrimaryEnergyVars};
-    enum { wPhaseIdx        = FluidSystem::wPhaseIdx};
-    enum { nPhaseIdx        = FluidSystem::nPhaseIdx};
-    enum { nCompIdx         = FluidSystem::nCompIdx};
-    enum { wCompIdx         = FluidSystem::wCompIdx};
-    enum { sPhaseIdx        = FluidSystem::sPhaseIdx};
-
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-    using PhaseComponentMatrix = Dune::FieldMatrix<Scalar, numPhases, numComponents>;
-
-public:
-    /*!
-     * \brief Evaluate the amount all conservation quantities
-     *        (e.g. phase mass) within a sub-control volume.
-     *
-     * The result should be averaged over the volume (e.g. phase mass
-     * inside a sub-control volume divided by the volume)
-     *
-     *  \param storage The mass of the component within the sub-control volume
-     *  \param volVars the Volume Variables
-     */
-    static void computeStorage(PrimaryVariables & storage,
-                                  const VolumeVariables & volVars)
-    {
-        for(int energyEqIdx=0; energyEqIdx< numEnergyEqs; energyEqIdx++)
-            storage[energyEq0Idx+energyEqIdx] = 0;
-
-        // energy of the fluids
-        for (int phaseIdx = 0; phaseIdx < numEnergyEqs; ++phaseIdx) {
-            addPhaseStorage(storage, volVars, phaseIdx);
-        }
-    }
-    /*!
-     * \brief BEWARE !!!
-     * Here comes some problem with the phase-specific conservation of energy:
-     * Imagine a displacement process, with the initial state being a fully saturated porous medium.
-     * If the residing phase is now displaced by another phase, what happens at the front of the process?
-     * At the very front there is one cell in which the invading phase enters and no invading (but residing) phase leaves.
-     * With enthalpy in the flux term and internal energy in the storage term,
-     * the difference (pv) has to be converted into temperature in order to fulfill energy conservation.
-     * -> A temperature peak at the front arises (if spatial discretization is sufficiently fine).
-     * This peak has a maximum value and does not increase with further refinement.
-     * -> Further evidence for this explanation: in a simple setting (constant parameters,
-     * few cells) the temperature peak can be correctly predicted a priori.
-     * -> -> For those situations with a distinct displacement process the same quantity has to be stored and transported
-     * This is equivalent to neglecting volume changing work.
-     *
-     * \brief Calculate the storage for all mass balance equations
-     *        within a single fluid phase
-     *
-     *  \param storage The mass of the component within the sub-control volume
-     *  \param volVars the Volume Variables
-     *  \param phaseIdx The local index of the phases
-     */
-    static void addPhaseStorage(PrimaryVariables & storage,
-                                const VolumeVariables & volVars,
-                                const unsigned int phaseIdx)
-    {
-
-        const FluidState & fs = volVars.fluidState();
-
-        if (phaseIdx not_eq sPhaseIdx) {
-            storage[energyEq0Idx + phaseIdx] +=
-                    fs.density(phaseIdx) *
-                    fs.internalEnergy(phaseIdx) *
-                    fs.saturation(phaseIdx) *
-                    volVars.porosity();
-        }
-        else if(phaseIdx == sPhaseIdx) {
-            // heat stored in the rock matrix
-            storage[energyEq0Idx+phaseIdx] += volVars.temperature(phaseIdx) *
-                                               volVars.solidDensity() *
-                                               (1.-volVars.porosity()) *
-                                               volVars.solidHeatCapacity();
-        }
-        else
-            DUNE_THROW(Dune::NotImplemented,
-                    "wrong index");
-
-        using std::isfinite;
-        if (!isfinite(storage[energyEq0Idx+phaseIdx]))
-            DUNE_THROW(NumericalProblem, "Calculated non-finite storage");
-
-    }
-    /*!
-     * \brief Evaluates the total flux of all conservation quantities
-     *        over a face of a sub-control volume.
-     *
-     * \param flux The flux over the SCV (sub-control-volume) face for each component
-     * \param fluxVars The flux Variables
-     * \param elemVolVars The volume variables of the current element
-     * \param molarPhaseComponentValuesMassTransport
-     */
-    static void computeFlux(PrimaryVariables & flux,
-                            const FluxVariables & fluxVars,
-                            const ElementVolumeVariables & elemVolVars,
-                            const ComponentVector molarPhaseComponentValuesMassTransport[numPhases])
-    {
-        // reset all energy fluxes
-        for(int energyEqIdx=0; energyEqIdx<numEnergyEqs; ++energyEqIdx)
-            flux[energyEq0Idx + energyEqIdx] = 0.0;
-
-        // only the fluid phases transport enthalpy
-        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx)
-            computePhaseEnthalpyFlux(flux,
-                                     fluxVars,
-                                     elemVolVars,
-                                     phaseIdx,
-                                     molarPhaseComponentValuesMassTransport[phaseIdx]);
-
-        // all phases take part in conduction
-        for(int energyEqIdx=0; energyEqIdx<numEnergyEqs; ++energyEqIdx){
-            computeHeatConduction(flux,
-                                  fluxVars,
-                                  elemVolVars,
-                                  energyEqIdx);
-            using std::isfinite;
-            if (!isfinite(flux[energyEq0Idx + energyEqIdx]))
-                DUNE_THROW(NumericalProblem, "Calculated non-finite flux in phase " << energyEqIdx);
-        }
-    }
-    /*!
-          * \brief the advective Flux of the enthalpy
-          *        \param flux The flux over the SCV (sub-control-volume) face for each component
-          *        \param fluxVars The flux Variables
-          *        \param elemVolVars The volume variables of the current element
-          *        \param phaseIdx The local index of the phases
-          *        \param molarComponentValuesMassTransport
-          */
-    static void computePhaseEnthalpyFlux(PrimaryVariables & flux,
-                                         const FluxVariables & fluxVars,
-                                         const ElementVolumeVariables & elemVolVars,
-                                         const unsigned int phaseIdx,
-                                         const ComponentVector & molarComponentValuesMassTransport)
-    {
-        Scalar massFlux = 0; // mass flux is not the perfect term: sum_kappa (rho_alpha v_alpha x_alpha^kappa) = v_alpha rho_alpha
-
-        // calculate the mass flux in the phase i.e. make mass flux out
-        // of mole flux and add up the fluxes of a phase
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx){
-            massFlux += molarComponentValuesMassTransport[compIdx]
-                          * FluidSystem::molarMass(compIdx)        ;
-        }
-
-        unsigned int upIdx = fluxVars.face().i;
-        unsigned int dnIdx = fluxVars.face().j;
-        if (massFlux < 0){
-            upIdx = fluxVars.face().j;
-            dnIdx = fluxVars.face().i;
-        }
-
-        // use the phase enthalpy of the upstream vertex to calculate
-        // the enthalpy transport
-        const VolumeVariables & up = elemVolVars[upIdx];
-        const VolumeVariables & dn = elemVolVars[dnIdx];
-
-
-        // CAUTION: this is not exactly correct: does diffusion carry the upstream phase enthalpy?
-        // To be more precise this should be the components enthalpy.
-        // In the same vein: Counter current diffusion is not accounted for here.
-        const Scalar transportedThingUp =  up.enthalpy(phaseIdx) ;
-        const Scalar transportedThingDn =  dn.enthalpy(phaseIdx) ;
-
-
-        const Scalar massUpwindWeight_ = GET_PARAM_FROM_GROUP(TypeTag, Scalar, Implicit, MassUpwindWeight);
-        flux[energyEq0Idx + phaseIdx] += massFlux *
-                                            (massUpwindWeight_ * transportedThingUp
-                                                    +
-                                            (1.-massUpwindWeight_) * transportedThingDn ) ;
-    }
-    /*!
-        * \brief The heat conduction in the phase
-        *
-        *        \param flux The flux over the SCV (sub-control-volume) face for each component
-        *        \param fluxVars The flux Variables
-        *        \param elemVolVars The volume variables of the current element
-        *        \param phaseIdx The local index of the phases
-        */
-    static void computeHeatConduction(PrimaryVariables & flux,
-                                      const FluxVariables & fluxVars,
-                                      const ElementVolumeVariables & elemVolVars,
-                                      const unsigned int phaseIdx)
-    {
-        const unsigned int iIdx = fluxVars.face().i;
-        const unsigned int kIdx = fluxVars.face().j; // k can be better distinguished from i
-
-        const VolumeVariables & iVolVar = elemVolVars[iIdx];
-        const VolumeVariables & kVolVar = elemVolVars[kIdx];
-
-        const FluidState & iFluidState = iVolVar.fluidState();
-        const FluidState & kFluidState = kVolVar.fluidState();
-
-        const Scalar iPorosity      = iVolVar.porosity();
-        const Scalar kPorosity      = kVolVar.porosity();
-        const Scalar barPorosity    = harmonicMean(iPorosity, kPorosity);
-
-        const Scalar ilambda        = iVolVar.thermalConductivity(phaseIdx);
-        const Scalar klambda        = kVolVar.thermalConductivity(phaseIdx);
-
-        // Using a harmonic average is justified by its properties: if one phase does not conduct energy, there is no transfer
-        const Scalar barLambda      = harmonicMean(ilambda, klambda) ;
-
-        const Scalar gradientNormal = fluxVars.fluxVarsEnergy().temperatureGradient(phaseIdx)
-                                        * fluxVars.face().normal ;
-
-        // heat conduction of the rock matrix and the fluid phases
-        if (phaseIdx == sPhaseIdx){
-            flux[energyEq0Idx + phaseIdx] -= barLambda * gradientNormal * (1.-barPorosity) ;
-        }
-        else if (phaseIdx == wPhaseIdx or phaseIdx == nPhaseIdx){
-            const Scalar iSaturation    = iFluidState.saturation(phaseIdx);
-            const Scalar kSaturation    = kFluidState.saturation(phaseIdx);
-            const Scalar barSaturation = harmonicMean(iSaturation, kSaturation);
-            flux[energyEq0Idx + phaseIdx] -= barLambda * gradientNormal *  barPorosity * barSaturation  ;
-        }
-        else
-            DUNE_THROW(Dune::NotImplemented,
-                               "wrong index");
-    }
-    /*!
-       * \brief Calculate the source term of the equation
-       *
-       * \param source The source/sink in the sub-control volume for each component
-       * \param volVars The volume variables
-       * \param componentIntoPhaseMassTransfer
-       */
-
-    static void computeSource(PrimaryVariables & source,
-                              const VolumeVariables & volVars,
-                              const ComponentVector componentIntoPhaseMassTransfer[numPhases])
-    {
-        const Scalar awn = volVars.interfacialArea(wPhaseIdx, nPhaseIdx);
-        const Scalar aws = volVars.interfacialArea(wPhaseIdx, sPhaseIdx);
-        const Scalar ans = volVars.interfacialArea(nPhaseIdx, sPhaseIdx);
-
-        const Scalar Tw = volVars.temperature(wPhaseIdx);
-        const Scalar Tn = volVars.temperature(nPhaseIdx);
-        const Scalar Ts = volVars.temperature(sPhaseIdx);
-
-        const  Scalar lambdaWetting     = volVars.thermalConductivity(wPhaseIdx);
-        const  Scalar lambdaNonWetting  = volVars.thermalConductivity(nPhaseIdx);
-        const  Scalar lambdaSolid       = volVars.thermalConductivity(sPhaseIdx);
-
-        // Using a harmonic average is justified by its properties: if one phase does not conduct energy, there is no transfer
-        const Scalar lambdaWN      = harmonicMean(lambdaWetting, lambdaNonWetting);
-        const Scalar lambdaWS      = harmonicMean(lambdaWetting, lambdaSolid);
-        const Scalar lambdaNS      = harmonicMean(lambdaNonWetting, lambdaSolid);
-//      |------------------------------------------------------|
-//      |                          |                           |
-//      |                          |                           |
-//      |        alpha             |            i              |
-//      |       T_alpha            |           T_i             |
-//      |                          |                           |
-//      |                          |                           |
-//      |------------------------------------------------------|
-
-//      T_i > T_\alpha i.e. heat going into \alpha phase
-
-//        Q_{i \leadsto \alpha} = a_{\alpha i} lambda_{\alpha i} (T_i - T_\alpha) / d // i.e.: this is the r.h.s. of alpha
-        const Scalar characteristicLength   = volVars.characteristicLength()  ;
-        const Scalar factorEnergyTransfer   = volVars.factorEnergyTransfer()  ;
-
-        const Scalar nusseltWN      = harmonicMean(volVars.nusseltNumber(wPhaseIdx), volVars.nusseltNumber(nPhaseIdx));
-        const Scalar nusseltWS      = volVars.nusseltNumber(wPhaseIdx);
-        const Scalar nusseltNS      = volVars.nusseltNumber(nPhaseIdx);
-
-//#warning SET NUSSELT TO 1
-//        const Scalar nusseltWN      = 1. ;
-//        const Scalar nusseltWS      = 1. ;
-//        const Scalar nusseltNS      = 1. ;
-
-        const Scalar wettingToNonWettingEnergyExchange = factorEnergyTransfer * (Tw - Tn) / characteristicLength * awn * lambdaWN * nusseltWN  ;
-        const Scalar wettingToSolidEnergyExchange      = factorEnergyTransfer * (Tw - Ts) / characteristicLength * aws * lambdaWS * nusseltWS  ;
-        const Scalar nonWettingToSolidEnergyExchange   = factorEnergyTransfer * (Tn - Ts) / characteristicLength * ans * lambdaNS * nusseltNS  ;
-
-//#warning HEAT TRANSFER OFF
-//        const Scalar wettingToNonWettingEnergyExchange = 0. ;
-//        const Scalar wettingToSolidEnergyExchange      = 0. ;
-//        const Scalar nonWettingToSolidEnergyExchange   = 0. ;
-
-
-        for(int phaseIdx =0; phaseIdx<numEnergyEqs; ++phaseIdx){
-            switch (phaseIdx){
-            case wPhaseIdx:
-                source[energyEq0Idx + phaseIdx] =  ( - wettingToNonWettingEnergyExchange - wettingToSolidEnergyExchange);
-                break;
-            case nPhaseIdx:
-                source[energyEq0Idx + phaseIdx] =  (+ wettingToNonWettingEnergyExchange - nonWettingToSolidEnergyExchange);
-                break;
-            case sPhaseIdx:
-                source[energyEq0Idx + phaseIdx] =  (+ wettingToSolidEnergyExchange + nonWettingToSolidEnergyExchange);
-                break;
-            default:
-                DUNE_THROW(Dune::NotImplemented,
-                           "wrong index");
-            } // end switch
-
-
-            using std::isfinite;
-            if (!isfinite(source[energyEq0Idx + phaseIdx]))
-                DUNE_THROW(NumericalProblem, "Calculated non-finite source, " << "Tw="<< Tw << " Tn="<< Tn<< " Ts="<< Ts);
-        }// end phases
-
-#define MASS_ENERGY_TRANSPORT 1
-#if MASS_ENERGY_TRANSPORT
-// 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
-
-        // The fluidsystem likes to get a fluidstate. ...
-        const FluidState & fluidState = volVars.fluidState();
-
-        for(int phaseIdx =0; phaseIdx<numEnergyEqs; ++phaseIdx){
-            switch (phaseIdx){
-            case wPhaseIdx:
-                source[energyEq0Idx + phaseIdx] += (componentIntoPhaseMassTransfer[wPhaseIdx][nCompIdx]
-                                                    * FluidSystem::molarMass(nCompIdx)
-                                                    * FluidSystem::componentEnthalpy(fluidState, nPhaseIdx, nCompIdx) );
-                source[energyEq0Idx + phaseIdx] += (componentIntoPhaseMassTransfer[wPhaseIdx][wCompIdx]
-                                                    * FluidSystem::molarMass(wCompIdx)
-                                                    * FluidSystem::componentEnthalpy(fluidState, nPhaseIdx, wCompIdx));
-                break;
-            case nPhaseIdx:
-                source[energyEq0Idx + phaseIdx] += (componentIntoPhaseMassTransfer[nPhaseIdx][nCompIdx]
-                                                    * FluidSystem::molarMass(nCompIdx)
-                                                    * FluidSystem::componentEnthalpy(fluidState, wPhaseIdx, nCompIdx));
-                source[energyEq0Idx + phaseIdx] += (componentIntoPhaseMassTransfer[nPhaseIdx][wCompIdx]
-                                                    * FluidSystem::molarMass(wCompIdx)
-                                                    * FluidSystem::componentEnthalpy(fluidState, wPhaseIdx, wCompIdx));
-                break;
-            case sPhaseIdx:
-                break; // no sorption
-            default:
-                DUNE_THROW(Dune::NotImplemented,
-                           "wrong index");
-            } // end switch
-        }// end phases
-#endif //MASS_ENERGY_TRANSPORT
-        Valgrind::CheckDefined(source);
-    }// end source
-};
-
-
-/*!
- * \brief Specialization for the case of *2* energy balance equations.
- */
-template <class TypeTag>
-class MPNCLocalResidualEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquations=*/2>
-{
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-
-    enum { numPhases        = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents    = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { energyEq0Idx     = Indices::energyEq0Idx };
-    enum { numEnergyEqs     = Indices::numPrimaryEnergyVars};
-    enum { wPhaseIdx        = FluidSystem::wPhaseIdx};
-    enum { nPhaseIdx        = FluidSystem::nPhaseIdx};
-    enum { nCompIdx         = FluidSystem::nCompIdx};
-    enum { wCompIdx         = FluidSystem::wCompIdx};
-    enum { sPhaseIdx        = FluidSystem::sPhaseIdx};
-    enum { energyEqSolidIdx = Indices::energyEqSolidIdx};
-    enum { temperatureFluidIdx = Indices::temperatureFluidIdx};
-    enum { temperatureSolidIdx = Indices::temperatureSolidIdx};
-    enum { dim = GridView::dimension}; // Grid and world dimension
-
-
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-    using PhaseComponentMatrix = Dune::FieldMatrix<Scalar, numPhases, numComponents>;
-    using ParameterCache = typename FluidSystem::ParameterCache;
-
-    using ParentType = typename GET_PROP_TYPE(TypeTag, BaseLocalResidual);
-    using Spline = Dumux::Spline<Scalar>;
-
-
-public:
-    /*! \brief Evaluate the amount all conservation quantities
-     *        (e.g. phase mass) within a sub-control volume.
-     *
-     * The result should be averaged over the volume (e.g. phase mass
-     * inside a sub-control volume divided by the volume)
-     *
-     *  \param storage The mass of the component within the sub-control volume
-     *  \param volVars the Volume Variables
-     */
-    static void computeStorage(PrimaryVariables & storage,
-                                  const VolumeVariables & volVars)
-    {
-        for(int energyEqIdx=0; energyEqIdx< numEnergyEqs; energyEqIdx++)
-            storage[energyEq0Idx+energyEqIdx] = 0;
-
-        // energy of the fluids
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            addPhaseStorage(storage, volVars, phaseIdx);
-        }
-        // heat stored in the rock matrix
-        storage[energyEqSolidIdx] +=
-            volVars.temperature(temperatureSolidIdx)
-            * volVars.solidDensity()
-            * (1.0 - volVars.porosity())
-            * volVars.solidHeatCapacity();
-
-        using std::isfinite;
-        if (!isfinite(storage[energyEqSolidIdx]))
-            DUNE_THROW(NumericalProblem, "Calculated non-finite storage");
-    }
-
-    /*! \brief Calculate the storage for all mass balance equations
-     *        within a single fluid phase
-     *
-     *  \param storage The mass of the component within the sub-control volume
-     *  \param volVars the Volume Variables
-     *  \param phaseIdx The local index of the phases
-     */
-    static void addPhaseStorage(PrimaryVariables & storage,
-                                const VolumeVariables & volVars,
-                                const unsigned int phaseIdx)
-    {
-
-        const FluidState & fs = volVars.fluidState();
-
-        if (phaseIdx not_eq sPhaseIdx) {
-            storage[energyEq0Idx ] +=
-                    fs.density(phaseIdx) *
-                    fs.internalEnergy(phaseIdx) *
-                    fs.saturation(phaseIdx) *
-                    volVars.porosity();
-        }
-        else
-            DUNE_THROW(Dune::NotImplemented,
-                    "wrong index");
-
-        using std::isfinite;
-        if (!isfinite(storage[energyEq0Idx]))
-            DUNE_THROW(NumericalProblem, "Calculated non-finite storage");
-    }
-
-    /*!\brief Evaluates the total flux of all conservation quantities
-     *        over a face of a sub-control volume.
-     *
-     * \param flux The flux over the SCV (sub-control-volume) face for each component
-     * \param fluxVars The flux Variables
-     * \param elemVolVars The volume variables of the current element
-     * \param molarPhaseComponentValuesMassTransport
-     */
-    static void computeFlux(PrimaryVariables & flux,
-                            const FluxVariables & fluxVars,
-                            const ElementVolumeVariables & elemVolVars,
-                            const ComponentVector molarPhaseComponentValuesMassTransport[numPhases])
-    {
-        // reset all energy fluxes
-        for(int energyEqIdx=0; energyEqIdx<numEnergyEqs; ++energyEqIdx)
-            flux[energyEq0Idx + energyEqIdx] = 0.0;
-
-        // only the fluid phases transport enthalpy
-        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx)
-            computePhaseEnthalpyFlux(flux,
-                                     fluxVars,
-                                     elemVolVars,
-                                     phaseIdx,
-                                     molarPhaseComponentValuesMassTransport[phaseIdx]);
-
-        // all phases take part in conduction
-        for(int energyEqIdx=0; energyEqIdx<numEnergyEqs; ++energyEqIdx){
-            computeHeatConduction(flux,
-                                  fluxVars,
-                                  elemVolVars,
-                                  energyEqIdx);
-
-            using std::isfinite;
-            if (!isfinite(flux[energyEq0Idx + energyEqIdx]))
-                DUNE_THROW(NumericalProblem, "Calculated non-finite flux in phase " << energyEqIdx);
-        }
-    }
-
-    /*! \brief the advective Flux of the enthalpy
-      *        \param flux The flux over the SCV (sub-control-volume) face for each component
-      *        \param fluxVars The flux Variables
-      *        \param elemVolVars The volume variables of the current element
-      *        \param phaseIdx The local index of the phases
-      *        \param molarComponentValuesMassTransport
-      */
-    static void computePhaseEnthalpyFlux(PrimaryVariables & flux,
-                                         const FluxVariables & fluxVars,
-                                         const ElementVolumeVariables & elemVolVars,
-                                         const unsigned int phaseIdx,
-                                         const ComponentVector & molarComponentValuesMassTransport)
-    {
-        Scalar massFlux = 0; // mass flux is not the perfect term: sum_kappa (rho_alpha v_alpha x_alpha^kappa) = v_alpha rho_alpha
-
-        // calculate the mass flux in the phase i.e. make mass flux out
-        // of mole flux and add up the fluxes of a phase
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx){
-            massFlux += molarComponentValuesMassTransport[compIdx]
-                          * FluidSystem::molarMass(compIdx)        ;
-        }
-
-        unsigned int upIdx = fluxVars.face().i;
-        unsigned int dnIdx = fluxVars.face().j;
-        if (massFlux < 0){
-            upIdx = fluxVars.face().j;
-            dnIdx = fluxVars.face().i;
-        }
-
-        // use the phase enthalpy of the upstream vertex to calculate
-        // the enthalpy transport
-        const VolumeVariables & up = elemVolVars[upIdx];
-        const VolumeVariables & dn = elemVolVars[dnIdx];
-
-        // CAUTION: this is not exactly correct: does diffusion carry the upstream phase enthalpy?
-        // To be more precise this should be the components enthalpy.
-        // In the same vein: Counter current diffusion is not accounted for here.
-        const Scalar transportedThingUp =  up.enthalpy(phaseIdx) ;
-        const Scalar transportedThingDn =  dn.enthalpy(phaseIdx) ;
-
-        const Scalar massUpwindWeight_ = GET_PARAM_FROM_GROUP(TypeTag, Scalar, Implicit, MassUpwindWeight);
-        flux[energyEq0Idx] += massFlux *
-                                            (massUpwindWeight_ * transportedThingUp
-                                                    +
-                                            (1.-massUpwindWeight_) * transportedThingDn ) ;
-    }
-
-    /*! \brief The heat conduction in the phase
-     *
-     *  \param flux The flux over the SCV (sub-control-volume) face for each component
-     *  \param fluxVars The flux Variables
-     *  \param elemVolVars The volume variables of the current element
-     *  \param energyEqIdx The index of the phase energy equation
-     */
-    static void computeHeatConduction(PrimaryVariables & flux,
-                                      const FluxVariables & fluxVars,
-                                      const ElementVolumeVariables & elemVolVars,
-                                      const unsigned int energyEqIdx)
-    {
-        const unsigned int iIdx = fluxVars.face().i;
-        const unsigned int kIdx = fluxVars.face().j; // k can be better distinguished from i
-
-        const VolumeVariables & iVolVar = elemVolVars[iIdx];
-        const VolumeVariables & kVolVar = elemVolVars[kIdx];
-
-        const Scalar iPorosity      = iVolVar.porosity();
-        const Scalar kPorosity      = kVolVar.porosity();
-        const Scalar barPorosity    = harmonicMean(iPorosity, kPorosity);
-
-        const Scalar iSolidLambda        = iVolVar.thermalConductivity(sPhaseIdx);
-        const Scalar kSolidLambda        = kVolVar.thermalConductivity(sPhaseIdx);
-
-        // Using a harmonic average is justified by its properties: if one phase does not conduct energy, there is no transfer
-        const Scalar barSolidLambda      = (iSolidLambda+kSolidLambda) / 2.0;
-
-        const Scalar lumpedConductivity   = fluxVars.fluxVarsEnergy().lambdaEff() ;
-
-        const Scalar gradientNormal = fluxVars.fluxVarsEnergy().temperatureGradient(energyEqIdx)
-                                        * fluxVars.face().normal ;
-
-        // heat conduction of the rock matrix and the fluid phases
-        if (energyEqIdx == temperatureSolidIdx){
-            flux[energyEqSolidIdx] -= barSolidLambda * (1.-barPorosity) * gradientNormal  ;
-        }
-        else if (energyEqIdx == temperatureFluidIdx){
-            flux[energyEq0Idx ] -= lumpedConductivity /*already includes porosity*/ * gradientNormal  ;
-        }
-        else
-            DUNE_THROW(Dune::NotImplemented,
-                               "wrong index");
-    }
-
-    /*! \brief Calculate the source term of the equation
-   *
-   * \param source The source/sink in the sub-control volume for each component
-   * \param volVars The volume variables
-   * \param componentIntoPhaseMassTransfer
-   */
-    static void computeSource(PrimaryVariables & source,
-                              const VolumeVariables & volVars,
-                              const ComponentVector componentIntoPhaseMassTransfer[numPhases])
-    {
-        const Scalar solidToFluidEnergyExchange = qsf(volVars) ;
-
-        for(int energyEqIdx =0; energyEqIdx<numEnergyEqs; ++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
-        Valgrind::CheckDefined(source);
-    }// end source
-
-
-    /*! \brief Calculate the whole energy transfer
-   *
-   * \param volVars The volume variables
-   */
-    static Scalar qsf(const VolumeVariables & volVars)
-    {
-        const FluidState & fs = volVars.fluidState() ;
-        const Scalar characteristicLength   = volVars.characteristicLength()  ;
-
-        // Shi & Wang, Transport in porous media (2011)
-        const Scalar as = 6.0 * (1.0-volVars.porosity()) / characteristicLength ;
-
-        const Scalar TFluid     = volVars.temperature(temperatureFluidIdx);
-        const Scalar TSolid     = volVars.temperature(temperatureSolidIdx);
-
-        const Scalar satW       = fs.saturation(wPhaseIdx) ;
-        const Scalar satN       = fs.saturation(nPhaseIdx) ;
-
-        const Scalar eps = 1e-6 ;
-        Scalar solidToFluidEnergyExchange ;
-
-        Scalar fluidConductivity ;
-        if (satW < 1.0 - eps)
-            fluidConductivity = volVars.thermalConductivity(nPhaseIdx) ;
-        else if (satW >= 1.0 - eps)
-            fluidConductivity = volVars.thermalConductivity(wPhaseIdx) ;
-        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(nPhaseIdx) ;
-
-        else if ( (satW >= 0 + eps) and (satW < 1.0-eps) ){
-            solidToFluidEnergyExchange *=  (volVars.nusseltNumber(nPhaseIdx) * satN );
-            Scalar qBoil ;
-
-            if (satW<=epsRegul){// regularize
-                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
-                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(wPhaseIdx) ;
-        else
-            DUNE_THROW(Dune::NotImplemented,
-                       "wrong range");
-
-        using std::isfinite;
-        if (!isfinite(solidToFluidEnergyExchange))
-                        DUNE_THROW(NumericalProblem, "Calculated non-finite source, " << "TFluid="<< TFluid << " TSolid="<< TSolid  );
-
-        return solidToFluidEnergyExchange ;
-    }
-
-    /*! \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 FluidState & fs = volVars.fluidState() ;
-    const Scalar g( 9.81 ) ;
-    const Scalar gamma(0.0589) ;
-        const Scalar TSolid     = volVars.temperature(temperatureSolidIdx);
-        const Scalar characteristicLength   = volVars.characteristicLength()  ;
-
-    using std::pow;
-    const Scalar as = 6.0 * (1.0-volVars.porosity()) / characteristicLength ;
-    const Scalar mul = fs.viscosity(wPhaseIdx) ;
-        const Scalar deltahv = fs.enthalpy(nPhaseIdx) - fs.enthalpy(wPhaseIdx);
-        const Scalar deltaRho = fs.density(wPhaseIdx) - fs.density(nPhaseIdx) ;
-    const Scalar firstBracket = pow(g * deltaRho / gamma, 0.5);
-    const Scalar cp = FluidSystem::heatCapacity(fs, wPhaseIdx) ;
-    // 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, nPhaseIdx ) ;
-    const Scalar deltaT = TSolid - Tsat ;
-    const Scalar secondBracket = pow( (cp *deltaT / (0.006 * deltahv)  ) , 3.0 ) ;
-    const Scalar Prl = volVars.prandtlNumber(wPhaseIdx) ;
-    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 // DUMUX_MPNC_LOCAL_RESIDUAL_ENERGY_KINETIC_HH
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/volumevariables.hh b/dumux/porousmediumflow/mpnc/implicit/energy/volumevariables.hh
deleted file mode 100644
index 51cc71e2360aa08cfa78182640f3fad67d800d10..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/volumevariables.hh
+++ /dev/null
@@ -1,248 +0,0 @@
-// -*- 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 Contains the energy part of volume variables of the MpNc model.
- */
-#ifndef DUMUX_MPNC_ENERGY_VOLUME_VARIABLES_HH
-#define DUMUX_MPNC_ENERGY_VOLUME_VARIABLES_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-#include <dumux/material/fluidstates/compositional.hh>
-
-namespace Dumux
-{
-/*!
- * \brief Contains the energy related quantities which are constant within a
- *        finite volume in a MpNc model.
- *
- * This is the dummy class for the isothermal case. Note that we're
- * only isothermal in the sense that the temperature at a location and
- * a time is specified outside of the model!
- */
-template <class TypeTag, bool enableEnergy/*=false*/, int numEnergyEquations /*=don't care*/>
-class MPNCVolumeVariablesEnergy
-{
-    static_assert(((numEnergyEquations < 1) && !enableEnergy),
-                  "No kinetic energy transfer may only be enabled "
-                  "if energy is enabled in general.");
-    static_assert(numEnergyEquations < 1,
-                  "No kinetic energy transfer module included, "
-                  "but kinetic energy transfer enabled.");
-
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-    enum {dimWorld=GridView::dimensionworld};
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-
-
-public:
-    /*!
-     * \brief Update the temperature of the sub-control volume.
-     *
-     * \param fs Container for all the secondary variables concerning the fluids
-     * \param paramCache Container for cache parameters
-     * \param priVars The primary Variables
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     */
-    void updateTemperatures(FluidState &fs,
-                            ParameterCache &paramCache,
-                            const PrimaryVariables &priVars,
-                            const Element &element,
-                            const FVElementGeometry &fvGeometry,
-                            const unsigned int scvIdx,
-                            const Problem &problem) const
-    {
-        Scalar T = problem.temperatureAtPos(fvGeometry.subContVol[scvIdx].global);
-        fs.setTemperature(T);
-    }
-
-
-    /*!
-     * \brief Update the enthalpy and the internal energy for a given
-     *        control volume.
-     * \param fs Container for all the secondary variables concerning the fluids
-     * \param paramCache Container for cache parameters
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     *
-     * Since we are isothermal, we don't need to do anything!
-     */
-    void update(FluidState &fs,
-                ParameterCache &paramCache,
-                const Element &element,
-                const FVElementGeometry &fvGeometry,
-                const unsigned int scvIdx,
-                const Problem &problem)
-    {
-    }
-
-    /*!
-     * \brief If running under valgrind this produces an error message
-     *        if some of the object's attributes is undefined.
-     */
-    void checkDefined() const
-    {
-    }
-};
-
-/*!
- * \brief Contains the energy related quantities which are constant within a
- *        finite volume in the two-phase, N-component model.
- */
-template <class TypeTag>
-class MPNCVolumeVariablesEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquations=*/ 1 >
-{
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-
-    enum { numPhases        = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { temperatureIdx   = Indices::temperatureIdx };
-    enum { numEnergyEqs     = Indices::numPrimaryEnergyVars};
-    enum { temperature0Idx = Indices::temperatureIdx };
-
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-
-    enum { dimWorld = GridView::dimensionworld};
-    using GlobalPosition = Dune::FieldVector<typename GridView::Grid::ctype, dimWorld>;
-
-public:
-    /*!
-     * \brief Update the temperature of the sub-control volume.
-     *
-     * \param fs Container for all the secondary variables concerning the fluids
-     * \param paramCache Container for cache parameters
-     * \param sol The primary Vaiables
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     */
-    void updateTemperatures(FluidState &fs,
-                            ParameterCache &paramCache,
-                            const PrimaryVariables &sol,
-                            const Element &element,
-                            const FVElementGeometry &fvGeometry,
-                            const unsigned int scvIdx,
-                            const Problem &problem) const
-    {
-        // retrieve temperature from solution vector
-        Scalar T = sol[temperatureIdx];
-        fs.setTemperature(T);
-    }
-
-    /*!
-     * \brief Update the enthalpy and the internal energy for a given
-     *        control volume.
-     * \param fs Container for all the secondary variables concerning the fluids
-     * \param paramCache Container for cache parameters
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     */
-    void update(FluidState &fs,
-                ParameterCache &paramCache,
-                const Element &element,
-                const FVElementGeometry &fvGeometry,
-                const unsigned int scvIdx,
-                const Problem &problem)
-    {
-        Valgrind::SetUndefined(*this);
-
-        // heat capacities of the fluids plus the porous medium
-        solidHeatCapacity_ =
-            problem.spatialParams().solidHeatCapacity(element, fvGeometry, scvIdx);
-        Valgrind::CheckDefined(solidHeatCapacity_);
-
-        solidDensity_ =
-            problem.spatialParams().solidDensity(element, fvGeometry, scvIdx);
-        Valgrind::CheckDefined(solidDensity_);
-
-        // set the enthalpies
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            Scalar h = FluidSystem::enthalpy(fs, paramCache, phaseIdx);
-            fs.setEnthalpy(phaseIdx, h);
-            thermalConductivity_[phaseIdx] = FluidSystem::thermalConductivity(fs, phaseIdx);
-        }
-    }
-
-    /*!
-     * \brief Returns the total heat capacity [J/(kg K)] of the rock matrix in
-     *        the sub-control volume.
-     */
-    Scalar solidHeatCapacity() const
-    { return solidHeatCapacity_; }
-
-    /*!
-     * \brief Returns the thermal conductivity \f$\mathrm{[W/(m*K)]}\f$ of the fluid phase in
-     *        the sub-control volume.
-     */
-    Scalar thermalConductivity(const unsigned int phaseIdx) const
-    { return thermalConductivity_[phaseIdx] ; }
-
-    /*!
-     * \brief Returns the total density of the given solid phase [kg / m^3] in
-     *        the sub-control volume.
-     */
-    Scalar solidDensity() const
-    { return solidDensity_; }
-
-    /*!
-     * \brief If running under valgrind this produces an error message
-     *        if some of the object's attributes is undefined.
-     */
-    void checkDefined() const
-    {
-        Valgrind::CheckDefined(solidHeatCapacity_);
-        Valgrind::CheckDefined(solidDensity_);
-    }
-
-protected:
-    Scalar solidHeatCapacity_;
-    Scalar solidDensity_;
-    Scalar thermalConductivity_[numPhases] ;
-};
-
-} // end namespace
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/volumevariableskinetic.hh b/dumux/porousmediumflow/mpnc/implicit/energy/volumevariableskinetic.hh
deleted file mode 100644
index 680b1efdec9d7bcac517088da2875a5426ecd221..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/volumevariableskinetic.hh
+++ /dev/null
@@ -1,442 +0,0 @@
-// -*- 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
- *
- * \brief Contains the volume variables of the kinetic energy transfer
- *        module of the M-phase, N-component model.
- */
-#ifndef DUMUX_MPNC_ENERGY_VOLUME_VARIABLES_KINETIC_HH
-#define DUMUX_MPNC_ENERGY_VOLUME_VARIABLES_KINETIC_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/volumevariables.hh>
-#include "vtkwriterkinetic.hh"
-
-namespace Dumux
-{
-/*!
- * \brief Contains the volume variables of the kinetic energy transfer
- *        module of the M-phase, N-component model.
- *        Specialization for the case of *3* energy balance equations.
- */
-template <class TypeTag>
-class MPNCVolumeVariablesEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquations=*/3>
-{
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { temperature0Idx = Indices::temperature0Idx };
-    enum { nPhaseIdx = FluidSystem::nPhaseIdx };
-    enum { wPhaseIdx = FluidSystem::wPhaseIdx };
-    enum { sPhaseIdx = FluidSystem::sPhaseIdx };
-    enum { numEnergyEqs     = Indices::numPrimaryEnergyVars};
-
-    /*!
-     * \brief The fluid state which is used by the volume variables to
-     *        store the thermodynamic state.
-     *
-     * If chemical equilibrium is not considered, we use the most
-     * generic fluid state.
-     */
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-
-public:
-    /*!
-     * \brief Update the temperature of the sub-control volume.
-     *
-     * \param priVars The primary variables
-     * \param element The finite Element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     * \param temperatureIdx The temperature Index
-     */
-    Scalar getTemperature(const PrimaryVariables & priVars,
-                          const Element & element,
-                          const FVElementGeometry & fvGeometry,
-                          const unsigned int scvIdx,
-                          const Problem & problem,
-                          const unsigned int temperatureIdx) const
-    {
-        // retrieve temperature from solution vector
-        return priVars[temperature0Idx + temperatureIdx]; // could also be solid phase
-    }
-
-    /*!
-     * \brief Update the temperature of the sub-control volume.
-     *
-     * \param fluidState Container for all the secondary variables concerning the fluids
-     * \param paramCache Container for cache parameters
-     * \param priVars The primary Variables
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     */
-    void updateTemperatures(FluidState & fluidState,
-                            ParameterCache & paramCache,
-                            const PrimaryVariables & priVars,
-                            const Element & element,
-                            const FVElementGeometry & fvGeometry,
-                            const unsigned int scvIdx,
-                            const Problem & problem)
-    {
-        assert(numPhases + 1 == numEnergyEqs);
-        for(int phaseIdx=0; phaseIdx < numPhases; ++phaseIdx){
-            // retrieve temperature from solution vector
-            const Scalar T = priVars[temperature0Idx + phaseIdx];
-            temperature_[phaseIdx]= T;
-            fluidState.setTemperature(phaseIdx, T);
-        }
-
-        temperature_[sPhaseIdx] = priVars[temperature0Idx + sPhaseIdx];
-
-      Valgrind::CheckDefined(temperature_);
-    }
-
-    /*!
-     * \brief Update the enthalpy and the internal energy for a given
-     *        control volume.
-     *
-     * \param fluidState Container for all the secondary variables concerning the fluids
-     * \param paramCache Container for cache parameters
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     */
-    void update(FluidState & fluidState,
-                ParameterCache & paramCache,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const unsigned int scvIdx,
-                const Problem & problem)
-    {
-        solidHeatCapacity_ =
-            problem.spatialParams().solidHeatCapacity(element, fvGeometry, scvIdx);
-        Valgrind::CheckDefined(solidHeatCapacity_);
-
-        for(int phaseIdx =0; phaseIdx<numPhases; ++phaseIdx){
-            fluidThermalConductivity_[phaseIdx] =
-          FluidSystem::thermalConductivity(fluidState, paramCache, phaseIdx);
-        }
-        Valgrind::CheckDefined(fluidThermalConductivity_);
-
-
-        solidDensity_ =
-                problem.spatialParams().solidDensity(element, fvGeometry, scvIdx);
-        Valgrind::CheckDefined(solidDensity_);
-
-        solidThermalConductivity_ =
-                problem.spatialParams().solidThermalConductivity(element, fvGeometry, scvIdx);
-        Valgrind::CheckDefined(solidThermalConductivity_);
-
-        // set the enthalpies
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            Scalar h = FluidSystem::enthalpy(fluidState, paramCache, phaseIdx);
-            Valgrind::CheckDefined(h);
-            fluidState.setEnthalpy(phaseIdx, h);
-        }
-    }
-
-    /*!
-     * \brief Returns the total heat capacity [J/(kg K)] of the rock matrix in
-     *        the sub-control volume.
-     */
-    Scalar solidHeatCapacity() const
-    { return solidHeatCapacity_; }
-
-    /*!
-     * \brief Returns the temperature in fluid / solid phase(s)
-     *        the sub-control volume.
-     * \param phaseIdx The local index of the phases
-     */
-    Scalar temperature(const unsigned int phaseIdx) const
-    { return temperature_[phaseIdx]; }
-
-    /*!
-     * \brief Returns the total density of the given solid phase [kg / m^3] in
-     *        the sub-control volume.
-     */
-    Scalar solidDensity() const
-    { return solidDensity_; }
-
-    /*!
-     * \brief Returns the conductivity of the given solid phase [W/(m K)] in
-     *        the sub-control volume.
-     */
-    Scalar solidThermalConductivity() const
-    { return solidThermalConductivity_; }
-
-    /*!
-     * \brief Returns the conductivity of the given fluid [W//m K)] in
-     *        the sub-control volume.
-     *
-     *   \param phaseIdx The local index of the phases
-     */
-    Scalar thermalConductivity(const unsigned int phaseIdx) const
-    {
-        if(phaseIdx == wPhaseIdx or phaseIdx == nPhaseIdx )
-            return fluidThermalConductivity_[phaseIdx];
-        else if (phaseIdx == sPhaseIdx )
-            return solidThermalConductivity_;
-        else
-            DUNE_THROW(Dune::NotImplemented,
-                    "wrong index");
-    }
-
-    void checkDefinedTemp() const
-    { Valgrind::CheckDefined(temperature_); }
-
-    /*!
-     * \brief If running under valgrind this produces an error message
-     *        if some of the object's attributes is undefined.
-     */
-    void checkDefined() const
-    {
-        Valgrind::CheckDefined(temperature_);
-        Valgrind::CheckDefined(fluidThermalConductivity_);
-        Valgrind::CheckDefined(solidThermalConductivity_);
-        Valgrind::CheckDefined(solidDensity_);
-        Valgrind::CheckDefined(solidHeatCapacity_);
-    }
-
-protected:
-    Scalar temperature_[numPhases + 1];
-    Scalar solidHeatCapacity_;
-    Scalar solidDensity_;
-    Scalar solidThermalConductivity_;
-    Scalar fluidThermalConductivity_[numPhases];
-};
-
-
-
-/*!
- * \brief Contains the volume variables of the kinetic energy transfer
- *        module of the M-phase, N-component model.
- *        Specialization for the case of *2* energy balance equations.
- */
-template <class TypeTag>
-class MPNCVolumeVariablesEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquations=*/2>
-{
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { temperature0Idx = Indices::temperature0Idx };
-    enum { nPhaseIdx = FluidSystem::nPhaseIdx };
-    enum { wPhaseIdx = FluidSystem::wPhaseIdx };
-    enum { sPhaseIdx = FluidSystem::sPhaseIdx };
-    enum { numEnergyEqs     = Indices::numPrimaryEnergyVars};
-
-    /*!
-     * \brief The fluid state which is used by the volume variables to
-     *        store the thermodynamic state.
-     *
-     * If chemical equilibrium is not considered, we use the most
-     * generic fluid state.
-     */
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-
-public:
-    /*!
-     * \brief Update the temperature of the sub-control volume.
-     *
-     * \param priVars The primary variables
-     * \param element The finite Element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     * \param temperatureIdx The temperature Index
-     */
-    Scalar getTemperature(const PrimaryVariables & priVars,
-                          const Element & element,
-                          const FVElementGeometry & fvGeometry,
-                          const unsigned int scvIdx,
-                          const Problem & problem,
-                          const unsigned int temperatureIdx) const
-    {
-        // retrieve temperature from solution vector
-        return priVars[temperature0Idx + temperatureIdx]; // could also be solid phase
-    }
-
-    /*!
-     * \brief Update the temperature of the sub-control volume.
-     *
-     * \param fluidState Container for all the secondary variables concerning the fluids
-     * \param paramCache Container for cache parameters
-     * \param priVars The primary Variables
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     */
-    void updateTemperatures(FluidState & fluidState,
-                            ParameterCache & paramCache,
-                            const PrimaryVariables & priVars,
-                            const Element & element,
-                            const FVElementGeometry & fvGeometry,
-                            const unsigned int scvIdx,
-                            const Problem & problem)
-    {
-        assert(2 == numEnergyEqs);
-
-        for(int energyEqIdx=0; energyEqIdx < numPhases; ++energyEqIdx){
-            // retrieve temperature from solution vector
-            const Scalar T = priVars[temperature0Idx + energyEqIdx];
-            temperature_[energyEqIdx]= T;
-        }
-
-        fluidState.setTemperature(priVars[temperature0Idx]);
-
-      Valgrind::CheckDefined(temperature_);
-    }
-
-    /*!
-     * \brief Update the enthalpy and the internal energy for a given
-     *        control volume.
-     *
-     * \param fluidState Container for all the secondary variables concerning the fluids
-     * \param paramCache Container for cache parameters
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     * \param scvIdx The index of the sub-control volume
-     * \param problem The problem
-     */
-    void update(FluidState & fluidState,
-                ParameterCache & paramCache,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const unsigned int scvIdx,
-                const Problem & problem)
-    {
-        solidHeatCapacity_ =
-            problem.spatialParams().solidHeatCapacity(element, fvGeometry, scvIdx);
-        Valgrind::CheckDefined(solidHeatCapacity_);
-
-        for(int phaseIdx =0; phaseIdx<numPhases; ++phaseIdx){
-            fluidThermalConductivity_[phaseIdx] =
-                    FluidSystem::thermalConductivity(fluidState, paramCache, phaseIdx);
-        }
-        Valgrind::CheckDefined(fluidThermalConductivity_);
-
-
-        solidDensity_ =
-                problem.spatialParams().solidDensity(element, fvGeometry, scvIdx);
-        Valgrind::CheckDefined(solidDensity_);
-
-        solidThermalConductivity_ =
-                problem.spatialParams().solidThermalConductivity(element, fvGeometry, scvIdx);
-        Valgrind::CheckDefined(solidThermalConductivity_);
-
-        // set the enthalpies
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            Scalar h = FluidSystem::enthalpy(fluidState, paramCache, phaseIdx);
-            Valgrind::CheckDefined(h);
-            fluidState.setEnthalpy(phaseIdx, h);
-        }
-    }
-
-    /*!
-     * \brief Returns the total heat capacity [J/(kg K)] of the rock matrix in
-     *        the sub-control volume.
-     */
-    Scalar solidHeatCapacity() const
-    { return solidHeatCapacity_; }
-
-    /*!
-     * \brief Returns the temperature in fluid / solid phase(s)
-     *        the sub-control volume.
-     * \param phaseIdx The local index of the phases
-     */
-    Scalar temperature(const unsigned int phaseIdx) const
-    { return temperature_[phaseIdx]; }
-
-    /*!
-     * \brief Returns the total density of the given solid phase [kg / m^3] in
-     *        the sub-control volume.
-     */
-    Scalar solidDensity() const
-    { return solidDensity_; }
-
-    /*!
-     * \brief Returns the conductivity of the given solid phase [W/(m K)] in
-     *        the sub-control volume.
-     */
-    Scalar solidThermalConductivity() const
-    { return solidThermalConductivity_; }
-
-    /*!
-     * \brief Returns the conductivity of the given fluid [W/(m K)] in
-     *        the sub-control volume.
-     *
-     *   \param phaseIdx The local index of the phases
-     */
-    Scalar thermalConductivity(const unsigned int phaseIdx) const
-    {
-        if(phaseIdx == wPhaseIdx or phaseIdx == nPhaseIdx )
-            return fluidThermalConductivity_[phaseIdx];
-        else if (phaseIdx == sPhaseIdx )
-            return solidThermalConductivity_;
-        else
-            DUNE_THROW(Dune::NotImplemented,
-                    "wrong index");
-    }
-
-    void checkDefinedTemp() const
-    { Valgrind::CheckDefined(temperature_); }
-
-    /*!
-     * \brief If running under valgrind this produces an error message
-     *        if some of the object's attributes is undefined.
-     */
-    void checkDefined() const
-    {
-        Valgrind::CheckDefined(temperature_);
-        Valgrind::CheckDefined(fluidThermalConductivity_);
-        Valgrind::CheckDefined(solidThermalConductivity_);
-        Valgrind::CheckDefined(solidDensity_);
-        Valgrind::CheckDefined(solidHeatCapacity_);
-    }
-
-protected:
-    Scalar temperature_[numEnergyEqs];
-    Scalar solidHeatCapacity_;
-    Scalar solidDensity_;
-    Scalar solidThermalConductivity_;
-    Scalar fluidThermalConductivity_[numPhases];
-};
-
-} // end namespace
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/vtkwriter.hh b/dumux/porousmediumflow/mpnc/implicit/energy/vtkwriter.hh
deleted file mode 100644
index 84c1022f5a9c0eef5bba109f593cdd9d32c2a74f..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/vtkwriter.hh
+++ /dev/null
@@ -1,229 +0,0 @@
-// -*- 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 VTK writer module for the energy related quantities of the
- *        MpNc model.
- */
-#ifndef DUMUX_MPNC_VTK_WRITER_ENERGY_HH
-#define DUMUX_MPNC_VTK_WRITER_ENERGY_HH
-
-#include "../vtkwritermodule.hh"
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- *
- * \brief VTK writer module for the energy related quantities of the
- *        MpNc model.
- *
- * This is the specialization for the case without energy.
- */
-template<class TypeTag,
-         bool enableEnergy /* = false */,
-         int numEnergyEquations/*=0*/>
-class MPNCVtkWriterEnergy : public MPNCVtkWriterModule<TypeTag>
-{
-    static_assert(numEnergyEquations < 1,
-                  "If you enable kinetic energy transfer between fluids, you"
-                  "also have to enable the energy in general!");
-
-    using ParentType = MPNCVtkWriterModule<TypeTag>;
-
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum { dim = GridView::dimension };
-
-    using ScalarVector = typename ParentType::ScalarVector;
-    using PhaseVector = typename ParentType::PhaseVector;
-    enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) };
-    enum { dofCodim = isBox ? dim : 0 };
-
-public:
-    MPNCVtkWriterEnergy(const Problem &problem)
-        : ParentType(problem)
-    {
-        temperatureOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddTemperatures);
-    }
-
-    /*!
-     * \brief Allocate memory for the scalar fields we would like to
-     *        write to the VTK file.
-     */
-    template <class MultiWriter>
-    void allocBuffers(MultiWriter &writer)
-    {
-        if (temperatureOutput_) this->resizeScalarBuffer_(temperature_, isBox);
-    }
-
-    /*!
-     * \brief Modify the internal buffers according to the volume
-     *        variables seen on an element
-     *
-     *        \param element The finite element
-     *        \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *        \param elemVolVars The volume variables of the current element
-     *        \param elemBcTypes The types of the boundary conditions for all vertices of the element
-     */
-    void processElement(const Element &element,
-                        const FVElementGeometry &fvGeometry,
-                        const ElementVolumeVariables &elemVolVars,
-                        const ElementBoundaryTypes &elemBcTypes)
-    {
-        for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx) {
-            const unsigned int dofIdxGlobal = this->problem_.model().dofMapper().subIndex(element, scvIdx, dofCodim);
-            const VolumeVariables &volVars = elemVolVars[scvIdx];
-
-            if (temperatureOutput_)
-                temperature_[dofIdxGlobal] = volVars.temperature(/*phaseIdx=*/0);
-        }
-    }
-
-    /*!
-     * \brief Add all buffers to the VTK output writer.
-     */
-    template <class MultiWriter>
-    void commitBuffers(MultiWriter &writer)
-    {
-        if (temperatureOutput_)
-            this->commitScalarBuffer_(writer, "T", temperature_, isBox);
-    }
-
-private:
-    bool temperatureOutput_;
-
-    ScalarVector temperature_;
-};
-
-/*!
- * \ingroup MPNCModel
- *
- * \brief VTK writer module for the energy related quantities of the
- *        MpNc model.
- *
- * This is the specialization for the case with an energy equation but
- * local thermal equilibrium. (i.e. no kinetic energy transfer)
- */
-template<class TypeTag>
-class MPNCVtkWriterEnergy<TypeTag, /* enableEnergy = */ true, /* numEnergyEquations = */ 1 >
-    : public MPNCVtkWriterModule<TypeTag>
-{
-    using ParentType = MPNCVtkWriterModule<TypeTag>;
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum { dim = GridView::dimension };
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-
-    using ScalarVector = typename ParentType::ScalarVector;
-    using PhaseVector = typename ParentType::PhaseVector;
-    enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) };
-    enum { dofCodim = isBox ? dim : 0 };
-
-public:
-    MPNCVtkWriterEnergy(const Problem &problem)
-        : ParentType(problem)
-    {
-        temperatureOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddTemperatures);
-        enthalpyOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddEnthalpies);
-        internalEnergyOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddInternalEnergies);
-    }
-
-    /*!
-     * \brief Allocate memory for the scalar fields we would like to
-     *        write to the VTK file.
-     */
-    template <class MultiWriter>
-    void allocBuffers(MultiWriter &writer)
-    {
-        if (temperatureOutput_) this->resizeScalarBuffer_(temperature_, isBox);
-        if (enthalpyOutput_) this->resizePhaseBuffer_(enthalpy_, isBox);
-        if (internalEnergyOutput_) this->resizePhaseBuffer_(internalEnergy_, isBox);
-    }
-
-    /*!
-     * \brief Modify the internal buffers according to the volume
-     *        variables seen on an element
-     *
-     *        \param element The finite element
-     *        \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *        \param elemVolVars The volume variables of the current element
-     *        \param elemBcTypes The types of the boundary conditions for all vertices of the element
-     */
-    void processElement(const Element &element,
-                        const FVElementGeometry &fvGeometry,
-                        const ElementVolumeVariables &elemVolVars,
-                        const ElementBoundaryTypes &elemBcTypes)
-    {
-        for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx) {
-            int gobalIdx = this->problem_.model().dofMapper().subIndex(element, scvIdx, dofCodim);
-            const VolumeVariables &volVars = elemVolVars[scvIdx];
-
-            if (temperatureOutput_) temperature_[gobalIdx] = volVars.temperature(/*phaseIdx=*/0);
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
-                if (enthalpyOutput_)
-                    enthalpy_[phaseIdx][gobalIdx] = volVars.enthalpy(phaseIdx);
-                if (internalEnergyOutput_)
-                    internalEnergy_[phaseIdx][gobalIdx] = volVars.internalEnergy(phaseIdx);
-            }
-        }
-    }
-
-    /*!
-     * \brief Add all buffers to the VTK output writer.
-     */
-    template <class MultiWriter>
-    void commitBuffers(MultiWriter &writer)
-    {
-        if (temperatureOutput_)
-            this->commitScalarBuffer_(writer, "T", temperature_, isBox);
-        if (enthalpyOutput_)
-            this->commitPhaseBuffer_(writer, "h_%s", enthalpy_, isBox);
-        if (internalEnergyOutput_)
-            this->commitPhaseBuffer_(writer, "u_%s", internalEnergy_, isBox);
-    }
-
-private:
-    bool temperatureOutput_;
-    bool enthalpyOutput_;
-    bool internalEnergyOutput_;
-
-    ScalarVector temperature_;
-    PhaseVector enthalpy_;
-    PhaseVector internalEnergy_;
-};
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/energy/vtkwriterkinetic.hh b/dumux/porousmediumflow/mpnc/implicit/energy/vtkwriterkinetic.hh
deleted file mode 100644
index 1edbee712e7860d2e40311966eadb4313bc0f5b6..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/energy/vtkwriterkinetic.hh
+++ /dev/null
@@ -1,539 +0,0 @@
-// -*- 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 VTK writer module for the energy related quantities of the
- *        MpNc model.
- */
-#ifndef DUMUX_MPNC_VTK_WRITER_ENERGY_KINETIC_HH
-#define DUMUX_MPNC_VTK_WRITER_ENERGY_KINETIC_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/vtkwritermodule.hh>
-#include <dumux/porousmediumflow/mpnc/implicit/energy/localresidualkinetic.hh>
-#include "vtkwriter.hh"
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- *
- * \brief VTK writer module for the energy related quantities of the
- *        MpNc model.
- *
- * This is the specialization for the case with *3* energy balance equations and
- * no local thermal equilibrium. (i.e. _including_ kinetic energy transfer)
- */
-template<class TypeTag>
-class MPNCVtkWriterEnergy<TypeTag, /*enableEnergy = */ true, /* numEnergyEquations = */ 3 >
-    : public MPNCVtkWriterModule<TypeTag>
-{
-    using ParentType = MPNCVtkWriterModule<TypeTag>;
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum { dim = GridView::dimension };
-    enum { dimWorld = GridView::dimensionworld };
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numEnergyEqs = Indices::numPrimaryEnergyVars};
-    enum { velocityAveragingInModel = GET_PROP_VALUE(TypeTag, VelocityAveragingInModel) };
-
-    enum { reynoldsOutput       = GET_PROP_VALUE(TypeTag, VtkAddReynolds) };
-    enum { prandtlOutput        = GET_PROP_VALUE(TypeTag, VtkAddPrandtl) };
-    enum { nusseltOutput        = GET_PROP_VALUE(TypeTag, VtkAddNusselt) };
-    enum { interfacialAreaOutput= GET_PROP_VALUE(TypeTag, VtkAddInterfacialArea) };
-    enum { velocityOutput       = GET_PROP_VALUE(TypeTag, VtkAddVelocities) };
-
-    using ScalarVector = typename ParentType::ScalarVector;
-    using PhaseVector = typename ParentType::PhaseVector;
-    using ComponentVector = typename ParentType::ComponentVector;
-    using EnergyEqVector = std::array<ScalarVector, numEnergyEqs>;
-
-    using DimWorldVector = Dune::FieldVector<Scalar, dimWorld>;
-    using DimWorldField = Dune::BlockVector<DimWorldVector>;
-    using PhaseDimWorldField = std::array<DimWorldField, numPhases>;
-
-
-public:
-    MPNCVtkWriterEnergy(const Problem &problem)
-        : ParentType(problem)
-    {
-        temperatureOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddTemperatures);
-        enthalpyOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddEnthalpies);
-        internalEnergyOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddInternalEnergies);
-    }
-
-    /*!
-     * \brief Allocate memory for the scalar fields we would like to
-     *        write to the VTK file.
-     */
-    template <class MultiWriter>
-    void allocBuffers(MultiWriter &writer)
-    {
-        resizeTemperaturesBuffer_(temperature_);
-        this->resizeScalarBuffer_(TwMinusTn_);
-        this->resizeScalarBuffer_(TnMinusTs_);
-        this->resizeScalarBuffer_(awn_);
-        this->resizeScalarBuffer_(aws_);
-        this->resizeScalarBuffer_(ans_);
-        this->resizePhaseBuffer_(enthalpy_);
-        this->resizePhaseBuffer_(internalEnergy_);
-        this->resizePhaseBuffer_(reynoldsNumber_);
-        this->resizePhaseBuffer_(prandtlNumber_);
-        this->resizePhaseBuffer_(nusseltNumber_);
-
-        /*only one of the two output options, otherwise paraview segfaults due to two times the same field name*/
-        if (velocityAveragingInModel && !velocityOutput)
-        {
-            Scalar numVertices = this->problem_.gridView().size(dim);
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
-                velocity_[phaseIdx].resize(numVertices);
-                velocity_[phaseIdx] = 0;
-            }
-        }
-    }
-
-    /*!
-     * \brief Modify the internal buffers according to the volume
-     *        variables seen on an element
-     *
-     *        \param element The finite element
-     *        \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *        \param elemVolVars The volume variables of the current element
-     *        \param elemBcTypes
-     */
-    void processElement(const Element & element,
-                        const FVElementGeometry & fvGeometry,
-                        const ElementVolumeVariables & elemVolVars,
-                        const ElementBoundaryTypes & elemBcTypes)
-    {
-        int numLocalVertices = element.geometry().corners();
-        for (int localVertexIdx = 0; localVertexIdx < numLocalVertices; ++localVertexIdx) {
-            const unsigned int vIdxGlobal = this->problem_.vertexMapper().subIndex(element, localVertexIdx, dim);
-            const VolumeVariables &volVars = elemVolVars[localVertexIdx];
-
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
-                enthalpy_[phaseIdx][vIdxGlobal]          = volVars.enthalpy(phaseIdx);
-                internalEnergy_[phaseIdx][vIdxGlobal]    = volVars.internalEnergy(phaseIdx);
-                reynoldsNumber_[phaseIdx][vIdxGlobal]    = volVars.reynoldsNumber(phaseIdx);
-                prandtlNumber_[phaseIdx][vIdxGlobal]     = volVars.prandtlNumber(phaseIdx);
-                nusseltNumber_[phaseIdx][vIdxGlobal]             = volVars.nusseltNumber(phaseIdx);
-            }
-
-            // because numPhases only counts liquid phases
-            for (int phaseIdx = 0; phaseIdx < numEnergyEqs; ++ phaseIdx) {
-                temperature_[phaseIdx][vIdxGlobal] = volVars.temperature(phaseIdx);
-                Valgrind::CheckDefined(temperature_[phaseIdx][vIdxGlobal]);
-            }
-
-            const unsigned int wPhaseIdx = FluidSystem::wPhaseIdx;
-            const unsigned int nPhaseIdx = FluidSystem::nPhaseIdx;
-            const unsigned int sPhaseIdx = FluidSystem::sPhaseIdx;
-
-            TwMinusTn_[vIdxGlobal]  = volVars.temperature(wPhaseIdx) - volVars.temperature(nPhaseIdx);
-            TnMinusTs_[vIdxGlobal]  = volVars.temperature(nPhaseIdx) - volVars.temperature(sPhaseIdx);
-
-            awn_[vIdxGlobal]          = volVars.interfacialArea(wPhaseIdx, nPhaseIdx);
-            aws_[vIdxGlobal]          = volVars.interfacialArea(wPhaseIdx, sPhaseIdx);
-            ans_[vIdxGlobal]          = volVars.interfacialArea(nPhaseIdx, sPhaseIdx);
-
-            /*only one of the two output options, otherwise paraview segfaults due to two times the same field name*/
-            if (velocityAveragingInModel && !velocityOutput)
-            {
-                // numVertices for vertexCentereed, numVolumes for volume centered
-                int numVertices = this->problem_.gridView().size(dim);
-                for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
-                    for (int I = 0; I < numVertices; ++I)
-                        velocity_[phaseIdx][I] = this->problem_.model().volumeDarcyVelocity(phaseIdx, I);
-            }
-        }
-    }
-
-    /*!
-     * \brief Add all buffers to the VTK output writer.
-     */
-    template <class MultiWriter>
-    void commitBuffers(MultiWriter & writer)
-    {
-
-        if(interfacialAreaOutput){
-            this->commitScalarBuffer_(writer, "awn" , awn_);
-            this->commitScalarBuffer_(writer, "aws" , aws_);
-            this->commitScalarBuffer_(writer, "ans" , ans_);
-        }
-
-        if (temperatureOutput_){
-            this->commitTemperaturesBuffer_(writer, "T_%s", temperature_);
-            this->commitScalarBuffer_(writer, "TwMinusTn" , TwMinusTn_);
-            this->commitScalarBuffer_(writer, "TnMinusTs" , TnMinusTs_);
-        }
-
-        if (enthalpyOutput_)
-            this->commitPhaseBuffer_(writer, "h_%s", enthalpy_);
-        if (internalEnergyOutput_)
-            this->commitPhaseBuffer_(writer, "u_%s", internalEnergy_);
-        if (reynoldsOutput)
-            this->commitPhaseBuffer_(writer, "reynoldsNumber_%s", reynoldsNumber_);
-        if (prandtlOutput)
-            this->commitPhaseBuffer_(writer, "prandtlNumber_%s", prandtlNumber_);
-        if (nusseltOutput)
-            this->commitPhaseBuffer_(writer, "nusseltNumber_%s", nusseltNumber_);
-        /*only one of the two output options, otherwise paraview segfaults due to two timies the same field name*/
-        if (velocityAveragingInModel && !velocityOutput)
-        {
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-                // commit the phase velocity
-                std::ostringstream oss;
-                oss << "velocity_" << FluidSystem::phaseName(phaseIdx);
-                writer.attachVertexData(velocity_[phaseIdx],
-                                        oss.str(),
-                                        dim);
-            }
-        }
-    }
-
-private:
-    /*!
-     * \brief Allocate the space for a buffer storing temperatures.
-     *         This is one more entry than (fluid) phases.
-     */
-    void resizeTemperaturesBuffer_(EnergyEqVector & buffer,
-                                   bool vertexCentered = true)
-    {
-        Scalar n; // numVertices for vertexCentereed, numVolumes for volume centered
-        if (vertexCentered)
-            n = this->problem_.gridView().size(dim);
-        else
-            n = this->problem_.gridView().size(0);
-
-        for (int energyEqIdx = 0; energyEqIdx < numEnergyEqs; ++energyEqIdx) {
-            buffer[energyEqIdx].resize(n);
-            std::fill(buffer[energyEqIdx].begin(), buffer[energyEqIdx].end(), 0.0);
-        }
-    }
-
-/*!
-     * \brief Add a buffer for the three tmeperatures (fluids+solid) to the VTK result file.
-     */
-    template <class MultiWriter>
-    void commitTemperaturesBuffer_(MultiWriter & writer,
-                                   std::string pattern,
-                                   EnergyEqVector & buffer,
-                                   bool vertexCentered = true)
-    {
-        for (int energyEqIdx = 0; energyEqIdx < numEnergyEqs; ++energyEqIdx) {
-            std::ostringstream oss;
-            oss << "T_" << FluidSystem::phaseName(energyEqIdx);
-
-            if (vertexCentered)
-                writer.attachVertexData(buffer[energyEqIdx], oss.str(), 1);
-            else
-                writer.attachCellData(buffer[energyEqIdx], oss.str(), 1);
-        }
-    }
-
-    EnergyEqVector temperature_ ;
-    ScalarVector TwMinusTn_;
-    ScalarVector TnMinusTs_;
-    PhaseVector enthalpy_ ;
-    PhaseVector internalEnergy_ ;
-    PhaseVector reynoldsNumber_ ;
-    PhaseVector prandtlNumber_ ;
-    PhaseVector nusseltNumber_ ;
-
-    PhaseDimWorldField  velocity_;
-
-    ScalarVector awn_;
-    ScalarVector aws_;
-    ScalarVector ans_;
-
-    bool temperatureOutput_;
-    bool enthalpyOutput_;
-    bool internalEnergyOutput_;
-};
-
-/*!
- * \ingroup MPNCModel
- *
- * \brief VTK writer module for the energy related quantities of the
- *        MpNc model.
- *
- * This is the specialization for the case with *2* energy balance equations and
- * no local thermal equilibrium. (i.e. _including_ kinetic energy transfer)
- */
-template<class TypeTag>
-class MPNCVtkWriterEnergy<TypeTag, /*enableEnergy = */ true, /* numEnergyEquations = */ 2 >
-    : public MPNCVtkWriterModule<TypeTag>
-{
-    using ParentType = MPNCVtkWriterModule<TypeTag>;
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using LocalResidual = MPNCLocalResidualEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquations=*/2>;
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum { dim = GridView::dimension };
-    enum { dimWorld = GridView::dimensionworld };
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { wPhaseIdx        = FluidSystem::wPhaseIdx};
-
-    enum { numEnergyEqs = Indices::numPrimaryEnergyVars};
-    enum { velocityAveragingInModel = GET_PROP_VALUE(TypeTag, VelocityAveragingInModel) };
-
-    enum { reynoldsOutput       = GET_PROP_VALUE(TypeTag, VtkAddReynolds) };
-    enum { prandtlOutput        = GET_PROP_VALUE(TypeTag, VtkAddPrandtl) };
-    enum { nusseltOutput        = GET_PROP_VALUE(TypeTag, VtkAddNusselt) };
-    enum { interfacialAreaOutput= GET_PROP_VALUE(TypeTag, VtkAddInterfacialArea) };
-    enum { velocityOutput       = GET_PROP_VALUE(TypeTag, VtkAddVelocities) };
-
-    using ScalarVector = typename ParentType::ScalarVector;
-    using PhaseVector = typename ParentType::PhaseVector;
-    using ComponentVector = typename ParentType::ComponentVector;
-    using EnergyEqVector = std::array<ScalarVector, numEnergyEqs>;
-
-    using DimWorldVector = Dune::FieldVector<Scalar, dimWorld>;
-    using DimWorldField = Dune::BlockVector<DimWorldVector>;
-    using PhaseDimWorldField = std::array<DimWorldField, numPhases>;
-
-
-public:
-    MPNCVtkWriterEnergy(const Problem &problem)
-        : ParentType(problem)
-    {
-        temperatureOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddTemperatures);
-        enthalpyOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddEnthalpies);
-        internalEnergyOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddInternalEnergies);
-    }
-
-    /*!
-     * \brief Allocate memory for the scalar fields we would like to
-     *        write to the VTK file.
-     */
-    template <class MultiWriter>
-    void allocBuffers(MultiWriter &writer)
-    {
-        resizeTemperaturesBuffer_(temperature_);
-        this->resizePhaseBuffer_(enthalpy_);
-        this->resizePhaseBuffer_(internalEnergy_);
-        this->resizePhaseBuffer_(reynoldsNumber_);
-        this->resizePhaseBuffer_(prandtlNumber_);
-        this->resizePhaseBuffer_(nusseltNumber_);
-        this->resizeScalarBuffer_(qBoil_);
-        this->resizeScalarBuffer_(qsf_);
-
-
-        if (velocityAveragingInModel && !velocityOutput/*only one of the two output options, otherwise paraview segfaults due to two times the same field name*/)
-        {
-            Scalar numVertices = this->problem_.gridView().size(dim);
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
-                velocity_[phaseIdx].resize(numVertices);
-                velocity_[phaseIdx] = 0;
-            }
-        }
-    }
-
-    /*!
-     * \brief Modify the internal buffers according to the volume
-     *        variables seen on an element
-     *
-     *        \param element The finite element
-     *        \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *        \param elemVolVars The volume variables of the current element
-     *        \param elemBcTypes
-     */
-    void processElement(const Element & element,
-                        const FVElementGeometry & fvGeometry,
-                        const ElementVolumeVariables & elemVolVars,
-                        const ElementBoundaryTypes & elemBcTypes)
-    {
-        int numLocalVertices = element.geometry().corners();
-        for (int localVertexIdx = 0; localVertexIdx < numLocalVertices; ++localVertexIdx) {
-            const unsigned int vIdxGlobal = this->problem_.vertexMapper().subIndex(element, localVertexIdx, dim);
-            const VolumeVariables &volVars = elemVolVars[localVertexIdx];
-
-            qBoil_[vIdxGlobal] = LocalResidual::QBoilFunc(volVars, volVars.saturation(wPhaseIdx));
-            qsf_[vIdxGlobal] = LocalResidual::qsf(volVars);
-
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
-                enthalpy_[phaseIdx][vIdxGlobal]          = volVars.enthalpy(phaseIdx);
-                internalEnergy_[phaseIdx][vIdxGlobal]    = volVars.internalEnergy(phaseIdx);
-                reynoldsNumber_[phaseIdx][vIdxGlobal]    = volVars.reynoldsNumber(phaseIdx);
-                prandtlNumber_[phaseIdx][vIdxGlobal]     = volVars.prandtlNumber(phaseIdx);
-                nusseltNumber_[phaseIdx][vIdxGlobal]             = volVars.nusseltNumber(phaseIdx);
-            }
-
-            // because numPhases only counts liquid phases
-            for (int phaseIdx = 0; phaseIdx < numEnergyEqs; ++ phaseIdx) {
-                temperature_[phaseIdx][vIdxGlobal] = volVars.temperature(phaseIdx);
-                Valgrind::CheckDefined(temperature_[phaseIdx][vIdxGlobal]);
-            }
-
-            if (velocityAveragingInModel && !velocityOutput/*only one of the two output options, otherwise paraview segfaults due to two times the same field name*/)
-            {
-                int numVertices = this->problem_.gridView().size(dim); // numVertices for vertexCentereed, numVolumes for volume centered
-
-                for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
-                    for (int I = 0; I < numVertices; ++I)
-                        velocity_[phaseIdx][I] = this->problem_.model().volumeDarcyVelocity(phaseIdx, I);
-            }
-        }
-    }
-
-    /*!
-     * \brief Add all buffers to the VTK output writer.
-     */
-    template <class MultiWriter>
-    void commitBuffers(MultiWriter & writer)
-    {
-
-        if (temperatureOutput_){
-            this->commitTemperaturesBuffer_(writer, "T_%s", temperature_);
-        }
-
-        this->commitScalarBuffer_(writer, "qBoil", qBoil_);
-        this->commitScalarBuffer_(writer, "qsf", qsf_);
-
-
-        if (enthalpyOutput_)
-            this->commitPhaseBuffer_(writer, "h_%s", enthalpy_);
-        if (internalEnergyOutput_)
-            this->commitPhaseBuffer_(writer, "u_%s", internalEnergy_);
-        if (reynoldsOutput)
-            this->commitPhaseBuffer_(writer, "reynoldsNumber_%s", reynoldsNumber_);
-        if (prandtlOutput)
-            this->commitPhaseBuffer_(writer, "prandtlNumber_%s", prandtlNumber_);
-        if (nusseltOutput)
-            this->commitPhaseBuffer_(writer, "nusseltNumber_%s", nusseltNumber_);
-        if (velocityAveragingInModel && !velocityOutput/*only one of the two output options, otherwise paraview segfaults due to two timies the same field name*/)
-        {
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-                // commit the phase velocity
-                std::ostringstream oss;
-                oss << "velocity_" << FluidSystem::phaseName(phaseIdx);
-                writer.attachVertexData(velocity_[phaseIdx],
-                                        oss.str(),
-                                        dim);
-            }
-        }
-    }
-
-private:
-    /*!
-     * \brief Allocate the space for a buffer storing temperatures.
-     *         This is one more entry than (fluid) phases.
-     */
-    void resizeTemperaturesBuffer_(EnergyEqVector & buffer,
-                                   bool vertexCentered = true)
-    {
-        Scalar n; // numVertices for vertexCentereed, numVolumes for volume centered
-        if (vertexCentered)
-            n = this->problem_.gridView().size(dim);
-        else
-            n = this->problem_.gridView().size(0);
-
-        for (int energyEqIdx = 0; energyEqIdx < numEnergyEqs; ++energyEqIdx) {
-            buffer[energyEqIdx].resize(n);
-            std::fill(buffer[energyEqIdx].begin(), buffer[energyEqIdx].end(), 0.0);
-        }
-    }
-
-/*!
-     * \brief Add a buffer for the three tmeperatures (fluids+solid) to the VTK result file.
-     */
-    template <class MultiWriter>
-    void commitTemperaturesBuffer_(MultiWriter & writer,
-                                   std::string pattern,
-                                   EnergyEqVector & buffer,
-                                   bool vertexCentered = true)
-    {
-        static std::string name[] = {
-                    std::string("fluid"),
-                    std::string("solid")
-                };
-
-        for (int energyEqIdx = 0; energyEqIdx < numEnergyEqs; ++energyEqIdx) {
-            std::ostringstream oss;
-            oss << "T_" << name[energyEqIdx];
-
-            if (vertexCentered)
-                writer.attachVertexData(buffer[energyEqIdx], oss.str(), 1);
-            else
-                writer.attachCellData(buffer[energyEqIdx], oss.str(), 1);
-        }
-    }
-
-//    static std::string phaseName(int phaseIdx)
-//    {
-//        static std::string name[] = {
-//            "w",
-//            "n"
-//        };
-//
-//        assert(0 <= phaseIdx && phaseIdx < numPhases);
-//        return name[phaseIdx];
-//    }
-
-    EnergyEqVector temperature_ ;
-    PhaseVector enthalpy_ ;
-    PhaseVector internalEnergy_ ;
-    PhaseVector reynoldsNumber_ ;
-    PhaseVector prandtlNumber_ ;
-    PhaseVector nusseltNumber_ ;
-    ScalarVector qBoil_ ;
-    ScalarVector qsf_ ;
-    PhaseDimWorldField  velocity_;
-
-    bool temperatureOutput_;
-    bool enthalpyOutput_;
-    bool internalEnergyOutput_;
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/fluxvariables.hh b/dumux/porousmediumflow/mpnc/implicit/fluxvariables.hh
deleted file mode 100644
index ac241ddb6e487f8df1c7d2da5fd3bf5dd980f05b..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/fluxvariables.hh
+++ /dev/null
@@ -1,170 +0,0 @@
-// -*- 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 This file contains the data which is required to calculate
- *        all fluxes of components over a face of a finite volume.
- *
- * This means pressure, concentration and temperature gradients, phase
- * densities at the integration point, etc.
- */
-#ifndef DUMUX_MPNC_FLUX_VARIABLES_HH
-#define DUMUX_MPNC_FLUX_VARIABLES_HH
-
-#include <dumux/common/spline.hh>
-
-#include "diffusion/fluxvariables.hh"
-#include "energy/fluxvariables.hh"
-#include <dumux/porousmediumflow/implicit/darcyfluxvariables.hh>
-#include <dumux/porousmediumflow/implicit/forchheimerfluxvariables.hh>
-
-namespace Dumux
-{
-
-/*!
- * \ingroup MPNCModel
- * \ingroup ImplicitFluxVariables
- * \brief This class contains the data which is required to
- *        calculate all fluxes of components over a face of a finite
- *        volume for the MpNc model.
- *
- * This means pressure and concentration gradients, phase densities at
- * the intergration point, etc.
- */
-template <class TypeTag>
-class MPNCFluxVariables
-    : public GET_PROP_TYPE(TypeTag, BaseFluxVariables)
-{
-    friend typename GET_PROP_TYPE(TypeTag, BaseFluxVariables); // be friends with base class
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-
-    using BaseFluxVariables = typename GET_PROP_TYPE(TypeTag, BaseFluxVariables);
-
-    enum {dim= GridView::dimension};
-    enum {dimWorld= GridView::dimensionworld};
-    enum {enableDiffusion = GET_PROP_VALUE(TypeTag, EnableDiffusion)};
-    enum {enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy)};
-    enum {enableKinetic = GET_PROP_VALUE(TypeTag, EnableKinetic)};
-    enum {numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
-
-    using DimVector = Dune::FieldVector<Scalar, dim>;
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using FluxVariablesDiffusion = MPNCFluxVariablesDiffusion<TypeTag, enableDiffusion>;
-    using FluxVariablesEnergy = MPNCFluxVariablesEnergy<TypeTag, enableEnergy, numEnergyEquations>;
-
-public:
-    /*!
-     * \brief Compute / update the flux variables
-     *
-     * \param problem The problem
-     * \param element The finite element
-     * \param fvGeometry The finite-volume geometry
-     * \param fIdx The local index of the SCV (sub-control-volume) face
-     * \param elemVolVars The volume variables of the current element
-     * \param onBoundary A boolean variable to specify whether the flux variables
-     * are calculated for interior SCV faces or boundary faces, default=false
-     */
-    void update(const Problem &problem,
-                const Element &element,
-                const FVElementGeometry &fvGeometry,
-                const int fIdx,
-                const ElementVolumeVariables &elemVolVars,
-                const bool onBoundary = false)
-    {
-        elemVolVarsPtr_ = &elemVolVars;
-
-        // velocities can be obtained from the Parent class.
-        BaseFluxVariables::update(problem, element, fvGeometry, fIdx, elemVolVars, onBoundary);
-
-        // update the flux data of the energy module (i.e. isothermal
-        // or non-isothermal)
-        fluxVarsEnergy_.update(problem, element, fvGeometry, this->face(), *this, elemVolVars);
-
-        // update the flux data of the diffusion module (i.e. with or
-        // without diffusion)
-        fluxVarsDiffusion_.update(problem, element, fvGeometry, this->face(), elemVolVars);
-
-        extrusionFactor_ =
-            (elemVolVars[this->face().i].extrusionFactor()
-             + elemVolVars[this->face().j].extrusionFactor()) / 2;
-    }
-
-    /*!
-     * \brief Returns a reference to the volume
-     *        variables of the i-th sub-control volume of the current
-     *        element.
-     */
-    const VolumeVariables &volVars(const unsigned int idx) const
-    { return (*elemVolVarsPtr_)[idx]; }
-
-    /*!
-     * \brief Returns th extrusion factor for the sub-control volume face
-     */
-    Scalar extrusionFactor() const
-    { return extrusionFactor_; }
-
-    ////////////////////////////////////////////////
-    // forward calls to the diffusion module
-    Scalar porousDiffCoeffL(const unsigned int compIdx) const
-    { return fluxVarsDiffusion_.porousDiffCoeffL(compIdx); }
-
-    Scalar porousDiffCoeffG(const unsigned int compIIdx,
-                            const unsigned int compJIdx) const
-    { return fluxVarsDiffusion_.porousDiffCoeffG(compIIdx, compJIdx); }
-
-    const Scalar moleFraction(const unsigned int phaseIdx,
-                              const unsigned int compIdx) const
-    { return fluxVarsDiffusion_.moleFraction(phaseIdx, compIdx); }
-
-    const GlobalPosition &moleFractionGrad(const unsigned int phaseIdx,
-                                      const unsigned int compIdx) const
-    { return fluxVarsDiffusion_.moleFractionGrad(phaseIdx, compIdx); }
-
-    // end of forward calls to the diffusion module
-    ////////////////////////////////////////////////
-
-    ////////////////////////////////////////////////
-    // forward calls to the temperature module
-    const GlobalPosition &temperatureGrad() const
-    { return fluxVarsEnergy_.temperatureGrad(); }
-
-    const FluxVariablesEnergy &fluxVarsEnergy() const
-    { return fluxVarsEnergy_; }
-    // end of forward calls to the temperature module
-    ////////////////////////////////////////////////
-
-private:
-    const ElementVolumeVariables* elemVolVarsPtr_;
-
-    // The extrusion factor for the sub-control volume face
-    Scalar extrusionFactor_;
-
-    FluxVariablesDiffusion  fluxVarsDiffusion_;
-    FluxVariablesEnergy     fluxVarsEnergy_;
-};
-
-} // end namespace
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/localresidual.hh b/dumux/porousmediumflow/mpnc/implicit/localresidual.hh
deleted file mode 100644
index 93c2154363835e24e6bb3ddd55a21fc13dce06f5..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/localresidual.hh
+++ /dev/null
@@ -1,313 +0,0 @@
-// -*- 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 MpNc specific details needed to approximately calculate the local
- *        defect in the fully implicit scheme.
- *
- */
-#ifndef DUMUX_MPNC_LOCAL_RESIDUAL_HH
-#define DUMUX_MPNC_LOCAL_RESIDUAL_HH
-
-#include "fluxvariables.hh"
-#include "diffusion/diffusion.hh"
-#include "energy/localresidual.hh"
-#include "mass/localresidual.hh"
-#include "properties.hh"
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- * \ingroup ImplicitLocalResidual
- * \brief MpNc specific details needed to approximately calculate the local
- *        defect in the fully implicit scheme.
- *
- * This class is used to fill the gaps in ImplicitLocalResidual for the
- * MpNc flow.
- */
-template<class TypeTag>
-class MPNCLocalResidual : public GET_PROP_TYPE(TypeTag, BaseLocalResidual)
-{
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-
-protected:
-    using Implementation = typename GET_PROP_TYPE(TypeTag, LocalResidual);
-    using ParentType = typename GET_PROP_TYPE(TypeTag, BaseLocalResidual);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-
-    enum {numPhases = GET_PROP_VALUE(TypeTag, NumPhases)};
-    enum {numComponents = GET_PROP_VALUE(TypeTag, NumComponents)};
-    enum {numEq = GET_PROP_VALUE(TypeTag, NumEq)};
-    enum {enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy)};
-    enum {numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
-    enum {enableKinetic = GET_PROP_VALUE(TypeTag, EnableKinetic)};
-    enum {phase0NcpIdx = Indices::phase0NcpIdx};
-
-    using Element = typename GridView::template Codim<0>::Entity;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
-
-    using EnergyResid = MPNCLocalResidualEnergy<TypeTag, enableEnergy, numEnergyEquations>;
-    using MassResid = MPNCLocalResidualMass<TypeTag, enableKinetic>;
-
-public:
-    /*!
-     * \brief Evaluate the amount all conservation quantites
-     *        (e.g. phase mass) within a sub-control volume.
-     *
-     * The result should be averaged over the volume (e.g. phase mass
-     * inside a sub control volume divided by the volume)
-     *
-     *  \param storage The mass of the component within the sub-control volume
-     *  \param usePrevSol Evaluate function with solution of current or previous time step
-     *  \param scvIdx The SCV (sub-control-volume) index
-     *
-     */
-    void computeStorage(PrimaryVariables &storage,
-                        const unsigned int scvIdx,
-                        const bool usePrevSol) const
-    {
-        // if flag usePrevSol is set, the solution from the previous
-        // time step is used, otherwise the current solution is
-        // used. The secondary variables are used accordingly.  This
-        // is required to compute the derivative of the storage term
-        // using the implicit euler method.
-        const ElementVolumeVariables &elemVolVars = usePrevSol ? this->prevVolVars_() : this->curVolVars_();
-        const VolumeVariables &volVars = elemVolVars[scvIdx];
-
-        storage =0;
-
-        // compute mass and energy storage terms
-        MassResid::computeStorage(storage, volVars);
-        Valgrind::CheckDefined(storage);
-        EnergyResid::computeStorage(storage, volVars);
-        Valgrind::CheckDefined(storage);
-    }
-
-    /*!
-     * \brief Evaluate the amount all conservation quantities
-     *        (e.g. phase mass) within all sub-control volumes of an
-     *        element.
-     *
-     *        \param phaseStorage The conserved quantity within the phase in the whole domain
-     *        \param element The finite element
-     *        \param phaseIdx The index of the fluid phase
-     */
-    void addPhaseStorage(PrimaryVariables &phaseStorage,
-                         const Element &element,
-                         const unsigned int phaseIdx) const
-    {
-        // create a finite volume element geometry
-        FVElementGeometry fvGeometry;
-        fvGeometry.update(this->gridView_(), element);
-
-        // calculate volume variables
-        ElementVolumeVariables elemVolVars;
-        this->model_().setHints(element, elemVolVars);
-        elemVolVars.update(this->problem_(),
-                           element,
-                           fvGeometry,
-                           /*useOldSolution=*/false);
-
-        // calculate the phase storage for all sub-control volumes
-        for (int scvIdx=0;
-             scvIdx < fvGeometry.numScv;
-             scvIdx++)
-        {
-            PrimaryVariables tmpPriVars(0.0);
-
-            // compute mass and energy storage terms in terms of
-            // averaged quantities
-            MassResid::addPhaseStorage(tmpPriVars,
-                                       elemVolVars[scvIdx],
-                                       phaseIdx);
-            EnergyResid::addPhaseStorage(tmpPriVars,
-                                         elemVolVars[scvIdx],
-                                         phaseIdx);
-
-            // multiply with volume of sub-control volume
-            tmpPriVars *= fvGeometry.subContVol[scvIdx].volume;
-
-            // Add the storage of the current SCV to the total storage
-            phaseStorage += tmpPriVars;
-        }
-    }
-
-    /*!
-     * \brief Calculate the source term of the equation
-     *
-     *   \param scvIdx The SCV (sub-control-volume) index
-     *   \param source The source/sink in the sub-control volume for each component
-     */
-    void computeSource(PrimaryVariables &source,
-                       const unsigned int scvIdx)
-     {
-        Valgrind::SetUndefined(source);
-        ParentType::computeSource(source, scvIdx);
-
-        const VolumeVariables &volVars = this->curVolVars_(scvIdx);
-
-        PrimaryVariables tmp(0);
-        MassResid::computeSource(tmp, volVars);
-        source += tmp;
-        Valgrind::CheckDefined(source);
-
-        /*
-         *      EnergyResid also called in the MassResid
-         *      1) Makes some sense because energy is also carried by mass
-         *      2) The mass transfer between the phases is needed.
-         */
-//        tmp = 0.;
-//        EnergyResid::computeSource(tmp, volVars);
-//        source += tmp;
-//        Valgrind::CheckDefined(source);
-     };
-
-
-    /*!
-     * \brief Evaluates the total flux of all conservation quantities
-     *        over a face of a subcontrol volume.
-     *
-     * \param flux The flux over the SCV (sub-control-volume) face for each component
-     * \param fIdx The index of the SCV face
-     * \param onBoundary A boolean variable to specify whether the flux variables
-     *        are calculated for interior SCV faces or boundary faces, default=false
-     */
-    void computeFlux(PrimaryVariables &flux,
-                     const unsigned int fIdx, const bool onBoundary=false) const
-    {
-        FluxVariables fluxVars;
-        fluxVars.update(this->problem_(),
-                        this->element_(),
-                        this->fvGeometry_(),
-                        fIdx,
-                        this->curVolVars_(),
-                        onBoundary);
-        flux = 0.0;
-        MassResid::computeFlux(flux, fluxVars, this->curVolVars_() );
-        Valgrind::CheckDefined(flux);
-/*
- *      EnergyResid also called in the MassResid
- *      1) Makes some sense because energy is also carried by mass
- *      2) The component-wise mass flux in each phase is needed.
- */
-    }
-
-    /*!
-     * \brief Compute the local residual, i.e. the deviation of the
-     *        equations from zero.
-     *
-     *        \param element The finite element
-     */
-    void eval(const Element &element)
-    { ParentType::eval(element); }
-
-    /*!
-     * \brief Evaluate the local residual.
-     *
-     *      \param element The finite element
-     *      \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *      \param prevElemVolVars The element volume variables of the previous timestep
-     *      \param curElemVolVars The element volume variables of the current timestep
-     *      \param bcType The types of the boundary conditions for all vertices of the element
-     */
-    void eval(const Element &element,
-              const FVElementGeometry &fvGeometry,
-              const ElementVolumeVariables &prevElemVolVars,
-              const ElementVolumeVariables &curElemVolVars,
-              const ElementBoundaryTypes &bcType)
-    {
-        ParentType::eval(element,
-                         fvGeometry,
-                         prevElemVolVars,
-                         curElemVolVars,
-                         bcType);
-
-        if (GET_PROP_VALUE(TypeTag, ImplicitIsBox)
-            || !bcType.hasDirichlet())
-        {
-            for (int i = 0; i < this->fvGeometry_().numScv; ++i) {
-                // add the two auxiliary equations, make sure that the
-                // dirichlet boundary condition is conserved
-                for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
-                {
-                    if (!bcType[i].isDirichlet(phase0NcpIdx + phaseIdx))
-                    {
-                        this->residual_[i][phase0NcpIdx + phaseIdx] =
-                            this->curVolVars_(i).phaseNcp(phaseIdx);
-                    }
-                }
-            }
-        }
-    }
-
-
-    /*!
-     * \brief Add Dirichlet boundary conditions for a single intersection
-     *
-     * Sets the Dirichlet conditions in a strong sense, in contrast to
-     * the general handling in CCLocalResidual.
-     *
-     *      \param isIt
-     *      \param bcTypes
-     */
-    template <class IntersectionIterator>
-    void evalDirichletSegment_(const IntersectionIterator &isIt,
-                               const BoundaryTypes &bcTypes)
-    {
-        // temporary vector to store the Dirichlet boundary fluxes
-        PrimaryVariables values;
-        Valgrind::SetUndefined(values);
-        this->problem_().dirichlet(values, *isIt);
-        Valgrind::CheckDefined(values);
-
-        // set Dirichlet conditions in a strong sense
-        for (int eqIdx = 0; eqIdx < numEq; ++eqIdx)
-        {
-            if (bcTypes.isDirichlet(eqIdx))
-            {
-                int pvIdx = bcTypes.eqToDirichletIndex(eqIdx);
-                this->residual_[0][eqIdx]
-                  = this->curPriVar_(0, pvIdx) - values[pvIdx];
-            }
-            else if (eqIdx >= phase0NcpIdx)
-            {
-                int phaseIdx = eqIdx - phase0NcpIdx;
-                this->residual_[0][eqIdx] =
-                    this->curVolVars_(0).phaseNcp(phaseIdx);
-            }
-        }
-    }
-
-protected:
-    Implementation &asImp_()
-    { return *static_cast<Implementation *>(this); }
-    const Implementation &asImp_() const
-    { return *static_cast<const Implementation *>(this); }
-};
-
-} // end namespace
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/CMakeLists.txt b/dumux/porousmediumflow/mpnc/implicit/mass/CMakeLists.txt
deleted file mode 100644
index 961b0c4a7b0e3a638b2329094b0e698d7de2bbdf..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/mass/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-install(FILES
-  indices.hh
-  indiceskinetic.hh
-  localresidual.hh
-  localresidualkinetic.hh
-  volumevariables.hh
-  volumevariableskinetic.hh
-  vtkwriter.hh
-  vtkwriterkinetic.hh
-  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/porousmediumflow/mpnc/implicit/mass)
diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/indices.hh b/dumux/porousmediumflow/mpnc/implicit/mass/indices.hh
deleted file mode 100644
index 555091607148615fb0c95d91fda4150e70bbb1e0..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/mass/indices.hh
+++ /dev/null
@@ -1,87 +0,0 @@
-// -*- 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 The indices for the mass flow part of the compositional
- *        multi-phase model.
- */
-#ifndef DUMUX_MPNC_MASS_INDICES_HH
-#define DUMUX_MPNC_MASS_INDICES_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- * \ingroup ImplicitIndices
- * \brief The indices required for conservation of mass.
- *
- * This is the specialization for the case without kinetic mass
- * transfer (i.e. assuming chemical equilibrium)
- */
-template <int PVOffset,
-          class TypeTag,
-          bool enableKinetic /*=false*/>
-class MPNCMassIndices
-{
-    static_assert(!enableKinetic,
-                  "No kinetic mass transfer module included, "
-                  "but kinetic mass transfer enabled.");
-
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-
-public:
-    /*!
-     * \brief This module defines one new primary variable.
-     */
-    static const unsigned int numPrimaryVars = numComponents;
-
-    /*!
-     * \brief Index for the fugacity of the first component in the
-     *        first phase in a vector of primary variables.
-     *
-     * The next numComponents indices represent the remaining
-     * fugacities:
-     *
-     *  fug0Idx + 0 = fugacity of component 0
-     *  fug0Idx + 1 = fugacity of component 1
-     *  ...
-     *  fug0Idx + N - 1 = fugacity of component N
-     */
-    static const unsigned int fug0Idx = PVOffset + 0;
-
-    /*!
-     * \brief Equation index of the mass conservation equation for the
-     *        first component.
-     *
-     * The next numComponents indices represent the equations of all
-     * components in all phases:
-     *
-     *  conti00EqIdx + 0 = continuity of component 0
-     *  conti00EqIdx + 1 = continuity of component 1
-     *  ...
-     *  conti00EqIdx + N - 1 = continuity of component N
-     */
-    static const unsigned int conti0EqIdx = PVOffset + 0;
-};
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/indiceskinetic.hh b/dumux/porousmediumflow/mpnc/implicit/mass/indiceskinetic.hh
deleted file mode 100644
index f00389de8f6a87f774bc957fcbb2163657647f63..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/mass/indiceskinetic.hh
+++ /dev/null
@@ -1,83 +0,0 @@
-// -*- 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 The indices for the kinetic mass transfer module of the
- *        compositional multi-phase model.
- */
-#ifndef DUMUX_MPNC_MASS_INDICES_KINETIC_HH
-#define DUMUX_MPNC_MASS_INDICES_KINETIC_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/indices.hh>
-
-namespace Dumux
-{
-/*!
- * \brief The indices required for conservation of mass.
- *
- * This is the specialization considering kinetic mass transfer
- * (i.e. not assuming local chemical equilibrium)
- */
-template <int PVOffset, class TypeTag>
-class MPNCMassIndices<PVOffset, TypeTag, /*enableKinetic=*/true>
-{
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-public:
-    /*!
-     * \brief This module defines one new primary variable.
-     */
-    static const unsigned int numPrimaryVars = numPhases*numComponents;
-
-    /*!
-     * \brief Index for the mole fraction of the first component in
-     *        the first phase in a vector of primary variables.
-     *
-     * The next numPhases*numComponents indices represent the
-     * compositions of all phases:
-     *
-     *  moleFrac00Idx + 0 = mole fraction of component 0 in phase 0
-     *  moleFrac00Idx + 1 = mole fraction of component 1 in phase 0
-     *  ...
-     *  moleFrac00Idx + N - 1 = mole fraction of component N in phase 0
-     *  moleFrac00Idx + N = mole fraction of component 0 in phase 1
-     *  ...
-     */
-    static const unsigned int moleFrac00Idx = PVOffset + 0;
-
-    /*!
-     * \brief Equation index of the mass conservation equation for the
-     *        first component in the first phase.
-     *
-     * The next numPhases*numComponents indices represent the
-     * continuity equations of all components in all phases:
-     *
-     *  conti00EqIdx + 0 = continuity of component 0 in phase 0
-     *  conti00EqIdx + 1 = continuity of component 1 in phase 0
-     *  ...
-     *  conti00EqIdx + N - 1 = continuity of component N in phase 0
-     *  conti00EqIdx + N = continuity of component 0 in phase 1
-     *  ...
-     */
-    static const unsigned int conti0EqIdx = PVOffset + 0;
-};
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/localresidual.hh b/dumux/porousmediumflow/mpnc/implicit/mass/localresidual.hh
deleted file mode 100644
index f8aa51b5f6e0ceea20d408dcc1e41de233b9e259..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/mass/localresidual.hh
+++ /dev/null
@@ -1,403 +0,0 @@
-// -*- 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 The mass conservation part of the MpNc model.
- */
-#ifndef DUMUX_MPNC_LOCAL_RESIDUAL_MASS_HH
-#define DUMUX_MPNC_LOCAL_RESIDUAL_MASS_HH
-
-#include <dune/common/fvector.hh>
-
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-#include <dumux/material/constraintsolvers/compositionfromfugacities.hh>
-#include <dumux/common/math.hh>
-#include <dumux/common/spline.hh>
-
-#include "../diffusion/diffusion.hh"
-#include "../energy/localresidual.hh"
-
-namespace Dumux
-{
-/*!
- * \brief This class represents methods which are shared amongst all
- *        mass conservation modules.
- */
-template<class TypeTag>
-class MPNCLocalResidualMassCommon
-{
-protected:
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-
-    enum { numPhases        = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents    = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { enableDiffusion  = GET_PROP_VALUE(TypeTag, EnableDiffusion) };
-    enum { enableEnergy     = GET_PROP_VALUE(TypeTag, EnableEnergy) };
-    enum { numEnergyEquations     = GET_PROP_VALUE(TypeTag, NumEnergyEquations) };
-
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-    using Diffusion = MPNCDiffusion<TypeTag, enableDiffusion>;
-    using EnergyResid = MPNCLocalResidualEnergy<TypeTag, enableEnergy, numEnergyEquations>;
-
-public:
-    /*!
-     * \brief Evaluate the amount moles within a sub-control volume in
-     *        a phase.
-     *
-     *    \param storage The mass of the component within the sub-control volume
-     *    \param volVars The volume variables
-     *    \param phaseIdx phaseIdx The index of the fluid phase
-     *
-     * The result should be averaged over the volume.
-     */
-    static void computePhaseStorage(ComponentVector &storage,
-                                    const VolumeVariables &volVars,
-                                    const unsigned int phaseIdx)
-    {
-        // compute storage term of all components within all phases
-        storage = 0;
-        for (int compIdx = 0; compIdx < numComponents; ++ compIdx) {
-            storage[compIdx] +=
-                volVars.saturation(phaseIdx)*
-                volVars.molarity(phaseIdx, compIdx);
-#ifndef NDEBUG
-using std::isfinite;
-if (!isfinite(storage[compIdx]))
-    DUNE_THROW(NumericalProblem, "Calculated non-finite storage");
-#endif
-        }
-
-        storage *= volVars.porosity();
-
-    }
-
-    /*!
-     * \brief Evaluates the advective flux of all conservation
-     *        quantities over a face of a subcontrol volume via a
-     *        fluid phase.
-     *
-     *        \param flux The flux over the SCV (sub-control-volume) face for each component
-     *        \param fluxVars The flux Variables
-     *        \param phaseIdx phaseIdx The index of the fluid phase
-     */
-    static void computeAdvectivePhaseFlux(ComponentVector &flux,
-                                          const FluxVariables &fluxVars,
-                                          const unsigned int phaseIdx)
-    {
-
-        const Scalar volumeFlux =  fluxVars.volumeFlux(phaseIdx) ;
-
-
-        // retrieve the upwind weight for the mass conservation equations. Use the value
-        // specified via the property system as default, and overwrite
-        // it by the run-time parameter from the Dune::ParameterTree
-        const Scalar massUpwindWeight = GET_PARAM_FROM_GROUP(TypeTag, Scalar, Implicit, MassUpwindWeight);
-
-        static bool enableSmoothUpwinding_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Implicit, EnableSmoothUpwinding);
-
-        // data attached to upstream and the downstream vertices
-        // of the current phase
-        unsigned int upIdx = fluxVars.upstreamIdx(phaseIdx);
-        unsigned int dnIdx = fluxVars.downstreamIdx(phaseIdx);
-
-        const VolumeVariables &up = fluxVars.volVars(upIdx);
-        const VolumeVariables &dn = fluxVars.volVars(dnIdx);
-using std::isfinite;
-if (!isfinite(volumeFlux))
-    DUNE_THROW(NumericalProblem, "Calculated non-finite normal flux in phase" << phaseIdx);
-        ////////
-        // advective fluxes of all components in the phase
-        ////////
-        for (unsigned int compIdx = 0; compIdx < numComponents; ++compIdx) {
-            // add advective flux of current component in current
-            // phase. we use full upwinding.
-            if (enableSmoothUpwinding_) {
-                const Scalar kGradPNormal   = fluxVars.kGradPNormal(phaseIdx);
-                const Scalar mobUp          = up.mobility(phaseIdx);
-                const Scalar conUp          = up.molarity(phaseIdx, compIdx);
-
-                const Scalar mobDn  = dn.mobility(phaseIdx);
-                const Scalar conDn  = dn.molarity(phaseIdx, compIdx);
-
-                const Scalar mobConUp   = mobUp*conUp;
-                const Scalar mobConDn   = mobDn*conDn;
-                const Scalar meanMobCon = harmonicMean(mobConUp, mobConDn);
-
-                using std::abs;
-                const Scalar x      = abs(kGradPNormal);
-                const Scalar sign   = (kGradPNormal > 0)?-1:1;
-
-                // approximate the mean viscosity at the face
-                const Scalar meanVisc = (up.viscosity(phaseIdx) +
-                                   dn.viscosity(phaseIdx))/2;
-
-                // put the mean viscosity and permeanbility in
-                // relation to the viscosity of water at
-                // approximatly 20 degrees Celsius.
-                const Scalar pGradRef   = 10; // [Pa/m]
-                const Scalar muRef      = 1e-3; // [Ns/m^2]
-                const Scalar Kref       = 1e-12; // [m^2] = approx 1 Darcy
-
-                const Scalar faceArea   = fluxVars.face().normal.two_norm();
-                const Scalar eps        = pGradRef * Kref * faceArea * meanVisc/muRef; // * (1e3/18e-3)/meanC;
-
-                Scalar compFlux;
-                if (x >= eps) {
-                    // we only do tricks if x is below the epsilon
-                    // value
-                    compFlux = x*mobConUp;
-                }
-                else {
-                    const Scalar xPos[] = { 0, eps };
-                    const Scalar yPos[] = { 0, eps*mobConUp };
-                    const Spline<Scalar> sp2(xPos, yPos, meanMobCon, mobConUp);
-                    compFlux = sp2.eval(x);
-                }
-                #ifndef NDEBUG
-                using std::isfinite;
-                if (!isfinite(compFlux))
-                    DUNE_THROW(NumericalProblem, "Calculated non-finite normal flux in smooth upwinding");
-                #endif
-
-                flux[compIdx] = sign*compFlux;
-            }
-            else
-            {// not use smooth upwinding
-                flux[compIdx] =
-                        volumeFlux *
-                        ((     massUpwindWeight)*up.molarity(phaseIdx, compIdx)
-                                +
-                        (  1. - massUpwindWeight)*dn.molarity(phaseIdx, compIdx) );
-                        using std::isfinite;
-                        if (!isfinite(flux[compIdx]))
-                            DUNE_THROW(NumericalProblem, "Calculated non-finite normal flux in phase " <<  phaseIdx << " comp " << compIdx << "T: "<<  up.temperature(phaseIdx) << "S "<<up.saturation(phaseIdx)  ) ;
-            }
-        }
-    }
-
-
-    /*!
-     * \brief Evaluates the advective flux of all conservation
-     *        quantities over a face of a subcontrol volume via a
-     *        fluid phase.
-     *
-     *        \param flux The flux over the SCV (sub-control-volume) face for each component
-     *        \param fluxVars The flux Variables
-     *        \param phaseIdx phaseIdx The index of the fluid phase
-     */
-    static void computeDiffusivePhaseFlux(ComponentVector &flux,
-                                          const FluxVariables &fluxVars,
-                                          const unsigned int phaseIdx)
-    {
-        if (!enableDiffusion) {
-            flux = 0.0;
-            return;
-        }
-
-
-        const VolumeVariables &volVarsI = fluxVars.volVars(fluxVars.face().i);
-        const VolumeVariables &volVarsJ = fluxVars.volVars(fluxVars.face().j);
-        if (volVarsI.saturation(phaseIdx) < 1e-4 ||
-            volVarsJ.saturation(phaseIdx) < 1e-4)
-        {
-            return; // phase is not present in one of the finite volumes
-        }
-
-        // approximate the total concentration of the phase at the
-        // integration point by the arithmetic mean of the
-        // concentration of the sub-control volumes
-        Scalar molarDensityAtIP;
-        molarDensityAtIP = volVarsI.molarDensity(phaseIdx);
-        molarDensityAtIP += volVarsJ.molarDensity(phaseIdx);
-        molarDensityAtIP /= 2;
-
-        Diffusion::flux(flux, phaseIdx, fluxVars, molarDensityAtIP);
-    }
-};
-
-/*!
- * \brief The mass conservation part of the MpNc model.
- *
- * This is the specialization for the case where kinetic mass transfer
- * is _not_ considered.
- */
-template<class TypeTag, bool enableKinetic /*=false*/>
-class MPNCLocalResidualMass
-{
-    static_assert(!enableKinetic,
-                  "No kinetic mass transfer module included, "
-                  "but kinetic mass transfer enabled.");
-
-    using MassCommon = MPNCLocalResidualMassCommon<TypeTag>;
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-
-    enum { numPhases        = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents    = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { conti0EqIdx      = Indices::conti0EqIdx };
-    enum { enableEnergy     = GET_PROP_VALUE(TypeTag, EnableEnergy) };
-    enum { numEnergyEquations     = GET_PROP_VALUE(TypeTag, NumEnergyEquations) };
-
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-    using EnergyResid = MPNCLocalResidualEnergy<TypeTag, enableEnergy, numEnergyEquations>;
-
-public:
-    /*!
-     * \brief Calculate the storage for all mass balance equations
-     *
-     *    \param storage The mass of the component within the sub-control volume
-     *    \param volVars The volume variables
-     */
-    static void computeStorage(PrimaryVariables &storage,
-                               const VolumeVariables &volVars)
-    {
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-            storage[conti0EqIdx + compIdx] = 0.0;
-
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            addPhaseStorage(storage, volVars, phaseIdx);
-        }
-    }
-
-    /*!
-     * \brief Calculate the storage for all mass balance equations
-     *        within a single fluid phase
-     *
-     *    \param storage The mass of the component within the sub-control volume
-     *    \param volVars The volume variables
-     *    \param phaseIdx phaseIdx The index of the fluid phase
-     */
-    static void addPhaseStorage(PrimaryVariables &storage,
-                                const VolumeVariables &volVars,
-                                const unsigned int phaseIdx)
-    {
-        // calculate the component-wise mass storage
-        ComponentVector phaseComponentValues;
-        MassCommon::computePhaseStorage(phaseComponentValues,
-                                        volVars,
-                                        phaseIdx);
-
-        // copy to the primary variables
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-            storage[conti0EqIdx + compIdx] += phaseComponentValues[compIdx];
-    }
-
-    /*!
-     * \brief Calculate the storage for all mass balance equations
-     *
-     *        \param flux The flux over the SCV (sub-control-volume) face for each component
-     *        \param fluxVars The flux Variables
-     *        \param elemVolVars The volume variables of the current element
-     */
-    static void computeFlux(PrimaryVariables &flux,
-                            const FluxVariables &fluxVars,
-                            const ElementVolumeVariables & elemVolVars)
-    {
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-            flux[conti0EqIdx + compIdx] = 0.0;
-
-        ComponentVector phaseComponentValuesAdvection(0.);
-        ComponentVector phaseComponentValuesDiffusion(0.);
-        ComponentVector phaseComponentValuesMassTransport[numPhases]; // what goes into the energy module
-
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            MassCommon::computeAdvectivePhaseFlux(phaseComponentValuesAdvection, fluxVars, phaseIdx);
-            Valgrind::CheckDefined(phaseComponentValuesAdvection);
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-                flux[conti0EqIdx + compIdx] +=
-                        phaseComponentValuesAdvection[compIdx];
-
-            MassCommon::computeDiffusivePhaseFlux(phaseComponentValuesDiffusion, fluxVars, phaseIdx);
-            Valgrind::CheckDefined(phaseComponentValuesDiffusion);
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx){
-                flux[conti0EqIdx + compIdx] +=
-                        phaseComponentValuesDiffusion[compIdx];
-            }
-
-
-
-            // Right now I think that adding the two contributions individually into the flux is best for debugging and understanding.
-            // The Energy module needs both contributions.
-            phaseComponentValuesMassTransport[phaseIdx] = phaseComponentValuesDiffusion + phaseComponentValuesAdvection ;
-
-            Valgrind::CheckDefined(flux);
-        }
-//        std::cout<< "KPN Mass: flux: " << flux << endl;
-
-
-        // The computeflux() of the Energy module needs a
-        // component-wise flux (for the diffusive enthalpy transport)
-        // It makes some sense calling energy from here, because energy
-        // is carried by mass. However, it is not really a clean
-        // solution.
-
-        // energy transport in fluid phases
-        EnergyResid::computeFlux(flux,
-                                 fluxVars,
-                                 elemVolVars,
-                                 phaseComponentValuesMassTransport);
-        Valgrind::CheckDefined(flux);
-    }
-
-
-
-    /*!
-     * \brief Calculate the source terms for all mass balance
-     *        equations
-     *
-     *         \param source The source/sink in the sub-control volume for each component
-     *         \param volVars the volume variables
-     */
-    static void computeSource(PrimaryVariables &source,
-                              const VolumeVariables &volVars)
-    {
-//      static_assert(not enableKineticEnergy, // enableKinetic is disabled, in this specialization
-//              "In the case of kinetic energy transfer the advective energy transport between the phases has to be considered. "
-//              "It is hard (technically) to say how much mass got transfered in the case of chemical equilibrium. "
-//              "Therefore, kineticEnergy and no kinetic mass does not fit (yet).");
-
-
-        // mass transfer is not considered in this mass module
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-            source[conti0EqIdx + compIdx] = 0.0;
-
-
-        PrimaryVariables tmpPriVars(0);
-        // Similar to the compute Flux, the energy residual needs to be called from the
-        // mass residual.
-        ComponentVector dummy[numPhases];
-            for (int iDummy =0; iDummy <numPhases; ++iDummy)
-                dummy[iDummy] = 0.;
-        EnergyResid::computeSource(tmpPriVars,
-                                   volVars,
-                                   dummy);
-        source += tmpPriVars;
-        Valgrind::CheckDefined(source);
-    }
-};
-
-} // end namespace
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/localresidualkinetic.hh b/dumux/porousmediumflow/mpnc/implicit/mass/localresidualkinetic.hh
deleted file mode 100644
index 7de2dacf7be474ccb2752d8abdd0486cbf9d3f36..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/mass/localresidualkinetic.hh
+++ /dev/null
@@ -1,291 +0,0 @@
-// -*- 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 The local residual for the kinetic mass transfer module of
- *        the compositional multi-phase model.
- */
-#ifndef DUMUX_MPNC_LOCAL_RESIDUAL_MASS_KINETIC_HH
-#define DUMUX_MPNC_LOCAL_RESIDUAL_MASS_KINETIC_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/mass/localresidual.hh>
-
-namespace Dumux
-{
-/*!
- * \brief The mass conservation part of the Mp-Nc model.
- *
- * This is the specialization for the case where kinetic mass transfer
- * *is* considered.
- */
-template<class TypeTag>
-class MPNCLocalResidualMass<TypeTag, /*enableKinetic=*/true>
-{
-    using MassCommon = MPNCLocalResidualMassCommon<TypeTag>;
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-
-    enum { numPhases =  GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { conti0EqIdx = Indices::conti0EqIdx };
-    enum { nCompIdx = FluidSystem::nCompIdx } ;
-    enum { wCompIdx = FluidSystem::wCompIdx } ;
-    enum { wPhaseIdx = FluidSystem::wPhaseIdx} ;
-    enum { nPhaseIdx = FluidSystem::nPhaseIdx} ;
-    enum { sPhaseIdx = FluidSystem::sPhaseIdx} ;
-    enum { numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations) };
-    enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy) };
-
-    using EnergyResid = MPNCLocalResidualEnergy<TypeTag, enableEnergy, numEnergyEquations>;
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-
-public:
-
-    /*!
-     * \brief Calculate the storage for all mass balance equations
-     *
-     *    \param storage The mass of the component within the sub-control volume
-     *    \param volVars The volume variables
-     */
-    static void computeStorage(PrimaryVariables & storage,
-                               const VolumeVariables & volVars)
-    {
-        for (int phaseIdx =0; phaseIdx < numPhases; ++phaseIdx)
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-                storage[conti0EqIdx + phaseIdx*numComponents + compIdx] = 0.0;
-
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            addPhaseStorage(storage, volVars, phaseIdx);
-        }
-    }
-
-    /*!
-     * \brief Calculate the storage for all mass balance equations
-     *        within a single fluid phase
-     *
-     *     \param storage The mass of the component within the sub-control volume
-     *    \param volVars The volume variables
-     *    \param phaseIdx phaseIdx The index of the fluid phase
-     */
-    static void addPhaseStorage(PrimaryVariables & storage,
-                                const VolumeVariables & volVars,
-                                const unsigned int phaseIdx)
-    {
-        if (phaseIdx == sPhaseIdx)
-            return;
-
-        // calculate the component-wise mass storage
-        ComponentVector phaseComponentValues;
-        MassCommon::computePhaseStorage(phaseComponentValues,
-                                        volVars,
-                                        phaseIdx);
-        Valgrind::CheckDefined(phaseComponentValues);
-        Valgrind::CheckDefined(storage);
-
-        // copy to the primary variables
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx){
-            storage[conti0EqIdx + phaseIdx*numComponents + compIdx]
-                    += phaseComponentValues[compIdx];
-
-            using std::isfinite;
-            if (!isfinite(storage[conti0EqIdx + phaseIdx*numComponents + compIdx]))
-                DUNE_THROW(NumericalProblem, "Calculated non-finite storage");
-        }
-
-       Valgrind::CheckDefined(storage);
-    }
-
-    /*!
-     * \brief Calculate the storage for all mass balance equations
-     *
-     *        \param flux The flux over the SCV (sub-control-volume) face for each component
-     *        \param fluxVars The flux Variables
-     *        \param elemVolVars The volume variables of the current element
-     */
-    static void computeFlux(PrimaryVariables & flux,
-                            const FluxVariables & fluxVars,
-                            const ElementVolumeVariables & elemVolVars)
-    {
-        ComponentVector phaseComponentValuesMassTransport[numPhases]; // what goes into the energy module
-
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            ComponentVector phaseComponentValuesAdvection(0.);
-            ComponentVector phaseComponentValuesDiffusion(0.);
-            MassCommon::computeAdvectivePhaseFlux(phaseComponentValuesAdvection, fluxVars, phaseIdx);
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                flux[conti0EqIdx + phaseIdx*numComponents + compIdx] =
-                    phaseComponentValuesAdvection[compIdx];
-                Valgrind::CheckDefined(flux);
-            }
-            MassCommon::computeDiffusivePhaseFlux(phaseComponentValuesDiffusion, fluxVars, phaseIdx);
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                flux[conti0EqIdx + phaseIdx*numComponents + compIdx] +=
-                        phaseComponentValuesDiffusion[compIdx];
-                Valgrind::CheckDefined(flux);
-
-                using std::isfinite;
-                if (!isfinite(flux[conti0EqIdx + phaseIdx*numComponents + compIdx]))
-                    DUNE_THROW(NumericalProblem, "Calculated non-finite flux");
-            }
-
-            // Right now I think that adding the two contributions individually into the flux is best for debugging and understanding.
-            // The Energy module needs both contributions.
-            phaseComponentValuesMassTransport[phaseIdx] = phaseComponentValuesDiffusion + phaseComponentValuesAdvection ;
-            Valgrind::CheckDefined(flux);
-
-        }// phases
-
-        // The computeflux() of the Energy module needs a component-wise flux (for the diffusive enthalpie transport)
-        // It makes some sense calling energy from here, because energy is carried by mass
-        // However, it is not really tidied up.
-        // todo is there a better way to do this?
-        EnergyResid::computeFlux(flux,
-                                 fluxVars,
-                                 elemVolVars,
-                                 phaseComponentValuesMassTransport);
-        Valgrind::CheckDefined(flux);
-    }
-
-
-    /*!
-     * \brief Calculate the source terms for all mass balance equations
-     *
-     *         \param source The source/sink in the sub-control volume for each component
-     *         \param volVars the volume variables
-     */
-    static void computeSource(PrimaryVariables & source,
-                              const VolumeVariables & volVars)
-    {
-
-        // In the case of a kinetic consideration, mass transfer
-        // between phases is realized via source terms there is a
-        // balance equation for each component in each phase
-        ComponentVector componentIntoPhaseMassTransfer[numPhases];
-#define FUNKYMASSTRANSFER 0
-#if FUNKYMASSTRANSFER
-        const Scalar mu_nPhaseNCompEquil = volVars.chemicalPotentialEquil(nPhaseIdx, nCompIdx) ;   // very 2p2c
-        const Scalar mu_wPhaseWCompEquil = volVars.chemicalPotentialEquil(wPhaseIdx, wCompIdx);    // very 2p2c
-
-        const Scalar mu_wPhaseNComp = volVars.chemicalPotential(wPhaseIdx, nCompIdx) ;   // very 2p2c
-        const Scalar mu_nPhaseWComp = volVars.chemicalPotential(nPhaseIdx, wCompIdx);    // very 2p2c
-
-        Valgrind::CheckDefined(mu_nPhaseNCompEquil);
-        Valgrind::CheckDefined(mu_wPhaseWCompEquil);
-        Valgrind::CheckDefined(mu_wPhaseNComp);
-        Valgrind::CheckDefined(mu_nPhaseWComp);
-
-        const Scalar characteristicLength   = volVars.characteristicLength()  ;
-        const Scalar temperature            = volVars.temperature(wPhaseIdx);
-        const Scalar pn                     = volVars.pressure(nPhaseIdx);
-        const Scalar henry                  = FluidSystem::henry(temperature) ;
-        const Scalar gradNinWApprox  = ( mu_wPhaseNComp - mu_nPhaseNCompEquil) / characteristicLength;    // very 2p2c // 1. / henry *
-        const Scalar gradWinNApprox  = ( mu_nPhaseWComp - mu_wPhaseWCompEquil) / characteristicLength;    // very 2p2c // 1. / pn *
-
-#else // FUNKYMASSTRANSFER
-        Scalar x[numPhases][numComponents]; // mass fractions in wetting phase
-        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
-            for (int compIdx=0; compIdx< numComponents; ++ compIdx){
-                x[phaseIdx][compIdx] = volVars.moleFraction(phaseIdx, compIdx);
-            }
-        }
-        Valgrind::CheckDefined(x);
-
-//      "equilibrium" values: calculated in volume variables
-        const Scalar x_wPhaseNCompEquil = volVars.xEquil(wPhaseIdx, nCompIdx) ;   // very 2p2c
-        const Scalar x_nPhaseWCompEquil = volVars.xEquil(nPhaseIdx, wCompIdx);    // very 2p2c
-        Valgrind::CheckDefined(x_wPhaseNCompEquil);
-        Valgrind::CheckDefined(x_nPhaseWCompEquil);
-        const Scalar characteristicLength   = volVars.characteristicLength()  ;
-        const Scalar gradNinWApprox  =  (x[wPhaseIdx][nCompIdx] - x_wPhaseNCompEquil) / characteristicLength;    // very 2p2c
-        const Scalar gradWinNApprox  =  (x[nPhaseIdx][wCompIdx] - x_nPhaseWCompEquil) / characteristicLength;    // very 2p2c
-#endif
-        Scalar phaseDensity[numPhases];
-        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
-            phaseDensity[phaseIdx] = volVars.molarDensity(phaseIdx);
-        }
-
-        // diffusion coefficients in wetting phase
-        const Scalar diffCoeffNinW = volVars.diffCoeff(wPhaseIdx, wCompIdx, nCompIdx) ;
-        Valgrind::CheckDefined(diffCoeffNinW);
-        // diffusion coefficients in non-wetting phase
-        const Scalar diffCoeffWinN = volVars.diffCoeff(nPhaseIdx, wCompIdx, nCompIdx) ;
-        Valgrind::CheckDefined(diffCoeffWinN);
-
-        const Scalar factorMassTransfer     = volVars.factorMassTransfer()  ;
-        const Scalar awn = volVars.interfacialArea(wPhaseIdx, nPhaseIdx);
-
-        const Scalar sherwoodWPhase  = volVars.sherwoodNumber(wPhaseIdx);
-        const Scalar sherwoodNPhase  = volVars.sherwoodNumber(nPhaseIdx);
-
-        //      actual diffusion is always calculated for eq's 2,3
-        //      Eq's 1,4 have to be the same with different sign, because no mass is accumulated in the interface
-        //      i.e. automatically conserving mass that mvoes across the interface
-
-        const Scalar nCompIntoWPhase  = - factorMassTransfer * gradNinWApprox * awn * phaseDensity[wPhaseIdx] * diffCoeffNinW * sherwoodWPhase;
-        const Scalar nCompIntoNPhase  = - nCompIntoWPhase ;
-        const Scalar wCompIntoNPhase  = - factorMassTransfer * gradWinNApprox * awn * phaseDensity[nPhaseIdx] * diffCoeffWinN * sherwoodNPhase;
-        const Scalar wCompIntoWPhase  = - wCompIntoNPhase ;
-
-        componentIntoPhaseMassTransfer[wPhaseIdx][nCompIdx] = nCompIntoWPhase;
-        componentIntoPhaseMassTransfer[nPhaseIdx][nCompIdx] = nCompIntoNPhase;
-        componentIntoPhaseMassTransfer[nPhaseIdx][wCompIdx] = wCompIntoNPhase;
-        componentIntoPhaseMassTransfer[wPhaseIdx][wCompIdx] = wCompIntoWPhase;
-
-#if MASS_TRANSFER_OFF
-#warning MASS TRANSFER OFF
-        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
-            for (int compIdx=0; compIdx< numComponents; ++ compIdx){
-                componentIntoPhaseMassTransfer[phaseIdx][compIdx] =  0.;
-            }
-        }
-#endif
-
-        Valgrind::CheckDefined(componentIntoPhaseMassTransfer);
-
-        // Call the (kinetic) Energy module, for the source term.
-        // it has to be called from here, because the mass transfered has to be known.
-        EnergyResid::computeSource(source,
-                                   volVars,
-                                   componentIntoPhaseMassTransfer);
-
-        // Actually add the mass transfer to the sources which might
-        // exist externally
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
-            for (int compIdx = 0; compIdx < numComponents; ++ compIdx) {
-                const unsigned int eqIdx = conti0EqIdx + compIdx + phaseIdx*numComponents;
-                        source[eqIdx] += componentIntoPhaseMassTransfer[phaseIdx][compIdx] ;
-
-                        using std::isfinite;
-                        if (!isfinite(source[eqIdx]))
-                            DUNE_THROW(NumericalProblem, "Calculated non-finite source");
-            }
-        }
-        Valgrind::CheckDefined(source);
-    }
-};
-
-} // end namespace Dumux
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/volumevariables.hh b/dumux/porousmediumflow/mpnc/implicit/mass/volumevariables.hh
deleted file mode 100644
index a1c8bb4773289ce4b6329e18b7b72c038290c660..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/mass/volumevariables.hh
+++ /dev/null
@@ -1,130 +0,0 @@
-// -*- 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 Contains the mass conservation part of the volume variables.
- */
-#ifndef DUMUX_MPNC_VOLUME_VARIABLES_MASS_HH
-#define DUMUX_MPNC_VOLUME_VARIABLES_MASS_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-
-#include <dumux/material/fluidstates/compositional.hh>
-
-namespace Dumux
-{
-/*!
- * \brief The compositional part of the volume variables if chemical
- *        equilibrium _is_ assumed.
- */
-template <class TypeTag, bool enableKinetic /* = false */>
-class MPNCVolumeVariablesMass
-{
-    static_assert(!enableKinetic,
-                  "No kinetic mass transfer module included, "
-                  "but kinetic mass transfer enabled.");
-
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using ConstraintSolver = typename GET_PROP_TYPE(TypeTag, ConstraintSolver);
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { fug0Idx = Indices::fug0Idx };
-    enum { dimWorld = GridView::dimensionworld};
-    using GlobalPosition = Dune::FieldVector<typename GridView::Grid::ctype, dimWorld>;
-
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-
-public:
-    /*!
-     * \brief Update composition of all phases in the mutable
-     *        parameters from the primary variables.
-     *
-     *        \param fs Container for all the secondary variables concerning the fluids
-     *        \param paramCache Container for cache parameters
-     *        \param priVars The primary Variables
-     *        \param *hint the volume variables, usable for initial guess of composition
-     *        \param problem The problem
-     *        \param element The finite element
-     *        \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *        \param scvIdx The index of the sub-control volume
-     */
-    void update(FluidState &fs,
-                ParameterCache &paramCache,
-                const PrimaryVariables &priVars,
-                const VolumeVariables *hint,
-                const Problem &problem,
-                const Element &element,
-                const FVElementGeometry &fvGeometry,
-                const unsigned int scvIdx)
-    {
-        ComponentVector fug;
-        // retrieve component fugacities
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-            fug[compIdx] = priVars[fug0Idx + compIdx];
-
-        // calculate phase compositions
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            // initial guess
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                Scalar x_ij = 1.0/numComponents;
-                if (hint)
-                    // use the hint for the initial mole fraction!
-                    x_ij = hint->fluidState().moleFraction(phaseIdx, compIdx);
-
-                // set initial guess of the component's mole fraction
-                fs.setMoleFraction(phaseIdx,
-                                   compIdx,
-                                   x_ij);
-
-            }
-
-            // calculate the phase composition from the component
-            // fugacities
-            if (!hint)
-                // if no hint was given, we ask the constraint solver
-                // to make an initial guess
-                ConstraintSolver::guessInitial(fs, paramCache, phaseIdx, fug);
-            ConstraintSolver::solve(fs, paramCache, phaseIdx, fug);
-        }
-    }
-
-    /*!
-     * \brief If running in valgrind this makes sure that all
-     *        quantities in the volume variables are defined.
-     */
-    void checkDefined() const
-    {
-    }
-};
-
-} // end namespace
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/volumevariableskinetic.hh b/dumux/porousmediumflow/mpnc/implicit/mass/volumevariableskinetic.hh
deleted file mode 100644
index 48c9be57695fba99e2b43bde56007e1a026a610b..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/mass/volumevariableskinetic.hh
+++ /dev/null
@@ -1,175 +0,0 @@
-// -*- 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 Contains the mass conservation part of the volume variables
- */
-#ifndef DUMUX_MPNC_VOLUME_VARIABLES_MASS_KINETIC_HH
-#define DUMUX_MPNC_VOLUME_VARIABLES_MASS_KINETIC_HH
-
-#include <dumux/material/fluidstates/nonequilibrium.hh>
-#include <dumux/porousmediumflow/mpnc/implicit/mass/volumevariables.hh>
-#include <dumux/material/constraintsolvers/fluidsystemcomputefromreferencephase.hh>
-#include <dumux/material/constraintsolvers/fluidsystemconstraintsolver.hh>
-#include <dumux/material/constraintsolvers/misciblemultiphasecomposition.hh>
-
-
-namespace Dumux
-{
-/*!
- * \brief The compositional part of the volume variables if chemical
- *        equilibrium is _not_ assumed
- *
- *        The interface for basing mass transfer on chemical potentials was present in revision 12743
- */
-template <class TypeTag>
-class MPNCVolumeVariablesMass<TypeTag, /*bool enableKinetic=*/true>
-{
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { moleFrac00Idx = Indices::moleFrac00Idx };
-
-    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
-
-    //     here,  we need a constraint solver, which gives me the composition of a phase, if the other one is given
-    using ConstraintReferencePhaseSolver = FluidSystemComputeFromReferencePhase<Scalar, FluidSystem>;
-
-    //     here,  we need a constraint solver, which gives me the composition of all phases if p,T is given
-    using ConstraintSolver = FluidSystemConstraintSolver<Scalar, FluidSystem>;
-
-    //     this is the constraint solver that applies "fugacities"
-//    using ConstraintSolver = MiscibleMultiPhaseComposition<Scalar, FluidSystem>;
-public:
-
-    /*!
-     * \brief Update composition of all phases in the mutable
-     *        parameters from the primary variables.
-     *
-     *        \param actualFluidState Container for all the secondary variables concerning the fluids
-     *        \param paramCache Container for cache parameters
-     *        \param priVars The primary Variables
-     *        \param *hint the volume variables, usable for initial guess of composition
-     *        \param problem The problem
-     *        \param element The finite element
-     *        \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *        \param scvIdx The index of the sub-control volume
-     */
-    void update(FluidState & actualFluidState,
-                ParameterCache & paramCache,
-                const PrimaryVariables & priVars,
-                const VolumeVariables * hint,
-                const Problem & problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const unsigned int scvIdx)
-    {
-        // setting the mole fractions of the fluid state
-        for(int smallLoopPhaseIdx=0; smallLoopPhaseIdx<numPhases; ++smallLoopPhaseIdx){
-                // set the component mole fractions
-                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                    actualFluidState.setMoleFraction(smallLoopPhaseIdx,
-                           compIdx,
-                           priVars[moleFrac00Idx +
-                                   smallLoopPhaseIdx*numComponents +
-                                   compIdx]);
-                }
-            }
-
-//            // For using the ... other way of calculating equilibrium
-//             THIS IS ONLY FOR silencing Valgrind but is not used in this model
-            for(int smallLoopPhaseIdx=0; smallLoopPhaseIdx<numPhases; ++smallLoopPhaseIdx)
-                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                    const Scalar phi = FluidSystem::fugacityCoefficient(actualFluidState,
-                                                                        paramCache,
-                                                                        smallLoopPhaseIdx,
-                                                                        compIdx);
-                    actualFluidState.setFugacityCoefficient(smallLoopPhaseIdx,
-                                                      compIdx,
-                                                      phi);
-            }
-
-            FluidState equilFluidState; // the fluidState *on the interface* i.e. chemical equilibrium
-            equilFluidState.assign(actualFluidState) ;
-            ConstraintSolver::solve(equilFluidState,
-                                    paramCache,
-                                    /*setViscosity=*/false,
-                                    /*setEnthalpy=*/false) ;
-
-            // Setting the equilibrium composition (in a kinetic model not necessarily the same as the actual mole fraction)
-            for(int smallLoopPhaseIdx=0; smallLoopPhaseIdx<numPhases; ++smallLoopPhaseIdx){
-                for (int compIdx=0; compIdx< numComponents; ++ compIdx){
-                    xEquil_[smallLoopPhaseIdx][compIdx] = equilFluidState.moleFraction(smallLoopPhaseIdx, compIdx);
-                }
-            }
-
-            // compute densities of all phases
-            for(int smallLoopPhaseIdx=0; smallLoopPhaseIdx<numPhases; ++smallLoopPhaseIdx){
-                const Scalar rho = FluidSystem::density(actualFluidState, paramCache, smallLoopPhaseIdx);
-                actualFluidState.setDensity(smallLoopPhaseIdx, rho);
-            }
-
-            // let Valgrind check whether everything is properly defined.
-            checkDefined();
-        }
-
-    /*!
-     * \brief The mole fraction we would have in the case of chemical equilibrium /
-     *        on the interface.
-     *
-     *     \param phaseIdx The index of the fluid phase
-     *     \param compIdx The local index of the component
-     */
-    const Scalar xEquil(const unsigned int phaseIdx, const unsigned int compIdx) const
-    {
-        return xEquil_[phaseIdx][compIdx] ;
-    }
-
-
-    /*!
-     * \brief If running in valgrind this makes sure that all
-     *        quantities in the volume variables are defined.
-     */
-    void checkDefined() const
-    {
-#if HAVE_VALGRIND && !defined NDEBUG
-        Valgrind::CheckDefined(xEquil_);
-#endif
-    }
-
-private:
-    Scalar xEquil_[numPhases][numComponents];
-};
-
-} // end namespace
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/vtkwriter.hh b/dumux/porousmediumflow/mpnc/implicit/mass/vtkwriter.hh
deleted file mode 100644
index 895393781f2fcb774c1e5cc3ed22265f85f20ecb..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/mass/vtkwriter.hh
+++ /dev/null
@@ -1,124 +0,0 @@
-// -*- 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 VTK writer module for the mass related quantities of the
- *        MpNc model.
- */
-#ifndef DUMUX_MPNC_VTK_WRITER_MASS_HH
-#define DUMUX_MPNC_VTK_WRITER_MASS_HH
-
-#include "../vtkwritermodule.hh"
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- *
- * \brief VTK writer module for the mass related quantities of the
- *        MpNc model.
- *
- * This is the specialization for the case _without_ kinetic mass
- * transfer between phases.
- */
-template<class TypeTag, bool enableKinetic /* = false */>
-class MPNCVtkWriterMass : public MPNCVtkWriterModule<TypeTag>
-{
-    static_assert(!enableKinetic,
-                  "No kinetic mass transfer module included, "
-                  "but kinetic mass transfer enabled.");
-
-    using ParentType = MPNCVtkWriterModule<TypeTag>;
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum { dim = GridView::dimension };
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) };
-    enum { dofCodim = isBox ? dim : 0 };
-
-    using ComponentVector = typename ParentType::ComponentVector;
-    bool fugacityOutput_;
-
-public:
-    MPNCVtkWriterMass(const Problem &problem)
-        : ParentType(problem)
-    {
-        fugacityOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddFugacities);
-    }
-
-    /*!
-     * \brief Allocate memory for the scalar fields we would like to
-     *        write to the VTK file.
-     */
-    template <class MultiWriter>
-    void allocBuffers(MultiWriter &writer)
-    {
-        if (fugacityOutput_) this->resizeComponentBuffer_(fugacity_, isBox);
-    }
-
-    /*!
-     * \brief Modify the internal buffers according to the volume
-     *        variables seen on an element
-     *
-     *        \param element The finite element
-     *        \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *        \param elemVolVars The volume variables of the current element
-     *        \param elemBcTypes The types of the boundary conditions for all vertices of the element
-     */
-    void processElement(const Element &element,
-                        const FVElementGeometry &fvGeometry,
-                        const ElementVolumeVariables &elemVolVars,
-                        const ElementBoundaryTypes &elemBcTypes)
-    {
-        for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx) {
-            const unsigned int dofIdxGlobal = this->problem_.model().dofMapper().subIndex(element, scvIdx, dofCodim);
-            const VolumeVariables &volVars = elemVolVars[scvIdx];
-
-            if (fugacityOutput_) {
-                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                    fugacity_[compIdx][dofIdxGlobal] = volVars.fugacity(compIdx);
-                }
-            }
-        }
-    }
-
-    /*!
-     * \brief Add all buffers to the VTK output writer.
-     */
-    template <class MultiWriter>
-    void commitBuffers(MultiWriter &writer)
-    {
-        if (fugacityOutput_)
-            this->commitComponentBuffer_(writer, "f_%s", fugacity_, isBox);
-    }
-
-private:
-    ComponentVector fugacity_;
-};
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/vtkwriterkinetic.hh b/dumux/porousmediumflow/mpnc/implicit/mass/vtkwriterkinetic.hh
deleted file mode 100644
index 81d46087a0d195c999c11f5f3421d888ce9b309e..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/mass/vtkwriterkinetic.hh
+++ /dev/null
@@ -1,164 +0,0 @@
-// -*- 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 VTK writer module for the mass related quantities of the
- *        MpNc model (kinetic mass transfer case).
- */
-#ifndef DUMUX_MPNC_VTK_WRITER_MASS_KINETIC_HH
-#define DUMUX_MPNC_VTK_WRITER_MASS_KINETIC_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/vtkwritermodule.hh>
-#include <dumux/porousmediumflow/mpnc/implicit/propertieskinetic.hh>
-#include <dumux/porousmediumflow/mpnc/implicit/mass/vtkwriter.hh>
-
-
-namespace Dumux
-{
-
-/*!
- * \ingroup MPNCModel
- *
- * \brief VTK writer module for the mass related quantities of the
- *        MpNc model.
- *
- * This is the specialization for the case with kinetic mass transfer.
- */
-template<class TypeTag>
-class MPNCVtkWriterMass<TypeTag, /* enableKinetic = */ true>
-    : public MPNCVtkWriterModule<TypeTag>
-{
-    using ParentType = MPNCVtkWriterModule<TypeTag>;
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { dim = GridView::dimension };
-    enum { nPhaseIdx = FluidSystem::nPhaseIdx};
-    enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) };
-    enum { dofCodim = isBox ? dim : 0 };
-
-    enum { xEquilOutput   = GET_PROP_VALUE(TypeTag, VtkAddxEquil) };
-
-    using Element = typename GridView::template Codim<0>::Entity;
-    using ScalarVector = typename ParentType::ScalarVector;
-    using PhaseVector = typename ParentType::PhaseVector;
-    using ComponentVector = typename ParentType::ComponentVector;
-    using PhaseComponentMatrix = typename ParentType::PhaseComponentMatrix;
-
-    bool deltaPOutput_;
-public:
-    MPNCVtkWriterMass(const Problem &problem)
-        : ParentType(problem)
-    {
-        deltaPOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddDeltaP);
-    }
-
-    /*!
-     * \brief Allocate memory for the scalar fields we would like to
-     *        write to the VTK file.
-     */
-    template <class MultiWriter>
-    void allocBuffers(MultiWriter &writer)
-    {
-//        this->resizePhaseComponentBuffer_(drivingThingyMu_);
-//        this->resizePhaseComponentBuffer_(drivingThingyMole_);
-        this->resizePhaseComponentBuffer_(moleFracEquil_);
-
-//        this->resizePhaseComponentBuffer_(percentageEquilMoleFrac_);
-        if (deltaPOutput_) this->resizeScalarBuffer_(deltaP_, isBox);
-
-    }
-
-    /*!
-     * \brief Modify the internal buffers according to the volume
-     *        variables seen on an element
-     *
-     *        \param element The finite element
-     *        \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *        \param elemVolVars The volume variables of the current element
-     *        \param elemBcTypes The types of the boundary conditions for all vertices of the element
-     */
-    void processElement(const Element &element,
-                        const FVElementGeometry &fvGeometry,
-                        const ElementVolumeVariables &elemVolVars,
-                        const ElementBoundaryTypes &elemBcTypes)
-    {
-        int numLocalVertices = element.geometry().corners();
-        for (int localVertexIdx = 0; localVertexIdx< numLocalVertices; ++localVertexIdx) {
-            const unsigned int vIdxGlobal = this->problem_.vertexMapper().subIndex(element, localVertexIdx, dim);
-            const VolumeVariables &volVars = elemVolVars[localVertexIdx];
-
-            for (unsigned int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
-                for (unsigned  int compIdx = 0; compIdx < numComponents; ++ compIdx) {
-                    moleFracEquil_[phaseIdx][compIdx][vIdxGlobal]          = volVars.xEquil(phaseIdx, compIdx);
-                }
-            }
-
-//            for (unsigned int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
-//                for (unsigned  int compIdx = 0; compIdx < numComponents; ++ compIdx) {
-//                    drivingThingyMole_[phaseIdx][compIdx][vIdxGlobal]        = volVars.xEquil(phaseIdx, compIdx) - volVars.fluidState().moleFraction(phaseIdx, compIdx);
-//                    drivingThingyMu_[phaseIdx][compIdx][vIdxGlobal]          = volVars.chemicalPotentialEquil(phaseIdx, compIdx) - volVars.chemicalPotential(phaseIdx, compIdx);
-////                    percentageEquilMoleFrac_[phaseIdx][compIdx][vIdxGlobal]  = (volVars.fluidState().moleFraction(phaseIdx, compIdx)) /  volVars.xEquil(phaseIdx, compIdx);
-//                }
-//            }
-
-            if (deltaPOutput_) {
-                deltaP_[vIdxGlobal] = volVars.pressure(nPhaseIdx) - 100000.;
-            }
-        }
-    }
-
-    /*!
-     * \brief Add all buffers to the VTK output writer.
-     */
-    template <class MultiWriter>
-    void commitBuffers(MultiWriter &writer)
-    {
-//        this->commitPhaseComponentBuffer_(writer, "dirivingThingyMole_%s^%s", drivingThingyMole_);
-//        this->commitPhaseComponentBuffer_(writer, "dirivingThingyMu_%s^%s", drivingThingyMu_);
-//        this->commitPhaseComponentBuffer_(writer, "percentageEquilMoleFrac_%s^%s", percentageEquilMoleFrac_);
-
-        if(xEquilOutput){
-            this->commitPhaseComponentBuffer_(writer, "xEquil_%s^%s", moleFracEquil_);
-        }
-        if (deltaPOutput_)
-            this->commitScalarBuffer_(writer, "pnMinus1e5", deltaP_, isBox);
-    }
-
-private:
-    PhaseComponentMatrix moleFracEquil_;
-//    PhaseComponentMatrix drivingThingyMole_;
-//    PhaseComponentMatrix drivingThingyMu_;
-//    PhaseComponentMatrix percentageEquilMoleFrac_;
-
-
-    ScalarVector deltaP_;
-};
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/model.hh b/dumux/porousmediumflow/mpnc/implicit/model.hh
deleted file mode 100644
index d8b3deeca28eb2d33866185d29add88e3f0c6275..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/model.hh
+++ /dev/null
@@ -1,213 +0,0 @@
-// -*- 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 A fully implicit model for MpNc flow using
- *        vertex centered finite volumes.
- *
- */
-
-#ifndef DUMUX_MPNC_MODEL_HH
-#define DUMUX_MPNC_MODEL_HH
-
-#include "properties.hh"
-#include "vtkwriter.hh"
-
-#include <dumux/implicit/model.hh>
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- * \brief A fully implicit model for MpNc flow using
- *        vertex centered finite volumes.
- *
- * This model implements a \f$M\f$-phase flow of a fluid mixture
- * composed of \f$N\f$ chemical species. The phases are denoted by
- * lower index \f$\alpha \in \{ 1, \dots, M \}\f$. All fluid phases
- * are mixtures of \f$N \geq M - 1\f$ chemical species which are
- * denoted by the upper index \f$\kappa \in \{ 1, \dots, N \} \f$.
- *
- * The momentum approximation can be selected via "BaseFluxVariables":
- * Darcy (ImplicitDarcyFluxVariables) and Forchheimer (ImplicitForchheimerFluxVariables)
- * relations are available for all Box models.
- *
- * By inserting this into the equations for the conservation of the
- * mass of each component, one gets one mass-continuity equation for
- * each component \f$\kappa\f$
- * \f[
- \sum_{\kappa} \left(
-    \phi \frac{\partial \left(\varrho_\alpha x_\alpha^\kappa S_\alpha\right)}{\partial t}
-    +
-    \mathrm{div}\;
-    \left\{
-        v_\alpha
-       \frac{\varrho_\alpha}{\overline M_\alpha} x_\alpha^\kappa
-    \right\}
-    \right)
-    = q^\kappa
-    \f]
- * with \f$\overline M_\alpha\f$ being the average molar mass of the
- * phase \f$\alpha\f$: \f[ \overline M_\alpha = \sum_\kappa M^\kappa
- * \; x_\alpha^\kappa \f]
- *
- * For the missing \f$M\f$ model assumptions, the model assumes that
- * if a fluid phase is not present, the sum of the mole fractions of
- * this fluid phase is smaller than \f$1\f$, i.e.
- * \f[
- * \forall \alpha: S_\alpha = 0 \implies \sum_\kappa x_\alpha^\kappa \leq 1
- * \f]
- *
- * Also, if a fluid phase may be present at a given spatial location
- * its saturation must be positive:
- * \f[ \forall \alpha: \sum_\kappa x_\alpha^\kappa = 1 \implies S_\alpha \geq 0 \f]
- *
- * Since at any given spatial location, a phase is always either
- * present or not present, one of the strict equalities on the
- * right hand side is always true, i.e.
- * \f[ \forall \alpha: S_\alpha \left( \sum_\kappa x_\alpha^\kappa - 1 \right) = 0 \f]
- * always holds.
- *
- * These three equations constitute a non-linear complementarity
- * problem, which can be solved using so-called non-linear
- * complementarity functions \f$\Phi(a, b)\f$ which have the property
- * \f[\Phi(a,b) = 0 \iff a \geq0 \land b \geq0  \land a \cdot b = 0 \f]
- *
- * Several non-linear complementarity functions have been suggested,
- * e.g. the Fischer-Burmeister function
- * \f[ \Phi(a,b) = a + b - \sqrt{a^2 + b^2} \;. \f]
- * This model uses
- * \f[ \Phi(a,b) = \min \{a,  b \}\;, \f]
- * because of its piecewise linearity.
- *
- * These equations are then discretized using a fully-implicit vertex
- * centered finite volume scheme (often known as 'box'-scheme) for
- * spatial discretization and the implicit Euler method as temporal
- * discretization.
- *
- * The model assumes local thermodynamic equilibrium and uses the
- * following primary variables:
- * - The component fugacities \f$f^1, \dots, f^{N}\f$
- * - The pressure of the first phase \f$p_1\f$
- * - The saturations of the first \f$M-1\f$ phases \f$S_1, \dots, S_{M-1}\f$
- * - Temperature \f$T\f$ if the energy equation is enabled
- */
-template<class TypeTag>
-class MPNCModel : public GET_PROP_TYPE(TypeTag, BaseModel)
-{
-    using ParentType = typename GET_PROP_TYPE(TypeTag, BaseModel);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
-    using MPNCVtkWriter = Dumux::MPNCVtkWriter<TypeTag>;
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-
-    enum {enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy)};
-    enum {enableDiffusion = GET_PROP_VALUE(TypeTag, EnableDiffusion)};
-    enum {enableKinetic = GET_PROP_VALUE(TypeTag, EnableKinetic)};
-    enum {numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
-    enum {numPhases = GET_PROP_VALUE(TypeTag, NumPhases)};
-    enum {numComponents = GET_PROP_VALUE(TypeTag, NumComponents)};
-    enum {numEq = GET_PROP_VALUE(TypeTag, NumEq)};
-    enum { numEnergyEqs = Indices::numPrimaryEnergyVars};
-    enum { dimWorld = GridView::dimensionworld};
-    enum { dim = GridView::dimension};
-
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-
-
-public:
-    MPNCModel()
-    {
-        enableSmoothUpwinding_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Implicit, EnableSmoothUpwinding);
-        enablePartialReassemble_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Implicit, EnablePartialReassemble);
-        enableJacobianRecycling_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Implicit, EnableJacobianRecycling);
-        numDiffMethod_ = GET_PARAM_FROM_GROUP(TypeTag, int, Implicit, NumericDifferenceMethod);
-    }
-
-    void init(Problem &problem)
-    {
-        ParentType::init(problem);
-        vtkWriter_ = std::make_shared<MPNCVtkWriter>(problem);
-
-        if (this->gridView_().comm().rank() == 0)
-            std::cout
-                << "Initializing M-phase N-component model: \n"
-                << "    phases: " << numPhases << "\n"
-                << "    components: " << numComponents << "\n"
-                << "    equations: " << numEq << "\n"
-                << "    kinetic mass transfer: " << enableKinetic<< "\n"
-                << "    number of energy equations: " << numEnergyEquations<< "\n"
-                << "    diffusion: " << enableDiffusion << "\n"
-                << "    energy equation: " << enableEnergy << "\n"
-                << "    smooth upwinding: " << enableSmoothUpwinding_ << "\n"
-                << "    partial jacobian reassembly: " << enablePartialReassemble_ << "\n"
-                << "    numeric differentiation method: " << numDiffMethod_ << " (-1: backward, 0: central, +1 forward)\n"
-                << "    jacobian recycling: " << enableJacobianRecycling_ << "\n";
-    }
-
-    /*!
-     * \brief Compute the total storage inside one phase of all
-     *        conservation quantities.
-     *
-     *        \param phaseStorage The conserved quantity within the phase in the whole domain
-     *        \param phaseIdx The local index of the phases
-     */
-    void globalPhaseStorage(PrimaryVariables &phaseStorage, const unsigned int phaseIdx)
-    {
-        phaseStorage = 0;
-
-        for (const auto& element : elements(this->gridView_())) {
-            this->localResidual().addPhaseStorage(phaseStorage, element, phaseIdx);
-        }
-
-        if (this->gridView_().comm().size() > 1)
-            phaseStorage = this->gridView_().comm().sum(phaseStorage);
-    }
-
-    /*!
-     * \brief Add the result of the current timestep to the VTK output.
-     */
-    template <class MultiWriter>
-    void addOutputVtkFields(const SolutionVector &sol,
-                            MultiWriter &writer)
-    {
-        vtkWriter_->addCurrentSolution(writer);
-    }
-
-    std::shared_ptr<MPNCVtkWriter> vtkWriter_;
-
-private:
-    bool enableSmoothUpwinding_;
-    bool enablePartialReassemble_;
-    bool enableJacobianRecycling_;
-    int numDiffMethod_;
-};
-
-}
-
-#include "propertydefaults.hh"
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/modelkinetic.hh b/dumux/porousmediumflow/mpnc/implicit/modelkinetic.hh
deleted file mode 100644
index 8e83016d68e523ebd6bdf1037cae39d409cf31ff..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/modelkinetic.hh
+++ /dev/null
@@ -1,343 +0,0 @@
-// -*- 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
- * \brief This file adds kinetic mass and energy transfer modules to
- *        the M-phase N-component model.
- */
-#ifndef DUMUX_MPNC_MODEL_KINETIC_HH
-#define DUMUX_MPNC_MODEL_KINETIC_HH
-
-// equilibrium model
-#include <dumux/porousmediumflow/mpnc/implicit/model.hh>
-
-// generic stuff
-#include "propertieskinetic.hh"
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- * \brief A fully implicit model for MpNc flow using
- *        vertex centered finite volumes.
- *        This is the specialization that is able to capture kinetic mass and / or energy transfer.
- *
- *        Please see the comment in the localresidualenergykinetic class about the inclusion of volume changing work.
- *
- *        Please see the comment about different possibilities of calculating phase-composition in the mpnclocalresidualmasskinetic class.
- */
-
-template<class TypeTag>
-class MPNCModelKinetic : public MPNCModel<TypeTag>
-{
-    using ParentType = MPNCModel<TypeTag>;
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using ScalarField = Dune::BlockVector<Dune::FieldVector<Scalar, 1> >;
-    using MPNCVtkWriter = Dumux::MPNCVtkWriter<TypeTag>;
-
-    enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy)};
-    enum { enableDiffusion = GET_PROP_VALUE(TypeTag, EnableDiffusion)};
-    enum { enableKinetic = GET_PROP_VALUE(TypeTag, EnableKinetic)};
-    enum { numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases)};
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents)};
-    enum { numEq = GET_PROP_VALUE(TypeTag, NumEq)};
-    enum { numEnergyEqs = Indices::numPrimaryEnergyVars};
-    enum { dimWorld = GridView::dimensionworld};
-    enum { dim = GridView::dimension};
-
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-    using GlobalPositionField = Dune::BlockVector<GlobalPosition>;
-    using PhaseGlobalPositionField = std::array<GlobalPositionField, numPhases>;
-
-    using ScalarVector = std::vector<Dune::FieldVector<Scalar, 1>>;
-    using PhaseVector = std::array<ScalarVector, numPhases>;
-    using DimVector = Dune::FieldVector<Scalar, dim>;
-    using DimVectorField = Dune::BlockVector<DimVector>;
-    using PhaseDimVectorField = std::array<DimVectorField, numPhases>;
-
-public:
-    /*!
-     * \brief Initialize the fluid system's static parameters
-     * \param problem The Problem
-     */
-    void init(Problem &problem)
-    {
-        ParentType::init(problem);
-        static_assert(FluidSystem::numComponents==2, " so far kinetic mass transfer assumes a two-component system. ");
-    }
-
-    /*!
-     * \brief Initialze the velocity vectors.
-     *
-     *        Otherwise the initial solution cannot be written to disk.
-     */
-    void initVelocityStuff(){
-        // belongs to velocity averaging
-        int numVertices = this->gridView().size(dim);
-
-        // allocation and bringing to size
-        for (unsigned int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
-            volumeDarcyVelocity_[phaseIdx].resize(numVertices);
-            volumeDarcyMagVelocity_[phaseIdx].resize(numVertices);
-            std::fill(volumeDarcyMagVelocity_[phaseIdx].begin(), volumeDarcyMagVelocity_[phaseIdx].end(), 0.0);
-            boxSurface_.resize(numVertices);
-            std::fill(boxSurface_.begin(), boxSurface_.end(), 0.0);
-            volumeDarcyVelocity_[phaseIdx] = 0;
-        }
-    }
-
-
-    /*!
-     * \brief face-area weighted average of the velocities.
-     *
-     *      This function calculates the darcy velocities on the faces and averages them for one vertex.
-     *      The weight of the average is the area of the face.
-     *
-     *      Called by newtonControlle in newtonUpdate if velocityAveragingInProblem is true.
-     */
-    void calcVelocityAverage()
-    {
-        Scalar numVertices = this->gridView().size(dim);
-
-        // reset
-        for (int phaseIdx =0; phaseIdx<numPhases; ++phaseIdx){
-            std::fill(boxSurface_.begin(), boxSurface_.end(), 0.0);
-            volumeDarcyVelocity_[phaseIdx] = 0;
-            std::fill(volumeDarcyMagVelocity_[phaseIdx].begin(), volumeDarcyMagVelocity_[phaseIdx].end(), 0.0);
-        }
-
-        // loop all elements
-        for (const auto& element : elements(this->gridView_())){
-            //obtaining the elementVolumeVariables needed for the Fluxvariables
-            FVElementGeometry fvGeometry;
-            ElementVolumeVariables elemVolVars;
-            ElementBoundaryTypes elemBcTypes;
-
-            fvGeometry.update(this->gridView_(), element);
-            elemBcTypes.update(this->problem_(), element);
-
-            this->setHints(element, elemVolVars);
-            elemVolVars.update(this->problem_(),
-                               element,
-                               fvGeometry,
-                               false);
-
-            this->updateCurHints(element, elemVolVars);
-            for (int fIdx = 0; fIdx < fvGeometry.numScvf; ++ fIdx) {
-                int i = fvGeometry.subContVolFace[fIdx].i;
-                int I = this->vertexMapper().subIndex(element, i, dim);
-
-                int j = fvGeometry.subContVolFace[fIdx].j;
-                int J = this->vertexMapper().subIndex(element, j, dim);
-
-                const Scalar scvfArea     = fvGeometry.subContVolFace[fIdx].normal.two_norm();
-                boxSurface_[I]      += scvfArea;
-                boxSurface_[J]      += scvfArea;
-
-                FluxVariables fluxVars;
-                fluxVars.update(this->problem_(),
-                                element,
-                                fvGeometry,
-                                fIdx,
-                                elemVolVars);
-
-                for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-                    GlobalPosition faceDarcyVelocity = fluxVars.velocity(phaseIdx);
-                    faceDarcyVelocity   *= scvfArea;
-
-                    // although not yet really a volume average, see later: divide by surface
-                    volumeDarcyVelocity_[phaseIdx][I] += faceDarcyVelocity;
-                    volumeDarcyVelocity_[phaseIdx][J] += faceDarcyVelocity;
-                } // end phases
-            } // end faces
-        } // end elements
-
-        // Divide by the sum of the faces: actually producing the average (as well as it's magnitude)
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            // first, divide the velocity field by the
-            // respective finite volume's surface area
-            for (int I = 0; I < numVertices; ++I){
-             volumeDarcyVelocity_[phaseIdx][I]      /= boxSurface_[I];
-             volumeDarcyMagVelocity_[phaseIdx][I]   = volumeDarcyVelocity_[phaseIdx][I].two_norm() ;
-            }// end all vertices
-        }// end all phases
-    }// end calcVelocity
-
-//    /*!
-//     * \brief Check whether the current solution makes sense.
-//     */
-//    void checkPlausibility() const
-//    {
-//        // Looping over all elements of the domain
-//        using std::isfinite;
-//        for (const auto& element : elements(this->gridView_()))
-//        {
-//            ElementVolumeVariables elemVolVars;
-//            FVElementGeometry fvGeometry;
-//
-//            // updating the volume variables
-//            fvGeometry.update(this->problem_().gridView(), element);
-//            elemVolVars.update(this->problem_(), element, fvGeometry, false);
-//
-//            std::stringstream  message ;
-//            // number of scv
-//            const unsigned int numScv = fvGeometry.numScv; // box: numSCV, cc:1
-//
-//            for (unsigned int scvIdx = 0; scvIdx < numScv; ++scvIdx) {
-//
-//                const FluidState & fluidState = elemVolVars[scvIdx].fluidState();
-//
-//                // energy check
-//                for(unsigned int energyEqIdx=0; energyEqIdx<numEnergyEqs; energyEqIdx++){
-//                    const Scalar eps = 1e-6 ;
-////                    const Scalar temperatureTest = elemVolVars[scvIdx].fluidState().temperature();
-//                    const Scalar temperatureTest = elemVolVars[scvIdx].temperature(energyEqIdx);
-////                    const Scalar temperatureTest = 42;
-//
-//                    if (not isfinite(temperatureTest) or temperatureTest < 0. ){
-//                        message <<"\nUnphysical Value in Energy: \n";
-//                        message << "\tT" <<"_"<<FluidSystem::phaseName(energyEqIdx)<<"="<< temperatureTest <<"\n";
-//                    }
-//                }
-//
-//                // mass Check
-//                for(int phaseIdx=0; phaseIdx<numPhases; phaseIdx++){
-//                    const Scalar eps = 1e-6 ;
-//                    for (int compIdx=0; compIdx< numComponents; ++ compIdx){
-//                        const Scalar xTest = fluidState.moleFraction(phaseIdx, compIdx);
-//                        if (not isfinite(xTest) or xTest < 0.-eps or xTest > 1.+eps ){
-//                            message <<"\nUnphysical Value in Mass: \n";
-//
-//                            message << "\tx" <<"_"<<FluidSystem::phaseName(phaseIdx)
-//                                    <<"^"<<FluidSystem::componentName(compIdx)<<"="
-//                                    << fluidState.moleFraction(phaseIdx, compIdx) <<"\n";
-//                        }
-//                    }
-//                }
-//
-//              // interfacial area check (interfacial area between fluid as well as solid phases)
-//              for(int phaseIdxI=0; phaseIdxI<numPhases+1; phaseIdxI++){
-//                  const Scalar eps = 1e-6 ;
-//                  for (int phaseIdxII=0; phaseIdxII< numPhases+1; ++ phaseIdxII){
-//                      if (phaseIdxI == phaseIdxII)
-//                          continue;
-//                      assert(numEnergyEqs == 3) ; // otherwise this ia call does not make sense
-//                      const Scalar ia = elemVolVars[scvIdx].interfacialArea(phaseIdxI, phaseIdxII);
-//                      if (not isfinite(ia) or ia < 0.-eps ) {
-//                          message <<"\nUnphysical Value in interfacial area: \n";
-//                          message << "\tia" <<FluidSystem::phaseName(phaseIdxI)
-//                                           <<FluidSystem::phaseName(phaseIdxII)<<"="
-//                                  << ia << "\n" ;
-//                          message << "\t S[0]=" << fluidState.saturation(0);
-//                          message << "\t S[1]=" << fluidState.saturation(1);
-//                          message << "\t p[0]=" << fluidState.pressure(0);
-//                          message << "\t p[1]=" << fluidState.pressure(1);
-//                      }
-//                  }
-//              }
-//
-//                // General Check
-//                for(int phaseIdx=0; phaseIdx<numPhases; phaseIdx++){
-//                    const Scalar eps = 1e-6 ;
-//                    const Scalar saturationTest = fluidState.saturation(phaseIdx);
-//                    if (not isfinite(saturationTest) or  saturationTest< 0.-eps or saturationTest > 1.+eps ){
-//                        message <<"\nUnphysical Value in Saturation: \n";
-//                        message << "\tS" <<"_"<<FluidSystem::phaseName(phaseIdx)<<"=" << std::scientific
-//                        << fluidState.saturation(phaseIdx) << std::fixed << "\n";
-//                    }
-//                }
-//
-//              // velocity Check
-//                const unsigned int globalVertexIdx = this->problem_().vertexMapper().subIndex(element, scvIdx, dim);
-//              for(int phaseIdx=0; phaseIdx<numPhases; phaseIdx++){
-//                  const Scalar eps = 1e-6 ;
-//                  const Scalar velocityTest = volumeDarcyMagVelocity(phaseIdx, globalVertexIdx);
-//                  if (not isfinite(velocityTest) ){
-//                      message <<"\nUnphysical Value in Velocity: \n";
-//                      message << "\tv" <<"_"<<FluidSystem::phaseName(phaseIdx)<<"=" << std::scientific
-//                      << velocityTest << std::fixed << "\n";
-//                  }
-//              }
-//
-//
-//                // Some check wrote into the error-message, add some additional information and throw
-//                if (not message.str().empty()){
-//                    // Getting the spatial coordinate
-//                    const GlobalPosition & globalPosCurrent = fvGeometry.subContVol[scvIdx].global;
-//                    std::stringstream positionString ;
-//
-//                    // Add physical location
-//                    positionString << "Here:";
-//                    for(int i=0; i<dim; i++)
-//                        positionString << " x"<< (i+1) << "="  << globalPosCurrent[i] << " "   ;
-//                    message << "Unphysical value found! \n" ;
-//                    message << positionString.str() ;
-//                    message << "\n";
-//
-//                    message << " Here come the primary Variables:" << "\n" ;
-//                    for(unsigned int priVarIdx =0 ; priVarIdx<numEq; ++priVarIdx){
-//                        message << "priVar[" << priVarIdx << "]=" << elemVolVars[scvIdx].priVar(priVarIdx) << "\n";
-//                    }
-//                    DUNE_THROW(NumericalProblem, message.str());
-//                }
-//            } // end scv-loop
-//        } // end element loop
-//    }
-
-    /*!
-     * \brief Access to the averaged (magnitude of) velocity for each vertex.
-     *
-     * \param phaseIdx The index of the fluid phase
-     * \param dofIdxGlobal The global index of the degree of freedom
-     *
-     */
-    const Scalar volumeDarcyMagVelocity(const unsigned int phaseIdx,
-                                        const unsigned int dofIdxGlobal) const
-    { return volumeDarcyMagVelocity_[phaseIdx][dofIdxGlobal]; }
-
-    /*!
-     * \brief Access to the averaged velocity for each vertex.
-     *
-     * \param phaseIdx The index of the fluid phase
-     * \param dofIdxGlobal The global index of the degree of freedom
-     */
-    const GlobalPosition volumeDarcyVelocity(const unsigned int phaseIdx,
-                                        const unsigned int dofIdxGlobal) const
-    { return volumeDarcyVelocity_[phaseIdx][dofIdxGlobal]; }
-
-private:
-    PhaseGlobalPositionField volumeDarcyVelocity_;
-    PhaseVector         volumeDarcyMagVelocity_ ;
-    ScalarVector        boxSurface_ ;
-};
-
-} // namespace Dumux
-
-#include "propertydefaultskinetic.hh"
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/newtoncontroller.hh b/dumux/porousmediumflow/mpnc/implicit/newtoncontroller.hh
deleted file mode 100644
index 45695cbaa5fa22226fa9c124006862bc41a60af3..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/newtoncontroller.hh
+++ /dev/null
@@ -1,279 +0,0 @@
-// -*- 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 A MpNc specific controller for the newton solver, which knows
- *       'physically meaningful' solution.
- *
- * This controller 'knows' what a 'physically meaningful' solution is
- * which allows the newton method to abort quicker if the solution is
- * way out of bounds.
- */
-#ifndef DUMUX_MPNC_NEWTON_CONTROLLER_HH
-#define DUMUX_MPNC_NEWTON_CONTROLLER_HH
-
-#include "properties.hh"
-
-#include <dumux/nonlinear/newtoncontroller.hh>
-#include <algorithm>
-
-namespace Dumux {
-
-/*!
- * \brief A MpNc specific controller for the newton solver, which knows
- *       'physically meaningful' solution.
- */
-template <class TypeTag, bool enableKinetic /* = false */>
-class MpNcNewtonChop
-{
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
-
-    enum { numPhases =  GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents =  GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { fug0Idx = Indices::fug0Idx };
-    enum { s0Idx = Indices::s0Idx };
-    enum { p0Idx = Indices::p0Idx };
-
-public:
-    static void chop(SolutionVector &uCurrentIter,
-                     const SolutionVector &uLastIter)
-    {
-        for (unsigned int i = 0; i < uLastIter.size(); ++i) {
-            for (unsigned int phaseIdx = 0; phaseIdx < numPhases - 1; ++phaseIdx)
-                saturationChop_(uCurrentIter[i][s0Idx + phaseIdx],
-                                uLastIter[i][s0Idx + phaseIdx]);
-            pressureChop_(uCurrentIter[i][p0Idx], uLastIter[i][p0Idx]);
-            for (unsigned int comp = 0; comp < numComponents; ++comp) {
-                pressureChop_(uCurrentIter[i][fug0Idx + comp], uLastIter[i][fug0Idx + comp]);
-            }
-
-        }
-    };
-
-private:
-    static void clampValue_(Scalar &val,
-                            const Scalar minVal,
-                            const Scalar maxVal)
-    {
-        using std::max;
-        using std::min;
-        val = max(minVal, min(val, maxVal));
-    };
-
-    static void pressureChop_(Scalar &val,
-                              const Scalar oldVal)
-    {
-        using std::max;
-        const Scalar maxDelta = max(oldVal/4.0, 10e3);
-        clampValue_(val, oldVal - maxDelta, oldVal + maxDelta);
-        val = max(0.0, val); // don't allow negative pressures
-    }
-
-    static void saturationChop_(Scalar &val,
-                                const Scalar oldVal)
-    {
-        const Scalar maxDelta = 0.25;
-        clampValue_(val, oldVal - maxDelta, oldVal + maxDelta);
-        clampValue_(val, -0.001, 1.001);
-    }
-
-};
-
-template <class TypeTag>
-class MpNcNewtonChop<TypeTag, /*enableKinetic=*/true>
-{
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
-
-    enum { numPhases =  GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents =  GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { moleFrac00Idx = Indices::moleFrac00Idx };
-    enum { s0Idx = Indices::s0Idx };
-    enum { p0Idx = Indices::p0Idx };
-
-public:
-    static void chop(SolutionVector &uCurrentIter,
-                     const SolutionVector &uLastIter)
-    {
-        for (unsigned int i = 0; i < uLastIter.size(); ++i) {
-            for (int phaseIdx = 0; phaseIdx < numPhases - 1; ++phaseIdx)
-                saturationChop_(uCurrentIter[i][s0Idx + phaseIdx],
-                                uLastIter[i][s0Idx + phaseIdx]);
-            pressureChop_(uCurrentIter[i][p0Idx], uLastIter[i][p0Idx]);
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                    moleFracChop_(uCurrentIter[i][moleFrac00Idx + phaseIdx*numComponents + compIdx],
-                                  uLastIter[i][moleFrac00Idx + phaseIdx*numComponents + compIdx]);
-                }
-            }
-
-        }
-    }
-
-private:
-    static void clampValue_(Scalar &val,
-                            const Scalar minVal,
-                            const Scalar maxVal)
-    {
-        using std::max;
-        using std::min;
-        val = max(minVal, min(val, maxVal));
-    };
-
-    static void pressureChop_(Scalar &val,
-                              const Scalar oldVal)
-    {
-        using std::max;
-        const Scalar maxDelta = max(oldVal/4.0, 10e3);
-        clampValue_(val, oldVal - maxDelta, oldVal + maxDelta);
-        val = max(0.0, val); // don't allow negative pressures
-    }
-
-    static void saturationChop_(Scalar &val,
-                                const Scalar oldVal)
-    {
-        const Scalar maxDelta = 0.25;
-        clampValue_(val, oldVal - maxDelta, oldVal + maxDelta);
-        clampValue_(val, -0.001, 1.001);
-    }
-
-    static void moleFracChop_(Scalar &val,
-                              const Scalar oldVal)
-    {
-        // no component mole fraction can change by more than 20% per iteration
-        const Scalar maxDelta = 0.20;
-        clampValue_(val, oldVal - maxDelta, oldVal + maxDelta);
-        clampValue_(val, -0.001, 1.001);
-    }
-
-};
-
-/*!
- * \ingroup Newton
- * \brief A MpNc specific controller for the newton solver.
- *
- * This controller 'knows' what a 'physically meaningful' solution is
- * which allows the newton method to abort quicker if the solution is
- * way out of bounds.
- */
-template <class TypeTag>
-class MPNCNewtonController : public NewtonController<TypeTag>
-{
-    using ParentType = NewtonController<TypeTag>;
-    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-
-    enum {numPhases = GET_PROP_VALUE(TypeTag, NumPhases)};
-    enum {    numComponents = GET_PROP_VALUE(TypeTag, NumComponents)};
-    enum {enableKinetic = GET_PROP_VALUE(TypeTag, EnableKinetic)};
-    enum {p0Idx = Indices::p0Idx};
-    enum {s0Idx = Indices::s0Idx};
-
-    using NewtonChop = MpNcNewtonChop<TypeTag, enableKinetic>;
-
-public:
-    MPNCNewtonController(const Problem &problem)
-        : ParentType(problem)
-    {
-        enableChop_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Newton, EnableChop);
-        Dune::FMatrixPrecision<>::set_singular_limit(1e-35);
-    };
-
-    void newtonUpdate(SolutionVector &uCurrentIter,
-                      const SolutionVector &uLastIter,
-                      const SolutionVector &deltaU)
-    {
-        if (this->enableShiftCriterion_ || this->enablePartialReassemble_)
-            this->newtonUpdateShift(uLastIter, deltaU);
-
-        // compute the vertex and element colors for partial
-        // reassembly
-        using std::max;
-        using std::min;
-        if (this->enablePartialReassemble_) {
-            const Scalar minReasmTol = 1e-2*this->shiftTolerance_;
-            const Scalar maxReasmTol = 1e1*this->shiftTolerance_;
-            Scalar reassembleTol = max(minReasmTol, min(maxReasmTol, this->shift_/1e4));
-
-            this->model_().jacobianAssembler().updateDiscrepancy(uLastIter, deltaU);
-            this->model_().jacobianAssembler().computeColors(reassembleTol);
-        }
-
-        this->writeConvergence_(uLastIter, deltaU);
-
-        if (GET_PARAM_FROM_GROUP(TypeTag, bool, Newton, UseLineSearch)) {
-            lineSearchUpdate_(uCurrentIter, uLastIter, deltaU);
-        }
-        else {
-            for (unsigned int i = 0; i < uLastIter.size(); ++i) {
-                uCurrentIter[i] = uLastIter[i];
-                uCurrentIter[i] -= deltaU[i];
-            }
-
-            if (this->numSteps_ < 2 && enableChop_) {
-                // put crash barriers along the update path at the
-                // beginning...
-                NewtonChop::chop(uCurrentIter, uLastIter);
-            }
-
-            if (this->enableResidualCriterion_)
-            {
-                SolutionVector tmp(uLastIter);
-                this->reduction_ = this->method().model().globalResidual(tmp, uCurrentIter);
-                this->reduction_ /= this->initialResidual_;
-            }
-        }
-    }
-
-private:
-    void lineSearchUpdate_(SolutionVector &uCurrentIter,
-                           const SolutionVector &uLastIter,
-                           const SolutionVector &deltaU)
-    {
-       Scalar lambda = 1.0;
-       Scalar globDef;
-
-       SolutionVector tmp(uLastIter);
-       Scalar oldGlobDef = this->model_().globalResidual(tmp, uLastIter);
-       while (true) {
-           uCurrentIter  = deltaU;
-           uCurrentIter *= -lambda;
-           uCurrentIter += uLastIter;
-
-           globDef = this->model_().globalResidual(tmp, uCurrentIter);
-           if (globDef < oldGlobDef || lambda <= 1.0/64) {
-               this->endIterMsg() << ", defect " << oldGlobDef << "->"  << globDef << "@lambda=1/" << 1/lambda;
-               return;
-           }
-
-           // try with a smaller update
-           lambda /= 2;
-       }
-    }
-
-    bool enableChop_;
-};
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/properties.hh b/dumux/porousmediumflow/mpnc/implicit/properties.hh
deleted file mode 100644
index ee99e9ad24c64f846e1e1da49e44c5f5ff480486..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/properties.hh
+++ /dev/null
@@ -1,142 +0,0 @@
-// -*- 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/>.   *
- *****************************************************************************/
-#ifndef DUMUX_MPNC_PROPERTIES_HH
-#define DUMUX_MPNC_PROPERTIES_HH
-
-#include <dumux/implicit/box/properties.hh>
-#include <dumux/implicit/cellcentered/properties.hh>
-
-/*!
- * \ingroup Properties
- * \ingroup ImplicitProperties
- * \ingroup BoxMpNcModel
- * \file
- * \brief  Defines the properties required for the MpNc fully implicit model.
- */
-namespace Dumux
-{
-namespace Properties
-{
-
-//////////////////////////////////////////////////////////////////
-// Type tags
-//////////////////////////////////////////////////////////////////
-
-//! The type tags for the implicit m-phase n-component problems
-NEW_TYPE_TAG(MPNC);
-NEW_TYPE_TAG(BoxMPNC, INHERITS_FROM(BoxModel, MPNC));
-NEW_TYPE_TAG(CCMPNC, INHERITS_FROM(CCModel, MPNC));
-
-//////////////////////////////////////////////////////////////////
-// Property tags
-//////////////////////////////////////////////////////////////////
-NEW_PROP_TAG(NumPhases);   //!< Number of fluid phases in the system
-NEW_PROP_TAG(NumComponents); //!< Number of fluid components in the system
-NEW_PROP_TAG(Indices); //!< Enumerations for the model
-
-NEW_PROP_TAG(BaseFluxVariables); //!< The type of velocity calculation that is to be used
-
-NEW_PROP_TAG(PressureFormulation);   //!< The formulation of the model
-
-NEW_PROP_TAG(MPNCVtkCommonModule); //!< Vtk writer module for writing the common quantities into the VTK output file
-NEW_PROP_TAG(MPNCVtkMassModule); //!< Vtk writer module for writing the mass related quantities into the VTK output file
-NEW_PROP_TAG(MPNCVtkEnergyModule); //!< Vtk writer module for writing the energy related quantities into the VTK output file
-NEW_PROP_TAG(MPNCVtkCustomModule); //!< Vtk writer module for writing the user-specified quantities into the VTK output file
-
-NEW_PROP_TAG(VelocityAveragingInModel);//!< Should the averaging of velocities be done in the model?
-
-//! specify which quantities are written to the vtk output files
-NEW_PROP_TAG(VtkAddPorosity);
-NEW_PROP_TAG(VtkAddPermeability);
-NEW_PROP_TAG(VtkAddBoundaryTypes);
-NEW_PROP_TAG(VtkAddSaturations);
-NEW_PROP_TAG(VtkAddPressures);
-NEW_PROP_TAG(VtkAddVarPressures);
-NEW_PROP_TAG(VtkAddVelocities);
-NEW_PROP_TAG(VtkAddDensities);
-NEW_PROP_TAG(VtkAddMobilities);
-NEW_PROP_TAG(VtkAddAverageMolarMass);
-NEW_PROP_TAG(VtkAddMassFractions);
-NEW_PROP_TAG(VtkAddMoleFractions);
-NEW_PROP_TAG(VtkAddMolarities);
-NEW_PROP_TAG(VtkAddFugacities);
-NEW_PROP_TAG(VtkAddFugacityCoefficients);
-NEW_PROP_TAG(VtkAddTemperatures);
-NEW_PROP_TAG(VtkAddEnthalpies);
-NEW_PROP_TAG(VtkAddInternalEnergies);
-
-NEW_PROP_TAG(VtkAddxEquil);
-
-NEW_PROP_TAG(VtkAddReynolds);
-NEW_PROP_TAG(VtkAddPrandtl);
-NEW_PROP_TAG(VtkAddNusselt);
-NEW_PROP_TAG(VtkAddInterfacialArea);
-
-NEW_PROP_TAG(SpatialParams); //!< The type of the spatial parameters
-
-NEW_PROP_TAG(MaterialLaw);   //!< The material law which ought to be used (extracted from the spatialParams)
-
-//! The compositional twophase system of fluids which is considered
-NEW_PROP_TAG(FluidSystem);
-
-//! The thermodynamic constraint solver which calculates the
-//! composition of any phase given all component fugacities.
-NEW_PROP_TAG(ConstraintSolver);
-
-//! Enable the energy equation?
-NEW_PROP_TAG(EnableEnergy);
-
-//! Enable diffusive fluxes?
-NEW_PROP_TAG(EnableDiffusion);
-
-//! Enable kinetic resolution of mass transfer processes?
-NEW_PROP_TAG(EnableKinetic);
-
-//! Property for the definition of the number of energy equations (0,1,2,3)
-NEW_PROP_TAG(NumEnergyEquations);
-
-//! Enable Maxwell Diffusion? (If false: use Fickian Diffusion) Maxwell incorporated the mutual
-//! influences of multiple diffusing components. However, Fick seems to be more robust.
-NEW_PROP_TAG(UseMaxwellDiffusion);
-
-//! The model for the effective thermal conductivity
-NEW_PROP_TAG(ThermalConductivityModel);
-
-//! Enable gravity?
-NEW_PROP_TAG(ProblemEnableGravity);
-
-//! Use the smooth upwinding method?
-NEW_PROP_TAG(ImplicitEnableSmoothUpwinding);
-
-NEW_PROP_TAG(ImplicitMassUpwindWeight); //!< The value of the weight of the upwind direction in the mass conservation equations
-
-NEW_PROP_TAG(ImplicitMobilityUpwindWeight); //!< Weight for the upwind mobility in the velocity calculation
-
-//! Chop the Newton update at the beginning of the non-linear solver?
-NEW_PROP_TAG(NewtonEnableChop);
-
-//! Which type of fluidstate should be used?
-NEW_PROP_TAG(FluidState);
-
-//! Property for the forchheimer coefficient
-NEW_PROP_TAG(SpatialParamsForchCoeff);
-}
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/propertieskinetic.hh b/dumux/porousmediumflow/mpnc/implicit/propertieskinetic.hh
deleted file mode 100644
index 5e03f986dce393fc55edbc035552d61313a3f822..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/propertieskinetic.hh
+++ /dev/null
@@ -1,73 +0,0 @@
-// -*- 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 This file declares and defines the properties required by
- *        the kinetic modules the M-phase N-component model.
- */
-#ifndef DUMUX_MPNC_PROPERTIES_KINETIC_HH
-#define DUMUX_MPNC_PROPERTIES_KINETIC_HH
-
-#include "properties.hh"
-
-namespace Dumux
-{
-namespace Properties
-{
-//////////////////////////////////////////////////////////////////
-// Type tags
-//////////////////////////////////////////////////////////////////
-NEW_TYPE_TAG(BoxMPNCKinetic, INHERITS_FROM(BoxMPNC));
-//NEW_TYPE_TAG(CCMPNCKinetic, INHERITS_FROM(CCMPNC));
-
-//////////////////////////////////////////////////////////////////
-// Property tags
-//////////////////////////////////////////////////////////////////
-NEW_PROP_TAG(AwnSurface);   //!< The material law which ought to be used (extracted from the spatialParams)
-NEW_PROP_TAG(AwnSurfaceParams); //!< The context material law (extracted from the spatialParams)
-NEW_PROP_TAG(AwsSurface);   //!< The material law which ought to be used (extracted from the spatialParams)
-NEW_PROP_TAG(AwsSurfaceParams); //!< The context material law (extracted from the spatialParams)
-NEW_PROP_TAG(AnsSurface);   //!< The material law which ought to be used (extracted from the spatialParams)
-NEW_PROP_TAG(AnsSurfaceParams); //!< The context material law (extracted from the spatialParams)
-
-NEW_PROP_TAG(VtkAddDeltaP); // !< Output of pressure minus a fixed value
-SET_BOOL_PROP(MPNC, VtkAddDeltaP, false);
-
-//! The Model for kinetic Mass and Energy Transfer
-NEW_PROP_TAG(MPNCModelKinetic);
-
-//! Enable kinetic resolution of mass transfer processes?
-NEW_PROP_TAG(EnableKinetic);
-
-//! Property for the definition of the number of energy equations (0,1,2,3)
-NEW_PROP_TAG(NumEnergyEquations);
-
-//! average the velocity in the model
-NEW_PROP_TAG(VelocityAveragingInModel);
-
-//! which nusselt correlation to use
-NEW_PROP_TAG(NusseltFormulation);
-
-//! which sherwood correlation to use
-NEW_PROP_TAG(SherwoodFormulation);
-
-}
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/propertydefaults.hh b/dumux/porousmediumflow/mpnc/implicit/propertydefaults.hh
deleted file mode 100644
index dafbe583872e6389c3a40c4a7e34dfedce396df8..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/propertydefaults.hh
+++ /dev/null
@@ -1,264 +0,0 @@
-// -*- 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/>.   *
- *****************************************************************************/
-#ifndef DUMUX_MPNC_PROPERTY_DEFAULTS_HH
-#define DUMUX_MPNC_PROPERTY_DEFAULTS_HH
-
-#include "indices.hh"
-#include "model.hh"
-#include "localresidual.hh"
-#include "fluxvariables.hh"
-#include "volumevariables.hh"
-#include "properties.hh"
-#include "newtoncontroller.hh"
-#include "vtkwritermodule.hh"
-#include "vtkwritercommon.hh"
-#include "mass/vtkwriter.hh"
-#include "energy/vtkwriter.hh"
-
-#include <dumux/material/constraintsolvers/compositionfromfugacities.hh>
-#include <dumux/material/spatialparams/fv.hh>
-
-#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh>
-
-
-/*!
- * \ingroup Properties
- * \ingroup ImplicitProperties
- * \ingroup BoxMpNcModel
- * \file
- * \brief  Default properties for the MpNc fully implicit model.
- */
-namespace Dumux
-{
-namespace Properties
-{
-//////////////////////////////////////////////////////////////////
-// default property values
-//////////////////////////////////////////////////////////////////
-
-/*!
- * \brief Set the property for the number of components.
- *
- * We just forward the number from the fluid system.
- */
-SET_PROP(MPNC, NumComponents)
-{
-private:
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-
-public:
-    static const unsigned int value = FluidSystem::numComponents;
-};
-
-/*!
- * \brief Set the property for the number of fluid phases.
- */
-SET_PROP(MPNC, NumPhases)
-{
-private:
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-
-public:
-    static const unsigned int value = FluidSystem::numPhases;
-};
-
-/*!
- * \brief Set the property for the number of equations and primary variables.
- */
-SET_PROP(MPNC, NumEq)
-{
-private:
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-
-public:
-    static const unsigned int value = Indices::numPrimaryVars;
-};
-
-/*!
- * \brief Set the thermodynamic constraint solver which calculates the
- *        composition of any phase given all component fugacities.
- */
-SET_PROP(MPNC, ConstraintSolver)
-{
-private:
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-
-public:
-    using type = CompositionFromFugacities<Scalar, FluidSystem>;
-};
-
-
-//! Use the MpNc local jacobian operator for the MpNc model
-SET_TYPE_PROP(MPNC,
-              LocalResidual,
-              MPNCLocalResidual<TypeTag>);
-
-//! Use the MpNc specific newton controller for the MpNc model
-SET_PROP(MPNC, NewtonController)
-{public:
-    using type = MPNCNewtonController<TypeTag>;
-};
-
-//! the Model property
-SET_TYPE_PROP(MPNC, Model, MPNCModel<TypeTag>);
-
-//! use an isothermal model by default
-SET_BOOL_PROP(MPNC, EnableEnergy, false);
-
-//! disable diffusion by default
-SET_BOOL_PROP(MPNC, EnableDiffusion, false);
-
-//! disable kinetic mass transfer by default
-SET_BOOL_PROP(MPNC, EnableKinetic, false);
-
-//! disable kinetic energy transfer by default
-SET_INT_PROP(MPNC, NumEnergyEquations, 0);
-
-//! disable Maxwell Diffusion by default: use Fick
-SET_BOOL_PROP(MPNC, UseMaxwellDiffusion, false);
-
-//! enable smooth upwinding by default
-SET_BOOL_PROP(MPNC, ImplicitEnableSmoothUpwinding, false);
-
-//! the VolumeVariables property
-SET_TYPE_PROP(MPNC, VolumeVariables, MPNCVolumeVariables<TypeTag>);
-
-//! the FluxVariables property
-SET_TYPE_PROP(MPNC, FluxVariables, MPNCFluxVariables<TypeTag>);
-
-//! the Base of the Fluxvariables property (Darcy / Forchheimer)
-SET_TYPE_PROP(MPNC, BaseFluxVariables, ImplicitDarcyFluxVariables<TypeTag>);
-
-//! truncate the newton update for the first few Newton iterations of a time step
-SET_BOOL_PROP(MPNC, NewtonEnableChop, true);
-
-//! The indices required by the mpnc model
-SET_TYPE_PROP(MPNC, Indices, MPNCIndices<TypeTag, 0>);
-
-//! the upwind weight for the mass conservation equations.
-SET_SCALAR_PROP(MPNC, ImplicitMassUpwindWeight, 1.0);
-
-//! weight for the upwind mobility in the velocity calculation
-SET_SCALAR_PROP(MPNC, ImplicitMobilityUpwindWeight, 1.0);
-
-//! The spatial parameters to be employed.
-//! Use FVSpatialParams by default.
-SET_TYPE_PROP(MPNC, SpatialParams, FVSpatialParams<TypeTag>);
-
-//! The VTK writer module for common quantities
-SET_PROP(MPNC, MPNCVtkCommonModule)
-{
-    using type = MPNCVtkWriterCommon<TypeTag>;
-};
-
-//! The VTK writer module for quantities which are specific for each
-//! mass module
-SET_PROP(MPNC, MPNCVtkMassModule)
-{
-private: enum { enableKinetic = GET_PROP_VALUE(TypeTag, EnableKinetic) };
-public: using type = MPNCVtkWriterMass<TypeTag, enableKinetic>;
-};
-
-//! The VTK writer module for quantities which are specific for each
-//! energy module
-SET_PROP(MPNC, MPNCVtkEnergyModule)
-{
-private:
-    enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy) };
-    enum { numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations) };
-public:
-    using type = MPNCVtkWriterEnergy<TypeTag, enableEnergy, numEnergyEquations>;
-};
-
-//! Somerton is used as default model to compute the effective thermal heat conductivity
-SET_PROP(MPNC, ThermalConductivityModel)
-{ private :
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-  public:
-    using type = ThermalConductivitySomerton<Scalar>;
-};
-
-//! The VTK writer for user specified data (does nothing by default)
-SET_PROP(MPNC, MPNCVtkCustomModule)
-{ using type = MPNCVtkWriterModule<TypeTag>; };
-
-/*!
- * \brief The fluid state which is used by the volume variables to
- *        store the thermodynamic state. This should be chosen
- *        appropriately for the model ((non-)isothermal, equilibrium, ...).
- *        This can be done in the problem.
- */
-SET_PROP(MPNC, FluidState){
-    private:
-        using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-        using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    public:
-        using type = CompositionalFluidState<Scalar, FluidSystem>;
-};
-
-//! Set the default pressure formulation to the pressure of the (most) wetting phase
-SET_INT_PROP(MPNC,
-             PressureFormulation,
-             MpNcPressureFormulation::mostWettingFirst);
-
-//! default value for the forchheimer coefficient
-// Source: Ward, J.C. 1964 Turbulent flow in porous media. ASCE J. Hydraul. Div 90.
-//        Actually the Forchheimer coefficient is also a function of the dimensions of the
-//        porous medium. Taking it as a constant is only a first approximation
-//        (Nield, Bejan, Convection in porous media, 2006, p. 10)
-SET_SCALAR_PROP(MPNC, SpatialParamsForchCoeff, 0.55);
-
-
-//!< Should the averaging of velocities be done in the Model? (By default in the output)
-SET_BOOL_PROP(MPNC, VelocityAveragingInModel, false);
-
-//! Specify what to add to the VTK output by default
-SET_BOOL_PROP(MPNC, VtkAddPorosity, true);
-SET_BOOL_PROP(MPNC, VtkAddPermeability, false);
-SET_BOOL_PROP(MPNC, VtkAddBoundaryTypes, false);
-SET_BOOL_PROP(MPNC, VtkAddSaturations, true);
-SET_BOOL_PROP(MPNC, VtkAddPressures, true);
-SET_BOOL_PROP(MPNC, VtkAddVarPressures, false);
-SET_BOOL_PROP(MPNC, VtkAddVelocities, false);
-SET_BOOL_PROP(MPNC, VtkAddDensities, true);
-SET_BOOL_PROP(MPNC, VtkAddMobilities, true);
-SET_BOOL_PROP(MPNC, VtkAddAverageMolarMass, false);
-SET_BOOL_PROP(MPNC, VtkAddMassFractions, false);
-SET_BOOL_PROP(MPNC, VtkAddMoleFractions, true);
-SET_BOOL_PROP(MPNC, VtkAddMolarities, false);
-SET_BOOL_PROP(MPNC, VtkAddFugacities, false);
-SET_BOOL_PROP(MPNC, VtkAddFugacityCoefficients, false);
-SET_BOOL_PROP(MPNC, VtkAddTemperatures, false);
-SET_BOOL_PROP(MPNC, VtkAddEnthalpies, true);
-SET_BOOL_PROP(MPNC, VtkAddInternalEnergies, false);
-SET_BOOL_PROP(MPNC, VtkAddReynolds, false);
-SET_BOOL_PROP(MPNC, VtkAddPrandtl, false);
-SET_BOOL_PROP(MPNC, VtkAddNusselt, false);
-SET_BOOL_PROP(MPNC, VtkAddInterfacialArea, false);
-SET_BOOL_PROP(MPNC, VtkAddxEquil, false);
-
-// enable gravity by default
-SET_BOOL_PROP(MPNC, ProblemEnableGravity, true);
-
-}
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/propertydefaultskinetic.hh b/dumux/porousmediumflow/mpnc/implicit/propertydefaultskinetic.hh
deleted file mode 100644
index 5b7cd3696834bd0a9e4028190130b7e106097eb5..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/propertydefaultskinetic.hh
+++ /dev/null
@@ -1,123 +0,0 @@
-// -*- 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 This file declares and defines the properties required by
- *        the kinetic modules the M-phase N-component model.
- */
-#ifndef DUMUX_MPNC_PROPERTY_DEFAULTS_KINETIC_HH
-#define DUMUX_MPNC_PROPERTY_DEFAULTS_KINETIC_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-
-#include <dumux/porousmediumflow/mpnc/implicit/modelkinetic.hh>
-
-// interfacial area volume variables
-#include "volumevariablesiakinetic.hh"
-
-// kinetic mass module
-#include "mass/indiceskinetic.hh"
-#include "mass/localresidualkinetic.hh"
-#include "mass/volumevariableskinetic.hh"
-#include "mass/vtkwriterkinetic.hh"
-
-// kinetic energy module
-#include "energy/indiceskinetic.hh"
-#include "energy/localresidualkinetic.hh"
-#include "energy/fluxvariableskinetic.hh"
-#include "energy/volumevariableskinetic.hh"
-#include "energy/vtkwriterkinetic.hh"
-
-namespace Dumux
-{
-namespace Properties
-{
-
-/*!
- * \brief Set the property for the model.
- */
-SET_TYPE_PROP(BoxMPNCKinetic, Model, MPNCModelKinetic<TypeTag>);
-
-/*!
- * \brief Set the property for the awn surface parameters by extracting
- *        it from awn surface.
- */
-SET_PROP(BoxMPNCKinetic, AwnSurfaceParams)
-{
-private:
-    using AwnSurface = typename GET_PROP_TYPE(TypeTag, AwnSurface);
-
-public:
-    using type = typename AwnSurface::Params;
-};
-
-/*!
- * \brief Set the property for the aws surface parameters by extracting
- *        it from aws surface.
- */
-SET_PROP(BoxMPNCKinetic, AwsSurfaceParams)
-{
-private:
-    using AwsSurface = typename GET_PROP_TYPE(TypeTag, AwsSurface);
-
-public:
-    using type = typename AwsSurface::Params;
-};
-
-/*!
- * \brief Set the property for the ans surface parameters by extracting
- *        it from the surface.
- */
-SET_PROP(BoxMPNCKinetic, AnsSurfaceParams)
-{
-private:
-    using AnsSurface = typename GET_PROP_TYPE(TypeTag, AnsSurface);
-
-public:
-    using type = typename AnsSurface::Params;
-};
-
-SET_BOOL_PROP(BoxMPNCKinetic, VelocityAveragingInModel, true);
-
-/*!
- * \brief Set the default formulation for the nusselt correlation
- *        Other possible parametrizations can be found in the dimensionlessnumbers
- */
-SET_PROP(BoxMPNCKinetic, NusseltFormulation ){
-    private:
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using DimLessNum = DimensionlessNumbers<Scalar>;
-    public:
-    static constexpr int value = DimLessNum::NusseltFormulation::WakaoKaguei;};
-
-/*!
- * \brief Set the default formulation for the sherwood correlation
- *        Other possible parametrizations can be found in the dimensionlessnumbers
- */
-SET_PROP(BoxMPNCKinetic, SherwoodFormulation ){
-    private:
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using DimLessNum = DimensionlessNumbers<Scalar>;
-    public:
-    static constexpr int value = DimLessNum::SherwoodFormulation::WakaoKaguei;};
-
-} // end namespace Properties
-} // end namespace Dumux
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/volumevariablesia.hh b/dumux/porousmediumflow/mpnc/implicit/volumevariablesia.hh
deleted file mode 100644
index afd22e012e56aa7c4a0475b1e6e4a5fea04fb09c..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/volumevariablesia.hh
+++ /dev/null
@@ -1,98 +0,0 @@
-// -*- 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 This class contains the volume variables required for the
- *        modules which require the specific interfacial area between
- *        fluid phases.
- */
-#ifndef DUMUX_MPNC_VOLUME_VARIABLES_IA_HH
-#define DUMUX_MPNC_VOLUME_VARIABLES_IA_HH
-
-#include <dumux/porousmediumflow/mpnc/implicit/properties.hh>
-
-namespace Dumux
-{
-
-/*!
- * \brief This class contains the volume variables required for the
- *        modules which require the specific interfacial area between
- *        fluid phases.
- *
- * This is the specialization for the cases which do _not_ require
- * specific interfacial area.
- */
-template <class TypeTag, bool enableKinetic, int numEnergyEquations>
-class MPNCVolumeVariablesIA
-{
-    static_assert(((numEnergyEquations < 1) && !enableKinetic),
-                  "The kinetic energy modules need specific interfacial area "
-                  "but no suitable specialization of the IA volume variables module "
-                  "has been included.");
-
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-    using Element = typename GridView::template Codim<0>::Entity;
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    enum {dimWorld=GridView::dimensionworld};
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-
-public:
-    /*!
-     * \brief Updates the volume specific interfacial area [m^2 / m^3] between the phases.
-     *
-     *      \param volVars The volume variables
-     *      \param fluidState Container for all the secondary variables concerning the fluids
-     *      \param paramCache Container for cache parameters
-     *      \param priVars The primary Variables
-     *      \param problem The problem
-     *      \param element The finite element
-     *      \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *      \param scvIdx The index of the sub-control volumete element
-     *
-     */
-    void update(const VolumeVariables & volVars,
-                const FluidState &fluidState,
-                const ParameterCache &paramCache,
-                const PrimaryVariables &priVars,
-                const Problem &problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const unsigned int scvIdx)
-    {
-    }
-
-    /*!
-     * \brief If running in valgrind this makes sure that all
-     *        quantities in the volume variables are defined.
-     */
-    void checkDefined() const
-    { }
-};
-
-} // namespace Dumux
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/vtkwriter.hh b/dumux/porousmediumflow/mpnc/implicit/vtkwriter.hh
deleted file mode 100644
index d532c0a56d2bae570f29745145ec1cfb0beaf6f8..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/vtkwriter.hh
+++ /dev/null
@@ -1,127 +0,0 @@
-// -*- 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 Writes the VTK output files for a solution of the MpNc model.
- */
-
-#ifndef DUMUX_MPNC_VTK_WRITER_HH
-#define DUMUX_MPNC_VTK_WRITER_HH
-
-#include "properties.hh"
-
-#include <dumux/io/vtkmultiwriter.hh>
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- * \brief Writes the VTK output files for a
- * solution of the MpNc model.
- */
-template<class TypeTag>
-class MPNCVtkWriter
-{
-    using MPNCVtkCommonModule = typename GET_PROP_TYPE(TypeTag, MPNCVtkCommonModule);
-    using MPNCVtkMassModule = typename GET_PROP_TYPE(TypeTag, MPNCVtkMassModule);
-    using MPNCVtkEnergyModule = typename GET_PROP_TYPE(TypeTag, MPNCVtkEnergyModule);
-    using MPNCVtkCustomModule = typename GET_PROP_TYPE(TypeTag, MPNCVtkCustomModule);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-
-public:
-    MPNCVtkWriter(const Problem &problem)
-        : problem_(problem)
-        , commonWriter_(problem)
-        , massWriter_(problem)
-        , energyWriter_(problem)
-        , customWriter_(problem)
-    {
-    }
-
-    /*!
-     * \brief Add  the current solution to the VtkMultiWriter.
-     */
-    template <class MultiWriter>
-    void addCurrentSolution(MultiWriter &writer)
-    {
-        // tell sub-writers to allocate their buffers
-        commonWriter_.allocBuffers(writer);
-        massWriter_.allocBuffers(writer);
-        energyWriter_.allocBuffers(writer);
-        customWriter_.allocBuffers(writer);
-
-        // iterate over grid
-        FVElementGeometry fvGeometry;
-        ElementVolumeVariables elemVolVars;
-        ElementBoundaryTypes elemBcTypes;
-
-        for (const auto& element : elements(problem_.gridView(), Dune::Partitions::interior))
-        {
-            fvGeometry.update(problem_.gridView(), element);
-            elemBcTypes.update(problem_, element);
-            this->problem_.model().setHints(element, elemVolVars);
-            elemVolVars.update(problem_,
-                               element,
-                               fvGeometry,
-                               false);
-            this->problem_.model().updateCurHints(element, elemVolVars);
-
-            // tell the sub-writers to do what ever they need to with
-            // their internal buffers when a given element is seen.
-            commonWriter_.processElement(element,
-                                         fvGeometry,
-                                         elemVolVars,
-                                         elemBcTypes);
-            massWriter_.processElement(element,
-                                       fvGeometry,
-                                       elemVolVars,
-                                       elemBcTypes);
-            energyWriter_.processElement(element,
-                                         fvGeometry,
-                                         elemVolVars,
-                                         elemBcTypes);
-            customWriter_.processElement(element,
-                                         fvGeometry,
-                                         elemVolVars,
-                                         elemBcTypes);
-        }
-
-        // write everything to the output file
-        commonWriter_.commitBuffers(writer);
-        massWriter_.commitBuffers(writer);
-        energyWriter_.commitBuffers(writer);
-        customWriter_.commitBuffers(writer);
-    }
-
-private:
-    const Problem &problem_;
-
-    MPNCVtkCommonModule commonWriter_;
-    MPNCVtkMassModule massWriter_;
-    MPNCVtkEnergyModule energyWriter_;
-    MPNCVtkCustomModule customWriter_;
-};
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/vtkwritercommon.hh b/dumux/porousmediumflow/mpnc/implicit/vtkwritercommon.hh
deleted file mode 100644
index 016ebf6d971183731718b1887c50b83bf3a6a383..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/vtkwritercommon.hh
+++ /dev/null
@@ -1,255 +0,0 @@
-// -*- 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 VTK writer module for the common quantities of the MpNc
- *        model.
- */
-#ifndef DUMUX_MPNC_VTK_WRITER_COMMON_HH
-#define DUMUX_MPNC_VTK_WRITER_COMMON_HH
-
-#include "vtkwritermodule.hh"
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- *
- * \brief VTK writer module for the common quantities of the MpNc
- *        model.
- */
-template<class TypeTag>
-class MPNCVtkWriterCommon : public MPNCVtkWriterModule<TypeTag>
-{
-    using ParentType = MPNCVtkWriterModule<TypeTag>;
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using ScalarVector = typename ParentType::ScalarVector;
-    using PhaseVector = typename ParentType::PhaseVector;
-    using ComponentVector = typename ParentType::ComponentVector;
-    using PhaseComponentMatrix = typename ParentType::PhaseComponentMatrix;
-
-    enum { dim = GridView::dimension };
-    enum { dimWorld = GridView::dimensionworld };
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) };
-
-    using DimWorldVector = Dune::FieldVector<Scalar, dimWorld>;
-    using DimWorldField = Dune::BlockVector<DimWorldVector>;
-    using PhaseDimWorldField = std::array<DimWorldField, numPhases>;
-    enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) };
-    enum { dofCodim = isBox ? dim : 0 };
-
-public:
-    MPNCVtkWriterCommon(const Problem &problem)
-    : ParentType(problem), velocityOutput_(problem)
-    {
-        porosityOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddPorosity);
-        permeabilityOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddPermeability);
-        boundaryTypesOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddBoundaryTypes);
-        saturationOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddSaturations);
-        pressureOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddPressures);
-        densityOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddDensities);
-        mobilityOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddMobilities);
-        averageMolarMassOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddAverageMolarMass);
-        massFracOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddMassFractions);
-        moleFracOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddMoleFractions);
-        molarityOutput_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, AddMolarities);
-    }
-
-    /*!
-     * \brief Allocate memory for the scalar fields we would like to
-     *        write to the VTK file.
-     */
-    template <class MultiWriter>
-    void allocBuffers(MultiWriter &writer)
-    {
-        if (porosityOutput_)
-            this->resizeScalarBuffer_(porosity_, isBox);
-        if (permeabilityOutput_)
-            this->resizeScalarBuffer_(permeability_);
-        if (boundaryTypesOutput_)
-            this->resizeScalarBuffer_(boundaryTypes_, isBox);
-
-        if (velocityOutput_.enableOutput()) {
-            Scalar numDofs = this->problem_.model().numDofs();
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-                velocity_[phaseIdx].resize(numDofs);
-                velocity_[phaseIdx] = 0;
-            }
-        }
-
-        if (saturationOutput_) this->resizePhaseBuffer_(saturation_, isBox);
-        if (pressureOutput_) this->resizePhaseBuffer_(pressure_, isBox);
-        if (densityOutput_) this->resizePhaseBuffer_(density_, isBox);
-        if (mobilityOutput_) this->resizePhaseBuffer_(mobility_, isBox);
-        if (averageMolarMassOutput_) this->resizePhaseBuffer_(averageMolarMass_, isBox);
-        if (moleFracOutput_) this->resizePhaseComponentBuffer_(moleFrac_, isBox);
-        if (massFracOutput_) this->resizePhaseComponentBuffer_(massFrac_, isBox);
-        if (molarityOutput_) this->resizePhaseComponentBuffer_(molarity_, isBox);
-    }
-
-    /*!
-     * \brief Modify the internal buffers according to the volume
-     *        variables seen on an element
-     *
-     *        \param element The finite element
-     *        \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *        \param elemVolVars The volume variables of the current element
-     *        \param elemBcTypes The types of the boundary conditions for all vertices of the element
-     */
-    void processElement(const Element &element,
-                        const FVElementGeometry &fvGeometry,
-                        const ElementVolumeVariables &elemVolVars,
-                        const ElementBoundaryTypes &elemBcTypes)
-    {
-        for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx)
-        {
-            int dofIdxGlobal = this->problem_.model().dofMapper().subIndex(element, scvIdx, dofCodim);
-
-            const VolumeVariables &volVars = elemVolVars[scvIdx];
-
-            if (porosityOutput_) porosity_[dofIdxGlobal] = volVars.porosity();
-
-            // works for scalar permeability in spatialparameters
-            if (permeabilityOutput_) permeability_[dofIdxGlobal] = this->problem_.spatialParams().intrinsicPermeability(element,fvGeometry,scvIdx);
-
-            // calculate a single value for the boundary type: use one
-            // bit for each equation and set it to 1 if the equation
-            // is used for a dirichlet condition
-            int tmp = 0;
-            for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) {
-                if (elemBcTypes[scvIdx].isDirichlet(eqIdx))
-                    tmp += (1 << eqIdx);
-            }
-            if (boundaryTypesOutput_) boundaryTypes_[dofIdxGlobal] = tmp;
-
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-                if (saturationOutput_) saturation_[phaseIdx][dofIdxGlobal] = volVars.saturation(phaseIdx);
-                if (pressureOutput_) pressure_[phaseIdx][dofIdxGlobal] = volVars.pressure(phaseIdx);
-                if (densityOutput_) density_[phaseIdx][dofIdxGlobal] = volVars.density(phaseIdx);
-                if (mobilityOutput_) mobility_[phaseIdx][dofIdxGlobal] = volVars.mobility(phaseIdx);
-                if (averageMolarMassOutput_) averageMolarMass_[phaseIdx][dofIdxGlobal] = volVars.averageMolarMass(phaseIdx);
-                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                    if (moleFracOutput_) moleFrac_[phaseIdx][compIdx][dofIdxGlobal] = volVars.moleFraction(phaseIdx, compIdx);
-                    if (massFracOutput_) massFrac_[phaseIdx][compIdx][dofIdxGlobal] = volVars.massFraction(phaseIdx, compIdx);
-                    if (molarityOutput_) molarity_[phaseIdx][compIdx][dofIdxGlobal] = volVars.molarity(phaseIdx, compIdx);
-                }
-            }
-        }
-
-        // velocity output
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            velocityOutput_.calculateVelocity(velocity_[phaseIdx], elemVolVars, fvGeometry, element, phaseIdx);
-        }
-    }
-
-    /*!
-     * \brief Add all buffers to the VTK output writer.
-     */
-    template <class MultiWriter>
-    void commitBuffers(MultiWriter &writer)
-    {
-        if (saturationOutput_)
-            this->commitPhaseBuffer_(writer, "S_%s", saturation_, isBox);
-
-        if (pressureOutput_)
-            this->commitPhaseBuffer_(writer, "p_%s", pressure_, isBox);
-
-        if (densityOutput_)
-            this->commitPhaseBuffer_(writer, "rho_%s", density_, isBox);
-
-        if (averageMolarMassOutput_)
-            this->commitPhaseBuffer_(writer, "M_%s", averageMolarMass_, isBox);
-
-        if (mobilityOutput_)
-            this->commitPhaseBuffer_(writer, "lambda_%s", mobility_, isBox);
-
-        if (porosityOutput_)
-            this->commitScalarBuffer_(writer, "porosity", porosity_, isBox);
-
-        if (boundaryTypesOutput_)
-            this->commitScalarBuffer_(writer, "boundary types", boundaryTypes_, isBox);
-
-        if (moleFracOutput_)
-            this->commitPhaseComponentBuffer_(writer, "x_%s^%s", moleFrac_, isBox);
-
-        if (massFracOutput_)
-            this->commitPhaseComponentBuffer_(writer, "X_%s^%s", massFrac_, isBox);
-
-        if(molarityOutput_)
-            this->commitPhaseComponentBuffer_(writer, "c_%s^%s", molarity_, isBox);
-
-        if (velocityOutput_.enableOutput()) {
-            for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-                std::ostringstream oss;
-                oss << "velocity_" << FluidSystem::phaseName(phaseIdx);
-                writer.attachDofData(velocity_[phaseIdx],
-                                     oss.str(), isBox, dim);
-            }
-        }
-    }
-
-private:
-    bool porosityOutput_;
-    bool permeabilityOutput_ ;
-    bool boundaryTypesOutput_;
-    bool saturationOutput_;
-    bool pressureOutput_;
-    bool densityOutput_;
-    bool mobilityOutput_;
-    bool massFracOutput_;
-    bool moleFracOutput_;
-    bool molarityOutput_;
-    bool averageMolarMassOutput_;
-
-    PhaseVector saturation_;
-    PhaseVector pressure_;
-    PhaseVector density_;
-    PhaseVector mobility_;
-    PhaseVector averageMolarMass_;
-
-    PhaseDimWorldField velocity_;
-
-    ScalarVector porosity_;
-    ScalarVector permeability_;
-    ScalarVector temperature_;
-    ScalarVector boundaryTypes_;
-
-    PhaseComponentMatrix moleFrac_;
-    PhaseComponentMatrix massFrac_;
-    PhaseComponentMatrix molarity_;
-
-    ComponentVector fugacity_;
-
-    ImplicitVelocityOutput<TypeTag> velocityOutput_;
-};
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/vtkwritermodule.hh b/dumux/porousmediumflow/mpnc/implicit/vtkwritermodule.hh
deleted file mode 100644
index 89e5acd13bfbeaa2f5bd7b592eaa1a27d253380a..0000000000000000000000000000000000000000
--- a/dumux/porousmediumflow/mpnc/implicit/vtkwritermodule.hh
+++ /dev/null
@@ -1,263 +0,0 @@
-// -*- 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 A VTK writer module which adheres to the required API but
- *        does nothing.
- */
-
-#ifndef DUMUX_MPNC_VTK_BASE_WRITER_HH
-#define DUMUX_MPNC_VTK_BASE_WRITER_HH
-
-#include <array>
-#include <cstdio>
-
-#include <dune/istl/bvector.hh>
-
-#include <dumux/io/vtkmultiwriter.hh>
-#include "properties.hh"
-
-namespace Dumux
-{
-/*!
- * \ingroup MPNCModel
- *
- * \brief A VTK writer module which adheres to the required API but
- *        does nothing.
- *
- * This class also provides some convenience methods for buffer
- * management.
- */
-template<class TypeTag>
-class MPNCVtkWriterModule
-{
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using Element = typename GridView::template Codim<0>::Entity;
-
-    enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
-    enum { dim             = GridView::dimension };
-
-public:
-    using ScalarVector = std::vector<Dune::FieldVector<Scalar, 1>>;
-    using PhaseVector = std::array<ScalarVector, numPhases>;
-    using ComponentVector = std::array<ScalarVector, numComponents>;
-    using PhaseComponentMatrix = std::array<ComponentVector, numPhases>;
-
-    MPNCVtkWriterModule(const Problem &problem)
-        : problem_(problem)
-    {
-    }
-
-    /*!
-     * \brief Allocate memory for the scalar fields we would like to
-     *        write to the VTK file.
-     */
-    template <class MultiWriter>
-    void allocBuffers(MultiWriter &writer)
-    {
-    }
-
-    /*!
-     * \brief Modify the internal buffers according to the volume
-     *        variables seen on an element
-     */
-    void processElement(const Element &element,
-                        const FVElementGeometry &fvGeometry,
-                        const ElementVolumeVariables &elemCurVolVars,
-                        const ElementBoundaryTypes &elemBcTypes)
-    {
-    }
-
-    /*!
-     * \brief Add all buffers to the VTK output writer.
-     */
-    template <class MultiWriter>
-    void commitBuffers(MultiWriter &writer)
-    {
-    }
-
-protected:
-    /*!
-     * \brief Allocate the space for a buffer storing a scalar quantity
-     */
-    void resizeScalarBuffer_(ScalarVector &buffer,
-                             bool vertexCentered = true)
-    {
-        Scalar n; // numVertices for vertexCentereed, numVolumes for volume centered
-        if (vertexCentered)
-            n = problem_.gridView().size(dim);
-        else
-            n = problem_.gridView().size(0);
-
-        buffer.resize(n);
-        std::fill(buffer.begin(), buffer.end(), 0.0);
-    }
-
-    /*!
-     * \brief Allocate the space for a buffer storing a phase-specific
-     *        quantity
-     */
-    void resizePhaseBuffer_(PhaseVector &buffer,
-                            bool vertexCentered = true)
-    {
-        Scalar n; // numVertices for vertexCentereed, numVolumes for volume centered
-        if (vertexCentered)
-            n = problem_.gridView().size(dim);
-        else
-            n = problem_.gridView().size(0);
-
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            buffer[phaseIdx].resize(n);
-            std::fill(buffer[phaseIdx].begin(), buffer[phaseIdx].end(), 0.0);
-        }
-    }
-
-    /*!
-     * \brief Allocate the space for a buffer storing a component
-     *        specific quantity
-     */
-    void resizeComponentBuffer_(ComponentVector &buffer,
-                                bool vertexCentered = true)
-    {
-        Scalar n;// numVertices for vertexCentereed, numVolumes for volume centered
-        if (vertexCentered)
-            n = problem_.gridView().size(dim);
-        else
-            n = problem_.gridView().size(0);
-
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-            buffer[compIdx].resize(n);
-            std::fill(buffer[compIdx].begin(), buffer[compIdx].end(), 0.0);
-        }
-    }
-
-    /*!
-     * \brief Allocate the space for a buffer storing a phase and
-     *        component specific buffer
-     */
-    void resizePhaseComponentBuffer_(PhaseComponentMatrix &buffer,
-                                     bool vertexCentered = true)
-    {
-        Scalar n;// numVertices for vertexCentereed, numVolumes for volume centered
-        if (vertexCentered)
-            n = problem_.gridView().size(dim);
-        else
-            n = problem_.gridView().size(0);
-
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                buffer[phaseIdx][compIdx].resize(n);
-                std::fill(buffer[phaseIdx][compIdx].begin(), buffer[phaseIdx][compIdx].end(), 0.0);
-            }
-        }
-    }
-
-    /*!
-     * \brief Add a phase-specific buffer to the VTK result file.
-     */
-    template <class MultiWriter>
-    void commitScalarBuffer_(MultiWriter &writer,
-                             const std::string& name,
-                             ScalarVector &buffer,
-                             bool vertexCentered = true)
-    {
-        if (vertexCentered)
-            writer.attachVertexData(buffer, name, 1);
-        else
-            writer.attachCellData(buffer, name, 1);
-    }
-
-    /*!
-     * \brief Add a phase-specific buffer to the VTK result file.
-     */
-    template <class MultiWriter>
-    void commitPhaseBuffer_(MultiWriter &writer,
-                            const std::string& pattern,
-                            PhaseVector &buffer,
-                            bool vertexCentered = true)
-    {
-        char name[512];
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            snprintf(name, 512, pattern.c_str(), FluidSystem::phaseName(phaseIdx).c_str());
-
-            if (vertexCentered)
-                writer.attachVertexData(buffer[phaseIdx], name, 1);
-            else
-                writer.attachCellData(buffer[phaseIdx], name, 1);
-        }
-    }
-
-    /*!
-     * \brief Add a component-specific buffer to the VTK result file.
-     */
-    template <class MultiWriter>
-    void commitComponentBuffer_(MultiWriter &writer,
-                                const std::string& pattern,
-                                ComponentVector &buffer,
-                                bool vertexCentered = true)
-    {
-        char name[512];
-        for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-            snprintf(name, 512, pattern.c_str(), FluidSystem::componentName(compIdx).c_str());
-
-            if (vertexCentered)
-                writer.attachVertexData(buffer[compIdx], name, 1);
-            else
-                writer.attachCellData(buffer[compIdx], name, 1);
-        }
-    }
-
-    /*!
-     * \brief Add a phase and component specific quantities to the output.
-     */
-    template <class MultiWriter>
-    void commitPhaseComponentBuffer_(MultiWriter &writer,
-                                     const std::string& pattern,
-                                     PhaseComponentMatrix &buffer,
-                                     bool vertexCentered = true)
-    {
-        char name[512];
-        for (int phaseIdx= 0; phaseIdx < numPhases; ++phaseIdx) {
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                snprintf(name, 512, pattern.c_str(),
-                         FluidSystem::phaseName(phaseIdx).c_str(),
-                         FluidSystem::componentName(compIdx).c_str());
-
-                if (vertexCentered)
-                    writer.attachVertexData(buffer[phaseIdx][compIdx], name, 1);
-                else
-                    writer.attachCellData(buffer[phaseIdx][compIdx], name, 1);
-            }
-        }
-    }
-
-    const Problem &problem_;
-};
-
-}
-
-#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/indices.hh b/dumux/porousmediumflow/mpnc/indices.hh
similarity index 57%
rename from dumux/porousmediumflow/mpnc/implicit/indices.hh
rename to dumux/porousmediumflow/mpnc/indices.hh
index 3c405d5811210d437fe7ad27a58840b5a00ef56e..84eb9a4c5f0c53078d3e43aa1577af6eabaac1d9 100644
--- a/dumux/porousmediumflow/mpnc/implicit/indices.hh
+++ b/dumux/porousmediumflow/mpnc/indices.hh
@@ -23,10 +23,7 @@
 #ifndef DUMUX_MPNC_INDICES_HH
 #define DUMUX_MPNC_INDICES_HH
 
-#include "properties.hh"
-
-#include "mass/indices.hh"
-#include "energy/indices.hh"
+#include <dumux/common/properties.hh>
 
 namespace Dumux
 {
@@ -50,40 +47,21 @@ struct MpNcPressureFormulation
  * \brief The primary variable and equation indices for the MpNc model.
  */
 template <class TypeTag, int BasePVOffset = 0>
-struct MPNCIndices :
-        public MPNCMassIndices<BasePVOffset,
-                               TypeTag,
-                               GET_PROP_VALUE(TypeTag, EnableKinetic) >,
-        public MPNCEnergyIndices<BasePVOffset +
-                                 MPNCMassIndices<0, TypeTag, GET_PROP_VALUE(TypeTag, EnableKinetic) >::numPrimaryVars,
-                                 GET_PROP_VALUE(TypeTag, EnableEnergy),
-                                 GET_PROP_VALUE(TypeTag, NumEnergyEquations)>
+class MPNCIndices
 {
-private:
-            using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-            enum { enableEnergy         = GET_PROP_VALUE(TypeTag, EnableEnergy) };
-            enum { enableKinetic        = GET_PROP_VALUE(TypeTag, EnableKinetic) }; //mass transfer
-            enum { numEnergyEquations  = GET_PROP_VALUE(TypeTag, NumEnergyEquations) }; // energy transfer
-            enum { numPhases = FluidSystem::numPhases };
-
-            using MassIndices = MPNCMassIndices<BasePVOffset, TypeTag, enableKinetic>;
-            using EnergyIndices = MPNCEnergyIndices<BasePVOffset + MassIndices::numPrimaryVars, enableEnergy, numEnergyEquations>;
-
+     using FluidSystem  = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+     enum { numPhases = FluidSystem::numPhases };
+     static const int numEqBalance = GET_PROP_VALUE(TypeTag, NumEqBalance);
 public:
+
+        // Phase indices
+    static const int wPhaseIdx = FluidSystem::wPhaseIdx; //!< Index of the wetting phase
+    static const int nPhaseIdx = FluidSystem::nPhaseIdx; //!< Index of the non-wetting phase
     /*!
      * \brief The number of primary variables / equations.
      */
     // temperature + Mass Balance  + constraints for switch stuff
-    static const unsigned int numPrimaryVars =
-        MassIndices::numPrimaryVars +
-        EnergyIndices::numPrimaryVars +
-        numPhases;
-
-    /*!
-     * \brief The number of primary variables / equations of the energy module.
-     */
-    static const unsigned int numPrimaryEnergyVars =
-        EnergyIndices::numPrimaryVars ;
+    static const unsigned int numPrimaryVars = numEqBalance ;
 
     /*!
      * \brief Index of the saturation of the first phase in a vector
@@ -92,27 +70,24 @@ public:
      * The following (numPhases - 1) primary variables represent the
      * saturations for the phases [1, ..., numPhases - 1]
      */
-    static const unsigned int s0Idx =
-        MassIndices::numPrimaryVars +
-        EnergyIndices::numPrimaryVars;
+    static const unsigned int s0Idx = numEqBalance - numPhases;
 
     /*!
      * \brief Index of the first phase' pressure in a vector of
      *        primary variables.
      */
-    static const unsigned int p0Idx =
-        MassIndices::numPrimaryVars +
-        EnergyIndices::numPrimaryVars +
-        numPhases - 1;
+    static const unsigned int p0Idx = numEqBalance  - 1;
 
     /*!
      * \brief Index of the first phase NCP equation.
      *
      * The index for the remaining phases are consecutive.
      */
-    static const unsigned int phase0NcpIdx =
-        MassIndices::numPrimaryVars +
-        EnergyIndices::numPrimaryVars;
+    static const unsigned int phase0NcpIdx =  numEqBalance - numPhases;
+
+    static const unsigned int fug0Idx = BasePVOffset + 0;
+    static const unsigned int conti0EqIdx = BasePVOffset + 0;
+    static const unsigned int moleFrac00Idx = BasePVOffset + 0;
 };
 
 }
diff --git a/dumux/porousmediumflow/mpnc/localresidual.hh b/dumux/porousmediumflow/mpnc/localresidual.hh
new file mode 100644
index 0000000000000000000000000000000000000000..068cbbc931ed8ac9d4bc643729de54120cb4a3a2
--- /dev/null
+++ b/dumux/porousmediumflow/mpnc/localresidual.hh
@@ -0,0 +1,176 @@
+// -*- 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 MpNc specific details needed to approximately calculate the local
+ *        defect in the fully implicit scheme.
+ *
+ */
+#ifndef DUMUX_MPNC_LOCAL_RESIDUAL_HH
+#define DUMUX_MPNC_LOCAL_RESIDUAL_HH
+
+#include <dumux/common/properties.hh>
+
+
+namespace Dumux
+{
+/*!
+ * \ingroup MPNCModel
+ * \ingroup ImplicitLocalResidual
+ * \brief MpNc specific details needed to approximately calculate the local
+ *        defect in the fully implicit scheme.
+ *
+ * This class is used to fill the gaps in ImplicitLocalResidual for the
+ * MpNc flow.
+ */
+template<class TypeTag>
+class MPNCLocalResidual : public CompositionalLocalResidual<TypeTag>
+{
+    using ParentType = CompositionalLocalResidual<TypeTag>;
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Element = typename GET_PROP_TYPE(TypeTag, GridView)::template Codim<0>::Entity;
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
+    using ElementResidualVector = Dune::BlockVector<typename GET_PROP_TYPE(TypeTag, NumEqVector)>;
+    using ResidualVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
+    using FluxVariablesCache = typename GET_PROP_TYPE(TypeTag, FluxVariablesCache);
+    using ElementFluxVariablesCache = typename GET_PROP_TYPE(TypeTag, ElementFluxVariablesCache);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+
+    enum {numPhases = GET_PROP_VALUE(TypeTag, NumPhases)};
+    enum {phase0NcpIdx = Indices::phase0NcpIdx};
+
+    static constexpr bool isBox = GET_PROP_VALUE(TypeTag, DiscretizationMethod) == DiscretizationMethods::Box;
+public:
+    using ParentType::ParentType;
+
+
+    /*!
+     * \brief Compute the local residual, i.e. the deviation of the
+     *        equations from zero for instationary problems.
+     * \param problem The problem to solve
+
+     * \param element The DUNE Codim<0> entity for which the residual
+     *                ought to be calculated
+     * \param fvGeometry The finite-volume geometry of the element
+     * \param prevVolVars The volume averaged variables for all
+     *                    sub-control volumes of the element at the previous
+     *                    time level
+     * \param curVolVars The volume averaged variables for all
+     *                   sub-control volumes of the element at the current
+     *                   time level
+     * \param bcTypes The types of the boundary conditions for all
+     *                vertices of the element
+     */
+    ElementResidualVector eval(const Problem& problem,
+                               const Element& element,
+                               const FVElementGeometry& fvGeometry,
+                               const ElementVolumeVariables& prevElemVolVars,
+                               const ElementVolumeVariables& curElemVolVars,
+                               const ElementBoundaryTypes &bcTypes,
+                               const ElementFluxVariablesCache& elemFluxVarsCache) const
+    {
+        // initialize the residual vector for all scvs in this element
+        ElementResidualVector residual(fvGeometry.numScv());
+        residual = 0.0;
+
+        // evaluate the volume terms (storage + source terms)
+        for (auto&& scv : scvs(fvGeometry))
+        {
+            //! foward to the local residual specialized for the discretization methods
+            this->asImp().evalStorage(residual, problem, element, fvGeometry, prevElemVolVars, curElemVolVars, scv);
+            this->asImp().evalSource(residual, problem, element, fvGeometry, curElemVolVars, scv);
+             //here we need to set the constraints of the mpnc model into the residual
+                const auto localScvIdx = scv.indexInElement();
+                for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+                {
+                    residual[localScvIdx][phase0NcpIdx + phaseIdx] = curElemVolVars[scv].phaseNcp(phaseIdx);
+                }
+        }
+
+        for (auto&& scvf : scvfs(fvGeometry))
+        {
+            //! foward to the local residual specialized for the discretization methods
+            this->asImp().evalFlux(residual, problem, element, fvGeometry, curElemVolVars, bcTypes, elemFluxVarsCache, scvf);
+        }
+
+        return residual;
+    }
+
+    /*!
+     * \brief Compute the local residual, i.e. the deviation of the
+     *        equations from zero for stationary problem.
+     * \param problem The problem to solve
+
+     * \param element The DUNE Codim<0> entity for which the residual
+     *                ought to be calculated
+     * \param fvGeometry The finite-volume geometry of the element
+     * \param curVolVars The volume averaged variables for all
+     *                   sub-control volumes of the element at the current
+     *                   time level
+     * \param bcTypes The types of the boundary conditions for all
+     *                vertices of the element
+     */
+    ElementResidualVector eval(const Problem& problem,
+                               const Element& element,
+                               const FVElementGeometry& fvGeometry,
+                               const ElementVolumeVariables& curElemVolVars,
+                               const ElementBoundaryTypes &bcTypes,
+                               const ElementFluxVariablesCache& elemFluxVarsCache) const
+    {
+        // initialize the residual vector for all scvs in this element
+        ElementResidualVector residual(fvGeometry.numScv());
+        residual = 0.0;
+
+        // evaluate the volume terms (storage + source terms)
+        for (auto&& scv : scvs(fvGeometry))
+        {
+            //! foward to the local residual specialized for the discretization methods
+            this->asImp().evalSource(residual, problem, element, fvGeometry, curElemVolVars, scv);
+
+               //here we need to set the constraints of the mpnc model into the residual
+                const auto localScvIdx = scv.indexInElement();
+                for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+                {
+                    residual[localScvIdx][phase0NcpIdx + phaseIdx] = curElemVolVars[scv].phaseNcp(phaseIdx);
+                }
+        }
+
+        for (auto&& scvf : scvfs(fvGeometry))
+        {
+            //! foward to the local residual specialized for the discretization methods
+            this->asImp().evalFlux(residual, problem, element, fvGeometry, curElemVolVars, bcTypes, elemFluxVarsCache, scvf);
+        }
+
+        return residual;
+    }
+};
+
+} // end namespace
+
+#endif
diff --git a/dumux/porousmediumflow/mpnc/model.hh b/dumux/porousmediumflow/mpnc/model.hh
new file mode 100644
index 0000000000000000000000000000000000000000..33854175530bdab47815a0628cf6059a9c14dae7
--- /dev/null
+++ b/dumux/porousmediumflow/mpnc/model.hh
@@ -0,0 +1,265 @@
+// -*- 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 MPNCModel
+ * \brief A fully implicit model for MpNc flow using
+ *        vertex centered finite volumes.
+ *
+ * This model implements a \f$M\f$-phase flow of a fluid mixture
+ * composed of \f$N\f$ chemical species. The phases are denoted by
+ * lower index \f$\alpha \in \{ 1, \dots, M \}\f$. All fluid phases
+ * are mixtures of \f$N \geq M - 1\f$ chemical species which are
+ * denoted by the upper index \f$\kappa \in \{ 1, \dots, N \} \f$.
+ *
+ * The momentum approximation can be selected via "BaseFluxVariables":
+ * Darcy (ImplicitDarcyFluxVariables) and Forchheimer (ImplicitForchheimerFluxVariables)
+ * relations are available for all Box models.
+ *
+ * By inserting this into the equations for the conservation of the
+ * mass of each component, one gets one mass-continuity equation for
+ * each component \f$\kappa\f$
+ * \f[
+ \sum_{\kappa} \left(
+    \phi \frac{\partial \left(\varrho_\alpha x_\alpha^\kappa S_\alpha\right)}{\partial t}
+    +
+    \mathrm{div}\;
+    \left\{
+        v_\alpha
+       \frac{\varrho_\alpha}{\overline M_\alpha} x_\alpha^\kappa
+    \right\}
+    \right)
+    = q^\kappa
+    \f]
+ * with \f$\overline M_\alpha\f$ being the average molar mass of the
+ * phase \f$\alpha\f$: \f[ \overline M_\alpha = \sum_\kappa M^\kappa
+ * \; x_\alpha^\kappa \f]
+ *
+ * For the missing \f$M\f$ model assumptions, the model assumes that
+ * if a fluid phase is not present, the sum of the mole fractions of
+ * this fluid phase is smaller than \f$1\f$, i.e.
+ * \f[
+ * \forall \alpha: S_\alpha = 0 \implies \sum_\kappa x_\alpha^\kappa \leq 1
+ * \f]
+ *
+ * Also, if a fluid phase may be present at a given spatial location
+ * its saturation must be positive:
+ * \f[ \forall \alpha: \sum_\kappa x_\alpha^\kappa = 1 \implies S_\alpha \geq 0 \f]
+ *
+ * Since at any given spatial location, a phase is always either
+ * present or not present, one of the strict equalities on the
+ * right hand side is always true, i.e.
+ * \f[ \forall \alpha: S_\alpha \left( \sum_\kappa x_\alpha^\kappa - 1 \right) = 0 \f]
+ * always holds.
+ *
+ * These three equations constitute a non-linear complementarity
+ * problem, which can be solved using so-called non-linear
+ * complementarity functions \f$\Phi(a, b)\f$ which have the property
+ * \f[\Phi(a,b) = 0 \iff a \geq0 \land b \geq0  \land a \cdot b = 0 \f]
+ *
+ * Several non-linear complementarity functions have been suggested,
+ * e.g. the Fischer-Burmeister function
+ * \f[ \Phi(a,b) = a + b - \sqrt{a^2 + b^2} \;. \f]
+ * This model uses
+ * \f[ \Phi(a,b) = \min \{a,  b \}\;, \f]
+ * because of its piecewise linearity.
+ *
+ * These equations are then discretized using a fully-implicit vertex
+ * centered finite volume scheme (often known as 'box'-scheme) for
+ * spatial discretization and the implicit Euler method as temporal
+ * discretization.
+ *
+ * The model assumes local thermodynamic equilibrium and uses the
+ * following primary variables:
+ * - The component fugacities \f$f^1, \dots, f^{N}\f$
+ * - The pressure of the first phase \f$p_1\f$
+ * - The saturations of the first \f$M-1\f$ phases \f$S_1, \dots, S_{M-1}\f$
+ * - Temperature \f$T\f$ if the energy equation is enabled
+ */
+
+#ifndef DUMUX_MPNC_MODEL_HH
+#define DUMUX_MPNC_MODEL_HH
+
+#include <dumux/common/properties.hh>
+
+#include <dumux/material/fluidstates/nonequilibrium.hh>
+#include <dumux/material/fluidstates/compositional.hh>
+#include <dumux/material/spatialparams/fv.hh>
+#include <dumux/material/fluidmatrixinteractions/diffusivitymillingtonquirk.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh>
+
+#include <dumux/porousmediumflow/properties.hh>
+#include <dumux/porousmediumflow/compositional/localresidual.hh>
+#include <dumux/porousmediumflow/nonisothermal/model.hh>
+#include <dumux/porousmediumflow/nonequilibrium/model.hh>
+
+#include "indices.hh"
+#include "volumevariables.hh"
+#include "vtkoutputfields.hh"
+#include "localresidual.hh"
+
+/*!
+ * \ingroup Properties
+ * \ingroup ImplicitProperties
+ * \ingroup BoxMpNcModel
+ * \file
+ * \brief  Defines the properties required for the MpNc fully implicit model.
+ */
+namespace Dumux
+{
+namespace Properties
+{
+
+//////////////////////////////////////////////////////////////////
+// Type tags
+//////////////////////////////////////////////////////////////////
+//! The type tags for the isothermal & non-isothermal two-phase model
+NEW_TYPE_TAG(MPNC, INHERITS_FROM(PorousMediumFlow));
+NEW_TYPE_TAG(MPNCNI, INHERITS_FROM(MPNC, NonIsothermal));
+NEW_TYPE_TAG(MPNCNonequil, INHERITS_FROM(MPNC, NonEquilibrium));
+
+/////////////////////////////////////////////////////////////////
+// Properties for the isothermal mpnc model
+//////////////////////////////////////////////////////////////////
+
+//! The indices required by the mpnc model
+SET_TYPE_PROP(MPNC, Indices, MPNCIndices<TypeTag, 0>);
+//! Use ImplicitSpatialParams by default.
+SET_TYPE_PROP(MPNC, SpatialParams, FVSpatialParams<TypeTag>);
+
+//! Use the MpNc local residual for the MpNc model
+SET_TYPE_PROP(MPNC,
+              LocalResidual,
+              MPNCLocalResidual<TypeTag>);
+/*!
+ * \brief Set the property for the number of equations and primary variables.
+ */
+SET_PROP(MPNC, NumEq)
+{
+private:
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+
+public:
+    static const unsigned int value = Indices::numPrimaryVars;
+};
+/*!
+ * \brief Set the property for the number of components.
+ *
+ * We just forward the number from the fluid system.
+ */
+SET_PROP(MPNC, NumComponents)
+{
+private:
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+public:
+    static const unsigned int value = FluidSystem::numComponents;
+};
+
+/*!
+ * \brief Set the property for the number of fluid phases.
+ */
+SET_PROP(MPNC, NumPhases)
+{
+private:
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+public:
+    static const unsigned int value = FluidSystem::numPhases;
+};
+
+/*!
+ * \brief Set the property for the number of equations without energyEquations.
+ * In other models this would just be number of mass balance equations. but in Mpnc we have additional ncp-equations which also need to be added
+ */
+SET_INT_PROP(MPNC, NumEqBalance, GET_PROP_VALUE(TypeTag, NumPhases)+GET_PROP_VALUE(TypeTag, NumPhases));
+
+//! the VolumeVariables property
+SET_TYPE_PROP(MPNC, VolumeVariables, MPNCVolumeVariables<TypeTag>);
+
+//! This model uses the compositional fluid state
+SET_PROP(MPNC, FluidState)
+{
+private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+public:
+    using type = CompositionalFluidState<Scalar, FluidSystem>;
+};
+
+SET_INT_PROP(MPNC, ReplaceCompEqIdx, GET_PROP_TYPE(TypeTag, FluidSystem)::numComponents); //! Per default, no component mass balance is replaced
+
+SET_BOOL_PROP(MPNC, UseMoles, true);                         //! Use mole fractions in the balance equations by default
+
+//! Use the model after Millington (1961) for the effective diffusivity
+SET_TYPE_PROP(MPNC, EffectiveDiffusivityModel, DiffusivityMillingtonQuirk<typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+
+//! Set the default pressure formulation to the pressure of the (most) wetting phase
+SET_INT_PROP(MPNC,
+             PressureFormulation,
+             MpNcPressureFormulation::mostWettingFirst);
+
+SET_TYPE_PROP(MPNC, VtkOutputFields, MPNCVtkOutputFields<TypeTag>);           //! Set the vtk output fields specific to the mpnc model
+
+SET_BOOL_PROP(MPNC, EnableAdvection, true);                  //! Enable advection
+SET_BOOL_PROP(MPNC, EnableMolecularDiffusion, true);         //! Enable molecular diffusion
+SET_BOOL_PROP(MPNC, EnableEnergyBalance, false);             //! This is the isothermal variant of the model
+
+SET_BOOL_PROP(MPNC, EnableThermalNonEquilibrium, false);
+SET_BOOL_PROP(MPNC, EnableChemicalNonEquilibrium, false);
+
+SET_INT_PROP(MPNC, NumEnergyEqFluid, 0);
+SET_INT_PROP(MPNC, NumEnergyEqSolid, 0);
+
+
+/////////////////////////////////////////////////
+// Properties for the non-isothermal mpnc model
+/////////////////////////////////////////////////
+SET_TYPE_PROP(MPNCNI, IsothermalVolumeVariables, MPNCVolumeVariables<TypeTag>);    //! set isothermal VolumeVariables
+SET_TYPE_PROP(MPNCNI, IsothermalLocalResidual, MPNCLocalResidual<TypeTag>); //! set isothermal LocalResidual
+SET_TYPE_PROP(MPNCNI, IsothermalIndices, MPNCIndices<TypeTag, /*PVOffset=*/0>);    //! set isothermal Indices
+//! set isothermal NumEq
+SET_INT_PROP(MPNCNI, IsothermalNumEq, GET_PROP_VALUE(TypeTag, NumEq));
+
+/////////////////////////////////////////////////
+// Properties for the non-equilibrium mpnc model
+/////////////////////////////////////////////////
+
+SET_TYPE_PROP(MPNCNonequil, EquilibriumLocalResidual, MPNCLocalResidual<TypeTag>);
+SET_TYPE_PROP(MPNCNonequil, EquilibriumVtkOutputFields, MPNCVtkOutputFields<TypeTag>);
+SET_TYPE_PROP(MPNCNonequil, EquilibriumIndices, MPNCIndices<TypeTag, /*PVOffset=*/0>);
+
+//number of balance equations means all transport equations and the constraint equations, energy equations come on top of that
+SET_INT_PROP(MPNCNonequil, NumEqBalance, GET_PROP_VALUE(TypeTag, NumPhases)*GET_PROP_VALUE(TypeTag, NumComponents)+GET_PROP_VALUE(TypeTag, NumPhases));
+
+//! in case we do not assume full non-equilibrium one needs a thermal conductivity
+SET_PROP(MPNCNonequil, ThermalConductivityModel)
+{
+private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+public:
+    using type = ThermalConductivitySimpleFluidLumping<TypeTag, Scalar, Indices>;
+};
+
+} //end namespace Properties
+} //end namespace Dumux
+
+#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh b/dumux/porousmediumflow/mpnc/volumevariables.hh
similarity index 57%
rename from dumux/porousmediumflow/mpnc/implicit/volumevariables.hh
rename to dumux/porousmediumflow/mpnc/volumevariables.hh
index 6a1a6bf59631208d0ac5e4c48c5fdadd6f60968d..217e63e5f4efba4995446fdd4f688ae705174aee 100644
--- a/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh
+++ b/dumux/porousmediumflow/mpnc/volumevariables.hh
@@ -25,45 +25,42 @@
 #ifndef DUMUX_MPNC_VOLUME_VARIABLES_HH
 #define DUMUX_MPNC_VOLUME_VARIABLES_HH
 
-#include "diffusion/volumevariables.hh"
-#include "energy/volumevariables.hh"
-#include "mass/volumevariables.hh"
 #include "indices.hh"
-#include "volumevariablesia.hh"
 
-#include <dumux/implicit/volumevariables.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/porousmediumflow/nonequilibrium/volumevariables.hh>
+#include <dumux/porousmediumflow/volumevariables.hh>
+
 #include <dumux/material/constraintsolvers/ncpflash.hh>
+#include <dumux/material/constraintsolvers/compositionfromfugacities.hh>
 
 namespace Dumux
 {
 /*!
  * \ingroup MPNCModel
  * \ingroup ImplicitVolumeVariables
- * \brief Contains the quantities which are are constant within a
+ * \brief Contains the quantities which are constant within a
  *        finite volume in the MpNc model.
  */
 template <class TypeTag>
 class MPNCVolumeVariables
-    : public ImplicitVolumeVariables<TypeTag>
-    , public MPNCVolumeVariablesIA<TypeTag, GET_PROP_VALUE(TypeTag, EnableKinetic), GET_PROP_VALUE(TypeTag, NumEnergyEquations)>
-    , public MPNCVolumeVariablesMass<TypeTag, GET_PROP_VALUE(TypeTag, EnableKinetic)>
-    , public MPNCVolumeVariablesDiffusion<TypeTag, GET_PROP_VALUE(TypeTag, EnableDiffusion) || GET_PROP_VALUE(TypeTag, EnableKinetic)>
-    , public MPNCVolumeVariablesEnergy<TypeTag, GET_PROP_VALUE(TypeTag, EnableEnergy), GET_PROP_VALUE(TypeTag, NumEnergyEquations)>
+    : public PorousMediumFlowVolumeVariables<TypeTag>
+    , public NonEquilibriumVolumeVariables<TypeTag>
 {
-    using ParentType = ImplicitVolumeVariables<TypeTag>;
+    using ParentType = PorousMediumFlowVolumeVariables<TypeTag>;
     using Implementation = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
     using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
     using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using SpatialParams = typename GET_PROP_TYPE(TypeTag, SpatialParams);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using ElementSolution = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+    using PermeabilityType = typename SpatialParams::PermeabilityType;
+    using Element = typename GridView::template Codim<0>::Entity;
 
     // formulations
     enum {
@@ -74,91 +71,134 @@ class MPNCVolumeVariables
 
     enum {numPhases = GET_PROP_VALUE(TypeTag, NumPhases)};
     enum {numComponents = GET_PROP_VALUE(TypeTag, NumComponents)};
-    enum {enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy)};
-    enum {enableKinetic = GET_PROP_VALUE(TypeTag, EnableKinetic)};
-    enum {numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
-    enum {enableDiffusion = GET_PROP_VALUE(TypeTag, EnableDiffusion) || enableKinetic};
     enum {s0Idx = Indices::s0Idx};
     enum {p0Idx = Indices::p0Idx};
+    enum {fug0Idx = Indices::fug0Idx};
 
-    using Element = typename GridView::template Codim<0>::Entity;
-    using MassVolumeVariables = MPNCVolumeVariablesMass<TypeTag, enableKinetic>;
-    using EnergyVolumeVariables = MPNCVolumeVariablesEnergy<TypeTag, enableEnergy, numEnergyEquations>;
-    using IAVolumeVariables = MPNCVolumeVariablesIA<TypeTag, enableKinetic, numEnergyEquations>;
-    using DiffusionVolumeVariables = MPNCVolumeVariablesDiffusion<TypeTag, enableDiffusion>;
+    static constexpr bool enableThermalNonEquilibrium = GET_PROP_VALUE(TypeTag, EnableThermalNonEquilibrium);
+    static constexpr bool enableChemicalNonEquilibrium = GET_PROP_VALUE(TypeTag, EnableChemicalNonEquilibrium);
+
+    static constexpr bool enableDiffusion = GET_PROP_VALUE(TypeTag, EnableMolecularDiffusion);
+
+
+    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
+    using CompositionFromFugacities = Dumux::CompositionFromFugacities<Scalar, FluidSystem>;
 
 public:
+    // export type of fluid state for non-isothermal models
+    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
+    using ParentType::ParentType;
+
     MPNCVolumeVariables()
-    { hint_ = NULL; };
+    { };
 
-    /*!
-     * \brief Set the volume variables which should be used as initial
-     *        conditions for complex calculations.
-     */
-    void setHint(const Implementation *hint)
-    {
-        hint_ = hint;
-    }
 
     /*!
      * \copydoc ImplicitVolumeVariables::update
-     *
-     *      \param priVars The primary Variables
-     *      \param problem The Problem
-     *      \param element The finite element
-     *      \param fvGeometry The finite-volume geometry in the fully implicit scheme
-     *      \param scvIdx The index of the sub-control volume
-     *      \param isOldSol Specifies whether this is the previous solution or the current one
      */
-    void update(const PrimaryVariables &priVars,
+    void update(const ElementSolution &elemSol,
                 const Problem &problem,
                 const Element &element,
-                const FVElementGeometry &fvGeometry,
-                const unsigned int scvIdx,
-                const bool isOldSol)
+                const SubControlVolume& scv)
     {
-        Valgrind::CheckDefined(priVars);
-        ParentType::update(priVars,
-                           problem,
-                           element,
-                           fvGeometry,
-                           scvIdx,
-                           isOldSol);
-        ParentType::checkDefined();
+        ParentType::update(elemSol, problem, element, scv);
 
-        ParameterCache paramCache;
+        completeFluidState(elemSol, problem, element, scv, fluidState_);
 
+        //calculate the remaining quantities
+        const auto& materialParams = problem.spatialParams().materialLawParams(element, scv, elemSol);
+        // relative permeabilities
+        MaterialLaw::relativePermeabilities(relativePermeability_,
+                                            materialParams,
+                                            fluidState_);
+        typename FluidSystem::ParameterCache paramCache;
+        paramCache.updateAll(fluidState_);
+        if (enableDiffusion)
+        {
+            for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+            {
+                int compIIdx = phaseIdx;
+                for (unsigned int compJIdx = 0; compJIdx < numComponents; ++compJIdx)
+                {
+                    // binary diffusion coefficients
+                    if(compIIdx!= compJIdx)
+                    {
+                        setDiffusionCoefficient_(phaseIdx, compJIdx,
+                                                FluidSystem::binaryDiffusionCoefficient(fluidState_,
+                                                                                        paramCache,
+                                                                                        phaseIdx,
+                                                                                        compIIdx,
+                                                                                        compJIdx));
+                    }
+                }
+            }
+        }
+
+        porosity_ = problem.spatialParams().porosity(element, scv, elemSol);
+        permeability_ = problem.spatialParams().permeability(element, scv, elemSol);
+
+        //only do this if we are either looking at chemical or thermal non-equilibrium. or both
+        if (enableChemicalNonEquilibrium || enableThermalNonEquilibrium)
+        {
+        // specific interfacial area,
+        // well also all the dimensionless numbers :-)
+        // well, also the mass transfer rate
+            this->updateInterfacialArea(elemSol,
+                                        fluidState_,
+                                        paramCache,
+                                        problem,
+                                        element,
+                                        scv);
+        }
+    }
+
+    /*!
+     * \copydoc ImplicitModel::completeFluidState
+     * \param isOldSol Specifies whether this is the previous solution or the current one
+     */
+     void completeFluidState(const ElementSolution& elemSol,
+                                   const Problem& problem,
+                                   const Element& element,
+                                   const SubControlVolume& scv,
+                                   FluidState& fluidState)
+    {
+        /////////////
+        // set the fluid phase temperatures
+        /////////////
+        if(!enableThermalNonEquilibrium)
+        {
+            Scalar t = ParentType::temperature(elemSol, problem, element, scv);
+            fluidState.setTemperature(t);
+        }
+        else
+        {
+            this->updateTemperatures(elemSol,
+                                     problem,
+                                      element,
+                                      scv,
+                                      fluidState);
+        }
         /////////////
         // set the phase saturations
         /////////////
+        auto&& priVars = ParentType::extractDofPriVars(elemSol, scv);
         Scalar sumSat = 0;
         for (int phaseIdx = 0; phaseIdx < numPhases - 1; ++phaseIdx) {
             sumSat += priVars[s0Idx + phaseIdx];
-            fluidState_.setSaturation(phaseIdx, priVars[s0Idx + phaseIdx]);
+            fluidState.setSaturation(phaseIdx, priVars[s0Idx + phaseIdx]);
         }
         Valgrind::CheckDefined(sumSat);
-        fluidState_.setSaturation(numPhases - 1, 1.0 - sumSat);
-
-        /////////////
-        // set the fluid phase temperatures
-        /////////////
-        EnergyVolumeVariables::updateTemperatures(fluidState_,
-                                                  paramCache,
-                                                  priVars,
-                                                  element,
-                                                  fvGeometry,
-                                                  scvIdx,
-                                                  problem);
+        fluidState.setSaturation(numPhases - 1, 1.0 - sumSat);
 
         /////////////
         // set the phase pressures
         /////////////
         // capillary pressure parameters
-        const MaterialLawParams &materialParams =
-            problem.spatialParams().materialLawParams(element, fvGeometry, scvIdx);
+        const auto& materialParams =
+            problem.spatialParams().materialLawParams(element, scv, elemSol);
         // capillary pressures
         Scalar capPress[numPhases];
-        MaterialLaw::capillaryPressures(capPress, materialParams, fluidState_);
+        MaterialLaw::capillaryPressures(capPress, materialParams, fluidState);
         // add to the pressure of the first fluid phase
 
         // depending on which pressure is stored in the primary variables
@@ -167,96 +207,68 @@ public:
             // For two phases this means that there is one pressure as primary variable: pw
             const Scalar pw = priVars[p0Idx];
             for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
-                fluidState_.setPressure(phaseIdx, pw - capPress[0] + capPress[phaseIdx]);
+                fluidState.setPressure(phaseIdx, pw - capPress[0] + capPress[phaseIdx]);
         }
         else if(pressureFormulation == leastWettingFirst){
             // This means that the pressures are sorted from the least wetting to the most wetting-1 in the primary variables vector.
             // For two phases this means that there is one pressure as primary variable: pn
             const Scalar pn = priVars[p0Idx];
             for (int phaseIdx = numPhases-1; phaseIdx >= 0; --phaseIdx)
-                fluidState_.setPressure(phaseIdx, pn - capPress[numPhases-1] + capPress[phaseIdx]);
+                fluidState.setPressure(phaseIdx, pn - capPress[numPhases-1] + capPress[phaseIdx]);
         }
         else DUNE_THROW(Dune::InvalidStateException, "Formulation: " << pressureFormulation << " is invalid.");
 
         /////////////
         // set the fluid compositions
         /////////////
-        MassVolumeVariables::update(fluidState_,
-                                    paramCache,
-                                    priVars,
-                                    hint_,
-                                    problem,
-                                    element,
-                                    fvGeometry,
-                                    scvIdx);
-        MassVolumeVariables::checkDefined();
-
-        /////////////
-        // Porosity
-        /////////////
-
-        // porosity
-        porosity_ = problem.spatialParams().porosity(element,
-                                                     fvGeometry,
-                                                     scvIdx);
-        Valgrind::CheckDefined(porosity_);
+        typename FluidSystem::ParameterCache paramCache;
+        paramCache.updateAll(fluidState);
 
-        /////////////
-        // Phase mobilities
-        /////////////
-
-        // relative permeabilities
-        MaterialLaw::relativePermeabilities(relativePermeability_,
-                                            materialParams,
-                                            fluidState_);
+        ComponentVector fug;
+        // retrieve component fugacities
+        for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+            fug[compIdx] = priVars[fug0Idx + compIdx];
+
+        if(!enableChemicalNonEquilibrium)
+        {
+            // calculate phase compositions
+            for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
+                // initial guess
+                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
+                    Scalar x_ij = 1.0/numComponents;
+
+                    // set initial guess of the component's mole fraction
+                    fluidState.setMoleFraction(phaseIdx,
+                                            compIdx,
+                                            x_ij);
+                }
+                // calculate the phase composition from the component
+                // fugacities
+                CompositionFromFugacities::guessInitial(fluidState, paramCache, phaseIdx, fug);
+                CompositionFromFugacities::solve(fluidState, paramCache, phaseIdx, fug);
+            }
+        }
+        else
+        {
+            this->updateMoleFraction(fluidState,
+                                     paramCache,
+                                     priVars);
+        }
 
         // dynamic viscosities
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
             // viscosities
-            Scalar mu = FluidSystem::viscosity(fluidState_, paramCache, phaseIdx);
+            Scalar mu = FluidSystem::viscosity(fluidState, paramCache, phaseIdx);
+            fluidState.setViscosity(phaseIdx, mu);
 
-            fluidState_.setViscosity(phaseIdx, mu);
+            // compute and set the enthalpy
+            Scalar h = FluidSystem::enthalpy(fluidState, paramCache, phaseIdx);
+            fluidState.setEnthalpy(phaseIdx, h);
         }
 
-        /////////////
-        // diffusion
-        /////////////
-
-        // update the diffusion part of the volume data
-        DiffusionVolumeVariables::update(fluidState_, paramCache, *this, problem);
-        DiffusionVolumeVariables::checkDefined();
-
-        /////////////
-        // energy
-        /////////////
-
-        // update the remaining parts of the energy module
-        EnergyVolumeVariables::update(fluidState_,
-                                      paramCache,
-                                      element,
-                                      fvGeometry,
-                                      scvIdx,
-                                      problem);
-        EnergyVolumeVariables::checkDefined();
-
         // make sure the quantities in the fluid state are well-defined
-        fluidState_.checkDefined();
-
-        // specific interfacial area,
-        // well also all the dimensionless numbers :-)
-        // well, also the mass transfer rate
-        IAVolumeVariables::update(*this,
-                                  fluidState_,
-                                  paramCache,
-                                  priVars,
-                                  problem,
-                                  element,
-                                  fvGeometry,
-                                  scvIdx);
-        IAVolumeVariables::checkDefined();
-        checkDefined();
-
-    }
+        fluidState.checkDefined();
+   }
 
     /*!
      * \brief Return the fluid configuration at the given primary
@@ -329,32 +341,22 @@ public:
     { return fluidState_.density(phaseIdx); }
 
     /*!
-     * \brief Returns the fluid/solid phase temperature
-     *        in the sub-control volume for the assumption of local thermal
-     *        non-equillibrium where there is more than one energy equation
-     *        and each phase and the matrix can have different temperatures
+     * \brief Returns temperature inside the sub-control volume.
      *
-     * \param phaseIdx The local index of the phases
+     * Note that we assume thermodynamic equilibrium, i.e. the
+     * temperature of the rock matrix and of all fluid phases are
+     * identical.
      */
-    template <class T = TypeTag>
-    typename std::enable_if<(GET_PROP_VALUE(T, NumEnergyEquations) > 1), Scalar>::type temperature(const unsigned int phaseIdx) const
+    Scalar temperature() const
     {
-        return EnergyVolumeVariables::temperature(phaseIdx);
+        if (enableThermalNonEquilibrium)
+           DUNE_THROW(Dune::InvalidStateException, "this is a method for thermal equilibrium, use temperature(phaseIdx) for thermal non-equilibrium");
+        else
+          return fluidState_.temperature(0/* phaseIdx*/);
     }
 
-     /*!
-     * \brief Returns the fluid/solid phase temperature
-     *        in the sub-control volume for the assumption of local thermal
-     *        equillibrium where there is only one or no energy equation
-     *        and all phases including the  matrix have the same temperature
-     *
-     * \param phaseIdx The local index of the phases
-     */
-    template <class T = TypeTag>
-    typename std::enable_if<(GET_PROP_VALUE(T, NumEnergyEquations) < 2), Scalar>::type temperature(const unsigned int phaseIdx) const
-    {
-        return fluidState_.temperature(phaseIdx);
-    }
+    Scalar temperature(const int phaseIdx) const
+    { return fluidState_.temperature(phaseIdx); }
 
     /*!
      * \brief Return enthalpy \f$\mathrm{[kg/m^3]}\f$ the of the fluid phase.
@@ -368,6 +370,13 @@ public:
     Scalar internalEnergy(const int phaseIdx) const
     { return fluidState_.internalEnergy(phaseIdx); }
 
+    /*!
+     * \brief Returns the thermal conductivity \f$\mathrm{[W/(m*K)]}\f$ of a fluid phase in
+     *        the sub-control volume.
+     */
+    Scalar fluidThermalConductivity(const int phaseIdx) const
+    { return FluidSystem::thermalConductivity(fluidState_, phaseIdx); }
+
     /*!
      * \brief Return fugacity \f$\mathrm{[kg/m^3]}\f$ the of the component.
      */
@@ -414,7 +423,13 @@ public:
     { return porosity_; }
 
     /*!
-     * \brief Returns true iff the fluid state is in the active set
+     * \brief Returns the permeability within the control volume in \f$[m^2]\f$.
+     */
+    const PermeabilityType& permeability() const
+    { return permeability_; }
+
+    /*!
+     * \brief Returns true if the fluid state is in the active set
      *        for a phase,
      *
      *        \param phaseIdx The local index of the phases
@@ -427,6 +442,19 @@ public:
             >= 0;
     }
 
+    /*!
+     * \brief Returns the diffusion coefficient
+     */
+    Scalar diffusionCoefficient(int phaseIdx, int compIdx) const
+    {
+        if (compIdx < phaseIdx)
+            return diffCoefficient_[phaseIdx][compIdx];
+        else if (compIdx > phaseIdx)
+            return diffCoefficient_[phaseIdx][compIdx-1];
+        else
+            DUNE_THROW(Dune::InvalidStateException, "Diffusion coeffiecient called for phaseIdx = compIdx");
+    }
+
     /*!
      * \brief Returns the value of the NCP-function for a phase.
      *
@@ -434,8 +462,8 @@ public:
      */
     Scalar phaseNcp(const unsigned int phaseIdx) const
     {
-        Scalar aEval = phaseNotPresentIneq(this->evalPoint().fluidState(), phaseIdx);
-        Scalar bEval = phasePresentIneq(this->evalPoint().fluidState(), phaseIdx);
+        Scalar aEval = phaseNotPresentIneq(fluidState(), phaseIdx);
+        Scalar bEval = phasePresentIneq(fluidState(), phaseIdx);
         if (aEval > bEval)
             return phasePresentIneq(fluidState(), phaseIdx);
         return phaseNotPresentIneq(fluidState(), phaseIdx);
@@ -469,28 +497,22 @@ public:
         return a;
     }
 
-    /*!
-     * \brief If running in valgrind this makes sure that all
-     *        quantities in the volume variables are defined.
-     */
-    void checkDefined() const
-    {
-#if !defined NDEBUG && HAVE_VALGRIND
-        ParentType::checkDefined();
-
-        Valgrind::CheckDefined(porosity_);
-        Valgrind::CheckDefined(hint_);
-        Valgrind::CheckDefined(relativePermeability_);
+protected:
 
-        fluidState_.checkDefined();
-#endif
+    void setDiffusionCoefficient_(int phaseIdx, int compIdx, Scalar d)
+    {
+        if (compIdx < phaseIdx)
+            diffCoefficient_[phaseIdx][compIdx] = std::move(d);
+        else if (compIdx > phaseIdx)
+            diffCoefficient_[phaseIdx][compIdx-1] = std::move(d);
+        else
+            DUNE_THROW(Dune::InvalidStateException, "Diffusion coeffiecient for phaseIdx = compIdx doesn't exist");
     }
 
-protected:
+    std::array<std::array<Scalar, numComponents-1>, numPhases> diffCoefficient_;
     Scalar porosity_; //!< Effective porosity within the control volume
     Scalar relativePermeability_[numPhases]; //!< Effective relative permeability within the control volume
-
-    const Implementation *hint_;
+    PermeabilityType permeability_;
 
     //! Mass fractions of each component within each phase
     FluidState fluidState_;
diff --git a/dumux/porousmediumflow/mpnc/vtkoutputfields.hh b/dumux/porousmediumflow/mpnc/vtkoutputfields.hh
new file mode 100644
index 0000000000000000000000000000000000000000..fa3e9ae90ec722c3643533f2c0d7b9168a0ab934
--- /dev/null
+++ b/dumux/porousmediumflow/mpnc/vtkoutputfields.hh
@@ -0,0 +1,69 @@
+// -*- 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 Adds vtk output fields specific to the twop model
+ */
+#ifndef DUMUX_MPNC_VTK_OUTPUT_FIELDS_HH
+#define DUMUX_MPNC_VTK_OUTPUT_FIELDS_HH
+
+namespace Dumux
+{
+
+/*!
+ * \ingroup TwoP, InputOutput
+ * \brief Adds vtk output fields specific to the twop model
+ */
+template<class TypeTag>
+class MPNCVtkOutputFields
+{
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+    static constexpr int numPhases = GET_PROP_VALUE(TypeTag, NumPhases);
+    static constexpr int numComponents = GET_PROP_VALUE(TypeTag, NumComponents);
+
+public:
+    template <class VtkOutputModule>
+    static void init(VtkOutputModule& vtk)
+    {
+        for (int i = 0; i < numPhases; ++i)
+            vtk.addVolumeVariable([i](const VolumeVariables& v){ return v.saturation(i); }, "S_"+ FluidSystem::phaseName(i));
+
+       for (int i = 0; i < numPhases; ++i)
+            vtk.addVolumeVariable([i](const VolumeVariables& v){ return v.pressure(i); }, "p_"+ FluidSystem::phaseName(i));
+
+       for (int i = 0; i < numPhases; ++i)
+            vtk.addVolumeVariable([i](const VolumeVariables& v){ return v.density(i); }, "rho_"+ FluidSystem::phaseName(i));
+
+       for (int i = 0; i < numPhases; ++i)
+                  vtk.addVolumeVariable([i](const VolumeVariables& v){ return v.mobility(i); },"lambda_"+ FluidSystem::phaseName(i));
+
+        vtk.addVolumeVariable([](const VolumeVariables& v){ return v.porosity(); }, "porosity");
+
+        for (int i = 0; i < numPhases; ++i)
+            for (int j = 0; j < numComponents; ++j)
+                vtk.addVolumeVariable([i,j](const VolumeVariables& v){ return v.moleFraction(i,j); },"x_"+ FluidSystem::phaseName(i) + "^" + FluidSystem::componentName(j));
+    }
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/dumux/porousmediumflow/nonequilibrium/CMakeLists.txt b/dumux/porousmediumflow/nonequilibrium/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..31fa8eb04f184261a2a39e84587cba7c9357a556
--- /dev/null
+++ b/dumux/porousmediumflow/nonequilibrium/CMakeLists.txt
@@ -0,0 +1,11 @@
+add_subdirectory("thermal")
+#install headers
+install(FILES
+localresidual.hh
+gridvariables.hh
+indices.hh
+newtoncontroller.hh
+volumevariables.hh
+vtkoutputfields.hh
+model.hh
+DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/porousmediumflow/nonequilibrium)
diff --git a/dumux/porousmediumflow/nonequilibrium/gridvariables.hh b/dumux/porousmediumflow/nonequilibrium/gridvariables.hh
new file mode 100644
index 0000000000000000000000000000000000000000..a758850bf1405b5840f42b26b07306c4a4c951f0
--- /dev/null
+++ b/dumux/porousmediumflow/nonequilibrium/gridvariables.hh
@@ -0,0 +1,135 @@
+// -*- 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 Class storing scv and scvf variables
+ */
+#ifndef DUMUX_NONEQUILIBRIUM_GRID_VARIABLES_HH
+#define DUMUX_NONEQUILIBRIUM_GRID_VARIABLES_HH
+
+#include <dumux/common/properties.hh>
+
+
+namespace Dumux
+{
+
+/*!
+ * \ingroup NonEquilbriumModel
+ * \brief This class stores the velocities which are used to compute reynoldsnumbers for the source terms of nonequilibrium models
+ */
+template<class TypeTag>
+class NonEquilibriumGridVariables: public FVGridVariables<TypeTag>
+{
+    using ParentType = FVGridVariables<TypeTag>;
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using GridFluxVariablesCache = typename GET_PROP_TYPE(TypeTag, GridFluxVariablesCache);
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    using VelocityOutput = typename GET_PROP_TYPE(TypeTag, VelocityOutput);
+
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    enum {dim = GridView::dimension}; // Grid and world dimension
+    enum {dimWorld = GridView::dimensionworld};
+
+    static constexpr bool isBox = GET_PROP_VALUE(TypeTag, DiscretizationMethod) == DiscretizationMethods::Box;
+     static constexpr int dofCodim = isBox ? dim : 0;
+
+    using GlobalPosition = Dune::FieldVector<typename GridView::Grid::ctype, dimWorld>;
+
+    using CoordScalar = typename GridView::ctype;
+    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
+    using ReferenceElements = Dune::ReferenceElements<CoordScalar, dim>;
+
+    static constexpr int numPhases = GET_PROP_VALUE(TypeTag, NumPhases);
+
+public:
+    //! Constructor
+    NonEquilibriumGridVariables(std::shared_ptr<Problem> problem, std::shared_ptr<FVGridGeometry> fvGridGeometry)
+    : ParentType(problem, fvGridGeometry)
+    , problem_(problem)
+    , fvGridGeometry_(fvGridGeometry)
+    {
+        for (int phaseIdx =0; phaseIdx<numPhases; ++phaseIdx)
+        {
+            velocityNorm_[phaseIdx].assign(fvGridGeometry->numDofs(), 0.0);
+        }
+    }
+
+    void calcVelocityAverage(const SolutionVector& curSol)
+    {
+        // instatiate the velocity output
+        VelocityOutput velocityOutput(*problem_, *fvGridGeometry_, *this, curSol);
+        std::array<std::vector<GlobalPosition>, numPhases> velocity;
+
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            if(isBox && dim == 1)
+                velocity[phaseIdx].resize(fvGridGeometry_->gridView().size(0));
+            else
+                velocity[phaseIdx].resize(fvGridGeometry_->numDofs());
+        }
+        for (const auto& element : elements(fvGridGeometry_->gridView(), Dune::Partitions::interior))
+        {
+            const auto eIdxGlobal = fvGridGeometry_->elementMapper().index(element);
+
+            auto fvGeometry = localView(*fvGridGeometry_);
+            auto elemVolVars = localView(this->curGridVolVars());
+
+            fvGeometry.bind(element);
+
+            elemVolVars.bind(element, fvGeometry, curSol);
+
+            for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+            {
+                velocityOutput.calculateVelocity(velocity[phaseIdx], elemVolVars, fvGeometry, element, phaseIdx);
+
+                for (auto&& scv : scvs(fvGeometry))
+                {
+                    const auto dofIdxGlobal = scv.dofIndex();
+                    if (isBox && dim == 1)
+                        velocityNorm_[phaseIdx][dofIdxGlobal] = velocity[phaseIdx][eIdxGlobal].two_norm();
+                    else
+                       velocityNorm_[phaseIdx][dofIdxGlobal] = velocity[phaseIdx][dofIdxGlobal].two_norm();
+                }
+            }//end phases
+        }//end elements
+  }// end calcVelocity
+
+    /*!
+     * \brief Access to the averaged (magnitude of) velocity for each vertex.
+     *
+     * \param phaseIdx The index of the fluid phase
+     * \param dofIdxGlobal The global index of the degree of freedom
+     *
+     */
+    const Scalar volumeDarcyMagVelocity(const unsigned int phaseIdx,
+                                        const unsigned int dofIdxGlobal) const
+    { return velocityNorm_[phaseIdx][dofIdxGlobal]; }
+
+private:
+    std::shared_ptr<Problem> problem_;
+    std::shared_ptr<FVGridGeometry> fvGridGeometry_;
+    std::array<std::vector<Dune::FieldVector<Scalar, 1> > , numPhases> velocityNorm_;
+
+
+};
+} // end namespace
+
+#endif
diff --git a/dumux/porousmediumflow/nonequilibrium/indices.hh b/dumux/porousmediumflow/nonequilibrium/indices.hh
new file mode 100644
index 0000000000000000000000000000000000000000..c87e5192af8d1856d6ce53fabc232c0a314e4e39
--- /dev/null
+++ b/dumux/porousmediumflow/nonequilibrium/indices.hh
@@ -0,0 +1,78 @@
+// -*- 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 The primary variable and equation indices for the MpNc model.
+ */
+#ifndef DUMUX_NONEQUILIBRIUM_INDICES_HH
+#define DUMUX_NONEQUILIBRIUM_INDICES_HH
+
+#include "model.hh"
+
+namespace Dumux
+{
+
+/*!
+ * \ingroup NonEquilibrium
+ * \ingroup ImplicitIndices
+ * \brief The primary variable and equation indices for the MpNc model.
+ */
+template <class TypeTag, int BasePVOffset = 0>
+class NonEquilbriumIndices: public GET_PROP_TYPE(TypeTag, EquilibriumIndices)
+{
+public:
+     using FluidSystem  = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+     enum { numPhases = FluidSystem::numPhases };
+     enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) };
+     enum { numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid) };
+     static const int numEq = GET_PROP_VALUE(TypeTag, NumEq);
+
+    /*!
+     * \brief Index for the temperature of the wetting phase in a vector of primary
+     *        variables.
+     */
+    static const unsigned int temperature0Idx = BasePVOffset + numEq - numEnergyEqFluid - numEnergyEqSolid;
+
+    /*!
+     * \brief Index for the temperature of the solid phase in a vector of primary
+     *        variables.
+     */
+    static const unsigned int temperatureSolidIdx = BasePVOffset + numEq - numEnergyEqSolid;
+    /*!
+     * \brief Compatibility with non kinetic models
+     */
+    static const unsigned int temperatureIdx = temperature0Idx;
+    /*!
+     * \brief Equation index of the energy equation.
+     */
+    static const unsigned int energyEq0Idx = BasePVOffset + numEq - numEnergyEqFluid - numEnergyEqSolid;
+    /*!
+     * \brief Compatibility with non kinetic models
+     */
+    static const unsigned int energyEqIdx = energyEq0Idx;
+
+    /*!
+     * \brief Equation index of the energy equation.
+     */
+    static const unsigned int energyEqSolidIdx = BasePVOffset + numEq - numEnergyEqSolid;
+};
+
+}
+
+#endif
diff --git a/dumux/porousmediumflow/nonequilibrium/localresidual.hh b/dumux/porousmediumflow/nonequilibrium/localresidual.hh
new file mode 100644
index 0000000000000000000000000000000000000000..55bc503ceb2d592fd0b1d6a1fb19e7f88765655c
--- /dev/null
+++ b/dumux/porousmediumflow/nonequilibrium/localresidual.hh
@@ -0,0 +1,389 @@
+// -*- 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 The local residual for the kinetic mass transfer module of
+ *        the compositional multi-phase model.
+ */
+#ifndef DUMUX_NONEQUILIBRIUM_LOCAL_RESIDUAL_HH
+#define DUMUX_NONEQUILIBRIUM_LOCAL_RESIDUAL_HH
+
+#include "model.hh"
+#include <dumux/porousmediumflow/nonequilibrium/thermal/localresidual.hh>
+
+namespace Dumux
+{
+
+// forward declaration
+template<class TypeTag, bool enableThermalNonEquilibrium, bool enableChemicalNonEquilibrium>
+class NonEquilibriumLocalResidualImplementation;
+
+template <class TypeTag>
+using NonEquilibriumLocalResidual = NonEquilibriumLocalResidualImplementation<TypeTag, GET_PROP_VALUE(TypeTag, EnableThermalNonEquilibrium), GET_PROP_VALUE(TypeTag, EnableChemicalNonEquilibrium)>;
+
+/*!
+ * \brief The mass conservation part of the nonequilibrium model for a model without chemical non-equilibrium
+ */
+template<class TypeTag>
+class NonEquilibriumLocalResidualImplementation<TypeTag, true, false>: public GET_PROP_TYPE(TypeTag, EquilibriumLocalResidual)
+{
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using ParentType = typename GET_PROP_TYPE(TypeTag, EquilibriumLocalResidual);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using ResidualVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
+    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
+    using ElementFluxVariablesCache = typename GET_PROP_TYPE(TypeTag, ElementFluxVariablesCache);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
+    using EnergyLocalResidual = typename GET_PROP_TYPE(TypeTag, EnergyLocalResidual);
+
+    static constexpr int numPhases = GET_PROP_VALUE(TypeTag, NumPhases);
+    static constexpr int numComponents = GET_PROP_VALUE(TypeTag, NumComponents);
+    enum { conti0EqIdx = Indices::conti0EqIdx };
+public:
+    using ParentType::ParentType;
+
+    /*!
+     * \brief Calculate the source term of the equation
+     *
+     * \param scv The sub-control volume over which we integrate the source term
+     * \note This is the default implementation for all models as sources are computed
+     *       in the user interface of the problem
+     *
+     */
+
+    ResidualVector computeFlux(const Problem& problem,
+                               const Element& element,
+                               const FVElementGeometry& fvGeometry,
+                               const ElementVolumeVariables& elemVolVars,
+                               const SubControlVolumeFace& scvf,
+                               const ElementFluxVariablesCache& elemFluxVarsCache) const
+    {
+        FluxVariables fluxVars;
+        fluxVars.init(problem, element, fvGeometry, elemVolVars, scvf, elemFluxVarsCache);
+        // get upwind weights into local scope
+        ResidualVector flux(0.0);
+
+        const auto moleDensity = [](const auto& volVars, const int phaseIdx)
+        { return volVars.molarDensity(phaseIdx); };
+
+        const auto moleFraction= [](const auto& volVars, const int phaseIdx, const int compIdx)
+        { return  volVars.moleFraction(phaseIdx, compIdx); };
+
+        // advective fluxes
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            const auto diffusiveFluxes = fluxVars.molecularDiffusionFlux(phaseIdx);
+            for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+            {
+                // get equation index
+                const auto eqIdx = conti0EqIdx + compIdx;
+
+                // the physical quantities for which we perform upwinding
+                const auto upwindTerm = [&moleDensity, &moleFraction, phaseIdx, compIdx] (const auto& volVars)
+                { return moleDensity(volVars, phaseIdx)*moleFraction(volVars, phaseIdx, compIdx)*volVars.mobility(phaseIdx); };
+
+                    flux[eqIdx] += fluxVars.advectiveFlux(phaseIdx, upwindTerm);
+
+                // diffusive fluxes (only for the component balances)
+                    flux[eqIdx] += diffusiveFluxes[compIdx];
+            }
+
+            //! Add advective and diffusive phase energy fluxes
+            EnergyLocalResidual::heatConvectionFlux(flux, fluxVars, elemVolVars,scvf, phaseIdx);
+        }
+        //! Add diffusive energy fluxes. For isothermal model the contribution is zero.
+        EnergyLocalResidual::heatConductionFlux(flux, fluxVars);
+
+        return flux;
+
+
+    }
+
+    ResidualVector computeSource(const Problem& problem,
+                                 const Element& element,
+                                 const FVElementGeometry& fvGeometry,
+                                 const ElementVolumeVariables& elemVolVars,
+                                 const SubControlVolume &scv) const
+    {
+        ResidualVector source(0.0);
+
+        // add contributions from volume flux sources
+        source += problem.source(element, fvGeometry, elemVolVars, scv);
+
+        // add contribution from possible point sources
+        source += problem.scvPointSources(element, fvGeometry, elemVolVars, scv);
+        // Call the (kinetic) Energy module, for the source term.
+        // it has to be called from here, because the mass transfered has to be known.
+        EnergyLocalResidual::computeSourceEnergy(source,
+                                                 element,
+                                                 fvGeometry,
+                                                 elemVolVars,
+                                                 scv);
+        return source;
+    }
+
+};
+
+
+/*!
+ * \brief The mass conservation part of the nonequilibrium model for a model assuming chemical non-equilibrium and two phases */
+template<class TypeTag>
+class NonEquilibriumLocalResidualImplementation<TypeTag, true, true>: public GET_PROP_TYPE(TypeTag, EquilibriumLocalResidual)
+{
+    using ParentType = typename GET_PROP_TYPE(TypeTag, EquilibriumLocalResidual);
+    using Implementation = typename GET_PROP_TYPE(TypeTag, LocalResidual);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using ResidualVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
+    using ElementFluxVariablesCache = typename GET_PROP_TYPE(TypeTag, ElementFluxVariablesCache);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using EnergyLocalResidual = typename GET_PROP_TYPE(TypeTag, EnergyLocalResidual);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using MolecularDiffusionType = typename GET_PROP_TYPE(TypeTag, MolecularDiffusionType);
+
+    static constexpr int numPhases = GET_PROP_VALUE(TypeTag, NumPhases);
+    static constexpr int numComponents = GET_PROP_VALUE(TypeTag, NumComponents);
+    static constexpr bool useMoles = GET_PROP_VALUE(TypeTag, UseMoles);
+    using ComponentVector = Dune::FieldVector<Scalar, numComponents>;
+
+    enum { conti0EqIdx = Indices::conti0EqIdx };
+    enum { nCompIdx = FluidSystem::nCompIdx } ;
+    enum { wCompIdx = FluidSystem::wCompIdx } ;
+    enum { wPhaseIdx = FluidSystem::wPhaseIdx} ;
+    enum { nPhaseIdx = FluidSystem::nPhaseIdx} ;
+    enum { sPhaseIdx = FluidSystem::sPhaseIdx} ;
+
+public:
+     using ParentType::ParentType;
+    /*!
+     * \brief Calculate the storage for all mass balance equations
+     *
+     *    \param storage The mass of the component within the sub-control volume
+     *    \param volVars The volume variables
+     */
+    ResidualVector computeStorage(const Problem& problem,
+                                  const SubControlVolume& scv,
+                                  const VolumeVariables& volVars) const
+    {
+       ResidualVector storage(0.0);
+
+     // compute storage term of all components within all phases
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+            {
+                 auto eqIdx = conti0EqIdx + phaseIdx*numComponents + compIdx;
+                 storage[eqIdx] += volVars.porosity()
+                                * volVars.saturation(phaseIdx)
+                                * volVars.molarDensity(phaseIdx)
+                                * volVars.moleFraction(phaseIdx, compIdx);
+            }
+            //! The energy storage in the fluid phase with index phaseIdx
+            EnergyLocalResidual::fluidPhaseStorage(storage, scv, volVars, phaseIdx);
+        }
+         //! The energy storage in the solid matrix
+        EnergyLocalResidual::solidPhaseStorage(storage, scv, volVars);
+        return storage;
+    }
+
+    /*!
+     * \brief Calculate the storage for all mass balance equations
+     *
+     *        \param flux The flux over the SCV (sub-control-volume) face for each component
+     *        \param fluxVars The flux Variables
+     *        \param elemVolVars The volume variables of the current element
+     */
+    ResidualVector computeFlux(const Problem& problem,
+                               const Element& element,
+                               const FVElementGeometry& fvGeometry,
+                               const ElementVolumeVariables& elemVolVars,
+                               const SubControlVolumeFace& scvf,
+                               const ElementFluxVariablesCache& elemFluxVarsCache) const
+    {
+        FluxVariables fluxVars;
+        fluxVars.init(problem, element, fvGeometry, elemVolVars, scvf, elemFluxVarsCache);
+        // get upwind weights into local scope
+        ResidualVector flux(0.0);
+
+        // advective fluxes
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            const auto diffusiveFluxes = fluxVars.molecularDiffusionFlux(phaseIdx);
+            for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+            {
+                // get equation index
+                const auto eqIdx =  conti0EqIdx + phaseIdx*numComponents + compIdx;
+                // the physical quantities for which we perform upwinding
+                const auto upwindTerm = [phaseIdx, compIdx] (const auto& volVars)
+                { return volVars.molarDensity(phaseIdx)*volVars.moleFraction(phaseIdx, compIdx)*volVars.mobility(phaseIdx); };
+
+                    flux[eqIdx] += fluxVars.advectiveFlux(phaseIdx, upwindTerm);
+
+                // diffusive fluxes (only for the component balances)
+                if (compIdx == phaseIdx) //do not add diffusive flux of main component, as that is not done in master as well
+                        continue;
+                    flux[eqIdx] += diffusiveFluxes[compIdx];
+            }
+            //! Add advective phase energy fluxes. For isothermal model the contribution is zero.
+            EnergyLocalResidual::heatConvectionFlux(flux, fluxVars, elemVolVars,scvf, phaseIdx);
+        }
+
+        //! Add diffusive energy fluxes. For isothermal model the contribution is zero.
+        EnergyLocalResidual::heatConductionFlux(flux, fluxVars);
+
+        return flux;
+    }
+
+
+    ResidualVector computeSource(const Problem& problem,
+                                 const Element& element,
+                                 const FVElementGeometry& fvGeometry,
+                                 const ElementVolumeVariables& elemVolVars,
+                                 const SubControlVolume &scv) const
+    {
+         ResidualVector source(0.0);
+        // In the case of a kinetic consideration, mass transfer
+        // between phases is realized via source terms there is a
+        // balance equation for each component in each phase
+        const auto& localScvIdx = scv.indexInElement();
+        const auto& volVars = elemVolVars[localScvIdx];
+        ComponentVector componentIntoPhaseMassTransfer[numPhases];
+#define FUNKYMASSTRANSFER 0
+#if FUNKYMASSTRANSFER
+        const Scalar mu_nPhaseNCompEquil = volVars.chemicalPotentialEquil(nPhaseIdx, nCompIdx) ;   // very 2p2c
+        const Scalar mu_wPhaseWCompEquil = volVars.chemicalPotentialEquil(wPhaseIdx, wCompIdx);    // very 2p2c
+
+        const Scalar mu_wPhaseNComp = volVars.chemicalPotential(wPhaseIdx, nCompIdx) ;   // very 2p2c
+        const Scalar mu_nPhaseWComp = volVars.chemicalPotential(nPhaseIdx, wCompIdx);    // very 2p2c
+
+        Valgrind::CheckDefined(mu_nPhaseNCompEquil);
+        Valgrind::CheckDefined(mu_wPhaseWCompEquil);
+        Valgrind::CheckDefined(mu_wPhaseNComp);
+        Valgrind::CheckDefined(mu_nPhaseWComp);
+
+        const Scalar characteristicLength   = volVars.characteristicLength()  ;
+        const Scalar temperature            = volVars.temperature(wPhaseIdx);
+        const Scalar pn                     = volVars.pressure(nPhaseIdx);
+        const Scalar henry                  = FluidSystem::henry(temperature) ;
+        const Scalar gradNinWApprox  = ( mu_wPhaseNComp - mu_nPhaseNCompEquil) / characteristicLength;    // very 2p2c // 1. / henry *
+        const Scalar gradWinNApprox  = ( mu_nPhaseWComp - mu_wPhaseWCompEquil) / characteristicLength;    // very 2p2c // 1. / pn *
+
+#else // FUNKYMASSTRANSFER
+        Scalar x[numPhases][numComponents]; // mass fractions in wetting phase
+        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
+            for (int compIdx=0; compIdx< numComponents; ++ compIdx){
+                x[phaseIdx][compIdx] = volVars.moleFraction(phaseIdx, compIdx);
+            }
+        }
+        Valgrind::CheckDefined(x);
+
+//      "equilibrium" values: calculated in volume variables
+        const Scalar x_wPhaseNCompEquil = volVars.xEquil(wPhaseIdx, nCompIdx) ;   // very 2p2c
+        const Scalar x_nPhaseWCompEquil = volVars.xEquil(nPhaseIdx, wCompIdx);    // very 2p2c
+        Valgrind::CheckDefined(x_wPhaseNCompEquil);
+        Valgrind::CheckDefined(x_nPhaseWCompEquil);
+        const Scalar characteristicLength   = volVars.characteristicLength()  ;
+        const Scalar gradNinWApprox  =  (x[wPhaseIdx][nCompIdx] - x_wPhaseNCompEquil) / characteristicLength;    // very 2p2c
+        const Scalar gradWinNApprox  =  (x[nPhaseIdx][wCompIdx] - x_nPhaseWCompEquil) / characteristicLength;    // very 2p2c
+#endif
+        Scalar phaseDensity[numPhases];
+        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
+            phaseDensity[phaseIdx] = volVars.molarDensity(phaseIdx);
+        }
+
+        // diffusion coefficients in wetting phase
+        const Scalar diffCoeffNinW = volVars.diffusionCoefficient(wPhaseIdx, nCompIdx) ;
+        Valgrind::CheckDefined(diffCoeffNinW);
+        // diffusion coefficients in non-wetting phase
+        const Scalar diffCoeffWinN = volVars.diffusionCoefficient(nPhaseIdx, wCompIdx) ;
+        Valgrind::CheckDefined(diffCoeffWinN);
+
+        const Scalar factorMassTransfer     = volVars.factorMassTransfer()  ;
+        const Scalar awn = volVars.interfacialArea(wPhaseIdx, nPhaseIdx);
+
+        const Scalar sherwoodWPhase  = volVars.sherwoodNumber(wPhaseIdx);
+        const Scalar sherwoodNPhase  = volVars.sherwoodNumber(nPhaseIdx);
+
+        //      actual diffusion is always calculated for eq's 2,3
+        //      Eq's 1,4 have to be the same with different sign, because no mass is accumulated in the interface
+        //      i.e. automatically conserving mass that mvoes across the interface
+
+        const Scalar nCompIntoWPhase  = - factorMassTransfer * gradNinWApprox * awn * phaseDensity[wPhaseIdx] * diffCoeffNinW * sherwoodWPhase;
+        const Scalar nCompIntoNPhase  = - nCompIntoWPhase ;
+        const Scalar wCompIntoNPhase  = - factorMassTransfer * gradWinNApprox * awn * phaseDensity[nPhaseIdx] * diffCoeffWinN * sherwoodNPhase;
+        const Scalar wCompIntoWPhase  = - wCompIntoNPhase ;
+
+        componentIntoPhaseMassTransfer[wPhaseIdx][nCompIdx] = nCompIntoWPhase;
+        componentIntoPhaseMassTransfer[nPhaseIdx][nCompIdx] = nCompIntoNPhase;
+        componentIntoPhaseMassTransfer[nPhaseIdx][wCompIdx] = wCompIntoNPhase;
+        componentIntoPhaseMassTransfer[wPhaseIdx][wCompIdx] = wCompIntoWPhase;
+
+        Valgrind::CheckDefined(componentIntoPhaseMassTransfer);
+
+        // Actually add the mass transfer to the sources which might
+        // exist externally
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
+            for (int compIdx = 0; compIdx < numComponents; ++ compIdx) {
+                const unsigned int eqIdx = conti0EqIdx + compIdx + phaseIdx*numComponents;
+                        source[eqIdx] += componentIntoPhaseMassTransfer[phaseIdx][compIdx] ;
+
+                        using std::isfinite;
+                        if (!isfinite(source[eqIdx]))
+                            DUNE_THROW(NumericalProblem, "Calculated non-finite source");
+            }
+        }
+
+        // Call the (kinetic) Energy module, for the source term.
+        // it has to be called from here, because the mass transfered has to be known.
+        EnergyLocalResidual::computeSourceEnergy(source,
+                                                 element,
+                                                 fvGeometry,
+                                                 elemVolVars,
+                                                 scv);
+
+        // add contributions from volume flux sources
+        source += problem.source(element, fvGeometry, elemVolVars, scv);
+
+        // add contribution from possible point sources
+        source += problem.scvPointSources(element, fvGeometry, elemVolVars, scv);
+        Valgrind::CheckDefined(source);
+
+        return source;
+    }
+ };
+
+} // end namespace Dumux
+
+#endif
diff --git a/dumux/porousmediumflow/nonequilibrium/model.hh b/dumux/porousmediumflow/nonequilibrium/model.hh
new file mode 100644
index 0000000000000000000000000000000000000000..bf304d33e57d011f8cb6299a9427dcc099ab12f5
--- /dev/null
+++ b/dumux/porousmediumflow/nonequilibrium/model.hh
@@ -0,0 +1,113 @@
+// -*- 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/>.   *
+ *****************************************************************************/
+#ifndef DUMUX_NONEQUILIBRIUM_MODEL_HH
+#define DUMUX_NONEQUILIBRIUM_MODEL_HH
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/dimensionlessnumbers.hh>
+
+#include <dumux/discretization/fourierslawnonequilibrium.hh>
+
+#include "localresidual.hh"
+#include "indices.hh"
+#include "gridvariables.hh"
+#include "vtkoutputfields.hh"
+
+/*!
+ * \ingroup Properties
+ * \ingroup ImplicitProperties
+ * \ingroup NonEquilibriumModel
+ * \file
+ * \brief This is the specialization that is able to capture non-equilibrium mass and / or energy transfer.
+ *
+ */
+namespace Dumux
+{
+namespace Properties
+{
+
+//////////////////////////////////////////////////////////////////
+// Type tags
+//////////////////////////////////////////////////////////////////
+NEW_TYPE_TAG(NonEquilibrium);
+
+/////////////////////////////////////////////////
+// Properties for the non-equilibrium mpnc model
+/////////////////////////////////////////////////
+
+SET_BOOL_PROP(NonEquilibrium, EnableThermalNonEquilibrium, true);
+//TODO: make that more logical: when enableEnergyBalance is false, thermalnonequilibrium should also not be computed.
+SET_BOOL_PROP(NonEquilibrium, EnableEnergyBalance, true);
+SET_BOOL_PROP(NonEquilibrium, EnableChemicalNonEquilibrium, true);
+
+SET_INT_PROP(NonEquilibrium, NumEnergyEqFluid, GET_PROP_VALUE(TypeTag, NumPhases));
+SET_INT_PROP(NonEquilibrium, NumEnergyEqSolid, 1);
+
+SET_TYPE_PROP(NonEquilibrium, EnergyLocalResidual, EnergyLocalResidualNonEquilibrium<TypeTag, GET_PROP_VALUE(TypeTag, NumEnergyEqFluid)>);
+SET_TYPE_PROP(NonEquilibrium, LocalResidual, NonEquilibriumLocalResidual<TypeTag>);
+
+SET_TYPE_PROP(NonEquilibrium, HeatConductionType , FouriersLawNonEquilibrium<TypeTag>);
+
+//! add the energy balances and chemical nonequilibrium numeq = numPhases*numComp+numEnergy
+SET_INT_PROP(NonEquilibrium, NumEq, GET_PROP_VALUE(TypeTag, NumEqBalance) +  GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) + GET_PROP_VALUE(TypeTag, NumEnergyEqSolid));
+
+//! indices for non-isothermal models
+SET_TYPE_PROP(NonEquilibrium, Indices, NonEquilbriumIndices<TypeTag, 0>);
+
+SET_PROP(NonEquilibrium, FluidState)
+{
+private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+public:
+     using type = NonEquilibriumFluidState<Scalar, FluidSystem>;
+};
+
+//! The grid variables
+SET_TYPE_PROP(NonEquilibrium, GridVariables, NonEquilibriumGridVariables<TypeTag>);
+
+//! indices for non-isothermal models
+SET_TYPE_PROP(NonEquilibrium, VtkOutputFields, NonEquilibriumVtkOutputFields<TypeTag>);
+
+SET_PROP(NonEquilibrium, NusseltFormulation )
+{
+    private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using DimLessNum =  DimensionlessNumbers<Scalar>;
+    public:
+    static constexpr int value = DimLessNum::NusseltFormulation::WakaoKaguei;
+};
+
+/*!
+ * \brief Set the default formulation for the sherwood correlation
+ *        Other possible parametrizations can be found in the dimensionlessnumbers
+ */
+SET_PROP(NonEquilibrium, SherwoodFormulation )
+{
+    private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using DimLessNum =  DimensionlessNumbers<Scalar>;
+    public:
+    static constexpr int value = DimLessNum::SherwoodFormulation::WakaoKaguei;
+};
+
+} //end namespace Properties
+} //end namespace Dumux
+
+#endif
diff --git a/dumux/porousmediumflow/mpnc/implicit/velomodelnewtoncontroller.hh b/dumux/porousmediumflow/nonequilibrium/newtoncontroller.hh
similarity index 68%
rename from dumux/porousmediumflow/mpnc/implicit/velomodelnewtoncontroller.hh
rename to dumux/porousmediumflow/nonequilibrium/newtoncontroller.hh
index 0d1d70939b151227a26002d3a12ce6e202866f75..a5876081c75d2d9654d060cd78f5a834e0ed78dd 100644
--- a/dumux/porousmediumflow/mpnc/implicit/velomodelnewtoncontroller.hh
+++ b/dumux/porousmediumflow/nonequilibrium/newtoncontroller.hh
@@ -22,53 +22,47 @@
  *
  *        This controller calls the velocity averaging in the model after each iteration.
  */
-#ifndef DUMUX_VELO_MODEL_NEWTON_CONTROLLER_HH
-#define DUMUX_VELO_MODEL_NEWTON_CONTROLLER_HH
+#ifndef DUMUX_NONEQUILIBRIUM_NEWTON_CONTROLLER_HH
+#define DUMUX_NONEQUILIBRIUM_NEWTON_CONTROLLER_HH
 
 #include <algorithm>
 
 #include <dumux/nonlinear/newtoncontroller.hh>
-#include "newtoncontroller.hh"
-#include "properties.hh"
 
 namespace Dumux {
 /*!
- * \brief A kinetic-MpNc specific controller for the newton solver.
+ * \brief A kinetic-nonequilibrium specific controller for the newton solver.
  *
  * This controller calls the velocity averaging in the problem after each iteration.
  *
  * Everything else is taken from the standard mpnc newtoncontroller.
  */
 template <class TypeTag>
-class VeloModelNewtonController : public MPNCNewtonController<TypeTag>
+class NonEquilibriumNewtonController : public NewtonController<TypeTag>
 {
-    using ParentType = MPNCNewtonController<TypeTag>;
-    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-
-    enum {velocityAveragingInModel  = GET_PROP_VALUE(TypeTag, VelocityAveragingInModel)};
+    using ParentType = NewtonController<TypeTag>;
+    using Scalar =  typename GET_PROP_TYPE(TypeTag, Scalar);
+    using GridView =  typename GET_PROP_TYPE(TypeTag, GridView);
+    using Communicator = typename GridView::CollectiveCommunication;
 
 public:
-    VeloModelNewtonController(const Problem &problem)
-        : ParentType(problem)
-    {};
-
-    void newtonBeginStep(){
-        ParentType::newtonBeginStep();
+    using ParentType::ParentType;
 
-        // Averages the face velocities of a vertex. Implemented in the model.
-        // The velocities are stored in the model.
-        if(velocityAveragingInModel)
-            this->problem_().model().calcVelocityAverage();
-    }
-
-    void newtonUpdate(SolutionVector &uCurrentIter,
+    template<class JacobianAssembler, class SolutionVector>
+    void newtonUpdate(JacobianAssembler& assembler,
+                      SolutionVector &uCurrentIter,
                       const SolutionVector &uLastIter,
                       const SolutionVector &deltaU)
     {
-        ParentType::newtonUpdate(uCurrentIter,
-                                uLastIter,
-                                deltaU);
+        ParentType::newtonUpdate(assembler,
+                                 uCurrentIter,
+                                 uLastIter,
+                                 deltaU);
+
+        auto& gridVariables = assembler.gridVariables();
+        // Averages the face velocities of a vertex. Implemented in the model.
+        // The velocities are stored in the model.
+        gridVariables.calcVelocityAverage(uCurrentIter);
     }
 };
 
diff --git a/dumux/porousmediumflow/nonequilibrium/thermal/CMakeLists.txt b/dumux/porousmediumflow/nonequilibrium/thermal/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cc28c3018c1a84cfda4d63d8577ac8583a38f737
--- /dev/null
+++ b/dumux/porousmediumflow/nonequilibrium/thermal/CMakeLists.txt
@@ -0,0 +1,3 @@
+install(FILES
+  localresidual.hh
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/porousmediumflow/nonequilibrium)
diff --git a/dumux/porousmediumflow/nonequilibrium/thermal/localresidual.hh b/dumux/porousmediumflow/nonequilibrium/thermal/localresidual.hh
new file mode 100644
index 0000000000000000000000000000000000000000..dbfdf601e4a426e0306464df46582056300dd345
--- /dev/null
+++ b/dumux/porousmediumflow/nonequilibrium/thermal/localresidual.hh
@@ -0,0 +1,539 @@
+// -*- 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
+ *
+ * \brief This file contains the parts of the local residual to
+ *        calculate the heat conservation in the thermal non-equilibrium M-phase
+ *        N-component model.
+ */
+#ifndef DUMUX_ENERGY_NONEQUILIBRIUM_LOCAL_RESIDUAL_HH
+#define DUMUX_ENERGY_NONEQUILIBRIUM_LOCAL_RESIDUAL_HH
+
+#include <dumux/common/spline.hh>
+#include <dumux/common/properties.hh>
+
+namespace Dumux
+{
+
+// forward declaration
+template <class TypeTag, int numEnergyEqFluid>
+class EnergyLocalResidualNonEquilibrium;
+
+template<class TypeTag>
+class EnergyLocalResidualNonEquilibrium<TypeTag, 1/*numEnergyEqFluid*/>
+{
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using ResidualVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
+    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
+    using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
+
+    enum { numPhases        = GET_PROP_VALUE(TypeTag, NumPhases) };
+    enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) };
+    enum { numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid) };
+    enum { temperature0Idx = Indices::temperature0Idx };
+    enum { energyEq0Idx = Indices::energyEq0Idx };
+    enum { energyEqSolidIdx = Indices::energyEqSolidIdx};
+    enum { conti0EqIdx = Indices::conti0EqIdx };
+
+    enum { numComponents    = GET_PROP_VALUE(TypeTag, NumComponents) };
+    enum { wPhaseIdx        = FluidSystem::wPhaseIdx};
+    enum { nPhaseIdx        = FluidSystem::nPhaseIdx};
+    enum { sPhaseIdx        = FluidSystem::sPhaseIdx};
+    enum { nCompIdx         = FluidSystem::nCompIdx};
+    enum { wCompIdx         = FluidSystem::wCompIdx};
+
+    enum { temperatureFluidIdx = Indices::temperature0Idx};
+    enum { temperatureSolidIdx = Indices::temperatureSolidIdx};
+
+    enum { dim = GridView::dimension}; // Grid and world dimension
+
+    static constexpr bool enableChemicalNonEquilibrium = GET_PROP_VALUE(TypeTag, EnableChemicalNonEquilibrium);
+
+public:
+
+
+    //! The energy storage in the fluid phase with index phaseIdx
+    static void fluidPhaseStorage(ResidualVector& storage,
+                                  const SubControlVolume& scv,
+                                  const VolumeVariables& volVars,
+                                  int phaseIdx)
+    {
+        //in case we have one energy equation for more than one fluid phase, add up  parts on the             one energy equation
+        storage[energyEq0Idx] += volVars.porosity()
+                                * volVars.density(phaseIdx)
+                                * volVars.internalEnergy(phaseIdx)
+                                * volVars.saturation(phaseIdx);
+
+    }
+
+
+    //! The energy storage in the solid matrix
+    static void solidPhaseStorage(ResidualVector& storage,
+                                  const SubControlVolume& scv,
+                                  const VolumeVariables& volVars)
+    {
+         //heat conduction for the fluid phases
+       for(int sPhaseIdx=0; sPhaseIdx<numEnergyEqSolid; ++sPhaseIdx)
+       {
+            storage[energyEqSolidIdx+sPhaseIdx] += volVars.temperatureSolid()
+                                                * volVars.solidHeatCapacity()
+                                                * volVars.solidDensity()
+                                                * (1.0 - volVars.porosity());
+       }
+    }
+
+     // this is to make nonequilibrium work with compositional local residual, compositional calls that for non-isothermal models
+    static void heatConvectionFlux(ResidualVector& flux,
+                                   FluxVariables& fluxVars,
+                                   int phaseIdx)
+    {}
+
+
+   //! The advective phase energy fluxes
+    static void heatConvectionFlux(ResidualVector& flux,
+                                   FluxVariables& fluxVars,
+                                   const ElementVolumeVariables& elemVolVars,
+                                   const SubControlVolumeFace& scvf,
+                                   int phaseIdx)
+    {
+        auto upwindTerm = [phaseIdx](const auto& volVars)
+        { return volVars.density(phaseIdx)*volVars.mobility(phaseIdx)*volVars.enthalpy(phaseIdx); };
+
+        //in case we have one energy equation for more than one fluid phase, add up advective parts on the one energy equation
+        flux[energyEq0Idx] += fluxVars.advectiveFlux(phaseIdx, upwindTerm);
+
+        //now add the diffusive part
+        const auto diffusiveFluxes = fluxVars.molecularDiffusionFlux(phaseIdx);
+        const auto& insideVolVars = elemVolVars[scvf.insideScvIdx()];
+        const auto& outsideVolVars = elemVolVars[scvf.outsideScvIdx()];
+        auto insideEnthalpy = insideVolVars.enthalpy(phaseIdx);
+        auto outsideEnthalpy = outsideVolVars.enthalpy(phaseIdx);
+
+        for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+        {
+            //no diffusion of the main component, this is a hack to use normal fick's law which computes both diffusions (main and component). We only add the part from the component here
+            if (phaseIdx == compIdx)
+                continue;
+            //we need the upwind enthapy. Even better would be the componentEnthalpy
+            auto enthalpy = 0.0;
+            if (diffusiveFluxes[compIdx] > 0)
+                enthalpy += insideEnthalpy;
+            else
+                enthalpy += outsideEnthalpy;
+            flux[energyEq0Idx] += diffusiveFluxes[compIdx]*FluidSystem::molarMass(compIdx)*enthalpy;
+        }
+    }
+
+    //! The diffusive energy fluxes
+    static void heatConductionFlux(ResidualVector& flux,
+                                   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);
+
+       //heat conduction for solid phase
+        flux[energyEqSolidIdx] += fluxVars.heatConductionFlux(sPhaseIdx);
+    }
+
+    /*!
+     * \brief Calculate the source term of the equation
+     *
+     * \param scv The sub-control volume over which we integrate the source term
+     */
+    static void computeSourceEnergy(ResidualVector& source,
+                                    const Element& element,
+                                    const FVElementGeometry& fvGeometry,
+                                    const ElementVolumeVariables& elemVolVars,
+                                    const SubControlVolume &scv)
+    {
+        //specialization for 2 fluid phases
+        const auto& localScvIdx = scv.indexInElement();
+        const auto& volVars = elemVolVars[localScvIdx];
+        const FluidState & 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 ;
+
+        //temperature fluid is the same for both fluids
+        const Scalar TFluid     = volVars.temperature(0);
+        const Scalar TSolid     = volVars.temperatureSolid();
+
+        const Scalar satW       = fs.saturation(wPhaseIdx) ;
+        const Scalar satN       = fs.saturation(nPhaseIdx) ;
+
+        const Scalar eps = 1e-6 ;
+        Scalar solidToFluidEnergyExchange ;
+
+        Scalar fluidConductivity ;
+            if (satW < 1.0 - eps)
+                fluidConductivity = volVars.fluidThermalConductivity(nPhaseIdx) ;
+            else if (satW >= 1.0 - eps)
+                fluidConductivity = volVars.fluidThermalConductivity(wPhaseIdx) ;
+            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(nPhaseIdx) ;
+        }
+        else if ( (satW >= 0 + eps) and (satW < 1.0-eps) )
+        {
+            solidToFluidEnergyExchange *=  (volVars.nusseltNumber(nPhaseIdx) * 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(wPhaseIdx) ;
+        }
+        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 FluidState & 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(wPhaseIdx) ;
+        const Scalar deltahv = fs.enthalpy(nPhaseIdx) - fs.enthalpy(wPhaseIdx);
+        const Scalar deltaRho = fs.density(wPhaseIdx) - fs.density(nPhaseIdx) ;
+        const Scalar firstBracket = pow(g * deltaRho / gamma, 0.5);
+        const Scalar cp = FluidSystem::heatCapacity(fs, wPhaseIdx) ;
+        // 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, nPhaseIdx ) ;
+        const Scalar deltaT = TSolid - Tsat ;
+        const Scalar secondBracket = pow( (cp *deltaT / (0.006 * deltahv)  ) , 3.0 ) ;
+        const Scalar Prl = volVars.prandtlNumber(wPhaseIdx) ;
+        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>
+class EnergyLocalResidualNonEquilibrium<TypeTag, 2 /*numEnergyEqFluid*/>
+: public EnergyLocalResidualNonEquilibrium<TypeTag, 1 /*numEnergyEqFluid*/>
+{
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using ResidualVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
+    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
+    using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
+
+    enum { numPhases        = GET_PROP_VALUE(TypeTag, NumPhases) };
+    enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) };
+    enum { numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid) };
+    enum { temperature0Idx = Indices::temperature0Idx };
+    enum { energyEq0Idx = Indices::energyEq0Idx };
+    enum { energyEqSolidIdx = Indices::energyEqSolidIdx};
+    enum { conti0EqIdx = Indices::conti0EqIdx };
+
+    enum { numComponents    = GET_PROP_VALUE(TypeTag, NumComponents) };
+    enum { wPhaseIdx        = FluidSystem::wPhaseIdx};
+    enum { nPhaseIdx        = FluidSystem::nPhaseIdx};
+    enum { sPhaseIdx        = FluidSystem::sPhaseIdx};
+    enum { nCompIdx         = FluidSystem::nCompIdx};
+    enum { wCompIdx         = FluidSystem::wCompIdx};
+
+    enum { temperatureFluidIdx = Indices::temperature0Idx};
+    enum { temperatureSolidIdx = Indices::temperatureSolidIdx};
+
+    enum { dim = GridView::dimension}; // Grid and world dimension
+
+    static constexpr bool enableChemicalNonEquilibrium = GET_PROP_VALUE(TypeTag, EnableChemicalNonEquilibrium);
+
+public:
+
+    //! The energy storage in the fluid phase with index phaseIdx
+    static void fluidPhaseStorage(ResidualVector& storage,
+                                  const SubControlVolume& scv,
+                                  const VolumeVariables& volVars,
+                                  int phaseIdx)
+    {
+        storage[energyEq0Idx+phaseIdx] += volVars.porosity()
+                                        * volVars.density(phaseIdx)
+                                        * volVars.internalEnergy(phaseIdx)
+                                        * volVars.saturation(phaseIdx);
+    }
+
+
+   //! The advective phase energy fluxes
+    static void heatConvectionFlux(ResidualVector& flux,
+                                   FluxVariables& fluxVars,
+                                   const ElementVolumeVariables& elemVolVars,
+                                   const SubControlVolumeFace& scvf,
+                                   int phaseIdx)
+    {
+        auto upwindTerm = [phaseIdx](const auto& volVars)
+        { return volVars.density(phaseIdx)*volVars.mobility(phaseIdx)*volVars.enthalpy(phaseIdx); };
+
+        //in case we have one energy equation for more than one fluid phase, add up advective parts on the one energy equation
+        flux[energyEq0Idx+phaseIdx] += fluxVars.advectiveFlux(phaseIdx, upwindTerm);
+
+        //add the diffusiv part
+        const auto diffusiveFluxes = fluxVars.molecularDiffusionFlux(phaseIdx);
+        const auto& insideVolVars = elemVolVars[scvf.insideScvIdx()];
+        const auto& outsideVolVars = elemVolVars[scvf.outsideScvIdx()];
+        auto insideEnthalpy = insideVolVars.enthalpy(phaseIdx);
+        auto outsideEnthalpy = outsideVolVars.enthalpy(phaseIdx);
+
+        for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+        {
+            //no diffusion of the main component, this is a hack to use normal fick's law which computes both diffusions (main and component). We only add the part from the component here
+            if (phaseIdx == compIdx)
+                continue;
+            //we need the upwind enthapy. Even better would be the componentEnthalpy
+            auto enthalpy = 0.0;
+            if (diffusiveFluxes[compIdx] > 0)
+                enthalpy += insideEnthalpy;
+            else
+                enthalpy += outsideEnthalpy;
+            flux[energyEq0Idx+phaseIdx] += diffusiveFluxes[compIdx]*FluidSystem::molarMass(compIdx)*enthalpy;
+        }
+    }
+
+    //! The diffusive energy fluxes
+    static void heatConductionFlux(ResidualVector& flux,
+                                   FluxVariables& fluxVars)
+    {
+
+        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx)
+        {
+            flux[energyEq0Idx+phaseIdx] += fluxVars.heatConductionFlux(phaseIdx);
+        }
+       //heat conduction for solid phase
+       flux[energyEqSolidIdx] += fluxVars.heatConductionFlux(sPhaseIdx);
+    }
+    /*!
+     * \brief Calculate the source term of the equation
+     *
+     * \param scv The sub-control volume over which we integrate the source term
+     */
+    static void computeSourceEnergy(ResidualVector& source,
+                                    const Element& element,
+                                    const FVElementGeometry& fvGeometry,
+                                    const ElementVolumeVariables& elemVolVars,
+                                    const SubControlVolume &scv)
+    {
+        //specialization for 2 fluid phases
+        const auto &localScvIdx = scv.indexInElement();
+        const auto &volVars = elemVolVars[localScvIdx];
+
+        const Scalar awn = volVars.interfacialArea(wPhaseIdx, nPhaseIdx);
+        const Scalar aws = volVars.interfacialArea(wPhaseIdx, sPhaseIdx);
+        const Scalar ans = volVars.interfacialArea(nPhaseIdx, sPhaseIdx);
+
+        const Scalar Tw = volVars.temperature(wPhaseIdx);
+        const Scalar Tn = volVars.temperature(nPhaseIdx);
+        const Scalar Ts = volVars.temperatureSolid();
+
+        const  Scalar lambdaWetting     = volVars.fluidThermalConductivity(wPhaseIdx);
+        const  Scalar lambdaNonWetting  = volVars.fluidThermalConductivity(nPhaseIdx);
+        const  Scalar lambdaSolid       = volVars.solidThermalConductivity();
+
+        const Scalar lambdaWN      = harmonicMean(lambdaWetting, lambdaNonWetting);
+        const Scalar lambdaWS      = harmonicMean(lambdaWetting, lambdaSolid);
+        const Scalar lambdaNS      = harmonicMean(lambdaNonWetting, lambdaSolid);
+
+        const Scalar characteristicLength   = volVars.characteristicLength()  ;
+        const Scalar factorEnergyTransfer   = volVars.factorEnergyTransfer()  ;
+
+        const Scalar nusseltWN      = harmonicMean(volVars.nusseltNumber(wPhaseIdx), volVars.nusseltNumber(nPhaseIdx));
+        const Scalar nusseltWS      = volVars.nusseltNumber(wPhaseIdx);
+        const Scalar nusseltNS      = volVars.nusseltNumber(nPhaseIdx);
+
+        const Scalar wettingToNonWettingEnergyExchange = factorEnergyTransfer * (Tw - Tn) / characteristicLength * awn * lambdaWN * nusseltWN  ;
+        const Scalar wettingToSolidEnergyExchange      = factorEnergyTransfer * (Tw - Ts) / characteristicLength * aws * lambdaWS * nusseltWS  ;
+        const Scalar nonWettingToSolidEnergyExchange   = factorEnergyTransfer * (Tn - Ts) / characteristicLength * ans * lambdaNS * nusseltNS  ;
+
+        for(int phaseIdx =0; phaseIdx<numEnergyEqFluid+numEnergyEqSolid; ++phaseIdx){
+            switch (phaseIdx)
+            {
+            case wPhaseIdx:
+                source[energyEq0Idx + phaseIdx] +=  ( - wettingToNonWettingEnergyExchange - wettingToSolidEnergyExchange);
+                break;
+            case nPhaseIdx:
+                source[energyEq0Idx + phaseIdx] +=  (+ wettingToNonWettingEnergyExchange - nonWettingToSolidEnergyExchange);
+                break;
+            case sPhaseIdx:
+                source[energyEq0Idx + phaseIdx] +=  (+ wettingToSolidEnergyExchange + nonWettingToSolidEnergyExchange);
+                break;
+            default:
+                DUNE_THROW(Dune::NotImplemented,
+                        "wrong index");
+            } // end switch
+
+
+            using std::isfinite;
+            if (!isfinite(source[energyEq0Idx + phaseIdx]))
+                DUNE_THROW(NumericalProblem, "Calculated non-finite source, " << "Tw="<< Tw << " Tn="<< Tn<< " Ts="<< Ts);
+
+        }// end phases
+
+        //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
+
+            const FluidState & fluidState = volVars.fluidState();
+
+            for(int phaseIdx =0; phaseIdx<numEnergyEqFluid+numEnergyEqSolid; ++phaseIdx)
+            {
+                switch (phaseIdx)
+                {
+                case wPhaseIdx:
+                //sum up the transfered energy by the components into the wetting phase
+                    for(int compIdx =0; compIdx<numComponents; ++compIdx)
+                    {
+                        const unsigned int eqIdx = conti0EqIdx + compIdx + phaseIdx*numComponents;
+                        source[energyEq0Idx + phaseIdx] += (source[eqIdx]
+                                                            * FluidSystem::molarMass(compIdx)
+                                                            * FluidSystem::componentEnthalpy(fluidState, nPhaseIdx, compIdx) );
+                    }
+                break;
+                case nPhaseIdx:
+                //sum up the transfered energy by the components into the nonwetting phase
+                    for(int compIdx =0; compIdx<numComponents; ++compIdx)
+                    {
+                        const unsigned int eqIdx = conti0EqIdx + compIdx + phaseIdx*numComponents;
+                        source[energyEq0Idx + phaseIdx] += (source[eqIdx]
+                                                            * FluidSystem::molarMass(compIdx)
+                                                            *FluidSystem::componentEnthalpy(fluidState, wPhaseIdx, compIdx));
+                    }
+                    break;
+                case sPhaseIdx:
+                    break; // no sorption
+                default:
+                    DUNE_THROW(Dune::NotImplemented,
+                                "wrong index");
+                } // end switch
+            }// end phases
+        }// EnableChemicalNonEquilibrium
+    }// end source
+};
+} // end namespace Dumux
+
+#endif //
diff --git a/dumux/porousmediumflow/mpnc/implicit/volumevariablesiakinetic.hh b/dumux/porousmediumflow/nonequilibrium/volumevariables.hh
similarity index 54%
rename from dumux/porousmediumflow/mpnc/implicit/volumevariablesiakinetic.hh
rename to dumux/porousmediumflow/nonequilibrium/volumevariables.hh
index 5e5315197af95f23de72fe751bc4167917151300..3ef398eed7df6711966740b313ccbb35a354d0c5 100644
--- a/dumux/porousmediumflow/mpnc/implicit/volumevariablesiakinetic.hh
+++ b/dumux/porousmediumflow/nonequilibrium/volumevariables.hh
@@ -26,36 +26,87 @@
  * This files contains all specializations which use 'real'
  * interfacial areas.
  */
-#ifndef DUMUX_MPNC_VOLUME_VARIABLES_IA_KINETIC_HH
-#define DUMUX_MPNC_VOLUME_VARIABLES_IA_KINETIC_HH
+#ifndef DUMUX_NONEQUILIBRIUM_VOLUME_VARIABLES__HH
+#define DUMUX_NONEQUILIBRIUM_VOLUME_VARIABLES__HH
 
 #include <dumux/common/dimensionlessnumbers.hh>
-#include "volumevariablesia.hh"
-#include "propertieskinetic.hh"
+
+#include <dumux/porousmediumflow/volumevariables.hh>
+
+#include <dumux/material/fluidstates/nonequilibrium.hh>
+#include <dumux/material/constraintsolvers/fluidsystemcomputefromreferencephase.hh>
+#include <dumux/material/constraintsolvers/fluidsystemconstraintsolver.hh>
+#include <dumux/material/constraintsolvers/misciblemultiphasecomposition.hh>
 
 namespace Dumux
 {
 
+// forward declaration
+template <class TypeTag, bool enableChemicalNonEquilibrium ,bool enableThermalNonEquilibrium>
+class NonEquilibriumVolumeVariablesImplementation;
 
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// specialization for the case of kinetic mass AND energy transfer
-////////////////////////////////////////////////////////////////////////////////////////////////////
-template <class TypeTag, bool enableKinetic >
-class MPNCVolumeVariablesIA<TypeTag, enableKinetic, /*numEnergyEqs=*/3>
+template <class TypeTag>
+using NonEquilibriumVolumeVariables =
+NonEquilibriumVolumeVariablesImplementation<TypeTag, GET_PROP_VALUE(TypeTag, EnableChemicalNonEquilibrium), GET_PROP_VALUE(TypeTag, EnableThermalNonEquilibrium)>;
+
+template <class TypeTag>
+class NonEquilibriumVolumeVariablesImplementation<TypeTag, false/*enableChemicalNonEquilibrium*/, false/*enableThermalNonEquilibrium*/>
 {
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using ElementSolution = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+    using Element = typename GridView::template Codim<0>::Entity;
     using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
     using ParameterCache = typename FluidSystem::ParameterCache;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+public:
+    void updateInterfacialArea(const ElementSolution& elemSol,
+                               const FluidState & fluidState,
+                               const ParameterCache &paramCache,
+                               const Problem &problem,
+                               const Element & element,
+                               const SubControlVolume& scv)
+     {}
+
+    void updateTemperatures(const ElementSolution& elemSol,
+                             const Problem &problem,
+                             const Element& element,
+                             const SubControlVolume& scv,
+                             FluidState& fluidState)
+     {}
+
+
+    void updateMoleFraction(FluidState & actualFluidState,
+                            ParameterCache & paramCache,
+                            const PrimaryVariables & priVars)
+     { }
+
+};
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// // specialization for the case of NO kinetic mass but kinetic energy transfer of a fluid mixture and solid
+// /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+template <class TypeTag>
+class NonEquilibriumVolumeVariablesImplementation<TypeTag, /*enableChemicalNonEquilibrium*/false, /*enableThermalNonEquilibrium*/true>
+{
+    using BaseType = PorousMediumFlowVolumeVariables<TypeTag>;
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using SpatialParams = typename GET_PROP_TYPE(TypeTag, SpatialParams);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using ElementSolution = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+    using PermeabilityType = typename SpatialParams::PermeabilityType;
     using Element = typename GridView::template Codim<0>::Entity;
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
-
+    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
+    using ParameterCache = typename FluidSystem::ParameterCache;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
 
     enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
     enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
@@ -66,165 +117,50 @@ class MPNCVolumeVariablesIA<TypeTag, enableKinetic, /*numEnergyEqs=*/3>
     enum { wCompIdx = FluidSystem::wCompIdx } ;
     enum { dim = GridView::dimension};
     enum { dimWorld = GridView::dimensionworld};
-    enum { numEnergyEqs = Indices::numPrimaryEnergyVars};
     enum { nusseltFormulation = GET_PROP_VALUE(TypeTag, NusseltFormulation)} ;
     enum { sherwoodFormulation = GET_PROP_VALUE(TypeTag, SherwoodFormulation)} ;
-    enum { enableDiffusion = GET_PROP_VALUE(TypeTag, EnableDiffusion)} ;
+    enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) };
+    enum { numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid) };
+    enum { temperature0Idx = Indices::temperature0Idx };
+    enum { moleFrac00Idx = Indices::conti0EqIdx };
 
+    static_assert((numEnergyEqFluid < 2),
+                   "This model is a specialization for a energy transfer of a fluid  mixture and a solid");
 
     using DimLessNum = DimensionlessNumbers<Scalar>;
-
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-
-
-    using AwnSurface = typename GET_PROP_TYPE(TypeTag, AwnSurface);
-    using AwnSurfaceParams = typename AwnSurface::Params;
-
-    using AwsSurface = typename GET_PROP_TYPE(TypeTag, AwsSurface);
-    using AwsSurfaceParams = typename AwsSurface::Params;
-
-    using AnsSurface = typename GET_PROP_TYPE(TypeTag, AnsSurface);
-    using AnsSurfaceParams = typename AnsSurface::Params;
-
-
 public:
     /*!
      * \brief Updates the volume specific interfacial area [m^2 / m^3] between the phases.
      */
-    void update(const VolumeVariables & volVars,
-                const FluidState & fluidState,
-                const ParameterCache &paramCache,
-                const PrimaryVariables &priVars,
-                const Problem &problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const unsigned int scvIdx)
+    void updateInterfacialArea(const ElementSolution& elemSol,
+                               const FluidState & fluidState,
+                               const ParameterCache &paramCache,
+                               const Problem &problem,
+                               const Element & element,
+                               const SubControlVolume& scv)
     {
-        // obtain (standard) material parameters (needed for the residual saturations)
-        const MaterialLawParams & materialParams  = problem.spatialParams().materialLawParams(element,fvGeometry,scvIdx);
-
-        //obtain parameters for interfacial area constitutive relations
-        const AwnSurfaceParams & aWettingNonWettingSurfaceParams
-               = problem.spatialParams().aWettingNonWettingSurfaceParams(element,fvGeometry,scvIdx);
-        const AnsSurfaceParams & aNonWettingSolidSurfaceParams
-               = problem.spatialParams().aNonWettingSolidSurfaceParams(element,fvGeometry,scvIdx);
-
-        Valgrind::CheckDefined(aWettingNonWettingSurfaceParams);
-        Valgrind::CheckDefined(aNonWettingSolidSurfaceParams);
-
-        const Scalar pc = fluidState.pressure(nPhaseIdx) - fluidState.pressure(wPhaseIdx);
-        const Scalar Sw = fluidState.saturation(wPhaseIdx);
-        Valgrind::CheckDefined(Sw);
-        Valgrind::CheckDefined(pc);
-        Scalar awn;
-
-#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.; //
-        }
-        else
-#endif
-        awn = AwnSurface::interfacialArea(aWettingNonWettingSurfaceParams, materialParams, Sw, pc ); // 10.; //
-
-        interfacialArea_[wPhaseIdx][nPhaseIdx] = awn ; //10. ;//
-        interfacialArea_[nPhaseIdx][wPhaseIdx] = interfacialArea_[wPhaseIdx][nPhaseIdx];
-        interfacialArea_[wPhaseIdx][wPhaseIdx] = 0. ;
-
-        Scalar ans = AnsSurface::interfacialArea(aNonWettingSolidSurfaceParams, materialParams,Sw, pc ); // 10.; //
-//        if (ans <0 )
-//            ans = 0 ;
-
-// 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,
-                                                            fvGeometry,
-                                                            scvIdx);
-        // I know the solid surface from the pore network. But it is more consistent to use the fit value.
-        // solidSurface_   = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.specificSolidsurface);
-        solidSurface_   = AnsSurface::interfacialArea(aNonWettingSolidSurfaceParams, materialParams, /*Sw=*/0., pcMax );
-        Valgrind::CheckDefined(solidSurface_);
-
-//        if (ans > solidSurface_){
-//            const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-//            std::stringstream positionString ;
-//            positionString << " Here:";
-//            for(int i=0; i<dim; i++)
-//                positionString << " x"<< (i+1) << "="  << globalPos[i] << " "   ;
-//            positionString << "\n";
-//
-//              std::cout<<"a_{ns} > a_s, set a_{ns}=" << ans <<" to a_{ns}=a_s="<<solidSurface_ << "
-//                                    with S_w="<< Sw << " p_c= "<< pc <<  positionString.str() ;
-//
-//              ans = solidSurface_ ;
-//        }
-
-#endif
-
-
-        interfacialArea_[nPhaseIdx][sPhaseIdx] = ans ; //10. ; //
-        interfacialArea_[sPhaseIdx][nPhaseIdx] = interfacialArea_[nPhaseIdx][sPhaseIdx];
-        interfacialArea_[nPhaseIdx][nPhaseIdx] = 0. ;
-
-#if USE_PCMAX
-        const Scalar aws = solidSurface_ - ans ;
-        interfacialArea_[wPhaseIdx][sPhaseIdx] = aws ; //10. ; //
-        interfacialArea_[sPhaseIdx][wPhaseIdx] = interfacialArea_[wPhaseIdx][sPhaseIdx];
-        interfacialArea_[sPhaseIdx][sPhaseIdx] = 0. ;
-#else
-        const AwsSurfaceParams & aWettingSolidSurfaceParams
-               = problem.spatialParams().aWettingSolidSurfaceParams();
-        Valgrind::CheckDefined(aWettingSolidSurfaceParams);
-        const Scalar aws = AwsSurface::interfacialArea(aWettingSolidSurfaceParams,materialParams, Sw, pc ); // 10.; //
-        interfacialArea_[wPhaseIdx][sPhaseIdx] = aws ;
-        interfacialArea_[sPhaseIdx][wPhaseIdx] = interfacialArea_[wPhaseIdx][sPhaseIdx];
-        interfacialArea_[sPhaseIdx][sPhaseIdx] = 0. ;
-#endif
-
-        Valgrind::CheckDefined(interfacialArea_);
-
-        factorMassTransfer_   = problem.spatialParams().factorMassTransfer(element,
-                                                                           fvGeometry,
-                                                                           scvIdx);
-
-        factorEnergyTransfer_   = problem.spatialParams().factorEnergyTransfer(element,
-                                                                               fvGeometry,
-                                                                               scvIdx);
-
-        characteristicLength_   = problem.spatialParams().characteristicLength(element,
-                                                                               fvGeometry,
-                                                                               scvIdx);
+        factorMassTransfer_   = problem.spatialParams().factorMassTransfer(element, scv, elemSol);
+        factorEnergyTransfer_   = problem.spatialParams().factorEnergyTransfer(element, scv, elemSol);
+        characteristicLength_   = problem.spatialParams().characteristicLength(element, scv, elemSol);
 
         // setting the dimensionless numbers.
         // obtaining the respective quantities.
-        const unsigned int globalVertexIdx = problem.vertexMapper().subIndex(element, scvIdx, dim);
-
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            const Scalar darcyMagVelocity     = problem.model().volumeDarcyMagVelocity(phaseIdx, globalVertexIdx);
+         const unsigned int vIdxGlobal = scv.dofIndex();
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            const Scalar darcyMagVelocity     = problem.gridVariables().volumeDarcyMagVelocity(phaseIdx, vIdxGlobal);
             const Scalar dynamicViscosity     = fluidState.viscosity(phaseIdx);
             const Scalar density              = fluidState.density(phaseIdx);
             const Scalar kinematicViscosity   = dynamicViscosity / density;
-            const Scalar heatCapacity         = FluidSystem::heatCapacity(fluidState, paramCache, phaseIdx);
-            const Scalar thermalConductivity  = FluidSystem::thermalConductivity(fluidState, paramCache, phaseIdx);
-
-
-            // diffusion coefficient of non-wetting component in wetting phase
-            const Scalar diffCoeff = volVars.diffCoeff(phaseIdx, wCompIdx, nCompIdx) ;
+            const Scalar heatCapacity         = FluidSystem::heatCapacity(fluidState,
+                                                                          paramCache,
+                                                                          phaseIdx);
+            const Scalar thermalConductivity  = FluidSystem::thermalConductivity(fluidState,
+                                                                           paramCache,
+                                                                           phaseIdx);
             const Scalar porosity = problem.spatialParams().porosity(element,
-                                                                   fvGeometry,
-                                                                   scvIdx);
+                                                                   scv,
+                                                                   elemSol);
 
             reynoldsNumber_[phaseIdx]   = DimLessNum::reynoldsNumber(darcyMagVelocity,
                                                                      characteristicLength_,
@@ -234,35 +170,60 @@ public:
                                                                     heatCapacity,
                                                                     thermalConductivity);
 
+
             nusseltNumber_[phaseIdx]    = DimLessNum::nusseltNumberForced(reynoldsNumber_[phaseIdx],
                                                                           prandtlNumber_[phaseIdx],
                                                                           porosity,
                                                                           nusseltFormulation);
-
-            schmidtNumber_[phaseIdx]    = DimLessNum::schmidtNumber(dynamicViscosity,
-                                                                    density,
-                                                                    diffCoeff);
-
-            // If Diffusion is not enabled, Sherwood is divided by zero
-            sherwoodNumber_[phaseIdx]   = DimLessNum::sherwoodNumber(reynoldsNumber_[phaseIdx],
-                                                                      schmidtNumber_[phaseIdx],
-                                                                      sherwoodFormulation);
         }
     }
 
     /*!
-     * \brief The specific interfacial area between two fluid phases [m^2 / m^3]
-     *
-     * This is _only_ required by the kinetic mass/energy modules
+     * \brief Update all quantities for a given control volume
      *
+     * \param elemSol A vector containing all primary variables connected to the element
+     * \param element An element which contains part of the control volume
+     * \param scv The sub-control volume
      */
-    const Scalar interfacialArea(const unsigned int phaseIIdx, const unsigned int phaseJIdx) const
+    void updateTemperatures(const ElementSolution& elemSol,
+                            const Problem &problem,
+                            const Element& element,
+                            const SubControlVolume& scv,
+                            FluidState& fluidState)
     {
-        // there is no interfacial area between a phase and itself
-        assert(phaseIIdx not_eq phaseJIdx);
-        return interfacialArea_[phaseIIdx][phaseJIdx];
+        if (numEnergyEqFluid >1)
+        for(int phaseIdx=0; phaseIdx < numEnergyEqFluid; ++phaseIdx)
+        {
+            // retrieve temperature from solution vector
+            const Scalar T = BaseType::extractDofPriVars(elemSol, scv)[temperature0Idx + phaseIdx];
+            fluidState.setTemperature(phaseIdx, T);
+        }
+        else
+        {
+            const Scalar T = BaseType::extractDofPriVars(elemSol, scv)[temperature0Idx];
+            fluidState.setTemperature(T);
+        }
+        for(int solidPhaseIdx = numEnergyEqFluid; solidPhaseIdx < numEnergyEqFluid+numEnergyEqSolid; ++solidPhaseIdx)
+        {
+            temperatureSolid_ = BaseType::extractDofPriVars(elemSol, scv)[temperature0Idx + solidPhaseIdx];
+
+        }
     }
 
+    void updateMoleFraction(FluidState & actualFluidState,
+                            ParameterCache & paramCache,
+                            const PrimaryVariables & priVars)
+    { }
+
+
+    /*!
+     * \brief Returns the temperature in fluid / solid phase(s)
+     *        the sub-control volume.
+     * \param phaseIdx The local index of the phases
+     */
+    Scalar temperatureSolid() const
+    { return temperatureSolid_; }
+
     //! access function Reynolds Number
     const Scalar reynoldsNumber(const unsigned int phaseIdx) const
     { return reynoldsNumber_[phaseIdx]; }
@@ -275,14 +236,6 @@ public:
     const Scalar nusseltNumber(const unsigned int phaseIdx) const
     { return nusseltNumber_[phaseIdx]; }
 
-    //! access function Schmidt Number
-    const Scalar schmidtNumber(const unsigned int phaseIdx) const
-    { return schmidtNumber_[phaseIdx]; }
-
-    //! access function Sherwood Number
-    const Scalar sherwoodNumber(const unsigned int phaseIdx) const
-    { return sherwoodNumber_[phaseIdx]; }
-
     //! access function characteristic length
     const Scalar characteristicLength() const
     { return characteristicLength_; }
@@ -305,12 +258,10 @@ public:
         Valgrind::CheckDefined(reynoldsNumber_);
         Valgrind::CheckDefined(prandtlNumber_);
         Valgrind::CheckDefined(nusseltNumber_);
-        Valgrind::CheckDefined(schmidtNumber_);
-        Valgrind::CheckDefined(sherwoodNumber_);
         Valgrind::CheckDefined(characteristicLength_);
         Valgrind::CheckDefined(factorEnergyTransfer_);
         Valgrind::CheckDefined(factorMassTransfer_);
-        Valgrind::CheckDefined(interfacialArea_);
+        Valgrind::CheckDefined(temperatureSolid_);
 #endif
     }
 
@@ -319,123 +270,216 @@ private:
     Scalar reynoldsNumber_[numPhases];
     Scalar prandtlNumber_[numPhases];
     Scalar nusseltNumber_[numPhases];
-    Scalar schmidtNumber_[numPhases];
-    Scalar sherwoodNumber_[numPhases];
     Scalar characteristicLength_;
     Scalar factorEnergyTransfer_;
     Scalar factorMassTransfer_;
     Scalar solidSurface_ ;
-    Scalar interfacialArea_[numPhases+1][numPhases+1];
+    Scalar temperatureSolid_;
 };
 
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// specialization for the case of NO kinetic mass but kinteic energy transfer of a fluid mixture and solid
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// // specialization for the case of (only) kinetic mass transfer. Be careful, we do not test this!
+// ////////////////////////////////////////////////////////////////////////////////////////////////////
 template <class TypeTag>
-class MPNCVolumeVariablesIA<TypeTag, /*enableKinetic=*/false, /*numEnergyEqs=*/2>
+class NonEquilibriumVolumeVariablesImplementation<TypeTag, true/*enableChemicalNonEquilibrium*/, false/*enableThermalNonEquilibrium*/>
 {
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using BaseType = PorousMediumFlowVolumeVariables<TypeTag>;
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using SpatialParams = typename GET_PROP_TYPE(TypeTag, SpatialParams);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using ElementSolution = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+    using PermeabilityType = typename SpatialParams::PermeabilityType;
     using Element = typename GridView::template Codim<0>::Entity;
+    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
+    using ParameterCache = typename FluidSystem::ParameterCache;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
 
+    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
     enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
+    enum { wPhaseIdx = FluidSystem::wPhaseIdx };
+    enum { nPhaseIdx = FluidSystem::nPhaseIdx };
+    enum { sPhaseIdx = FluidSystem::sPhaseIdx };
+    enum { nCompIdx = FluidSystem::nCompIdx } ;
+    enum { wCompIdx = FluidSystem::wCompIdx } ;
     enum { dim = GridView::dimension};
     enum { dimWorld = GridView::dimensionworld};
-    enum { numEnergyEqs = Indices::numPrimaryEnergyVars};
     enum { nusseltFormulation = GET_PROP_VALUE(TypeTag, NusseltFormulation)} ;
+    enum { sherwoodFormulation = GET_PROP_VALUE(TypeTag, SherwoodFormulation)} ;
+    enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) };
+    enum { numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid) };
+    enum { temperature0Idx = Indices::temperature0Idx };
+    enum { moleFrac00Idx = Indices::conti0EqIdx };
+
+    using AwnSurface = typename GET_PROP_TYPE(TypeTag, AwnSurface);
+    using AwnSurfaceParams = typename  AwnSurface::Params;
+    using AwsSurface = typename GET_PROP_TYPE(TypeTag, AwsSurface);
+    using AwsSurfaceParams = typename  AwsSurface::Params;
+    using AnsSurface = typename GET_PROP_TYPE(TypeTag, AnsSurface);
+    using AnsSurfaceParams = typename  AnsSurface::Params;
 
     using DimLessNum = DimensionlessNumbers<Scalar>;
+    //TODO: write a good constraint solver which does that right
+    using ConstraintSolver = FluidSystemConstraintSolver<Scalar, FluidSystem>;
 public:
     /*!
      * \brief Updates the volume specific interfacial area [m^2 / m^3] between the phases.
      */
-    void update(const VolumeVariables & volVars,
-                const FluidState & fluidState,
-                const ParameterCache &paramCache,
-                const PrimaryVariables &priVars,
-                const Problem &problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const unsigned int scvIdx)
+    void updateInterfacialArea(const ElementSolution& elemSol,
+                               const FluidState & fluidState,
+                               const ParameterCache &paramCache,
+                               const Problem &problem,
+                               const Element & element,
+                               const SubControlVolume& scv)
     {
-        factorMassTransfer_   = problem.spatialParams().factorMassTransfer(element,
-                                                                           fvGeometry,
-                                                                           scvIdx);
+        //obtain parameters for awnsurface
+        const AwnSurfaceParams & awnSurfaceParams = problem.spatialParams().aWettingNonWettingSurfaceParams(element, scv, elemSol) ;
+
+        // obtain (standard) material parameters (needed for the residual saturations)
+        const auto &materialParams  = problem.spatialParams().materialLawParams(element, scv, elemSol) ;
+
+        Valgrind::CheckDefined(awnSurfaceParams);
+        const Scalar Sw = fluidState.saturation(wPhaseIdx) ;
+        const Scalar pc = fluidState.pressure(nPhaseIdx) - fluidState.pressure(wPhaseIdx);
 
-        factorEnergyTransfer_   = problem.spatialParams().factorEnergyTransfer(element,
-                                                                               fvGeometry,
-                                                                               scvIdx);
+        // so far there is only a model for kinetic mass transfer between fluid phases
+        interfacialArea_ = AwnSurface::interfacialArea(awnSurfaceParams, materialParams, Sw, pc );
+
+        Valgrind::CheckDefined(interfacialArea_);
 
-        characteristicLength_   = problem.spatialParams().characteristicLength(element,
-                                                                               fvGeometry,
-                                                                               scvIdx);
+        factorMassTransfer_   = problem.spatialParams().factorMassTransfer(element, scv, elemSol);
 
+        characteristicLength_   = problem.spatialParams().characteristicLength(element, scv, elemSol);
         // setting the dimensionless numbers.
         // obtaining the respective quantities.
-        const unsigned int globalVertexIdx = problem.vertexMapper().subIndex(element, scvIdx, dim);
-
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            const Scalar darcyMagVelocity     = problem.model().volumeDarcyMagVelocity(phaseIdx, globalVertexIdx);
+        int globalVertexIdx = problem.vertexMapper().subIndex(element, scv, dim);
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            const Scalar darcyMagVelocity     = problem.gridVariables().volumeDarcyMagVelocity(phaseIdx, globalVertexIdx);
             const Scalar dynamicViscosity     = fluidState.viscosity(phaseIdx);
             const Scalar density              = fluidState.density(phaseIdx);
             const Scalar kinematicViscosity   = dynamicViscosity / density;
-            const Scalar heatCapacity         = FluidSystem::heatCapacity(fluidState,
-                                                                          paramCache,
-                                                                          phaseIdx);
-            const Scalar thermalConductivity  = FluidSystem::thermalConductivity(fluidState,
-                                                                           paramCache,
-                                                                           phaseIdx);
 
-            const Scalar porosity = problem.spatialParams().porosity(element,
-                                                                   fvGeometry,
-                                                                   scvIdx);
+            // diffusion coefficient of non-wetting component in wetting phase
+            const Scalar 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);
+            sherwoodNumber_[phaseIdx]   = DimLessNum::sherwoodNumber(reynoldsNumber_[phaseIdx],
+                                                                     schmidtNumber_[phaseIdx],
+                                                                     sherwoodFormulation);
+        }
+    }
 
+     /*!
+     * \brief Update composition of all phases in the mutable
+     *        parameters from the primary variables.
+     *
+     *        \param actualFluidState Container for all the secondary variables concerning the fluids
+     *        \param paramCache Container for cache parameters
+     *        \param priVars The primary Variables
+     *        \param *hint the volume variables, usable for initial guess of composition
+     */
+    void updateMoleFraction(FluidState & actualFluidState,
+                            ParameterCache & paramCache,
+                            const PrimaryVariables & priVars)
+    {
+        // setting the mole fractions of the fluid state
+        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx)
+        {
+                // set the component mole fractions
+                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
+                    actualFluidState.setMoleFraction(phaseIdx,
+                           compIdx,
+                           priVars[moleFrac00Idx +
+                                   phaseIdx*numComponents +
+                                   compIdx]);
+                }
+        }
+
+//          // For using the ... other way of calculating equilibrium
+//          THIS IS ONLY FOR silencing Valgrind but is not used in this model
+            for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx)
+                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
+                    const Scalar phi = FluidSystem::fugacityCoefficient(actualFluidState,
+                                                                        paramCache,
+                                                                        phaseIdx,
+                                                                        compIdx);
+                    actualFluidState.setFugacityCoefficient(phaseIdx,
+                                                      compIdx,
+                                                      phi);
+            }
+
+            FluidState equilFluidState; // the fluidState *on the interface* i.e. chemical equilibrium
+            equilFluidState.assign(actualFluidState) ;
+            ConstraintSolver::solve(equilFluidState,
+                                    paramCache,
+                                    /*setViscosity=*/false,
+                                    /*setEnthalpy=*/false) ;
+
+            // Setting the equilibrium composition (in a kinetic model not necessarily the same as the actual mole fraction)
+            for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
+                for (int compIdx=0; compIdx< numComponents; ++ compIdx){
+                    xEquil_[phaseIdx][compIdx] = equilFluidState.moleFraction(phaseIdx, compIdx);
+                }
+            }
+
+            // compute densities of all phases
+            for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
+                const Scalar rho = FluidSystem::density(actualFluidState, paramCache, phaseIdx);
+                actualFluidState.setDensity(phaseIdx, rho);
+            }
 
-            nusseltNumber_[phaseIdx]    = DimLessNum::nusseltNumberForced(reynoldsNumber_[phaseIdx],
-                                                                          prandtlNumber_[phaseIdx],
-                                                                          porosity,
-                                                                          nusseltFormulation);
         }
+
+    /*!
+     * \brief The mole fraction we would have in the case of chemical equilibrium /
+     *        on the interface.
+     *
+     *     \param phaseIdx The index of the fluid phase
+     *     \param compIdx The local index of the component
+     */
+    const Scalar xEquil(const unsigned int phaseIdx, const unsigned int compIdx) const
+    {
+        return xEquil_[phaseIdx][compIdx] ;
     }
 
+    /*!
+     * \brief The specific interfacial area between two fluid phases [m^2 / m^3]
+     */
+    const Scalar interfacialArea(const unsigned int phaseIIdx, const unsigned int phaseJIdx) const
+    {
+        // so far there is only a model for kinetic mass transfer between fluid phases
+        assert((phaseIIdx == nPhaseIdx && phaseJIdx == wPhaseIdx)
+              || (phaseIIdx == wPhaseIdx && phaseJIdx == nPhaseIdx));
+        return interfacialArea_;
+    }
 
     //! 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 Schmidt Number
+    const Scalar schmidtNumber(const unsigned int phaseIdx) const
+    { return schmidtNumber_[phaseIdx]; }
 
-    //! access function Nusselt Number
-    const Scalar nusseltNumber(const unsigned int phaseIdx) const
-    { return nusseltNumber_[phaseIdx]; }
+    //! access function Sherwood Number
+    const Scalar sherwoodNumber(const unsigned int phaseIdx) const
+    { return sherwoodNumber_[phaseIdx]; }
 
     //! access function characteristic length
     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_; }
@@ -446,138 +490,327 @@ public:
      */
     void checkDefined() const
     {
-#if !defined NDEBUG && HAVE_VALGRIND
-        Valgrind::CheckDefined(reynoldsNumber_);
-        Valgrind::CheckDefined(prandtlNumber_);
-        Valgrind::CheckDefined(nusseltNumber_);
+        Valgrind::CheckDefined(interfacialArea_);
         Valgrind::CheckDefined(characteristicLength_);
-        Valgrind::CheckDefined(factorEnergyTransfer_);
         Valgrind::CheckDefined(factorMassTransfer_);
-#endif
+        Valgrind::CheckDefined(reynoldsNumber_);
+        Valgrind::CheckDefined(schmidtNumber_);
+        Valgrind::CheckDefined(sherwoodNumber_);
     }
 
 private:
-    //! dimensionless numbers
-    Scalar reynoldsNumber_[numPhases];
-    Scalar prandtlNumber_[numPhases];
-    Scalar nusseltNumber_[numPhases];
     Scalar characteristicLength_;
-    Scalar factorEnergyTransfer_;
     Scalar factorMassTransfer_;
     Scalar solidSurface_ ;
+    Scalar interfacialArea_ ;
+    Scalar sherwoodNumber_[numPhases] ;
+    Scalar schmidtNumber_[numPhases] ;
+    Scalar reynoldsNumber_[numPhases] ;
+    Scalar xEquil_[numPhases][numComponents];
 };
 
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// specialization for the case of (only) kinetic mass transfer
-////////////////////////////////////////////////////////////////////////////////////////////////////
+//this is a specialization where everything is in non-equilibrium. we have to do our own stuff for the interfacial area but can use the rest from the others
 template <class TypeTag>
-class MPNCVolumeVariablesIA<TypeTag, /*enableKinetic=*/true, /*numEnergyEqs=*/0>
+class NonEquilibriumVolumeVariablesImplementation<TypeTag, true/*enableChemicalNonEquilibrium*/, true/*enableThermalNonEquilibrium*/>
 {
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BaseType = PorousMediumFlowVolumeVariables<TypeTag>;
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using SpatialParams = typename GET_PROP_TYPE(TypeTag, SpatialParams);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using ElementSolution = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+    using PermeabilityType = typename SpatialParams::PermeabilityType;
+    using Element = typename GridView::template Codim<0>::Entity;
     using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
     using ParameterCache = typename FluidSystem::ParameterCache;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using DimLessNum = DimensionlessNumbers<Scalar>;
-
-    using AwnSurface = typename GET_PROP_TYPE(TypeTag, AwnSurface);
-    using AwnSurfaceParams = typename AwnSurface::Params;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
 
+    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
     enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
     enum { wPhaseIdx = FluidSystem::wPhaseIdx };
     enum { nPhaseIdx = FluidSystem::nPhaseIdx };
-    enum { wCompIdx  = FluidSystem::wCompIdx };
-    enum { nCompIdx  = FluidSystem::nCompIdx };
-    enum { dim       = GridView::dimension};
-    enum { dimWorld  = GridView::dimensionworld};
-    enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
+    enum { sPhaseIdx = FluidSystem::sPhaseIdx };
+    enum { nCompIdx = FluidSystem::nCompIdx } ;
+    enum { wCompIdx = FluidSystem::wCompIdx } ;
+    enum { dim = GridView::dimension};
+    enum { dimWorld = GridView::dimensionworld};
+    enum { nusseltFormulation = GET_PROP_VALUE(TypeTag, NusseltFormulation)} ;
     enum { sherwoodFormulation = GET_PROP_VALUE(TypeTag, SherwoodFormulation)} ;
+    enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid) };
+    enum { numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid) };
+    enum { temperature0Idx = Indices::temperature0Idx };
+    enum { moleFrac00Idx = Indices::conti0EqIdx };
+
+    static_assert((numEnergyEqFluid > 1),
+                   "This model only deals with energy transfer between two fluids and one solid phase");
+    using DimLessNum = DimensionlessNumbers<Scalar>;
     using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
+
+    using AwnSurface = typename GET_PROP_TYPE(TypeTag, AwnSurface);
+    using AwnSurfaceParams = typename  AwnSurface::Params;
+    using AwsSurface = typename GET_PROP_TYPE(TypeTag, AwsSurface);
+    using AwsSurfaceParams = typename  AwsSurface::Params;
+    using AnsSurface = typename GET_PROP_TYPE(TypeTag, AnsSurface);
+    using AnsSurfaceParams = typename  AnsSurface::Params;
+
+    using ConstraintReferencePhaseSolver = Dumux::FluidSystemComputeFromReferencePhase<Scalar, FluidSystem>;
+    using ConstraintSolver = Dumux::FluidSystemConstraintSolver<Scalar, FluidSystem>;
 
 
 public:
     /*!
      * \brief Updates the volume specific interfacial area [m^2 / m^3] between the phases.
      */
-    void update(const VolumeVariables & volVars,
-                const FluidState & fluidState,
-                const ParameterCache & paramCache,
-                const PrimaryVariables &priVars,
-                const Problem &problem,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const unsigned int scvIdx)
+    void updateInterfacialArea(const ElementSolution& elemSol,
+                                const FluidState & fluidState,
+                                const ParameterCache &paramCache,
+                                const Problem &problem,
+                                const Element & element,
+                                const SubControlVolume& scv)
     {
-        //obtain parameters for awnsurface
-        const AwnSurfaceParams & awnSurfaceParams = problem.spatialParams().aWettingNonWettingSurfaceParams(element,fvGeometry,scvIdx) ;
-
         // obtain (standard) material parameters (needed for the residual saturations)
-        const MaterialLawParams & materialParams  = problem.spatialParams().materialLawParams(element,fvGeometry,scvIdx) ;
+       const auto& materialParams =
+            problem.spatialParams().materialLawParams(element, scv, elemSol);
+
+        //obtain parameters for interfacial area constitutive relations
+        const AwnSurfaceParams & aWettingNonWettingSurfaceParams
+               = problem.spatialParams().aWettingNonWettingSurfaceParams(element, scv, elemSol);
+        const AnsSurfaceParams & aNonWettingSolidSurfaceParams
+               = problem.spatialParams().aNonWettingSolidSurfaceParams(element, scv, elemSol);
+
+        Valgrind::CheckDefined(aWettingNonWettingSurfaceParams);
+        Valgrind::CheckDefined(aNonWettingSolidSurfaceParams);
 
-        Valgrind::CheckDefined(awnSurfaceParams);
-        const Scalar Sw = fluidState.saturation(wPhaseIdx) ;
         const Scalar pc = fluidState.pressure(nPhaseIdx) - fluidState.pressure(wPhaseIdx);
+        const Scalar Sw = fluidState.saturation(wPhaseIdx);
+        Valgrind::CheckDefined(Sw);
+        Valgrind::CheckDefined(pc);
+        Scalar awn;
 
-        // so far there is only a model for kinetic mass transfer between fluid phases
-        interfacialArea_ = AwnSurface::interfacialArea(awnSurfaceParams, materialParams, Sw, pc );
+#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.; //
+        }
+        else
+#endif
+        awn = AwnSurface::interfacialArea(aWettingNonWettingSurfaceParams, materialParams, Sw, pc ); // 10.; //
+
+        interfacialArea_[wPhaseIdx][nPhaseIdx] = awn ; //10. ;//
+        interfacialArea_[nPhaseIdx][wPhaseIdx] = interfacialArea_[wPhaseIdx][nPhaseIdx];
+        interfacialArea_[wPhaseIdx][wPhaseIdx] = 0. ;
+
+        Scalar ans = AnsSurface::interfacialArea(aNonWettingSolidSurfaceParams, materialParams,Sw, pc ); // 10.; //
+//        if (ans <0 )
+//            ans = 0 ;
+
+// 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 fit value.
+        // solidSurface_   = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.specificSolidsurface);
+        solidSurface_   = AnsSurface::interfacialArea(aNonWettingSolidSurfaceParams, materialParams, /*Sw=*/0., pcMax );
+        Valgrind::CheckDefined(solidSurface_);
+#endif
+        interfacialArea_[nPhaseIdx][sPhaseIdx] = ans ; //10. ; //
+        interfacialArea_[sPhaseIdx][nPhaseIdx] = interfacialArea_[nPhaseIdx][sPhaseIdx];
+        interfacialArea_[nPhaseIdx][nPhaseIdx] = 0. ;
+
+#if USE_PCMAX
+        const Scalar aws = solidSurface_ - ans ;
+        interfacialArea_[wPhaseIdx][sPhaseIdx] = aws ; //10. ; //
+        interfacialArea_[sPhaseIdx][wPhaseIdx] = interfacialArea_[wPhaseIdx][sPhaseIdx];
+        interfacialArea_[sPhaseIdx][sPhaseIdx] = 0. ;
+#else
+        const AwsSurfaceParams & aWettingSolidSurfaceParams
+               = problem.spatialParams().aWettingSolidSurfaceParams();
+        Valgrind::CheckDefined(aWettingSolidSurfaceParams);
+        const Scalar aws = AwsSurface::interfacialArea(aWettingSolidSurfaceParams,materialParams, Sw, pc ); // 10.; //
+        interfacialArea_[wPhaseIdx][sPhaseIdx] = aws ;
+        interfacialArea_[sPhaseIdx][wPhaseIdx] = interfacialArea_[wPhaseIdx][sPhaseIdx];
+        interfacialArea_[sPhaseIdx][sPhaseIdx] = 0. ;
+#endif
 
         Valgrind::CheckDefined(interfacialArea_);
 
-        factorMassTransfer_   = problem.spatialParams().factorMassTransfer(element,
-                                                                           fvGeometry,
-                                                                           scvIdx);
+        factorMassTransfer_   = problem.spatialParams().factorMassTransfer(element, scv, elemSol);
 
-        characteristicLength_   = problem.spatialParams().characteristicLength(element,
-                                                                               fvGeometry,
-                                                                               scvIdx);
-        // setting the dimensionless numbers.
-        // obtaining the respective quantities.
-        int globalVertexIdx = problem.vertexMapper().subIndex(element, scvIdx, dim);
+        factorEnergyTransfer_   = problem.spatialParams().factorEnergyTransfer(element, scv, elemSol);
+
+        characteristicLength_   = problem.spatialParams().characteristicLength(element, scv, elemSol);
+
+
+        const unsigned int vIdxGlobal = scv.dofIndex();
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            const Scalar darcyMagVelocity     = problem.model().volumeDarcyMagVelocity(phaseIdx, globalVertexIdx);
+            const Scalar darcyMagVelocity     = problem.gridVariables().volumeDarcyMagVelocity(phaseIdx, vIdxGlobal);
             const Scalar dynamicViscosity     = fluidState.viscosity(phaseIdx);
             const Scalar density              = fluidState.density(phaseIdx);
             const Scalar kinematicViscosity   = dynamicViscosity / density;
+            const Scalar heatCapacity         = FluidSystem::heatCapacity(fluidState, paramCache, phaseIdx);
+            const Scalar thermalConductivity  = FluidSystem::thermalConductivity(fluidState, paramCache, phaseIdx);
+
 
             // diffusion coefficient of non-wetting component in wetting phase
-            const Scalar diffCoeff = volVars.diffCoeff(phaseIdx, wCompIdx, nCompIdx) ;
+            const Scalar diffCoeff =  FluidSystem::binaryDiffusionCoefficient(fluidState, paramCache, phaseIdx, wCompIdx, nCompIdx);
+            const Scalar porosity = problem.spatialParams().porosity(element,
+                                                                    scv,
+                                                                   elemSol);
 
             reynoldsNumber_[phaseIdx]   = DimLessNum::reynoldsNumber(darcyMagVelocity,
                                                                      characteristicLength_,
                                                                      kinematicViscosity);
 
+            prandtlNumber_[phaseIdx]    = DimLessNum::prandtlNumber(dynamicViscosity,
+                                                                    heatCapacity,
+                                                                    thermalConductivity);
+
+            nusseltNumber_[phaseIdx]    = DimLessNum::nusseltNumberForced(reynoldsNumber_[phaseIdx],
+                                                                          prandtlNumber_[phaseIdx],
+                                                                          porosity,
+                                                                          nusseltFormulation);
+
             schmidtNumber_[phaseIdx]    = DimLessNum::schmidtNumber(dynamicViscosity,
                                                                     density,
                                                                     diffCoeff);
 
+            // If Diffusion is not enabled, Sherwood is divided by zero
             sherwoodNumber_[phaseIdx]   = DimLessNum::sherwoodNumber(reynoldsNumber_[phaseIdx],
                                                                       schmidtNumber_[phaseIdx],
                                                                       sherwoodFormulation);
         }
     }
 
+    void updateMoleFraction(FluidState & actualFluidState,
+                            ParameterCache & paramCache,
+                            const PrimaryVariables & priVars)
+    {
+        // setting the mole fractions of the fluid state
+        for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
+                // set the component mole fractions
+                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
+                    actualFluidState.setMoleFraction(phaseIdx,
+                           compIdx,
+                           priVars[moleFrac00Idx +
+                                   phaseIdx*numComponents +
+                                   compIdx]);
+                }
+            }
+
+//            // For using the ... other way of calculating equilibrium
+//             THIS IS ONLY FOR silencing Valgrind but is not used in this model
+            for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx)
+                for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
+                    const Scalar phi = FluidSystem::fugacityCoefficient(actualFluidState,
+                                                                        paramCache,
+                                                                        phaseIdx,
+                                                                        compIdx);
+                    actualFluidState.setFugacityCoefficient(phaseIdx,
+                                                      compIdx,
+                                                      phi);
+            }
+
+            FluidState equilFluidState; // the fluidState *on the interface* i.e. chemical equilibrium
+            equilFluidState.assign(actualFluidState) ;
+            ConstraintSolver::solve(equilFluidState,
+                                    paramCache,
+                                    /*setViscosity=*/false,
+                                    /*setEnthalpy=*/false) ;
+
+            // Setting the equilibrium composition (in a kinetic model not necessarily the same as the actual mole fraction)
+            for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
+                for (int compIdx=0; compIdx< numComponents; ++ compIdx){
+                    xEquil_[phaseIdx][compIdx] = equilFluidState.moleFraction(phaseIdx, compIdx);
+                }
+            }
+
+            // compute densities of all phases
+            for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){
+                const Scalar rho = FluidSystem::density(actualFluidState, paramCache, phaseIdx);
+                actualFluidState.setDensity(phaseIdx, rho);
+            }
+
+     }
+
+    void updateTemperatures(const ElementSolution& elemSol,
+                            const Problem &problem,
+                            const Element& element,
+                            const SubControlVolume& scv,
+                            FluidState& fluidState)
+    {
+        for(int phaseIdx=0; phaseIdx < numEnergyEqFluid; ++phaseIdx)
+        {
+            // retrieve temperature from solution vector
+            const Scalar T = BaseType::extractDofPriVars(elemSol, scv)[temperature0Idx + phaseIdx];
+            fluidState.setTemperature(phaseIdx, T);
+        }
+        for(int solidPhaseIdx = numEnergyEqFluid; solidPhaseIdx < numEnergyEqFluid+numEnergyEqSolid; ++solidPhaseIdx)
+        {
+            temperatureSolid_ = BaseType::extractDofPriVars(elemSol, scv)[temperature0Idx + solidPhaseIdx];
+        }
+    }
+
+    /*!
+     * \brief Returns the temperature in fluid / solid phase(s)
+     *        the sub-control volume.
+     * \param phaseIdx The local index of the phases
+     */
+    const Scalar temperatureSolid() const
+    { return temperatureSolid_; }
+    /*!
+     * \brief The mole fraction we would have in the case of chemical equilibrium /
+     *        on the interface.
+     *
+     *     \param phaseIdx The index of the fluid phase
+     *     \param compIdx The local index of the component
+     */
+    const Scalar xEquil(const unsigned int phaseIdx, const unsigned int compIdx) const
+    {
+        return xEquil_[phaseIdx][compIdx] ;
+    }
+
     /*!
      * \brief The specific interfacial area between two fluid phases [m^2 / m^3]
+     *
+     * This is _only_ required by the kinetic mass/energy modules
+     *
      */
     const Scalar interfacialArea(const unsigned int phaseIIdx, const unsigned int phaseJIdx) const
     {
-        // so far there is only a model for kinetic mass transfer between fluid phases
-        assert((phaseIIdx == nPhaseIdx && phaseJIdx == wPhaseIdx)
-              || (phaseIIdx == wPhaseIdx && phaseJIdx == nPhaseIdx));
-        return interfacialArea_;
+        // 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 Schmidt Number
     const Scalar schmidtNumber(const unsigned int phaseIdx) const
     { return schmidtNumber_[phaseIdx]; }
@@ -590,6 +823,10 @@ 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_; }
@@ -600,26 +837,36 @@ public:
      */
     void checkDefined() const
     {
-        Valgrind::CheckDefined(interfacialArea_);
-        Valgrind::CheckDefined(characteristicLength_);
-        Valgrind::CheckDefined(factorMassTransfer_);
+#if !defined NDEBUG && HAVE_VALGRIND
         Valgrind::CheckDefined(reynoldsNumber_);
+        Valgrind::CheckDefined(prandtlNumber_);
+        Valgrind::CheckDefined(nusseltNumber_);
         Valgrind::CheckDefined(schmidtNumber_);
         Valgrind::CheckDefined(sherwoodNumber_);
+        Valgrind::CheckDefined(characteristicLength_);
+        Valgrind::CheckDefined(factorEnergyTransfer_);
+        Valgrind::CheckDefined(factorMassTransfer_);
+        Valgrind::CheckDefined(interfacialArea_);
+#endif
     }
 
 private:
+    //! dimensionless numbers
+    Scalar reynoldsNumber_[numPhases];
+    Scalar prandtlNumber_[numPhases];
+    Scalar nusseltNumber_[numPhases];
+    Scalar schmidtNumber_[numPhases];
+    Scalar sherwoodNumber_[numPhases];
     Scalar characteristicLength_;
+    Scalar factorEnergyTransfer_;
     Scalar factorMassTransfer_;
     Scalar solidSurface_ ;
-    Scalar interfacialArea_ ;
-    Scalar sherwoodNumber_[numPhases] ;
-    Scalar schmidtNumber_[numPhases] ;
-    Scalar reynoldsNumber_[numPhases] ;
-};
-
-
+    Scalar interfacialArea_[numPhases+1][numPhases+1];
+    Scalar xEquil_[numPhases][numComponents];
+    Scalar temperatureSolid_;
 
+};
+//
 } // namespace Dumux
 
 #endif
diff --git a/dumux/porousmediumflow/nonequilibrium/vtkoutputfields.hh b/dumux/porousmediumflow/nonequilibrium/vtkoutputfields.hh
new file mode 100644
index 0000000000000000000000000000000000000000..b22429f49115ca234f9555c4182882759871ebfe
--- /dev/null
+++ b/dumux/porousmediumflow/nonequilibrium/vtkoutputfields.hh
@@ -0,0 +1,64 @@
+// -*- 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 Adds vtk output fields specific to non-isothermal models
+ */
+#ifndef DUMUX_NONEQUILBRIUM_OUTPUT_FIELDS_HH
+#define DUMUX_NONEQUILBRIUM_OUTPUT_FIELDS_HH
+
+#include <dumux/common/properties.hh>
+
+namespace Dumux
+{
+
+/*!
+ * \ingroup NonEquilibrium, InputOutput
+ * \brief Adds vtk output fields specific to non-isothermal models
+ */
+template<class TypeTag>
+class NonEquilibriumVtkOutputFields
+{
+    using EquilibriumVtkOutputFields = typename GET_PROP_TYPE(TypeTag, EquilibriumVtkOutputFields);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+    static constexpr int numPhases = GET_PROP_VALUE(TypeTag, NumPhases);
+    static constexpr int numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid);
+    static constexpr int numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid);
+public:
+    template <class VtkOutputModule>
+    static void init(VtkOutputModule& vtk)
+    {
+        EquilibriumVtkOutputFields::init(vtk);
+         for (int i = 0; i < numEnergyEqFluid; ++i)
+        vtk.addVolumeVariable( [i](const VolumeVariables& v){ return v.temperature(i); }, "T_" + FluidSystem::phaseName(i) );
+         for (int i = 0; i < numEnergyEqSolid; ++i)
+        vtk.addVolumeVariable( [i](const VolumeVariables& v){ return v.temperatureSolid(); }, "T_solid" );
+        for (int i = 0; i < numPhases; ++i){
+        vtk.addVolumeVariable( [i](const VolumeVariables& v){ return v.reynoldsNumber(i); }, "reynoldsNumber_" + FluidSystem::phaseName(i) );
+        vtk.addVolumeVariable( [i](const VolumeVariables& v){ return v.nusseltNumber(i); }, "nusseltNumber_" + FluidSystem::phaseName(i) );
+        vtk.addVolumeVariable( [i](const VolumeVariables& v){ return v.prandtlNumber(i); }, "prandtlNumber_" + FluidSystem::phaseName(i) );
+        }
+    }
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/dumux/porousmediumflow/properties.hh b/dumux/porousmediumflow/properties.hh
index b9b9ccae2a0cc5175774a8bb918144eeedeab742..9c2abbbf191a17cbea2e207d5a4e938682d236e7 100644
--- a/dumux/porousmediumflow/properties.hh
+++ b/dumux/porousmediumflow/properties.hh
@@ -79,6 +79,7 @@ SET_TYPE_PROP(PorousMediumFlow, VelocityOutput, PorousMediumFlowVelocityOutput<T
 //! By default, we set an empty primary variables switch
 SET_TYPE_PROP(PorousMediumFlow, PrimaryVariableSwitch, NoPrimaryVariableSwitch<TypeTag>);
 
+SET_BOOL_PROP(PorousMediumFlow, EnableThermalNonEquilibrium, false);
 } // namespace Properties
 } // namespace Dumux
 
diff --git a/test/porousmediumflow/mpnc/implicit/CMakeLists.txt b/test/porousmediumflow/mpnc/implicit/CMakeLists.txt
index 5ca0dbc7623d930e1f64d2f45a302dc237ba73d3..c07298e4446ae14932a961f31fa3164767051340 100644
--- a/test/porousmediumflow/mpnc/implicit/CMakeLists.txt
+++ b/test/porousmediumflow/mpnc/implicit/CMakeLists.txt
@@ -1,47 +1,45 @@
 add_input_file_links()
 
-add_dumux_test(test_boxmpnc test_boxmpnc test_boxmpnc.cc
-               ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
-                 --script fuzzy
-                 --files ${CMAKE_SOURCE_DIR}/test/references/obstaclebox-reference.vtu
-                         ${CMAKE_CURRENT_BINARY_DIR}/obstaclebox-00009.vtu
-                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxmpnc")
+dune_add_test(NAME test_mpnc_box
+              SOURCES test_mpnc_obstacle_fv.cc
+              COMPILE_DEFINITIONS TYPETAG=ObstacleBoxProblem
+              COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
+              CMD_ARGS  --script fuzzy
+                        --files ${CMAKE_SOURCE_DIR}/test/references/obstaclebox-reference.vtu
+                                ${CMAKE_CURRENT_BINARY_DIR}/test_boxmpnc-00009.vtu
+                        --command "${CMAKE_CURRENT_BINARY_DIR}/test_mpnc_box test_mpnc.input -Problem.Name test_boxmpnc")
 
-add_dumux_test(test_ccmpnc test_ccmpnc test_ccmpnc.cc
-               ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
-                 --script fuzzy
-                 --files ${CMAKE_SOURCE_DIR}/test/references/obstaclecc-reference.vtu
-                         ${CMAKE_CURRENT_BINARY_DIR}/obstaclecc-00009.vtu
-                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_ccmpnc")
-
-# build target for the one-phase Forchheimer test problem
-add_dumux_test(test_forchheimer1p test_forchheimer1p test_forchheimer1p.cc
-               ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
-                 --script fuzzy
-                 --files ${CMAKE_SOURCE_DIR}/test/references/forchheimer1p-reference.vtp
-                         ${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer1p-00001.vtp
-                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer1p")
-
-# build target for the two-phase Forchheimer test problem
-add_dumux_test(test_forchheimer2p test_forchheimer2p test_forchheimer2p.cc
-               ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
-                 --script fuzzy
-                 --files ${CMAKE_SOURCE_DIR}/test/references/forchheimer2p-reference.vtu
-                         ${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer2p-00008.vtu
-                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer2p")
+dune_add_test(NAME test_mpnc_tpfa
+              SOURCES test_mpnc_obstacle_fv.cc
+              COMPILE_DEFINITIONS TYPETAG=ObstacleCCProblem
+              COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
+              CMD_ARGS  --script fuzzy
+                        --files ${CMAKE_SOURCE_DIR}/test/references/obstaclecc-reference.vtu
+                                ${CMAKE_CURRENT_BINARY_DIR}/test_ccmpnc-00009.vtu
+                        --command "${CMAKE_CURRENT_BINARY_DIR}/test_mpnc_tpfa test_mpnc.input -Problem.Name test_ccmpnc")
 
 # build target for the full kinetic test problem
-add_dumux_test(test_boxmpnckinetic test_boxmpnckinetic test_boxmpnckinetic.cc
-               ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
-                 --script fuzzy
-                 --files ${CMAKE_SOURCE_DIR}/test/references/evaporationatmosphere-reference.vtu
-                         ${CMAKE_CURRENT_BINARY_DIR}/evaporationatmosphere-00005.vtu
-                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxmpnckinetic"
-                 --zeroThreshold {"TnMinusTs":0.5,"TwMinusTn":0.5,"velocity_w_1":2e-12})
+dune_add_test(NAME test_mpnckinetic_box
+              SOURCES test_boxmpnckinetic.cc
+              COMPILE_DEFINITIONS TYPETAG=EvaporationAtmosphereBoxProblem
+              COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
+              CMD_ARGS  --script fuzzy
+                        --files ${CMAKE_SOURCE_DIR}/test/references/evaporationatmosphere-reference.vtu
+                                ${CMAKE_CURRENT_BINARY_DIR}/test_boxmpnckinetic-00011.vtu
+                        --command "${CMAKE_CURRENT_BINARY_DIR}/test_mpnckinetic_box test_boxmpnckinetic.input -Problem.Name test_boxmpnckinetic")
 
 # build target for the energy kinetic test problem, two energy balance equations
-add_dumux_test(test_boxmpncthermalnonequil test_boxmpncthermalnonequil test_boxmpncthermalnonequil.cc
-               "${CMAKE_CURRENT_BINARY_DIR}/test_boxmpncthermalnonequil")
+dune_add_test(COMPILE_ONLY # since it currently fails miserably with very different results on different machines
+              NAME test_mpncthermalnonequil_box
+              SOURCES test_boxmpncthermalnonequil.cc
+              COMPILE_DEFINITIONS TYPETAG=CombustionProblemOneComponentBoxProblem
+              COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
+              CMD_ARGS  --script fuzzy
+                        --files ${CMAKE_SOURCE_DIR}/test/references/combustion-reference.vtp
+                                ${CMAKE_CURRENT_BINARY_DIR}/test_boxmpncthermalnonequil-00084.vtp
+                        --command "${CMAKE_CURRENT_BINARY_DIR}/test_mpncthermalnonequil_box test_boxmpncthermalnonequil.input -Problem.Name test_boxmpncthermalnonequil")
+
+
 
 #install sources
 install(FILES
@@ -49,15 +47,10 @@ combustionproblem1c.hh
 combustionspatialparams.hh
 evaporationatmosphereproblem.hh
 evaporationatmospherespatialparams.hh
-forchheimer1pproblem.hh
-forchheimer2pproblem.hh
-forchheimerspatialparams.hh
 obstacleproblem.hh
 obstaclespatialparams.hh
 test_boxmpnc.cc
 test_boxmpnckinetic.cc
 test_boxmpncthermalnonequil.cc
 test_ccmpnc.cc
-test_forchheimer1p.cc
-test_forchheimer2p.cc
 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/implicit/mpnc)
diff --git a/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh b/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh
index 48ec9e31a3745b5f58f2ecb6ce2ecd6e7b031105..53cbc1db08dfea452538911778c6d3b01dbb5320 100644
--- a/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh
+++ b/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh
@@ -29,67 +29,39 @@
 #ifndef DUMUX_COMBUSTION_PROBLEM_ONE_COMPONENT_HH
 #define DUMUX_COMBUSTION_PROBLEM_ONE_COMPONENT_HH
 
-// st this to one for the Thermo-Gross Mass Transfer
-#define FUNKYMASSTRANSFER 0
+#include <dumux/discretization/box/properties.hh>
 
-// this sets that the relation using pc_max is used.
-// i.e. - only parameters for awn, ans are given,
-//      - the fit for ans involves the maximum value for pc, where Sw, awn are zero.
-// setting it here, because it impacts volume variables and spatialparameters
-#define USE_PCMAX 0
-
-#include <dune/common/parametertreeparser.hh>
-
-#include <dumux/porousmediumflow/implicit/problem.hh>
-
-#include <dumux/porousmediumflow/mpnc/implicit/modelkinetic.hh>
-
-#include "combustionspatialparams.hh"
-
-#include <dumux/porousmediumflow/mpnc/implicit/velomodelnewtoncontroller.hh>
+#include <dumux/porousmediumflow/problem.hh>
+#include <dumux/porousmediumflow/mpnc/model.hh>
 
 #include <dumux/material/fluidsystems/purewatersimple.hh>
-
-#include <dumux/material/fluidstates/compositional.hh>
-
 #include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh>
-
 #include <dumux/material/constraintsolvers/computefromreferencephase.hh>
 
-//#include <dumux/io/plotoverline1d.hh>
+#include "combustionspatialparams.hh"
 
-namespace Dumux {
+namespace Dumux
+{
 
 template<class TypeTag>
 class CombustionProblemOneComponent;
 
-namespace Properties {
-NEW_TYPE_TAG(CombustionProblemOneComponent,
-        INHERITS_FROM(BoxMPNCKinetic, CombustionSpatialParams));
+namespace Properties
+{
+NEW_TYPE_TAG(CombustionProblemOneComponent, INHERITS_FROM(MPNCNonequil, CombustionSpatialParams));
+NEW_TYPE_TAG(CombustionProblemOneComponentBoxProblem, INHERITS_FROM(BoxModel, CombustionProblemOneComponent));
 
 // Set the grid type
 SET_TYPE_PROP(CombustionProblemOneComponent, Grid, Dune::OneDGrid);
 
-#if HAVE_SUPERLU
-SET_TYPE_PROP(CombustionProblemOneComponent, LinearSolver, SuperLUBackend<TypeTag>);
-#endif
-
 // Set the problem property
 SET_TYPE_PROP(CombustionProblemOneComponent,
-                Problem,
-                CombustionProblemOneComponent<TTAG(CombustionProblemOneComponent)>);
-
-// Set fluid configuration
-SET_PROP(CombustionProblemOneComponent, FluidSystem){
-private:
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-public:
-    using type = FluidSystems::PureWaterSimpleFluidSystem<Scalar, /*useComplexRelations=*/false>;
-};
+               Problem,
+               CombustionProblemOneComponent<TypeTag>);
 
-// Set the newton controller
-SET_TYPE_PROP(CombustionProblemOneComponent, NewtonController,
-        VeloModelNewtonController<TypeTag>);
+SET_TYPE_PROP(CombustionProblemOneComponent,
+              FluidSystem,
+              FluidSystems::PureWaterSimpleFluidSystem<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/false>);
 
 //! Set the default pressure formulation: either pw first or pn first
 SET_INT_PROP(CombustionProblemOneComponent,
@@ -101,60 +73,37 @@ SET_TYPE_PROP(CombustionProblemOneComponent, Scalar, double );
 // quad / double
 
 // Specify whether diffusion is enabled
-SET_BOOL_PROP(CombustionProblemOneComponent, EnableDiffusion, false);
-
-// do not use a chopped newton method in the beginning
-SET_BOOL_PROP(CombustionProblemOneComponent, NewtonEnableChop, false);
-
-// Enable the re-use of the jacobian matrix whenever possible?
-SET_BOOL_PROP(CombustionProblemOneComponent, ImplicitEnableJacobianRecycling, true);
-
-// Specify whether the convergence rate ought to be written out by the
-// newton method
-SET_BOOL_PROP(CombustionProblemOneComponent, NewtonWriteConvergence, false);
+SET_BOOL_PROP(CombustionProblemOneComponent, EnableMolecularDiffusion, false);
 
 //! Franz Lindners simple lumping
-SET_TYPE_PROP(CombustionProblemOneComponent, ThermalConductivityModel, ThermalConductivitySimpleFluidLumping<TypeTag>);
-
-//#################
-// Which Code to compile
-// Specify whether there is any energy equation
-SET_BOOL_PROP(CombustionProblemOneComponent, EnableEnergy, true);
-// Specify whether the kinetic energy module is used
-SET_INT_PROP(CombustionProblemOneComponent, NumEnergyEquations, 2);
-// Specify whether the kinetic mass module is use
-SET_BOOL_PROP(CombustionProblemOneComponent, EnableKinetic, false);
-//#################
+SET_PROP(CombustionProblemOneComponent, ThermalConductivityModel)
+{
+private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+public:
+    using type = ThermalConductivitySimpleFluidLumping<TypeTag, Scalar, Indices>;
+};
 
-/*!
- * \brief The fluid state which is used by the volume variables to
- *        store the thermodynamic state. This has to be chosen
- *        appropriately for the model ((non-)isothermal, equilibrium, ...).
- */
 SET_PROP(CombustionProblemOneComponent, FluidState)
 {
 private:
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-private:
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
 public:
     using type = CompositionalFluidState<Scalar, FluidSystem>;
 };
+//#################
+//changes from the default settings which also assume chemical non-equilibrium
+//set the number of energyequations we want to use
+SET_INT_PROP(CombustionProblemOneComponent, NumEnergyEqFluid, 1);
+SET_INT_PROP(CombustionProblemOneComponent, NumEnergyEqSolid, 1);
+
+// by default chemical non equilibrium is enabled in the nonequil model, switch that off here
+SET_BOOL_PROP(CombustionProblemOneComponent, EnableChemicalNonEquilibrium, false);
+SET_INT_PROP(CombustionProblemOneComponent, NumEqBalance, GET_PROP_VALUE(TypeTag, NumPhases)+GET_PROP_VALUE(TypeTag, NumPhases));
+//#################
 
-SET_BOOL_PROP(CombustionProblemOneComponent, UseMaxwellDiffusion, false);
-
-// Output variables
-SET_BOOL_PROP(CombustionProblemOneComponent, VtkAddVelocities, true);
-SET_BOOL_PROP(CombustionProblemOneComponent, VtkAddReynolds, true);
-SET_BOOL_PROP(CombustionProblemOneComponent, VtkAddPrandtl, true);
-SET_BOOL_PROP(CombustionProblemOneComponent, VtkAddNusselt, true);
-SET_BOOL_PROP(CombustionProblemOneComponent, VtkAddBoundaryTypes, true);
-SET_BOOL_PROP(CombustionProblemOneComponent, VtkAddInterfacialArea, true);
-SET_BOOL_PROP(CombustionProblemOneComponent, VtkAddTemperatures, true);
-SET_BOOL_PROP(CombustionProblemOneComponent, VtkAddxEquil, true);
-SET_BOOL_PROP(CombustionProblemOneComponent, VtkAddDeltaP, true);
-
-SET_BOOL_PROP(CombustionProblemOneComponent, VelocityAveragingInModel, true);
 }
 /*!
  * \ingroup MpNcBoxproblems
@@ -163,24 +112,30 @@ SET_BOOL_PROP(CombustionProblemOneComponent, VelocityAveragingInModel, true);
  *        which is supplied with energy from the right hand side to evaporate the water.
  */
 template<class TypeTag>
-class CombustionProblemOneComponent: public ImplicitPorousMediaProblem<TypeTag> {
-
-    using ThisType = CombustionProblemOneComponent<TypeTag>;
-    using ParentType = ImplicitPorousMediaProblem<TypeTag>;
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+class CombustionProblemOneComponent: public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    /*!
-     * \brief The fluid state which is used by the volume variables to
-     *        store the thermodynamic state. This should be chosen
-     *        appropriately for the model ((non-)isothermal, equilibrium, ...).
-     *        This can be done in the problem.
-     */
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using Sources = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
     using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
     using ParameterCache = typename FluidSystem::ParameterCache;
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+
     enum {dim = GridView::dimension}; // Grid and world dimension
     enum {dimWorld = GridView::dimensionworld};
     enum {numPhases = GET_PROP_VALUE(TypeTag, NumPhases)};
@@ -190,18 +145,16 @@ class CombustionProblemOneComponent: public ImplicitPorousMediaProblem<TypeTag>
     enum {conti00EqIdx = Indices::conti0EqIdx};
     enum {temperature0Idx = Indices::temperatureIdx};
     enum {energyEq0Idx = Indices::energyEqIdx};
-    enum {numEnergyEqs = Indices::numPrimaryEnergyVars};
-    enum {energyEqSolidIdx = energyEq0Idx + numEnergyEqs - 1};
+    enum {numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid)};
+    enum {numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid)};
+    enum {energyEqSolidIdx = energyEq0Idx + numEnergyEqFluid + numEnergyEqSolid - 1};
     enum {wPhaseIdx = FluidSystem::wPhaseIdx};
     enum {nPhaseIdx = FluidSystem::nPhaseIdx};
     enum {sPhaseIdx = FluidSystem::sPhaseIdx};
     enum {wCompIdx = FluidSystem::H2OIdx};
     enum {nCompIdx = FluidSystem::N2Idx};
-    enum {enableKinetic = GET_PROP_VALUE(TypeTag, EnableKinetic)};
-    enum {enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy)};
-    enum {numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
-    enum {velocityOutput = GET_PROP_VALUE(TypeTag, VtkAddVelocities)};
-    enum {velocityAveragingInModel = GET_PROP_VALUE(TypeTag, VelocityAveragingInModel)};
+
+     enum {numEq = GET_PROP_VALUE(TypeTag, NumEq)};
 
     // formulations
     enum {
@@ -210,53 +163,35 @@ class CombustionProblemOneComponent: public ImplicitPorousMediaProblem<TypeTag>
         leastWettingFirst = MpNcPressureFormulation::leastWettingFirst
     };
 
-    using Element = typename GridView::template Codim<0>::Entity;
-    using Vertex = typename GridView::template Codim<dim>::Entity;
-    using Intersection = typename GridView::Intersection;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
-    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using TimeManager = typename GET_PROP_TYPE(TypeTag, TimeManager);
-    using ElementBoundaryTypes = typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-
     using DimVector = Dune::FieldVector<typename GridView::Grid::ctype, dim>;
-    using GlobalPosition = Dune::FieldVector<typename GridView::Grid::ctype, dimWorld>;
-
-    using ScalarBuffer = std::vector<Dune::FieldVector<Scalar, 1>>;
-    using PhaseBuffer = std::array<ScalarBuffer, numPhases>;
-    using VelocityVector = Dune::FieldVector<Scalar, dimWorld>;
-    using VelocityField = Dune::BlockVector<VelocityVector>;
-    using PhaseVelocityField = std::array<VelocityField, numPhases>;
+    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
 
 public:
-    CombustionProblemOneComponent(TimeManager &timeManager,
-            const GridView &gridView)
-    : ParentType(timeManager, gridView)
+    CombustionProblemOneComponent(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+        : ParentType(fvGridGeometry)
     {
+            outputName_ = getParam<std::string>("Problem.Name");
+            nRestart_ = getParam<Scalar>("Constants.nRestart");
+            TInitial_ = getParam<Scalar>("InitialConditions.TInitial");
+            TRight_ = getParam<Scalar>("InitialConditions.TRight");
+            pnInitial_ = getParam<Scalar>("InitialConditions.pnInitial");
+            TBoundary_ = getParam<Scalar>("BoundaryConditions.TBoundary");
+            SwBoundary_ = getParam<Scalar>("BoundaryConditions.SwBoundary");
+            SwOneComponentSys_= getParam<Scalar>("BoundaryConditions.SwOneComponentSys");
+            massFluxInjectedPhase_ = getParam<Scalar>("BoundaryConditions.massFluxInjectedPhase");
+            heatFluxFromRight_ = getParam<Scalar>("BoundaryConditions.heatFluxFromRight");
+            coldTime_ =getParam<Scalar>("BoundaryConditions.coldTime");
+            time_ = 0.0;
     }
 
-    void init()
-    {
-            outputName_ = GET_RUNTIME_PARAM(TypeTag, std::string, Constants.outputName);
-            nRestart_ = GET_RUNTIME_PARAM(TypeTag, int, Constants.nRestart);
-            TInitial_ = GET_RUNTIME_PARAM(TypeTag, Scalar, InitialConditions.TInitial);
-            TRight_ = GET_RUNTIME_PARAM(TypeTag, Scalar, InitialConditions.TRight);
-            pnInitial_ = GET_RUNTIME_PARAM(TypeTag, Scalar,InitialConditions.pnInitial);
-            TBoundary_ = GET_RUNTIME_PARAM(TypeTag, Scalar,BoundaryConditions.TBoundary);
-            SwBoundary_ = GET_RUNTIME_PARAM(TypeTag, Scalar,BoundaryConditions.SwBoundary);
-            SwOneComponentSys_ = GET_RUNTIME_PARAM(TypeTag, Scalar,BoundaryConditions.SwOneComponentSys);
-            massFluxInjectedPhase_ = GET_RUNTIME_PARAM(TypeTag, Scalar,BoundaryConditions.massFluxInjectedPhase);
-            heatFluxFromRight_ = GET_RUNTIME_PARAM(TypeTag, Scalar,BoundaryConditions.heatFluxFromRight);
-            coldTime_ = GET_RUNTIME_PARAM(TypeTag, Scalar,BoundaryConditions.coldTime);
-
-        this->spatialParams().setInputInitialize();
-
-        ParentType::init();
-        this->model().initVelocityStuff();
-    }
+    void setTime(Scalar time)
+    { time_ = time; }
+
+    void setGridVariables(std::shared_ptr<GridVariables> gridVariables)
+    { gridVariables_ = gridVariables; }
+
+     const GridVariables& gridVariables() const
+    { return *gridVariables_; }
 
     /*!
      * \brief Returns the temperature \f$\mathrm{[K]}\f$ for an isothermal problem.
@@ -266,6 +201,7 @@ public:
     Scalar temperature() const
     {   return TInitial_;}
 
+
     /*!
      * \name Problem Params
      */
@@ -278,156 +214,61 @@ public:
     const std::string name() const
     {   return outputName_;}
 
-    /*!
-     * \brief Returns the temperature within the domain.
-     *
-     * \param element The finite element
-     * \param fvGeometry The finite volume geometry of the element
-     * \param scvIdx The local index of the sub-control volume
-     *
-     */
-    Scalar boxTemperature(const Element &element,
-            const FVElementGeometry &fvGeometry,
-            const unsigned int scvIdx) const
-    {   return TInitial_;}
-
     // \}
 
     /*!
-     * \brief Called directly after the time integration.
-     */
-    void postTimeStep()
-    {
-//      if(this->timeManager().willBeFinished()){
-//          // write plot over Line to text files
-//          // each output gets it's writer object in order to allow for different header files
-//          PlotOverLine1D<TypeTag> writer;
-//
-//          // writer points: in the porous medium, not the outflow
-//          GlobalPosition pointOne ;
-//          GlobalPosition pointTwo ;
-//
-//          pointOne[0] = this->bBoxMin()[0] ;
-//          pointTwo[0] = (this->spatialParams().lengthPM()) ;
-//
-//          writer.write(*this,
-//                        pointOne,
-//                        pointTwo,
-//                        "plotOverLine");
-//      }
-
-        // Calculate storage terms of the individual phases
-        for (int phaseIdx = 0; phaseIdx < numEnergyEqs; ++phaseIdx) {
-            PrimaryVariables phaseStorage;
-            /* how much of the conserved quantity is in the system (in units of the balance eq.)
-             * summed up storage term over the whole system
-             */
-            this->model().globalPhaseStorage(phaseStorage, phaseIdx);
-
-            if (this->gridView().comm().rank() == 0) {
-                std::cout
-                <<"Storage in  "
-                << FluidSystem::phaseName(phaseIdx)
-                << "Phase: ["
-                << phaseStorage
-                << "]"
-                << "\n";
-            }
-        }
-
-        // Calculate total storage terms
-        PrimaryVariables storage;
-        this->model().globalStorage(storage);
-
-        // Write mass balance information for rank 0
-        if (this->gridView().comm().rank() == 0) {
-            std::cout
-            <<"Storage total: [" << storage << "]"
-            << "\n";
-        }
-    }
-
-    /*!
-     * \brief Write a restart file?
-     *yes of course:
-     * - every nRestart_'th steps
-     */
-    bool shouldWriteRestartFile() const
-    {
-        return this->timeManager().timeStepIndex() > 0 and
-        (this->timeManager().timeStepIndex() % nRestart_ == 0);
-    }
-
-    /*!
-     * \brief Write a output file?
-     */
-    bool shouldWriteOutput() const
-    {   return true;}
-
-    /*!
-     * \brief Evaluate the source term for all phases within a given
+     * \brief Evaluate the source term for all balance equations within a given
      *        sub-control-volume.
      *
-     * For this method, the \a values 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.
-     *
-     * \param priVars Stores the Dirichlet values for the conservation equations in
+     * \param values Stores the solution for the conservation equations in
+     *               \f$ [ \textnormal{unit of primary variable} / (m^\textrm{dim} \cdot s )] \f$
      * \param element The finite element
      * \param fvGeometry The finite volume geometry of the element
      * \param scvIdx The local index of the sub-control volume
+     *
+     * Positive values mean that mass is created, negative ones mean that it vanishes.
      */
-    void source(PrimaryVariables & priVars,
-            const Element & element,
-            const FVElementGeometry & fvGeometry,
-            const unsigned int scvIdx) const
+    //! \copydoc Dumux::ImplicitProblem::source()
+    PrimaryVariables source(const Element &element,
+                            const FVElementGeometry& fvGeometry,
+                            const ElementVolumeVariables& elemVolVars,
+                            const SubControlVolume &scv) const
     {
-        priVars = Scalar(0.0);
-        const GlobalPosition & globalPos = fvGeometry.subContVol[scvIdx].global;
+        PrimaryVariables priVars(0.0);
+
+        const auto& globalPos = scv.dofPosition();
 
-        const Scalar volume = fvGeometry.subContVol[scvIdx].volume;
-        const unsigned int numScv = fvGeometry.numScv; // box: numSCV, cc:1
+        const Scalar volume = scv.volume();
+        const Scalar numScv = fvGeometry.numScv(); // box: numSCV, cc:1
 
-        if ((this->timeManager().time()) > coldTime_ )
+        if (time_ > coldTime_ )
         {
             if (onRightBoundaryPorousMedium_(globalPos))
             {
-                if(numEnergyEquations>1) // for  2 and 3 energy equations
-                {
-                    if(numEnergyEquations==2) {
-                        // Testing the location of a vertex, but function is called for each associated scv. Compensate for that
-                        priVars[energyEqSolidIdx] = heatFluxFromRight_ / volume / (Scalar)numScv;
-                    }
-                    else
-                    // Multiply by volume, because afterwards we divide by it -> make independet of grid resolution
-                    priVars[energyEq0Idx + sPhaseIdx] = heatFluxFromRight_ / volume / (Scalar)numScv;
-                }
-                else if (enableEnergy) {
-                    // Multiply by volume, because afterwards we divide by it -> make independet of grid resolution
-                    priVars[energyEq0Idx] = heatFluxFromRight_ / volume / (Scalar)numScv;
-                }
+                // Testing the location of a vertex, but function is called for each associated scv. Compensate for that
+                priVars[energyEqSolidIdx] = heatFluxFromRight_ / volume / numScv;
             }
-        }
+         }
+        return priVars;
     }
 
     /*!
      * \brief Specifies which kind of boundary condition should be
      *        used for which equation on a given boundary segment.
      *
-     * \param bTypes The bounentraldary types for the conservation equations
-     * \param globalPos The global position
-
+     * \param values The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
      */
-    void boundaryTypesAtPos(BoundaryTypes &bTypes,
-                            const GlobalPosition &globalPos) const
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
     {
+        BoundaryTypes bcTypes;
         // Default: Neumann
-        bTypes.setAllNeumann();
+         bcTypes.setAllNeumann();
 
-        if(onRightBoundary_(globalPos) ) {
-            bTypes.setAllDirichlet();
-        }
+         if(onRightBoundary_(globalPos) ) {
+            bcTypes.setAllDirichlet();
+         }
+        return bcTypes;
     }
 
     /*!
@@ -440,39 +281,34 @@ public:
      *
      * For this method, the \a values parameter stores primary variables.
      */
-    void dirichletAtPos(PrimaryVariables &priVars,
-                        const GlobalPosition &globalPos) const
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
     {
-        initial_(priVars, globalPos);
+       return  initial_(globalPos);
     }
 
     /*!
      * \brief Evaluate the boundary conditions for a neumann
      *        boundary segment.
      *
-     * For this method, the \a values parameter stores the mass flux
-     * in normal direction of each component. Negative values mean
-     * influx.
-     *
-     * \param priVars Stores the Dirichlet values for the conservation equations in
-     *               \f$ [ \textnormal{unit of primary variable} ] \f$
+     * \param values The neumann values for the conservation equations
      * \param element The finite element
-     * \param fvGeometry The finite volume geometry of the element
+     * \param fvGeometry The finite-volume geometry in the box scheme
      * \param intersection The intersection between element and boundary
-     * \param scvIdx The local index of the sub-control volume
+     * \param scvIdx The local vertex index
      * \param boundaryFaceIdx The index of the boundary face
-     * \param elemVolVars The element Volume Variables
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
      */
+    PrimaryVariables neumann(const Element &element,
+                             const FVElementGeometry& fvGeometry,
+                             const ElementVolumeVariables& elemVolVars,
+                             const SubControlVolumeFace& scvf) const
+    {
+        PrimaryVariables priVars(0.0);
 
-    void solDependentNeumann(PrimaryVariables &priVars,
-            const Element &element,
-            const FVElementGeometry &fvGeometry,
-            const Intersection &intersection,
-            const int scvIdx,
-            const int boundaryFaceIdx,
-            const ElementVolumeVariables &elemVolVars) const {
-
-        const GlobalPosition & globalPos = fvGeometry.subContVol[scvIdx].global;
+        const auto& globalPos = fvGeometry.scv(scvf.insideScvIdx()).dofPosition();
+        const auto& scvIdx = scvf.insideScvIdx();
         const Scalar massFluxInjectedPhase = massFluxInjectedPhase_;
 
         FluidState fluidState;
@@ -480,23 +316,11 @@ public:
         const Scalar pn = elemVolVars[scvIdx].pressure(nPhaseIdx);
         const Scalar pw = elemVolVars[scvIdx].pressure(wPhaseIdx);
 
-        const Scalar Tn = elemVolVars[scvIdx].temperature(nPhaseIdx);
-        const Scalar Tw = elemVolVars[scvIdx].temperature(wPhaseIdx);
-
         fluidState.setPressure(nPhaseIdx, pn);
         fluidState.setPressure(wPhaseIdx, pw);
 
-        if(numEnergyEquations == 3 ) { // only in this case the fluidstate hase several temperatures
-            fluidState.setTemperature(nPhaseIdx, Tn );
-            fluidState.setTemperature(wPhaseIdx, Tw );
-        }
-        else
         fluidState.setTemperature(TBoundary_ );
-
         ParameterCache dummyCache;
-        // This solves the system of equations defining x=x(p,T)
-//           FluidSystem::calculateEquilibriumMoleFractions(fluidState, dummyCache) ;
-
         fluidState.setMoleFraction(wPhaseIdx, nCompIdx, 0.0);
         fluidState.setMoleFraction(wPhaseIdx, wCompIdx, 1.0);
         // compute density of injection phase
@@ -514,38 +338,13 @@ public:
 
         const Scalar molarFlux = massFluxInjectedPhase / fluidState.averageMolarMass(wPhaseIdx);
 
-        // Default Neumann noFlow
-        priVars = 0.0;
-
         if (onLeftBoundary_(globalPos))
         {
-            if (enableKinetic) {
-                priVars[conti00EqIdx + numComponents*wPhaseIdx+wCompIdx] = - molarFlux * fluidState.moleFraction(wPhaseIdx, wCompIdx);
-                priVars[conti00EqIdx + numComponents*wPhaseIdx+nCompIdx] = - molarFlux * fluidState.moleFraction(wPhaseIdx, nCompIdx);
-                if (enableEnergy) {
-                    if (numEnergyEquations == 3)
-                    priVars[energyEq0Idx + wPhaseIdx] = - massFluxInjectedPhase * fluidState.enthalpy(wPhaseIdx);
-                    else if(numEnergyEquations == 2)
-                    priVars[energyEq0Idx] = - massFluxInjectedPhase * fluidState.enthalpy(wPhaseIdx);
-                    else if(numEnergyEquations == 1)
-                    priVars[energyEq0Idx] = - massFluxInjectedPhase * fluidState.enthalpy(wPhaseIdx);
-                    else DUNE_THROW(Dune::InvalidStateException, "Formulation: " << pressureFormulation << " is invalid.");
-                }
-            }
-            else {
-                priVars[conti00EqIdx + wCompIdx] = - molarFlux * fluidState.moleFraction(wPhaseIdx, wCompIdx);;
-                priVars[conti00EqIdx + nCompIdx] = - molarFlux * fluidState.moleFraction(wPhaseIdx, nCompIdx);;
-                if (enableEnergy) {
-                    if (numEnergyEquations == 3)
-                    priVars[energyEq0Idx + wPhaseIdx] = - massFluxInjectedPhase * fluidState.enthalpy(wPhaseIdx);
-                    else if(numEnergyEquations == 2)
-                    priVars[energyEq0Idx] = - massFluxInjectedPhase * fluidState.enthalpy(wPhaseIdx);
-                    else if(numEnergyEquations == 1)
-                    priVars[energyEq0Idx] = - massFluxInjectedPhase * fluidState.enthalpy(wPhaseIdx);
-                    else DUNE_THROW(Dune::InvalidStateException, "Formulation: " << pressureFormulation << " is invalid.");
-                }
-            }
+            priVars[conti00EqIdx + wCompIdx] = - molarFlux * fluidState.moleFraction(wPhaseIdx, wCompIdx);;
+            priVars[conti00EqIdx + nCompIdx] = - molarFlux * fluidState.moleFraction(wPhaseIdx, nCompIdx);;
+            priVars[energyEq0Idx] = - massFluxInjectedPhase * fluidState.enthalpy(wPhaseIdx);
         }
+        return priVars;
     }
 
     /*!
@@ -558,17 +357,16 @@ public:
      *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
      * \param globalPos The global position
      */
-    void initialAtPos(PrimaryVariables &values,
-                      const GlobalPosition &globalPos) const
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
     {
-        initial_(values, globalPos);
+       return initial_(globalPos);
     }
 
 private:
     // the internal method for the initial condition
-    void initial_(PrimaryVariables &priVars,
-            const GlobalPosition &globalPos) const
+    PrimaryVariables initial_(const GlobalPosition &globalPos) const
     {
+        PrimaryVariables priVars(0.0);
         const Scalar curPos = globalPos[0];
         const Scalar slope = (SwBoundary_-SwOneComponentSys_) / (this->spatialParams().lengthPM());
         Scalar S[numPhases];
@@ -597,27 +395,20 @@ private:
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
             fluidState.setSaturation(phaseIdx, S[phaseIdx]);
 
-            if(numEnergyEquations > 2) { // only in this case the fluidstate has more than one temperature
-                fluidState.setTemperature(phaseIdx, thisTemperature );
-            }
-            else
             fluidState.setTemperature(thisTemperature );
-        }
 
+        }
         //////////////////////////////////////
         // Set temperature
         //////////////////////////////////////
-        if(enableEnergy) {
-            for (int energyEqIdx=0; energyEqIdx< numEnergyEqs; ++energyEqIdx)
-            priVars[energyEq0Idx + energyEqIdx] = thisTemperature;
-        }
-
-        const MaterialLawParams &materialParams =
-        this->spatialParams().materialLawParamsAtPos(globalPos);
+        priVars[energyEq0Idx] = thisTemperature;
+        priVars[energyEqSolidIdx] = thisTemperature;
         Scalar capPress[numPhases];
 
         //obtain pc according to saturation
-        MaterialLaw::capillaryPressures(capPress, materialParams, fluidState);
+        const auto &materialParams =
+        this->spatialParams().materialLawParamsAtPos(globalPos);
+         MaterialLaw::capillaryPressures(capPress, materialParams, fluidState);
 
         Scalar p[numPhases];
 
@@ -649,55 +440,44 @@ private:
         fluidState.setMoleFraction(nPhaseIdx, wCompIdx, 1.0);
         fluidState.setMoleFraction(nPhaseIdx, nCompIdx, 0.0);
 
-        /* Difference between kinetic and MPNC:
-         * number of component related primVar and how they are calculated (mole fraction, fugacities, resp.)          */
-        if(enableKinetic) {
-            for(int phaseIdx=0; phaseIdx < numPhases; ++ phaseIdx) {
-                for(int compIdx=0; compIdx <numComponents; ++compIdx) {
-                    int offset = compIdx + phaseIdx * numComponents;
-                    priVars[conti00EqIdx + offset] = fluidState.moleFraction(phaseIdx,compIdx);
-                }
-            }
-        }
-        else { //enableKinetic
-            int refPhaseIdx;
+       int refPhaseIdx;
 
-            // on right boundary: reference is gas
-            refPhaseIdx = nPhaseIdx;
+        // on right boundary: reference is gas
+        refPhaseIdx = nPhaseIdx;
 
-            if(inPM_(globalPos)) {
-                refPhaseIdx = wPhaseIdx;
-            }
+        if(inPM_(globalPos)) {
+            refPhaseIdx = wPhaseIdx;
+        }
 
-            // obtain fugacities
-            using ComputeFromReferencePhase = ComputeFromReferencePhase<Scalar, FluidSystem>;
-            ParameterCache paramCache;
-            ComputeFromReferencePhase::solve(fluidState,
-                    paramCache,
-                    refPhaseIdx,
-                    /*setViscosity=*/false,
-                    /*setEnthalpy=*/false);
-
-            //////////////////////////////////////
-            // Set fugacities
-            //////////////////////////////////////
-            for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
-                priVars[conti00EqIdx + compIdx] = fluidState.fugacity(refPhaseIdx,compIdx);
-            }
-        } // end not enableKinetic
+        // obtain fugacities
+        using ComputeFromReferencePhase = ComputeFromReferencePhase<Scalar, FluidSystem>;
+        ParameterCache paramCache;
+        ComputeFromReferencePhase::solve(fluidState,
+                                        paramCache,
+                                        refPhaseIdx,
+                                        /*setViscosity=*/false,
+                                        /*setEnthalpy=*/false);
+
+        //////////////////////////////////////
+        // Set fugacities
+        //////////////////////////////////////
+        for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
+            priVars[conti00EqIdx + compIdx] = fluidState.fugacity(refPhaseIdx,compIdx);
+        }
+        return priVars;
     }
 
     /*!
      * \brief Give back whether the tested position (input) is a specific region (left) in the domain
      */
     bool onLeftBoundary_(const GlobalPosition & globalPos) const
-    {   return globalPos[0] < this->bBoxMin()[0] + eps_;}
+    {   return globalPos[0] < this->fvGridGeometry().bBoxMin()[0] + eps_;}
 
     /*!
      * \brief Give back whether the tested position (input) is a specific region (right) in the domain
      */
     bool onRightBoundary_(const GlobalPosition & globalPos) const
-    {   return globalPos[0] > this->bBoxMax()[0] - eps_;}
+    {   return globalPos[0] > this->fvGridGeometry().bBoxMax()[0] - eps_;}
 
     /*!
      * \brief Give back whether the tested position (input) is a specific region (right) in the domain
@@ -706,7 +486,7 @@ private:
     bool onRightBoundaryPorousMedium_(const GlobalPosition & globalPos) const
     {
         using std::abs;
-        return ( abs(globalPos[0] - (this->spatialParams().lengthPM())) < eps_ );
+        return (abs(globalPos[0] - (this->spatialParams().lengthPM())) < eps_ );
     }
 
     /*!
@@ -717,18 +497,6 @@ private:
         not this->spatialParams().inOutFlow(globalPos);
     }
 
-    /*!
-     * \brief Give back whether the tested position (input) is a specific region (down, (gravityDir)) in the domain
-     */
-    bool onLowerBoundary_(const GlobalPosition & globalPos) const
-    {   return globalPos[dimWorld-1] < this->bBoxMin()[dimWorld-1] + eps_;}
-
-    /*!
-     * \brief Give back whether the tested position (input) is a specific region (up, (gravityDir)) in the domain
-     */
-    bool onUpperBoundary_(const GlobalPosition & globalPos) const
-    {   return globalPos[dimWorld-1] > this->bBoxMax()[dimWorld-1] - eps_;}
-
 private:
     static constexpr Scalar eps_ = 1e-6;
     int nTemperature_;
@@ -749,19 +517,14 @@ private:
 
     Scalar massFluxInjectedPhase_;
     Scalar heatFluxFromRight_;
-    PhaseVelocityField volumeDarcyVelocity_;
-    PhaseBuffer volumeDarcyMagVelocity_;
-    ScalarBuffer boxSurface_;
     Scalar lengthPM_;
     Scalar coldTime_;
 
-public:
+    Scalar time_;
+    std::shared_ptr<GridVariables> gridVariables_;
 
-    Dune::ParameterTree getInputParameters() const
-    {   return inputParameters_;}
 };
 
-}
- //end namespace
+} //end namespace
 
 #endif
diff --git a/test/porousmediumflow/mpnc/implicit/combustionspatialparams.hh b/test/porousmediumflow/mpnc/implicit/combustionspatialparams.hh
index 5dcb62a0c9e1f282b81c98a6a9207de125fb4e93..5ce605f8bd889c7a8f3d7703c6b645fecf723c12 100644
--- a/test/porousmediumflow/mpnc/implicit/combustionspatialparams.hh
+++ b/test/porousmediumflow/mpnc/implicit/combustionspatialparams.hh
@@ -41,12 +41,6 @@ class CombustionSpatialParams;
 
 namespace Properties
 {
-// Some forward declarations
-NEW_PROP_TAG(EnableEnergy);
-NEW_PROP_TAG(FluidState);
-NEW_PROP_TAG(FluidSystem);
-NEW_PROP_TAG(NumEnergyEquations);
-NEW_PROP_TAG(NumPhases);
 
 // The spatial params TypeTag
 NEW_TYPE_TAG(CombustionSpatialParams);
@@ -60,12 +54,10 @@ SET_PROP(CombustionSpatialParams, MaterialLaw)
 private:
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
     enum {wPhaseIdx   = FluidSystem::wPhaseIdx};
-
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
 
 //    actually other people call this Leverett
     using EffectiveLaw = HeatPipeLaw<Scalar>;
-
     using TwoPMaterialLaw = EffToAbsLaw<EffectiveLaw>;
     public:
         using type = TwoPAdapter<wPhaseIdx, TwoPMaterialLaw>;
@@ -81,9 +73,17 @@ private:
 template<class TypeTag>
 class CombustionSpatialParams : public FVSpatialParams<TypeTag>
 {
+
     using ParentType = FVSpatialParams<TypeTag>;
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+    using GlobalPosition = Dune::FieldVector<Scalar, GridView::dimension>;
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
+    using MaterialLawParams = typename MaterialLaw::Params;
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
 
     enum {dim=GridView::dimension };
@@ -91,129 +91,78 @@ class CombustionSpatialParams : public FVSpatialParams<TypeTag>
     enum {wPhaseIdx = FluidSystem::wPhaseIdx};
     enum {nPhaseIdx = FluidSystem::nPhaseIdx};
     enum {sPhaseIdx = FluidSystem::sPhaseIdx};
-    enum {numEnergyEquations    = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
-    enum {numPhases = GET_PROP_VALUE(TypeTag, NumPhases)};
-    enum {enableEnergy          = GET_PROP_VALUE(TypeTag, EnableEnergy)};
-
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-    using DimVector = Dune::FieldVector<Scalar, dimWorld>;
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
 
 public:
-    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename MaterialLaw::Params;
+    using PermeabilityType = Scalar;
 
-    CombustionSpatialParams(const GridView &gv)
-        : ParentType(gv)
+    CombustionSpatialParams(const Problem &problem)
+        : ParentType(problem)
     {
+        // this is the parameter value from file part
+        porosity_ = getParam<Scalar>("SpatialParams.PorousMedium.porosity");
+        intrinsicPermeabilityOutFlow_ = getParam<Scalar>("SpatialParams.Outflow.permeabilityOutFlow");
+        porosityOutFlow_                = getParam<Scalar>("SpatialParams.Outflow.porosityOutFlow");;
+        solidThermalConductivityOutflow_ =getParam<Scalar>("SpatialParams.Outflow.soilThermalConductivityOutFlow");
+        solidDensity_   = getParam<Scalar>("SpatialParams.soil.density");
+        solidThermalConductivity_ = getParam<Scalar>("SpatialParams.soil.thermalConductivity");
+        solidHeatCapacity_   = getParam<Scalar>("SpatialParams.soil.heatCapacity");
+        interfacialTension_  = getParam<Scalar>("Constants.interfacialTension");
+
+        Swr_ = getParam<Scalar>("SpatialParams.soil.Swr");
+        Snr_ = getParam<Scalar>("SpatialParams.soil.Snr");
+
+        characteristicLength_ =getParam<Scalar>("SpatialParams.PorousMedium.meanPoreSize");
+
+        using std::pow;
+        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
+        materialParams_.setSwr(Swr_) ;
+        materialParams_.setSnr(Snr_) ;
+
+        using std::sqrt;
+        materialParams_.setP0(sqrt(porosity_/intrinsicPermeability_));
+        materialParams_.setGamma(interfacialTension_); // interfacial tension of water-air at 100°C
     }
 
     ~CombustionSpatialParams()
     {}
 
-    //! load parameters from input file and initialize parameter values
-        void setInputInitialize()
-        {
-                // BEWARE! First the input values have to be set, then the material parameters can be set
-
-                // this is the parameter value from file part
-                porosity_                       = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.PorousMedium.porosity);
-
-                intrinsicPermeabilityOutFlow_   = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.OutFlow.permeabilityOutFlow);
-                porosityOutFlow_                = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.OutFlow.porosityOutFlow);
-                solidThermalConductivityOutflow_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.OutFlow.soilThermalConductivityOutFlow);
-
-                solidDensity_                       = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.density);
-                solidThermalConductivity_           = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.thermalConductivity);
-                solidHeatCapacity_                      = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.heatCapacity);
-
-                interfacialTension_                 = GET_RUNTIME_PARAM(TypeTag, Scalar, Constants.interfacialTension);
-
-                Swr_            = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.Swr);
-                Snr_            = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.Snr);
-
-                characteristicLength_   = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.PorousMedium.meanPoreSize);
-                using std::pow;
-                intrinsicPermeability_  =  (pow(characteristicLength_,2.0)  * pow(porosity_,3.0)) / (150.0 * pow((1.0-porosity_),2.0)); // 1.69e-10 ; //
-
-                factorEnergyTransfer_         = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.PorousMedium.factorEnergyTransfer);
-                factorMassTransfer_           = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.PorousMedium.factorMassTransfer);
-
-                lengthPM_               = GET_RUNTIME_PARAM(TypeTag, Scalar,Grid.lengthPM);
 
-            // residual saturations
-            materialParams_.setSwr(Swr_) ;
-            materialParams_.setSnr(Snr_) ;
-
-            using std::sqrt;
-            materialParams_.setP0(sqrt(porosity_/intrinsicPermeability_));
-            materialParams_.setGamma(interfacialTension_); // interfacial tension of water-air at 100°C
-        }
-
-    /*! \brief Update the spatial parameters with the flow solution
-     *        after a timestep. */
-    void update(const SolutionVector & globalSolutionFn)
-    { }
-
-    /*! \brief Returns the intrinsic permeability
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub control volume.
-     * \param element The current finite element
-     * \param fvGeometry The current finite volume geometry of the element
-     * \param scvIdx The index sub-control volume */
-    const Scalar intrinsicPermeability(const Element & element,
-                                 const FVElementGeometry & fvGeometry,
-                                 const unsigned int scvIdx) const
+     PermeabilityType permeability(const Element& element,
+                                  const SubControlVolume& scv,
+                                  const ElementSolutionVector& elemSol) const
     {
-        const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
+        const auto& globalPos =  scv.dofPosition();
         if ( inOutFlow(globalPos) )
             return intrinsicPermeabilityOutFlow_ ;
         else
             return intrinsicPermeability_ ;
     }
 
-    /*! \brief Return the porosity \f$[-]\f$ of the soil
+    /*!
+     * \brief Define the porosity \f$[-]\f$ of the soil
      *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub control volume.
-     * \param element The finite element
-     * \param fvGeometry The finite volume geometry
-     * \param scvIdx The local index of the sub-control volume  */
-    const Scalar porosity(const Element & element,
-                    const FVElementGeometry & fvGeometry,
-                    const unsigned int scvIdx) const
+     * \param element     The finite element
+     * \param fvGeometry  The finite volume geometry
+     * \param scvIdx      The local index of the sub-control volume where
+     *                    the porosity needs to be defined
+     */
+    Scalar porosity(const Element &element,
+                    const SubControlVolume &scv,
+                    const ElementSolutionVector &elemSol) const
     {
-        const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
+        const auto& globalPos =  scv.dofPosition();
         if ( inOutFlow(globalPos) )
             return porosityOutFlow_ ;
         else
             return porosity_ ;
     }
 
-    /*!
-     * \brief Return a reference to the material parameters of the material law.
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub control volume.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub-control volume */
-    const MaterialLawParams & materialLawParams(const Element & element,
-                                                   const FVElementGeometry & fvGeometry,
-                                                   const unsigned int scvIdx) const
-    {
-        const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-        const MaterialLawParams & materialParams  = materialLawParamsAtPos(globalPos) ;
-        return materialParams ;
-    }
-
     /*!
      * \brief Return a reference to the material parameters of the material law.
      * \param globalPos The position in global coordinates. */
@@ -230,10 +179,15 @@ public:
      * \param fvGeometry  The finite volume geometry
      * \param scvIdx      The local index of the sub control volume */
     const Scalar characteristicLength(const Element & element,
-                                        const FVElementGeometry & fvGeometry,
-                                        const unsigned int scvIdx) const
-    {   const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-        return characteristicLengthAtPos(globalPos); }
+                                      const SubControlVolume &scv,
+                                      const ElementSolutionVector &elemSol) const
+
+    {
+        const auto& globalPos =  scv.center();
+        return characteristicLengthAtPos(globalPos);
+    }
+
+
     /*!\brief Return the characteristic length for the mass transfer.
      * \param globalPos The position in global coordinates.*/
     const Scalar characteristicLengthAtPos(const  GlobalPosition & globalPos) const
@@ -246,11 +200,15 @@ public:
      * \param element     The finite element
      * \param fvGeometry  The finite volume geometry
      * \param scvIdx      The local index of the sub control volume */
-    const Scalar factorEnergyTransfer(const Element & element,
-                                        const FVElementGeometry & fvGeometry,
-                                        const unsigned int scvIdx) const
-    {   const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-        return factorEnergyTransferAtPos(globalPos); }
+    const Scalar factorEnergyTransfer(const Element &element,
+                                      const SubControlVolume &scv,
+                                      const ElementSolutionVector &elemSol) const
+    {
+       const auto& globalPos =  scv.dofPosition();
+        return factorEnergyTransferAtPos(globalPos);
+    }
+
+
     /*!\brief Return the pre factor the the energy transfer
      * \param globalPos The position in global coordinates.*/
     const Scalar factorEnergyTransferAtPos(const  GlobalPosition & globalPos) const
@@ -266,11 +224,14 @@ public:
      * \param element     The finite element
      * \param fvGeometry  The finite volume geometry
      * \param scvIdx      The local index of the sub control volume */
-    const Scalar factorMassTransfer(const Element & element,
-                                        const FVElementGeometry & fvGeometry,
-                                        const unsigned int scvIdx) const
-    {   const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-        return factorMassTransferAtPos(globalPos); }
+    const Scalar factorMassTransfer(const Element &element,
+                                    const SubControlVolume &scv,
+                                    const ElementSolutionVector &elemSol) const
+    {
+       const auto& globalPos =  scv.dofPosition();
+       return factorMassTransferAtPos(globalPos);
+    }
+
     /*!\brief Return the pre factor the the mass transfer
      * \param globalPos The position in global coordinates.*/
     const Scalar factorMassTransferAtPos(const  GlobalPosition & globalPos) const
@@ -279,45 +240,53 @@ public:
     }
 
 
-    /*! \brief Returns the heat capacity \f$[J/m^3 K]\f$ of the rock matrix.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub-control volume where
-     *                    the heat capacity needs to be defined */
-    const Scalar solidHeatCapacity(const Element &element,
-                               const FVElementGeometry &fvGeometry,
-                               const unsigned int scvIdx) const
-    {  return solidHeatCapacity_ ;}  // specific heat capacity of solid  [J / (kg K)]
+    /*!
+     * \brief Returns the heat capacity \f$[J / (kg K)]\f$ of the rock matrix.
+     *
+     * This is only required for non-isothermal models.
+     *
+     * \param globalPos The global position
+     */
+    Scalar solidHeatCapacityAtPos(const GlobalPosition& globalPos) const
+    {
+        return solidHeatCapacity_ ;// specific heat capacity of solid  [J / (kg K)]
+    }
 
-    /*!\brief Returns the density \f$[kg/m^3]\f$ of the rock matrix.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub-control volume */
-    const Scalar solidDensity(const Element & element,
-                              const FVElementGeometry & fvGeometry,
-                              const unsigned int scvIdx) const
-    { return solidDensity_ ;} // density of solid [kg/m^3]
+    /*!
+     * \brief Returns the mass density \f$[kg / m^3]\f$ of the rock matrix.
+     *
+     * This is only required for non-isothermal models.
+     *
+     * \param globalPos The global position
+     */
+    Scalar solidDensityAtPos(const GlobalPosition& globalPos) const
+    {
+        return solidDensity_ ;// density of solid [kg/m^3]
+    }
 
-    /*!\brief Returns the thermal conductivity \f$[W/(m K)]\f$ of the rock matrix.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub-control volume */
-    const Scalar  solidThermalConductivity(const Element &element,
-                                    const FVElementGeometry &fvGeometry,
-                                    const unsigned int scvIdx)const
+    /*!
+     * \brief Returns the thermal conductivity \f$\mathrm{[W/(m K)]}\f$ of the porous material.
+     *
+     * This is only required for non-isothermal models.
+     *
+     * \param globalPos The global position
+     */
+    Scalar solidThermalConductivity(const Element &element,
+                                    const SubControlVolume &scv,
+                                    const ElementSolutionVector &elemSol) const
     {
-        const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
+        const auto& globalPos =  scv.dofPosition();
         if ( inOutFlow(globalPos) )
-            return solidThermalConductivityOutflow_ ;
+            return solidThermalConductivityOutflow_ ;// conductivity of solid  [W / (m K ) ]
         else
             return solidThermalConductivity_ ;
-    } // conductivity of solid  [W / (m K ) ]
+    }
 
     /*!
      * \brief Give back whether 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 globalPos[0] > (lengthPM_ - eps_) ;    }
 
     /*!
      * \brief Give back how long the porous medium domain is.
diff --git a/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh b/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh
index 9a1820efa651879686c2659e2bd075b8813ae3b2..de1fc1aced7ec6fb5f87bb2da490bbc5b9f5e830 100644
--- a/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh
+++ b/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh
@@ -37,9 +37,6 @@
 #ifndef DUMUX_EVAPORATION_ATMOSPHERE_PROBLEM_HH
 #define DUMUX_EVAPORATION_ATMOSPHERE_PROBLEM_HH
 
-// set this to one for looking at a different concept of mass transfer (see mpnclocalresidualmasskinetic)
-#define FUNKYMASSTRANSFER 0
-
 // this sets that the relation using pc_max is used.
 // i.e. - only parameters for awn, ans are given,
 //      - the fit for ans involves the maximum value for pc, where Sw, awn are zero.
@@ -48,19 +45,14 @@
 
 #include <dune/common/parametertreeparser.hh>
 
-#include <dumux/porousmediumflow/mpnc/implicit/modelkinetic.hh>
-#include <dumux/porousmediumflow/implicit/problem.hh>
-#include <dumux/porousmediumflow/mpnc/implicit/velomodelnewtoncontroller.hh>
+#include <dumux/discretization/box/properties.hh>
+#include <dumux/porousmediumflow/mpnc/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
 
 #include <dumux/material/fluidsystems/h2on2kinetic.hh>
 #include <dumux/io/gnuplotinterface.hh>
 #include "plotoverline2d.hh"
 
-#include <dumux/material/fluidstates/nonequilibrium.hh>
-//#include <dumux/material/fluidstates/nonequilibriumenergy.hh>
-//#include <dumux/material/fluidstates/nonequilibriummass.hh>
-//#include <dumux/material/fluidstates/compositional.hh>
-
 #include "evaporationatmospherespatialparams.hh"
 
 
@@ -73,7 +65,8 @@ class EvaporationAtmosphereProblem;
 namespace Properties
 {
 NEW_TYPE_TAG(EvaporationAtmosphereProblem,
-             INHERITS_FROM(BoxMPNCKinetic, EvaporationAtmosphereSpatialParams));
+             INHERITS_FROM(MPNCNonequil, EvaporationAtmosphereSpatialParams));
+NEW_TYPE_TAG(EvaporationAtmosphereBoxProblem, INHERITS_FROM(BoxModel, EvaporationAtmosphereProblem));
 
 // Set the grid type
 SET_TYPE_PROP(EvaporationAtmosphereProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >);
@@ -81,20 +74,12 @@ SET_TYPE_PROP(EvaporationAtmosphereProblem, Grid, Dune::YaspGrid<2, Dune::Tensor
 // Set the problem property
 SET_TYPE_PROP(EvaporationAtmosphereProblem,
               Problem,
-              EvaporationAtmosphereProblem<TTAG(EvaporationAtmosphereProblem)>);
+              EvaporationAtmosphereProblem<TypeTag>);
 
 // Set fluid configuration
-SET_PROP(EvaporationAtmosphereProblem, FluidSystem)
-{
-private: using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-public:  using type = FluidSystems::H2ON2Kinetic<Scalar, /*useComplexRelations=*/false>;
-};
-
-// Set the newton controller
 SET_TYPE_PROP(EvaporationAtmosphereProblem,
-              NewtonController,
-              VeloModelNewtonController<TypeTag>);
-
+              FluidSystem,
+              FluidSystems::H2ON2Kinetic<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/false>);
 
 //! Set the default pressure formulation: either pw first or pn first
 SET_INT_PROP(EvaporationAtmosphereProblem,
@@ -103,55 +88,6 @@ SET_INT_PROP(EvaporationAtmosphereProblem,
 
 // Set the type used for scalar values
 SET_TYPE_PROP(EvaporationAtmosphereProblem, Scalar, double);
-
-
-// Specify whether diffusion is enabled
-SET_BOOL_PROP(EvaporationAtmosphereProblem, EnableDiffusion, true);
-
-// do not use a chopped newton method in the beginning
-SET_BOOL_PROP(EvaporationAtmosphereProblem, NewtonEnableChop, false);
-
-// Enable the re-use of the jacobian matrix whenever possible?
-SET_BOOL_PROP(EvaporationAtmosphereProblem, ImplicitEnableJacobianRecycling, true);
-
-//#################
-// Which Code to compile
-// Specify whether there is any energy equation
-SET_BOOL_PROP(EvaporationAtmosphereProblem, EnableEnergy, true );
-// Specify whether the kinetic energy module is used
-SET_INT_PROP(EvaporationAtmosphereProblem, NumEnergyEquations, 3);
-// Specify whether the kinetic mass module is use
-SET_BOOL_PROP(EvaporationAtmosphereProblem, EnableKinetic, true);
-//#################
-
-/*!
- * \brief The fluid state which is used by the volume variables to
- *        store the thermodynamic state. This has to be chosen
- *        appropriately for the model ((non-)isothermal, equilibrium, ...).
- */
-SET_PROP(EvaporationAtmosphereProblem, FluidState){
-    private:    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    private:    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-//    public: using type = NonEquilibriumEnergyFluidState<Scalar, FluidSystem>;
-//    public: using type = NonEquilibriumMassFluidState<Scalar, FluidSystem>;
-    public: using type = NonEquilibriumFluidState<Scalar, FluidSystem>;
-//    public: using type = CompositionalFluidState<Scalar, FluidSystem>;
-};
-
-SET_BOOL_PROP(EvaporationAtmosphereProblem, UseMaxwellDiffusion, false);
-
-// Output variables
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VtkAddVelocities, true);
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VtkAddReynolds, true);
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VtkAddPrandtl, true);
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VtkAddNusselt, true);
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VtkAddBoundaryTypes, true);
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VtkAddInterfacialArea, true);
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VtkAddTemperatures, true);
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VtkAddxEquil, true);
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VtkAddDeltaP, true);
-
-SET_BOOL_PROP(EvaporationAtmosphereProblem, VelocityAveragingInModel, true);
 }
 
 /*!
@@ -161,24 +97,35 @@ SET_BOOL_PROP(EvaporationAtmosphereProblem, VelocityAveragingInModel, true);
  *        a porous medium sub-domain into a gas filled "quasi-freeflow" sub-domain.
  */
 template <class TypeTag>
-class EvaporationAtmosphereProblem
-    : public ImplicitPorousMediaProblem<TypeTag>
+class EvaporationAtmosphereProblem: public PorousMediumFlowProblem<TypeTag>
 {
-    using ParentType = ImplicitPorousMediaProblem<TypeTag>;
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
     using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
     using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using Sources = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
+    using ParameterCache = typename FluidSystem::ParameterCache;
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
     /*!
      * \brief The fluid state which is used by the volume variables to
      *        store the thermodynamic state. This should be chosen
      *        appropriately for the model ((non-)isothermal, equilibrium, ...).
      *        This can be done in the problem.
      */
-    using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
-    using ParameterCache = typename FluidSystem::ParameterCache;
     enum { dim = GridView::dimension}; // Grid and world dimension
     enum { dimWorld = GridView::dimensionworld};
     enum { numPhases       = GET_PROP_VALUE(TypeTag, NumPhases)};
@@ -187,17 +134,17 @@ class EvaporationAtmosphereProblem
     enum { p0Idx = Indices::p0Idx};
     enum { conti00EqIdx    = Indices::conti0EqIdx };
     enum { energyEq0Idx    = Indices::energyEqIdx};
-    enum { numEnergyEqs    = Indices::numPrimaryEnergyVars};
     enum { wPhaseIdx       = FluidSystem::wPhaseIdx};
     enum { nPhaseIdx       = FluidSystem::nPhaseIdx};
     enum { sPhaseIdx       = FluidSystem::sPhaseIdx};
     enum { wCompIdx        = FluidSystem::H2OIdx};
     enum { nCompIdx        = FluidSystem::N2Idx};
-    enum {  enableKinetic       = GET_PROP_VALUE(TypeTag, EnableKinetic)};
-    enum { enableEnergy        = GET_PROP_VALUE(TypeTag, EnableEnergy)};
-    enum { numEnergyEquations = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
-    enum { velocityOutput             = GET_PROP_VALUE(TypeTag, VtkAddVelocities)};
-    enum { velocityAveragingInModel   = GET_PROP_VALUE(TypeTag, VelocityAveragingInModel)};
+    enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid)};
+    enum { numEnergyEqSolid = GET_PROP_VALUE(TypeTag, NumEnergyEqSolid)};
+    enum { numEq = GET_PROP_VALUE(TypeTag, NumEq)};
+
+    static constexpr bool enableChemicalNonEquilibrium = GET_PROP_VALUE(TypeTag, EnableChemicalNonEquilibrium);
+    static constexpr bool enableThermalNonEquilibrium = GET_PROP_VALUE(TypeTag, EnableChemicalNonEquilibrium);
 
     // formulations
     enum {
@@ -206,21 +153,7 @@ class EvaporationAtmosphereProblem
         leastWettingFirst   = MpNcPressureFormulation::leastWettingFirst
     };
 
-    using Element = typename GridView::template Codim<0>::Entity;
-    using Vertex = typename GridView::template Codim<dim>::Entity;
-    using Intersection = typename GridView::Intersection;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
-    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using TimeManager = typename GET_PROP_TYPE(TypeTag, TimeManager);
-
-    using GlobalPosition = Dune::FieldVector<typename GridView::Grid::ctype, dimWorld>;
-
-    using ScalarBuffer = std::vector<Dune::FieldVector<Scalar, 1>>;
-    using PhaseBuffer = std::array<ScalarBuffer, numPhases>;
-    using DimVector = Dune::FieldVector<Scalar, dim>;
-    using VelocityField = Dune::BlockVector<DimVector>;
-    using PhaseVelocityField = std::array<VelocityField, numPhases>;
+   using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
 
 public:
     /*!
@@ -229,134 +162,33 @@ public:
      * \param timeManager The time manager
      * \param gridView The grid view
      */
-    EvaporationAtmosphereProblem(TimeManager &timeManager,
-            const GridView &gridView)
-        : ParentType(timeManager, gridView), gnuplot_(false)
+    EvaporationAtmosphereProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+        : ParentType(fvGridGeometry)
     {
-        this->timeManager().startNextEpisode(24.* 3600.);
-    }
+        percentOfEquil_         = getParam<Scalar>("BoundaryConditions.percentOfEquil");
+        nTemperature_           = getParam<Scalar>("FluidSystem.nTemperature");
+        nPressure_              = getParam<Scalar>("FluidSystem.nPressure");
+        outputName_             = getParam<std::string>("Problem.Name");
+        TInitial_               = getParam<Scalar>("InitialConditions.TInitial");
+        SwPMInitial_            = getParam<Scalar>("InitialConditions.SwPMInitial");
+        SwFFInitial_            = getParam<Scalar>("InitialConditions.SwFFInitial");
+        pnInitial_              = getParam<Scalar>("InitialConditions.pnInitial");
+        pnInjection_            = getParam<Scalar>("InitialConditions.pnInjection");
+        TInject_                = getParam<Scalar>("BoundaryConditions.TInject");
+        massFluxInjectedPhase_  = getParam<Scalar>("BoundaryConditions.massFluxInjectedPhase");
 
-    void episodeEnd()
-    {
-        // each day is one episode, result file at the end of each day: comparison
-        this->timeManager().startNextEpisode(24.* 3600.);
-    }
-
-    void init()
-    {
-            percentOfEquil_         = GET_RUNTIME_PARAM(TypeTag, Scalar,BoundaryConditions.percentOfEquil);
-            nTemperature_           = GET_RUNTIME_PARAM(TypeTag, int, FluidSystem.nTemperature);
-            nPressure_              = GET_RUNTIME_PARAM(TypeTag, int, FluidSystem.nPressure);
-            outputName_             = GET_RUNTIME_PARAM(TypeTag, std::string, Constants.outputName);
-            nRestart_               = GET_RUNTIME_PARAM(TypeTag, int, Constants.nRestart);
-            TInitial_               = GET_RUNTIME_PARAM(TypeTag, Scalar, InitialConditions.TInitial);
-            SwPMInitial_            = GET_RUNTIME_PARAM(TypeTag, Scalar, InitialConditions.SwPMInitial);
-            SwFFInitial_            = GET_RUNTIME_PARAM(TypeTag, Scalar, InitialConditions.SwFFInitial);
-            pnInitial_              = GET_RUNTIME_PARAM(TypeTag, Scalar,InitialConditions.pnInitial);
-            pnInjection_            = GET_RUNTIME_PARAM(TypeTag, Scalar,InitialConditions.pnInjection);
-            TInject_                = GET_RUNTIME_PARAM(TypeTag, Scalar,BoundaryConditions.TInject);
-            massFluxInjectedPhase_  = GET_RUNTIME_PARAM(TypeTag, Scalar,BoundaryConditions.massFluxInjectedPhase);
-
-        this->spatialParams().setInputInitialize();
-
-        initFluidSystem_();
-
-        ParentType::init();
-        this->model().initVelocityStuff();
-    }
-
-    void initFluidSystem_()
-    {
         // initialize the tables of the fluid system
         FluidSystem::init(TInitial_ - 15.0, 453.15, nTemperature_, // T_min, T_max, n_T
                           0.75*pnInitial_, 2.25*pnInitial_, nPressure_); // p_min, p_max, n_p
     }
 
-    /*!
-     * \brief User defined output after the time integration
-     *
-     * Will be called diretly after the time integration.
-     */
-    void postTimeStep()
-    {
-        // write two plot Over Lines to text files
-        // each output gets it's writer object in order to allow for different header files
-        PlotOverLine2D<TypeTag> writerInterface;
-        PlotOverLine2D<TypeTag> writerDepth;
-
-        // writer points: on the pm--ff Interface to file
-        GlobalPosition pointInterfaceOne ;
-        pointInterfaceOne[0] = this->bBoxMin()[0] ;
-        pointInterfaceOne[1] = (this->bBoxMax()[1]) /2 ;
-
-        GlobalPosition pointInterfaceTwo ;
-        pointInterfaceTwo[0] = this->bBoxMax()[0] ;
-        pointInterfaceTwo[1] = (this->bBoxMax()[1]) /2 ;
-
-        writerInterface.write(*this,
-                              pointInterfaceOne,
-                              pointInterfaceTwo,
-                              "plotOverLineInterface");
-
-        // writer points: cut through the domain
-        GlobalPosition pointDepthOne ;
-        pointDepthOne[0] = (this->bBoxMax()[0])/2 ;
-        pointDepthOne[1] = this->bBoxMin()[1] ;
-
-        GlobalPosition pointDepthTwo ;
-        pointDepthTwo[0] = (this->bBoxMax()[0])/2 ;
-        pointDepthTwo[1] = (this->bBoxMax()[1])/2 ;
-
-        writerDepth.write(*this,
-                          pointDepthOne,
-                          pointDepthTwo,
-                          false, /* do not append data*/
-                          "plotOverLineIntoDepth");
-
-        // Calculate storage terms of the individual phases
-        for (int phaseIdx = 0; phaseIdx < numEnergyEqs; ++phaseIdx) {
-            PrimaryVariables phaseStorage;
-            /* How much conserved quantity is in the system (in the unit of the balance equation)
-             * Summed up storage term for the whole system.
-             */
-            this->model().globalPhaseStorage(phaseStorage, phaseIdx);
-
-            if (this->gridView().comm().rank() == 0) {
-                std::cout
-                    <<"Storage in  "
-                    << FluidSystem::phaseName(phaseIdx)
-                    << "Phase: ["
-                    << phaseStorage
-                    << "]"
-                    << "\n";
-            }
-        }
+    void setGridVariables(std::shared_ptr<GridVariables> gridVariables)
+    { gridVariables_ = gridVariables; }
 
-        // Calculate total storage terms
-        PrimaryVariables storage;
-        this->model().globalStorage(storage);
+     const GridVariables& gridVariables() const
+    { return *gridVariables_; }
 
-        // Write mass balance information for rank 0
-        if (this->gridView().comm().rank() == 0) {
-            std::cout
-                <<"Storage total: [" << storage << "]"
-                << "\n";
-        }
-
-        // use gnuplot for plotting the line data
-        gnuplot_.resetPlot();
-        gnuplot_.setXlabel("xN2w [-]");
-        gnuplot_.setYlabel("y [m]");
-        std::ostringstream stream;
-        stream << this->timeManager().time();
-        gnuplot_.setOption("set label 'at time " + stream.str() + "' at screen 0.15,0.90 left");
-        gnuplot_.setDatafileSeparator(' ');
-        std::string fileName = outputName_ + "plotOverLineIntoDepth.dat";
-        gnuplot_.addFileToPlot(fileName, "u 11:4 w l");
-        gnuplot_.plot("plot");
-    }
-
-    /*!
+   /*!
      * \name Problem parameters
      */
     // \{
@@ -369,31 +201,6 @@ public:
     const std::string name() const
     { return outputName_ ; }
 
-    /*!
-     * \brief Returns the temperature \f$ K \f$
-     */
-    Scalar boxTemperature(const Element &element,
-                          const FVElementGeometry &fvGeometry,
-                          const unsigned int scvIdx) const
-    { return TInitial_; }
-
-    /*!
-     * \brief Write a restart file?
-     *        yes of course:
-     * - every nRestart_'th steps
-     */
-    bool shouldWriteRestartFile() const
-    {
-        return this->timeManager().timeStepIndex() > 0 &&
-            (this->timeManager().timeStepIndex() % nRestart_  == 0);
-    }
-
-    /*!
-     * \brief Write a output file?
-     */
-    bool shouldWriteOutput() const
-    { return true; }
-
     // \}
 
     /*!
@@ -408,32 +215,18 @@ public:
      * \param bTypes The boundarytypes types for the conservation equations
      * \param globalPos The global position
      */
-    void boundaryTypesAtPos(BoundaryTypes &bTypes,
-                            const GlobalPosition &globalPos) const
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
     {
+        BoundaryTypes bcTypes;
         // Default: Neumann
-        bTypes.setAllNeumann();
-
-        // To the right: let out what wants out
-        if(onRightBoundary_(globalPos) && this->spatialParams().inFF_(globalPos) )
-        {
-            bTypes.setAllOutflow();
-        }
+        bcTypes.setAllNeumann();
 
         // Put a dirichlet somewhere: we need this for convergence
-        if(onUpperBoundary_(globalPos) )
+        if(onRightBoundary_(globalPos) && globalPos[1] > this->spatialParams().heightPM() + eps_)
         {
-            bTypes.setAllDirichlet();
-        }
-
-        // In the porous part the *temperature* is fixed on the boundary.
-        // Mass however, is not allowed to pass (default neumann=0)
-        if (this->spatialParams().inPM_(globalPos)
-            && (onLeftBoundary_(globalPos) || onRightBoundary_(globalPos) || onLowerBoundary_(globalPos)))
-        {
-            for (int energyEqIdx=0; energyEqIdx< numEnergyEqs; ++energyEqIdx)
-                bTypes.setDirichlet(energyEq0Idx+energyEqIdx);
+            bcTypes.setAllDirichlet();
         }
+        return bcTypes;
     }
 
     /*!
@@ -445,10 +238,9 @@ public:
      * \param globalPos The global position
      *
      */
-    void dirichletAtPos(PrimaryVariables &priVars,
-                        const GlobalPosition &globalPos) const
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
     {
-        initial_(priVars, globalPos);
+       return initial_(globalPos);
     }
 
     /*!
@@ -468,41 +260,31 @@ public:
      * The \a values store the mass flux of each phase normal to the boundary.
      * Negative values indicate an inflow.
      */
-    void neumann(PrimaryVariables & priVars,
-                 const Element & element,
-                 const FVElementGeometry & fvGeometry,
-                 const Intersection & intersection,
-                 const unsigned int scvIdx,
-                 const unsigned int boundaryFaceIdx) const
+    PrimaryVariables neumann(const Element &element,
+                             const FVElementGeometry& fvGeometry,
+                             const ElementVolumeVariables& elemVolVars,
+                             const SubControlVolumeFace& scvf) const
     {
-        // this is the coordinate of the vertex
-        // distinction via vertex works better in this case, because this is also how the
-        // permeabilities & co are defined. This way there is only injection in the free flow and
-        // not also in the last porous medium node.
-        const GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global;
-
-        priVars = 0.0;
-
+        PrimaryVariables priVars(0.0);
+        const auto& globalPos = fvGeometry.scv(scvf.insideScvIdx()).dofPosition();
         const Scalar massFluxInjectedPhase = massFluxInjectedPhase_ ;
 
         ParameterCache dummyCache;
         FluidState fluidState;
 
-        for(int phaseIdx=0; phaseIdx<numPhases; phaseIdx++)
+        for (int phaseIdx=0; phaseIdx<numPhases; phaseIdx++)
+        {
             fluidState.setPressure(phaseIdx, pnInitial_);
-
-        if(numEnergyEquations){
-            fluidState.setTemperature(nPhaseIdx, TInject_ );
-            fluidState.setTemperature(wPhaseIdx, TInitial_ ); // this value is a good one, TInject does not work
         }
-        else
-            fluidState.setTemperature(TInject_ );
+
+        fluidState.setTemperature(nPhaseIdx, TInject_ );
+        fluidState.setTemperature(wPhaseIdx, TInitial_ ); // this value is a good one, TInject does not work
 
         // This solves the system of equations defining x=x(p,T)
         FluidSystem::calculateEquilibriumMoleFractions(fluidState, dummyCache) ;
 
         // Now let's make the air phase less than fully saturated with water
-        fluidState.setMoleFraction(nPhaseIdx, wCompIdx, fluidState.moleFraction(nPhaseIdx, wCompIdx) * percentOfEquil_ ) ;
+        fluidState.setMoleFraction(nPhaseIdx, wCompIdx, fluidState.moleFraction(nPhaseIdx, wCompIdx)*percentOfEquil_ ) ;
         fluidState.setMoleFraction(nPhaseIdx, nCompIdx, 1.-fluidState.moleFraction(nPhaseIdx, wCompIdx) ) ;
 
         // compute density of injection phase
@@ -511,19 +293,12 @@ public:
                                                      nPhaseIdx);
         fluidState.setDensity(nPhaseIdx, density);
 
-        if(numEnergyEquations){
-            for(int phaseIdx=0; phaseIdx<numPhases; phaseIdx++){
+        for(int phaseIdx=0; phaseIdx<numPhases; phaseIdx++)
+        {
                 const Scalar h = FluidSystem::enthalpy(fluidState,
                                                        dummyCache,
                                                        phaseIdx);
                 fluidState.setEnthalpy(phaseIdx, h);
-            }
-        }
-        else{
-            const Scalar h = FluidSystem::enthalpy(fluidState,
-                                                   dummyCache,
-                                                   nPhaseIdx);
-            fluidState.setEnthalpy(nPhaseIdx, h);
         }
 
         const Scalar molarFlux = massFluxInjectedPhase / fluidState.averageMolarMass(nPhaseIdx);
@@ -536,19 +311,12 @@ public:
             priVars[conti00EqIdx + nPhaseIdx * numComponents + nCompIdx]
              = -molarFlux * fluidState.moleFraction(nPhaseIdx, nCompIdx);
             // energy equations are specified mass specifically
-            if(numEnergyEquations){
-                priVars[energyEq0Idx + nPhaseIdx] = - massFluxInjectedPhase
-                                                        * fluidState.enthalpy(nPhaseIdx) ;
-            }
-            else if(enableEnergy)
-                priVars[energyEq0Idx] = - massFluxInjectedPhase
-                                         * fluidState.enthalpy(nPhaseIdx) ;
+            priVars[energyEq0Idx + nPhaseIdx] = - massFluxInjectedPhase
+                                                    * fluidState.enthalpy(nPhaseIdx) ;
         }
+        return priVars;
     }
 
-    // \}
-
-
     /*!
      * \name Volume terms
      */
@@ -561,10 +329,9 @@ public:
      *               \f$ [ \textnormal{unit of primary variables} ] \f$
      * \param globalPos The global position
      */
-    void initialAtPos(PrimaryVariables &priVars,
-                      const GlobalPosition &globalPos) const
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
     {
-        initial_(priVars, globalPos);
+        return initial_(globalPos);
     }
 
     /*!
@@ -579,22 +346,21 @@ public:
      *
      *      Positive values mean that mass is created, negative ones mean that it vanishes.
      */
-    void source(PrimaryVariables & priVars,
-                const Element & element,
-                const FVElementGeometry & fvGeometry,
-                const unsigned int scvIdx) const
+    PrimaryVariables source(const Element &element,
+                            const FVElementGeometry& fvGeometry,
+                            const ElementVolumeVariables& elemVolVars,
+                            const SubControlVolume &scv) const
     {
-        priVars = Scalar(0.0);
-    }
-
-    // \}
+        PrimaryVariables priVars(0.0);
+        return priVars;
 
+    }
 
 private:
     // the internal method for the initial condition
-    void initial_(PrimaryVariables &priVars,
-                  const GlobalPosition &globalPos) const
+    PrimaryVariables initial_(const GlobalPosition &globalPos) const
     {
+        PrimaryVariables priVars(0.0);
         const Scalar T = TInitial_;
         Scalar S[numPhases];
 
@@ -617,17 +383,13 @@ private:
         FluidState equilibriumFluidState;
 
         //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) {
+        for (int phaseIdx = 0; phaseIdx < numPhases ; ++phaseIdx)
+        {
             equilibriumFluidState.setSaturation(phaseIdx, S[phaseIdx]);
-
-            if(numEnergyEquations){
-                equilibriumFluidState.setTemperature(phaseIdx, TInitial_ );
-            }
-            else
-                equilibriumFluidState.setTemperature(TInject_ );
+            equilibriumFluidState.setTemperature(phaseIdx, TInitial_ );
         }
 
-        const MaterialLawParams &materialParams =
+        const auto &materialParams =
             this->spatialParams().materialLawParamsAtPos(globalPos);
         Scalar capPress[numPhases];
 
@@ -660,9 +422,7 @@ private:
         }
         else DUNE_THROW(Dune::InvalidStateException, "Formulation: " << pressureFormulation << " is invalid.");
 
-        // temperature
-        if (enableEnergy || numEnergyEquations)
-            for (int energyEqIdx=0; energyEqIdx< numEnergyEqs; ++energyEqIdx)
+        for (int energyEqIdx=0; energyEqIdx< numEnergyEqFluid+numEnergyEqSolid; ++energyEqIdx)
                 priVars[energyEq0Idx + energyEqIdx] = T;
 
         for (int phaseIdx=0; phaseIdx<numPhases; phaseIdx++)
@@ -675,12 +435,12 @@ private:
         FluidState dryFluidState(equilibriumFluidState);
         // Now let's make the air phase less than fully saturated with vapor
         dryFluidState.setMoleFraction(nPhaseIdx, wCompIdx, dryFluidState.moleFraction(nPhaseIdx, wCompIdx) * percentOfEquil_ ) ;
-        dryFluidState.setMoleFraction(nPhaseIdx, nCompIdx, 1.-dryFluidState.moleFraction(nPhaseIdx, wCompIdx) ) ;
+        dryFluidState.setMoleFraction(nPhaseIdx, nCompIdx, 1.0-dryFluidState.moleFraction(nPhaseIdx, wCompIdx) ) ;
 
         /* Difference between kinetic and MPNC:
          * number of component related primVar and how they are calculated (mole fraction, fugacities, resp.)
          */
-        if(enableKinetic){
+        if(enableChemicalNonEquilibrium){
             for(int phaseIdx=0; phaseIdx < numPhases; ++ phaseIdx)
             {
                 for(int compIdx=0; compIdx <numComponents; ++compIdx){
@@ -697,7 +457,8 @@ private:
                 }
             }
         }
-        else{ //enableKinetic
+        else
+        {
             // in the case I am using the "standard" mpnc model, the variables to be set are the "fugacities"
             const Scalar fugH2O = FluidSystem::H2O::vaporPressure(T) ;
             const Scalar fugN2 = p[nPhaseIdx] - fugH2O ;
@@ -718,31 +479,26 @@ private:
             for (int i = 0; i < numComponents; ++i)
                 priVars[conti00EqIdx + i] = xl[i]*beta[i]; // this should be really fug0Idx but the compiler only knows one or the other
         }
+        return priVars;
     }
 
     /*!
      * \brief Give back whether the tested position (input) is a specific region (left) in the domain
      */
     bool onLeftBoundary_(const GlobalPosition & globalPos) const
-    {       return globalPos[0] < this->bBoxMin()[0] + eps_;   }
+    {  return globalPos[0] < this->fvGridGeometry().bBoxMin()[0] + eps_;   }
 
     /*!
      * \brief Give back whether the tested position (input) is a specific region (right) in the domain
      */
     bool onRightBoundary_(const GlobalPosition & globalPos) const
-    {        return globalPos[0] > this->bBoxMax()[0] - eps_;    }
+    { return globalPos[0] > this->fvGridGeometry().bBoxMax()[0] - eps_;    }
 
     /*!
      * \brief Give back whether the tested position (input) is a specific region (down, (gravityDir)) in the domain
      */
     bool onLowerBoundary_(const GlobalPosition & globalPos) const
-    {        return globalPos[dimWorld-1] < this->bBoxMin()[dimWorld-1] + eps_;    }
-
-    /*!
-     * \brief Give back whether the tested position (input) is a specific region (up, (gravityDir)) in the domain
-     */
-    bool onUpperBoundary_(const GlobalPosition & globalPos) const
-    {        return globalPos[dimWorld-1] > this->bBoxMax()[dimWorld-1] - eps_;    }
+    { return globalPos[dimWorld-1] < this->fvGridGeometry().bBoxMin()[dimWorld-1] + eps_;    }
 
 private:
     static constexpr Scalar eps_ = 1e-6;
@@ -750,7 +506,6 @@ private:
     int nTemperature_;
     int nPressure_;
     std::string outputName_;
-    int nRestart_ ;
     Scalar heatIntoSolid_;
     Scalar TInitial_ ;
     Scalar SwPMInitial_ ;
@@ -760,15 +515,12 @@ private:
     Scalar pnInjection_;
     Dune::ParameterTree inputParameters_;
     Scalar x_[numPhases][numComponents] ;
-    GnuplotInterface<Scalar> gnuplot_;
 
     Scalar TInject_;
 
     Scalar massFluxInjectedPhase_ ;
 
-    PhaseVelocityField  volumeDarcyVelocity_;
-    PhaseBuffer         volumeDarcyMagVelocity_ ;
-    ScalarBuffer        boxSurface_;
+    std::shared_ptr<GridVariables> gridVariables_;
 
 public:
 
diff --git a/test/porousmediumflow/mpnc/implicit/evaporationatmospherespatialparams.hh b/test/porousmediumflow/mpnc/implicit/evaporationatmospherespatialparams.hh
index 1e7a5784b983f6f6fe5aaf21205d79ed71dd2d7d..a74ca409f9b98166fffc5a60bacb6b77f2afdf09 100644
--- a/test/porousmediumflow/mpnc/implicit/evaporationatmospherespatialparams.hh
+++ b/test/porousmediumflow/mpnc/implicit/evaporationatmospherespatialparams.hh
@@ -43,8 +43,6 @@
 
 #include <dune/common/parametertreeparser.hh>
 
-#include <dumux/porousmediumflow/mpnc/implicit/modelkinetic.hh>
-
 namespace Dumux
 {
 
@@ -64,7 +62,6 @@ SET_TYPE_PROP(EvaporationAtmosphereSpatialParams, SpatialParams, EvaporationAtmo
 SET_PROP(EvaporationAtmosphereSpatialParams, MaterialLaw)
 {
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-
     enum {wPhaseIdx   = FluidSystem::wPhaseIdx};
 
 private:
@@ -92,16 +89,15 @@ private:
     #endif
 
     #if RegVGofT
-        using EffectiveLaw = RegularizedVanGenuchtenOfTemperature<Scalar>;
+        using EffectiveLaw =  RegularizedVanGenuchtenOfTemperature<Scalar>;
     #endif
 
     #if VG
-        using EffectiveLaw = VanGenuchten<Scalar>;
+        using EffectiveLaw =  VanGenuchten<Scalar> ;
     #endif
 
     using TwoPMaterialLaw = EffToAbsLaw<EffectiveLaw>;
     public:
-//        using type = TwoPOfTAdapter<wPhaseIdx, TwoPMaterialLaw>; // adapter for incorporating temperature effects on pc-S
         using type = TwoPAdapter<wPhaseIdx, TwoPMaterialLaw>;
 };
 
@@ -111,9 +107,9 @@ private:
 SET_PROP(EvaporationAtmosphereSpatialParams, AwnSurface)
 {
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
+    using MaterialLawParams = typename MaterialLaw::Params;
     using EffectiveIALaw = AwnSurfacePcMaxFct<Scalar>;
-    //    using EffectiveIALaw = AwnSurfacePolynomial2ndOrder<Scalar>;
 public:
     using type = EffToAbsLawIA<EffectiveIALaw, MaterialLawParams>;
 };
@@ -123,7 +119,8 @@ public:
 SET_PROP(EvaporationAtmosphereSpatialParams, AwsSurface)
 {
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
+    using MaterialLawParams = typename MaterialLaw::Params;
     using EffectiveIALaw = AwnSurfacePolynomial2ndOrder<Scalar>;
 public:
     using type = EffToAbsLawIA<EffectiveIALaw, MaterialLawParams>;
@@ -133,7 +130,8 @@ public:
 SET_PROP(EvaporationAtmosphereSpatialParams, AnsSurface)
 {
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
+    using MaterialLawParams = typename MaterialLaw::Params;
     using EffectiveIALaw = AwnSurfaceExpSwPcTo3<Scalar>;
 public:
     using type = EffToAbsLawIA<EffectiveIALaw, MaterialLawParams>;
@@ -148,8 +146,15 @@ template<class TypeTag>
 class EvaporationAtmosphereSpatialParams : public FVSpatialParams<TypeTag>
 {
     using ParentType = FVSpatialParams<TypeTag>;
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+    using GlobalPosition = Dune::FieldVector<Scalar, GridView::dimension>;
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
+    using MaterialLawParams = typename MaterialLaw::Params;
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
 
     enum {dim=GridView::dimension };
@@ -157,168 +162,128 @@ class EvaporationAtmosphereSpatialParams : public FVSpatialParams<TypeTag>
     enum {wPhaseIdx = FluidSystem::wPhaseIdx};
     enum {nPhaseIdx = FluidSystem::nPhaseIdx};
     enum {sPhaseIdx = FluidSystem::sPhaseIdx};
-    enum { numEnergyEquations  = GET_PROP_VALUE(TypeTag, NumEnergyEquations)};
+    enum { numEnergyEqFluid = GET_PROP_VALUE(TypeTag, NumEnergyEqFluid)};
     enum { numPhases       = GET_PROP_VALUE(TypeTag, NumPhases)};
-    enum { enableEnergy         = GET_PROP_VALUE(TypeTag, EnableEnergy)};
-
-    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
-    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
-    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
-    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using Element = typename GridView::template Codim<0>::Entity;
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
-    using LocalPosition = Dune::FieldVector<Scalar, dim>;
+    enum { enableThermalNonEquilibrium  = GET_PROP_VALUE(TypeTag,EnableThermalNonEquilibrium)};
 
-    using DimVector = Dune::FieldVector<Scalar, dim>;
+    using DimVector =  Dune::FieldVector<Scalar,dim>;
     using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
 
 public:
-    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename MaterialLaw::Params;
 
     using AwnSurface = typename GET_PROP_TYPE(TypeTag, AwnSurface);
-    using AwnSurfaceParams = typename AwnSurface::Params;
-
+    using AwnSurfaceParams = typename  AwnSurface::Params;
     using AwsSurface = typename GET_PROP_TYPE(TypeTag, AwsSurface);
-    using AwsSurfaceParams = typename AwsSurface::Params;
-
+    using AwsSurfaceParams = typename  AwsSurface::Params;
     using AnsSurface = typename GET_PROP_TYPE(TypeTag, AnsSurface);
-    using AnsSurfaceParams = typename AnsSurface::Params;
-
+    using AnsSurfaceParams = typename  AnsSurface::Params;
+    using PermeabilityType = Scalar;
 
-    EvaporationAtmosphereSpatialParams(const GridView &gridView)
-        : ParentType(gridView)
+    EvaporationAtmosphereSpatialParams(const Problem &problem)
+        : ParentType(problem)
     {
-    }
-
-    ~EvaporationAtmosphereSpatialParams()
-    {}
-
-        // load parameters from input file and initialize parameter values
-        void setInputInitialize()
-        {
-                heightPM_               = GET_RUNTIME_PARAM(TypeTag, Scalar, Grid.InterfacePosY);
-                heightDomain_           = GET_RUNTIME_PARAM(TypeTag, GlobalPosition, Grid.UpperRight)[1];
-                // BEWARE! First the input values have to be set, than the material parameters can be set
-
-                // this is the parameter value from file part
-                porosityPM_                 = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.PorousMedium.porosity);
-                intrinsicPermeabilityPM_    = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.PorousMedium.permeability);
-
-                porosityFF_                 = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.FreeFlow.porosity);
-                intrinsicPermeabilityFF_    = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.FreeFlow.permeability);
-
-                solidDensity_               = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.density);
-                solidThermalConductivity_    = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.thermalConductivity);
-                solidHeatCapacity_               = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.heatCapacity);
-
-                aWettingNonWettingA1_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.aWettingNonWettingA1);
-                aWettingNonWettingA2_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.aWettingNonWettingA2);
-                aWettingNonWettingA3_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.aWettingNonWettingA3);
-
-                aNonWettingSolidA1_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.aNonWettingSolidA1);
-                aNonWettingSolidA2_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.aNonWettingSolidA2);
-                aNonWettingSolidA3_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.aNonWettingSolidA3);
-
-                BCPd_           = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.BCPd);
-                BClambda_       = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.BClambda);
-                Swr_            = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.Swr);
-                Snr_            = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.soil.Snr);
-
-                characteristicLengthFF_         = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.FreeFlow.meanPoreSize);
-
-                characteristicLengthPM_         = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.PorousMedium.meanPoreSize);
-                factorEnergyTransfer_           = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.PorousMedium.factorEnergyTransfer);
-                factorMassTransfer_             = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.PorousMedium.factorMassTransfer);
-
-            // residual saturations
-            materialParamsFF_.setSwr(0.0);
-            materialParamsFF_.setSnr(0.00);
-
-            materialParamsPM_.setSwr(Swr_);
-            materialParamsPM_.setSnr(Snr_);
-
-            // pc / kr parameters
-            materialParamsPM_.setLambda(BClambda_);
-            materialParamsPM_.setPe(BCPd_);
-
-            // for making pc == 0 in the FF
-            materialParamsFF_.setLambda(42.);
-            materialParamsFF_.setPe(0.);
-
-            {//scope it
-                // capillary pressure parameters
-                FluidState fluidState ;
-                Scalar S[numPhases] ;
-                const MaterialLawParams &materialParams =  materialParamsPM_;
-                        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               = GET_RUNTIME_PARAM(TypeTag, Scalar, InitialConditions.TInitial);
-
-                    fluidState.setSaturation(phaseIdx, S[phaseIdx]);
-                    if(enableEnergy){
-                        if (numEnergyEquations>1)
-                            fluidState.setTemperature(phaseIdx,TInitial);
-                        else
-                            fluidState.setTemperature(TInitial);
-                    }
-                }
-
-                //obtain pc according to saturation
-                MaterialLaw::capillaryPressures(capPress, materialParams, fluidState);
-                using std::abs;
-                pcMax_ = abs(capPress[0]);
-
-                // set pressures from capillary pressures
-                aWettingNonWettingSurfaceParams_.setPcMax(pcMax_);
+        heightPM_               = getParam<std::vector<Scalar>>("Grid.Positions1")[1];
+        heightDomain_           = getParam<std::vector<Scalar>>("Grid.Positions1")[2];
+
+        porosityPM_                 = getParam<Scalar>("SpatialParams.PorousMedium.porosity");
+        intrinsicPermeabilityPM_    = getParam<Scalar>("SpatialParams.PorousMedium.permeability");
+
+        porosityFF_                 = getParam<Scalar>("SpatialParams.FreeFlow.porosity");
+        intrinsicPermeabilityFF_    = getParam<Scalar>("SpatialParams.FreeFlow.permeability");
+
+        solidDensity_               = getParam<Scalar>("SpatialParams.soil.density");
+        solidThermalConductivity_    = getParam<Scalar>("SpatialParams.soil.thermalConductivity");
+        solidHeatCapacity_               = getParam<Scalar>("SpatialParams.soil.heatCapacity");
+
+        aWettingNonWettingA1_ = getParam<Scalar>("SpatialParams.soil.aWettingNonWettingA1");
+        aWettingNonWettingA2_ = getParam<Scalar>("SpatialParams.soil.aWettingNonWettingA2");
+        aWettingNonWettingA3_ = getParam<Scalar>("SpatialParams.soil.aWettingNonWettingA3");
+
+        aNonWettingSolidA1_ = getParam<Scalar>("SpatialParams.soil.aNonWettingSolidA1");
+        aNonWettingSolidA2_ = getParam<Scalar>("SpatialParams.soil.aNonWettingSolidA2");
+        aNonWettingSolidA3_ = getParam<Scalar>("SpatialParams.soil.aNonWettingSolidA3");
+
+        BCPd_           = getParam<Scalar>("SpatialParams.soil.BCPd");
+        BClambda_       = getParam<Scalar>("SpatialParams.soil.BClambda");
+        Swr_            = getParam<Scalar>("SpatialParams.soil.Swr");
+        Snr_            = getParam<Scalar>("SpatialParams.soil.Snr");
+
+        characteristicLengthFF_   = getParam<Scalar>("SpatialParams.FreeFlow.meanPoreSize");
+        characteristicLengthPM_   = getParam<Scalar>("SpatialParams.PorousMedium.meanPoreSize");
+
+        factorEnergyTransfer_ = getParam<Scalar>("SpatialParams.PorousMedium.factorEnergyTransfer");
+        factorMassTransfer_ = getParam<Scalar>("SpatialParams.PorousMedium.factorMassTransfer");
+
+        // residual saturations
+        materialParamsFF_.setSwr(0.0);
+        materialParamsFF_.setSnr(0.00);
+
+        materialParamsPM_.setSwr(Swr_);
+        materialParamsPM_.setSnr(Snr_);
+
+        // pc / kr parameters
+        materialParamsPM_.setLambda(BClambda_);
+        materialParamsPM_.setPe(BCPd_);
+
+        // for making pc == 0 in the FF
+        materialParamsFF_.setLambda(42.);
+        materialParamsFF_.setPe(0.);
+
+        {//scope it
+            // capillary pressure parameters
+            FluidState fluidState ;
+            Scalar S[numPhases] ;
+            const auto &materialParams =  materialParamsPM_;
+                    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);
             }
 
-            // wetting-non wetting: surface which goes to zero on the edges, but is a polynomial
-            aWettingNonWettingSurfaceParams_.setA1(aWettingNonWettingA1_);
-            aWettingNonWettingSurfaceParams_.setA2(aWettingNonWettingA2_);
-            aWettingNonWettingSurfaceParams_.setA3(aWettingNonWettingA3_);
-
-            // non-wetting-solid
-            aNonWettingSolidSurfaceParams_.setA1(aNonWettingSolidA1_);
-            aNonWettingSolidSurfaceParams_.setA2(aNonWettingSolidA2_);
-            aNonWettingSolidSurfaceParams_.setA3(aNonWettingSolidA3_);
+            //obtain pc according to saturation
+            MaterialLaw::capillaryPressures(capPress, materialParams, fluidState);
+            using std::abs;
+            pcMax_ = abs(capPress[0]);
 
-            // dummys for free flow: no interface where there is only one phase
-            aWettingNonWettingSurfaceParamsFreeFlow_.setA1(0.);
-            aWettingNonWettingSurfaceParamsFreeFlow_.setA2(0.);
-            aWettingNonWettingSurfaceParamsFreeFlow_.setA3(0.);
-            aWettingNonWettingSurfaceParamsFreeFlow_.setPcMax(42.); // not needed because it is anyways zero; silencing valgrind
+            // set pressures from capillary pressures
+            aWettingNonWettingSurfaceParams_.setPcMax(pcMax_);
+        }
 
-            // dummys for free flow: no interface where there is only one phase
-            aNonWettingSolidSurfaceParamsFreeFlow_.setA1(0.);
-            aNonWettingSolidSurfaceParamsFreeFlow_.setA2(0.);
-            aNonWettingSolidSurfaceParamsFreeFlow_.setA3(0.);
+        // wetting-non wetting: surface which goes to zero on the edges, but is a polynomial
+        aWettingNonWettingSurfaceParams_.setA1(aWettingNonWettingA1_);
+        aWettingNonWettingSurfaceParams_.setA2(aWettingNonWettingA2_);
+        aWettingNonWettingSurfaceParams_.setA3(aWettingNonWettingA3_);
+
+        // non-wetting-solid
+        aNonWettingSolidSurfaceParams_.setA1(aNonWettingSolidA1_);
+        aNonWettingSolidSurfaceParams_.setA2(aNonWettingSolidA2_);
+        aNonWettingSolidSurfaceParams_.setA3(aNonWettingSolidA3_);
+
+        // dummys for free flow: no interface where there is only one phase
+        aWettingNonWettingSurfaceParamsFreeFlow_.setA1(0.);
+        aWettingNonWettingSurfaceParamsFreeFlow_.setA2(0.);
+        aWettingNonWettingSurfaceParamsFreeFlow_.setA3(0.);
+        aWettingNonWettingSurfaceParamsFreeFlow_.setPcMax(42.); // not needed because it is anyways zero; silencing valgrind
+
+        // dummys for free flow: no interface where there is only one phase
+        aNonWettingSolidSurfaceParamsFreeFlow_.setA1(0.);
+        aNonWettingSolidSurfaceParamsFreeFlow_.setA2(0.);
+        aNonWettingSolidSurfaceParamsFreeFlow_.setA3(0.);
+    }
 
-            // dummy for aws not necessary: aws = ans - as, ans=0, as=ans(0,pcmax)=0 -> aws=0
-        }
+    ~EvaporationAtmosphereSpatialParams()
+    {}
 
-    /*! \brief Update the spatial parameters with the flow solution
-     *        after a timestep.
-     */
-    void update(const SolutionVector & globalSolutionFn)
-    { }
 
-    /*! \brief Returns the intrinsic permeability
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub control volume.
-     * \param element The current finite element
-     * \param fvGeometry The current finite volume geometry of the element
-     * \param scvIdx The index sub-control volume */
-    const Scalar intrinsicPermeability(const Element & element,
-                                       const FVElementGeometry & fvGeometry,
-                                       const unsigned int scvIdx) const
+     PermeabilityType permeability(const Element& element,
+                                  const SubControlVolume& scv,
+                                  const ElementSolutionVector& elemSol) const
     {
-        const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
+        const  auto & globalPos =  scv.dofPosition();
         if (inFF_(globalPos) )
             return intrinsicPermeabilityFF_ ;
         else if (inPM_(globalPos))
@@ -334,13 +299,11 @@ public:
      * \param element The finite element
      * \param fvGeometry The finite volume geometry
      * \param scvIdx The local index of the sub-control volume  */
-    const Scalar porosity(const Element & element,
-                          const FVElementGeometry & fvGeometry,
-                          const unsigned int scvIdx) const
+    Scalar porosity(const Element &element,
+                    const SubControlVolume &scv,
+                    const ElementSolutionVector &elemSol) const
     {
-        const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-//        const  LocalPosition & localPos =  fvGeometry.subContVol[scvIdx].localCenter ;
-//        const  GlobalPosition & globalPos =  element.geometry().global(localPos) ;
+        const auto& globalPos =  scv.dofPosition();
 
         if (inFF_(globalPos) )
             return porosityFF_ ;
@@ -350,28 +313,21 @@ public:
             DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]);
     }
 
-    /*!
-     * \brief Return a reference to the material parameters of the material law.
-     *
-     *        The position is determined based on the coordinate of
-     *        the vertex belonging to the considered sub control volume.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub-control volume */
-    const MaterialLawParams & materialLawParams(const Element & element,
-                                                const FVElementGeometry & fvGeometry,
-                                                const unsigned int scvIdx) const
+    const MaterialLawParams& materialLawParams(const Element& element,
+                                               const SubControlVolume& scv,
+                                               const ElementSolutionVector& elemSol) const
     {
-        const GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-        const MaterialLawParams & materialParams  = materialLawParamsAtPos(globalPos) ;
-        return materialParams ;
+        const auto& globalPos =  scv.dofPosition();
+        if (inFF_(globalPos) )
+            return materialParamsFF_ ;
+        else if (inPM_(globalPos))
+            return materialParamsPM_ ;
+        else             DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]);
     }
 
     /*!
      * \brief Return a reference to the material parameters of the material law.
-     *
-     * \param globalPos The position in global coordinates.
-     */
+     * \param globalPos The position in global coordinates. */
     const MaterialLawParams & materialLawParamsAtPos(const GlobalPosition & globalPos) const
     {
         if (inFF_(globalPos) )
@@ -389,11 +345,11 @@ public:
      * \param element     The finite element
      * \param fvGeometry  The finite volume geometry
      * \param scvIdx      The local index of the sub-control volume */
-    const AwnSurfaceParams & aWettingNonWettingSurfaceParams(const Element & element,
-                                                             const FVElementGeometry & fvGeometry,
-                                                             const unsigned int scvIdx) const
+    const AwnSurfaceParams & aWettingNonWettingSurfaceParams(const Element &element,
+                                                             const SubControlVolume &scv,
+                                                             const ElementSolutionVector &elemSol) const
     {
-        const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
+        const auto& globalPos =  scv.dofPosition();
         if (inFF_(globalPos) )
             return aWettingNonWettingSurfaceParamsFreeFlow_  ;
         else if (inPM_(globalPos))
@@ -410,10 +366,10 @@ public:
      * \param fvGeometry  The finite volume geometry
      * \param scvIdx      The local index of the sub-control volume */
     const AnsSurfaceParams & aNonWettingSolidSurfaceParams(const Element &element,
-                                                           const FVElementGeometry &fvGeometry,
-                                                           const unsigned int scvIdx) const
+                                                             const SubControlVolume &scv,
+                                                             const ElementSolutionVector &elemSol) const
     {
-        const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
+        const auto& globalPos =  scv.dofPosition();
         if (inFF_(globalPos) )
             return aNonWettingSolidSurfaceParamsFreeFlow_  ;
         else if (inPM_(globalPos))
@@ -433,11 +389,12 @@ public:
      * \param element     The finite element
      * \param fvGeometry  The finite volume geometry
      * \param scvIdx      The local index of the sub-control volume */
-    const Scalar pcMax(const Element & element,
-                       const FVElementGeometry & fvGeometry,
-                       const unsigned int scvIdx) const
+    const Scalar pcMax(const Element &element,
+                       const SubControlVolume &scv,
+                       const ElementSolutionVector &elemSol) const
     { return aWettingNonWettingSurfaceParams_.pcMax() ; }
 
+
     /*!\brief Return the characteristic length for the mass transfer.
      *
      *        The position is determined based on the coordinate of
@@ -446,10 +403,14 @@ public:
      * \param fvGeometry  The finite volume geometry
      * \param scvIdx      The local index of the sub control volume */
     const Scalar characteristicLength(const Element & element,
-                                      const FVElementGeometry & fvGeometry,
-                                      const unsigned int scvIdx) const
-    {   const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-        return characteristicLengthAtPos(globalPos); }
+                                      const SubControlVolume &scv,
+                                      const ElementSolutionVector &elemSol) const
+
+    {
+        const auto& globalPos =  scv.dofPosition();
+        return characteristicLengthAtPos(globalPos);
+    }
+
     /*!\brief Return the characteristic length for the mass transfer.
      * \param globalPos The position in global coordinates.*/
     const Scalar characteristicLengthAtPos(const  GlobalPosition & globalPos) const
@@ -468,14 +429,17 @@ public:
      * \param element     The finite element
      * \param fvGeometry  The finite volume geometry
      * \param scvIdx      The local index of the sub control volume */
-    const Scalar factorEnergyTransfer(const Element & element,
-                                      const FVElementGeometry & fvGeometry,
-                                      const unsigned int scvIdx) const
-    {   const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-        return factorEnergyTransferAtPos(globalPos); }
+    const Scalar factorEnergyTransfer(const Element &element,
+                                      const SubControlVolume &scv,
+                                      const ElementSolutionVector &elemSol) const
+    {
+       const auto& globalPos =  scv.dofPosition();
+       return factorEnergyTransferAtPos(globalPos);
+    }
+
     /*!\brief Return the pre factor the the energy transfer
      * \param globalPos The position in global coordinates.*/
-    const Scalar factorEnergyTransferAtPos(const GlobalPosition & globalPos) const
+    const Scalar factorEnergyTransferAtPos(const  GlobalPosition & globalPos) const
     {
         if (inFF_(globalPos) )
             return factorEnergyTransfer_ ;
@@ -484,21 +448,25 @@ public:
         else             DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]);
     }
 
-    /*!\brief Return the pre factor for the mass transfer
+    /*!\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 */
-    const Scalar factorMassTransfer(const Element & element,
-                                    const FVElementGeometry & fvGeometry,
-                                    const unsigned int scvIdx) const
-    {   const  GlobalPosition & globalPos =  fvGeometry.subContVol[scvIdx].global ;
-        return factorMassTransferAtPos(globalPos); }
+    const Scalar factorMassTransfer(const Element &element,
+                                      const SubControlVolume &scv,
+                                      const ElementSolutionVector &elemSol) const
+    {
+       const auto& globalPos =  scv.dofPosition();
+        return factorMassTransferAtPos(globalPos);
+
+    }
+
     /*!\brief Return the pre factor the the mass transfer
      * \param globalPos The position in global coordinates.*/
-    const Scalar factorMassTransferAtPos(const GlobalPosition & globalPos) const
+    const Scalar factorMassTransferAtPos(const  GlobalPosition & globalPos) const
     {
         if (inFF_(globalPos) )
             return factorMassTransfer_ ;
@@ -508,32 +476,34 @@ public:
     }
 
 
-    /*! \brief Returns the heat capacity \f$[J/m^3 K]\f$ of the rock matrix.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub-control volume where
-     *                    the heat capacity needs to be defined */
-    const Scalar solidHeatCapacity(const Element & element,
-                              const FVElementGeometry & fvGeometry,
-                              const unsigned int scvIdx) const
+    /*!
+     * \brief Returns the heat capacity \f$[J / (kg K)]\f$ of the rock matrix.
+     *
+     * This is only required for non-isothermal models.
+     *
+     * \param globalPos The global position
+     */
+    Scalar solidHeatCapacityAtPos(const GlobalPosition& globalPos) const
     {  return solidHeatCapacity_ ;}  // specific heat capacity of solid  [J / (kg K)]
 
-    /*!\brief Returns the density \f$[kg/m^3]\f$ of the rock matrix.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub-control volume */
-    const Scalar solidDensity(const Element & element,
-                             const FVElementGeometry & fvGeometry,
-                             const unsigned int scvIdx) const
-    { return solidDensity_ ;} // density of solid [kg/m^3]
+    /*!
+     * \brief Returns the mass density \f$[kg / m^3]\f$ of the rock matrix.
+     *
+     * This is only required for non-isothermal models.
+     *
+     * \param globalPos The global position
+     */
+    Scalar solidDensityAtPos(const GlobalPosition& globalPos) const
+    {return solidDensity_ ;} // density of solid [kg/m^3]
 
-    /*!\brief Returns the thermal conductivity \f$[W/(m K)]\f$ of the rock matrix.
-     * \param element     The finite element
-     * \param fvGeometry  The finite volume geometry
-     * \param scvIdx      The local index of the sub-control volume */
-    const Scalar  solidThermalConductivity(const Element & element,
-                                          const FVElementGeometry & fvGeometry,
-                                          const unsigned int scvIdx)const
+    /*!
+     * \brief Returns the thermal conductivity \f$\mathrm{[W/(m K)]}\f$ of the porous material.
+     *
+     * This is only required for non-isothermal models.
+     *
+     * \param globalPos The global position
+     */
+    Scalar solidThermalConductivityAtPos(const GlobalPosition& globalPos) const
     { return solidThermalConductivity_ ;} // conductivity of solid  [W / (m K ) ]
 
     /*!\brief Give back whether the tested position (input) is a specific region (porous medium part) in the domain
@@ -547,7 +517,7 @@ public:
      * -> be careful with neumannAtPos
      */
     bool inPM_(const GlobalPosition & globalPos) const
-    {       return ( (globalPos[dimWorld-1] > 0. - eps_) and (globalPos[dimWorld-1] < (heightPM_ + eps_) ) );   }
+    { return ( (globalPos[dimWorld-1] > 0. - eps_) and (globalPos[dimWorld-1] < (heightPM_ + eps_) ) );   }
 
     /*!
      * \brief Give back whether the tested position (input) is a specific region (above PM / "free flow") in the domain
@@ -561,21 +531,7 @@ public:
      * -> be careful with neumannAtPos
      */
     bool inFF_(const GlobalPosition & globalPos) const
-    {       return ( (globalPos[dimWorld-1] < heightDomain_ + eps_) and (globalPos[dimWorld-1] > (heightPM_ + eps_) ) );   }
-
-    /*!
-     * \brief Give back whether the tested position (input) is a specific region (above PM / "free flow") in the domain
-     *
-     * This setting ensures, that the boundary between the two domains has porous medium properties.
-     * This is desirable, because I want to observe the boundary of the porous domain.
-     * However, the position has to be the coordinate of the vertex and not the integration point
-     * of the boundary flux. If the position is the ip of the neumann flux this leads to a situation
-     * where the vertex belongs to porous medium and there is nonetheless injection over the boundary.
-     * That does not work.
-     * -> be careful with neumannAtPos
-     */
-    bool inInjection_(const GlobalPosition & globalPos) const
-    {       return ( (globalPos[dimWorld-1] < heightDomain_ - 0.25*heightDomain_  + eps_) and (globalPos[dimWorld-1] > (heightPM_ + eps_) ) );   }
+    { return ( (globalPos[dimWorld-1] < heightDomain_ + eps_) and (globalPos[dimWorld-1] > (heightPM_ + eps_) ) );   }
 
     /*! \brief access function for the depth / height of the porous medium */
     const Scalar heightPM() const
@@ -627,6 +583,7 @@ private:
     Scalar BClambda_ ;
     Scalar Swr_ ;
     Scalar Snr_ ;
+    std::vector<Scalar> gridVector_;
 };
 
 }
diff --git a/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh b/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh
index 921f8925e95fb39c4cef9e18d3bbda0e20eb8e91..561f42979c2b7d9ba8b912e5a847e83860ccd084 100644
--- a/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh
+++ b/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh
@@ -27,12 +27,15 @@
 
 #include <dune/common/parametertreeparser.hh>
 
-#include <dumux/porousmediumflow/mpnc/implicit/model.hh>
-#include <dumux/porousmediumflow/implicit/problem.hh>
+#include <dumux/discretization/box/properties.hh>
+#include <dumux/discretization/cellcentered/tpfa/properties.hh>
+
+#include <dumux/porousmediumflow/mpnc/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
 
 #include <dumux/material/fluidsystems/h2on2.hh>
-#include <dumux/material/constraintsolvers/computefromreferencephase.hh>
 #include <dumux/material/fluidstates/compositional.hh>
+#include <dumux/material/constraintsolvers/computefromreferencephase.hh>
 
 #include "obstaclespatialparams.hh"
 
@@ -46,7 +49,7 @@ namespace Properties
 {
 NEW_TYPE_TAG(ObstacleProblem, INHERITS_FROM(MPNC, ObstacleSpatialParams));
 NEW_TYPE_TAG(ObstacleBoxProblem, INHERITS_FROM(BoxModel, ObstacleProblem));
-NEW_TYPE_TAG(ObstacleCCProblem, INHERITS_FROM(CCModel, ObstacleProblem));
+NEW_TYPE_TAG(ObstacleCCProblem, INHERITS_FROM(CCTpfaModel, ObstacleProblem));
 
 // Set the grid type
 SET_TYPE_PROP(ObstacleProblem, Grid, Dune::YaspGrid<2>);
@@ -57,24 +60,9 @@ SET_TYPE_PROP(ObstacleProblem,
               ObstacleProblem<TypeTag>);
 
 // Set fluid configuration
-SET_PROP(ObstacleProblem, FluidSystem)
-{ private:
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-public:
-    using type = FluidSystems::H2ON2<Scalar, /*useComplexRelations=*/false>;
-};
-
-// Enable smooth upwinding?
-SET_BOOL_PROP(ObstacleProblem, ImplicitEnableSmoothUpwinding, true);
-
-// Enable molecular diffusion of the components?
-SET_BOOL_PROP(ObstacleProblem, EnableDiffusion, true);
-
-// Enable the re-use of the jacobian matrix whenever possible?
-SET_BOOL_PROP(ObstacleProblem, ImplicitEnableJacobianRecycling, true);
-
-// Reassemble the jacobian matrix only where it changed?
-SET_BOOL_PROP(ObstacleProblem, ImplicitEnablePartialReassemble, true);
+SET_TYPE_PROP(ObstacleProblem,
+              FluidSystem,
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/false>);
 
 // decide which type to use for floating values (double / quad)
 SET_TYPE_PROP(ObstacleProblem, Scalar, double);
@@ -111,19 +99,28 @@ SET_TYPE_PROP(ObstacleProblem, Scalar, double);
  */
 template <class TypeTag>
 class ObstacleProblem
-    : public ImplicitPorousMediaProblem<TypeTag>
+    : public PorousMediumFlowProblem<TypeTag>
 {
-    using ParentType = ImplicitPorousMediaProblem<TypeTag>;
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using ParameterCache = typename FluidSystem::ParameterCache;
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using Sources = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
     using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState);
     using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
-    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using ParameterCache = typename FluidSystem::ParameterCache;
 
     // world dimension
     enum {dimWorld = GridView::dimensionworld};
@@ -137,13 +134,10 @@ class ObstacleProblem
     enum {s0Idx = Indices::s0Idx};
     enum {p0Idx = Indices::p0Idx};
 
-    using Element = typename GridView::template Codim<0>::Entity;
-    using Intersection = typename GridView::Intersection;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using GlobalPosition = Dune::FieldVector<typename GridView::Grid::ctype, dimWorld>;
+
+    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
     using PhaseVector = Dune::FieldVector<Scalar, numPhases>;
-    using TimeManager = typename GET_PROP_TYPE(TypeTag, TimeManager);
-    enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) };
+    static constexpr bool isBox = GET_PROP_VALUE(TypeTag, DiscretizationMethod) == DiscretizationMethods::Box;
 
 public:
     /*!
@@ -152,8 +146,8 @@ public:
      * \param timeManager The time manager
      * \param gridView The grid view
      */
-    ObstacleProblem(TimeManager &timeManager, const GridView &gridView)
-        : ParentType(timeManager, gridView)
+    ObstacleProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+        : ParentType(fvGridGeometry)
     {
         temperature_ = 273.15 + 25; // -> 25°C
 
@@ -167,42 +161,7 @@ public:
         int np = 1000;
 
         FluidSystem::init(Tmin, Tmax, nT, pmin, pmax, np);
-        name_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Problem, Name);
-    }
-
-    /*!
-     * \brief User defined output after the time integration
-     *
-     * Will be called diretly after the time integration.
-     */
-    void postTimeStep()
-    {
-        // Calculate storage terms of the individual phases
-        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
-            PrimaryVariables phaseStorage;
-            this->model().globalPhaseStorage(phaseStorage, phaseIdx);
-
-            if (this->gridView().comm().rank() == 0) {
-                std::cout
-                    <<"Storage in "
-                    << FluidSystem::phaseName(phaseIdx)
-                    << "Phase: ["
-                    << phaseStorage
-                    << "]"
-                    << "\n";
-            }
-        }
-
-        // Calculate total storage terms
-        PrimaryVariables storage;
-        this->model().globalStorage(storage);
-
-        // Write mass balance information for rank 0
-        if (this->gridView().comm().rank() == 0) {
-            std::cout
-                <<"Storage total: [" << storage << "]"
-                << "\n";
-        }
+        name_ = getParam<std::string>("Problem.Name");
     }
 
     /*!
@@ -223,7 +182,7 @@ public:
      *
      * \param globalPos The global position
      */
-    Scalar temperatureAtPos(const GlobalPosition &globalPos) const
+    Scalar temperature() const
     { return temperature_; }
 
     /*!
@@ -240,37 +199,31 @@ public:
      * \name Boundary conditions
      */
     // \{
-
     /*!
      * \brief Specifies which kind of boundary condition should be
-     *        used for which equation on a given boundary control volume.
+     *        used for which equation on a given boundary segment
      *
-     * \param values The boundary types for the conservation equations
-     * \param globalPos The position of the center of the finite volume
+     * \param globalPos The global position
      */
-    void boundaryTypesAtPos(BoundaryTypes &values,
-                            const GlobalPosition &globalPos) const
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
     {
+        BoundaryTypes bcTypes;
         if (onInlet_(globalPos) || onOutlet_(globalPos))
-            values.setAllDirichlet();
+            bcTypes.setAllDirichlet();
         else
-            values.setAllNeumann();
+            bcTypes.setAllNeumann();
+        return bcTypes;
     }
 
     /*!
-     * \brief Evaluate the boundary conditions for a dirichlet
-     *        control volume.
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
      *
-     * \param values Stores the Dirichlet values for the conservation equations in
-     *               \f$ [ \textnormal{unit of primary variable} ] \f$
-     * \param globalPos The center of the finite volume which ought to be set.
-     *
-     * For this method, the \a values parameter stores primary variables.
+     * \param globalPos The global position
      */
-    void dirichletAtPos(PrimaryVariables &values,
-                        const GlobalPosition &globalPos) const
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
     {
-        initial_(values, globalPos);
+       return initial_(globalPos);
     }
 
     /*!
@@ -287,13 +240,13 @@ public:
      *
      * Negative values mean influx.
      */
-    void neumann(PrimaryVariables &values,
-                 const Element &element,
-                 const FVElementGeometry &fvGeometry,
-                 const Intersection &intersection,
-                 const unsigned int scvIdx,
-                 const unsigned int boundaryFaceIdx) const
-    { values = 0.; }
+    PrimaryVariables neumann(const Element& element,
+                             const FVElementGeometry& fvGeometry,
+                             const ElementVolumeVariables& elemVolVars,
+                             const SubControlVolumeFace& scvf) const
+    {
+        return PrimaryVariables(0.0);
+    }
 
     // \}
 
@@ -314,12 +267,13 @@ public:
      *
      * Positive values mean that mass is created, negative ones mean that it vanishes.
      */
-    void source(PrimaryVariables &values,
-                const Element &element,
-                const FVElementGeometry &fvGeometry,
-                const unsigned int scvIdx) const
+    //! \copydoc Dumux::ImplicitProblem::source()
+    PrimaryVariables source(const Element &element,
+                            const FVElementGeometry& fvGeometry,
+                            const ElementVolumeVariables& elemVolVars,
+                            const SubControlVolume &scv) const
     {
-        values = Scalar(0.0);
+       return PrimaryVariables(0.0);
     }
 
     /*!
@@ -331,20 +285,18 @@ public:
      * For this method, the \a values parameter stores primary
      * variables.
      */
-    void initialAtPos(PrimaryVariables &values,
-                      const GlobalPosition &globalPos) const
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
     {
-        initial_(values, globalPos);
-        Valgrind::CheckDefined(values);
+        return initial_(globalPos);
     }
 
     // \}
 
 private:
     // the internal method for the initial condition
-    void initial_(PrimaryVariables &values,
-                  const GlobalPosition &globalPos) const
+    PrimaryVariables initial_(const GlobalPosition &globalPos) const
     {
+        PrimaryVariables values(0.0);
         FluidState fs;
 
         int refPhaseIdx;
@@ -389,7 +341,7 @@ private:
         fs.setSaturation(otherPhaseIdx, 1.0 - fs.saturation(refPhaseIdx));
 
         // calulate the capillary pressure
-        const MaterialLawParams &matParams =
+        const auto& matParams =
             this->spatialParams().materialLawParamsAtPos(globalPos);
         PhaseVector pc;
         MaterialLaw::capillaryPressures(pc, matParams, fs);
@@ -422,6 +374,7 @@ private:
 
         // first pressure
         values[p0Idx] = fs.pressure(/*phaseIdx=*/0);
+        return values;
     }
 
     bool onInlet_(const GlobalPosition &globalPos) const
diff --git a/test/porousmediumflow/mpnc/implicit/obstaclespatialparams.hh b/test/porousmediumflow/mpnc/implicit/obstaclespatialparams.hh
index e9565a2c89e4d92089ddbbd24683faa8905a3735..16bb62b5b52c47e1157336a773bbba4d87256f73 100644
--- a/test/porousmediumflow/mpnc/implicit/obstaclespatialparams.hh
+++ b/test/porousmediumflow/mpnc/implicit/obstaclespatialparams.hh
@@ -29,7 +29,6 @@
 #include <dumux/material/fluidmatrixinteractions/2p/regularizedlinearmaterial.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
 
-#include <dumux/porousmediumflow/mpnc/implicit/model.hh>
 #include <dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh>
 #include <dumux/material/fluidmatrixinteractions/mp/2padapter.hh>
 
@@ -73,26 +72,24 @@ template<class TypeTag>
 class ObstacleSpatialParams : public FVSpatialParams<TypeTag>
 {
     using ParentType = FVSpatialParams<TypeTag>;
-    using Grid = typename GET_PROP_TYPE(TypeTag, Grid);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using CoordScalar = typename Grid::ctype;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+    using GlobalPosition = Dune::FieldVector<Scalar, GridView::dimension>;
+    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
+    using MaterialLawParams = typename MaterialLaw::Params;
 
     enum {dimWorld=GridView::dimensionworld};
-    enum {wPhaseIdx = FluidSystem::wPhaseIdx};
-
-    using Element = typename GridView::template Codim<0>::Entity;
-    using DimWorldVector = Dune::FieldVector<CoordScalar, dimWorld>;
 
 public:
-    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename MaterialLaw::Params;
+     using PermeabilityType = Scalar;
 
-    ObstacleSpatialParams(const GridView &gridView)
-        : ParentType(gridView)
+
+    ObstacleSpatialParams(const Problem &problem)
+        : ParentType(problem)
     {
         // intrinsic permeabilities
         coarseK_ = 1e-12;
@@ -118,31 +115,14 @@ public:
     ~ObstacleSpatialParams()
     {}
 
-    /*!
-     * \brief Update the spatial parameters with the flow solution
-     *        after a timestep.
-     *
-     * \param globalSol The current solution vector
-     */
-    void update(const SolutionVector &globalSol)
+    PermeabilityType permeability(const Element& element,
+                                  const SubControlVolume& scv,
+                                  const ElementSolutionVector& elemSol) const
     {
-    }
-
-    /*!
-     * \brief Returns the intrinsic permeability tensor.
-     *
-     * \param element       The current finite element
-     * \param fvGeometry    The current finite volume geometry of the element
-     * \param scvIdx        The index sub-control volume where the
-     *                      intrinsic permeability is given.
-     */
-    Scalar intrinsicPermeability(const Element &element,
-                                 const FVElementGeometry &fvGeometry,
-                                 const unsigned int scvIdx) const
-    {
-        if (isFineMaterial_(fvGeometry.subContVol[scvIdx].global))
+        if (isFineMaterial_(scv.dofPosition()))
             return fineK_;
-        return coarseK_;
+        else
+            return coarseK_;
     }
 
     /*!
@@ -153,9 +133,9 @@ public:
      * \param scvIdx      The local index of the sub-control volume where
      *                    the porosity needs to be defined
      */
-    double porosity(const Element &element,
-                    const FVElementGeometry &fvGeometry,
-                    const unsigned int scvIdx) const
+    Scalar porosity(const Element &element,
+                    const SubControlVolume &scv,
+                    const ElementSolutionVector &elemSol) const
     {
         return porosity_;
     }
@@ -166,9 +146,9 @@ public:
      * \param pos The global position of the sub-control volume.
      * \return the material parameters object
      */
-    const MaterialLawParams& materialLawParamsAtPos(const DimWorldVector &pos) const
+    const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const
     {
-        if (isFineMaterial_(pos))
+        if (isFineMaterial_(globalPos))
             return fineMaterialParams_;
         else
             return coarseMaterialParams_;
@@ -179,7 +159,7 @@ private:
      * \brief Returns whether a given global position is in the
      *        fine-permeability region or not.
      */
-    static bool isFineMaterial_(const DimWorldVector &pos)
+    static bool isFineMaterial_(const GlobalPosition &pos)
     {
         return
             10 - eps_ <= pos[0] && pos[0] <= 20 + eps_ &&
diff --git a/test/porousmediumflow/mpnc/implicit/test_boxmpnc.cc b/test/porousmediumflow/mpnc/implicit/test_boxmpnc.cc
deleted file mode 100644
index 64f79caa0821d3a117329d30f19c336272f36e46..0000000000000000000000000000000000000000
--- a/test/porousmediumflow/mpnc/implicit/test_boxmpnc.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-// -*- 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 MpNc box model.
- */
-#include <config.h>
-#include "obstacleproblem.hh"
-#include <dumux/common/start.hh>
-
-/*!
- * \brief Provides an interface for customizing error messages associated with
- *        reading in parameters.
- *
- * \param progName  The name of the program, that was tried to be started.
- * \param errorMsg  The error message that was issued by the start function.
- *                  Comprises the thing that went wrong and a general help message.
- */
-void usage(const char *progName, const std::string &errorMsg)
-{
-    if (errorMsg.size() > 0) {
-        std::string errorMessageOut = "\nUsage: ";
-                    errorMessageOut += progName;
-                    errorMessageOut += " [options]\n";
-                    errorMessageOut += errorMsg;
-                    errorMessageOut += "\n\nThe list of mandatory options for this program is:\n"
-                                        "\t-TimeManager.TEnd      End of the simulation [s] \n"
-                                        "\t-TimeManager.DtInitial Initial timestep size [s] \n"
-                                        "\t-Grid.File             Name of the file containing the grid \n"
-                                        "\t                       definition in DGF format\n";
-
-        std::cout << errorMessageOut
-                  << "\n";
-    }
-}
-
-int main(int argc, char** argv)
-{
-    using ProblemTypeTag = TTAG(ObstacleBoxProblem);
-    return Dumux::start<ProblemTypeTag>(argc, argv, usage);
-}
diff --git a/test/porousmediumflow/mpnc/implicit/test_boxmpnc.input b/test/porousmediumflow/mpnc/implicit/test_boxmpnc.input
deleted file mode 100644
index 1c58b3803a46e181d2e84bb74183dd297754da68..0000000000000000000000000000000000000000
--- a/test/porousmediumflow/mpnc/implicit/test_boxmpnc.input
+++ /dev/null
@@ -1,14 +0,0 @@
-[TimeManager]
-DtInitial = 250 # [s]
-TEnd = 1e4 # [s]
-
-[Grid]
-UpperRight = 60 40
-Cells = 24 16
-
-[LinearSolver]
-ResidualReduction = 1e-12
-
-[Problem]
-Name = obstaclebox
-
diff --git a/test/porousmediumflow/mpnc/implicit/test_boxmpnckinetic.cc b/test/porousmediumflow/mpnc/implicit/test_boxmpnckinetic.cc
index 11a6ecd5e0b35716bae6816810f5475cd3d62e5a..94784391738e760de16a7eb10958346421f3faf4 100644
--- a/test/porousmediumflow/mpnc/implicit/test_boxmpnckinetic.cc
+++ b/test/porousmediumflow/mpnc/implicit/test_boxmpnckinetic.cc
@@ -16,43 +16,238 @@
  *   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 kinetic modules of the mpnc box model.
+ * \brief Test for the three-phase box model
  */
 #include <config.h>
-
-#include <dumux/common/start.hh>
 #include "evaporationatmosphereproblem.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/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/valgrind.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/newtonmethod.hh>
+#include <dumux/porousmediumflow/nonequilibrium/newtoncontroller.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
 
 /*!
- * \brief Print a usage string for simulations.
+ * \brief Provides an interface for customizing error messages associated with
+ *        reading in parameters.
  *
- * \param progName The name of the program, that was tried to be started.
- * \param errorMsg The error message that was issued by the start function.
- *                 Comprises the thing that went wrong and a general help message.
+ * \param progName  The name of the program, that was tried to be started.
+ * \param errorMsg  The error message that was issued by the start function.
+ *                  Comprises the thing that went wrong and a general help message.
  */
-void printUsage(const char *progName, const std::string &errorMsg)
+void usage(const char *progName, const std::string &errorMsg)
 {
     if (errorMsg.size() > 0) {
         std::string errorMessageOut = "\nUsage: ";
-        errorMessageOut += progName;
-        errorMessageOut += " [options]\n";
-        errorMessageOut += errorMsg;
-        errorMessageOut += "\nAn uncomplete list of mandatory options for this program is:\n"
-                           "[Grid]\n"
-                           "InterfacePosY            Vertical position of the interface [m]\n"
-                           "\n";
+                    errorMessageOut += progName;
+                    errorMessageOut += " [options]\n";
+                    errorMessageOut += errorMsg;
+                    errorMessageOut += "\n\nThe list of mandatory options for this program is:\n"
+                                        "\t-TimeManager.TEnd              End of the simulation [s] \n"
+                                        "\t-TimeManager.DtInitial         Initial timestep size [s] \n"
+                                        "\t-Grid.File                     Name of the file containing the grid \n"
+                                        "\t                               definition in DGF format\n";
 
         std::cout << errorMessageOut
                   << "\n";
     }
 }
 
-int main(int argc, char** argv)
+int main(int argc, char** argv) try
+{
+
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = 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);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv, usage);
+
+    // try to create a grid (from the given grid file or the input file)
+    using GridCreator = typename GET_PROP_TYPE(TypeTag, GridCreator);
+    GridCreator::makeGrid();
+    GridCreator::loadBalance();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = GridCreator::grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(leafGridView.size(GridView::dimension));
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+    problem->setGridVariables(gridVariables);
+
+    // get some time loop parameters
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDivisions = getParam<int>("TimeLoop.MaxTimeStepDivisions");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // check if we are about to restart a previously interrupted simulation
+    Scalar restartTime = 0;
+    if (Parameters::getTree().hasKey("Restart") || Parameters::getTree().hasKey("TimeLoop.Restart"))
+        restartTime = getParam<Scalar>("TimeLoop.Restart");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+    vtkWriter.write(0.0);
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(restartTime, 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 = Dumux::AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using NewtonController = Dumux::NonEquilibriumNewtonController<TypeTag>;
+    using NewtonMethod = Dumux::NewtonMethod<NewtonController, Assembler, LinearSolver>;
+    auto newtonController = std::make_shared<NewtonController>(leafGridView.comm(), timeLoop);
+    NewtonMethod nonLinearSolver(newtonController, assembler, linearSolver);
+
+    // time loop
+    timeLoop->start(); do
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        // try solving the non-linear system
+        for (int i = 0; i < maxDivisions; ++i)
+        {
+            // linearize & solve
+            auto converged = nonLinearSolver.solve(x);
+
+            if (converged)
+                break;
+
+            if (!converged && i == maxDivisions-1)
+                DUNE_THROW(Dune::MathError,
+                            "Newton solver didn't converge after "
+                            << maxDivisions
+                            << " time-step divisions. dt="
+                            << timeLoop->timeStepSize()
+                            << ".\nThe solutions of the current and the previous time steps "
+                            << "have been saved to restart files.");
+        }
+
+        // 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 newton controller
+        timeLoop->setTimeStepSize(newtonController->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 (...)
 {
-    using ProblemTypeTag = TTAG(EvaporationAtmosphereProblem);
-    return Dumux::start<ProblemTypeTag>(argc, argv, printUsage);
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
 }
diff --git a/test/porousmediumflow/mpnc/implicit/test_boxmpnckinetic.input b/test/porousmediumflow/mpnc/implicit/test_boxmpnckinetic.input
index edde273ddfeddf037ba33b820fd75c58d4ba18fb..36b9448b59795a6e2021b09ad2e44bee3fa890ab 100644
--- a/test/porousmediumflow/mpnc/implicit/test_boxmpnckinetic.input
+++ b/test/porousmediumflow/mpnc/implicit/test_boxmpnckinetic.input
@@ -1,24 +1,18 @@
-[TimeManager]
-DtInitial = 1.5 # [s]
+[TimeLoop]
+DtInitial = 0.05 # [s]
 TEnd = 10 # [s]
-MaxTimeStepSize = 2e20 # maximum allowed timestep size
 
 [Grid]
 Cells0 = 14
 Cells1 = 15 15
 Grading0 = 1.0
-Grading1 = 1.2 0.833333
+Grading1 = -0.833333 0.833333
 Positions0 = 0.0 1.0
 Positions1 = 0.0 0.25 0.5
 
-Cells = 14 30
-UpperRight = 1.0 0.5
-InterfacePosY = 0.25
-RefineTop = false
-
 [InitialConditions]
-SwFFInitial = 1e-5 # - 0.001#
-SwPMInitial = 0.999 # -
+SwFFInitial = 1e-4 # - 0.001#
+SwPMInitial = 0.8 # -
 pnInitial = 1e5 # 6.8e6 # 1e5 # 101475 	# Pa
 TInitial = 293
 pnInjection = 100003
@@ -68,10 +62,15 @@ aNonWettingSolidA3 = 1.063e-09 #
 heatIntoSolid = 0  #
 
 [Constants]
-outputName = evaporationatmosphere
 nRestart = 100 # after so many timesteps a restart file should be written
 
+[Problem]
+Name = evaporationatmosphere
+
 [FluidSystem]
 nTemperature = 100 # for the tabulation of water: so many interpolation points
 nPressure = 100 # for the tabulation of water: so many interpolation points
 hammer = 1e4
+
+[Vtk]
+AddVelocity = 1 # enable velocity output
diff --git a/test/porousmediumflow/mpnc/implicit/test_boxmpncthermalnonequil.cc b/test/porousmediumflow/mpnc/implicit/test_boxmpncthermalnonequil.cc
index 5f228fcc6261edc76811302f3a9f65611560c481..27e921b8ce1af5188d03397a3baf9f58466cd739 100644
--- a/test/porousmediumflow/mpnc/implicit/test_boxmpncthermalnonequil.cc
+++ b/test/porousmediumflow/mpnc/implicit/test_boxmpncthermalnonequil.cc
@@ -1,3 +1,5 @@
+// -*- 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.                      *
  *                                                                           *
@@ -14,16 +16,39 @@
  *   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 local thermal non-equilibrium module of the mpnc box model.
+ * \brief Test for the three-phase box model
  */
 #include <config.h>
-
 #include "combustionproblem1c.hh"
 
-#include <dumux/common/start.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/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/valgrind.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/newtonmethod.hh>
+#include <dumux/porousmediumflow/nonequilibrium/newtoncontroller.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
 
 /*!
  * \brief Provides an interface for customizing error messages associated with
@@ -37,30 +62,192 @@ void usage(const char *progName, const std::string &errorMsg)
 {
     if (errorMsg.size() > 0) {
         std::string errorMessageOut = "\nUsage: ";
-        errorMessageOut += progName;
-        errorMessageOut += " [options]\n";
-        errorMessageOut += errorMsg;
-        errorMessageOut += "\n\nThe list of mandatory options for this program is:\n"
-                           "\t-TimeManager.TEnd              End of the simulation [s] \n"
-                           "\t-TimeManager.DtInitial         Initial timestep size [s] \n"
-                           "\t-Grid.File                     Name of the file containing the grid \n"
-                           "\t                               definition in DGF format\n"
-                           "\t-Problem.Name                  String for naming of the output files \n"
-                           "\n";
-
-        std::cout << errorMessageOut << std::endl;
+                    errorMessageOut += progName;
+                    errorMessageOut += " [options]\n";
+                    errorMessageOut += errorMsg;
+                    errorMessageOut += "\n\nThe list of mandatory options for this program is:\n"
+                                        "\t-TimeManager.TEnd              End of the simulation [s] \n"
+                                        "\t-TimeManager.DtInitial         Initial timestep size [s] \n"
+                                        "\t-Grid.File                     Name of the file containing the grid \n"
+                                        "\t                               definition in DGF format\n";
+
+        std::cout << errorMessageOut
+                  << "\n";
     }
 }
 
-int main(int argc, char** argv)
+int main(int argc, char** argv) try
 {
-#if HAVE_SUPERLU
-  using ProblemTypeTag = TTAG(CombustionProblemOneComponent);
-  return Dumux::start<ProblemTypeTag>(argc, argv, usage);
-#else
-#warning CombustionProblemOneComponent skipped, needs SuperLU!
-  std::cerr << "CombustionProblemOneComponent skipped, needs SuperLU!" << std::endl;
-  return 77;
-#endif
 
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = 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);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv, usage);
+
+    // try to create a grid (from the given grid file or the input file)
+    using GridCreator = typename GET_PROP_TYPE(TypeTag, GridCreator);
+    GridCreator::makeGrid();
+    GridCreator::loadBalance();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = GridCreator::grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+    problem->setGridVariables(gridVariables);
+
+    // get some time loop parameters
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDivisions = getParam<int>("TimeLoop.MaxTimeStepDivisions");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // check if we are about to restart a previously interrupted simulation
+    Scalar restartTime = 0;
+    if (Parameters::getTree().hasKey("Restart") || Parameters::getTree().hasKey("TimeLoop.Restart"))
+        restartTime = getParam<Scalar>("TimeLoop.Restart");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+    vtkWriter.write(0.0);
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(restartTime, 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 = Dumux::AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using NewtonController = Dumux::NonEquilibriumNewtonController<TypeTag>;
+    using NewtonMethod = Dumux::NewtonMethod<NewtonController, Assembler, LinearSolver>;
+    auto newtonController = std::make_shared<NewtonController>(leafGridView.comm(), timeLoop);
+    NewtonMethod nonLinearSolver(newtonController, assembler, linearSolver);
+
+    // time loop
+    timeLoop->start(); do
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        // try solving the non-linear system
+        for (int i = 0; i < maxDivisions; ++i)
+        {
+            // linearize & solve
+            auto converged = nonLinearSolver.solve(x);
+
+            if (converged)
+                break;
+
+            if (!converged && i == maxDivisions-1)
+                DUNE_THROW(Dune::MathError,
+                            "Newton solver didn't converge after "
+                            << maxDivisions
+                            << " time-step divisions. dt="
+                            << timeLoop->timeStepSize()
+                            << ".\nThe solutions of the current and the previous time steps "
+                            << "have been saved to restart files.");
+        }
+
+        // make the new solution the old solution
+        xOld = x;
+        problem->setTime(timeLoop->time()+timeLoop->timeStepSize());
+        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 newton controller
+        timeLoop->setTimeStepSize(newtonController->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/mpnc/implicit/test_boxmpncthermalnonequil.input b/test/porousmediumflow/mpnc/implicit/test_boxmpncthermalnonequil.input
index 97b48b78c80f14ef9e0ef1d848b31f3abe6c8e29..ac1f6998df6baa1f37dbd7bdfc8e37fd591ddb12 100644
--- a/test/porousmediumflow/mpnc/implicit/test_boxmpncthermalnonequil.input
+++ b/test/porousmediumflow/mpnc/implicit/test_boxmpncthermalnonequil.input
@@ -1,7 +1,6 @@
-[TimeManager]
+[TimeLoop]
 DtInitial = 5e-1 # [s]
 TEnd = 1e3 # [s]
-MaxTimeStepSize = 2e20  # maximum allowed timestep size
 
 [Grid]
 File =   ./grids/combustionOutflowGridLinNX100LogNx100.dgf
@@ -29,7 +28,7 @@ meanPoreSize = 5e-4 # characteristic length of the system
 factorEnergyTransfer = 1 #
 factorMassTransfer = 1 #
 
-[SpatialParams.OutFlow]
+[SpatialParams.Outflow]
 permeabilityOutFlow = 1e-6 # m^2
 porosityOutFlow = 0.35 #
 soilThermalConductivityOutFlow = 0.01#
@@ -42,14 +41,13 @@ heatCapacity = 466 # J / (kg K) steel:466 granite:800
 Swr =  0.0 #  5e-3
 Snr = 0 #
 
-[Constants]
-outputName =  combustion #
+[Problem]
+Name = combustion
 
+[Constants]
 interfacialTension = 0.0589 # interfacial tension of water at 100 ° C
 
 nRestart = 10000 # after so many timesteps a restart file should be written
 
-[Implicit]
-MassUpwindWeight=1
-MobilityUpwindWeight=1
-
+[Vtk]
+AddVelocity = 1 # enable velocity output
diff --git a/test/porousmediumflow/mpnc/implicit/test_ccmpnc.cc b/test/porousmediumflow/mpnc/implicit/test_ccmpnc.cc
deleted file mode 100644
index 6c0340f8d94ce47344970f49bdf53399d702ce41..0000000000000000000000000000000000000000
--- a/test/porousmediumflow/mpnc/implicit/test_ccmpnc.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-// -*- 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 MpNc CC model.
- */
-#include <config.h>
-#include "obstacleproblem.hh"
-#include <dumux/common/start.hh>
-
-/*!
- * \brief Provides an interface for customizing error messages associated with
- *        reading in parameters.
- *
- * \param progName  The name of the program, that was tried to be started.
- * \param errorMsg  The error message that was issued by the start function.
- *                  Comprises the thing that went wrong and a general help message.
- */
-void usage(const char *progName, const std::string &errorMsg)
-{
-    if (errorMsg.size() > 0) {
-        std::string errorMessageOut = "\nUsage: ";
-                    errorMessageOut += progName;
-                    errorMessageOut += " [options]\n";
-                    errorMessageOut += errorMsg;
-                    errorMessageOut += "\n\nThe list of mandatory options for this program is:\n"
-                                        "\t-TimeManager.TEnd      End of the simulation [s] \n"
-                                        "\t-TimeManager.DtInitial Initial timestep size [s] \n"
-                                        "\t-Grid.File             Name of the file containing the grid \n"
-                                        "\t                       definition in DGF format\n";
-
-        std::cout << errorMessageOut
-                  << "\n";
-    }
-}
-
-int main(int argc, char** argv)
-{
-    using ProblemTypeTag = TTAG(ObstacleCCProblem);
-    return Dumux::start<ProblemTypeTag>(argc, argv, usage);
-}
diff --git a/test/porousmediumflow/mpnc/implicit/test_ccmpnc.input b/test/porousmediumflow/mpnc/implicit/test_mpnc.input
similarity index 80%
rename from test/porousmediumflow/mpnc/implicit/test_ccmpnc.input
rename to test/porousmediumflow/mpnc/implicit/test_mpnc.input
index dbb4c29d38778bbf0932af044daa023205ceb5d5..0ca290b1678da0e719fc2776801d042cb33af522 100644
--- a/test/porousmediumflow/mpnc/implicit/test_ccmpnc.input
+++ b/test/porousmediumflow/mpnc/implicit/test_mpnc.input
@@ -1,4 +1,4 @@
-[TimeManager]
+[TimeLoop]
 DtInitial = 250 # [s]
 TEnd = 1e4 # [s]
 
@@ -10,5 +10,5 @@ Cells = 24 16
 ResidualReduction = 1e-12
 
 [Problem]
-Name = obstaclecc
+Name = obstacle
 
diff --git a/test/porousmediumflow/mpnc/implicit/test_mpnc_obstacle_fv.cc b/test/porousmediumflow/mpnc/implicit/test_mpnc_obstacle_fv.cc
new file mode 100644
index 0000000000000000000000000000000000000000..664daa0e1c38846da5f39f9a34e508bac32a6af8
--- /dev/null
+++ b/test/porousmediumflow/mpnc/implicit/test_mpnc_obstacle_fv.cc
@@ -0,0 +1,252 @@
+// -*- 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 mpnc porousmedium box flow model
+ */
+#include <config.h>
+
+#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 "obstacleproblem.hh"
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/valgrind.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/newtonmethod.hh>
+#include <dumux/nonlinear/newtoncontroller.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+
+/*!
+ * \brief Provides an interface for customizing error messages associated with
+ *        reading in parameters.
+ *
+ * \param progName  The name of the program, that was tried to be started.
+ * \param errorMsg  The error message that was issued by the start function.
+ *                  Comprises the thing that went wrong and a general help message.
+ */
+void usage(const char *progName, const std::string &errorMsg)
+{
+    if (errorMsg.size() > 0) {
+        std::string errorMessageOut = "\nUsage: ";
+                    errorMessageOut += progName;
+                    errorMessageOut += " [options]\n";
+                    errorMessageOut += errorMsg;
+                    errorMessageOut += "\n\nThe list of mandatory arguments for this program is:\n"
+                                        "\t-TimeManager.TEnd               End of the simulation [s] \n"
+                                        "\t-TimeManager.DtInitial          Initial timestep size [s] \n"
+                                        "\t-Grid.LowerLeft                 Lower left corner coordinates\n"
+                                        "\t-Grid.UpperRight                Upper right corner coordinates\n"
+                                        "\t-Grid.Cells                     Number of cells in respective coordinate directions\n"
+                                        "\t                                definition in DGF format\n"
+                                        "\t-SpatialParams.LensLowerLeft   coordinates of the lower left corner of the lens [m] \n"
+                                        "\t-SpatialParams.LensUpperRight  coordinates of the upper right corner of the lens [m] \n"
+                                        "\t-SpatialParams.Permeability     Permeability of the domain [m^2] \n"
+                                        "\t-SpatialParams.PermeabilityLens Permeability of the lens [m^2] \n";
+
+        std::cout << errorMessageOut
+                  << "\n";
+    }
+}
+
+int main(int argc, char** argv) try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = 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);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv, usage);
+
+    // try to create a grid (from the given grid file or the input file)
+    using GridCreator = typename GET_PROP_TYPE(TypeTag, GridCreator);
+    GridCreator::makeGrid();
+    GridCreator::loadBalance();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = GridCreator::grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+
+    // get some time loop parameters
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDivisions = getParam<int>("TimeLoop.MaxTimeStepDivisions");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // check if we are about to restart a previously interrupted simulation
+    Scalar restartTime = 0;
+    if (Parameters::getTree().hasKey("Restart") || Parameters::getTree().hasKey("TimeLoop.Restart"))
+        restartTime = getParam<Scalar>("TimeLoop.Restart");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+    vtkWriter.write(0.0);
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(restartTime, 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 = AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using NewtonController = NewtonController<TypeTag>;
+    using NewtonMethod = NewtonMethod<NewtonController, Assembler, LinearSolver>;
+    auto newtonController = std::make_shared<NewtonController>(leafGridView.comm(), timeLoop);
+    NewtonMethod nonLinearSolver(newtonController, assembler, linearSolver);
+
+    // time loop
+    timeLoop->start(); do
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        // try solving the non-linear system
+        for (int i = 0; i < maxDivisions; ++i)
+        {
+            // linearize & solve
+            auto converged = nonLinearSolver.solve(x);
+
+            if (converged)
+                break;
+
+            if (!converged && i == maxDivisions-1)
+                DUNE_THROW(Dune::MathError,
+                           "Newton solver didn't converge after "
+                           << maxDivisions
+                           << " time-step divisions. dt="
+                           << timeLoop->timeStepSize()
+                           << ".\nThe solutions of the current and the previous time steps "
+                           << "have been saved to restart files.");
+        }
+
+        // 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 newton controller
+        timeLoop->setTimeStepSize(newtonController->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;
+} // end main
+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/references/combustion-reference.vtp b/test/references/combustion-reference.vtp
index 3ec92bb78a700c892ed18bec032b0d6e4d69f25f..db74d7cec389a6bcc8a864a9b8173f334a74930c 100644
--- a/test/references/combustion-reference.vtp
+++ b/test/references/combustion-reference.vtp
@@ -11,16 +11,16 @@
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 0.892001 0.782712 0.707404 0.645213 0.588605 0.53415 0.480437 0.427439 0.375604 0.324586 0.27241
-          0.214602 0.140417 0.0154365 0 0 0 0 0 0 0 0 0
+          1 1 1 0.890662 0.781833 0.706478 0.643996 0.58693 0.531914 0.477623 0.424098 0.371754
+          0.320053 0.266624 0.205894 0.121881 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0.00125753 0.0017509 0.00175044 0.00174967 0.00174887 0.00174803 0.00174715 0.00174623 0.00174526
-          0.00174425 0.00174318 0.00174207 0.0017409 0.00173967 0.00173837 0.00173697 0.00173544 0.00173366 0.0017314 0.00172816 0.00172281
-          0.00171316 0.00169506 0.00166147 0.00160181 0.00150222 0.00134853 0.0011413 0.001
+          0 0 0 0.0013925 0.00175105 0.00175043 0.00174966 0.00174886 0.00174802 0.00174714 0.00174621 0.00174525
+          0.00174423 0.00174317 0.00174206 0.00174089 0.00173966 0.00173836 0.00173696 0.00173543 0.00173365 0.00173139 0.00172811 0.00172271
+          0.0017129 0.00169447 0.00166027 0.00159955 0.00149836 0.00134248 0.0011336 0.001
         </DataArray>
         <DataArray type="Float32" Name="S_n" NumberOfComponents="1" format="ascii">
           0 0 0 0 0 0 0 0 0 0 0 0
@@ -30,53 +30,53 @@
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0.107999 0.217288 0.292596 0.354787 0.411395 0.46585 0.519563 0.572561 0.624396 0.675414 0.72759
-          0.785398 0.859583 0.984564 1 1 1 1 1 1 1 1 1
+          0 0 0 0.109338 0.218167 0.293522 0.356004 0.41307 0.468086 0.522377 0.575902 0.628246
+          0.679947 0.733376 0.794106 0.878119 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 0.998742 0.998249 0.99825 0.99825 0.998251 0.998252 0.998253 0.998254 0.998255
+          1 1 1 0.998608 0.998249 0.99825 0.99825 0.998251 0.998252 0.998253 0.998254 0.998255
           0.998256 0.998257 0.998258 0.998259 0.99826 0.998262 0.998263 0.998265 0.998266 0.998269 0.998272 0.998277
-          0.998287 0.998305 0.998339 0.998398 0.998498 0.998651 0.998859 0.999
+          0.998287 0.998305 0.99834 0.9984 0.998502 0.998658 0.998866 0.999
         </DataArray>
         <DataArray type="Float32" Name="p_w" NumberOfComponents="1" format="ascii">
-          100295 100284 100273 100262 100251 100240 100229 100218 100207 100196 100185 100174
-          100163 100152 100141 100130 100119 100108 100097 100086 100075 100063 100052 100041
-          100030 100019 100008 99997.2 99986.2 99975.2 99964.1 99953.1 99942 99931 99920 99908.9
-          99897.9 99886.9 99875.8 99864.8 99853.7 99842.7 99831.7 99820.6 99809.6 99798.6 99787.5 99776.5
-          99765.4 99754.4 99743.4 99732.3 99721.3 99710.2 99699.2 99688.2 99677.1 99666.1 99655.1 99644
-          99633 99621.9 99610.9 99599.9 99588.8 99577.8 99566.8 99555.7 99544.7 99533.6 99522.6 99511.6
-          99500.5 99489.5 99478.5 99467.4 99456.4 99445.3 99434.3 99423.3 99412.2 99401.2 99390.1 99379.1
-          99368.1 99357 99345.5 99333.4 99320.6 99307 99292.4 99276.2 99257.9 99236.1 99208.9 99172.6
-          99118.6 99022.5 98771.3 98710.7 98700.1 98700 98699.9 98699.8 98699.7 98699.6 98699.5 98699.4
-          98699.2 98699.1 98699 98698.8 98698.6 98698.5 98698.3 98698.1 98697.9 98697.7 98697.5 98697.3
-          98697.1 98696.8 98696.6 98696.3 98696 98695.7 98695.4 98695.1 98694.8 98694.4 98694 98693.6
-          98693.2 98692.8 98692.4 98691.9 98691.4 98690.9 98690.4 98689.8 98689.2 98688.6 98687.9 98687.3
-          98686.6 98685.8 98685 98684.2 98683.4 98682.5 98681.5 98680.5 98679.5 98678.4 98677.3 98676.1
-          98674.9 98673.6 98672.2 98670.8 98669.3 98667.7 98666.1 98664.3 98662.5 98660.6 98658.7 98656.6
-          98654.4 98652.1 98649.8 98650.5 98649.1 98646.4 98643.5 98640.5 98637.3 98634 98630.6 98626.9
-          98623.1 98619.1 98614.9 98610.6 98606 98601.2 98596.1 98590.8 98585.3 98579.5 98573.4 98567.1
-          98560.4 98553.4 98546 98538.1 98529.9 98521.1 98511.7 98502.1
+          100273 100262 100251 100240 100229 100218 100207 100196 100185 100174 100163 100152
+          100141 100130 100119 100107 100096 100085 100074 100063 100052 100041 100030 100019
+          100008 99997.1 99986.1 99975 99964 99952.9 99941.9 99930.9 99919.8 99908.8 99897.8 99886.7
+          99875.7 99864.6 99853.6 99842.6 99831.5 99820.5 99809.5 99798.4 99787.4 99776.3 99765.3 99754.3
+          99743.2 99732.2 99721.1 99710.1 99699.1 99688 99677 99666 99654.9 99643.9 99632.8 99621.8
+          99610.8 99599.7 99588.7 99577.7 99566.6 99555.6 99544.5 99533.5 99522.5 99511.4 99500.4 99489.4
+          99478.3 99467.3 99456.2 99445.2 99434.2 99423.1 99412.1 99401 99390 99379 99367.9 99356.9
+          99345.9 99334.8 99323.8 99312.7 99301.2 99289.1 99276.3 99262.7 99248 99231.8 99213.2 99191.2
+          99163.3 99125.6 99067.7 98954.1 98700.1 98700 98699.9 98699.8 98699.7 98699.6 98699.4 98699.3
+          98699.2 98699 98698.9 98698.8 98698.6 98698.4 98698.2 98698.1 98697.9 98697.7 98697.5 98697.2
+          98697 98696.8 98696.5 98696.2 98696 98695.7 98695.4 98695 98694.7 98694.4 98694 98693.6
+          98693.2 98692.8 98692.3 98691.8 98691.4 98690.8 98690.3 98689.7 98689.2 98688.5 98687.9 98687.2
+          98686.5 98685.8 98685 98684.2 98683.3 98682.4 98681.5 98680.5 98679.5 98678.4 98677.2 98676.1
+          98674.8 98673.5 98672.1 98670.7 98669.2 98667.7 98666 98664.3 98662.5 98660.6 98658.6 98656.5
+          98654.4 98652.1 98649.7 98650.8 98649.1 98646.3 98643.5 98640.5 98637.3 98634 98630.5 98626.9
+          98623.1 98619.1 98614.9 98610.5 98605.9 98601.1 98596.1 98590.8 98585.3 98579.5 98573.4 98567
+          98560.4 98553.3 98545.9 98538.1 98529.8 98521 98511.7 98502.1
         </DataArray>
         <DataArray type="Float32" Name="p_n" NumberOfComponents="1" format="ascii">
-          100295 100284 100273 100262 100251 100240 100229 100218 100207 100196 100185 100174
-          100163 100152 100141 100130 100119 100108 100097 100086 100075 100063 100052 100041
-          100030 100019 100008 99997.2 99986.2 99975.2 99964.1 99953.1 99942 99931 99920 99908.9
-          99897.9 99886.9 99875.8 99864.8 99853.7 99842.7 99831.7 99820.6 99809.6 99798.6 99787.5 99776.5
-          99765.4 99754.4 99743.4 99732.3 99721.3 99710.2 99699.2 99688.2 99677.1 99666.1 99655.1 99644
-          99633 99621.9 99610.9 99599.9 99588.8 99577.8 99566.8 99555.7 99544.7 99533.6 99522.6 99511.6
-          99500.5 99489.5 99478.5 99467.4 99456.4 99445.3 99434.3 99423.3 99412.2 99401.2 99390.1 99379.1
-          99368.1 99705.1 99937 100043 100104 100143 100170 100190 100205 100216 100225 100231
-          100236 100238 100233 100211 100201 100201 100200 100200 100200 100200 100200 100200
+          100273 100262 100251 100240 100229 100218 100207 100196 100185 100174 100163 100152
+          100141 100130 100119 100107 100096 100085 100074 100063 100052 100041 100030 100019
+          100008 99997.1 99986.1 99975 99964 99952.9 99941.9 99930.9 99919.8 99908.8 99897.8 99886.7
+          99875.7 99864.6 99853.6 99842.6 99831.5 99820.5 99809.5 99798.4 99787.4 99776.3 99765.3 99754.3
+          99743.2 99732.2 99721.1 99710.1 99699.1 99688 99677 99666 99654.9 99643.9 99632.8 99621.8
+          99610.8 99599.7 99588.7 99577.7 99566.6 99555.6 99544.5 99533.5 99522.5 99511.4 99500.4 99489.4
+          99478.3 99467.3 99456.2 99445.2 99434.2 99423.1 99412.1 99401 99390 99379 99367.9 99356.9
+          99345.9 99334.8 99323.8 99664.4 99894.3 99999.7 100061 100100 100128 100147 100162 100174
+          100183 100190 100195 100199 100201 100200 100200 100200 100200 100200 100200 100200
           100200 100200 100199 100199 100199 100199 100199 100199 100198 100198 100198 100198
-          100198 100197 100197 100197 100196 100196 100196 100196 100195 100195 100194 100194
+          100197 100197 100197 100197 100196 100196 100196 100196 100195 100195 100194 100194
           100194 100193 100193 100192 100192 100191 100191 100190 100190 100189 100188 100188
           100187 100186 100185 100185 100184 100183 100182 100181 100180 100179 100178 100177
-          100175 100174 100173 100171 100170 100168 100167 100165 100163 100161 100159 100157
-          100155 100153 100150 100148 100145 100142 100139 100136 100133 100130 100127 100123
-          100119 100115 100111 100107 100102 100097 100092 100087 100081 100076 100069 100063
+          100175 100174 100173 100171 100170 100168 100166 100165 100163 100161 100159 100157
+          100155 100153 100150 100148 100145 100142 100139 100136 100133 100130 100126 100123
+          100119 100115 100111 100106 100102 100097 100092 100087 100081 100075 100069 100063
           100056 100049 100042 100034 100026 100018 100009 100000
         </DataArray>
         <DataArray type="Float32" Name="rho_w" NumberOfComponents="1" format="ascii">
@@ -125,16 +125,16 @@
           3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51
           3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51
           3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51 3555.51
-          3555.51 2523.47 1704.94 1258.65 955.016 725.06 541.865 394.285 277.667 188.406 121.588 71.8736
-          35.14 9.84379 0.0130781 0 0 0 0 0 0 0 0 0
+          3555.51 3555.51 3555.51 2512.12 1699.2 1253.71 949.625 718.887 535.088 387.398 271.207 182.67
+          116.565 67.3904 31.0335 6.43745 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 7.07053e-06 1.90847e-05 1.90696e-05 1.90446e-05 1.90184e-05 1.8991e-05 1.89623e-05 1.89323e-05 1.89009e-05
-          1.8868e-05 1.88335e-05 1.87975e-05 1.87596e-05 1.87199e-05 1.86779e-05 1.86329e-05 1.85836e-05 1.85265e-05 1.84543e-05 1.83506e-05 1.8181e-05
-          1.78771e-05 1.73163e-05 1.63073e-05 1.46129e-05 1.20532e-05 8.71939e-06 5.28569e-06 3.55551e-06
+          0 0 0 9.60032e-06 1.90895e-05 1.90692e-05 1.90442e-05 1.9018e-05 1.89906e-05 1.89619e-05 1.89319e-05 1.89005e-05
+          1.88676e-05 1.88332e-05 1.87971e-05 1.87593e-05 1.87195e-05 1.86775e-05 1.86326e-05 1.85832e-05 1.85261e-05 1.84537e-05 1.83493e-05 1.81776e-05
+          1.7869e-05 1.72984e-05 1.62719e-05 1.45512e-05 1.19604e-05 8.60249e-06 5.17936e-06 3.55551e-06
         </DataArray>
         <DataArray type="Float32" Name="lambda_n" NumberOfComponents="1" format="ascii">
           0 0 0 0 0 0 0 0 0 0 0 0
@@ -144,16 +144,16 @@
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 104.784 853.38 2083.72 3714.84 5791.79 8409.59 11666.8 15613.6 20249.6 25629.9 32040.3
-          40300.1 52832.3 81231.1 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3
+          0 0 0 108.729 863.78 2103.58 3753.18 5862.83 8531.28 11857.4 15888.4 20626.5
+          26149.4 32810.8 41655.5 56324.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3
           83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3
           83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3
           83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3
           83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3
           83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3 83183.3
-          83183.3 83183.3 83183.3 83168.1 83154 83154 83154.1 83154.1 83154.1 83154.1 83154.2 83154.2
+          83183.3 83183.3 83183.3 83164.7 83154 83154 83154.1 83154.1 83154.1 83154.1 83154.2 83154.2
           83154.2 83154.3 83154.3 83154.4 83154.4 83154.4 83154.5 83154.5 83154.6 83154.7 83154.8 83155
-          83155.3 83155.9 83156.9 83158.8 83161.7 83165.9 83170.8 83173.7
+          83155.3 83155.9 83157 83158.8 83161.8 83166 83171 83173.7
         </DataArray>
         <DataArray type="Float32" Name="porosity" NumberOfComponents="1" format="ascii">
           0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35
@@ -174,26 +174,7 @@
           0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35
           0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35
         </DataArray>
-        <DataArray type="Float32" Name="boundary types" 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 63
-        </DataArray>
-        <DataArray type="Float32" Name="x_w^H2O" NumberOfComponents="1" format="ascii">
+        <DataArray type="Float32" Name="x_w^SimpleH2O" NumberOfComponents="1" format="ascii">
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
@@ -202,25 +183,25 @@
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 0.127405 0.00960322 0.00960059 0.00960057 0.00960056 0.00960054 0.00960052 0.0096005 0.00960047
-          0.00960045 0.00960042 0.00960038 0.00960034 0.00960029 0.00960023 0.00960016 0.00960007 0.00959996 0.00959982 0.00959964 0.0095994
-          0.00959907 0.00959861 0.00959797 0.00959703 0.00959566 0.00959362 0.00959054 0.00958589 0.00957885 0.00956825 0.00955243 0.0095291
-          0.00949524 0.00944708 0.00938008 0.00928926 0.0091696 0.00901688 0.00882859 0.00860514 0.0083508 0.00807439 0.0077894 0.00751346
-          0.00726757 0.00707518 0.00696192 0.00695624 0.00709154 0.00741008 0.00796956 0.0088535 0.0101874 0.0121642 0.0150833 0.019412
-          0.0258747 0.0355763 0.0501562 0.0719143 0.103804 0.149217 0.211225 0.291191 0.387681 0.49745 0.611724 0.720261
-          0.818136 0.910521 0.976245 1 1 1 1 1 1 1 1 1
+          1 1 1 1 0.00962714 0.00960062 0.00960061 0.0096006 0.00960058 0.00960057 0.00960056 0.00960054
+          0.00960053 0.00960051 0.00960049 0.00960047 0.00960044 0.00960042 0.00960039 0.00960035 0.0096003 0.00960025 0.00960017 0.00960008
+          0.00959995 0.00959977 0.00959952 0.00959914 0.00959858 0.00959772 0.00959638 0.00959427 0.00959094 0.0095857 0.00957751 0.00956486
+          0.00954564 0.00951698 0.00947521 0.00941588 0.00933394 0.00922428 0.00908245 0.00890577 0.00869452 0.0084531 0.00819085 0.00792223
+          0.00766644 0.00744663 0.00728912 0.00722333 0.007283 0.00750913 0.00795548 0.00869774 0.00984802 0.0115778 0.0141542 0.0179963
+          0.023761 0.0324663 0.0456491 0.0655179 0.0950186 0.137666 0.196807 0.274449 0.37041 0.480011 0.595557 0.711721
+          0.814511 0.896329 0.967029 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 0.406912
         </DataArray>
         <DataArray type="Float32" Name="x_w^N2" 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 1.37841e-35 5.81687e-39 5.00264e-43 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
@@ -231,15 +212,15 @@
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0
         </DataArray>
-        <DataArray type="Float32" Name="x_n^H2O" NumberOfComponents="1" format="ascii">
-          0.0352867 0.0352959 0.0353031 0.0353106 0.0353184 0.0353266 0.0353354 0.0353446 0.0353544 0.0353649 0.035376 0.0353879
-          0.0354007 0.0354144 0.0354292 0.0354451 0.0354623 0.0354809 0.0355011 0.0355231 0.0355469 0.0355729 0.0356013 0.0356323
-          0.0356662 0.0357033 0.035744 0.0357887 0.0358377 0.0358915 0.0359508 0.036016 0.0360879 0.0361671 0.0362544 0.0363509
-          0.0364574 0.0365751 0.0367053 0.0368494 0.0370089 0.0371856 0.0373815 0.0375988 0.0378401 0.0381081 0.038406 0.0387376
-          0.0391067 0.0395182 0.0399774 0.0404902 0.0410637 0.0417059 0.042426 0.0432346 0.0441442 0.0451692 0.0463266 0.0476364
-          0.0491221 0.0508118 0.0527388 0.0549435 0.0574745 0.0603907 0.0637644 0.0676845 0.0722614 0.0776329 0.0839721 0.0914991
-          0.100495 0.111321 0.124448 0.140494 0.160276 0.184883 0.215785 0.254983 0.305221 0.370306 0.455564 0.568601
-          0.737149 1 1 1 1 1 1 1 1 1 1 1
+        <DataArray type="Float32" Name="x_n^SimpleH2O" NumberOfComponents="1" format="ascii">
+          0.03529 0.0352982 0.0353048 0.0353116 0.0353187 0.0353262 0.035334 0.0353423 0.035351 0.0353603 0.0353701 0.0353805
+          0.0353917 0.0354036 0.0354164 0.0354301 0.0354449 0.0354608 0.0354781 0.0354967 0.0355169 0.0355389 0.0355628 0.0355889
+          0.0356173 0.0356483 0.0356822 0.0357194 0.0357601 0.0358048 0.0358539 0.0359078 0.0359671 0.0360324 0.0361043 0.0361836
+          0.0362711 0.0363676 0.0364743 0.0365921 0.0367225 0.0368667 0.0370264 0.0372033 0.0373994 0.037617 0.0378585 0.0381268
+          0.0384251 0.038757 0.0391266 0.0395386 0.0399983 0.0405117 0.0410859 0.0417288 0.0424498 0.0432594 0.0441701 0.0451964
+          0.0463552 0.0476667 0.0491543 0.0508461 0.0527757 0.0549833 0.0575177 0.0604379 0.0638164 0.0677422 0.0723259 0.0777054
+          0.0840545 0.0915934 0.100604 0.111448 0.124598 0.140673 0.160491 0.185145 0.216108 0.255385 0.305729 0.370956
+          0.456406 0.56971 0.739447 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
@@ -252,13 +233,13 @@
         </DataArray>
         <DataArray type="Float32" Name="x_n^N2" 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
-          1.65226e-38 0 0 0 0 0 0 0 0 0 0 0
+          0 0 1.62613e-30 6.69146e-34 5.73759e-38 4.47014e-42 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
@@ -269,158 +250,44 @@
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0
         </DataArray>
-        <DataArray type="Float32" Name="velocity_w" NumberOfComponents="1" format="ascii">
-          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
-          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
-          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
-          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
-          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
-          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
-          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
-          0.00048373 0.000510654 0.000535825 0.000539727 0.00054085 0.000541197 0.000541287 0.000541245 0.000540999 0.000540308 0.000538611 0.000534296
-          0.000520827 0.000455797 0.000200614 5.56814e-08 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 -3.62281e-08 -1.33859e-07 -1.95091e-07 -1.94794e-07 -1.94532e-07 -1.94258e-07 -1.93971e-07 -1.93671e-07 -1.93357e-07 -1.93028e-07
-          -1.92684e-07 -1.92324e-07 -1.91946e-07 -1.9155e-07 -1.91132e-07 -1.90687e-07 -1.90205e-07 -1.89661e-07 -1.89001e-07 -1.88102e-07 -1.86704e-07 -1.84284e-07
-          -1.79864e-07 -1.7184e-07 -1.58022e-07 -1.36278e-07 -1.06156e-07 -7.15696e-08 -4.51809e-08 -3.63401e-08
-        </DataArray>
-        <DataArray type="Float32" Name="velocity_n" 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.0029863 -0.0197277 -0.0353787 -0.0378055 -0.0385034 -0.0387194 -0.0387752 -0.0387489 -0.0385963 -0.0381666 -0.0371117 -0.0344282
-          -0.0260534 0.0143823 0.173055 0.297762 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
-          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
-          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
-          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
-          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
-          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
-          0.297796 0.297964 0.298331 0.29862 0.29871 0.298711 0.298711 0.298711 0.298711 0.298712 0.298712 0.298712
-          0.298712 0.298713 0.298713 0.298713 0.298714 0.298714 0.298714 0.298715 0.298715 0.298716 0.298716 0.298716
-          0.298717 0.298717 0.298718 0.298718 0.298719 0.29872 0.298721 0.298722
-        </DataArray>
-        <DataArray type="Float32" Name="T_fluid" NumberOfComponents="1" format="ascii">
-          300.012 300.015 300.016 300.018 300.02 300.022 300.024 300.027 300.03 300.033 300.036 300.04
-          300.044 300.049 300.054 300.06 300.066 300.074 300.081 300.09 300.1 300.11 300.122 300.135
-          300.149 300.165 300.182 300.202 300.223 300.247 300.273 300.302 300.334 300.37 300.409 300.453
-          300.501 300.554 300.613 300.678 300.75 300.829 300.917 301.015 301.123 301.242 301.374 301.52
-          301.681 301.86 302.057 302.276 302.518 302.785 303.081 303.408 303.77 304.17 304.613 305.103
-          305.645 306.245 306.908 307.642 308.454 309.351 310.345 311.443 312.659 314.003 315.491 317.136
-          318.956 320.969 323.197 325.66 328.386 331.401 334.736 338.425 342.507 347.021 352.016 357.544
-          364.28 372.673 372.738 372.768 372.785 372.796 372.804 372.809 372.813 372.816 372.819 372.821
-          372.822 372.822 372.821 442.862 587.288 587.308 587.308 587.308 587.308 587.308 587.309 587.309
-          587.309 587.309 587.309 587.309 587.31 587.31 587.31 587.311 587.312 587.312 587.314 587.315
-          587.318 587.321 587.326 587.333 587.343 587.359 587.383 587.418 587.473 587.555 587.677 587.859
-          588.123 588.501 589.032 589.758 590.728 591.99 593.581 595.525 597.813 600.398 603.178 605.989
-          608.601 610.72 611.999 612.063 610.535 607.071 601.401 593.361 582.919 570.192 555.446 539.075
-          521.579 503.519 485.464 467.961 451.493 436.421 423.002 411.403 401.651 393.574 387.15 382.242
-          378.51 375.441 373.471 372.797 372.796 372.796 372.795 372.794 372.793 372.792 372.791 372.79
+        <DataArray type="Float32" Name="T_w" NumberOfComponents="1" format="ascii">
+          300.01 300.012 300.013 300.015 300.016 300.018 300.02 300.022 300.024 300.027 300.03 300.033
+          300.036 300.04 300.044 300.049 300.054 300.06 300.067 300.074 300.081 300.09 300.1 300.11
+          300.122 300.135 300.149 300.165 300.183 300.202 300.223 300.247 300.273 300.302 300.335 300.37
+          300.409 300.453 300.501 300.554 300.613 300.678 300.75 300.83 300.918 301.016 301.123 301.243
+          301.375 301.521 301.682 301.861 302.059 302.277 302.519 302.787 303.083 303.41 303.772 304.173
+          304.616 305.107 305.649 306.249 306.913 307.647 308.459 309.358 310.352 311.451 312.667 314.013
+          315.501 317.147 318.969 320.983 323.212 325.677 328.405 331.422 334.759 338.451 342.535 347.052
+          352.05 357.583 364.351 372.662 372.726 372.756 372.773 372.784 372.792 372.797 372.801 372.804
+          372.807 372.809 372.81 372.812 587.103 587.308 587.308 587.308 587.308 587.308 587.308 587.308
+          587.308 587.308 587.308 587.308 587.308 587.308 587.308 587.309 587.309 587.309 587.31 587.31
+          587.311 587.312 587.314 587.317 587.321 587.327 587.337 587.353 587.379 587.419 587.482 587.58
+          587.729 587.953 588.28 588.747 589.399 590.282 591.444 592.923 594.739 596.882 599.295 601.866
+          604.415 606.688 608.367 609.081 608.432 606.031 601.538 594.705 585.41 573.685 559.727 543.886
+          526.645 508.571 490.274 472.353 455.343 439.67 425.656 413.488 403.169 394.708 387.968 382.595
+          378.639 375.888 373.738 372.797 372.796 372.796 372.795 372.794 372.793 372.792 372.791 372.79
           372.789 372.788 372.787 372.786 372.784 372.783 372.782 372.78 372.779 372.777 372.775 372.774
           372.772 372.77 372.768 372.766 372.763 372.761 372.758 400
         </DataArray>
         <DataArray type="Float32" Name="T_solid" NumberOfComponents="1" format="ascii">
-          300.013 300.015 300.016 300.018 300.02 300.022 300.024 300.027 300.03 300.033 300.036 300.04
-          300.045 300.049 300.055 300.06 300.067 300.074 300.082 300.091 300.1 300.111 300.123 300.136
-          300.15 300.166 300.184 300.203 300.225 300.248 300.275 300.304 300.336 300.372 300.412 300.455
-          300.504 300.557 300.616 300.682 300.754 300.834 300.923 301.021 301.129 301.249 301.382 301.529
-          301.691 301.871 302.069 302.289 302.532 302.801 303.099 303.428 303.792 304.195 304.64 305.133
-          305.678 306.281 306.948 307.686 308.503 309.406 310.405 311.51 312.733 314.085 315.581 317.236
-          319.067 321.092 323.332 325.81 328.551 331.584 334.939 338.649 342.755 347.296 352.319 357.876
-          364.016 369.69 371.037 371.655 372.07 372.422 372.757 373.09 373.436 373.83 374.344 375.148
-          376.706 380.767 398.046 463.759 602.401 587.31 587.308 587.308 587.308 587.308 587.309 587.309
-          587.309 587.309 587.309 587.309 587.31 587.31 587.31 587.311 587.312 587.312 587.314 587.315
-          587.318 587.321 587.326 587.333 587.344 587.359 587.383 587.419 587.474 587.556 587.679 587.861
-          588.127 588.507 589.039 589.767 590.74 592.004 593.599 595.545 597.836 600.422 603.203 606.013
-          608.623 610.736 612.009 612.064 610.524 607.049 601.366 593.313 582.86 570.123 555.369 538.995
-          521.497 503.438 485.387 467.889 451.428 436.365 422.954 411.363 401.62 393.549 387.131 382.228
-          378.5 375.436 373.47 372.797 372.796 372.796 372.795 372.794 372.793 372.792 372.791 372.79
+          300.011 300.012 300.013 300.015 300.016 300.018 300.02 300.022 300.024 300.027 300.03 300.033
+          300.037 300.04 300.045 300.049 300.055 300.061 300.067 300.074 300.082 300.091 300.1 300.111
+          300.123 300.136 300.15 300.166 300.184 300.203 300.225 300.249 300.275 300.304 300.337 300.372
+          300.412 300.456 300.504 300.557 300.617 300.682 300.755 300.835 300.923 301.022 301.13 301.25
+          301.383 301.53 301.692 301.872 302.071 302.291 302.534 302.803 303.101 303.43 303.794 304.197
+          304.643 305.136 305.682 306.285 306.953 307.692 308.508 309.412 310.412 311.518 312.741 314.094
+          315.591 317.247 319.079 321.106 323.347 325.827 328.57 331.605 334.962 338.675 342.783 347.327
+          352.354 357.914 364.058 369.683 371.007 371.579 371.914 372.151 372.34 372.504 372.653 372.795
+          372.936 373.085 373.251 373.447 740.002 587.321 587.308 587.308 587.308 587.308 587.308 587.308
+          587.308 587.308 587.308 587.308 587.308 587.308 587.308 587.309 587.309 587.309 587.31 587.31
+          587.311 587.312 587.314 587.317 587.321 587.327 587.338 587.354 587.379 587.42 587.483 587.582
+          587.732 587.956 588.284 588.753 589.407 590.293 591.457 592.939 594.758 596.902 599.317 601.889
+          604.436 606.706 608.379 609.086 608.427 606.015 601.51 594.664 585.357 573.622 559.655 543.808
+          526.564 508.49 490.196 472.279 455.276 439.611 425.607 413.446 403.135 394.681 387.948 382.58
+          378.628 375.881 373.734 372.797 372.796 372.796 372.795 372.794 372.793 372.792 372.791 372.79
           372.789 372.788 372.787 372.786 372.784 372.783 372.782 372.78 372.779 372.777 372.775 372.774
           372.772 372.77 372.768 372.766 372.763 372.761 372.758 400
         </DataArray>
-        <DataArray type="Float32" Name="qBoil" NumberOfComponents="1" format="ascii">
-          -1.19464e+12 -1.19443e+12 -1.1942e+12 -1.19397e+12 -1.19373e+12 -1.19348e+12 -1.19322e+12 -1.19294e+12 -1.19266e+12 -1.19236e+12 -1.19204e+12 -1.19171e+12
-          -1.19135e+12 -1.19098e+12 -1.19058e+12 -1.19016e+12 -1.18971e+12 -1.18922e+12 -1.1887e+12 -1.18814e+12 -1.18754e+12 -1.18689e+12 -1.18619e+12 -1.18543e+12
-          -1.1846e+12 -1.18371e+12 -1.18273e+12 -1.18167e+12 -1.18051e+12 -1.17925e+12 -1.17786e+12 -1.17635e+12 -1.1747e+12 -1.17289e+12 -1.1709e+12 -1.16872e+12
-          -1.16633e+12 -1.1637e+12 -1.16082e+12 -1.15764e+12 -1.15416e+12 -1.15033e+12 -1.14611e+12 -1.14148e+12 -1.13638e+12 -1.13078e+12 -1.12461e+12 -1.11783e+12
-          -1.11038e+12 -1.10218e+12 -1.09318e+12 -1.08329e+12 -1.07244e+12 -1.06052e+12 -1.04745e+12 -1.03313e+12 -1.01745e+12 -1.0003e+12 -9.81557e+11 -9.61099e+11
-          -9.38802e+11 -9.14538e+11 -8.88182e+11 -8.59611e+11 -8.28711e+11 -7.95381e+11 -7.59537e+11 -7.21123e+11 -6.80118e+11 -6.36548e+11 -5.90497e+11 -5.42124e+11
-          -4.91681e+11 -4.39531e+11 -3.86167e+11 -3.32234e+11 -2.78547e+11 -2.26105e+11 -1.76091e+11 -1.29855e+11 -8.88626e+10 -5.45938e+10 -2.8352e+10 -1.09481e+10
-          -2.18943e+09 -8.39585e+07 -1.36628e+07 -3.4564e+06 -835194 -108680 -189.899 37764.1 366779 1.38601e+06 4.08346e+06 1.21781e+07
-          4.45887e+07 2.49585e+08 8.78363e+08 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 3.6541e-18 1.20047e-20 1.13351e-20 1.06595e-20 9.98094e-21 9.30158e-21 8.62411e-21 7.95027e-21 7.28331e-21
-          6.62613e-21 5.98118e-21 5.35234e-21 4.7423e-21 4.15505e-21 3.59459e-21 3.06408e-21 2.56728e-21 2.10738e-21 1.6882e-21 1.31263e-21 9.82658e-22
-          7.00438e-22 4.6734e-22 2.83934e-22 1.50104e-22 6.35031e-23 1.80187e-23 6.58686e-17 7.56171e+07
-        </DataArray>
-        <DataArray type="Float32" Name="qsf" NumberOfComponents="1" format="ascii">
-          49450.1 5590.14 3388.54 3589.33 3961.51 4381.75 4847.11 5361.93 5931.43 6561.42 7258.32 8029.24
-          8882.04 9825.42 10869 12023.4 13300.4 14713.1 16275.8 18004.5 19916.8 22032.2 24372.3 26960.9
-          29824.5 32992.2 36496.4 40372.7 44660.8 49404.3 54651.6 60456.3 66877.5 73980.7 81838.4 90530.6
-          100146 110783 122549 135566 149964 165892 183512 203003 224565 248416 274801 303989
-          336276 371993 411503 455210 503559 557043 616208 681656 754057 834147 922744 1.02075e+06
-          1.12917e+06 1.2491e+06 1.38177e+06 1.52853e+06 1.69088e+06 1.87047e+06 2.06914e+06 2.28891e+06 2.53202e+06 2.80095e+06 3.09845e+06 3.42754e+06
-          3.79159e+06 4.1943e+06 4.63979e+06 5.13259e+06 5.67774e+06 6.28078e+06 6.94788e+06 7.68583e+06 8.50217e+06 9.4052e+06 1.04033e+07 1.137e+07
-          -9.08687e+06 -8.43731e+07 -1.4218e+07 -3.95512e+06 -1.22569e+06 -345662 -33588.9 262962 916652 2.3579e+06 5.65264e+06 1.47017e+07
-          4.87983e+07 2.57767e+08 9.4446e+08 7.07975e+07 5.12036e+07 4213.77 8.00523 8.62759 9.73314 11.0446 12.6097 14.4891
-          16.7611 19.5273 22.9216 27.1222 32.3682 38.9886 47.4393 58.3643 72.6868 91.7498 117.535 153
-          202.588 273.009 374.397 521.965 738.337 1056.6 1524.18 2207.31 3195.49 4605.02 6580.32 9290.35
-          12918.4 17642 23601.9 30860.5 39351 48823 58795.6 68526.8 77013.9 83034.7 85236 82268.6
-          72956.7 56483.4 32562.1 1565.05 -35419.6 -76621.7 -119717 -162038 -200857 -233659 -258409 -273801
-          -279299 -275181 -262566 -242950 -218172 -190580 -161951 -133615 -107211 -84759.6 -64345.8 -46918.2
-          -34045.1 -15762.3 -4017.79 0.317088 0.0421989 0.0414031 0.0405691 0.0396955 0.03878 0.0378209 0.0368158 0.0357629
-          0.0346596 0.0335036 0.0322924 0.0310232 0.0296934 0.0283 0.0268401 0.0253103 0.0237074 0.0220276 0.0202674 0.0184223
-          0.0164878 0.0144585 0.0123284 0.0100908 0.00773976 0.00527273 0.858975 7.56171e+07
-        </DataArray>
-        <DataArray type="Float32" Name="h_w" NumberOfComponents="1" format="ascii">
-          -308423 -308412 -308405 -308398 -308390 -308381 -308371 -308360 -308348 -308335 -308321 -308304
-          -308286 -308266 -308244 -308220 -308193 -308163 -308130 -308094 -308054 -308009 -307960 -307905
-          -307845 -307778 -307704 -307622 -307532 -307432 -307321 -307199 -307064 -306914 -306748 -306565
-          -306362 -306138 -305890 -305615 -305312 -304976 -304605 -304194 -303739 -303236 -302680 -302065
-          -301384 -300631 -299798 -298876 -297857 -296729 -295482 -294102 -292576 -290887 -289019 -286953
-          -284667 -282139 -279342 -276248 -272825 -269038 -264850 -260217 -255091 -249421 -243149 -236211
-          -228536 -220045 -210653 -200263 -188770 -176056 -161992 -146434 -129223 -110184 -89123.2 -65808.7
-          -37404.2 -2009.95 -1736.09 -1611.42 -1539.55 -1493.08 -1461.01 -1437.9 -1420.66 -1407.46 -1397.2 -1389.33
-          -1383.74 -1381.18 -1387.57 293976 903020 903105 903106 903106 903106 903106 903107 903107
-          903107 903108 903109 903110 903111 903112 903114 903116 903119 903123 903128 903136
-          903146 903160 903180 903210 903253 903319 903419 903570 903798 904144 904661 905427
-          906542 908137 910373 913436 917528 922847 929559 937754 947404 958305 970028 981883
-          992897 1.00183e+06 1.00723e+06 1.0075e+06 1.00105e+06 986445 962536 928630 884596 830927 768741 699707
-          625927 549766 473628 399817 330371 266814 210226 161312 120190 86128.8 59037 38340.1
-          22605 9660.93 1355.8 -1487.83 -1490.91 -1494.15 -1497.54 -1501.09 -1504.81 -1508.7 -1512.79 -1517.07
-          -1521.55 -1526.25 -1531.17 -1536.32 -1541.73 -1547.39 -1553.32 -1559.53 -1566.04 -1572.86 -1580.01 -1587.5
-          -1595.35 -1603.57 -1612.18 -1621.21 -1630.67 -1640.58 -1650.96 113226
-        </DataArray>
-        <DataArray type="Float32" Name="h_n" NumberOfComponents="1" format="ascii">
-          2.1086e+06 2.10861e+06 2.10861e+06 2.10862e+06 2.10862e+06 2.10862e+06 2.10863e+06 2.10863e+06 2.10864e+06 2.10865e+06 2.10865e+06 2.10866e+06
-          2.10867e+06 2.10868e+06 2.10869e+06 2.1087e+06 2.10871e+06 2.10873e+06 2.10874e+06 2.10876e+06 2.10878e+06 2.1088e+06 2.10883e+06 2.10885e+06
-          2.10888e+06 2.10891e+06 2.10895e+06 2.10899e+06 2.10903e+06 2.10908e+06 2.10913e+06 2.10919e+06 2.10926e+06 2.10933e+06 2.10941e+06 2.1095e+06
-          2.10959e+06 2.1097e+06 2.10982e+06 2.10995e+06 2.1101e+06 2.11026e+06 2.11044e+06 2.11064e+06 2.11086e+06 2.1111e+06 2.11137e+06 2.11166e+06
-          2.11199e+06 2.11235e+06 2.11275e+06 2.1132e+06 2.11369e+06 2.11423e+06 2.11483e+06 2.11549e+06 2.11623e+06 2.11704e+06 2.11794e+06 2.11893e+06
-          2.12003e+06 2.12125e+06 2.1226e+06 2.12408e+06 2.12573e+06 2.12755e+06 2.12957e+06 2.1318e+06 2.13426e+06 2.13699e+06 2.14001e+06 2.14335e+06
-          2.14704e+06 2.15113e+06 2.15564e+06 2.16064e+06 2.16617e+06 2.17229e+06 2.17906e+06 2.18654e+06 2.19482e+06 2.20399e+06 2.21412e+06 2.22534e+06
-          2.239e+06 2.25603e+06 2.25616e+06 2.25622e+06 2.25626e+06 2.25628e+06 2.2563e+06 2.25631e+06 2.25632e+06 2.25632e+06 2.25633e+06 2.25633e+06
-          2.25633e+06 2.25634e+06 2.25633e+06 2.39845e+06 2.69149e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06
-          2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69153e+06 2.69154e+06 2.69154e+06 2.69154e+06
-          2.69155e+06 2.69155e+06 2.69156e+06 2.69158e+06 2.6916e+06 2.69163e+06 2.69168e+06 2.69175e+06 2.69186e+06 2.69203e+06 2.69228e+06 2.69264e+06
-          2.69318e+06 2.69395e+06 2.69502e+06 2.6965e+06 2.69847e+06 2.70103e+06 2.70426e+06 2.7082e+06 2.71284e+06 2.71809e+06 2.72373e+06 2.72943e+06
-          2.73473e+06 2.73903e+06 2.74162e+06 2.74176e+06 2.73865e+06 2.73163e+06 2.72012e+06 2.70381e+06 2.68262e+06 2.6568e+06 2.62688e+06 2.59366e+06
-          2.55816e+06 2.52152e+06 2.48489e+06 2.44937e+06 2.41596e+06 2.38538e+06 2.35815e+06 2.33461e+06 2.31483e+06 2.29844e+06 2.28541e+06 2.27545e+06
-          2.26788e+06 2.26165e+06 2.25765e+06 2.25628e+06 2.25628e+06 2.25628e+06 2.25628e+06 2.25628e+06 2.25628e+06 2.25627e+06 2.25627e+06 2.25627e+06
-          2.25627e+06 2.25627e+06 2.25626e+06 2.25626e+06 2.25626e+06 2.25626e+06 2.25625e+06 2.25625e+06 2.25625e+06 2.25624e+06 2.25624e+06 2.25624e+06
-          2.25623e+06 2.25623e+06 2.25622e+06 2.25622e+06 2.25622e+06 2.25621e+06 2.25621e+06 2.31148e+06
-        </DataArray>
         <DataArray type="Float32" Name="reynoldsNumber_w" NumberOfComponents="1" format="ascii">
           0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878
           0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878
@@ -429,35 +296,35 @@
           0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878
           0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878
           0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878 0.888878
-          0.897791 0.947762 0.994478 1.00172 1.0038 1.00445 1.00462 1.00454 1.00408 1.0028 0.99965 0.99164
-          0.966643 0.845948 0.372336 0.000103343 0 0 0 0 0 0 0 0
+          0.888878 0.888878 0.907573 0.98916 1.00082 1.00451 1.00605 1.00681 1.00722 1.00745 1.00756 1.00758
+          1.00747 1.00721 1.00674 0.985111 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 6.72384e-05 0.000248439 0.000362085 0.000361532 0.000361046 0.000360538 0.000360006 0.000359449 0.000358866 0.000358256
-          0.000357617 0.000356948 0.000356247 0.000355512 0.000354736 0.000353911 0.000353016 0.000352007 0.000350781 0.000349112 0.000346519 0.000342026
-          0.000333823 0.000318931 0.000293285 0.000252929 0.000197024 0.000132832 8.38546e-05 6.74464e-05
+          0 0 0.000182642 0.000362398 0.000361762 0.000361288 0.000360791 0.000360271 0.000359727 0.000359157 0.000358561 0.000357937
+          0.000357284 0.000356599 0.000355882 0.000355128 0.000354331 0.000353478 0.000352542 0.000351459 0.000350085 0.000348104 0.000344847 0.000338991
+          0.000328164 0.000308687 0.00027604 0.000226887 0.000163183 9.82459e-05 6.74467e-05 6.74467e-05
         </DataArray>
-        <DataArray type="Float32" Name="reynoldsNumber_n" 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.20854 1.37763 2.47058 2.64005 2.68879 2.70387 2.70776 2.70593 2.69527 2.66526 2.5916 2.4042
-          1.81937 1.00435 12.0848 20.7934 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
-          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
-          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
-          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
-          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
-          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
-          20.7958 20.8076 20.8332 20.8533 20.8597 20.8597 20.8597 20.8597 20.8597 20.8597 20.8598 20.8598
-          20.8598 20.8598 20.8598 20.8599 20.8599 20.8599 20.8599 20.86 20.86 20.86 20.8601 20.8601
-          20.8601 20.8602 20.8602 20.8602 20.8603 20.8603 20.8604 20.8605
+        <DataArray type="Float32" Name="nusseltNumber_w" NumberOfComponents="1" format="ascii">
+          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
+          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
+          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
+          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
+          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
+          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
+          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
+          3.23375 3.23375 3.24926 3.31548 3.32476 3.32769 3.32891 3.32951 3.32983 3.33002 3.33011 3.33012
+          3.33004 3.32983 3.32946 3.31224 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2.00757 2.01141 2.0114 2.01139 2.01138 2.01137 2.01136 2.01135 2.01134 2.01133
+          2.01132 2.0113 2.01129 2.01128 2.01126 2.01124 2.01123 2.01121 2.01118 2.01114 2.01108 2.01097
+          2.01075 2.01037 2.00969 2.00862 2.00707 2.00522 2.00416 2.00416
         </DataArray>
         <DataArray type="Float32" Name="prandtlNumber_w" NumberOfComponents="1" format="ascii">
           1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419
@@ -478,6 +345,44 @@
           1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419
           1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419 1.74419
         </DataArray>
+        <DataArray type="Float32" Name="reynoldsNumber_n" 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.437394 2.34618 2.61902 2.70532 2.74139 2.75905 2.76861 2.77402 2.77674 2.77705
+          2.77459 2.76852 2.75745 2.25144 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
+          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
+          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
+          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
+          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
+          20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958 20.7958
+          20.7958 20.7958 20.8041 20.8217 20.8217 20.8217 20.8218 20.8218 20.8218 20.8218 20.8218 20.8219
+          20.8219 20.8219 20.8219 20.8219 20.822 20.822 20.822 20.822 20.8221 20.8221 20.8221 20.8222
+          20.8222 20.8222 20.8223 20.8223 20.8224 20.8224 20.8225 20.8225
+        </DataArray>
+        <DataArray type="Float32" Name="nusseltNumber_n" NumberOfComponents="1" format="ascii">
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2 2 2 2 2 2 2 2 2 2
+          2 2 2.66606 3.82477 3.94928 3.98757 4.00343 4.01116 4.01534 4.0177 4.01889 4.01902
+          4.01795 4.0153 4.01046 3.78019 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
+          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
+          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
+          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
+          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
+          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
+          8.75735 8.75735 8.75897 8.7624 8.7624 8.7624 8.76241 8.76241 8.76241 8.76241 8.76242 8.76242
+          8.76243 8.76243 8.76244 8.76244 8.76245 8.76245 8.76245 8.76246 8.76247 8.76247 8.76248 8.76249
+          8.76249 8.7625 8.76251 8.76251 8.76252 8.76253 8.76256 8.76256
+        </DataArray>
         <DataArray type="Float32" Name="prandtlNumber_n" NumberOfComponents="1" format="ascii">
           0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545
           0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545
@@ -497,45 +402,66 @@
           0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545
           0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545 0.983545
         </DataArray>
-        <DataArray type="Float32" Name="nusseltNumber_w" NumberOfComponents="1" format="ascii">
-          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
-          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
-          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
-          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
-          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
-          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
-          3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375 3.23375
-          3.24116 3.28216 3.31972 3.32548 3.32713 3.32764 3.32777 3.32771 3.32735 3.32633 3.32383 3.31746
-          3.29743 3.19765 2.73195 2.00538 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2.00415 2.0091 2.01141 2.0114 2.01139 2.01138 2.01137 2.01136 2.01135 2.01134
-          2.01132 2.01131 2.0113 2.01128 2.01127 2.01125 2.01124 2.01122 2.01119 2.01116 2.01111 2.01102
-          2.01086 2.01057 2.01005 2.0092 2.00792 2.00625 2.00474 2.00416
+      </PointData>
+      <CellData Scalars="velocity_w (m/s)">
+        <DataArray type="Float32" Name="velocity_w (m/s)" NumberOfComponents="1" format="ascii">
+          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
+          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
+          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
+          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
+          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
+          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
+          0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927 0.000478927
+          0.000478927 0.000478927 0.000489 0.00053296 0.000539243 0.000541231 0.000542061 0.000542468 0.000542688 0.000542813 0.000542875 0.000542883
+          0.000542826 0.000542686 0.000542431 0.000530778 -0 -0 -0 -0 -0 -0 -0 -0
+          -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
+          -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
+          -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
+          -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
+          -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
+          -0 -0 -9.84073e-08 -1.9526e-07 -1.94917e-07 -1.94662e-07 -1.94394e-07 -1.94114e-07 -1.93821e-07 -1.93514e-07 -1.93193e-07 -1.92857e-07
+          -1.92505e-07 -1.92136e-07 -1.91749e-07 -1.91343e-07 -1.90913e-07 -1.90454e-07 -1.8995e-07 -1.89366e-07 -1.88626e-07 -1.87558e-07 -1.85803e-07 -1.82648e-07
+          -1.76815e-07 -1.6632e-07 -1.4873e-07 -1.22247e-07 -8.79229e-08 -5.29349e-08 -3.63403e-08
         </DataArray>
-        <DataArray type="Float32" Name="nusseltNumber_n" NumberOfComponents="1" format="ascii">
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2.42708 3.32578 3.88222 3.95865 3.98027 3.98693 3.98864 3.98784 3.98313 3.96986 3.93701 3.85171
-          3.56655 3.09679 6.87904 8.75688 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
-          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
-          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
-          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
-          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
-          8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735 8.75735
-          8.75735 8.75964 8.76463 8.76856 8.76979 8.76979 8.76979 8.7698 8.7698 8.7698 8.76981 8.76981
-          8.76981 8.76982 8.76982 8.76983 8.76983 8.76984 8.76984 8.76985 8.76985 8.76986 8.76986 8.76987
-          8.76988 8.76988 8.76989 8.7699 8.76991 8.76991 8.76993 8.76995
+        <DataArray type="Float32" Name="velocity_n (m/s)" 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.00626349 -0.0335972 -0.0375044 -0.0387401 -0.0392568 -0.0395096 -0.0396466 -0.039724 -0.0397629 -0.0397673
+          -0.0397322 -0.0396452 -0.0394867 -0.0322406 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
+          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
+          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
+          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
+          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
+          0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796 0.297796
+          0.297796 0.297796 0.297915 0.298167 0.298167 0.298167 0.298168 0.298168 0.298168 0.298168 0.298169 0.298169
+          0.298169 0.29817 0.29817 0.29817 0.298171 0.298171 0.298171 0.298172 0.298172 0.298173 0.298173 0.298174
+          0.298174 0.298175 0.298175 0.298176 0.298176 0.298177 0.298179
         </DataArray>
-      </PointData>
+        <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
+        </DataArray>
+      </CellData>
       <Points>
         <DataArray type="Float32" Name="Coordinates" NumberOfComponents="3" format="ascii">
           0 0 0 0.001 0 0 0.002 0 0 0.003 0 0
diff --git a/test/references/evaporationatmosphere-reference.vtu b/test/references/evaporationatmosphere-reference.vtu
index 384ca860ced896470d8e13823a032259f13ec8bb..0c5da736c085d2887e82504466e0716e719113ef 100644
--- a/test/references/evaporationatmosphere-reference.vtu
+++ b/test/references/evaporationatmosphere-reference.vtu
@@ -2,170 +2,170 @@
 <VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
   <UnstructuredGrid>
     <Piece NumberOfCells="420" NumberOfPoints="465">
-      <PointData Scalars="S_w" Vectors="velocity_w">
+      <PointData Scalars="S_w" Vectors="velocity_w (m/s)">
         <DataArray type="Float32" Name="S_w" NumberOfComponents="1" format="ascii">
-          0.999025 0.999025 0.999024 0.999024 0.999025 0.999024 0.999025 0.999024 0.999025 0.999024 0.999025 0.999024
-          0.999025 0.999024 0.999025 0.999024 0.999025 0.999024 0.999025 0.999024 0.999025 0.999024 0.999025 0.999024
-          0.999025 0.999024 0.999025 0.999024 0.999025 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024
-          0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024
-          0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024 0.999024
-          0.999023 0.999023 0.999023 0.999023 0.999023 0.999023 0.999023 0.999023 0.999023 0.999023 0.999023 0.999023
-          0.999023 0.999023 0.999023 0.999022 0.999022 0.999022 0.999022 0.999022 0.999022 0.999022 0.999022 0.999022
-          0.999022 0.999022 0.999022 0.999022 0.999022 0.999022 0.999021 0.999021 0.999021 0.999021 0.999021 0.999021
-          0.999021 0.999021 0.999021 0.999021 0.999021 0.999021 0.999021 0.999021 0.999021 0.99902 0.99902 0.99902
-          0.99902 0.99902 0.99902 0.99902 0.99902 0.99902 0.99902 0.99902 0.99902 0.99902 0.99902 0.99902
-          0.999019 0.999019 0.999019 0.999019 0.999019 0.999019 0.999019 0.999019 0.999019 0.999019 0.999019 0.999019
-          0.999019 0.999019 0.999019 0.999018 0.999018 0.999018 0.999018 0.999018 0.999018 0.999018 0.999018 0.999018
-          0.999018 0.999018 0.999018 0.999018 0.999018 0.999018 0.999016 0.999016 0.999016 0.999016 0.999016 0.999016
-          0.999016 0.999016 0.999016 0.999016 0.999016 0.999016 0.999016 0.999016 0.999016 0.999014 0.999014 0.999014
-          0.999014 0.999014 0.999014 0.999014 0.999014 0.999014 0.999014 0.999014 0.999014 0.999014 0.999014 0.999014
-          0.999011 0.999011 0.999011 0.999011 0.999011 0.999011 0.999011 0.999011 0.999011 0.999011 0.999011 0.999011
-          0.999011 0.999011 0.999011 0.999008 0.999008 0.999008 0.999008 0.999008 0.999008 0.999008 0.999008 0.999008
-          0.999008 0.999008 0.999008 0.999008 0.999008 0.999008 0.999005 0.999005 0.999005 0.999005 0.999005 0.999005
-          0.999005 0.999005 0.999005 0.999005 0.999005 0.999005 0.999005 0.999005 0.999005 0.998828 0.998924 0.998929
-          0.998929 0.998929 0.998929 0.998929 0.998928 0.998928 0.998928 0.998927 0.998927 0.998927 0.998927 0.998927
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
-          1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05 1e-05
+          0.826778 0.826778 0.802471 0.802471 0.826778 0.802471 0.826778 0.802471 0.826777 0.80247 0.826777 0.80247
+          0.826776 0.802469 0.826776 0.802468 0.826775 0.802468 0.826774 0.802467 0.826774 0.802467 0.826773 0.802466
+          0.826773 0.802466 0.826773 0.802466 0.826773 0.802465 0.800574 0.800574 0.800574 0.800573 0.800573 0.800572
+          0.800572 0.800571 0.80057 0.80057 0.800569 0.800568 0.800568 0.800568 0.800568 0.800364 0.800364 0.800363
+          0.800363 0.800362 0.800362 0.800361 0.80036 0.80036 0.800359 0.800358 0.800358 0.800357 0.800357 0.800357
+          0.800283 0.800283 0.800283 0.800282 0.800282 0.800281 0.80028 0.80028 0.800279 0.800278 0.800278 0.800277
+          0.800276 0.800276 0.800276 0.800223 0.800223 0.800222 0.800222 0.800221 0.800221 0.80022 0.800219 0.800219
+          0.800218 0.800217 0.800217 0.800216 0.800215 0.800215 0.800171 0.800171 0.800171 0.80017 0.80017 0.800169
+          0.800168 0.800168 0.800167 0.800166 0.800166 0.800165 0.800164 0.800164 0.800163 0.800113 0.800112 0.800112
+          0.800111 0.800111 0.80011 0.800109 0.800109 0.800108 0.800107 0.800107 0.800106 0.800105 0.800105 0.800104
+          0.799969 0.799969 0.799968 0.799968 0.799968 0.799967 0.799966 0.799966 0.799965 0.799965 0.799964 0.799963
+          0.799963 0.799963 0.799962 0.799436 0.799437 0.799438 0.799438 0.799438 0.799437 0.799437 0.799437 0.799437
+          0.799436 0.799436 0.799436 0.799436 0.799437 0.799439 0.797666 0.79767 0.797673 0.797675 0.797676 0.797677
+          0.797678 0.797678 0.797679 0.797679 0.79768 0.797681 0.797682 0.797688 0.797697 0.793036 0.793049 0.793058
+          0.793063 0.793067 0.79307 0.793073 0.793076 0.793078 0.793081 0.793083 0.793087 0.793092 0.793106 0.793136
+          0.783646 0.783676 0.783695 0.783706 0.783714 0.783721 0.783727 0.783733 0.783738 0.783744 0.783749 0.783756
+          0.783766 0.783794 0.783866 0.768712 0.768766 0.768796 0.768813 0.768826 0.768837 0.768847 0.768856 0.768865
+          0.768874 0.768883 0.768894 0.76891 0.768949 0.769085 0.749465 0.749547 0.749585 0.749608 0.749626 0.74964
+          0.749652 0.749664 0.749675 0.749687 0.749699 0.749713 0.749733 0.749779 0.749988 0.728238 0.728347 0.72839
+          0.728417 0.728437 0.728453 0.728467 0.72848 0.728493 0.728506 0.728519 0.728536 0.728559 0.728606 0.728885
+          0.000100017 0.000100017 0.000100017 0.000100017 0.000100017 0.000100017 0.000100017 0.000100017 0.000100017 0.000100017 0.000100017 0.000100017
+          0.000100017 0.000100017 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001
+          0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 9.99972e-05 9.99972e-05 9.99972e-05 9.99972e-05 9.99972e-05 9.99972e-05
+          9.99972e-05 9.99972e-05 9.99972e-05 9.99972e-05 9.99972e-05 9.99972e-05 9.99972e-05 9.99972e-05 0.0001
         </DataArray>
         <DataArray type="Float32" Name="S_n" NumberOfComponents="1" format="ascii">
-          0.000975111 0.000975111 0.000975576 0.000975576 0.000975112 0.000975576 0.000975113 0.000975577 0.000975114 0.000975578 0.000975114 0.000975579
-          0.000975115 0.00097558 0.000975116 0.000975581 0.000975117 0.000975582 0.000975117 0.000975582 0.000975118 0.000975583 0.000975118 0.000975583
-          0.000975119 0.000975584 0.000975119 0.000975584 0.000975119 0.000975584 0.000975978 0.000975978 0.000975979 0.000975979 0.00097598 0.000975981
-          0.000975982 0.000975983 0.000975984 0.000975984 0.000975985 0.000975985 0.000975986 0.000975986 0.000975986 0.000976461 0.000976461 0.000976461
-          0.000976462 0.000976463 0.000976464 0.000976465 0.000976466 0.000976467 0.000976467 0.000976468 0.000976468 0.000976468 0.000976469 0.000976469
-          0.000977041 0.000977041 0.000977042 0.000977042 0.000977043 0.000977044 0.000977045 0.000977046 0.000977047 0.000977047 0.000977048 0.000977048
-          0.000977049 0.000977049 0.000977049 0.000977738 0.000977738 0.000977739 0.000977739 0.00097774 0.000977741 0.000977742 0.000977743 0.000977744
-          0.000977744 0.000977745 0.000977745 0.000977746 0.000977746 0.000977746 0.000978575 0.000978576 0.000978576 0.000978577 0.000978578 0.000978579
-          0.00097858 0.000978581 0.000978581 0.000978582 0.000978583 0.000978583 0.000978583 0.000978583 0.000978583 0.000979582 0.000979583 0.000979583
-          0.000979584 0.000979585 0.000979586 0.000979587 0.000979588 0.000979589 0.000979589 0.00097959 0.00097959 0.000979591 0.000979591 0.000979591
-          0.000980794 0.000980794 0.000980795 0.000980796 0.000980797 0.000980798 0.000980799 0.000980799 0.0009808 0.000980801 0.000980801 0.000980802
-          0.000980802 0.000980802 0.000980802 0.000982251 0.000982252 0.000982252 0.000982253 0.000982254 0.000982255 0.000982256 0.000982257 0.000982258
-          0.000982258 0.000982259 0.000982259 0.00098226 0.00098226 0.00098226 0.000984006 0.000984006 0.000984007 0.000984008 0.000984009 0.00098401
-          0.000984011 0.000984012 0.000984013 0.000984013 0.000984014 0.000984014 0.000984015 0.000984015 0.000984015 0.00098612 0.00098612 0.000986121
-          0.000986123 0.000986124 0.000986125 0.000986126 0.000986126 0.000986127 0.000986128 0.000986128 0.000986129 0.000986129 0.000986129 0.000986129
-          0.000988669 0.000988669 0.00098867 0.000988672 0.000988673 0.000988674 0.000988675 0.000988676 0.000988676 0.000988677 0.000988677 0.000988678
-          0.000988678 0.000988678 0.000988678 0.000991744 0.000991745 0.000991747 0.000991748 0.000991749 0.00099175 0.000991751 0.000991752 0.000991753
-          0.000991753 0.000991754 0.000991754 0.000991754 0.000991755 0.000991755 0.00099546 0.000995461 0.000995463 0.000995465 0.000995466 0.000995467
-          0.000995468 0.000995469 0.00099547 0.00099547 0.000995471 0.000995471 0.000995472 0.000995472 0.000995472 0.00117159 0.00107565 0.00107113
-          0.0010706 0.00107072 0.00107103 0.00107135 0.00107162 0.00107184 0.00107201 0.00107263 0.00107298 0.00107316 0.00107325 0.00107312
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
-          0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999 0.99999
+          0.173222 0.173222 0.197529 0.197529 0.173222 0.197529 0.173222 0.197529 0.173223 0.19753 0.173223 0.19753
+          0.173224 0.197531 0.173224 0.197532 0.173225 0.197532 0.173226 0.197533 0.173226 0.197533 0.173227 0.197534
+          0.173227 0.197534 0.173227 0.197534 0.173227 0.197535 0.199426 0.199426 0.199426 0.199427 0.199427 0.199428
+          0.199428 0.199429 0.19943 0.19943 0.199431 0.199432 0.199432 0.199432 0.199432 0.199636 0.199636 0.199637
+          0.199637 0.199638 0.199638 0.199639 0.19964 0.19964 0.199641 0.199642 0.199642 0.199643 0.199643 0.199643
+          0.199717 0.199717 0.199717 0.199718 0.199718 0.199719 0.19972 0.19972 0.199721 0.199722 0.199722 0.199723
+          0.199724 0.199724 0.199724 0.199777 0.199777 0.199778 0.199778 0.199779 0.199779 0.19978 0.199781 0.199781
+          0.199782 0.199783 0.199783 0.199784 0.199785 0.199785 0.199829 0.199829 0.199829 0.19983 0.19983 0.199831
+          0.199832 0.199832 0.199833 0.199834 0.199834 0.199835 0.199836 0.199836 0.199837 0.199887 0.199888 0.199888
+          0.199889 0.199889 0.19989 0.199891 0.199891 0.199892 0.199893 0.199893 0.199894 0.199895 0.199895 0.199896
+          0.200031 0.200031 0.200032 0.200032 0.200032 0.200033 0.200034 0.200034 0.200035 0.200035 0.200036 0.200037
+          0.200037 0.200037 0.200038 0.200564 0.200563 0.200562 0.200562 0.200562 0.200563 0.200563 0.200563 0.200563
+          0.200564 0.200564 0.200564 0.200564 0.200563 0.200561 0.202334 0.20233 0.202327 0.202325 0.202324 0.202323
+          0.202322 0.202322 0.202321 0.202321 0.20232 0.202319 0.202318 0.202312 0.202303 0.206964 0.206951 0.206942
+          0.206937 0.206933 0.20693 0.206927 0.206924 0.206922 0.206919 0.206917 0.206913 0.206908 0.206894 0.206864
+          0.216354 0.216324 0.216305 0.216294 0.216286 0.216279 0.216273 0.216267 0.216262 0.216256 0.216251 0.216244
+          0.216234 0.216206 0.216134 0.231288 0.231234 0.231204 0.231187 0.231174 0.231163 0.231153 0.231144 0.231135
+          0.231126 0.231117 0.231106 0.23109 0.231051 0.230915 0.250535 0.250453 0.250415 0.250392 0.250374 0.25036
+          0.250348 0.250336 0.250325 0.250313 0.250301 0.250287 0.250267 0.250221 0.250012 0.271762 0.271653 0.27161
+          0.271583 0.271563 0.271547 0.271533 0.27152 0.271507 0.271494 0.271481 0.271464 0.271441 0.271394 0.271115
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
+          0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999 0.9999
         </DataArray>
         <DataArray type="Float32" Name="p_w" NumberOfComponents="1" format="ascii">
-          100161 100161 100127 100127 100161 100127 100161 100127 100161 100127 100161 100127
-          100161 100127 100161 100127 100161 100127 100160 100126 100160 100126 100160 100126
-          100160 100126 100160 100126 100160 100126 100086 100086 100086 100086 100086 100086
-          100086 100086 100086 100086 100086 100086 100086 100086 100086 100037 100037 100037
-          100037 100037 100037 100037 100037 100037 100037 100037 100037 100037 100037 100037
-          99978.7 99978.7 99978.6 99978.5 99978.4 99978.3 99978.2 99978.1 99978.1 99978 99978 99977.9
-          99977.9 99977.9 99977.9 99908.2 99908.2 99908.1 99908 99907.9 99907.8 99907.8 99907.7 99907.6
-          99907.5 99907.5 99907.5 99907.4 99907.4 99907.4 99823.7 99823.6 99823.6 99823.5 99823.4 99823.3
-          99823.2 99823.1 99823 99823 99822.9 99822.9 99822.9 99822.8 99822.8 99722.2 99722.1 99722.1
-          99722 99721.9 99721.8 99721.7 99721.6 99721.6 99721.5 99721.4 99721.4 99721.4 99721.4 99721.4
-          99600.4 99600.4 99600.3 99600.2 99600.1 99600 99599.9 99599.8 99599.8 99599.7 99599.7 99599.6
-          99599.6 99599.6 99599.6 99454.3 99454.3 99454.2 99454.1 99454 99453.9 99453.8 99453.7 99453.6
-          99453.6 99453.5 99453.5 99453.5 99453.5 99453.5 99278.9 99278.9 99278.8 99278.7 99278.6 99278.5
-          99278.4 99278.4 99278.3 99278.2 99278.2 99278.1 99278.1 99278.1 99278.1 99068.5 99068.5 99068.4
-          99068.3 99068.2 99068.1 99068 99067.9 99067.9 99067.8 99067.7 99067.7 99067.7 99067.7 99067.7
-          98816.1 98816 98815.9 98815.8 98815.7 98815.6 98815.5 98815.4 98815.3 98815.3 98815.2 98815.2
-          98815.2 98815.1 98815.1 98513.1 98513 98512.9 98512.8 98512.7 98512.5 98512.5 98512.4 98512.3
-          98512.2 98512.2 98512.2 98512.1 98512.1 98512.1 98149.7 98149.5 98149.3 98149.1 98149 98148.9
-          98148.8 98148.7 98148.7 98148.6 98148.6 98148.5 98148.5 98148.5 98148.5 97713.7 97713.2 97713
-          97712.8 97712.7 97712.6 97712.5 97712.4 97712.3 97712.2 97712.2 97712.2 97712.1 97712.1 97712.1
-          100004 100004 100003 100003 100003 100002 100002 100002 100002 100002 100002 100002
-          100002 100002 100002 100004 100003 100003 100002 100002 100002 100002 100002 100002
-          100002 100002 100002 100002 100002 100002 100003 100003 100002 100002 100002 100002
-          100002 100002 100002 100002 100002 100002 100002 100002 100002 100003 100002 100002
-          100002 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001
-          100002 100002 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001
-          100001 100001 100001 100002 100001 100001 100001 100001 100001 100001 100001 100001
-          100001 100001 100001 100001 100001 100001 100002 100001 100001 100001 100001 100001
-          100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001
-          100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001
-          100001 100001 100001 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100001 100001 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100001 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000
+          98451.4 98451.3 98230.6 98230.5 98450.9 98230.1 98450.4 98229.6 98449.7 98228.9 98449 98228.2
+          98448.2 98227.4 98447.4 98226.5 98446.5 98225.7 98445.7 98224.9 98444.9 98224.1 98444.2 98223.3
+          98443.6 98222.7 98443.1 98222.3 98443 98222.1 98092.4 98092.2 98091.8 98091.3 98090.6 98089.8
+          98089 98088.2 98087.3 98086.5 98085.7 98084.9 98084.2 98083.8 98083.6 97980.5 97980.3 97979.9
+          97979.3 97978.6 97977.8 97976.9 97976.1 97975.2 97974.4 97973.6 97972.8 97972.1 97971.5 97971.3
+          97887.7 97887.5 97887 97886.4 97885.6 97884.8 97884 97883.1 97882.2 97881.4 97880.5 97879.7
+          97879 97878.4 97878.1 97810.5 97810.3 97809.8 97809.1 97808.3 97807.5 97806.6 97805.8 97804.9
+          97804 97803.1 97802.3 97801.5 97800.8 97800.5 97746.3 97746 97745.5 97744.7 97743.9 97743.1
+          97742.2 97741.4 97740.5 97739.6 97738.7 97737.8 97737 97736.2 97735.8 97692.8 97692.5 97691.9
+          97691.1 97690.3 97689.5 97688.6 97687.7 97686.8 97685.9 97685 97684.1 97683.2 97682.4 97681.9
+          97648.3 97647.9 97647.2 97646.4 97645.6 97644.7 97643.9 97643 97642.1 97641.2 97640.3 97639.4
+          97638.4 97637.5 97636.8 97610.9 97610.5 97609.8 97609 97608.1 97607.3 97606.4 97605.5 97604.6
+          97603.7 97602.8 97601.8 97600.9 97599.9 97599.1 97579.2 97578.7 97578 97577.1 97576.3 97575.4
+          97574.5 97573.6 97572.7 97571.8 97570.8 97569.9 97568.9 97567.9 97566.9 97551.2 97550.6 97549.9
+          97549 97548.1 97547.2 97546.3 97545.4 97544.5 97543.6 97542.7 97541.7 97540.8 97539.7 97538.5
+          97524.8 97524.2 97523.4 97522.6 97521.7 97520.8 97519.9 97519 97518.1 97517.1 97516.2 97515.3
+          97514.3 97513.2 97511.9 97498.5 97497.8 97497 97496.1 97495.2 97494.3 97493.4 97492.5 97491.6
+          97490.7 97489.8 97488.8 97487.8 97486.7 97485.3 97471.2 97470.5 97469.7 97468.8 97467.9 97467
+          97466.1 97465.2 97464.3 97463.4 97462.4 97461.5 97460.5 97459.4 97457.9 97443.2 97442.5 97441.7
+          97440.8 97440 97439 97438.1 97437.2 97436.3 97435.4 97434.5 97433.5 97432.5 97431.4 97429.9
+          100014 100013 100012 100012 100011 100010 100009 100008 100007 100006 100005 100004
+          100003 100002 100000 100014 100013 100012 100012 100011 100010 100009 100008 100007
+          100006 100005 100004 100003 100002 100000 100014 100013 100012 100011 100011 100010
+          100009 100008 100007 100006 100005 100004 100003 100002 100000 100014 100013 100012
+          100011 100010 100010 100009 100008 100007 100006 100005 100004 100003 100002 100000
+          100014 100013 100012 100011 100010 100009 100009 100008 100007 100006 100005 100004
+          100003 100002 100000 100014 100013 100012 100011 100010 100009 100008 100008 100007
+          100006 100005 100004 100003 100002 100000 100014 100013 100012 100011 100010 100009
+          100008 100007 100006 100006 100005 100004 100003 100001 100000 100014 100013 100012
+          100011 100010 100009 100008 100007 100006 100005 100004 100004 100002 100001 100000
+          100013 100013 100012 100011 100010 100009 100008 100007 100006 100005 100004 100003
+          100002 100001 100000 100013 100012 100012 100011 100010 100009 100008 100007 100006
+          100005 100004 100003 100002 100001 100000 100013 100012 100011 100010 100009 100009
+          100008 100007 100006 100005 100004 100003 100002 100001 100000 100013 100012 100011
+          100010 100009 100008 100007 100006 100005 100005 100004 100003 100002 100001 100000
+          100013 100012 100011 100010 100009 100008 100007 100006 100005 100004 100003 100002
+          100001 100001 100000 100012 100011 100010 100009 100008 100007 100007 100006 100005
+          100004 100003 100002 100001 100000 100000 100012 100011 100010 100009 100008 100007
+          100006 100005 100004 100003 100002 100001 100001 100000 100000
         </DataArray>
         <DataArray type="Float32" Name="p_n" NumberOfComponents="1" format="ascii">
-          102452 102452 102418 102418 102452 102418 102452 102418 102452 102418 102452 102418
-          102451 102417 102451 102417 102451 102417 102451 102417 102451 102417 102451 102417
-          102451 102417 102451 102417 102451 102417 102377 102377 102377 102377 102377 102377
-          102377 102377 102377 102376 102376 102376 102376 102376 102376 102328 102328 102328
-          102328 102328 102328 102328 102328 102328 102328 102328 102327 102327 102327 102327
-          102270 102269 102269 102269 102269 102269 102269 102269 102269 102269 102269 102269
-          102269 102269 102269 102199 102199 102199 102199 102199 102199 102199 102198 102198
-          102198 102198 102198 102198 102198 102198 102114 102114 102114 102114 102114 102114
-          102114 102114 102114 102114 102114 102114 102114 102114 102114 102013 102013 102013
-          102013 102013 102013 102013 102012 102012 102012 102012 102012 102012 102012 102012
-          101891 101891 101891 101891 101891 101891 101891 101891 101891 101891 101890 101890
-          101890 101890 101890 101745 101745 101745 101745 101745 101745 101745 101745 101744
-          101744 101744 101744 101744 101744 101744 101570 101570 101570 101570 101569 101569
-          101569 101569 101569 101569 101569 101569 101569 101569 101569 101359 101359 101359
-          101359 101359 101359 101359 101359 101359 101359 101359 101359 101358 101358 101358
-          101107 101107 101107 101107 101106 101106 101106 101106 101106 101106 101106 101106
-          101106 101106 101106 100804 100804 100804 100804 100803 100803 100803 100803 100803
-          100803 100803 100803 100803 100803 100803 100440 100440 100440 100440 100440 100440
-          100440 100440 100440 100439 100439 100439 100439 100439 100439 100005 100004 100004
-          100004 100004 100003 100003 100003 100003 100003 100003 100003 100003 100003 100003
-          100004 100004 100003 100003 100003 100002 100002 100002 100002 100002 100002 100002
-          100002 100002 100002 100004 100003 100003 100002 100002 100002 100002 100002 100002
-          100002 100002 100002 100002 100002 100002 100003 100003 100002 100002 100002 100002
-          100002 100002 100002 100002 100002 100002 100002 100002 100002 100003 100002 100002
-          100002 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001
-          100002 100002 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001
-          100001 100001 100001 100002 100001 100001 100001 100001 100001 100001 100001 100001
-          100001 100001 100001 100001 100001 100001 100002 100001 100001 100001 100001 100001
-          100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001
-          100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001
-          100001 100001 100001 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100001 100001 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100001 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000
-          100000 100000 100000 100000 100000 100000 100000 100000 100000
+          100906 100906 100712 100712 100906 100712 100905 100711 100904 100710 100904 100710
+          100903 100709 100902 100708 100901 100707 100900 100706 100900 100706 100899 100705
+          100898 100704 100898 100704 100898 100704 100576 100576 100575 100575 100574 100573
+          100573 100572 100571 100570 100569 100569 100568 100567 100567 100464 100464 100464
+          100463 100462 100462 100461 100460 100459 100458 100457 100457 100456 100455 100455
+          100372 100371 100371 100370 100370 100369 100368 100367 100366 100365 100365 100364
+          100363 100362 100362 100295 100294 100294 100293 100292 100292 100291 100290 100289
+          100288 100287 100286 100286 100285 100285 100230 100230 100230 100229 100228 100227
+          100226 100225 100225 100224 100223 100222 100221 100220 100220 100177 100177 100176
+          100175 100174 100174 100173 100172 100171 100170 100169 100168 100167 100167 100166
+          100133 100132 100132 100131 100130 100129 100128 100127 100126 100126 100125 100124
+          100123 100122 100121 100096 100095 100095 100094 100093 100092 100091 100090 100090
+          100089 100088 100087 100086 100085 100084 100066 100066 100065 100064 100063 100062
+          100061 100061 100060 100059 100058 100057 100056 100055 100054 100043 100043 100042
+          100041 100040 100039 100039 100038 100037 100036 100035 100034 100033 100032 100031
+          100028 100027 100026 100026 100025 100024 100023 100022 100021 100020 100019 100018
+          100017 100016 100015 100019 100018 100018 100017 100016 100015 100014 100013 100012
+          100011 100010 100009 100008 100007 100006 100015 100015 100014 100013 100012 100011
+          100010 100009 100008 100007 100006 100005 100004 100003 100001 100014 100013 100013
+          100012 100011 100010 100009 100008 100007 100006 100005 100004 100003 100002 100000
+          100014 100013 100012 100012 100011 100010 100009 100008 100007 100006 100005 100004
+          100003 100002 100000 100014 100013 100012 100012 100011 100010 100009 100008 100007
+          100006 100005 100004 100003 100002 100000 100014 100013 100012 100011 100011 100010
+          100009 100008 100007 100006 100005 100004 100003 100002 100000 100014 100013 100012
+          100011 100010 100010 100009 100008 100007 100006 100005 100004 100003 100002 100000
+          100014 100013 100012 100011 100010 100009 100009 100008 100007 100006 100005 100004
+          100003 100002 100000 100014 100013 100012 100011 100010 100009 100008 100008 100007
+          100006 100005 100004 100003 100002 100000 100014 100013 100012 100011 100010 100009
+          100008 100007 100006 100006 100005 100004 100003 100001 100000 100014 100013 100012
+          100011 100010 100009 100008 100007 100006 100005 100004 100004 100002 100001 100000
+          100013 100013 100012 100011 100010 100009 100008 100007 100006 100005 100004 100003
+          100002 100001 100000 100013 100012 100012 100011 100010 100009 100008 100007 100006
+          100005 100004 100003 100002 100001 100000 100013 100012 100011 100010 100009 100009
+          100008 100007 100006 100005 100004 100003 100002 100001 100000 100013 100012 100011
+          100010 100009 100008 100007 100006 100005 100005 100004 100003 100002 100001 100000
+          100013 100012 100011 100010 100009 100008 100007 100006 100005 100004 100003 100002
+          100001 100001 100000 100012 100011 100010 100009 100008 100007 100007 100006 100005
+          100004 100003 100002 100001 100000 100000 100012 100011 100010 100009 100008 100007
+          100006 100005 100004 100003 100002 100001 100001 100000 100000
         </DataArray>
         <DataArray type="Float32" Name="rho_w" NumberOfComponents="1" format="ascii">
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
@@ -173,6 +173,20 @@
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231
+          998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.231 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
@@ -186,20 +200,6 @@
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.231 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.231
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
-          998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
@@ -209,127 +209,127 @@
           998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232 998.232
         </DataArray>
         <DataArray type="Float32" Name="rho_n" NumberOfComponents="1" format="ascii">
-          1.16858 1.16858 1.16819 1.16819 1.16858 1.16819 1.16858 1.16819 1.16858 1.16819 1.16858 1.16819
-          1.16857 1.16818 1.16857 1.16818 1.16857 1.16818 1.16857 1.16818 1.16857 1.16818 1.16857 1.16818
-          1.16857 1.16818 1.16857 1.16818 1.16857 1.16818 1.16772 1.16772 1.16772 1.16772 1.16772 1.16772
-          1.16772 1.16771 1.16771 1.16771 1.16771 1.16771 1.16771 1.16771 1.16771 1.16716 1.16716 1.16716
-          1.16716 1.16715 1.16715 1.16715 1.16715 1.16715 1.16715 1.16715 1.16715 1.16715 1.16715 1.16715
-          1.16648 1.16648 1.16648 1.16648 1.16648 1.16648 1.16648 1.16648 1.16648 1.16647 1.16647 1.16647
-          1.16647 1.16647 1.16647 1.16567 1.16567 1.16567 1.16567 1.16567 1.16567 1.16567 1.16567 1.16566
-          1.16566 1.16566 1.16566 1.16566 1.16566 1.16566 1.1647 1.1647 1.1647 1.1647 1.1647 1.1647
-          1.16469 1.16469 1.16469 1.16469 1.16469 1.16469 1.16469 1.16469 1.16469 1.16353 1.16353 1.16353
-          1.16353 1.16353 1.16353 1.16353 1.16353 1.16353 1.16352 1.16352 1.16352 1.16352 1.16352 1.16352
-          1.16213 1.16213 1.16213 1.16213 1.16213 1.16213 1.16213 1.16213 1.16213 1.16212 1.16212 1.16212
-          1.16212 1.16212 1.16212 1.16045 1.16045 1.16045 1.16045 1.16045 1.16045 1.16045 1.16045 1.16044
-          1.16044 1.16044 1.16044 1.16044 1.16044 1.16044 1.15844 1.15844 1.15843 1.15843 1.15843 1.15843
-          1.15843 1.15843 1.15843 1.15843 1.15843 1.15843 1.15843 1.15843 1.15843 1.15602 1.15602 1.15602
-          1.15601 1.15601 1.15601 1.15601 1.15601 1.15601 1.15601 1.15601 1.15601 1.15601 1.15601 1.15601
-          1.15311 1.15311 1.15311 1.15311 1.15311 1.15311 1.15311 1.15311 1.1531 1.1531 1.1531 1.1531
-          1.1531 1.1531 1.1531 1.14963 1.14963 1.14963 1.14963 1.14962 1.14962 1.14962 1.14962 1.14962
-          1.14962 1.14962 1.14962 1.14962 1.14962 1.14962 1.14545 1.14545 1.14545 1.14544 1.14544 1.14544
-          1.14544 1.14544 1.14544 1.14544 1.14544 1.14544 1.14544 1.14544 1.14544 1.14057 1.14058 1.14058
-          1.14058 1.14057 1.14057 1.14057 1.14057 1.14056 1.14056 1.14056 1.14056 1.14056 1.14056 1.14055
-          1.14904 1.14912 1.14925 1.14946 1.14979 1.15031 1.15106 1.15202 1.15303 1.15385 1.15432 1.15449
-          1.15451 1.15448 1.15444 1.14901 1.14903 1.14909 1.14921 1.14939 1.14968 1.15011 1.15062 1.15106
-          1.15123 1.1511 1.15085 1.15062 1.15039 1.15009 1.149 1.14901 1.14905 1.14913 1.14927 1.14948
-          1.1498 1.15014 1.15036 1.1503 1.15003 1.14973 1.1495 1.14932 1.14919 1.14899 1.149 1.14903
-          1.14909 1.14921 1.14939 1.14965 1.14991 1.15001 1.14987 1.14958 1.14932 1.14916 1.14906 1.14902
-          1.14898 1.14899 1.14901 1.14907 1.14917 1.14934 1.14956 1.14977 1.14981 1.14963 1.14936 1.14916
-          1.14905 1.149 1.14898 1.14898 1.14898 1.149 1.14906 1.14916 1.14931 1.14951 1.14968 1.14968
-          1.14948 1.14924 1.14908 1.149 1.14898 1.14897 1.14898 1.14898 1.149 1.14905 1.14914 1.14929
-          1.14948 1.14962 1.14959 1.14938 1.14916 1.14903 1.14898 1.14897 1.14896 1.14897 1.14897 1.14899
-          1.14904 1.14913 1.14928 1.14945 1.14958 1.14952 1.14931 1.14911 1.14901 1.14897 1.14896 1.14896
-          1.14897 1.14897 1.14899 1.14904 1.14913 1.14927 1.14944 1.14955 1.14947 1.14926 1.14908 1.14899
-          1.14897 1.14896 1.14896 1.14897 1.14897 1.14899 1.14904 1.14913 1.14926 1.14942 1.14952 1.14943
-          1.14922 1.14905 1.14898 1.14896 1.14896 1.14896 1.14896 1.14897 1.14899 1.14904 1.14912 1.14926
-          1.14942 1.1495 1.1494 1.14919 1.14903 1.14898 1.14896 1.14896 1.14896 1.14896 1.14896 1.14899
-          1.14903 1.14912 1.14925 1.14941 1.14947 1.14936 1.14915 1.14901 1.14897 1.14896 1.14896 1.14896
-          1.14896 1.14896 1.14899 1.14903 1.14912 1.14925 1.14938 1.14942 1.14929 1.1491 1.14899 1.14896
-          1.14896 1.14896 1.14896 1.14896 1.14896 1.14898 1.14903 1.1491 1.1492 1.14929 1.14928 1.14915
-          1.14903 1.14897 1.14896 1.14896 1.14896 1.14896 1.14896 1.14896 1.14896 1.14896 1.14896 1.14896
-          1.14896 1.14896 1.14896 1.14896 1.14896 1.14896 1.14896 1.14896 1.14896
+          1.1508 1.1508 1.14857 1.14857 1.1508 1.14857 1.15079 1.14856 1.15079 1.14855 1.15078 1.14855
+          1.15077 1.14854 1.15076 1.14853 1.15075 1.14852 1.15074 1.14851 1.15073 1.1485 1.15072 1.14849
+          1.15071 1.14848 1.15071 1.14848 1.15071 1.14848 1.14701 1.14701 1.147 1.147 1.14699 1.14698
+          1.14697 1.14696 1.14695 1.14694 1.14693 1.14692 1.14692 1.14691 1.14691 1.14572 1.14572 1.14572
+          1.14571 1.1457 1.14569 1.14568 1.14567 1.14566 1.14565 1.14565 1.14564 1.14563 1.14562 1.14562
+          1.14466 1.14466 1.14465 1.14464 1.14464 1.14463 1.14462 1.14461 1.1446 1.14459 1.14458 1.14457
+          1.14456 1.14455 1.14455 1.14377 1.14377 1.14376 1.14376 1.14375 1.14374 1.14373 1.14372 1.14371
+          1.1437 1.14369 1.14368 1.14367 1.14366 1.14366 1.14303 1.14303 1.14302 1.14302 1.14301 1.143
+          1.14299 1.14298 1.14297 1.14296 1.14295 1.14294 1.14293 1.14292 1.14291 1.14242 1.14242 1.14241
+          1.1424 1.14239 1.14238 1.14237 1.14236 1.14235 1.14234 1.14233 1.14232 1.14231 1.1423 1.14229
+          1.14191 1.14191 1.1419 1.14189 1.14188 1.14187 1.14186 1.14185 1.14184 1.14183 1.14182 1.14181
+          1.1418 1.14179 1.14178 1.14149 1.14148 1.14147 1.14147 1.14146 1.14145 1.14144 1.14142 1.14141
+          1.1414 1.14139 1.14138 1.14137 1.14136 1.14135 1.14115 1.14114 1.14113 1.14112 1.14111 1.1411
+          1.14109 1.14108 1.14107 1.14106 1.14105 1.14104 1.14103 1.14102 1.141 1.14088 1.14088 1.14087
+          1.14086 1.14085 1.14084 1.14083 1.14082 1.14081 1.1408 1.14079 1.14077 1.14076 1.14075 1.14074
+          1.14071 1.1407 1.14069 1.14068 1.14067 1.14066 1.14065 1.14064 1.14063 1.14062 1.1406 1.14059
+          1.14058 1.14057 1.14055 1.14061 1.1406 1.14059 1.14058 1.14057 1.14056 1.14055 1.14053 1.14052
+          1.14051 1.1405 1.14049 1.14048 1.14047 1.14045 1.14056 1.14055 1.14054 1.14053 1.14052 1.14051
+          1.1405 1.14049 1.14048 1.14047 1.14046 1.14045 1.14044 1.14042 1.1404 1.14056 1.14055 1.14054
+          1.14053 1.14052 1.14051 1.1405 1.14049 1.14048 1.14046 1.14045 1.14044 1.14043 1.14042 1.14039
+          1.14918 1.14927 1.14933 1.14937 1.14941 1.14944 1.14946 1.14948 1.14949 1.1495 1.14951 1.1495
+          1.14949 1.14937 1.14896 1.14913 1.14915 1.14917 1.1492 1.14924 1.14927 1.1493 1.14933 1.14935
+          1.14937 1.14939 1.14938 1.14935 1.14922 1.14896 1.14912 1.14911 1.14911 1.14911 1.14911 1.14912
+          1.14913 1.14914 1.14915 1.14916 1.14917 1.14916 1.14913 1.14906 1.14896 1.14912 1.14911 1.1491
+          1.14909 1.14908 1.14907 1.14907 1.14906 1.14906 1.14905 1.14905 1.14904 1.14902 1.14899 1.14896
+          1.14912 1.14911 1.1491 1.14909 1.14908 1.14907 1.14906 1.14905 1.14904 1.14903 1.14902 1.14901
+          1.14899 1.14898 1.14896 1.14912 1.14911 1.1491 1.14909 1.14908 1.14906 1.14905 1.14904 1.14903
+          1.14902 1.14901 1.149 1.14899 1.14897 1.14896 1.14911 1.1491 1.14909 1.14908 1.14907 1.14906
+          1.14905 1.14904 1.14903 1.14902 1.14901 1.149 1.14899 1.14897 1.14896 1.14911 1.1491 1.14909
+          1.14908 1.14907 1.14906 1.14905 1.14904 1.14903 1.14902 1.14901 1.149 1.14899 1.14897 1.14896
+          1.14911 1.1491 1.14909 1.14908 1.14907 1.14906 1.14905 1.14904 1.14903 1.14902 1.14901 1.149
+          1.14898 1.14897 1.14896 1.14911 1.1491 1.14909 1.14908 1.14907 1.14906 1.14905 1.14904 1.14903
+          1.14901 1.149 1.14899 1.14898 1.14897 1.14896 1.14911 1.1491 1.14909 1.14908 1.14907 1.14905
+          1.14904 1.14903 1.14902 1.14901 1.149 1.14899 1.14898 1.14897 1.14896 1.1491 1.14909 1.14908
+          1.14907 1.14906 1.14905 1.14904 1.14903 1.14902 1.14901 1.149 1.14899 1.14898 1.14897 1.14896
+          1.1491 1.14909 1.14908 1.14907 1.14906 1.14905 1.14904 1.14903 1.14902 1.149 1.14899 1.14898
+          1.14897 1.14896 1.14896 1.1491 1.14909 1.14907 1.14906 1.14905 1.14904 1.14903 1.14902 1.14901
+          1.149 1.14899 1.14898 1.14897 1.14896 1.14896 1.1491 1.14908 1.14907 1.14906 1.14905 1.14904
+          1.14903 1.14902 1.149 1.14899 1.14898 1.14897 1.14896 1.14896 1.14896
         </DataArray>
         <DataArray type="Float32" Name="lambda_w" NumberOfComponents="1" format="ascii">
-          990.751 990.751 990.749 990.75 990.751 990.75 990.751 990.75 990.751 990.75 990.751 990.75
-          990.751 990.75 990.751 990.75 990.751 990.75 990.751 990.75 990.751 990.75 990.751 990.75
-          990.751 990.75 990.751 990.75 990.751 990.749 990.748 990.748 990.748 990.748 990.748 990.748
-          990.748 990.748 990.748 990.748 990.748 990.748 990.748 990.748 990.748 990.746 990.747 990.747
-          990.747 990.747 990.747 990.747 990.747 990.747 990.747 990.747 990.747 990.747 990.747 990.746
-          990.744 990.744 990.744 990.744 990.744 990.744 990.744 990.744 990.744 990.744 990.744 990.744
-          990.744 990.744 990.744 990.741 990.742 990.742 990.742 990.742 990.742 990.742 990.742 990.742
-          990.742 990.742 990.742 990.742 990.742 990.741 990.738 990.739 990.739 990.739 990.739 990.739
-          990.739 990.739 990.739 990.739 990.739 990.739 990.739 990.739 990.738 990.734 990.735 990.735
-          990.735 990.735 990.735 990.735 990.735 990.735 990.735 990.735 990.735 990.735 990.735 990.734
-          990.73 990.73 990.73 990.73 990.73 990.73 990.73 990.73 990.73 990.73 990.73 990.73
-          990.73 990.73 990.73 990.725 990.725 990.725 990.725 990.725 990.725 990.725 990.725 990.725
-          990.725 990.725 990.725 990.725 990.725 990.724 990.718 990.718 990.718 990.718 990.718 990.718
-          990.718 990.718 990.718 990.718 990.718 990.718 990.718 990.718 990.718 990.71 990.71 990.71
-          990.71 990.71 990.71 990.71 990.71 990.71 990.71 990.71 990.71 990.71 990.71 990.71
-          990.701 990.701 990.701 990.701 990.701 990.701 990.701 990.701 990.701 990.701 990.701 990.701
-          990.701 990.701 990.701 990.689 990.689 990.689 990.689 990.689 990.689 990.689 990.689 990.689
-          990.689 990.689 990.689 990.689 990.689 990.689 990.675 990.675 990.675 990.675 990.675 990.675
-          990.675 990.675 990.675 990.675 990.675 990.675 990.675 990.675 990.675 990.024 990.358 990.374
-          990.376 990.376 990.375 990.374 990.373 990.372 990.372 990.37 990.368 990.368 990.367 990.388
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
-          5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13 5.74711e-13
+          489.117 489.117 437.596 437.596 489.116 437.596 489.115 437.595 489.114 437.594 489.113 437.593
+          489.112 437.592 489.111 437.591 489.109 437.59 489.108 437.588 489.107 437.587 489.106 437.586
+          489.105 437.586 489.104 437.585 489.104 437.585 433.75 433.75 433.749 433.749 433.748 433.746
+          433.745 433.744 433.743 433.741 433.74 433.739 433.738 433.737 433.737 433.325 433.325 433.324
+          433.323 433.322 433.321 433.32 433.318 433.317 433.316 433.314 433.313 433.312 433.311 433.311
+          433.162 433.162 433.161 433.16 433.159 433.158 433.157 433.155 433.154 433.153 433.151 433.15
+          433.149 433.148 433.147 433.041 433.04 433.04 433.039 433.037 433.036 433.035 433.033 433.032
+          433.031 433.029 433.028 433.027 433.026 433.025 432.937 432.936 432.935 432.934 432.933 432.932
+          432.93 432.929 432.928 432.926 432.925 432.924 432.922 432.921 432.92 432.818 432.818 432.817
+          432.816 432.814 432.813 432.812 432.81 432.809 432.808 432.806 432.805 432.804 432.802 432.802
+          432.528 432.528 432.527 432.526 432.525 432.524 432.523 432.522 432.521 432.519 432.518 432.517
+          432.516 432.515 432.515 431.455 431.457 431.458 431.458 431.458 431.457 431.457 431.456 431.456
+          431.455 431.454 431.454 431.454 431.456 431.46 427.902 427.91 427.916 427.92 427.922 427.924
+          427.925 427.926 427.927 427.928 427.93 427.931 427.935 427.946 427.964 418.711 418.736 418.754
+          418.765 418.773 418.779 418.784 418.789 418.794 418.799 418.804 418.811 418.821 418.849 418.907
+          400.516 400.573 400.609 400.63 400.646 400.659 400.67 400.681 400.691 400.702 400.713 400.726
+          400.745 400.798 400.935 372.777 372.876 372.93 372.961 372.985 373.005 373.023 373.039 373.055
+          373.071 373.088 373.108 373.136 373.207 373.453 339.133 339.273 339.336 339.375 339.404 339.429
+          339.45 339.469 339.488 339.508 339.528 339.552 339.586 339.664 340.017 304.657 304.827 304.894
+          304.936 304.968 304.993 305.015 305.036 305.055 305.075 305.096 305.122 305.159 305.232 305.669
+          6.41631e-10 6.41631e-10 6.41631e-10 6.41631e-10 6.41631e-10 6.41631e-10 6.41631e-10 6.41631e-10 6.41631e-10 6.41631e-10 6.41631e-10 6.41631e-10
+          6.41631e-10 6.41631e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10
+          6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41311e-10 6.41255e-10 6.41255e-10 6.41255e-10 6.41255e-10 6.41255e-10 6.41255e-10
+          6.41255e-10 6.41255e-10 6.41255e-10 6.41255e-10 6.41255e-10 6.41255e-10 6.41255e-10 6.41255e-10 6.41311e-10
         </DataArray>
         <DataArray type="Float32" Name="lambda_n" NumberOfComponents="1" format="ascii">
-          9.22141e-05 9.22142e-05 9.2346e-05 9.23461e-05 9.22143e-05 9.23463e-05 9.22146e-05 9.23465e-05 9.22149e-05 9.23468e-05 9.22151e-05 9.2347e-05
-          9.22154e-05 9.23473e-05 9.22156e-05 9.23475e-05 9.22158e-05 9.23477e-05 9.2216e-05 9.23479e-05 9.22161e-05 9.2348e-05 9.22162e-05 9.23481e-05
-          9.22163e-05 9.23482e-05 9.22164e-05 9.23483e-05 9.22164e-05 9.23483e-05 9.24602e-05 9.24603e-05 9.24605e-05 9.24607e-05 9.2461e-05 9.24612e-05
-          9.24615e-05 9.24617e-05 9.24619e-05 9.24621e-05 9.24622e-05 9.24624e-05 9.24624e-05 9.24625e-05 9.24625e-05 9.25975e-05 9.25976e-05 9.25977e-05
-          9.2598e-05 9.25983e-05 9.25985e-05 9.25988e-05 9.2599e-05 9.25992e-05 9.25994e-05 9.25995e-05 9.25997e-05 9.25997e-05 9.25998e-05 9.25998e-05
-          9.27626e-05 9.27627e-05 9.27628e-05 9.27631e-05 9.27634e-05 9.27636e-05 9.27639e-05 9.27641e-05 9.27643e-05 9.27645e-05 9.27647e-05 9.27648e-05
-          9.27649e-05 9.27649e-05 9.27649e-05 9.29612e-05 9.29613e-05 9.29615e-05 9.29618e-05 9.2962e-05 9.29623e-05 9.29626e-05 9.29628e-05 9.2963e-05
-          9.29632e-05 9.29633e-05 9.29634e-05 9.29635e-05 9.29636e-05 9.29636e-05 9.32004e-05 9.32004e-05 9.32006e-05 9.32009e-05 9.32012e-05 9.32014e-05
-          9.32017e-05 9.32019e-05 9.32021e-05 9.32023e-05 9.32024e-05 9.32026e-05 9.32026e-05 9.32027e-05 9.32027e-05 9.34884e-05 9.34885e-05 9.34887e-05
-          9.34889e-05 9.34892e-05 9.34895e-05 9.34897e-05 9.349e-05 9.34902e-05 9.34904e-05 9.34905e-05 9.34906e-05 9.34907e-05 9.34908e-05 9.34908e-05
-          9.38356e-05 9.38357e-05 9.38359e-05 9.38361e-05 9.38364e-05 9.38367e-05 9.3837e-05 9.38372e-05 9.38374e-05 9.38376e-05 9.38377e-05 9.38379e-05
-          9.38379e-05 9.3838e-05 9.3838e-05 9.42545e-05 9.42546e-05 9.42548e-05 9.42551e-05 9.42554e-05 9.42557e-05 9.42559e-05 9.42562e-05 9.42564e-05
-          9.42566e-05 9.42567e-05 9.42568e-05 9.42569e-05 9.42569e-05 9.42569e-05 9.47605e-05 9.47606e-05 9.47608e-05 9.47611e-05 9.47614e-05 9.47617e-05
-          9.4762e-05 9.47622e-05 9.47624e-05 9.47626e-05 9.47627e-05 9.47629e-05 9.47629e-05 9.4763e-05 9.4763e-05 9.53724e-05 9.53726e-05 9.53728e-05
-          9.53732e-05 9.53735e-05 9.53738e-05 9.5374e-05 9.53743e-05 9.53745e-05 9.53747e-05 9.53748e-05 9.53749e-05 9.5375e-05 9.53751e-05 9.53751e-05
-          9.61137e-05 9.61139e-05 9.61142e-05 9.61146e-05 9.61149e-05 9.61152e-05 9.61155e-05 9.61157e-05 9.6116e-05 9.61161e-05 9.61163e-05 9.61164e-05
-          9.61165e-05 9.61165e-05 9.61165e-05 9.70134e-05 9.70136e-05 9.70141e-05 9.70145e-05 9.70148e-05 9.70152e-05 9.70154e-05 9.70157e-05 9.70159e-05
-          9.70161e-05 9.70162e-05 9.70163e-05 9.70164e-05 9.70165e-05 9.70165e-05 9.81077e-05 9.81082e-05 9.81088e-05 9.81093e-05 9.81096e-05 9.811e-05
-          9.81102e-05 9.81105e-05 9.81107e-05 9.81109e-05 9.8111e-05 9.81112e-05 9.81112e-05 9.81113e-05 9.81113e-05 0.000159929 0.000123777 0.000122223
-          0.00012204 0.000122081 0.000122186 0.000122296 0.000122391 0.000122466 0.000122523 0.000122736 0.000122856 0.000122919 0.000122949 0.000122903
-          57512.5 57516.2 57521.9 57530.8 57544.9 57566.6 57598 57638.4 57681 57715.5 57735.7 57743.2
-          57744.1 57742.9 57741.2 57511.3 57512.8 57515.5 57520.3 57528.1 57540.4 57558.3 57579.8 57598
-          57605 57599.6 57588.9 57578.8 57569 57556.3 57511.1 57511.9 57513.8 57517.2 57523.1 57532.3
-          57545.4 57559.9 57568.9 57566.5 57554.9 57542.2 57532.6 57525.1 57519.6 57511 57511.6 57513
-          57515.9 57520.8 57528.5 57539.3 57550.3 57554.7 57548.6 57536.4 57525.6 57518.9 57514.8 57512.8
-          57511 57511.4 57512.7 57515.2 57519.6 57526.5 57536 57544.7 57546.4 57538.7 57527.2 57518.7
-          57514.3 57512.2 57511.4 57511 57511.3 57512.4 57514.8 57518.9 57525.3 57533.9 57541.1 57541
-          57532.6 57522.2 57515.5 57512.5 57511.4 57511.1 57511 57511.3 57512.3 57514.5 57518.4 57524.6
-          57532.5 57538.6 57537.3 57528.5 57519.1 57513.8 57511.8 57511.1 57511 57511 57511.3 57512.2
-          57514.4 57518.2 57524.1 57531.6 57536.8 57534.5 57525.6 57517.2 57512.9 57511.4 57511 57511
-          57511 57511.2 57512.2 57514.3 57518 57523.8 57530.9 57535.5 57532.4 57523.5 57515.9 57512.3
-          57511.2 57511 57511 57511 57511.2 57512.2 57514.2 57517.9 57523.6 57530.5 57534.4 57530.7
-          57521.9 57514.9 57511.9 57511.2 57511 57511 57511 57511.2 57512.2 57514.2 57517.8 57523.5
-          57530.1 57533.5 57529.3 57520.5 57514.1 57511.7 57511.1 57511 57511 57511 57511.2 57512.2
-          57514.2 57517.8 57523.3 57529.8 57532.6 57527.7 57519 57513.4 57511.5 57511.1 57511 57511
-          57511 57511.2 57512.1 57514.2 57517.7 57523.1 57528.9 57530.6 57525 57516.9 57512.5 57511.3
-          57511 57511 57511 57511 57511.2 57512.1 57513.9 57517 57521.3 57525 57524.8 57519.4
-          57514.1 57511.7 57511.1 57511 57511 57511 57511 57511 57511 57511 57511 57511
-          57511 57511 57511 57511 57511 57511 57511 57511 57511
+          483.894 483.895 710.469 710.47 483.896 710.472 483.899 710.476 483.903 710.48 483.907 710.486
+          483.912 710.492 483.917 710.498 483.922 710.505 483.926 710.511 483.931 710.517 483.935 710.522
+          483.938 710.525 483.94 710.528 483.941 710.528 730.569 730.57 730.573 730.577 730.583 730.589
+          730.596 730.602 730.609 730.616 730.622 730.628 730.634 730.637 730.638 732.82 732.822 732.825
+          732.83 732.836 732.842 732.849 732.856 732.863 732.87 732.877 732.883 732.889 732.893 732.895
+          733.683 733.685 733.689 733.694 733.7 733.707 733.714 733.721 733.728 733.735 733.742 733.749
+          733.755 733.76 733.763 734.329 734.331 734.335 734.341 734.347 734.354 734.361 734.368 734.376
+          734.383 734.39 734.397 734.404 734.409 734.412 734.882 734.884 734.889 734.895 734.901 734.908
+          734.915 734.922 734.93 734.937 734.944 734.951 734.958 734.965 734.968 735.513 735.516 735.52
+          735.526 735.533 735.54 735.547 735.554 735.561 735.568 735.576 735.583 735.59 735.596 735.6
+          737.057 737.058 737.061 737.066 737.071 737.077 737.084 737.09 737.097 737.103 737.11 737.116
+          737.122 737.125 737.126 742.797 742.789 742.783 742.781 742.783 742.785 742.788 742.791 742.795
+          742.798 742.802 742.804 742.803 742.792 742.772 762.088 762.046 762.009 761.99 761.977 761.968
+          761.96 761.954 761.948 761.942 761.935 761.926 761.907 761.848 761.749 814.056 813.914 813.806
+          813.744 813.699 813.663 813.631 813.603 813.575 813.547 813.516 813.479 813.421 813.256 812.917
+          926.359 925.991 925.754 925.617 925.513 925.428 925.353 925.283 925.215 925.147 925.074 924.986
+          924.863 924.521 923.626 1124.73 1123.96 1123.54 1123.3 1123.11 1122.95 1122.82 1122.69 1122.57
+          1122.44 1122.31 1122.15 1121.94 1121.38 1119.47 1418 1416.65 1416.03 1415.65 1415.37 1415.13
+          1414.93 1414.74 1414.55 1414.37 1414.17 1413.93 1413.61 1412.86 1409.45 1793.53 1791.45 1790.64
+          1790.13 1789.74 1789.43 1789.16 1788.92 1788.68 1788.44 1788.18 1787.87 1787.42 1786.54 1781.24
+          57499.9 57504 57507 57509.5 57511.6 57513.3 57514.8 57516.1 57517.3 57518.2 57519 57519.4
+          57519.1 57514.1 57497.3 57497.7 57498.8 57500.3 57501.9 57503.7 57505.5 57507.2 57508.8 57510.3
+          57511.7 57512.7 57512.9 57512 57507.5 57497.3 57497.3 57497.5 57497.8 57498.2 57498.7 57499.4
+          57500.2 57501 57501.9 57502.8 57503.4 57503.6 57502.8 57500.6 57497.3 57497.3 57497.3 57497.3
+          57497.4 57497.5 57497.6 57497.8 57498 57498.2 57498.5 57498.7 57498.7 57498.5 57497.9 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.4 57497.4 57497.4 57497.5 57497.5
+          57497.4 57497.4 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
+          57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3 57497.3
         </DataArray>
         <DataArray type="Float32" Name="porosity" NumberOfComponents="1" format="ascii">
           0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
@@ -372,47 +372,6 @@
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
         </DataArray>
-        <DataArray type="Float32" Name="boundary types" NumberOfComponents="1" format="ascii">
-          112 112 112 0 112 0 112 0 112 0 112 0
-          112 0 112 0 112 0 112 0 112 0 112 0
-          112 0 112 0 112 112 112 0 0 0 0 0
-          0 0 0 0 0 0 0 0 112 112 0 0
-          0 0 0 0 0 0 0 0 0 0 0 112
-          112 0 0 0 0 0 0 0 0 0 0 0
-          0 0 112 112 0 0 0 0 0 0 0 0
-          0 0 0 0 0 112 112 0 0 0 0 0
-          0 0 0 0 0 0 0 0 112 112 0 0
-          0 0 0 0 0 0 0 0 0 0 0 112
-          112 0 0 0 0 0 0 0 0 0 0 0
-          0 0 112 112 0 0 0 0 0 0 0 0
-          0 0 0 0 0 112 112 0 0 0 0 0
-          0 0 0 0 0 0 0 0 112 112 0 0
-          0 0 0 0 0 0 0 0 0 0 0 112
-          112 0 0 0 0 0 0 0 0 0 0 0
-          0 0 112 112 0 0 0 0 0 0 0 0
-          0 0 0 0 0 112 112 0 0 0 0 0
-          0 0 0 0 0 0 0 0 112 112 0 0
-          0 0 0 0 0 0 0 0 0 0 0 112
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 511 511 511 511 511 511
-          511 511 511 511 511 511 511 511 511
-        </DataArray>
         <DataArray type="Float32" Name="x_w^H2O" NumberOfComponents="1" format="ascii">
           0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
           0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
@@ -455,26 +414,26 @@
           0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
         </DataArray>
         <DataArray type="Float32" Name="x_w^N2" NumberOfComponents="1" format="ascii">
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
-          1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
-          1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
+          1.22764e-05 1.22764e-05 1.22735e-05 1.22735e-05 1.22764e-05 1.22735e-05 1.22764e-05 1.22735e-05 1.22763e-05 1.22734e-05 1.22763e-05 1.22734e-05
+          1.22763e-05 1.22734e-05 1.22763e-05 1.22734e-05 1.22763e-05 1.22733e-05 1.22762e-05 1.22733e-05 1.22762e-05 1.22733e-05 1.22762e-05 1.22733e-05
+          1.22762e-05 1.22733e-05 1.22762e-05 1.22732e-05 1.22762e-05 1.22732e-05 1.22695e-05 1.22695e-05 1.22695e-05 1.22695e-05 1.22694e-05 1.22694e-05
+          1.22694e-05 1.22694e-05 1.22693e-05 1.22693e-05 1.22693e-05 1.22693e-05 1.22692e-05 1.22692e-05 1.22692e-05 1.22661e-05 1.22661e-05 1.22661e-05
+          1.22661e-05 1.22661e-05 1.22661e-05 1.2266e-05 1.2266e-05 1.2266e-05 1.2266e-05 1.22659e-05 1.22659e-05 1.22659e-05 1.22659e-05 1.22659e-05
+          1.22634e-05 1.22634e-05 1.22634e-05 1.22634e-05 1.22633e-05 1.22633e-05 1.22633e-05 1.22633e-05 1.22632e-05 1.22632e-05 1.22632e-05 1.22632e-05
+          1.22631e-05 1.22631e-05 1.22631e-05 1.22612e-05 1.22612e-05 1.22612e-05 1.22611e-05 1.22611e-05 1.22611e-05 1.22611e-05 1.2261e-05 1.2261e-05
+          1.2261e-05 1.22609e-05 1.22609e-05 1.22609e-05 1.22609e-05 1.22609e-05 1.22593e-05 1.22593e-05 1.22593e-05 1.22593e-05 1.22593e-05 1.22592e-05
+          1.22592e-05 1.22592e-05 1.22592e-05 1.22591e-05 1.22591e-05 1.22591e-05 1.2259e-05 1.2259e-05 1.2259e-05 1.22578e-05 1.22578e-05 1.22578e-05
+          1.22578e-05 1.22577e-05 1.22577e-05 1.22577e-05 1.22577e-05 1.22576e-05 1.22576e-05 1.22576e-05 1.22575e-05 1.22575e-05 1.22575e-05 1.22575e-05
+          1.22566e-05 1.22565e-05 1.22565e-05 1.22565e-05 1.22565e-05 1.22564e-05 1.22564e-05 1.22564e-05 1.22564e-05 1.22563e-05 1.22563e-05 1.22563e-05
+          1.22562e-05 1.22562e-05 1.22562e-05 1.22555e-05 1.22555e-05 1.22555e-05 1.22555e-05 1.22554e-05 1.22554e-05 1.22554e-05 1.22553e-05 1.22553e-05
+          1.22553e-05 1.22552e-05 1.22552e-05 1.22552e-05 1.22552e-05 1.22551e-05 1.22547e-05 1.22547e-05 1.22546e-05 1.22546e-05 1.22546e-05 1.22545e-05
+          1.22545e-05 1.22545e-05 1.22545e-05 1.22544e-05 1.22544e-05 1.22544e-05 1.22543e-05 1.22543e-05 1.22543e-05 1.2254e-05 1.2254e-05 1.2254e-05
+          1.22539e-05 1.22539e-05 1.22539e-05 1.22539e-05 1.22538e-05 1.22538e-05 1.22538e-05 1.22537e-05 1.22537e-05 1.22537e-05 1.22536e-05 1.22536e-05
+          1.22536e-05 1.22535e-05 1.22535e-05 1.22535e-05 1.22534e-05 1.22534e-05 1.22534e-05 1.22534e-05 1.22533e-05 1.22533e-05 1.22533e-05 1.22532e-05
+          1.22532e-05 1.22531e-05 1.22531e-05 1.22533e-05 1.22533e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.22531e-05 1.22531e-05 1.22531e-05 1.2253e-05
+          1.2253e-05 1.2253e-05 1.22529e-05 1.22529e-05 1.22528e-05 1.22528e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.22531e-05 1.22531e-05 1.2253e-05
+          1.2253e-05 1.2253e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22528e-05 1.22528e-05 1.22527e-05 1.22527e-05 1.22534e-05 1.22534e-05 1.22533e-05
+          1.22533e-05 1.22533e-05 1.22532e-05 1.22532e-05 1.22531e-05 1.22531e-05 1.22531e-05 1.2253e-05 1.2253e-05 1.22529e-05 1.22529e-05 1.22528e-05
           1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
           1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
           1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
@@ -496,653 +455,87 @@
           1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
         </DataArray>
         <DataArray type="Float32" Name="x_n^H2O" NumberOfComponents="1" format="ascii">
-          0.0226505 0.0226505 0.022658 0.0226581 0.0226505 0.0226581 0.0226506 0.0226581 0.0226506 0.0226581 0.0226506 0.0226581
-          0.0226506 0.0226582 0.0226506 0.0226582 0.0226507 0.0226582 0.0226507 0.0226582 0.0226507 0.0226582 0.0226507 0.0226582
-          0.0226507 0.0226582 0.0226507 0.0226582 0.0226507 0.0226582 0.0226671 0.0226671 0.0226671 0.0226671 0.0226671 0.0226672
-          0.0226672 0.0226672 0.0226672 0.0226672 0.0226672 0.0226673 0.0226673 0.0226673 0.0226672 0.0226779 0.0226779 0.022678
-          0.022678 0.022678 0.022678 0.022678 0.022678 0.0226781 0.0226781 0.0226781 0.0226781 0.0226781 0.0226781 0.0226781
-          0.0226909 0.022691 0.022691 0.022691 0.022691 0.022691 0.0226911 0.0226911 0.0226911 0.0226911 0.0226911 0.0226911
-          0.0226911 0.0226911 0.0226911 0.0227066 0.0227066 0.0227066 0.0227066 0.0227067 0.0227067 0.0227067 0.0227067 0.0227067
-          0.0227067 0.0227068 0.0227068 0.0227068 0.0227068 0.0227068 0.0227254 0.0227254 0.0227254 0.0227254 0.0227255 0.0227255
-          0.0227255 0.0227255 0.0227255 0.0227256 0.0227256 0.0227256 0.0227256 0.0227256 0.0227256 0.022748 0.022748 0.022748
-          0.022748 0.0227481 0.0227481 0.0227481 0.0227481 0.0227481 0.0227482 0.0227482 0.0227482 0.0227482 0.0227482 0.0227482
-          0.0227752 0.0227752 0.0227752 0.0227752 0.0227753 0.0227753 0.0227753 0.0227753 0.0227753 0.0227753 0.0227754 0.0227754
-          0.0227754 0.0227754 0.0227754 0.0228079 0.0228079 0.0228079 0.0228079 0.022808 0.022808 0.022808 0.022808 0.022808
-          0.0228081 0.0228081 0.0228081 0.0228081 0.0228081 0.0228081 0.0228472 0.0228473 0.0228473 0.0228473 0.0228473 0.0228474
-          0.0228474 0.0228474 0.0228474 0.0228474 0.0228474 0.0228474 0.0228475 0.0228475 0.0228474 0.0228947 0.0228947 0.0228947
-          0.0228947 0.0228948 0.0228948 0.0228948 0.0228948 0.0228948 0.0228949 0.0228949 0.0228949 0.0228949 0.0228949 0.0228949
-          0.0229518 0.0229519 0.0229519 0.0229519 0.0229519 0.022952 0.022952 0.022952 0.022952 0.022952 0.0229521 0.0229521
-          0.0229521 0.0229521 0.0229521 0.0230208 0.0230209 0.0230209 0.0230209 0.0230209 0.023021 0.023021 0.023021 0.023021
-          0.023021 0.023021 0.0230211 0.0230211 0.0230211 0.0230211 0.0231041 0.0231042 0.0231042 0.0231042 0.0231043 0.0231043
-          0.0231043 0.0231043 0.0231044 0.0231044 0.0231044 0.0231044 0.0231044 0.0231044 0.0231044 0.0228852 0.022856 0.0228552
-          0.022856 0.0228574 0.0228596 0.0228627 0.0228666 0.0228707 0.0228742 0.0228765 0.0228776 0.022878 0.022878 0.022879
-          0.00232829 0.00234669 0.00237512 0.00242016 0.00249146 0.0026017 0.00276242 0.00297128 0.00319659 0.00338563 0.00350282 0.00355336
-          0.0035662 0.00356492 0.00355966 0.00232188 0.00232931 0.00234332 0.00236723 0.00240638 0.00246796 0.00255723 0.00266466 0.00275374
-          0.00278312 0.00274413 0.0026759 0.00261223 0.00254939 0.00246938 0.00232099 0.00232504 0.00233448 0.00235181 0.00238091 0.00242693
-          0.00249224 0.00256402 0.00260626 0.00258875 0.00252265 0.00245227 0.00240196 0.00236579 0.00234329 0.00232076 0.00232342 0.00233074
-          0.002345 0.00236942 0.00240813 0.00246178 0.00251567 0.0025355 0.00250093 0.00243515 0.00237963 0.00234795 0.00233146 0.00232501
-          0.00232068 0.00232267 0.00232884 0.00234143 0.00236331 0.00239797 0.00244486 0.00248788 0.00249465 0.00245304 0.00239324 0.00235111
-          0.00233149 0.00232381 0.00232168 0.00232065 0.00232226 0.00232778 0.00233939 0.00235977 0.00239198 0.00243451 0.0024701 0.00246822
-          0.00242359 0.00237034 0.00233814 0.0023256 0.00232175 0.00232092 0.00232063 0.00232202 0.00232715 0.00233817 0.00235763 0.00238826
-          0.00242776 0.00245786 0.00244977 0.00240397 0.00235661 0.00233153 0.00232318 0.00232108 0.00232071 0.00232062 0.00232188 0.00232678
-          0.00233742 0.0023563 0.00238589 0.00242316 0.00244899 0.00243621 0.00239016 0.00234781 0.00232785 0.00232206 0.00232083 0.00232064
-          0.00232062 0.00232179 0.00232655 0.00233696 0.00235546 0.00238434 0.00241992 0.00244231 0.00242587 0.00238004 0.00234187 0.00232566
-          0.00232149 0.00232072 0.00232062 0.00232061 0.00232173 0.00232641 0.00233667 0.00235495 0.00238332 0.00241757 0.00243712 0.00241776
-          0.00237236 0.00233767 0.00232426 0.00232117 0.00232066 0.0023206 0.00232061 0.0023217 0.00232633 0.0023365 0.00235464 0.00238265
-          0.00241581 0.00243295 0.00241113 0.00236622 0.00233447 0.00232328 0.00232097 0.00232064 0.0023206 0.00232061 0.00232167 0.00232629
-          0.00233641 0.00235445 0.00238217 0.00241434 0.00242916 0.00240494 0.00236054 0.00233167 0.00232252 0.00232084 0.00232062 0.00232059
-          0.00232061 0.00232166 0.00232627 0.00233634 0.00235424 0.00238144 0.00241193 0.00242331 0.00239623 0.00235345 0.00232868 0.00232184
-          0.00232074 0.00232061 0.00232059 0.00232061 0.00232164 0.00232613 0.00233575 0.00235229 0.00237605 0.00239989 0.00240368 0.00237592
-          0.00234161 0.00232503 0.00232121 0.00232066 0.0023206 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.0229976 0.0229976 0.0230419 0.0230419 0.0229977 0.023042 0.0229978 0.0230421 0.022998 0.0230423 0.0229982 0.0230424
+          0.0229983 0.0230426 0.0229985 0.0230428 0.0229987 0.023043 0.0229989 0.0230432 0.0229991 0.0230434 0.0229993 0.0230435
+          0.0229994 0.0230437 0.0229995 0.0230438 0.0229995 0.0230438 0.023073 0.0230731 0.0230732 0.0230733 0.0230735 0.0230736
+          0.0230738 0.023074 0.0230742 0.0230744 0.0230746 0.0230748 0.0230749 0.023075 0.0230751 0.0230987 0.0230987 0.0230988
+          0.023099 0.0230991 0.0230993 0.0230995 0.0230997 0.0230999 0.0231001 0.0231003 0.0231005 0.0231006 0.0231007 0.0231008
+          0.02312 0.0231201 0.0231202 0.0231203 0.0231205 0.0231207 0.0231209 0.0231211 0.0231213 0.0231215 0.0231217 0.0231218
+          0.023122 0.0231222 0.0231222 0.0231378 0.0231378 0.0231379 0.0231381 0.0231383 0.0231385 0.0231387 0.0231389 0.0231391
+          0.0231393 0.0231395 0.0231397 0.0231399 0.02314 0.0231401 0.0231526 0.0231526 0.0231528 0.0231529 0.0231531 0.0231533
+          0.0231535 0.0231537 0.0231539 0.0231541 0.0231543 0.0231545 0.0231547 0.0231549 0.023155 0.0231649 0.023165 0.0231651
+          0.0231653 0.0231655 0.0231657 0.0231659 0.0231661 0.0231663 0.0231665 0.0231667 0.0231669 0.0231671 0.0231673 0.0231674
+          0.0231752 0.0231753 0.0231754 0.0231756 0.0231758 0.023176 0.0231762 0.0231764 0.0231766 0.0231768 0.023177 0.0231772
+          0.0231775 0.0231777 0.0231778 0.0231837 0.0231838 0.0231839 0.0231841 0.0231843 0.0231845 0.0231847 0.0231849 0.0231852
+          0.0231854 0.0231856 0.0231858 0.023186 0.0231862 0.0231864 0.0231906 0.0231907 0.0231909 0.023191 0.0231912 0.0231915
+          0.0231917 0.0231919 0.0231921 0.0231923 0.0231925 0.0231927 0.0231929 0.0231932 0.0231934 0.0231958 0.023196 0.0231962
+          0.0231963 0.0231966 0.0231968 0.023197 0.0231972 0.0231974 0.0231976 0.0231978 0.023198 0.0231983 0.0231985 0.0231988
+          0.0231994 0.0231996 0.0231998 0.0232 0.0232002 0.0232004 0.0232006 0.0232008 0.023201 0.0232012 0.0232014 0.0232017
+          0.0232019 0.0232022 0.0232025 0.0232013 0.0232015 0.0232017 0.0232019 0.0232021 0.0232023 0.0232025 0.0232027 0.023203
+          0.0232032 0.0232034 0.0232036 0.0232038 0.0232041 0.0232045 0.0232016 0.0232018 0.0232019 0.0232022 0.0232024 0.0232026
+          0.0232028 0.023203 0.0232032 0.0232034 0.0232036 0.0232039 0.0232041 0.0232044 0.0232048 0.0231978 0.023198 0.0231982
+          0.0231984 0.0231986 0.0231988 0.023199 0.0231992 0.0231994 0.0231996 0.0231998 0.0232 0.0232003 0.0232006 0.0232012
+          0.00233515 0.00235974 0.00238062 0.00239938 0.00241661 0.00243257 0.00244739 0.00246115 0.0024738 0.00248499 0.00249376 0.00249727
+          0.00249037 0.00243565 0.00232059 0.00232175 0.00232544 0.00233049 0.00233657 0.00234343 0.0023508 0.00235846 0.00236623 0.00237385
+          0.00238088 0.00238637 0.00238786 0.0023844 0.00236974 0.00232059 0.00232067 0.00232102 0.00232168 0.00232269 0.00232409 0.00232586
+          0.00232798 0.00233039 0.00233298 0.00233556 0.00233765 0.00233817 0.00233608 0.00233076 0.00232059 0.0023206 0.00232062 0.00232067
+          0.00232078 0.00232094 0.00232119 0.00232153 0.00232196 0.00232248 0.00232303 0.0023235 0.00232362 0.00232313 0.00232182 0.00232059
+          0.00232059 0.00232059 0.00232059 0.0023206 0.00232061 0.00232064 0.00232067 0.00232072 0.00232078 0.00232085 0.00232091 0.00232093
+          0.00232086 0.00232071 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.0023206 0.0023206
+          0.00232061 0.00232061 0.00232062 0.00232061 0.0023206 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
+          0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
           0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059 0.00232059
         </DataArray>
         <DataArray type="Float32" Name="x_n^N2" NumberOfComponents="1" format="ascii">
-          0.977349 0.977349 0.977342 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342
-          0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342
-          0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977333 0.977333 0.977333 0.977333 0.977333 0.977333
-          0.977333 0.977333 0.977333 0.977333 0.977333 0.977333 0.977333 0.977333 0.977333 0.977322 0.977322 0.977322
-          0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322
-          0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309
-          0.977309 0.977309 0.977309 0.977293 0.977293 0.977293 0.977293 0.977293 0.977293 0.977293 0.977293 0.977293
-          0.977293 0.977293 0.977293 0.977293 0.977293 0.977293 0.977275 0.977275 0.977275 0.977275 0.977275 0.977275
-          0.977274 0.977274 0.977274 0.977274 0.977274 0.977274 0.977274 0.977274 0.977274 0.977252 0.977252 0.977252
-          0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252
-          0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225
-          0.977225 0.977225 0.977225 0.977192 0.977192 0.977192 0.977192 0.977192 0.977192 0.977192 0.977192 0.977192
-          0.977192 0.977192 0.977192 0.977192 0.977192 0.977192 0.977153 0.977153 0.977153 0.977153 0.977153 0.977153
-          0.977153 0.977153 0.977153 0.977153 0.977153 0.977153 0.977153 0.977153 0.977153 0.977105 0.977105 0.977105
-          0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105
-          0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048
-          0.977048 0.977048 0.977048 0.976979 0.976979 0.976979 0.976979 0.976979 0.976979 0.976979 0.976979 0.976979
-          0.976979 0.976979 0.976979 0.976979 0.976979 0.976979 0.976896 0.976896 0.976896 0.976896 0.976896 0.976896
-          0.976896 0.976896 0.976896 0.976896 0.976896 0.976896 0.976896 0.976896 0.976896 0.977115 0.977144 0.977145
-          0.977144 0.977143 0.97714 0.977137 0.977133 0.977129 0.977126 0.977123 0.977122 0.977122 0.977122 0.977121
-          0.997672 0.997653 0.997625 0.99758 0.997509 0.997398 0.997238 0.997029 0.996803 0.996614 0.996497 0.996447
-          0.996434 0.996435 0.99644 0.997678 0.997671 0.997657 0.997633 0.997594 0.997532 0.997443 0.997335 0.997246
-          0.997217 0.997256 0.997324 0.997388 0.997451 0.997531 0.997679 0.997675 0.997666 0.997648 0.997619 0.997573
-          0.997508 0.997436 0.997394 0.997411 0.997477 0.997548 0.997598 0.997634 0.997657 0.997679 0.997677 0.997669
-          0.997655 0.997631 0.997592 0.997538 0.997484 0.997464 0.997499 0.997565 0.99762 0.997652 0.997669 0.997675
-          0.997679 0.997677 0.997671 0.997659 0.997637 0.997602 0.997555 0.997512 0.997505 0.997547 0.997607 0.997649
-          0.997669 0.997676 0.997678 0.997679 0.997678 0.997672 0.997661 0.99764 0.997608 0.997566 0.99753 0.997532
-          0.997576 0.99763 0.997662 0.997674 0.997678 0.997679 0.997679 0.997678 0.997673 0.997662 0.997642 0.997612
-          0.997572 0.997542 0.99755 0.997596 0.997643 0.997668 0.997677 0.997679 0.997679 0.997679 0.997678 0.997673
-          0.997663 0.997644 0.997614 0.997577 0.997551 0.997564 0.99761 0.997652 0.997672 0.997678 0.997679 0.997679
-          0.997679 0.997678 0.997673 0.997663 0.997645 0.997616 0.99758 0.997558 0.997574 0.99762 0.997658 0.997674
-          0.997679 0.997679 0.997679 0.997679 0.997678 0.997674 0.997663 0.997645 0.997617 0.997582 0.997563 0.997582
-          0.997628 0.997662 0.997676 0.997679 0.997679 0.997679 0.997679 0.997678 0.997674 0.997663 0.997645 0.997617
-          0.997584 0.997567 0.997589 0.997634 0.997666 0.997677 0.997679 0.997679 0.997679 0.997679 0.997678 0.997674
-          0.997664 0.997646 0.997618 0.997586 0.997571 0.997595 0.997639 0.997668 0.997678 0.997679 0.997679 0.997679
-          0.997679 0.997678 0.997674 0.997664 0.997646 0.997619 0.997588 0.997577 0.997604 0.997647 0.997671 0.997678
-          0.997679 0.997679 0.997679 0.997679 0.997678 0.997674 0.997664 0.997648 0.997624 0.9976 0.997596 0.997624
-          0.997658 0.997675 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.977002 0.977002 0.976958 0.976958 0.977002 0.976958 0.977002 0.976958 0.977002 0.976958 0.977002 0.976958
+          0.977002 0.976957 0.977001 0.976957 0.977001 0.976957 0.977001 0.976957 0.977001 0.976957 0.977001 0.976956
+          0.977001 0.976956 0.977001 0.976956 0.977 0.976956 0.976927 0.976927 0.976927 0.976927 0.976927 0.976926
+          0.976926 0.976926 0.976926 0.976926 0.976925 0.976925 0.976925 0.976925 0.976925 0.976901 0.976901 0.976901
+          0.976901 0.976901 0.976901 0.976901 0.9769 0.9769 0.9769 0.9769 0.9769 0.976899 0.976899 0.976899
+          0.97688 0.97688 0.97688 0.97688 0.97688 0.976879 0.976879 0.976879 0.976879 0.976879 0.976878 0.976878
+          0.976878 0.976878 0.976878 0.976862 0.976862 0.976862 0.976862 0.976862 0.976862 0.976861 0.976861 0.976861
+          0.976861 0.976861 0.97686 0.97686 0.97686 0.97686 0.976847 0.976847 0.976847 0.976847 0.976847 0.976847
+          0.976846 0.976846 0.976846 0.976846 0.976846 0.976845 0.976845 0.976845 0.976845 0.976835 0.976835 0.976835
+          0.976835 0.976835 0.976834 0.976834 0.976834 0.976834 0.976833 0.976833 0.976833 0.976833 0.976833 0.976833
+          0.976825 0.976825 0.976825 0.976824 0.976824 0.976824 0.976824 0.976824 0.976823 0.976823 0.976823 0.976823
+          0.976823 0.976822 0.976822 0.976816 0.976816 0.976816 0.976816 0.976816 0.976815 0.976815 0.976815 0.976815
+          0.976815 0.976814 0.976814 0.976814 0.976814 0.976814 0.976809 0.976809 0.976809 0.976809 0.976809 0.976809
+          0.976808 0.976808 0.976808 0.976808 0.976807 0.976807 0.976807 0.976807 0.976807 0.976804 0.976804 0.976804
+          0.976804 0.976803 0.976803 0.976803 0.976803 0.976803 0.976802 0.976802 0.976802 0.976802 0.976801 0.976801
+          0.976801 0.9768 0.9768 0.9768 0.9768 0.9768 0.976799 0.976799 0.976799 0.976799 0.976799 0.976798
+          0.976798 0.976798 0.976798 0.976799 0.976799 0.976798 0.976798 0.976798 0.976798 0.976797 0.976797 0.976797
+          0.976797 0.976797 0.976796 0.976796 0.976796 0.976795 0.976798 0.976798 0.976798 0.976798 0.976798 0.976797
+          0.976797 0.976797 0.976797 0.976797 0.976796 0.976796 0.976796 0.976796 0.976795 0.976802 0.976802 0.976802
+          0.976802 0.976801 0.976801 0.976801 0.976801 0.976801 0.9768 0.9768 0.9768 0.9768 0.976799 0.976799
+          0.997665 0.99764 0.997619 0.997601 0.997583 0.997567 0.997553 0.997539 0.997526 0.997515 0.997506 0.997503
+          0.99751 0.997564 0.997679 0.997678 0.997675 0.99767 0.997663 0.997657 0.997649 0.997642 0.997634 0.997626
+          0.997619 0.997614 0.997612 0.997616 0.99763 0.997679 0.997679 0.997679 0.997678 0.997677 0.997676 0.997674
+          0.997672 0.99767 0.997667 0.997664 0.997662 0.997662 0.997664 0.997669 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997678 0.997678 0.997678 0.997677 0.997676 0.997676 0.997677 0.997678 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
+          0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
           0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679 0.997679
         </DataArray>
-        <DataArray type="Float32" Name="velocity_w" NumberOfComponents="3" format="ascii">
-          3.48029e-09 -1.96948e-10 0 6.35099e-09 -1.67335e-10 0 3.4821e-09 -4.03505e-10 0 6.35368e-09 -3.41339e-10 0
-          1.08341e-08 -1.06206e-10 0 1.08373e-08 -2.12905e-10 0 1.29697e-08 -5.32877e-11 0 1.29719e-08 -1.0176e-10 0
-          1.33595e-08 -2.1393e-11 0 1.33607e-08 -3.47924e-11 0 1.27604e-08 -5.24208e-12 0 1.27609e-08 -8.87102e-13 0
-          1.16715e-08 2.39919e-12 0 1.16717e-08 1.51532e-11 0 1.03527e-08 5.92331e-12 0 1.03528e-08 2.25509e-11 0
-          8.92875e-09 7.50621e-12 0 8.92879e-09 2.58734e-11 0 7.45833e-09 8.18075e-12 0 7.45834e-09 2.72892e-11 0
-          5.96882e-09 8.43331e-12 0 5.96882e-09 2.78193e-11 0 4.47316e-09 8.48025e-12 0 4.47315e-09 2.79177e-11 0
-          2.97805e-09 8.40904e-12 0 2.97804e-09 2.77677e-11 0 1.48686e-09 8.29368e-12 0 1.48686e-09 2.75296e-11 0
-          7.42481e-10 8.20346e-12 0 7.42486e-10 2.74148e-11 0 3.48877e-09 -8.57972e-10 0 6.3636e-09 -7.23904e-10 0
-          1.08493e-08 -4.47101e-10 0 1.29803e-08 -2.07789e-10 0 1.33653e-08 -6.37098e-11 0 1.27631e-08 9.20559e-12 0
-          1.16727e-08 4.36965e-11 0 1.03532e-08 5.96027e-11 0 8.92899e-09 6.67462e-11 0 7.45842e-09 6.97899e-11 0
-          5.96884e-09 7.09292e-11 0 4.47314e-09 7.11402e-11 0 2.97801e-09 7.08171e-11 0 1.48685e-09 7.03057e-11 0
-          7.42506e-10 7.00775e-11 0 3.50322e-09 -1.40393e-09 0 6.38504e-09 -1.18268e-09 0 1.0875e-08 -7.26781e-10 0
-          1.29984e-08 -3.33423e-10 0 1.3375e-08 -9.69865e-11 0 1.27678e-08 2.25637e-11 0 1.16749e-08 7.90978e-11 0
-          1.03542e-08 1.05167e-10 0 8.92941e-09 1.16874e-10 0 7.45858e-09 1.21861e-10 0 5.96888e-09 1.23726e-10 0
-          4.47313e-09 1.2407e-10 0 2.97796e-09 1.23539e-10 0 1.48683e-09 1.22687e-10 0 7.42521e-10 1.2224e-10 0
-          3.52999e-09 -2.06133e-09 0 6.42465e-09 -1.73355e-09 0 1.09224e-08 -1.06028e-09 0 1.30316e-08 -4.81511e-10 0
-          1.33929e-08 -1.34654e-10 0 1.27764e-08 4.04498e-11 0 1.16789e-08 1.23211e-10 0 1.0356e-08 1.6137e-10 0
-          8.9302e-09 1.78501e-10 0 7.45889e-09 1.85795e-10 0 5.96897e-09 1.88521e-10 0 4.4731e-09 1.89021e-10 0
-          2.97787e-09 1.88237e-10 0 1.48676e-09 1.86959e-10 0 7.42513e-10 1.86225e-10 0 3.57609e-09 -2.85588e-09 0
-          6.49258e-09 -2.39622e-09 0 1.10033e-08 -1.457e-09 0 1.30879e-08 -6.5459e-10 0 1.34232e-08 -1.76099e-10 0
-          1.2791e-08 6.48155e-11 0 1.16857e-08 1.78584e-10 0 1.03591e-08 2.31025e-10 0 8.93153e-09 2.54559e-10 0
-          7.45942e-09 2.64572e-10 0 5.96913e-09 2.68309e-10 0 4.47306e-09 2.68988e-10 0 2.97772e-09 2.67894e-10 0
-          1.48664e-09 2.66084e-10 0 7.4246e-10 2.65006e-10 0 3.65249e-09 -3.82189e-09 0 6.60447e-09 -3.19574e-09 0
-          1.11355e-08 -1.92714e-09 0 1.31794e-08 -8.54176e-10 0 1.34721e-08 -2.19499e-10 0 1.28146e-08 9.8698e-11 0
-          1.16966e-08 2.48758e-10 0 1.03641e-08 3.179e-10 0 8.9337e-09 3.48911e-10 0 7.46029e-09 3.62088e-10 0
-          5.96938e-09 3.66994e-10 0 4.473e-09 3.67871e-10 0 2.97747e-09 3.66394e-10 0 1.48643e-09 3.63911e-10 0
-          7.42336e-10 3.62416e-10 0 3.77687e-09 -5.00726e-09 0 6.78487e-09 -4.16479e-09 0 1.13463e-08 -2.48094e-09 0
-          1.33234e-08 -1.0794e-09 0 1.35485e-08 -2.60855e-10 0 1.28512e-08 1.46841e-10 0 1.17136e-08 3.38719e-10 0
-          1.03718e-08 4.27074e-10 0 8.93706e-09 4.66665e-10 0 7.46163e-09 4.83453e-10 0 5.96979e-09 4.89681e-10 0
-          4.4729e-09 4.90767e-10 0 2.97708e-09 4.88805e-10 0 1.48606e-09 4.85457e-10 0 7.42098e-10 4.83439e-10 0
-          3.97885e-09 -6.48285e-09 0 7.07343e-09 -5.34737e-09 0 1.16772e-08 -3.12671e-09 0 1.3545e-08 -1.3244e-09 0
-          1.36646e-08 -2.92317e-10 0 1.29065e-08 2.16716e-10 0 1.17392e-08 4.55589e-10 0 1.03834e-08 5.65486e-10 0
-          8.94214e-09 6.14657e-10 0 7.46366e-09 6.35437e-10 0 5.97039e-09 6.43101e-10 0 4.47275e-09 6.44386e-10 0
-          2.97646e-09 6.41803e-10 0 1.48546e-09 6.37311e-10 0 7.41678e-10 6.34599e-10 0 4.31127e-09 -8.3612e-09 0
-          7.53705e-09 -6.80487e-09 0 1.21933e-08 -3.86595e-09 0 1.38803e-08 -1.57332e-09 0 1.38369e-08 -2.99351e-10 0
-          1.29882e-08 3.20137e-10 0 1.1777e-08 6.09702e-10 0 1.04006e-08 7.42749e-10 0 8.9496e-09 8.02134e-10 0
-          7.46662e-09 8.27097e-10 0 5.97127e-09 8.36218e-10 0 4.47251e-09 8.37655e-10 0 2.97549e-09 8.34262e-10 0
-          1.48447e-09 8.28201e-10 0 7.40948e-10 8.24499e-10 0 4.87647e-09 -1.08377e-08 0 8.29554e-09 -8.62534e-09 0
-          1.29988e-08 -4.68105e-09 0 1.4379e-08 -1.79092e-09 0 1.40859e-08 -2.56148e-10 0 1.31051e-08 4.75746e-10 0
-          1.18311e-08 8.1619e-10 0 1.04251e-08 9.72336e-10 0 8.9602e-09 1.04175e-09 0 7.4708e-09 1.07068e-09 0
-          5.97249e-09 1.08108e-09 0 4.47211e-09 1.08256e-09 0 2.97394e-09 1.07812e-09 0 1.4828e-09 1.0698e-09 0
-          7.39665e-10 1.06454e-09 0 5.89735e-09 -1.42918e-08 0 9.5821e-09 -1.09336e-08 0 1.42631e-08 -5.50291e-09 0
-          1.51048e-08 -1.90516e-09 0 1.44342e-08 -1.18726e-10 0 1.32671e-08 7.12595e-10 0 1.19059e-08 1.09728e-09 0
-          1.04588e-08 1.27328e-09 0 8.97469e-09 1.351e-09 0 7.47643e-09 1.38287e-09 0 5.97408e-09 1.39404e-09 0
-          4.47146e-09 1.39538e-09 0 2.97144e-09 1.3896e-09 0 1.47992e-09 1.37785e-09 0 7.37284e-10 1.36985e-09 0
-          7.9441e-09 -1.95802e-08 0 1.19051e-08 -1.38739e-08 0 1.62618e-08 -6.12278e-09 0 1.61215e-08 -1.7789e-09 0
-          1.4898e-08 1.83767e-10 0 1.34808e-08 1.07478e-09 0 1.20042e-08 1.48533e-09 0 1.0503e-08 1.67252e-09 0
-          8.99339e-09 1.75413e-09 0 7.48347e-09 1.78661e-09 0 5.97597e-09 1.79741e-09 0 4.47046e-09 1.79836e-09 0
-          2.96739e-09 1.79113e-09 0 1.47458e-09 1.77393e-09 0 7.324e-10 1.76019e-09 0 1.28464e-08 -2.91061e-08 0
-          1.65612e-08 -1.73392e-08 0 1.93832e-08 -5.96031e-09 0 1.74308e-08 -1.18503e-09 0 1.54702e-08 7.56331e-10 0
-          1.37431e-08 1.62595e-09 0 1.21247e-08 2.02626e-09 0 1.05566e-08 2.20787e-09 0 9.01536e-09 2.28488e-09 0
-          7.49123e-09 2.31349e-09 0 5.97784e-09 2.32186e-09 0 4.46909e-09 2.32214e-09 0 2.96093e-09 2.31434e-09 0
-          1.4636e-09 2.28848e-09 0 7.20451e-10 2.25972e-09 0 2.87501e-08 -5.22672e-08 0 2.76966e-08 -1.84313e-08 0
-          2.35557e-08 -3.82916e-09 0 1.88469e-08 1.55659e-10 0 1.6091e-08 1.73515e-09 0 1.4027e-08 2.4489e-09 0
-          1.22555e-08 2.78175e-09 0 1.06134e-08 2.93083e-09 0 9.03685e-09 2.98918e-09 0 7.49752e-09 3.0064e-09 0
-          5.97881e-09 3.00893e-09 0 4.46777e-09 3.00832e-09 0 2.95267e-09 3.00349e-09 0 1.4362e-09 2.97085e-09 0
-          6.79713e-10 2.886e-09 0 7.07074e-08 -3.45779e-08 0 5.2853e-08 -8.85201e-09 0 2.96726e-08 -1.04053e-09 0
-          2.15376e-08 5.24009e-10 0 1.69733e-08 1.17237e-09 0 1.3962e-08 1.46987e-09 0 1.17095e-08 1.61092e-09 0
-          9.86097e-09 1.67329e-09 0 8.24236e-09 1.69565e-09 0 6.76e-09 1.70026e-09 0 5.35576e-09 1.69953e-09 0
-          3.99125e-09 1.69899e-09 0 2.64144e-09 1.69799e-09 0 1.26652e-09 1.68091e-09 0 5.65364e-10 1.61598e-09 0
-          5.36123e-18 -2.81047e-15 0 4.44235e-18 -2.81054e-15 0 2.86702e-18 -2.81071e-15 0 1.79412e-18 -2.81085e-15 0
-          1.12055e-18 -2.81094e-15 0 7.05915e-19 -2.811e-15 0 4.51541e-19 -2.81103e-15 0 2.94709e-19 -2.81105e-15 0
-          1.97023e-19 -2.81106e-15 0 1.35099e-19 -2.81106e-15 0 9.42991e-20 -2.81107e-15 0 6.60646e-20 -2.81107e-15 0
-          4.61675e-20 -2.81107e-15 0 3.31594e-20 -2.81108e-15 0 2.8386e-20 -2.81108e-15 0 5.43826e-18 -5.61972e-15 0
-          4.50839e-18 -5.61993e-15 0 2.89513e-18 -5.6204e-15 0 1.77594e-18 -5.62079e-15 0 1.07401e-18 -5.62105e-15 0
-          6.4695e-19 -5.62121e-15 0 3.89221e-19 -5.62131e-15 0 2.34533e-19 -5.62137e-15 0 1.42194e-19 -5.6214e-15 0
-          8.73599e-20 -5.62142e-15 0 5.48852e-20 -5.62143e-15 0 3.60491e-20 -5.62144e-15 0 2.63404e-20 -5.62145e-15 0
-          2.33799e-20 -5.62146e-15 0 2.33775e-20 -5.62146e-15 0 5.2972e-18 -5.61872e-15 0 4.2991e-18 -5.61909e-15 0
-          2.6474e-18 -5.61981e-15 0 1.59642e-18 -5.62043e-15 0 9.60226e-19 -5.62083e-15 0 5.77726e-19 -5.62108e-15 0
-          3.4779e-19 -5.62123e-15 0 2.09872e-19 -5.62132e-15 0 1.27372e-19 -5.62138e-15 0 7.80951e-20 -5.62141e-15 0
-          4.87837e-20 -5.62143e-15 0 3.18362e-20 -5.62145e-15 0 2.30287e-20 -5.62146e-15 0 1.96666e-20 -5.62146e-15 0
-          1.9055e-20 -5.62147e-15 0 5.09581e-18 -5.61776e-15 0 4.03105e-18 -5.61834e-15 0 2.35198e-18 -5.61935e-15 0
-          1.387e-18 -5.62015e-15 0 8.29189e-19 -5.62067e-15 0 4.98104e-19 -5.62098e-15 0 2.99858e-19 -5.62117e-15 0
-          1.81045e-19 -5.62129e-15 0 1.09867e-19 -5.62136e-15 0 6.72046e-20 -5.6214e-15 0 4.17885e-20 -5.62143e-15 0
-          2.7144e-20 -5.62144e-15 0 1.94885e-20 -5.62146e-15 0 1.63464e-20 -5.62147e-15 0 1.56419e-20 -5.62147e-15 0
-          4.83259e-18 -5.61682e-15 0 3.71292e-18 -5.61768e-15 0 2.03355e-18 -5.61899e-15 0 1.17327e-18 -5.61995e-15 0
-          6.97698e-19 -5.62055e-15 0 4.18488e-19 -5.62091e-15 0 2.51891e-19 -5.62113e-15 0 1.5212e-19 -5.62126e-15 0
-          9.22824e-20 -5.62134e-15 0 5.63357e-20 -5.62139e-15 0 3.49157e-20 -5.62142e-15 0 2.26146e-20 -5.62144e-15 0
-          1.61691e-20 -5.62146e-15 0 1.34491e-20 -5.62147e-15 0 1.28026e-20 -5.62147e-15 0 4.50448e-18 -5.6159e-15 0
-          3.35395e-18 -5.61711e-15 0 1.71246e-18 -5.61872e-15 0 9.70475e-19 -5.61981e-15 0 5.7479e-19 -5.62047e-15 0
-          3.44326e-19 -5.62087e-15 0 2.07222e-19 -5.6211e-15 0 1.25161e-19 -5.62125e-15 0 7.58997e-20 -5.62133e-15 0
-          4.62577e-20 -5.62139e-15 0 2.86029e-20 -5.62142e-15 0 1.84964e-20 -5.62144e-15 0 1.31977e-20 -5.62146e-15 0
-          1.09298e-20 -5.62147e-15 0 1.03763e-20 -5.62147e-15 0 4.1118e-18 -5.61498e-15 0 2.96469e-18 -5.61663e-15 0
-          1.4046e-18 -5.61853e-15 0 7.86718e-19 -5.61971e-15 0 4.6457e-19 -5.62041e-15 0 2.78021e-19 -5.62083e-15 0
-          1.67306e-19 -5.62108e-15 0 1.01062e-19 -5.62124e-15 0 6.12628e-20 -5.62133e-15 0 3.72841e-20 -5.62138e-15 0
-          2.30149e-20 -5.62142e-15 0 1.48713e-20 -5.62144e-15 0 1.06017e-20 -5.62146e-15 0 8.75835e-21 -5.62147e-15 0
-          8.30146e-21 -5.62147e-15 0 3.66007e-18 -5.61406e-15 0 2.55667e-18 -5.61623e-15 0 1.12116e-18 -5.6184e-15 0
-          6.25201e-19 -5.61965e-15 0 3.68242e-19 -5.62038e-15 0 2.20229e-19 -5.62081e-15 0 1.32525e-19 -5.62107e-15 0
-          8.00601e-20 -5.62123e-15 0 4.85131e-20 -5.62132e-15 0 2.94867e-20 -5.62138e-15 0 1.81781e-20 -5.62142e-15 0
-          1.1743e-20 -5.62144e-15 0 8.36961e-21 -5.62145e-15 0 6.90459e-21 -5.62147e-15 0 6.53789e-21 -5.62147e-15 0
-          3.1601e-18 -5.61316e-15 0 2.14171e-18 -5.61592e-15 0 8.68838e-19 -5.61831e-15 0 4.86007e-19 -5.6196e-15 0
-          2.85441e-19 -5.62035e-15 0 1.70668e-19 -5.6208e-15 0 1.02701e-19 -5.62106e-15 0 6.2049e-20 -5.62122e-15 0
-          3.75834e-20 -5.62132e-15 0 2.28154e-20 -5.62138e-15 0 1.40509e-20 -5.62142e-15 0 9.0778e-21 -5.62144e-15 0
-          6.47118e-21 -5.62145e-15 0 5.33429e-21 -5.62147e-15 0 5.04787e-21 -5.62147e-15 0 2.62666e-18 -5.61228e-15 0
-          1.73091e-18 -5.61568e-15 0 6.50364e-19 -5.61826e-15 0 3.67485e-19 -5.61958e-15 0 2.15051e-19 -5.62034e-15 0
-          1.28614e-19 -5.62079e-15 0 7.73928e-20 -5.62106e-15 0 4.67629e-20 -5.62122e-15 0 2.831e-20 -5.62132e-15 0
-          1.71638e-20 -5.62138e-15 0 1.05616e-20 -5.62142e-15 0 6.82643e-21 -5.62144e-15 0 4.86848e-21 -5.62145e-15 0
-          4.01163e-21 -5.62147e-15 0 3.79481e-21 -5.62147e-15 0 2.07643e-18 -5.61144e-15 0 1.3339e-18 -5.61551e-15 0
-          4.65467e-19 -5.61823e-15 0 2.67237e-19 -5.61956e-15 0 1.55668e-19 -5.62033e-15 0 9.31709e-20 -5.62078e-15 0
-          5.60614e-20 -5.62105e-15 0 3.38769e-20 -5.62122e-15 0 2.04941e-20 -5.62132e-15 0 1.24073e-20 -5.62138e-15 0
-          7.62995e-21 -5.62142e-15 0 4.93547e-21 -5.62144e-15 0 3.52223e-21 -5.62145e-15 0 2.90193e-21 -5.62147e-15 0
-          2.7445e-21 -5.62147e-15 0 1.52595e-18 -5.61065e-15 0 9.58304e-19 -5.6154e-15 0 3.11831e-19 -5.61821e-15 0
-          1.82707e-19 -5.61955e-15 0 1.05842e-19 -5.62032e-15 0 6.343e-20 -5.62078e-15 0 3.81617e-20 -5.62105e-15 0
-          2.30609e-20 -5.62122e-15 0 1.39352e-20 -5.62132e-15 0 8.42206e-21 -5.62138e-15 0 5.17788e-21 -5.62142e-15 0
-          3.35352e-21 -5.62144e-15 0 2.39517e-21 -5.62145e-15 0 1.97338e-21 -5.62147e-15 0 1.86613e-21 -5.62147e-15 0
-          9.89905e-19 -5.60991e-15 0 6.0955e-19 -5.61533e-15 0 1.85991e-19 -5.6182e-15 0 1.11505e-19 -5.61954e-15 0
-          6.41986e-20 -5.62032e-15 0 3.85396e-20 -5.62078e-15 0 2.31829e-20 -5.62105e-15 0 1.40057e-20 -5.62122e-15 0
-          8.44802e-21 -5.62132e-15 0 5.09635e-21 -5.62138e-15 0 3.13464e-21 -5.62142e-15 0 2.03363e-21 -5.62144e-15 0
-          1.45365e-21 -5.62145e-15 0 1.19779e-21 -5.62147e-15 0 1.13264e-21 -5.62147e-15 0 4.801e-19 -5.60924e-15 0
-          2.9095e-19 -5.6153e-15 0 8.40276e-20 -5.61819e-15 0 5.15289e-20 -5.61954e-15 0 2.94891e-20 -5.62032e-15 0
-          1.77368e-20 -5.62078e-15 0 1.0666e-20 -5.62105e-15 0 6.4385e-21 -5.62122e-15 0 3.87429e-21 -5.62132e-15 0
-          2.33395e-21 -5.62138e-15 0 1.43743e-21 -5.62142e-15 0 9.34196e-22 -5.62144e-15 0 6.6823e-22 -5.62145e-15 0
-          5.50692e-22 -5.62147e-15 0 5.20741e-22 -5.62147e-15 0 1.18926e-19 -5.60891e-15 0 7.17437e-20 -5.61529e-15 0
-          2.03839e-20 -5.61819e-15 0 1.25885e-20 -5.61954e-15 0 7.19079e-21 -5.62032e-15 0 4.32767e-21 -5.62078e-15 0
-          2.60216e-21 -5.62105e-15 0 1.57032e-21 -5.62122e-15 0 9.44169e-22 -5.62132e-15 0 5.68562e-22 -5.62138e-15 0
-          3.50332e-22 -5.62142e-15 0 2.27808e-22 -5.62144e-15 0 1.62985e-22 -5.62145e-15 0 1.34323e-22 -5.62147e-15 0
-          1.27018e-22 -5.62147e-15 0
-        </DataArray>
-        <DataArray type="Float32" Name="velocity_n" NumberOfComponents="3" format="ascii">
-          3.23926e-16 9.01953e-12 0 5.91114e-16 9.01953e-12 0 3.24558e-16 9.02597e-12 0 5.92211e-16 9.02598e-12 0
-          1.00838e-15 9.01956e-12 0 1.01012e-15 9.02601e-12 0 1.20715e-15 9.01958e-12 0 1.20909e-15 9.02605e-12 0
-          1.24343e-15 9.01961e-12 0 1.24533e-15 9.02608e-12 0 1.18767e-15 9.01964e-12 0 1.18943e-15 9.02611e-12 0
-          1.08632e-15 9.01967e-12 0 1.0879e-15 9.02613e-12 0 9.63582e-16 9.01969e-12 0 9.64972e-16 9.02616e-12 0
-          8.3105e-16 9.01971e-12 0 8.32244e-16 9.02618e-12 0 6.94191e-16 9.01973e-12 0 6.95186e-16 9.0262e-12 0
-          5.55554e-16 9.01974e-12 0 5.5635e-16 9.02621e-12 0 4.16345e-16 9.01975e-12 0 4.1694e-16 9.02622e-12 0
-          2.77186e-16 9.01976e-12 0 2.77582e-16 9.02623e-12 0 1.38391e-16 9.01977e-12 0 1.3859e-16 9.02623e-12 0
-          6.91074e-17 9.01977e-12 0 6.92073e-17 9.02624e-12 0 3.25582e-16 9.03798e-12 0 5.9387e-16 9.038e-12 0
-          1.01249e-15 9.03805e-12 0 1.21137e-15 9.03809e-12 0 1.24729e-15 9.03813e-12 0 1.1911e-15 9.03816e-12 0
-          1.08935e-15 9.03819e-12 0 9.66209e-16 9.03822e-12 0 8.33293e-16 9.03824e-12 0 6.96054e-16 9.03825e-12 0
-          5.5704e-16 9.03827e-12 0 4.17456e-16 9.03828e-12 0 2.77923e-16 9.03829e-12 0 1.38761e-16 9.03829e-12 0
-          6.92952e-17 9.03829e-12 0 3.27416e-16 9.05024e-12 0 5.96756e-16 9.05026e-12 0 1.01639e-15 9.05032e-12 0
-          1.21485e-15 9.05038e-12 0 1.25006e-15 9.05043e-12 0 1.19331e-15 9.05047e-12 0 1.09117e-15 9.0505e-12 0
-          9.67737e-16 9.05053e-12 0 8.34571e-16 9.05055e-12 0 6.97104e-16 9.05056e-12 0 5.57873e-16 9.05058e-12 0
-          4.18075e-16 9.05059e-12 0 2.78331e-16 9.0506e-12 0 1.38965e-16 9.0506e-12 0 6.93997e-17 9.0506e-12 0
-          3.30507e-16 9.06497e-12 0 6.0153e-16 9.06501e-12 0 1.02265e-15 9.06509e-12 0 1.22013e-15 9.06517e-12 0
-          1.25396e-15 9.06522e-12 0 1.19625e-15 9.06527e-12 0 1.09349e-15 9.0653e-12 0 9.69634e-16 9.06533e-12 0
-          8.36134e-16 9.06535e-12 0 6.98378e-16 9.06537e-12 0 5.58877e-16 9.06538e-12 0 4.18819e-16 9.06539e-12 0
-          2.78819e-16 9.0654e-12 0 1.39207e-16 9.0654e-12 0 6.95228e-17 9.0654e-12 0 3.35541e-16 9.08269e-12 0
-          6.09194e-16 9.08274e-12 0 1.03243e-15 9.08285e-12 0 1.22804e-15 9.08295e-12 0 1.2595e-15 9.08302e-12 0
-          1.20018e-15 9.08307e-12 0 1.09647e-15 9.0831e-12 0 9.72002e-16 9.08313e-12 0 8.38053e-16 9.08315e-12 0
-          6.99925e-16 9.08317e-12 0 5.6009e-16 9.08318e-12 0 4.19713e-16 9.0832e-12 0 2.79403e-16 9.0832e-12 0
-          1.39494e-16 9.08321e-12 0 6.96669e-17 9.08321e-12 0 3.43593e-16 9.10402e-12 0 6.21288e-16 9.10408e-12 0
-          1.04753e-15 9.10422e-12 0 1.2398e-15 9.10435e-12 0 1.26734e-15 9.10443e-12 0 1.20549e-15 9.10449e-12 0
-          1.10032e-15 9.10453e-12 0 9.74971e-16 9.10456e-12 0 8.40415e-16 9.10458e-12 0 7.01809e-16 9.1046e-12 0
-          5.61557e-16 9.10461e-12 0 4.20788e-16 9.10462e-12 0 2.80099e-16 9.10463e-12 0 1.39833e-16 9.10464e-12 0
-          6.98346e-17 9.10464e-12 0 3.56392e-16 9.12969e-12 0 6.40233e-16 9.12978e-12 0 1.07066e-15 9.12996e-12 0
-          1.25723e-15 9.13012e-12 0 1.27847e-15 9.13022e-12 0 1.21267e-15 9.13029e-12 0 1.10533e-15 9.13033e-12 0
-          9.78716e-16 9.13036e-12 0 8.43333e-16 9.13038e-12 0 7.04107e-16 9.1304e-12 0 5.63332e-16 9.13042e-12 0
-          4.22081e-16 9.13043e-12 0 2.80929e-16 9.13044e-12 0 1.40231e-16 9.13044e-12 0 7.00283e-17 9.13044e-12 0
-          3.76847e-16 9.16063e-12 0 6.69945e-16 9.16075e-12 0 1.10598e-15 9.16098e-12 0 1.28289e-15 9.16117e-12 0
-          1.29422e-15 9.1613e-12 0 1.22243e-15 9.16137e-12 0 1.11187e-15 9.16142e-12 0 9.8346e-16 9.16146e-12 0
-          8.4695e-16 9.16148e-12 0 7.06918e-16 9.1615e-12 0 5.65485e-16 9.16151e-12 0 4.23636e-16 9.16152e-12 0
-          2.81916e-16 9.16153e-12 0 1.40696e-16 9.16154e-12 0 7.02489e-17 9.16154e-12 0 4.10157e-16 9.19793e-12 0
-          7.17046e-16 9.19809e-12 0 1.16003e-15 9.19839e-12 0 1.32053e-15 9.19863e-12 0 1.3164e-15 9.19878e-12 0
-          1.23566e-15 9.19887e-12 0 1.12044e-15 9.19892e-12 0 9.89487e-16 9.19896e-12 0 8.51445e-16 9.19898e-12 0
-          7.1036e-16 9.199e-12 0 5.68096e-16 9.19902e-12 0 4.25507e-16 9.19903e-12 0 2.83083e-16 9.19904e-12 0
-          1.4123e-16 9.19904e-12 0 7.04935e-17 9.19904e-12 0 4.66422e-16 9.24294e-12 0 7.93448e-16 9.24316e-12 0
-          1.2433e-15 9.24356e-12 0 1.37532e-15 9.24387e-12 0 1.34729e-15 9.24404e-12 0 1.25349e-15 9.24414e-12 0
-          1.13163e-15 9.2442e-12 0 9.9715e-16 9.24424e-12 0 8.57037e-16 9.24426e-12 0 7.14578e-16 9.24428e-12 0
-          5.71266e-16 9.2443e-12 0 4.27756e-16 9.24431e-12 0 2.84457e-16 9.24432e-12 0 1.4183e-16 9.24432e-12 0
-          7.07496e-17 9.24432e-12 0 5.67713e-16 9.2973e-12 0 9.2243e-16 9.29763e-12 0 1.37305e-15 9.29818e-12 0
-          1.45409e-15 9.29856e-12 0 1.38953e-15 9.29876e-12 0 1.27719e-15 9.29887e-12 0 1.14615e-15 9.29893e-12 0
-          1.00685e-15 9.29897e-12 0 8.63974e-16 9.299e-12 0 7.19741e-16 9.29902e-12 0 5.75114e-16 9.29903e-12 0
-          4.3046e-16 9.29905e-12 0 2.86056e-16 9.29905e-12 0 1.4247e-16 9.29906e-12 0 7.09779e-17 9.29906e-12 0
-          7.70697e-16 9.36299e-12 0 1.15498e-15 9.36355e-12 0 1.57764e-15 9.36433e-12 0 1.56404e-15 9.36479e-12 0
-          1.44534e-15 9.36501e-12 0 1.30786e-15 9.36512e-12 0 1.16461e-15 9.36519e-12 0 1.01897e-15 9.36523e-12 0
-          8.72513e-16 9.36526e-12 0 7.26027e-16 9.36528e-12 0 5.79774e-16 9.3653e-12 0 4.33713e-16 9.36531e-12 0
-          2.8789e-16 9.36531e-12 0 1.43061e-16 9.36532e-12 0 7.10564e-17 9.36532e-12 0 1.25797e-15 9.44232e-12 0
-          1.62175e-15 9.44349e-12 0 1.8981e-15 9.44464e-12 0 1.70692e-15 9.44515e-12 0 1.51493e-15 9.44537e-12 0
-          1.3458e-15 9.44548e-12 0 1.18732e-15 9.44555e-12 0 1.03377e-15 9.44559e-12 0 8.82845e-16 9.44562e-12 0
-          7.33593e-16 9.44564e-12 0 5.85392e-16 9.44566e-12 0 4.37645e-16 9.44567e-12 0 2.89956e-16 9.44567e-12 0
-          1.43327e-16 9.44568e-12 0 7.05522e-17 9.44567e-12 0 2.985e-15 9.5362e-12 0 2.81499e-15 9.54014e-12 0
-          2.33638e-15 9.54177e-12 0 1.86674e-15 9.54222e-12 0 1.59323e-15 9.54241e-12 0 1.38868e-15 9.54251e-12 0
-          1.21326e-15 9.54256e-12 0 1.05072e-15 9.5426e-12 0 8.94671e-16 9.54262e-12 0 7.41941e-16 9.54264e-12 0
-          5.91408e-16 9.54265e-12 0 4.42076e-16 9.54266e-12 0 2.9222e-16 9.54267e-12 0 1.42266e-16 9.54267e-12 0
-          6.75035e-17 9.54266e-12 0 1.27705e-14 -7.91195e-08 0 8.59693e-15 4.79834e-12 0 3.71687e-15 4.80495e-12 0
-          2.65848e-15 4.80884e-12 0 2.08958e-15 4.81039e-12 0 1.71836e-15 4.81045e-12 0 1.44202e-15 4.8097e-12 0
-          1.21543e-15 4.80855e-12 0 1.0168e-15 4.80728e-12 0 8.31862e-16 4.80606e-12 0 6.57867e-16 4.805e-12 0
-          4.91953e-16 4.80414e-12 0 3.26276e-16 4.80352e-12 0 1.57451e-16 4.80319e-12 0 7.16049e-17 4.80312e-12 0
-          0.544591 0.0621443 0 0.448797 0.0551806 0 0.287151 0.0373822 0 0.179599 0.0236337 0
-          0.112164 0.0145832 0 0.070666 0.00893798 0 0.0452135 0.00550132 0 0.0295231 0.00341598 0
-          0.0197492 0.00215573 0 0.0135293 0.00140809 0 0.00943042 0.000956819 0 0.00661464 0.000682272 0
-          0.00462721 0.000490271 0 0.00333361 0.000292298 0 0.00286312 -6.87415e-06 0 0.544205 0.175893 0
-          0.451159 0.154628 0 0.289728 0.107386 0 0.177737 0.0680822 0 0.107499 0.0418815 0
-          0.0647644 0.0255658 0 0.0389736 0.015628 0 0.0234921 0.00959872 0 0.014248 0.0059578 0
-          0.00875568 0.00379058 0 0.00550111 0.00249091 0 0.0036127 0.00168632 0 0.00263923 0.00112055 0
-          0.00234217 0.000581897 0 0.00234173 -1.54276e-05 0 0.530088 0.276051 0 0.430212 0.238496 0
-          0.264931 0.166011 0 0.159764 0.104726 0 0.0961033 0.0641144 0 0.0578283 0.0389815 0
-          0.034819 0.0236922 0 0.0210163 0.0144243 0 0.0127576 0.00883449 0 0.00782267 0.0054996 0
-          0.00488609 0.00350242 0 0.00318798 0.00224941 0 0.00230555 0.00136979 0 0.00196864 0.000602869 0
-          0.00190729 -1.74192e-05 0 0.509935 0.371692 0 0.403387 0.313311 0 0.235365 0.212392 0
-          0.138803 0.132204 0 0.0829862 0.0805162 0 0.0498559 0.0488265 0 0.0300179 0.0296008 0
-          0.0181273 0.0179626 0 0.0110021 0.0109518 0 0.00672996 0.00676601 0 0.00418414 0.00425017 0
-          0.00271728 0.00266416 0 0.0019506 0.00155993 0 0.00163594 0.000649789 0 0.00156538 -1.77938e-05 0
-          0.483594 0.465242 0 0.371551 0.379397 0 0.203499 0.248256 0 0.117414 0.152179 0
-          0.0698253 0.0922491 0 0.041886 0.0558335 0 0.0252149 0.0337997 0 0.0152301 0.0204783 0
-          0.00924016 0.0124613 0 0.00564067 0.0076719 0 0.0034954 0.00478351 0 0.00226353 0.00295876 0
-          0.0016182 0.00169826 0 0.00134589 0.000690905 0 0.00128118 -1.7871e-05 0 0.450761 0.557938 0
-          0.335629 0.43672 0 0.171367 0.27507 0 0.0971187 0.166303 0 0.0575242 0.10044 0
-          0.0344626 0.0607034 0 0.0207429 0.0367142 0 0.0125304 0.0222251 0 0.00759921 0.0135118 0
-          0.00463114 0.00830336 0 0.00286315 0.00515413 0 0.0018512 0.00316275 0 0.00132076 0.00179528 0
-          0.00109376 0.000721544 0 0.00103836 -1.78901e-05 0 0.411465 0.650195 0 0.296675 0.485165 0
-          0.140559 0.294349 0 0.0787293 0.176047 0 0.0464933 0.10604 0 0.0278261 0.0640204 0
-          0.016747 0.0386974 0 0.0101174 0.0234142 0 0.00613342 0.0142281 0 0.00373248 0.00873435 0
-          0.00230364 0.00540625 0 0.00148832 0.00330112 0 0.00106094 0.00186158 0 0.00087645 0.00074311 0
-          0.000830724 -1.78958e-05 0 0.366261 0.74177 0 0.255845 0.524805 0 0.112195 0.307632 0
-          0.0625657 0.182623 0 0.0368528 0.109794 0 0.0220417 0.066237 0 0.0132653 0.0400218 0
-          0.0080147 0.0242085 0 0.00485678 0.0147074 0 0.00295175 0.00902283 0 0.00181943 0.00557444 0
-          0.0011752 0.00339319 0 0.00083756 0.00190591 0 0.000690941 0.00075779 0 0.000654243 -1.78979e-05 0
-          0.31623 0.831919 0 0.21432 0.556036 0 0.086945 0.316374 0 0.048636 0.186972 0
-          0.0285662 0.112256 0 0.0170814 0.0676886 0 0.01028 0.0408888 0 0.00621154 0.0247286 0
-          0.00376247 0.0150218 0 0.00228383 0.009212 0 0.00140629 0.00568435 0 0.000908464 0.00345325 0
-          0.000647577 0.00193494 0 0.000533801 0.000767511 0 0.000505137 -1.78987e-05 0 0.262848 0.919594 0
-          0.173211 0.579591 0 0.0650822 0.32185 0 0.0367753 0.189785 0 0.0215217 0.113829 0
-          0.0128723 0.0686167 0 0.00774669 0.0414427 0 0.00468124 0.0250611 0 0.00283405 0.0152231 0
-          0.00171806 0.00933308 0 0.00105704 0.00575444 0 0.000683149 0.00349148 0 0.000487191 0.00195347 0
-          0.000401441 0.000773766 0 0.000379744 -1.78993e-05 0 0.207787 1.00365 0 0.133483 0.596458 0
-          0.0465794 0.32509 0 0.0267431 0.191554 0 0.0155788 0.114802 0 0.009325 0.0691916 0
-          0.00561149 0.0417855 0 0.00339125 0.0252671 0 0.00205158 0.015348 0 0.00124191 0.00940813 0
-          0.000763618 0.0057977 0 0.000493908 0.00351505 0 0.00035247 0.00196493 0 0.000290394 0.000777653 0
-          0.000274641 -1.78995e-05 0 0.152701 1.08302 0 0.095897 0.607759 0 0.031205 0.32688 0
-          0.018284 0.192618 0 0.0105924 0.115374 0 0.00634838 0.0695315 0 0.0038198 0.041988 0
-          0.00230848 0.025389 0 0.00139496 0.015422 0 0.000842987 0.00945253 0 0.000518199 0.00582316 0
-          0.000335594 0.00352892 0 0.000239684 0.00197169 0 0.000197475 0.000779953 0 0.000186743 -1.78996e-05 0
-          0.0990592 1.15685 0 0.0609973 0.614633 0 0.0186122 0.327776 0 0.0111586 0.193213 0
-          0.00642481 0.115685 0 0.00385722 0.0697176 0 0.00232047 0.0420988 0 0.00140199 0.0254561 0
-          0.000845646 0.015463 0 0.000510086 0.00947693 0 0.000313705 0.00583703 0 0.000203508 0.00353647 0
-          0.000145466 0.00197537 0 0.000119862 0.000781211 0 0.000113343 -1.78997e-05 0 0.0480433 1.22455 0
-          0.0291152 0.618137 0 0.00840867 0.328156 0 0.00515662 0.193497 0 0.00295117 0.115831 0
-          0.00177514 0.069806 0 0.00106756 0.0421523 0 0.000644453 0.0254891 0 0.000387778 0.015483 0
-          0.000233583 0.00948857 0 0.000143848 0.00584351 0 9.34852e-05 0.00353998 0 6.68695e-05 0.0019771 0
-          5.51074e-05 0.000781799 0 5.21102e-05 -1.78997e-05 0 0.0119009 1.25681 0 0.00717935 0.619172 0
-          0.0020398 0.328254 0 0.00125973 0.193578 0 0.000719578 0.115871 0 0.000433067 0.0698315 0
-          0.000260397 0.0421683 0 0.00015714 0.0254992 0 9.44824e-05 0.0154891 0 5.68956e-05 0.00949194 0
-          3.50575e-05 0.00584533 0 2.27967e-05 0.00354097 0 1.63098e-05 0.00197758 0 1.34416e-05 0.000781963 0
-          1.27106e-05 -1.78997e-05 0
-        </DataArray>
-        <DataArray type="Float32" Name="xEquil_w^H2O" NumberOfComponents="1" format="ascii">
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987 0.999987
-          0.999987 0.999987 0.999987 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-          0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988 0.999988
-        </DataArray>
-        <DataArray type="Float32" Name="xEquil_w^N2" NumberOfComponents="1" format="ascii">
-          1.25602e-05 1.25602e-05 1.25559e-05 1.25559e-05 1.25602e-05 1.25559e-05 1.25601e-05 1.25559e-05 1.25601e-05 1.25559e-05 1.25601e-05 1.25559e-05
-          1.25601e-05 1.25558e-05 1.25601e-05 1.25558e-05 1.25601e-05 1.25558e-05 1.25601e-05 1.25558e-05 1.25601e-05 1.25558e-05 1.25601e-05 1.25558e-05
-          1.25601e-05 1.25558e-05 1.25601e-05 1.25558e-05 1.25601e-05 1.25558e-05 1.25508e-05 1.25508e-05 1.25508e-05 1.25508e-05 1.25508e-05 1.25507e-05
-          1.25507e-05 1.25507e-05 1.25507e-05 1.25507e-05 1.25507e-05 1.25507e-05 1.25507e-05 1.25507e-05 1.25507e-05 1.25447e-05 1.25446e-05 1.25446e-05
-          1.25446e-05 1.25446e-05 1.25446e-05 1.25446e-05 1.25446e-05 1.25446e-05 1.25446e-05 1.25446e-05 1.25446e-05 1.25446e-05 1.25445e-05 1.25446e-05
-          1.25373e-05 1.25373e-05 1.25373e-05 1.25373e-05 1.25372e-05 1.25372e-05 1.25372e-05 1.25372e-05 1.25372e-05 1.25372e-05 1.25372e-05 1.25372e-05
-          1.25372e-05 1.25372e-05 1.25372e-05 1.25284e-05 1.25284e-05 1.25284e-05 1.25284e-05 1.25284e-05 1.25284e-05 1.25284e-05 1.25284e-05 1.25284e-05
-          1.25284e-05 1.25284e-05 1.25283e-05 1.25283e-05 1.25283e-05 1.25283e-05 1.25178e-05 1.25178e-05 1.25178e-05 1.25178e-05 1.25178e-05 1.25178e-05
-          1.25178e-05 1.25178e-05 1.25178e-05 1.25178e-05 1.25177e-05 1.25177e-05 1.25177e-05 1.25177e-05 1.25177e-05 1.25051e-05 1.25051e-05 1.25051e-05
-          1.25051e-05 1.25051e-05 1.25051e-05 1.2505e-05 1.2505e-05 1.2505e-05 1.2505e-05 1.2505e-05 1.2505e-05 1.2505e-05 1.2505e-05 1.2505e-05
-          1.24898e-05 1.24898e-05 1.24898e-05 1.24898e-05 1.24898e-05 1.24898e-05 1.24898e-05 1.24898e-05 1.24898e-05 1.24897e-05 1.24897e-05 1.24897e-05
-          1.24897e-05 1.24897e-05 1.24897e-05 1.24715e-05 1.24715e-05 1.24715e-05 1.24715e-05 1.24715e-05 1.24715e-05 1.24714e-05 1.24714e-05 1.24714e-05
-          1.24714e-05 1.24714e-05 1.24714e-05 1.24714e-05 1.24714e-05 1.24714e-05 1.24495e-05 1.24495e-05 1.24495e-05 1.24495e-05 1.24495e-05 1.24495e-05
-          1.24494e-05 1.24494e-05 1.24494e-05 1.24494e-05 1.24494e-05 1.24494e-05 1.24494e-05 1.24494e-05 1.24494e-05 1.24231e-05 1.24231e-05 1.24231e-05
-          1.24231e-05 1.24231e-05 1.24231e-05 1.24231e-05 1.2423e-05 1.2423e-05 1.2423e-05 1.2423e-05 1.2423e-05 1.2423e-05 1.2423e-05 1.2423e-05
-          1.23915e-05 1.23914e-05 1.23914e-05 1.23914e-05 1.23914e-05 1.23914e-05 1.23914e-05 1.23914e-05 1.23914e-05 1.23914e-05 1.23913e-05 1.23913e-05
-          1.23913e-05 1.23913e-05 1.23913e-05 1.23535e-05 1.23534e-05 1.23534e-05 1.23534e-05 1.23534e-05 1.23534e-05 1.23534e-05 1.23534e-05 1.23533e-05
-          1.23533e-05 1.23533e-05 1.23533e-05 1.23533e-05 1.23533e-05 1.23533e-05 1.23079e-05 1.23078e-05 1.23078e-05 1.23078e-05 1.23078e-05 1.23078e-05
-          1.23078e-05 1.23077e-05 1.23077e-05 1.23077e-05 1.23077e-05 1.23077e-05 1.23077e-05 1.23077e-05 1.23077e-05 1.22532e-05 1.22533e-05 1.22533e-05
-          1.22533e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.22532e-05 1.2253e-05
-          1.22531e-05 1.22531e-05 1.2253e-05 1.2253e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22529e-05
-          1.22529e-05 1.22529e-05 1.22529e-05 1.22531e-05 1.2253e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22529e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.2253e-05 1.22529e-05 1.22529e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.2253e-05 1.22529e-05 1.22528e-05
-          1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05
-          1.22529e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22528e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22529e-05 1.22528e-05 1.22528e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22528e-05 1.22528e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22528e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05
-          1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22527e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
-          1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22527e-05 1.22527e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
-          1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22527e-05 1.22526e-05 1.22526e-05
-          1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
-          1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
-          1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
-          1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
-          1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05 1.22526e-05
-        </DataArray>
-        <DataArray type="Float32" Name="xEquil_n^H2O" NumberOfComponents="1" format="ascii">
-          0.0226505 0.0226505 0.022658 0.0226581 0.0226505 0.0226581 0.0226506 0.0226581 0.0226506 0.0226581 0.0226506 0.0226581
-          0.0226506 0.0226582 0.0226506 0.0226582 0.0226507 0.0226582 0.0226507 0.0226582 0.0226507 0.0226582 0.0226507 0.0226582
-          0.0226507 0.0226582 0.0226507 0.0226582 0.0226507 0.0226582 0.0226671 0.0226671 0.0226671 0.0226671 0.0226671 0.0226672
-          0.0226672 0.0226672 0.0226672 0.0226672 0.0226672 0.0226673 0.0226673 0.0226673 0.0226672 0.0226779 0.0226779 0.0226779
-          0.022678 0.022678 0.022678 0.022678 0.022678 0.0226781 0.0226781 0.0226781 0.0226781 0.0226781 0.0226781 0.0226781
-          0.0226909 0.022691 0.022691 0.022691 0.022691 0.022691 0.0226911 0.0226911 0.0226911 0.0226911 0.0226911 0.0226911
-          0.0226911 0.0226911 0.0226911 0.0227066 0.0227066 0.0227066 0.0227066 0.0227067 0.0227067 0.0227067 0.0227067 0.0227067
-          0.0227067 0.0227068 0.0227068 0.0227068 0.0227068 0.0227068 0.0227254 0.0227254 0.0227254 0.0227254 0.0227255 0.0227255
-          0.0227255 0.0227255 0.0227255 0.0227256 0.0227256 0.0227256 0.0227256 0.0227256 0.0227256 0.022748 0.022748 0.022748
-          0.022748 0.0227481 0.0227481 0.0227481 0.0227481 0.0227481 0.0227482 0.0227482 0.0227482 0.0227482 0.0227482 0.0227482
-          0.0227752 0.0227752 0.0227752 0.0227752 0.0227753 0.0227753 0.0227753 0.0227753 0.0227753 0.0227753 0.0227754 0.0227754
-          0.0227754 0.0227754 0.0227754 0.0228079 0.0228079 0.0228079 0.0228079 0.022808 0.022808 0.022808 0.022808 0.022808
-          0.0228081 0.0228081 0.0228081 0.0228081 0.0228081 0.0228081 0.0228472 0.0228473 0.0228473 0.0228473 0.0228473 0.0228474
-          0.0228474 0.0228474 0.0228474 0.0228474 0.0228474 0.0228474 0.0228475 0.0228475 0.0228474 0.0228947 0.0228947 0.0228947
-          0.0228947 0.0228948 0.0228948 0.0228948 0.0228948 0.0228948 0.0228949 0.0228949 0.0228949 0.0228949 0.0228949 0.0228949
-          0.0229518 0.0229519 0.0229519 0.0229519 0.0229519 0.022952 0.022952 0.022952 0.022952 0.022952 0.0229521 0.0229521
-          0.0229521 0.0229521 0.0229521 0.0230208 0.0230209 0.0230209 0.0230209 0.0230209 0.023021 0.023021 0.023021 0.023021
-          0.023021 0.023021 0.0230211 0.0230211 0.0230211 0.0230211 0.0231041 0.0231042 0.0231042 0.0231042 0.0231043 0.0231043
-          0.0231043 0.0231043 0.0231044 0.0231044 0.0231044 0.0231044 0.0231044 0.0231044 0.0231044 0.0232048 0.0232037 0.0232038
-          0.0232038 0.0232038 0.0232039 0.0232039 0.0232039 0.023204 0.023204 0.023204 0.023204 0.023204 0.023204 0.0232052
-          0.0232049 0.0232051 0.0232052 0.0232053 0.0232053 0.0232053 0.0232053 0.0232053 0.0232054 0.0232054 0.0232054 0.0232054
-          0.0232054 0.0232054 0.0232054 0.023205 0.0232052 0.0232053 0.0232054 0.0232054 0.0232054 0.0232054 0.0232054 0.0232055
-          0.0232055 0.0232055 0.0232055 0.0232055 0.0232055 0.0232055 0.0232051 0.0232053 0.0232054 0.0232055 0.0232055 0.0232055
-          0.0232055 0.0232055 0.0232055 0.0232055 0.0232055 0.0232055 0.0232055 0.0232055 0.0232055 0.0232053 0.0232054 0.0232055
-          0.0232055 0.0232056 0.0232056 0.0232056 0.0232056 0.0232056 0.0232056 0.0232056 0.0232056 0.0232056 0.0232056 0.0232056
-          0.0232053 0.0232055 0.0232056 0.0232056 0.0232056 0.0232056 0.0232057 0.0232057 0.0232057 0.0232057 0.0232057 0.0232057
-          0.0232057 0.0232057 0.0232057 0.0232054 0.0232056 0.0232056 0.0232057 0.0232057 0.0232057 0.0232057 0.0232057 0.0232057
-          0.0232057 0.0232057 0.0232057 0.0232057 0.0232057 0.0232057 0.0232055 0.0232056 0.0232057 0.0232057 0.0232057 0.0232057
-          0.0232057 0.0232057 0.0232057 0.0232057 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232056 0.0232057 0.0232057
-          0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058
-          0.0232056 0.0232057 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058
-          0.0232058 0.0232058 0.0232058 0.0232057 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058
-          0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058 0.0232058
-          0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232058 0.0232058 0.0232059
-          0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059
-          0.0232058 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059
-          0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059
-          0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059
-          0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059 0.0232059
-        </DataArray>
-        <DataArray type="Float32" Name="xEquil_n^N2" NumberOfComponents="1" format="ascii">
-          0.977349 0.977349 0.977342 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342
-          0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977349 0.977342
-          0.977349 0.977342 0.977349 0.977342 0.977349 0.977342 0.977333 0.977333 0.977333 0.977333 0.977333 0.977333
-          0.977333 0.977333 0.977333 0.977333 0.977333 0.977333 0.977333 0.977333 0.977333 0.977322 0.977322 0.977322
-          0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322 0.977322
-          0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309 0.977309
-          0.977309 0.977309 0.977309 0.977293 0.977293 0.977293 0.977293 0.977293 0.977293 0.977293 0.977293 0.977293
-          0.977293 0.977293 0.977293 0.977293 0.977293 0.977293 0.977275 0.977275 0.977275 0.977275 0.977275 0.977275
-          0.977274 0.977274 0.977274 0.977274 0.977274 0.977274 0.977274 0.977274 0.977274 0.977252 0.977252 0.977252
-          0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252 0.977252
-          0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225 0.977225
-          0.977225 0.977225 0.977225 0.977192 0.977192 0.977192 0.977192 0.977192 0.977192 0.977192 0.977192 0.977192
-          0.977192 0.977192 0.977192 0.977192 0.977192 0.977192 0.977153 0.977153 0.977153 0.977153 0.977153 0.977153
-          0.977153 0.977153 0.977153 0.977153 0.977153 0.977153 0.977153 0.977153 0.977153 0.977105 0.977105 0.977105
-          0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105 0.977105
-          0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048 0.977048
-          0.977048 0.977048 0.977048 0.976979 0.976979 0.976979 0.976979 0.976979 0.976979 0.976979 0.976979 0.976979
-          0.976979 0.976979 0.976979 0.976979 0.976979 0.976979 0.976896 0.976896 0.976896 0.976896 0.976896 0.976896
-          0.976896 0.976896 0.976896 0.976896 0.976896 0.976896 0.976896 0.976896 0.976896 0.976795 0.976796 0.976796
-          0.976796 0.976796 0.976796 0.976796 0.976796 0.976796 0.976796 0.976796 0.976796 0.976796 0.976796 0.976795
-          0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795
-          0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795
-          0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976795 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976795 0.976795 0.976795
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976795 0.976795 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976795 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-          0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794 0.976794
-        </DataArray>
-        <DataArray type="Float32" Name="pnMinus1e5" NumberOfComponents="1" format="ascii">
-          2451.94 2451.91 2417.95 2417.93 2451.85 2417.86 2451.76 2417.77 2451.66 2417.68 2451.57 2417.58
-          2451.48 2417.49 2451.4 2417.41 2451.33 2417.34 2451.27 2417.28 2451.22 2417.23 2451.18 2417.2
-          2451.16 2417.17 2451.14 2417.15 2451.13 2417.15 2377.17 2377.15 2377.08 2376.99 2376.89 2376.8
-          2376.71 2376.63 2376.56 2376.5 2376.45 2376.41 2376.39 2376.37 2376.37 2328.23 2328.21 2328.14
-          2328.05 2327.95 2327.86 2327.77 2327.69 2327.62 2327.56 2327.51 2327.48 2327.45 2327.43 2327.43
-          2269.51 2269.48 2269.41 2269.32 2269.23 2269.13 2269.04 2268.96 2268.89 2268.83 2268.79 2268.75
-          2268.72 2268.71 2268.7 2199.04 2199.01 2198.94 2198.85 2198.75 2198.66 2198.57 2198.49 2198.42
-          2198.36 2198.31 2198.28 2198.25 2198.23 2198.23 2114.47 2114.45 2114.38 2114.29 2114.19 2114.09
-          2114 2113.92 2113.85 2113.79 2113.75 2113.71 2113.68 2113.67 2113.66 2013 2012.97 2012.9
-          2012.81 2012.71 2012.61 2012.52 2012.44 2012.37 2012.31 2012.27 2012.23 2012.2 2012.19 2012.18
-          1891.23 1891.2 1891.13 1891.03 1890.93 1890.84 1890.75 1890.67 1890.6 1890.54 1890.49 1890.45
-          1890.42 1890.41 1890.4 1745.11 1745.08 1745 1744.9 1744.8 1744.7 1744.61 1744.53 1744.46
-          1744.41 1744.36 1744.32 1744.29 1744.28 1744.27 1569.77 1569.74 1569.65 1569.55 1569.45 1569.35
-          1569.26 1569.18 1569.11 1569.05 1569 1568.96 1568.93 1568.92 1568.91 1359.37 1359.33 1359.23
-          1359.12 1359.02 1358.92 1358.83 1358.74 1358.67 1358.62 1358.57 1358.53 1358.5 1358.49 1358.48
-          1106.9 1106.85 1106.73 1106.61 1106.5 1106.4 1106.31 1106.23 1106.16 1106.1 1106.05 1106.01
-          1105.98 1105.97 1105.96 803.963 803.878 803.734 803.601 803.483 803.378 803.285 803.203 803.133
-          803.073 803.024 802.987 802.96 802.944 802.939 440.497 440.324 440.13 439.982 439.857 439.75
-          439.655 439.573 439.502 439.442 439.394 439.356 439.329 439.314 439.309 4.69809 4.08072 3.85148
-          3.69046 3.56098 3.45086 3.35548 3.27289 3.20214 3.14269 3.09466 3.05729 3.03069 3.015 3.01088
-          4.22098 3.53489 3.06288 2.76935 2.59054 2.48268 2.41786 2.37898 2.35559 2.34136 2.33248 2.32677
-          2.32282 2.31965 2.3161 3.7199 3.04293 2.59712 2.32091 2.15352 2.0526 1.99187 1.95532 1.93323
-          1.91975 1.91137 1.90602 1.90235 1.89943 1.89654 3.24429 2.58501 2.17383 1.92548 1.77614 1.6863
-          1.63224 1.59967 1.57995 1.56793 1.5605 1.55578 1.55257 1.55005 1.5477 2.80185 2.16755 1.79828
-          1.58221 1.45342 1.37612 1.32962 1.30159 1.28462 1.27428 1.26792 1.2639 1.26118 1.25907 1.25713
-          2.395 1.79336 1.4708 1.28781 1.17952 1.11467 1.07568 1.05217 1.03793 1.02927 1.02395 1.02061
-          1.01834 1.0166 1.01501 2.02363 1.46277 1.18899 1.03753 0.948365 0.895063 0.863026 0.843705 0.832005
-          0.824894 0.820542 0.817807 0.81596 0.814538 0.813254 1.68644 1.17448 0.948921 0.826109 0.754068 0.711068
-          0.685228 0.669642 0.660204 0.654473 0.650973 0.648776 0.647292 0.646152 0.645125 1.38166 0.926002 0.745925
-          0.648294 0.591217 0.557182 0.536732 0.524395 0.516925 0.512393 0.509631 0.507897 0.506726 0.505827 0.505019
-          1.10739 0.71411 0.575156 0.499205 0.454994 0.428639 0.412804 0.403251 0.397466 0.39396 0.391826 0.390487
-          0.389582 0.388888 0.388264 0.861796 0.535078 0.431976 0.374467 0.341198 0.321354 0.309434 0.30224 0.297884
-          0.295248 0.293646 0.29264 0.29196 0.291438 0.290969 0.643059 0.384988 0.312163 0.270261 0.246223 0.231864
-          0.22324 0.218035 0.214884 0.212979 0.211824 0.211098 0.210606 0.210229 0.209891 0.449372 0.259948 0.212007
-          0.1833 0.167004 0.157245 0.151387 0.147849 0.145709 0.144419 0.143636 0.143144 0.142811 0.142555 0.142325
-          0.278893 0.156276 0.12832 0.110786 0.100951 0.0950425 0.0914977 0.0893561 0.0880624 0.0872844 0.086813 0.086516
-          0.0863143 0.0861595 0.0860206 0.12974 0.070617 0.0584065 0.0503496 0.0458899 0.0431999 0.041587 0.0406126 0.0400256
-          0.0396738 0.0394603 0.0393254 0.0392338 0.0391634 0.0391002 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0
-        </DataArray>
-        <DataArray type="Float32" Name="awn" NumberOfComponents="1" format="ascii">
-          0.664031 0.664032 0.664349 0.664349 0.664032 0.66435 0.664033 0.66435 0.664033 0.664351 0.664034 0.664352
-          0.664034 0.664352 0.664035 0.664353 0.664035 0.664353 0.664036 0.664354 0.664036 0.664354 0.664037 0.664354
-          0.664037 0.664354 0.664037 0.664355 0.664037 0.664355 0.664624 0.664624 0.664624 0.664625 0.664626 0.664626
-          0.664627 0.664627 0.664628 0.664628 0.664629 0.664629 0.664629 0.664629 0.664629 0.664954 0.664954 0.664954
-          0.664955 0.664956 0.664956 0.664957 0.664958 0.664958 0.664958 0.664959 0.664959 0.664959 0.664959 0.664959
-          0.66535 0.66535 0.665351 0.665352 0.665352 0.665353 0.665353 0.665354 0.665354 0.665355 0.665355 0.665356
-          0.665356 0.665356 0.665356 0.665827 0.665827 0.665827 0.665828 0.665829 0.665829 0.66583 0.66583 0.665831
-          0.665831 0.665832 0.665832 0.665832 0.665832 0.665832 0.666399 0.666399 0.6664 0.666401 0.666401 0.666402
-          0.666402 0.666403 0.666404 0.666404 0.666404 0.666405 0.666405 0.666405 0.666405 0.667088 0.667088 0.667088
-          0.667089 0.66709 0.66709 0.667091 0.667091 0.667092 0.667092 0.667093 0.667093 0.667093 0.667093 0.667093
-          0.667916 0.667916 0.667916 0.667917 0.667918 0.667918 0.667919 0.667919 0.66792 0.66792 0.667921 0.667921
-          0.667921 0.667921 0.667921 0.668912 0.668912 0.668913 0.668913 0.668914 0.668915 0.668915 0.668916 0.668916
-          0.668917 0.668917 0.668917 0.668918 0.668918 0.668918 0.670111 0.670111 0.670112 0.670113 0.670114 0.670114
-          0.670115 0.670115 0.670116 0.670116 0.670117 0.670117 0.670117 0.670117 0.670117 0.671556 0.671556 0.671557
-          0.671558 0.671559 0.671559 0.67156 0.671561 0.671561 0.671561 0.671562 0.671562 0.671562 0.671562 0.671562
-          0.673298 0.673299 0.673299 0.6733 0.673301 0.673302 0.673302 0.673303 0.673303 0.673304 0.673304 0.673304
-          0.673305 0.673305 0.673305 0.675401 0.675401 0.675402 0.675403 0.675404 0.675405 0.675405 0.675406 0.675406
-          0.675407 0.675407 0.675407 0.675408 0.675408 0.675408 0.67794 0.677942 0.677943 0.677944 0.677945 0.677946
-          0.677946 0.677947 0.677947 0.677948 0.677948 0.677948 0.677949 0.677949 0.677949 0.798417 0.732777 0.729685
-          0.729319 0.729401 0.72961 0.72983 0.73002 0.730171 0.730285 0.730709 0.730947 0.731074 0.731132 0.731042
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 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>
-        <DataArray type="Float32" Name="aws" NumberOfComponents="1" format="ascii">
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48 6350.48
-          6350.48 6350.48 6350.48 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47
-          6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47
-          6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.47 6350.45 6350.46 6350.46
-          6350.46 6350.46 6350.46 6350.46 6350.46 6350.46 6350.46 6350.46 6350.46 6350.46 6350.46 6350.46
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 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>
-        <DataArray type="Float32" Name="ans" NumberOfComponents="1" format="ascii">
-          44.0762 44.0762 44.0763 44.0763 44.0762 44.0763 44.0762 44.0763 44.0762 44.0763 44.0762 44.0763
-          44.0762 44.0763 44.0762 44.0763 44.0762 44.0763 44.0762 44.0763 44.0762 44.0763 44.0762 44.0763
-          44.0762 44.0763 44.0762 44.0763 44.0762 44.0763 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764
-          44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764
-          44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764 44.0764
-          44.0765 44.0765 44.0765 44.0765 44.0765 44.0765 44.0765 44.0765 44.0765 44.0765 44.0765 44.0765
-          44.0765 44.0765 44.0765 44.0766 44.0766 44.0766 44.0766 44.0766 44.0766 44.0766 44.0766 44.0766
-          44.0766 44.0766 44.0766 44.0766 44.0766 44.0766 44.0767 44.0767 44.0767 44.0767 44.0767 44.0767
-          44.0767 44.0767 44.0767 44.0767 44.0767 44.0767 44.0767 44.0767 44.0767 44.0768 44.0768 44.0768
-          44.0768 44.0768 44.0768 44.0768 44.0768 44.0768 44.0768 44.0768 44.0768 44.0768 44.0768 44.0768
-          44.077 44.077 44.077 44.077 44.077 44.077 44.077 44.077 44.077 44.077 44.077 44.077
-          44.077 44.077 44.077 44.0772 44.0772 44.0772 44.0772 44.0772 44.0772 44.0772 44.0772 44.0772
-          44.0772 44.0772 44.0772 44.0772 44.0772 44.0772 44.0774 44.0774 44.0774 44.0774 44.0774 44.0774
-          44.0774 44.0774 44.0774 44.0774 44.0774 44.0774 44.0774 44.0774 44.0774 44.0777 44.0777 44.0777
-          44.0777 44.0777 44.0777 44.0777 44.0777 44.0777 44.0777 44.0777 44.0777 44.0777 44.0777 44.0777
-          44.078 44.078 44.078 44.078 44.078 44.078 44.078 44.078 44.078 44.078 44.078 44.078
-          44.078 44.078 44.078 44.0784 44.0784 44.0784 44.0784 44.0784 44.0784 44.0784 44.0784 44.0784
-          44.0784 44.0784 44.0784 44.0784 44.0784 44.0784 44.0789 44.0789 44.0789 44.0789 44.0789 44.0789
-          44.0789 44.0789 44.0789 44.0789 44.0789 44.0789 44.0789 44.0789 44.0789 44.1023 44.0896 44.089
-          44.0889 44.0889 44.0889 44.089 44.089 44.0891 44.0891 44.0892 44.0892 44.0892 44.0892 44.0892
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 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>
         <DataArray type="Float32" Name="T_w" NumberOfComponents="1" format="ascii">
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
@@ -1161,9 +554,9 @@
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
-          293 293 293 293 293 293 293 293 293 293 293 293
-          293 293 293 293 293 293 293 293 293 293 292.999 292.999
-          292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 293
+          293 293 293 293 293 293 292.999 292.999 292.999 292.999 292.999 292.999
+          292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.998 292.998 292.998
+          292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
@@ -1203,35 +596,29 @@
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
-          293 293 293 293 293 293 293 293 293 293 292.999 292.999
-          292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 293
-          292.99 292.966 292.928 292.869 292.776 292.633 292.426 292.161 291.881 291.654 291.522 291.473
-          291.467 291.475 291.486 292.998 292.988 292.97 292.939 292.887 292.806 292.688 292.546 292.426
-          292.38 292.415 292.486 292.553 292.617 292.701 292.999 292.994 292.982 292.959 292.92 292.859
-          292.773 292.677 292.618 292.634 292.71 292.794 292.857 292.907 292.943 293 292.996 292.987
-          292.968 292.935 292.884 292.813 292.741 292.712 292.752 292.832 292.904 292.948 292.975 292.988
-          293 292.997 292.989 292.972 292.943 292.897 292.835 292.778 292.766 292.817 292.893 292.949
-          292.979 292.992 292.997 293 292.998 292.99 292.975 292.948 292.905 292.849 292.801 292.802
-          292.858 292.926 292.97 292.99 292.998 293 293 292.998 292.991 292.977 292.951 292.91
-          292.858 292.818 292.827 292.885 292.946 292.981 292.995 292.999 293 293 292.998 292.992
-          292.978 292.953 292.913 292.864 292.829 292.845 292.904 292.959 292.988 292.997 293 293
-          293 292.998 292.992 292.978 292.954 292.915 292.868 292.838 292.859 292.917 292.968 292.991
-          292.998 293 293 293 292.998 292.992 292.979 292.954 292.917 292.871 292.845 292.87
-          292.928 292.974 292.994 292.999 293 293 293 292.999 292.992 292.979 292.955 292.918
-          292.874 292.851 292.879 292.937 292.98 292.996 292.999 293 293 293 292.999 292.992
-          292.979 292.955 292.918 292.876 292.857 292.89 292.947 292.984 292.997 293 293 293
-          293 292.999 292.992 292.979 292.956 292.92 292.882 292.87 292.908 292.961 292.99 292.998
-          293 293 293 293 292.999 292.993 292.981 292.96 292.932 292.907 292.909 292.944
-          292.98 292.995 292.999 293 293 293 293 293 293 293 293 293
-          293 293 293 293 293 293 293 293 293
-        </DataArray>
-        <DataArray type="Float32" Name="T_s" NumberOfComponents="1" format="ascii">
+          293 293 293 293 293 293 293 293 293 292.998 292.998 292.998
+          292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998
+          292.983 292.956 292.935 292.919 292.906 292.894 292.884 292.876 292.868 292.862 292.857 292.854
+          292.856 292.889 293 292.998 292.99 292.98 292.969 292.958 292.946 292.935 292.924 292.914
+          292.905 292.898 292.897 292.903 292.932 293 293 292.999 292.997 292.994 292.99 292.986
+          292.981 292.975 292.969 292.964 292.959 292.958 292.963 292.978 293 293 293 293
+          292.999 292.999 292.998 292.997 292.995 292.994 292.992 292.991 292.99 292.992 292.996 293
+          293 293 293 293 293 293 293 292.999 292.999 292.999 292.999 292.999
+          292.999 293 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 293 293 293
+        </DataArray>
+        <DataArray type="Float32" Name="T_solid" NumberOfComponents="1" format="ascii">
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
@@ -1244,13 +631,19 @@
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
-          293 293 293 293 293 293 293 293 293 293 292.999 292.999
-          292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 292.999 292.999 292.999 292.999 292.999 292.999
+          292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.998 292.998 292.998
+          292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998 292.998
+          292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999 292.999
+          292.999 292.999 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 293 293 293 293 293 293
+          293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293 293 293 293
@@ -1266,275 +659,111 @@
           293 293 293 293 293 293 293 293 293 293 293 293
           293 293 293 293 293 293 293 293 293
         </DataArray>
-        <DataArray type="Float32" Name="TwMinusTn" NumberOfComponents="1" format="ascii">
-          0 0 0 1.96089e-08 0 1.99235e-08 0 1.98857e-08 0 1.98862e-08 0 1.9883e-08
-          0 1.98796e-08 0 1.98762e-08 0 1.98728e-08 0 1.98695e-08 0 1.98665e-08 0 1.98609e-08
-          0 1.98953e-08 0 1.95804e-08 0 0 0 1.59377e-08 1.61913e-08 1.61926e-08 1.61895e-08 1.61866e-08
-          1.61833e-08 1.61799e-08 1.61766e-08 1.61734e-08 1.61702e-08 1.61682e-08 1.61637e-08 1.59098e-08 0 0 1.43804e-08 1.44138e-08
-          1.44186e-08 1.44163e-08 1.44134e-08 1.44102e-08 1.44069e-08 1.44036e-08 1.44004e-08 1.43972e-08 1.43945e-08 1.43864e-08 1.43528e-08 0
-          0 1.38431e-08 1.38245e-08 1.3825e-08 1.3823e-08 1.38201e-08 1.38169e-08 1.38135e-08 1.38103e-08 1.38072e-08 1.3804e-08 1.38011e-08
-          1.37973e-08 1.38157e-08 0 0 1.3403e-08 1.33793e-08 1.33788e-08 1.33767e-08 1.33738e-08 1.33706e-08 1.33674e-08 1.33641e-08
-          1.3361e-08 1.3358e-08 1.33551e-08 1.33523e-08 1.33754e-08 0 0 1.28916e-08 1.28682e-08 1.28675e-08 1.28653e-08 1.28624e-08
-          1.28592e-08 1.2856e-08 1.28528e-08 1.28497e-08 1.28468e-08 1.28439e-08 1.28413e-08 1.28638e-08 0 0 1.22785e-08 1.22557e-08
-          1.22548e-08 1.22526e-08 1.22496e-08 1.22465e-08 1.22433e-08 1.22402e-08 1.22371e-08 1.22343e-08 1.22316e-08 1.2229e-08 1.22504e-08 0
-          0 1.15422e-08 1.15203e-08 1.15192e-08 1.15168e-08 1.15139e-08 1.15107e-08 1.15076e-08 1.15045e-08 1.15015e-08 1.14987e-08 1.14961e-08
-          1.14936e-08 1.15138e-08 0 0 1.06579e-08 1.06371e-08 1.06355e-08 1.0633e-08 1.063e-08 1.06269e-08 1.06238e-08 1.06208e-08
-          1.0618e-08 1.06152e-08 1.06127e-08 1.06104e-08 1.0629e-08 0 0 9.5954e-09 9.57596e-09 9.57397e-09 9.57124e-09 9.56823e-09
-          9.56516e-09 9.56214e-09 9.55919e-09 9.55646e-09 9.55384e-09 9.55146e-09 9.5493e-09 9.56607e-09 0 0 8.31869e-09 8.3009e-09
-          8.2984e-09 8.29539e-09 8.29237e-09 8.28931e-09 8.28635e-09 8.28351e-09 8.28089e-09 8.27845e-09 8.27623e-09 8.2743e-09 8.28874e-09 0
-          0 6.78403e-09 6.76835e-09 6.76516e-09 6.76204e-09 6.75891e-09 6.7559e-09 6.753e-09 6.75027e-09 6.74777e-09 6.74549e-09 6.74345e-09
-          6.74174e-09 6.75351e-09 0 0 4.94697e-09 4.93668e-09 4.93327e-09 4.92986e-09 4.92668e-09 4.92372e-09 4.92088e-09 4.91826e-09
-          4.91588e-09 4.91372e-09 4.9119e-09 4.91013e-09 4.91571e-09 0 0 5.60829e-09 6.20622e-09 6.1948e-09 6.17962e-09 6.16001e-09
-          6.13596e-09 6.10959e-09 6.08458e-09 6.06514e-09 6.05291e-09 6.04678e-09 6.04422e-09 5.4647e-09 0 0 0.000552495 0.000551564
-          0.000550226 0.000548121 0.000544896 0.000540265 0.000534358 0.000528072 0.000522799 0.000519464 0.000517958 0.000517536 0.000517557 0
-          0.0101332 0.0343323 0.071648 0.13066 0.223768 0.366977 0.574007 0.839325 1.11919 1.34582 1.47764 1.52687
-          1.53299 1.52461 1.51405 0.00170973 0.0115088 0.0299726 0.0614935 0.11313 0.194362 0.312092 0.454024 0.573792
-          0.62025 0.584581 0.513987 0.447479 0.382594 0.29897 0.000526405 0.00587607 0.018345 0.0412258 0.0796949 0.140618
-          0.227198 0.322953 0.381986 0.36642 0.29016 0.206052 0.142798 0.0930928 0.056706 0.000227567 0.00374863 0.0134142
-          0.0322577 0.0645825 0.115889 0.18713 0.259231 0.288226 0.248205 0.167509 0.0962995 0.0519003 0.0249905 0.0118866
-          0.000123191 0.00274829 0.0109099 0.0275574 0.0565311 0.102495 0.164786 0.222401 0.233642 0.182865 0.107218 0.0508804
-          0.0214605 0.00754434 0.0026242 7.81838e-05 0.00221186 0.00951013 0.0248706 0.0518665 0.0945888 0.15108 0.19875 0.198188
-          0.142459 0.0738494 0.0295961 0.0099294 0.00246806 0.000439012 5.57161e-05 0.00189962 0.00868625 0.0232613 0.0490396 0.0896836
-          0.142133 0.182436 0.173404 0.115481 0.053721 0.0185738 0.00504134 0.000803258 -0.000114372 4.32521e-05 0.00170868 0.00818987
-          0.022275 0.0472878 0.0865467 0.136026 0.170589 0.155171 0.0964712 0.0407758 0.0123869 0.0027586 0.000208162 -0.000235802
-          3.57765e-05 0.001589 0.00788997 0.0216668 0.0461952 0.0845035 0.131712 0.161649 0.141253 0.0825107 0.0319917 0.00865695
-          0.00159807 -1.08484e-05 -0.000231563 3.10204e-05 0.00151375 0.00771148 0.0212949 0.0455181 0.0831577 0.128572 0.154677 0.130244
-          0.0717654 0.0256305 0.00621996 0.000958804 -8.45602e-05 -0.000190843 2.78534e-05 0.00146736 0.00760882 0.0210734 0.0451058 0.0822567
-          0.126174 0.148887 0.120808 0.0626004 0.0204627 0.00445404 0.000579933 -9.78924e-05 -0.000142619 2.56659e-05 0.00144018 0.00755304
-          0.0209455 0.0448437 0.0815355 0.123817 0.142633 0.110353 0.0527814 0.015495 0.00304205 0.000342679 -8.50939e-05 -9.70025e-05
-          2.40248e-05 0.00142503 0.00751628 0.0208152 0.044374 0.0797707 0.118176 0.129764 0.0924394 0.0392298 0.0101724 0.00186587
-          0.000185779 -6.06168e-05 -5.76145e-05 1.91884e-05 0.00137868 0.00719063 0.019433 0.0398719 0.0677207 0.0925433 0.0908174 0.0557636
-          0.0201258 0.00475908 0.00087557 7.54152e-05 -3.08037e-05 -2.54876e-05 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0
-        </DataArray>
-        <DataArray type="Float32" Name="TnMinusTs" NumberOfComponents="1" format="ascii">
-          0 0 0 -1.4743e-08 0 -1.47501e-08 0 -1.47493e-08 0 -1.47473e-08 0 -1.47443e-08
-          0 -1.4741e-08 0 -1.47376e-08 0 -1.47342e-08 0 -1.47309e-08 0 -1.47277e-08 0 -1.47247e-08
-          0 -1.47222e-08 0 -1.47149e-08 0 0 0 -1.44511e-08 -1.44573e-08 -1.4457e-08 -1.44549e-08 -1.4452e-08
-          -1.44487e-08 -1.44453e-08 -1.44419e-08 -1.44386e-08 -1.44355e-08 -1.44325e-08 -1.44295e-08 -1.44231e-08 0 0 -1.41402e-08 -1.41434e-08
-          -1.41431e-08 -1.4141e-08 -1.4138e-08 -1.41348e-08 -1.41314e-08 -1.41281e-08 -1.41248e-08 -1.41217e-08 -1.41187e-08 -1.41157e-08 -1.41122e-08 0
-          0 -1.37846e-08 -1.37869e-08 -1.37864e-08 -1.37842e-08 -1.37813e-08 -1.37781e-08 -1.37747e-08 -1.37714e-08 -1.37682e-08 -1.37651e-08 -1.37622e-08
-          -1.37593e-08 -1.37566e-08 0 0 -1.33604e-08 -1.33622e-08 -1.33617e-08 -1.33596e-08 -1.33566e-08 -1.33533e-08 -1.335e-08 -1.33468e-08
-          -1.33436e-08 -1.33406e-08 -1.33377e-08 -1.33348e-08 -1.33323e-08 0 0 -1.28514e-08 -1.28529e-08 -1.28521e-08 -1.28499e-08 -1.28469e-08
-          -1.28437e-08 -1.28404e-08 -1.28372e-08 -1.28341e-08 -1.28311e-08 -1.28283e-08 -1.28256e-08 -1.28231e-08 0 0 -1.22403e-08 -1.22412e-08
-          -1.22402e-08 -1.22379e-08 -1.22349e-08 -1.22317e-08 -1.22285e-08 -1.22253e-08 -1.22222e-08 -1.22193e-08 -1.22166e-08 -1.22139e-08 -1.22116e-08 0
-          0 -1.15064e-08 -1.15067e-08 -1.15054e-08 -1.1503e-08 -1.15e-08 -1.14968e-08 -1.14936e-08 -1.14905e-08 -1.14875e-08 -1.14847e-08 -1.1482e-08
-          -1.14795e-08 -1.14773e-08 0 0 -1.06249e-08 -1.06245e-08 -1.06228e-08 -1.06202e-08 -1.06172e-08 -1.06141e-08 -1.06109e-08 -1.06078e-08
-          -1.06049e-08 -1.06022e-08 -1.05997e-08 -1.05973e-08 -1.05953e-08 0 0 -9.56589e-09 -9.5647e-09 -9.5626e-09 -9.55976e-09 -9.55669e-09
-          -9.55356e-09 -9.55049e-09 -9.54753e-09 -9.54475e-09 -9.54213e-09 -9.53969e-09 -9.53747e-09 -9.53577e-09 0 0 -8.29334e-09 -8.29124e-09
-          -8.28857e-09 -8.2855e-09 -8.28237e-09 -8.27924e-09 -8.27629e-09 -8.27339e-09 -8.27072e-09 -8.26822e-09 -8.266e-09 -8.26401e-09 -8.26248e-09 0
-          0 -6.76363e-09 -6.7605e-09 -6.75715e-09 -6.75385e-09 -6.75067e-09 -6.7476e-09 -6.7447e-09 -6.74191e-09 -6.73941e-09 -6.73708e-09 -6.73504e-09
-          -6.73327e-09 -6.73208e-09 0 0 -4.92417e-09 -4.91985e-09 -4.91593e-09 -4.91247e-09 -4.90923e-09 -4.90633e-09 -4.90348e-09 -4.90087e-09
-          -4.89848e-09 -4.89632e-09 -4.8945e-09 -4.89302e-09 -4.892e-09 0 0 -2.81096e-09 -2.82506e-09 -2.82051e-09 -2.81665e-09 -2.81295e-09
-          -2.8092e-09 -2.80556e-09 -2.80198e-09 -2.79886e-09 -2.79641e-09 -2.79454e-09 -2.79329e-09 -2.77299e-09 0 0 -0.000553126 -0.000552194
-          -0.000550854 -0.000548747 -0.000545518 -0.000540882 -0.000534968 -0.000528675 -0.000523395 -0.000520057 -0.000518549 -0.000518126 -0.000518147 0
-          -0.0100984 -0.0341981 -0.071496 -0.130509 -0.223617 -0.366827 -0.573857 -0.839177 -1.11905 -1.34567 -1.4775 -1.52673
-          -1.53284 -1.52448 -1.51402 -0.0017093 -0.0115081 -0.0299717 -0.0614926 -0.113129 -0.194361 -0.312091 -0.454023 -0.573791
-          -0.620249 -0.58458 -0.513986 -0.447479 -0.382594 -0.29897 -0.000526355 -0.00587602 -0.018345 -0.0412258 -0.0796949 -0.140618
-          -0.227198 -0.322953 -0.381986 -0.36642 -0.29016 -0.206052 -0.142798 -0.0930928 -0.056706 -0.000227527 -0.0037486 -0.0134142
-          -0.0322577 -0.0645825 -0.115889 -0.18713 -0.259231 -0.288226 -0.248205 -0.167509 -0.0962995 -0.0519003 -0.0249905 -0.0118866
-          -0.000123157 -0.00274826 -0.0109099 -0.0275574 -0.056531 -0.102495 -0.164786 -0.222401 -0.233642 -0.182865 -0.107218 -0.0508804
-          -0.0214605 -0.00754432 -0.00262419 -7.81547e-05 -0.00221184 -0.00951012 -0.0248706 -0.0518665 -0.0945888 -0.15108 -0.19875 -0.198188
-          -0.142459 -0.0738494 -0.029596 -0.00992939 -0.00246805 -0.000439001 -5.56919e-05 -0.0018996 -0.00868624 -0.0232613 -0.0490396 -0.0896835
-          -0.142133 -0.182436 -0.173404 -0.115481 -0.053721 -0.0185738 -0.00504133 -0.000803249 0.000114381 -4.32323e-05 -0.00170867 -0.00818986
-          -0.022275 -0.0472878 -0.0865466 -0.136026 -0.170589 -0.155171 -0.0964712 -0.0407758 -0.0123869 -0.00275859 -0.000208154 0.00023581
-          -3.57606e-05 -0.00158899 -0.00788996 -0.0216667 -0.0461952 -0.0845035 -0.131712 -0.161649 -0.141253 -0.0825107 -0.0319917 -0.00865694
-          -0.00159807 1.0854e-05 0.000231568 -3.1008e-05 -0.00151375 -0.00771148 -0.0212949 -0.0455181 -0.0831577 -0.128572 -0.154677 -0.130244
-          -0.0717654 -0.0256305 -0.00621996 -0.0009588 8.45644e-05 0.000190847 -2.78442e-05 -0.00146736 -0.00760881 -0.0210734 -0.0451058 -0.0822567
-          -0.126174 -0.148887 -0.120808 -0.0626004 -0.0204627 -0.00445404 -0.00057993 9.78954e-05 0.000142622 -2.56595e-05 -0.00144018 -0.00755304
-          -0.0209455 -0.0448437 -0.0815355 -0.123817 -0.142633 -0.110353 -0.0527814 -0.015495 -0.00304205 -0.000342677 8.5096e-05 9.70046e-05
-          -2.40208e-05 -0.00142503 -0.00751627 -0.0208152 -0.044374 -0.0797707 -0.118176 -0.129764 -0.0924394 -0.0392298 -0.0101724 -0.00186587
-          -0.000185777 6.0618e-05 5.76158e-05 -1.91865e-05 -0.00137868 -0.00719063 -0.019433 -0.0398719 -0.0677207 -0.0925433 -0.0908174 -0.0557636
-          -0.0201258 -0.00475908 -0.00087557 -7.54146e-05 3.08043e-05 2.54881e-05 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0
-        </DataArray>
-        <DataArray type="Float32" Name="h_w" NumberOfComponents="1" format="ascii">
-          83383.9 83383.9 83383.9 83384 83383.9 83384 83383.9 83384 83383.9 83384 83383.9 83384
-          83383.9 83384 83383.9 83384 83383.9 83384 83383.9 83384 83383.9 83384 83383.9 83384
-          83383.9 83384 83383.9 83384 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9
-          83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.8 83383.9 83383.9
-          83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.9 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.7 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.7 83383.6 83383.7 83383.7 83383.7 83383.7 83383.7
-          83383.7 83383.7 83383.7 83383.7 83383.7 83383.7 83383.7 83383.7 83383.6 83383.5 83383.6 83383.6
-          83383.6 83383.6 83383.6 83383.6 83383.6 83383.6 83383.6 83383.6 83383.6 83383.6 83383.6 83383.5
-          83383.4 83383.5 83383.5 83383.5 83383.5 83383.5 83383.5 83383.5 83383.5 83383.5 83383.5 83383.5
-          83383.5 83383.5 83383.4 83383.3 83383.3 83383.3 83383.3 83383.3 83383.3 83383.3 83383.3 83383.3
-          83383.3 83383.3 83383.3 83383.3 83383.3 83383.3 83383.1 83383.2 83383.2 83383.2 83383.2 83383.2
-          83383.2 83383.2 83383.2 83383.2 83383.2 83383.2 83383.2 83383.2 83383.1 83382.9 83383 83383
-          83383 83383 83383 83383 83383 83383 83383 83383 83383 83383 83383 83382.9
-          83382.7 83382.7 83382.7 83382.7 83382.7 83382.7 83382.7 83382.7 83382.7 83382.7 83382.7 83382.7
-          83382.7 83382.7 83382.7 83382.4 83382.4 83382.4 83382.4 83382.4 83382.4 83382.4 83382.4 83382.4
-          83382.4 83382.4 83382.4 83382.4 83382.4 83382.4 83382 83382.1 83382 83382 83382 83382
-          83382 83382 83382 83382 83382 83382 83382 83382.1 83382 83381.6 83378 83378
-          83378.1 83378.1 83378.1 83378.1 83378.1 83378.2 83378.2 83378.2 83378.2 83378.2 83378.2 83381.6
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-          83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8 83383.8
-        </DataArray>
-        <DataArray type="Float32" Name="h_n" NumberOfComponents="1" format="ascii">
-          344047 344047 344058 344058 344047 344058 344047 344058 344047 344058 344047 344058
-          344047 344058 344047 344058 344047 344058 344047 344058 344047 344058 344047 344058
-          344047 344058 344047 344058 344047 344058 344071 344071 344071 344071 344071 344071
-          344071 344072 344072 344072 344072 344072 344072 344072 344072 344087 344087 344087
-          344087 344087 344087 344087 344087 344087 344087 344087 344087 344087 344087 344087
-          344106 344106 344106 344106 344106 344106 344106 344106 344106 344106 344106 344106
-          344106 344106 344106 344129 344129 344129 344129 344129 344129 344129 344129 344129
-          344129 344129 344129 344129 344129 344129 344156 344156 344156 344156 344156 344156
-          344156 344156 344156 344156 344156 344156 344156 344156 344156 344189 344189 344189
-          344189 344189 344189 344189 344189 344189 344189 344189 344189 344189 344189 344189
-          344229 344229 344229 344229 344229 344229 344229 344229 344229 344229 344229 344229
-          344229 344229 344229 344276 344276 344276 344276 344276 344276 344276 344276 344276
-          344276 344276 344276 344276 344276 344276 344333 344333 344334 344334 344334 344334
-          344334 344334 344334 344334 344334 344334 344334 344334 344334 344402 344402 344402
-          344403 344403 344403 344403 344403 344403 344403 344403 344403 344403 344403 344403
-          344486 344486 344486 344486 344486 344486 344486 344486 344486 344486 344486 344486
-          344486 344486 344486 344586 344586 344586 344586 344586 344586 344586 344586 344586
-          344586 344586 344586 344586 344586 344586 344707 344707 344707 344707 344707 344707
-          344708 344708 344708 344708 344708 344708 344708 344708 344708 344401 344358 344357
-          344358 344360 344363 344368 344373 344379 344384 344388 344389 344390 344390 344392
-          315501 315502 315502 315504 315506 315510 315517 315531 315552 315578 315603 315622
-          315634 315641 315645 315501 315501 315502 315502 315503 315504 315505 315506 315505
-          315498 315481 315459 315440 315420 315396 315501 315501 315501 315502 315502 315503
-          315503 315503 315500 315492 315480 315469 315465 315467 315474 315501 315501 315501
-          315502 315502 315502 315503 315502 315500 315493 315486 315483 315485 315490 315495
-          315501 315501 315501 315501 315502 315502 315502 315502 315500 315495 315490 315491
-          315494 315498 315500 315501 315501 315501 315501 315502 315502 315502 315502 315500
-          315496 315493 315495 315498 315500 315501 315501 315501 315501 315501 315502 315502
-          315502 315502 315500 315497 315495 315497 315500 315501 315502 315501 315501 315501
-          315501 315502 315502 315502 315502 315500 315497 315497 315498 315500 315501 315502
-          315501 315501 315501 315501 315502 315502 315502 315502 315500 315498 315497 315499
-          315501 315501 315502 315501 315501 315501 315501 315502 315502 315502 315502 315501
-          315498 315498 315500 315501 315501 315501 315501 315501 315501 315501 315502 315502
-          315502 315502 315501 315499 315499 315500 315501 315501 315501 315501 315501 315501
-          315501 315502 315502 315503 315504 315504 315502 315500 315501 315501 315501 315501
-          315501 315501 315501 315501 315502 315503 315505 315509 315510 315506 315502 315501
-          315501 315501 315501 315501 315501 315501 315502 315504 315508 315515 315522 315520
-          315510 315502 315501 315501 315501 315501 315501 315501 315501 315501 315501 315501
-          315501 315501 315501 315501 315501 315501 315501 315501 315501
-        </DataArray>
         <DataArray type="Float32" Name="reynoldsNumber_w" NumberOfComponents="1" format="ascii">
-          3.46045e-07 6.30678e-07 3.48003e-07 6.31663e-07 1.07552e-06 1.07603e-06 1.28744e-06 1.28771e-06 1.3261e-06 1.32623e-06 1.26661e-06 1.26668e-06
-          1.15852e-06 1.15855e-06 1.02762e-06 1.02763e-06 8.86274e-07 8.86283e-07 7.40319e-07 7.40325e-07 5.92469e-07 5.92475e-07 4.44009e-07 4.44017e-07
-          2.95604e-07 2.95615e-07 1.47589e-07 1.47612e-07 7.37036e-08 7.37503e-08 3.56678e-07 6.3586e-07 1.07798e-06 1.28871e-06 1.32672e-06 1.2669e-06
-          1.15866e-06 1.02769e-06 8.86324e-07 7.40361e-07 5.92513e-07 4.44064e-07 2.95683e-07 1.47751e-07 7.40302e-08 3.74648e-07 6.44758e-07 1.08212e-06
-          1.29083e-06 1.32774e-06 1.26739e-06 1.15891e-06 1.02783e-06 8.86419e-07 7.40444e-07 5.92603e-07 4.44177e-07 2.95849e-07 1.48086e-07 7.46979e-08
-          4.05679e-07 6.60794e-07 1.08967e-06 1.29468e-06 1.3296e-06 1.26827e-06 1.15935e-06 1.02809e-06 8.86601e-07 7.40607e-07 5.92781e-07 4.444e-07
-          2.96176e-07 1.48742e-07 7.5991e-08 4.53951e-07 6.87313e-07 1.10236e-06 1.30117e-06 1.33272e-06 1.26976e-06 1.16011e-06 1.02853e-06 8.8692e-07
-          7.40898e-07 5.93101e-07 4.44803e-07 2.96766e-07 1.49916e-07 7.82634e-08 5.2398e-07 7.28745e-07 1.12274e-06 1.31159e-06 1.33775e-06 1.27217e-06
-          1.16134e-06 1.02926e-06 8.87456e-07 7.41392e-07 5.93649e-07 4.45496e-07 2.9778e-07 1.51912e-07 8.20217e-08 6.21021e-07 7.90813e-07 1.15439e-06
-          1.32779e-06 1.34554e-06 1.27591e-06 1.16328e-06 1.03043e-06 8.88329e-07 7.42211e-07 5.94563e-07 4.46655e-07 2.99473e-07 1.55201e-07 8.79582e-08
-          7.52197e-07 8.80909e-07 1.20232e-06 1.35234e-06 1.35732e-06 1.28158e-06 1.16625e-06 1.03226e-06 8.89728e-07 7.43547e-07 5.96068e-07 4.48567e-07
-          3.02256e-07 1.60488e-07 9.69701e-08 9.28758e-07 1.00899e-06 1.27351e-06 1.3887e-06 1.37466e-06 1.28999e-06 1.17074e-06 1.03508e-06 8.91948e-07
-          7.45704e-07 5.98522e-07 4.51691e-07 3.06776e-07 1.68808e-07 1.10168e-07 1.17073e-06 1.18977e-06 1.37754e-06 1.44128e-06 1.39956e-06 1.30216e-06
-          1.17737e-06 1.0394e-06 8.95448e-07 7.4918e-07 6.02513e-07 4.56779e-07 3.14066e-07 1.8163e-07 1.28895e-07 1.51814e-06 1.44769e-06 1.52763e-06
-          1.51516e-06 1.43415e-06 1.31935e-06 1.18704e-06 1.04595e-06 9.00956e-07 7.54778e-07 6.09005e-07 4.65051e-07 3.25739e-07 2.00946e-07 1.5478e-07
-          2.06406e-06 1.82882e-06 1.74145e-06 1.61438e-06 1.48021e-06 1.34289e-06 1.20089e-06 1.05583e-06 9.09632e-07 7.63816e-07 6.19582e-07 4.78492e-07
-          3.44284e-07 2.29357e-07 1.89829e-07 3.08067e-06 2.43332e-06 2.03634e-06 1.7368e-06 1.53826e-06 1.37399e-06 1.2204e-06 1.0707e-06 9.23344e-07
-          7.78457e-07 6.36835e-07 5.00281e-07 3.7346e-07 2.70202e-07 2.3643e-07 5.71744e-06 3.54356e-06 2.36378e-06 1.87023e-06 1.60598e-06 1.41336e-06
-          1.24758e-06 1.09318e-06 9.45148e-07 8.0227e-07 6.64982e-07 5.35407e-07 4.19037e-07 3.2809e-07 2.96426e-07 0.0115543 0.0115536 0.0115539
-          0.0115533 0.011553 0.0115529 0.011553 0.0115532 0.0115534 0.0115535 0.0115537 0.0115538 0.0115539 0.0115539 0.0115542
-          9.62465e-11 9.62447e-11 9.62413e-11 9.62391e-11 9.62385e-11 9.6239e-11 9.624e-11 9.62412e-11 9.62425e-11 9.62437e-11 9.62447e-11 9.62455e-11
-          9.62461e-11 9.62465e-11 9.62466e-11 5.5782e-11 5.5784e-11 5.57884e-11 5.57923e-11 5.57949e-11 5.57965e-11 5.57974e-11 5.5798e-11 5.57983e-11
-          5.57985e-11 5.57987e-11 5.57987e-11 5.57988e-11 5.57989e-11 5.57989e-11 5.57721e-11 5.57756e-11 5.57826e-11 5.57886e-11 5.57926e-11 5.57951e-11
-          5.57966e-11 5.57975e-11 5.57981e-11 5.57984e-11 5.57986e-11 5.57988e-11 5.57989e-11 5.5799e-11 5.5799e-11 5.57627e-11 5.57682e-11 5.57779e-11
-          5.57859e-11 5.5791e-11 5.57942e-11 5.57961e-11 5.57972e-11 5.57979e-11 5.57983e-11 5.57986e-11 5.57988e-11 5.57989e-11 5.5799e-11 5.5799e-11
-          5.57536e-11 5.57616e-11 5.57743e-11 5.57839e-11 5.57898e-11 5.57935e-11 5.57956e-11 5.5797e-11 5.57978e-11 5.57982e-11 5.57985e-11 5.57987e-11
-          5.57989e-11 5.5799e-11 5.5799e-11 5.57445e-11 5.57558e-11 5.57716e-11 5.57825e-11 5.5789e-11 5.5793e-11 5.57954e-11 5.57968e-11 5.57977e-11
-          5.57982e-11 5.57985e-11 5.57987e-11 5.57989e-11 5.5799e-11 5.5799e-11 5.57355e-11 5.57509e-11 5.57697e-11 5.57815e-11 5.57885e-11 5.57926e-11
-          5.57952e-11 5.57967e-11 5.57976e-11 5.57982e-11 5.57985e-11 5.57987e-11 5.57989e-11 5.5799e-11 5.5799e-11 5.57266e-11 5.57469e-11 5.57684e-11
-          5.57808e-11 5.57881e-11 5.57924e-11 5.5795e-11 5.57966e-11 5.57976e-11 5.57981e-11 5.57985e-11 5.57987e-11 5.57989e-11 5.5799e-11 5.5799e-11
-          5.57177e-11 5.57437e-11 5.57675e-11 5.57804e-11 5.57879e-11 5.57923e-11 5.5795e-11 5.57966e-11 5.57975e-11 5.57981e-11 5.57985e-11 5.57987e-11
-          5.57989e-11 5.5799e-11 5.5799e-11 5.57091e-11 5.57413e-11 5.5767e-11 5.57802e-11 5.57877e-11 5.57922e-11 5.57949e-11 5.57965e-11 5.57975e-11
-          5.57981e-11 5.57985e-11 5.57987e-11 5.57989e-11 5.5799e-11 5.5799e-11 5.57008e-11 5.57395e-11 5.57667e-11 5.578e-11 5.57876e-11 5.57921e-11
-          5.57949e-11 5.57965e-11 5.57975e-11 5.57981e-11 5.57985e-11 5.57987e-11 5.57989e-11 5.5799e-11 5.5799e-11 5.56929e-11 5.57383e-11 5.57665e-11
-          5.57799e-11 5.57876e-11 5.57921e-11 5.57948e-11 5.57965e-11 5.57975e-11 5.57981e-11 5.57985e-11 5.57987e-11 5.57989e-11 5.5799e-11 5.5799e-11
-          5.56855e-11 5.57376e-11 5.57665e-11 5.57798e-11 5.57875e-11 5.57921e-11 5.57948e-11 5.57965e-11 5.57975e-11 5.57981e-11 5.57985e-11 5.57987e-11
-          5.57989e-11 5.5799e-11 5.5799e-11 5.56788e-11 5.57373e-11 5.57664e-11 5.57798e-11 5.57875e-11 5.57921e-11 5.57948e-11 5.57965e-11 5.57975e-11
-          5.57981e-11 5.57985e-11 5.57987e-11 5.57989e-11 5.5799e-11 5.5799e-11 5.56755e-11 5.57372e-11 5.57664e-11 5.57798e-11 5.57875e-11 5.57921e-11
-          5.57949e-11 5.57965e-11 5.57975e-11 5.57981e-11 5.57985e-11 5.57987e-11 5.57989e-11 5.5799e-11 5.5799e-11
+          0.00210154 0.0021015 0.00235722 0.00235713 0.0021014 0.00235694 0.00210129 0.00235674 0.00210121 0.00235658 0.00210114 0.00235647
+          0.0021011 0.00235638 0.00210106 0.00235631 0.00210102 0.00235624 0.00210098 0.00235616 0.00210091 0.00235603 0.00210081 0.00235585
+          0.00210065 0.00235557 0.00210049 0.00235527 0.00210042 0.00235512 0.0026347 0.00263452 0.00263414 0.00263377 0.00263347 0.00263325
+          0.00263309 0.00263296 0.00263283 0.00263268 0.00263247 0.00263213 0.00263161 0.002631 0.00263069 0.00265974 0.00265945 0.00265886
+          0.00265831 0.0026579 0.0026576 0.00265738 0.00265721 0.00265704 0.00265684 0.00265655 0.00265609 0.00265535 0.0026544 0.00265385
+          0.00266428 0.00266383 0.00266302 0.00266232 0.00266181 0.00266146 0.00266119 0.00266098 0.00266078 0.00266054 0.00266021 0.00265967
+          0.00265874 0.0026574 0.00265653 0.00266634 0.00266568 0.00266464 0.00266381 0.00266323 0.00266282 0.00266253 0.00266229 0.00266207
+          0.00266181 0.00266145 0.00266085 0.00265978 0.00265804 0.00265671 0.00266734 0.00266643 0.00266515 0.00266421 0.00266358 0.00266314
+          0.00266282 0.00266257 0.00266233 0.00266206 0.00266169 0.00266106 0.0026599 0.00265776 0.00265582 0.00266643 0.0026652 0.0026637
+          0.00266268 0.00266201 0.00266155 0.00266121 0.00266095 0.00266071 0.00266043 0.00266005 0.00265942 0.0026582 0.00265571 0.002653
+          0.00265815 0.00265656 0.00265487 0.0026538 0.0026531 0.00265263 0.00265229 0.00265203 0.00265178 0.00265151 0.00265113 0.00265051
+          0.0026493 0.00264652 0.00264291 0.0026243 0.00262234 0.00262054 0.00261947 0.00261878 0.00261832 0.002618 0.00261774 0.00261752
+          0.00261726 0.00261691 0.00261632 0.00261516 0.00261225 0.0026077 0.00252397 0.00252175 0.00251997 0.00251896 0.00251834 0.00251793
+          0.00251765 0.00251744 0.00251725 0.00251704 0.00251674 0.00251623 0.00251521 0.0025124 0.0025071 0.00229838 0.00229611 0.00229455
+          0.00229372 0.00229321 0.00229291 0.00229271 0.00229259 0.00229248 0.00229235 0.00229214 0.00229176 0.00229095 0.00228857 0.00228307
+          0.00190797 0.001906 0.00190484 0.00190425 0.00190391 0.00190374 0.00190366 0.00190363 0.00190361 0.00190358 0.00190349 0.00190327
+          0.00190272 0.00190101 0.00189616 0.00138042 0.00137901 0.00137829 0.00137794 0.00137778 0.00137772 0.00137773 0.00137777 0.00137782
+          0.00137786 0.00137787 0.00137777 0.00137746 0.00137645 0.00137294 0.000807979 0.000807192 0.000806833 0.000806671 0.00080661 0.000806611
+          0.000806649 0.000806707 0.000806771 0.000806829 0.000806864 0.000806847 0.000806707 0.000806221 0.000804262 0.00026235 0.000262108 0.000262006
+          0.000261963 0.000261951 0.000261958 0.000261977 0.000262002 0.00026203 0.000262055 0.000262074 0.000262077 0.000262044 0.000261923 0.000261334
+          3.11804e-08 3.11804e-08 3.11804e-08 3.11804e-08 3.11803e-08 3.11803e-08 3.11803e-08 3.11803e-08 3.11803e-08 3.11803e-08 3.11804e-08 3.11805e-08
+          3.11807e-08 3.11821e-08 3.12067e-08 6.22657e-08 6.22656e-08 6.22655e-08 6.22654e-08 6.22653e-08 6.22653e-08 6.22653e-08 6.22653e-08 6.22653e-08
+          6.22654e-08 6.22655e-08 6.22658e-08 6.22664e-08 6.22704e-08 6.23179e-08 6.2266e-08 6.22659e-08 6.22657e-08 6.22655e-08 6.22654e-08 6.22653e-08
+          6.22653e-08 6.22653e-08 6.22654e-08 6.22654e-08 6.22657e-08 6.22662e-08 6.22675e-08 6.22741e-08 6.23191e-08 6.22664e-08 6.22662e-08 6.22659e-08
+          6.22656e-08 6.22654e-08 6.22654e-08 6.22653e-08 6.22654e-08 6.22654e-08 6.22655e-08 6.22659e-08 6.22667e-08 6.22687e-08 6.22781e-08 6.23203e-08
+          6.22669e-08 6.22666e-08 6.22661e-08 6.22657e-08 6.22655e-08 6.22654e-08 6.22654e-08 6.22654e-08 6.22654e-08 6.22656e-08 6.22661e-08 6.22673e-08
+          6.22702e-08 6.22822e-08 6.23217e-08 6.22674e-08 6.22671e-08 6.22664e-08 6.22658e-08 6.22655e-08 6.22654e-08 6.22654e-08 6.22654e-08 6.22655e-08
+          6.22657e-08 6.22664e-08 6.22679e-08 6.22719e-08 6.22864e-08 6.2323e-08 6.22682e-08 6.22677e-08 6.22667e-08 6.2266e-08 6.22656e-08 6.22654e-08
+          6.22654e-08 6.22654e-08 6.22655e-08 6.22658e-08 6.22667e-08 6.22687e-08 6.22738e-08 6.22905e-08 6.23243e-08 6.2269e-08 6.22684e-08 6.22671e-08
+          6.22662e-08 6.22657e-08 6.22655e-08 6.22654e-08 6.22654e-08 6.22656e-08 6.2266e-08 6.2267e-08 6.22695e-08 6.22759e-08 6.22944e-08 6.23255e-08
+          6.22702e-08 6.22692e-08 6.22676e-08 6.22663e-08 6.22657e-08 6.22655e-08 6.22654e-08 6.22655e-08 6.22656e-08 6.22661e-08 6.22673e-08 6.22703e-08
+          6.2278e-08 6.22978e-08 6.23265e-08 6.22717e-08 6.22703e-08 6.2268e-08 6.22665e-08 6.22658e-08 6.22655e-08 6.22654e-08 6.22655e-08 6.22657e-08
+          6.22662e-08 6.22676e-08 6.22711e-08 6.22798e-08 6.23005e-08 6.23273e-08 6.22738e-08 6.22717e-08 6.22685e-08 6.22667e-08 6.22659e-08 6.22655e-08
+          6.22655e-08 6.22655e-08 6.22657e-08 6.22663e-08 6.22678e-08 6.22716e-08 6.2281e-08 6.23022e-08 6.23278e-08 6.22771e-08 6.22735e-08 6.22689e-08
+          6.22667e-08 6.22659e-08 6.22655e-08 6.22655e-08 6.22655e-08 6.22657e-08 6.22663e-08 6.22678e-08 6.22715e-08 6.22809e-08 6.23021e-08 6.23278e-08
+          6.22833e-08 6.22754e-08 6.22688e-08 6.22665e-08 6.22658e-08 6.22655e-08 6.22654e-08 6.22655e-08 6.22657e-08 6.22662e-08 6.22674e-08 6.22706e-08
+          6.22787e-08 6.2299e-08 6.23269e-08 6.22962e-08 6.22724e-08 6.22648e-08 6.22634e-08 6.22629e-08 6.22627e-08 6.22627e-08 6.22627e-08 6.22628e-08
+          6.22631e-08 6.22639e-08 6.22658e-08 6.22706e-08 6.22861e-08 6.23236e-08 6.23051e-08 6.22685e-08 6.2261e-08 6.22604e-08 6.22601e-08 6.226e-08
+          6.226e-08 6.226e-08 6.226e-08 6.22602e-08 6.22606e-08 6.22617e-08 6.22643e-08 6.22757e-08 6.23212e-08
         </DataArray>
-        <DataArray type="Float32" Name="reynoldsNumber_n" NumberOfComponents="1" format="ascii">
-          6.06184e-11 6.06184e-11 6.06436e-11 6.06437e-11 6.06185e-11 6.06438e-11 6.06187e-11 6.0644e-11 6.06188e-11 6.06442e-11 6.06189e-11 6.06443e-11
-          6.06191e-11 6.06444e-11 6.06192e-11 6.06446e-11 6.06193e-11 6.06446e-11 6.06193e-11 6.06447e-11 6.06194e-11 6.06448e-11 6.06195e-11 6.06448e-11
-          6.06195e-11 6.06449e-11 6.06195e-11 6.06449e-11 6.06195e-11 6.06449e-11 6.07e-11 6.07001e-11 6.07004e-11 6.07006e-11 6.07008e-11 6.0701e-11
-          6.07011e-11 6.07012e-11 6.07013e-11 6.07014e-11 6.07015e-11 6.07015e-11 6.07016e-11 6.07016e-11 6.07016e-11 6.0754e-11 6.07541e-11 6.07545e-11
-          6.07548e-11 6.07551e-11 6.07553e-11 6.07555e-11 6.07556e-11 6.07557e-11 6.07558e-11 6.07558e-11 6.07559e-11 6.07559e-11 6.07559e-11 6.07559e-11
-          6.0819e-11 6.08193e-11 6.08197e-11 6.08202e-11 6.08205e-11 6.08208e-11 6.08209e-11 6.08211e-11 6.08212e-11 6.08213e-11 6.08213e-11 6.08214e-11
-          6.08214e-11 6.08215e-11 6.08215e-11 6.08975e-11 6.08978e-11 6.08985e-11 6.08991e-11 6.08995e-11 6.08998e-11 6.09e-11 6.09001e-11 6.09002e-11
-          6.09003e-11 6.09004e-11 6.09004e-11 6.09005e-11 6.09005e-11 6.09005e-11 6.09923e-11 6.09927e-11 6.09935e-11 6.09943e-11 6.09948e-11 6.09952e-11
-          6.09954e-11 6.09955e-11 6.09956e-11 6.09957e-11 6.09958e-11 6.09958e-11 6.09959e-11 6.09959e-11 6.09959e-11 6.11068e-11 6.11073e-11 6.11085e-11
-          6.11094e-11 6.11101e-11 6.11105e-11 6.11107e-11 6.11109e-11 6.1111e-11 6.11111e-11 6.11111e-11 6.11112e-11 6.11112e-11 6.11113e-11 6.11113e-11
-          6.12453e-11 6.1246e-11 6.12475e-11 6.12487e-11 6.12495e-11 6.125e-11 6.12503e-11 6.12504e-11 6.12506e-11 6.12507e-11 6.12507e-11 6.12508e-11
-          6.12508e-11 6.12508e-11 6.12508e-11 6.14131e-11 6.1414e-11 6.1416e-11 6.14175e-11 6.14185e-11 6.1419e-11 6.14193e-11 6.14195e-11 6.14196e-11
-          6.14197e-11 6.14198e-11 6.14198e-11 6.14199e-11 6.14199e-11 6.14199e-11 6.16164e-11 6.16178e-11 6.16203e-11 6.16223e-11 6.16234e-11 6.1624e-11
-          6.16244e-11 6.16246e-11 6.16247e-11 6.16248e-11 6.16249e-11 6.16249e-11 6.1625e-11 6.1625e-11 6.1625e-11 6.18631e-11 6.18651e-11 6.18686e-11
-          6.18711e-11 6.18724e-11 6.18731e-11 6.18734e-11 6.18737e-11 6.18738e-11 6.18739e-11 6.1874e-11 6.1874e-11 6.18741e-11 6.18741e-11 6.18741e-11
-          6.21625e-11 6.21659e-11 6.21709e-11 6.21739e-11 6.21753e-11 6.2176e-11 6.21764e-11 6.21767e-11 6.21768e-11 6.21769e-11 6.2177e-11 6.2177e-11
-          6.21771e-11 6.21771e-11 6.21771e-11 6.25255e-11 6.25322e-11 6.25397e-11 6.25431e-11 6.25445e-11 6.25452e-11 6.25456e-11 6.25459e-11 6.2546e-11
-          6.25461e-11 6.25462e-11 6.25462e-11 6.25463e-11 6.25463e-11 6.25463e-11 6.29537e-11 6.29746e-11 6.29867e-11 6.29897e-11 6.29909e-11 6.29915e-11
-          6.29918e-11 6.2992e-11 6.29922e-11 6.29922e-11 6.29923e-11 6.29923e-11 6.29923e-11 6.29923e-11 6.29923e-11 2.12007e-05 3.68616e-11 3.45768e-11
-          3.44908e-11 3.44904e-11 3.44998e-11 3.4509e-11 3.45155e-11 3.45192e-11 3.45209e-11 3.45318e-11 3.45477e-11 3.45557e-11 3.45597e-11 3.45608e-11
-          249.532 210.095 148.142 116.298 100.193 89.2004 79.2805 69.6322 60.4655 52.1852 45.1274 39.5146
-          35.5118 33.2836 32.553 376.953 314.381 203.829 125.517 76.1198 45.9662 27.7443 16.7884 10.2338
-          6.33768 4.02736 2.67506 1.93529 1.62645 1.56445 393.388 324.134 206.459 126.333 76.4538 46.177
-          27.9028 16.9017 10.2985 6.35093 3.9959 2.59656 1.78696 1.37156 1.26883 414.645 336.573 209.679
-          127.037 76.682 46.2996 27.9849 16.9505 10.3161 6.34186 3.96186 2.52699 1.65809 1.16827 1.03932
-          440.141 350.108 212.658 127.551 76.8127 46.3571 28.0183 16.965 10.3152 6.32951 3.93489 2.47241
-          1.55592 1.00329 0.85035 469.601 363.516 215 127.875 76.873 46.3732 28.0241 16.9625 10.3074
-          6.31848 3.91491 2.43156 1.47803 0.868968 0.689366 502.963 375.866 216.596 128.051 76.8889 46.366
-          28.0156 16.9525 10.2978 6.30952 3.90041 2.40191 1.42069 0.762088 0.551755 540.117 386.521 217.516
-          128.136 76.8787 46.3476 28.0012 16.9402 10.2885 6.30247 3.89 2.38097 1.37995 0.680058 0.434751
-          580.692 395.151 217.917 128.173 76.8547 46.3254 27.9852 16.9279 10.2803 6.29698 3.8826 2.36657
-          1.35201 0.619786 0.335858 623.964 401.704 217.976 128.188 76.8242 46.3032 27.9699 16.9169 10.2733
-          6.29267 3.87735 2.35692 1.33353 0.577646 0.252665 668.903 406.342 217.847 128.192 76.792 46.283
-          27.9561 16.9074 10.2675 6.28923 3.87364 2.35064 1.32178 0.549806 0.182921 714.316 409.359 217.641
-          128.189 76.761 46.2654 27.9442 16.8993 10.2626 6.2864 3.87103 2.34669 1.31466 0.532635 0.124594
-          759.02 411.102 217.431 128.181 76.7328 46.2501 27.9335 16.892 10.2582 6.28403 3.86923 2.34434
-          1.31067 0.523008 0.0759114 801.977 411.912 217.256 128.166 76.7068 46.2346 27.9218 16.8841 10.2538
-          6.2821 3.86804 2.34303 1.3087 0.518454 0.0354044 823.136 412.224 217.187 128.154 76.6859 46.2176
-          27.9096 16.8781 10.2524 6.28202 3.86796 2.3428 1.30829 0.517471 0.0168467
+        <DataArray type="Float32" Name="nusseltNumber_w" NumberOfComponents="1" format="ascii">
+          2.05213 2.05213 2.05585 2.05585 2.05213 2.05584 2.05213 2.05584 2.05213 2.05584 2.05212 2.05584
+          2.05212 2.05584 2.05212 2.05583 2.05212 2.05583 2.05212 2.05583 2.05212 2.05583 2.05212 2.05583
+          2.05212 2.05582 2.05211 2.05582 2.05211 2.05582 2.0597 2.0597 2.0597 2.05969 2.05969 2.05968
+          2.05968 2.05968 2.05968 2.05968 2.05967 2.05967 2.05966 2.05965 2.05965 2.06004 2.06004 2.06003
+          2.06002 2.06002 2.06001 2.06001 2.06001 2.06001 2.06 2.06 2.05999 2.05998 2.05997 2.05996
+          2.06011 2.0601 2.06009 2.06008 2.06007 2.06007 2.06006 2.06006 2.06006 2.06005 2.06005 2.06004
+          2.06003 2.06001 2.06 2.06013 2.06012 2.06011 2.0601 2.06009 2.06009 2.06008 2.06008 2.06008
+          2.06007 2.06007 2.06006 2.06004 2.06002 2.06 2.06015 2.06013 2.06012 2.0601 2.0601 2.06009
+          2.06009 2.06008 2.06008 2.06008 2.06007 2.06006 2.06005 2.06002 2.05999 2.06013 2.06012 2.0601
+          2.06008 2.06007 2.06007 2.06006 2.06006 2.06006 2.06005 2.06005 2.06004 2.06002 2.05999 2.05995
+          2.06002 2.06 2.05998 2.05996 2.05995 2.05995 2.05994 2.05994 2.05994 2.05993 2.05993 2.05992
+          2.0599 2.05986 2.05982 2.05956 2.05954 2.05951 2.0595 2.05949 2.05948 2.05948 2.05947 2.05947
+          2.05947 2.05946 2.05945 2.05944 2.0594 2.05934 2.05819 2.05816 2.05813 2.05812 2.05811 2.0581
+          2.0581 2.0581 2.05809 2.05809 2.05809 2.05808 2.05806 2.05803 2.05795 2.05501 2.05497 2.05495
+          2.05494 2.05493 2.05493 2.05493 2.05492 2.05492 2.05492 2.05492 2.05491 2.0549 2.05487 2.05479
+          2.04919 2.04916 2.04915 2.04914 2.04913 2.04913 2.04913 2.04913 2.04913 2.04913 2.04912 2.04912
+          2.04911 2.04909 2.04901 2.04051 2.04049 2.04047 2.04047 2.04046 2.04046 2.04046 2.04046 2.04047
+          2.04047 2.04047 2.04046 2.04046 2.04044 2.04038 2.02938 2.02936 2.02935 2.02935 2.02935 2.02935
+          2.02935 2.02935 2.02935 2.02935 2.02935 2.02935 2.02935 2.02934 2.0293 2.01496 2.01495 2.01495
+          2.01495 2.01495 2.01495 2.01495 2.01495 2.01495 2.01495 2.01495 2.01495 2.01495 2.01494 2.01492
+          2.00007 2.00007 2.00007 2.00007 2.00007 2.00007 2.00007 2.00007 2.00007 2.00007 2.00007 2.00007
+          2.00007 2.00007 2.00007 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
+          2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001 2.0001
         </DataArray>
         <DataArray type="Float32" Name="prandtlNumber_w" NumberOfComponents="1" format="ascii">
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02294 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02294
-          7.02294 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294
-          7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294
-          7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294
-          7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294 7.02294
+          7.02294 7.02294 7.02295 7.02295 7.02294 7.02295 7.02294 7.02295 7.02294 7.02295 7.02294 7.02295
+          7.02294 7.02295 7.02294 7.02295 7.02294 7.02295 7.02294 7.02295 7.02294 7.02295 7.02294 7.02295
+          7.02294 7.02295 7.02294 7.02295 7.02294 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295
           7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295
           7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02295
-          7.02295 7.02295 7.02295 7.02295 7.02295 7.02295 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
-          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02313 7.02313
-          7.02313 7.02313 7.02313 7.02313 7.02312 7.02312 7.02312 7.02312 7.02312 7.02312 7.02312 7.02296
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
-          7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296
+          7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02296 7.02297 7.02297 7.02297 7.02297
+          7.02297 7.02297 7.02297 7.02297 7.02297 7.02297 7.02297 7.02297 7.02297 7.02297 7.02297 7.02297
+          7.02297 7.02297 7.02297 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298
+          7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02307 7.02307 7.02307 7.02307 7.02307 7.02307
+          7.02307 7.02307 7.02307 7.02307 7.02307 7.02307 7.02307 7.02307 7.02307 7.02337 7.02337 7.02337
+          7.02337 7.02338 7.02338 7.02338 7.02338 7.02338 7.02338 7.02338 7.02338 7.02338 7.02337 7.02335
+          7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298 7.02298
+          7.02298 7.02298 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
           7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
           7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
           7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
@@ -1553,245 +782,522 @@
           7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
           7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293 7.02293
         </DataArray>
+        <DataArray type="Float32" Name="reynoldsNumber_n" NumberOfComponents="1" format="ascii">
+          0.000138994 0.000138997 0.000155125 0.000155134 0.000139004 0.000155153 0.000139012 0.000155172 0.000139019 0.000155188 0.000139023 0.000155199
+          0.000139027 0.000155208 0.000139029 0.000155214 0.000139032 0.000155221 0.000139035 0.000155228 0.000139039 0.00015524 0.000139047 0.000155257
+          0.000139057 0.000155284 0.000139069 0.000155313 0.000139074 0.000155327 0.000172335 0.000172355 0.000172396 0.000172438 0.00017247 0.000172493
+          0.000172511 0.000172525 0.000172538 0.000172554 0.000172576 0.000172613 0.000172669 0.000172735 0.00017277 0.000173132 0.000173165 0.00017323
+          0.000173291 0.000173337 0.00017337 0.000173394 0.000173413 0.000173431 0.000173453 0.000173484 0.000173535 0.000173617 0.000173722 0.000173783
+          0.000172841 0.000172891 0.000172982 0.00017306 0.000173117 0.000173157 0.000173186 0.000173209 0.00017323 0.000173256 0.000173293 0.000173353
+          0.000173456 0.000173605 0.000173702 0.000172583 0.000172656 0.000172774 0.000172867 0.000172931 0.000172976 0.000173009 0.000173034 0.000173059
+          0.000173087 0.000173127 0.000173193 0.000173312 0.000173506 0.000173654 0.000172391 0.000172494 0.000172638 0.000172743 0.000172814 0.000172862
+          0.000172897 0.000172925 0.000172951 0.00017298 0.000173022 0.000173091 0.000173221 0.00017346 0.000173677 0.000172162 0.0001723 0.000172469
+          0.000172584 0.00017266 0.000172711 0.000172748 0.000172777 0.000172804 0.000172834 0.000172877 0.000172947 0.000173083 0.000173363 0.000173667
+          0.0001715 0.000171682 0.000171875 0.000171998 0.000172077 0.000172131 0.000172169 0.0001722 0.000172227 0.000172259 0.000172301 0.000172372
+          0.000172511 0.000172828 0.000173239 0.00016918 0.000169414 0.000169632 0.000169762 0.000169845 0.000169902 0.000169943 0.000169975 0.000170004
+          0.000170037 0.00017008 0.000170152 0.000170292 0.000170643 0.000171184 0.000162479 0.000162779 0.000163024 0.000163164 0.000163254 0.000163316
+          0.000163361 0.000163396 0.000163429 0.000163464 0.000163511 0.000163585 0.000163728 0.000164115 0.000164823 0.000147498 0.000147885 0.000148165
+          0.00014832 0.000148421 0.00014849 0.000148542 0.000148583 0.000148621 0.000148662 0.000148714 0.000148794 0.000148945 0.000149375 0.000150303
+          0.000121612 0.000122116 0.000122438 0.000122612 0.000122726 0.000122805 0.000122864 0.000122913 0.000122957 0.000123004 0.000123063 0.000123152
+          0.000123312 0.00012379 0.000125015 8.6646e-05 8.72926e-05 8.76561e-05 8.78484e-05 8.79747e-05 8.80627e-05 8.81283e-05 8.81819e-05 8.82312e-05
+          8.82834e-05 8.83477e-05 8.84427e-05 8.86126e-05 8.91277e-05 9.0724e-05 4.87007e-05 4.9506e-05 4.9902e-05 5.01086e-05 5.02434e-05 5.03361e-05
+          5.04044e-05 5.04595e-05 5.05099e-05 5.05631e-05 5.06291e-05 5.07274e-05 5.09039e-05 5.14412e-05 5.34591e-05 1.26115e-05 1.35745e-05 1.399e-05
+          1.42054e-05 1.43437e-05 1.44366e-05 1.45033e-05 1.45561e-05 1.46038e-05 1.46551e-05 1.47206e-05 1.48224e-05 1.50126e-05 1.56055e-05 1.80945e-05
+          445.011 456.523 475.008 485.458 490.408 492.599 493.707 494.675 496.351 500.263 509.864 534.709
+          591.845 810.846 1002.09 445.029 456.462 474.876 485.287 490.213 492.398 493.509 494.483 496.166
+          500.071 509.692 534.213 592.786 800.715 1015.71 445.079 456.506 474.891 485.237 490.105 492.245
+          493.321 494.266 495.92 499.778 509.353 533.461 593.326 787.063 988.127 445.195 456.648 475.031
+          485.31 490.115 492.213 493.258 494.173 495.787 499.571 509.023 532.656 593.126 771.676 957.539
+          445.403 456.907 475.297 485.472 490.187 492.234 493.25 494.137 495.705 499.391 508.619 531.645
+          591.715 754.185 923.895 445.757 457.344 475.741 485.744 490.312 492.28 493.254 494.103 495.606
+          499.141 507.995 530.154 588.487 734.144 887.193 446.342 458.059 476.458 486.177 490.51 492.353
+          493.262 494.054 495.454 498.754 507.019 527.867 582.781 711.057 847.458 447.306 459.214 477.593
+          486.848 490.812 492.465 493.275 493.979 495.226 498.167 505.546 524.38 573.85 684.288 804.657
+          448.912 461.084 479.369 487.862 491.259 492.629 493.294 493.871 494.892 497.306 503.392 519.188
+          560.834 652.96 758.568 451.684 464.16 482.137 489.36 491.897 492.862 493.322 493.718 494.421
+          496.093 500.351 511.727 542.754 615.783 708.575 456.785 469.395 486.454 491.502 492.768 493.176
+          493.359 493.514 493.791 494.462 496.25 501.507 518.533 570.679 653.311 467.29 478.836 493.164
+          494.392 493.875 493.572 493.406 493.259 493.003 492.42 491.087 488.444 487.184 513.884 589.939
+          493.498 497.487 503.233 497.81 495.131 494.015 493.459 492.976 492.126 490.143 485.294 473.589
+          448.9 437.638 512.53 584.108 540.147 514.874 500.859 496.282 494.406 493.505 492.724 491.35
+          488.125 480.112 460.251 410.541 323.864 408.653 741.767 611.777 517.472 502.51 496.772 494.578
+          493.522 492.611 491.006 487.235 477.855 454.201 395.929 222.451 337.512
+        </DataArray>
+        <DataArray type="Float32" Name="nusseltNumber_n" NumberOfComponents="1" format="ascii">
+          2.00474 2.00474 2.00506 2.00506 2.00474 2.00506 2.00474 2.00506 2.00474 2.00506 2.00474 2.00506
+          2.00474 2.00506 2.00474 2.00506 2.00474 2.00506 2.00474 2.00506 2.00474 2.00507 2.00474 2.00507
+          2.00474 2.00507 2.00474 2.00507 2.00474 2.00507 2.00539 2.00539 2.00539 2.00539 2.0054 2.0054
+          2.0054 2.0054 2.0054 2.0054 2.0054 2.0054 2.0054 2.0054 2.0054 2.00541 2.00541 2.00541
+          2.00541 2.00541 2.00541 2.00541 2.00541 2.00541 2.00541 2.00541 2.00542 2.00542 2.00542 2.00542
+          2.0054 2.0054 2.00541 2.00541 2.00541 2.00541 2.00541 2.00541 2.00541 2.00541 2.00541 2.00541
+          2.00541 2.00542 2.00542 2.0054 2.0054 2.0054 2.0054 2.0054 2.0054 2.00541 2.00541 2.00541
+          2.00541 2.00541 2.00541 2.00541 2.00541 2.00542 2.00539 2.0054 2.0054 2.0054 2.0054 2.0054
+          2.0054 2.0054 2.0054 2.00541 2.00541 2.00541 2.00541 2.00541 2.00542 2.00539 2.00539 2.0054
+          2.0054 2.0054 2.0054 2.0054 2.0054 2.0054 2.0054 2.0054 2.0054 2.00541 2.00541 2.00542
+          2.00538 2.00538 2.00538 2.00539 2.00539 2.00539 2.00539 2.00539 2.00539 2.00539 2.00539 2.00539
+          2.0054 2.0054 2.00541 2.00533 2.00534 2.00534 2.00534 2.00535 2.00535 2.00535 2.00535 2.00535
+          2.00535 2.00535 2.00535 2.00535 2.00536 2.00537 2.00521 2.00521 2.00522 2.00522 2.00522 2.00522
+          2.00522 2.00522 2.00522 2.00522 2.00523 2.00523 2.00523 2.00524 2.00525 2.00491 2.00492 2.00493
+          2.00493 2.00493 2.00493 2.00493 2.00493 2.00493 2.00494 2.00494 2.00494 2.00494 2.00495 2.00497
+          2.00438 2.00439 2.00439 2.0044 2.0044 2.0044 2.0044 2.0044 2.0044 2.00441 2.00441 2.00441
+          2.00441 2.00442 2.00445 2.00357 2.00359 2.00359 2.0036 2.0036 2.0036 2.00361 2.00361 2.00361
+          2.00361 2.00361 2.00361 2.00362 2.00363 2.00367 2.00253 2.00255 2.00256 2.00257 2.00257 2.00258
+          2.00258 2.00258 2.00258 2.00258 2.00259 2.00259 2.00259 2.00261 2.00267 2.00112 2.00117 2.0012
+          2.00121 2.00121 2.00122 2.00122 2.00122 2.00123 2.00123 2.00123 2.00124 2.00125 2.00128 2.00139
+          39.7641 40.3474 41.2718 41.7881 42.0311 42.1385 42.1928 42.2401 42.322 42.5125 42.9772 44.1639
+          46.812 56.1287 63.4608 39.7649 40.3441 41.2649 41.7791 42.021 42.128 42.1823 42.2299 42.3121
+          42.5023 42.968 44.1395 46.8538 55.7212 63.9609 39.7674 40.3463 41.2655 41.7766 42.0155 42.1203
+          42.1729 42.2191 42.2998 42.4876 42.9513 44.1035 46.8779 55.1694 62.9456 39.7733 40.3534 41.2725
+          41.7802 42.016 42.1187 42.1698 42.2145 42.2932 42.4775 42.9353 44.0652 46.8687 54.5432 61.8066
+          39.7839 40.3665 41.2856 41.7882 42.0195 42.1197 42.1694 42.2127 42.2893 42.4687 42.9158 44.0173
+          46.8046 53.8253 60.5368 39.8019 40.3885 41.3077 41.8015 42.0257 42.122 42.1696 42.2111 42.2844
+          42.4566 42.8856 43.9466 46.6578 52.9945 59.1302 39.8317 40.4245 41.3432 41.8228 42.0353 42.1256
+          42.17 42.2087 42.277 42.4377 42.8385 43.8379 46.3975 52.0262 57.581 39.8807 40.4826 41.3994
+          41.8558 42.0501 42.131 42.1706 42.205 42.2659 42.4092 42.7672 43.6718 45.988 50.8876 55.8793
+          39.9622 40.5765 41.4873 41.9056 42.072 42.1391 42.1716 42.1997 42.2496 42.3673 42.6629 43.4238
+          45.3866 49.5321 54.0058 40.1027 40.7307 41.6239 41.979 42.1033 42.1504 42.1729 42.1923 42.2266
+          42.3081 42.5154 43.0656 44.5419 47.8893 51.9214 40.3603 40.9923 41.8364 42.0839 42.1459 42.1658
+          42.1747 42.1823 42.1958 42.2286 42.3158 42.5715 43.3924 45.842 49.5474 40.8872 41.4609 42.1652
+          42.2252 42.1999 42.1851 42.177 42.1699 42.1573 42.1288 42.0636 41.9341 41.8723 43.1693 46.7239
+          42.1815 42.3761 42.6552 42.3918 42.2613 42.2067 42.1796 42.156 42.1145 42.0174 41.7794 41.2009
+          39.9616 39.3873 43.1042 46.4581 44.4192 43.2169 42.5401 42.3174 42.2258 42.1818 42.1437 42.0765
+          41.9185 41.524 40.5347 37.9807 33.2085 37.8813 53.3116 47.71 43.3416 42.6202 42.3412 42.2343
+          42.1827 42.1382 42.0597 41.8748 41.4124 40.23 37.2067 26.9113 33.9911
+        </DataArray>
         <DataArray type="Float32" Name="prandtlNumber_n" NumberOfComponents="1" format="ascii">
-          0.700964 0.700964 0.700967 0.700967 0.700964 0.700967 0.700964 0.700967 0.700964 0.700967 0.700964 0.700968
-          0.700964 0.700968 0.700964 0.700968 0.700964 0.700968 0.700964 0.700968 0.700964 0.700968 0.700964 0.700968
-          0.700964 0.700968 0.700964 0.700968 0.700964 0.700968 0.700972 0.700972 0.700972 0.700972 0.700972 0.700972
-          0.700972 0.700972 0.700972 0.700972 0.700972 0.700972 0.700972 0.700972 0.700972 0.700976 0.700976 0.700976
-          0.700976 0.700977 0.700977 0.700977 0.700977 0.700977 0.700977 0.700977 0.700977 0.700977 0.700977 0.700977
-          0.700982 0.700982 0.700982 0.700982 0.700982 0.700982 0.700982 0.700982 0.700982 0.700982 0.700982 0.700982
-          0.700983 0.700983 0.700982 0.700989 0.700989 0.700989 0.70099 0.70099 0.70099 0.70099 0.70099 0.70099
-          0.70099 0.70099 0.70099 0.70099 0.70099 0.70099 0.700998 0.700998 0.700998 0.700998 0.700998 0.700998
-          0.700998 0.700998 0.700998 0.700998 0.700998 0.700998 0.700998 0.700998 0.700998 0.701008 0.701008 0.701008
-          0.701008 0.701008 0.701008 0.701008 0.701008 0.701008 0.701008 0.701008 0.701008 0.701008 0.701008 0.701008
-          0.701021 0.701021 0.701021 0.701021 0.701021 0.701021 0.701021 0.701021 0.701021 0.701021 0.701021 0.701021
-          0.701021 0.701021 0.701021 0.701035 0.701035 0.701035 0.701035 0.701035 0.701035 0.701035 0.701035 0.701035
-          0.701035 0.701035 0.701035 0.701036 0.701036 0.701035 0.701053 0.701053 0.701053 0.701053 0.701053 0.701053
-          0.701053 0.701053 0.701053 0.701053 0.701053 0.701053 0.701053 0.701053 0.701053 0.701075 0.701075 0.701075
-          0.701075 0.701075 0.701075 0.701075 0.701075 0.701075 0.701075 0.701075 0.701075 0.701075 0.701075 0.701075
-          0.701101 0.701101 0.701101 0.701101 0.701101 0.701101 0.701101 0.701101 0.701101 0.701101 0.701101 0.701101
-          0.701101 0.701101 0.701101 0.701132 0.701132 0.701132 0.701132 0.701132 0.701132 0.701132 0.701132 0.701132
-          0.701132 0.701132 0.701132 0.701132 0.701132 0.701132 0.70117 0.70117 0.70117 0.70117 0.70117 0.70117
-          0.70117 0.70117 0.70117 0.70117 0.70117 0.70117 0.70117 0.70117 0.70117 0.70107 0.701057 0.701057
-          0.701057 0.701058 0.701059 0.70106 0.701062 0.701064 0.701065 0.701067 0.701067 0.701067 0.701067 0.701068
-          0.691814 0.691821 0.691832 0.69185 0.691878 0.691922 0.691986 0.692069 0.692158 0.692234 0.692281 0.692301
-          0.692307 0.692306 0.692304 0.691811 0.691814 0.69182 0.691829 0.691845 0.691869 0.691905 0.691947 0.691982
-          0.691994 0.691978 0.69195 0.691924 0.691898 0.691866 0.691811 0.691812 0.691816 0.691823 0.691835 0.691853
-          0.691879 0.691907 0.691924 0.691917 0.69189 0.691862 0.691842 0.691827 0.691819 0.691811 0.691812 0.691815
-          0.69182 0.69183 0.691845 0.691867 0.691888 0.691896 0.691882 0.691855 0.691833 0.691821 0.691815 0.691812
-          0.691811 0.691811 0.691814 0.691819 0.691828 0.691841 0.69186 0.691877 0.69188 0.691863 0.691839 0.691822
-          0.691815 0.691812 0.691811 0.691811 0.691811 0.691813 0.691818 0.691826 0.691839 0.691856 0.69187 0.691869
-          0.691851 0.69183 0.691817 0.691812 0.691811 0.691811 0.691811 0.691811 0.691813 0.691818 0.691825 0.691837
-          0.691853 0.691865 0.691862 0.691844 0.691825 0.691815 0.691812 0.691811 0.691811 0.691811 0.691811 0.691813
-          0.691817 0.691825 0.691837 0.691851 0.691862 0.691856 0.691838 0.691821 0.691813 0.691811 0.691811 0.691811
-          0.691811 0.691811 0.691813 0.691817 0.691824 0.691836 0.69185 0.691859 0.691852 0.691834 0.691819 0.691813
-          0.691811 0.691811 0.691811 0.691811 0.691811 0.691813 0.691817 0.691824 0.691836 0.691849 0.691857 0.691849
-          0.691831 0.691817 0.691812 0.691811 0.691811 0.691811 0.691811 0.691811 0.691813 0.691817 0.691824 0.691835
-          0.691848 0.691855 0.691847 0.691829 0.691816 0.691812 0.691811 0.691811 0.691811 0.691811 0.691811 0.691813
-          0.691817 0.691824 0.691835 0.691848 0.691854 0.691844 0.691826 0.691815 0.691811 0.691811 0.691811 0.691811
-          0.691811 0.691811 0.691813 0.691817 0.691824 0.691835 0.691847 0.691852 0.691841 0.691824 0.691814 0.691811
-          0.691811 0.691811 0.691811 0.691811 0.691811 0.691813 0.691817 0.691823 0.691833 0.691843 0.691844 0.691833
-          0.691819 0.691812 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.701122 0.701122 0.701142 0.701142 0.701122 0.701142 0.701122 0.701142 0.701122 0.701142 0.701122 0.701142
+          0.701122 0.701142 0.701122 0.701142 0.701122 0.701142 0.701122 0.701142 0.701122 0.701142 0.701122 0.701142
+          0.701122 0.701142 0.701122 0.701142 0.701122 0.701142 0.701156 0.701156 0.701156 0.701156 0.701156 0.701156
+          0.701156 0.701156 0.701156 0.701156 0.701156 0.701156 0.701157 0.701157 0.701157 0.701167 0.701167 0.701167
+          0.701167 0.701168 0.701168 0.701168 0.701168 0.701168 0.701168 0.701168 0.701168 0.701168 0.701168 0.701168
+          0.701177 0.701177 0.701177 0.701177 0.701177 0.701177 0.701177 0.701178 0.701178 0.701178 0.701178 0.701178
+          0.701178 0.701178 0.701178 0.701185 0.701185 0.701185 0.701185 0.701185 0.701185 0.701186 0.701186 0.701186
+          0.701186 0.701186 0.701186 0.701186 0.701186 0.701186 0.701192 0.701192 0.701192 0.701192 0.701192 0.701192
+          0.701192 0.701192 0.701192 0.701192 0.701193 0.701193 0.701193 0.701193 0.701193 0.701197 0.701197 0.701198
+          0.701198 0.701198 0.701198 0.701198 0.701198 0.701198 0.701198 0.701198 0.701198 0.701198 0.701199 0.701199
+          0.701202 0.701202 0.701202 0.701202 0.701202 0.701202 0.701203 0.701203 0.701203 0.701203 0.701203 0.701203
+          0.701203 0.701203 0.701203 0.701206 0.701206 0.701206 0.701206 0.701206 0.701206 0.701206 0.701207 0.701207
+          0.701207 0.701207 0.701207 0.701207 0.701207 0.701207 0.701209 0.701209 0.701209 0.701209 0.701209 0.701209
+          0.70121 0.70121 0.70121 0.70121 0.70121 0.70121 0.70121 0.70121 0.70121 0.701211 0.701212 0.701212
+          0.701212 0.701212 0.701212 0.701212 0.701212 0.701212 0.701212 0.701212 0.701212 0.701213 0.701213 0.701213
+          0.701213 0.701213 0.701213 0.701213 0.701213 0.701213 0.701214 0.701214 0.701214 0.701214 0.701214 0.701214
+          0.701214 0.701214 0.701214 0.701214 0.701214 0.701214 0.701214 0.701214 0.701214 0.701214 0.701215 0.701215
+          0.701215 0.701215 0.701215 0.701215 0.701215 0.701215 0.701214 0.701214 0.701214 0.701214 0.701214 0.701214
+          0.701215 0.701215 0.701215 0.701215 0.701215 0.701215 0.701215 0.701215 0.701216 0.701212 0.701212 0.701212
+          0.701213 0.701213 0.701213 0.701213 0.701213 0.701213 0.701213 0.701213 0.701213 0.701213 0.701214 0.701214
+          0.691816 0.691826 0.691835 0.691843 0.69185 0.691857 0.691863 0.691869 0.691874 0.691879 0.691883 0.691884
+          0.691881 0.691858 0.691811 0.691811 0.691812 0.691814 0.691817 0.691819 0.691822 0.691825 0.691828 0.691831
+          0.691834 0.691836 0.691837 0.691835 0.69183 0.691811 0.691811 0.691811 0.691811 0.691811 0.691812 0.691812
+          0.691813 0.691814 0.691815 0.691816 0.691817 0.691817 0.691816 0.691814 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691812 0.691812 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
+          0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
           0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811 0.691811
         </DataArray>
-        <DataArray type="Float32" Name="nusseltNumber_w" NumberOfComponents="1" format="ascii">
-          2.00028 2.0004 2.00028 2.0004 2.00055 2.00055 2.00062 2.00062 2.00063 2.00063 2.00061 2.00061
-          2.00058 2.00058 2.00054 2.00054 2.00049 2.00049 2.00044 2.00044 2.00039 2.00039 2.00033 2.00033
-          2.00025 2.00025 2.00017 2.00017 2.00011 2.00011 2.00029 2.0004 2.00055 2.00062 2.00063 2.00061
-          2.00058 2.00054 2.00049 2.00044 2.00039 2.00033 2.00025 2.00017 2.00011 2.00029 2.00041 2.00055
-          2.00062 2.00063 2.00061 2.00058 2.00054 2.00049 2.00044 2.00039 2.00033 2.00025 2.00017 2.00011
-          2.00031 2.00041 2.00056 2.00062 2.00063 2.00061 2.00058 2.00054 2.00049 2.00044 2.00039 2.00033
-          2.00025 2.00017 2.00011 2.00033 2.00042 2.00056 2.00062 2.00063 2.00061 2.00058 2.00054 2.00049
-          2.00044 2.00039 2.00033 2.00026 2.00017 2.00011 2.00036 2.00044 2.00057 2.00062 2.00063 2.00061
-          2.00058 2.00054 2.00049 2.00044 2.00039 2.00033 2.00026 2.00017 2.00012 2.0004 2.00046 2.00058
-          2.00063 2.00063 2.00061 2.00058 2.00054 2.00049 2.00044 2.00039 2.00033 2.00026 2.00017 2.00012
-          2.00045 2.00049 2.00059 2.00063 2.00064 2.00061 2.00058 2.00054 2.00049 2.00044 2.00039 2.00033
-          2.00026 2.00018 2.00013 2.00051 2.00053 2.00061 2.00064 2.00064 2.00062 2.00058 2.00054 2.00049
-          2.00044 2.00039 2.00033 2.00026 2.00018 2.00014 2.00058 2.00059 2.00064 2.00066 2.00065 2.00062
-          2.00058 2.00054 2.0005 2.00044 2.00039 2.00033 2.00026 2.00019 2.00015 2.00068 2.00066 2.00068
-          2.00068 2.00066 2.00062 2.00059 2.00054 2.0005 2.00045 2.00039 2.00033 2.00027 2.0002 2.00017
-          2.00082 2.00076 2.00074 2.00071 2.00067 2.00063 2.00059 2.00055 2.0005 2.00045 2.0004 2.00034
-          2.00028 2.00022 2.0002 2.00104 2.0009 2.00081 2.00074 2.00069 2.00064 2.0006 2.00055 2.0005
-          2.00046 2.0004 2.00035 2.00029 2.00024 2.00022 2.00151 2.00113 2.00089 2.00077 2.0007 2.00065
-          2.0006 2.00056 2.00051 2.00046 2.00041 2.00036 2.00031 2.00027 2.00026 2.14495 2.14494 2.14495
-          2.14494 2.14494 2.14494 2.14494 2.14494 2.14494 2.14494 2.14494 2.14495 2.14495 2.14495 2.14495
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2
+        <DataArray type="Float32" Name="velocity_w (m/s)" NumberOfComponents="3" format="ascii">
+          8.67434e-09 -2.1172e-05 0 1.6596e-08 -2.11716e-05 0 8.04171e-09 -2.37478e-05 0 1.52964e-08 -2.37469e-05 0
+          3.07023e-08 -2.11705e-05 0 2.80863e-08 -2.3745e-05 0 4.12191e-08 -2.11694e-05 0 3.74271e-08 -2.3743e-05 0
+          4.83799e-08 -2.11686e-05 0 4.36927e-08 -2.37414e-05 0 5.29412e-08 -2.11679e-05 0 4.76527e-08 -2.37402e-05 0
+          5.56111e-08 -2.11674e-05 0 4.99643e-08 -2.37393e-05 0 5.68553e-08 -2.1167e-05 0 5.10459e-08 -2.37386e-05 0
+          5.68612e-08 -2.11667e-05 0 5.10683e-08 -2.37379e-05 0 5.55062e-08 -2.11662e-05 0 4.99368e-08 -2.3737e-05 0
+          5.22703e-08 -2.11656e-05 0 4.72115e-08 -2.37358e-05 0 4.61172e-08 -2.11645e-05 0 4.1967e-08 -2.37339e-05 0
+          3.56044e-08 -2.1163e-05 0 3.27747e-08 -2.37312e-05 0 1.97973e-08 -2.11614e-05 0 1.84498e-08 -2.37281e-05 0
+          1.05321e-08 -2.11606e-05 0 9.91406e-09 -2.37267e-05 0 8.69985e-09 -2.65433e-05 0 1.62922e-08 -2.65415e-05 0
+          2.93522e-08 -2.65377e-05 0 3.84193e-08 -2.65338e-05 0 4.42941e-08 -2.65309e-05 0 4.7944e-08 -2.65287e-05 0
+          5.00623e-08 -2.6527e-05 0 5.10628e-08 -2.65257e-05 0 5.11211e-08 -2.65244e-05 0 5.01758e-08 -2.65229e-05 0
+          4.78548e-08 -2.65208e-05 0 4.32735e-08 -2.65173e-05 0 3.47377e-08 -2.65121e-05 0 2.0171e-08 -2.6506e-05 0
+          1.11329e-08 -2.65029e-05 0 9.83066e-09 -2.67956e-05 0 1.79484e-08 -2.67926e-05 0 3.14356e-08 -2.67867e-05 0
+          4.01444e-08 -2.67812e-05 0 4.55396e-08 -2.6777e-05 0 4.88237e-08 -2.6774e-05 0 5.0717e-08 -2.67718e-05 0
+          5.1623e-08 -2.677e-05 0 5.17216e-08 -2.67683e-05 0 5.09918e-08 -2.67663e-05 0 4.91531e-08 -2.67634e-05 0
+          4.54223e-08 -2.67587e-05 0 3.78558e-08 -2.67513e-05 0 2.3013e-08 -2.67417e-05 0 1.32571e-08 -2.67362e-05 0
+          1.13871e-08 -2.68413e-05 0 2.00648e-08 -2.68368e-05 0 3.39011e-08 -2.68286e-05 0 4.20797e-08 -2.68215e-05 0
+          4.69124e-08 -2.68164e-05 0 4.97964e-08 -2.68128e-05 0 5.14484e-08 -2.68102e-05 0 5.22513e-08 -2.6808e-05 0
+          5.23858e-08 -2.6806e-05 0 5.18716e-08 -2.68036e-05 0 5.05329e-08 -2.68003e-05 0 4.77628e-08 -2.67948e-05 0
+          4.15416e-08 -2.67854e-05 0 2.67564e-08 -2.6772e-05 0 1.63345e-08 -2.67632e-05 0 1.33899e-08 -2.6862e-05 0
+          2.25539e-08 -2.68554e-05 0 3.65369e-08 -2.68449e-05 0 4.40241e-08 -2.68365e-05 0 4.826e-08 -2.68307e-05 0
+          5.07444e-08 -2.68266e-05 0 5.2159e-08 -2.68236e-05 0 5.28588e-08 -2.68212e-05 0 5.30211e-08 -2.6819e-05 0
+          5.27024e-08 -2.68164e-05 0 5.18313e-08 -2.68127e-05 0 5.00284e-08 -2.68067e-05 0 4.54621e-08 -2.6796e-05 0
+          3.13067e-08 -2.67785e-05 0 2.05067e-08 -2.67651e-05 0 1.58573e-08 -2.68722e-05 0 2.53367e-08 -2.6863e-05 0
+          3.91815e-08 -2.68501e-05 0 4.58599e-08 -2.68406e-05 0 4.95081e-08 -2.68342e-05 0 5.16159e-08 -2.68298e-05 0
+          5.28093e-08 -2.68266e-05 0 5.34114e-08 -2.6824e-05 0 5.35932e-08 -2.68217e-05 0 5.34415e-08 -2.68189e-05 0
+          5.2981e-08 -2.68151e-05 0 5.20732e-08 -2.68089e-05 0 4.93462e-08 -2.67971e-05 0 3.65566e-08 -2.67756e-05 0
+          2.58948e-08 -2.67561e-05 0 1.8781e-08 -2.6863e-05 0 2.83271e-08 -2.68506e-05 0 4.17084e-08 -2.68354e-05 0
+          4.75205e-08 -2.68252e-05 0 5.06205e-08 -2.68184e-05 0 5.23864e-08 -2.68137e-05 0 5.33807e-08 -2.68104e-05 0
+          5.38937e-08 -2.68077e-05 0 5.40876e-08 -2.68053e-05 0 5.40738e-08 -2.68025e-05 0 5.39601e-08 -2.67986e-05 0
+          5.38302e-08 -2.67923e-05 0 5.29774e-08 -2.67801e-05 0 4.23625e-08 -2.67549e-05 0 3.2538e-08 -2.67277e-05 0
+          2.21055e-08 -2.67795e-05 0 3.1421e-08 -2.67635e-05 0 4.40118e-08 -2.67464e-05 0 4.89603e-08 -2.67357e-05 0
+          5.1568e-08 -2.67287e-05 0 5.30311e-08 -2.67239e-05 0 5.38503e-08 -2.67205e-05 0 5.42838e-08 -2.67178e-05 0
+          5.44844e-08 -2.67154e-05 0 5.45816e-08 -2.67126e-05 0 5.4754e-08 -2.67088e-05 0 5.52706e-08 -2.67026e-05 0
+          5.61835e-08 -2.66904e-05 0 4.85283e-08 -2.66624e-05 0 4.03442e-08 -2.6626e-05 0 2.56945e-08 -2.64385e-05 0
+          3.44621e-08 -2.64188e-05 0 4.59604e-08 -2.64006e-05 0 5.00981e-08 -2.63898e-05 0 5.22741e-08 -2.63829e-05 0
+          5.34732e-08 -2.63783e-05 0 5.41407e-08 -2.6375e-05 0 5.45044e-08 -2.63725e-05 0 5.47074e-08 -2.63701e-05 0
+          5.48922e-08 -2.63676e-05 0 5.52958e-08 -2.6364e-05 0 5.63321e-08 -2.63581e-05 0 5.87807e-08 -2.63464e-05 0
+          5.47528e-08 -2.63171e-05 0 4.90171e-08 -2.62713e-05 0 2.92569e-08 -2.54278e-05 0 3.71628e-08 -2.54053e-05 0
+          4.73078e-08 -2.53874e-05 0 5.07229e-08 -2.53773e-05 0 5.25247e-08 -2.5371e-05 0 5.34958e-08 -2.53668e-05 0
+          5.40331e-08 -2.5364e-05 0 5.43361e-08 -2.53619e-05 0 5.45382e-08 -2.536e-05 0 5.47896e-08 -2.53579e-05 0
+          5.53727e-08 -2.53549e-05 0 5.68106e-08 -2.53497e-05 0 6.04591e-08 -2.53394e-05 0 6.0495e-08 -2.53111e-05 0
+          5.78976e-08 -2.52578e-05 0 3.22573e-08 -2.3155e-05 0 3.90298e-08 -2.31322e-05 0 4.7631e-08 -2.31165e-05 0
+          5.04352e-08 -2.31081e-05 0 5.19138e-08 -2.3103e-05 0 5.26906e-08 -2.30999e-05 0 5.31174e-08 -2.30979e-05 0
+          5.3368e-08 -2.30966e-05 0 5.35654e-08 -2.30955e-05 0 5.38628e-08 -2.30942e-05 0 5.45712e-08 -2.30922e-05 0
+          5.62941e-08 -2.30883e-05 0 6.07093e-08 -2.30801e-05 0 6.4831e-08 -2.30561e-05 0 6.57494e-08 -2.30008e-05 0
+          3.39801e-08 -1.92219e-05 0 3.94754e-08 -1.9202e-05 0 4.64862e-08 -1.91903e-05 0 4.88032e-08 -1.91843e-05 0
+          5.00061e-08 -1.9181e-05 0 5.06223e-08 -1.91792e-05 0 5.09583e-08 -1.91784e-05 0 5.11644e-08 -1.91781e-05 0
+          5.13529e-08 -1.91779e-05 0 5.1674e-08 -1.91776e-05 0 5.24471e-08 -1.91767e-05 0 5.43318e-08 -1.91744e-05 0
+          5.90283e-08 -1.91689e-05 0 6.66258e-08 -1.91516e-05 0 7.08559e-08 -1.91027e-05 0 3.39286e-08 -1.39071e-05 0
+          3.8225e-08 -1.38929e-05 0 4.38142e-08 -1.38856e-05 0 4.57625e-08 -1.38821e-05 0 4.67405e-08 -1.38804e-05 0
+          4.7232e-08 -1.38798e-05 0 4.74977e-08 -1.38799e-05 0 4.76679e-08 -1.38803e-05 0 4.78431e-08 -1.38808e-05 0
+          4.81662e-08 -1.38813e-05 0 4.89438e-08 -1.38813e-05 0 5.0865e-08 -1.38803e-05 0 5.54263e-08 -1.38772e-05 0
+          6.52605e-08 -1.38669e-05 0 7.18985e-08 -1.38316e-05 0 3.22495e-08 -8.14004e-06 0 3.56238e-08 -8.1321e-06 0
+          4.01308e-08 -8.12846e-06 0 4.18061e-08 -8.12682e-06 0 4.26145e-08 -8.1262e-06 0 4.30169e-08 -8.12621e-06 0
+          4.32325e-08 -8.12659e-06 0 4.33755e-08 -8.12717e-06 0 4.3535e-08 -8.12782e-06 0 4.38428e-08 -8.1284e-06 0
+          4.45796e-08 -8.12875e-06 0 4.64303e-08 -8.12857e-06 0 5.06231e-08 -8.12713e-06 0 6.12547e-08 -8.12216e-06 0
+          6.902e-08 -8.10236e-06 0 3.03252e-08 -2.64301e-06 0 3.28842e-08 -2.64054e-06 0 3.63952e-08 -2.63947e-06 0
+          3.77881e-08 -2.63901e-06 0 3.84435e-08 -2.63888e-06 0 3.87664e-08 -2.63895e-06 0 3.89378e-08 -2.63914e-06 0
+          3.90558e-08 -2.6394e-06 0 3.91981e-08 -2.63967e-06 0 3.94846e-08 -2.63992e-06 0 4.01699e-08 -2.6401e-06 0
+          4.19148e-08 -2.64011e-06 0 4.57808e-08 -2.63971e-06 0 5.69924e-08 -2.63827e-06 0 6.55968e-08 -2.63213e-06 0
+          7.35512e-15 -3.14128e-12 0 7.59597e-15 -3.14128e-12 0 7.9662e-15 -3.14128e-12 0 8.15799e-15 -3.14127e-12 0
+          8.24823e-15 -3.14127e-12 0 8.28881e-15 -3.14127e-12 0 8.30932e-15 -3.14127e-12 0 8.3263e-15 -3.14127e-12 0
+          8.35436e-15 -3.14127e-12 0 8.41917e-15 -3.14127e-12 0 8.57827e-15 -3.14128e-12 0 8.98986e-15 -3.14129e-12 0
+          9.93193e-15 -3.1413e-12 0 1.34436e-14 -3.14143e-12 0 1.63117e-14 -3.14388e-12 0 7.51046e-15 -6.27295e-12 0
+          7.7031e-15 -6.27294e-12 0 8.01333e-15 -6.27293e-12 0 8.18834e-15 -6.27292e-12 0 8.27075e-15 -6.27291e-12 0
+          8.30687e-15 -6.27291e-12 0 8.32488e-15 -6.27291e-12 0 8.34062e-15 -6.27291e-12 0 8.36838e-15 -6.27291e-12 0
+          8.43368e-15 -6.27292e-12 0 8.59549e-15 -6.27293e-12 0 9.00881e-15 -6.27296e-12 0 9.9966e-15 -6.27302e-12 0
+          1.34978e-14 -6.27341e-12 0 1.63091e-14 -6.27819e-12 0 7.51122e-15 -6.27298e-12 0 7.70419e-15 -6.27297e-12 0
+          8.01458e-15 -6.27295e-12 0 8.18914e-15 -6.27293e-12 0 8.27113e-15 -6.27292e-12 0 8.30702e-15 -6.27291e-12 0
+          8.32491e-15 -6.27291e-12 0 8.34053e-15 -6.27291e-12 0 8.36811e-15 -6.27292e-12 0 8.43286e-15 -6.27293e-12 0
+          8.59412e-15 -6.27295e-12 0 9.00046e-15 -6.273e-12 0 1.00092e-14 -6.27313e-12 0 1.32531e-14 -6.27379e-12 0
+          1.57794e-14 -6.27831e-12 0 7.51271e-15 -6.27302e-12 0 7.70634e-15 -6.273e-12 0 8.01701e-15 -6.27297e-12 0
+          8.1907e-15 -6.27294e-12 0 8.27186e-15 -6.27292e-12 0 8.3073e-15 -6.27292e-12 0 8.32494e-15 -6.27292e-12 0
+          8.34035e-15 -6.27292e-12 0 8.36755e-15 -6.27292e-12 0 8.43136e-15 -6.27293e-12 0 8.59071e-15 -6.27297e-12 0
+          8.98867e-15 -6.27305e-12 0 1.00049e-14 -6.27325e-12 0 1.2962e-14 -6.27419e-12 0 1.51867e-14 -6.27844e-12 0
+          7.51538e-15 -6.27307e-12 0 7.71014e-15 -6.27304e-12 0 8.02131e-15 -6.27299e-12 0 8.19343e-15 -6.27295e-12 0
+          8.27315e-15 -6.27293e-12 0 8.30778e-15 -6.27292e-12 0 8.325e-15 -6.27292e-12 0 8.34003e-15 -6.27292e-12 0
+          8.36656e-15 -6.27292e-12 0 8.42878e-15 -6.27294e-12 0 8.5843e-15 -6.27299e-12 0 8.97117e-15 -6.27311e-12 0
+          9.97556e-15 -6.2734e-12 0 1.26169e-14 -6.27461e-12 0 1.45293e-14 -6.27858e-12 0 7.5199e-15 -6.27313e-12 0
+          7.71656e-15 -6.27309e-12 0 8.02849e-15 -6.27302e-12 0 8.19796e-15 -6.27296e-12 0 8.27526e-15 -6.27293e-12 0
+          8.30857e-15 -6.27292e-12 0 8.32509e-15 -6.27292e-12 0 8.3395e-15 -6.27292e-12 0 8.36493e-15 -6.27293e-12 0
+          8.42458e-15 -6.27295e-12 0 8.57357e-15 -6.27302e-12 0 8.94442e-15 -6.27318e-12 0 9.91105e-15 -6.27357e-12 0
+          1.22098e-14 -6.27503e-12 0 1.38061e-14 -6.27871e-12 0 7.52739e-15 -6.2732e-12 0 7.72706e-15 -6.27315e-12 0
+          8.04008e-15 -6.27305e-12 0 8.20516e-15 -6.27298e-12 0 8.27858e-15 -6.27294e-12 0 8.30982e-15 -6.27292e-12 0
+          8.32524e-15 -6.27292e-12 0 8.33868e-15 -6.27292e-12 0 8.36237e-15 -6.27293e-12 0 8.418e-15 -6.27297e-12 0
+          8.55669e-15 -6.27305e-12 0 8.9033e-15 -6.27325e-12 0 9.79936e-15 -6.27377e-12 0 1.17322e-14 -6.27544e-12 0
+          1.30164e-14 -6.27885e-12 0 7.53973e-15 -6.27329e-12 0 7.74407e-15 -6.27322e-12 0 8.05846e-15 -6.27309e-12 0
+          8.21633e-15 -6.273e-12 0 8.28367e-15 -6.27295e-12 0 8.31171e-15 -6.27293e-12 0 8.32547e-15 -6.27292e-12 0
+          8.33743e-15 -6.27292e-12 0 8.35851e-15 -6.27294e-12 0 8.40801e-15 -6.27298e-12 0 8.53125e-15 -6.27308e-12 0
+          8.8409e-15 -6.27333e-12 0 9.62699e-15 -6.27398e-12 0 1.11747e-14 -6.27583e-12 0 1.21578e-14 -6.27897e-12 0
+          7.56031e-15 -6.2734e-12 0 7.77167e-15 -6.27331e-12 0 8.08732e-15 -6.27314e-12 0 8.23325e-15 -6.27302e-12 0
+          8.29119e-15 -6.27296e-12 0 8.31449e-15 -6.27293e-12 0 8.3258e-15 -6.27292e-12 0 8.33561e-15 -6.27293e-12 0
+          8.35287e-15 -6.27294e-12 0 8.39339e-15 -6.27299e-12 0 8.49419e-15 -6.27311e-12 0 8.74874e-15 -6.27342e-12 0
+          9.37971e-15 -6.27419e-12 0 1.0526e-14 -6.27618e-12 0 1.12239e-14 -6.27907e-12 0 7.59583e-15 -6.27356e-12 0
+          7.81733e-15 -6.27342e-12 0 8.13255e-15 -6.27319e-12 0 8.2583e-15 -6.27303e-12 0 8.30194e-15 -6.27296e-12 0
+          8.31843e-15 -6.27293e-12 0 8.32628e-15 -6.27293e-12 0 8.33305e-15 -6.27293e-12 0 8.34493e-15 -6.27295e-12 0
+          8.37279e-15 -6.273e-12 0 8.4421e-15 -6.27314e-12 0 8.61783e-15 -6.27349e-12 0 9.04384e-15 -6.27437e-12 0
+          9.77165e-15 -6.27646e-12 0 1.01997e-14 -6.27916e-12 0 7.66124e-15 -6.27377e-12 0 7.89577e-15 -6.27356e-12 0
+          8.20364e-15 -6.27324e-12 0 8.29426e-15 -6.27305e-12 0 8.31663e-15 -6.27297e-12 0 8.32375e-15 -6.27294e-12 0
+          8.32694e-15 -6.27293e-12 0 8.32962e-15 -6.27293e-12 0 8.33429e-15 -6.27295e-12 0 8.3452e-15 -6.27301e-12 0
+          8.37231e-15 -6.27316e-12 0 8.44136e-15 -6.27354e-12 0 8.60848e-15 -6.27449e-12 0 8.88919e-15 -6.27662e-12 0
+          9.05246e-15 -6.27921e-12 0 7.79587e-15 -6.2741e-12 0 8.03975e-15 -6.27373e-12 0 8.3155e-15 -6.27327e-12 0
+          8.34299e-15 -6.27305e-12 0 8.33534e-15 -6.27297e-12 0 8.33044e-15 -6.27294e-12 0 8.32776e-15 -6.27293e-12 0
+          8.32534e-15 -6.27293e-12 0 8.32101e-15 -6.27295e-12 0 8.31076e-15 -6.27301e-12 0 8.28521e-15 -6.27316e-12 0
+          8.22054e-15 -6.27354e-12 0 8.07106e-15 -6.27449e-12 0 7.84087e-15 -6.27662e-12 0 7.71376e-15 -6.27921e-12 0
+          8.12976e-15 -6.27472e-12 0 8.3349e-15 -6.27393e-12 0 8.48625e-15 -6.27326e-12 0 8.40099e-15 -6.27303e-12 0
+          8.35662e-15 -6.27296e-12 0 8.33796e-15 -6.27293e-12 0 8.32868e-15 -6.27292e-12 0 8.32059e-15 -6.27293e-12 0
+          8.30627e-15 -6.27295e-12 0 8.27251e-15 -6.273e-12 0 8.18844e-15 -6.27312e-12 0 7.97586e-15 -6.27345e-12 0
+          7.45528e-15 -6.27427e-12 0 6.55891e-15 -6.27631e-12 0 6.03065e-15 -6.27912e-12 0 9.25955e-15 -6.27602e-12 0
+          9.06304e-15 -6.27362e-12 0 8.68715e-15 -6.27286e-12 0 8.45305e-15 -6.27272e-12 0 8.37616e-15 -6.27267e-12 0
+          8.34461e-15 -6.27265e-12 0 8.32949e-15 -6.27265e-12 0 8.31639e-15 -6.27265e-12 0 8.29325e-15 -6.27266e-12 0
+          8.23877e-15 -6.27269e-12 0 8.10275e-15 -6.27277e-12 0 7.762e-15 -6.27296e-12 0 6.88231e-15 -6.27345e-12 0
+          4.92631e-15 -6.27501e-12 0 3.60657e-15 -6.27879e-12 0 1.16641e-14 -6.27691e-12 0 1.02887e-14 -6.27323e-12 0
+          8.73224e-15 -6.27248e-12 0 8.48044e-15 -6.27241e-12 0 8.38378e-15 -6.27238e-12 0 8.34685e-15 -6.27238e-12 0
+          8.32911e-15 -6.27237e-12 0 8.31381e-15 -6.27237e-12 0 8.28679e-15 -6.27238e-12 0 8.22318e-15 -6.2724e-12 0
+          8.06468e-15 -6.27244e-12 0 7.66374e-15 -6.27255e-12 0 6.66777e-15 -6.27281e-12 0 3.3973e-15 -6.27397e-12 0
+          8.35171e-16 -6.27855e-12 0
         </DataArray>
-        <DataArray type="Float32" Name="nusseltNumber_n" NumberOfComponents="1" format="ascii">
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          2 2 2 2 2 2 2 2 2 2.00153 2 2
-          2 2 2 2 2 2 2 2 2 2 2 2
-          28.6889 26.0717 21.5194 18.8813 17.4373 16.3979 15.415 14.4107 13.4034 12.4393 11.5679 10.8351
-          10.2867 9.9707 9.86526 36.1844 32.657 25.6383 19.6718 15.0906 11.6723 9.14461 7.28553 5.92747
-          4.94613 4.24441 3.75584 3.44586 3.30262 3.27258 37.0709 33.2241 25.8208 19.7406 15.125 11.6988
-          9.16899 7.30682 5.94223 4.94971 4.23378 3.72467 3.37826 3.17594 3.12228 38.196 33.9376 26.043
-          19.7998 15.1485 11.7142 9.18159 7.31594 5.94622 4.94713 4.22231 3.69677 3.31772 3.06803 2.99565
-          39.5154 34.7021 26.2474 19.843 15.1619 11.7215 9.18672 7.31864 5.94598 4.94366 4.2132 3.67467
-          3.26837 2.97479 2.8827 41.0025 35.4479 26.4073 19.8701 15.1681 11.7235 9.18759 7.31816 5.94418
-          4.94057 4.20644 3.65801 3.22989 2.89425 2.77826 42.6422 36.1252 26.5158 19.8849 15.1697 11.7226
-          9.18628 7.31627 5.94197 4.93805 4.20153 3.64585 3.20103 2.82653 2.68093 44.4178 36.7024 26.5782
-          19.892 15.1687 11.7202 9.18406 7.31394 5.93982 4.93608 4.198 3.63722 3.18025 2.77194 2.5902
-          46.3019 37.1652 26.6054 19.8951 15.1662 11.7174 9.18159 7.31162 5.93792 4.93453 4.19548 3.63127
-          3.16585 2.73013 2.50553 48.2542 37.5139 26.6094 19.8963 15.1631 11.7146 9.17922 7.30954 5.93632
-          4.93332 4.1937 3.62728 3.15626 2.69993 2.42617 50.2251 37.7594 26.6006 19.8967 15.1597 11.7121
-          9.1771 7.30775 5.93498 4.93236 4.19244 3.62468 3.15014 2.67949 2.35109 52.1637 37.9185 26.5867
-          19.8965 15.1566 11.7099 9.17526 7.30623 5.93384 4.93157 4.19155 3.62304 3.14642 2.66667 2.27884
-          54.0244 38.0102 26.5725 19.8958 15.1537 11.708 9.17361 7.30484 5.93281 4.9309 4.19094 3.62206
-          3.14433 2.65942 2.20713 55.7715 38.0527 26.5606 19.8945 15.151 11.706 9.1718 7.30333 5.9318
-          4.93035 4.19053 3.62152 3.1433 2.65597 2.13107 56.6183 38.0691 26.5559 19.8935 15.1487 11.7038
-          9.1698 7.30212 5.93142 4.93032 4.1905 3.62142 3.14308 2.65522 2.08394
+        <DataArray type="Float32" Name="velocity_n (m/s)" NumberOfComponents="3" format="ascii">
+          8.57643e-09 2.10005e-05 0 1.64083e-08 2.1001e-05 0 1.30484e-08 2.34834e-05 0 2.4819e-08 2.34847e-05 0
+          3.0354e-08 2.10022e-05 0 4.5569e-08 2.34876e-05 0 4.07501e-08 2.10035e-05 0 6.07216e-08 2.34907e-05 0
+          4.78284e-08 2.10046e-05 0 7.08847e-08 2.34932e-05 0 5.23371e-08 2.10055e-05 0 7.7308e-08 2.34951e-05 0
+          5.49766e-08 2.10061e-05 0 8.10579e-08 2.34965e-05 0 5.62071e-08 2.10067e-05 0 8.2813e-08 2.34977e-05 0
+          5.62137e-08 2.10072e-05 0 8.28506e-08 2.34989e-05 0 5.48755e-08 2.10079e-05 0 8.10169e-08 2.35002e-05 0
+          5.16782e-08 2.10087e-05 0 7.65986e-08 2.35021e-05 0 4.55973e-08 2.101e-05 0 6.8094e-08 2.35051e-05 0
+          3.52054e-08 2.10118e-05 0 5.31832e-08 2.35092e-05 0 1.95768e-08 2.10136e-05 0 2.99406e-08 2.35138e-05 0
+          1.04152e-08 2.10145e-05 0 1.60895e-08 2.3516e-05 0 1.46418e-08 2.61243e-05 0 2.74193e-08 2.61273e-05 0
+          4.93984e-08 2.61337e-05 0 6.46574e-08 2.61401e-05 0 7.45439e-08 2.61451e-05 0 8.06866e-08 2.61489e-05 0
+          8.42522e-08 2.61517e-05 0 8.59367e-08 2.6154e-05 0 8.6036e-08 2.61562e-05 0 8.44465e-08 2.61588e-05 0
+          8.05421e-08 2.61625e-05 0 7.28337e-08 2.61683e-05 0 5.84691e-08 2.61771e-05 0 3.3952e-08 2.61872e-05 0
+          1.87394e-08 2.61925e-05 0 1.66109e-08 2.62745e-05 0 3.03276e-08 2.62795e-05 0 5.3117e-08 2.62895e-05 0
+          6.78327e-08 2.62989e-05 0 7.69496e-08 2.6306e-05 0 8.24997e-08 2.63112e-05 0 8.57e-08 2.6315e-05 0
+          8.72319e-08 2.63182e-05 0 8.73995e-08 2.63212e-05 0 8.61675e-08 2.63247e-05 0 8.30616e-08 2.63296e-05 0
+          7.67582e-08 2.63376e-05 0 6.39726e-08 2.63502e-05 0 3.88901e-08 2.63664e-05 0 2.24036e-08 2.63757e-05 0
+          1.92704e-08 2.62548e-05 0 3.39558e-08 2.62625e-05 0 5.73715e-08 2.62764e-05 0 7.12129e-08 2.62884e-05 0
+          7.93922e-08 2.62971e-05 0 8.4274e-08 2.63034e-05 0 8.70709e-08 2.6308e-05 0 8.84308e-08 2.63117e-05 0
+          8.86595e-08 2.63152e-05 0 8.77904e-08 2.63193e-05 0 8.55258e-08 2.63251e-05 0 8.08383e-08 2.63345e-05 0
+          7.03098e-08 2.63504e-05 0 4.52859e-08 2.63732e-05 0 2.76466e-08 2.63881e-05 0 2.2686e-08 2.62359e-05 0
+          3.82125e-08 2.62471e-05 0 6.19039e-08 2.6265e-05 0 7.459e-08 2.62793e-05 0 8.17678e-08 2.62893e-05 0
+          8.59781e-08 2.62963e-05 0 8.8376e-08 2.63015e-05 0 8.95629e-08 2.63057e-05 0 8.9839e-08 2.63096e-05 0
+          8.93001e-08 2.63141e-05 0 8.78253e-08 2.63203e-05 0 8.47715e-08 2.63306e-05 0 7.70349e-08 2.6349e-05 0
+          5.30492e-08 2.63787e-05 0 3.47487e-08 2.64014e-05 0 2.68937e-08 2.62237e-05 0 4.29706e-08 2.62393e-05 0
+          6.64513e-08 2.62613e-05 0 7.77783e-08 2.62775e-05 0 8.39663e-08 2.62884e-05 0 8.75421e-08 2.6296e-05 0
+          8.95672e-08 2.63016e-05 0 9.05896e-08 2.6306e-05 0 9.08991e-08 2.63102e-05 0 9.06431e-08 2.63149e-05 0
+          8.98631e-08 2.63215e-05 0 8.83248e-08 2.63322e-05 0 8.3701e-08 2.63523e-05 0 6.20082e-08 2.63888e-05 0
+          4.39238e-08 2.6422e-05 0 3.18932e-08 2.62028e-05 0 4.81022e-08 2.62239e-05 0 7.08224e-08 2.62498e-05 0
+          8.06898e-08 2.62675e-05 0 8.59531e-08 2.62791e-05 0 8.89521e-08 2.62872e-05 0 9.06412e-08 2.6293e-05 0
+          9.15133e-08 2.62977e-05 0 9.18438e-08 2.6302e-05 0 9.18216e-08 2.63069e-05 0 9.16302e-08 2.63135e-05 0
+          9.14125e-08 2.63245e-05 0 8.99696e-08 2.63454e-05 0 7.19479e-08 2.63884e-05 0 5.52651e-08 2.64348e-05 0
+          3.76704e-08 2.61138e-05 0 5.35334e-08 2.61415e-05 0 7.49667e-08 2.61711e-05 0 8.33828e-08 2.61899e-05 0
+          8.78181e-08 2.62022e-05 0 9.03075e-08 2.62106e-05 0 9.17019e-08 2.62167e-05 0 9.24404e-08 2.62216e-05 0
+          9.27829e-08 2.6226e-05 0 9.29502e-08 2.6231e-05 0 9.32471e-08 2.62378e-05 0 9.41354e-08 2.62487e-05 0
+          9.57139e-08 2.62701e-05 0 8.27024e-08 2.63187e-05 0 6.87727e-08 2.63815e-05 0 4.4358e-08 2.57701e-05 0
+          5.94395e-08 2.58057e-05 0 7.91887e-08 2.5839e-05 0 8.62629e-08 2.5859e-05 0 8.99857e-08 2.5872e-05 0
+          9.20382e-08 2.58808e-05 0 9.31811e-08 2.58873e-05 0 9.38045e-08 2.58924e-05 0 9.41541e-08 2.58971e-05 0
+          9.44751e-08 2.59023e-05 0 9.5178e-08 2.59092e-05 0 9.69878e-08 2.59203e-05 0 1.01295e-07 2.59418e-05 0
+          9.4493e-08 2.59956e-05 0 8.4679e-08 2.60784e-05 0 5.26591e-08 2.47568e-05 0 6.66873e-08 2.48025e-05 0
+          8.45968e-08 2.484e-05 0 9.05288e-08 2.48615e-05 0 9.36716e-08 2.48755e-05 0 9.53661e-08 2.48851e-05 0
+          9.6303e-08 2.48921e-05 0 9.68324e-08 2.48977e-05 0 9.71898e-08 2.49029e-05 0 9.76436e-08 2.49086e-05 0
+          9.8703e-08 2.49159e-05 0 1.01333e-07 2.49274e-05 0 1.08122e-07 2.49495e-05 0 1.08714e-07 2.50087e-05 0
+          1.04376e-07 2.51168e-05 0 6.44816e-08 2.24792e-05 0 7.74005e-08 2.25382e-05 0 9.35897e-08 2.25811e-05 0
+          9.86518e-08 2.26049e-05 0 1.01366e-07 2.26204e-05 0 1.02787e-07 2.26312e-05 0 1.03565e-07 2.26392e-05 0
+          1.04025e-07 2.26457e-05 0 1.044e-07 2.26517e-05 0 1.0499e-07 2.26582e-05 0 1.06416e-07 2.26663e-05 0
+          1.09916e-07 2.26787e-05 0 1.19232e-07 2.27019e-05 0 1.28989e-07 2.27676e-05 0 1.31899e-07 2.29094e-05 0
+          8.32219e-08 1.85369e-05 0 9.50416e-08 1.86137e-05 0 1.09735e-07 1.86629e-05 0 1.14246e-07 1.86896e-05 0
+          1.1669e-07 1.87071e-05 0 1.17921e-07 1.87193e-05 0 1.18585e-07 1.87285e-05 0 1.19e-07 1.87361e-05 0
+          1.19415e-07 1.8743e-05 0 1.2018e-07 1.87504e-05 0 1.22069e-07 1.87596e-05 0 1.26713e-07 1.87732e-05 0
+          1.3907e-07 1.87978e-05 0 1.61448e-07 1.88705e-05 0 1.74752e-07 1.90575e-05 0 1.12754e-07 1.3208e-05 0
+          1.23229e-07 1.33065e-05 0 1.36429e-07 1.33619e-05 0 1.40728e-07 1.33913e-05 0 1.43039e-07 1.34107e-05 0
+          1.44147e-07 1.34242e-05 0 1.4473e-07 1.34343e-05 0 1.45126e-07 1.34426e-05 0 1.45615e-07 1.34503e-05 0
+          1.4663e-07 1.34583e-05 0 1.49165e-07 1.34682e-05 0 1.55473e-07 1.34828e-05 0 1.71774e-07 1.35086e-05 0
+          2.12718e-07 1.35867e-05 0 2.41846e-07 1.38299e-05 0 1.55156e-07 7.42265e-06 0 1.63607e-07 7.54532e-06 0
+          1.74911e-07 7.60551e-06 0 1.79336e-07 7.63699e-06 0 1.81606e-07 7.65756e-06 0 1.82637e-07 7.67175e-06 0
+          1.83161e-07 7.68222e-06 0 1.83558e-07 7.69069e-06 0 1.84157e-07 7.69842e-06 0 1.85518e-07 7.70659e-06 0
+          1.88921e-07 7.71664e-06 0 1.97558e-07 7.73149e-06 0 2.18755e-07 7.75791e-06 0 2.86023e-07 7.8378e-06 0
+          3.38292e-07 8.14379e-06 0 2.08222e-07 1.91128e-06 0 2.142e-07 2.05829e-06 0 2.23455e-07 2.12103e-06 0
+          2.28359e-07 2.15356e-06 0 2.30687e-07 2.17452e-06 0 2.31696e-07 2.18868e-06 0 2.32187e-07 2.19888e-06 0
+          2.32606e-07 2.20694e-06 0 2.33352e-07 2.21421e-06 0 2.35141e-07 2.22189e-06 0 2.39594e-07 2.23148e-06 0
+          2.5114e-07 2.24585e-06 0 2.77959e-07 2.27194e-06 0 3.77937e-07 2.34909e-06 0 4.59467e-07 2.72031e-06 0
+          0.673286 -0.00110437 0 0.690602 -0.000927054 0 0.71849 -0.00056632 0 0.734236 -0.000277657 0
+          0.741673 -0.000121716 0 0.744946 -5.48684e-05 0 0.746588 -3.4269e-05 0 0.748022 -4.36297e-05 0
+          0.750534 -9.16965e-05 0 0.75643 -0.000224443 0 0.770933 -0.000551581 0 0.808495 -0.00145651 0
+          0.8949 -0.00316354 0 1.22619 -0.0145358 0 1.49834 -0.233941 0 0.673362 -0.00353522 0
+          0.690639 -0.00296203 0 0.71847 -0.00180945 0 0.734182 -0.000886212 0 0.741592 -0.000388 0
+          0.744854 -0.000174599 0 0.746491 -0.000108949 0 0.747925 -0.000138959 0 0.750435 -0.000292806 0
+          0.75631 -0.000716268 0 0.770836 -0.00176744 0 0.80791 -0.00462566 0 0.89649 -0.0102989 0
+          1.21041 -0.045201 0 1.46246 -0.4732 0 0.673425 -0.0064597 0 0.690727 -0.00540207 0
+          0.718558 -0.00329699 0 0.734213 -0.00161209 0 0.74157 -0.000704714 0 0.744796 -0.000316629 0
+          0.746409 -0.000197526 0 0.747821 -0.0002524 0 0.750305 -0.000532976 0 0.756122 -0.00130186 0
+          0.770591 -0.00322832 0 0.807031 -0.00834638 0 0.897473 -0.0192268 0 1.18831 -0.0787159 0
+          1.4148 -0.48421 0 0.673559 -0.0099861 0 0.690918 -0.00833675 0 0.718772 -0.00507609 0
+          0.734345 -0.00247518 0 0.741623 -0.00107923 0 0.744801 -0.000483448 0 0.746385 -0.000300952 0
+          0.747769 -0.000385421 0 0.750211 -0.000816712 0 0.755934 -0.0019944 0 0.770225 -0.00496882 0
+          0.805907 -0.0127032 0 0.897017 -0.0302474 0 1.16213 -0.114464 0 1.36159 -0.49587 0
+          0.673798 -0.0142569 0 0.69126 -0.0118752 0 0.719157 -0.007201 0 0.734589 -0.00349683 0
+          0.741736 -0.00151992 0 0.744841 -0.000678859 0 0.746385 -0.000421587 0 0.747733 -0.000540747 0
+          0.750112 -0.00114924 0 0.755691 -0.00280715 0 0.769635 -0.00701855 0 0.804321 -0.0177874 0
+          0.89437 -0.0435507 0 1.13118 -0.151757 0 1.30263 -0.507932 0 0.674203 -0.0194632 0
+          0.691835 -0.0161555 0 0.719801 -0.00973064 0 0.734995 -0.00469515 0 0.741925 -0.00203248 0
+          0.744912 -0.000905359 0 0.746393 -0.000561156 0 0.747685 -0.00072044 0 0.749965 -0.00153416 0
+          0.755313 -0.0037489 0 0.76867 -0.00939348 0 0.801919 -0.0236684 0 0.888584 -0.0591535 0
+          1.09468 -0.189634 0 1.2378 -0.520066 0 0.674875 -0.0258735 0 0.692776 -0.0213583 0
+          0.72084 -0.0127248 0 0.735641 -0.00607902 0 0.742223 -0.00261645 0 0.745024 -0.00116224 0
+          0.746406 -0.0007192 0 0.747611 -0.000923871 0 0.749735 -0.00196982 0 0.754723 -0.00481591 0
+          0.767158 -0.012079 0 0.798232 -0.0303468 0 0.87857 -0.076776 0 1.05186 -0.226856 0
+          1.167 -0.531864 0 0.675981 -0.0338883 0 0.694301 -0.027726 0 0.722488 -0.0162328 0
+          0.736642 -0.00763589 0 0.742679 -0.00325933 0 0.745194 -0.00144303 0 0.746427 -0.000891571 0
+          0.747499 -0.00114564 0 0.749389 -0.00244466 0 0.753827 -0.00597992 0 0.764877 -0.0150017 0
+          0.792638 -0.0376699 0 0.863116 -0.0956876 0 1.00188 -0.261895 0 1.09002 -0.542843 0
+          0.677826 -0.044149 0 0.696776 -0.0355945 0 0.725076 -0.0202645 0 0.738159 -0.00930781 0
+          0.743353 -0.00392599 0 0.745443 -0.00173103 0 0.746457 -0.00106771 0 0.747336 -0.00137207 0
+          0.748883 -0.00292949 0 0.752516 -0.00716901 0 0.761553 -0.0179827 0 0.784376 -0.0451985 0
+          0.840946 -0.114518 0 0.943722 -0.292908 0 1.00629 -0.552448 0 0.68101 -0.0577802 0
+          0.700869 -0.0454353 0 0.729131 -0.0247168 0 0.740405 -0.0109459 0 0.744318 -0.00454186 0
+          0.745796 -0.00199235 0 0.7465 -0.00122645 0 0.747106 -0.00157583 0 0.748172 -0.00336592 0
+          0.75067 -0.00823958 0 0.756884 -0.020666 0 0.772639 -0.0520184 0 0.810833 -0.131013 0
+          0.876086 -0.317589 0 0.914459 -0.560011 0 0.686875 -0.0769974 0 0.707902 -0.057884 0
+          0.735504 -0.0291805 0 0.743628 -0.0122295 0 0.745635 -0.00497004 0 0.746273 -0.00216692 0
+          0.746558 -0.00133062 0 0.746799 -0.00170913 0 0.747218 -0.0036517 0 0.748196 -0.008941 0
+          0.750627 -0.0224257 0 0.756817 -0.0565147 0 0.7718 -0.14168 0 0.796968 -0.332681 0
+          0.811606 -0.564604 0 0.698945 -0.106911 0 0.72081 -0.0735307 0 0.745533 -0.0324212 0
+          0.747998 -0.0125507 0 0.747312 -0.00499061 0 0.746873 -0.00216015 0 0.746632 -0.00132263 0
+          0.746415 -0.0016981 0 0.746027 -0.00362878 0 0.745108 -0.0088863 0 0.742817 -0.0222921 0
+          0.73702 -0.056192 0 0.723618 -0.141161 0 0.70298 -0.33255 0 0.691584 -0.564586 0
+          0.728881 -0.162305 0 0.747272 -0.0908564 0 0.760842 -0.0310901 0 0.753198 -0.0110014 0
+          0.74922 -0.00430341 0 0.747547 -0.00184572 0 0.746714 -0.0011272 0 0.74599 -0.00144633 0
+          0.744706 -0.00309113 0 0.741679 -0.00757012 0 0.734141 -0.0189989 0 0.715083 -0.0478398 0
+          0.668409 -0.121289 0 0.588045 -0.304674 0 0.540683 -0.556112 0 0.830173 -0.303294 0
+          0.812554 -0.0882198 0 0.778854 -0.0194005 0 0.757865 -0.00679591 0 0.750971 -0.0025954 0
+          0.748143 -0.00110717 0 0.746787 -0.000674559 0 0.745613 -0.00086513 0 0.743538 -0.00184905 0
+          0.738654 -0.00452881 0 0.726459 -0.0113652 0 0.695908 -0.0286572 0 0.617039 -0.0724534 0
+          0.441672 -0.212451 0 0.32335 -0.52716 0 1.04585 -0.407425 0 0.92252 -0.076938 0
+          0.782964 -0.0101271 0 0.760387 -0.00396166 0 0.75172 -0.00144977 0 0.748409 -0.000620135 0
+          0.746818 -0.00037674 0 0.745446 -0.000483112 0 0.743024 -0.0010325 0 0.73732 -0.00252976 0
+          0.723108 -0.00634023 0 0.687159 -0.01609 0 0.597856 -0.0396226 0 0.304614 -0.143312 0
+          0.0748844 -0.505249 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 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          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.0714286 0 0 0 0.00347053 0 0.0714286 0.00347053 0
-          0.142857 0 0 0.142857 0.00347053 0 0.214286 0 0 0.214286 0.00347053 0
-          0.285714 0 0 0.285714 0.00347053 0 0.357143 0 0 0.357143 0.00347053 0
-          0.428571 0 0 0.428571 0.00347053 0 0.5 0 0 0.5 0.00347053 0
-          0.571429 0 0 0.571429 0.00347053 0 0.642857 0 0 0.642857 0.00347053 0
-          0.714286 0 0 0.714286 0.00347053 0 0.785714 0 0 0.785714 0.00347053 0
-          0.857143 0 0 0.857143 0.00347053 0 0.928571 0 0 0.928571 0.00347053 0
-          1 0 0 1 0.00347053 0 0 0.00763517 0 0.0714286 0.00763517 0
-          0.142857 0.00763517 0 0.214286 0.00763517 0 0.285714 0.00763517 0 0.357143 0.00763517 0
-          0.428571 0.00763517 0 0.5 0.00763517 0 0.571429 0.00763517 0 0.642857 0.00763517 0
-          0.714286 0.00763517 0 0.785714 0.00763517 0 0.857143 0.00763517 0 0.928571 0.00763517 0
-          1 0.00763517 0 0 0.0126327 0 0.0714286 0.0126327 0 0.142857 0.0126327 0
-          0.214286 0.0126327 0 0.285714 0.0126327 0 0.357143 0.0126327 0 0.428571 0.0126327 0
-          0.5 0.0126327 0 0.571429 0.0126327 0 0.642857 0.0126327 0 0.714286 0.0126327 0
-          0.785714 0.0126327 0 0.857143 0.0126327 0 0.928571 0.0126327 0 1 0.0126327 0
-          0 0.0186298 0 0.0714286 0.0186298 0 0.142857 0.0186298 0 0.214286 0.0186298 0
-          0.285714 0.0186298 0 0.357143 0.0186298 0 0.428571 0.0186298 0 0.5 0.0186298 0
-          0.571429 0.0186298 0 0.642857 0.0186298 0 0.714286 0.0186298 0 0.785714 0.0186298 0
-          0.857143 0.0186298 0 0.928571 0.0186298 0 1 0.0186298 0 0 0.0258263 0
-          0.0714286 0.0258263 0 0.142857 0.0258263 0 0.214286 0.0258263 0 0.285714 0.0258263 0
-          0.357143 0.0258263 0 0.428571 0.0258263 0 0.5 0.0258263 0 0.571429 0.0258263 0
-          0.642857 0.0258263 0 0.714286 0.0258263 0 0.785714 0.0258263 0 0.857143 0.0258263 0
-          0.928571 0.0258263 0 1 0.0258263 0 0 0.0344621 0 0.0714286 0.0344621 0
-          0.142857 0.0344621 0 0.214286 0.0344621 0 0.285714 0.0344621 0 0.357143 0.0344621 0
-          0.428571 0.0344621 0 0.5 0.0344621 0 0.571429 0.0344621 0 0.642857 0.0344621 0
-          0.714286 0.0344621 0 0.785714 0.0344621 0 0.857143 0.0344621 0 0.928571 0.0344621 0
-          1 0.0344621 0 0 0.044825 0 0.0714286 0.044825 0 0.142857 0.044825 0
-          0.214286 0.044825 0 0.285714 0.044825 0 0.357143 0.044825 0 0.428571 0.044825 0
-          0.5 0.044825 0 0.571429 0.044825 0 0.642857 0.044825 0 0.714286 0.044825 0
-          0.785714 0.044825 0 0.857143 0.044825 0 0.928571 0.044825 0 1 0.044825 0
-          0 0.0572606 0 0.0714286 0.0572606 0 0.142857 0.0572606 0 0.214286 0.0572606 0
-          0.285714 0.0572606 0 0.357143 0.0572606 0 0.428571 0.0572606 0 0.5 0.0572606 0
-          0.571429 0.0572606 0 0.642857 0.0572606 0 0.714286 0.0572606 0 0.785714 0.0572606 0
-          0.857143 0.0572606 0 0.928571 0.0572606 0 1 0.0572606 0 0 0.0721832 0
-          0.0714286 0.0721832 0 0.142857 0.0721832 0 0.214286 0.0721832 0 0.285714 0.0721832 0
-          0.357143 0.0721832 0 0.428571 0.0721832 0 0.5 0.0721832 0 0.571429 0.0721832 0
-          0.642857 0.0721832 0 0.714286 0.0721832 0 0.785714 0.0721832 0 0.857143 0.0721832 0
-          0.928571 0.0721832 0 1 0.0721832 0 0 0.0900904 0 0.0714286 0.0900904 0
-          0.142857 0.0900904 0 0.214286 0.0900904 0 0.285714 0.0900904 0 0.357143 0.0900904 0
-          0.428571 0.0900904 0 0.5 0.0900904 0 0.571429 0.0900904 0 0.642857 0.0900904 0
-          0.714286 0.0900904 0 0.785714 0.0900904 0 0.857143 0.0900904 0 0.928571 0.0900904 0
-          1 0.0900904 0 0 0.111579 0 0.0714286 0.111579 0 0.142857 0.111579 0
-          0.214286 0.111579 0 0.285714 0.111579 0 0.357143 0.111579 0 0.428571 0.111579 0
-          0.5 0.111579 0 0.571429 0.111579 0 0.642857 0.111579 0 0.714286 0.111579 0
-          0.785714 0.111579 0 0.857143 0.111579 0 0.928571 0.111579 0 1 0.111579 0
-          0 0.137365 0 0.0714286 0.137365 0 0.142857 0.137365 0 0.214286 0.137365 0
-          0.285714 0.137365 0 0.357143 0.137365 0 0.428571 0.137365 0 0.5 0.137365 0
-          0.571429 0.137365 0 0.642857 0.137365 0 0.714286 0.137365 0 0.785714 0.137365 0
-          0.857143 0.137365 0 0.928571 0.137365 0 1 0.137365 0 0 0.168309 0
-          0.0714286 0.168309 0 0.142857 0.168309 0 0.214286 0.168309 0 0.285714 0.168309 0
-          0.357143 0.168309 0 0.428571 0.168309 0 0.5 0.168309 0 0.571429 0.168309 0
-          0.642857 0.168309 0 0.714286 0.168309 0 0.785714 0.168309 0 0.857143 0.168309 0
-          0.928571 0.168309 0 1 0.168309 0 0 0.205441 0 0.0714286 0.205441 0
-          0.142857 0.205441 0 0.214286 0.205441 0 0.285714 0.205441 0 0.357143 0.205441 0
-          0.428571 0.205441 0 0.5 0.205441 0 0.571429 0.205441 0 0.642857 0.205441 0
-          0.714286 0.205441 0 0.785714 0.205441 0 0.857143 0.205441 0 0.928571 0.205441 0
-          1 0.205441 0 0 0.25 0 0.0714286 0.25 0 0.142857 0.25 0
+          0 0 0 0.0714286 0 0 0 0.0445588 0 0.0714286 0.0445588 0
+          0.142857 0 0 0.142857 0.0445588 0 0.214286 0 0 0.214286 0.0445588 0
+          0.285714 0 0 0.285714 0.0445588 0 0.357143 0 0 0.357143 0.0445588 0
+          0.428571 0 0 0.428571 0.0445588 0 0.5 0 0 0.5 0.0445588 0
+          0.571429 0 0 0.571429 0.0445588 0 0.642857 0 0 0.642857 0.0445588 0
+          0.714286 0 0 0.714286 0.0445588 0 0.785714 0 0 0.785714 0.0445588 0
+          0.857143 0 0 0.857143 0.0445588 0 0.928571 0 0 0.928571 0.0445588 0
+          1 0 0 1 0.0445588 0 0 0.0816912 0 0.0714286 0.0816912 0
+          0.142857 0.0816912 0 0.214286 0.0816912 0 0.285714 0.0816912 0 0.357143 0.0816912 0
+          0.428571 0.0816912 0 0.5 0.0816912 0 0.571429 0.0816912 0 0.642857 0.0816912 0
+          0.714286 0.0816912 0 0.785714 0.0816912 0 0.857143 0.0816912 0 0.928571 0.0816912 0
+          1 0.0816912 0 0 0.112635 0 0.0714286 0.112635 0 0.142857 0.112635 0
+          0.214286 0.112635 0 0.285714 0.112635 0 0.357143 0.112635 0 0.428571 0.112635 0
+          0.5 0.112635 0 0.571429 0.112635 0 0.642857 0.112635 0 0.714286 0.112635 0
+          0.785714 0.112635 0 0.857143 0.112635 0 0.928571 0.112635 0 1 0.112635 0
+          0 0.138421 0 0.0714286 0.138421 0 0.142857 0.138421 0 0.214286 0.138421 0
+          0.285714 0.138421 0 0.357143 0.138421 0 0.428571 0.138421 0 0.5 0.138421 0
+          0.571429 0.138421 0 0.642857 0.138421 0 0.714286 0.138421 0 0.785714 0.138421 0
+          0.857143 0.138421 0 0.928571 0.138421 0 1 0.138421 0 0 0.15991 0
+          0.0714286 0.15991 0 0.142857 0.15991 0 0.214286 0.15991 0 0.285714 0.15991 0
+          0.357143 0.15991 0 0.428571 0.15991 0 0.5 0.15991 0 0.571429 0.15991 0
+          0.642857 0.15991 0 0.714286 0.15991 0 0.785714 0.15991 0 0.857143 0.15991 0
+          0.928571 0.15991 0 1 0.15991 0 0 0.177817 0 0.0714286 0.177817 0
+          0.142857 0.177817 0 0.214286 0.177817 0 0.285714 0.177817 0 0.357143 0.177817 0
+          0.428571 0.177817 0 0.5 0.177817 0 0.571429 0.177817 0 0.642857 0.177817 0
+          0.714286 0.177817 0 0.785714 0.177817 0 0.857143 0.177817 0 0.928571 0.177817 0
+          1 0.177817 0 0 0.19274 0 0.0714286 0.19274 0 0.142857 0.19274 0
+          0.214286 0.19274 0 0.285714 0.19274 0 0.357143 0.19274 0 0.428571 0.19274 0
+          0.5 0.19274 0 0.571429 0.19274 0 0.642857 0.19274 0 0.714286 0.19274 0
+          0.785714 0.19274 0 0.857143 0.19274 0 0.928571 0.19274 0 1 0.19274 0
+          0 0.205175 0 0.0714286 0.205175 0 0.142857 0.205175 0 0.214286 0.205175 0
+          0.285714 0.205175 0 0.357143 0.205175 0 0.428571 0.205175 0 0.5 0.205175 0
+          0.571429 0.205175 0 0.642857 0.205175 0 0.714286 0.205175 0 0.785714 0.205175 0
+          0.857143 0.205175 0 0.928571 0.205175 0 1 0.205175 0 0 0.215538 0
+          0.0714286 0.215538 0 0.142857 0.215538 0 0.214286 0.215538 0 0.285714 0.215538 0
+          0.357143 0.215538 0 0.428571 0.215538 0 0.5 0.215538 0 0.571429 0.215538 0
+          0.642857 0.215538 0 0.714286 0.215538 0 0.785714 0.215538 0 0.857143 0.215538 0
+          0.928571 0.215538 0 1 0.215538 0 0 0.224174 0 0.0714286 0.224174 0
+          0.142857 0.224174 0 0.214286 0.224174 0 0.285714 0.224174 0 0.357143 0.224174 0
+          0.428571 0.224174 0 0.5 0.224174 0 0.571429 0.224174 0 0.642857 0.224174 0
+          0.714286 0.224174 0 0.785714 0.224174 0 0.857143 0.224174 0 0.928571 0.224174 0
+          1 0.224174 0 0 0.23137 0 0.0714286 0.23137 0 0.142857 0.23137 0
+          0.214286 0.23137 0 0.285714 0.23137 0 0.357143 0.23137 0 0.428571 0.23137 0
+          0.5 0.23137 0 0.571429 0.23137 0 0.642857 0.23137 0 0.714286 0.23137 0
+          0.785714 0.23137 0 0.857143 0.23137 0 0.928571 0.23137 0 1 0.23137 0
+          0 0.237367 0 0.0714286 0.237367 0 0.142857 0.237367 0 0.214286 0.237367 0
+          0.285714 0.237367 0 0.357143 0.237367 0 0.428571 0.237367 0 0.5 0.237367 0
+          0.571429 0.237367 0 0.642857 0.237367 0 0.714286 0.237367 0 0.785714 0.237367 0
+          0.857143 0.237367 0 0.928571 0.237367 0 1 0.237367 0 0 0.242365 0
+          0.0714286 0.242365 0 0.142857 0.242365 0 0.214286 0.242365 0 0.285714 0.242365 0
+          0.357143 0.242365 0 0.428571 0.242365 0 0.5 0.242365 0 0.571429 0.242365 0
+          0.642857 0.242365 0 0.714286 0.242365 0 0.785714 0.242365 0 0.857143 0.242365 0
+          0.928571 0.242365 0 1 0.242365 0 0 0.246529 0 0.0714286 0.246529 0
+          0.142857 0.246529 0 0.214286 0.246529 0 0.285714 0.246529 0 0.357143 0.246529 0
+          0.428571 0.246529 0 0.5 0.246529 0 0.571429 0.246529 0 0.642857 0.246529 0
+          0.714286 0.246529 0 0.785714 0.246529 0 0.857143 0.246529 0 0.928571 0.246529 0
+          1 0.246529 0 0 0.25 0 0.0714286 0.25 0 0.142857 0.25 0
           0.214286 0.25 0 0.285714 0.25 0 0.357143 0.25 0 0.428571 0.25 0
           0.5 0.25 0 0.571429 0.25 0 0.642857 0.25 0 0.714286 0.25 0
           0.785714 0.25 0 0.857143 0.25 0 0.928571 0.25 0 1 0.25 0
-          0 0.294559 0 0.0714286 0.294559 0 0.142857 0.294559 0 0.214286 0.294559 0
-          0.285714 0.294559 0 0.357143 0.294559 0 0.428571 0.294559 0 0.5 0.294559 0
-          0.571429 0.294559 0 0.642857 0.294559 0 0.714286 0.294559 0 0.785714 0.294559 0
-          0.857143 0.294559 0 0.928571 0.294559 0 1 0.294559 0 0 0.331691 0
-          0.0714286 0.331691 0 0.142857 0.331691 0 0.214286 0.331691 0 0.285714 0.331691 0
-          0.357143 0.331691 0 0.428571 0.331691 0 0.5 0.331691 0 0.571429 0.331691 0
-          0.642857 0.331691 0 0.714286 0.331691 0 0.785714 0.331691 0 0.857143 0.331691 0
-          0.928571 0.331691 0 1 0.331691 0 0 0.362635 0 0.0714286 0.362635 0
-          0.142857 0.362635 0 0.214286 0.362635 0 0.285714 0.362635 0 0.357143 0.362635 0
-          0.428571 0.362635 0 0.5 0.362635 0 0.571429 0.362635 0 0.642857 0.362635 0
-          0.714286 0.362635 0 0.785714 0.362635 0 0.857143 0.362635 0 0.928571 0.362635 0
-          1 0.362635 0 0 0.388421 0 0.0714286 0.388421 0 0.142857 0.388421 0
-          0.214286 0.388421 0 0.285714 0.388421 0 0.357143 0.388421 0 0.428571 0.388421 0
-          0.5 0.388421 0 0.571429 0.388421 0 0.642857 0.388421 0 0.714286 0.388421 0
-          0.785714 0.388421 0 0.857143 0.388421 0 0.928571 0.388421 0 1 0.388421 0
-          0 0.40991 0 0.0714286 0.40991 0 0.142857 0.40991 0 0.214286 0.40991 0
-          0.285714 0.40991 0 0.357143 0.40991 0 0.428571 0.40991 0 0.5 0.40991 0
-          0.571429 0.40991 0 0.642857 0.40991 0 0.714286 0.40991 0 0.785714 0.40991 0
-          0.857143 0.40991 0 0.928571 0.40991 0 1 0.40991 0 0 0.427817 0
-          0.0714286 0.427817 0 0.142857 0.427817 0 0.214286 0.427817 0 0.285714 0.427817 0
-          0.357143 0.427817 0 0.428571 0.427817 0 0.5 0.427817 0 0.571429 0.427817 0
-          0.642857 0.427817 0 0.714286 0.427817 0 0.785714 0.427817 0 0.857143 0.427817 0
-          0.928571 0.427817 0 1 0.427817 0 0 0.44274 0 0.0714286 0.44274 0
-          0.142857 0.44274 0 0.214286 0.44274 0 0.285714 0.44274 0 0.357143 0.44274 0
-          0.428571 0.44274 0 0.5 0.44274 0 0.571429 0.44274 0 0.642857 0.44274 0
-          0.714286 0.44274 0 0.785714 0.44274 0 0.857143 0.44274 0 0.928571 0.44274 0
-          1 0.44274 0 0 0.455175 0 0.0714286 0.455175 0 0.142857 0.455175 0
-          0.214286 0.455175 0 0.285714 0.455175 0 0.357143 0.455175 0 0.428571 0.455175 0
-          0.5 0.455175 0 0.571429 0.455175 0 0.642857 0.455175 0 0.714286 0.455175 0
-          0.785714 0.455175 0 0.857143 0.455175 0 0.928571 0.455175 0 1 0.455175 0
-          0 0.465538 0 0.0714286 0.465538 0 0.142857 0.465538 0 0.214286 0.465538 0
-          0.285714 0.465538 0 0.357143 0.465538 0 0.428571 0.465538 0 0.5 0.465538 0
-          0.571429 0.465538 0 0.642857 0.465538 0 0.714286 0.465538 0 0.785714 0.465538 0
-          0.857143 0.465538 0 0.928571 0.465538 0 1 0.465538 0 0 0.474174 0
-          0.0714286 0.474174 0 0.142857 0.474174 0 0.214286 0.474174 0 0.285714 0.474174 0
-          0.357143 0.474174 0 0.428571 0.474174 0 0.5 0.474174 0 0.571429 0.474174 0
-          0.642857 0.474174 0 0.714286 0.474174 0 0.785714 0.474174 0 0.857143 0.474174 0
-          0.928571 0.474174 0 1 0.474174 0 0 0.48137 0 0.0714286 0.48137 0
-          0.142857 0.48137 0 0.214286 0.48137 0 0.285714 0.48137 0 0.357143 0.48137 0
-          0.428571 0.48137 0 0.5 0.48137 0 0.571429 0.48137 0 0.642857 0.48137 0
-          0.714286 0.48137 0 0.785714 0.48137 0 0.857143 0.48137 0 0.928571 0.48137 0
-          1 0.48137 0 0 0.487367 0 0.0714286 0.487367 0 0.142857 0.487367 0
-          0.214286 0.487367 0 0.285714 0.487367 0 0.357143 0.487367 0 0.428571 0.487367 0
-          0.5 0.487367 0 0.571429 0.487367 0 0.642857 0.487367 0 0.714286 0.487367 0
-          0.785714 0.487367 0 0.857143 0.487367 0 0.928571 0.487367 0 1 0.487367 0
-          0 0.492365 0 0.0714286 0.492365 0 0.142857 0.492365 0 0.214286 0.492365 0
-          0.285714 0.492365 0 0.357143 0.492365 0 0.428571 0.492365 0 0.5 0.492365 0
-          0.571429 0.492365 0 0.642857 0.492365 0 0.714286 0.492365 0 0.785714 0.492365 0
-          0.857143 0.492365 0 0.928571 0.492365 0 1 0.492365 0 0 0.496529 0
-          0.0714286 0.496529 0 0.142857 0.496529 0 0.214286 0.496529 0 0.285714 0.496529 0
-          0.357143 0.496529 0 0.428571 0.496529 0 0.5 0.496529 0 0.571429 0.496529 0
-          0.642857 0.496529 0 0.714286 0.496529 0 0.785714 0.496529 0 0.857143 0.496529 0
-          0.928571 0.496529 0 1 0.496529 0 0 0.5 0 0.0714286 0.5 0
+          0 0.253471 0 0.0714286 0.253471 0 0.142857 0.253471 0 0.214286 0.253471 0
+          0.285714 0.253471 0 0.357143 0.253471 0 0.428571 0.253471 0 0.5 0.253471 0
+          0.571429 0.253471 0 0.642857 0.253471 0 0.714286 0.253471 0 0.785714 0.253471 0
+          0.857143 0.253471 0 0.928571 0.253471 0 1 0.253471 0 0 0.257635 0
+          0.0714286 0.257635 0 0.142857 0.257635 0 0.214286 0.257635 0 0.285714 0.257635 0
+          0.357143 0.257635 0 0.428571 0.257635 0 0.5 0.257635 0 0.571429 0.257635 0
+          0.642857 0.257635 0 0.714286 0.257635 0 0.785714 0.257635 0 0.857143 0.257635 0
+          0.928571 0.257635 0 1 0.257635 0 0 0.262633 0 0.0714286 0.262633 0
+          0.142857 0.262633 0 0.214286 0.262633 0 0.285714 0.262633 0 0.357143 0.262633 0
+          0.428571 0.262633 0 0.5 0.262633 0 0.571429 0.262633 0 0.642857 0.262633 0
+          0.714286 0.262633 0 0.785714 0.262633 0 0.857143 0.262633 0 0.928571 0.262633 0
+          1 0.262633 0 0 0.26863 0 0.0714286 0.26863 0 0.142857 0.26863 0
+          0.214286 0.26863 0 0.285714 0.26863 0 0.357143 0.26863 0 0.428571 0.26863 0
+          0.5 0.26863 0 0.571429 0.26863 0 0.642857 0.26863 0 0.714286 0.26863 0
+          0.785714 0.26863 0 0.857143 0.26863 0 0.928571 0.26863 0 1 0.26863 0
+          0 0.275826 0 0.0714286 0.275826 0 0.142857 0.275826 0 0.214286 0.275826 0
+          0.285714 0.275826 0 0.357143 0.275826 0 0.428571 0.275826 0 0.5 0.275826 0
+          0.571429 0.275826 0 0.642857 0.275826 0 0.714286 0.275826 0 0.785714 0.275826 0
+          0.857143 0.275826 0 0.928571 0.275826 0 1 0.275826 0 0 0.284462 0
+          0.0714286 0.284462 0 0.142857 0.284462 0 0.214286 0.284462 0 0.285714 0.284462 0
+          0.357143 0.284462 0 0.428571 0.284462 0 0.5 0.284462 0 0.571429 0.284462 0
+          0.642857 0.284462 0 0.714286 0.284462 0 0.785714 0.284462 0 0.857143 0.284462 0
+          0.928571 0.284462 0 1 0.284462 0 0 0.294825 0 0.0714286 0.294825 0
+          0.142857 0.294825 0 0.214286 0.294825 0 0.285714 0.294825 0 0.357143 0.294825 0
+          0.428571 0.294825 0 0.5 0.294825 0 0.571429 0.294825 0 0.642857 0.294825 0
+          0.714286 0.294825 0 0.785714 0.294825 0 0.857143 0.294825 0 0.928571 0.294825 0
+          1 0.294825 0 0 0.30726 0 0.0714286 0.30726 0 0.142857 0.30726 0
+          0.214286 0.30726 0 0.285714 0.30726 0 0.357143 0.30726 0 0.428571 0.30726 0
+          0.5 0.30726 0 0.571429 0.30726 0 0.642857 0.30726 0 0.714286 0.30726 0
+          0.785714 0.30726 0 0.857143 0.30726 0 0.928571 0.30726 0 1 0.30726 0
+          0 0.322183 0 0.0714286 0.322183 0 0.142857 0.322183 0 0.214286 0.322183 0
+          0.285714 0.322183 0 0.357143 0.322183 0 0.428571 0.322183 0 0.5 0.322183 0
+          0.571429 0.322183 0 0.642857 0.322183 0 0.714286 0.322183 0 0.785714 0.322183 0
+          0.857143 0.322183 0 0.928571 0.322183 0 1 0.322183 0 0 0.34009 0
+          0.0714286 0.34009 0 0.142857 0.34009 0 0.214286 0.34009 0 0.285714 0.34009 0
+          0.357143 0.34009 0 0.428571 0.34009 0 0.5 0.34009 0 0.571429 0.34009 0
+          0.642857 0.34009 0 0.714286 0.34009 0 0.785714 0.34009 0 0.857143 0.34009 0
+          0.928571 0.34009 0 1 0.34009 0 0 0.361579 0 0.0714286 0.361579 0
+          0.142857 0.361579 0 0.214286 0.361579 0 0.285714 0.361579 0 0.357143 0.361579 0
+          0.428571 0.361579 0 0.5 0.361579 0 0.571429 0.361579 0 0.642857 0.361579 0
+          0.714286 0.361579 0 0.785714 0.361579 0 0.857143 0.361579 0 0.928571 0.361579 0
+          1 0.361579 0 0 0.387365 0 0.0714286 0.387365 0 0.142857 0.387365 0
+          0.214286 0.387365 0 0.285714 0.387365 0 0.357143 0.387365 0 0.428571 0.387365 0
+          0.5 0.387365 0 0.571429 0.387365 0 0.642857 0.387365 0 0.714286 0.387365 0
+          0.785714 0.387365 0 0.857143 0.387365 0 0.928571 0.387365 0 1 0.387365 0
+          0 0.418309 0 0.0714286 0.418309 0 0.142857 0.418309 0 0.214286 0.418309 0
+          0.285714 0.418309 0 0.357143 0.418309 0 0.428571 0.418309 0 0.5 0.418309 0
+          0.571429 0.418309 0 0.642857 0.418309 0 0.714286 0.418309 0 0.785714 0.418309 0
+          0.857143 0.418309 0 0.928571 0.418309 0 1 0.418309 0 0 0.455441 0
+          0.0714286 0.455441 0 0.142857 0.455441 0 0.214286 0.455441 0 0.285714 0.455441 0
+          0.357143 0.455441 0 0.428571 0.455441 0 0.5 0.455441 0 0.571429 0.455441 0
+          0.642857 0.455441 0 0.714286 0.455441 0 0.785714 0.455441 0 0.857143 0.455441 0
+          0.928571 0.455441 0 1 0.455441 0 0 0.5 0 0.0714286 0.5 0
           0.142857 0.5 0 0.214286 0.5 0 0.285714 0.5 0 0.357143 0.5 0
           0.428571 0.5 0 0.5 0.5 0 0.571429 0.5 0 0.642857 0.5 0
           0.714286 0.5 0 0.785714 0.5 0 0.857143 0.5 0 0.928571 0.5 0
diff --git a/test/references/obstaclebox-reference.vtu b/test/references/obstaclebox-reference.vtu
index 4d9ed7ffed598b6d3e439805e437c18c5063d3bd..a7bd370679869363c51c45c54955de27b9a92951 100644
--- a/test/references/obstaclebox-reference.vtu
+++ b/test/references/obstaclebox-reference.vtu
@@ -7,16 +7,16 @@
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0.00770583 0.0057342 0.641428 0.552406
+          0 0 0 0 0 0 0 0 0.00702047 0.00533631 0.640719 0.553386
           1 1 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0.00495454 0.556659 1 0 0 0 0 0 0 0 0 0
+          0.00462187 0.557644 1 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0.00270553 0.55936 1 0 0 0 0 0 0 0 0
+          0 0.00247546 0.56045 1 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0.472713 1 0 0 0 0 0 0 0
+          0 0 0 0.473827 1 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0.00804625 0.291123 0 0 0 0 0 0
+          0 0 0 0 0.00780742 0.291695 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
@@ -45,16 +45,16 @@
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 1 1 1 1 1 0.992294 0.994266 0.358572 0.447594
+          1 1 1 1 1 1 1 1 0.99298 0.994664 0.359281 0.446614
           0 0 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
-          0.995045 0.443341 0 1 1 1 1 1 1 1 1 1
+          0.995378 0.442356 0 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 0.997294 0.44064 0 1 1 1 1 1 1 1 1
+          1 0.997525 0.43955 0 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 0.527287 0 1 1 1 1 1 1 1
+          1 1 1 0.526173 0 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 1 0.991954 0.708877 1 1 1 1 1 1
+          1 1 1 1 0.992193 0.708305 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
@@ -80,80 +80,80 @@
           1 1 1 1 1
         </DataArray>
         <DataArray type="Float32" Name="p_w" NumberOfComponents="1" format="ascii">
-          100000 100043 100000 100023 100062 100038 100072 100046 100005 100002 100002 100000
-          100002 100000 100002 100000 100019 100017 100583 100551 100611 100581 100673 100643
-          100772 100740 100911 100878 101097 101063 101341 101304 101653 101611 102046 102000
-          102540 102485 103157 103089 103931 103841 104911 104788 106091 106041 110619 109506
-          200000 200000 100000 100013 100023 100028 100001 100000 100000 100000 100015 100518
-          100547 100608 100703 100836 101015 101248 101545 101918 102381 102950 103644 104481
-          105517 108636 200000 100000 100007 100013 100016 100001 100000 100000 100000 100014
-          100482 100511 100569 100659 100786 100956 101176 101456 101805 102236 102759 103381
-          104085 104747 106931 200000 100000 100002 100005 100007 100000 100000 100000 100000
-          100012 100444 100471 100526 100610 100729 100887 101091 101348 101668 102060 102533
-          103094 103738 104384 102533 200000 99997.2 99997.8 99999 99999.7 100000 100000 100000
-          100000 100011 100405 100430 100480 100557 100666 100810 100995 101227 101513 101861
-          102280 102782 103400 104300 107901 97945.8 99992.2 99992.4 99992.9 99993.2 99999.9 100000
-          100000 100000 100010 100364 100387 100432 100502 100600 100728 100893 101097 101346
-          101647 102004 102427 102939 103604 103551 103066 99986.1 99986.2 99986.4 99986.6 99999.6
-          100000 100000 100000 100008 100323 100343 100383 100445 100532 100644 100787 100963
-          101175 101425 101716 102045 102397 102678 102761 102742 99979 99979.1 99979.2 99979.4
-          99999.4 100000 100000 100000 100007 100281 100299 100334 100389 100463 100560 100682
-          100830 101005 101208 101436 101678 101910 102089 102185 102211 99970.9 99970.9 99971
-          99971.2 99999.1 100000 100000 100000 100006 100240 100255 100286 100333 100397 100479
-          100581 100703 100845 101006 101180 101356 101519 101646 101724 101749 99961.5 99961.5
-          99961.6 99961.8 99998.8 100000 100000 100000 100005 100200 100213 100239 100279 100333
-          100402 100486 100586 100700 100825 100957 101088 101205 101298 101356 101376 99950.6
-          99950.6 99950.8 99951 99998.3 100000 100000 100000 100004 100160 100172 100194 100228
-          100274 100331 100401 100481 100572 100670 100770 100868 100954 101022 101066 101080
-          99938 99938.1 99938.3 99938.5 99997.8 100000 100000 100000 100002 100121 100132 100151
-          100181 100220 100268 100325 100390 100463 100540 100617 100691 100756 100807 100840
-          100851 99923.3 99923.6 99924 99924.2 99997.2 99999.9 100000 100000 100001 100083 100093
-          100111 100137 100171 100212 100260 100314 100373 100434 100496 100554 100604 100643
-          100668 100676 99906.1 99906.8 99908.7 99907.7 99994.9 99997.9 99998.4 99998.7 99999 100044
-          100055 100073 100097 100128 100163 100205 100251 100301 100353 100403 100450 100491
-          100523 100542 100549 99885.4 99886.7 99891 99903.3 99912.3 99929.7 99945.8 99962.4 99981.6
-          100000 100020 100039 100062 100090 100124 100161 100203 100247 100293 100338 100379
-          100414 100441 100458 100464 99860.3 99861.9 99867.3 99876.4 99888.1 99902.4 99918.2 99934.7
-          99952.3 99970.5 99989.1 100009 100032 100060 100092 100128 100168 100211 100255 100297
-          100337 100370 100396 100412 100418
+          100000 100043 100000 100023 100062 100039 100072 100046 100005 100002 100002 100000
+          100002 100000 100002 100000 100018 100016 100576 100544 100605 100575 100668 100637
+          100767 100736 100908 100875 101097 101063 101344 101306 101658 101617 102056 102009
+          102553 102498 103174 103106 103952 103862 104937 104813 106124 106072 110667 109558
+          200000 200000 100000 100013 100023 100028 100001 100000 100000 100000 100014 100511
+          100541 100602 100698 100834 101015 101250 101550 101926 102393 102966 103663 104505
+          105545 108684 200000 100000 100007 100013 100016 100001 100000 100000 100000 100013
+          100475 100504 100563 100654 100783 100955 101178 101460 101813 102247 102774 103399
+          104107 104773 106974 200000 100000 100002 100005 100007 100000 100000 100000 100000
+          100011 100437 100464 100519 100605 100726 100886 101092 101352 101675 102070 102546
+          103110 103757 104408 102564 200000 99997.2 99997.8 99999 99999.7 100000 100000 100000
+          100000 100010 100397 100422 100473 100552 100662 100808 100995 101230 101519 101870
+          102291 102796 103417 104317 107914 97967.4 99992.1 99992.3 99992.8 99993.2 99999.9 100000
+          100000 100000 100009 100356 100379 100425 100496 100596 100726 100892 101099 101351
+          101654 102013 102439 102953 103618 103566 103082 99985.9 99986 99986.2 99986.5 99999.7
+          100000 100000 100000 100008 100315 100335 100376 100439 100527 100641 100786 100963
+          101178 101430 101723 102054 102408 102690 102774 102755 99978.8 99978.8 99979 99979.1
+          99999.4 100000 100000 100000 100007 100273 100291 100327 100382 100458 100556 100680
+          100829 101007 101212 101441 101685 101919 102099 102196 102222 99970.5 99970.5 99970.6
+          99970.8 99999.1 100000 100000 100000 100005 100232 100248 100279 100326 100391 100474
+          100578 100701 100845 101008 101183 101361 101525 101654 101732 101757 99960.9 99961
+          99961.1 99961.3 99998.8 100000 100000 100000 100004 100192 100205 100232 100272 100327
+          100397 100482 100583 100698 100825 100959 101091 101209 101302 101361 101381 99949.8
+          99949.9 99950 99950.2 99998.4 100000 100000 100000 100003 100152 100164 100187 100221
+          100267 100325 100396 100477 100569 100668 100770 100869 100956 101025 101069 101084
+          99937 99937.1 99937.3 99937.5 99997.8 100000 100000 100000 100002 100113 100124 100144
+          100173 100212 100261 100319 100385 100459 100537 100615 100690 100756 100808 100840
+          100852 99922.1 99922.4 99922.8 99922.9 99997.2 99999.9 100000 100000 100001 100075 100085
+          100103 100129 100163 100205 100253 100308 100368 100430 100492 100551 100602 100642
+          100667 100675 99904.7 99905.4 99907.2 99906 99994.8 99997.8 99998.3 99998.5 99998.5 100036
+          100047 100066 100090 100120 100156 100198 100245 100295 100348 100399 100447 100488
+          100520 100540 100547 99883.9 99885.2 99889.3 99901.3 99909.2 99925.8 99941 99956.7 99975
+          99993.8 100012 100031 100055 100083 100116 100154 100196 100241 100287 100332 100374
+          100410 100438 100455 100461 99858.7 99860.2 99865.5 99874.1 99885 99898.5 99913.4 99929.1
+          99946 99963.6 99981.8 100001 100024 100052 100084 100121 100162 100205 100249 100292
+          100332 100366 100392 100408 100414
         </DataArray>
         <DataArray type="Float32" Name="p_n" NumberOfComponents="1" format="ascii">
-          100000 100043 100000 100023 100062 100038 100072 100046 100005 100002 100002 100000
-          100002 100000 100002 100000 100019 100017 100583 100551 100611 100581 100673 100643
-          100772 100740 100911 100878 101097 101063 101341 101304 101653 101611 102046 102000
-          102540 102485 103157 103089 103931 103841 104911 104788 106091 106041 110619 109506
-          200000 200000 100000 100013 100023 100028 100001 100000 100000 100000 100015 100518
-          100547 100608 100703 100836 101015 101248 101545 101918 102381 102950 103644 104481
-          105517 108636 200000 100000 100007 100013 100016 100001 100000 100000 100000 100014
-          100482 100511 100569 100659 100786 100956 101176 101456 101805 102236 102759 103381
-          104085 104747 106931 200000 100000 100002 100005 100007 100000 100000 100000 100000
-          100012 100444 100471 100526 100610 100729 100887 101091 101348 101668 102060 102533
-          103094 103738 104384 102533 200000 99997.2 99997.8 99999 99999.7 100000 100000 100000
-          100000 100011 100405 100430 100480 100557 100666 100810 100995 101227 101513 101861
-          102280 102782 103400 104300 107901 97945.8 99992.2 99992.4 99992.9 99993.2 99999.9 100000
-          100000 100000 100010 100364 100387 100432 100502 100600 100728 100893 101097 101346
-          101647 102004 102427 102939 103604 103551 103066 99986.1 99986.2 99986.4 99986.6 99999.6
-          100000 100000 100000 100008 100323 100343 100383 100445 100532 100644 100787 100963
-          101175 101425 101716 102045 102397 102678 102761 102742 99979 99979.1 99979.2 99979.4
-          99999.4 100000 100000 100000 100007 100281 100299 100334 100389 100463 100560 100682
-          100830 101005 101208 101436 101678 101910 102089 102185 102211 99970.9 99970.9 99971
-          99971.2 99999.1 100000 100000 100000 100006 100240 100255 100286 100333 100397 100479
-          100581 100703 100845 101006 101180 101356 101519 101646 101724 101749 99961.5 99961.5
-          99961.6 99961.8 99998.8 100000 100000 100000 100005 100200 100213 100239 100279 100333
-          100402 100486 100586 100700 100825 100957 101088 101205 101298 101356 101376 99950.6
-          99950.6 99950.8 99951 99998.3 100000 100000 100000 100004 100160 100172 100194 100228
-          100274 100331 100401 100481 100572 100670 100770 100868 100954 101022 101066 101080
-          99938 99938.1 99938.3 99938.5 99997.8 100000 100000 100000 100002 100121 100132 100151
-          100181 100220 100268 100325 100390 100463 100540 100617 100691 100756 100807 100840
-          100851 99923.3 99923.6 99924 99924.2 99997.2 99999.9 100000 100000 100001 100083 100093
-          100111 100137 100171 100212 100260 100314 100373 100434 100496 100554 100604 100643
-          100668 100676 99906.1 99906.8 99908.7 99907.7 99994.9 99997.9 99998.4 99998.7 99999 100044
-          100055 100073 100097 100128 100163 100205 100251 100301 100353 100403 100450 100491
-          100523 100542 100549 99885.4 99886.7 99891 99903.3 99912.3 99929.7 99945.8 99962.4 99981.6
-          100000 100020 100039 100062 100090 100124 100161 100203 100247 100293 100338 100379
-          100414 100441 100458 100464 99860.3 99861.9 99867.3 99876.4 99888.1 99902.4 99918.2 99934.7
-          99952.3 99970.5 99989.1 100009 100032 100060 100092 100128 100168 100211 100255 100297
-          100337 100370 100396 100412 100418
+          100000 100043 100000 100023 100062 100039 100072 100046 100005 100002 100002 100000
+          100002 100000 100002 100000 100018 100016 100576 100544 100605 100575 100668 100637
+          100767 100736 100908 100875 101097 101063 101344 101306 101658 101617 102056 102009
+          102553 102498 103174 103106 103952 103862 104937 104813 106124 106072 110667 109558
+          200000 200000 100000 100013 100023 100028 100001 100000 100000 100000 100014 100511
+          100541 100602 100698 100834 101015 101250 101550 101926 102393 102966 103663 104505
+          105545 108684 200000 100000 100007 100013 100016 100001 100000 100000 100000 100013
+          100475 100504 100563 100654 100783 100955 101178 101460 101813 102247 102774 103399
+          104107 104773 106974 200000 100000 100002 100005 100007 100000 100000 100000 100000
+          100011 100437 100464 100519 100605 100726 100886 101092 101352 101675 102070 102546
+          103110 103757 104408 102564 200000 99997.2 99997.8 99999 99999.7 100000 100000 100000
+          100000 100010 100397 100422 100473 100552 100662 100808 100995 101230 101519 101870
+          102291 102796 103417 104317 107914 97967.4 99992.1 99992.3 99992.8 99993.2 99999.9 100000
+          100000 100000 100009 100356 100379 100425 100496 100596 100726 100892 101099 101351
+          101654 102013 102439 102953 103618 103566 103082 99985.9 99986 99986.2 99986.5 99999.7
+          100000 100000 100000 100008 100315 100335 100376 100439 100527 100641 100786 100963
+          101178 101430 101723 102054 102408 102690 102774 102755 99978.8 99978.8 99979 99979.1
+          99999.4 100000 100000 100000 100007 100273 100291 100327 100382 100458 100556 100680
+          100829 101007 101212 101441 101685 101919 102099 102196 102222 99970.5 99970.5 99970.6
+          99970.8 99999.1 100000 100000 100000 100005 100232 100248 100279 100326 100391 100474
+          100578 100701 100845 101008 101183 101361 101525 101654 101732 101757 99960.9 99961
+          99961.1 99961.3 99998.8 100000 100000 100000 100004 100192 100205 100232 100272 100327
+          100397 100482 100583 100698 100825 100959 101091 101209 101302 101361 101381 99949.8
+          99949.9 99950 99950.2 99998.4 100000 100000 100000 100003 100152 100164 100187 100221
+          100267 100325 100396 100477 100569 100668 100770 100869 100956 101025 101069 101084
+          99937 99937.1 99937.3 99937.5 99997.8 100000 100000 100000 100002 100113 100124 100144
+          100173 100212 100261 100319 100385 100459 100537 100615 100690 100756 100808 100840
+          100852 99922.1 99922.4 99922.8 99922.9 99997.2 99999.9 100000 100000 100001 100075 100085
+          100103 100129 100163 100205 100253 100308 100368 100430 100492 100551 100602 100642
+          100667 100675 99904.7 99905.4 99907.2 99906 99994.8 99997.8 99998.3 99998.5 99998.5 100036
+          100047 100066 100090 100120 100156 100198 100245 100295 100348 100399 100447 100488
+          100520 100540 100547 99883.9 99885.2 99889.3 99901.3 99909.2 99925.8 99941 99956.7 99975
+          99993.8 100012 100031 100055 100083 100116 100154 100196 100241 100287 100332 100374
+          100410 100438 100455 100461 99858.7 99860.2 99865.5 99874.1 99885 99898.5 99913.4 99929.1
+          99946 99963.6 99981.8 100001 100024 100052 100084 100121 100162 100205 100249 100292
+          100332 100366 100392 100408 100414
         </DataArray>
         <DataArray type="Float32" Name="rho_w" NumberOfComponents="1" format="ascii">
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
@@ -195,56 +195,56 @@
         </DataArray>
         <DataArray type="Float32" Name="rho_n" NumberOfComponents="1" format="ascii">
           1.12601 1.12649 1.12601 1.12627 1.12671 1.12645 1.12682 1.12653 1.12607 1.12604 1.12603 1.12601
-          1.12603 1.12601 1.12603 1.12602 1.12623 1.1262 1.13258 1.13222 1.1329 1.13256 1.1336 1.13326
-          1.1347 1.13435 1.13627 1.1359 1.13837 1.13798 1.14111 1.14069 1.14462 1.14416 1.14906 1.14853
-          1.15461 1.15399 1.16152 1.16076 1.16982 1.16886 1.17818 1.17712 1.18609 1.18553 1.23726 1.22469
-          1.45345 1.45345 1.12601 1.12616 1.12627 1.12633 1.12603 1.12601 1.12601 1.12602 1.12618 1.13184
-          1.13218 1.13286 1.13392 1.13543 1.13745 1.14007 1.14341 1.1476 1.15282 1.15921 1.16673 1.17413
-          1.17961 1.21485 1.45345 1.12601 1.12609 1.12616 1.12619 1.12602 1.12601 1.12601 1.12602 1.12617
-          1.13144 1.13176 1.13242 1.13343 1.13486 1.13678 1.13926 1.14241 1.14634 1.15119 1.15706 1.16391
-          1.17049 1.1709 1.19558 1.45345 1.12601 1.12604 1.12607 1.12609 1.12602 1.12601 1.12601 1.12602
-          1.12615 1.13102 1.13132 1.13193 1.13288 1.13422 1.136 1.1383 1.1412 1.1448 1.14921 1.15453
-          1.1608 1.16773 1.17311 1.14589 1.45345 1.12598 1.12599 1.126 1.12601 1.12601 1.12601 1.12601
-          1.12601 1.12614 1.13057 1.13085 1.13141 1.13229 1.13351 1.13514 1.13722 1.13983 1.14305 1.14697
-          1.15168 1.15726 1.16343 1.16846 1.20655 1.09405 1.12593 1.12593 1.12593 1.12594 1.12601 1.12601
-          1.12601 1.12601 1.12612 1.13011 1.13037 1.13088 1.13167 1.13277 1.13422 1.13606 1.13836 1.14117
-          1.14456 1.14857 1.15332 1.1589 1.16516 1.16137 1.15834 1.12586 1.12586 1.12586 1.12586 1.12601
-          1.12601 1.12601 1.12601 1.12611 1.12965 1.12987 1.13033 1.13103 1.132 1.13327 1.13488 1.13685
-          1.13924 1.14206 1.14533 1.14903 1.15297 1.15596 1.15644 1.15667 1.12578 1.12578 1.12578 1.12578
-          1.12601 1.12601 1.12601 1.12601 1.12609 1.12918 1.12938 1.12978 1.13039 1.13123 1.13232 1.13369
-          1.13536 1.13733 1.13962 1.14218 1.1449 1.14752 1.14952 1.15056 1.15088 1.12569 1.12569 1.12569
-          1.12569 1.126 1.12601 1.12601 1.12601 1.12608 1.12872 1.12889 1.12923 1.12976 1.13048 1.13141
-          1.13255 1.13393 1.13553 1.13734 1.1393 1.14129 1.14312 1.14455 1.14542 1.14571 1.12558 1.12558
-          1.12558 1.12558 1.126 1.12601 1.12601 1.12601 1.12607 1.12826 1.12841 1.12871 1.12916 1.12977
-          1.13054 1.13149 1.13261 1.13389 1.13531 1.13679 1.13826 1.13958 1.14062 1.14128 1.1415 1.12546
-          1.12546 1.12546 1.12546 1.12599 1.12601 1.12601 1.12601 1.12605 1.12782 1.12794 1.1282 1.12858
-          1.1291 1.12975 1.13053 1.13143 1.13245 1.13356 1.13469 1.13578 1.13676 1.13752 1.13801 1.13818
-          1.12531 1.12532 1.12532 1.12532 1.12599 1.12601 1.12601 1.12601 1.12604 1.12738 1.12749 1.12772
-          1.12805 1.12849 1.12903 1.12967 1.13041 1.13123 1.13209 1.13297 1.1338 1.13453 1.1351 1.13547
-          1.13559 1.12515 1.12515 1.12516 1.12516 1.12598 1.12601 1.12601 1.12601 1.12603 1.12695 1.12706
-          1.12726 1.12756 1.12793 1.1284 1.12894 1.12955 1.13021 1.13091 1.1316 1.13225 1.13281 1.13325
-          1.13353 1.13363 1.12496 1.12496 1.12499 1.12497 1.12596 1.12599 1.126 1.126 1.126 1.1265
-          1.12663 1.12684 1.12711 1.12745 1.12785 1.12832 1.12884 1.1294 1.12998 1.13055 1.13109 1.13154
-          1.1319 1.13212 1.1322 1.12472 1.12474 1.12479 1.12492 1.12503 1.12522 1.1254 1.12559 1.12581
-          1.12602 1.12623 1.12645 1.12672 1.12703 1.1274 1.12783 1.1283 1.1288 1.12931 1.12981 1.13028
-          1.13068 1.13098 1.13117 1.13124 1.12444 1.12446 1.12452 1.12462 1.12475 1.12491 1.12509 1.12528
-          1.12548 1.12568 1.12589 1.12612 1.12638 1.12669 1.12705 1.12746 1.12791 1.12839 1.12888 1.12936
-          1.1298 1.13018 1.13047 1.13065 1.13072
+          1.12603 1.12601 1.12603 1.12602 1.12622 1.12619 1.1325 1.13214 1.13282 1.13248 1.13353 1.13319
+          1.13465 1.1343 1.13624 1.13587 1.13837 1.13798 1.14114 1.14072 1.14469 1.14422 1.14916 1.14863
+          1.15476 1.15414 1.16171 1.16095 1.17009 1.16912 1.17867 1.17751 1.18646 1.18588 1.23781 1.22527
+          1.45345 1.45345 1.12601 1.12616 1.12627 1.12633 1.12603 1.12601 1.12601 1.12602 1.12617 1.13176
+          1.1321 1.13279 1.13387 1.1354 1.13744 1.14009 1.14347 1.1477 1.15296 1.15939 1.16697 1.17447
+          1.17993 1.2154 1.45345 1.12601 1.12609 1.12616 1.12619 1.12602 1.12601 1.12601 1.12602 1.12616
+          1.13136 1.13169 1.13235 1.13338 1.13483 1.13677 1.13928 1.14246 1.14643 1.15131 1.15723 1.16412
+          1.17076 1.17119 1.19608 1.45345 1.12601 1.12604 1.12607 1.12609 1.12602 1.12601 1.12601 1.12601
+          1.12614 1.13093 1.13124 1.13186 1.13283 1.13418 1.13599 1.13831 1.14124 1.14487 1.14932 1.15468
+          1.16099 1.16797 1.1734 1.14623 1.45345 1.12598 1.12599 1.126 1.12601 1.12601 1.12601 1.12601
+          1.12601 1.12613 1.13049 1.13077 1.13134 1.13223 1.13347 1.13512 1.13722 1.13986 1.14312 1.14707
+          1.15181 1.15742 1.16364 1.1688 1.20669 1.09429 1.12592 1.12593 1.12593 1.12594 1.12601 1.12601
+          1.12601 1.12601 1.12611 1.13003 1.13028 1.1308 1.1316 1.13272 1.13419 1.13606 1.13838 1.14122
+          1.14463 1.14868 1.15345 1.15906 1.16535 1.1615 1.15851 1.12585 1.12586 1.12586 1.12586 1.12601
+          1.12601 1.12601 1.12601 1.1261 1.12956 1.12979 1.13025 1.13096 1.13194 1.13323 1.13486 1.13686
+          1.13927 1.14212 1.14542 1.14914 1.1531 1.15611 1.15659 1.15683 1.12577 1.12577 1.12578 1.12578
+          1.12601 1.12601 1.12601 1.12601 1.12609 1.12909 1.12929 1.1297 1.13032 1.13117 1.13228 1.13367
+          1.13535 1.13735 1.13966 1.14224 1.14498 1.14762 1.14964 1.15068 1.15101 1.12568 1.12568 1.12568
+          1.12568 1.126 1.12601 1.12601 1.12601 1.12607 1.12863 1.1288 1.12915 1.12969 1.13042 1.13135
+          1.13252 1.13391 1.13553 1.13736 1.13934 1.14134 1.14319 1.14463 1.14551 1.1458 1.12557 1.12557
+          1.12558 1.12558 1.126 1.12601 1.12601 1.12601 1.12606 1.12817 1.12832 1.12862 1.12908 1.1297
+          1.13048 1.13144 1.13258 1.13388 1.13531 1.13681 1.13829 1.13963 1.14068 1.14134 1.14157 1.12545
+          1.12545 1.12545 1.12545 1.12599 1.12601 1.12601 1.12601 1.12605 1.12773 1.12786 1.12811 1.1285
+          1.12902 1.12968 1.13047 1.13139 1.13242 1.13354 1.13468 1.13579 1.13678 1.13755 1.13805 1.13821
+          1.1253 1.1253 1.12531 1.12531 1.12599 1.12601 1.12601 1.12601 1.12603 1.12729 1.12741 1.12763
+          1.12796 1.12841 1.12895 1.12961 1.13035 1.13118 1.13206 1.13294 1.13379 1.13453 1.13511 1.13548
+          1.1356 1.12514 1.12514 1.12514 1.12515 1.12598 1.12601 1.12601 1.12601 1.12602 1.12686 1.12697
+          1.12718 1.12747 1.12785 1.12832 1.12886 1.12948 1.13015 1.13086 1.13156 1.13222 1.13279 1.13324
+          1.13352 1.13362 1.12494 1.12495 1.12497 1.12495 1.12596 1.12599 1.12599 1.126 1.126 1.12642
+          1.12655 1.12675 1.12702 1.12736 1.12777 1.12824 1.12877 1.12934 1.12993 1.1305 1.13104 1.13151
+          1.13187 1.13209 1.13217 1.12471 1.12472 1.12477 1.1249 1.12499 1.12518 1.12535 1.12553 1.12573
+          1.12594 1.12615 1.12637 1.12663 1.12695 1.12732 1.12775 1.12822 1.12873 1.12925 1.12976 1.13023
+          1.13063 1.13094 1.13114 1.1312 1.12442 1.12444 1.1245 1.1246 1.12472 1.12487 1.12504 1.12522
+          1.1254 1.1256 1.12581 1.12603 1.12629 1.1266 1.12696 1.12738 1.12783 1.12832 1.12882 1.1293
+          1.12975 1.13013 1.13043 1.13061 1.13068
         </DataArray>
         <DataArray type="Float32" Name="lambda_w" 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.604467 0.333099 729.517 623.938
+          0 0 0 0 0 0 0 0 0.500881 0.288194 728.676 625.099
           1123.58 1123.58 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0.248199 628.982 1123.58 0 0 0 0 0 0 0 0 0
+          0.21581 630.15 1123.58 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0.0736 632.185 1123.58 0 0 0 0 0 0 0 0
+          0 0.06158 633.477 1123.58 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 529.422 1123.58 0 0 0 0 0 0 0
+          0 0 0 530.743 1123.58 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0.659604 314.058 0 0 0 0 0 0
+          0 0 0 0 0.620665 314.737 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
@@ -273,16 +273,16 @@
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56716.2 56729.9 19901.9 25234.3
+          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56721.4 56732.2 19944.4 25175.6
           0 0 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56734.2 24979.5 0 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
+          56735.8 24920.5 0 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56746.7 56743 24817.7 0 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
+          56746.7 56743.6 24752.5 0 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56746.7 56746.7 56746.7 30007.8 0 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
+          56746.7 56746.7 56746.7 29941.1 0 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56746.7 56746.7 56746.7 56746.7 56713.4 40885 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
+          56746.7 56746.7 56746.7 56746.7 56715.4 40850.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
@@ -346,105 +346,105 @@
           0.3 0.3 0.3 0.3 0.3
         </DataArray>
         <DataArray type="Float32" Name="x_w^H2O" NumberOfComponents="1" format="ascii">
-          0.315483 0.315617 0.315483 0.315554 0.315677 0.315604 0.315709 0.315627 0.315498 0.31549 0.315488 0.315483
-          0.315488 0.315483 0.315488 0.315483 0.315543 0.315535 0.317322 0.317221 0.317411 0.317316 0.317607 0.317512
-          0.317917 0.317818 0.318355 0.318253 0.318945 0.318835 0.319713 0.319595 0.320697 0.320567 0.321956 0.321806
-          0.323779 0.323568 0.329124 0.328467 0.363873 0.359691 0.575911 0.550322 0.999988 0.999988 0.999988 0.999988
-          1 1 0.315483 0.315524 0.315555 0.31557 0.315487 0.315483 0.315483 0.315483 0.31553 0.317116
-          0.31721 0.317401 0.317699 0.318121 0.318686 0.31942 0.320356 0.321542 0.32316 0.327089 0.351281 0.512939
-          0.999988 0.999988 1 0.315483 0.315505 0.315523 0.315532 0.315485 0.315483 0.315483 0.315483 0.315526
-          0.317003 0.317093 0.317276 0.317561 0.317962 0.318499 0.319193 0.320075 0.321182 0.322618 0.325383 0.339902
-          0.447359 0.999988 0.999988 1 0.315483 0.31549 0.315499 0.315504 0.315484 0.315483 0.315483 0.315483
-          0.315521 0.316884 0.316969 0.317141 0.317407 0.317782 0.318281 0.318924 0.319737 0.320747 0.322004 0.323794
-          0.328735 0.355979 0.506736 0.999988 1 0.315474 0.315476 0.315479 0.315482 0.315483 0.315483 0.315483
-          0.315483 0.315517 0.316759 0.316838 0.316996 0.317241 0.317584 0.318039 0.318622 0.319354 0.320258 0.321376
-          0.323085 0.330412 0.394645 0.795998 0.999988 0.999989 0.315458 0.315459 0.31546 0.315461 0.315482 0.315483
-          0.315483 0.315483 0.315513 0.316631 0.316702 0.316845 0.317067 0.317375 0.317781 0.318299 0.318943 0.319731
-          0.320684 0.321914 0.324693 0.341124 0.438742 0.688287 0.497058 0.315439 0.315439 0.31544 0.31544 0.315481
-          0.315483 0.315483 0.315483 0.315509 0.3165 0.316564 0.316691 0.316888 0.31716 0.317515 0.317965 0.31852
-          0.319189 0.31998 0.320912 0.322144 0.3252 0.339479 0.375748 0.340857 0.315416 0.315417 0.315417 0.315417
-          0.315481 0.315483 0.315483 0.315483 0.315505 0.316369 0.316425 0.316537 0.316708 0.316944 0.317251 0.317634
-          0.318101 0.318654 0.319295 0.320013 0.320795 0.321707 0.32343 0.326721 0.324038 0.315391 0.315391 0.315391
-          0.315392 0.31548 0.315483 0.315483 0.315483 0.315502 0.31624 0.316288 0.316385 0.316533 0.316734 0.316994
-          0.317315 0.317701 0.31815 0.318656 0.319205 0.319763 0.320288 0.320762 0.321179 0.321116 0.315361 0.315361
-          0.315362 0.315362 0.315479 0.315483 0.315483 0.315483 0.315498 0.316112 0.316154 0.316237 0.316363 0.316534
-          0.316752 0.317017 0.317332 0.317691 0.318087 0.318503 0.318914 0.319285 0.31958 0.319772 0.319829 0.315327
-          0.315327 0.315327 0.315328 0.315477 0.315483 0.315483 0.315483 0.315494 0.315987 0.316024 0.316095 0.316203
-          0.316347 0.316528 0.316747 0.317001 0.317287 0.317596 0.317913 0.31822 0.318493 0.318708 0.318845 0.318891
-          0.315287 0.315287 0.315288 0.315289 0.315476 0.315482 0.315483 0.315483 0.31549 0.315866 0.315898 0.31596
-          0.316053 0.316175 0.316327 0.316508 0.316714 0.316943 0.317185 0.317431 0.317664 0.317869 0.318029 0.318131
-          0.318166 0.315241 0.315242 0.315243 0.315244 0.315474 0.315482 0.315483 0.315483 0.315486 0.315745 0.315775
-          0.315833 0.315915 0.316021 0.31615 0.316302 0.316473 0.316659 0.316853 0.317047 0.317229 0.317388 0.317511
-          0.317589 0.317616 0.315186 0.315189 0.315195 0.315191 0.315466 0.315476 0.315478 0.315479 0.31548 0.31562
-          0.315656 0.315714 0.31579 0.315885 0.315998 0.316129 0.316276 0.316433 0.316595 0.316755 0.316904 0.317032
-          0.317131 0.317194 0.317216 0.315121 0.315125 0.315139 0.315178 0.315206 0.315261 0.315312 0.315364 0.315425
-          0.315484 0.315544 0.315606 0.315679 0.315768 0.315872 0.315991 0.316123 0.316263 0.316407 0.316548 0.316677
-          0.316789 0.316874 0.316928 0.316947 0.315042 0.315047 0.315064 0.315093 0.315129 0.315175 0.315225 0.315277
-          0.315332 0.315389 0.315448 0.315511 0.315584 0.315671 0.315772 0.315887 0.316014 0.316149 0.316286 0.316421
-          0.316544 0.31665 0.316731 0.316783 0.3168
+          0.315483 0.315618 0.315483 0.315555 0.315678 0.315604 0.31571 0.315627 0.315498 0.31549 0.315488 0.315483
+          0.315488 0.315483 0.315488 0.315483 0.31554 0.315532 0.3173 0.317199 0.31739 0.317296 0.317589 0.317494
+          0.317903 0.317805 0.318348 0.318245 0.318944 0.318835 0.319721 0.319603 0.320715 0.320584 0.32198 0.32183
+          0.323765 0.323563 0.328718 0.328149 0.361085 0.357737 0.560375 0.541892 0.999988 0.999988 0.999988 0.999988
+          1 1 0.315483 0.315524 0.315555 0.315571 0.315487 0.315483 0.315483 0.315483 0.315527 0.317094
+          0.317189 0.317382 0.317685 0.318112 0.318684 0.319427 0.320373 0.321566 0.323167 0.326876 0.349891 0.507278
+          0.999988 0.999988 1 0.315483 0.315505 0.315523 0.315532 0.315485 0.315483 0.315483 0.315483 0.315523
+          0.316981 0.317072 0.317258 0.317547 0.317953 0.318496 0.319199 0.32009 0.321205 0.322637 0.325293 0.339226
+          0.445429 0.999988 0.999988 1 0.315483 0.31549 0.315499 0.315504 0.315484 0.315483 0.315483 0.315483
+          0.315519 0.316861 0.316947 0.317121 0.317392 0.317771 0.318277 0.318928 0.319749 0.320768 0.32203 0.323787
+          0.328482 0.354898 0.505637 0.999988 1 0.315474 0.315476 0.315479 0.315482 0.315483 0.315483 0.315483
+          0.315483 0.315515 0.316736 0.316816 0.316976 0.317225 0.317572 0.318033 0.318623 0.319363 0.320275 0.321399
+          0.323072 0.330071 0.392622 0.783975 0.999988 0.999989 0.315458 0.315458 0.31546 0.315461 0.315482 0.315483
+          0.315483 0.315483 0.315511 0.316607 0.316679 0.316825 0.317049 0.317361 0.317773 0.318297 0.318949 0.319744
+          0.320704 0.321927 0.324583 0.340357 0.436313 0.691544 0.498017 0.315438 0.315439 0.315439 0.31544 0.315482
+          0.315483 0.315483 0.315483 0.315507 0.316476 0.316541 0.31667 0.316869 0.317145 0.317505 0.317961 0.318522
+          0.319198 0.319996 0.320932 0.322144 0.325046 0.33881 0.375598 0.340526 0.315416 0.315416 0.315416 0.315417
+          0.315481 0.315483 0.315483 0.315483 0.315503 0.316345 0.316402 0.316515 0.316689 0.316928 0.317238 0.317627
+          0.318099 0.318659 0.319305 0.32003 0.320814 0.321707 0.323341 0.326573 0.32397 0.315389 0.31539 0.31539
+          0.315391 0.31548 0.315483 0.315483 0.315483 0.3155 0.316215 0.316264 0.316362 0.316512 0.316716 0.316979
+          0.317305 0.317695 0.318149 0.318661 0.319215 0.319779 0.320306 0.320772 0.321178 0.321128 0.315359 0.315359
+          0.31536 0.31536 0.315479 0.315483 0.315483 0.315483 0.315496 0.316087 0.316129 0.316214 0.316341 0.316514
+          0.316735 0.317004 0.317322 0.317686 0.318086 0.318508 0.318923 0.319298 0.319595 0.319787 0.319846 0.315324
+          0.315324 0.315325 0.315326 0.315477 0.315483 0.315483 0.315483 0.315492 0.315962 0.315999 0.316071 0.31618
+          0.316326 0.316509 0.316731 0.316988 0.317278 0.31759 0.317912 0.318223 0.318499 0.318716 0.318854 0.318901
+          0.315284 0.315284 0.315285 0.315286 0.315476 0.315483 0.315483 0.315483 0.315489 0.31584 0.315873 0.315936
+          0.316029 0.316153 0.316306 0.316489 0.316699 0.31693 0.317176 0.317424 0.317661 0.317868 0.318031 0.318134
+          0.318169 0.315237 0.315238 0.315239 0.315239 0.315474 0.315482 0.315483 0.315483 0.315485 0.31572 0.31575
+          0.315808 0.315891 0.315998 0.316128 0.316281 0.316454 0.316643 0.31684 0.317036 0.317221 0.317382 0.317507
+          0.317586 0.317613 0.315182 0.315184 0.31519 0.315186 0.315466 0.315476 0.315477 0.315478 0.315478 0.315596
+          0.315632 0.315689 0.315766 0.315861 0.315975 0.316108 0.316256 0.316415 0.316579 0.316741 0.316892 0.317022
+          0.317123 0.317186 0.317208 0.315116 0.31512 0.315133 0.315171 0.315196 0.315249 0.315297 0.315346 0.315404
+          0.315463 0.315521 0.315582 0.315655 0.315744 0.315849 0.315969 0.316102 0.316244 0.316389 0.316532 0.316663
+          0.316776 0.316863 0.316918 0.316937 0.315037 0.315042 0.315058 0.315085 0.31512 0.315162 0.31521 0.315259
+          0.315312 0.315368 0.315425 0.315487 0.31556 0.315647 0.315748 0.315864 0.315992 0.316129 0.316268 0.316404
+          0.316529 0.316637 0.316719 0.316771 0.316789
         </DataArray>
         <DataArray type="Float32" Name="x_w^N2" NumberOfComponents="1" format="ascii">
           1.14721e-05 1.1477e-05 1.14721e-05 1.14747e-05 1.14792e-05 1.14765e-05 1.14804e-05 1.14774e-05 1.14727e-05 1.14724e-05 1.14723e-05 1.14721e-05
-          1.14723e-05 1.14721e-05 1.14723e-05 1.14721e-05 1.14743e-05 1.1474e-05 1.1539e-05 1.15353e-05 1.15422e-05 1.15388e-05 1.15494e-05 1.15459e-05
-          1.15606e-05 1.1557e-05 1.15766e-05 1.15728e-05 1.1598e-05 1.1594e-05 1.16259e-05 1.16217e-05 1.16617e-05 1.1657e-05 1.17069e-05 1.17015e-05
-          1.17634e-05 1.17571e-05 1.1833e-05 1.18253e-05 1.19099e-05 1.1901e-05 1.19456e-05 1.19407e-05 1.19265e-05 1.19208e-05 1.24512e-05 1.23223e-05
-          0 0 1.14721e-05 1.14736e-05 1.14747e-05 1.14753e-05 1.14723e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14738e-05 1.15315e-05
-          1.15349e-05 1.15419e-05 1.15527e-05 1.1568e-05 1.15886e-05 1.16153e-05 1.16493e-05 1.16921e-05 1.17452e-05 1.18097e-05 1.18812e-05 1.19189e-05
-          1.186e-05 1.22214e-05 0 1.14721e-05 1.14729e-05 1.14736e-05 1.14739e-05 1.14722e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14737e-05
-          1.15274e-05 1.15307e-05 1.15373e-05 1.15477e-05 1.15623e-05 1.15818e-05 1.1607e-05 1.16391e-05 1.16792e-05 1.17286e-05 1.17882e-05 1.18549e-05
-          1.1897e-05 1.17707e-05 1.20238e-05 0 1.14721e-05 1.14724e-05 1.14727e-05 1.14729e-05 1.14722e-05 1.14721e-05 1.14721e-05 1.14721e-05
-          1.14735e-05 1.15231e-05 1.15262e-05 1.15324e-05 1.15421e-05 1.15557e-05 1.15739e-05 1.15973e-05 1.16268e-05 1.16635e-05 1.17084e-05 1.17625e-05
-          1.18257e-05 1.18904e-05 1.19099e-05 1.15142e-05 0 1.14718e-05 1.14719e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14721e-05
-          1.14721e-05 1.14734e-05 1.15185e-05 1.15214e-05 1.15271e-05 1.15361e-05 1.15485e-05 1.15651e-05 1.15863e-05 1.16129e-05 1.16457e-05 1.16856e-05
-          1.17335e-05 1.1789e-05 1.18371e-05 1.17939e-05 1.21363e-05 1.09826e-05 1.14712e-05 1.14712e-05 1.14713e-05 1.14713e-05 1.14721e-05 1.14721e-05
-          1.14721e-05 1.14721e-05 1.14732e-05 1.15139e-05 1.15165e-05 1.15217e-05 1.15297e-05 1.15409e-05 1.15557e-05 1.15745e-05 1.15979e-05 1.16266e-05
-          1.1661e-05 1.17019e-05 1.175e-05 1.18033e-05 1.18444e-05 1.17467e-05 1.17608e-05 1.14705e-05 1.14705e-05 1.14705e-05 1.14706e-05 1.14721e-05
-          1.14721e-05 1.14721e-05 1.14721e-05 1.14731e-05 1.15091e-05 1.15114e-05 1.15161e-05 1.15232e-05 1.15331e-05 1.1546e-05 1.15624e-05 1.15826e-05
-          1.16069e-05 1.16356e-05 1.1669e-05 1.17066e-05 1.17463e-05 1.17736e-05 1.17699e-05 1.17805e-05 1.14697e-05 1.14697e-05 1.14697e-05 1.14697e-05
-          1.1472e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14729e-05 1.15044e-05 1.15064e-05 1.15105e-05 1.15167e-05 1.15253e-05 1.15364e-05 1.15503e-05
-          1.15673e-05 1.15874e-05 1.16107e-05 1.16368e-05 1.16646e-05 1.16911e-05 1.17113e-05 1.17212e-05 1.17251e-05 1.14688e-05 1.14688e-05 1.14688e-05
-          1.14688e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14728e-05 1.14996e-05 1.15014e-05 1.15049e-05 1.15103e-05 1.15176e-05 1.15271e-05
-          1.15388e-05 1.15528e-05 1.15691e-05 1.15875e-05 1.16074e-05 1.16277e-05 1.16464e-05 1.16609e-05 1.16698e-05 1.16727e-05 1.14677e-05 1.14677e-05
-          1.14677e-05 1.14677e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14727e-05 1.1495e-05 1.14965e-05 1.14996e-05 1.15041e-05 1.15103e-05
-          1.15183e-05 1.15279e-05 1.15393e-05 1.15524e-05 1.15668e-05 1.15819e-05 1.15969e-05 1.16104e-05 1.1621e-05 1.16277e-05 1.16299e-05 1.14664e-05
-          1.14664e-05 1.14665e-05 1.14665e-05 1.14719e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14725e-05 1.14905e-05 1.14918e-05 1.14944e-05 1.14983e-05
-          1.15035e-05 1.15101e-05 1.15181e-05 1.15273e-05 1.15377e-05 1.15489e-05 1.15605e-05 1.15717e-05 1.15816e-05 1.15894e-05 1.15944e-05 1.15961e-05
-          1.1465e-05 1.1465e-05 1.1465e-05 1.14651e-05 1.14719e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14724e-05 1.1486e-05 1.14872e-05 1.14895e-05
-          1.14928e-05 1.14973e-05 1.15028e-05 1.15094e-05 1.15169e-05 1.15252e-05 1.1534e-05 1.15429e-05 1.15514e-05 1.15589e-05 1.15647e-05 1.15684e-05
-          1.15697e-05 1.14633e-05 1.14633e-05 1.14634e-05 1.14634e-05 1.14718e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14722e-05 1.14816e-05 1.14828e-05
-          1.14848e-05 1.14878e-05 1.14917e-05 1.14964e-05 1.15019e-05 1.15081e-05 1.15149e-05 1.1522e-05 1.1529e-05 1.15356e-05 1.15414e-05 1.15459e-05
-          1.15487e-05 1.15497e-05 1.14613e-05 1.14614e-05 1.14616e-05 1.14615e-05 1.14715e-05 1.14719e-05 1.14719e-05 1.1472e-05 1.1472e-05 1.14771e-05
-          1.14784e-05 1.14805e-05 1.14833e-05 1.14867e-05 1.14909e-05 1.14956e-05 1.15009e-05 1.15067e-05 1.15126e-05 1.15184e-05 1.15238e-05 1.15285e-05
-          1.15321e-05 1.15343e-05 1.15351e-05 1.1459e-05 1.14591e-05 1.14596e-05 1.1461e-05 1.14621e-05 1.1464e-05 1.14659e-05 1.14678e-05 1.147e-05
-          1.14722e-05 1.14744e-05 1.14766e-05 1.14793e-05 1.14825e-05 1.14863e-05 1.14906e-05 1.14954e-05 1.15005e-05 1.15057e-05 1.15108e-05 1.15156e-05
-          1.15196e-05 1.15227e-05 1.15247e-05 1.15254e-05 1.14561e-05 1.14563e-05 1.14569e-05 1.14579e-05 1.14593e-05 1.14609e-05 1.14627e-05 1.14646e-05
-          1.14666e-05 1.14687e-05 1.14709e-05 1.14732e-05 1.14758e-05 1.1479e-05 1.14826e-05 1.14868e-05 1.14914e-05 1.14963e-05 1.15013e-05 1.15062e-05
-          1.15107e-05 1.15146e-05 1.15175e-05 1.15194e-05 1.152e-05
+          1.14723e-05 1.14721e-05 1.14723e-05 1.14721e-05 1.14742e-05 1.14739e-05 1.15382e-05 1.15345e-05 1.15415e-05 1.1538e-05 1.15487e-05 1.15452e-05
+          1.15601e-05 1.15565e-05 1.15763e-05 1.15725e-05 1.1598e-05 1.1594e-05 1.16262e-05 1.16219e-05 1.16624e-05 1.16576e-05 1.17079e-05 1.17025e-05
+          1.17649e-05 1.17586e-05 1.18351e-05 1.18274e-05 1.19134e-05 1.19041e-05 1.19542e-05 1.19467e-05 1.19303e-05 1.19243e-05 1.24568e-05 1.23282e-05
+          0 0 1.14721e-05 1.14736e-05 1.14747e-05 1.14753e-05 1.14723e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14737e-05 1.15307e-05
+          1.15342e-05 1.15412e-05 1.15522e-05 1.15677e-05 1.15885e-05 1.16155e-05 1.16499e-05 1.16931e-05 1.17466e-05 1.18116e-05 1.1884e-05 1.19237e-05
+          1.18633e-05 1.2227e-05 0 1.14721e-05 1.14729e-05 1.14736e-05 1.14739e-05 1.14722e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14736e-05
+          1.15266e-05 1.15299e-05 1.15367e-05 1.15472e-05 1.15619e-05 1.15817e-05 1.16072e-05 1.16396e-05 1.16801e-05 1.17298e-05 1.17899e-05 1.18573e-05
+          1.19003e-05 1.17737e-05 1.20289e-05 0 1.14721e-05 1.14724e-05 1.14727e-05 1.14729e-05 1.14722e-05 1.14721e-05 1.14721e-05 1.14721e-05
+          1.14734e-05 1.15222e-05 1.15254e-05 1.15317e-05 1.15415e-05 1.15553e-05 1.15737e-05 1.15974e-05 1.16272e-05 1.16643e-05 1.17096e-05 1.17641e-05
+          1.18277e-05 1.1893e-05 1.19131e-05 1.15178e-05 0 1.14718e-05 1.14719e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14721e-05
+          1.14721e-05 1.14733e-05 1.15177e-05 1.15206e-05 1.15264e-05 1.15355e-05 1.15481e-05 1.15648e-05 1.15863e-05 1.16132e-05 1.16464e-05 1.16866e-05
+          1.17348e-05 1.17907e-05 1.18397e-05 1.18002e-05 1.21378e-05 1.09851e-05 1.14712e-05 1.14712e-05 1.14713e-05 1.14713e-05 1.14721e-05 1.14721e-05
+          1.14721e-05 1.14721e-05 1.14731e-05 1.1513e-05 1.15156e-05 1.15209e-05 1.15291e-05 1.15404e-05 1.15554e-05 1.15745e-05 1.15981e-05 1.16271e-05
+          1.16618e-05 1.1703e-05 1.17514e-05 1.18051e-05 1.1847e-05 1.17472e-05 1.17622e-05 1.14705e-05 1.14705e-05 1.14705e-05 1.14706e-05 1.14721e-05
+          1.14721e-05 1.14721e-05 1.14721e-05 1.1473e-05 1.15082e-05 1.15106e-05 1.15153e-05 1.15225e-05 1.15325e-05 1.15457e-05 1.15622e-05 1.15826e-05
+          1.16072e-05 1.16362e-05 1.16698e-05 1.17077e-05 1.17476e-05 1.17752e-05 1.17714e-05 1.17822e-05 1.14697e-05 1.14697e-05 1.14697e-05 1.14697e-05
+          1.1472e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14729e-05 1.15035e-05 1.15055e-05 1.15096e-05 1.1516e-05 1.15247e-05 1.15359e-05 1.15501e-05
+          1.15672e-05 1.15876e-05 1.16111e-05 1.16374e-05 1.16654e-05 1.16922e-05 1.17125e-05 1.17225e-05 1.17264e-05 1.14687e-05 1.14687e-05 1.14687e-05
+          1.14688e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14727e-05 1.14987e-05 1.15005e-05 1.15041e-05 1.15095e-05 1.1517e-05 1.15265e-05
+          1.15384e-05 1.15526e-05 1.15691e-05 1.15877e-05 1.16078e-05 1.16283e-05 1.16471e-05 1.16618e-05 1.16707e-05 1.16737e-05 1.14676e-05 1.14676e-05
+          1.14676e-05 1.14677e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14726e-05 1.14941e-05 1.14956e-05 1.14987e-05 1.15033e-05 1.15096e-05
+          1.15176e-05 1.15274e-05 1.1539e-05 1.15522e-05 1.15668e-05 1.15821e-05 1.15972e-05 1.16108e-05 1.16215e-05 1.16283e-05 1.16306e-05 1.14664e-05
+          1.14664e-05 1.14664e-05 1.14664e-05 1.14719e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14725e-05 1.14896e-05 1.14909e-05 1.14935e-05 1.14975e-05
+          1.15028e-05 1.15094e-05 1.15175e-05 1.15269e-05 1.15374e-05 1.15488e-05 1.15604e-05 1.15718e-05 1.15818e-05 1.15897e-05 1.15947e-05 1.15964e-05
+          1.14649e-05 1.14649e-05 1.14649e-05 1.14649e-05 1.14719e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14723e-05 1.14851e-05 1.14863e-05 1.14886e-05
+          1.1492e-05 1.14965e-05 1.15021e-05 1.15087e-05 1.15163e-05 1.15247e-05 1.15337e-05 1.15427e-05 1.15513e-05 1.15589e-05 1.15648e-05 1.15685e-05
+          1.15698e-05 1.14632e-05 1.14632e-05 1.14632e-05 1.14633e-05 1.14718e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14722e-05 1.14807e-05 1.14818e-05
+          1.1484e-05 1.1487e-05 1.14908e-05 1.14956e-05 1.15011e-05 1.15074e-05 1.15143e-05 1.15215e-05 1.15286e-05 1.15353e-05 1.15412e-05 1.15457e-05
+          1.15486e-05 1.15496e-05 1.14612e-05 1.14613e-05 1.14615e-05 1.14613e-05 1.14715e-05 1.14719e-05 1.14719e-05 1.14719e-05 1.14719e-05 1.14762e-05
+          1.14775e-05 1.14796e-05 1.14824e-05 1.14859e-05 1.149e-05 1.14948e-05 1.15002e-05 1.1506e-05 1.1512e-05 1.15179e-05 1.15234e-05 1.15281e-05
+          1.15317e-05 1.15341e-05 1.15348e-05 1.14588e-05 1.14589e-05 1.14594e-05 1.14608e-05 1.14617e-05 1.14636e-05 1.14653e-05 1.14671e-05 1.14692e-05
+          1.14714e-05 1.14735e-05 1.14757e-05 1.14784e-05 1.14816e-05 1.14854e-05 1.14898e-05 1.14946e-05 1.14998e-05 1.15051e-05 1.15103e-05 1.1515e-05
+          1.15191e-05 1.15223e-05 1.15243e-05 1.1525e-05 1.14559e-05 1.14561e-05 1.14567e-05 1.14577e-05 1.14589e-05 1.14605e-05 1.14622e-05 1.1464e-05
+          1.14659e-05 1.14679e-05 1.147e-05 1.14723e-05 1.14749e-05 1.14781e-05 1.14818e-05 1.1486e-05 1.14906e-05 1.14956e-05 1.15007e-05 1.15056e-05
+          1.15102e-05 1.15141e-05 1.15171e-05 1.1519e-05 1.15196e-05
         </DataArray>
         <DataArray type="Float32" Name="x_n^H2O" NumberOfComponents="1" format="ascii">
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100005 0.0100005
-          0.0100087 0.0100076 0.0101131 0.0100995 0.0110976 0.0109796 0.0174004 0.0166468 0.0298774 0.0298912 0.0286542 0.0289454
+          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100004 0.0100003
+          0.010007 0.0100062 0.010099 0.0100882 0.0110103 0.0109177 0.0169269 0.0163879 0.0298681 0.0298826 0.0286417 0.0289319
           0.0158487 0.0158487 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100003 0.0100052 0.0100708 0.0107433 0.0155615
-          0.0300398 0.0291774 0.0158487 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100001 0.0100025 0.0100369 0.0104217
-          0.0136237 0.0302607 0.0296427 0.0158487 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100007 0.0100099
-          0.0101074 0.0108771 0.0153876 0.030914 0.0158487 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100007
-          0.0100127 0.0101898 0.0120979 0.0241909 0.029376 0.0323619 0.01 0.01 0.01 0.01 0.01 0.01
+          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100002 0.0100042 0.0100627 0.0106987 0.0153862
+          0.0300317 0.0291644 0.0158487 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
+          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100001 0.0100021 0.0100327 0.0103991
+          0.013562 0.0302533 0.0296305 0.0158487 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
+          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100006 0.0100084
+          0.010098 0.010842 0.0153507 0.0309048 0.0158487 0.01 0.01 0.01 0.01 0.01 0.01 0.01
+          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100005
+          0.0100112 0.0101779 0.012034 0.0238217 0.0293726 0.0323548 0.01 0.01 0.01 0.01 0.01 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.0100002 0.0100034 0.0100481 0.010504 0.0134233 0.0210688 0.0152867 0.01 0.01 0.01 0.01 0.01
+          0.0100001 0.0100029 0.0100435 0.0104791 0.0133471 0.0211655 0.0153139 0.01 0.01 0.01 0.01 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.0100005 0.0100066 0.0100668 0.01048 0.0115903 0.010516 0.01 0.01 0.01 0.01
+          0.01 0.01 0.0100004 0.0100056 0.0100609 0.0104581 0.0115842 0.0105044 0.01 0.01 0.01 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.0100001 0.0100006 0.0100062 0.0100421 0.0101348 0.010049 0.01 0.01 0.01
+          0.01 0.01 0.01 0.01 0.0100005 0.0100053 0.0100384 0.0101292 0.0100459 0.01 0.01 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.0100004 0.0100027 0.010008 0.0100036 0.01 0.01
+          0.01 0.01 0.01 0.01 0.01 0.01 0.0100003 0.0100023 0.0100072 0.0100031 0.01 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100001 0.0100004 0.0100002 0.01
+          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100001 0.0100003 0.0100002 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
@@ -462,25 +462,25 @@
         <DataArray type="Float32" Name="x_n^N2" NumberOfComponents="1" format="ascii">
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.99
-          0.989991 0.989992 0.989887 0.9899 0.988902 0.98902 0.9826 0.983353 0.970123 0.970109 0.971346 0.971055
+          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
+          0.989993 0.989994 0.989901 0.989912 0.98899 0.989082 0.983073 0.983612 0.970132 0.970117 0.971358 0.971068
           0 0 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989995 0.989929 0.989257 0.984438
-          0.96996 0.970823 0 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989997 0.989963 0.989578
-          0.986376 0.969739 0.970357 0 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.98999
-          0.989893 0.989123 0.984612 0.969086 0 0.99 0.99 0.99 0.99 0.99 0.99 0.99
+          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989996 0.989937 0.989301 0.984614
+          0.969968 0.970836 0 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
+          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989998 0.989967 0.989601
+          0.986438 0.969747 0.970369 0 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
+          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.989992
+          0.989902 0.989158 0.984649 0.969095 0 0.99 0.99 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989999
-          0.989987 0.98981 0.987902 0.975809 0.970624 0.967638 0.99 0.99 0.99 0.99 0.99 0.99
+          0.989989 0.989822 0.987966 0.976178 0.970627 0.967645 0.99 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.989997 0.989952 0.989496 0.986577 0.978931 0.984713 0.99 0.99 0.99 0.99 0.99
+          0.99 0.989997 0.989956 0.989521 0.986653 0.978835 0.984686 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.989999 0.989993 0.989933 0.98952 0.98841 0.989484 0.99 0.99 0.99 0.99
+          0.99 0.99 0.99 0.989994 0.989939 0.989542 0.988416 0.989496 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.989999 0.989994 0.989958 0.989865 0.989951 0.99 0.99 0.99
+          0.99 0.99 0.99 0.99 0.989999 0.989995 0.989962 0.989871 0.989954 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989997 0.989992 0.989996 0.99 0.99
+          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989998 0.989993 0.989997 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
@@ -498,6 +498,42 @@
           0.99 0.99 0.99 0.99 0.99
         </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 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          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 2.5 0 0 0 2.5 0 2.5 2.5 0
diff --git a/test/references/obstaclecc-reference.vtu b/test/references/obstaclecc-reference.vtu
index 3e11cfdc591e5b61cd078f194ffde70729a44296..6eb2d2aae4bb44b0db0837844cba8af31a0cfd2c 100644
--- a/test/references/obstaclecc-reference.vtu
+++ b/test/references/obstaclecc-reference.vtu
@@ -5,15 +5,15 @@
       <CellData Scalars="S_w">
         <DataArray type="Float32" Name="S_w" 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.00607688 0.593617 1
+          0 0 0 0 0 0 0 0 0 0.000121468 0.0661699 0.945601
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0.0051283 0.551467 1
+          0 0 0 0 0 0 0 0 0 7.2968e-05 0.0520907 0.918706
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0.00462848 0.552946 1
+          0 0 0 0 0 0 0 0 0 5.04118e-05 0.048379 0.926554
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 1.19802e-05 0.0358665 0.92649
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0.00329107 0.52197 1
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0.000793555 0.428009
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
@@ -39,15 +39,15 @@
         </DataArray>
         <DataArray type="Float32" Name="S_n" NumberOfComponents="1" format="ascii">
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 1 1 1 1 1 1 0.993923 0.406383 0
+          1 1 1 1 1 1 1 1 1 0.999879 0.93383 0.0543986
+          1 1 1 1 1 1 1 1 1 1 1 1
+          1 1 1 1 1 1 1 1 1 0.999927 0.947909 0.0812942
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 1 1 1 1 1 1 0.994872 0.448533 0
+          1 1 1 1 1 1 1 1 1 0.99995 0.951621 0.0734462
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 1 1 1 1 1 1 0.995372 0.447054 0
+          1 1 1 1 1 1 1 1 1 0.999988 0.964134 0.0735104
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 1 1 1 1 1 1 0.996709 0.47803 0
           1 1 1 1 1 1 1 1 1 1 1 1
-          1 1 1 1 1 1 1 1 1 1 0.999206 0.571991
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1 1 1
@@ -72,94 +72,94 @@
           1 1 1 1 1 1 1 1 1 1 1 1
         </DataArray>
         <DataArray type="Float32" Name="p_w" NumberOfComponents="1" format="ascii">
-          100000 100031 100048 100056 100004 100001 100001 100017 100563 100596 100663 100769
-          100918 101118 101380 101717 102145 102683 103359 104202 105256 106560 110413 200000
-          100000 100018 100030 100036 100002 100000 100000 100015 100531 100563 100629 100732
-          100877 101072 101326 101652 102065 102583 103229 104033 105033 106274 109652 200000
-          100000 100010 100018 100022 100001 100000 100000 100013 100495 100526 100588 100686
-          100824 101009 101248 101554 101939 102417 103009 103735 104627 105724 108716 200000
-          100000 100005 100009 100012 100001 100000 100000 100012 100455 100484 100542 100633
-          100761 100931 101151 101430 101776 102201 102718 103338 104076 104948 107092 200000
-          99998.1 100000 100002 100004 100000 100000 100000 100011 100413 100439 100493 100575
-          100691 100844 101040 101286 101588 101953 102385 102886 103449 104048 104598 105290
-          99993.9 99994.8 99995.9 99996.6 100000 100000 100000 100009 100369 100392 100440 100514
-          100616 100751 100922 101133 101389 101692 102042 102433 102848 103252 103573 103687
-          99988.5 99988.9 99989.4 99989.8 99999.8 100000 100000 100008 100324 100345 100386 100451
-          100539 100655 100801 100979 101191 101437 101714 102012 102316 102596 102808 102909
-          99981.9 99982.1 99982.4 99982.6 99999.5 100000 100000 100007 100279 100297 100333 100388
-          100464 100561 100683 100830 101003 101199 101414 101640 101862 102060 102208 102284
-          99974.3 99974.5 99974.6 99974.8 99999.3 100000 100000 100005 100234 100250 100280 100327
-          100390 100472 100572 100692 100830 100984 101150 101320 101484 101625 101730 101785
-          99965.5 99965.6 99965.8 99966 99999 100000 100000 100004 100191 100204 100230 100269
-          100322 100389 100471 100567 100676 100797 100924 101052 101172 101275 101350 101390
-          99955.2 99955.4 99955.8 99956 99998.6 100000 100000 100003 100150 100161 100182 100215
-          100258 100313 100379 100456 100543 100636 100734 100830 100920 100995 101050 101079
-          99943.3 99943.6 99944.2 99944.8 99998.1 100000 100000 100002 100109 100119 100137 100164
-          100201 100246 100299 100361 100429 100502 100577 100651 100718 100774 100814 100835
-          99929.3 99930 99931.2 99932.4 99997.6 99999.9 100000 100001 100070 100079 100095 100119
-          100149 100186 100230 100280 100335 100393 100452 100508 100560 100602 100632 100648
-          99912.8 99914.1 99916.4 99919.3 99995 99998.3 99998.6 99998.3 100031 100040 100056 100077
-          100103 100135 100172 100214 100259 100306 100353 100399 100439 100473 100496 100509
-          99893.3 99895.2 99899.4 99907.4 99924.2 99938.7 99952.9 99968.7 99988.5 100003 100020 100040
-          100064 100092 100125 100161 100200 100240 100280 100318 100352 100380 100400 100410
-          99869.9 99872.1 99877 99885.4 99898 99911.4 99925.1 99939.9 99955.9 99971.4 99988 100007
-          100030 100057 100087 100121 100156 100194 100230 100265 100296 100321 100339 100348
+          100021 100046 100060 100066 100004 100001 100001 100020 100689 100734 100825 100967
+          101169 101442 101801 102263 102850 103588 104507 105638 107017 108670 110666 146617
+          100011 100029 100040 100045 100002 100000 100000 100018 100655 100699 100787 100926
+          101123 101389 101737 102184 102751 103460 104340 105421 106740 108343 110359 138736
+          100007 100018 100026 100030 100001 100000 100000 100016 100615 100656 100741 100873
+          101060 101311 101639 102059 102587 103243 104049 105029 106209 107625 109366 135967
+          100004 100011 100016 100018 100001 100000 100000 100015 100569 100608 100687 100810
+          100983 101214 101515 101896 102372 102955 103661 104499 105479 106603 107897 128463
+          100002 100005 100008 100009 100000 100000 100000 100013 100520 100555 100627 100738
+          100895 101103 101371 101708 102122 102623 103215 103896 104649 105427 106095 106250
+          99998 99999.1 100000 100001 100000 100000 100000 100012 100467 100499 100563 100662
+          100801 100983 101216 101506 101857 102274 102755 103289 103852 104394 104821 105008
+          99992.1 99992.6 99993.2 99993.6 99999.9 100000 100000 100010 100413 100441 100497 100584
+          100704 100861 101059 101302 101593 101932 102313 102724 103141 103524 103818 103968
+          99985.2 99985.4 99985.7 99986 99999.6 100000 100000 100009 100359 100383 100432 100506
+          100607 100740 100906 101106 101342 101612 101910 102222 102530 102805 103012 103122
+          99977.2 99977.4 99977.6 99977.8 99999.4 100000 100000 100007 100306 100327 100367 100430
+          100515 100625 100761 100924 101113 101325 101555 101790 102018 102216 102364 102442
+          99968.1 99968.3 99968.5 99968.7 99999 100000 100000 100006 100254 100272 100306 100358
+          100429 100519 100630 100761 100910 101075 101251 101428 101596 101740 101846 101902
+          99957.8 99958 99958.4 99958.7 99998.6 100000 100000 100004 100205 100219 100248 100292
+          100350 100424 100513 100617 100735 100863 100997 101131 101255 101360 101437 101478
+          99945.8 99946.2 99946.9 99947.5 99998.2 100000 100000 100003 100157 100170 100195 100231
+          100279 100340 100412 100495 100588 100688 100791 100891 100984 101062 101118 101148
+          99931.9 99932.7 99934.1 99935.4 99997.6 100000 100000 100002 100111 100123 100145 100176
+          100217 100267 100326 100393 100467 100546 100626 100704 100774 100833 100875 100897
+          99915.7 99917.1 99919.8 99923.1 99995.2 99998.5 99999 99999.5 100066 100079 100100 100128
+          100163 100206 100256 100311 100372 100436 100500 100562 100617 100663 100696 100713
+          99896.3 99898.5 99903.4 99912.7 99932.1 99949.7 99968.1 99989.3 100017 100037 100060 100086
+          100118 100156 100200 100248 100300 100355 100409 100461 100507 100545 100572 100586
+          99873 99875.6 99881.3 99891.1 99906 99922.4 99940.1 99959.9 99981.9 100003 100025 100051
+          100082 100117 100158 100203 100251 100301 100350 100397 100439 100473 100497 100510
         </DataArray>
         <DataArray type="Float32" Name="p_n" NumberOfComponents="1" format="ascii">
-          100000 100031 100048 100056 100004 100001 100001 100017 100563 100596 100663 100769
-          100918 101118 101380 101717 102145 102683 103359 104202 105256 106560 110413 200000
-          100000 100018 100030 100036 100002 100000 100000 100015 100531 100563 100629 100732
-          100877 101072 101326 101652 102065 102583 103229 104033 105033 106274 109652 200000
-          100000 100010 100018 100022 100001 100000 100000 100013 100495 100526 100588 100686
-          100824 101009 101248 101554 101939 102417 103009 103735 104627 105724 108716 200000
-          100000 100005 100009 100012 100001 100000 100000 100012 100455 100484 100542 100633
-          100761 100931 101151 101430 101776 102201 102718 103338 104076 104948 107092 200000
-          99998.1 100000 100002 100004 100000 100000 100000 100011 100413 100439 100493 100575
-          100691 100844 101040 101286 101588 101953 102385 102886 103449 104048 104598 105290
-          99993.9 99994.8 99995.9 99996.6 100000 100000 100000 100009 100369 100392 100440 100514
-          100616 100751 100922 101133 101389 101692 102042 102433 102848 103252 103573 103687
-          99988.5 99988.9 99989.4 99989.8 99999.8 100000 100000 100008 100324 100345 100386 100451
-          100539 100655 100801 100979 101191 101437 101714 102012 102316 102596 102808 102909
-          99981.9 99982.1 99982.4 99982.6 99999.5 100000 100000 100007 100279 100297 100333 100388
-          100464 100561 100683 100830 101003 101199 101414 101640 101862 102060 102208 102284
-          99974.3 99974.5 99974.6 99974.8 99999.3 100000 100000 100005 100234 100250 100280 100327
-          100390 100472 100572 100692 100830 100984 101150 101320 101484 101625 101730 101785
-          99965.5 99965.6 99965.8 99966 99999 100000 100000 100004 100191 100204 100230 100269
-          100322 100389 100471 100567 100676 100797 100924 101052 101172 101275 101350 101390
-          99955.2 99955.4 99955.8 99956 99998.6 100000 100000 100003 100150 100161 100182 100215
-          100258 100313 100379 100456 100543 100636 100734 100830 100920 100995 101050 101079
-          99943.3 99943.6 99944.2 99944.8 99998.1 100000 100000 100002 100109 100119 100137 100164
-          100201 100246 100299 100361 100429 100502 100577 100651 100718 100774 100814 100835
-          99929.3 99930 99931.2 99932.4 99997.6 99999.9 100000 100001 100070 100079 100095 100119
-          100149 100186 100230 100280 100335 100393 100452 100508 100560 100602 100632 100648
-          99912.8 99914.1 99916.4 99919.3 99995 99998.3 99998.6 99998.3 100031 100040 100056 100077
-          100103 100135 100172 100214 100259 100306 100353 100399 100439 100473 100496 100509
-          99893.3 99895.2 99899.4 99907.4 99924.2 99938.7 99952.9 99968.7 99988.5 100003 100020 100040
-          100064 100092 100125 100161 100200 100240 100280 100318 100352 100380 100400 100410
-          99869.9 99872.1 99877 99885.4 99898 99911.4 99925.1 99939.9 99955.9 99971.4 99988 100007
-          100030 100057 100087 100121 100156 100194 100230 100265 100296 100321 100339 100348
+          100021 100046 100060 100066 100004 100001 100001 100020 100689 100734 100825 100967
+          101169 101442 101801 102263 102850 103588 104507 105638 107017 108670 110666 146617
+          100011 100029 100040 100045 100002 100000 100000 100018 100655 100699 100787 100926
+          101123 101389 101737 102184 102751 103460 104340 105421 106740 108343 110359 138736
+          100007 100018 100026 100030 100001 100000 100000 100016 100615 100656 100741 100873
+          101060 101311 101639 102059 102587 103243 104049 105029 106209 107625 109366 135967
+          100004 100011 100016 100018 100001 100000 100000 100015 100569 100608 100687 100810
+          100983 101214 101515 101896 102372 102955 103661 104499 105479 106603 107897 128463
+          100002 100005 100008 100009 100000 100000 100000 100013 100520 100555 100627 100738
+          100895 101103 101371 101708 102122 102623 103215 103896 104649 105427 106095 106250
+          99998 99999.1 100000 100001 100000 100000 100000 100012 100467 100499 100563 100662
+          100801 100983 101216 101506 101857 102274 102755 103289 103852 104394 104821 105008
+          99992.1 99992.6 99993.2 99993.6 99999.9 100000 100000 100010 100413 100441 100497 100584
+          100704 100861 101059 101302 101593 101932 102313 102724 103141 103524 103818 103968
+          99985.2 99985.4 99985.7 99986 99999.6 100000 100000 100009 100359 100383 100432 100506
+          100607 100740 100906 101106 101342 101612 101910 102222 102530 102805 103012 103122
+          99977.2 99977.4 99977.6 99977.8 99999.4 100000 100000 100007 100306 100327 100367 100430
+          100515 100625 100761 100924 101113 101325 101555 101790 102018 102216 102364 102442
+          99968.1 99968.3 99968.5 99968.7 99999 100000 100000 100006 100254 100272 100306 100358
+          100429 100519 100630 100761 100910 101075 101251 101428 101596 101740 101846 101902
+          99957.8 99958 99958.4 99958.7 99998.6 100000 100000 100004 100205 100219 100248 100292
+          100350 100424 100513 100617 100735 100863 100997 101131 101255 101360 101437 101478
+          99945.8 99946.2 99946.9 99947.5 99998.2 100000 100000 100003 100157 100170 100195 100231
+          100279 100340 100412 100495 100588 100688 100791 100891 100984 101062 101118 101148
+          99931.9 99932.7 99934.1 99935.4 99997.6 100000 100000 100002 100111 100123 100145 100176
+          100217 100267 100326 100393 100467 100546 100626 100704 100774 100833 100875 100897
+          99915.7 99917.1 99919.8 99923.1 99995.2 99998.5 99999 99999.5 100066 100079 100100 100128
+          100163 100206 100256 100311 100372 100436 100500 100562 100617 100663 100696 100713
+          99896.3 99898.5 99903.4 99912.7 99932.1 99949.7 99968.1 99989.3 100017 100037 100060 100086
+          100118 100156 100200 100248 100300 100355 100409 100461 100507 100545 100572 100586
+          99873 99875.6 99881.3 99891.1 99906 99922.4 99940.1 99959.9 99981.9 100003 100025 100051
+          100082 100117 100158 100203 100251 100301 100350 100397 100439 100473 100497 100510
         </DataArray>
         <DataArray type="Float32" Name="rho_w" NumberOfComponents="1" format="ascii">
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
-          997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.05 997.05 997.051 997.052 997.093
-          997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
-          997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.05 997.05 997.052 997.093
+          997.048 997.048 997.048 997.049 997.049 997.049 997.05 997.05 997.051 997.052 997.052 997.069
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
-          997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.05 997.05 997.052 997.093
+          997.048 997.048 997.048 997.049 997.049 997.049 997.05 997.05 997.051 997.051 997.052 997.065
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
-          997.048 997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.05 997.051 997.093
+          997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.05 997.05 997.051 997.052 997.064
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
-          997.048 997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.049 997.05 997.05
+          997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.05 997.05 997.051 997.051 997.06
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
-          997.048 997.048 997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.049 997.049
-          997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
-          997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.049
+          997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.05 997.05 997.05 997.05
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
-          997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049
+          997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.049 997.05 997.05 997.05
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
+          997.048 997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.049 997.049 997.049
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
+          997.048 997.048 997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049 997.049 997.049
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
+          997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.049 997.049 997.049 997.049
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
+          997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.049 997.049
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
@@ -174,50 +174,50 @@
           997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048 997.048
         </DataArray>
         <DataArray type="Float32" Name="rho_n" NumberOfComponents="1" format="ascii">
-          1.12601 1.12636 1.12656 1.12664 1.12606 1.12602 1.12602 1.12621 1.13235 1.13273 1.13348 1.13467
-          1.13635 1.1386 1.14155 1.14535 1.15016 1.15622 1.16378 1.17286 1.18222 1.19139 1.23493 1.45345
-          1.12601 1.12621 1.12635 1.12642 1.12603 1.12601 1.12602 1.12618 1.13199 1.13235 1.1331 1.13425
-          1.13589 1.13808 1.14095 1.14462 1.14926 1.15509 1.16233 1.171 1.1799 1.18816 1.22633 1.45345
-          1.12601 1.12613 1.12621 1.12626 1.12603 1.12601 1.12602 1.12616 1.13158 1.13193 1.13264 1.13374
-          1.13529 1.13737 1.14007 1.14351 1.14785 1.15323 1.15986 1.16771 1.17558 1.18194 1.21575 1.45345
-          1.12601 1.12607 1.12612 1.12614 1.12602 1.12601 1.12601 1.12615 1.13114 1.13146 1.13212 1.13315
-          1.13458 1.1365 1.13898 1.14211 1.14601 1.1508 1.15659 1.16334 1.16983 1.17318 1.19741 1.45345
-          1.12599 1.12601 1.12604 1.12605 1.12602 1.12601 1.12601 1.12613 1.13066 1.13096 1.13156 1.13249
-          1.13379 1.13552 1.13773 1.1405 1.1439 1.148 1.15286 1.15846 1.16438 1.16874 1.16922 1.17704
-          1.12595 1.12595 1.12597 1.12597 1.12601 1.12601 1.12601 1.12612 1.13016 1.13043 1.13097 1.1318
-          1.13295 1.13447 1.13639 1.13877 1.14166 1.14507 1.14901 1.1534 1.15802 1.16217 1.16423 1.16534
-          1.12588 1.12589 1.12589 1.1259 1.12601 1.12601 1.12601 1.1261 1.12966 1.12989 1.13036 1.13109
-          1.13209 1.13339 1.13503 1.13704 1.13943 1.1422 1.14531 1.14867 1.15209 1.15519 1.15739 1.15847
-          1.12581 1.12581 1.12582 1.12582 1.12601 1.12601 1.12601 1.12609 1.12915 1.12935 1.12976 1.13038
-          1.13123 1.13234 1.13371 1.13536 1.1373 1.13951 1.14194 1.14448 1.14698 1.14921 1.15085 1.1517
-          1.12572 1.12573 1.12573 1.12573 1.12601 1.12601 1.12601 1.12607 1.12865 1.12883 1.12917 1.12969
-          1.13041 1.13133 1.13246 1.1338 1.13536 1.1371 1.13897 1.14088 1.14272 1.14432 1.1455 1.14612
-          1.12562 1.12563 1.12563 1.12563 1.126 1.12601 1.12601 1.12606 1.12817 1.12831 1.1286 1.12904
-          1.12964 1.13039 1.13131 1.13239 1.13363 1.13498 1.13642 1.13786 1.13921 1.14037 1.14122 1.14167
-          1.12551 1.12551 1.12551 1.12552 1.126 1.12601 1.12601 1.12605 1.1277 1.12782 1.12806 1.12843
-          1.12892 1.12954 1.13028 1.13115 1.13212 1.13318 1.13428 1.13536 1.13637 1.13722 1.13783 1.13816
-          1.12537 1.12538 1.12539 1.12539 1.12599 1.12601 1.12601 1.12603 1.12724 1.12735 1.12756 1.12787
-          1.12827 1.12878 1.12938 1.13008 1.13085 1.13167 1.13252 1.13334 1.1341 1.13473 1.13518 1.13542
-          1.12522 1.12522 1.12524 1.12525 1.12599 1.12601 1.12601 1.12602 1.1268 1.1269 1.12708 1.12735
-          1.12769 1.12811 1.12861 1.12917 1.12979 1.13044 1.1311 1.13174 1.13231 1.13279 1.13313 1.13331
-          1.12503 1.12505 1.12507 1.12511 1.12596 1.12599 1.126 1.12599 1.12636 1.12647 1.12664 1.12688
-          1.12718 1.12754 1.12795 1.12842 1.12893 1.12946 1.12999 1.1305 1.13096 1.13134 1.1316 1.13174
-          1.12481 1.12483 1.12488 1.12497 1.12516 1.12532 1.12548 1.12566 1.12588 1.12605 1.12624 1.12646
-          1.12673 1.12705 1.12742 1.12782 1.12826 1.12872 1.12917 1.1296 1.12998 1.13029 1.13051 1.13063
-          1.12455 1.12457 1.12463 1.12472 1.12486 1.12502 1.12517 1.12534 1.12552 1.12569 1.12588 1.12609
-          1.12635 1.12665 1.12699 1.12737 1.12778 1.12819 1.12861 1.129 1.12934 1.12963 1.12983 1.12993
+          1.12625 1.12653 1.12669 1.12676 1.12606 1.12602 1.12603 1.12624 1.13378 1.13428 1.1353 1.1369
+          1.13918 1.14226 1.14629 1.1515 1.15811 1.16641 1.17672 1.18916 1.20298 1.21524 1.23779 1.64405
+          1.12614 1.12634 1.12646 1.12652 1.12604 1.12601 1.12602 1.12621 1.13339 1.13388 1.13488 1.13644
+          1.13866 1.14165 1.14557 1.15061 1.15699 1.16497 1.17485 1.18675 1.19995 1.21154 1.23432 1.55499
+          1.12609 1.12622 1.1263 1.12635 1.12603 1.12601 1.12602 1.1262 1.13294 1.1334 1.13436 1.13584
+          1.13795 1.14078 1.14447 1.14919 1.15514 1.16253 1.17158 1.18239 1.19418 1.20343 1.2231 1.5237
+          1.12606 1.12613 1.12619 1.12622 1.12602 1.12601 1.12602 1.12618 1.13242 1.13286 1.13375 1.13513
+          1.13708 1.13969 1.14307 1.14736 1.15272 1.15929 1.16722 1.17651 1.1863 1.19188 1.2065 1.43891
+          1.12604 1.12607 1.1261 1.12611 1.12602 1.12601 1.12601 1.12616 1.13187 1.13226 1.13307 1.13433
+          1.13609 1.13843 1.14145 1.14524 1.14991 1.15555 1.16221 1.16985 1.17809 1.1855 1.19139 1.1929
+          1.12599 1.126 1.12602 1.12603 1.12602 1.12601 1.12601 1.12614 1.13128 1.13163 1.13235 1.13347
+          1.13503 1.13708 1.13971 1.14297 1.14693 1.15162 1.15703 1.16304 1.16935 1.17526 1.17962 1.1815
+          1.12592 1.12593 1.12594 1.12594 1.12601 1.12601 1.12601 1.12613 1.13067 1.13098 1.13161 1.13259
+          1.13394 1.1357 1.13794 1.14068 1.14395 1.14776 1.15206 1.15669 1.16138 1.16567 1.16892 1.17055
+          1.12585 1.12585 1.12585 1.12586 1.12601 1.12601 1.12601 1.12611 1.13006 1.13033 1.13087 1.13171
+          1.13285 1.13435 1.13621 1.13847 1.14113 1.14417 1.14751 1.15103 1.1545 1.15759 1.15992 1.16115
+          1.12576 1.12576 1.12576 1.12576 1.12601 1.12601 1.12601 1.12609 1.12946 1.12969 1.13015 1.13085
+          1.13182 1.13305 1.13459 1.13642 1.13855 1.14094 1.14352 1.14617 1.14873 1.15096 1.15263 1.15351
+          1.12565 1.12566 1.12566 1.12566 1.126 1.12601 1.12601 1.12608 1.12888 1.12907 1.12946 1.13005
+          1.13084 1.13186 1.13311 1.13458 1.13626 1.13812 1.1401 1.1421 1.14398 1.14561 1.1468 1.14743
+          1.12554 1.12554 1.12554 1.12555 1.126 1.12601 1.12601 1.12606 1.12832 1.12848 1.12881 1.1293
+          1.12996 1.13079 1.13179 1.13296 1.13429 1.13573 1.13724 1.13875 1.14014 1.14133 1.14219 1.14265
+          1.1254 1.12541 1.12542 1.12542 1.12599 1.12601 1.12601 1.12605 1.12778 1.12793 1.1282 1.12861
+          1.12916 1.12984 1.13065 1.13159 1.13263 1.13376 1.13491 1.13605 1.1371 1.13797 1.13861 1.13894
+          1.12525 1.12526 1.12527 1.12529 1.12599 1.12601 1.12601 1.12603 1.12727 1.1274 1.12765 1.128
+          1.12846 1.12902 1.12968 1.13044 1.13128 1.13216 1.13306 1.13394 1.13473 1.13539 1.13587 1.13612
+          1.12506 1.12508 1.12511 1.12515 1.12596 1.126 1.126 1.12601 1.12675 1.1269 1.12714 1.12745
+          1.12785 1.12833 1.12889 1.12952 1.1302 1.13092 1.13165 1.13234 1.13297 1.13348 1.13385 1.13404
+          1.12485 1.12487 1.12493 1.12503 1.12525 1.12545 1.12565 1.12589 1.1262 1.12643 1.12668 1.12698
+          1.12734 1.12777 1.12826 1.12881 1.1294 1.13001 1.13062 1.1312 1.13172 1.13215 1.13245 1.13261
+          1.12458 1.12461 1.12468 1.12479 1.12496 1.12514 1.12534 1.12556 1.12581 1.12605 1.1263 1.12659
+          1.12694 1.12734 1.12779 1.1283 1.12884 1.1294 1.12996 1.13049 1.13096 1.13134 1.13161 1.13175
         </DataArray>
         <DataArray type="Float32" Name="lambda_w" 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.374418 672.813 1123.58
+          0 0 0 0 0 0 0 0 0 0.000147402 47.2665 1090.27
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 5.31852e-05 30.5688 1058.37
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0.266027 622.824 1123.58
+          0 0 0 0 0 0 0 0 0 2.53843e-05 26.2027 1067.68
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0.216431 624.578 1123.58
+          0 0 0 0 0 0 0 0 0 1.43347e-06 13.9997 1067.6
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0.109064 587.84 1123.58
           0 0 0 0 0 0 0 0 0 0 0 0
-          0 0 0 0 0 0 0 0 0 0 0.00630176 476.404
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
           0 0 0 0 0 0 0 0 0 0 0 0
@@ -243,15 +243,15 @@
         </DataArray>
         <DataArray type="Float32" Name="lambda_n" NumberOfComponents="1" format="ascii">
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56727.8 22765.8 0
+          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 54359.5 1682.14
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56733.3 25290.5 0
+          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 55202.8 3293.17
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56735.8 25201.9 0
+          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 55423.3 2823.08
+          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
+          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56039.7 2826.93
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56741.2 27057.4 0
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
-          56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.4 32685.6
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
           56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7 56746.7
@@ -310,92 +310,92 @@
           0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
         </DataArray>
         <DataArray type="Float32" Name="x_w^H2O" NumberOfComponents="1" format="ascii">
-          0.315483 0.315581 0.315634 0.315658 0.315494 0.315485 0.315486 0.315536 0.317258 0.317363 0.317576 0.317908
-          0.318377 0.31901 0.319836 0.3209 0.322265 0.324245 0.329966 0.365354 0.56475 0.999988 0.999988 1
-          0.315483 0.315539 0.315577 0.315595 0.315488 0.315483 0.315483 0.315529 0.317157 0.317259 0.317467 0.317791
-          0.318249 0.318863 0.319666 0.320696 0.322011 0.323886 0.329111 0.361668 0.549105 0.999988 0.999988 1
-          0.315483 0.315515 0.315538 0.315551 0.315486 0.315483 0.315483 0.315525 0.317043 0.317141 0.317339 0.317647
-          0.318082 0.318664 0.319421 0.320387 0.321609 0.323295 0.327662 0.355447 0.528019 0.999988 0.999988 1
-          0.315483 0.315498 0.315511 0.315519 0.315485 0.315483 0.315483 0.31552 0.316918 0.317009 0.317194 0.317481
-          0.317884 0.318421 0.319115 0.319993 0.32109 0.322534 0.325772 0.3463 0.490892 0.999988 0.999988 1
-          0.315477 0.315483 0.31549 0.315494 0.315484 0.315483 0.315483 0.315516 0.316785 0.316868 0.317037 0.317297
-          0.317662 0.318145 0.318765 0.31954 0.320494 0.32166 0.323302 0.3285 0.363485 0.551702 0.999988 0.999988
-          0.315463 0.315466 0.31547 0.315472 0.315483 0.315483 0.315483 0.315512 0.316646 0.31672 0.316871 0.317103
-          0.317426 0.317851 0.31839 0.319058 0.319866 0.320824 0.321955 0.323596 0.329263 0.361799 0.484438 0.498412
-          0.315446 0.315447 0.315449 0.31545 0.315482 0.315483 0.315483 0.315508 0.316504 0.316569 0.316701 0.316904
-          0.317184 0.31755 0.31801 0.318571 0.31924 0.320017 0.320891 0.321865 0.323202 0.327252 0.343142 0.347924
-          0.315426 0.315426 0.315427 0.315428 0.315481 0.315483 0.315483 0.315503 0.316362 0.316419 0.316532 0.316706
-          0.316945 0.317254 0.317638 0.318102 0.318646 0.319265 0.319944 0.320659 0.321384 0.322227 0.323883 0.324667
-          0.315402 0.315402 0.315403 0.315403 0.31548 0.315483 0.315483 0.3155 0.316222 0.31627 0.316367 0.316514
-          0.316714 0.316972 0.317288 0.317665 0.318101 0.318588 0.319112 0.319648 0.320164 0.320623 0.321019 0.321232
-          0.315374 0.315374 0.315375 0.315375 0.315479 0.315483 0.315483 0.315496 0.316086 0.316127 0.316208 0.316331
-          0.316498 0.316709 0.316967 0.31727 0.317616 0.317996 0.318397 0.318801 0.319181 0.319506 0.319746 0.319873
-          0.315341 0.315342 0.315343 0.315344 0.315478 0.315483 0.315483 0.315492 0.315955 0.315989 0.316057 0.31616
-          0.316297 0.316471 0.316679 0.316922 0.317194 0.31749 0.317798 0.318102 0.318384 0.318622 0.318794 0.318885
-          0.315304 0.315305 0.315307 0.315308 0.315477 0.315483 0.315483 0.315488 0.315827 0.315857 0.315915 0.316002
-          0.316116 0.316258 0.316427 0.316621 0.316837 0.317067 0.317304 0.317536 0.317747 0.317924 0.318051 0.318117
-          0.31526 0.315262 0.315266 0.315269 0.315475 0.315482 0.315483 0.315485 0.315704 0.315731 0.315783 0.315857
-          0.315953 0.31607 0.316209 0.316367 0.31654 0.316722 0.316908 0.317086 0.317248 0.317382 0.317478 0.317528
-          0.315208 0.315212 0.315219 0.315228 0.315467 0.315477 0.315478 0.315477 0.315579 0.31561 0.315659 0.315725
-          0.315809 0.315909 0.316026 0.316157 0.316299 0.316448 0.316598 0.316741 0.316869 0.316974 0.317048 0.317087
-          0.315146 0.315152 0.315165 0.315191 0.315243 0.315289 0.315334 0.315384 0.315446 0.315493 0.315545 0.315608
-          0.315684 0.315773 0.315876 0.31599 0.316113 0.31624 0.316367 0.316487 0.316594 0.316682 0.316744 0.316776
-          0.315072 0.315079 0.315095 0.315121 0.315161 0.315203 0.315246 0.315293 0.315344 0.315392 0.315445 0.315505
-          0.315577 0.315661 0.315757 0.315863 0.315976 0.316093 0.316209 0.316319 0.316416 0.316495 0.316551 0.31658
+          0.315549 0.315627 0.315672 0.315692 0.315496 0.315485 0.315486 0.315546 0.317657 0.317798 0.318085 0.318534
+          0.319172 0.320033 0.321165 0.322624 0.324499 0.327121 0.333029 0.360054 0.498349 0.999988 0.999988 0.999983
+          0.315518 0.315573 0.315609 0.315626 0.31549 0.315483 0.315483 0.315539 0.317549 0.317687 0.317967 0.318405
+          0.319026 0.319864 0.320962 0.322374 0.32418 0.326664 0.332056 0.35685 0.490011 0.999988 0.999988 0.999984
+          0.315504 0.315539 0.315564 0.315576 0.315487 0.315483 0.315483 0.315534 0.317422 0.317554 0.31782 0.318237
+          0.318827 0.31962 0.320654 0.321978 0.323656 0.325894 0.330381 0.35091 0.472062 0.999988 0.999988 0.999985
+          0.315495 0.315516 0.315532 0.31554 0.315485 0.315483 0.315483 0.315529 0.317279 0.317401 0.31765 0.318037
+          0.318583 0.319314 0.320262 0.321465 0.32297 0.3249 0.328272 0.342847 0.442936 0.999988 0.999988 0.999985
+          0.31549 0.315498 0.315506 0.315511 0.315484 0.315483 0.315483 0.315524 0.317122 0.317234 0.31746 0.317812
+          0.318306 0.318963 0.319808 0.32087 0.322179 0.323775 0.325859 0.330337 0.351722 0.459434 0.589737 0.608231
+          0.315476 0.31548 0.315484 0.315486 0.315483 0.315483 0.315483 0.315519 0.316957 0.317057 0.317259 0.317572
+          0.318008 0.318585 0.31932 0.320233 0.321342 0.322659 0.324201 0.326186 0.330532 0.347385 0.383798 0.402313
+          0.315458 0.315459 0.315461 0.315462 0.315482 0.315483 0.315483 0.315514 0.316787 0.316875 0.317052 0.317324
+          0.317702 0.318198 0.318823 0.319591 0.320509 0.321577 0.322782 0.324107 0.325684 0.328561 0.334696 0.339216
+          0.315436 0.315437 0.315438 0.315438 0.315481 0.315483 0.315483 0.31551 0.316616 0.316692 0.316844 0.317078
+          0.317399 0.317817 0.318339 0.318972 0.319718 0.320569 0.321507 0.322495 0.323487 0.324495 0.325671 0.326528
+          0.315411 0.315411 0.315412 0.315412 0.315481 0.315483 0.315483 0.315505 0.316448 0.316513 0.316642 0.316839
+          0.317108 0.317455 0.317885 0.318398 0.318994 0.319664 0.320387 0.321131 0.321849 0.322484 0.322989 0.32328
+          0.315382 0.315383 0.315383 0.315384 0.31548 0.315483 0.315483 0.3155 0.316285 0.31634 0.316448 0.316613
+          0.316836 0.317121 0.31747 0.317882 0.318354 0.318875 0.319429 0.319989 0.320517 0.320972 0.321309 0.32149
+          0.315349 0.31535 0.315351 0.315352 0.315478 0.315483 0.315483 0.315496 0.316129 0.316175 0.316266 0.316403
+          0.316587 0.31682 0.317101 0.31743 0.317801 0.318206 0.318629 0.31905 0.319442 0.319774 0.320016 0.320144
+          0.315312 0.315313 0.315315 0.315317 0.315477 0.315483 0.315483 0.315492 0.315979 0.316019 0.316096 0.316211
+          0.316364 0.316554 0.316782 0.317044 0.317337 0.317652 0.317977 0.318295 0.318588 0.318833 0.319011 0.319104
+          0.315268 0.31527 0.315275 0.315279 0.315475 0.315482 0.315483 0.315488 0.315834 0.315871 0.31594 0.316039
+          0.316167 0.316325 0.316511 0.316723 0.316957 0.317205 0.317458 0.317703 0.317926 0.318111 0.318244 0.318313
+          0.315217 0.315221 0.31523 0.31524 0.315468 0.315478 0.315479 0.315481 0.31569 0.315732 0.315798 0.315886
+          0.315998 0.316132 0.316289 0.316465 0.316657 0.316858 0.317061 0.317255 0.317431 0.317575 0.317678 0.317732
+          0.315155 0.315162 0.315178 0.315207 0.315268 0.315324 0.315382 0.315449 0.315536 0.3156 0.315671 0.315754
+          0.315856 0.315975 0.316112 0.316265 0.31643 0.316602 0.316773 0.316937 0.317082 0.317202 0.317287 0.317331
+          0.315082 0.31509 0.315108 0.315139 0.315186 0.315238 0.315294 0.315356 0.315426 0.315492 0.315563 0.315645
+          0.315741 0.315853 0.315981 0.316123 0.316274 0.316432 0.316588 0.316736 0.316868 0.316975 0.317051 0.317091
         </DataArray>
         <DataArray type="Float32" Name="x_w^N2" NumberOfComponents="1" format="ascii">
-          1.14721e-05 1.14757e-05 1.14776e-05 1.14785e-05 1.14725e-05 1.14722e-05 1.14722e-05 1.14741e-05 1.15367e-05 1.15405e-05 1.15482e-05 1.15603e-05
-          1.15774e-05 1.16004e-05 1.16304e-05 1.16691e-05 1.17181e-05 1.17798e-05 1.1856e-05 1.19408e-05 1.19896e-05 1.19808e-05 1.24273e-05 0
-          1.14721e-05 1.14742e-05 1.14755e-05 1.14762e-05 1.14723e-05 1.14721e-05 1.14721e-05 1.14738e-05 1.1533e-05 1.15367e-05 1.15443e-05 1.1556e-05
-          1.15727e-05 1.1595e-05 1.16242e-05 1.16616e-05 1.1709e-05 1.17683e-05 1.18413e-05 1.19225e-05 1.19695e-05 1.19477e-05 1.23391e-05 0
-          1.14721e-05 1.14733e-05 1.14741e-05 1.14746e-05 1.14722e-05 1.14721e-05 1.14721e-05 1.14736e-05 1.15288e-05 1.15324e-05 1.15396e-05 1.15508e-05
-          1.15666e-05 1.15878e-05 1.16153e-05 1.16504e-05 1.16945e-05 1.17494e-05 1.18163e-05 1.18902e-05 1.19302e-05 1.18839e-05 1.22307e-05 0
-          1.14721e-05 1.14727e-05 1.14732e-05 1.14734e-05 1.14722e-05 1.14721e-05 1.14721e-05 1.14735e-05 1.15243e-05 1.15276e-05 1.15343e-05 1.15448e-05
-          1.15594e-05 1.1579e-05 1.16042e-05 1.16361e-05 1.16758e-05 1.17246e-05 1.17832e-05 1.18476e-05 1.188e-05 1.17941e-05 1.20426e-05 0
-          1.14719e-05 1.14721e-05 1.14724e-05 1.14725e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14733e-05 1.15195e-05 1.15225e-05 1.15286e-05 1.15381e-05
-          1.15514e-05 1.15689e-05 1.15915e-05 1.16197e-05 1.16543e-05 1.16961e-05 1.17456e-05 1.18018e-05 1.18542e-05 1.18544e-05 1.17534e-05 1.18336e-05
-          1.14714e-05 1.14715e-05 1.14716e-05 1.14717e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14732e-05 1.15144e-05 1.15171e-05 1.15226e-05 1.1531e-05
-          1.15428e-05 1.15582e-05 1.15778e-05 1.16021e-05 1.16315e-05 1.16663e-05 1.17064e-05 1.17511e-05 1.17971e-05 1.1832e-05 1.18241e-05 1.18321e-05
-          1.14708e-05 1.14708e-05 1.14709e-05 1.14709e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.1473e-05 1.15092e-05 1.15116e-05 1.15164e-05 1.15238e-05
-          1.1534e-05 1.15473e-05 1.1564e-05 1.15844e-05 1.16088e-05 1.1637e-05 1.16687e-05 1.1703e-05 1.17377e-05 1.17686e-05 1.17874e-05 1.17973e-05
-          1.147e-05 1.14701e-05 1.14701e-05 1.14701e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14729e-05 1.15041e-05 1.15061e-05 1.15103e-05 1.15166e-05
-          1.15253e-05 1.15365e-05 1.15505e-05 1.15674e-05 1.15871e-05 1.16096e-05 1.16343e-05 1.16603e-05 1.16857e-05 1.17083e-05 1.17249e-05 1.17334e-05
-          1.14692e-05 1.14692e-05 1.14692e-05 1.14692e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14727e-05 1.1499e-05 1.15008e-05 1.15043e-05 1.15096e-05
-          1.15169e-05 1.15263e-05 1.15378e-05 1.15515e-05 1.15673e-05 1.1585e-05 1.16041e-05 1.16236e-05 1.16423e-05 1.16586e-05 1.16706e-05 1.16769e-05
-          1.14681e-05 1.14682e-05 1.14682e-05 1.14682e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14726e-05 1.14941e-05 1.14955e-05 1.14985e-05 1.1503e-05
-          1.1509e-05 1.15167e-05 1.15261e-05 1.15371e-05 1.15497e-05 1.15635e-05 1.15781e-05 1.15928e-05 1.16066e-05 1.16184e-05 1.1627e-05 1.16316e-05
-          1.1467e-05 1.1467e-05 1.1467e-05 1.14671e-05 1.14719e-05 1.14721e-05 1.14721e-05 1.14725e-05 1.14893e-05 1.14905e-05 1.1493e-05 1.14967e-05
-          1.15017e-05 1.1508e-05 1.15156e-05 1.15244e-05 1.15344e-05 1.15451e-05 1.15563e-05 1.15674e-05 1.15776e-05 1.15863e-05 1.15925e-05 1.15958e-05
-          1.14656e-05 1.14656e-05 1.14657e-05 1.14658e-05 1.14719e-05 1.14721e-05 1.14721e-05 1.14723e-05 1.14847e-05 1.14857e-05 1.14878e-05 1.1491e-05
-          1.14951e-05 1.15003e-05 1.15064e-05 1.15135e-05 1.15213e-05 1.15297e-05 1.15384e-05 1.15468e-05 1.15545e-05 1.15609e-05 1.15655e-05 1.15679e-05
-          1.1464e-05 1.14641e-05 1.14642e-05 1.14644e-05 1.14718e-05 1.14721e-05 1.14721e-05 1.14722e-05 1.14801e-05 1.14811e-05 1.1483e-05 1.14857e-05
-          1.14892e-05 1.14935e-05 1.14985e-05 1.15043e-05 1.15105e-05 1.15172e-05 1.15239e-05 1.15304e-05 1.15363e-05 1.15412e-05 1.15447e-05 1.15465e-05
-          1.14621e-05 1.14623e-05 1.14625e-05 1.14629e-05 1.14715e-05 1.14719e-05 1.1472e-05 1.14719e-05 1.14756e-05 1.14767e-05 1.14785e-05 1.14809e-05
-          1.1484e-05 1.14876e-05 1.14919e-05 1.14966e-05 1.15018e-05 1.15072e-05 1.15127e-05 1.15179e-05 1.15225e-05 1.15263e-05 1.1529e-05 1.15305e-05
-          1.14599e-05 1.14601e-05 1.14606e-05 1.14615e-05 1.14634e-05 1.14651e-05 1.14667e-05 1.14685e-05 1.14708e-05 1.14725e-05 1.14744e-05 1.14767e-05
-          1.14794e-05 1.14827e-05 1.14864e-05 1.14905e-05 1.1495e-05 1.14996e-05 1.15043e-05 1.15086e-05 1.15125e-05 1.15157e-05 1.1518e-05 1.15191e-05
-          1.14572e-05 1.14574e-05 1.1458e-05 1.1459e-05 1.14604e-05 1.14619e-05 1.14635e-05 1.14652e-05 1.14671e-05 1.14688e-05 1.14707e-05 1.14729e-05
-          1.14756e-05 1.14786e-05 1.14821e-05 1.14859e-05 1.14901e-05 1.14943e-05 1.14985e-05 1.15025e-05 1.1506e-05 1.15089e-05 1.15109e-05 1.1512e-05
+          1.14745e-05 1.14774e-05 1.1479e-05 1.14797e-05 1.14726e-05 1.14722e-05 1.14722e-05 1.14744e-05 1.15512e-05 1.15563e-05 1.15667e-05 1.15831e-05
+          1.16063e-05 1.16376e-05 1.16787e-05 1.17317e-05 1.17991e-05 1.18836e-05 1.19879e-05 1.21091e-05 1.22181e-05 1.22254e-05 1.24566e-05 1.66226e-05
+          1.14734e-05 1.14754e-05 1.14767e-05 1.14773e-05 1.14724e-05 1.14721e-05 1.14721e-05 1.14742e-05 1.15473e-05 1.15523e-05 1.15624e-05 1.15784e-05
+          1.16009e-05 1.16314e-05 1.16713e-05 1.17227e-05 1.17877e-05 1.1869e-05 1.1969e-05 1.20852e-05 1.2189e-05 1.21874e-05 1.24211e-05 1.57094e-05
+          1.14729e-05 1.14742e-05 1.14751e-05 1.14755e-05 1.14723e-05 1.14721e-05 1.14721e-05 1.1474e-05 1.15426e-05 1.15474e-05 1.15571e-05 1.15723e-05
+          1.15937e-05 1.16225e-05 1.16602e-05 1.17083e-05 1.17689e-05 1.18441e-05 1.19358e-05 1.20418e-05 1.21341e-05 1.21042e-05 1.2306e-05 1.53885e-05
+          1.14726e-05 1.14733e-05 1.14739e-05 1.14742e-05 1.14722e-05 1.14721e-05 1.14721e-05 1.14738e-05 1.15374e-05 1.15419e-05 1.15509e-05 1.1565e-05
+          1.15848e-05 1.16114e-05 1.16459e-05 1.16896e-05 1.17442e-05 1.18111e-05 1.18916e-05 1.19834e-05 1.20602e-05 1.19859e-05 1.21358e-05 1.4519e-05
+          1.14724e-05 1.14727e-05 1.1473e-05 1.14731e-05 1.14722e-05 1.14721e-05 1.14721e-05 1.14736e-05 1.15317e-05 1.15358e-05 1.1544e-05 1.15568e-05
+          1.15748e-05 1.15987e-05 1.16294e-05 1.1668e-05 1.17156e-05 1.1773e-05 1.18408e-05 1.19181e-05 1.19976e-05 1.20482e-05 1.20777e-05 1.20888e-05
+          1.14719e-05 1.1472e-05 1.14721e-05 1.14722e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14734e-05 1.15257e-05 1.15294e-05 1.15367e-05 1.15481e-05
+          1.15639e-05 1.15849e-05 1.16116e-05 1.16449e-05 1.16852e-05 1.1733e-05 1.17881e-05 1.18493e-05 1.1913e-05 1.19695e-05 1.20057e-05 1.20206e-05
+          1.14712e-05 1.14713e-05 1.14713e-05 1.14714e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14733e-05 1.15195e-05 1.15227e-05 1.15292e-05 1.15391e-05
+          1.15528e-05 1.15708e-05 1.15936e-05 1.16215e-05 1.16549e-05 1.16937e-05 1.17374e-05 1.17846e-05 1.18324e-05 1.18757e-05 1.19075e-05 1.19232e-05
+          1.14704e-05 1.14704e-05 1.14705e-05 1.14705e-05 1.14721e-05 1.14721e-05 1.14721e-05 1.14731e-05 1.15133e-05 1.15161e-05 1.15216e-05 1.15301e-05
+          1.15418e-05 1.1557e-05 1.1576e-05 1.1599e-05 1.16261e-05 1.16571e-05 1.16912e-05 1.1727e-05 1.17623e-05 1.17938e-05 1.18174e-05 1.18298e-05
+          1.14695e-05 1.14695e-05 1.14695e-05 1.14696e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14729e-05 1.15072e-05 1.15096e-05 1.15143e-05 1.15214e-05
+          1.15312e-05 1.15438e-05 1.15595e-05 1.15781e-05 1.15998e-05 1.16242e-05 1.16505e-05 1.16775e-05 1.17036e-05 1.17263e-05 1.17433e-05 1.17523e-05
+          1.14685e-05 1.14685e-05 1.14685e-05 1.14685e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14728e-05 1.15013e-05 1.15033e-05 1.15072e-05 1.15132e-05
+          1.15213e-05 1.15317e-05 1.15444e-05 1.15594e-05 1.15765e-05 1.15955e-05 1.16156e-05 1.1636e-05 1.16552e-05 1.16717e-05 1.16839e-05 1.16904e-05
+          1.14673e-05 1.14673e-05 1.14673e-05 1.14674e-05 1.1472e-05 1.14721e-05 1.14721e-05 1.14726e-05 1.14956e-05 1.14973e-05 1.15006e-05 1.15056e-05
+          1.15123e-05 1.15207e-05 1.1531e-05 1.15429e-05 1.15564e-05 1.15711e-05 1.15865e-05 1.16018e-05 1.16161e-05 1.16282e-05 1.1637e-05 1.16416e-05
+          1.14659e-05 1.14659e-05 1.1466e-05 1.14661e-05 1.14719e-05 1.14721e-05 1.14721e-05 1.14724e-05 1.14902e-05 1.14916e-05 1.14944e-05 1.14986e-05
+          1.15042e-05 1.15111e-05 1.15194e-05 1.15289e-05 1.15395e-05 1.1551e-05 1.15628e-05 1.15744e-05 1.1585e-05 1.1594e-05 1.16004e-05 1.16038e-05
+          1.14643e-05 1.14644e-05 1.14645e-05 1.14647e-05 1.14718e-05 1.14721e-05 1.14721e-05 1.14723e-05 1.14849e-05 1.14862e-05 1.14887e-05 1.14923e-05
+          1.1497e-05 1.15027e-05 1.15095e-05 1.15172e-05 1.15257e-05 1.15348e-05 1.15439e-05 1.15529e-05 1.1561e-05 1.15677e-05 1.15725e-05 1.1575e-05
+          1.14624e-05 1.14626e-05 1.14629e-05 1.14633e-05 1.14716e-05 1.14719e-05 1.1472e-05 1.14721e-05 1.14797e-05 1.14812e-05 1.14836e-05 1.14868e-05
+          1.14908e-05 1.14957e-05 1.15014e-05 1.15078e-05 1.15148e-05 1.15221e-05 1.15295e-05 1.15366e-05 1.15429e-05 1.15482e-05 1.15519e-05 1.15539e-05
+          1.14602e-05 1.14605e-05 1.1461e-05 1.14621e-05 1.14643e-05 1.14663e-05 1.14685e-05 1.14709e-05 1.1474e-05 1.14764e-05 1.14789e-05 1.1482e-05
+          1.14857e-05 1.149e-05 1.1495e-05 1.15006e-05 1.15066e-05 1.15128e-05 1.1519e-05 1.1525e-05 1.15303e-05 1.15346e-05 1.15377e-05 1.15393e-05
+          1.14575e-05 1.14578e-05 1.14585e-05 1.14596e-05 1.14613e-05 1.14632e-05 1.14652e-05 1.14675e-05 1.147e-05 1.14725e-05 1.1475e-05 1.1478e-05
+          1.14815e-05 1.14856e-05 1.14902e-05 1.14954e-05 1.15009e-05 1.15066e-05 1.15123e-05 1.15177e-05 1.15225e-05 1.15264e-05 1.15292e-05 1.15306e-05
         </DataArray>
         <DataArray type="Float32" Name="x_n^H2O" NumberOfComponents="1" format="ascii">
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.0100005 0.0100092 0.0101192 0.0111138 0.0170073 0.0297459 0.0287077 0.0158487
+          0.01 0.01 0.01 0.01 0.0100007 0.0100097 0.010101 0.0108037 0.0147606 0.0291681 0.0286422 0.0216189
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.0100004 0.0100079 0.0101057 0.0110196 0.0165713 0.0298259 0.028907 0.0158487
+          0.01 0.01 0.01 0.01 0.0100006 0.0100081 0.0100875 0.0107296 0.0145513 0.0292563 0.0287218 0.022847
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.0100003 0.0100058 0.0100827 0.0108611 0.0159967 0.0299811 0.0291559 0.0158487
+          0.01 0.01 0.01 0.01 0.0100004 0.0100055 0.0100647 0.0105904 0.0140884 0.0294515 0.0289826 0.0233123
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.0100002 0.0100033 0.010053 0.0106223 0.0149507 0.0302026 0.0295979 0.0158487
+          0.01 0.01 0.01 0.01 0.0100002 0.0100029 0.010038 0.0103995 0.0133107 0.0297336 0.0293772 0.0246741
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.0100005 0.0100091 0.0101205 0.0111374 0.0168072 0.0303039 0.0301047
+          0.01 0.01 0.01 0.01 0.01 0.0100005 0.0100072 0.0100782 0.0106534 0.0138132 0.0176192 0.0181453
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.0100009 0.0100136 0.0101478 0.0111069 0.0148257 0.0152367
+          0.01 0.01 0.01 0.01 0.01 0.0100001 0.0100009 0.0100101 0.0100884 0.0105478 0.0116059 0.0121441
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.0100001 0.010001 0.0100128 0.0101106 0.0105796 0.0107166
+          0.01 0.01 0.01 0.01 0.01 0.01 0.0100001 0.010001 0.010009 0.01006 0.0102188 0.0103419
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100001 0.0100008 0.0100076 0.0100445 0.0100613
+          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100001 0.0100007 0.0100051 0.0100211 0.0100368
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
-          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100004 0.0100024 0.0100036
+          0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100003 0.0100015 0.0100028
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.0100001 0.0100002
           0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
@@ -413,23 +413,23 @@
         </DataArray>
         <DataArray type="Float32" Name="x_n^N2" NumberOfComponents="1" format="ascii">
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.989999 0.989991 0.989881 0.988886 0.982993 0.970254 0.971292 0
+          0.99 0.99 0.99 0.99 0.989999 0.98999 0.989899 0.989196 0.985239 0.970832 0.971358 0.978381
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.989992 0.989894 0.98898 0.983429 0.970174 0.971093 0
+          0.99 0.99 0.99 0.99 0.989999 0.989992 0.989913 0.98927 0.985449 0.970744 0.971278 0.977153
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.989994 0.989917 0.989139 0.984003 0.970019 0.970844 0
+          0.99 0.99 0.99 0.99 0.99 0.989994 0.989935 0.98941 0.985912 0.970549 0.971017 0.976688
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.989997 0.989947 0.989378 0.985049 0.969797 0.970402 0
+          0.99 0.99 0.99 0.99 0.99 0.989997 0.989962 0.9896 0.986689 0.970266 0.970623 0.975326
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.989999 0.989991 0.989879 0.988863 0.983193 0.969696 0.969895
+          0.99 0.99 0.99 0.99 0.99 0.989999 0.989993 0.989922 0.989347 0.986187 0.982381 0.981855
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.989986 0.989852 0.988893 0.985174 0.984763
+          0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.98999 0.989912 0.989452 0.988394 0.987856
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.989987 0.989889 0.98942 0.989283
+          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.989991 0.98994 0.989781 0.989658
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.989992 0.989955 0.989939
+          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.989995 0.989979 0.989963
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
-          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989998 0.989996
+          0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.989999 0.989997
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
@@ -445,6 +445,40 @@
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
           0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
         </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 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          0 0 0 0 0 0 0 0 0 0 0 0
+          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">