Slope stability¶
Four classical methods, from the simple closed-form to the iterative slice method:
- Infinite slope — closed form, with or without seepage parallel to slope
- Culmann (1875) — planar failure surface
- Taylor (1937) — stability number from charts
- Bishop's simplified (1955) — iterative slice method
Infinite slope¶
Cohesionless, dry:
ge.infinite_slope(phi=30, beta=20)
# {'FS': 1.587, 'seepage': False}
# With full seepage parallel to slope
ge.infinite_slope(phi=30, beta=20, gamma=20, gamma_sat=20,
seepage=True)
# {'FS': 0.799, 'seepage': True} # halved by seepage
Seepage matters
A dry slope with \(FS = 1.59\) drops to \(FS = 0.80\) when fully saturated with seepage parallel to the slope. Many shallow landslides during heavy rain are infinite-slope failures triggered by exactly this effect.
Culmann¶
Critical height for a planar failure surface (requires \(\beta > \phi\)):
Taylor's stability number¶
\(FS = c / (m\,\gamma\,H)\), where \(m\) is read from Taylor's chart. GeoEq uses a closed-form fit to the chart valid for \(\phi = 0–25°\), \(\beta = 15–90°\):
ge.taylor_stability(phi=0, c=25, gamma=18, H=5, beta=45)
# {'m': 0.181, 'FS': 1.54, 'method': 'taylor'}
ge.taylor_chart_plot().Bishop's simplified method (circular failure)¶
Iterative slice equilibrium:
with \(m_{\alpha,i} = \cos\alpha_i + \sin\alpha_i\tan\phi_i / FS_k\).
slices = [
{"b": 2, "h": 5, "alpha": a, "c": 10, "phi": 25,
"gamma": 18, "u": 0}
for a in (-5, 5, 20, 35, 50)
]
ge.bishop(slices)
# {'FS': 1.432, 'iterations': 4, 'converged': True,
# 'method': 'bishop_simplified'}
Each slice dict accepts: b (width m), h (height m), alpha
(base inclination °), c (cohesion kPa), phi (friction angle °),
gamma (unit weight kN/m³), u (pore pressure at base, kPa).
API reference¶
infinite_slope
¶
infinite_slope(phi: float, beta: float, c: float = 0.0, gamma: float = 18.0, H: float = 1.0, seepage: bool = False, gamma_sat: float = None) -> dict
Factor of safety of an infinite slope.
Cohesionless, dry/no-seepage: FS = tan(phi) / tan(beta)
Cohesive (c-phi) without seepage: FS = c / (gamma * H * cos(beta)^2 * tan(beta)) + tan(phi) / tan(beta)
Cohesionless with full seepage parallel to slope: FS = (gamma' / gamma_sat) * tan(phi) / tan(beta)
| PARAMETER | DESCRIPTION |
|---|---|
phi
|
Friction angle (degrees).
TYPE:
|
beta
|
Slope inclination (degrees).
TYPE:
|
c
|
Cohesion (kPa). Default 0.
TYPE:
|
gamma
|
Bulk unit weight (kN/m^3).
TYPE:
|
H
|
Depth of failure plane below surface (m). Only matters if c > 0.
TYPE:
|
seepage
|
If True, assumes seepage parallel to slope to the surface.
TYPE:
|
gamma_sat
|
Saturated unit weight (kN/m^3). Required if seepage=True.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict
|
|
Reference
Das (2010) Eq. 13.4-13.10.
Source code in geoeq/design/slopes.py
culmann
¶
Culmann's critical height H_cr for a planar-failure slope.
H_cr = (4 c sin(beta) cos(phi)) / (gamma * (1 - cos(beta - phi)))
| PARAMETER | DESCRIPTION |
|---|---|
c
|
Cohesion (kPa).
TYPE:
|
phi
|
Friction angle (degrees).
TYPE:
|
gamma
|
Bulk unit weight (kN/m^3).
TYPE:
|
beta
|
Slope angle (degrees), > phi.
TYPE:
|
Reference
Culmann (1875); Das (2010) Eq. 13.13.
Source code in geoeq/design/slopes.py
taylor_stability
¶
Factor of safety by Taylor's stability number m.
m = c / (gamma * H_cr) (Taylor 1937)
FS = c / (m * gamma * H)
Uses Taylor's chart (interpolated table for phi=0..25, beta=15..90).
Reference
Taylor (1937, 1948); Das (2010) Fig. 13.10.
Source code in geoeq/design/slopes.py
bishop
¶
bishop(slices: Sequence[dict], R: float = None, max_iter: int = 50, tol: float = 0.0001) -> dict
Bishop's simplified method (1955) for circular slope failure.
Each slice is a dict with keys:
b -- slice width (m)
h -- slice height (m)
alpha -- base inclination (degrees, +ve when uphill)
c -- cohesion on slice base (kPa)
phi -- friction angle (degrees)
gamma -- unit weight (kN/m^3)
u -- pore pressure at slice base (kPa), default 0
Iterates: FS_{k+1} = sum_i [ (c_i b_i + (W_i - u_i b_i) tan phi_i) / m_alpha_i ] / sum_i ( W_i sin alpha_i )
with m_alpha_i = cos alpha_i + sin alpha_i tan phi_i / FS_k.
Reference
Bishop (1955); Das (2010) Eq. 13.50.
Source code in geoeq/design/slopes.py
taylor_chart_plot
¶
taylor_chart_plot(phi_values=(0, 5, 10, 15, 20, 25), beta_range=None, ax=None, save_as: str = None)
Taylor's stability number chart: m vs slope angle beta for a series of phi values.
