The general bearing-capacity equation has three terms — cohesion, surcharge, and self-weight — each multiplied by a dimensionless factor (Nc, Nq, Nγ) that depends on the friction angle φ:
Nc and Nq are essentially identical across all four methods — they come from Prandtl-Reissner's 1920 derivation. The fight is over Nγ. At φ = 30°:
| Method | Nc | Nq | Nγ |
|---|---|---|---|
| Terzaghi (1943) | 30.14 | 18.40 | 15.67 |
| Meyerhof (1963) | 30.14 | 18.40 | 15.67 |
| Hansen (1970) | 30.14 | 18.40 | 14.39 |
| Vesic (1973) | 30.14 | 18.40 | 22.40 |
Vesic's Nγ is ~50 % higher than Hansen's at the same friction angle. For a granular-soil bearing-capacity calculation dominated by the third term, that's a 50 % spread in your final qu.
Try it — change the parameters live
The failure mechanism below is rendered from the same formulas
that GeoEq uses in ge.bearing_capacity(). Drag the sliders to see
how the three failure zones — elastic wedge, radial shear (log-spiral), and
Rankine passive — change with the friction angle. The four ultimate-capacity
values on the right are recomputed live for each method.
Why they disagree
- Terzaghi (1943) assumed the failure surface goes vertical from the footing edge — a conservative simplification.
- Meyerhof (1963) extended the failure surface above footing level, capturing more shear resistance — slightly higher capacity.
- Hansen (1970) revised Meyerhof's surcharge geometry and got a smaller Nγ coefficient.
- Vesic (1973) introduced a different mathematical form, giving the largest values.
The same footing, all four methods, in eight lines
import geoeq as ge
# 2 m square footing at 1 m depth on dense sand (phi=35)
for m in ("terzaghi", "meyerhof", "hansen", "vesic"):
res = ge.bearing_capacity(
c=0, gamma=18, Df=1, B=2, L=2,
phi=35, method=m,
)
q_all = ge.bearing_allowable(res["q_u"], FS=3)
print(f"{m:9s} q_u = {res['q_u']:6.0f} kPa, q_allow = {q_all:.0f} kPa")
# terzaghi q_u = 1180 kPa, q_allow = 393 kPa
# meyerhof q_u = 1352 kPa, q_allow = 451 kPa
# hansen q_u = 1248 kPa, q_allow = 416 kPa
# vesic q_u = 1538 kPa, q_allow = 513 kPa
That's a 30 % spread on a single footing — enough to take a borderline design and either pass or fail it depending on which textbook you opened.
ge.bearing_capacity_plot().Which one to use, in practice
There is no universally "right" answer. The four methods reflect four honest interpretations of the same physics; the spread is the literature's honest uncertainty.
Hansen is the working compromise
Most practising engineers in North America and Europe default to Hansen. It gives values between Terzaghi (conservative) and Vesic (permissive), and its shape/depth/inclination factor set is the most rigorous of the four.
When to be more conservative
- Unfamiliar soil deposits — pick Terzaghi's Nγ and a high FS.
- Foundations on slopes — none of the standard methods handle slope inclination beyond ~10°; switch to Bowles' charts or numerical methods.
- Sensitive to settlement, not collapse — bearing capacity is rarely the controlling check. Use
ge.settlement_schmertmann()or 1-D consolidation instead.
When you can be less conservative
- Well-characterised dense sand, multiple CPTs, careful FS — Vesic is defensible.
- Eccentric loading — use Hansen's effective-width method (
B' = B - 2e).
The honest verdict
Don't pick a method to get the answer you want — pick it to match the
quality of your soil data and the consequences of failure. Run all
four with ge.bearing_capacity(), plot them with
ge.bearing_capacity_plot(), and let the spread inform your
factor of safety. A 30 % spread between methods means your FS should
include that uncertainty.