Geotechnical engineering, solved in Python.¶
The complete onshore workflow — lab characterisation, site investigation, foundation design, soil dynamics, liquefaction — under one flat, validated, MIT-licensed API. 170+ functions. 563 tests. Zero magic.
What is GeoEq?¶
geoeq is a Python package for geotechnical engineers, students, and
researchers who would rather write code than babysit spreadsheets.
It collects the working set of textbook geotechnical formulas (Das · Bowles · Holtz & Kovacs · Budhu · Kramer), ASTM/BS/IS test procedures, and the simplified-procedure liquefaction analysis (Seed-Idriss · NCEER · Idriss-Boulanger) into one consistent, flat, validated, MIT-licensed library. Plain dictionaries in, plain dictionaries out. Every formula cites its source.
import geoeq as ge
ge.density(Gs=2.65, e=0.72, kind="saturated", unit="kN/m3") # 19.6 kN/m³
ge.spt_friction_angle(N=15, sigma_v=80, method="hatanaka") # 33.2°
ge.bearing_capacity(c=10, gamma=18, Df=1, B=2, phi=30,
method="meyerhof")
ge.liquefaction_fos(CSR=0.20, CRR=0.18, Mw=7.0) # {'FS': 0.95, ...}
What is inside¶
A complete onshore geotechnical workflow under one flat namespace. 170+ validated functions across nine modules, each covering the methods routinely used in lab characterisation, ground investigation, foundation design, and seismic assessment.
-
ge.soil— Properties & classification
Phase relations, Atterberg, index properties, USCS, AASHTO, plasticity chart.
-
ge.lab— Laboratory testing
Particle size, direct shear, triaxial, oedometer, Proctor, permeability, CBR.
-
ge.site— Site investigation
SPT, CPT (Robertson SBT), field vane, pressuremeter, plate load, pile load, field permeability, DCP.
-
ge.profile— Layered ground model
SoilProfile with total / pore / effective stress, plotting, DataFrame export.
-
ge.design— Engineering design
Boussinesq, bearing capacity (4 methods), settlement, earth pressure, retaining walls, pile design, slope stability, seepage.
-
ge.dynamics— Soil dynamics & liquefaction
Small-strain modulus, Darendeli G/Gmax + damping, Seed-Idriss / NCEER / Idriss-Boulanger triggering.
-
ge.io— Data I/O
CSV, AGS4 (UK / AU / NZ), GEF-CPT (Netherlands), CPT container class.
-
ge.viz— Publication plots
Grain size, Proctor, Mohr, consolidation, SBT, bearing chart, isobars, Taylor, G/Gmax, liquefaction.
Design principles¶
- Flat API.
import geoeq as ge, then call functions. No deep import chains, no class hierarchies. - Validated inputs. Every function checks physical meaningfulness with engineer-readable errors.
- Traceable formulas. Every docstring cites the textbook section or original paper.
- No magic. Plain
dictreturns, Matplotlib figures. Slice, plot, feed into Pandas — whatever you would do with NumPy output. - Test-backed. 563 tests across 170+ functions. Textbook values are spot-checked.
- Publication quality. 300 DPI figures, semi-log axes, shaded ASTM zones out of the box.
- MIT forever. Commercial consulting, in-house tools, research, teaching. No exceptions.
Where to go next¶
| Goal | Page |
|---|---|
| Install and try in five minutes | Quick start |
| See it work on a real problem | Tutorials (25 chapters) |
| Browse the API by module | User guide |
| Look up an exact function signature | API reference |
| Understand the formulas | Each module page cites its references; the full bibliography is at the bottom of every reference page |