In this post we will briefly discuss the main features of various different projects and libraries, hopefully helping you decide which project suits your needs best.
Commercial vs Open-Source Simulation Software
Whenever I take part in teaching a Numerical Analysis class, where we go over the fundamentals of Finite Element Methods, the question of which software to use arises very naturally. The discussion that follows is based on three basic considerations:
- In real applications, very few people write FEM code from scratch anymore.
- Commercial FEM software is usually very easy to use in some predefined cases, but potentially obscure to customize, and very hard to integrate with external tools.
- Open-Source FEM software is reaching a high level of maturity, but it is generally harder to use than their commercial counterparts.
I have discussed this kind of trade-offs in much more detail in this post. Beware that, while open-source offers great long-term value for end-users, there are challenges in making a high-quality open-source scientific software project widely viable beyond academic use.
That being said, let’s go over the main open-source projects for Finite Element Analysis that I am aware of, and which seem to be under active development.
This list is by no means exhaustive. If you known about an important and actively developed project, please contact me and I will include the relevant information here.
Elmer is a GPL-licensed multiphyiscs solver based on the Finite Element Method. It includes modules for fluid dynamics, structural mechanics, electromagnetics, heat transfer, acoustics, and others.
The project includes a graphical user interface (ElmerGUI) which is capable of importing meshes in various file formats, set up a PDE system, and exporting the model data and results. Postprocessing is done via Paraview.
The FeniCS project is centered around the numerical solution of Partial Differential Equations (PDE) with the Finite Element Method (FEM). As such, it covers numerous applications ranging from thermomechanics to electromagnetics.
While meshing is performed in third-party libraries such as Gmesh, FeniCS offers high-level Python and C++ interfaces to make the definition and solution of the problem straightforward. Models can be prototyped in workstations or laptops, and later run in clusters with ease.
FreeFEM is a library for multi-physics simulation via the Finite Element Method. It includes pre-built physics modules like Navier-Stokes, Linear and Non-Linear Elasticity, thermodynamics, magnetostatics and electrostatics, and fluid-structure interaction.
It also includes its own scripting language to implement new physics modules. It contains its own mesh generation routines, and is also compatible with other open-source tools like Gmsh and Paraview.
Code-Aster: Structural and Thermomechanic Analysis
The Code-Aster project, and its associated Salome-Meca software suite was developed by Electricité de France R&D, and in colaboration with Universities and industry. It focuses on solid mechanics, including
thermal and mechanical behavior of linear and non-linear materials, and supports static and dynamic analysis. Application areas include fatigue, damage, fracture, and contact mechanics. It also contains modules for geomaterials, porous media, and multi-physics coupling,
The project is used operationally by EDF to justify the lifetime of numerous components and materials used in the nuclear field. As such, it can be applied to analyze machines, pressure vessels and civil engineering structures.
The code is GPL-licensed, and it includes a GUI.
OpenFOAM: Computational Fluid Dynamics
OpenFOAM is a GPL-licensed project centered around Computational Fluid Dynamics (CFD). CFD involves several families of numerical methods, including, but not limited to, Finite Element Methods.
CFD covers a range of scientific and engineering applications. In particular, it is used in many applications that involve heat, thermodynamics, chemistry and solids, such as engines, heat exchangers, electronics cooling, combustion, and so forth.
The software includes its own modules for mesh generation of simple or complex geometries. Post-processing is done via a GUI based on ParaView. Defining a problem and a geometry, on the other hand, is done via scripting.