Overview of existing finite element software

Learn what are the main finite element software on the market. And how they differ from one another.

The task of choosing a finite element analysis software may be daunting. With a large choice of solvers upon us, it is tedious to find out which one is the best suited to our needs. This article aims at giving an overview of the similarities, differences and pros and cons of each software available. It will mainly discuss finite element software from a structure and mechanics point of view.

A simple example

Finite element analysis has been around for about 50 years (Nastran was first released in 1968). At its core, it is simply a method to solve partial differential equations on complex multidimensional domain on which solutions are not known in closed form. The domain has to be meshed, and then the method tries to solve the problem over this meshed domain. To be more concrete, let’s say we want to compute the vertical deflection \(w\) of a cantilever beam under a tip force loading:

Beam bending example

Where :

  • \(E\) is the Young’s modulus of the beam material,
  • \(I\) is the area moment of inertia,
  • \(F\) is the applied tip load.

From the classical beam theory, this problem can be modelized as a one-dimensional problem and is governed by the following differential equation:

$$ EI\frac{d^4w}{dx^4}= 0 $$

Under the following boundary conditions:

  • \( w\big|_{x=0} = 0 \)

  • \( \frac{dw}{dx}\big|_{x=0} = 0 \)

  • \( \frac{d^2w}{dx^2}\big|_{x=L} = 0 \)

  • \( \frac{d^3w}{dx^3}\big|_{x=L} = \frac{-F}{EI} \)

To apply the finite element method, the beam is first meshed as multiple elements that define the beam domain.

Beam finite element simplification

Finite element method aims at translating the differential equation over the continuous beam domain (plus boundary conditions) as a discrete matrix vector equation over each node of the mesh:

$$ \lbrack K \rbrack \lbrace X \rbrace = \lbrace F \rbrace $$


  • \(\lbrace X \rbrace\) is the vector of displacements at the nodes,

  • \(\lbrace F \rbrace\) is the vector of nodal forces,

  • \(\lbrack K \rbrack\) is the stiffness matrix.

Of course, this example problem does not need finite elements to be solved because of its simplicity. However, as the domain gets bigger and modelization more complex, no solution can be derived in closed form, and finite element procedure may be used to solve such problems.

Several kinds of software

From finite element beginning, many improvements and features have been added to the different solvers. Moreover, as time passed, some common patterns have merged among them. The software available today can be split among two groups: “high level” software on one side and “low-level” software on the other side. The high-level software hide some details to the user for the sake of efficiency. While the low-level software allow him to finely tune the problem he tries to solve.

High level finite element software

High-level finite element software includes names and brands that are famous in the field: Nastran, Ansys, Abaqus, Comsol and many others. These solutions are the ones that are widely used in the industry. They try to speak at best the language of a structural engineer to allow him to design and simulate product behaviors quickly.

Going back to our equation, the software will ask the user for a mesh, beam geometrical characteristics, material characteristics, the load and the boundary conditions. The user does not need to provide the equation as it is prebuilt in the software.

The goal of such software is to hide the governing equation from the user to allow him to focus on physical modelization of its problem. Of course, it is still possible to have some control over the underlying equation, but it is always a choice made among predefined ones. This choice is commonly known as the choice of element “behavior” the user should apply on a given mesh. For instance, in the case of our beam, we could choose an element that respects the classical (thin-)beam theory or another one that respects Timoshenko (thick-)beam theory. Such elements behaviors are known to behave well under specific hypothesis. Moreover, the user can use them without having to worry about their low-level implementation.

High-level software are geared towards ease of use and mask the physically irrelevant details to the users. They offer many features:

  • resolution type (static, dynamic, non-linear, …),

  • material laws (elastic, elastoplastic, hyperelastic, composites, …),

  • different kinds of loading (inertia, pressure, point, …),

  • different types of boundary conditions (clamped, contact, …),

  • many elements that can represent multiple equations (beam, membrane, shell, 3D solid, axisymmetric, …).

  • And many others.

More recently they have developed massively in multiphysics simulations allowing the user to couple multiple fields in the same run (fluid and structure for instance). Furthermore, such software are made to handle large and complex model assembly such as planes, jet engines or cars.

In addition to the solver itself, most vendors also sell pre and post-processing software to interact with the finite element model. For instance Patran/Apex for MSC Nastran, Abaqus CAE, Ansys Workbench. The goal is to provide the user a complete software suite for design and modelization.

However, high-level finite element software suffer some drawbacks. Even though they are powerful, they may lack simplicity. Due to past technical reasons that are no longer relevant today, they can be counter intuitive to use. It is mostly a matter of taste and industry which lead to one solution or the other.

We can shed some light over Comsol as it is a bit different from the others. Although it provides high-level features, it also allows the user to define the equations he wants to solve and bundle them as predefined choices that can be used while associating element behaviors to the mesh. It is, therefore, possible to solve any problem as long as we can modelize it with a bunch of equations.

To conclude, most of high-level software are commercial ones but some are not. We can mention for instance Code Aster which is probably the most impressive free finite element software. It has proved to be reliable in industrial context specifically at EDF. Code Aster has many features that are still lacking in some commercial software.

Low level finite element software

Finally, the second group of software is made of low-level ones. They are not well known by structural engineers as they are more suited to research project since they allow the user to have granular control over the equations solved and the finite element solving procedure.

They speak a language that is more “mathematical” than “engineering”. They are low level because they do not focus on predefined element behaviors (as the beam element from our example). It is up to the user to define entirely the equations he wants to solve from the parameters that he chooses to be relevant.

Furthermore, most of them do not cover a large bunch of capabilities but focus on more deeper concerns that are critical to solve some niche problems efficiently. For instance, Hermes2D focuses on hp finite element method that allows exponential convergence rate; GetFEM++ focuses on contact modeling and discontinuities such as crack; MFEM focuses on arbitrary high-order finite elements; Deal.II focus on heavily parallelized solution procedure (10000 processors and more).

Most of such software are free and available as a library which can be used as basic blocks to build a complete finite element analysis software. They do not provide their own pre and post-processor solutions but rely mainly on open source ones such as Gmsh, Paraview or Salome.


When you face a new software, it can sometimes be hard to find out which group it belongs to. A good rule of thumb is having a close look at the name. If it contains “FE” or “FEM” (like MFEM, OpenFem, …) guesses are it is a low-level finite element software. In other cases, you will find your answer from their documentation.

I hope this overview gave you a clearer vision of the finite element software world. My advice would be for you to look among the high-level software if you want to solve well known physical phenomenon (typically if you are a structural engineer). If your work focuses on some intricate physical modelizations (like it is often the case in research), my advice would be to have a look at low-level software.

I hope you enjoy reading and do not hesitate to share your thoughts or personal experience about it!

Did you like this content?

Register to our newsletter and get notified of new articles