From f25d8cc29e774dd5ded084da922c2659d66baae7 Mon Sep 17 00:00:00 2001
From: Wenqing Wang <wenqing.wang@ufz.de>
Date: Fri, 4 Nov 2016 16:28:56 +0100
Subject: [PATCH] [Unsat] Removed copy constructor and moved a member to base
 class.

---
 .../CreateRelativePermeabilityModel.cpp               |  4 ++--
 .../NonWettingPhaseBrookCoreyOilGas.cpp               |  2 +-
 .../NonWettingPhaseBrookCoreyOilGas.h                 | 10 ----------
 .../NonWettingPhaseVanGenuchten.cpp                   |  2 +-
 .../NonWettingPhaseVanGenuchten.h                     |  8 --------
 .../RelativePermeability/RelativePermeability.h       |  9 +++++++++
 .../RelativePermeability/ReletivePermeabilityCurve.h  | 11 +----------
 .../WettingPhaseBrookCoreyOilGas.cpp                  |  2 +-
 .../WettingPhaseBrookCoreyOilGas.h                    | 10 ----------
 .../RelativePermeability/WettingPhaseVanGenuchten.cpp |  2 +-
 .../RelativePermeability/WettingPhaseVanGenuchten.h   | 10 ----------
 11 files changed, 16 insertions(+), 54 deletions(-)

diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp
index 61f6957c3d2..5fd34bc7eb6 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp
@@ -142,8 +142,8 @@ std::unique_ptr<RelativePermeability> createRelativePermeabilityModel(
     else
     {
         OGS_FATAL(
-            "The capillary pressure mode %s is unavailable.\n"
-            "The available types are:"
+            "The capillary pressure model %s is unavailable.\n"
+            "The available models are:"
             "\n\tWettingPhaseVanGenuchten,"
             "\n\tNonWettingPhaseVanGenuchten,"
             "\n\tWettingPhaseBrookCoreyOilGas,"
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.cpp b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.cpp
index 4484dde1fe1..d0ed9396204 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.cpp
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.cpp
@@ -24,7 +24,7 @@ double NonWettingPhaseBrookCoreyOilGas::getValue(
     const double saturation_w) const
 {
     const double S = MathLib::limitValueInInterval(
-        saturation_w, _Sr + _perturbation, _Smax - _perturbation);
+        saturation_w, _Sr + _minor_offset, _Smax - _minor_offset);
     const double Se = (S - _Sr) / (_Smax - _Sr);
     const double Krel =
         std::pow(1.0 - Se, 2) * (1.0 - std::pow(Se, 1.0 + 2.0 / _mm));
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.h
index caf902b7f55..78b0f2a69c0 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseBrookCoreyOilGas.h
@@ -52,14 +52,6 @@ public:
     {
     }
 
-    NonWettingPhaseBrookCoreyOilGas(const NonWettingPhaseBrookCoreyOilGas& orig)
-        : _Sr(orig._Sr),
-          _Smax(orig._Smax),
-          _mm(orig._mm),
-          _Krel_min(orig._Krel_min)
-    {
-    }
-
     /// Get model name.
     std::string getName() const override
     {
@@ -75,8 +67,6 @@ private:
     const double _Smax;      ///< Maximum saturation of wetting phase., 1-Sn_max
     const double _mm;        ///< Exponent (>=1.0), n=1/(1-mm).
     const double _Krel_min;  ///< Minimum relative permeability
-
-    const double _perturbation = std::numeric_limits<double>::epsilon();
 };
 
 }  // end namespace
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.cpp b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.cpp
index 5d90a25bd7d..8fe15701266 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.cpp
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.cpp
@@ -23,7 +23,7 @@ namespace PorousMedium
 double NonWettingPhaseVanGenuchten::getValue(const double saturation_w) const
 {
     const double S = MathLib::limitValueInInterval(
-        saturation_w, _Sr + _perturbation, _Smax - _perturbation);
+        saturation_w, _Sr + _minor_offset, _Smax - _minor_offset);
     const double Se = (S - _Sr) / (_Smax - _Sr);
     const double Krel = std::pow(1.0 - Se, 1.0 / 3.0) *
                         std::pow(1.0 - std::pow(Se, 1.0 / _mm), 2.0 * _mm);
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.h
index e3aaac9251c..0314fb22350 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/NonWettingPhaseVanGenuchten.h
@@ -54,14 +54,6 @@ public:
     {
     }
 
-    NonWettingPhaseVanGenuchten(const NonWettingPhaseVanGenuchten& orig)
-        : _Sr(orig._Sr),
-          _Smax(orig._Smax),
-          _mm(orig._mm),
-          _Krel_min(orig._Krel_min)
-    {
-    }
-
     /// Get model name.
     std::string getName() const override
     {
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h
index 366237ce709..73dd9826414 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h
@@ -30,6 +30,15 @@ public:
     /// Get relative permeability value.
     /// \param saturation Non-wetting phase saturation
     virtual double getValue(const double saturation) const = 0;
+
+protected:
+    /** A small number for an offset:
+     *  1. to set the bound of S, the saturation, such that
+     *     S in  [_Sr+_minor_offset, _Smax-_minor_offset]
+     *  2. to set the bound of Pc, the capillary pressure, such that
+     *     Pc in [_minor_offset, _Pc_max]
+     */
+    const double _minor_offset = std::numeric_limits<double>::epsilon();
 };
 
 }  // end namespace
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/ReletivePermeabilityCurve.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/ReletivePermeabilityCurve.h
index 2dea3c144bb..aeffb179749 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/ReletivePermeabilityCurve.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/ReletivePermeabilityCurve.h
@@ -34,13 +34,6 @@ public:
     {
     }
 
-    ReletivePermeabilityCurve(ReletivePermeabilityCurve& orig)
-        : _Sr(orig._Sr),
-          _Smax(orig._Smax),
-          _curve_data(std::move(orig._curve_data))
-    {
-    }
-
     /// Get model name.
     std::string getName() const override
     {
@@ -51,7 +44,7 @@ public:
     double getValue(const double saturation) const override
     {
         const double S = MathLib::limitValueInInterval(
-            saturation, _Sr + _perturbation, _Smax - _perturbation);
+            saturation, _Sr + _minor_offset, _Smax - _minor_offset);
 
         return _curve_data->getValue(S);
     }
@@ -61,8 +54,6 @@ private:
     const double _Smax;  ///< Maximum saturation.
 
     std::unique_ptr<MathLib::PiecewiseLinearInterpolation> _curve_data;
-
-    const double _perturbation = std::numeric_limits<double>::epsilon();
 };
 }  // end namespace
 }  // end namespace
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.cpp b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.cpp
index cd747e2091a..1b8703c6775 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.cpp
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.cpp
@@ -23,7 +23,7 @@ namespace PorousMedium
 double WettingPhaseBrookCoreyOilGas::getValue(const double saturation) const
 {
     const double S = MathLib::limitValueInInterval(
-        saturation, _Sr + _perturbation, _Smax - _perturbation);
+        saturation, _Sr + _minor_offset, _Smax - _minor_offset);
     const double Se = (S - _Sr) / (_Smax - _Sr);
     const double Krel = std::pow(Se, 3.0 + 2.0 / _mm);
     return Krel < _Krel_min ? _Krel_min : Krel;
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.h
index eb680a38119..f9732c43bd0 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseBrookCoreyOilGas.h
@@ -52,14 +52,6 @@ public:
     {
     }
 
-    WettingPhaseBrookCoreyOilGas(const WettingPhaseBrookCoreyOilGas& orig)
-        : _Sr(orig._Sr),
-          _Smax(orig._Smax),
-          _mm(orig._mm),
-          _Krel_min(orig._Krel_min)
-    {
-    }
-
     /// Get model name.
     std::string getName() const override
     {
@@ -74,8 +66,6 @@ private:
     const double _Smax;      ///< Maximum saturation.
     const double _mm;        ///< Exponent (>=1.0), n=1/(1-mm).
     const double _Krel_min;  ///< Minimum relative permeability
-
-    const double _perturbation = std::numeric_limits<double>::epsilon();
 };
 
 }  // end namespace
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.cpp b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.cpp
index 5f2e9859ac6..56532c924d8 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.cpp
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.cpp
@@ -23,7 +23,7 @@ namespace PorousMedium
 double WettingPhaseVanGenuchten::getValue(const double saturation) const
 {
     const double S = MathLib::limitValueInInterval(
-        saturation, _Sr + _perturbation, _Smax - _perturbation);
+        saturation, _Sr + _minor_offset, _Smax - _minor_offset);
     const double Se = (S - _Sr) / (_Smax - _Sr);
     const double Krel =
         std::sqrt(Se) *
diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.h b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.h
index 2534e945fa9..db0a495845a 100644
--- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.h
+++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/WettingPhaseVanGenuchten.h
@@ -55,14 +55,6 @@ public:
     {
     }
 
-    WettingPhaseVanGenuchten(const WettingPhaseVanGenuchten& orig)
-        : _Sr(orig._Sr),
-          _Smax(orig._Smax),
-          _mm(orig._mm),
-          _Krel_min(orig._Krel_min)
-    {
-    }
-
     /// Get model name.
     std::string getName() const override
     {
@@ -77,8 +69,6 @@ private:
     const double _Smax;      ///< Maximum saturation.
     const double _mm;        ///< Exponent (<=1.0), n=1/(1-mm).
     const double _Krel_min;  ///< Minimum relative permeability
-
-    const double _perturbation = std::numeric_limits<double>::epsilon();
 };
 
 }  // end namespace
-- 
GitLab