Contents

1 Introduction
 1.1 Installation
  1.1.1 Installation from sources
  1.1.2 Windows binaries install
  1.1.3 MacOS X binaries install
 1.2 How to use FreeFem++
 1.3 Environment variables, and the init file
 1.4 History
2 Getting Started
  2.0.1 FEM by FreeFem++ : how does it work?
  2.0.2 Some Features of FreeFem++
 2.1 The Development Cycle: Edit–Run/Visualize–Revise
3 Learning by Examples
 3.1 Membranes
 3.2 Heat Exchanger
 3.3 Acoustics
 3.4 Thermal Conduction
  3.4.1 Axisymmetry: 3D Rod with circular section
  3.4.2 A Nonlinear Problem : Radiation
 3.5 Irrotational Fan Blade Flow and Thermal effects
  3.5.1 Heat Convection around the airfoil
 3.6 Pure Convection : The Rotating Hill
 3.7 A Projection Algorithm for the Navier-Stokes equations
 3.8 The System of elasticity
 3.9 The System of Stokes for Fluids
 3.10 A Large Fluid Problem
 3.11 An Example with Complex Numbers
 3.12 Optimal Control
 3.13 A Flow with Shocks
 3.14 Classification of the equations
4 Syntax
 4.1 Data Types
 4.2 List of major types
 4.3 Global Variables
 4.4 System Commands
 4.5 Arithmetic
 4.6 One Variable Functions
 4.7 Functions of Two Variables
  4.7.1 Formula
  4.7.2 FE-function
 4.8 Arrays
  4.8.1 Arrays with two integer indices versus matrix
  4.8.2 Matrix construction and setting
  4.8.3 Matrix Operations
  4.8.4 Other arrays
 4.9 Loops
 4.10 Input/Output
 4.11 Exception handling
5 Mesh Generation
 5.1 Commands for Mesh Generation
  5.1.1 Square
  5.1.2 Border
  5.1.3 Data Structure and Read/Write Statements for a Mesh
  5.1.4 Mesh Connectivity
  5.1.5 The keyword ”triangulate”
 5.2 Boundary FEM Spaces Built as Empty Meshes
 5.3 Remeshing
  5.3.1 Movemesh
 5.4 Regular Triangulation: hTriangle
 5.5 Adaptmesh
 5.6 Trunc
 5.7 Splitmesh
 5.8 Meshing Examples
 5.9 How to change the label of elements and border elements of a mesh in FreeFem++ ?
 5.10 Mesh in three dimension
  5.10.1 Read/Write Statements for a Mesh in 3D
  5.10.2 TeGen: A tetrahedral mesh generator
  5.10.3 Reconstruct/Refine a three dimensional mesh with TetGen
  5.10.4 Moving mesh in three dimension
  5.10.5 Layer mesh
 5.11 Meshing examples
  5.11.1 Build a 3d mesh of a cube with a ballon incrustation
 5.12 Write solution at the format .sol and .solb
 5.13 Call medit with the keyword medit
6 Finite Elements
 6.1 Lagrange finite element
  6.1.1 P0-element
  6.1.2 P1-element
  6.1.3 P2-element
 6.2 P1 Nonconforming Element
 6.3 Other FE-space
 6.4 Vector valued FE-function
  6.4.1 Raviart-Thomas element
 6.5 A Fast Finite Element Interpolator
 6.6 Keywords: Problem and Solve
  6.6.1 Weak form and Boundary Condition
 6.7 Parameters affecting solve and problem
 6.8 Problem definition
 6.9 Numerical Integration
 6.10 Variational Form, Sparse Matrix, PDE Data Vector
 6.11 Interpolation matrix
 6.12 Finite elements connectivity
7 Visualization
 7.1 Plot
 7.2 link with gnuplot
 7.3 link with medit
8 Algorithms
 8.1 conjugate Gradient/GMRES
 8.2 Optimization
9 Mathematical Models
 9.1 Static Problems
  9.1.1 Soap Film
  9.1.2 Electrostatics
  9.1.3 Aerodynamics
  9.1.4 Error estimation
  9.1.5 Periodic
  9.1.6 Poisson with mixed boundary condition
  9.1.7 Poisson with mixte finite element
  9.1.8 Metric Adaptation and residual error indicator
  9.1.9 Adaptation using residual error indicator
 9.2 Elasticity
  9.2.1 Fracture Mechanics
 9.3 Nonlinear Static Problems
  9.3.1 Newton-Raphson algorithm
 9.4 Eigenvalue Problems
 9.5 Evolution Problems
  9.5.1 Mathematical Theory on Time Difference Approximations.
  9.5.2 Convection
  9.5.3 2D Black-Scholes equation for an European Put option
 9.6 Navier-Stokes Equation
  9.6.1 Stokes and Navier-Stokes
  9.6.2 Uzawa Conjugate Gradient
  9.6.3 NSUzawaCahouetChabart.edp
 9.7 Variational inequality
 9.8 Domain decomposition
  9.8.1 Schwarz Overlap Scheme
  9.8.2 Schwarz non Overlap Scheme
  9.8.3 Schwarz-gc.edp
 9.9 Fluid/Structures Coupled Problem
 9.10 Transmission Problem
 9.11 Free Boundary Problem
 9.12 nolinear-elas.edp
 9.13 Compressible Neo-Hookean Materials: Computational Solutions
  9.13.1 Notation
  9.13.2 A Neo-Hookean Compressible Material
  9.13.3 An Approach to Implementation in FreeFem++
10 Parallel version experimental
 10.1 Schwarz in parallel
11 Mesh Files
 11.1 File mesh data structure
 11.2 bb File type for Store Solutions
 11.3 BB File Type for Store Solutions
 11.4 Metric File
 11.5 List of AM_FMT, AMDBA Meshes
12 Add new finite element
 12.1 Some notation
 12.2 Which class of add
A Table of Notations
 A.1 Generalities
 A.2 Sets, Mappings, Matrices, Vectors
 A.3 Numbers
 A.4 Differential Calculus
 A.5 Meshes
 A.6 Finite Element Spaces
B Grammar
 B.1 The bison grammar
 B.2 The Types of the languages, and cast
 B.3 All the operators
C Dynamical link
 C.1 A first example myfunction.cpp
 C.2 Example Discrete Fast Fourier Transform
 C.3 Load Module for Dervieux’ P0-P1 Finite Volume Method
 C.4 Add a new finite element
 C.5 Add a new sparse solver
D Keywords