![]() |
OGS
|
|
The Lu - Mc Cartney water retention behavior.
This property must be a medium property, it computes the saturation of the wetting phase as function of capillary pressure.
Original source: Lu, Y., McCartney, J.S. Temperature effects on adsorption and capillarity water retention mechanisms in constrained unsaturated soils. Acta Geotech. 19, 6467-6482 (2024). https://doi.org/10.1007/s11440-024-02341-9 and Guo, G., Zheng, L., Lu, Y., Behbehani, F., & McCartney, J. (2026). Coupled THM modeling of bentonite heating and hydration in tank TemperatureTypes with a new temperature-dependent water retention model. Computers and Geotechnics, 190, 107736. https://doi.org/10.1016/j.compgeo.2025.107736 Get rights and content
Definition at line 41 of file SaturationLuMcCartney.h.
#include <SaturationLuMcCartney.h>
Public Member Functions | |
| SaturationLuMcCartney (std::string name, std::string const &material) | |
| void | checkScale () const override |
| PropertyDataType | value (VariableArray const &variable_array, ParameterLib::SpatialPosition const &, double const, double const) const override |
| PropertyDataType | dValue (VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &, double const, double const) const override |
| PropertyDataType | d2Value (VariableArray const &variable_array, Variable const variable1, Variable const variable2, ParameterLib::SpatialPosition const &, double const, double const) const override |
| Default implementation: 2nd derivative of any constant property is zero. | |
| template<typename PressureType, typename TemperatureType> | |
| promote< PressureType, TemperatureType > | water_content (PressureType p_cap, TemperatureType T, VariableArray const &variable_array) const |
| template<typename PressureType, typename TemperatureType> | |
| promote< PressureType, TemperatureType > | adsorptive_water_content (PressureType p_cap, TemperatureType T, VariableArray const &variable_array) const |
| template<typename PressureType, typename TemperatureType> | |
| promote< PressureType, TemperatureType > | capillary_water_content (PressureType p_cap, TemperatureType T, VariableArray const &variable_array) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | theta_a_max (TemperatureType T, VariableArray const &variable_array) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | psi_max (TemperatureType T) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | c (TemperatureType T) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | CEC (TemperatureType T) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | psi_c (TemperatureType T, VariableArray const &variable_array) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | A_H (TemperatureType T) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | chi (TemperatureType T) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | delta_h (TemperatureType T) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | alpha (TemperatureType T) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | epsilon_w (TemperatureType T) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | zeta_s (TemperatureType T) const |
| template<typename TemperatureType> | |
| promote< TemperatureType > | rho_w (TemperatureType T) 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 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 Member Functions | |
| template<typename PressureType, typename TemperatureType> | |
| boost::math::differentiation::promote< PressureType, TemperatureType > | water_content (PressureType p_cap, TemperatureType T, VariableArray const &variable_array) const |
| template<typename PressureType, typename TemperatureType> | |
| boost::math::differentiation::promote< PressureType, TemperatureType > | adsorptive_water_content (PressureType p_cap, TemperatureType T, VariableArray const &variable_array) const |
| template<typename PressureType, typename TemperatureType> | |
| boost::math::differentiation::promote< PressureType, TemperatureType > | capillary_water_content (PressureType p_cap, TemperatureType T, VariableArray const &variable_array) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | theta_a_max (TemperatureType T, VariableArray const &variable_array) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | psi_max (TemperatureType T) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | c (TemperatureType T) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | CEC (TemperatureType T) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | psi_c (TemperatureType T, VariableArray const &variable_array) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | A_H (TemperatureType T) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | chi (TemperatureType T) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | delta_h (TemperatureType T) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | alpha (TemperatureType T) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | epsilon_w (TemperatureType T) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | zeta_s (TemperatureType T) const |
| template<typename TemperatureType> | |
| boost::math::differentiation::promote< TemperatureType > | rho_w (TemperatureType T) const |
Private Attributes | |
| std::string const | material_ |
| const MaterialLib::Fluid::DimensionLessGibbsFreeEnergyRegion1 | gibbs_free_energy_ |
| double const | nu_w = 1.8e-5 |
| <-— Lu and McCartney 2024 parameters ----> | |
| double const | A = 0.92 |
| fitting parameter for cation exchange capacity | |
| double const | B = 0.9 |
| fitting parameter for cation exchange capacity | |
| double const | T1 = 373.15 |
| parameter for temperature effect of CEC in K | |
| double const | T2 |
| parameter for temperature effect of CEC in K | |
| double const | nu_e |
| main absorption frequency of UV light in Hz | |
| double const | Tr = 293.15 |
| reference temperature in K | |
| double const | C1 = -0.00151 |
| parameter for temperature correction | |
| double const | n_w = 1.33 |
| diffraction index | |
| double | E1_minus_EL |
| material parameters for adsorptive water content | |
| double | nu_mr |
| double | CEC_max |
| maximum cation exchange capacity in meq/g | |
| double | bw |
| double | M |
| exponent for adsorptive water content | |
| double | SSA |
| material parameters for capillary water content | |
| double | epsilon_s |
| dielectic constant of soil particles | |
| double | n_s |
| refractive index of soil particles | |
| double | eta_alpha |
| soil related coefficient | |
| double | alpha_0_inv |
| air entry suction at reference temperature Tr in Pa | |
| double | chi_r |
| double | N |
| exponent for capillary water content | |
Static Private Attributes | |
| static constexpr double | ref_T_ = 1386 |
| reference temperature in K. | |
| static constexpr double | ref_p_ = 1.653e7 |
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::SaturationLuMcCartney::SaturationLuMcCartney | ( | std::string | name, |
| std::string const & | material ) |
Definition at line 157 of file SaturationLuMcCartney.cpp.
References alpha_0_inv, bw, C1, CEC_max, chi_r, delta_h(), E1_minus_EL, epsilon_s, eta_alpha, gibbs_free_energy_, M, material_, N, n_s, MaterialPropertyLib::name, MaterialPropertyLib::Property::name_, nu_mr, OGS_FATAL, SSA, and Tr.
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::A_H | ( | TemperatureType | T | ) | const |
Definition at line 94 of file SaturationLuMcCartney.cpp.
References MaterialLib::PhysicalConstant::BoltzmannConstant, epsilon_s, epsilon_w(), n_s, n_w, nu_e, and MaterialLib::PhysicalConstant::PlanckConstant.
|
private |
Referenced by psi_c().
| promote< PressureType, TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::adsorptive_water_content | ( | PressureType | p_cap, |
| TemperatureType | T, | ||
| VariableArray const & | variable_array ) const |
Definition at line 29 of file SaturationLuMcCartney.cpp.
References M, psi_max(), and theta_a_max().
|
private |
Referenced by capillary_water_content(), and water_content().
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::alpha | ( | TemperatureType | T | ) | const |
Definition at line 123 of file SaturationLuMcCartney.cpp.
References alpha_0_inv, eta_alpha, and Tr.
|
private |
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::c | ( | TemperatureType | T | ) | const |
Definition at line 71 of file SaturationLuMcCartney.cpp.
References E1_minus_EL, and MaterialLib::PhysicalConstant::IdealGasConstant.
|
private |
| promote< PressureType, TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::capillary_water_content | ( | PressureType | p_cap, |
| TemperatureType | T, | ||
| VariableArray const & | variable_array ) const |
Definition at line 39 of file SaturationLuMcCartney.cpp.
References adsorptive_water_content(), MaterialPropertyLib::alpha, chi(), chi_r, N, MaterialPropertyLib::VariableArray::porosity, psi_c(), and Tr.
|
private |
Referenced by water_content().
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::CEC | ( | TemperatureType | T | ) | const |
Definition at line 78 of file SaturationLuMcCartney.cpp.
|
private |
Referenced by theta_a_max(), and zeta_s().
|
inlineoverridevirtual |
Reimplemented from MaterialPropertyLib::Property.
Definition at line 46 of file SaturationLuMcCartney.h.
References OGS_FATAL, and MaterialPropertyLib::Property::scale_.
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::chi | ( | TemperatureType | T | ) | const |
|
private |
Referenced by capillary_water_content().
|
overridevirtual |
Default implementation: 2nd derivative of any constant property is zero.
This virtual method will compute the second derivative of a property with respect to the given variables pv1 and pv2.
Reimplemented from MaterialPropertyLib::Property.
Definition at line 332 of file SaturationLuMcCartney.cpp.
References MaterialPropertyLib::capillary_pressure, MaterialPropertyLib::VariableArray::capillary_pressure, MaterialPropertyLib::density, MaterialPropertyLib::VariableArray::density, MaterialPropertyLib::porosity, MaterialPropertyLib::VariableArray::porosity, psi_max(), MaterialPropertyLib::Property::scale_, MaterialPropertyLib::Solid, MaterialPropertyLib::temperature, MaterialPropertyLib::VariableArray::temperature, and water_content().
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::delta_h | ( | TemperatureType | T | ) | const |
Definition at line 115 of file SaturationLuMcCartney.cpp.
References Tr.
|
private |
Referenced by SaturationLuMcCartney(), and chi().
|
overridevirtual |
This virtual method will compute the property derivative value based on the variables that are passed as arguments with the default implementation using empty variables array for the previous time step.
The default implementation of this method only returns the property value derivative without altering it.
Reimplemented from MaterialPropertyLib::Property.
Definition at line 268 of file SaturationLuMcCartney.cpp.
References MaterialPropertyLib::capillary_pressure, MaterialPropertyLib::VariableArray::capillary_pressure, MaterialPropertyLib::density, MaterialPropertyLib::VariableArray::density, OGS_FATAL, MaterialPropertyLib::porosity, MaterialPropertyLib::VariableArray::porosity, psi_max(), MaterialPropertyLib::Property::scale_, MaterialPropertyLib::Solid, MaterialPropertyLib::temperature, MaterialPropertyLib::VariableArray::temperature, and water_content().
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::epsilon_w | ( | TemperatureType | T | ) | const |
Definition at line 130 of file SaturationLuMcCartney.cpp.
References rho_w().
|
private |
Referenced by A_H().
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::psi_c | ( | TemperatureType | T, |
| VariableArray const & | variable_array ) const |
Definition at line 85 of file SaturationLuMcCartney.cpp.
References A_H(), MaterialPropertyLib::VariableArray::density, SSA, and theta_a_max().
|
private |
Referenced by capillary_water_content().
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::psi_max | ( | TemperatureType | T | ) | const |
Definition at line 64 of file SaturationLuMcCartney.cpp.
References MaterialPropertyLib::c, MaterialLib::PhysicalConstant::IdealGasConstant, and nu_w.
|
private |
Referenced by adsorptive_water_content(), d2Value(), dValue(), and value().
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::rho_w | ( | TemperatureType | T | ) | const |
Definition at line 147 of file SaturationLuMcCartney.cpp.
References gibbs_free_energy_, ref_p_, ref_T_, and MaterialLib::PhysicalConstant::SpecificGasConstant::WaterVapour.
|
private |
Referenced by epsilon_w().
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::theta_a_max | ( | TemperatureType | T, |
| VariableArray const & | variable_array ) const |
Definition at line 57 of file SaturationLuMcCartney.cpp.
References bw, CEC(), MaterialPropertyLib::VariableArray::porosity, and zeta_s().
|
private |
Referenced by adsorptive_water_content(), and psi_c().
|
overridevirtual |
Those methods override the base class implementations and actually compute and set the property values_ and dValues_.
Reimplemented from MaterialPropertyLib::Property.
Definition at line 233 of file SaturationLuMcCartney.cpp.
References MaterialPropertyLib::VariableArray::capillary_pressure, MaterialPropertyLib::density, MaterialPropertyLib::VariableArray::density, MaterialPropertyLib::porosity, MaterialPropertyLib::VariableArray::porosity, psi_max(), MaterialPropertyLib::Property::scale_, MaterialPropertyLib::Solid, MaterialPropertyLib::VariableArray::temperature, and water_content().
| promote< PressureType, TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::water_content | ( | PressureType | p_cap, |
| TemperatureType | T, | ||
| VariableArray const & | variable_array ) const |
Definition at line 19 of file SaturationLuMcCartney.cpp.
References adsorptive_water_content(), and capillary_water_content().
|
private |
| promote< TemperatureType > MaterialPropertyLib::SaturationLuMcCartney::zeta_s | ( | TemperatureType | T | ) | const |
Definition at line 141 of file SaturationLuMcCartney.cpp.
References MaterialPropertyLib::c, CEC(), and nu_mr.
|
private |
Referenced by theta_a_max().
|
private |
fitting parameter for cation exchange capacity
Definition at line 133 of file SaturationLuMcCartney.h.
Referenced by CEC().
|
private |
air entry suction at reference temperature Tr in Pa
Definition at line 159 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and alpha().
|
private |
fitting parameter for cation exchange capacity
Definition at line 134 of file SaturationLuMcCartney.h.
Referenced by CEC().
|
private |
Definition at line 150 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and theta_a_max().
|
private |
parameter for temperature correction
Definition at line 141 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and chi().
|
private |
maximum cation exchange capacity in meq/g
Definition at line 149 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and CEC().
|
private |
Definition at line 160 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and capillary_water_content().
|
private |
material parameters for adsorptive water content
energy difference between heat of adorption of first and second layer in J/mol
Definition at line 145 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and c().
|
private |
dielectic constant of soil particles
Definition at line 155 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and A_H().
|
private |
soil related coefficient
Definition at line 157 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and alpha().
|
private |
Definition at line 126 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and rho_w().
|
private |
exponent for adsorptive water content
Definition at line 151 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and adsorptive_water_content().
|
private |
Definition at line 123 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney().
|
private |
exponent for capillary water content
Definition at line 161 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and capillary_water_content().
|
private |
refractive index of soil particles
Definition at line 156 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and A_H().
|
private |
|
private |
main absorption frequency of UV light in Hz
Definition at line 138 of file SaturationLuMcCartney.h.
Referenced by A_H().
|
private |
gravimetric moisture content when first layer is fully saturated
Definition at line 147 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and zeta_s().
|
private |
<-— Lu and McCartney 2024 parameters ---->
molar volume of water in m^3/mol
Definition at line 132 of file SaturationLuMcCartney.h.
Referenced by psi_max().
|
staticconstexprprivate |
Definition at line 129 of file SaturationLuMcCartney.h.
Referenced by rho_w().
|
staticconstexprprivate |
reference temperature in K.
Definition at line 128 of file SaturationLuMcCartney.h.
Referenced by rho_w().
|
private |
material parameters for capillary water content
specific surface area in m^2/g
Definition at line 154 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), and psi_c().
|
private |
parameter for temperature effect of CEC in K
Definition at line 135 of file SaturationLuMcCartney.h.
Referenced by CEC().
|
private |
parameter for temperature effect of CEC in K
Definition at line 136 of file SaturationLuMcCartney.h.
Referenced by CEC().
|
private |
reference temperature in K
Definition at line 140 of file SaturationLuMcCartney.h.
Referenced by SaturationLuMcCartney(), alpha(), capillary_water_content(), and delta_h().