This is 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), on pratcical applications of the finite element method using the deal.II (www.dealii.org) library (roughly 20h course).
The goal of the course is to provide to the students advanced numerical tools for the solution of partial differential equations using the finite element methods, and state-of-the-art programming and best-practices knowledge for the implementation of their own codes.
The course enables 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:
- 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 MPI parallelisation works in a real life FEM applications
Course main page, with schedule and up to date information
Course slides, notes, materials, and codes:
Course recordings:
Doxygen documentation of the laboratories:
A tentative detailed program is shown below (this will be updated during the course to reflect the actual course content)
-
Tools and background
-
Working with VisualStudio code, docker, and github
-
Introduction to deal.II
-
General structure of a deal.II code (step-1/step-2)
-
Solving a Poisson problem using deal.II (step-3/step-4)
-
Construction of Manufactured solutions
-
Working on successively (uniformly) refined grids
-
Studying the convergence rates of FEM codes (step-5)
-
Hanging nodes constraints
-
Adaptive finite element methods in deal.II (step-6)
-
SOLVE-ESTIMATE-MARK-REFINE loop
-
Domain decomposition VS algebraic decomposition
-
Splitting workload: partitioning with space filling curves
-
Distributed memory parallelization (step-40)
-
Moving from serial Poisson to parallel distributed Poisson
-
Vector valued problems
-
Block Preconditioning
System | Status |
---|---|
Continous Integration | |
Doxygen | |
Indent |