Generic Programming and Algebraic Multigrid for Stabilized Finite Element Methods
Generisches Programmieren und Algebraische Mehrgitterverfahren für Stabilisierte Finite Elemente Methoden
von Nils Klimanis
Datum der mündl. Prüfung:2006-03-10
Erschienen:2007-02-28
Betreuer:Prof. Dr. Gert Lube
Gutachter:Prof. Dr. Robert Schaback
Gutachter:Prof. Dr. Roland Potthast
Gutachter:PD Dr. Hartje Kriete
Dateien
Name:klimanis.pdf
Size:4.72Mb
Format:PDF
Description:Dissertation
Zusammenfassung
Englisch
Two topics are in the focus of this thesis. On the one hand, the generic construction of efficient data-structures for various purposes in numerical linear algebra, and on the other hand, the application of algebraic multigrid methods for linearized and discretized problems arising in computational fluid dynamics.In the first part, it is shown how generic programming and the template techniques of C++ can be used to construct efficient, flexible and versatile matrix data-structures. A benchmark is used to demonstrate that this abtract generic programming paradigm can compete with traditional C libraries.In the second and the third part, algebraic multigrid is applied to scalar convection-diffusion equations, as well as linearized Navier-Stokes equations. Especially, an adapted algebraic multigrid method is developed for equations of the Oseen type, where the special node-based ordering for P1-P1 elements is exploited.The library that was developed in the first part is used to conduct numerical tests for the scalar and the Oseen case. The numerical experiments show, that algebraic multigrid in many cases offers a big advantage in performance when compared to Krylov methods, especially for small discretization mesh widths.
Keywords: Algebraic Multigrid; Navier-Stokes; Oseen; Generic Programming; Generative Programming; C++; Mixins; Templates; Finite Elements
Weitere Sprachen
Zwei Themen stehen im Mittelpunkt dieser Arbeit: die generische Erzeugung von effizienten Datenstrukturen für vielfältige Aufgaben in der numerischen linearen Algebra einerseits und die Anwendung von algebraischen Mehrgitterverfahren auf linearisierte, diskretisierte Probleme aus der Strömungsphysik andererseits.Im ersten Teil wird gezeigt, wie sich generisches Programmieren und Template-Techniken von C++ dazu einsetzen lassen, um hocheffiziente, flexible und vielseitig einsetzbare Matrix-Datenstrukturen zu konstruieren. Anhand eines einfachen Benchmarks kann demonstriert werden, dass ein abstrakter, generischer Programmieransatz in C++ durchaus konkurrenzfähig gegenüber konventionellen C Bibliotheken ist.Im zweiten und dritten Teil werden algebraische Mehrgitterverfahren auf skalare Konvektions-Diffusions Probleme bzw. linearisierte Navier-Stokes Gleichungen angewandt. Insbesondere wird ein speziell angepasstes algebraisches Mehrgitterverfahren für Gleichungen vom Oseen-Typ entwickelt. Hierbei wird die knotenbasierte Anordnung für Finite P1-P1-Elemente ausgenutzt.Die im ersten Teil der Arbeit entwickelte Software-Bibliothek wird dabei verwendet, um numerische Tests für den skalaren und den vektorwertigen Fall durchzuführen. Hierbei kann experimentell gezeigt werden, dass algebraische Mehrgitterverfahren teilweise sehr deutliche Laufzeit-Vorteile gegenüber Krylov-Verfahren bieten, insbesondere bei kleiner Diskretisierungsschrittweite.
Schlagwörter: Algebraische Mehrgitterverfahren; Navier-Stokes; Oseen; Generisches Programmieren; Generatives Programmieren; C++; Mixins; Templates; Finite Elemente