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().