Skip to content
Snippets Groups Projects
Commit 94afa3e1 authored by wenqing's avatar wenqing
Browse files

[Unsat] Moved the two common members to the base class

parent a53bcb11
No related branches found
No related tags found
No related merge requests found
...@@ -84,7 +84,7 @@ std::unique_ptr<RelativePermeability> createNonWettingPhaseVanGenuchten( ...@@ -84,7 +84,7 @@ std::unique_ptr<RelativePermeability> createNonWettingPhaseVanGenuchten(
//! \ogs_file_param{material_property__porous_medium__porous_medium__relative_permeability__NonWettingPhaseVanGenuchten__m} //! \ogs_file_param{material_property__porous_medium__porous_medium__relative_permeability__NonWettingPhaseVanGenuchten__m}
const double m = config.getConfigParameter<double>("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( OGS_FATAL(
"The exponent parameter of NonWettingPhaseVanGenuchten relative\n" "The exponent parameter of NonWettingPhaseVanGenuchten relative\n"
......
...@@ -46,8 +46,7 @@ public: ...@@ -46,8 +46,7 @@ public:
*/ */
NonWettingPhaseBrookCoreyOilGas(const double Snr, const double Snmax, NonWettingPhaseBrookCoreyOilGas(const double Snr, const double Snmax,
const double m, const double krel_min) const double m, const double krel_min)
: _saturation_r(1. - Snmax), : RelativePermeability(1. - Snmax, 1. - Snr),
_saturation_max(1. - Snr),
_mm(m), _mm(m),
_krel_min(krel_min) _krel_min(krel_min)
{ {
...@@ -68,10 +67,6 @@ public: ...@@ -68,10 +67,6 @@ public:
double getdValue(const double saturation_w) const override; double getdValue(const double saturation_w) const override;
private: 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 _mm; ///< Exponent (>=1.0), n=1/(1-mm).
const double _krel_min; ///< Minimum relative permeability const double _krel_min; ///< Minimum relative permeability
}; };
......
...@@ -48,8 +48,7 @@ public: ...@@ -48,8 +48,7 @@ public:
*/ */
NonWettingPhaseVanGenuchten(const double Snr, const double Snmax, NonWettingPhaseVanGenuchten(const double Snr, const double Snmax,
const double m, const double krel_min) const double m, const double krel_min)
: _saturation_r(1. - Snmax), : RelativePermeability(1. - Snmax, 1. - Snr),
_saturation_max(1. - Snr),
_mm(m), _mm(m),
_krel_min(krel_min) _krel_min(krel_min)
{ {
...@@ -70,10 +69,6 @@ public: ...@@ -70,10 +69,6 @@ public:
double getdValue(const double saturation_w) const override; double getdValue(const double saturation_w) const override;
private: 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 _mm; ///< Exponent (<=1.0), n=1/(1-mm).
const double _krel_min; ///< Minimum relative permeability const double _krel_min; ///< Minimum relative permeability
}; };
......
...@@ -23,6 +23,15 @@ namespace PorousMedium ...@@ -23,6 +23,15 @@ namespace PorousMedium
class RelativePermeability class RelativePermeability
{ {
public: 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; virtual ~RelativePermeability() = default;
/// Get model name. /// Get model name.
...@@ -41,6 +50,9 @@ protected: ...@@ -41,6 +50,9 @@ protected:
* that S in [Sr+_minor_offset, Smax-_minor_offset]. * that S in [Sr+_minor_offset, Smax-_minor_offset].
*/ */
const double _minor_offset = std::numeric_limits<double>::epsilon(); const double _minor_offset = std::numeric_limits<double>::epsilon();
const double _saturation_r; ///< Residual saturation.
const double _saturation_max; ///< Maximum saturation.
}; };
} // end namespace } // end namespace
......
...@@ -28,8 +28,8 @@ class RelativePermeabilityCurve final : public RelativePermeability ...@@ -28,8 +28,8 @@ class RelativePermeabilityCurve final : public RelativePermeability
public: public:
RelativePermeabilityCurve( RelativePermeabilityCurve(
std::unique_ptr<MathLib::PiecewiseLinearInterpolation>& curve_data) std::unique_ptr<MathLib::PiecewiseLinearInterpolation>& curve_data)
: _saturation_r(curve_data->getSupportMin()), : RelativePermeability(curve_data->getSupportMin(),
_saturation_max(curve_data->getSupportMax()), curve_data->getSupportMax()),
_curve_data(std::move(curve_data)) _curve_data(std::move(curve_data))
{ {
} }
...@@ -62,9 +62,6 @@ public: ...@@ -62,9 +62,6 @@ public:
} }
private: private:
const double _saturation_r; ///< Residual saturation.
const double _saturation_max; ///< Maximum saturation.
std::unique_ptr<MathLib::PiecewiseLinearInterpolation> _curve_data; std::unique_ptr<MathLib::PiecewiseLinearInterpolation> _curve_data;
}; };
} // end namespace } // end namespace
......
...@@ -43,7 +43,7 @@ public: ...@@ -43,7 +43,7 @@ public:
*/ */
WettingPhaseBrookCoreyOilGas(const double Sr, const double Smax, WettingPhaseBrookCoreyOilGas(const double Sr, const double Smax,
const double m, const double krel_min) 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: ...@@ -61,10 +61,8 @@ public:
double getdValue(const double saturation) const override; double getdValue(const double saturation) const override;
private: private:
const double _saturation_r; ///< Residual saturation. const double _mm; ///< Exponent (>=1.0), n=1/(1-mm).
const double _saturation_max; ///< Maximum saturation. 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 } // end namespace
......
...@@ -46,7 +46,7 @@ public: ...@@ -46,7 +46,7 @@ public:
*/ */
WettingPhaseVanGenuchten(const double Sr, const double Smax, const double m, WettingPhaseVanGenuchten(const double Sr, const double Smax, const double m,
const double krel_min) 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: ...@@ -64,10 +64,8 @@ public:
double getdValue(const double saturation) const override; double getdValue(const double saturation) const override;
private: private:
const double _saturation_r; ///< Residual saturation. const double _mm; ///< Exponent (<=1.0), n=1/(1-mm).
const double _saturation_max; ///< Maximum saturation. 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 } // end namespace
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment