Learn/Under the hood
The open-source stack behind modern simulation
Every solver, mesher and library in the stack — what each is genuinely good at, and what licence it carries.
15 minute read
The solver is rarely the hard part
There is a persistent assumption that open-source simulation means a compromise on the numerics. For the codes below, that has not been true for a long time: they are used in nuclear safety assessment, automotive crash work and published research, and results from them are defended in front of regulators.
What open-source simulation genuinely lacks is rarely solver capability. It is the surrounding work — installation, geometry import, meshing, setting up a case without editing a dozen text files, watching a run, getting results out in a form somebody else can check, and knowing which of the available models you should have chosen.
That is also why this page covers more than solvers. A CFD code with no geometry kernel and no mesher is not a usable tool, and the coupling and optimisation layers are what turn several solvers into one workflow.
Solvers
The codes that actually compute an answer. Each is mature, actively developed, and used for work that gets published or certified.
OpenFOAM
Computational fluid dynamics · GPL-3.0
The most widely used open-source CFD code, in development since the 1990s. Finite volume, unstructured meshes, strong parallel scaling, and very broad physics: incompressible and compressible flow, multiphase and free surface, combustion, conjugate heat transfer, rotating machinery and more.
It is a family of solvers rather than one binary — simpleFoam for steady incompressible flow, pimpleFoam for transient, rhoPimpleFoam and sonicFoam for compressible, interFoam for free surface, chtMultiRegionFoam for conjugate heat transfer — and choosing the right one for the physics is a real part of using it. That trade-off is covered in OpenFOAM and the case for a GUI.
code_aster
Structural mechanics, thermal, structural acoustics · GPL-3.0
Developed by EDF, the French electricity utility, and used in the safety assessment of their nuclear fleet. That heritage shows in the coverage: nonlinear material behaviour, fracture mechanics, creep, damage, contact, and a documented validation base running to thousands of test cases.
It is the deepest open-source structural code available, and it is demanding — the command language and much of the documentation are French in origin, and it expects a user who knows what they are asking for. It also handles structural acoustics, where the structure rather than the air is the hard part.
Elmer
Low-frequency electromagnetics, thermal, acoustics, elasticity · LGPL / GPL
A multiphysics finite element package from CSC in Finland, and the mature open-source answer for low-frequency electromagnetics: magnetostatics, eddy currents, induction and Joule heating, motors and transformers.
Its real strength is breadth inside one code — electromagnetics, heat, elasticity and acoustics all present, with coupled-field problems solved internally rather than through an external coupling layer. Driven by a readable .sif solver input file. One integration therefore covers a lot of ground, which is why it carries several SHD Sim module families at once.
SU2
CFD with adjoint shape optimisation · LGPL-2.1
Originating at Stanford, SU2 is a compressible-flow oriented CFD suite whose distinctive capability is a first-class adjoint implementation — both discrete and continuous. That makes gradient-based shape optimisation practical at a cost that does not scale with the number of design variables.
OpenFOAM has adjointOptimisationFoam as an alternative, less maturely. Where OpenFOAM is the broader general-purpose tool, SU2 is the one to reach for when aerodynamic shape design is the actual objective.
OpenRadioss
Explicit dynamics — crash, impact, drop test · AGPL-3.0
Altair open-sourced its Radioss explicit solver in 2022, putting a genuinely industrially validated crash code in the open for the first time. Automotive crash, drop test, blast and impact, with the strain-rate dependent material models and contact algorithms that class of work requires. See explicit dynamics for what that actually involves.
Note the licence: AGPL-3.0 carries obligations that differ from GPL for network-delivered services, which is worth checking against how you intend to deploy it.
openEMS and Palace
Radio-frequency electromagnetics · GPL-3.0 / Apache-2.0
The open-source names for high-frequency work — antennas, waveguides, filters, EMC. openEMS is a finite-difference time-domain solver; Palace, from AWS, is a finite-element solver aimed at electromagnetic device and quantum hardware design.
They are listed here for completeness and honesty rather than as a commitment. RF is a different discretisation, a different set of outputs — S-parameters and radiation patterns rather than torque — and a different audience from the low-frequency electromagnetics Elmer covers. It is on our list only if RF turns out to be genuinely wanted, and we would rather say that than imply a capability we have not committed to building well.
Geometry and meshing
Where most of the human effort in simulation actually goes, and the part that decides whether a solver ever gets a fair chance.
Open CASCADE (OCCT)
CAD geometry kernel — STEP, IGES, BREP · LGPL-2.1 with exception
The geometry kernel that makes real CAD usable. Polygon formats such as STL and OBJ describe a surface as triangles and lose the underlying shape; STEP, IGES and BREP carry the actual analytic surfaces, which is what you need to identify faces reliably, apply boundary conditions per patch, and mesh curvature properly. OCCT is what reads them, and it is the reason importing a supplier’s STEP file is a normal operation rather than a conversion exercise.
snappyHexMesh
Automatic hex-dominant meshing for CFD · GPL-3.0 (part of OpenFOAM)
OpenFOAM’s automatic mesher: it starts from a background block mesh, refines it towards your surfaces, snaps to them, and inserts boundary layers. It is capable and it is controlled by a dictionary with a great many interacting settings — refinement levels, feature edges, surface and volume refinement regions, and layer parameters that can silently fail to insert if the cells underneath are not suitable. Most CFD results that are wrong are wrong because of decisions taken here.
Netgen, SMESH and ElmerGrid
Finite element meshing for structural and EM · LGPL / GPL
Structural and electromagnetic analysis needs a different kind of mesh from CFD: tetrahedra and hexahedra with mid-side nodes for second-order elements, which snappyHexMesh cannot produce. Netgen and SMESH cover that FE meshing path, and ElmerGrid handles mesh preparation and partitioning for Elmer. This is a real prerequisite for the structural and electromagnetic modules rather than a detail — a solver is no use without a mesh it can accept.
Coupling
Not solvers, but the plumbing between them — and, as multiphysics work usually discovers, where a coupled setup goes wrong before either solver does.
MEDCoupling
Conservative field mapping between non-matching meshes · LGPL-3.0
Two physics rarely share a mesh — a CFD mesh is refined for boundary layers, a structural mesh around stress concentrations — so every exchange needs a field interpolated from one surface discretisation onto another. MEDCoupling does that conservatively, meaning the total force or heat handed over matches what was computed. It is all a one-way chain needs, and one-way chains answer more industrial questions than people expect.
preCICE
Two-way coupling between independent solvers · LGPL-3.0
A coupling library that orchestrates true two-way exchange: it handles data transfer, interpolation and the coupling iteration between codes that know nothing about each other, with adapters for OpenFOAM, code_aster and others. This is what genuine fluid–structure interaction needs, and OpenFOAM + code_aster is the realistic starting point because those are the two solvers the other modules already run.
Studies, optimisation and uncertainty
The layer that turns one solver run into an answer about a design space. Notably, the most valuable part of this needs no external dependency at all.
Native sweep and DoE layer
Parameter sweeps, design of experiments, the run matrix · Ours
Running the same case many times with different inputs and collecting the results is orchestration, not numerics — it needs no external tool, and it delivers most of the value of the whole studies category. Sweeps, DoE sampling and the run matrix are built in rather than delegated, which is also why they can arrive before the optimisation libraries below.
NLopt and pagmo
Derivative-free optimisation, in-process · LGPL / GPL-3.0
Optimisation algorithm libraries that need only the objective value, not a gradient — which suits simulation, where the response can be noisy, discontinuous or expensive. NLopt provides a broad set of local and global algorithms; pagmo adds parallel island models for population-based methods such as genetic algorithms. Both run in-process around the solver loop.
Dakota
Uncertainty quantification and calibration · LGPL-2.1
From Sandia National Laboratories, and the serious open-source tool for the questions beyond “what is the best design”: how much does the output move given scatter in the inputs, which parameters actually drive it, and how do you calibrate a model against measured data. This is the uncertainty side of studies, and it matters because an optimum that collapses within manufacturing tolerance is not an optimum.
Licences deserve a real look
These are free to use, and the licences still carry obligations that vary. GPL and LGPL differ in what linking your own code requires. AGPL — OpenRadioss — extends obligations to software delivered over a network, which is precisely the case for a hosted or SaaS deployment. If you plan to build on any of them commercially, that is a question for a lawyer rather than a forum post.
The other consideration is support. Nobody is contractually obliged to fix your problem. The communities around these codes are genuinely helpful and commercial support exists for several — but if your project needs somebody accountable when a solver misbehaves at two in the morning, price that in.
How SHD Sim uses them
SHD Sim is a desktop application built on these tools rather than a new solver. That is a deliberate position: writing a competitive CFD or structural code from scratch would take a decade and produce something less validated than what already exists.
Try it on your own geometry
SHD Sim is a desktop application: import geometry, mesh it, set the physics in panels, run it and get a report — without writing a solver dictionary by hand. The free tier runs real cases up to 250,000 cells of fluids, or 100,000 nodes of solid, with no account needed to download and no time limit.
Keep reading
- OpenFOAM and the case for a GUIWhy OpenFOAM is hard to start with, what a GUI legitimately fixes, and what it must not hide from you.
- What is CFD (computational fluid dynamics)?What the solver is doing, why the mesh and the turbulence model decide the answer, and how to tell a good result from a pretty one.
- How to choose simulation softwareThe questions that decide it: licensing, coverage, validation, meshing, hardware, and how hard it is to leave.
All guides · Written by the team building SHD Sim.