Math 676: Finite Element Methods in Scientific Computing
Spring 2023 — Section 601
TR 3:55pm - 5:10pm in Blocker 163
Lecturer: Matthias Maier
Basic finite element methods; structure of finite element codes; assembling
linear systems of equations and algorithmic aspects; linear iterative
solvers; adaptive mesh refinement; vector-valued and mixed problems; nonlinear
problems; visualization; parallelization aspects. Additional topics may be
chosen by instructor.
The course is designed for students involved in research in numerical
methods, or students who want to use the finite element method for
simulations in their graduate research.
Course overview and learning outcomes:
This course is intended to highlight some practical aspects of the finite
element method, and more generally scientific software development. We will
discuss in particular how typical finite element software is structured, how
algorithmic details are efficiently implemented, and how necessary pre- and
postprocessing steps are executed in the scientific computing workflow. The
course will use the deal.II library (website
), a large open source finite element
library that has been developed over the last 25 years by an international team
My goal for this course is that you (a) develop a solid understanding of
modern scientific software development and the tools used for this, and (b) to
develop a program based on deal.II that helps you in your graduate research.
In particular, we will cover the following topics:
Software development: The Unix eco system and toolchain, some advanced
topics in C++, IDEs (Eclipse), distributed and collaborative version
control (git), documentation (doxygen), software engineering aspects of
large software projects,
Finite element software: Basic finite element methods, structure of
finite element codes, iterative solvers, preconditioners, nonlinear
problems, time-dependent problems, hyperbolic problems
deal.II: Installation and setup, assembling linear systems, algorithmic
aspects, adaptive mesh refinement, software design and data structures.
Additional topics based on interest.
A significant portion of the lecture time is set aside to work with you
on your individual research project. In order to facilitate this, I
will assign external resources (documentation and video lectures) that
you are required to read, or watch outside of class. We will
discuss them briefly at the beginning of class.
At the beginning of the course you will be assigned a project related
to your research or interests. A large part of the class time is set
aside to work on these projects, and a large portion of the final grade
will be based on the project.
the tutorial overview
and in particular have a look at step-21, step-24, and step-25 for some
project examples. If you are interested, good enough projects will be
published as part of the library and distributed with future versions. Of
course, you will then also be credited for your work.