Effective stress¶
Terzaghi's principle — the cornerstone of all soil mechanics:
The module's stress functions are deliberately thin wrappers over this rule, so you can compose them however your problem requires.
Quick example¶
import geoeq as ge
# Layered total stress
ge.total_stress([17, 19, 20], [2, 3, 5]) # 191 kPa
# Hydrostatic pore pressure
ge.pore_pressure(5.0, z_w=2.0) # 29.43 kPa
ge.pore_pressure([0, 2, 5, 10], z_w=2) # vectorised
# Terzaghi effective stress
ge.effective_stress(154.0, 58.86) # 95.14 kPa
For multi-layer integration, prefer the SoilProfile object — it
handles the bookkeeping of which layer is above / below the water
table for you.
Capillary rise¶
Uses the Hazen-type estimate \(h_c = C / (e \, D_{10}^{\text{cm}})\) with \(C = 0.2\) by default. Reference: Das (2010) Eq. 5.8.
API reference¶
total_stress
¶
total_stress(gamma: Union[float, Sequence[float]], depth: Union[float, Sequence[float]]) -> float
Total vertical stress sigma_v = sum(gamma_i * H_i).
| PARAMETER | DESCRIPTION |
|---|---|
gamma
|
Unit weight(s) of each layer (kN/m^3).
TYPE:
|
depth
|
Either a single depth (with scalar gamma) -- returns gamma*depth --
or layer thicknesses matching
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
sigma
|
Total vertical stress (kPa).
TYPE:
|
Reference
Das (2010) Eq. 5.1; Terzaghi (1943).
Source code in geoeq/design/stress.py
pore_pressure
¶
pore_pressure(z: Union[float, Iterable[float]], z_w: float = 0.0, gamma_w: float = GAMMA_WATER) -> Union[float, np.ndarray]
Hydrostatic pore pressure u = gamma_w * (z - z_w), clipped at 0.
| PARAMETER | DESCRIPTION |
|---|---|
z
|
Depth(s) of interest (m, positive downward).
TYPE:
|
z_w
|
Depth of the water table (m). Default 0 (water table at surface).
TYPE:
|
gamma_w
|
Unit weight of water (kN/m^3). Default 9.81.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
u
|
Pore pressure (kPa). Zero above the water table.
TYPE:
|
Reference
Das (2010) Eq. 5.2.
Source code in geoeq/design/stress.py
effective_stress
¶
effective_stress(sigma: Union[float, ndarray], u: Union[float, ndarray]) -> Union[float, np.ndarray]
Terzaghi effective stress sigma' = sigma - u (kPa).
Reference
Terzaghi (1943); Das (2010) Eq. 5.5.
Source code in geoeq/design/stress.py
capillary_rise
¶
Capillary rise height in soil (Hazen-type estimate).
h_c [cm] = C / (e * D10 [cm])
| PARAMETER | DESCRIPTION |
|---|---|
D10
|
Effective grain size, the 10% passing diameter (mm).
TYPE:
|
e
|
Void ratio (-).
TYPE:
|
C
|
Empirical constant; 0.1 < C < 0.5 typical. Default 0.2.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
h_c
|
Capillary rise (m).
TYPE:
|
Reference
Hazen (1930); Das (2010) Eq. 5.8.
Source code in geoeq/design/stress.py
stress_plot
¶
Plot total, pore, and effective stress vs depth.
Delegates to profile.plot(). See SoilProfile.plot.