Documentation
The fruit of a long maturing process, freefem, in its last avatar, FreeFEM , is a high level integrated development environment (IDE) to solve numerically systems of partial differential equations (PDE) in dimension 1,2 3 and surfaces embedded in a 3D domain and lines embedded in a 2D or 3D. It is the ideal tool for teaching the finite element method but it is also perfect for research to quickly prototype and test new algorithmic ideas or solve multi-physics complex applications.
FreeFEM has an advanced automatic mesh generator, capable of a posteriori mesh adaptivity; it has a general purpose elliptic solver interfaced with fast algorithms, such as the multi-frontal method UMFPACK, SuperLU, MUMPS etc. Hyperbolic and parabolic problems are solved by iterative algorithms prescribed by the user with the high level language of FreeFEM. It has several triangular or tetraedral finite elements, including discontinuous elements. Everything is there in FreeFEM to prepare research quality reports with online color display, zooming and other features as well as postscript printouts, from within or using an external application like paraview.
This manual is meant for students at a Masters level or more, for researchers at any level, and for engineers (including financial engineering) with some understanding of variational methods for partial differential equations.
Introduction
A partial differential equation is a relation between a function of several variables and its (partial) derivatives. Many problems in physics, engineering, mathematics and even banking are modeled by one or several partial differential equations.
FreeFEM is a software to solve these equations numerically, based on the Finite Element Method. As its name implies, it is a free software (see the copyrights for full detail) it is not a package, it is an integrated product with its own high level programming language, referred below as a :index freefem script. This software runs on all UNIX OS (with g++ 3.3 or later, and OpenGL), on Window XP, Vista and 7, 8, 10 and 11 and on MacOS 10 intel and arm.
Moreover FreeFEM is highly adaptive. Many phenomena involve several coupled systems, such as: Fluid-structure interactions, Lorentz forces for aluminum casting and ocean-atmosphere problems, etc. These require different finite element approximations and polynomial degrees, possibly on different meshes. Some algorithms like the Schwarz’ domain decomposition method also requires data interpolation on multiple meshes within one program. FreeFEM can handle these difficulties, i.e. arbitrary finite element spaces on arbitrary unstructured and adapted bi and three dimensional meshes.
The characteristics of FreeFEM are:
Problem description (real or complex valued) by their variational formulations, with access to the internal vectors and matrices if needed.
Multi-variables, multi-equations, bi and three-dimensional static or time dependent, linear or nonlinear coupled systems; however the user is required to describe the iterative procedures which reduce the problem to a set of linear problems.
Easy geometric input by analytic description of boundaries by pieces; however this part is not a CAD system; for instance when two boundaries intersect, the user must specify the intersection points.
Automatic mesh generator, based on the Delaunay-Voronoi algorithm; the inner point density is proportional to the density of points on the boundaries [GEORGE1996].
Metric-based anisotropic mesh adaptation. The metric can be computed automatically from the Hessian of any FreeFEM function [HECHT1998].
High level user friendly typed input language with an algebra of analytic and finite element functions.
Multiple finite element meshes within one application with automatic interpolation of data on different meshes and possible storage of the interpolation matrices.
A large variety of triangular finite elements: linear, quadratic Lagrangian elements and more, discontinuous P1 and Raviart-Thomas elements, elements of a non-scalar type, the mini-element,… (but no quadrangles).
Tools to define discontinuous Galerkin finite element formulations P0, P1dc, P2dc and keywords: jump, mean, intalledges.
A large variety of linear direct and iterative solvers (LU, Cholesky, Crout, CG, GMRES, UMFPACK, MUMPS, SuperLU, …) and eigenvalue and eigenvector solvers (ARPARK) .
Near optimal execution speed (compared with compiled
C++
implementations programmed directly).Online graphics, generation of ,.txt,.eps,.gnu, mesh files for further manipulations of input and output data.
Many examples and tutorials: elliptic, parabolic and hyperbolic problems, Navier-Stokes flows, elasticity, fluid structure interactions, Schwarz’s domain decomposition method, eigenvalue problem, residual error indicator, …
A parallel version using MPI
- Notations
- Mesh Generation
- The type mesh in 2 dimension
- The type mesh3 in 3 dimension
- The type meshS in 3 dimension
- The type meshL in 3 dimension
- Read/Write Statements for meshes
- Medit
- Mshmet
- FreeYams
- mmg3d
- A first 3d isotrope mesh adaptation process
- Build a 2d mesh from an isoline
- Finite element
- List of the types of finite elements
- Use of fespace in 2D
- Use of fespace in 3D
- Use of fespace in surface 3D
- Finite Element functions
- Lagrangian Finite Elements
- Surface Lagrangian Finite Elements
- P1 Nonconforming Element
- Other FE-space
- Vector Valued FE-function
- A Fast Finite Element Interpolator
- Keywords: Problem and Solve
- Parameters affecting solve and problem
- Problem definition
- Numerical Integration
- Variational Form, Sparse Matrix, PDE Data Vector
- Interpolation matrix
- Finite elements connectivity
- Visualization
- Algorithms & Optimization
- Parallelization
- PETSc and SLEPc
- The Boundary Element Method
- Composite finite element spaces NEW!
- Plugins
- Developers
- ffddm
- Domain Decomposition (DD)
- ffddm documentation
- Parameters
- Tutorial
- What is ffddm ?
- Why Domain Decomposition Methods ?
- Summary so far: translating your sequential FreeFEM script
- Define a two level DD preconditioner
- Build the GenEO coarse space
- Build the coarse space from a coarse mesh
- Use HPDDM within ffddm
- Some results: Heterogeneous 3D elasticity with GenEO
- Some results: 2-level DD for Maxwell equations, scattering from the COBRA cavity
- Some results: 2-level DD for Maxwell equations, scattering from the COBRA cavity
- Examples