This is a shared course between the SISSA PhD track

on Mathematical Analysis, Modeling, and Applications

(math.sissa.it) and the Master in High Performance Computing

(www.mhpc.it). It is a course that follows two parallel lines:

theory of finite element methods (graduate students level, ~20 hours) and

practice of finite element methods (mhpc students levels, ~20 hours).

The goal of the course is to provide to the students advanced

analysis tools for finite element methods, as well as

state-of-the-art programming knowledge for the actual implementation part.

The theory ranges from basic FEM and functional analysis arguments, like

Lax-Milgram, Cea, and Bramble Hilbert lemmas, to more advanced topics,

like inf-sup conditions and a-posteriori error analysis.

The goal of the practice part is to enable a PhD or MHPC student working on

numerical analysis of PDEs to implement a state-of-the-art adaptive finite

element code, that runs in parallel, using modern C++ libraries. The

implementation will be based on the `deal.II` library (www.dealii.org).

What you will learn:

- Advanced Finite Element theory
- How to use a modern C++ IDE, to build and debug your codes
- How to use a large FEM library to solve complex PDE problems
- How to properly document your code using Doxygen
- How to use a proper Git workflow to develop your applications
- How to leverage GitHub actions, google tests, and docker images to test and deploy your application
- How hybrid parallelisation (threads + MPI + GPU) works in real life FEM applications

Useful links

Course classroom on GitHub (for assignments/exercises)

Course slides, notes, materials, and codes:

Course recordings:

Implementation will be done using the deal.II library (www.dealii.org).