Courses
- “Numerical methods for Partial Differential Equations” is active on even academic years (i.e., 2024/2025, 2026/2027), spring semester
- “Numerical Methods for Optimal Control” is active on odd academic years (i.e., 2025/2026, 2027/2028), spring semester
- “High Performance Solutions of Partial Differential Equations” is active even academic years (i.e., 2024/2025, 2026/2027)
- “An introduction to scientific software tools and parallel algorithms” is active even academic years (i.e., 2024/2025, 2026/2027)
- “Calcolo Numerico” is active every academic year (2nd year bachelor degree in Energy Engineering), spring semester
Numerical Methods for Partial Differential Equations
This course offers a comprehensive exploration into the numerical solution of Partial Differential Equations (PDEs), with a special emphasis on Finite Element Methods (FEMs).
The curriculum explores the construction of Finite Element Spaces and polynomial approximation theory in Sobolev Spaces, to establish classical convergence theorems for elliptic problems. The course covers as well “variational crimes” and mixed methods, expanding the theory’s applicability to a wider range of PDEs. The theory is complemented with practice, using both front lectures and flipped classroom laboratories, working on implementations based on C++ using the deal.II library.
Key principles such as consistency, stability, convergence, and adaptivity will be examined in detail, offering guidelines for the selection and implementation of numerical methods suitable for the solution of a broad spectrum of partial differential equations.
Numerical Methods for Optimal Control
This course introduces advanced numerical methods for optimal control, bridging theory and computation. You’ll learn how to model, analyze, and solve real-world problems governed by differential equations, from engineering to applied sciences.
The corse offers a balance of theory, algorithms, and hands-on case studies, you’ll gain the skills to design efficient solutions and critically evaluate their performance.
High Performance Solutions of Partial Differential Equations
This PhD course introduces high-performance computational methods for solving partial differential equations (PDEs) that model complex physical and engineering systems. Students learn to design and implement scalable solvers using the finite element method (FEM) and the deal.II library, with emphasis on domain decomposition, parallel linear algebra (PETSc, Trilinos), and matrix-free geometric multigrid techniques. The course blends theory with practical programming experience, enabling participants to build efficient PDE solvers for large-scale simulations on modern computing architectures.
Image credit: Matthias Maier
An introduction to scientific software tools and parallel algorithms
This course offers a hands-on introduction to the essential tools and workflows of modern scientific software development and parallel computing. Students learn to work efficiently in Linux environments, using the Unix shell, SSH, and the Slurm job scheduler (with a Dockerized simulator) to manage computations and resources. Version control is taught through Git, focusing on local and collaborative workflows, branching, merging, and pull requests on GitHub.
The course emphasizes documentation and reproducibility: students generate API and tutorial documentation using Doxygen and Sphinx/MyST, and build portable environments with Docker and Apptainer/Singularity. Testing and automation are integrated through Google Test, pytest, and GitHub Actions to implement continuous integration workflows that automatically run tests and build artifacts.
The final module introduces the principles of parallel computing, including speedup, efficiency, and Amdahl’s and Gustafson’s laws, with exercises that measure and interpret program performance.
Calcolo numerico
This is the second module of the course “Analisi Numerica 2 e Calcolo Numerico” for Ingegneria dell’Energia of the University of Pisa.
The course focuses on teaching the fundamental techniques of numerical analysis. Students will learn about error analysis, machine arithmetic, polynomial interpolation, integral approximation, numerical approximation of the solutions to nonlinear equations, methods for solving systems of linear equations, and numerical methods for the solution of initial boundary value problems.
The course is in Italian, and it is generally in the second semester, on Tuesday and Wednesday morning.