pedon.soilmodel module¶
Soil models for soil water retention and hydraulic conductivity.
- class pedon.soilmodel.Brooks(k_s: float, theta_r: float, theta_s: float, h_b: float, l: float)¶
Bases:
objectBrooks and Corey Soil Model.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_r (float) – Residual soil water content [-]
theta_s (float) – Saturated soil water content [-]
h_b (float) – Bubbling pressure or air-entry suction [L]
l (float) – Pore-size distribution index [-]
References
Brooks, R.H. and Corey, A.T. (1964) - Hydraulic Properties of Porous Media. Hydrology Papers 3, Colorado State University, Fort Collins, CO. url: https://mountainscholar.org/items/3c7b98df-13e3-486c-9d1e-949a7a869f76
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- h_b: float¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- l: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_r: float¶
- theta_s: float¶
- class pedon.soilmodel.Brunswick(k_sc: float, k_snc: float, theta_sc: float, theta_snc: float, alpha: float, n: float, l: float = 0.5)¶
Bases:
objectBrunswick soil hydraulic property model.
Partitions pore space into capillary (c) and noncapillary (nc) fractions, overcoming the inability of the van Genuchten-Mualem (VGM) model to describe hydraulic properties in the dry range.
- Parameters:
k_sc (float) – Saturated capillary hydraulic conductivity K_sc [L/T].
k_snc (float) – Saturated noncapillary hydraulic conductivity K_snc [L/T].
theta_sc (float) – Saturated capillary water content θ_sc [-].
theta_snc (float) – Saturated noncapillary water content θ_snc [-].
alpha (float) – van Genuchten alpha parameter [1/cm].
n (float) – van Genuchten n parameter [-].
l (float, optional) – Mualem tortuosity/connectivity exponent τ [-]. Default 0.5.
Notes
The noncapillary desaturation head is fixed at h_d = 100/alpha (BW-VGM variant). Units of k_sc and k_snc must be consistent with the calling code; the class does not enforce a particular unit.
References
Weber, T. K. D., Durner, W., Streck, T., & Diamantopoulos, E. (2019). A modular framework for modeling unsaturated soil hydraulic properties over the full moisture range. Water Resources Research, 55, 4994-5011. doi: 10.1029/2018WR024584
Weber, T. K. D., Finkel, M., da Conceição Gonçalves, M., Vereecken, H., & Diamantopoulos, E. (2020). Pedotransfer function for the Brunswick soil hydraulic property model and comparison to the van Genuchten-Mualem model. Water Resources Research, 56, e2019WR026820. doi: 10.1029/2019WR026820
Diamantopoulos, E., Simunek, J., & Weber, T. K. D. (2024). Implementation of the Brunswick model system into the Hydrus software suite. Vadose Zone Journal, 23, Article e20326. doi: 10.1002/vzj2.20326
- alpha: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate pressure head via numerical inverse of the water content function.
Uses Brent’s method over the bracket [0, 10^6.8 cm] (pF 0 … 6.8).
- Parameters:
theta (FloatArray) – Volumetric water content [cm³ cm⁻³].
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate hydraulic conductivity from pressure head or saturation.
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Total relative hydraulic conductivity K_r(h) [-].
- k_rsc(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Relative capillary hydraulic conductivity K_rc(h) [-].
- k_rsnc(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Relative noncapillary hydraulic conductivity K_rnc(h) [-].
- property k_s: float¶
Saturated hydraulic conductivity.
- k_sc: float¶
- k_snc: float¶
- l: float = 0.5¶
- m: float¶
- n: float¶
- plot(ax: Axes | None = None) Axes¶
Plot the soil water retention curve.
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate effective saturation from pressure head.
- sc(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Capillary effective saturation S_c(h) [-].
- snc(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Noncapillary effective saturation S_nc(h) [-].
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate soil moisture content from pressure head.
- property theta_r: float¶
Residual water content.
- property theta_s: float¶
Saturated water content.
- theta_sc: float¶
- theta_snc: float¶
- class pedon.soilmodel.Campbell(k_s: float, theta_s: float, h_b: float, b: float)¶
Bases:
objectCampbell Soil Model.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_s (float) – Saturated soil water content [-]
h_b (float) – Air-entry potential or bubbling pressure [L]
b (float) – Empirical shape parameter controlling the slope of the curve [-]
References
Campbell, G. S. (1974). A simple method for determining unsaturated conductivity from moisture retention data. Soil Science, 117(6), 311–314. doi: 10.1097/00010694-197406000-00001
- b: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- h_b: float¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_s: float¶
- class pedon.soilmodel.Fredlund(k_s: float, theta_s: float, a: float, n: float, m: float)¶
Bases:
objectFredlund and Xing Soil Model.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_s (float) – Saturated soil water content [-]
a (float) – Soil parameter related to the air-entry value [L]
n (float) – Empirical soil parameter controlling the slope of the SWCC [-]
m (float) – Empirical soil parameter related to the residual water content [-]
References
Fredlund, D. G. and Xing, A. (1994). Equations for the soil-water characteristic curve. Canadian Geotechnical Journal, 31(4), 521–532. doi: 10.1139/t94-061
- a: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- m: float¶
- n: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_s: float¶
- class pedon.soilmodel.Gardner(k_s: float, theta_s: float, m: float, c: float)¶
Bases:
objectGardner(-Kozeny) Soil Model.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_s (float) – Saturated soil water content [-]
m (float) – Empirical exponent parameter for the soil water retention curve [1/L]
c (float) – Empirical exponent parameter for the hydraulic conductivity curve [1/L] (Often denoted as alpha in the classic Gardner exponential model)
References
Kozeny, J. (1927). Ueber kapillare Leitung des Wassers im Boden. Sitzungsberichte der Akademie der Wissenschaften in Wien, Mathematisch-Naturwissenschaftliche Klasse, Abteilung IIa, 136, 271–306.
Gardner, W. R. (1958). Some steady-state solutions of the unsaturated moisture flow equation with application to evaporation from a water table. Soil Science, 85(4), 228–232. doi: 10.1097/00010694-195804000-00006
Brutsaert, W. (1967). Some methods of calculating unsaturated permeability. Transactions of the ASAE, 10(3), 400–404. doi: 10.13031/2013.39683
Mathias, S. A., & Butler, A. P. (2006). Linearized Richards’ equation approach to pumping test analysis in compressible aquifers. Water Resources Research, 42(6), W06408. doi: 10.1029/2005WR004680
Bakker, M., & Nieber, J. L. (2009). Damping of sinusoidal surface flux fluctuations with soil depth. Vadose Zone Journal, 8(1), 119–126. doi: 10.2136/vzj2008.0084
- c: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- m: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_s: float¶
- class pedon.soilmodel.Genuchten(k_s: float, theta_r: float, theta_s: float, alpha: float, n: float, l: float = 0.5)¶
Bases:
objectMualem-van Genuchten Soil Model.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_r (float) – Residual soil water content [-]
theta_s (float) – Saturated soil water content [-]
n (float) – Dimensionless measure of the pore-size distribution
alpha (float) – Empirical shape parameter that is physically related to the inverse of the air-entry pressure [1/L]
l (float, optional) – Pore-connectivity or tortuosity parameter [-] Default value 0.5 is commonly used and is based on the Mualem model.
- m¶
Calculated from n as m = 1 - 1/n [-] (Mualem restriction)
- Type:
float, optional
References
van Genuchten, M. Th. (1980) - A Closed-form Equation for Predicting the Hydraulic Conductivity of Unsaturated Soil. Soil Science Society of America Journal, 44(5), 892–898. doi: 10.2136/sssaj1980.03615995004400050002x
Mualem, Y. (1976). A new model for predicting the hydraulic conductivity of unsaturated porous media. Water Resources Research, 12(3), 513-522. doi: 10.1029/WR012i003p00513
- alpha: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- l: float = 0.5¶
- m: float¶
- n: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_r: float¶
- theta_s: float¶
- class pedon.soilmodel.GenuchtenGardner(k_s: float, theta_r: float, theta_s: float, alpha: float, n: float, c: float)¶
Bases:
objectCombination soil model.
Uses the van Genuchten soil water retention curve and the Gardner hydraulic conductivity function.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_r (float) – Residual soil water content [-]
theta_s (float) – Saturated soil water content [-]
alpha (float) – Inverse of the air-entry pressure [1/L] (van Genuchten parameter)
n (float) – Pore-size distribution parameter [-] (van Genuchten parameter)
c (float) – Empirical parameter for the hydraulic conductivity curve [1/L] (Gardner parameter)
- m¶
Calculated from n as m = 1 - 1/n [-] (Mualem restriction)
- Type:
float
References
Gardner, W. R. (1958). Some steady-state solutions of the unsaturated moisture flow equation with application to evaporation from soils. Soil Science, 85(4), 228–232. doi: 10.1097/00010694-195804000-00006
van Genuchten, M. Th. (1980). A closed-form equation for predicting the hydraulic conductivity of unsaturated soils. Soil Science Society of America Journal, 44(5), 892–898. doi: 10.2136/sssaj1980.03615995004400050002x
- alpha: float¶
- c: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- m: float¶
- n: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_r: float¶
- theta_s: float¶
- class pedon.soilmodel.Gerke(k_sf: float, theta_rf: float, theta_sf: float, alpha_f: float, n_f: float, k_sm: float, theta_rm: float, theta_sm: float, alpha_m: float, n_m: float, w_f: float, l_f: float = 0.5, l_m: float = 0.5)¶
Bases:
objectGerke and van Genuchten (1993) Dual-Porosity Soil Model.
- Parameters:
k_sf (float) – Saturated hydraulic conductivity of the fracture pore system [L/T].
theta_rf (float) – Residual soil water content of the fracture pore system [-].
theta_sf (float) – Saturated soil water content of the fracture pore system [-].
alpha_f (float) – Inverse of the air-entry pressure for the fracture pore system [1/L].
n_f (float) – Pore-size distribution parameter for the fracture pore system [-].
l_f (float) – Pore-connectivity parameter for the fracture pore system [-].
k_sm (float) – Saturated hydraulic conductivity of the matrix pore system [L/T].
theta_rm (float) – Residual soil water content of the matrix pore system [-].
theta_sm (float) – Saturated soil water content of the matrix pore system [-].
alpha_m (float) – Inverse of the air-entry pressure for the matrix pore system [1/L].
n_m (float) – Pore-size distribution parameter for the matrix pore system [-].
l_m (float) – Pore-connectivity parameter for the matrix pore system [-].
w_f (float) – Volumetric weighting factor for the fracture domain (V_f / (V_f + V_m)) [-].
Notes
This model does not represent the exchange terms between the fracture and matrix domains because those are time and space dependent. It rather assumes that the two domains are in instantaneous equilibrium with each other.
References
Gerke, H. H., & van Genuchten, M. Th. (1993). A dual-porosity model for simulating the preferential movement of water and solutes in structured porous media. Water Resources Research, 29(2), 305–319. doi: 10.1029/92WR02611
- alpha_f: float¶
- alpha_m: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate pressure head h from bulk soil moisture content.
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate bulk hydraulic conductivity.
- k_f(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate hydraulic conductivity of the fracture domain.
- k_m(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate hydraulic conductivity of the matrix domain.
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate relative permeability of the bulk soil.
- property k_s: float¶
Bulk saturated hydraulic conductivity.
- k_sf: float¶
- k_sm: float¶
- l_f: float = 0.5¶
- l_m: float = 0.5¶
- n_f: float¶
- n_m: float¶
- plot(ax: Axes | None = None) Axes¶
Plot the soil water retention curve.
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate effective saturation of the bulk soil.
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate bulk soil moisture content.
- theta_f(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate fracture soil moisture content.
- theta_m(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate matrix soil moisture content.
- property theta_r: float¶
Bulk residual water content.
- theta_rf: float¶
- theta_rm: float¶
- property theta_s: float¶
Bulk saturated water content.
- theta_sf: float¶
- theta_sm: float¶
- w_f: float¶
- property w_m: float¶
Volumetric weighting factor for the matrix domain.
- class pedon.soilmodel.Haverkamp(k_s: float, theta_r: float, theta_s: float, alpha: float, beta: float, a: float)¶
Bases:
objectHaverkamp Soil Model.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_r (float) – Residual soil water content [-]
theta_s (float) – Saturated soil water content [-]
alpha (float) – Empirical constant for the soil water retention curve [-]
beta (float) – Empirical exponent for the soil water retention curve. In this implementation, it is also used as the exponent for the hydraulic conductivity curve (assuming B = beta) [-]
a (float) – Empirical constant for the hydraulic conductivity curve (Often denoted as ‘A’ in literature)
References
Haverkamp, R., Vauclin, M., Touma, J., Wierenga, P. J., & Vachaud, G. (1977). A comparison of numerical simulation models for one-dimensional infiltration. Soil Science Society of America Journal, 41(2), 285–294. doi: 10.2136/sssaj1977.03615995004100020024x
- a: float¶
- alpha: float¶
- beta: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_r: float¶
- theta_s: float¶
- class pedon.soilmodel.Kool(k_s: float, theta_r: float, theta_s: float, alpha: float, n: float, l: float = 0.5, xi: float = 2.0)¶
Bases:
objectSoil model with a scaling factor for hysteresis.
Uses the van Genuchten soil water retention curve and hydraulic conductivity function with a scaling factor xi to approximate hysteresis behavior as described in Kool and Parker (1987).
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_r (float) – Residual soil water content [-]
theta_s (float) – Saturated soil water content [-]
alpha (float) – Inverse of the air-entry pressure for the main drying curve [1/L]
n (float) – Pore-size distribution parameter [-]
l (float, optional) – Pore-connectivity or tortuosity parameter [-] (default: 0.5)
xi (float, optional) – Hysteresis scaling factor, typically defined as alpha_wetting / alpha_drying [-] (default: 2.0)
- m¶
Calculated from n as m = 1 - 1/n [-] (Mualem restriction)
- Type:
float
- alpha_w¶
Scaled alpha parameter for the water retention curve [1/L]
- Type:
float
References
Kool, J. B., & Parker, J. C. (1987). Development and evaluation of closed-form expressions for hysteretic soil hydraulic properties. Water Resources Research, 23(1), 105–114. doi: 10.1029/WR023i001p00105
van Genuchten, M. Th. (1980). A closed-form equation for predicting the hydraulic conductivity of unsaturated soils. Soil Science Society of America Journal, 44(5), 892–898. doi: 10.2136/sssaj1980.03615995004400050002x
- alpha: float¶
- property alpha_d: float¶
Alpha parameter for the drying curve (main curve).
- property alpha_w: float¶
Alpha parameter for the water retention curve, which is scaled by xi.
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- l: float = 0.5¶
- m: float¶
- n: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_r: float¶
- theta_s: float¶
- xi: float = 2.0¶
- class pedon.soilmodel.Kosugi(k_s: float, theta_r: float, theta_s: float, h_m: float, sigma: float)¶
Bases:
objectKosugi 2-Parameter Lognormal Soil Model.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_r (float) – Residual soil water content [-]
theta_s (float) – Saturated soil water content [-]
h_m (float) – Median capillary pressure head [L]
sigma (float) – Standard deviation of log-transformed soil pore radii [-]
References
Kosugi, K. (1996). Lognormal distribution model for unsaturated soil hydraulic properties. Water Resources Research, 32(9), 2697–2703. doi: 10.1029/96WR01776
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- h_m: float¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- sigma: float¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_r: float¶
- theta_s: float¶
- class pedon.soilmodel.Panday(k_s: float, theta_r: float, theta_s: float, alpha: float, beta: float, brook: float, h_b: float = 0.0, ss: float = 1e-06)¶
Bases:
objectPanday Soil Model as used in MODFLOW-USG Transport and MODFLOW UZF.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T] Note: The empirical specific yield calculation assumes this is provided in cm-based units (e.g., cm/day or cm/s).
theta_r (float) – Residual soil water content [-]
theta_s (float) – Saturated soil water content [-]
alpha (float) – Inverse of the air-entry suction [1/L] (Represents the van Genuchten alpha parameter)
beta (float) – Pore-size distribution parameter [-] (Represents the van Genuchten n parameter)
brook (float) – Exponent for the relative permeability function [-] (Represents the Brooks-Corey pore-connectivity parameter)
h_b (float, optional) – Bubbling pressure or air-entry offset [L] (default: 0.0)
ss (float, optional) – Specific storage [1/L] (default: 1e-6)
- sr¶
Residual saturation calculated as theta_r / theta_s [-]
- Type:
float
- gamma¶
Calculated from beta as 1 - 1 / beta [-] (Represents the Mualem m restriction)
- Type:
float
- sy¶
Specific yield, calculated empirically based on k_s and beta [-]
- Type:
float
References
Panday, S. (2026). USG-Transport: Transport and other Enhancements to MODFLOW-USG. Documentation and User’s Guide. GSI Environmental. url: https://www.gsienv.com/software/modflow-usg/modflow-usg/
- alpha: float¶
- beta: float¶
- brook: float¶
- gamma: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- h_b: float = 0.0¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- sr: float¶
- ss: float = 1e-06¶
- sy: float¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_r: float¶
- theta_s: float¶
- class pedon.soilmodel.Rucker(k_s: float, theta_r: float, theta_s: float, m: float, c: float)¶
Bases:
objectGardner(-Rucker) Soil Model.
- Parameters:
k_s (float) – Saturated hydraulic conductivity [L/T]
theta_r (float) – Residual soil water content [-]
theta_s (float) – Saturated soil water content [-]
m (float) – Empirical shape parameter for the soil water retention curve [-]
c (float) – Empirical parameter for the hydraulic conductivity curve [1/L]
References
Gardner, W. R. (1958). Some steady-state solutions of the unsaturated moisture flow equation with application to evaporation from soils. Soil Science, 85(4), 228–232. doi: 10.1097/00010694-195804000-00006
Rucker, D. F., Warrick, A. W., & Ferré, T. P. (2005). Parameter equivalence for the Gardner and van Genuchten soil hydraulic conductivity functions for steady vertical flow with inclusions. Advances in Water Resources, 28(7), 689–699. doi: 10.1016/j.advwatres.2005.01.004
- c: float¶
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- k_s: float¶
- m: float¶
- plot(ax: Axes | None = None) Axes¶
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
- theta_r: float¶
- theta_s: float¶
- class pedon.soilmodel.SoilModel(*args, **kwargs)¶
Bases:
ProtocolProtocol for soil models.
This protocol defines the interface for custom soil models. To create a custom soil model, implement all methods defined below. Your class will automatically conform to this protocol.
Example
>>> @dataclass ... class CustomModel: ... k_s: float ... theta_s: float ... theta_r: float ... ... def theta(self, h: FloatArray) -> FloatArray: ... # Calculate soil moisture content from pressure head ... return ... ... ... def s(self, h: FloatArray) -> FloatArray: ... # Calculate effective saturation from pressure head ... return (self.theta(h) - self.theta_r) / (self.theta_s - self.theta_r) ... ... def k_r(self, h: FloatArray, s: FloatArray | None = None) -> FloatArray: ... # Calculate relative permeability from pressure head or saturation ... return ... ... ... def k(self, h: FloatArray, s: FloatArray | None = None) -> FloatArray: ... # Calculate hydraulic conductivity from pressure head or saturation ... return self.k_s * self.k_r(h=h, s=s) ... ... def h(self, theta: FloatArray) -> FloatArray: ... # Inverse of theta method ... return ... ... ... def plot(self, ax: plt.Axes | None = None) -> plt.Axes: ... # Plot the soil water retention curve by calling `pe.plot.swrc` ... return pe.plot.swrc(self, ax=ax)
- h(theta: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate pressure head h from soil moisture content (inverse of theta).
- k(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate hydraulic conductivity from pressure head h or saturation s.
- k_r(h: float | ndarray[tuple[Any, ...], dtype[float64]], s: float | ndarray[tuple[Any, ...], dtype[float64]] | None = None) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate relative permeability (or relative hydraulic conductivity).
Relative permeability is normalized between 0 (dry) and 1 (saturated). Can be calculated from either pressure head h or saturation s.
- plot(ax: Axes | None = None) Axes¶
Plot the soil water retention curve by calling plot_swrc.
- s(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate effective saturation from pressure head h.
Effective saturation is normalized between 0 (dry) and 1 (saturated).
- theta(h: float | ndarray[tuple[Any, ...], dtype[float64]]) float | ndarray[tuple[Any, ...], dtype[float64]]¶
Calculate soil moisture content (water content) from pressure head h.
- pedon.soilmodel.get_soilmodel(soilmodel_name: Literal['Genuchten', 'Brooks', 'Brunswick', 'Panday', 'Gardner', 'Rucker', 'Haverkamp', 'Fredlund', 'Kosugi', 'Campbell', 'Kool', 'GenuchtenGardner', 'Gerke']) type[SoilModel]¶
Get soil model class by name.
- pedon.soilmodel.plot_hcf(*args, **kwargs)¶
Plot the hydraulic conductivity function.
- pedon.soilmodel.resolve_soilmodel(sm: type[SoilModel] | SoilModel | Literal['Genuchten', 'Brooks', 'Brunswick', 'Panday', 'Gardner', 'Rucker', 'Haverkamp', 'Fredlund', 'Kosugi', 'Campbell', 'Kool', 'GenuchtenGardner', 'Gerke']) tuple[str, type[SoilModel]]¶
Normalize a soilmodel input to a (name, class) pair.