From 94afa3e10ff10d647e5241635e2c235306a2fb59 Mon Sep 17 00:00:00 2001
From: Wenqing Wang <wenqing.wang@ufz.de>
Date: Fri, 11 Nov 2016 16:47:23 +0100
Subject: [PATCH] [Unsat] Moved the two common members to the base class

---
 .../CreateRelativePermeabilityModel.cpp              |  2 +-
 .../NonWettingPhaseBrookCoreyOilGas.h                |  7 +------
 .../NonWettingPhaseVanGenuchten.h                    |  7 +------
 .../RelativePermeability/RelativePermeability.h      | 12 ++++++++++++
 .../RelativePermeability/RelativePermeabilityCurve.h |  7 ++-----
 .../WettingPhaseBrookCoreyOilGas.h                   |  8 +++-----
 .../RelativePermeability/WettingPhaseVanGenuchten.h  |  8 +++-----
 7 files changed, 23 insertions(+), 28 deletions(-)

diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp
index 95275cfe9a2..0f4cb0c7c80 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp
@@ -84,7 +84,7 @@ std::unique_ptr<RelativePermeability> createNonWettingPhaseVanGenuchten(
 
     //! \ogs_file_param{material_property__porous_medium__porous_medium__relative_permeability__NonWettingPhaseVanGenuchten__m}
     const double m = config.getConfigParameter<double>("m");
-    if (m < 0.|| m > 1.0)  // m <= 1
+    if (m < 0. || m > 1.0)  // m <= 1
     {
         OGS_FATAL(
             "The exponent parameter of NonWettingPhaseVanGenuchten relative\n"
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.h
index f9f24281ee2..50b500802f7 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.h
@@ -46,8 +46,7 @@ public:
      */
     NonWettingPhaseBrookCoreyOilGas(const double Snr, const double Snmax,
                                     const double m, const double krel_min)
-        : _saturation_r(1. - Snmax),
-          _saturation_max(1. - Snr),
+        : RelativePermeability(1. - Snmax, 1. - Snr),
           _mm(m),
           _krel_min(krel_min)
     {
@@ -68,10 +67,6 @@ public:
     double getdValue(const double saturation_w) const override;
 
 private:
-    const double
-        _saturation_r;  ///< Residual saturation of wetting phase, 1-Snmax.
-    const double
-        _saturation_max;     ///< Maximum saturation of wetting phase, 1-Snr.
     const double _mm;        ///< Exponent (>=1.0), n=1/(1-mm).
     const double _krel_min;  ///< Minimum relative permeability
 };
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.h
index 31568d4fae0..ddc45771b90 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.h
@@ -48,8 +48,7 @@ public:
      */
     NonWettingPhaseVanGenuchten(const double Snr, const double Snmax,
                                 const double m, const double krel_min)
-        : _saturation_r(1. - Snmax),
-          _saturation_max(1. - Snr),
+        : RelativePermeability(1. - Snmax, 1. - Snr),
           _mm(m),
           _krel_min(krel_min)
     {
@@ -70,10 +69,6 @@ public:
     double getdValue(const double saturation_w) const override;
 
 private:
-    const double
-        _saturation_r;  ///< Residual saturation of wetting phase, 1-Snmax.
-    const double
-        _saturation_max;     ///< Maximum saturation of wetting phase, 1-Snr.
     const double _mm;        ///< Exponent (<=1.0), n=1/(1-mm).
     const double _krel_min;  ///< Minimum relative permeability
 };
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h
index d0028b6beea..243b945a94c 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h
@@ -23,6 +23,15 @@ namespace PorousMedium
 class RelativePermeability
 {
 public:
+    /**
+     * @param Sr       Residual saturation.
+     * @param Smax     Maximum saturation.
+     */
+    RelativePermeability(const double Sr, const double Smax)
+        : _saturation_r(Sr), _saturation_max(Smax)
+    {
+    }
+
     virtual ~RelativePermeability() = default;
 
     /// Get model name.
@@ -41,6 +50,9 @@ protected:
      *  that S in  [Sr+_minor_offset, Smax-_minor_offset].
      */
     const double _minor_offset = std::numeric_limits<double>::epsilon();
+
+    const double _saturation_r;    ///< Residual saturation.
+    const double _saturation_max;  ///< Maximum saturation.
 };
 
 }  // end namespace
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeabilityCurve.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeabilityCurve.h
index 502a528e5ab..b59b2249011 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeabilityCurve.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeabilityCurve.h
@@ -28,8 +28,8 @@ class RelativePermeabilityCurve final : public RelativePermeability
 public:
     RelativePermeabilityCurve(
         std::unique_ptr<MathLib::PiecewiseLinearInterpolation>& curve_data)
-        : _saturation_r(curve_data->getSupportMin()),
-          _saturation_max(curve_data->getSupportMax()),
+        : RelativePermeability(curve_data->getSupportMin(),
+                               curve_data->getSupportMax()),
           _curve_data(std::move(curve_data))
     {
     }
@@ -62,9 +62,6 @@ public:
     }
 
 private:
-    const double _saturation_r;    ///< Residual saturation.
-    const double _saturation_max;  ///< Maximum saturation.
-
     std::unique_ptr<MathLib::PiecewiseLinearInterpolation> _curve_data;
 };
 }  // end namespace
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.h
index 99d09d2d9c4..c2e62f173c6 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.h
@@ -43,7 +43,7 @@ public:
      */
     WettingPhaseBrookCoreyOilGas(const double Sr, const double Smax,
                                  const double m, const double krel_min)
-        : _saturation_r(Sr), _saturation_max(Smax), _mm(m), _krel_min(krel_min)
+        : RelativePermeability(Sr, Smax), _mm(m), _krel_min(krel_min)
     {
     }
 
@@ -61,10 +61,8 @@ public:
     double getdValue(const double saturation) const override;
 
 private:
-    const double _saturation_r;    ///< Residual saturation.
-    const double _saturation_max;  ///< Maximum saturation.
-    const double _mm;              ///< Exponent (>=1.0), n=1/(1-mm).
-    const double _krel_min;        ///< Minimum relative permeability
+    const double _mm;        ///< Exponent (>=1.0), n=1/(1-mm).
+    const double _krel_min;  ///< Minimum relative permeability
 };
 
 }  // end namespace
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.h
index 3dec39d367d..3571ab7c4f8 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.h
@@ -46,7 +46,7 @@ public:
      */
     WettingPhaseVanGenuchten(const double Sr, const double Smax, const double m,
                              const double krel_min)
-        : _saturation_r(Sr), _saturation_max(Smax), _mm(m), _krel_min(krel_min)
+        : RelativePermeability(Sr, Smax), _mm(m), _krel_min(krel_min)
     {
     }
 
@@ -64,10 +64,8 @@ public:
     double getdValue(const double saturation) const override;
 
 private:
-    const double _saturation_r;    ///< Residual saturation.
-    const double _saturation_max;  ///< Maximum saturation.
-    const double _mm;              ///< Exponent (<=1.0), n=1/(1-mm).
-    const double _krel_min;        ///< Minimum relative permeability
+    const double _mm;        ///< Exponent (<=1.0), n=1/(1-mm).
+    const double _krel_min;  ///< Minimum relative permeability
 };
 
 }  // end namespace
-- 
GitLab