Finite element methods (FEM) are widely used in the computational solution of partial differential equations in the sciences and engineering. The course is intended to give students a perspective on the practical aspects of the FEM, in particular on how typical finite element software is structured, on algorithmic details of how to efficiently implement it, and on pre- and postprocessing steps.
The goal is for students to have a finite element code at the end of the course for simulations that are part of their PhD research.
The course is intended for masters and doctoral students as well as postdocs who have to solve partial differential equations as part of their research. This includes both people who are interested in developing computational methods using model problems, as well as for those who just want to solve PDEs as part of their applied science research (e.g. in physics, chemistry, biology, engineering). The outcome of the course is that every participant should have a code at the end that supports their research.
Participants need not be experts in the finite element method, but need to have knowledge of both basic numerical methods (quadrature, solving linear systems) as well as programming, preferably in C++.
In order to register for this course, please send email to firstname.lastname@example.org. The deadline for registration is March 9, 2012. Please note the prerequisite knowledge you need to have to participate successfully in this course.
The course will run daily 9-12 and 1-4 between March 19 and March 30 in the left half of the IWR computer pool in the Otto-Meyerhof-Zentrum next to the IWR building. For a map, see here. To find the computer pool, enter the side door on the east side (right on the map), go to the basement, and follow the long hallwall down; it's the second door on the right.
This course is intended for students of mathematics involved in research in numerical methods as well as students in the engineering disciplines.
One of the most important lessons learned over the past decade is that due to their size, modern numerical software can't be written from scratch for each new project, and must instead build on existing software libraries that handle most of what constitutes the finite element method as well as linear algebra and parallel communication. Applications then only have to implement things like bilinear forms, outer nonlinear solution loops, and linear solvers specialized to the application.
The course will use a large Open Source finite element library and other open source tools for the entire workflow. The library, deal.II, can be found at http://www.dealii.org/ and is developed mainly at Texas A&M University in collaboration with other researchers worldwide. It is used as the standard research and teaching tool for numerical computing in the Department of Mathematics. It supports the discretization of arbitrary partial differential equations and runs on machines from laptops to supercomputers with more than 10,000 processors.
The first part of the course will be used to review the basic mathematical concepts used in this software, such as finite element theory and iterative solvers. The rest of the course will be used for projects in which students are guided through the implementation of an application related to their research project or interests. Part of this will be teaching the use of modern software engineering practices, such as the use of revision control management systems (e.g. Subversion), writing documentation, and writing tests for automated testsuites. The goal is the development of a code that a) helps in the research of a student, and b) may be used as the starting point for future generations of students. It may also be converted into a tutorial for deal.II.
To the best of my knowledge, there isn't much in terms of books on writing large-scale software for finite element simulations. What is there often treats a single software package; for example, there are books about FEMLAB and DiffPack, two commercial finite element packages. For the packages to be used in class, there are no such books, but deal.II has several thousand pages of documentation. It can be found at the deal.II homepage at http://www.dealii.org/.
For the other topics, there are good books. There is a plethora of books about the theory of finite elements; for iterative solvers of linear and nonlinear systems, the following books are commonly referenced: