(2016) Graduate Course taught with Frédéric Hecht at The Fields Institute:

An introduction to scientific computing using free software FreeFem++

 
This course provides a hands-on introduction to the foundations and implementation of numerical algorithms to solve various PDE problems in 1D/2D/3D domains with the finite element method. Each session contains a short theoretical presentation of the numerical method, directly followed by its implementation in the form of computer programs. The free software FreeFem++ (www.freefem.org) offers an ideal framework to start a scientific computing activity: all the technicalities of the finite-element implementation are hidden from the user and the syntax is very close to mathematical formulations. For advanced users, FreeFem++ allows to focus on numerical algorithms to solve complex problems. A graduate-level presentation of theoretical and technical aspects will enable a fast progress in mastering numerical methods and the software: from linear to non-linear PDEs, from 2D to 3D problems, from sequential to parallel computing. A large variety of PDEs will be addressed: heat and wave equation, problems arising in linear elasticity, Stokes and Navier-Stokes-Boussinesq systems, etc.
 
The sessions of the second week will be followed by short technical presentations of complex problems solved with FreeFem++: Navier-Stokes-Boussinesq equations for phase-change materials, Schrodinger equation for Bose-Einstein condensates, fluid-structure interaction.
 
Instructors: Prof I. Danaila (University of Rouen, France), Prof F. Hecht (University Pierre et Marie Curie, France)
 
Features: Theory and Examples, Computer Implementation.
 
Prerequisites: basic programming skills, elementary calculus. Participants are advised to bring their laptops.
 

Week 1: Introduction and basic notions: solving 2D linear and non-linear PDEs

Download the pdf of the slides for Week 1

Week 2: Advanced notions: non-linear PDEs, 3D domains, parallel computing

Download the pdf of the slides for Week 2

Download ALL programs

 
Problems solved with FreeFem++. General presentation of the software.
puce Abstract:
puce general presentation of FreeFem++,
puce install FreeFem++ on each computer,
puce examples of problems solved with FreeFem++,
puce test of examples from the documentation of the software.
puce Course files:
puce Slides (pdf) for Course 1 to Course 4.
puce Programs for Course 1 and Course 2.

 
Building a finite-element triangular mesh
puce Abstract:
puce building a 2D finite element mesh,
puce identify boundaries,
puce identify subdomains,
puce define finite-element spaces.
puce Course files:
puce Slides (pdf) for Course 1 to Course 4.
puce Programs for Course 1 and Course 2.

 
Solving the 2D Poisson/Laplace problem
puce Abstract:
puce weak formulation of the Poisson problem,
puce solving the problem, visualize the solution,
puce convergence of the method,
puce boundary conditions.
puce Course files:
puce Slides (pdf) for Course 1 to Course 4.
puce Programs for Course 3.

 
Solving stationary or time-dependent linear PDEs in 2D domains
puce Abstract:
puce solving the steady heat equation with various BC,
puce solving the steady heat equation in complex domains,
puce solving the time-dependent heat equation,
puce solving the wave equation.
puce Course files:
puce Slides (pdf) for Course 1 and Course 4.
puce Programs for Course 4.

 
From linear to non-linear PDEs
puce Abstract:
puce solving the linear elasticity problem (vectorial FE spaces),
puce solving the non-linear problem of the minimal surface (Newton method).
puce Course files:
puce Slides (pdf) for Course 5 to Course 8.
puce Programs for Course 5.

 
Advanced notions and tricks
puce Abstract:
puce matrix formulation and optimization of programs,
puce mesh adaptivity.
puce Course files:
puce Slides (pdf) for Course 5 to Course 8.
puce Programs for Course 6.

 
Incompressible Fluid Dynamics
puce Abstract:
puce solving the convection equation,
puce solving the Stokes and Navier-Stokes equations.
puce Course files:
puce Slides (pdf) for Course 5 to Course 8.
puce Programs for Course 7.

 
Soving 3D problems, eigenvalue problems, parallel computing
puce Abstract:
puce solving the eigenvalue problem (2D and 3D),
puce moving boundaries, parallel computing.
puce Course files:
puce Slides (pdf) for Course 5 to Course 8.
puce Programs for Course 8.