Wolfgang Bangerth
Using Modern Features of C++ for Adaptive Finite Element Methods: Dimension-Independent Programming in deal.II
Proceedings of the IMACS 2000 World Congress, held in Lausanne, Switzerland, August 21-25, 2000.

Modern finite element software tends to become increasingly complex. Techniques like adaptive meshes, error estimation, multigrid methods, or hp finite elements require the programmer to work with extremely complicated data structures and sophisticated algorithms. Designing programs in a maintainable and expandable way while retaining run time efficiency has therefore become a major task in applied numerical analysis. In our experience, this task can only be fulfilled by using modern programming languages and tools.

We will show how modern aspects of the C++ programming language, in particular templates, can be used to write algorithms for finite element programs in a dimension-independent way. This enables us to test algorithms in one or two space dimensions while using the same program for large scale computations in three space dimensions as well. It will be demonstrated that this is even possible without much loss in efficiency since tests for the actual space dimension at run time can almost completely be avoided.

The idiom above is one of several modern aspects of C++ used in the design of the finite element library deal.II developed at the University of Heidelberg. We will give a sketch of its implementation and examples how it is used.

Wolfgang Bangerth
Wed Feb 1 17:42:20 MST 2023