From 0bc665b6fd2bd51dda520173908085df235dc5e9 Mon Sep 17 00:00:00 2001
From: melaniel <melanie.lipp@iws.uni-stuttgart.de>
Date: Wed, 11 Jul 2018 16:30:51 +0200
Subject: [PATCH] Sustitute useComplexRelations with fluid system policies.

---
 dumux/material/fluidsystems/brineair.hh       | 33 +++++++++-----
 dumux/material/fluidsystems/h2oair.hh         | 36 ++++++++++-----
 dumux/material/fluidsystems/h2on2.hh          | 44 +++++++++++++------
 dumux/material/fluidsystems/h2on2kinetic.hh   |  6 +--
 dumux/material/fluidsystems/h2on2o2.hh        | 44 +++++++++++++------
 dumux/porousmediumflow/richards/model.hh      |  4 +-
 .../navierstokesnc/channeltestproblem.hh      |  2 +-
 .../navierstokesnc/densityflowproblem.hh      |  2 +-
 .../2p/test_thermalconductivityjohansen.cc    |  3 +-
 .../2p/test_thermalconductivitysomerton.cc    |  3 +-
 .../fluidsystems/test_fluidsystems.cc         | 38 +++++++---------
 test/material/ncpflash/test_ncpflash.cc       |  2 +-
 .../1pnc/implicit/1p2cniconductionproblem.hh  |  2 +-
 .../1pnc/implicit/1p2cniconvectionproblem.hh  |  2 +-
 .../1pnc/implicit/1p2ctestproblem.hh          |  2 +-
 .../2p/implicit/nonisothermal/problem.hh      |  2 +-
 .../2p2c/implicit/injectionproblem.hh         |  2 +-
 .../mpnccomparison/2p2c_comparison_problem.hh |  2 +-
 .../2p2c/implicit/waterairproblem.hh          |  2 +-
 .../sequential/test_adaptive2p2c2dproblem.hh  |  2 +-
 .../sequential/test_adaptive2p2c3dproblem.hh  |  2 +-
 .../2p2c/sequential/test_dec2p2cproblem.hh    |  2 +-
 .../test_multiphysics2p2cproblem.hh           |  2 +-
 .../2pnc/implicit/2pncdiffusionproblem.hh     |  2 +-
 .../2pnc/implicit/fuelcellproblem.hh          |  3 +-
 .../2pncmin/implicit/dissolutionproblem.hh    |  2 +-
 .../2p2ccomparison/mpnc_comparison_problem.hh |  2 +-
 .../mpnc/implicit/combustionfluidsystem.hh    |  6 +--
 .../mpnc/implicit/combustionproblem1c.hh      |  2 +-
 .../implicit/evaporationatmosphereproblem.hh  |  2 +-
 .../mpnc/implicit/obstacleproblem.hh          |  2 +-
 .../implicit/richardsniconductionproblem.hh   |  2 +-
 .../implicit/richardsniconvectionproblem.hh   |  2 +-
 .../implicit/richardsnievaporationproblem.hh  |  2 +-
 34 files changed, 158 insertions(+), 108 deletions(-)

diff --git a/dumux/material/fluidsystems/brineair.hh b/dumux/material/fluidsystems/brineair.hh
index 490d037a08..aa097bf589 100644
--- a/dumux/material/fluidsystems/brineair.hh
+++ b/dumux/material/fluidsystems/brineair.hh
@@ -25,8 +25,9 @@
 #define DUMUX_BRINE_AIR_SYSTEM_HH
 
 #include <cassert>
-#include <dumux/material/idealgas.hh>
+#include <iomanip>
 
+#include <dumux/material/idealgas.hh>
 #include <dumux/material/fluidsystems/base.hh>
 #include <dumux/material/components/brine.hh>
 #include <dumux/material/components/air.hh>
@@ -41,6 +42,17 @@
 
 namespace Dumux {
 namespace FluidSystems {
+/*!
+ * \ingroup Fluidsystems
+ * \brief Policy for the brine-air fluid system
+ */
+template<bool fastButSimplifiedRelations = false>
+struct BrineAirDefaultPolicy
+{
+    static constexpr bool useBrineDensityAsLiquidMixtureDensity() { return fastButSimplifiedRelations;}
+    static constexpr bool useIdealGasDensity() { return fastButSimplifiedRelations; }
+};
+
 /*!
  * \ingroup Fluidsystems
  * \brief A compositional two-phase fluid system with a liquid and a gaseous phase
@@ -51,11 +63,11 @@ namespace FluidSystems {
  */
 template <class Scalar,
           class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar>>,
-          bool useComplexRelations=true>
+          class Policy = BrineAirDefaultPolicy<>>
 class BrineAir
-: public BaseFluidSystem<Scalar, BrineAir<Scalar, H2Otype, useComplexRelations>>
+: public BaseFluidSystem<Scalar, BrineAir<Scalar, H2Otype, Policy>>
 {
-    using ThisType = BrineAir<Scalar, H2Otype, useComplexRelations>;
+    using ThisType = BrineAir<Scalar, H2Otype, Policy>;
     using Base = BaseFluidSystem<Scalar, ThisType>;
     using IdealGas = Dumux::IdealGas<Scalar>;
 
@@ -274,10 +286,9 @@ public:
     static void init(Scalar tempMin, Scalar tempMax, unsigned nTemp,
                       Scalar pressMin, Scalar pressMax, unsigned nPress)
     {
-        if (useComplexRelations)
-            std::cout << "Using complex Brine-Air fluid system\n";
-        else
-            std::cout << "Using fast Brine-Air fluid system\n";
+        std::cout << "The brine-air fluid system was configured with the following policy:\n";
+        std::cout << " - use brine density as liquid mixture density: " << std::boolalpha << Policy::useBrineDensityAsLiquidMixtureDensity() << "\n";
+        std::cout << " - use ideal gas density: " << std::boolalpha << Policy::useIdealGasDensity() << std::endl;
 
         if (H2O::isTabulated)
         {
@@ -310,7 +321,7 @@ public:
         Scalar pressure = fluidState.pressure(phaseIdx);
 
         if (phaseIdx == phase0Idx){
-            if (!useComplexRelations)
+            if (Policy::useBrineDensityAsLiquidMixtureDensity())
                 // assume pure brine
                 return Brine::liquidDensity(temperature,
                                             pressure,
@@ -326,7 +337,7 @@ public:
             }
         }
         else if (phaseIdx == phase1Idx){
-            if (!useComplexRelations)
+            if (Policy::useIdealGasDensity())
             // for the gas phase assume an ideal gas
             {
                 const Scalar averageMolarMass = fluidState.averageMolarMass(phase1Idx);
@@ -364,7 +375,7 @@ public:
         }
         else if (phaseIdx == phase1Idx)
         {
-            if (!useComplexRelations)
+            if (Policy::useIdealGasDensity())
             // for the gas phase assume an ideal gas
             { return IdealGas::molarDensity(temperature, pressure); }
 
diff --git a/dumux/material/fluidsystems/h2oair.hh b/dumux/material/fluidsystems/h2oair.hh
index 18346200a9..1adae56100 100644
--- a/dumux/material/fluidsystems/h2oair.hh
+++ b/dumux/material/fluidsystems/h2oair.hh
@@ -26,6 +26,7 @@
 #define DUMUX_H2O_AIR_SYSTEM_HH
 
 #include <cassert>
+#include <iomanip>
 
 #include <dumux/material/idealgas.hh>
 #include <dumux/material/fluidsystems/base.hh>
@@ -40,6 +41,17 @@
 
 namespace Dumux {
 namespace FluidSystems {
+/*!
+ * \ingroup Fluidsytems
+ * \brief Policy for the H2O-air fluid system
+ */
+template<bool fastButSimplifiedRelations = false>
+struct H2OAirDefaultPolicy
+{
+    static constexpr bool useH2ODensityAsLiquidMixtureDensity() { return fastButSimplifiedRelations; }
+    static constexpr bool useIdealGasDensity() { return fastButSimplifiedRelations; }
+    static constexpr bool useAirViscosityAsGasMixtureViscosity() { return fastButSimplifiedRelations; }
+};
 
 /*!
  * \ingroup Fluidsystems
@@ -54,12 +66,12 @@ namespace FluidSystems {
  */
 template <class Scalar,
           class H2Otype = Components::TabulatedComponent<Components::H2O<Scalar> >,
-          bool useComplexRelations = true,
+          class Policy = H2OAirDefaultPolicy<>,
           bool useKelvinVaporPressure = false>
 class H2OAir
-: public BaseFluidSystem<Scalar, H2OAir<Scalar, H2Otype, useComplexRelations> >
+: public BaseFluidSystem<Scalar, H2OAir<Scalar, H2Otype, Policy> >
 {
-    using ThisType = H2OAir<Scalar,H2Otype, useComplexRelations>;
+    using ThisType = H2OAir<Scalar,H2Otype, Policy>;
     using Base = BaseFluidSystem<Scalar, ThisType>;
     using IdealGas = Dumux::IdealGas<Scalar>;
 
@@ -340,10 +352,10 @@ public:
     static void init(Scalar tempMin, Scalar tempMax, unsigned nTemp,
                      Scalar pressMin, Scalar pressMax, unsigned nPress)
     {
-        if (useComplexRelations)
-            std::cout << "Using complex H2O-Air fluid system\n";
-        else
-            std::cout << "Using fast H2O-Air fluid system\n";
+        std::cout << "The H2O-air fluid system was configured with the following policy:\n";
+        std::cout << " - use H2O density as liquid mixture density: " << std::boolalpha << Policy::useH2ODensityAsLiquidMixtureDensity() << "\n";
+        std::cout << " - use ideal gas density: " << std::boolalpha << Policy::useIdealGasDensity() << "\n";
+        std::cout << " - use air viscosity as gas mixture viscosity: " << std::boolalpha << Policy::useAirViscosityAsGasMixtureViscosity() << std::endl;
 
         if (H2O::isTabulated)
         {
@@ -358,7 +370,7 @@ public:
      *        the partial pressures of all components, return its
      *        density \f$\mathrm{[kg/m^3]}\f$.
      *
-     * If useComplexRelations == true, we apply Eq. (7)
+     * If Policy::useH2ODensityAsLiquidMixtureDensity() == false, we apply Eq. (7)
      * in Class et al. (2002a) \cite A3:class:2002b <BR>
      * for the liquid density.
      *
@@ -377,7 +389,7 @@ public:
 
         if (phaseIdx == phase0Idx)
         {
-            if (!useComplexRelations)
+            if (Policy::useH2ODensityAsLiquidMixtureDensity())
                 // assume pure water
                 return H2O::liquidDensity(T, p);
             else
@@ -392,7 +404,7 @@ public:
         }
         else if (phaseIdx == gasPhaseIdx)
         {
-            if (!useComplexRelations)
+            if (Policy::useIdealGasDensity())
                 // for the gas phase assume an ideal gas
             {
                 const Scalar averageMolarMass = fluidState.averageMolarMass(gasPhaseIdx);
@@ -431,7 +443,7 @@ public:
         }
         else if (phaseIdx == phase1Idx)
         {
-            if (!useComplexRelations)
+            if (Policy::useIdealGasDensity())
                 // for the gas phase assume an ideal gas
             { return IdealGas::molarDensity(T, p); }
 
@@ -470,7 +482,7 @@ public:
         }
         else if (phaseIdx == gasPhaseIdx)
         {
-            if(!useComplexRelations){
+            if(Policy::useAirViscosityAsGasMixtureViscosity()){
                 return Air::gasViscosity(T, p);
             }
             else //using a complicated version of this fluid system
diff --git a/dumux/material/fluidsystems/h2on2.hh b/dumux/material/fluidsystems/h2on2.hh
index 118a8128cf..7322dd7915 100644
--- a/dumux/material/fluidsystems/h2on2.hh
+++ b/dumux/material/fluidsystems/h2on2.hh
@@ -25,6 +25,7 @@
 #define DUMUX_H2O_N2_FLUID_SYSTEM_HH
 
 #include <cassert>
+#include <iomanip>
 
 #include <dumux/common/valgrind.hh>
 #include <dumux/common/exceptions.hh>
@@ -40,6 +41,19 @@
 
 namespace Dumux {
 namespace FluidSystems {
+/*!
+ * \ingroup Fluidsystems
+ * \brief Policy for the H2O-N2 fluid system
+ */
+template<bool fastButSimplifiedRelations = false>
+struct H2ON2DefaultPolicy
+{
+    static constexpr  bool useH2ODensityAsLiquidMixtureDensity() { return fastButSimplifiedRelations; }
+    static constexpr  bool useIdealGasDensity() { return fastButSimplifiedRelations; }
+    static constexpr  bool useN2ViscosityAsGasMixtureViscosity() { return fastButSimplifiedRelations; }
+    static constexpr  bool useN2HeatConductivityAsGasMixtureHeatConductivity() { return fastButSimplifiedRelations; }
+    static constexpr  bool useIdealGasHeatCapacities() { return fastButSimplifiedRelations; }
+};
 
 /*!
  * \ingroup Fluidsystems
@@ -47,11 +61,11 @@ namespace FluidSystems {
  * \brief A two-phase fluid system with two components water \f$(\mathrm{H_2O})\f$
  *        Nitrogen \f$(\mathrm{N_2})\f$ for non-equilibrium models.
  */
-template <class Scalar, bool useComplexRelations = true>
+template <class Scalar, class Policy = H2ON2DefaultPolicy<>>
 class H2ON2
-    : public BaseFluidSystem<Scalar, H2ON2<Scalar, useComplexRelations> >
+    : public BaseFluidSystem<Scalar, H2ON2<Scalar, Policy> >
 {
-    using ThisType = H2ON2<Scalar, useComplexRelations>;
+    using ThisType = H2ON2<Scalar, Policy>;
     using Base = BaseFluidSystem<Scalar, ThisType>;
 
     // convenience using declarations
@@ -332,10 +346,12 @@ public:
     static void init(Scalar tempMin, Scalar tempMax, unsigned nTemp,
                      Scalar pressMin, Scalar pressMax, unsigned nPress)
     {
-        if (useComplexRelations)
-            std::cout << "Using complex H2O-N2 fluid system\n";
-        else
-            std::cout << "Using fast H2O-N2 fluid system\n";
+        std::cout << "The H2O-N2 fluid system was configured with the following policy:\n";
+        std::cout << " - use H2O density as liquid mixture density: " << std::boolalpha << Policy::useH2ODensityAsLiquidMixtureDensity() << "\n";
+        std::cout << " - use ideal gas density: " << std::boolalpha << Policy::useIdealGasDensity() << "\n";
+        std::cout << " - use N2 viscosity as gas mixture viscosity: " << std::boolalpha << Policy::useN2ViscosityAsGasMixtureViscosity() << "\n";
+        std::cout << " - use N2 heat conductivity as gas mixture heat conductivity: " << std::boolalpha << Policy::useN2HeatConductivityAsGasMixtureHeatConductivity() << "\n";
+        std::cout << " - use ideal gas heat capacities: " << std::boolalpha << Policy::useIdealGasHeatCapacities() << std::endl;
 
         if (H2O::isTabulated)
         {
@@ -350,7 +366,7 @@ public:
      *        the partial pressures of all components, return its
      *        density \f$\mathrm{[kg/m^3]}\f$.
      *
-     * If useComplexRelations == true, we apply Eq. (7)
+     * If Policy::useH2ODensityAsLiquidMixtureDensity() == false, we apply Eq. (7)
      * in Class et al. (2002a) \cite A3:class:2002b <BR>
      * for the liquid density.
      *
@@ -368,7 +384,7 @@ public:
 
         // liquid phase
         if (phaseIdx == liquidPhaseIdx) {
-            if (!useComplexRelations)
+            if (Policy::useH2ODensityAsLiquidMixtureDensity())
                 // assume pure water
                 return H2O::liquidDensity(T, p);
             else
@@ -384,7 +400,7 @@ public:
 
         // gas phase
         using std::max;
-        if (!useComplexRelations)
+        if (Policy::useIdealGasDensity())
             // for the gas phase assume an ideal gas
         {
             const Scalar averageMolarMass = fluidState.averageMolarMass(gasPhaseIdx);
@@ -428,7 +444,7 @@ public:
 
         // gas phase
         using std::max;
-        if (!useComplexRelations)
+        if (Policy::useIdealGasDensity())
             // for the gas phase assume an ideal gas
         {
             return IdealGas::molarDensity(T, p);
@@ -469,7 +485,7 @@ public:
         }
 
         // gas phase
-        if (!useComplexRelations)
+        if (Policy::useN2ViscosityAsGasMixtureViscosity())
         {
             // assume pure nitrogen for the gas phase
             return N2::gasViscosity(T, p);
@@ -747,7 +763,7 @@ public:
         else
         {
             Scalar lambdaPureN2 = N2::gasThermalConductivity(temperature, pressure);
-            if (useComplexRelations)
+            if (!Policy::useN2HeatConductivityAsGasMixtureHeatConductivity())
             {
                 Scalar xN2 = fluidState.moleFraction(phaseIdx, N2Idx);
                 Scalar xH2O = fluidState.moleFraction(phaseIdx, H2OIdx);
@@ -782,7 +798,7 @@ public:
         Scalar c_pN2;
         Scalar c_pH2O;
         // let the water and nitrogen components do things their own way
-        if (useComplexRelations) {
+        if (!Policy::useIdealGasHeatCapacities()) {
             c_pN2 = N2::gasHeatCapacity(fluidState.temperature(phaseIdx),
                                         fluidState.pressure(phaseIdx)
                                         * fluidState.moleFraction(phaseIdx, N2Idx));
diff --git a/dumux/material/fluidsystems/h2on2kinetic.hh b/dumux/material/fluidsystems/h2on2kinetic.hh
index 13bb161ac7..3b07ee54ef 100644
--- a/dumux/material/fluidsystems/h2on2kinetic.hh
+++ b/dumux/material/fluidsystems/h2on2kinetic.hh
@@ -46,12 +46,12 @@ namespace FluidSystems
  * \brief A two-phase fluid system with two components water \f$(\mathrm{H_2O})\f$
  *        Nitrogen \f$(\mathrm{N_2})\f$ for non-equilibrium models. TODO: Is this fluid system necessary??
  */
-template <class Scalar, bool useComplexRelations = true>
+template <class Scalar, class Policy = H2ON2DefaultPolicy<>>
 class H2ON2Kinetic :
-    public FluidSystems::H2ON2<Scalar, useComplexRelations>
+    public FluidSystems::H2ON2<Scalar, Policy>
 {
 private:
-    using ParentType = FluidSystems::H2ON2<Scalar, useComplexRelations>;
+    using ParentType = FluidSystems::H2ON2<Scalar, Policy>;
 
     using IdealGas = Dumux::IdealGas<Scalar>;
 public:
diff --git a/dumux/material/fluidsystems/h2on2o2.hh b/dumux/material/fluidsystems/h2on2o2.hh
index 11bf5b7618..1a144ee486 100644
--- a/dumux/material/fluidsystems/h2on2o2.hh
+++ b/dumux/material/fluidsystems/h2on2o2.hh
@@ -26,6 +26,7 @@
 #define DUMUX_H2O_N2_O2_FLUID_SYSTEM_HH
 
 #include <cassert>
+#include <iomanip>
 
 #include <dumux/common/valgrind.hh>
 #include <dumux/common/exceptions.hh>
@@ -45,6 +46,19 @@
 
 namespace Dumux {
 namespace FluidSystems {
+/*!
+ * \ingroup Fluidsystems
+ * \brief Policy for the H2O-N2-O2 fluid system
+ */
+template<bool fastButSimplifiedRelations = false>
+struct H2ON2O2DefaultPolicy
+{
+    static constexpr bool useH2ODensityAsLiquidMixtureDensity() { return fastButSimplifiedRelations; }
+    static constexpr bool useIdealGasDensity() { return fastButSimplifiedRelations; }
+    static constexpr bool useN2ViscosityAsGasMixtureViscosity() { return fastButSimplifiedRelations; }
+    static constexpr bool useN2HeatConductivityAsGasMixtureHeatConductivity() { return fastButSimplifiedRelations; }
+    static constexpr bool useIdealGasHeatCapacities() { return fastButSimplifiedRelations; }
+};
 
 /*!
  * \ingroup Fluidsystems
@@ -56,11 +70,11 @@ namespace FluidSystems {
  * Also remember to initialize tabulated components (FluidSystem::init()), while this
  * is not necessary for non-tabularized ones.
  */
-template <class Scalar, bool useComplexRelations = true>
+template <class Scalar, class Policy = H2ON2O2DefaultPolicy<>>
 class H2ON2O2
-    : public BaseFluidSystem<Scalar, H2ON2O2<Scalar, useComplexRelations> >
+    : public BaseFluidSystem<Scalar, H2ON2O2<Scalar, Policy> >
 {
-    using ThisType = H2ON2O2<Scalar, useComplexRelations>;
+    using ThisType = H2ON2O2<Scalar, Policy>;
     using Base = BaseFluidSystem<Scalar, ThisType>;
 
     using IdealGas = Dumux::IdealGas<Scalar>;
@@ -404,10 +418,12 @@ public:
     static void init(Scalar tempMin, Scalar tempMax, unsigned nTemp,
                      Scalar pressMin, Scalar pressMax, unsigned nPress)
     {
-        if (useComplexRelations)
-            std::cout << "Using complex H2O-N2-O2 fluid system\n";
-        else
-            std::cout << "Using fast H2O-N2-O2 fluid system\n";
+        std::cout << "The H2O-N2-O2 fluid system was configured with the following policy:\n";
+        std::cout << " - use H2O density as liquid mixture density: " << std::boolalpha << Policy::useH2ODensityAsLiquidMixtureDensity() << "\n";
+        std::cout << " - use ideal gas density: " << std::boolalpha << Policy::useIdealGasDensity() << "\n";
+        std::cout << " - use N2 viscosity as gas mixture viscosity: " << std::boolalpha << Policy::useN2ViscosityAsGasMixtureViscosity() << "\n";
+        std::cout << " - use N2 heat conductivity as gas mixture heat conductivity: " << std::boolalpha << Policy::useN2HeatConductivityAsGasMixtureHeatConductivity() << "\n";
+        std::cout << " - use ideal gas heat capacities: " << std::boolalpha << Policy::useIdealGasHeatCapacities() << std::endl;
 
         if (H2O::isTabulated)
         {
@@ -422,7 +438,7 @@ public:
      *        the partial pressures of all components, return its
      *        density \f$\mathrm{[kg/m^3]}\f$.
      *
-     * If useComplexRelations == true, we apply Eq. (7)
+     * If Policy::useH2ODensityAsLiquidMixtureDensity() == false, we apply Eq. (7)
      * in Class et al. (2002a) \cite A3:class:2002b <BR>
      * for the liquid density.
      *
@@ -440,7 +456,7 @@ public:
 
         // liquid phase
         if (phaseIdx == liquidPhaseIdx) {
-            if (!useComplexRelations)
+            if (Policy::useH2ODensityAsLiquidMixtureDensity())
                 // assume pure water
                 return H2O::liquidDensity(T, p);
             else
@@ -457,7 +473,7 @@ public:
 
         // gas phase
         using std::max;
-        if (!useComplexRelations)
+        if (Policy::useIdealGasDensity())
             // for the gas phase assume an ideal gas
             return IdealGas::molarDensity(T, p)
                    * fluidState.averageMolarMass(gasPhaseIdx);
@@ -496,7 +512,7 @@ public:
         }
         else
         {
-            if (!useComplexRelations)
+            if (Policy::useIdealGasDensity())
             {   //assume ideal gas
                 return IdealGas::molarDensity(T,p);
             }
@@ -536,7 +552,7 @@ public:
         }
 
         // gas phase
-        if (!useComplexRelations)
+        if (Policy::useN2ViscosityAsGasMixtureViscosity())
         {
             // assume pure nitrogen for the gas phase
             return N2::gasViscosity(T, p);
@@ -803,7 +819,7 @@ public:
         {
             Scalar lambdaPureN2 = N2::gasThermalConductivity(temperature, pressure);
             Scalar lambdaPureO2 = O2::gasThermalConductivity(temperature, pressure);
-            if (useComplexRelations)
+            if (!Policy::useN2HeatConductivityAsGasMixtureHeatConductivity())
             {
                 Scalar xN2 = fluidState.moleFraction(phaseIdx, N2Idx);
                 Scalar xO2 = fluidState.moleFraction(phaseIdx, O2Idx);
@@ -840,7 +856,7 @@ public:
         Scalar c_pO2;
         Scalar c_pH2O;
         // let the water and nitrogen components do things their own way
-        if (useComplexRelations) {
+        if (!Policy::useIdealGasHeatCapacities()) {
             c_pN2 = N2::gasHeatCapacity(fluidState.temperature(phaseIdx),
                                         fluidState.pressure(phaseIdx)
                                         * fluidState.moleFraction(phaseIdx, N2Idx));
diff --git a/dumux/porousmediumflow/richards/model.hh b/dumux/porousmediumflow/richards/model.hh
index 7b41a97f0f..ba052a6021 100644
--- a/dumux/porousmediumflow/richards/model.hh
+++ b/dumux/porousmediumflow/richards/model.hh
@@ -243,7 +243,9 @@ SET_TYPE_PROP(Richards, PrimaryVariableSwitch, ExtendedRichardsPrimaryVariableSw
 SET_PROP(Richards, FluidSystem)
 {
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using type = FluidSystems::H2OAir<Scalar, Components::SimpleH2O<Scalar>, false>;
+    using type = FluidSystems::H2OAir<Scalar,
+                                      Components::SimpleH2O<Scalar>,
+                                      FluidSystems::H2OAirDefaultPolicy</*fastButSimplifiedRelations=*/true>>;
 };
 
 /*!
diff --git a/test/freeflow/navierstokesnc/channeltestproblem.hh b/test/freeflow/navierstokesnc/channeltestproblem.hh
index aa3a43e565..21b431cda5 100644
--- a/test/freeflow/navierstokesnc/channeltestproblem.hh
+++ b/test/freeflow/navierstokesnc/channeltestproblem.hh
@@ -52,7 +52,7 @@ NEW_PROP_TAG(FluidSystem);
 
 // Select the fluid system
 SET_TYPE_PROP(ChannelNCTestTypeTag, FluidSystem,
-              FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar)/*, SimpleH2O<typename GET_PROP_TYPE(TypeTag, Scalar)>, true*/>);
+              FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar)>);
 
 SET_INT_PROP(ChannelNCTestTypeTag, PhaseIdx,
              GET_PROP_TYPE(TypeTag, FluidSystem)::liquidPhaseIdx);
diff --git a/test/freeflow/navierstokesnc/densityflowproblem.hh b/test/freeflow/navierstokesnc/densityflowproblem.hh
index 4e61414436..ac9d0064dc 100644
--- a/test/freeflow/navierstokesnc/densityflowproblem.hh
+++ b/test/freeflow/navierstokesnc/densityflowproblem.hh
@@ -47,7 +47,7 @@ NEW_PROP_TAG(FluidSystem);
 
 // Select the fluid system
 SET_TYPE_PROP(DensityDrivenFlowTypeTag, FluidSystem,
-              FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar)/*, SimpleH2O<typename GET_PROP_TYPE(TypeTag, Scalar)>, false*/>);
+              FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar)>);
 
 SET_INT_PROP(DensityDrivenFlowTypeTag, PhaseIdx,
              GET_PROP_TYPE(TypeTag, FluidSystem)::liquidPhaseIdx);
diff --git a/test/material/fluidmatrixinteractions/2p/test_thermalconductivityjohansen.cc b/test/material/fluidmatrixinteractions/2p/test_thermalconductivityjohansen.cc
index ea6911e71f..88ae6954b9 100644
--- a/test/material/fluidmatrixinteractions/2p/test_thermalconductivityjohansen.cc
+++ b/test/material/fluidmatrixinteractions/2p/test_thermalconductivityjohansen.cc
@@ -38,7 +38,8 @@ int main(int argc, char** argv)
 
     using Scalar = double;
     using ThermCondModel = ThermalConductivityJohansen<Scalar>;
-    using FluidSystem = FluidSystems::H2ON2<Scalar, false>;
+
+    using FluidSystem = FluidSystems::H2ON2<Scalar, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>;
     PlotThermalConductivityModel<Scalar, ThermCondModel, FluidSystem> plotThermalConductivityModel(293.15, 1e5);
     const std::string fileName = "johansen_lambda_eff.dat";
     const Scalar porosity = 0.3; // [-]
diff --git a/test/material/fluidmatrixinteractions/2p/test_thermalconductivitysomerton.cc b/test/material/fluidmatrixinteractions/2p/test_thermalconductivitysomerton.cc
index 2a52f4f14d..e6cdab17c4 100644
--- a/test/material/fluidmatrixinteractions/2p/test_thermalconductivitysomerton.cc
+++ b/test/material/fluidmatrixinteractions/2p/test_thermalconductivitysomerton.cc
@@ -38,7 +38,8 @@
 
      using Scalar = double;
      using ThermCondModel = ThermalConductivitySomerton<Scalar>;
-     using FluidSystem = FluidSystems::H2ON2<Scalar, false>;
+
+     using FluidSystem = FluidSystems::H2ON2<Scalar, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>;
      PlotThermalConductivityModel<Scalar, ThermCondModel, FluidSystem> plotThermalConductivityModel(293.15, 1e5);
      const std::string fileName = "somerton_lambda_eff.dat";
      const Scalar porosity = 0.3; // [-]
diff --git a/test/material/fluidsystems/test_fluidsystems.cc b/test/material/fluidsystems/test_fluidsystems.cc
index 5a116a5d32..469a983cc3 100644
--- a/test/material/fluidsystems/test_fluidsystems.cc
+++ b/test/material/fluidsystems/test_fluidsystems.cc
@@ -71,7 +71,7 @@ int main()
     /////////////////////////
     // check all fluid states
     {
-        using FluidSystem = FluidSystems::H2ON2<Scalar, /*enableComplexRelations=*/false>;
+        using FluidSystem = FluidSystems::H2ON2<Scalar, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>;
         using BaseFluidState = CompositionalFluidState<Scalar, FluidSystem>;
         BaseFluidState baseFs;
 
@@ -132,40 +132,32 @@ int main()
 
     // Brine -- Air
     {   using H2OType = Components::SimpleH2O<Scalar>;
-        const bool enableComplexRelations=false;
-        using FluidSystem = FluidSystems::BrineAir<Scalar, H2OType, enableComplexRelations>;
+        using FluidSystem = FluidSystems::BrineAir<Scalar, H2OType, FluidSystems::BrineAirDefaultPolicy</*fastButSimplifiedRelations=*/true>>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
     {   using H2OType = Components::SimpleH2O<Scalar>;
-        const bool enableComplexRelations=true;
-        using FluidSystem = FluidSystems::BrineAir<Scalar, H2OType, enableComplexRelations>;
+        using FluidSystem = FluidSystems::BrineAir<Scalar, H2OType>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
 
     // Brine -- CO2
 
     // H2O -- Air
     {   using H2OType = Components::SimpleH2O<Scalar>;
-        const bool enableComplexRelations=false;
-        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType, enableComplexRelations>;
+        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType, FluidSystems::H2OAirDefaultPolicy</*fastButSimplifiedRelations=*/true>>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
     {   using H2OType = Components::SimpleH2O<Scalar>;
-        const bool enableComplexRelations=true;
-        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType, enableComplexRelations>;
+        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
     {   using H2OType =  Components::H2O<Scalar>;
-        const bool enableComplexRelations=false;
-        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType, enableComplexRelations>;
+        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType, FluidSystems::H2OAirDefaultPolicy</*fastButSimplifiedRelations=*/true>>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
     {   using H2OType =  Components::H2O<Scalar>;
-        const bool enableComplexRelations=true;
-        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType, enableComplexRelations>;
+        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
     {   using H2OType = Components::TabulatedComponent<Components::H2O<Scalar>>;
-        const bool enableComplexRelations=false;
-        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType, enableComplexRelations>;
+        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType, FluidSystems::H2OAirDefaultPolicy</*fastButSimplifiedRelations=*/true>>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
     {   using H2OType = Components::TabulatedComponent<Components::H2O<Scalar>>;
-        const bool enableComplexRelations=true;
-        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType, enableComplexRelations>;
+        using FluidSystem = FluidSystems::H2OAir<Scalar, H2OType>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
 
     // gas phase
@@ -181,21 +173,21 @@ int main()
         success += checkFluidSystem<Scalar, FluidSystem>(); }
 
     // H2O -- N2
-    {   using FluidSystem = FluidSystems::H2ON2<Scalar, /*enableComplexRelations=*/false>;
+    {   using FluidSystem = FluidSystems::H2ON2<Scalar, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
-    {   using FluidSystem = FluidSystems::H2ON2<Scalar, /*enableComplexRelations=*/true>;
+    {   using FluidSystem = FluidSystems::H2ON2<Scalar>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
 
     // H2O -- N2 -- kinetic
-    {   using FluidSystem = FluidSystems::H2ON2Kinetic<Scalar, /*enableComplexRelations=*/false>;
+    {   using FluidSystem = FluidSystems::H2ON2Kinetic<Scalar, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
-    {   using FluidSystem = FluidSystems::H2ON2Kinetic<Scalar, /*enableComplexRelations=*/true>;
+    {   using FluidSystem = FluidSystems::H2ON2Kinetic<Scalar>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
 
     // H2O -- N2 -- o2
-    {   using FluidSystem = FluidSystems::H2ON2O2<Scalar, /*enableComplexRelations=*/false>;
+    {   using FluidSystem = FluidSystems::H2ON2O2<Scalar, FluidSystems::H2ON2O2DefaultPolicy</*fastButSimplifiedRelations=*/true>>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
-    {   using FluidSystem = FluidSystems::H2ON2O2<Scalar, /*enableComplexRelations=*/true>;
+    {   using FluidSystem = FluidSystems::H2ON2O2<Scalar>;
         success += checkFluidSystem<Scalar, FluidSystem>(); }
 
     // liquid phase
diff --git a/test/material/ncpflash/test_ncpflash.cc b/test/material/ncpflash/test_ncpflash.cc
index ff562c94ca..b8bf8d16cb 100644
--- a/test/material/ncpflash/test_ncpflash.cc
+++ b/test/material/ncpflash/test_ncpflash.cc
@@ -152,7 +152,7 @@ void completeReferenceFluidState(FluidState &fs,
 int main()
 {
     using Scalar = double;
-    using FluidSystem = Dumux::FluidSystems::H2ON2<Scalar, false>;
+    using FluidSystem = Dumux::FluidSystems::H2ON2<Scalar, Dumux::FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>;
     using CompositionalFluidState = Dumux::CompositionalFluidState<Scalar, FluidSystem>;
 
     enum { numPhases = FluidSystem::numPhases };
diff --git a/test/porousmediumflow/1pnc/implicit/1p2cniconductionproblem.hh b/test/porousmediumflow/1pnc/implicit/1p2cniconductionproblem.hh
index d86da0cb0e..aebaf03ff2 100644
--- a/test/porousmediumflow/1pnc/implicit/1p2cniconductionproblem.hh
+++ b/test/porousmediumflow/1pnc/implicit/1p2cniconductionproblem.hh
@@ -67,7 +67,7 @@ SET_TYPE_PROP(OnePTwoCNIConductionTypeTag, Problem, OnePTwoCNIConductionProblem<
 // Set fluid configuration
 SET_TYPE_PROP(OnePTwoCNIConductionTypeTag,
               FluidSystem,
-              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), true>);
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar)>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(OnePTwoCNIConductionTypeTag, SpatialParams, OnePNCTestSpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/1pnc/implicit/1p2cniconvectionproblem.hh b/test/porousmediumflow/1pnc/implicit/1p2cniconvectionproblem.hh
index 70d397f051..a3a76a8afc 100644
--- a/test/porousmediumflow/1pnc/implicit/1p2cniconvectionproblem.hh
+++ b/test/porousmediumflow/1pnc/implicit/1p2cniconvectionproblem.hh
@@ -67,7 +67,7 @@ SET_TYPE_PROP(OnePTwoCNIConvectionTypeTag, Problem, OnePTwoCNIConvectionProblem<
 // Set fluid configuration
 SET_TYPE_PROP(OnePTwoCNIConvectionTypeTag,
               FluidSystem,
-              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), true>);
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar)>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(OnePTwoCNIConvectionTypeTag, SpatialParams, OnePNCTestSpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/1pnc/implicit/1p2ctestproblem.hh b/test/porousmediumflow/1pnc/implicit/1p2ctestproblem.hh
index c044501577..cd01f340f7 100644
--- a/test/porousmediumflow/1pnc/implicit/1p2ctestproblem.hh
+++ b/test/porousmediumflow/1pnc/implicit/1p2ctestproblem.hh
@@ -67,7 +67,7 @@ SET_TYPE_PROP(OnePTwoCTestTypeTag, Problem, OnePTwoCTestProblem<TypeTag>);
 // Set fluid configuration
 SET_TYPE_PROP(OnePTwoCTestTypeTag,
               FluidSystem,
-              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false>);
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(OnePTwoCTestTypeTag, SpatialParams, OnePNCTestSpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/2p/implicit/nonisothermal/problem.hh b/test/porousmediumflow/2p/implicit/nonisothermal/problem.hh
index b94828c3ef..972a585a36 100644
--- a/test/porousmediumflow/2p/implicit/nonisothermal/problem.hh
+++ b/test/porousmediumflow/2p/implicit/nonisothermal/problem.hh
@@ -69,7 +69,7 @@ SET_TYPE_PROP(Injection2PNITypeTag, Grid, GRIDTYPE);
 SET_TYPE_PROP(Injection2PNITypeTag, Problem, InjectionProblem2PNI<TypeTag>);
 
 // Use the same fluid system as the 2p2c injection problem
-SET_TYPE_PROP(Injection2PNITypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false>);
+SET_TYPE_PROP(Injection2PNITypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(Injection2PNITypeTag, SpatialParams, InjectionSpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/2p2c/implicit/injectionproblem.hh b/test/porousmediumflow/2p2c/implicit/injectionproblem.hh
index b166498486..56e2d8093c 100644
--- a/test/porousmediumflow/2p2c/implicit/injectionproblem.hh
+++ b/test/porousmediumflow/2p2c/implicit/injectionproblem.hh
@@ -60,7 +60,7 @@ SET_TYPE_PROP(InjectionTypeTag, Problem, InjectionProblem<TypeTag>);
 // Set fluid configuration
 SET_TYPE_PROP(InjectionTypeTag,
               FluidSystem,
-              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false /*useComplexRelations*/>);
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(InjectionTypeTag, SpatialParams, InjectionSpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/2p2c/implicit/mpnccomparison/2p2c_comparison_problem.hh b/test/porousmediumflow/2p2c/implicit/mpnccomparison/2p2c_comparison_problem.hh
index ecc13f40c7..74531616e4 100644
--- a/test/porousmediumflow/2p2c/implicit/mpnccomparison/2p2c_comparison_problem.hh
+++ b/test/porousmediumflow/2p2c/implicit/mpnccomparison/2p2c_comparison_problem.hh
@@ -62,7 +62,7 @@ SET_TYPE_PROP(TwoPTwoCComparisonTypeTag,
 // Set fluid configuration
 SET_TYPE_PROP(TwoPTwoCComparisonTypeTag,
               FluidSystem,
-              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/false>);
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(TwoPTwoCComparisonTypeTag, SpatialParams, TwoPTwoCComparisonSpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/2p2c/implicit/waterairproblem.hh b/test/porousmediumflow/2p2c/implicit/waterairproblem.hh
index 4842f3329a..bc5ff9c7d4 100644
--- a/test/porousmediumflow/2p2c/implicit/waterairproblem.hh
+++ b/test/porousmediumflow/2p2c/implicit/waterairproblem.hh
@@ -59,7 +59,7 @@ SET_TYPE_PROP(WaterAirTypeTag, Grid, Dune::YaspGrid<2>);
 SET_TYPE_PROP(WaterAirTypeTag, Problem, WaterAirProblem<TypeTag>);
 
 // Set the wetting phase
-SET_TYPE_PROP(WaterAirTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), true>);
+SET_TYPE_PROP(WaterAirTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar)>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(WaterAirTypeTag, SpatialParams, WaterAirSpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/2p2c/sequential/test_adaptive2p2c2dproblem.hh b/test/porousmediumflow/2p2c/sequential/test_adaptive2p2c2dproblem.hh
index 8e93d1e721..0e7b3655d1 100644
--- a/test/porousmediumflow/2p2c/sequential/test_adaptive2p2c2dproblem.hh
+++ b/test/porousmediumflow/2p2c/sequential/test_adaptive2p2c2dproblem.hh
@@ -66,7 +66,7 @@ SET_TYPE_PROP(Adaptive2p2c2d, Problem, Adaptive2p2c2d<TTAG(Adaptive2p2c2d)>);
 SET_PROP(Adaptive2p2c2d, FluidSystem)
 {
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using type = FluidSystems::H2OAir<Scalar, Components::H2O<Scalar>, /*useComplexRelations=*/true>;
+    using type = FluidSystems::H2OAir<Scalar, Components::H2O<Scalar>>;
 };
 
 // Set the 2d Transport and Pressure model (already set as default in properties file)
diff --git a/test/porousmediumflow/2p2c/sequential/test_adaptive2p2c3dproblem.hh b/test/porousmediumflow/2p2c/sequential/test_adaptive2p2c3dproblem.hh
index cff99b2e3d..b1a6fc7b25 100644
--- a/test/porousmediumflow/2p2c/sequential/test_adaptive2p2c3dproblem.hh
+++ b/test/porousmediumflow/2p2c/sequential/test_adaptive2p2c3dproblem.hh
@@ -70,7 +70,7 @@ SET_TYPE_PROP(Adaptive2p2c3d, PressureModel, FV3dPressure2P2CAdaptive<TTAG(Adapt
 SET_PROP(Adaptive2p2c3d, FluidSystem)
 {
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using type = FluidSystems::H2OAir<Scalar, Components::H2O<Scalar>, /*useComplexRelations=*/false>;
+    using type = FluidSystems::H2OAir<Scalar, Components::H2O<Scalar>, FluidSystems::H2OAirDefaultPolicy</*fastButSimplifiedRelations=*/true>>;
 };
 
 // Specify indicator
diff --git a/test/porousmediumflow/2p2c/sequential/test_dec2p2cproblem.hh b/test/porousmediumflow/2p2c/sequential/test_dec2p2cproblem.hh
index 6148999c24..7041fdbeef 100644
--- a/test/porousmediumflow/2p2c/sequential/test_dec2p2cproblem.hh
+++ b/test/porousmediumflow/2p2c/sequential/test_dec2p2cproblem.hh
@@ -67,7 +67,7 @@ SET_INT_PROP(TestDecTwoPTwoCTypeTag, PressureFormulation, GET_PROP_TYPE(TypeTag,
 SET_PROP(TestDecTwoPTwoCTypeTag, FluidSystem)
 {
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using type = FluidSystems::H2OAir<Scalar, Components::H2O<Scalar>, /*useComplexRelations=*/true>;
+    using type = FluidSystems::H2OAir<Scalar, Components::H2O<Scalar>>;
 };
 
 SET_BOOL_PROP(TestDecTwoPTwoCTypeTag, EnableCapillarity, true);
diff --git a/test/porousmediumflow/2p2c/sequential/test_multiphysics2p2cproblem.hh b/test/porousmediumflow/2p2c/sequential/test_multiphysics2p2cproblem.hh
index 619ede2893..662453d168 100644
--- a/test/porousmediumflow/2p2c/sequential/test_multiphysics2p2cproblem.hh
+++ b/test/porousmediumflow/2p2c/sequential/test_multiphysics2p2cproblem.hh
@@ -69,7 +69,7 @@ SET_INT_PROP(TestMultTwoPTwoCTypeTag, PressureFormulation, GET_PROP_TYPE(TypeTag
 SET_PROP(TestMultTwoPTwoCTypeTag, FluidSystem)
 {
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using type = FluidSystems::H2OAir<Scalar, Components::H2O<Scalar>, /*useComplexRelations=*/true>;
+    using type = FluidSystems::H2OAir<Scalar, Components::H2O<Scalar>>;
 };
 
 SET_BOOL_PROP(TestMultTwoPTwoCTypeTag, EnableCapillarity, true);
diff --git a/test/porousmediumflow/2pnc/implicit/2pncdiffusionproblem.hh b/test/porousmediumflow/2pnc/implicit/2pncdiffusionproblem.hh
index 5296da5488..11134d2bc7 100644
--- a/test/porousmediumflow/2pnc/implicit/2pncdiffusionproblem.hh
+++ b/test/porousmediumflow/2pnc/implicit/2pncdiffusionproblem.hh
@@ -57,7 +57,7 @@ SET_TYPE_PROP(TwoPNCDiffusionTypeTag, Problem, TwoPNCDiffusionProblem<TypeTag>);
 // // Set fluid configuration
 SET_TYPE_PROP(TwoPNCDiffusionTypeTag,
               FluidSystem,
-              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false /*useComplexRelations*/>);
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(TwoPNCDiffusionTypeTag, SpatialParams, TwoPNCDiffusionSpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/2pnc/implicit/fuelcellproblem.hh b/test/porousmediumflow/2pnc/implicit/fuelcellproblem.hh
index f6fec3a4f9..b82263d893 100644
--- a/test/porousmediumflow/2pnc/implicit/fuelcellproblem.hh
+++ b/test/porousmediumflow/2pnc/implicit/fuelcellproblem.hh
@@ -68,9 +68,8 @@ SET_PROP(FuelCellTypeTag, FluidSystem)
 {
 private:
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    static const bool useComplexRelations = true;
 public:
-    using type = FluidSystems::H2ON2O2<Scalar, useComplexRelations>;
+    using type = FluidSystems::H2ON2O2<Scalar>;
 };
 } // end namespace Properties
 
diff --git a/test/porousmediumflow/2pncmin/implicit/dissolutionproblem.hh b/test/porousmediumflow/2pncmin/implicit/dissolutionproblem.hh
index d64422a548..5ad6c884e4 100644
--- a/test/porousmediumflow/2pncmin/implicit/dissolutionproblem.hh
+++ b/test/porousmediumflow/2pncmin/implicit/dissolutionproblem.hh
@@ -63,7 +63,7 @@ SET_TYPE_PROP(DissolutionTypeTag, Problem, DissolutionProblem<TypeTag>);
 SET_PROP(DissolutionTypeTag, FluidSystem)
 {
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using type = FluidSystems::BrineAir<Scalar, Components::H2O<Scalar>, true/*useComplexrelations=*/>;
+    using type = FluidSystems::BrineAir<Scalar, Components::H2O<Scalar>>;
 };
 
 SET_PROP(DissolutionTypeTag, SolidSystem)
diff --git a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/mpnc_comparison_problem.hh b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/mpnc_comparison_problem.hh
index 5ddb383b6d..c4cd438120 100644
--- a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/mpnc_comparison_problem.hh
+++ b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/mpnc_comparison_problem.hh
@@ -66,7 +66,7 @@ SET_TYPE_PROP(MPNCComparisonTypeTag, SpatialParams, MPNCComparisonSpatialParams<
 // Set fluid configuration
 SET_TYPE_PROP(MPNCComparisonTypeTag,
               FluidSystem,
-              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/false>);
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // decide which type to use for floating values (double / quad)
 SET_TYPE_PROP(MPNCComparisonTypeTag, Scalar, double);
diff --git a/test/porousmediumflow/mpnc/implicit/combustionfluidsystem.hh b/test/porousmediumflow/mpnc/implicit/combustionfluidsystem.hh
index 523902478f..dbb01a8c16 100644
--- a/test/porousmediumflow/mpnc/implicit/combustionfluidsystem.hh
+++ b/test/porousmediumflow/mpnc/implicit/combustionfluidsystem.hh
@@ -45,11 +45,11 @@ namespace FluidSystems {
  * \brief A two-phase fluid system with water as sole component.
  *           Values are taken from Shi & Wang, A numerical investigation of transpiration cooling with liquid coolant phase change, Transport in Porous Media, 2011
  */
-template <class Scalar, bool useComplexRelations = false>
+template <class Scalar>
 class CombustionFluidsystem
-    : public BaseFluidSystem<Scalar, CombustionFluidsystem<Scalar, useComplexRelations> >
+    : public BaseFluidSystem<Scalar, CombustionFluidsystem<Scalar> >
 {
-    using ThisType = CombustionFluidsystem<Scalar, useComplexRelations>;
+    using ThisType = CombustionFluidsystem<Scalar>;
     using Base = BaseFluidSystem<Scalar, ThisType>;
 
     // convenience using declarations
diff --git a/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh b/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh
index 8019a93ec4..a51117da49 100644
--- a/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh
+++ b/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh
@@ -72,7 +72,7 @@ SET_TYPE_PROP(CombustionOneComponentTypeTag, SpatialParams, CombustionSpatialPar
 
 SET_TYPE_PROP(CombustionOneComponentTypeTag,
               FluidSystem,
-              FluidSystems::CombustionFluidsystem<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/false>);
+              FluidSystems::CombustionFluidsystem<typename GET_PROP_TYPE(TypeTag, Scalar)>);
 
 //! Set the default pressure formulation: either pw first or pn first
 SET_PROP(CombustionOneComponentTypeTag, PressureFormulation)
diff --git a/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh b/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh
index 84df600d6d..30311424eb 100644
--- a/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh
+++ b/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh
@@ -85,7 +85,7 @@ SET_TYPE_PROP(EvaporationAtmosphereTypeTag, Problem, EvaporationAtmosphereProble
 // Set fluid configuration
 SET_TYPE_PROP(EvaporationAtmosphereTypeTag,
               FluidSystem,
-              FluidSystems::H2ON2Kinetic<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/false>);
+              FluidSystems::H2ON2Kinetic<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 //! Set the default pressure formulation: either pw first or pn first
 SET_PROP(EvaporationAtmosphereTypeTag, PressureFormulation)
diff --git a/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh b/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh
index 1c37becb46..025e81030f 100644
--- a/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh
+++ b/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh
@@ -69,7 +69,7 @@ SET_TYPE_PROP(ObstacleTypeTag, SpatialParams, ObstacleSpatialParams<TypeTag>);
 // Set fluid configuration
 SET_TYPE_PROP(ObstacleTypeTag,
               FluidSystem,
-              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/false>);
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // decide which type to use for floating values (double / quad)
 SET_TYPE_PROP(ObstacleTypeTag, Scalar, double);
diff --git a/test/porousmediumflow/richards/implicit/richardsniconductionproblem.hh b/test/porousmediumflow/richards/implicit/richardsniconductionproblem.hh
index 8a7fe6dc06..2ebfbc3db1 100644
--- a/test/porousmediumflow/richards/implicit/richardsniconductionproblem.hh
+++ b/test/porousmediumflow/richards/implicit/richardsniconductionproblem.hh
@@ -61,7 +61,7 @@ SET_TYPE_PROP(RichardsNIConductionTypeTag, Problem,
               RichardsNIConductionProblem<TypeTag>);
 
 // Set the fluid system
-SET_TYPE_PROP(RichardsNIConductionTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false>);
+SET_TYPE_PROP(RichardsNIConductionTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(RichardsNIConductionTypeTag, SpatialParams, RichardsNISpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/richards/implicit/richardsniconvectionproblem.hh b/test/porousmediumflow/richards/implicit/richardsniconvectionproblem.hh
index 98491eb70d..aeafdd276f 100644
--- a/test/porousmediumflow/richards/implicit/richardsniconvectionproblem.hh
+++ b/test/porousmediumflow/richards/implicit/richardsniconvectionproblem.hh
@@ -61,7 +61,7 @@ SET_TYPE_PROP(RichardsNIConvectionTypeTag, Grid, Dune::YaspGrid<2>);
 SET_TYPE_PROP(RichardsNIConvectionTypeTag, Problem, RichardsNIConvectionProblem<TypeTag>);
 
 // Set the fluid system
-SET_TYPE_PROP(RichardsNIConvectionTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false>);
+SET_TYPE_PROP(RichardsNIConvectionTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(RichardsNIConvectionTypeTag, SpatialParams, RichardsNISpatialParams<TypeTag>);
diff --git a/test/porousmediumflow/richards/implicit/richardsnievaporationproblem.hh b/test/porousmediumflow/richards/implicit/richardsnievaporationproblem.hh
index c4d572cbfd..0663c39230 100644
--- a/test/porousmediumflow/richards/implicit/richardsnievaporationproblem.hh
+++ b/test/porousmediumflow/richards/implicit/richardsnievaporationproblem.hh
@@ -60,7 +60,7 @@ SET_TYPE_PROP(RichardsNIEvaporationTypeTag, Problem,
               RichardsNIEvaporationProblem<TypeTag>);
 
 // Set the fluid system
-SET_TYPE_PROP(RichardsNIEvaporationTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false>);
+SET_TYPE_PROP(RichardsNIEvaporationTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>);
 
 // Set the spatial parameters
 SET_TYPE_PROP(RichardsNIEvaporationTypeTag, SpatialParams, RichardsNISpatialParams<TypeTag>);
-- 
GitLab