![]() |
OGS
|
van Genuchten water retention model
\[p_c=p_b (S_e^{-1/m}-1)^{1-m}\]
with
\[S_e=\frac{S-S_r}{S_{\mbox{max}}-S_r}\]
where
\begin{eqnarray*} &p_b& \mbox{ entry pressure,}\\ &S_r& \mbox{ residual saturation,}\\ &S_{\mbox{max}}& \mbox{ maximum saturation,}\\ &m(<=1) & \mbox{ exponent.}\\ \end{eqnarray*}
Note:
\[n=1/(1-m)\]
.
If \(\alpha\) instead of \(p_b\) is available, \(p_b\) can be calculated as
\[p_b=\rho g/\alpha\]
The regularized van Genuchten model, please ref to Marchand E, Mueller T, Knabner P. Fully coupled generalized hybrid-mixed finite element approximation of two-phase two-component flow in porous media. Part I: formulation and properties of the mathematical model. Comput Geosci 2013;17(2):431-442.
Definition at line 53 of file VanGenuchtenCapillaryPressureSaturation.h.
#include <VanGenuchtenCapillaryPressureSaturation.h>
Public Member Functions | |
| VanGenuchtenCapillaryPressureSaturation (const double pb, const double Sr, const double Sg_r, const double Smax, const double m, const double Pc_max, const bool has_regularized) | |
| std::string | getName () const override |
| Get model name. | |
| double | getCapillaryPressure (const double saturation) const override |
| Get capillary pressure. | |
| double | getSaturation (const double capillary_pressure) const override |
| Get saturation. | |
| double | getdPcdS (const double saturation) const override |
| Get the derivative of the capillary pressure with respect to saturation. | |
| double | getd2PcdS2 (const double saturation) const override |
Public Member Functions inherited from MaterialLib::PorousMedium::CapillaryPressureSaturation | |
| CapillaryPressureSaturation (const double Sr, const double Sg_r, const double Smax, const double Pc_max) | |
| virtual | ~CapillaryPressureSaturation ()=default |
Private Member Functions | |
| double | getPcBarvGSg (double Sg) const |
| parameter in regularized van Genuchten model | |
| double | getSBar (double Sg) const |
| Regularized van Genuchten capillary pressure-saturation Model. | |
| double | getPcvGSg (double Sg) const |
| van Genuchten capillary pressure-saturation Model | |
| double | getdPcdSvGBar (double Sg) const |
| double | getdPcdSvG (const double Sg) const |
Private Attributes | |
| const double | _pb |
| Entry pressure. | |
| const double | _m |
| Exponent m, m in [0,1]. n=1/(1-m). | |
| const bool | _has_regularized |
| const double | _xi = 1e-5 |
| using regularized van Genuchten model | |
Additional Inherited Members | |
Protected Attributes inherited from MaterialLib::PorousMedium::CapillaryPressureSaturation | |
| const double | _saturation_r |
| Residual saturation. | |
| const double | _saturation_nonwet_r |
| const double | _saturation_max |
| Maximum saturation. | |
| const double | _pc_max |
| Maximum capillary pressure. | |
| const double | _minor_offset = std::numeric_limits<double>::epsilon() |
|
inline |
| pb | Entry pressure, \( p_b \) |
| Sr | Residual saturation, \( S_r \) |
| Sg_r | Residual saturation, \( S_g^{\mbox{r}} \) |
| Smax | Maximum saturation, \( S_{\mbox{max}} \) |
| m | Exponent, \( m \) |
| Pc_max | Maximum capillary pressure, \( P_c^{\mbox{max}}\) |
| has_regularized | whether use the regularized van Genuchten model, \( m \) |
Definition at line 67 of file VanGenuchtenCapillaryPressureSaturation.h.
|
overridevirtual |
Get capillary pressure.
Implements MaterialLib::PorousMedium::CapillaryPressureSaturation.
Definition at line 24 of file VanGenuchtenCapillaryPressureSaturation.cpp.
References _has_regularized, _m, MaterialLib::PorousMedium::CapillaryPressureSaturation::_minor_offset, _pb, MaterialLib::PorousMedium::CapillaryPressureSaturation::_pc_max, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_max, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_nonwet_r, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_r, getdPcdSvGBar(), and getPcBarvGSg().
|
overridevirtual |
Get the second derivative of the capillary pressure with respect to saturation
Implements MaterialLib::PorousMedium::CapillaryPressureSaturation.
Definition at line 95 of file VanGenuchtenCapillaryPressureSaturation.cpp.
References _has_regularized, _m, MaterialLib::PorousMedium::CapillaryPressureSaturation::_minor_offset, _pb, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_max, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_r, and OGS_FATAL.
|
overridevirtual |
Get the derivative of the capillary pressure with respect to saturation.
Implements MaterialLib::PorousMedium::CapillaryPressureSaturation.
Definition at line 61 of file VanGenuchtenCapillaryPressureSaturation.cpp.
References _has_regularized, _m, MaterialLib::PorousMedium::CapillaryPressureSaturation::_minor_offset, _pb, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_max, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_nonwet_r, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_r, and getdPcdSvGBar().
|
private |
derivative dPCdS based on standard van Genuchten capillary pressure-saturation Model
Definition at line 154 of file VanGenuchtenCapillaryPressureSaturation.cpp.
References _m, _pb, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_nonwet_r, and MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_r.
Referenced by getdPcdSvGBar().
|
private |
derivative dPCdS based on regularized van Genuchten capillary pressure-saturation Model
Definition at line 147 of file VanGenuchtenCapillaryPressureSaturation.cpp.
References _xi, getdPcdSvG(), and getSBar().
Referenced by getCapillaryPressure(), and getdPcdS().
|
inlineoverridevirtual |
Get model name.
Implements MaterialLib::PorousMedium::CapillaryPressureSaturation.
Definition at line 80 of file VanGenuchtenCapillaryPressureSaturation.h.
|
private |
parameter in regularized van Genuchten model
Regularized van Genuchten capillary pressure-saturation Model.
Regularized van Genuchten capillary pressure-saturation Model
Definition at line 122 of file VanGenuchtenCapillaryPressureSaturation.cpp.
References MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_nonwet_r, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_r, _xi, getPcvGSg(), and getSBar().
Referenced by getCapillaryPressure().
|
private |
van Genuchten capillary pressure-saturation Model
Definition at line 137 of file VanGenuchtenCapillaryPressureSaturation.cpp.
References _m, _pb, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_nonwet_r, and MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_r.
Referenced by getPcBarvGSg().
|
overridevirtual |
Get saturation.
Implements MaterialLib::PorousMedium::CapillaryPressureSaturation.
Definition at line 51 of file VanGenuchtenCapillaryPressureSaturation.cpp.
References _m, MaterialLib::PorousMedium::CapillaryPressureSaturation::_minor_offset, _pb, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_max, and MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_r.
|
private |
Regularized van Genuchten capillary pressure-saturation Model.
Definition at line 130 of file VanGenuchtenCapillaryPressureSaturation.cpp.
References MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_nonwet_r, MaterialLib::PorousMedium::CapillaryPressureSaturation::_saturation_r, and _xi.
Referenced by getdPcdSvGBar(), and getPcBarvGSg().
|
private |
Definition at line 99 of file VanGenuchtenCapillaryPressureSaturation.h.
Referenced by getCapillaryPressure(), getd2PcdS2(), and getdPcdS().
|
private |
Exponent m, m in [0,1]. n=1/(1-m).
Definition at line 98 of file VanGenuchtenCapillaryPressureSaturation.h.
Referenced by getCapillaryPressure(), getd2PcdS2(), getdPcdS(), getdPcdSvG(), getPcvGSg(), and getSaturation().
|
private |
Entry pressure.
Definition at line 97 of file VanGenuchtenCapillaryPressureSaturation.h.
Referenced by getCapillaryPressure(), getd2PcdS2(), getdPcdS(), getdPcdSvG(), getPcvGSg(), and getSaturation().
|
private |
using regularized van Genuchten model
Definition at line 100 of file VanGenuchtenCapillaryPressureSaturation.h.
Referenced by getdPcdSvGBar(), getPcBarvGSg(), and getSBar().