ge.design — API reference¶
Effective stress¶
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.
Seepage¶
darcy_flow
¶
Darcy's law: Q = k * i * A (m^3/s).
| PARAMETER | DESCRIPTION |
|---|---|
k
|
Hydraulic conductivity (m/s).
TYPE:
|
i
|
Hydraulic gradient (-, dimensionless).
TYPE:
|
A
|
Cross-sectional area (m^2).
TYPE:
|
Reference
Darcy (1856); Das (2010) Eq. 5.11.
Source code in geoeq/design/seepage.py
hydraulic_gradient
¶
Hydraulic gradient i = delta h / L.
| PARAMETER | DESCRIPTION |
|---|---|
dh
|
Head loss (m).
TYPE:
|
L
|
Flow-path length (m).
TYPE:
|
Reference
Das (2010) Eq. 5.10.
Source code in geoeq/design/seepage.py
| Python | |
|---|---|
critical_gradient
¶
Critical (boiling) hydraulic gradient i_cr = (Gs - 1)/(1 + e).
When i >= i_cr in upward flow, effective stress vanishes and quicksand (heave) develops.
Reference
Das (2010) Eq. 5.18; Terzaghi & Peck (1948).
Source code in geoeq/design/seepage.py
equivalent_k
¶
equivalent_k(k_layers: Sequence[float], H_layers: Sequence[float], direction: str = 'horizontal') -> float
Equivalent permeability of a layered system.
horizontal: k_eq = sum(k_i * H_i) / sum(H_i) (parallel flow) vertical: k_eq = sum(H_i) / sum(H_i / k_i) (series flow)
Reference
Das (2010) Eq. 5.14 (horizontal), 5.15 (vertical).
Source code in geoeq/design/seepage.py
flow_net
¶
Seepage discharge from a flow net.
Q = k * dh * (Nf / Nd) * L (m^3/s per metre length normal to plane)
| PARAMETER | DESCRIPTION |
|---|---|
Nf
|
Number of flow channels.
TYPE:
|
Nd
|
Number of equipotential drops.
TYPE:
|
k
|
Hydraulic conductivity (m/s).
TYPE:
|
dh
|
Total head loss across the system (m).
TYPE:
|
L
|
Length perpendicular to the flow plane (m). Default 1 m.
TYPE:
|
Reference
Das (2010) Eq. 5.20.
Source code in geoeq/design/seepage.py
Stress distribution¶
boussinesq_point
¶
Vertical stress under a point load on a semi-infinite elastic mass.
delta_sigma_z = (3 P / (2 pi z^2)) * (1 / (1 + (r/z)^2))^(5/2)
| PARAMETER | DESCRIPTION |
|---|---|
P
|
Point load (kN).
TYPE:
|
z
|
Depth below ground surface (m).
TYPE:
|
r
|
Radial distance from the line of action (m).
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
delta_sigma
|
Vertical stress increment (kPa).
TYPE:
|
Reference
Boussinesq (1885); Das (2010) Eq. 6.4.
Source code in geoeq/design/boussinesq.py
boussinesq_line
¶
Vertical stress under an infinite line load q (kN/m).
delta_sigma_z = (2 q / pi z) * 1 / (1 + (x/z)^2)^2
Reference
Das (2010) Eq. 6.7.
Source code in geoeq/design/boussinesq.py
boussinesq_strip
¶
Vertical stress under a uniformly loaded infinite strip of width B.
delta_sigma_z = (q / pi) * [ alpha + sin(alpha) cos(alpha + 2 beta) ]
where alpha and beta are the angles subtended at the point by the edges of the strip (Das Eq. 6.10).
| PARAMETER | DESCRIPTION |
|---|---|
q
|
Surface pressure (kPa).
TYPE:
|
B
|
Strip width (m).
TYPE:
|
z
|
Depth (m).
TYPE:
|
x
|
Horizontal distance from the centre of the strip (m).
TYPE:
|
Reference
Das (2010) Eq. 6.10.
Source code in geoeq/design/boussinesq.py
boussinesq_circular
¶
Vertical stress on the centreline beneath a uniformly loaded circle.
delta_sigma_z = q * [ 1 - 1 / (1 + (R/z)^2)^(3/2) ]
Reference
Das (2010) Eq. 6.15.
Source code in geoeq/design/boussinesq.py
boussinesq_rect
¶
Vertical stress under a uniformly loaded rectangle B x L.
Uses Fadum (1948) corner influence value, with superposition for 'centre' (4x mB/2 x L/2 sub-rectangles) and 'edge_mid' positions.
| PARAMETER | DESCRIPTION |
|---|---|
q
|
Surface pressure (kPa).
TYPE:
|
B
|
Rectangle dimensions (m). Convention: L >= B.
TYPE:
|
L
|
Rectangle dimensions (m). Convention: L >= B.
TYPE:
|
z
|
Depth below surface (m).
TYPE:
|
position
|
'corner' -- under one corner of the rectangle 'centre' -- under the centre (sum of 4 sub-rectangles) 'edge' -- under the midpoint of a long edge (2 sub-rectangles)
TYPE:
|
Reference
Fadum (1948); Das (2010) Eq. 6.29-6.31.
Source code in geoeq/design/boussinesq.py
westergaard_point
¶
Westergaard vertical stress for a point load on a layered medium.
delta_sigma_z = (P / (pi z^2)) * eta / (eta^2 + (r/z)^2)^(3/2)
where eta = sqrt( (1 - 2mu) / (2 - 2mu) ).
For thinly stratified soils (alternating stiff/soft) the Westergaard solution gives lower stresses than Boussinesq.
Reference
Westergaard (1938); Das (2010) Eq. 6.13.
Source code in geoeq/design/boussinesq.py
newmark_influence
¶
Fadum / Newmark influence value I for a rectangle B x L at depth z.
m = B / z, n = L / z
| RETURNS | DESCRIPTION |
|---|---|
I
|
Dimensionless influence factor (Das Eq. 6.30). The stress at the corner of a uniformly loaded B x L rectangle is q * I.
TYPE:
|
Reference
Fadum (1948); Newmark (1935); Das Eq. 6.30, Table 6.5.
Source code in geoeq/design/boussinesq.py
stress_2to1
¶
2:1 vertical-spread approximation for a B x L footing.
delta_sigma_z = q * B * L / ((B + z) * (L + z))
Crude but engineering-useful for spread footings up to z ~ 2B.
Reference
Das (2010) Eq. 6.34.
Source code in geoeq/design/boussinesq.py
stress_bulb
¶
Compute a stress-bulb mesh under a point load.
| RETURNS | DESCRIPTION |
|---|---|
dict with keys 'z', 'r', 'sigma' -- 2D grids suitable for contourf.
|
|
Reference
Das (2010) Fig. 6.6 (qualitative isobar pattern).
Source code in geoeq/design/boussinesq.py
stress_isobar_plot
¶
stress_isobar_plot(P: float = 100.0, z_max: float = 8.0, r_max: float = 4.0, levels=None, ax=None, save_as: str = None)
Stress isobars (pressure bulb) beneath a point load.
| PARAMETER | DESCRIPTION |
|---|---|
P
|
Point load (kN).
TYPE:
|
z_max
|
Plot extents (m).
TYPE:
|
r_max
|
Plot extents (m).
TYPE:
|
levels
|
Iso-stress contour levels (kPa).
TYPE:
|
Source code in geoeq/design/plots.py
Bearing capacity¶
bearing_factors
¶
Bearing-capacity factors Nc, Nq, N_gamma for a given friction angle.
| PARAMETER | DESCRIPTION |
|---|---|
phi
|
Effective friction angle (degrees).
TYPE:
|
method
|
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict
|
|
Reference
Das (2014) Tables 4.1-4.3.
Source code in geoeq/design/bearing.py
bearing_capacity
¶
bearing_capacity(c: float, gamma: float, Df: float, B: float, phi: float, L: float = None, method: str = 'meyerhof', shape: bool = True, depth: bool = True, inclination: float = 0.0, gamma_above: float = None, water_table: str = 'deep') -> dict
Ultimate bearing capacity q_u of a shallow footing.
| PARAMETER | DESCRIPTION |
|---|---|
c
|
Effective cohesion (kPa). Use Su for undrained (phi = 0) analysis.
TYPE:
|
gamma
|
Effective unit weight of soil below the footing (kN/m^3). Use gamma' = gamma_sat - gamma_w if the water table is at the base of the footing.
TYPE:
|
Df
|
Depth of embedment (m).
TYPE:
|
B
|
Footing width (m).
TYPE:
|
phi
|
Effective friction angle (degrees).
TYPE:
|
L
|
Footing length (m).
TYPE:
|
method
|
'terzaghi' | 'meyerhof' | 'hansen' | 'vesic'.
TYPE:
|
shape
|
Whether to apply shape/depth corrections. Terzaghi ignores both.
TYPE:
|
depth
|
Whether to apply shape/depth corrections. Terzaghi ignores both.
TYPE:
|
inclination
|
Load inclination from vertical (deg). Default 0.
TYPE:
|
gamma_above
|
Effective unit weight above the footing (kN/m^3). Default = gamma.
TYPE:
|
water_table
|
'deep' (no correction) | 'at_base' (gamma below = gamma') | 'above_base' (full submergence -- conservative).
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict with 'q_u' (kPa), 'Nc', 'Nq', 'Ngamma', and the applied factors.
|
|
Reference
Das (2014), Ch. 4.
Source code in geoeq/design/bearing.py
| Python | |
|---|---|
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 | |
bearing_allowable
¶
Allowable bearing pressure q_all = q_u / FS.
Standard FS=3 for shallow foundations under static loads (Das 2014, p. 224).
Source code in geoeq/design/bearing.py
bearing_shape_factors
¶
Shape factors sc, sq, s_gamma for B x L footing.
Reference
Das (2014) Table 4.3.
Source code in geoeq/design/bearing.py
bearing_depth_factors
¶
Depth factors dc, dq, d_gamma.
Reference
Das (2014) Table 4.3.
Source code in geoeq/design/bearing.py
bearing_inclination_factors
¶
bearing_inclination_factors(beta: float, phi: float, c: float = 0.0, method: str = 'meyerhof') -> dict
Inclination factors ic, iq, i_gamma for load inclined beta degrees from vertical.
Reference
Das (2014) Table 4.3; Hansen (1970).
Source code in geoeq/design/bearing.py
bearing_capacity_plot
¶
bearing_capacity_plot(c: float, gamma: float, Df: float, phi: float, B_range: Sequence[float] = None, methods: Sequence[str] = None, L_over_B: float = 1.0, ax=None, save_as: str = None)
Plot ultimate bearing capacity vs. footing width B.
Useful design-chart helper: shows how q_u scales with B and how the four classical methods diverge for granular soils.
| PARAMETER | DESCRIPTION |
|---|---|
c
|
Soil parameters (kPa, kN/m^3, m, degrees).
TYPE:
|
gamma
|
Soil parameters (kPa, kN/m^3, m, degrees).
TYPE:
|
Df
|
Soil parameters (kPa, kN/m^3, m, degrees).
TYPE:
|
phi
|
Soil parameters (kPa, kN/m^3, m, degrees).
TYPE:
|
B_range
|
Footing widths to evaluate (m). Default 0.5 .. 5 m.
TYPE:
|
methods
|
Subset of
TYPE:
|
L_over_B
|
Footing aspect ratio (1.0 = square). Use 1e6 for strip.
TYPE:
|
Source code in geoeq/design/plots.py
Settlement¶
settlement_immediate
¶
settlement_immediate(q: float, B: float, Es: float, mu: float = 0.3, Ip: float = None, shape: str = 'rigid_square') -> float
Elastic (immediate) settlement under a uniformly loaded footing.
S_i = q * B * (1 - mu^2) / Es * Ip
| PARAMETER | DESCRIPTION |
|---|---|
q
|
Surface pressure (kPa).
TYPE:
|
B
|
Footing width (m) -- shorter dimension for rectangles.
TYPE:
|
Es
|
Soil elastic modulus (kPa).
TYPE:
|
mu
|
Poisson's ratio (-). Default 0.3.
TYPE:
|
Ip
|
Influence factor. If None, picked from
TYPE:
|
shape
|
'rigid_square' -> Ip = 0.88 'rigid_circle' -> Ip = 0.79 'flexible_centre' -> Ip = 1.12 'flexible_corner' -> Ip = 0.56 'rigid_strip' -> Ip = 2.0 (approx, depth-dependent)
TYPE:
|
Reference
Janbu et al. (1956); Das (2014) Eq. 5.20, Table 5.1.
Source code in geoeq/design/settlement.py
settlement_primary
¶
settlement_primary(Cc: float, e0: float, H: float, sigma0: float, delta_sigma: float, Cr: float = None, sigma_pc: float = None, kind: str = 'auto') -> float
1-D primary consolidation settlement.
Three regimes:
-
NC (normally consolidated): S = (Cc * H / (1 + e0)) * log10((sigma0 + delta_sigma) / sigma0)
-
OC, final stress below preconsolidation: S = (Cr * H / (1 + e0)) * log10((sigma0 + delta_sigma) / sigma0)
-
OC, final stress crosses preconsolidation: S = (Cr*H/(1+e0)) * log10(sigma_pc / sigma0)
- (Cc*H/(1+e0)) * log10((sigma0+delta_sigma)/sigma_pc)
| PARAMETER | DESCRIPTION |
|---|---|
Cc
|
Compression index (-).
TYPE:
|
e0
|
Initial void ratio (-).
TYPE:
|
H
|
Drainage path length (m) -- full layer thickness for one-way drainage or half-thickness for two-way drainage; pass actual layer thickness.
TYPE:
|
sigma0
|
Initial effective vertical stress (kPa) at mid-depth.
TYPE:
|
delta_sigma
|
Stress increase at mid-depth (kPa).
TYPE:
|
Cr
|
Recompression (swell) index (-). Required for OC cases.
TYPE:
|
sigma_pc
|
Preconsolidation pressure (kPa). Required for OC cases.
TYPE:
|
kind
|
'NC', 'OC', or 'auto' (decide from sigma_pc).
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
S
|
Primary settlement (m).
TYPE:
|
Reference
Terzaghi (1925); Das (2014) Eq. 5.31-5.34.
Source code in geoeq/design/settlement.py
| Python | |
|---|---|
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | |
settlement_secondary
¶
settlement_secondary(C_alpha: float, H: float, t1: float, t2: float, e_p: float = None) -> float
Secondary compression S_s = C_alpha_eps * H * log10(t2/t1).
| PARAMETER | DESCRIPTION |
|---|---|
C_alpha
|
Secondary compression index. If
TYPE:
|
H
|
Layer thickness (m).
TYPE:
|
t1
|
Reference (end of primary) and target times (any consistent unit).
TYPE:
|
t2
|
Reference (end of primary) and target times (any consistent unit).
TYPE:
|
e_p
|
Void ratio at end-of-primary, for converting C_alpha -> C_alpha_eps.
TYPE:
|
Reference
Mesri & Godlewski (1977); Das (2014) Eq. 5.51.
Source code in geoeq/design/settlement.py
settlement_schmertmann
¶
settlement_schmertmann(q_net: float, B: float, Es: Union[float, Sequence[float]], layers: Sequence[tuple] = None, Df: float = 0.0, sigma_v_at_base: float = None, gamma: float = 18.0, t_years: float = 1.0, shape: str = 'square') -> dict
Schmertmann's strain-influence settlement for sandy soils.
S = C1 * C2 * q_net * sum_i ( Iz_i / Es_i * dz_i )
where: C1 = 1 - 0.5 * (sigma_v' / q_net) -- embedment correction C2 = 1 + 0.2 * log10(t_years / 0.1) -- creep correction
The strain-influence diagram Iz is taken from Schmertmann et al. (1978):
- Square / circular (axisymmetric): Iz peaks at 0.5*B (Iz_peak), = 0.1 at z=0, 0 at z=2B.
- Strip (plane strain): Iz peaks at 1.0*B, = 0.2 at z=0, 0 at z=4B.
Iz_peak = 0.5 + 0.1 * sqrt(q_net / sigma_v_at_peak).
| PARAMETER | DESCRIPTION |
|---|---|
q_net
|
Net surface pressure (kPa) above sigma_v at footing base.
TYPE:
|
B
|
Footing width (m).
TYPE:
|
Es
|
Elastic modulus of subsoil (kPa). If a single number, applied
to one layer of depth 0 .. (2B or 4B). If sequence, must match
TYPE:
|
layers
|
Optional. If None and
TYPE:
|
Df
|
Footing depth (m).
TYPE:
|
sigma_v_at_base
|
Effective vertical stress at the base of the footing (kPa).
If None, estimated as
TYPE:
|
gamma
|
Soil unit weight, only used if sigma_v_at_base is None.
TYPE:
|
t_years
|
Time after construction for the creep correction (yrs). Default 1.
TYPE:
|
shape
|
'square' / 'circle' (axisymmetric) or 'strip' (plane strain).
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict
|
{'S': settlement_metres, 'C1', 'C2', 'Iz_peak', 'layers': [...]} |
Reference
Schmertmann (1970); Schmertmann et al. (1978); Das (2014) Ch. 5.10.
Source code in geoeq/design/settlement.py
| Python | |
|---|---|
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 | |
time_factor
¶
Time factor Tv from average degree of consolidation U (0..1).
Approximate Terzaghi solution (Das Eq. 5.46): Tv = (pi/4) * U^2 for U < 0.6 Tv = 1.781 - 0.933 * log10(100*(1-U)) for U >= 0.6
Reference
Terzaghi (1925); Das (2014) Eq. 5.46.
Source code in geoeq/design/settlement.py
consolidation_degree
¶
Average degree of consolidation U (0..1) from time factor Tv.
Inverse of time_factor (Das Eq. 5.46).
Source code in geoeq/design/settlement.py
consolidation_time
¶
Time to reach degree of consolidation U.
t = Tv * Hdr^2 / cv
| PARAMETER | DESCRIPTION |
|---|---|
U
|
Target degree of consolidation (0..1).
TYPE:
|
Hdr
|
Drainage path length (m). Half the layer thickness for double drainage.
TYPE:
|
cv
|
Coefficient of consolidation (m^2/s, or any consistent unit).
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
t
|
Time (same time units as cv).
TYPE:
|
Reference
Das (2014) Eq. 5.43.
Source code in geoeq/design/settlement.py
settlement_time_plot
¶
The classical Terzaghi consolidation curve: U vs Tv (log scale).
Plots the approximate piecewise formula used by time_factor:
Tv = (pi/4) U^2 for U < 0.6, Tv = 1.781 - 0.933 log10(100(1-U))
for U >= 0.6.
Source code in geoeq/design/plots.py
Earth pressure¶
K0
¶
At-rest earth pressure coefficient.
| PARAMETER | DESCRIPTION |
|---|---|
phi
|
Effective friction angle (degrees).
TYPE:
|
OCR
|
Over-consolidation ratio (1 for NC soils).
TYPE:
|
method
|
'jaky' -> K0 = 1 - sin(phi) (NC; Jaky 1944). 'mayne' -> K0 = (1 - sin phi) * OCR^sin(phi) (Mayne & Kulhawy 1982). 'alpan' -> Alpan (1967) for OC clays.
TYPE:
|
Reference
Jaky (1944); Mayne & Kulhawy (1982).
Source code in geoeq/design/earth_pressure.py
Ka
¶
Ka(phi: float, delta: float = 0.0, alpha: float = 0.0, beta: float = 0.0, method: str = 'rankine') -> float
Active earth pressure coefficient.
| PARAMETER | DESCRIPTION |
|---|---|
phi
|
Effective friction angle of backfill (degrees).
TYPE:
|
delta
|
Wall-soil friction angle (degrees). Default 0 (smooth wall).
TYPE:
|
alpha
|
Wall back-face inclination from vertical (degrees, positive = wall leans toward backfill). Default 0.
TYPE:
|
beta
|
Backfill slope angle (degrees, positive = ascending). Default 0.
TYPE:
|
method
|
'rankine' -- requires delta=alpha=0; uses Rankine (1857) formula. 'coulomb' -- general (Coulomb 1776).
TYPE:
|
Reference
Rankine (1857); Coulomb (1776); Das (2014) Ch. 7-8.
Source code in geoeq/design/earth_pressure.py
Kp
¶
Kp(phi: float, delta: float = 0.0, alpha: float = 0.0, beta: float = 0.0, method: str = 'rankine') -> float
Passive earth pressure coefficient.
See Ka for parameters. Same conventions; passive coefficient is the
sign-reversed version of active.
Reference
Rankine (1857); Coulomb (1776); Das (2014) Ch. 7-8.
Source code in geoeq/design/earth_pressure.py
earth_pressure
¶
Lateral earth pressure.
K0 (at-rest), Ka (active), Kp (passive) -- Rankine and Coulomb theories, plus distributions including water, surcharge, and cohesion (tension cracks).
References
- Coulomb, C. A. (1776). "Essai sur une application des regles de maximis et minimis a quelques problemes de statique relatifs a l'architecture." Memoires de Mathematique et de Physique, Paris.
- Rankine, W. J. M. (1857). "On the stability of loose earth." Phil. Trans. Royal Society, 147, 9-27.
- Jaky, J. (1944). "The coefficient of earth pressure at rest." J. Society Hungarian Architects and Engineers, 22, 355-358.
- Mayne, P. W., Kulhawy, F. H. (1982). "K0-OCR relationships in soil." J. Geotech. Eng., ASCE, 108(GT6), 851-872.
- Das (2014), Ch. 7-8.
K0
¶
At-rest earth pressure coefficient.
| PARAMETER | DESCRIPTION |
|---|---|
phi
|
Effective friction angle (degrees).
TYPE:
|
OCR
|
Over-consolidation ratio (1 for NC soils).
TYPE:
|
method
|
'jaky' -> K0 = 1 - sin(phi) (NC; Jaky 1944). 'mayne' -> K0 = (1 - sin phi) * OCR^sin(phi) (Mayne & Kulhawy 1982). 'alpan' -> Alpan (1967) for OC clays.
TYPE:
|
Reference
Jaky (1944); Mayne & Kulhawy (1982).
Source code in geoeq/design/earth_pressure.py
Ka
¶
Ka(phi: float, delta: float = 0.0, alpha: float = 0.0, beta: float = 0.0, method: str = 'rankine') -> float
Active earth pressure coefficient.
| PARAMETER | DESCRIPTION |
|---|---|
phi
|
Effective friction angle of backfill (degrees).
TYPE:
|
delta
|
Wall-soil friction angle (degrees). Default 0 (smooth wall).
TYPE:
|
alpha
|
Wall back-face inclination from vertical (degrees, positive = wall leans toward backfill). Default 0.
TYPE:
|
beta
|
Backfill slope angle (degrees, positive = ascending). Default 0.
TYPE:
|
method
|
'rankine' -- requires delta=alpha=0; uses Rankine (1857) formula. 'coulomb' -- general (Coulomb 1776).
TYPE:
|
Reference
Rankine (1857); Coulomb (1776); Das (2014) Ch. 7-8.
Source code in geoeq/design/earth_pressure.py
Kp
¶
Kp(phi: float, delta: float = 0.0, alpha: float = 0.0, beta: float = 0.0, method: str = 'rankine') -> float
Passive earth pressure coefficient.
See Ka for parameters. Same conventions; passive coefficient is the
sign-reversed version of active.
Reference
Rankine (1857); Coulomb (1776); Das (2014) Ch. 7-8.
Source code in geoeq/design/earth_pressure.py
earth_pressure
¶
earth_pressure(gamma: float, H: float, phi: float, c: float = 0.0, kind: str = 'active', surcharge: float = 0.0, water_table: float = None, K_method: str = 'rankine') -> dict
Lateral pressure distribution on a vertical wall of height H.
Earth pressure at depth z: sigma_h = K * gamma * z (cohesionless, no surcharge) + K * surcharge - 2 c sqrt(K) (cohesion subtraction in active case)
Returns the resultant force P (kN/m) and its line of action.
| PARAMETER | DESCRIPTION |
|---|---|
gamma
|
Bulk unit weight (kN/m^3).
TYPE:
|
H
|
Wall height (m).
TYPE:
|
phi
|
Friction angle (degrees).
TYPE:
|
c
|
Cohesion (kPa).
TYPE:
|
kind
|
'active' | 'passive' | 'at_rest'.
TYPE:
|
surcharge
|
Uniform surface surcharge q (kPa).
TYPE:
|
water_table
|
Depth of water table below the top of the wall (m). If given, an additional hydrostatic pressure (gamma_w*(z - z_w)) is added and the effective unit weight below z_w is gamma - gamma_w.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict
|
|
Reference
Das (2014), Ch. 7-8.
Source code in geoeq/design/earth_pressure.py
| Python | |
|---|---|
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 | |
tension_crack_depth
¶
tension_crack_depth(c: float, gamma: float, Ka_value: float = None, phi: float = 0.0) -> float
Depth of tension crack in cohesive soil behind a wall.
z_c = 2 c / (gamma * sqrt(Ka))
| PARAMETER | DESCRIPTION |
|---|---|
c
|
Cohesion (kPa).
TYPE:
|
gamma
|
Unit weight (kN/m^3).
TYPE:
|
Ka_value
|
Active earth pressure coefficient. If None, computed from
TYPE:
|
phi
|
Friction angle (degrees). Used only if Ka_value is None.
TYPE:
|
Reference
Das (2014) Eq. 7.18.
Source code in geoeq/design/earth_pressure.py
earth_pressure_plot
¶
earth_pressure_plot(gamma: float, H: float, phi: float, c: float = 0.0, kind: str = 'active', save_as: str = None)
Visualize the lateral pressure distribution behind a wall.
Returns the Matplotlib figure.
Source code in geoeq/design/earth_pressure.py
tension_crack_depth
¶
tension_crack_depth(c: float, gamma: float, Ka_value: float = None, phi: float = 0.0) -> float
Depth of tension crack in cohesive soil behind a wall.
z_c = 2 c / (gamma * sqrt(Ka))
| PARAMETER | DESCRIPTION |
|---|---|
c
|
Cohesion (kPa).
TYPE:
|
gamma
|
Unit weight (kN/m^3).
TYPE:
|
Ka_value
|
Active earth pressure coefficient. If None, computed from
TYPE:
|
phi
|
Friction angle (degrees). Used only if Ka_value is None.
TYPE:
|
Reference
Das (2014) Eq. 7.18.
Source code in geoeq/design/earth_pressure.py
earth_pressure_plot
¶
earth_pressure_plot(gamma: float, H: float, phi: float, c: float = 0.0, kind: str = 'active', save_as: str = None)
Visualize the lateral pressure distribution behind a wall.
Returns the Matplotlib figure.
Source code in geoeq/design/earth_pressure.py
Walls¶
wall_overturning
¶
wall_overturning(resisting_moments: Sequence[float], driving_moments: Sequence[float]) -> dict
Factor of safety against overturning.
FS_overturning = sum(M_R) / sum(M_O)
Returns dict with totals and FS.
Reference
Das (2014) Eq. 8.4.
Source code in geoeq/design/walls.py
wall_sliding
¶
wall_sliding(horizontal_forces: Sequence[float], vertical_forces: Sequence[float], mu: float = None, delta: float = None, c_base: float = 0.0, B: float = None, Pp: float = 0.0) -> dict
Factor of safety against sliding at the wall base.
FS_sliding = (sum_V * tan(delta) + c_a * B + Pp) / sum_H
| PARAMETER | DESCRIPTION |
|---|---|
horizontal_forces
|
Forces pushing the wall horizontally (kN/m of wall).
TYPE:
|
vertical_forces
|
Vertical forces resisting sliding (kN/m of wall).
TYPE:
|
mu
|
Coefficient of friction between base and soil. If given, used as
tan(delta). Otherwise computed from
TYPE:
|
delta
|
Base friction angle (degrees).
TYPE:
|
c_base
|
Cohesion at base (kPa). Typically c_a ~ 0.5 to ⅔ of c'.
TYPE:
|
B
|
Base width (m). Required if c_base > 0.
TYPE:
|
Pp
|
Passive resistance at the toe (kN/m). Default 0.
TYPE:
|
Reference
Das (2014) Eq. 8.6.
Source code in geoeq/design/walls.py
wall_bearing
¶
Bearing-pressure distribution under a wall foundation.
Computes the eccentricity e, maximum and minimum toe pressures,
and -- if q_ult is given -- FS_bearing = q_ult / q_max.
| PARAMETER | DESCRIPTION |
|---|---|
V
|
Total vertical load (kN/m).
TYPE:
|
M_net
|
Net moment about the centreline of the base (kN.m/m). Positive = overturning sense.
TYPE:
|
B
|
Base width (m).
TYPE:
|
q_ult
|
Ultimate bearing capacity (kPa). If given, returns FS.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict
|
|
Reference
Das (2014) Eq. 8.8-8.10.
Source code in geoeq/design/walls.py
sheet_pile
¶
sheet_pile(gamma: float, H: float, phi: float, c: float = 0.0, gamma_sub: float = None, water_table: float = None, kind: str = 'cantilever') -> dict
Embedment depth of a sheet pile by Blum's simplified method.
Cantilever wall in cohesionless soil: Embedment depth D ~ found by satisfying moment equilibrium about the point of rotation. Closed-form approximation:
D ~ 1.2 to 1.5 * Dmin where Dmin from theoretical balance.
Practical (Das Eq. 14.6): for a cantilever sheet pile in dry cohesionless backfill of height H above the dredge line:
sigma_a = Ka * gamma * H at the dredge line
gamma_b = gamma below dredge line (gamma_sub if submerged)
Total embedment D ~ H * [ (Kp - Ka) / (gamma * Kp) ]^something
Returns the theoretical embedment D_theory and a design D = 1.3 * D_theory.
| PARAMETER | DESCRIPTION |
|---|---|
gamma
|
Unit weight of backfill (kN/m^3).
TYPE:
|
H
|
Free height above the dredge line (m).
TYPE:
|
phi
|
Friction angle (degrees).
TYPE:
|
c
|
Cohesion (kPa). For c-phi soils, applies Bell's solution; for c=0 uses the Blum equations.
TYPE:
|
gamma_sub
|
Submerged unit weight below the water table (kN/m^3).
TYPE:
|
water_table
|
Depth of the water table from the top (m).
TYPE:
|
kind
|
'cantilever' (only currently supported).
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict
|
|
Reference
Blum (1931); Das (2014) Ch. 14.
Source code in geoeq/design/walls.py
Pile design¶
pile_end_bearing
¶
pile_end_bearing(phi: float = None, sigma_v_eff: float = None, c: float = None, method: str = 'meyerhof', Su: float = None) -> dict
Unit tip resistance q_p (kPa) at the pile base.
Two regimes:
- Sand (drained): q_p = sigma'_v * N_q* Meyerhof: N_q* from chart -- approximation N_q* = exp(pi tan phi) * tan^2(45+phi/2) but capped per Meyerhof (1976) Fig 9.11. Vesic: N_q* = (1 + 2 K_0) / 3 * (tan phi)^? -- simplified here.
- Clay (undrained): q_p = 9 * Su (Skempton)
| PARAMETER | DESCRIPTION |
|---|---|
phi
|
Friction angle (degrees). Required for sand.
TYPE:
|
sigma_v_eff
|
Effective vertical stress at pile tip (kPa). Required for sand.
TYPE:
|
Su
|
Undrained shear strength at tip (kPa). Required for clay.
TYPE:
|
method
|
'meyerhof' | 'vesic' | 'skempton' (clay -- alias).
TYPE:
|
c
|
Optional drained cohesion (kPa). Adds c * Nc* contribution.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict
|
|
Reference
Meyerhof (1976); Vesic (1977); Das (2014) Ch. 9.
Source code in geoeq/design/piles.py
pile_skin_friction
¶
pile_skin_friction(Su: float = None, sigma_v_eff: float = None, method: str = 'alpha', phi: float = None, alpha: float = None, beta: float = None, K: float = None, delta: float = None, lambda_: float = None, layer_thicknesses: Sequence[float] = None) -> dict
Unit shaft friction f_s along a pile.
Methods (drained vs total stress):
- alpha (Tomlinson 1957) -- total stress, for clays: f_s = alpha * Su
- beta (Burland 1973) -- effective stress, for clays or sands: f_s = beta * sigma'_v where beta = K * tan(delta). Default K = K0 = 1 - sin(phi); delta = phi.
- lambda (Vijayvergiya & Focht 1972) -- offshore long piles: f_s,avg = lambda * (sigma'_v_avg + 2 * Su_avg)
| PARAMETER | DESCRIPTION |
|---|---|
Su
|
Undrained shear strength (kPa). Required for alpha.
TYPE:
|
sigma_v_eff
|
Effective vertical stress at depth (kPa). Required for beta/lambda.
TYPE:
|
method
|
'alpha' | 'beta' | 'lambda'.
TYPE:
|
alpha
|
Method-specific parameters. Sensible defaults are computed.
TYPE:
|
beta
|
Method-specific parameters. Sensible defaults are computed.
TYPE:
|
K
|
Method-specific parameters. Sensible defaults are computed.
TYPE:
|
delta
|
Method-specific parameters. Sensible defaults are computed.
TYPE:
|
lambda_
|
Method-specific parameters. Sensible defaults are computed.
TYPE:
|
layer_thicknesses
|
For
TYPE:
|
Reference
Tomlinson (1957); Burland (1973); Vijayvergiya & Focht (1972).
Source code in geoeq/design/piles.py
| Python | |
|---|---|
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | |
pile_capacity
¶
pile_capacity(D: float, L: float, q_p: float, f_s: float, area_base: float = None, perimeter: float = None, FS: float = 3.0) -> dict
Axial capacity Q_ult = Q_p + Q_s = q_p * A_p + f_s * As.
| PARAMETER | DESCRIPTION |
|---|---|
D
|
Pile diameter (m).
TYPE:
|
L
|
Pile length (embedded depth, m).
TYPE:
|
q_p
|
Unit tip resistance (kPa) -- from
TYPE:
|
f_s
|
Unit shaft friction (kPa) -- from
TYPE:
|
area_base
|
Base area (m^2). Default pi*D^2/4 (closed-ended round pile).
TYPE:
|
perimeter
|
Shaft perimeter (m). Default pi*D.
TYPE:
|
FS
|
Factor of safety on Q_ult.
TYPE:
|
Reference
Das (2014) Eq. 9.20.
Source code in geoeq/design/piles.py
pile_group_efficiency
¶
pile_group_efficiency(n: int, m: int, D: float, s: float, method: str = 'converse_labarre') -> dict
Group efficiency factor eta for an n x m pile group.
Methods: * Converse-Labarre: eta = 1 - [theta * ((n-1)m + (m-1)n)] / (90 * n * m) with theta = atan(D/s) in degrees. * Feld: each pile loses 1/16 capacity for each adjacent pile.
Reference
Converse & Labarre (1947); Feld (1943); Das (2014) Eq. 9.74.
Source code in geoeq/design/piles.py
pile_settlement
¶
pile_settlement(Q_w: float, Q_p: float, Q_s: float, D: float, L: float, Es: float, Ep: float = 25000000.0, mu_s: float = 0.3, Cp: float = 0.03, Cs: float = None, qp_ult: float = None) -> dict
Vesic's three-component settlement of a single pile.
s = s1 + s2 + s3
| PARAMETER | DESCRIPTION |
|---|---|
Q_w
|
Working axial load (kN).
TYPE:
|
Q_p
|
Tip load at working condition (kN).
TYPE:
|
Q_s
|
Shaft load at working condition (kN).
TYPE:
|
D
|
Pile diameter and length (m).
TYPE:
|
L
|
Pile diameter and length (m).
TYPE:
|
Es
|
Soil elastic modulus (kPa).
TYPE:
|
Ep
|
Pile material modulus (kPa). Default 25 GPa (concrete).
TYPE:
|
mu_s
|
Soil Poisson's ratio.
TYPE:
|
Cp
|
Empirical tip-settlement coefficient (Das Table 9.5). Default 0.03.
TYPE:
|
Cs
|
Shaft-settlement coefficient. Default 0.93 + 0.16 sqrt(L/D) * Cp.
TYPE:
|
qp_ult
|
Ultimate tip resistance (kPa). If given, used in s2 calc.
TYPE:
|
Reference
Vesic (1977); Das (2014) Eq. 9.83-9.86.
Source code in geoeq/design/piles.py
Slope stability¶
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.