Home
Built on Gmsh
apeGmsh is a wrapper built on top of the (awesome) Gmsh Python API. It adds a set of abstractions over the main API to fit an intended structural-FEM workflow — parts, constraints, loads, masses, and an OpenSees bridge. You still have the full Gmsh API underneath whenever you need it.
Install¶
The [all] extra pulls in the OpenSees bridge (via
openseespy), the web viewer, and
plotting — everything the tutorials use. Want just the modelling core?
Drop the [all]. To track unreleased work, install from the repo instead:
A double-couple seismic source radiating through a solid block — solved and rendered by the 165-line script scripts/render_showcase/moment_tensor.py.
New here? Build a model in 10 minutes
The fastest way in is to build your first model →:
a steel cantilever you solve and check against PL³/3EI, end to end, in
under 40 lines. When you want the whole staircase — every tutorial and
worked example in reading order, each with its verification check — it's
on the learning path.
Where do you want to start?¶
-
Teach me, step by step.
Hand-held journeys that end in a number you can trust. Start with your first model in 10 minutes.
-
I know the basics — how do I X?
Task-titled recipes: fix supports, apply a pressure, tie meshes, run a pushover, read a displacement, save & reload, compose modules.
-
Help me build a mental model.
The six ideas behind everything — session, composites, naming,
FEMData, declare-then-resolve, the typed bridge — then the topic guides. -
Show me a worked model.
Recognizable structural problems — frames, modal, pushover — built end to end and checked against known answers.
-
Look up a method.
Complete API surface — session composites, mesh, OpenSees bridge, parts, constraints, loads, masses, results, viewers.
What's new¶
-
Section properties, in-process
Draw any cross-section — built-up plates, an SRC column, a holed box — mesh the face, and read A, I, J, shear centre, warping and plastic moduli straight off it. Bind the analyzer to the bridge and the emitted deck always follows the drawn geometry.
-
Contact, declared like everything else
g.constraints.contact(master, slave)puts node-to-segment or mortar contact — friction, mesh-tying, the lot — on the same declare-then-resolve pipeline as every tie and diaphragm. -
Staged SSI, end to end
Settle a soil column under gravity, freeze it, flip the boundary to absorbing, and shake the equilibrated state — the staged workflow that used to take a folder of hand-written decks.
-
The docs are now a course
Every tutorial and example sits on one ordered staircase, each rung checked against a known answer — and the showcase models now move.
Credits¶
Developed by: Nicolás Mora Bowen · Patricio Palacios · José Abell · Guppi
Part of José Abell's El Ladruño Research Group.
Citing apeGmsh¶
If apeGmsh contributed to published work, please cite it:
Mora Bowen, N., Palacios, P., Abell, J., & Guppi. apeGmsh: a structural-FEM wrapper around Gmsh with a snapshot FEM broker. Zenodo. https://doi.org/10.5281/zenodo.21815489
@software{apeGmsh,
author = {Mora Bowen, Nicolás and Palacios, Patricio and Abell, José and Guppi},
title = {apeGmsh: a structural-FEM wrapper around Gmsh with a snapshot FEM broker},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.21815489},
url = {https://doi.org/10.5281/zenodo.21815489}
}
Which DOI?
The DOI above is the concept DOI — it always resolves to the most recent release, which is what you want when citing the software itself. To pin the exact version you ran, use that release's version DOI instead (v2.0.0 is 10.5281/zenodo.21815490).
License¶
apeGmsh is licensed under the GNU General Public License v3.0 or later.
GPL rather than a permissive license because apeGmsh builds on Gmsh, which is GPLv2+ — its linking exception covers only Netgen, METIS, OpenCASCADE and ParaView, not downstream API consumers. pygmsh is GPLv3+ for the same reason.
Note the GPL constrains distribution, not use: running apeGmsh internally, including on commercial engineering projects, carries no source-disclosure obligation.