An intuitive tool for structural engineers to design concrete elements efficiently.
mento designs and checks reinforced concrete members to ACI 318-19, EN 1992-1-1:2004 (Eurocode 2) and CIRSOC 201-25. Give it a section, its materials and a set of load combinations; it returns the reinforcement, the demand-to-capacity ratio of every check, and a calculation report you can hand to a reviewer.
mento is also, as far as we know, the only open source package that implements CIRSOC 201-25, the Argentinian concrete design standard.
Try it without installing anything: mentocalc.com runs mento in your browser, with calculators for beams, one-way slabs and shear walls that produce the same Word report, in English or Spanish.
Installation
pip install mento
Requires Python 3.12 or newer. To try it in Google Colab,
run !pip install mento in the first cell.
Quick start
Design a 20 × 50 cm beam for two load combinations:
from mento import Concrete_ACI_318_19, SteelBar, RectangularBeam, Forces, Node
from mento import MPa, cm, mm, kN, kNm
concrete = Concrete_ACI_318_19(name="C25", f_c=25 * MPa)
steel = SteelBar(name="ADN 420", f_y=420 * MPa)
beam = RectangularBeam(
label="B101", concrete=concrete, steel_bar=steel,
width=20 * cm, height=50 * cm, c_c=25 * mm,
)
forces = [
Forces(label="1.2D+1.6L", M_y=120 * kNm, V_z=100 * kN),
Forces(label="1.4D", M_y=80 * kNm, V_z=70 * kN),
]
node = Node(section=beam, forces=forces)
node.design()
print(beam.reinforcement)
bottom: 2Ø20 mm + 1Ø16 mm / top: no reinforcement / stirrups: 1 stirrup Ø10 mm @ 22 cm
From there:
beam.plot()draws the section above.node.check_flexure()andnode.check_shear()return one row per combination as a pandas DataFrame, with the required and provided steel, the capacity and the DCR.node.resultsshows the formatted results in a Jupyter notebook.node.flexure_results_detailed_doc()andnode.shear_results_detailed_doc()write the step-by-step calculation report to Word.- To check reinforcement you already have instead of designing it, set the bars on the beam
and call
node.check().
The examples walk through each element and design code as a notebook, including US customary units.
What mento covers
| Element | ACI 318-19 | CIRSOC 201-25 | EN 1992-1-1:2004 |
|---|---|---|---|
| Rectangular beam, flexure and shear | ✅ | ✅ | ✅ |
| One-way slab, flexure and shear | ✅ | ✅ | ✅ |
| Footing section, flexure and shear | ✅ | ✅ | ✅ |
| Shear wall, in-plane shear | ✅ | ✅ | ✅ |
| Slab punching shear | in progress | in progress | in progress |
Across all of them:
- Units throughout. Every input carries its unit. Metric and US customary are both supported, and a section entered in US customary units is reported in them.
- Design gives you options. Besides the arrangement it applies, a design keeps the next best alternatives for bars and stirrups, and warns about the detailing limits a section misses.
- Many members at once.
BeamSummaryandShearWallSummarydesign or check a whole schedule, and export the designed reinforcement to Excel and back. - Reports. Results come as Markdown in Jupyter, as pandas DataFrames, and as Word documents.
Validated against published examples
The 58 tests in
tests/validation
reproduce cases worked out outside mento: the CRSI Design Guide on the ACI 318 Building
Code, CSI's software verification examples, ETABS runs, The Concrete Centre's Eurocode 2
guide and eurocodeapplied.com. Each test names the example and the page its numbers come from.
The theory pages set out the equations behind each check, with the clause of the design code they come from.
Documentation
The full documentation is at mento-docs.readthedocs.io:
Roadmap
- Rectangular concrete beam section check and design for ACI 318-19 and CIRSOC 201-25.
- Rectangular concrete beam section check and design for EN 1992-2004.
- One way concrete slab and footing check and design for ACI 318-19 and CIRSOC 201-25.
- One way concrete slab and footing check and design for EN 1992-2004.
- Shear wall shear check and design for ACI 318-19 and CIRSOC 201-25.
- Shear wall shear check and design for EN 1992-2004.
- US customary units in, US customary units out.
- Slab shear punching check and design for ACI 318-19 and CIRSOC 201-25. (in progress)
- Slab shear punching check and design for EN 1992-2004. (in progress)
- Shear wall flexure check for ACI 318-19.
- Column check for ACI 318-19.
Support mento
mento is built and maintained in the time left over from consulting work. If it saves you a spreadsheet or a few hours, consider sponsoring its development:
- Ko-fi — one-off support, no account needed.
Sponsorship funds the roadmap above: punching shear, columns, and full EN 1992 coverage. Sponsors are listed in this README, and Partner sponsors get their logo on mentocalc.com.
Not looking to sponsor? A ⭐ on the repo or feedback in Discussions is also genuinely appreciated.
Using mento at your company?
mento is free and open-source under MIT. If your team wants help going further, we offer a few things on top:
- Team onboarding — short remote sessions to get your engineers productive with Python, Jupyter, VS Code and Git, using mento as the starting point.
- Custom tools — building specific workflows on top of mento (custom reports, integrations with Revit / ETABS / Robot, batch design tools, internal company libraries).
- Sponsored features — if your firm needs a specific element type, design code, or check that's on the roadmap (or not), we can scope it as paid work and contribute it back.
If any of that is useful for your team, fill out this form and we'll follow up.
Contributing
We welcome contributions from the community to expand and enhance the package. Start with the
contributing guide, then
look through the open issues — those labelled
good first issue are a good entry point. A new calculation needs a published worked example
to validate it against; the guide explains how.
Participation in this project is governed by our Code of Conduct.
Disclaimer
mento is a tool to assist structural engineers, not a replacement for engineering judgement. Results must be reviewed and accepted by a qualified engineer who takes responsibility for the design. The software is provided "as is", without warranty of any kind, and the authors accept no liability for its use. Verify the output against the applicable design code before relying on it for any real structure.
Citing mento
If mento supports your research or professional work, cite it with the DOI 10.5281/zenodo.21956634, which always resolves to the latest release. Citation metadata is in CITATION.cff, and GitHub's "Cite this repository" button will format it for you. The citing guide explains which version to cite and gives a BibTeX entry.
License
This project is licensed under the MIT License. See LICENSE for the full text.
Metadata
Release files for mento 1.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mento-1.6.0.tar.gz | 377.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mento-1.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 788.5 kB
Release files / mento-1.6.0.tar.gz
| Download URL | mento-1.6.0.tar.gz |
|---|---|
| Size | 377.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fcba35eb15332f54b8add79cbd260dd687fb090b0dc0dc6865ee286278198996
|
|
BLAKE2b-256 checksum How to use checksums |
5b08b0e75b75fb6cdbb2298b52b0943221555917b039d81a75f629186ac2e977
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / mento-1.6.0-py3-none-any.whl
| Download URL | mento-1.6.0-py3-none-any.whl |
|---|---|
| Size | 410.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9698d0f79dc94c9127a25da29b790fb6850e7c2f46bb15a609a0e7427c56f9d2
|
|
BLAKE2b-256 checksum How to use checksums |
a5ba044e4a7fe6760654fc142e6c9220172f905a24e9aeb27cb334d1e64eafac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log