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.
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
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.
Wed Feb 1 17:42:20 MST 2023