FEM Solver

Preface
This page collects information on the finite element solvers used by the FEM Workbench. The interface between a solver and FreeCAD in pre-processing as well as post-processing is done through text files. This means that in theory any solver which can be configured and controlled by means of text files is able to work together with FreeCAD; a proper parser and writer of input and output files needs to be programmed for this communication to work.

Available solvers in various Linux distributions
The FreeCAD-dependencies repository tracks the dependencies of FreeCAD across many Linux distribution. The FEM.md page looks at available open source FEA solvers that could be used with the FEM Workbench. The page shows the version of a particular solver in the repository of a particular Linux distribution. This information is useful to know if a solver is current, or out of date and must be upgraded.

The information is also discussed in the forum: supported and not supported Solver.

Solvers with an interface in FreeCAD
These solvers are well integrated into FreeCAD, which means that it's possible to set up and run a simulation project from the graphical interface and buttons in the FEM Workbench.

CalculiX
This is the first solver that was integrated to work with the FEM Workbench. CalculiX is designed principally for static, thermo-mechanical, and modal analyses. More information about this solver is in FEM CalculiX.

Elmer
The Elmer multiphysics solver was integrated into FreeCAD as a Google Summer of Code 2017 project: main website, community portal, code repository, Elmer Integration (GSoC) - Activity Log (forum thread).

Z88
The Z88 solver is designed for linear static simulations with an emphasis in teaching about the finite element method. It was integrated into FreeCAD as a Google Summer of Code 2017 project: main website, download page, source code repository (and precompiled binaries). See the release notes for the latest versions: Z88os V15 released 17.07.2017, Z88os V13 released 20.05.2009 (version in Debian Jessie 8, Stretch 9, Buster 10).
 * How to use Z88 in FEM? (forum thread).

Solvers implemented as external workbenches
These solvers aren't integrated into the FEM Workbench, which means they need a separate interface to set up a simulation project. This is achieved through macros or external workbenches.

OpenFoam
OpenFoam is a powerful framework for computational fluid dynamics (CFD) simulation, distributed as a series of C++ libraries.

OpenFoam is available in FreeCAD through two external workbenches:
 * Cdf, originally by Qingfeng Xia.
 * CfdOF, a fork of Cdf focusing on ease of use.

While Cfd is intended to be feature-complete for advanced users, CfdOF focuses on users that are just starting in the world of CFD and OpenFoam. Both projects collaborate when necessary, borrowing the best ideas from each other.

For CfdOF: Computational Fluid Dynamics (CFD) workbench using OpenFOAM (forum thread), training material.

Both workbenches can be installed through the AddonManager, and both have a place for discussion in the CfdOF / CFD subforum.

DualSPHysics
DualSPHysics is a set of C++, CUDA, and Java libraries that use the smoothed particle hydrodynamics (SPH) model named SPHysics to study free-surface flow phenomena such as crashing waves.

DesignSPHysics is an external workbench built into FreeCAD that provides a graphical user interface for DualSPHysics: main website, code repository, Interesting project: DesignSPHysics fluid simulator (forum thread).

DesignSPHysics can be installed through the AddonManager.

FEniCS
FEniCS is a computing framework for solving partial differential equations (PDEs), with high-level programming interfaces in Python and C++. It can be used to establish scientific problems in finite element formulations that can be solved.

See main website, Fenics as Solver (forum thread).

Solvers not integrated
The following solvers have not been integrated into FreeCAD but they have garnered some interest by the user community. If a developer wishes to create a communication bridge for their particular package, he or she should refer to the FEM subforum for advice.

Wikipedia lists many finite element software packages that potentially could be made to work with FreeCAD in the future.

Agros2D
Agros2D is a multiplatform graphical program designed for solving different physical problems. Internally it uses the Hermes C++ libraries for the solution of simple and complex time-dependent nonlinear partial differential equation (PDE) systems.

Code-Aster
Code-Aster is a multiphysics solver part of the Salomé-Meca simulation platform developed by EDF-GDF, France's biggest energy company. It was an early package considered for inclusion in FreeCAD: FreeCAD and Code-Aster/Salome-Meca (forum thread).

FElt
FElt is a finite element package to solve linear static and dynamic structural analysis problems. The original code is outdated, so it was forked to a new repository to revive the project and make it compile in a modern system.

It was suggested in the forums to perform reinforced concrete frames analysis (beam and column assemblies) using 1D beam elements: Automation in Design, Felt in FEM Workbench.

Frame3DD
Frame3DD is a software package for static and dynamic structural analysis of 2D and 3D frames and trusses, main repository. A preliminary reader for input files was announced in the forums: Test read data from Frame3DD file.

Impact FEM

 * http://www.impact-fem.org/ (broken link)

Modelica
Modelica is a language to model and optimize complex, and interconnected physical systems, for example, mechanical, electrical, thermal, hydraulic, and others. The language itself and its standard libraries are open source. Some simulation environments based on Modelica, like Catia's Dymola, are proprietary, but there are also free implementations like OpenModelica and JModelica.

With FreeCAD, Modelica was suggested to help perform animations, but more broadly it could be used in mechanical and building engineering to solve equations and optimize a particular design: Modelica (forum thread).

The PyFMI package contains Python bindings to work with FMU models, which are standardized models in binary format produced by compliant Modelica environments, including Dymola, OpenModelica, and JModelica. It was suggested that this library could help FreeCAD connect to a Modelica system (forum post).

Mumps
Mumps is a generic solver for massive systems of equations, which generally deals with factorizing and operating on sparse matrices. It was mentioned in the forum: test request, multiple solvers.

It does not perform finite element analysis directly, but it may be used internally by other packages like Code-Aster.

Nastran
Nastran is an old structural analysis program developed by NASA in the 1970s. It was formerly closed source, but versions of it, Nastran-93 and Nastran-95 were released as open source in 2015. Forum post: Nastran.

There is no technical support for the code, and it is probably difficult to compile in a modern system.

OOFEM
OOFEM is an object oriented FEM program by the Czech Technical University, for solving mechanical, transport and fluid mechanics problems. Forum post: test request, multiple solvers.

OpenSees
OpenSees is a software framework for developing applications to simulate structural and geotechnical systems mainly in the field of earthquake engineering.

Technog
Technog Professional is a closed source program to perform geotechnical simulations such as landslides, driving piles, slope stability, and civil engineering calculations (masonry and earthquake response).

Technog was successfully used in FreeCAD as a substitute of CalculiX, although the trial version is limited in the number of elements it can handle: Integration of tochnog solver in FreeCAD FEM (forum thread).

XC
XC is a FEA program designed to solve structural problems in civil engineering like real beam shell analysis. Internally it uses the OpenSees libraries: main repository, XC, opensource structural engineering FEM code (forum thread).