OGS
|
The van Genuchten capillary pressure model.
The van Genuchten capillary pressure model ([40]) is:
\[p_c(S)=p_b (S_\text{eff}^{-1/m}-1)^{1-m}\]
with effective saturation defined as
\[S_\text{eff}=\frac{S-S_r}{S_{\text{max}}-S_r}.\]
Above, \(S_r\) and \(S_{\text{max}}\) are the residual and the maximum saturations. The exponent \(m \in (0,1)\) and the pressure scaling parameter \(p_b\) (it is equal to \(\rho g/\alpha\) in original publication) are given by the user. The scaling parameter \(p_b\) is given in same units as pressure.
In the original work another exponent \(n\) is used, but usually set to \(n = 1 / (1 - m)\), and also in this implementation.
The the capillary pressure is computed from saturation as above but is cut off at maximum capillary pressure given by user.
Definition at line 42 of file CapillaryPressureVanGenuchten.h.
#include <CapillaryPressureVanGenuchten.h>
Public Member Functions | |
CapillaryPressureVanGenuchten (std::string name, double const residual_liquid_saturation, double const residual_gas_saturation, double const exponent, double const p_b, double const maximum_capillary_pressure) | |
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 |
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 | |
double const | S_L_res_ |
Residual saturation of liquid phase. | |
double const | S_L_max_ |
Maximum saturation of liquid phase. | |
double const | m_ |
Exponent. | |
double const | p_b_ |
Pressure scaling factor. | |
double const | p_cap_max_ |
Maximum capillary pressure. | |
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::CapillaryPressureVanGenuchten::CapillaryPressureVanGenuchten | ( | std::string | name, |
double const | residual_liquid_saturation, | ||
double const | residual_gas_saturation, | ||
double const | exponent, | ||
double const | p_b, | ||
double const | maximum_capillary_pressure ) |
Definition at line 21 of file CapillaryPressureVanGenuchten.cpp.
References m_, MaterialPropertyLib::name, MaterialPropertyLib::Property::name_, OGS_FATAL, p_b_, p_cap_max_, S_L_max_, and S_L_res_.
|
inlineoverridevirtual |
Reimplemented from MaterialPropertyLib::Property.
Definition at line 52 of file CapillaryPressureVanGenuchten.h.
References OGS_FATAL, and MaterialPropertyLib::Property::scale_.
|
overridevirtual |
Reimplemented from MaterialPropertyLib::Property.
Definition at line 109 of file CapillaryPressureVanGenuchten.cpp.
References MaterialPropertyLib::liquid_saturation, MaterialPropertyLib::VariableArray::liquid_saturation, m_, OGS_FATAL, p_b_, p_cap_max_, S_L_max_, and S_L_res_.
|
overridevirtual |
Reimplemented from MaterialPropertyLib::Property.
Definition at line 83 of file CapillaryPressureVanGenuchten.cpp.
References MaterialPropertyLib::VariableArray::liquid_saturation, m_, p_b_, p_cap_max_, S_L_max_, and S_L_res_.
|
private |
Exponent.
Definition at line 78 of file CapillaryPressureVanGenuchten.h.
Referenced by CapillaryPressureVanGenuchten(), dValue(), and value().
|
private |
Pressure scaling factor.
Definition at line 79 of file CapillaryPressureVanGenuchten.h.
Referenced by CapillaryPressureVanGenuchten(), dValue(), and value().
|
private |
Maximum capillary pressure.
Definition at line 80 of file CapillaryPressureVanGenuchten.h.
Referenced by CapillaryPressureVanGenuchten(), dValue(), and value().
|
private |
Maximum saturation of liquid phase.
Definition at line 77 of file CapillaryPressureVanGenuchten.h.
Referenced by CapillaryPressureVanGenuchten(), dValue(), and value().
|
private |
Residual saturation of liquid phase.
Definition at line 76 of file CapillaryPressureVanGenuchten.h.
Referenced by CapillaryPressureVanGenuchten(), dValue(), and value().