# Elmer FEM: an open-source multiphysics solver suite

> Elmer FEM is a Fortran finite element suite covering structural mechanics, fluid dynamics, heat transfer, electromagnetics and coupled problems, distributed as ElmerSolver with ElmerGrid, ElmerGUI and ElmerIce. It suits multiphysics work where coupling several solvers is the point, and it is a source repository first, with prebuilt binaries maintained elsewhere.

**ElmerCSC/elmerfem** — Official git repository of Elmer FEM software

- Repository: https://github.com/ElmerCSC/elmerfem
- Website: http://www.elmerfem.org
- Stars: 1,756 · Forks: 409
- Language: Fortran
- License: NOASSERTION
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/elmercsc-elmerfem

## The suite is several programs, and the names are not obvious

Elmer describes itself as a tool that can solve a large number of partial differential equations, which makes it an ideal tool for multiphysical problems. The models named are structural mechanics, fluid dynamics, heat transfer and electromagnetics.

The repository layout is where the suite stops being one program. fem/ holds the solver sources. elmergrid/ is the mesh generator, elmerice/ is the ice sheet flow model with its own community site and its own Docker image on Docker Hub, and ElmerGUI/ is the graphical front end, accompanied by ElmerGUIlogger and ElmerGUItester. meshgen2d/ is a separate 2D generator, fhutiter/ handles a specialised fluid problem, matc/ appears to be a companion tool, mathlibs/ holds the maths libraries, and umfpack/ is a sparse solver dependency.

ElmerWorkflows/ is worth a look if you want the intended sequences rather than individual solves. The whole thing is built with CMake and packaged with CPack, and Nix support is present through flake.nix and default.nix.

The primary language is Fortran, which is the single most important fact about working on this codebase.

## Four physics areas and the couplings between them are the reason to use it

The topic list gives a fuller inventory than the README: acoustics, electromagnetics, fluid mechanics, glaciology, structural mechanics, multiphysics, MPI and parallel computing.

That breadth is not decoration, because multiphysics is the design centre. A single Elmer input file can drive several solvers over a shared mesh, and the coupling is the feature. Heat conduction producing thermal expansion that loads a structure is the canonical example; Elmer/Ice extends the same idea to ice sheet flow, which is why it has its own community site at elmerice.elmerfem.org.

ElmerSolver runs from PCs to massively parallel HPC platforms, and MPI and parallel computing are named topics, so the parallel path is a supported mode rather than an experiment.

A caveat about what the README does not say: it does not enumerate the solver equations, the element types, or the convergence controls. Those are in the manuals, which the README links as roughly 900 pages of PDFs, and in the Elmer documentation at elmerfem.org. Budget time to read rather than to guess.

## Prebuilt binaries come from other projects, not from here

This repository is the official source code repository, and it is worth being clear that it is not where you download Elmer. The README lists the direct links separately:

A WSL distribution in the ElmerCSC/elmer-wsl project. Windows installers hosted at nic.funet.fi. A VirtualBox VM image, also at nic.funet.fi. A PPA for Ubuntu at launchpad.net under the elmer-csc-ubuntu team. A Docker image, with elmer/docker/elmer.dockerfile in this repository for the solver and nwrichmond/elmerice on Docker Hub for the ice model.

So the question on Linux is which route you want. The PPA gives you a packaged install with no compiler work, the Nix instructions and flake give you a reproducible build, and the Dockerfile gives you a container. All four exist, and they are not guaranteed to be at the same version.

Compilation instructions are maintained per platform in the compilation_instructions/ directory: Ubuntu.md, nix.md, Windows-msys2.md and macOS.md.

## Licensing is mixed and GitHub cannot classify it

Elmer is not a single licence. The README carries two badges, GPL v2 and LGPL v2.1, and links to license_texts/ElmerLicensePolicy.md as the actual policy. The repository LICENSE file is the one GitHub declines to classify, and that classification failure is the signal to read the policy document rather than guess.

The README badges and policy document use different version labels, so check the applicable source-file notices and licence texts for the exact components before redistribution. The distinction matters in practice for a research code used commercially. Where a component is under LGPL 2.1 you have the linking exceptions; where it is GPL v2, modifying and redistributing it carries obligations. Elmer is used by companies and by the Finnish CSC, which maintains a service page for it at research.csc.fi/service/elmer/, so commercial use clearly happens, and the specifics live in that policy file.

Citation is handled separately through CITATION.cff at the repository root, and the README links a collection of white papers at research.csc.fi for citing Elmer. The README also links the Zenodo DOI 10.5281/zenodo.7892181.

There is also a SQAaaS silver badge assertion linked from the README, an external software quality assessment record rather than a project self-rating.

## Release cadence, branch model and where questions actually get answered

The repository is not archived and the last push was on 2026-10-16. The default branch is devel, and releases follow a date-based version scheme: release-26.2.1 on 2026-04-29, release-26.2 on 2026-04-28 and release-26.1 on 2026-01-23. Release notes live in a ReleaseNotes/ directory at the repository root.

The gap between the last push and the newest release, about six months, is normal for a project where the release is cut periodically rather than on every merge. If you want the newest fixes you build from devel; if you want a citable, reproducible artifact you take a release.

Support channels are ranked by the project itself. The phpBB forum at elmerfem.org is described as the preferred place for questions with long history, which is the right channel for anything substantive. The mailing list ElmerUpdates is explicitly low traffic, and the subreddit is marked low traffic with no support. YouTube carries webinars, and Discord is for general discussion of engineering software rather than Elmer specifically. There is a CONTRIBUTING guide, a CODE_OF_CONDUCT file, and a GitHub Actions build workflow with its own badge.

The CI lives in ci/ and cmake/ directories, with cmake/ holding the build system proper.

## Where Elmer is the wrong choice

Elmer supports individual physics as well as coupled problems. For a specific structural, electromagnetic or fluid analysis, compare its supported models, validation cases, meshing and post-processing against specialised alternatives before choosing.

The second cost is learning the input format. Elmer is driven by text input files organised into sections, and the reference material is a large manual rather than an interactive API. Automating a parameter sweep requires choosing and testing a workflow appropriate to the installed tools and your environment.

The third is the Fortran codebase. Extending Elmer means writing Fortran and fitting into the existing solver structure. If your group already lives in Python or C++, the bridge cost is real and the README does not describe any binding layer.

The repository includes ElmerGUI and ElmerWorkflows, but neither changes those three facts.

## Conclusion

Adopt Elmer when your problem couples physics that other codes solve separately, such as thermal expansion feeding structural stress, and when you can tolerate the Fortran codebase and its manual-based workflow. For a single-physics problem, compare its validated capabilities and workflow against dedicated tools, and do not expect the repository to give you a binary: the prebuilt Windows installers, WSL distro, VirtualBox image and Ubuntu PPA all live in other projects. Before starting, read ElmerLicensePolicy.md, and the licence notices for the exact components you use; the project describes GPL and LGPL components, and pick your platform from the compilation instructions for Ubuntu, Nix, msys2 or macOS.

## FAQ

### How do I install Elmer FEM?

The repository is the source code, so binaries come from elsewhere. The README links a WSL distribution, Windows installers and a VirtualBox VM hosted at nic.funet.fi, a Launchpad PPA for Ubuntu, Nix instructions and a Dockerfile. Compilation instructions exist for Ubuntu, Nix, msys2 on Windows and macOS.

### What physics does Elmer FEM solve?

The README names structural mechanics, fluid dynamics, heat transfer and electromagnetics, and describes Elmer as suited to multiphysical problems. The topic list adds acoustics and glaciology, with Elmer/Ice as the ice sheet flow model.

### What license is Elmer FEM released under?

The README identifies GPL and LGPL licensing, and the project policy distinguishes components such as ElmerSolver libraries and GPL solver modules. The policy's version labels differ from the README badges, so check the actual licence notices and texts for the components and distribution you use.

### Does Elmer FEM run in parallel?

Yes. The README states Elmer can be used from PCs to massively parallel HPC platforms, and MPI and parallel computing are listed among the project topics along with a build workflow badge in the repository.

## Sources

- [ElmerCSC/elmerfem on GitHub](https://github.com/ElmerCSC/elmerfem)
- [Issues](https://github.com/ElmerCSC/elmerfem/issues)
- [Project website](http://www.elmerfem.org)
- [README](https://github.com/ElmerCSC/elmerfem/blob/devel/README.md)
- [Releases](https://github.com/ElmerCSC/elmerfem/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/elmercsc-elmerfem
