Our open source · Apache 2.0
We gave the profession our geotechnical Python package.
170+ validated functions for soil mechanics, site investigation and foundation design — free for commercial work, auditable line by line, installable with one command.
Our open source · Apache 2.0
Our geotechnical Python package is open source — and always will be.
geoeq is the engine
inside our software, published for everyone.
170+ validated functions across soil classification,
laboratory testing, site investigation, foundation design and soil dynamics —
because an engineer should be able to read the equation behind any number they
are asked to sign.
- Free forever
- Commercial use allowed
- No account
- Citable in research
- 170+
- validated functions
- Apache 2.0
- licence — commercial use allowed
- Python 3.9 – 3.13
- supported
- 3
- dependencies only
$ pip install geoeq
import geoeq as ge
# Bearing capacity of a shallow foundation
result = ge.bearing_capacity(
c=25, gamma=18, Df=1.5, B=2,
phi=30, method="meyerhof",
)
print(result["q_u"]) # ultimate bearing capacity, kPa Flat API — every function at the top level. Depends on numpy · scipy · matplotlib.
Soil properties & classification
Index properties and group symbols computed the way the standards define them.
- USCS (ASTM D2487)
- AASHTO M145
- Atterberg limits
- USDA texture triangle
Laboratory testing
Reduce test data to the parameters a design actually consumes.
- Grain size
- Shear & triaxial
- Consolidation
- Compaction & permeability
Site investigation
Field measurements, corrections and correlations in one place.
- SPT & N-value corrections
- CPT
- Vane & pressuremeter
- DCP & pile load tests
Foundation & geotechnical design
The calculations behind a foundation report, with every step callable.
- Bearing capacity
- Settlement
- Earth pressure
- Piles & slope stability
Soil dynamics & earthquake engineering
Seismic screening on the same profile you logged in the field.
- Liquefaction triggering
- NCEER procedure
- Idriss–Boulanger
- Cyclic stress ratio
Stress, seepage & profiles
Layered profiles with the stress state resolved at any depth.
- Total & effective stress
- Pore pressure
- Seepage
- Layered profiles
Documentation at docs.geoeq.org · package home at geoeq.org · source at github.com/geoeq/geoeq
Why we opened it
A number you cannot check is a number you cannot defend.
Geotechnical practice runs on correlations, and most of them live inside spreadsheets nobody outside the office has ever read. We took the other route.
01
Because engineering should be checkable
Every function is public, so the method behind a bearing capacity or a liquefaction check can be read, questioned and corrected — by a reviewer, a client, or a student.
02
Because the profession gave it to us first
These procedures come from decades of published research. Implementing them behind a closed licence and selling the result back to the profession never sat right.
03
Because good tools should not depend on budget
A consultancy of one, a university lab and a global firm get the same engine. The desktop software is where we earn a living; the mathematics is not for sale.
Who it is for
When a library beats a spreadsheet.
A spreadsheet answers one question once. A tested function answers it every time, for every borehole, and can be checked by somebody else.
Consultants automating repetitive checks
Run the same bearing capacity or settlement calculation across every borehole on a site, in a script you can re-run when the data changes.
Researchers who must show their working
Publish the code alongside the paper. A reviewer can read the implementation of every correlation you used instead of taking a spreadsheet on trust.
Teams building internal tools
A permissive licence and three dependencies means it drops into an existing pipeline without a procurement conversation.
Engineers learning the methods
Each function is small and readable, so the library doubles as a worked reference for how a procedure is actually applied.
What it covers, in short
- USCS (ASTM D2487)
- AASHTO M145
- Atterberg limits
- USDA texture triangle
- Grain size
- Shear & triaxial
- Consolidation
- Compaction & permeability
- SPT & N-value corrections
- CPT
- Vane & pressuremeter
- DCP & pile load tests
- Bearing capacity
- Settlement
- Earth pressure
- Piles & slope stability
- Liquefaction triggering
- NCEER procedure
- Idriss–Boulanger
- Cyclic stress ratio
- Total & effective stress
- Pore pressure
- Seepage
- Layered profiles
Frequently asked questions
What is the geoeq Python package?
geoeq is a free and open-source geotechnical engineering library for Python. It provides more than 170 validated functions covering soil properties and classification, laboratory test reduction, site investigation interpretation, foundation design and soil dynamics, so that geotechnical calculations can be scripted, tested and version-controlled like any other code.
How do I install the geoeq geotechnical Python library?
Run pip install geoeq. It supports Python 3.9 through 3.13 and depends only on numpy, scipy and matplotlib, so it installs cleanly into an existing scientific Python environment.
Is geoeq free for commercial and consulting work?
Yes. geoeq is released under the Apache 2.0 licence, which permits personal, academic, commercial, consulting and enterprise use and includes an explicit patent grant. There is no licence fee and no usage restriction.
Which standards does the geoeq package follow?
Classification follows ASTM D2487 for the Unified Soil Classification System and AASHTO M145, with the USDA texture triangle also supported. Liquefaction assessment implements the NCEER and Idriss-Boulanger procedures. Each function documents the source it implements.
How does the Python package relate to GeoEQ desktop software?
They share the same engineering. The desktop programs — starting with GeoEQ SPT Logs — provide the interface, drawings and reporting an engineer needs, while the open-source package exposes the underlying calculations so they can be audited, cited in research and automated in your own pipelines.
Can I use geoeq for research and cite it?
Yes. The source is public on GitHub under Apache 2.0, so the implementation of every function can be inspected and referenced in a paper. Being able to point a reviewer at the exact code that produced a number is the main reason the library is open.
Get started
Prefer an interface to an import statement?
GeoEQ SPT Logs puts the field half of this workflow behind a desktop application — free for Windows.