Bearing capacity¶
Four classical methods in one function. The general bearing-capacity equation (Meyerhof / Hansen / Vesic):
Terzaghi (1943) uses the same first/second/third-term form but without shape, depth, or inclination corrections.
Quick example¶
import geoeq as ge
# Square footing on dense sand
bc = ge.bearing_capacity(
c=0, gamma=18, Df=1, B=2, L=2,
phi=35, method="meyerhof",
)
print(bc["q_u"]) # ultimate bearing capacity, kPa
# Allowable with FS = 3 (standard for static loading)
ge.bearing_allowable(bc["q_u"], FS=3)
Method comparison¶
The four methods diverge most for \(N_\gamma\) in granular soils:
for m in ("terzaghi", "meyerhof", "hansen", "vesic"):
f = ge.bearing_factors(phi=30, method=m)
print(f"{m:9s} -> Nc={f['Nc']:6.2f} Nq={f['Nq']:6.2f} Ng={f['Ngamma']:6.2f}")
| φ° | Nc | Nq | \(N_\gamma\) Meyerhof | \(N_\gamma\) Hansen | \(N_\gamma\) Vesic |
|---|---|---|---|---|---|
| 0 | 5.14 | 1.00 | 0.00 | 0.00 | 0.00 |
| 20 | 14.83 | 6.40 | 2.87 | 2.95 | 5.39 |
| 30 | 30.14 | 18.40 | 15.67 | 14.39 | 22.40 |
| 40 | 75.31 | 64.20 | 93.69 | 79.54 | 109.41 |
A design chart showing \(q_u\) vs \(B\) for all four methods:
ge.bearing_capacity_plot().Shape, depth, inclination factors¶
The corrections are independently callable if you want to inspect them:
ge.bearing_shape_factors(B=2, L=3, phi=30, method="meyerhof")
# {'sc': 1.40, 'sq': 1.20, 's_gamma': 1.20}
ge.bearing_depth_factors(Df=1, B=2, phi=30, method="meyerhof")
# {'dc': 1.17, 'dq': 1.09, 'd_gamma': 1.09}
ge.bearing_inclination_factors(beta=10, phi=30)
# {'ic': 0.79, 'iq': 0.79, 'i_gamma': 0.45}
The unified bearing_capacity() function applies them automatically
unless you pass shape=False, depth=False, or inclination=0.
Water-table effects¶
Pass water_table="at_base" to use the effective (buoyant) unit
weight under the footing. This is the most common case for shallow
footings on saturated sand.
API reference¶
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:
|
