GetFem++ : finite element C++ library interfaced with scilab-python and matlab

This software was developed (or is under development) within the higher education and research community. Its stability can vary (see fields below) and its working state is not guaranteed.
Higher Edu - Research dev card
  • Creation or important update: 13/02/10
  • Minor correction: 09/01/13
  • Index card author: Yves Renard (ICJ)
  • Theme leader: Dirk Hoffmann (Centre de Physique des Particules de Marseille (CPPM-IN2P3))
General software features

Getfem++ is basically a generic C++ finite element library which aims to offer the widest range of finite element methods and elementary matrix computations for the approximation of linear or non-linear problems, possibly in hybrid form and possibly coupled. The dimension of the problem is arbitrary and may be a parameter of the problem. Getfem++ offers a description of models in the form of bricks whose objective is to enable reusability of the approximations made. The system of bricks, now mature, is used to assemble components such as standard models (elasticity in small and large deformations, Helmholtz problem, scalar elliptic problem ...) to components representing the boundary conditions (Neumann, Dirichlet, Fourier-Robin, contact, friction...), also to components representing constraints (incompressibility, removing rigid motions ...) and to coupling components for coupled models.

Two strong points of Getfem++ are structural mechanics (in particular contact mechanics) and taking into account discontinuities by fictitious domain methods of XFEM type (eg cracking).

It is proposed three interfaces (with Scilab, Matlab and Python) that allow to use of the main features of the software without the need of C++ programming and allowing graphical post-processing.

Getfem++ offers a complete separation between the integration methods (exact or approximated), geometric transformations (linear or not) and finite element methods of arbitrary degree. The library can help to write more integrated finite element codes in relieving the basic technical calculations.

Examples of families of finite elements available are: Pk on simplices of arbitrary degree and dimension, Qk on parallelepipeds, P1, P2 with bubble functions, Hermite elements, Argyris element, HCT and FVS, elements with hierarchical basis (for multigrid methods for instance), discontinuous Pk and Qk, XFEM methods, vector elements (RT0, Nédélec) ...

The addition of a new finite element method is relatively easy. A description on the reference element must be provided (in most cases it is the description of the basic functions and nothing more). Extensions are provided to describe Hermite elements, piecewise polynomial or non-polynomial elements, vector elements and XFEM.

The library also includes the usual tools for finite elements such as assembly procedures for classical PDEs, interpolation methods, the calculation of norms, mesh operations (including automatic refinement), management of boundary conditions, post-treatment with a tool to make arbitrary cuts ...

Getfem++ can be used to construct very generic finite element codes, where finite element methods, integration methods and the dimension of the problem are the parameters that can be changed very easily. This allows a wide range of experiments. Many examples are provided.

Getfem++ has no meshing capabilities (with the exception of the regular mesh generation and also a small attempt not yet usable). It is therefore necessary to import meshes. The formats currently supported are GID, GMSH and EMC2.

Context in which the software is used

Getfem++ is a laboratory for finite element methods which allows to build very quickly some new methods and allows to test a wide field of applications and types of basic elements.
The brick system also allows to build at a lower cost approximation of linear or non linear complex PDE systems needed for instance by the modeling of multiphysics problems. The main feature of the library is available via the Scilab, Python or Matlab interfaces.

Publications related to software

Personal publications linked to Getfem :

Example of publication from a Getfem user :
A. Andreykiv, D. J. Rixen, Numerical modelling of electromechanical coupling using fictitious domain and level set methods. Int. J. Numer. Meth. Engng 2009 (