![]() |
OGS
|
van Genuchten-Mualem relative permeability function for non-wetting phase in terms of effective wetting-phase saturation [25] :
\[k_{rel}^n= (1 - S_e)^{1/2} (1 - S_e^{1/m})^{2m}\]
with
\[S_e=\frac{S^L-S^L_r}{S^L_{\mbox{max}}-S^L_r}\]
where
\begin{eqnarray*} &S^L_r& \mbox{residual saturation of wetting phase,}\\ &S^L_{\mbox{max}}& \mbox{maximum saturation of wetting phase,}\\ &m\, \in (0, 1) & \mbox{ exponent.}\\ \end{eqnarray*}
The derivative of the relative permeability with respect to saturation is computed as
\[\frac{\mathrm{d} k_{rel}^n}{\mathrm{d}S^L}= -(\dfrac{[1-S_e^{1/m}]^{2m}}{2\sqrt{1-S_e}}+2\sqrt{1-S_e} {(1-S_e^{1/m})}^{2*m-1} S_e^{1/m-1})/(S^L_\mbox{max}-S^L_r) \]
As \(S^L \to S^L_\mbox{max}\), or \(S_e \to 1\), \(\dfrac{[1-S_e^{1/m}]^{2m}}{2\sqrt{1-S_e}}\) has a limit of zero.
Definition at line 47 of file RelPermNonWettingPhaseVanGenuchtenMualem.h.
#include <RelPermNonWettingPhaseVanGenuchtenMualem.h>
Public Member Functions | |
| RelPermNonWettingPhaseVanGenuchtenMualem (std::string name, const double S_L_r, const double S_n_r, const double m, const double krel_min, const double a) | |
| void | checkScale () const override |
| PropertyDataType | value (VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override |
| PropertyDataType | dValue (VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override |
| double | computeSaturationForMinimumRelativePermeability () const |
| Public Member Functions inherited from MaterialPropertyLib::Property | |
| virtual | ~Property () |
| virtual PropertyDataType | initialValue (ParameterLib::SpatialPosition const &pos, double const t) const |
| virtual PropertyDataType | value () const |
| virtual PropertyDataType | value (VariableArray const &variable_array, VariableArray const &variable_array_prev, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const |
| virtual PropertyDataType | dValue (VariableArray const &variable_array, VariableArray const &variable_array_prev, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const |
| virtual PropertyDataType | d2Value (VariableArray const &variable_array, Variable const variable1, Variable const variable2, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const |
| Default implementation: 2nd derivative of any constant property is zero. | |
| virtual void | setProperties (std::vector< std::unique_ptr< Phase > > const &phases) |
| Default implementation: | |
| void | setScale (std::variant< Medium *, Phase *, Component * > scale) |
| template<typename T> | |
| T | initialValue (ParameterLib::SpatialPosition const &pos, double const t) const |
| template<typename T> | |
| T | value () const |
| template<typename T> | |
| T | value (VariableArray const &variable_array, VariableArray const &variable_array_prev, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const |
| template<typename T> | |
| T | value (VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const |
| template<typename T> | |
| T | dValue (VariableArray const &variable_array, VariableArray const &variable_array_prev, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const |
| template<typename T> | |
| T | dValue (VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const |
| template<typename T> | |
| T | d2Value (VariableArray const &variable_array, Variable const &variable1, Variable const &variable2, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const |
Private Attributes | |
| const double | S_L_r_ |
| Residual saturation of wetting phase. | |
| const double | S_L_max_ |
| Maximum saturation of wetting phase. | |
| const double | m_ |
| Exponent \( m \). | |
| const double | krel_min_ |
| Minimum relative permeability. | |
| const double | S_L_for_krel_min_ |
Liquid saturation that gives krel_min_. | |
| const double | a_ |
Additional Inherited Members | |
| Protected Attributes inherited from MaterialPropertyLib::Property | |
| std::string | name_ |
| PropertyDataType | value_ |
| The single value of a property. | |
| PropertyDataType | dvalue_ |
| std::variant< Medium *, Phase *, Component * > | scale_ |
| MaterialPropertyLib::RelPermNonWettingPhaseVanGenuchtenMualem::RelPermNonWettingPhaseVanGenuchtenMualem | ( | std::string | name, |
| const double | S_L_r, | ||
| const double | S_n_r, | ||
| const double | m, | ||
| const double | krel_min, | ||
| const double | a ) |
| name | Name of the property, |
| S_L_r | Residual saturation of the wetting phase, \( S^L_r \) |
| S_n_r | Residual saturation of the non-wetting phase, \( S^n_{r} \) |
| m | Exponent, \( m \in [0,1]\) |
| krel_min | Minimum relative permeability, \( k_{rel}^n_{\mbox{min}}\) |
| a | Multiplier |
Definition at line 32 of file RelPermNonWettingPhaseVanGenuchtenMualem.cpp.
References a_, MaterialPropertyLib::checkVanGenuchtenExponentRange(), computeSaturationForMinimumRelativePermeability(), krel_min_, m_, MaterialPropertyLib::name, MaterialPropertyLib::Property::name_, S_L_for_krel_min_, S_L_max_, and S_L_r_.
|
inlineoverridevirtual |
Reimplemented from MaterialPropertyLib::Property.
Definition at line 68 of file RelPermNonWettingPhaseVanGenuchtenMualem.h.
References OGS_FATAL, and MaterialPropertyLib::Property::scale_.
| double MaterialPropertyLib::RelPermNonWettingPhaseVanGenuchtenMualem::computeSaturationForMinimumRelativePermeability | ( | ) | const |
Computes the saturation that gives the minimum relative permeability by using the Regula–Falsi Method.
Definition at line 98 of file RelPermNonWettingPhaseVanGenuchtenMualem.cpp.
References MaterialPropertyLib::computeVanGenuchtenMualemValue(), krel_min_, m_, MathLib::Nonlinear::makeRegulaFalsi(), S_L_max_, and S_L_r_.
Referenced by RelPermNonWettingPhaseVanGenuchtenMualem().
|
overridevirtual |
Reimplemented from MaterialPropertyLib::Property.
Definition at line 63 of file RelPermNonWettingPhaseVanGenuchtenMualem.cpp.
References a_, MaterialPropertyLib::liquid_saturation, MaterialPropertyLib::VariableArray::liquid_saturation, m_, OGS_FATAL, S_L_for_krel_min_, S_L_max_, and S_L_r_.
|
overridevirtual |
Reimplemented from MaterialPropertyLib::Property.
Definition at line 50 of file RelPermNonWettingPhaseVanGenuchtenMualem.cpp.
References a_, MaterialPropertyLib::computeVanGenuchtenMualemValue(), krel_min_, MaterialPropertyLib::VariableArray::liquid_saturation, m_, S_L_max_, and S_L_r_.
|
private |
Definition at line 103 of file RelPermNonWettingPhaseVanGenuchtenMualem.h.
Referenced by RelPermNonWettingPhaseVanGenuchtenMualem(), dValue(), and value().
|
private |
Minimum relative permeability.
Definition at line 100 of file RelPermNonWettingPhaseVanGenuchtenMualem.h.
Referenced by RelPermNonWettingPhaseVanGenuchtenMualem(), computeSaturationForMinimumRelativePermeability(), and value().
|
private |
Exponent \( m \).
Definition at line 99 of file RelPermNonWettingPhaseVanGenuchtenMualem.h.
Referenced by RelPermNonWettingPhaseVanGenuchtenMualem(), computeSaturationForMinimumRelativePermeability(), dValue(), and value().
|
private |
Liquid saturation that gives krel_min_.
Definition at line 102 of file RelPermNonWettingPhaseVanGenuchtenMualem.h.
Referenced by RelPermNonWettingPhaseVanGenuchtenMualem(), and dValue().
|
private |
Maximum saturation of wetting phase.
Definition at line 98 of file RelPermNonWettingPhaseVanGenuchtenMualem.h.
Referenced by RelPermNonWettingPhaseVanGenuchtenMualem(), computeSaturationForMinimumRelativePermeability(), dValue(), and value().
|
private |
Residual saturation of wetting phase.
Definition at line 97 of file RelPermNonWettingPhaseVanGenuchtenMualem.h.
Referenced by RelPermNonWettingPhaseVanGenuchtenMualem(), computeSaturationForMinimumRelativePermeability(), dValue(), and value().