Skip to content

Compatibility

femforge depends on a Python interpreter, an Elmer build and, for the workbench, a VTK client stack whose versions must agree. This page lists the versions femforge supports and tests, and where to report a problem.

Python

Version Supported Tested in CI
3.12 yes yes
3.13 yes yes
3.14 yes yes

Both femforge and femforge-workbench require Python 3.12 or later. The Quality workflow runs type checks, lint and the test suite on each of the three versions.

Operating systems

System Status
Linux Every CI workflow runs on Ubuntu 24.04 runners. gmsh needs the system libraries listed on the install page.
Windows Native Elmer installs under C:\Program Files\Elmer *\bin are found without PATH changes, and MS-MPI's mpiexec is found at its default location. Docker Desktop runs the Elmer image. CI does not run on Windows.
macOS Docker Desktop runs the Elmer image; on Apple silicon it runs under emulation. CI does not run on macOS.

Elmer

Source What you get
Docker image ghcr.io/femforge-io/femforge-elmer:0.2.0: Ubuntu 24.04, pinned by digest, with the elmerfem-csc package from CSC's Elmer PPA, which ships ElmerGrid and ElmerSolver with Open MPI and MUMPS
Native install any Elmer that provides ElmerGrid and ElmerSolver, such as the Elmer binaries for Windows; serial solves only

The image tag pins the recipe, and the PPA decides the Elmer version inside it. femforge doctor prints the elmerfem-csc version that the local image holds. The CI docker-e2e job solves through the image on a runner without a native Elmer.

Docker

The image is built for linux/amd64 only, because the CSC PPA publishes no arm64 packages. femforge passes --platform linux/amd64 when it pulls, builds and runs the image, so an arm64 host such as an Apple-silicon Mac emulates it without extra settings. Solves run slower under emulation; femforge doctor warns when the Docker daemon is arm64, and Docker Desktop's Rosetta setting speeds emulation up.

Pinned versions

The workbench pins the minor versions of its 3D client stack, because it works around defects that are specific to them:

Package Range Why it is pinned
vtk >=9.7.1,<9.8 mirror_friendly and refresh_composites in panels/scene.py work around VTK.wasm 9.7 serialization defects
trame-vtklocal >=1.7.1,<1.8 tolerate_dropped_objects in panels/scene.py patches a status request that raises on 1.7.1
pyvista >=0.49.0,<0.50 mirror_friendly moves the 64-bit cell arrays that 0.49 filters such as clip_box leave to 32-bit storage

femforge itself pins build123d to the 0.13 minor and polars to the 2.x major. The workbench needs trame 4 and its React client (trame>=4.0.0, trame-client>=4.1). The workbench ocp extra pins ocp_vscode to the 4.1 minor.

Report a problem

Open an issue at github.com/femforge-io/femforge/issues. Include the output of femforge doctor --json.