Upload
phungxuyen
View
218
Download
0
Embed Size (px)
Citation preview
Effiziente Verfahren zur Lösung
partieller Differentialgleichungen mit
variablen Koeffizienten auf dünnen
Gittern
Der technischen Fakultät der
Friedrich-Alexander-Universität Erlangen-Nürnberg
zur Erlangung des akademischen Grades eines
Dr. Ing.
eingereichte Dissertation
von
Rainer Hartmann
aus
Nürnberg
Als Dissertation genehmigt
von der Technischen Fakultät
der Friedrich-Alexander-Universität Erlangen-Nürnberg
Tag der mündlichen Prüfung: 08.06.2018
Vorsitzender des Promotionsorgans:
Prof. Dr.-Ing. Reinhard Lerch
Gutachter:
Prof. Dr. Christoph Pflaum
Prof. Dr. Reinhold Schneider
Danksagungen
Ein erster Dank gilt Prof. Dr. Günther Greiner und dem Zufall. Ersterer übernahm im
Wintersemester 2014 in Vertretung die Vorlesung „Functional analysis for engineers“
und vertiefte das Thema Orthogonalität und hierarchische Basen. So wurde mein In-
teresse an diesem Thema geweckt.
Zusammen mit Prof. Dr. Christoph Pflaum konnte ich die Grundlage für diese Ar-
beit legen. Ich blicke auf eine diskussionsreiche und kreative Zeit zurück. Prof. Pflaum
hatte immer ein offenes Ohr und oft eine andere Meinung. Wer ihn vom Gegenteil
überzeugen konnte, hatte wirklich verstanden worum es geht. In unzähligen frucht-
baren Gesprächen wurde so mancher Ansatz verworfen und schließlich eine Lösung
gefunden.
Prof. Dr. Reinhold Schneider danke ich für die Übernahme des Zweitgutachtens,
dem Team vom Lehrstuhl für Systemsimulation für die angenehme Zeit und die Über-
lassung eines Schreibtisches, auch nach meinem Wechsel in die Industrie.
i
AbstractThis thesis offers an efficient solution for highly dimensional, elliptic partial differen-
tial equations on sparse grids. The discretization applies the Galerkin method and
the finite element method. In order to ensure an efficient implementation, an effec-
tive matrix-vector-multiplication, whose complexity scales linearly with the number of
grid points of the sparse grid, is required. For this end an algorithm will be presented,
which collects and distributes the hierarchical surplus through traversing over all grids
using a combination of restriction and prolongation operators. Sparse grips, however,
skip some paths compared to full grids. Thanks to the semi-orthogonality this does
not influence the convergence, with prewavelets being L2-orthogonal for overlapping
basis functions. A convergence proof shows that this orthogonality holds also for vari-
able coefficients since the induced errors by the semi-orthogonality property are small.
In contrast to full grids the number of unknowns decreases dramatically, whereas the
order of convergence is only slightly reduced for the discretization of sparse grids.
Numerical results with variable coefficients show an optimal convergence behavior
for three- and six-dimensional problems. Transformations for curvilinear bounded do-
mains have variable coefficients and are not based on tensor products. The calculation
of the coefficients of the system matrix utilizes numerical integration in high dimen-
sions. The matrix-vector multiplication is reduced to one-dimensional operators via
recursion. In the scope of this work a comprehensive software framework has been
created. By using templates, the implementation can be applied to arbitrary dimen-
sions. A parallelization for distributed memory, as well as shared memory, guarantees
a high accuracy for higher dimensions. An approach of semi-adaptive refinement en-
ables a partial refinement, while maintaining the structure of a tensor product grid.
This dissertation concludes with an outlook on the implementation of fully adaptive
sparse grids.
iii
ZusammenfassungZiel dieser Arbeit ist die effiziente Lösung hochdimensionaler elliptischer partieller
Differentialgleichungen auf dünnen Gittern. Bei Diskretisierung wird der Galerkin-
Ansatz und die Finite-Elemente-Methode verwendet. Eine effiziente Implementierung
der Matrix-Vektor-Multiplikation skaliert linear mit der Anzahl der Gitterpunkte. Da-
zu wird ein Algorithmus vorgestellt, der durch eine Kombination von Restriktionen
und Prolongationen die hierarchischen Überschüsse aller Gitter einsammelt und ver-
teilt. Für dünne Gitter muss allerdings auf den Austausch zwischen einigen Gittern
verzichtet werden. Dies hat aufgrund der Semi-Orthogonalität keinen Einfluss auf die
Konvergenz, da Prewavelets für überlappende Gebiete L2-orthogonal sind. Bei varia-
blen Koeffizienten zeigt ein Konvergenzbeweis, dass diese Werte sehr klein sind und
keinen Einfluss auf die Konvergenz haben. Die Konvergenzordnung der Dünngitter-
diskretisierung reduziert sich im Vergleich zu vollen Gittern nur leicht, während die
Anzahl der Unbekannten dramatisch abnimmt.
Numerische Ergebnisse mit variablen Koeffizienten zeigen optimale Konvergenz
für dreidimensionale und sechsdimensionale Probleme. Transformationen für krumm-
linig umrandete Gebiete besitzen variable Koeffizienten und beruhen nicht auf einem
Tensorprodukt. Die Berechnung der Steifigkeitsmatrix verwendet eine hochdimensio-
nale numerische Integration. Multiplikationen werden durch Rekursion auf eindimen-
sionale Operatoren zurückgeführt. Dazu ist im Rahmen dieser Arbeit eine umfangrei-
che Softwarebibliothek entstanden. Durch die Verwendung von Templates kann die
Implementierung auf beliebige hochdimensionale Probleme angewendet werden. Par-
allelisierung sowohl für geteilten Speicher als auch verteilte Systeme gewährleistet ei-
ne hohe Genauigkeit für große Dimensionen. Ein Ansatz mit semi-adaptiver Verfeine-
rung ermöglicht partielle Verfeinerung bei gleichzeitigem Erhalt der Tensorprodukt-
Struktur. Die Umsetzung adaptiver dünner Gitter wird als Ausblick behandelt.
v
Inhaltsverzeichnis
1 Einleitung 1
2 Diskretisierung der Finite-Elemente-Methode auf dünnen Gittern 3
2.1 Historische Entwicklung dünner Gitter . . . . . . . . . . . . . . . . . . . 4
2.2 Galerkin-Diskretisierung für dünne Gitter . . . . . . . . . . . . . . . . . . 6
2.3 Semi-Orthogonalität für variable Koeffizienten . . . . . . . . . . . . . . . 18
3 Matrix-Vektor-Multiplikation für dünne Gitter 21
3.1 Rekursive hochdimensionale Operatoren . . . . . . . . . . . . . . . . . . 22
3.2 Bilinearoperator für dünne Gitter . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 Umrechnung zwischen Prewavelets und nodaler Basis . . . . . . . . . . 26
3.4 Algorithmus zur Matrix-Vektor-Multiplikation auf dünnen Gittern . . . 33
3.4.1 Eindimensionale Matrix-Vektor-Multiplikation . . . . . . . . . . . 34
3.4.2 Hochdimensionale Rekursion . . . . . . . . . . . . . . . . . . . . . 36
3.4.3 Multiplikation für inhomogene Randbedingungen mit Korrektu 43
3.5 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.6 Komplexitätsanalyse und Kostendiskussion . . . . . . . . . . . . . . . . . 52
4 Hochdimensionale partielle Differentialgleichungen auf dünnen Gittern 55
4.1 Prewavelet-vorkonditionierte Methode der konjugierenden Gradienten 56
4.2 Variable Koeffizienten für krummlinig umrandete Gebiete . . . . . . . . 61
4.3 Variable Koeffizienten in hohen Dimensionen . . . . . . . . . . . . . . . . 65
4.4 Inhomogene Randprobleme . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5 Parallelisierung und Laufzeitanalyse 69
5.1 Parallelisierung der Vektoroperationen für geteilten Speicher . . . . . . . 70
5.2 Parallelisierung für verteilte Systeme . . . . . . . . . . . . . . . . . . . . . 75
vii
6 Erweiterung für adaptive Verfeinerung 79
6.1 Semi-adaptive Verfeinerung . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2 Adaptiv verfeinerte dünne Gitter . . . . . . . . . . . . . . . . . . . . . . . 85
7 Abschließende Bemerkungen 89
viii
Kapitel 1
Einleitung
Der Fluch der Dimensionen beschäftigt die numerische Mathematik seit Jahrzehnten.
Immer leistungsfähigere Großrechner haben für niedrigdimensionale Probleme we-
sentliche Fortschritte gebracht. Für hochdimensionale Probleme, und diese beginnen
bereits bei mehr als einer Handvoll Dimensionen, ist der exponentielle Anstieg der
Unbekannten der limitierende Faktor. Riesige Datenmengen müssen dazu gespeichert
und verarbeitet werden.
Ein mächtiges Werkzeug zur Reduzierung der Unbekannten sind die in [41] vor-
gestellten dünnen Gitter. Bei hinreichend glatten Funktionen liefern sie eine ähnliche
Fehlerordnung wie reguläre Gitterstrukturen.
Zwei wesentliche Ansätze haben sich für die Diskretisierung mit dünnen Gittern
durchgesetzt. Die Kombinationstechnik verlangt zur Behandlung variabler Koeffizi-
enten spezielle problemabhängige Annahmen. Der Galerkin-Ansatz ist universeller,
benötigt aber komplizierte Algorithmen zur Lösung partieller Differentialgleichungen
und ist daher weder für beliebige Dimensionen noch für adaptive Verfeinerung direkt
anwendbar.
Dieses Problem soll im Rahmen dieser Arbeit gelöst werden. Dazu wird ein Algo-
rithmus vorgestellt, der auf Basis der Galerkin-Diskretisierung eine rekursive Imple-
mentierung für hochdimensionale Räume ermöglicht. Knackpunkt ist die Multiplika-
tion mit der Diskretisierungsmatrix. Um diese effektiv durchführen zu können, wird
der zweidimensionale Ansatz aus [27] aufgegriffen.
Die Verwendung der Semi-Orthogonalität wird für höhere Dimensionen durch den
Einsatz von Prewavelets ermöglicht. Die Matrix-Vektor-Multiplikation ist die Basis für
die Methode der konjugierenden Gradienten. Durch den hierarchischen Aufbau dün-
ner Gitter und die durch Prewavelets gewonnene L2-Orthogonalität wird eine optima-
1
KAPITEL 1. EINLEITUNG
le Konditionierung O (1) erreicht.
Elliptische Differentialgleichungen werden in Kapitel 2 mit der Finite-Elemente-Me-
thode auf dünnen Gittern diskretisiert. Dazu werden geeignete Prewavelets eingeführt
und für inhomogene Randbedingungen erweitert.
Die daraus resultierende Semi-Orthogonalität wird in Kapitel 3 für einen effizienten
Algorithmus zur Matrix-Vektor-Multiplikation eingesetzt. Die Analyse der Laufzeit
zeigt dabei eine lineare Skalierung mit der Anzahl der Unbekannten.
In Kapitel 4 werden numerische Beispiele in verschiedenen Dimensionen bis d = 6
betrachtet. Für die Berechnung der Steifigkeitsmatrizen wird teilweise auf numerische
Integration zurückgegriffen. Für variable Koeffizienten ist dazu eine Integration auf
dünnen Gittern notwendig. Außerdem werden allgemeine variable Koeffizienten oh-
ne Tensorproduktstruktur sowie Koordinatentransformationen für gebogene Kanten
untersucht.
Zur Berechnung großer Tiefen in hohen Dimensionen ist zwingend eine Paralleli-
sierung notwendig. Kapitel 5 betrachtet sowohl die „shared memory“-Parallelisierung
mit OpenMP als auch die „distributed memory“=Parallelisierung mit MPI. Hauptpro-
blem ist jedoch der hohe Speicherbedarf. Dieses Problem kann auch mit verteilten Sys-
temen für reguläre dünne Gitter nicht gelöst werden.
Kapitel 6 behandelt daher abschließend eine Erweiterung für adaptive dünne Gitter.
Neben einer geeigneten Datenstruktur sind zahlreiche Anpassungen der Operatoren
für die Traversierung der Gitter notwendig.
2
Kapitel 2
Diskretisierung der Finite-Elemente-
Methode auf dünnen Gittern
Partielle Differentialgleichungen können näherungsweise auf einem Gitter mithilfe der
Finite-Elemente-Methode gelöst werden. Die Wahl des passenden Gitters wird durch
die gewünschte Genauigkeit der Berechnung beeinflusst. Bei der Wahl eines voll be-
setzten Tensorprodukt-Gitters wächst die Anzahl der Gitterpunkte für d-dimensionale
Probleme jedoch mit der Ordnung O(
Nd), wobei N der Anzahl der Gitterpunkte in
einer Dimension entspricht. Für niedrigdimensionale Probleme lässt sich oftmals ei-
ne Lösung mit akzeptablem Aufwand finden. Dagegen spricht man für Probleme mit
d ≥ 4 vom Fluch der Dimensionen, da der Speicheraufwand exponentiell anwächst
und sich auch mit modernster Computerarchitektur nicht mehr unter Kontrolle brin-
gen lässt. Diese Probleme können nicht mehr mit voll besetzten Gittern gelöst werden.
In diesem Kapitel wird eine speichersparsamere Diskretisierung mithilfe dünner
Gitter vorgestellt. Zunächst wird die Diskretisierung mithilfe der Galerkin-Methode
betrachtet. Dazu wird ein Mehrgitteransatz mit hierarchischen Überschüssen gewählt.
Bei der Wahl der Hutfunktion als Ansatzraum ergeben sich interessante Orthogona-
litätseigenschaften für zweidimensionale Poisson-Probleme. Die Orthogonalität wird
zur Entwicklung effizienter Algorithmen benötigt. Anschließend wird eine verallge-
meinerte Semi-Orthogonalität für variable Koeffizienten abgeleitet. Damit diese auch
für hochdimensionale Räume angewendet werden kann, werden L2-orthogonale Pre-
wavelets eingeführt. Diese werden abschließend durch geeignete Randelemente für
inhomogene Probleme erweitert.
3
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
2.1 Historische Entwicklung dünner Gitter
Rechenaufwand und Speicherbedarf können durch den Einsatz dünner Gitter
zur Diskretisierung partieller Differentialgleichungen substantiell reduziert wer-
den [41, 5]. Dünne Gitter benötigen lediglich einen Speicheraufwand der Ordnung
O(
N (log (N))d−1)
. Trotzdem ist der Interpolationsfehler bei hinreichend glatten
Funktionen vergleichbar dem Einsatz eines regulären voll besetzten Gitters. Dies
macht die Verwendung dünner Gitter zur Diskretisierung partieller Differentialglei-
chungen interessant, und es haben sich in den vergangenen Jahren zahlreiche Ansätze
herausgebildet.
Der erste Ansatz von Zenger in [41] nutzte rechteckige Elemente zur Diskretisie-
rung zweidimensionaler homogener Einheitsquadrate. Da der bilineare Finite-Elemen-
te-Raum durch das kartesische Produkt aufgespannt wird, konnte die Anzahl der Un-
bekannten dadurch reduziert werden, dass besonders hochauflösende Elemente weg-
gelassen wurden (vgl. Abbildung 2.1).
Durch eine Analyse des Interpolationsfehler wurde gezeigt, dass Elemente mit re-
lativ kleinem Beitrag zum Fehler und einer großen Anzahl an Freiheitsgraden mithilfe
der Dreiecksstruktur aus Abbildung 2.4 ausgelassen werden können. Die Anzahl der
Gitterpunkte konnte dadurch für zweidimensionale von O(
N2) auf O (N log N) si-
gnifikant reduziert werden. Die Ordnung des Interpolationsfehlers wurde nur leicht
von O(h2) auf O (h log h) reduziert.
Andere Dünngitterstrukturen basieren auf einer Optimierung der Energienorm. Die
Anzahl der Gitterpunkte konnte mit O (N) noch weiter reduziert werden und weist
keine Abhängigkeit zur Dimension mehr auf. In diesem Fall fällt leider auch die Ord-
nung des Interpolationsfehlers auf O (h) [12].
In Analogie zu schwach besetzten Matrizen („sparse matrix“) wurde der Name
„sparse grid“ verwendet. Ein experimentelles Programm zur Lösung der Laplace-Glei-
chung im Einheitsquadrat mit Dirichlet-Randbedingungen in [42] zeigte, dass die Ge-
nauigkeit der Finite-Elemente-Methode auf voll besetzten Gittern nahezu erreicht wur-
de. Die Konvergenzrate des Gauß-Seidel-Verfahrens zeigte die übliche Konvergenz für
hierarchische Basen.
Zengers Ansatz wurde schon bald auf die verbreitetsten Diskretisierungen partieller
Differentialgleichungen angewendet. Der Forschungsschwerpunkt lag dabei größten-
teils auf der Kombinationstechnik, dem Ritz-Galerkin-Ansatz, der Finite-Differenzen-
Methode und der Finite-Volumen-Methode. Die Konvergenzanalyse der Kombinati-
4
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
onstechnik wurde in [28] und [32] gezeigt. In [23] konnte diese auch auf adaptive Ver-
feinerung übertragen werden. Das genaue Konvergenzverhalten wurde bisher noch
nicht vollständig bewiesen. Daher lag der Schwerpunkt der Forschung zur Lösung
partieller Differentialgleichungen auf dem Ritz-Galerkin-Ansatz und der Finite-Diffe-
renzen-Methode.
Die ersten Ansätze der Ritz-Galerkin-Methode mit dünnen Gittern verwendeten
ausschließlich konstante Koeffizienten und waren auf Einheitswürfel beschränkt [3, 2].
Neben stückweise linearen finiten Elementen gab es Studien sowohl zu Elementen hö-
herer Ordnung [4] als auch zu Wavelets [37]. Der „unidirectional approach“ führt hoch-
dimensionale Diskretisierungen auf eindimensionale Algorithmen zurück und iteriert
darüber mit verschachtelten Schleifen [6]. Diese Ansätze ließen sich jedoch nicht effizi-
ent auf Probleme mit variablen Koeffizienten übertragen [7, 40]. Für die Anwendung
auf reale Probleme der Physik und der Ingenieurwissenschaften ist dies jedoch essen-
tiell.
Ein erster Ansatz zur Diskretisierung allgemeiner variabler Koeffizienten mit der
Ritz-Galerkin-Methode wurde in [29] präsentiert. Durch die Verwendung hierarchi-
scher Basisfunktionen ergeben sich im zweidimensionalen Fall Semi-Orthogonalitäts-
Eigenschaften. Hierfür konnte Konvergenz gezeigt werden und eine symmetrische
Diskretisierung für symmetrische Bilinearformen abgeleitet werden [29]. Leider lässt
sich dieser Ansatz nicht direkt auf hochdimensionale Räume übertragen, da hier die
Orthogonalitäts-Eigenschaft der nodalen Basisfunktionen für d ≥ 3 nicht mehr gege-
ben ist.
Weitere Diskretisierungen partieller Differentialgleichungen mit variablen Koef-
fizienten benötigen eine wesentliche Umformulierung der ursprünglichen Bilinear-
form [1] oder verwenden die Finite-Differenzen-Methode [13]. Beide Diskretisierun-
gen führen zu einem nicht-symmetrischen linearen Gleichungssystem und erschwe-
ren deren Lösung [1, 35]. Die Konvergenz beider Verfahren konnte bisher noch nicht
vollständig gezeigt werden. Simulationen zeigen jedoch optimale Konvergenzeigen-
schaften für zwei- und dreidimensionale Probleme.
5
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
2.2 Galerkin-Diskretisierung für dünne Gitter
Für die Diskretisierung partieller Differentialgleichungen existieren verschiedene Ver-
fahren. Alle gitterbasierten Methoden eignen sich grundsätzlich auch für die Verwen-
dung von dünnen Gittern [43]. Als besonders beliebt haben sich die Finite-Differenzen-
Methode, die Finite-Volumen-Methode und die Finite-Elemente-Methode (FEM) er-
wiesen. Für den FEM-Ansatz wird hauptsächlich die Kombinationstechnik sowie der
Galerkin-Ansatz verwendet.
Der Vorteil der Kombinationstechnik liegt in ihrer hohen Genauigkeit und der
leichten Implementierung, während Rechenzeit und Speicheraufwand relativ hoch
sind [32]. Dagegen lässt sich die Konvergenz nur eingeschränkt beweisen. Bewei-
se für zweidimensionale Poisson-Probleme zeigen eine Konvergenz der Ordnung
O(h2 log
(h−1)). Bei zweidimensionalen elliptischen Differentialgleichungen konnte
die Konvergenz jedoch nur für ausgewählte Koeffizienten gezeigt werden [28]. Va-
riable Koeffizienten erfordern geeignete Regularitätseigenschaften und Super-Konver-
genz des Gradienten [32]. Die Erweiterung für höhere Dimensionen erfordert den Ein-
satz sehr technischer Beweise für jede Dimension und lässt sich daher nicht verallge-
meinern. Außerdem ist die Verwendung adaptiver Gitter damit nicht möglich.
Der Galerkin-Ansatz für dünne Gitter beruht dagegen auf einer hierarchischen Zer-
legung des Ansatz-Raumes [41]. Hochdimensionale Räume werden mithilfe des Ten-
sorproduktes aus eindimensionalen Basisfunktionen aufgespannt. Im Folgenden wer-
den zunächst homogene Randwertprobleme behandelt. Die Diskretisierung erfolgt mit
stückweise linearen Elementen, wobei grundsätzlich auch die Verwendung von Ele-
menten höherer Ordnung möglich wäre. Die vorgestellte nodale Basis lässt sich sehr
einfach auf inhomogene Randwertprobleme erweitern. Für die Verwendung von Pre-
wavelets müssen dagegen einige Anpassungen erfolgen. Diese werden im Anschluss
vorgestellt.
Aus dem Indexset It
It =
i|i = 1, . . . , 2t+1 − 1
(2.1)
der Tiefe t lässt sich das Gitter Ωt für ht := 2−1−t ableiten.
Das eindimensionale Gitter
Ωt = i · ht|i ∈ It (2.2)
6
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
der Tiefe t besitzt 2t+1 innere Gitterpunkte.
Mit Hilfe der nodalen Basis lässt sich für das Gitter Ωt der Raum
Vt = vt,i (x) |i ∈ It (2.3)
aufspannen.
Die eindimensionalen Basisfunktionen vt,i (x) (vgl. Abbildung 2.3 links) sind defi-
niert durch
vt,i (x) =
1−∣∣∣ x
ht− i∣∣∣ x ∈ [(i− 1) ht, (i + 1) ht]
0 sonst. (2.4)
Aus Ωt ⊂ Ωt+1 folgt Vt ⊂ Vt+1. Abbildung 2.3 zeigt links die schrittweise Verfeine-
rung der nodalen Basisfunktionen für die Tiefen t = 0; 1; 2.
Die hierarchische Basis wird durch den hierarchischen Überschuss
Wt := Vt \Vt−1 (2.5)
gebildet.
Dies lässt sich rekursiv für dünne Gitter der Tiefe n mit W1 = V1 erweitern:
Vn = W1 ⊕ · · · ⊕Wn (2.6)
Daraus ergibt sich die Menge der Indizes der Feingitterpunkte
Ξt := It \ 2It−1. (2.7)
Für Dimensionen d ≥ 2 werden folgende Multi-Indizes eingeführt. Die Tiefe t :=
(t1, . . . , td) ∈Nd0 eines Gitters Ωt besitzt die Indexmenge
It := (i1, . . . , id) |ik ∈ Itk . (2.8)
Entsprechend wird ebenfalls die Menge der ausschließlich auf dem Gitter der Tiefe
t vorkommenden Punkte
Ξt := (ξ1, . . . , ξd) |ξk ∈ Ξtk (2.9)
7
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
definiert.
Das Indexset Ξt wird als dünnes Untergitter bezeichnet, da der hierarchische Über-
schuss auf
mt =d
∏i=1
(2ti)
(2.10)
Gitterpunkten dargestellt werden kann. Das volle Untergitter mit It besitzt dagegen
ebenso die Gitterpunkte der Grobgitterpunkte. Hierfür ergeben sich insgesamt
nt =d
∏i=1
(2ti+1 − 1
)(2.11)
Gitterpunkte.
Die entsprechende Basisfunktion
vt,i (x) :=d
∏k=1
vtk,ik (xk) (2.12)
wird durch das d-dimensionale Tensorprodukt erweitert.
Daraus ergibt sich der nodale Raum
Vt :=vt,i (x) |i ∈ It (2.13)
mit Tiefenvektor t sowie der zugehörige Raum
Wt :=vt,ξ (x) |ξ ∈ Ξt (2.14)
der hierarchischen Überschüsse.
Zur Definition des hierarchischen Aufbaus des Raumes des vollen Gitters Vn sowie
des Dünngitterraumes VDn werden folgende Metriken benötigt:
‖t‖∞ := max t1, . . . , td (2.15)
|t| :=d
∑k=1
ik (2.16)
8
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
Die daraus abgeleiteten Räume
Vn =⊕‖t‖∞<n
Wt (2.17)
VDn =⊕|t|<n
Wt (2.18)
besitzen die maximale Tiefe n.
n=1 n=2 n=3
Abbildung 2.1: Reguläres volles Gitter Ω3 und dünnes Gitter ΩDn für n = 1; 2; 3
Abbildung 2.2: ΩDn für n = 3
Nun wird ein dünnes Gitter ΩDn mit maximaler Tiefe n betrachtet (vgl. Abbil-
dung 2.2 für n = 3). Gesucht wird eine Funktion un (x) ∈ VDn die wie folgt auf dem
9
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
dünnen Gitter Dn dargestellt werden kann:
uDn (x) = ∑|t|<n
∑i∈Ξt
ut,ivt,i (x) (2.19)
Die folgende elliptische Differentialgleichung soll gelöst werden.
Problem 1. Seien f ∈ L2(ΩDn) und κ ≥ 0 gegeben. Suche u ∈ H10(ΩDn) für
a (u, v) :=∫
Ω(∇u)T A∇v + κuv dx, A ∈ Kn
f (v) :=∫
Ωf v dx
so dass
a (u, v) = f (v) für alle v ∈ H10 (ΩDn) . (2.20)
Anhand der hierarchischen Diskretisierungen (2.19) von VDn ergibt sich folgendes
lineares Gleichungssystem:
a(t,i),(t,j) :=a(vt,i, vt,j
)f(t,j) := f
(vt,j)
∑|t|<n
∑i∈Ξt
u(t,i) a(t,i),(t,j) = ft,j ∀ |t| < n, j ∈ Ξt (2.21)
Besonderes Augenmerk wird der Berechnung der Koeffizienten a(t,i),(t,j) gewidmet.
Dies wird beispielhaft anhand der Berechnung für Tiefe t = (0, 2) und Tiefe t = (2, 0)
gezeigt. Abbildung 2.4 zeigt die Träger der Basisfunktionen i = (2, 1) für t und j =
(1, 2) für t.
Aufgrund der Überlappung beider Träger muss der Wert des Bilinearoperators
a(vt,i, vt,j
)genauer betrachtet werden. Aus |max (t, t)| ≥ n folgt, dass die Gitter-
punkte der beiden Basisfunktionen außerhalb der Überlappung der jeweiligen Träger
liegen. Entscheidend dafür ist, dass sich die Tiefen beider Basisfunktionen t = (t1, t2)
und t = (t1, t2) in beiden Dimensionen wie folgt unterscheiden:
t1 < t1
t2 > t2
10
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
Für die Berechnung wird Ωtmax benötigt, wobei tmax := (tmax,i)i=1,...,d mit tmax,i =
max ti, ti. Im Beispiel für n = 3 wird für die Berechnung das Gitter tmax = (2, 2) be-
nötigt. Dessen Verwendung würde aber aufgrund des zusätzlichen Speicheraufwands
die Effektivität der dünnen Gitter eliminieren [27]. Für zweidimensionale dünne Gitter
kann auf die Berechnung überlappender Träger verzichtet werden, da die jeweiligen
Basisfunktionen orthogonal sind.
Lemma 1. Sei A = diag (a1, a2) eine konstante Diagonalmatrix. So gilt für die Indizes t und
t mit |max (t, t)| ≥ n und
max (t, t) = (max t1 t1 , max t2 t2) (2.22)
dass ∫Ω(∇vt,i)
T A∇vt,j = 0. (2.23)
Beweis. ∫Ω(∇vt,i)
T A∇vt,j dx =
∫Ω
(∇
2
∏k=1
vtk,ik (xk)
)T
A
(∇
2
∏k=1
vtk,jk (xk)
)dx =
2
∑l=1
al
∫Ω
∂
∂xl
(2
∏k=1
vtk,ik (xk)
)∂
∂xl
(2
∏k=1
vtk,jk (xk)
)dx = 0
Es gilt∫
∂∂xl
vtl ,il (xl)∂
∂xlvtl ,jl (xl) dxl = 0 falls tl 6= tl. Dies folgt für d = 2 aus
|max (t, t)| ≥ n.
11
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
In [29] wird ein Mehrgitterverfahren zur Lösung zweidimensionaler elliptischer Dif-
ferentialgleichungen auf dünnen Gittern vorgestellt. Dazu muss das Gitter in einem
bestimmten Muster, dem sogenannten Q-Zyklus, durchlaufen werden. Dieser besteht
aus zwei Durchläufen. Auf dem Hinweg werden alle bekannten Anteile der Lösung
mit der Diskretisierungsmatrix multipliziert und von der rechten Seite aller Nachfol-
ger subtrahiert. Der Rückweg dient der Verteilung an alle Vorgänger. Dadurch wird
gewährleistet, dass die lokale Lösung keine Anteile anderer Gitter beinhaltet. Das Glei-
chungssystem wurde zuvor entsprechend korrigiert.
Für die aktualisierte lokale Lösung muss anschließend die Differenz zur vorheri-
gen Lösung wieder durch einen Q-Zyklus verteilt werden. Entscheidend für den Q-
Zyklus ist, dass alle Untergitter pro Durchlauf nur einmal angelaufen werden. Daher
wird ein Pfad benötigt, der das dünne Gitter durch Prolongationen und Restriktionen
vollständig ohne Verzweigungen durchläuft.
Eine Erweiterung auf dreidimensionale Räume ist grundsätzlich möglich [24, 25].
Allerdings lässt sich kein allgemeingültiges Schema für ein hochdimensionales Muster
dieses Pfades ausmachen. Daher wurde dieser Ansatz im Rahmen dieser Arbeit nicht
weiter verfolgt.
0
1
x0,1
v0,1
V1t = 0
0
1
x1,1 x1,3
v1,1 v1,3
W2t = 1
0
1
x2,1 x2,3 x2,5 x2,7
v2,1 v2,3 v2,5 v2,7
W3t = 2
V3
0
1
x0,1
v0,1
V1
0
1
x1,1 x1,2 x1,3
v1,1 v1,2 v1,3
V2
0
1
x2,1 x2,2 x2,3 x2,4 x2,5 x2,6x2,7
v2,1 v2,2 v2,3 v2,4 v2,5 v2,6 v2,7
V3
Abbildung 2.3: Nodale Basis (links) sowie hierarchische nodale Basisfunktionen(rechts)
Die Algorithmen des Q-Zyklus basieren auf a-Orthogonalität für überlappende Ge-
biete. Dies bedeutet für zweidimensionale Probleme gemäß |max (t, t)| ≥ n, dass in
12
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
ϕt,i
ϕt′,j
Abbildung 2.4: Überlappende Träger zweier Basisfunktionen vt,i und vt,j mit|max (t, t)| ≥ n
allen Dimensionen unterschiedliche Tiefen für t und t vorliegen. Für hochdimensiona-
le Gebiete ist diese Einschränkung jedoch zu strikt. Auch hier wäre es wünschenswert,
dass Orthogonalität bereits bei überlappenden Gebieten vorliegt. Folglich unterschei-
den sich die Tiefen nur in zwei Dimensionen. Dies ist jedoch nur durch die Verwen-
dung von L2-orthogonalen hierarchischen Basisfunktionen ϕt,i möglich.
Lemma 2. Sei A = diag (a1, . . . , ad) eine konstante Diagonalmatrix. So gilt für die Tiefen t
und t mit |max (t, t)| ≥ n für
max (t, t) = (max t1 t1 , . . . , max td td) (2.24)
und alle i ∈ Ξt, j ∈ Ξt, dass ∫Ω(∇ϕt,i)
T A∇ϕt,j = 0 (2.25)
für L2-orthogonale Basisfunktionen.
Beweis. ∫Ω(∇ϕt,i)
T A∇ϕt,j dx =
∫Ω
(∇
d
∏k=1
ϕtk,ik (xk)
)T
A
(∇
d
∏k=1
ϕtk,jk (xk)
)dx =
d
∑l=1
al
d
∏k=1
∫Ω
∂
∂xlϕtk,ik
∂
∂xlϕtk,jk dxk = 0
Es gilt∫
∂∂xl
vtk,ik (xk)∂
∂xlvtk,jk (xk) dxk = 0 falls k 6= l und tk 6= tk. Dies folgt aus tk < tk
und tl > tl für überlappende Gebiete.
Besonders geeignet sind dazu L2-orthogonale Prewavelet-Basisfunktionen. Hierzu
13
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
werden stückweise lineare Funktionen mit nodaler Repräsentation auf Ξt verwendet.
Zur Lösung partieller Differentialgleichungen mit Prewavelets gibt es zahlreiche An-
wendungen. Bei Mehrgitterverfahren führen sie aufgrund ihrer hervorragenden Kon-
ditionszahl zu schnellen und robusten Lösern [10, 39]. Geeignete Prewavelet-Basen be-
sitzen kleine kompakte Träger. Als Tensorproduktbasis können sie zur Diskretisierung
dünner Gitter verwendet werden. Die Umrechnung zwischen hierarchischer Basis und
Prewavelets reduziert sich folglich zu einem eindimensionalen Problem [8, 14, 16, 22].
Für den eindimensionalen Fall wird Wt ⊆ Vt betrachtet, sodass Wt⊕
L2 Vt−1. An-
hand der Basisfunktionen vt,i ∈ Vt aus Abbildung 2.4 werden die Prewavelets aus
Abbildung 2.5 in [30] definiert:
ϕt,i =
910 vt,i − 3
5 vt,i+1 +1
10 vt,i+2 falls i = 1
vt,i − 35(vt,i+1 + vt,i−1) +
110(vt,i+2 + vt,i−2) falls 3 ≤ i ≤ 2t − 3, i ∈ Ξt
110 vt,i−2 − 3
5 vt,i−1 +9
10 vt,i falls i = 2t − 1
(2.26)
Wobei ϕt,1 die Prewavelet-Funktion am linken Rand und ϕt,2t−1 die Prewavelet-
Funktion am rechten Rand für t > 0 ist.
Sei ϕ0,1 = v0,1 ∈ V0 die gröbste Basisfunktion, die um den Punkt 2−1 zentriert ist.
Daraus ergibt sich die hierarchische Prewavelet-Basis in Abbildung 2.6. Die hierarchi-
sche Basis weist nun L2-Orthogonalität für Funktionen aus unterschiedlichen Tiefen t
und t auf.
Daher gilt für t 6= t
∫ 1
0ϕt,i ϕt,jdx = 0. (2.27)
Die Orthogonalitätseigenschaft der Prewavelet-Basis kann auch auf Helmholtz-
Operatoren mit variablen Koeffizienten in hochdimensionalen Räumen erweitert wer-
den [31]. Die dazu benötigte Semi-Orthogonalität wird in Abschnitt 2.3 erläutert.
Die vorgestellten Prewavelets besitzen homogene Randbedingungen und eignen
sich daher auch als Dualraum. Mit Dualraum wird dabei der Raum der Testfunktionen
bezeichnet.
Für inhomogene Probleme liegt der Ansatz nahe, auf dem gröbsten Level zusätz-
liche Hut-Elemente an den Randpunkten einzuführen. Abbildung 2.7 zeigt diese als
14
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
-0.6
0.1
1
xt,i−3 xt,i−2 xt,i−1 xt,i xt,i+1 xt,i+2 xt,i+3
ϕt,i
Abbildung 2.5: Prewavelet-Basisfunktion zentriert um Punkt xt,i
gestrichelte und gepunktete halbseitige Hutfunktionen an den Randpunkten x0,0 und
x0,2 in V0. Dirichlet-Prewavelets können aufgrund ihrer fehlenden L2-Orthogonalität
mit der halbseitigen Hutfunktion am Rand nicht zur Diskretisierung dünner Gitter
verwendet werden. Das Problem der Orthogonalität für inhomogene Randwertproble-
me wird durch die in [30] vorgestellten Prewavelets für Neumann Randbedingungen
gelöst (Abbildung 2.7).
Sie unterscheiden sich von (2.26) durch die Randelemente ϕt,1 am linken bzw. ϕt,2t−1
am rechten Rand für t > 0:
ϕt,i =
−6
5 vt,i−1 +1110 vt,i − 3
5 vt,i+1 +1
10 vt,i+2 falls i = 1
vt,i − 35(vt,i+1 + vt,i−1) +
110(vt,i+2 + vt,i−2) falls 3 ≤ i ≤ 2t − 3, i ∈ Ξt
110 vt,i−2 − 3
5 vt,i−1 +1110 vt,i − 6
5 vt,i+1 falls i = 2t − 1
(2.28)
Der Einsatz von Neumann-Prewavelets beschränkt sich lediglich auf den Primär-
raum. Die fehlende Homogenität verhindert eine direkte Verwendung als Dualraum.
Homogenität kann durch ein geeignetes Korrekturverfahren erreicht werden. In Ab-
schnitt 3.4.3 wird ein Korrekturverfahren vorgestellt, das den Dualraum zunächst in
die nodale Basis umgerechnet und anschließend in Prewavelet-Basisfunktionen mit
Dirichlet-Randbedingungen umwandelt. Über diesen Umweg kann zuerst Semi-Or-
thogonalität und anschließend Homogenität gewährleistet werden.
Sei u = g am Rande von Ω. So kann u in eine Randfunktion uR und die Funktion
im Inneren uI zerlegt werden. Daraus ergibt sich das inhomogene Randwertproblem.
15
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
0
1
0 x0,1 1
ϕ0,1
V1t = 0
0
1
0 x1,1 x1,3 1
ϕ1,1 ϕ1,3
W2t = 1
0
1
0 x2,1 x2,3 x2,5 x2,7 1
ϕ2,1ϕ2,3 ϕ2,5 ϕ2,7
W3t = 2
V3
Abbildung 2.6: Prewavelet-Basisfunktionen mit Dirichlet-Randbedingungen
Problem 2. Seien f ∈ L2(ΩDn) und κ ≥ 0 gegeben. Suche uI ∈ H10(ΩDn) für
a (uI , v) :=∫
Ω(∇u)T A∇v + κuv dx, A ∈ Kn
a (uR, v) :=∫
Ω(∇u)T A∇v + κuv dx, A ∈ Kn
f (v) :=∫
Ωf v dx
so dass
a (uI , v) = f (v)− a (uR, v) für alle v ∈ H10 (ΩDn) . (2.29)
Zunächst erfolgt eine Zerlegung der Randfunktion uR anhand der Neumann Prewa-
velets. Nach Anwendung des Bilinearoperator wird der Dualraum mithilfe des Kor-
rekturverfahrens in Dirichlet-Prewavelets überführt. Durch Subtraktion dieses Terms
von der rechten Seite wird das Problem in ein homogenes Randwertproblem über-
führt. Für die Berechnung der rechten Seite f (v) muss ebenfalls eine Zerlegung von f
für Neumann-Prewavelets durchgeführt werden. Auch hier ist eine Überführung des
Dualraumes in Dirichlet-Prewavelets notwendig.
16
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
0
1
x0,0 = 0 x0,1 x0,2 = 1
ϕ0,0 ϕ0,1 ϕ0,2
V1t = 0
-1.2
00.1
11.1
0 x1,1 x1,3 1
ϕ1,1 ϕ1,1
W2t = 1
-1.2
00.1
11.1
0 x2,1 x2,3 x2,5 x2,7 1
ϕ3,1 ϕ3,3 ϕ3,5ϕ3,7
W3t = 2
V3
Abbildung 2.7: Prewavelet-Basisfunktionen mit Neumann-Randbedingungen
17
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
2.3 Semi-Orthogonalität für variable Koeffizienten
Bereits in [29] wurde gezeigt, dass die Orthogonalität der nodalen Basis für zweidi-
mensionale Räume auch auf variable Koeffizienten des Helmholtzoperators erweitert
werden kann.
Problem 3. Seien f ∈ L2(Ω) sowie κ (x) ∈ L∞(Ω), κ (x) ≥ 0 gegeben. Suche u ∈ H10(Ω)
für
a (u, v) :=∫
Ω(∇uA (x))T∇v + κ (x) uv dx
f (v) :=∫
Ωf v dx
so dass
a (u, v) = f (v) für alle v ∈ H10 (Ω) . (2.30)
Dazu wurde die Bilinearform a durch eine vereinfachte Bilinearform mit Semi-Or-
thogonalität
ason(vt,i, vt,j
):=
0 falls |max (t, t)| ≥ n
an(vt,i, vt,j
)sonst
(2.31)
ersetzt. Die Einträge a(t,i),(t,j) der Diskretisierungsmatrix werden zu Null für überlap-
pende Funktionen mit |max (t, t)| ≥ n. Dadurch entfällt die aufwendige Berechnung
für überlappende Träger, und die Berechnung der Matrix-Vektor-Multiplikation kann
vollständig auf dem dünnen Gitter ausgeführt werden.
Die Bilinearform mit Semi-Orthogonalität weist für sämtliche elliptische partielle
Differentialgleichungen ähnliche Ortogonalitätseigenschaften wie die Helmholtzglei-
chung mit konstanten Koeffizienten auf. Durch die Verwendung der nodalen Basis
ist der Einsatz der Semi-Orthogonalität jedoch auf den zweidimensionalen Raum be-
schränkt. Im vorherigen Abschnitt wurde daher eine Erweiterung mit Prewavelets für
konstante Koeffizienten betrachtet. Diese Basis kann mit der Bilinearform mit Semi-
Orthogonalität kombiniert werden und ermöglicht die Diskretisierung variabler Koef-
fizienten auf hochdimensionalen dünnen Gittern.
18
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
In [31] wird gezeigt, dass der entstandene Diskretisierungsfehler für dünne Gitter
Dn mit n > n0 durch die Konstanten Kl und Ku für alle v, w ∈ VDn mit
‖v‖H1(Ω)Kl ≤√
a(v, v) ≤ Ku‖v‖H1(Ω) und (2.32)
an(v, w) ≤ Ku‖v‖H1(Ω)‖w‖H1(Ω) (2.33)
abgeschätzt werden kann.
Anhand der Norm für gemischte Ableitungen der Ordnung 2
‖u‖2M2(Ω) := ∑
(k1,...,kd)∈Nd0 |kj≤2
‖d
∏j=1
∂kj
∂xkjj
u‖L2(Ω) (2.34)
lässt sich ein Konvergenzbeweis für Problem 3 mit Dimension d ableiten:
‖u− uDn‖H1 ≤ C ‖u‖M2(Ω) h(
log(
h−1)d−1
)(2.35)
Für die Galerkin-Diskretisierung mit multilinearen finiten Elementen konnte damit
eine Konvergenz der Ordnung O(
h(log(h−1))d−1
)in der H1-Norm für Semi-Ortho-
gonalität bewiesen werden. Sie besitzt damit dieselbe Ordnung wie die Dünngitterin-
terpolation des variablen Koeffizienten. Dadurch konnte die optimale Konvergenzord-
nung in der H1-Norm gezeigt werden.
Numerische Ergebnisse in [19] zeigen eine Konvergenzgeschwindigkeit
O(
h2 (log(h−1))d−1
)in der L2-Norm wie auch in der Maximumsnorm. Dies
deckt sich im Falle d = 2 mit den Ergebnissen aus [29]. Das Konvergenzverhalten
der Dünngitterinterpolation führt zur Erkenntnis, dass uDn auf dem dünnen Gitter
zur exakten Lösung u mit O(h2 log
(h−1)) für h = 2−n sowohl in der L2-Norm
als auch in der Maximumsnorm konvergiert. Der variable Koeffizient wurde durch
eine stückweise konstante Interpolation auf dem dünnen Gitter ersetzt. Dadurch
ergibt sich eine vereinfachte Integration der rechten Seite sowie des Bilinearopera-
tors [26, 27]. Ein Konvergenzbeweis der Dünngitterdiskretisierung für die L2-Norm
und Maximumsnorm mit optimaler Fehlerordnung ist bis jetzt noch nicht gelungen.
Anhand von numerischen Beispielen kann gezeigt werden, dass durch Verwendung
der Semi-Orthogonalität robuste und effiziente Mehrgitterverfahren möglich sind. Der
Q-Zyklus in [29] ähnelt sehr dem bekannten V-Zyklus und verwendet Standardrouti-
nen der Mehrgitter-Algorithmik auf zweidimensionalen dünnen Gittern. Mehrgitter-
19
KAPITEL 2. DISKRETISIERUNG DER FINITE-ELEMENTE-METHODE AUFDÜNNEN GITTERN
löser haben folglich einen Rechenaufwand der OrdnungO (N log N) für eine Iteration
sowieO (1) für die Konvergenzgeschwindigkeit.O (N log N) entspricht dabei der An-
zahl der Gitterpunkte des zweidimensionalen dünnen Gitters. Außerdem lässt sich der
Ansatz ebenfalls auf adaptive dünne Gitter und komplexe Geometrien anwenden.
In [31] wurde dieser Ansatz auf hochdimensionale Helmholtzgleichung erweitert.
Eine Erweiterung auf beliebige elliptische, partielle Differentialgleichungen bedarf
noch einer erweiterten Konvergenzanalyse. Erste numerische Ergebnisse hierzu wur-
den in [19, 20] vorgestellt.
20
Kapitel 3
Matrix-Vektor-Multiplikation für
dünne Gitter
Die Galerkin-Diskretisierung mit Semi-Orthogonalität aus Kapitel 2 liefert schwach
besetzte Diskretisierungsmatrizen. Dies konnte dadurch erreicht werden, dass der Bi-
linearoperator für überlappende Elemente auf Null gesetzt wurde, ohne dass sich da-
durch die Konvergenzordnung ändert. Mithilfe der Prewavelet-Diskretisierung wurde
eine hierarchische Basis gefunden, die Semi-Orthogonalität auch in hochdimensiona-
len Räumen gewährleistet. Für die Zerlegung einer Funktion mithilfe der hierarchi-
schen Basis verteilen sich die Koeffizienten auf die einzelnen Level des dünnen Git-
ters. Geeignete iterative Verfahren zur Lösung des linearen Gleichungssystems benöti-
gen zur effizienten Realisierung eine schnelle Anwendung der Steifigkeitsmatrix und
der Massenmatrix auf einen Vektor. Dazu müssen die Koeffizienten von allen Gittern
eingesammelt werden. Effiziente Verfahren lösen dies mit einer konstanten Anzahl an
Rechenoperationen pro Gitterpunkt [2].
Zunächst wird eine Transformation zwischen nodaler Basis und hierarchischer Pre-
wavelet-Basis vorgestellt. Eine effiziente Berechnung ist in hochdimensionalen Räu-
men nur dann möglich, wenn sie sich auf eindimensionale Operatoren zurückführen
lässt.
Die Berechnung der Matrix-Vektor-Multiplikation erfolgt mithilfe eines rekursiven
Algorithmus. Die Grundidee ist dabei die Aufteilung in eindimensionale Operatoren
zur Prolongation und Restriktion. Dieser Ansatz ist bewährt und wurde zum Beispiel
von [33] verwendet.
Weitere Ansätze [2, 3, 16, 25] verlangen ebenso eine Zerlegung der Bilinearform.
Da die Tensorproduktstruktur des zugrunde liegenden Operators genutzt wird, kann
21
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
dieses Verfahren nicht für allgemeine variable Koeffizienten angewendet werden. Das
Verfahren von Schwab und Todor [36] für beliebige variable Koeffizienten hat dagegen
nur einen suboptimalen Rechenaufwand [40].
Der folgende Ansatz vereint optimalen Rechenaufwand und allgemeine variable
Koeffizienten. Durch die getrennte Abfolge von Prolongationen und Restriktionen
können die hierarchischen Überschüsse eines jeden Untergitters auf alle anderen Gitter
verteilt werden. Entscheidend ist dabei der Zeitpunkt der Multiplikation mit der Dis-
kretisierungsmatrix. Da dies zwischen dem Wechsel von Prolongation auf Restriktion
erfolgt, müssen diese streng getrennt werden. Die Überlappung von Basisfunktionen,
deren Verbindungspfad nur über Restriktion vor Prolongation auf dem dünnen Git-
ter erreicht werden kann, wird dadurch ignoriert. Da sich diese Anteile aber mit der
im vorigen Kapitel vorgestellten Semi-Orthogonalität decken, kann ohne zusätzlichen
Fehler auf deren Berechnung verzichtetet werden.
3.1 Rekursive hochdimensionale Operatoren
Für die weitere Berechnung werden einige Operatoren benötigt, die entweder lokal
auf einem vollen Untergitter agieren oder den Transfer zwischen zwei Gittern realisie-
ren. Sie lassen sich stets auf eindimensionale Operationen zurückführen und sind sehr
einfach in hochdimensionalen Räumen zu implementieren.
Der Prolongationsoperator P tt ermöglicht die dimensionsweise Interpolation von
Vt nach Vt, wobei t ≥ t sowie t − t ≤ 1 gilt. Daraus folgt ti − ti ∈ 0, 1 für alle
i ∈ 1, . . . , d. In der Regel wird jedoch nur in einer Dimension k prolongiert, sodass
tk − tk = 1 und ti − ti = 0 für i 6= k.
Der Operator P tt wird definiert durch
P tt :Rnt 7→ Rnt (3.1)
u 7→(
d⊗i=1
Ptiti
)u.
Dabei entspricht die eindimensionale Prolongationsmatrix Ptt entweder der Identi-
tätsmatrix Iti im Falle ti = ti oder Pt im Falle ti = ti − 1. Der eindimensionale Operator
22
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Pt hat folgende Matrixform:
Pt =12
2
1 1
2
1 1. . .
1 1
2
Zur Vergröberung werden der Restriktionsoperator
Rtt :Rnt 7→ Rnt (3.2)
u 7→(
d⊗i=1
Rtiti
)
und der Vergröberungsoperator
C tt :Rnt 7→ Rnt (3.3)
u 7→(
d⊗i=1
Ctiti
)u
benötigt.
Auch hier lassen sich wiederum Rt und Ct für ti = ti + 1 als eindimensionale Matri-
zen
Rt =12
2 1
1 2 1
1 2 1. . .
1 2 1
1 2
23
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
und
Ct =
1 0
0 1 0
0 1 0. . .
0 1
darstellen.
Zuletzt werden Operatoren zur Umrechnung der Koeffizienten in der Prewavelet-
Basis in die nodale Basis benötigt. Hierbei wird zwischen Primärraum und Dualraum
unterschieden. Der Primärraum dient der Repräsentation der Lösung u. Im Gegensatz
zu Kapitel 2 ist der Dualraum nun nicht mehr der Testraum. Er bezeichnet das Ergebnis
der Anwendung des Bilinearoperators ason (u, ϕt,k) auf Testfunktionen ϕt,k.
Es gibt je einen Operator zur Umrechnung der Prewavelet-Koeffizienten in die no-
dale Basis im Primärraum
St :Rnt 7→ Rnt (3.4)
u 7→(
d⊗i=1
Sti
)u
sowie für den Dualraum
Dt :Rnt 7→ Rnt (3.5)
u 7→(
d⊗i=1
Dti
)u.
Da das Level nicht verändert wird, handelt es sich bei
St =
910 0 1
10
−35 0 −3
5 01
10 0 1 0 110
−35 0 −3
5110 0 1 0 1
10. . . . . . . . . . . . . . .
110 0 1 0 1
10
0 −35 0 −3
51
10 0 910
24
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
und
Dt =
910 −
35
110
0 0 0 0110 −
35 1 −3
5110
0 0 0 0 01
10 −35 1 −3
5110
. . . . . . . . . . . . . . .110 −3
5 1 −35
110
0 0 0 0110 −3
59
10
jeweils um quadratische Matrizen. Die Nullzeilen bzw. Nullspalten entstehen dadurch,
dass Prewavelet-Koeffizienten nicht auf groben Gitterpunkten gespeichert werden.
3.2 Bilinearoperator für dünne Gitter
Im Gegensatz zu den Operatoren aus Abschnitt 3.1 kann die Multiplikation der Dis-
kretisierungsmatrix nicht als Tensorprodukt ausgeführt werden. Für jeden Gitterpunkt
auf den vollen Untergittern ergeben sich daher 3d Einträge in der Diskretisierungsma-
trix At des Gitters der Tiefe t. Die Diskretisierung erfolgt für die nodale Basis. Der zu
multiplizierende Vektor wird mit Operator (3.4) in die nodale Basis überführt und das
Ergebnis der Multiplikation abschließend in die Prewavelet-Basis zurückgeführt.
Die Anwendung der Diskretisierungsmatrix reduziert sich daher auf die Multipli-
kation At · u sowie den zugehörigen Operator
At :Rnt 7→ Rnt (3.6)
u 7→ Atu.
Matrix At wurde dazu mithilfe der nodalen Basis aus Abbildung 2.3 diskretisiert.
Die Abspeicherung erfolgt für jeden Punkt des vollen Untergitters auf einem Diskre-
tisierungsstern mit 3d Einträgen. Abbildung 3.1 zeigt die jeweiligen vollen Untergitter
eines dünnen Gitters der Tiefe n = 3.
25
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Abbildung 3.1: Dünnes Gitter für die Berechnung der Bilinearoperatorenmit Tiefe n = 3
3.3 Umrechnung zwischen Prewavelets
und nodaler Basis
Zur Berechnung der Prewavelet-Koeffizienten liegt die Funktion in nodaler Basis vor.
Dies bedeutet, dass auf allen vollen Untergittern mit |t| < n der Funktionswert für
jeden Gitterpunkt i ∈ It vorgehalten wird. Diese Zuweisung kann sehr einfach durch
die Auswertung eines Funktionszeigers an den entsprechenden Koordinaten realisiert
werden.
Ausgehend von der nodalen Basis ist auch eine Umwandlung in die hierarchische
Basis möglich. Hierzu wird ein ähnlicher Algorithmus wie zur Umrechnung in Prewa-
velets verwendet. Ein Algorithmus hierzu findet sich beispielsweise in [2].
Für die Umrechnung in Prewavelets ist das Lösen eines Gleichungssystems notwen-
dig. Dazu wird die Berechnung auf eindimensionale Operationen zurückgeführt. Die
nodale Basis wird dabei in einen Prewavelet-Anteil sowie den Grobgitteranteil zerlegt.
Hierzu wird das Gleichungssystem WDirichlet x = b gelöst, wobei b die Darstellung mit
nodaler Basis ist und x sowohl die Koeffizienten der Prewavelets aus Wti als auch der
nodalen Grobgitterbasis Vti−1 enthält. Die Bandmatrix WDirichlet kann mit einer LU-
Zerlegung effektiv gelöst werden. Der Rechenaufwand ist dabei linear bezüglich der
Anzahl der Einträge des Vektors.
26
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Für jede Tiefe ti muss die Matrix
WDirichlet =
910
12
110
−35 1 −3
5110
12 1 1
21
10
−35 1 −3
5110
12 1 1
21
10. . . . . . . . . . . . . . .
110
12 1 1
2110
−35 1 −3
51
1012
910
(3.7)
zerlegt werden. WDirichlet setzt sich zusammen aus zwei Dirichlet-Randelementen,(2ti − 2
)Prewavelets sowie den
(2ti − 1
)nodalen Basiselementen des Grobgitters. Im
Falle regulärer dünner Gitter sind die Matrizen unabhängig von der Dimension. Das
Gleichungssystem muss für Neumann-Randbedingungen (siehe 2.28) entsprechend
angepasst werden. An den Rändern werden zwei zusätzliche halbseitige nodale Ba-
sisfunktionen hinzugefügt.
Die Größe des Gleichungssystems WNeumann x = b mit
WNeumann =
1 −65
12
1110
12
110
−35 1 −3
51
1012 1 1
2110
−35 1 −3
5. . . . . . . . . . . . . . .
110
12 1 1
21
10
−35 1 −3
51
1012
1110
12
−65 1
(3.8)
erhöht sich dadurch auf(2t+1 + 1
)Freiheitsgrade.
Abbildung 3.2a zeigt die Umrechnung in Prewavelets für ein zweidimensiona-
les Vollgitter der Tiefe n = 4. Rote Pfeile sind dabei ausschließlich auf vollen Git-
tern vorhanden, während schwarze Pfeile auch auf dünnen Gittern abgelaufen wer-
den können. Der Algorithmus beginnt für volle Gitter am Level mit maximaler Tiefe
27
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
t1 = t2 = n− 1. Dazu werden zuerst in y-Richtung die Prewavelet-Koeffizienten sowie
der Grobgitteranteil für t2 = n− 2 anhand der LU-Zerlegung ermittelt. Der Grobgit-
teranteil wird auf das entsprechende Gitter übertragen und dort das Gleichungssys-
tem erneut gelöst. Daher wird t2 von n − 1 bis 0 iteriert. Zusätzlich wird nach jeder
Zerlegung je ein rekursiver Funktionsaufruf in x-Richtung gestartet. Dadurch erfolgt
schrittweise eine Zerlegung in allen Dimensionen.
Im Falle dünner Gitter müssen die roten Pfade in Abbildung 3.2a durch die alter-
nativen blauen Pfade ersetzt werden. Für blaue Pfeile wird eine Prolongation benö-
tigt, da keine direkten Vorgänger vorhanden sind. Zur leichteren Berechnung werden
die Berechnungen für alle Dimensionen jeweils in separate Durchläufe unterteilt. Für
jede Dimension erfolgt weiterhin ein rekursiver Funktionsaufruf über alle Gitter. Al-
gorithmus 1 iteriert daher zunächst über alle Dimensionen und startet jeweils einen
rekursiven Aufruf.
Abbildung 3.2b zeigt die separate Berechnung in y sowie Abbildung 3.2c in x-Rich-
tung. Für den ersten Durchlauf muss zusätzlich noch prolongiert werden. Die gepunk-
teten Pfeile stehen dabei für die Prolongation in allen tieferen Dimensionen.
Im ersten Durchlauf erfolgt ausschließlich eine LU-Zerlegung in y-Richtung, an-
schließend im zweiten Durchlauf in x-Richtung. Alle Dimensionen ohne Zerlegung
werden jeweils rekursiv durchlaufen, um eine vollständige Abdeckung des gesamten
dünnen Gitters zu gewährleisten. Im Folgenden wird dieses Verfahren als ebenenweise
Abarbeitung bezeichnet, da die aktuelle Ebene der Tiefe t = (t1, . . . , td) ∈ Dn zu Tiefe
t mit ti = ti − 1 für Dimension i vergröbert wird. Die aktuelle Dimension bezieht sich
dabei auf die Berechnung der LU-Zerlegung, für alle niedrigeren Dimensionen wird
prolongiert.
Algorithmus 1 startet mit maximaler Tiefe ti = n− 1. Damit t ∈ Dn erfüllt ist, muss
für alle k 6= i erfüllt sein, dass tk = 0. In Abbildung 3.2c entspricht dies t = (0, 3) bzw.
t = (3, 0) in Abbildung 3.2b.
Abbildung 3.3 zeigt die Umrechnung für dreidimensionale dünne Gitter und deren
Aufteilung in je eine Berechnung für alle Dimensionen. Abbildung 3.3a startet dabei
mit Tiefe t = (0, 0, 3). Nach Berechnung der Prewavelet-Koeffizienten wird daraus mit
Operator S der nodale Überschuss ermittelt. Für t = (0, 0, 2) wird der Überschuss von
(0, 0, 3) anschließend nach (1, 0, 2) und (0, 1, 2) prolongiert und dort subtrahiert. Für
die nächsttiefere Ebene t3 = 1 muss die Prolongation des Überschusses für (1, 1, 1)
28
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
mithilfe der Kombinationsformel
∑tk=tk ∀k≥δ
(tk−tk)∈0,1 ∀k<δ
(−1)|t−t| P tt (Ct) (3.9)
berechnet werden.
Die Berechnungen der x- und y-Richtung entspricht ebenenweise der zweidimen-
sionalen Berechnung. Für alle Elemente einer Zeile (y-Richtung) bzw. Spalte (x-Rich-
tung) wird die Zerlegung in Prewavelet-Überschuss und Grobgitteranteil mithilfe der
LU-Zerlegung berechnet. Der Grobgitteranteil liegt in nodaler Basis vor, während der
Überschuss als Prewavelet-Koeffizienten gegeben ist. Zur weiteren Berechnung wird
der Überschuss der Zerlegung wieder in die nodale Basis umgerechnet und muss an-
schließend von allen gröberen Gittern subtrahiert werden. Hierzu verwendet Algo-
rithmus 1 einen Korrekturvektor ~C. Dieser speichert den aktuellen Prewavelet-Anteil
sowie alle vorherigen mit Tiefe größer ti.
(a) Vollgitter (b) Dimension y (c) Dimension x
Abbildung 3.2: Aufteilung der Umrechnung von nodaler Basis und Prewavelet-Dar-stellung mithilfe eindimensionaler Operatoren für dünne Gitter sowie volle Gitter (feh-lende Pfade rot, alternativer Pfad blau)
29
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
x
z
y
+ +– + +– + +
+ +– + +
+ +
(a) Dimension z
x
z
y
++
+
++
+
(b) Dimension y
x
z
y
(c) Dimension x
Abbildung 3.3: Ebenenweise Berechnung in allen Dimensionen für dreidimensionaleProbleme. Die Berechnungen der Kombinationsformel sind grau hinterlegt.
Die umgekehrte Umrechnung von Prewavelet-Darstellung in nodale Basis erfolgt
analog. Algorithmus 2 unterscheidet sich dadurch, dass im Fall i = δ einmal von
(n− depth) bis 1 („down“) und ein zweites Mal in umgekehrter Reihenfolge von 0
nach (n− depth− 1) („up“) durchlaufen wird, allerdings kein Gleichungssystem ge-
löst werden muss. Der doppelte Durchlauf ist notwendig, da für jedes Gitter sowohl
die Überschüsse der gröberen als auch der feineren Gitter aufsummiert werden müs-
sen. Prewavelet-Koeffizienten können mit Operator St aus (3.4) in Koeffizienten der
nodalen Basis umgewandelt werden.
30
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Algorithmus 1 Umrechnung von nodaler Basis in Prewavelet-Darstellung
1: procedure UMRECHNUNGPREWAVELETS(~Y)2: ~C =~03: t = (t1, . . . , td)4: for δ = d, . . . , 1 do5: REKURSIVPREWAVELETS(~Y, ~C, δ, d, t)6: end for7: end procedure8: procedure REKURSIVPREWAVELETS(~Y, ~C, δ, i, t)9: depth = ∑d−1
i=δ+1 ti10: if i > δ then11: for tδ = 0, . . . , (n− depth) do12: REKURSIVPREWAVELETS(~Y, ~C, δ, i− 1,t)13: end for14: else if i = δ then15: for t1 = (n− depth− 1) , . . . , 1 do16: REKURSIVPREWAVELETS(~Y, ~C, δ, i− 1,t)17: end for18: else if i < δ then19: for t1 = 0, . . . , (n− depth− 1) do20: REKURSIVPREWAVELETS(~Y, ~C, δ, i− 1,t)21: end for22: ti = n− depth23: Ct = ∑
t: k≥δ: tk=tkk<δ: (tk−tk)∈0,1
(−1)|t−t| P tt(Ct)
24: else if i < 0 then25: t = (t1, . . . , tδ + 1, . . . , td)26: Zerlege Yt in Ft und Gt durch Invertierung von (3.7) bzw. (3.8)27: Yt = Ft28: Ct = C t
t (Ct + St (Ft))29: end if30: end procedure
31
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Algorithmus 2 Umrechnung von Prewavelet-Darstellung in nodale Basis
1: procedure UMRECHNUNGNODAL(~Y)2: ~C =~03: t = (t1, . . . , td)
4: for δ = 1, . . . , d do5: REKURSIVNODAL(~Y, ~C, δ, d, t, ~)6: end for7: end procedure8: procedure REKURSIVNODAL(~Y, ~C, δ, i, t, dir)9: depth = ∑d−1
i=δ+1 ti
10: if i < 0 then11: t = (t1, . . . , tδ + 1, . . . , td)
12: if dir = up then13: Yt = Yt + P t
t (Yt)14: Yt = Yt + Ct15: else16: Yt = St (Yt)17: Ct = C t
t (St (Yt) + Ct)18: end if19: else if i < δ then20: for t1 = 0, . . . , (n− depth− 1) do21: REKURSIVNODAL(~Y, ~C, δ, i− 1,t, dir)22: end for23: ti = n− depth24: Ct = ∑
t:k≥δ: tk=tkk<δ: (tk−tk)∈0,1
(−1)|t−t| P tt(Ct)
25: else if i = δ then26: . TopDown27: for t1 = (n− depth) , . . . , 1 do28: REKURSIVNODAL(~Y, ~C, δ, i− 1,t,down)29: end for30: . BottumUp31: for t1 = 0, . . . , (n− depth− 1) do32: REKURSIVNODAL(~Y, ~C, δ, i− 1,t,up)33: end for34: else if i > δ then35: for tδ = 0, . . . , (n− depth) do36: REKURSIVNODAL(~Y, ~C, δ, i− 1,t, dir)37: end for38: end if39: end procedure 32
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
3.4 Algorithmus zur Matrix-Vektor-Multiplikation auf
dünnen Gittern
Der Algorithmus zur Matrix-Vektor-Multiplikation verwendet zur Berechnung volle
Untergitter. Daher werden, zusätzlich zu den Gitterpunkten des feinen Gitters Ξt, alle
Punkte der groben Gitter lokal vorgehalten. Diese werden benötigt, um die Prewave-
let-Koeffizienten in die nodale Basis umzurechnen. Für die Diskretisierung der Steifig-
keits- und Massenmatrix werden nodale Basiselemente verwendet.
Die Aufgabe einer effizienten Implementierung ist es, die lokalen Überschüsse al-
ler Gitter zusammen zu sammeln und an alle anderen Gitter zu verteilen. Für zwei-
dimensionale Probleme kann dies durch den Q-Zyklus in einem einzigen Durchlauf
durch alle Gitter realisiert werden [29]. Dazu werden alle Gitter über einen Pfad durch
geschickte Kombination von Prolongationen und Restriktionen jeweils vorwärts und
rückwärts durchlaufen.
Für hochdimensionale Probleme ist ein einziger Durchlauf nicht möglich. Prolonga-
tionen und Restriktionen werden getrennt voneinander behandelt. Dadurch ergeben
sich für d-dimensionale Probleme 2d Fälle, da für jede Dimension jeweils eine Prolon-
gation und Restriktion durchgeführt werden muss.
Es wird die Multiplikation
~Xn = An~Un (3.10)
der Diskretisierungsmatrix An mit einem Vektor ~Un betrachtet.
Wobei der Vektor ~Un in Dünngitter-Zerlegung vorliegt, sodass für Ut := (ut,i)i∈Ξt∈
Rmt mit mt = |Vt| gilt
~Un := (Ut)|t|<n . (3.11)
Die Elemente at,i,k := ason (ϕt,i, ϕt,k) für i,k ∈ Ξt der Matrix An := (At)|t|<n und
At := (at,i,k)i,k∈Ξtsind durch die Bilinearform aso
n (·, ·) gegeben.
Die Elemente von Ut sind dabei in einem Vektor der Größe mt für das Gitter des
Raumes Vt mit Tiefe t gespeichert.
Für die Zerlegung von u (x) ∈ VDn gilt:
u (x) = ∑|t|<n
∑i∈Ξt
ut,iϕt,i (x) (3.12)
33
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
3.4.1 Eindimensionale Matrix-Vektor-Multiplikation
Für den eindimensionalen Fall ist
u (x) =n−1
∑t=0
∑i∈Ξt
ut,i ϕt,i (x) (3.13)
auf n Gitter verteilt, wobei jeweils nur die Feingitterkoeffizienten Ξt berücksichtigt
werden.
Die Matrix-Vektor-Multiplikation ~Xn := An~Un für ~Xn := (Xt)t<n sowie Xt =
(xt,i)i∈Ξtverwendet den Bilinearoperator mit Semi-Orthogonalität (2.31):
xt,i = ason
(n−1
∑t=0
∑i∈Ξt
ut,i ϕt,i , ϕt,i
)=
n−1
∑t=0
ason
(∑
i∈Ξt
ut,i ϕt,i , ϕt,i
)(3.14)
Im eindimensionalen Fall gibt es keine überlappenden Gebiete, da sich dazu die
Tiefe in mindestens zwei Dimensionen unterscheiden muss. Der Bilinearoperator mit
Semi-Orthogonalität entspricht daher dem gewöhnlichen Bilinearoperator.
Die Berechnung kann dabei in „TopDown“ und „BottomUp“ aufgeteilt werden:
xt,i =t
∑t=0
ason
(∑
i∈Ξt
ut,i ϕt,i , ϕt,i
)+
n−1
∑t=t+1
ason
(∑
i∈Ξt
ut,i ϕt,i , ϕt,i
)(3.15)
Prewavelets weisen einen erheblich größeren Träger als nodale Basiselemente auf.
Die Diskretisierung der Systemmatrix
At :=(aso
n(vt,i, vt,j
))i,j∈It
(3.16)
erfolgt daher anhand der nodalen Basis für alle Gitterpunkte It des vollen Untergitters.
Die Überführung des Primärraums von Prewavelets in nodale Basis übernimmt
Operator St aus Gleichung (3.4). Der Dualraum wird mit Operator Dt aus Gleichung
(3.5) in Prewavelets überführt.
Über die „TopDown“-Iteration werden die Überschüsse beginnend beim feinsten
Level eingesammelt und auf die gröberen Gitter restringiert. Die „BottomUp“-Iteration
prolongiert ausgehend vom gröbsten Gitter.
Algorithmus 3 speichert die Ergebnisse in zwei Variablen. Der Vektor ~G = (Gt)t<n
34
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
mit
Gt =n−1
∑t=t+1
Rtt (At (St (ut))) (3.17)
wird für die „TopDown“-Iteration verwendet, Vektor ~H = (Ht)t<n mit
Ht = At
(t
∑t=0
P tt (St (ut))
)(3.18)
für „BottumUp“. Der Restriktionsoperator Rtt verringert schrittweise die Tiefe des
Dualraums. Der Prolongationsoperator P tt erhöht schrittweise die Tiefe des Primär-
raums.
Anschließend werden beide Vektoren addiert und der Dualoperator Dt zur Über-
führung des Dualraums in die Prewaveletbasis angewendet:
Xt = Dt(Rt
t+1Gt+1 + Ht)
(3.19)
Der Anteil der „TopDown“-Iteration wird dazu mit Rtt+1 nach Level t restringiert,
um eine Doppelung für t zu verhindern.
35
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Algorithmus 3 Eindimensionale Matrix-Vektor-Multiplikation ~X = A~U
1: procedure MULTIPLIKATION1D(~U)2: . TopDown3: ~G = (G)t≤n4: Gn−1 = An−1 (Sn−1 (Un−1))5: for t′ = (n− 1) , . . . , 1 do6: Gt′−1 = Rt′
t′Gt′ +At′−1 (St′−1 (Ut′−1))7: end for8: . BottomUp9: H0 = S0 (U0)
10: for t′ = 1, . . . , (n− 1) do11: Ht′ = P t′
t′−1Ht′−1 + St′ (Ut′)12: end for13: . Addition G und H14: for t′ = 0, . . . , n do15: if t′ 6= (n− 1) then16: Xt′ = Dt′
(Rt′
t′+1Gt′+1 +At′Ht′)
17: else18: Xt′ = Dt′At′Ht′
19: end if20: end for21: end procedure
3.4.2 Hochdimensionale Rekursion
Algorithmus 3 soll im Folgenden für hochdimensionale Probleme erweitert werden.
Hierzu wird ein rekursiver Aufruf über alle Dimensionen verwendet, sodass die ein-
zelne Rekursion der Vorgehensweise des eindimensionalen Falls entspricht. Der we-
sentliche Ansatz ist dabei die getrennte Behandlung von Restriktionen und Prolon-
gationen. Für mehrdimensionale Probleme kann für jede Dimension entweder eine
Prolongation oder Restriktion durchgeführt werden. Dadurch ergeben sich insgesamt
2d Kombinationen. Jede dieser Kombinationen kann vollständig unabhängig von allen
anderen berechnet werden. Daraus ergeben sich interessante Aspekte für die Paralleli-
sierung.
Grundsätzlich lässt sich der vorgestellte Algorithmus aufgrund seiner Unabhän-
gigkeit der einzelnen Kombinationen sehr gut parallelisieren. Der Aufwand des Da-
tenaustausches der Ergebnisse lässt sich im Vergleich zum Berechnungsaufwand ver-
nachlässigen. Dies ist auf die Verwendung besonders speichersparsamer dünner Gitter
zurückzuführen. Die Parallelisierung wird ausführlich in Kapitel 5 behandelt.
36
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
In der eindimensionalen Multiplikation wurden die hierarchischen Überschüsse al-
ler Gitter mit geringerer Tiefe prolongiert und anschließend das Ergebnis auf dem fina-
len Gitter mit der Systemmatrix multipliziert (vgl. Gleichung 3.17 und Gleichung 3.18)
Für Restriktionen erfolgte die Multiplikation der Überschüsse mit der Systemmatrix
direkt auf dem Gitter der Herkunft. Die Restriktion erfolgt im Dualraum. Dieses Kon-
zept wird nun auch für höhere Dimensionen übernommen. Dazu ist eine Trennung
von Prolongationen und Restriktionen notwendig. Erst wenn alle Prolongationen ab-
gearbeitet sind, erfolgt die Multiplikation mit der Systemmatrix.
Die Abarbeitung kann daher nicht mehr von 1 bis d erfolgen. In einem Vektor wer-
den die Dimensionen vorsortiert. Prolongationen stehen am Ende und werden durch
die Rekursion zuerst abgearbeitet. Am Übergang zwischen Prolongationen und Re-
striktionen erfolgt die Multiplikation mit der Systemmatrix durch die Anwendung
des OperatorsAt. Nach dem Wechsel in den Dualraum kann abschließend restringiert
werden.
Der zweidimensionale Fall eignet sich hervorragend zur Visualisierung des Algo-
rithmus. Er enthält bereits alle notwendigen Funktionen und Probleme der hochdi-
mensionalen Rekursion.
Die Aufteilung in vier Terme lässt sich folgendermaßen darstellen:
a(u, ϕ(t1,t2),(i1,i2)) = ∑t1>t1
∑t2>t2
a(
w(t1,t2), ϕ(t1,t2),(i1,i2)
)+ ∑
t1>t1
a
(∑
t2≤t2
w(t1,t2), ϕ(t1,t2),(i1,i2)
)
+ ∑t2>t2
a
(∑
t1≤t1
w(t1,t2), ϕ(t1,t2),(i1,i2)
)
+a
(∑
t1≤t1
∑t2≤t2
w(t1,t2), ϕ(t1,t2),(i1,i2)
)(3.20)
Der Überschuss auf einem Level w(t1,t2)bezeichnet dabei die nodale Repräsentation
der Prewavelets, sodass w(t1,t2)(x) = ∑
i∈Ξ(t1,t2)
u(t1,t2),iϕ(t1,t2),i gilt.
Abbildung 3.4 zeigt die Aufteilung in vier Fälle für ein zweidimensionales volles
Gitter und ein dünnes Gitter. Für die Berechnung von Prolongation oder Restriktion
in beiden Dimensionen ist die Reihenfolge der Dimension nicht entscheidend. Für den
gemischten Fall in Abbildung 3.4b erfolgt die Prolongation in x-Richtung. Der Dimen-
sionenvektor hätte daher die Einträge (2, 1). Folglich ist der Dimensionenvektor für
37
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Prolongation in y-Richtung in Abbildung 3.4c mit (1, 2) genau umgekehrt sortiert.
Um von Level (0, 3) nach (3, 0) durch Prolongation in x-Richtung und Restriktion
in y-Richtung zu gelangen, wird für volle Gitter der Weg über (3, 3) gewählt. Dazu
wird zunächst eine Restriktion in y-Richtung von t2 = 3 nach t2 = 2 durchgeführt.
Zusätzlich wird je ein rekursiver Ausruf für t1 gestartet. Dieser sammelt durch Pro-
longation alle Überschüsse der tieferen Level für t1 ein und multipliziert sie mit der
Systemmatrix.
Für dünne Gitter existiert der Pfad von (0, 3) nach (3, 0) über (3, 3) nicht. Der Pfad
über (0, 0) entfällt ebenfalls aufgrund der Regel „Prolongation vor Restriktion“. Folg-
lich existiert für dünne Gitter kein Austausch zwischen Level (0, 3) und (3, 0). Mithilfe
der Semi-Orthogonalität kann begründet werden, dass dies keine Auswirkungen auf
die Konvergenz hat.
Fehlende Pfade treten nur bei der Kombination aus Restriktionen und Prolongatio-
nen auf. Dabei wird je mindestens eine Dimension i prolongiert, eine weitere Dimensi-
on k restringiert. Dies induziert überlappende Gebiete, da ti > ti und tk < tk gelten. Die
Vernachlässigung dieser Pfade ist folglich ohne Auswirkungen, da sie im Falle semi-
orthogonaler Bilinearoperatoren zu Null gesetzt werden.
Lemma 3. Durch die Regel „Prolongation vor Restriktion“ auf dünnen Gittern werden Pfade
ausgelassen. Dies hat keine Auswirkungen auf die Konvergenz, da es sich um überlappende
Gebiete handelt.
Beweis. Überlappende Gebiete induzieren einen Wechsel von Prolongation auf Restrik-
tion bei Dimension δ. Restriktionen erfolgen für i ≥ δ, Prolongationen für i < δ. Daraus
folgt ∀i ∈ 1, . . . , δ− 1 dass ti ≤ ti und ∀k ∈ δ− 1, . . . , d dass tk ≥ tk. Sofern nicht
mindestens für eine Dimension restringiert bzw. prolongiert wird, wird der Pfad über
Restriktion bzw. Prolongation in allen Dimensionen abgedeckt. Daher gilt
δ−1
∑i=1
ti <δ−1
∑i=1
ti
d
∑k=δ
tk >d
∑k=δ
tk.
Daraus folgt
∃i ∈ 1, . . . , δ− 1 : tk < tk
∃k ∈ δ− 1, . . . , d : tk > tk.
38
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Aus ti < ti und tk > tk folgt Überlappung und Semi-Orthogonalität.
Abbildung 3.5 zeigt die Addition der vier Teilsummen des zweidimensionalen dün-
nen Gitters. Um Doppelungen zu verhindern, werden alle Dimensionen mit Restrik-
tion restringiert. Dieses Konzept lässt sich auf hochdimensionale Räume übertragen.
Gleichung 3.21 besteht aus 2d Teilsummen, die geeignet addiert werden müssen:
a(u, ϕt,i) = ∑R⊂1,2,...,d
∑r∈R
∑tr>tr
a
∑p∈R
∑tp≤tp
wt, ϕt,i
(3.21)
Abschließend wird noch der rekursive Aufruf von Algorithmus 4 am Beispiel der
Prolongation in allen Dimensionen betrachtet. Begonnen wird mit Dimension δ = d.
Die Iteration für τ läuft von Tiefe 0 bis (n− 1) und startet jedes Mal einen rekursi-
ven Aufruf für δ− 1 (siehe Abbildung 3.6). Das Ergebnis des rekursiven Aufrufs wird
anschließend für tδ von τ nach τ + 1 prolongiert. Dort wird erneut das Ergebnis des
rekursiven Aufrufs addiert.
Die Berechnung des rekursiven Aufrufs δ − 1 entspricht dem ebenenweisen Ein-
sammeln durch Prolongation. Die Einträge des Tiefenvektors t sind ab δ fixiert. Der
rekursive Aufruf iteriert für alle Dimensionen kleiner δ über alle Gitter des dünnen
Gitters, sodass
δ−1
∑i=1
ti +d
∑i=δ
ti < n. (3.22)
Im Falle der Restriktion erfolgt die Iteration in umgekehrter Richtung. Für jede Di-
mension kann über DIRECTION(δ) ermittelt werden, ob prolongiert oder restringiert
wird. Falls DIRECTION(δ + 1) 6=DIRECTION(δ), muss mit der Systemmatrix multi-
pliziert werden.
39
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
t2
t10 1 2 3
0
1
2
3
(a) Prolongation-Prolongation
t2
t10 1 2 3
0
1
2
3
(b) Prolongation-Restriktion
t2
t10 1 2 3
0
1
2
3
(c) Restriktion-Prolongation
t2
t10 1 2 3
0
1
2
3
(d) Restriktion-Restriktion
Abbildung 3.4: Alle möglichen Kombinationen aus Restriktionen und Prolongationenfür die zweidimensionale Matrix-Vektor-Multiplikation auf vollen Gittern bzw. dün-nen Gittern. Alle Untergitter des vollen Gitters mit n = 4 sind grau hinterlegt. Im Falleeines dünnen Gitters entfallen daher die Wege über die gestrichelten Pfeile.
40
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
0 1 2 3
0
1
2
3
t2
t1
Abbildung 3.5: Addition aller möglichen Kombinationen aus Restriktionen und Pro-longationen für die zweidimensionale Matrix-Vektor-Multiplikation. Damit kein Ein-trag mehrfach vorkommt, wird im Falle der Restriktion das nächstgrößere Nachbar-element restringiert. Der rot hinterlegte Bereich zeigt die Unterteilung in die vier mög-lichen Fälle der Addition für das Element (1, 1). Im Falle eines dünnen Gitters entfälltdaher das Diagonalelement (2, 2), welches in x- und y-Richtung restringiert werdenmüsste.
t1 variabler Teil tδ tδ+1tδ+2fixierter Teil td
rekursiverAufruf
τ = 0, . . . , mm := n−∑d
i=δ+2 ti
t1 variabler Teil tδ−1 tδ tδ+1 fixierter Teil td
rekursiverAufruf
τ = 0, . . . , mm := n−∑d
i=δ+1 ti
t1 variabler Teil tδ−2tδ−1 tδ fixierter Teil td
Abbildung 3.6: Rekursiver Aufruf der Methode rekursiveMultiplikation fürden Vektor t. Die Einträge ti für i > δ sind fixiert. tδ wird bis zur maximalen Tiefeiteriert. Der variable Teil i < δ wird durch den rekursiven Aufruf ermittelt [20].
41
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Algorithmus 4 Rekursive Matrix-Vektor-Multiplikation Berechnung ~Y ← A~Y
1: procedure REKURSIVEMULTIPLIKATION(~Y, δ, t)2: depth = ∑d−1
i=δ+1 ti3: if DIRECTION(δ) == ’Pro’ then4: tδ = 05: if δ > 0 then6: REKURSIVEMULTIPLIKATION(~Y, δ− 1,t)7: end if8: for all t1, . . . , tδ−1 mit |t|δ−1 < n− depth do9: Yt = St (Yt)
10: end for11: t = t12: for tδ = 1, . . . , (n− depth− 1) do13: tδ = i14: if δ > 0 then15: REKURSIVEMULTIPLIKATION(~Y, δ− 1,t)16: end if17: tδ = i− 118: for all t1, . . . , tδ−1 mit |t|δ−1 < n− depth do19: Yt = St (Yt) + P t
t (Yt)20: end for21: end for22: if δ == d oder DIRECTION(δ + 1) != DIRECTION(δ) then23: for all t1, . . . , tδ−1 mit |t|δ−1 < n− depth do24: Yt = At
(Y~t)
25: end for26: end if27: else if DIRECTION(δ) == ’Res’ then28: tδ = n− depth− 1;29: Yt = At (St (Yt))30: for i = (n− depth− 2) , . . . , 0 do31: t0 = i32: if δ > 0 then33: REKURSIVEMULTIPLIKATION(~Y, δ− 1,t)34: end if35: t0 = i + 136: for all t1, . . . , tδ−1 mit |t|δ−1 < n− depth do37: Yt = At (St (Yt)) +Rt
t (Yt)38: end for39: end for40: end if41: end procedure
42
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
3.4.3 Multiplikation für inhomogene Randbedingungen
mit Korrektur
In Abschnitt 2.2 wurden bereits geeignete Randelemente vorgestellt. Dafür wurden
in Abbildung 2.7 nodale Basisfunktionen an den Randpunkten mit Neumann-Prewa-
velets addiert. Würden die gewonnenen Randelemente bereits kombiniert auf dem
entsprechenden Gitter verwendet werden, wäre keine Semi-Orthogonalität mehr ge-
geben. Entsprechend entsteht durch Verwendung von Algorithmus 4 ein zusätzlicher
Fehler, und der Konvergenzbeweis in [31] ist nicht mehr gültig.
Befindet sich ein Punkt i mit Tiefe t in Dimension δ am Rand, hat iδ entweder den
Wert 1 oder 2tδ − 1 und wird mit den nodalen Elementen auf Vt mit Index 0 bzw. 2tδ
korrigiert.
Zur Randkorrektur wird die Eigenschaft Vtδ= Wtδ
⊕Vtδ−1 genutzt. Damit lässt sich
Vtδaus Wtδ
und Vtδ−1 bestimmen. Da nur V1 explizit gegeben ist, iteriert t von 0 bis zur
maximalen Tiefe (n− 1).
Selbstverständlich kann ein Punkt auch in mehreren Dimensionen gleichzeitig ein
Randpunkt sein. In diesem Fall kann der Operator ähnlich der Prolongation und
Restriktion wieder auf eine Verkettung eindimensionaler Operationen zurückgeführt
werden. Abbildung 3.7 zeigt die Korrektur zunächst in x-Richtung (Abbildung 3.7a)
sowie in y-Richtung (Abbildung 3.7b).
Für die Korrektur muss a (u, vt,i) aus a (u, ϕt,i) und a (u, vt−1,i) rekonstruiert werden.
Da a (u, ϕt,i) und a (u, vt−1,i) aus der Multiplikation mit WTNeumann berechnet wird, kann
t2
t1
(a) Korrektur Dimension x
t2
t1
(b) Korrektur Dimension y
Abbildung 3.7: Korrekturverfahren für inhomogene Randbedingungen
43
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
a (u, vt,i) über eine LU-Zerlegung von WTNeumann berechnet werden:
WTNeumann =
1 12
−1210
1110 −
35
110
12 1 1
21
10 −35 1 −3
51
1012 1 1
2. . . . . . . . . . . . . . .
110 −3
5 1 −35
110
12 1 1
2110 −3
51110 −
1210
12 1
(3.23)
Der Dualraum wurde folglich von der Prewavelet-Basis mit Neumann-Randbedin-
gungen in die nodale Basis überführt. Abschließend kann er mit Operator Dt aus Glei-
chung (3.5) in die Prewavelet-Basis mit Dirichlet-Randbedingungen überführt werden.
Dadurch wird Homogenität gewährleistet.
44
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
3.5 Implementierung
Ziel bei der Implementierung war eine effiziente, flexible und benutzerfreundliche Bi-
bliothek zur Berechnung der Finite-Elemente-Diskretisierungen auf dünnen Gittern
mit Prewavelets. Durch den Einsatz der Programmiersprache C++ und die Verwen-
dung von Templates konnte eine Unabhängigkeit von der Dimension erreicht werden.
Rekursive Algorithmen und Template-basierte Datenstrukturen legen die Dimension
erst zum Zeitpunkt der Übersetzung fest.
Parallelisierung und Rechenleistung standen nicht im Fokus. Das wichtigste Krite-
rium war ein modularer und gekapselter Aufbau.
Expression Templates gewährleisten eine weitestgehend mathematische Schreib-
weise und werden für die vorgestellten Algorithmen verwendet [17, 18]. Listing 3.1
zeigt beispielhaft das CG-Verfahren ohne Vorkonditionierung. multiply ruft den
Algorithmus zur Matrix-Vektor-Multiplikation auf. Leider konnte hier aufgrund der
Komplexität keine Operator-Überladung verwendet werden. Einfachere Ausdrücke
wie Addition oder skalare Multiplikation können dagegen als Kombination verschie-
dener Operatoren verfasst werden.
Listing 3.1: CG-Verfahren
1 multiply(A_matrix,u_vector,r_vector);
2
3 r_vector = rhs_vector - r_vector;
4 d_vector = r_vector;
5
6 for(int i = 0; i < max_iterations; ++i)
7 multiply(A_matrix,d_vector,z_vector);
8 const double res_product = product(r_vector,r_vector);
9 if(sqrt(res_product/sparse_grid.getGridPoints()) < 1e-14)
10 return;
11 const double alpha = res_product/product(d_vector,z_vector);
12
13 u_vector = u_vector + alpha*d_vector;
14 r_vector = r_vector - alpha*z_vector;
15 const double beta = product(r_vector,r_vector)/res_product;
16 d_vector = r_vector + beta*d_vector;
17
45
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Alle verwendeten Vektoren sind in diesem Beispiel Variablen auf dünnen Gittern
und bestehen wiederum aus Variablen auf regulären vollen Gittern. Ein dünnes Git-
ter SparseGrid besteht stets aus vollen Untergittern Grid mit Tiefe |t| < n. Dies
spiegelt sich auch in der Klassenstruktur wider (siehe Abbildung 3.8). Für ein dünnes
Gitter können beliebig viele Objekte SparseVariable angelegt werden, die für je-
den Gitterpunkt einen Datenwert speichern. Folglich besteht SparseVariable aus je
einem Objekt Variable für jedes Grid-Objekt des entsprechenden SparseGrid.
Grid SparseGridgrid_vector
1..n
Variable SparseVariablevariable_vector
1..*
1
0..*
1
0..*
Abbildung 3.8: SparseVariable verwaltet Variable
Matrizen werden als 3d-Punkte-Stern abgespeichert (siehe Abbildung 3.9). Die Klas-
se SparseStencil kann dabei sowohl konstante Koeffizienten (ConstantStencil)
als auch variable Koeffizienten (VariableStencil) verwalten. Während bei kon-
stanten Koeffizienten nur ein einziger Stern pro Gitter vorgehalten werden muss, wird
für variable Koeffizienten punktweise ein Array mit 3d Einträgen berechnet und abge-
speichert.
Durch den Einsatz von Schnittstellen wird die Implementierung der dünnen Git-
ter von den Algorithmen entkoppelt. Neben Datenstrukturen für dünne Gitter gibt es
Realisierungen der Schnittstellen für adaptive dünne Gitter und reguläre Mehrgitter-
systeme. Diese lassen sich auf algorithmischer Ebene leicht austauschen. Listing 3.1
konnte daher ohne Änderung für semi-adaptive Gitter verwendet werden. Details zur
Semi-Adaptivität befinden sich in Abschnitt 6.1.
• SparseAddition operator+: Addition zweier Dünngitteroperatoren
• SparseDifference operator-: Differenz zweier Dünngitteroperatoren
• SparseAbs abs: Absolutwert eines Dünngitteroperators
• SparseScalarMultiplication operator*: Multiplikation eines Dünngitteropera-
tors mit einem Skalar
46
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Grid SparseGridgrid_vector
1..n
<<interface>>Stencil
ConstStencil VariableStencil
SparseStencilstencil_vector
1..*
1
0..*
1
0..*
Abbildung 3.9: Für die abstrakte Klasse Stencil gibt es entwederConstantStencil für konstante Koeffizienten, oder es wird für jede Koordinate aufGrid ein 3d-Punkte-Stern abgelegt.
• SparseStencilMultiplication operator*: Multiplikation eines Dünngitter-Sten-
cil-Objekts mit einem Dünngitteroperator
Auf algorithmischer Ebene werden hauptsächlich die elementaren Rechenopera-
tionen Addition und skalare Multiplikation auf dünnen Gittern verwendet. Abbil-
dung 3.10 vergleicht die Operatoren für SparseVariable und Variable.
Die Matrix-Vektor-Multiplikation erfordert zusätzlich die Operatoren aus Ab-
schnitt 3.1. Für einige Operatoren gibt es Varianten in einer Dimension sowie in meh-
reren Dimensionen gleichzeitig. Die folgende Liste gibt einen kurzen Überblick über
alle Operatoren.
• Addition operator+(): Addition zweier Operatoren
• Substraction operator-(): Subtraktion zweier Operatoren
• Abs abs(): Absolutwert eines Operators
• ScalarMultiplication operator*(): Multiplikation eines Operators mit einem
Skalar
• Diag diag(): Extrahiert die Diagonaleinträge eines Stencil-Objekts. Das Ergeb-
nis ist wiederum ein Operator und kann anschließend beispielsweise zu einer
Variablen addiert werden.
47
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
• Multiplication operator*(): Multiplikation eines Stencil-Objekts mit einem
Operator. Somit eine Matrix-Vektor-Multiplikation auf Grid-Ebene.
• Division operator/(): Punktweise Division zweier Operatoren. Die punktwei-
se Division durch die Diagonaleinträge eines Stencil-Objekts ermöglicht Jaco-
bi-Vorkonditionierung.
• Restriction restriction(): Restriktion eines Operators in einer Dimension i
(Rtt mit ti = ti − 1). Operation auf dem Dualraum entsprechend (3.2)
• MultiRestriction (restriction(): Restriktion eines Operators in beliebigen Di-
mensionen anhand eines Booleschen Vektors mit Einträgen für jede Dimension.
• Coarsening coarsening(): Extraktion des Grobgitteranteils in einer Dimension
i. Operator C tt mit ti = ti − 1 auf dem Primärraum entsprechend (3.3)
• MultiCoarsening coarsening(): Extraktion des Grobgitteranteils in beliebigen
Dimensionen anhand eines Booleschen Vektors mit Einträgen für jede Dimensi-
on.
• Prolongation prolongation(): Lineare Interpolation in einer Dimension i. Ope-
rator P tt mit ti = ti + 1 auf dem Primärraum entsprechend (3.1)
• MultiProlongation prolongation(): Lineare Interpolation in beliebigen Di-
mensionen anhand eines Booleschen Vektors prolongation mit Einträgen für
jede Dimension.
• SurplusPrimal surplusPrimal(): Umrechnung des Überschusses im Primär-
raum von nodaler Basis in Prewavelet-Darstellung für eine Dimension. Operator
St auf dem Primärraum entsprechend (3.4)
• SurplusDual surplusDual(): Umrechnung des Überschusses des Dualraums
von Prewavelet-Darstellung in nodale Basis in einer Dimension. Operator Dt auf
dem Dualraum entsprechend (3.5)
• CoarsePrimal coarsePrimal(): Extraktion des Grobgitteranteils einer Prewa-
velet-Zerlegung in einer Dimension.
• CoarseDual coarseDual(): Transfer des Dualraums in Basisfunktionen des
Grobgitters in einer Dimension.
48
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Diskretisierungssterne für konstante Koeffizienten bzw. variable Koeffizienten in
Tensorprodukt-Form lassen sich sehr effektiv rekursiv berechnen. Für kompliziertere
Terme muss auf die numerische Integration zurückgegriffen werden. Die numerische
Integration muss dabei die Struktur des dünnen Gitters als Abbruchkriterium berück-
sichtigen. Der variable Koeffizient wird dazu nur auf Gitterpunkten des dünnen Git-
ters ausgewertet. Für Gitter mit maximaler Tiefe |t| = n− 1 bedeutet dies, dass jeweils
nur die 2d Randpunkte des Hyperquaders berücksichtigt werden. Für |t| < n− 1 müs-
sen alle Punkte des dünnen Gitters, die sich innerhalb des Hyperquaders befinden, in
die Interpolation einbezogen werden.
Die numerische Integration des Bilinearoperators wurde im Rahmen einer Bachelor-
arbeit am Lehrstuhl für Systemsimulation untersucht [34]. Dieser Integrator kennt die
Tiefe des zu integrierenden Elements und verwendet es als Abbruchkriterium für die
rekursive Auswertung. Wegen des zuvor beschriebenen Konzepts und der Zerlegung
des dünnen Gitters in volle Untergitter ist ein Zugriff auf andere Gitter des dünnen
Gitters für den Integrator nicht möglich. Daher wird der variable Koeffizient aktuell
noch durch die Auswertung eines Funktionszeigers ermittelt. Eine Pufferung dieses
Wertes ist nur auf dem aktuellen Gitter möglich und stellt einen Nachteil der aktuellen
Implementierung dar.
Die jetzige Implementierung liefert für dreidimensionale Probleme mit großen Tie-
fen zuverlässige Ergebnisse und verlängert die Rechenzeit kaum. Sechsdimensionale
Probleme sind aufgrund der rasant wachsenden Anzahl an Einträgen der Diskretisie-
rungssterne mit 3d Einträgen pro Gitterpunkt jedoch noch nicht möglich. Hierfür muss
auf die analytische Integration zurückgegriffen werden. Dies beschränkt den Einsatz
von variablen Koeffizienten auf Tensorprodukte für n > 3. Numerische Ergebnisse
hierzu folgen in Abschnitt 4.2.
Eine wesentlich effektivere Variante wäre sicherlich eine hierarchische Abspeiche-
rung des variablen Koeffizienten. Für die Integration ist folglich ein ähnliches Ver-
teilungsverfahren wie für die Matrix-Vektor-Multiplikation notwendig. Allerdings
kommt es auch hier wieder zu fehlenden Pfaden bei überlappenden Elementen. Die
Berechnung der Einträge der Diskretisierungsmatrix erfolgt für lineare finite Elemente,
da diese einen kleineren Träger als Prewavelets besitzen. Durch deren fehlende Ortho-
gonalität können die Einträge überlappender Funktionen nicht vernachlässigt werden.
Im Falle der Matrix-Vektor-Multiplikation erfolgte die Prolongation im Primärraum
sowie für Restriktionen im Dualraum. Da Restriktionen für die Auswertung des Bili-
nearoperators im Primär- und Dualraum notwendig sind, sind vorgelagerte Prolonga-
49
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
tionen nicht möglich. Überschüsse feinerer Gitter müssen daher anderweitig beschafft
werden.
Sinnvoll wäre dazu, den variablen Koeffizienten in einer separaten Datenstruktur
abzuspeichern. Ein effizienter Zugriff über einen eindeutigen Index jedes Punktes ist
über eine Hash-Tabelle möglich. Somit könnten die Diskretisierungssterne für die je-
weils feinsten Gitter berechnet werden und durch Restriktion vergröbert werden. Da
die Berechnung durch Integration aber weiterhin aufwendiger als die Verwendung
von Tensorprodukten ist, ist die Kombination beider Verfahren sinnvoll. Mehrere Dis-
kretisierungssterne können dazu addiert und mit einem Skalar multipliziert werden
(vgl. Abbildung 3.11). Für die Helmholtz-Gleichung könnte der Poisson-Operator ana-
lytisch berechnet werden. Er wird anschließend auf den numerisch integrierten varia-
blen Koeffizienten addiert.
50
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Grid SparseGridgrid_vector
1..n
<<interface>>Operator
<<interface>>SparseOperator
Variable
Addition
Substraction
Abs
ScalarMultiplication
Diag
Multiplication
Division
Restriction
MultiRestriction
Coarsening
MultiCoarsening
Prolongation
MultiProlongation
SurplusPrimal
SurplusDual
CoarsePrimal
CoarseDual
SparseVariable
SparseAddition
SparseDifference
SparseAbs
SparseScalarMultiplication
SparseStencilMultiplication
Abbildung 3.10: Für die Klasse Variable steht eine Vielzahl an Operatoren für ma-thematische Ausdrücke zur Verfügung. Mit SparseVariable können ebenfalls Be-rechnungen durchgeführt werden.
51
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Grid SparseGridgrid_vector
1..n
<<interface>>StencilOperator
<<interface>>SparseStencilOperator
Stencil
StencilAddition
StencilScalarMultiplication
SparseStencil
SparseStencilAddition
SparseStencilScalarMultiplication
Abbildung 3.11: Verschiedene Stencil- und SparseStencil-Klassen können ad-diert werden.
3.6 Komplexitätsanalyse und Kostendiskussion
In diesem Abschnitt soll die Laufzeit von Algorithmus 4 zur Matrix-Vektor-Multipli-
kation betrachtet werden. Die Kombination von Prewavelets und Jacobi-Vorkonditio-
nierung ergibt eine Konditionszahl κ = O (1) für hochdimensionale Probleme [21].
Dadurch ergibt sich für die Anzahl der Iterationen der Methode der konjugierenden
Gradienten eine Iterationszahl O (1) und unter der Voraussetzung linearer Laufzeit
der Matrix-Vektor-Multiplikation eine lineare Skalierung mit der Anzahl der Gitter-
punkte des dünnen Gitters.
Zur Berechnung der Matrix-Vektor-Multiplikation werden volle Untergitter Vt mit
Tiefe |t| < n verwendet. Deren Speicheraufwand ist größer als bei der ausschließlichen
Speicherung der Überschüsse.
Lemma 4. Die Summe der Gitterpunkte aller vollen Untergitter Ndn für ein d-dimensionales
Dünngitter mit Tiefe n, skaliert mit O(2n nd−1).
52
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
Beweis. Der Beweis erfolgt mithilfe der vollständigen Induktion. Für d = 1 gilt
N1n =
n−1
∑t=0
(2i+1 − 1
)= O
(2n+1
).
Hochdimensionale dünne Gitter mit Tiefenvektor t = (t1, . . . , td) werden als Tensor-
produkt konstruiert. Dessen Basis ist das (d− 1)-dimensionale dünne Gitter der Tiefe
(n− td) mit jeweils 2td+1 Gitterpunkten.
Ndn = ∑
td<n2td+1Nd−1
n−td= ∑
td<n2td+1O
(2n−td nd−2
)= nO
(2n nd−2
)= O
(2n nd−1
)
Als Nächstes wird der Rechenaufwand für die rekursive Matrix-Vektor-Multiplika-
tion betrachtet.
Lemma 5. Die Laufzeit der Matrix-Vektor-Multiplikation skaliert linear mit der Anzahl der
Gitterpunkte des dünnen Gitters und ist daher O(2n nd−1).
Beweis. Auch hier wird wieder der Beweis durch Induktion angewendet. Dafür müs-
sen drei Fälle unterschieden werden:
1. Prolongation
2. Restriktion, wobei im rekursiven Aufruf eine Restriktion folgt.
3. Restriktion, wobei im rekursiven Aufruf eine Prolongation folgt. Daher erfolgt
zusätzlich eine Matrix-Vektor-Multiplikation
Für d = 1 erfolgt kein rekursiver Funktionsaufruf. In Algorithmus 4 entspricht dies
δ = 0. Der Beweis reduziert sich auf Prolongation und Restriktion, da kein rekursiver
Aufruf erfolgt. Für die Prolongation wird auf jedem Gitterpunkt des feinen Gitters eine
Rechenoperation durchgeführt:
n−1
∑i=1
(2i+1 − 1
)= O
(2n+1
)Für die Restriktion wird jeweils eine Rechenoperation für jeden Gitterpunkt des
groben Gitters benötigt. Zusätzlich werden alle Gitterpunkte mit dem 3d-Punkte-Stern
53
KAPITEL 3. MATRIX-VEKTOR-MULTIPLIKATION FÜR DÜNNE GITTER
multipliziert:
n−2
∑i=0
(2i+1 − 1
)+
n−1
∑i=0
(3d 2i+1 − 1
)= O
(2n+1
)Für d ≥ 1 wird zusätzlich der rekursive Aufruf berücksichtigt.
Fall 1 setzt sich aus der Prolongation und dem rekursiven Aufruf zu
n−1
∑i=1
(2i+1 + 1
)O(
2n−i (n− i)d−2)+
n−1
∑i=0
(2i+1 + 1
)O(
2n−i (n− i)d−2)= O
(2nnd−1
)zusammen. Der rekursive Aufruf löst für jeden der 2i+1 Gitterpunkte ein (d− 1)-
dimensionales Problem mit Tiefe n− i.
Für Fall 2 wird ein rekursiver Aufruf sowie eine Restriktion und Matrix-Vektor-
Multiplikation für das aktuelle Vollgitter benötigt:
n−1
∑i=1
(2i+1 + 1
)O(
2n−i (n− i)d−2)+
n−1
∑i=0
(2i+1 + 1
)O(
2n−i (n− i)d−2)+
n−2
∑i=0
3d(
2i+1 − 1)O(
2n−i (n− i)d−2)= O
(2nnd−1
)Für den Wechsel von Prolongation auf Restriktion (Fall 3) wird zusätzlich eine
Matrix-Vektor-Multiplikation der Prolongationen des rekursiven Aufrufs mit dem 3d-
Punkte-Stern durchgeführt:
n−1
∑i=1
(2i+1 + 1
)O(
2n−i (n− i)d−2)+
n−1
∑i=0
(2i+1 + 1
)O(
2n−i (n− i)d−2)
n−2
∑i=0
3d(
2i+1 − 1)O(
2n−i (n− i)d−2)= O
(2nnd−1
)
54
Kapitel 4
Hochdimensionale partielle
Differentialgleichungen auf dünnen
Gittern
In Kapitel 3 wurde ein effizientes Verfahren zur Berechnung der Matrix-Vektor-
Multiplikation für die Prewavelet-Diskretisierung vorgestellt. Dieses kann direkt in
der Methode der konjugierenden Gradienten (siehe Algorithmus 3.1) verwendet wer-
den. Außerdem wurden Algorithmen zur Umrechnung von der Prewavelet-Basis in
die nodale Basis und umgekehrt präsentiert.
Diese werden im Folgenden aufgegriffen und mit numerischen Beispielen getestet.
Zunächst werden dreidimensionale Helmholtz-Probleme mit einem konstanten und
variablen Helmholtz-Term verwendet.
Anschließend werden Gebiete mit gebogenen Kanten eingeführt. Daraus ergeben
sich variable Koeffizienten in den Ableitungen, und eine Darstellung als Tensorpro-
dukt ist nicht mehr möglich. Zur Berechnung der Koeffizienten der Steifigkeits- und
Massenmatrix wird auf numerische Integration zurückgegriffen. Aufgrund des hohen
Aufwands ist eine effektive Berechnung für höhere Dimensionen mit der aktuellen
Implementierung noch nicht möglich. Dazu sind noch weitere Anpassungen des Ab-
bruchkriteriums notwendig. Daher sind sechsdimensionale Probleme für die Berech-
nung der Diskretisierungssterne auf variable Koeffizienten als Tensorprodukt ange-
wiesen.
Alle vorgestellten Algorithmen arbeiten unabhängig von der Diskretisierung und
greifen auf 3d-Punkte-Diskretisierungssterne linearer finiter Elemente zurück.
55
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
4.1 Prewavelet-vorkonditionierte Methode der konju-
gierenden Gradienten
Die Anzahl der Iterationen der Methode der konjugierenden Gradienten kann mit-
hilfe einer Vorkonditionierung erheblich verbessert werden. Die Verwendung von
Prewavelets in Kombination mit einem Jacobi-Vorkonditionierer ist sehr gut für
projektionsbasierte Methoden im Krylow-Raum geeignet [38]. Tabelle 4.1 vergleicht
die Konditionszahl κ (A) der Systemmatrix A für ein dreidimensionales Helmholtz-
Problem mit Prewavelet-Diskretisierung sowie zusätzlicher Jacobi-Vorkonditionie-
rung mit CT AC [15]. Anstelle der Diagonaleinträge ist die Verwendung des Faktors
2−1 als Vorkonditionierung ausreichend [38]. Die Berechnung von κ erfolgte mithil-
fe der Potenzmethode. Listing 4.1 zeigt die Implementierung der vorkonditionierten
Methode der konjugierenden Gradienten mit 2−|t|. Dadurch kann sowohl für konstan-
te als auch variable Koeffizienten die Ordnung O (1) für die Konditionszahl erreicht
werden.
Listing 4.1: vorkonditioniertes CG-Verfahren
1 multiply(A_matrix,u_vector,r_vector);
2 r_vector = rhs_vector - r_vector;
3 h_vector = r_vector;
4 precondition(h_vector,0.5);
5 d_vector = h_vector;
6
7 for(int i = 0; i < max_iterations; ++i)
8 const double res_product = product(r_vector,h_vector);
9 if(sqrt(res_product) < 1e-14)
10 return;
11
12 multiply(A_matrix,d_vector,z_vector);
13 const double alpha = res_product/
14 product(d_vector,z_vector);
15 u_vector = u_vector + alpha*d_vector;
16 r_vector = r_vector - alpha*z_vector;
17 h_vector = r_vector;
18 precondition(h_vector,0.5);
19
56
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
20 const double beta = product(r_vector,h_vector)
21 /res_product;
22 d_vector = h_vector + beta*d_vector;
23
n DOF κ (A) κ(CT AC
)2 7 7.70 1.633 31 33.07 2.594 111 156.75 2.856 1023 454.82 3.147 2815 673.84 3.428 7423 836.71 3.619 18943 880.15 3.79
Tabelle 4.1: Konditionszahl κ (A) der Prewavelet-Diskretisierung für d = 3 mit varia-blen Koeffizienten und Jacobi-Vorkonditionierung κ
(CT AC
)Die Effizienz der Vorkonditionierung soll am Beispiel der Helmholtz-Gleichung mit
konstantem Helmholtz-Koeffizienten
−∆u + λu = f in Ω ⊂ R3 (4.1)
u = g on ∂Ω.
gezeigt werden.
Das Residuum in Abbildung 4.1 sinkt für große Tiefen n > 6 nur sehr langsam.
Die Methode der konjugierenden Gradienten verwendet als Abbruchkriterium die
gewichtete diskrete L2-Norm. Dies führt ohne Vorkonditionierung zu relativ großen
Iterationszahlen. Die Verwendung der Maximumsnorm zeigt ein ähnliches Verhalten
(ebenfalls Abbildung 4.1).
Abbildung 4.2 zeigt die Abweichung e der numerischen Lösung uDn von der exak-
ten Lösung u (x, y, z) = sin (π x) sin (π y) sin (π z) in der diskreten L2-Norm
en,∞ = ‖u− uDn‖∞ (4.2)
sowie der Maximumsnorm
en,2 = ‖u− uDn‖2. (4.3)
Ohne Vorkonditionierung wird der Diskretisierungsfehler auch nach vielen Itera-
57
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
10-10
10-08
10-06
10-04
10-02
10+00
0 5 10 15 20 25 30
Iterationen
L∞
-Norm
n = 2
n = 3
n = 4
n = 5
n = 6
n = 7
n = 8
n = 9
n = 10
10-10
10-08
10-06
10-04
10-02
10+00
0 5 10 15 20 25 30
Iterationen
L∞
-Norm mit Jacobi-Vorkonditionierung
10-05
10-04
10-03
10-02
10-01
10+00
0 5 10 15 20 25 30
Iterationen
L2-Norm
n = 2
n = 3
n = 4
n = 5
n = 6
n = 7
n = 8
n = 9
n = 10
10-05
10-04
10-03
10-02
10-01
10+00
0 5 10 15 20 25 30
Iterationen
L2-Norm mit Jacobi-Vorkonditionierung
Abbildung 4.1: Konvergenz des Residuums für L∞-Norm (oben) und L2-Norm (unten)jeweils ohne (links) und mit (rechts) Vorkonditionierung.
tionen nicht erreicht (Abbildung 4.2 linke Hälfte), wogegen mit Vorkonditionierung
selbst für Tiefe n = 10 und 47103 bereits nach 20 Iterationen der Diskretisierungsfehler
erreicht wird. In Tabelle 4.2 ist der Diskretisierungsfehler für beide Normen aufgeführt.
Für die Konvergenz des Interpolationsfehlers gilt [3]
‖u− uDn‖∞ = O(
h2 log2 (h)d−1)
(4.4)
‖u− uDn‖2 = O(
h2 log2 (h)d−1)
(4.5)
sowie für die H1-Norm [31]
‖u− uDn‖H1 ≤ ‖u‖M2(Ω)
(h log2 (h)
d−1)
. (4.6)
Daher ergibt sich mit n = 10 und d = 3 ein theoretischer Konvergenzfaktor füren−1,2
en,2=
en−1,∞en,∞
= 4(
n−1n
)d−1von 3.16 sowie 1.58 für
en−1,H1
en,H1= 2
(n−1
n
)d−1. Alle in
58
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
10-05
10-04
10-03
10-02
10-01
10+00
0 5 10 15 20 25 30
Iterationen
L∞
-Norm
n = 2
n = 3
n = 4
n = 5
n = 6
n = 7
n = 8
n = 9
n = 10
10-05
10-04
10-03
10-02
10-01
10+00
0 5 10 15 20 25 30
Iterationen
L∞
-Norm mit Jacobi-Vorkonditionierung
10-06
10-05
10-04
10-03
10-02
10-01
10+00
0 5 10 15 20 25 30
Iterationen
L2-Norm
n = 2
n = 3
n = 4
n = 5
n = 6
n = 7
n = 8
n = 9
n = 10
10-06
10-05
10-04
10-03
10-02
10-01
10+00
0 5 10 15 20 25 30
Iterationen
L2-Norm mit Jacobi-Vorkonditionierung
Abbildung 4.2: Konvergenz des Fehlers für L∞-Norm (oben) und L2-Norm (unten)jeweils ohne (links) und mit (rechts) Vorkonditionierung.
Tabelle 4.2 gemessenen Werte übertreffen diese Abschätzung und erreichen für große
Tiefen nahezu den Konvergenzfaktor voller Gitter.
59
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
n DOF en,∞en−1,∞
en,∞en,2
en−1,2en,2
en,H1en−1,H1
en,H1
2 7 1.41× 10−1 7.58× 10−3 1.36× 10−1
3 31 7.84× 10−2 1.80 6.66× 10−3 2.63 1.07× 10−1 1.274 111 3.08× 10−2 2.54 2.33× 10−3 2.86 6.81× 10−2 1.575 351 1.04× 10−2 2.96 7.78× 10−4 3.00 3.81× 10−2 1.796 1023 3.27× 10−3 3.19 2.50× 10−4 3.12 2.00× 10−2 1.907 2815 9.83× 10−4 3.33 7.75× 10−5 3.22 1.02× 10−2 1.968 7423 2.98× 10−4 3.29 2.35× 10−5 3.30 5.16× 10−3 1.989 18943 8.87× 10−5 3.37 6.95× 10−6 3.37 2.59× 10−3 1.99
10 47103 2.62× 10−5 3.38 2.02× 10−6 3.43 1.29× 10−3 2.00
Tabelle 4.2: Diskretisierungsfehler für konstante Koeffizienten
60
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
4.2 Variable Koeffizienten für krummlinig umrandete
Gebiete
Als nächstes sollen Helmholtz-Probleme mit variablem Helmholtz-Koeffizienten
λ (x, y, z) für d = 3 untersucht werden. Die exakte Lösung u wird wie zuvor für kon-
stante Koeffizienten gewählt. Die rechte Seite f ergibt sich entsprechend aus der Wahl
des variablen Koeffizienten:
−∆u + λu = f in Ω ⊂ R3 (4.7)
u = g auf ∂Ω.
Der variable Koeffizient
λ (x, y, z) =1
1 + x2 + y2 + z2 (4.8)
wird dabei so gewählt, dass keine Zerlegung in Faktoren mit separierten Variablen
(Tensorprodukt) mehr möglich ist.
Während für konstante Koeffizienten sowie für die meisten Tensorprodukt-
Zerlegungen eine exakte Integration möglich ist, muss für Gleichung 4.8 auf nume-
rische Integration ∫Ω
a(vt,i, vt′,j
)dx
des Bilinearoperators a(vt,i, vt′,j
):= ∇u · ∇v + λu v zur Berechnung der Steifigkeits-
matrix zurückgegriffen werden.
Hierzu wurde im Rahmen einer Bachelorarbeit [34] eine Software entwickelt. Mit
dieser können finite Elemente auf einem dünnen Gitter integriert werden. Entschei-
dend ist dabei, dass der variable Koeffizient nur an den Stützstellen des dünnen Git-
ters ausgewertet wird. Hierzu muss bei der Integration die aktuelle Tiefe sowie die
maximale Tiefe n berücksichtigt werden.
Für Tabelle 4.3 wurden numerische Integration für den Helmholtz-Koeffizienten so-
wie analytische Integration für den Laplace-Operator verwendet. Die Fehlerkonver-
genz ist dabei nahezu identisch mit konstanten Koeffizienten in Tabelle 4.2. Für große
Tiefen n > 8 kommt es zu einem Absinken der Fehlerkonvergenz. Dies ist auf das
Abbruchkriterium der Integration zurückzuführen. Eine vollständige Kopplung zwi-
schen Integrator und dünnem Gitter ist zum aktuellen Zeitpunkt noch nicht realisiert.
Dies führt zu überflüssigen Berechnungen. Um die Laufzeit für große Tiefen zu kon-
61
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
trollieren, muss daher ein fixes Abbruchkriterium für die maximale Tiefe gesetzt wer-
den. Dies hat zur Folge, dass für flächenmäßig große Gebiete zu früh abgebrochen
wird, obwohl das dünne Gitter noch eine höhere Genauigkeit bieten würde. Entspre-
chend können variable Koeffizienten für kleine |t| nicht mit voller Genauigkeit inte-
griert werden und weisen eine reduzierte Fehlerordnung auf. Auf konstante Koeffizi-
enten hat dies keinen Einfluss, da diese exakt integriert werden können.
n DOF en,∞en−1,∞
en,∞en,2
en−1,2en,2
en,H1en−1,H1
en,H1
2 7 1.40× 10−1 1.73× 10−2 1.35× 10−1
3 31 7.80× 10−2 1.80 6.59× 10−3 2.62 1.07× 10−1 1.264 111 3.07× 10−2 2.54 2.32× 10−3 2.85 6.81× 10−2 1.575 351 1.04× 10−2 2.95 7.75× 10−4 2.99 3.81× 10−2 1.796 1023 3.27× 10−3 3.18 2.49× 10−4 3.11 2.00× 10−2 1.907 2815 9.86× 10−4 3.31 7.78× 10−5 3.20 1.02× 10−2 1.968 7423 3.03× 10−4 3.25 2.38× 10−5 3.26 5.16× 10−3 1.989 18943 9.39× 10−5 3.23 7.41× 10−6 3.22 2.59× 10−3 1.99
10 47103 3.14× 10−5 2.99 2.74× 10−6 2.71 1.29× 10−3 2.00
Tabelle 4.3: Diskretisierungsfehler für variable Koeffizienten λ (x, y, z) = 11+x2+y2+z2
Bisher wurden lediglich Einheitshyperwürfel ]0, 1[ betrachtet. Damit auch komple-
xere Geometrien verwendet werden können, werden krummlinige Koordinatensyste-
me eingeführt [11]. Diese bilden planare Gebiete durch invertierbare Abbildungen auf
den Hyperwürfel ab. Durch Verknüpfung mehrerer Würfel können auch komplexere
Gebiete auf Einheitswürfel abgebildet werden. Abbildung 4.4 zeigt eine Kreisschei-
be, bestehend aus 5 zusammenhängenden strukturierten Gebieten, die jeweils auf das
Einheitsquadrat abgebildet werden. Wobei jedes Teilgebiet durch gemeinsame Kanten
mit seinen Nachbarn verbunden ist. In diesem Fall ergeben sich für die Anzahl der
Gitterpunkte drei Freiheitsgrade. Jeder Freiheitsgrad ist dabei wie eine Dimension zu
behandeln.
Hierzu wurde die Bibliothek „UGblocks“ für zweidimensionale block-strukturierte
Gitter um dünne Gitter erweitert. In „UGblocks“ können Vierecke durch gemeinsa-
me Kanten miteinander verknüpft werden. Anschließend wird die Anzahl der Frei-
heitsgrade durch Färbung ermittelt. Nun erfolgt für jede Farbe eine Verfeinerung des
dünnen Gitters. Der Übergang zwischen regulär verfeinerten Vierecken erfolgt mithil-
fe der Neumann„=Prewavelet-Randelemente sowie des Korrekturverfahrens aus Ab-
schnitt 3.4.3. Durchgehende Prewavelets sind aufgrund unterschiedlicher Färbungen
nicht möglich.
62
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
Jedes Viereck kann außerdem durch Koordinatentransformationen der Kanten an-
gepasst werden. Abbildung 4.3 zeigt die Abbildung Ψ : Q 7→ P vom Einheitsquadrat
P auf das krummlinige Gebiet Q, wobei (s1, s2) 7→ (x1, x2) = Ψ (x1x2), sodass
xi = Ψi (s1, s2, . . . , sn) (4.9)
si = Ψ−1i (x1, x2, . . . , xn) . (4.10)
Partielle Differentialgleichungen der Form
∇ (A (x)∇u) +∇u b (x) + c (x) u = f (x) (4.11)
werden dazu überführt in [9]
∇ (A∗ (s)∇u) +∇u b∗ (s) + c∗ (s) u = f ∗ (s) (4.12)
mit
A∗ (s) :=J−1Ψ (s)
(J−1Ψ (s) (A (Ψ (s)))
)|det JΨ (s)|
b∗ (s) :=J−1Ψ (s) (b (Ψ (s))) |det JΨ (s)|
c∗ (s) :=c (Ψ (s)) |det JΨ (s)|
f ∗ (s) := f (Ψ (s)) |det JΨ (s)| .
s1
s2
PΨ
x1
x2
Q
Abbildung 4.3: Koordinatentransformation mit stetiger Abbildung Ψ
Als numerisches Testbeispiel wird der dreidimensionale Einheitshyperwürfel ent-
63
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
Abbildung 4.4: Block-strukturiertes dünnes Gitter mit krummlinigen Rändern
sprechend Abbildung 4.5 mit
x1 =12
cos(
π
2
(s1 +
12
))(s2 + 1)
x2 =12
sin(
π
2
(s1 +
12
))(s2 + 1)
x3 = s3 (4.13)
transformiert.
Dadurch erhält man für das Poisson-Problem folgenden variablen Koeffizienten:
A∗ (s1, s2) =
− 2
π (s2+1) 0 0
0 −π (s2+1)2 0
0 0 −π3 (s2+1)8
(4.14)
Tabelle 4.4 zeigt die Entwicklung des Diskretisierungsfehlers für verschie-
64
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
dene Tiefen. Hierzu wurde die Abweichung von der exakten Lösung u =
sin (xπ) sin (yπ) sin (zπ) mit verschiedenen Normen bestimmt (Vgl Tabelle 4.4).
Für die rechte Seite ergibt sich daher
f =π2 cos
(π s22
)cos(π z) sin
(π s12
)4
−π cos(π z) sin
(π s12
)sin(π s2
2
)2 (s2 + 1)
(4.15)
−π3 cos(π z) sin
(π s12
)sin(π s2
2
)(s2 + 1)
8
−π5 cos(π z) sin
(π s12
)sin(π s2
2
)(s2 + 1)
8.
Abbildung 4.5: Dünnes Gitter mit Tiefe n = 7 für ein dreidimensionales, krummlinigumrandetes Gebiet
4.3 Variable Koeffizienten in hohen Dimensionen
In [15] wurde gezeigt, dass die Konditionszahl sowohl in der Tiefe n als auch der Di-
mension d die Komplexität O (1) aufweist. Obwohl durch den Einsatz dünner Gitter
der Fluch der Dimension halbwegs umgangen werden kann, wächst der Speicherauf-
wand mit O(3dN(log N)d−1), da die Diskretisierungssterne der Steifigkeitsmatrix voll-
ständig abgespeichert werden. Zunächst wurde der Ansatz verfolgt, diese Einträge dy-
namisch zu berechnen, da sie für jeden Durchlauf von Algorithmus 4 nur ein einziges
Mal angewendet werden. Sofern jeder der 2d Fälle in einem eigenen Prozess ausge-
führt wird (Parallelisierung wird in Kapitel 5 behandelt), wird sogar pro Iteration der
65
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
n DOF en,∞en−1,∞
en,∞en,2
en−1,2en,2
en,H1en−1,H1
en,H1
2 7 3.94× 10−2 7.58× 10−3 6.43× 10−2
3 31 2.23× 10−2 1.77 2.99× 10−3 2.53 3.44× 10−2 1.874 111 1.04× 10−2 2.14 1.02× 10−3 2.92 2.54× 10−2 1.355 351 4.02× 10−3 2.59 3.61× 10−4 2.83 1.60× 10−2 1.596 1023 1.34× 10−3 3.00 1.29× 10−4 2.81 9.23× 10−3 1.737 2815 4.23× 10−4 3.17 4.36× 10−5 2.95 4.87× 10−3 1.898 7423 1.28× 10−4 3.30 1.45× 10−5 3.02 2.51× 10−3 1.949 18943 3.77× 10−5 3.40 4.59× 10−6 3.15 1.27× 10−3 1.97
10 47103 1.08× 10−5 3.48 1.42× 10−6 3.23 6.41× 10−4 1.99
Tabelle 4.4: Diskretisierungsfehler für krummlinig umrandetes Gebiet für L∞-Norm,L2-Norm und H1-Norm
Methode der konjugierenden Gradienten nur ein einziger Zugriff ausgeführt. Selbst
bei konstanten Koeffizienten und variablen Koeffizienten als Tensorprodukt, und folg-
lich ohne numerische Integration, dauert die Berechnung der Diskretisierungssterne
wesentlich länger als die Matrix-Vektor-Multiplikation. Daher kann auf die statische
Berechnung mit Abspeicherung nicht verzichtet werden.
In diesem Abschnitt soll die Fehlerordnung für höhere Dimensionen betrachtet wer-
den. Damit ein Vergleich mit d = 3 gezogen werden kann, ist eine maximale Tiefe
n = 10 wünschenswert. Daraus ergibt sich anhand des Speicheraufwands eine Limi-
tierung auf d = 6. Das sechsdimensionale Helmholtz-Problem
−∆u + cu = f in Ω := [0, 1]6 (4.16)
u = 0 on ∂Ω
wird auf einem Cluster mit 8 Knoten und 256GB RAM pro Knoten ausgeführt. Es wer-
den sowohl der konstante Koeffizient c = 1 als auch der variable Koeffizient
c (x, y, z, u, v, w) :=(1− x2
) (1− y2
) (1− z2
) (1− u2
) (1− v2
) (1− w2
). (4.17)
betrachtet. Die rechte Seite f wird so gewählt, dass
u = sin (xπ) sin (yπ) sin (zπ) sin (uπ) sin (vπ) sin (wπ)
eine Lösung von Gleichung 4.16 ist.
66
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
Tabelle 4.5 zeigt den Diskretisierungsfehler für konstante Koeffizienten (c = 1) so-
wie den variablen Koeffizienten aus Gleichung 4.17 in der Maximumsnorm. Der Dis-
kretisierungsfehler verhält sich dabei entsprechend der Herleitung in [41]. Das Kon-
vergenzverhalten verschlechtert sich auch in der L2-Norm (Tabelle 4.6) nicht und kon-
vergiert für konstante Koeffizienten genauso schnell wie für variable Koeffizienten.
Dies zeigt, dass durch die Anwendung der Semi-Orthogonalität kein bemerkenswer-
ter Fehler entsteht.
konstant Koeffizient variabler Koeffizientn DOF en,∞
en−1,∞en,∞
en,∞en−1,∞
en,∞
2 13 4.04× 10−1 4.04× 10−1
3 97 2.84× 10−1 1.42 2.84× 10−1 1,424 545 1.07× 10−1 2.65 1.08× 10−1 2.645 2561 4.03× 10−2 2.65 4.03× 10−2 2.676 10625 1.53× 10−2 2.63 1.53× 10−2 2.637 40193 5.66× 10−3 2.71 5.66× 10−3 2.718 141569 2.13× 10−3 2.66 2.13× 10−3 2.669 471041 7.88× 10−4 2.70 7.88× 10−4 2.70
10 1496065 2.79× 10−4 2.82 2.79× 10−4 2.82
Tabelle 4.5: Fehlerkonvergenz für das sechsdimensionale Helmholtz-Problem ohnebzw. mit variablem Koeffizienten für die Maximumsnorm
konstant Koeffizient variabler Koeffizientn DOF en,2
en−1,2en,2
en,2en−1,2
en,2
2 13 6.37× 10−3 1.77× 10−2
3 97 4.38× 10−3 1.45 1.37× 10−2 1.294 545 2.52× 10−3 1.74 5.89× 10−3 2.335 2561 1.27× 10−3 1.99 2.26× 10−3 2.616 10625 5.76× 10−4 2.20 8.78× 10−4 2.577 40193 2.43× 10−4 2.37 3.47× 10−4 2.538 141569 9.7× 10−5 2.50 1.37× 10−4 2.549 471041 3.7× 10−5 2.62 5.3× 10−5 2.60
10 1496065 1.4× 10−5 2.72 2.0× 10−5 2.66
Tabelle 4.6: Fehlerkonvergenz für das sechsdimensionale Helmholtz-Problem ohnebzw. mit variablem Koeffizienten für die L2-Norm
67
KAPITEL 4. HOCHDIMENSIONALE PARTIELLE DIFFERENTIALGLEICHUNGENAUF DÜNNEN GITTERN
4.4 Inhomogene Randprobleme
Inhomogene Randbedingungen wurden bereits in Abschnitt 3.4.3 theoretisch betrach-
tet. Daher wird sich dieser Abschnitt der praktischen Umsetzung sowie numerischen
Ergebnissen widmen. Algorithmus 1 verwendet die in Gleichung 2.28 vorgestellten
Prewavelets. Hierbei ist es vollkommen ausreichend, dem Vektor der nodalen Basis
lediglich Werte an den Randpunkten zuzuweisen. Nun erfolgt die Multiplikation mit
der Steifigkeitsmatrix. Diese beinhaltet bereits die Korrektur des Dualraums. Der resul-
tierende Korrekturvektor kann anschließend von der rechten Seite abgezogen werden.
Der folgende iterative Löser (Listing 3.1 und 4.1) löst ein homogenes Randproblem
und muss nicht weiter angepasst werden. Abschließend wird die Randfunktion der
Lösung aufaddiert und in die nodale Basis mit Algorithmus 2 umgewandelt.
Tabelle 4.7 zeigt die Abweichung e der numerischen Lösung uDn von der exakten
Lösung u (x, y, z) = exp (x) exp (y) exp (z) u (x, y, z) = ex ey ez in der diskreten L2-
Norm sowie der Maximumsnorm gemessen.
n DOF en,∞en−1,∞
en,∞en,2
en−1,2en,2
en,H1en−1,H1
en,H1
2 81 1.70× 10−2 1.61× 10−3 1.97× 10−2
3 225 5.88× 10−3 2.89 6.95× 10−4 2.31 1.29× 10−2 1.524 593 1.68× 10−3 3.50 3.21× 10−4 2.16 8.25× 10−3 1.575 1505 5.05× 10−4 3.32 1.26× 10−4 2.55 4.48× 10−3 1.846 3713 1.49× 10−4 3.38 4.60× 10−5 2.74 2.41× 10−3 1.867 8961 4.33× 10−5 3.44 1.50× 10−5 3.06 1.25× 10−3 1.938 21249 1.35× 10−5 3.21 4.61× 10−6 3.26 6.34× 10−4 1.979 49665 4.13× 10−6 3.27 1.36× 10−6 3.38 3.22× 10−4 1.97
10 114689 1.22× 10−6 3.38 3.90× 10−7 3.49 1.61× 10−4 1.99
Tabelle 4.7: Diskretisierungsfehler für inhomogene Randbedingungen
68
Kapitel 5
Parallelisierung und Laufzeitanalyse
Bedingt durch die vielen Inter-Gitter-Operatoren (Prolongation, Restriktion, Vergröbe-
rung) ist eine Aufteilung des Gitters auf parallele Systeme nicht sinnvoll. Ebenso ist
die Anzahl der Gitterpunkte relativ gering und kann somit problemlos für jeden Pro-
zess oder zumindest auf jedem Knoten gespeichert werden. Der hohe Rechenaufwand
entsteht zum einen aus der rechenintensiven lokalen Matrix-Vektor-Multiplikation (3d
Operationen pro Gitterpunkt) und zum anderen aus der umschließenden Wiederho-
lungsschleife über alle 2d Fälle. Da jeder einzelne Fall nahezu den selben Rechenauf-
wand besitzt, wurde der Ansatz gewählt, diese auf verteilten Systemen mithilfe von
MPI zu parallelisieren. Zusätzlich wurde für die Matrix-Vektor-Multiplikation sowie
für alle weiteren lokalen Vektoroperationen eine Parallelisierung durch OpenMP ge-
wählt. In diesem Kapitel werden im Folgenden zunächst die parallelen Vektoropera-
tionen mit geteiltem Speicher untersucht. Anschließend soll die parallele Berechnung
der 2d Knoten sowie der Aufwand für den Austausch der Ergebnisse betrachtet wer-
den. Der große Vorteil des in Kapitel 3 vorgestellten Algorithmus ist, dass für die Par-
allelisierung außer der Aufteilung auf die Prozessoren sowie der Addition der Teiler-
gebnisse keine weiteren Anpassungen notwendig sind. Die Lastaufteilung erfolgt sehr
homogen, und der zusätzliche Aufwand für den Datenaustausch ist sehr gering.
69
KAPITEL 5. PARALLELISIERUNG UND LAUFZEITANALYSE
5.1 Parallelisierung der Vektoroperationen für geteilten
Speicher
Die Implementierung des in Kapitel 3 vorgestellten Verfahrens beruht auf einer Ex-
pression-Template-basierten Bibliothek. Die in Abschnitt 3.5 vorgestellten elementaren
Vektoroperationen lassen sich sehr einfach auf Shared-Memory-Architekturen paralle-
lisieren. In Listing 5.1 wird einem Vektor ein beliebiger Operator oper zugewiesen.
Hierzu wird im Zuweisungsoperator für jeden Punkt des Gitters der Operator ausge-
wertet. Eine einzige Schleife übernimmt die Iteration über alle Dimensionen und kann
über #pragma omp parallel parallelisiert werden.
Die Laufzeiten sind jeweils für eine Addition zweier Vektoren c = a + b für ein
3-dimensionales dünnes Gitter in Tabelle 5.1 und ein 6-dimensionales Gitter in Ta-
belle 5.3 aufgeführt. Diese sind offensichtlich hauptsächlich durch die Bandbreite des
Speicherzugriffs limitiert, da die Berechnung durch Parallelisierung nur unwesentlich
beschleunigt wird. Der Speedup in Tabelle 5.2 bzw. Tabelle 5.4 zeigt die Beschleuni-
gung der parallelen Addition im Vergleich zur Berechnung mit einem Thread. Selbst
für große Datenstrukturen (n = 10) wird der theoretische Speedup um die Anzahl der
Threads nicht erreicht. Für eine große Anzahl paralleler Threads kommt es sogar zu
einer Verlangsamung.
Als nächstes wird die Multiplikation c = A * b jedes Punktes mit einem Diskreti-
sierungsstern betrachtet. Für eine Dünngittervariable wird dazu für jedes volle Unter-
gitter eine Matrix-Vektor-Multiplikation ausgeführt. Somit sind für jeden Gitterpunkt
je 3d Additionen und Multiplikationen notwendig. Auch hier erweist sich die Speicher-
bandbreite als limitierender Faktor. Eine Parallelisierung der Multiplikation führt für
d = 3 sogar in den meisten Fällen zu einer Verlangsamung (vgl. Tabelle 5.6). Auch für
höherdimensionale Probleme zeigt sich in Tabelle 5.8 keine nennenwerte Beschleuni-
gung.
Während in Tabelle 5.5 für d = 3 die Laufzeit entsprechend der Anzahl der Gitter-
punkte skaliert, zeigen sich in Tabelle 5.7 für d = 6 erhebliche Sprünge zwischen n = 7
und n = 8. Die Laufzeit steigt in diesem Fall um mehr als den Faktor 102, während sich
die Anzahl der Gitterpunkte etwa verdreifacht. Daher werden nun die Einzellaufzeiten
näher betrachtet.
Für n = 8 beträgt die maximale Anzahl an Gitterpunkten der vollen Untergitter
1701, für n = 7 dagegen nur 729. Eine genaue Analyse der Laufzeiten ergab, dass es ab
1024 Gitterpunkten zu einem drastischen Anstieg der Laufzeiten um den Faktor 100
70
KAPITEL 5. PARALLELISIERUNG UND LAUFZEITANALYSE
kommt. Der plötzliche Anstieg der Laufzeit lässt sich daher auf Verdrängungsstrate-
gien im Cache zurückführen. Der Diskretisierungsstern greift im Extremfall auf 567
Einträge benachbarter Elemente zu. Elementare Multiplikationen auf Vollgitterebene
werden auch für die Berechnung der Matrix-Vektor-Multiplikation benötigt und ver-
ursachen dort einen erheblichen Anteil am Rechenaufwand. Eine Parallelisierung der
Multiplikation für geteilten Speicher ist daher nicht sinnvoll.
Listing 5.1: Iterative Zuweisung
1 template <size_t DIM>
2 Variable<DIM>&
3 Variable<DIM>::operator=(const Operator<DIM>& oper)
4 assert(oper.getGrid() == getGrid());
5
6 int size = 1;
7 for(int i = 0; i < DIM; ++i)
8 size *= getGrid().getSize(i);
9
10
11 #pragma omp parallel
12
13 array<int,DIM> index;
14
15 #pragma omp for
16 for(int i = 0; i< size; ++i)
17
18 int tmp = i;
19 for(int k = 0; k < DIM; ++k)
20 index[k] = tmp%getGrid().getSize(k);
21 tmp /= getGrid().getSize(k);
22
23 getValue(index) = oper.getValue(index);
24
25
26 return *this;
27
71
KAPITEL 5. PARALLELISIERUNG UND LAUFZEITANALYSE
ThreadsTiefe 1 2 4 8 16 32n = 1 9.34× 10−6 1.34× 10−5 1.63× 10−5 3.75× 10−5 2.24× 10−5 4.94× 10−5
n = 2 1.68× 10−5 2.60× 10−5 4.58× 10−5 2.59× 10−5 8.25× 10−5 1.48× 10−4
n = 3 2.66× 10−5 6.88× 10−5 9.87× 10−5 1.38× 10−4 2.23× 10−3 3.76× 10−4
n = 4 5.91× 10−5 1.38× 10−4 2.10× 10−4 3.08× 10−4 4.49× 10−4 8.75× 10−4
n = 5 1.46× 10−4 2.45× 10−4 3.57× 10−4 5.86× 10−4 9.61× 10−4 6.66× 10−3
n = 6 3.76× 10−4 4.84× 10−4 6.01× 10−4 7.44× 10−4 9.22× 10−4 2.18× 10−3
n = 7 1.00× 10−3 9.05× 10−4 1.36× 10−3 1.22× 10−3 2.01× 10−3 6.90× 10−3
n = 8 6.16× 10−3 3.80× 10−3 1.77× 10−3 2.12× 10−3 4.07× 10−3 7.49× 10−3
n = 9 6.06× 10−3 6.30× 10−3 2.97× 10−3 2.78× 10−3 4.36× 10−3 1.08× 10−2
n = 10 1.43× 10−2 9.17× 10−3 7.35× 10−3 4.64× 10−3 5.21× 10−3 8.41× 10−3
Tabelle 5.1: Laufzeit [s] für parallele Vektoraddition für ein 3-dimensionales dünnesGitter
ThreadsTiefe Gitterpunkte 2 4 8 16 32n = 1 1 0.70 0.57 0.25 0.42 0.19n = 2 13 0.65 0.37 0.65 0.20 0.11n = 3 97 0.39 0.27 0.19 0.01 0.07n = 4 545 0.43 0.28 0.19 0.13 0.07n = 5 2661 0.60 0.41 0.25 0.15 0.02n = 6 10625 0.78 0.62 0.50 0.41 0.17n = 7 40193 1.11 0.74 0.82 0.50 0.15n = 8 141569 1.62 3.49 2.90 1.51 0.82n = 9 471041 0.96 2.04 2.18 1.39 0.56n = 10 1496065 1.56 1.94 3.07 2.74 1.70
Tabelle 5.2: Speedup für parallele Vektoraddition für ein 3-dimensionales dünnes Git-ter
ThreadsTiefe 1 2 4 8 16 32n = 1 1.54× 10−5 2.41× 10−5 3.05× 10−5 4.24× 10−5 2.68× 10−5 7.29× 10−3
n = 2 4.36× 10−5 5.63× 10−5 6.88× 10−5 9.09× 10−5 1.64× 10−4 2.77× 10−4
n = 3 9.58× 10−5 2.10× 10−4 2.25× 10−4 3.68× 10−4 6.18× 10−4 6.70× 10−3
n = 4 3.49× 10−4 7.40× 10−4 7.74× 10−4 2.84× 10−3 1.68× 10−3 7.41× 10−3
n = 5 6.00× 10−3 2.92× 10−3 2.10× 10−3 2.84× 10−3 6.78× 10−3 1.09× 10−2
n = 6 5.60× 10−3 6.85× 10−3 5.99× 10−3 8.76× 10−3 7.63× 10−3 1.59× 10−2
n = 7 2.69× 10−2 1.69× 10−2 1.52× 10−2 1.96× 10−2 2.18× 10−2 4.47× 10−2
n = 8 1.05× 10−1 5.98× 10−2 3.91× 10−2 3.52× 10−2 3.40× 10−2 6.97× 10−2
n = 9 3.95× 10−1 2.13× 10−1 1.19× 10−1 8.99× 10−2 8.24× 10−2 8.62× 10−2
n = 10 1.47× 100 1.13× 100 4.79× 10−1 2.72× 10−1 2.42× 10−1 2.07× 10−1
Tabelle 5.3: Laufzeit [s] für parallele Vektoraddition für ein 6-dimensionales dünnesGitter
72
KAPITEL 5. PARALLELISIERUNG UND LAUFZEITANALYSE
ThreadsTiefe Gitterpunkte 2 4 8 16 32n = 1 1 0.64 0.51 0.36 0.57 0.00n = 2 13 0.78 0.63 0.48 0.27 0.16n = 3 97 0.46 0.43 0.26 0.16 0.01n = 4 545 0.47 0.45 0.12 0.21 0.05n = 5 2661 2.06 2.85 2.11 0.89 0.55n = 6 10625 0.82 0.94 0.64 0.73 0.35n = 7 40193 1.59 1.77 1.37 1.23 0.60n = 8 141569 1.75 2.67 2.97 3.08 1.50n = 9 471041 1.85 3.33 4.40 4.79 4.58n = 10 1496065 1.29 3.06 5.39 6.05 7.08
Tabelle 5.4: Speedup für parallele Vektoraddition für ein 6-dimensionales dünnes Git-ter
ThreadsTiefe 1 2 4 8 16 32n = 1 1.36× 10−5 1.62× 10−5 4.39× 10−5 8.95× 10−5 1.40× 10−4 2.11× 10−4
n = 2 2.29× 10−5 2.69× 10−5 1.39× 10−4 2.08× 10−4 4.10× 10−4 9.25× 10−4
n = 3 9.27× 10−5 7.56× 10−5 3.71× 10−4 5.86× 10−4 1.19× 10−3 2.07× 10−3
n = 4 2.55× 10−4 2.95× 10−4 8.30× 10−4 1.43× 10−3 2.59× 10−3 4.33× 10−3
n = 5 9.33× 10−4 8.55× 10−4 1.85× 10−3 2.70× 10−3 4.31× 10−3 8.59× 10−3
n = 6 2.70× 10−3 2.54× 10−3 3.83× 10−3 5.76× 10−3 8.74× 10−3 1.31× 10−2
n = 7 7.38× 10−3 6.80× 10−3 9.56× 10−3 1.08× 10−2 1.52× 10−2 2.19× 10−2
n = 8 2.13× 10−2 1.88× 10−2 2.28× 10−2 2.45× 10−2 3.41× 10−2 4.31× 10−2
n = 9 6.85× 10−1 7.69× 10−1 7.73× 10−1 7.78× 10−1 7.84× 10−1 7.96× 10−1
n = 10 2.99× 100 3.36× 100 3.35× 100 3.36× 100 3.37× 100 3.39× 100
Tabelle 5.5: Laufzeit [s] für parallele Stencil-Multiplikation für ein 3-dimensionalesdünnes Gitter
ThreadsTiefe Gitterpunkte 2 4 8 16 32n = 1 1 0.84 0.31 0.15 0.10 0.06n = 2 7 0.85 0.16 0.11 0.06 0.02n = 3 31 1.23 0.25 0.16 0.08 0.04n = 4 111 0.86 0.31 0.18 0.10 0.06n = 5 351 1.09 0.50 0.35 0.22 0.11n = 6 1023 1.06 0.71 0.47 0.31 0.21n = 7 2815 1.08 0.77 0.68 0.49 0.34n = 8 18943 1.13 0.94 0.87 0.63 0.49n = 9 18943 0.89 0.89 0.88 0.87 0.86n = 10 47103 0.89 0.89 0.89 0.89 0.88
Tabelle 5.6: Speedup für parallele Stencil-Multiplikation für ein 3-dimensionales dün-nes Gitter
73
KAPITEL 5. PARALLELISIERUNG UND LAUFZEITANALYSE
ThreadsTiefe 1 2 4 8 16 32n = 1 8.72× 10−5 1.02× 10−4 1.51× 10−4 1.33× 10−4 2.19× 10−4 3.33× 10−4
n = 2 1.50× 10−3 1.13× 10−3 1.38× 10−3 1.30× 10−3 1.86× 10−3 2.40× 10−3
n = 3 9.17× 10−3 7.63× 10−3 7.78× 10−3 9.51× 10−3 9.81× 10−3 1.37× 10−2
n = 4 6.37× 10−2 5.01× 10−2 5.17× 10−2 5.63× 10−2 6.32× 10−2 7.01× 10−2
n = 5 3.62× 10−1 2.93× 10−1 2.89× 10−1 2.95× 10−1 3.14× 10−1 3.25× 10−1
n = 6 1.81× 100 1.42× 100 1.46× 100 1.48× 100 1.48× 100 1.53× 100
n = 7 7.92× 100 6.63× 100 6.49× 100 6.49× 100 6.64× 100 6.97× 100
n = 8 1.77× 103 1.41× 103 1.40× 103 1.40× 103 1.40× 103 1.40× 103
n = 9 1.65× 104 1.40× 104 1.38× 104 1.38× 104 1.38× 104 1.38× 104
Tabelle 5.7: Laufzeit [s] für parallele Stencil-Multiplikation für ein 6-dimensionalesdünnes Gitter
ThreadsTiefe Gitterpunkte 2 4 8 16 32n = 1 1 0.85 0.58 0.65 0.40 0.26n = 2 13 1.33 1.09 1.15 0.81 0.63n = 3 97 1.20 1.18 0.96 0.94 0.67n = 4 545 1.27 1.23 1.13 1.01 0.91n = 5 2561 1.24 1.25 1.23 1.15 1.11n = 6 10625 1.27 1.24 1.22 1.22 1.18n = 7 40193 1.19 1.22 1.22 1.19 1.14n = 8 141569 1.26 1.26 1.26 1.26 1.26n = 9 471041 1.18 1.19 1.19 1.20 1.20
Tabelle 5.8: Speedup für parallele Stencil-Multiplikation für ein 6-dimensionales dün-nes Gitter
74
KAPITEL 5. PARALLELISIERUNG UND LAUFZEITANALYSE
5.2 Parallelisierung für verteilte Systeme
Als Nächstes wird die Parallelisierung für verteilte Systeme betrachtet. Hierbei spei-
chert jeder Knoten eines Clusters sowohl alle Dünngitter-Variablen als auch die ent-
sprechenden Diskretisierungssterne ab. Der Aufwand der Initialisierung der Diskreti-
sierungssterne für die analytische Integration ist im Vergleich zur Gesamtlaufzeit mit
mehreren Iterationen der Multiplikation klein.
Der Speicheraufwand ist jedoch sehr groß, da für jeden Gitterpunkt ein Diskreti-
sierungsstern mit 3d Werten abgespeichert werden muss. Für numerische Integration
steigt der Rechenaufwand stark an. Da jeder Knoten dieselben Diskretisierungssterne
vorhält, erscheint eine Parallelisierung der Berechnung sinnvoll.
In der Regel entspricht die Anzahl der Knoten des Clusters einer Zweierpotenz.
Dadurch ergibt sich eine gleichmäßige Verteilung der 2d Fälle auf die Prozesse der
Knoten. Der Berechnungsaufwand eines jeden Falls ist in etwa identisch. Daher ist
keine weitere Optimierung der Lastverteilung notwendig.
Jeder Knoten speichert einen lokalen Ergebnisvektor mit seinem Beitrag der einge-
sammelten Überschüsse zum Ergebnis der Multiplikation. Diese Werte, die für jeden
Feingitterpunkt vorgehalten werden müssen, werden am Ende einer Multiplikation an
alle anderen Prozesse verteilt und addiert. Listing 5.2 und Listing 5.3 zeigen den Aus-
tausch sowie die Addition mithilfe von MPI_exchange. Hierzu wird für jedes volle
Untergitter MPI_Allreduce auf den gesamten lokalen Vektor angewendet.
Listing 5.2: MPI-Austausch SparseVariable
1 template <size_t DIM>
2 void
3 SparseVariable<DIM>::MPI_exchange()
4 array<int,DIM> index;
5 if(num_procs > 1)
6 MPI_exchange(DIM-1,index);
7
8
9 template <size_t DIM>
10 void
11 SparseVariable<DIM>::MPI_exchange(int dimension,
12 array<int,DIM>& index)
13 int depth = 0;
14 for(int i = dimension+1; i < DIM; ++i)
75
KAPITEL 5. PARALLELISIERUNG UND LAUFZEITANALYSE
15 depth += index[i];
16 for(int i = 0; i < max(0,getMaxDepth()-depth); ++i)
17 index[dimension] = i;
18 if(dimension > 0)
19 MPI_exchange(dimension-1,index);
20 else
21 int lin_index = getVariableIndex(index);
22
23 variable_vector[lin_index]->MPI_exchange();
24
25
26
Listing 5.3: MPI-Austausch Variable
1 template <size_t DIM>
2 void Variable<DIM>::MPI_exchange()
3 int size = 1;
4 for(int i = 0; i < DIM; ++i)
5 size *= grid.getSize(i);
6
7 std::vector<double> sendbuffer (values, values + size);
8
9 MPI_Allreduce(&sendbuffer[0], values, size,
10 MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
11
Im Falle d = 3 gibt es 8 Fälle. Daher wurde in Tabelle 5.9 eine Parallelisierung für
maximal 8 Prozesse untersucht. In diesem Fall steigt die Laufzeit in etwa proportional
zur Anzahl der Gitterpunkte. Die Laufzeiten sind in Tabelle 5.10 aufgeführt. Lediglich
zwischen n = 8 und n = 9 kommt es zu einem erheblichen Anstieg der Laufzeit, da
erstmals die Anzahl der Gitterpunkte der vollen Untergitter die Größe 1024 übersteigt.
Dies ist für d = 6 besonders auffällig. In diesem Fall wird 1024 schon bei n = 8
erreicht. Tabelle 5.11 zeigt daher ein ähnliches Verhalten, wie es schon in Tabelle 5.7 zu
beobachten war.
Dagegen erzielt die Parallelisierung mit verteiltem Speicher eine gleichmäßig hohe
Beschleunigung. Für Tabelle 5.12 wurden bis zu 32 parallele Prozesse auf einem Cluster
mit 32 Kernen gestartet. Der Datenaustausch beschränkt sich dabei lediglich auf die
76
KAPITEL 5. PARALLELISIERUNG UND LAUFZEITANALYSE
Anzahl der Gitterpunkte in der ersten Spalte der Tabelle.
ProzesseTiefe 1 2 4 8n = 1 5.81× 10−5 1.07× 10−4 1.16× 10−4 1.69× 10−4
n = 2 2.14× 10−4 5.03× 10−4 4.00× 10−4 5.30× 10−4
n = 3 1.05× 10−3 5.62× 10−4 5.78× 10−4 6.93× 10−4
n = 4 4.90× 10−3 3.65× 10−3 4.49× 10−3 1.59× 10−3
n = 5 1.64× 10−2 1.02× 10−2 7.99× 10−3 5.07× 10−3
n = 6 4.08× 10−2 2.26× 10−2 1.53× 10−2 1.13× 10−2
n = 7 1.27× 10−1 7.34× 10−2 4.69× 10−2 3.68× 10−2
n = 8 3.81× 10−1 2.27× 10−1 1.51× 10−1 1.19× 10−1
n = 9 1.20× 101 6.56× 100 3.31× 100 1.84× 100
n = 10 5.25× 101 2.65× 101 1.44× 101 7.77× 100
Tabelle 5.9: Laufzeit für parallele Matrix-Vektor-Multiplikation für ein 3-dimensionalesdünnes Gitter
ProzesseTiefe Gitterpunkte 2 4 8n = 1 1 0.54 0.50 0.34n = 2 7 0.42 0.53 0.40n = 3 31 1.86 1.81 1.51n = 4 111 1.34 1.09 3.07n = 5 351 1.60 2.05 3.23n = 6 1023 1.80 2.66 3.62n = 7 2815 1.74 2.71 3.47n = 8 7423 1.68 2.53 3.22n = 9 18943 1.82 3.61 6.49n = 10 47103 1.98 3.66 6.75
Tabelle 5.10: Speedup für parallele Matrix-Vektor-Multiplikation für ein 3-dimensiona-les dünnes Gitter
77
KAPITEL 5. PARALLELISIERUNG UND LAUFZEITANALYSE
ProzesseTiefe 1 2 4 8 16 32n = 1 7.97× 10−3 3.59× 10−3 1.94× 10−3 6.56× 10−4 3.94× 10−4 1.74× 10−4
n = 2 8.17× 10−2 4.41× 10−2 2.44× 10−2 1.14× 10−2 5.04× 10−3 2.50× 10−3
n = 3 7.18× 10−1 3.59× 10−1 1.81× 10−1 9.12× 10−2 4.63× 10−2 2.40× 10−2
n = 4 4.96× 100 2.50× 100 1.25× 100 6.28× 10−1 3.21× 10−1 1.66× 10−1
n = 5 2.57× 101 1.33× 101 7.07× 100 3.54× 100 1.80× 100 9.67× 10−1
n = 6 1.25× 102 6.24× 101 3.18× 101 1.63× 101 8.94× 100 5.10× 100
n = 7 5.50× 102 2.85× 102 1.40× 102 7.32× 101 4.14× 101 2.46× 101
n = 8 1.20× 105 5.93× 104 3.14× 104 1.51× 104 8.37× 103 4.31× 103
Tabelle 5.11: Laufzeit für parallele Matrix-Vektor-Multiplikation für ein 6-dimensiona-les dünnes Gitter
ProzesseTiefe Gitterpunkte 2 4 8 16 32n = 1 1 2.22 4.11 12.15 20.23 45.80n = 2 13 1.85 3.35 7.14 16.19 32.68n = 3 97 2.00 3.98 7.88 15.51 29.98n = 4 545 1.98 3.97 7.89 15.47 29.82n = 5 2561 1.93 3.63 7.26 14.28 26.57n = 6 10625 2.00 3.92 7.65 13.95 24.45n = 7 40193 1.93 3.93 7.52 13.30 22.35n = 8 141569 2.03 3.84 7.98 14.38 27.97
Tabelle 5.12: Speedup für parallele Matrix-Vektor-Multiplikation für ein 6-dimensiona-les dünnes Gitter
78
Kapitel 6
Erweiterung für adaptive Verfeinerung
Für die Effizienz dünner Gitter wurde bisher stets eine gewisse Glattheit der Funktio-
nen angenommen. Das dünne Gitter trifft eine Vorauswahl an Gitterpunkten des Voll-
gitters, ohne dass Kenntnisse über die zu suchende Funktion notwendig sind. Durch
adaptive Verfeinerung können zusätzliche Erkenntnisse der zu suchenden Lösungs-
funktion berücksichtigt werden.
Die natürliche Datenstruktur für die Koeffizienten eines dünnen Gitters ist die
Baumstruktur. Der Verfeinerungsbaum wurde bisher stets vollständig aufgespannt
und wurde daher nicht explizit angegeben. Für unvollständige Bäume sind zwei An-
sätze möglich.
Die Gitterpunkte des dünnen Gitters können gleichzeitig als finite Elemente aufge-
fasst werden. Jedes Element entspricht dabei dem Träger der entsprechenden Hutfunk-
tion des Gitterpunktes. Für hierarchische Basisfunktionen wurden Elemente durch
Verfeinerung halbiert.
So könnte durch eine komplexe Baumstruktur für jedes Element einzeln festgelegt
werden, ob es verfeinert wird oder nicht. Dabei ist zu beachten, dass jedes Element
ein entsprechendes Elternelement in allen Dimensionen benötigt (vgl. [33]). Die re-
sultierende Baumstruktur weist eine hohe Komplexität und Verzweigung auf. Dies
ermöglicht sehr flexibel anpassbare adaptive Verfeinerungen. Allerdings können die
vorgestellten Operatoren aus Abschnitt 3.1 nicht mehr direkt angewendet werden. Sie
basieren auf Rekursion und benötigen dafür Tensorproduktstrukturen der dünnen Git-
ter.
Ein weiterer Ansatz erhält daher die Tensorproduktstruktur und verfeinert jede Di-
mension separat. Der Name Semi-Adaptivität deutet darauf hin, dass hierbei nicht
vollständig adaptiv verfeinert wird.
79
KAPITEL 6. ERWEITERUNG FÜR ADAPTIVE VERFEINERUNG
6.1 Semi-adaptive Verfeinerung
Abbildung 6.2 zeigt ein zweidimensionales dünnes Gitter mit semi-adaptiver Verfeine-
rung. In diesem Fall wurde für beide Dimensionen derselbe Verfeinerungsbaum ver-
wendet. Abbildung 6.1 zeigt die entsprechende Baumstruktur. Bis Level 2 handelt es
sich um ein reguläres dünnes Gitter. Anschließend wird adaptiv verfeinert, wobei das
entsprechende Element jeweils halbiert wird. Da es sich um ein homogenes Problem
handelt, können Dirichlet-Prewavelets an den Rändern verwendet werden. Für inho-
mogene Randbedingungen kann auf das Verfahren in Abschnitt 3.4.3 zurückgegriffen
werden.
Für Dirichlet-Prewavelets ist L2-Orthogonalität allerdings nur für nodale Basisfunk-
tionen im Inneren gegeben. Neumann-Prewavelets weisen zusätzlich L2-Orthogonali-
tät mit nodalen Basisfunktionen am Rand auf. Deren Einsatz ist jedoch aufgrund ihrer
Inhomogenität auf den Rand beschränkt. Daher müssen zusätzlich Geisterknoten ohne
zusätzliche Unbekannte eingeführt werden.
Abbildung 6.1 zeigt rechts die entsprechenden Basisfunktionen zur aufgeführten
Baumstruktur. Für den Einsatz am Rand wurden Dirichlet-Prewavelets verwendet. So-
bald die Verfeinerung nicht mehr vollständig durchgeführt wird (ab Level 3), werden
zusätzlich Geisterknoten am Rand benötigt. Dadurch reichen die Standard-Prewave-
lets über das verfeinerte Gebiet hinaus und können ihre Orthogonalitätseigenschaft
zum Grobgitter erhalten.
Zur Umrechnung von nodaler Basis zur Prewavelet-Basis wurde die fünf-diagona-
le Koeffizientenmatrix mithilfe einer LR-Zerlegung invertiert. Dieses Verfahren kann
weiterhin verwendet werden, da durch die Tensorproduktstruktur jede Dimension se-
parat gelöst werden kann. Statt des aktuellen Levels und des nächstgröberen Levels,
müssen nun unter Umständen weitere Level berücksichtigt werden. Hierzu wird ent-
sprechend über den Baum in Abbildung 6.1 iteriert.
Zur Aufstellung der Koeffizientenmatrix für Level 3 liegen die Grobgitterpunkte
vollständig auf Level 2. Für den linken Randpunkt wurden Dirichlet-Prewavelets ver-
wendet. Auf der rechten Seite wird für den Übergang ein Geisterknoten benötigt. Für
die Zerlegung in Prewavelets und Grobgitteranteil wird er nicht berücksichtigt. Hier-
für ergibt sich folgender Lösungsvektor
[x3,1 x2,1 x3,2 x2,2 x3,3 x2,3 x3,4 x2,4 x2,5 x2,6 x2,7 x2,8
]T. (6.1)
80
KAPITEL 6. ERWEITERUNG FÜR ADAPTIVE VERFEINERUNG
Anhand der Koeffizientenmatrix
WTadaptiv =
0.9 −35
110
12 1 1
21
10 −35 1 −3
51
1012 1 1
2110 −
35 1 −3
51
1012 1 1
21
10 −35 1 −3
5110
12 1 1
212 1
1
1
(6.2)
lassen sich durch Multiplikation die Überschüsse berechnen. Aufgrund des Geister-
knotens ist Matrix WTadaptiv nicht quadratisch.
Zur Aufstellung der Koeffizientenmatrix für Level 4 verteilen sich die Grobgitter-
punkte auf Level 2 und 3. Daher ergibt sich der Lösungsvektor
[x3,1 x3,2 x3,3 x3,4 x4,1 x3,5 x4,2 x3,6 x3,7 x2,4 x2,5 x2,6 x2,7 x2,8
]T. (6.3)
Da weiterhin über alle Level iteriert wird, müssen die Grobgitterwerte nur an das
nächstgröbere Gitter weitergereicht werden. Für die Aufstellung der Massen- und Stei-
figkeitsmatrix muss dagegen die unterschiedliche Maschenweite berücksichtigt wer-
den. Hierzu wird zusätzlich für jede Unbekannte deren Koordinate hinterlegt.
81
KAPITEL 6. ERWEITERUNG FÜR ADAPTIVE VERFEINERUNG
Es ergibt sich die Koeffizientenmatrix
WTadaptiv =
1
1
1 1212 1 1
21
10 −35 1 −3
51
1012 1 1
2110 −
35 1 −3
51
1012 1 1
212 1
1
1
1
1
. (6.4)
Der Vorteil dieser Methode ist die einfache Umsetzung sowie die effiziente Itera-
tion über die Punkte eines Gitters, da diese konsekutiv im Speicher abgelegt werden
können. Das resultierende Gitter (Abbildung 6.2) setzt sich wie zuvor aus regulären
Gittern zusammen. Abbildung 6.3 zeigt, wie aus den Gitterpunkten der einzelnen Le-
vel aus Abbildung 6.1 durch Tensorprodukte reguläre Gitter zu einem semi-adaptiven
Gitter kombiniert werden. Die Dreiecksstruktur ist jedoch nur gegeben, wenn die Tiefe
der Verfeinerung in allen Dimensionen identisch ist. Für jedes volle Untergitter wer-
den wie im regulären Fall zusätzlich alle Grobgitterpunkte vorgehalten. Durch eine un-
gleichmäßige Verfeinerung in einem bestimmten Teilgebiet entsteht ein sehr schlechtes
Verhältnis zwischen Grobgitterpunkten und Feingitterpunkten für Gitter mit großer
Tiefe. Dadurch steigt der Speicheraufwand. Das Gitter mit t = 4 muss daher 13 Grob-
gitterpunkte vorhalten und weist lediglich 2 Feingitterpunkte auf.
82
KAPITEL 6. ERWEITERUNG FÜR ADAPTIVE VERFEINERUNG
Level 0
Level 1
Level 2
Level 3
Level 4
x
y
1.0
x
y
1.0
x
y
1.0
x
y
1.0
x
y
1.0
Abbildung 6.1: Baumstruktur der semi-adaptiven Verfeinerung (links) sowie die zu-gehörigen Prewavelets (rechts). Am Rand werden Dirichlet-Prewavelets verwendet.Im Inneren am Übergang zum gröberen Gitter müssen zusätzliche Geisterpunkte (rot)hinzugefügt werden.
Abbildung 6.2: Zweidimensionales semi-adaptives Gitter
83
KAPITEL 6. ERWEITERUNG FÜR ADAPTIVE VERFEINERUNG
Abbildung 6.3: Das zweidimensionale semi-adaptive Gitter wird aus Tensorproduktenvon Abbildung 6.4 zusammengesetzt.
84
KAPITEL 6. ERWEITERUNG FÜR ADAPTIVE VERFEINERUNG
6.2 Adaptiv verfeinerte dünne Gitter
Adaptive dünne Gitter können lokal verfeinert werden. Die Verfeinerung bezieht sich
dabei auf ein bestimmtes Gebiet und nicht auf einen Anteil einer Dimension. Man er-
hält dadurch lokal verfeinerte dünne Gitter, die auch lokal die typischen Eigenschaften
dünner Gitter besitzen, allerdings die Tensorproduktstruktur verlieren. Damit bleibt
insbesondere auch im Fall adaptiver Verfeinerung die Eigenschaft erhalten, dass dün-
ne Gitter signifikant weniger Punkte als volle Gitter enthalten.
Im Gegensatz zu regulären dünnen Gittern und semi-adaptiv verfeinerten dünnen
Gittern wird für jedes Basiselement eines Teilraums gesondert festgelegt, ob dieses
verfeinert wird. In Abbildung 6.4 sind zu verfeinernde Basiselemente rot markiert.
Allerdings weist die entsprechende Baumstruktur zusätzliche hängende Knoten auf
(graue Knoten). Diese sind notwendig, da für jedes verfeinerte Element zwingend in
jeder Dimension ein Elternelement vorhanden sein muss [33]. Durchgezogene Pfeile
stehen dabei für Verzweigungen, die durch eine Verfeinerung entstanden sind, wäh-
rend gestrichelte Pfeile entweder von einem hängenden Knoten oder einem bereits
existierenden Elternelement ausgehen.
Die Eltern-Kind-Beziehungen in allen Dimensionen sind für eine Übertragung der
Dünngitteroperatoren aus Abschnitt 3.1 obligatorisch. Sie werden insbesondere für
Prolongation, Restriktion und Vergröberungs-Operatoren benötigt. Zusätzlich müssen
die in Abschnitt 6.1 eingeführten Geisterknoten (blaue Knoten) aufgegriffen werden.
Sie induzieren keinen zusätzlichen Freiheitsgrad und werden nur zur lokalen Anwen-
dung der Diskretisierungsmatrizen benötigt.
Im vorherigen Abschnitt wurden zur lokalen Berechnung volle Untergitter verwen-
det. Zur Addition der 2d Fälle mithilfe von Prolongationen und Restriktionen wurden
die Dimensionen soweit sortiert, dass Prolongationen vor Restriktionen ausgeführt
wurden. Abbildung 6.5 zeigt das Einsammeln der Inkremente für das zwei-dimensio-
nale Beispiel aus Abbildung 6.4. Die Summe setzt sich dabei analog zu Abbildung 3.4
zusammen.
Um Doppelungen zu vermeiden, wird für Restriktionen nicht der Eintrag selbst ad-
diert. Stattdessen wird der Vorgänger ohne das eigene Inkrement restringiert. Für den
Fall (Res,Res) gibt es keinen Vorgänger für doppelte Restriktion in beiden Dimensio-
nen. Für Prolongation in beiden Dimension (Pro,Pro) wird an der Wurzel begonnen.
Da jeder Knoten ein Elternteil jeder Dimension besitzt, ist die Reihenfolge der Abarbei-
tung der Dimensionen nicht relevant, solange Prolongationen vor Restriktionen abge-
85
KAPITEL 6. ERWEITERUNG FÜR ADAPTIVE VERFEINERUNG
arbeitet werden. Für Restriktionen wird für die entsprechende Dimension jeweils auf
dem feinsten Level begonnen. Hierzu wird die Baumstruktur, beginnend vom Wur-
zelknoten aus, rekursiv und nach Dimensionen sortiert traversiert. Dabei werden nur
Kinder mit Restriktionen berücksichtigt. Wird ein Blatt erreicht oder gehen von einem
Knoten nur noch Prolongationen aus, so wird folglich von diesem Knoten aus mit dem
Einsammeln der Inkremente begonnen.
Prinzipiell lassen sich die Algorithmen aus Kapitel 3 auf adaptive Gitter ohne große
Anpassungen übertragen. Für Abschnitt 6.1 konnte die Datenstruktur im Wesentlichen
erhalten bleiben. Sie wurde lediglich durch eine Baumstruktur erweitert. Aus dieser
konnten reguläre Untergitter generiert werden. Im Gegensatz zu vollen Untergittern
weisen sie einige Lücken auf. Hierzu mussten auch die Operatoren entsprechend an-
gepasst werden.
Im Falle adaptiver Gitter ist jedoch eine vollständig neue Datenstruktur zu imple-
mentierten, da keine regulären Untergitter mehr vorhanden sind. Für eine Implemen-
tierung ergeben sich folgende Anforderungen:
• Schneller Zugriff auf einen beliebigen Punkt des Gitters
• Iteration über alle Punkte einer bestimmten Tiefe
• Zugriff auf Eltern bzw. Kinder
• Dynamische Verwaltung der Geisterknoten
In [35] werden Baumstrukturen und Hash-Tabellen hinsichtlich ihrer Eignung für
adaptive dünne Gitter verglichen. Bisher wurde eine Baumstruktur verwendet. Dies
hatte zur Folge, dass für jedes Level zusätzlich zu den jeweiligen Inkrementen auch
die Grobgitterpunkte vorgehalten wurden. Der Speichermehraufwand wurde durch
die vollständige Trennung der einzelnen Level kompensiert. Im Falle adaptiver Gitter
würde dies jedoch bedeuten, dass für jedes Blatt der Baumstruktur des Gitters neben
den Inkrementen noch Grobgitterpunkte und Geisterpunkte vorgehalten werden müs-
sen. Daher ist eine Kombination aus Hash-Tabellen und einer Baumstruktur notwen-
dig. Wenn für jedes Level eine eigene Hash-Tabelle verwendet wird, können verschie-
dene Blätter auf dieselben Werte zugreifen, sofern sie auf demselben Level liegen.
86
KAPITEL 6. ERWEITERUNG FÜR ADAPTIVE VERFEINERUNG
(0,0)
(1,0) (1,1)
(2,0) (2,1) (2,2)
(3,1) (3,2)
(a) Träger der Basisfunktionen (b) Dünnes Gitter mit Baumstruktur
Abbildung 6.4: Baumstruktur für zweidimensionale adaptive Verfeinerung.Rote Gitterpunkte werden verfeinert, hängende Knoten sind grau, Geisterknoten blaudargestellt.
87
KAPITEL 6. ERWEITERUNG FÜR ADAPTIVE VERFEINERUNG
2,2 2,22,0 2,0
1,0 1,01,1 1,1
3,1 3,13,0 3,0
2,1 2,1
0,0 0,0
= +
2,22,0
1,0 1,1
3,13,0
0,0
2,1
(Pro,Pro) (Pro,Res)
x
x
x x
x
y
y
y
y
y
x
x
x x
x
y
y
y
y
y
x
x
x x
x
y
y
y
y
y
2,0
1,0
3,0
+
(Res,Pro)
x
x
x x
x
y
y
y
y
y
2,2 2,22,0
1,01,1 1,1
3,1 3,13,0
2,1 2,1
0,0 0,0
+
x
x
x x
x
y
y
y
y
y
(Res,Res)
Abbildung 6.5: Alle möglichen Kombinationen aus Prolongationen (Pro) und Restrik-tionen (Res) für die zweidimensionale Matrix-Vektor-Multiplikation auf adaptivendünnen Gittern.
88
Kapitel 7
Abschließende Bemerkungen
Ziel dieser Arbeit war es, elliptische partielle Differentialgleichungen in hohen Dimen-
sionen mit variablen Koeffizienten zu lösen. Entgegen bisherigen Ansätzen wurden
dazu keinerlei Annahmen bezüglich des variablen Koeffizienten getroffen. Zahlrei-
che Lösungsverfahren für Tensorprodukte verwenden das Unidirektionale Prinzip.
Dadurch lässt sich die Matrix-Vektor-Multiplikation auf eindimensionale Operatoren
zurückführen. Der Ansatz eindimensionaler Operatoren wurde aufgegriffen, da er ef-
fiziente rekursive Algorithmen ermöglicht.
Bereits in der Dissertation [27] wurde 1995 ein Verfahren für zweidimensionale
Probleme vorgestellt. Die dafür verwendete Semi-Orthogonalität lässt sich aber nicht
direkt auf hochdimensionale Probleme anwenden. Für zweidimensionale Probleme
kann auf die Berechnung der Einträge der Diskretisierungsmatrix für überlappende
Gebiete verzichtet werden, da die hierarchische Basisfunktion a-Orthogonalität für den
Laplace-Operator aufweist.
Für hochdimensionale Probleme kann stattdessen die L2-Orthogonalität von Prewa-
velets verwendet werden. Aus theoretischer Sicht lässt sich dies leicht realisieren, was
in [31] bewiesen wurde. Darauf aufbauend wurde ein geeignetes Lösungsverfahren
entwickelt. Hauptaugenmerk lag auf der Matrix-Vektor-Multiplikation. Für zweidi-
mensionale Probleme wurde mit dem Q-Zyklus ein Verfahren gefunden, um die Über-
lappung eines jeden Levels mit allen anderen effizient zu berechnen. Der Q-Zyklus ließ
sich allerdings nicht auf hochdimensionale Probleme übertragen.
In Anlehnung an das Unidirektionale Prinzip wurde die Kombination eindimen-
sionaler „TopDown“- und „BottomUp“-Durchläufe in verschiedenen Richtungen auf
2d Fälle aufgeteilt und jeweils separat berechnet. Im Zuge der Umsetzung entstand da-
bei eine umfangreiche Softwarebibliothek. Zahlreiche algorithmische Ansätze konnten
89
KAPITEL 7. ABSCHLIESSENDE BEMERKUNGEN
somit schnell umgesetzt werden, da sie sich auf eine Verkettung primitiver Operato-
ren zurückführen ließen. Die Implementierung beruht auf moderner objektorientierter
Softwareentwicklung und dem Einsatz von Expression Templates. Dies gewährleistet
ein hohes Maß am Lesbarkeit, da Implementierungsdetails gekapselt werden.
Durch die Kapselung können Datenstrukturen und Operatoren leicht ersetzt wer-
den. So ließ sich die semi-adaptive Verfeinerung sehr schnell umsetzen. Die Methode
der konjugierenden Gradienten sowie die Matrix-Vektor-Multiplikation konnte direkt
übertragen werden, da lediglich Variablen auf Gittern und Operatoren auf Variablen
verwendet werden. Folglich musste nur eine Datenstruktur für Variablen auf semi-
adaptiven Gittern ergänzt werden.
Da Umfang und Anforderungen an die Softwarebibliothek ständig gewachsen sind,
wurde am Ende dieser Arbeit ein Punkt erreicht, der eine Überarbeitung der Imple-
mentierung erfordert. Erste Grundlagen zur Adaptivität wurden bereits gelegt. Die
Verwendung von Geisterpunkten für den Übergang zwischen verfeinerten Gebieten
und dem Grobgitter fand bereits bei semi-adaptiven Gittern Verwendung. Ebenso die
Verwaltung der Adaptivität, wenn auch nur für jede Dimension separat, mithilfe einer
Baumstruktur sowie die Generierung eindeutiger Indizes als Grundlage einer Hashta-
belle.
Komplexere Geometrien können als blockstrukturiertes Gitter realisiert werden.
Anstelle der Dimension tritt dabei die Anzahl der Freiheitsgrade für die Anzahl der
Gitterpunkte in den Vordergrund. Diese ist noch für hochdimensionale Geometrien zu
erweitern. Im Zuge einer Neuentwicklung könnte dies mit der Adaptivität verbunden
werden.
Für reguläre Gitter führt die Koordinatentransformation für gebogene Kanten zu
verzerrten Elementen. Zur Berechnung der Einträge der Diskretisierungsmatrix wer-
den meist gerade Kanten angenommen. Für dünne Gitter haben die Basisfunktionen
oftmals eine sehr große Tiefe in einer Dimension, sind jedoch in allen anderen Dimen-
sionen sehr grob. Gerade Kanten würden bei der Integration einen großen Fehler indu-
zieren. Daher wurde für gebogene Kanten im Rahmen dieser Arbeit der bereits trans-
formierte Koeffizient integriert. Aus Anwendersicht wäre es wünschenswert, nur die
Transformation zu definieren und den variablen Koeffizienten daraus generieren zu
lassen.
Anschließend müssen die Einträge der Diskretisierungsmatrix der verzerrten Ele-
mente für variable Koeffizienten numerisch integriert werden. Auch hierzu sind An-
sätze bereits realisiert. Die Koppelung zwischen Integrator und dünnem Gitter ist aber
90
KAPITEL 7. ABSCHLIESSENDE BEMERKUNGEN
noch ausbaufähig und gerade in Bezug auf adaptive Verfeinerung nicht trivial.
Im Zuge einer Neuentwicklung ist von Beginn an der Rechenaufwand und der
Speicherbedarf im Auge zu behalten. Die Verwendung dünner Gitter ermöglichte
hochdimensionale Probleme. Immerhin konnte für d = 6 bis Tiefe n = 10 eine Lö-
sung gefunden werden. Die Anzahl der Gitterpunkte ist dabei kleiner 50000. Da der
Speicheraufwand einer einzigen Variablen durch die Verwendung regulärer voller Git-
ter für jedes Level jedoch weit größer ist, wurden dadurch bereits die Grenzen der
Rechenleistung erreicht. Für eine Parallelisierung mit verteiltem Speicher wurde die
vollständige Diskretisierungsmatrix auf jedem Prozess berechnet und vorgehalten. Im
Zuge der Erweiterung für adaptive Verfeinerung und blockstrukturierte Gitter kann
durch eine örtliche Verteilung der Geometrie auf einzelne Prozessoren der Speicher-
aufwand minimiert werden.
Es bleibt die Hoffnung, dass der Grundstein für weitere Entwicklungen mit dieser
Arbeit gelegt werden konnte. Daher lag der Fokus dieser Arbeit auf einer ausführli-
chen Beschreibung der Algorithmen sowie den Grundlagen zur Umsetzung. Dünne
Gitter haben sich in den letzten drei Jahrzehnten kontinuierlich weiterentwickelt. Ihr
Durchbruch scheiterte aber oftmals an ihrer Abhängigkeit von Annahmen und der feh-
lenden Verallgemeinerung. Ein weiterer Schritt zu einem universellen Löser wurde mit
dieser Arbeit in diese Richtung hoffentlich vollzogen.
91
Literaturverzeichnis
[1] ACHATZ, Stefan: Adaptive finite Dünngitter-Elemente höherer Ordnung für elliptische
partielle Differentialgleichungen mit variablen Koeffizienten, TU München, Dissertati-
on, 2003
[2] BALDER, Robert ; ZENGER, Christoph: The solution of multidimensional real
Helmholtz equations of sparse grids. In: SIAM J. Sci. Comp. 17 (1996), Nr. 3, S.
631–646
[3] BUNGARTZ, Hans-Joachim: Dünne Gitter und deren Anwendung bei der adaptiven
Lösung der dreidimensionalen Poisson-Gleichung, Fakultät für Informatik, Technische
Universität München, Dissertation, November 1992
[4] BUNGARTZ, Hans-Joachim: Concepts for higher order finite elements on sparse
grids. In: Proceedings of the 3. int. conf. on spectral and high order methods University
of Houston, 1996 (Houston Journal of Mathematics), S. 159–170
[5] BUNGARTZ, Hans-Joachim ; GRIEBEL, Michael: A note on the complexity of sol-
ving Poisson’s equation for spaces of bounded mixed derivatives. In: Journal of
Complexity 15 (1999), Nr. 2, S. 167–199
[6] BUNGARTZ, Hans-Joachim ; ZENGER, Christoph: A unidirectional approach for d-
simensional finite element methods of higher order on sparse grids. Copper Mountain,
CO, April 1996
[7] BUSE, Gerrit ; PFLÜGER, Dirk ; JACOB, Riko: Efficient pseudorecursive evaluation
schemes for non-adaptive sparse grids. In: GARCKE, Jochen (Hrsg.) ; PFLÜGER,
Dirk (Hrsg.): Sparse Grids and Applications - Munich 2012 Bd. 97, Springer Inter-
national Publishing, 2014 (Lecture Notes in Computational Science and Enginee-
ring), S. 1–27
93
LITERATURVERZEICHNIS
[8] DIJKEMA, Tammo J. ; SCHWAB, Christoph ; STEVENSON, Rob: An aaptive wavelet
method for solving high-dimensional elliptic PDEs. In: Constructive approximation
30 (2009), dec, Nr. 3, S. 423–455
[9] DORNSEIFER, Thomas ; PFLAUM, Christoph: Discretization of elliptic differential
equations on curvilinear bounded domains with sparse grids. In: Computing 56
(1996), Nr. 3, S. 197–213
[10] FISCHER, Patrick ; AVERBUCH, Amir ; ISRAELI, Moshe ; BEYLKIN, Gregory ; COIF-
MAN, Ronald: Adaptive solution of multidimensional PDEs via tensor product
wavelet decomposition. In: International Journal of Pure and Applied Mathematics 44
(2008), Nr. 1, S. 75–115
[11] GORDON, William J. ; HALL, Charles A.: Construction of curvilinear co-ordinate
systems and applications to mesh generation. In: International Journal for Numerical
Methods in Engineering 7 (1973), Nr. 4, S. 461–477
[12] GRIEBEL, Michael: Adaptive sparse grid multilevel methods for elliptic PDEs
based on finite differences. In: Computing 61 (1998), S. 151–179
[13] GRIEBEL, Michael: Sparse grids and related approximation schemes for higher di-
mensional problems. In: PARDO, L. (Hrsg.) ; PINKUS, A. (Hrsg.) ; SULI, E. (Hrsg.) ;
TODD, M.J. (Hrsg.): Foundations of Computational Mathematics (FoCM05), Santander,
Cambridge University Press, 2006, S. 106–161
[14] GRIEBEL, Michael ; HAMAEKERS, Jan: A wavelet based sparse grid method for
the electronic Schrödinger equation. In: SANZ-SOLÉ, M. (Hrsg.) ; SORIA, J. (Hrsg.)
; VARONA, J. (Hrsg.) ; VERDERA, J. (Hrsg.) ; European Mathematical Society (Ver-
anst.): Proceedings of the International Congress of Mathematicians Bd. III. Madrid,
Spain : European Mathematical Society, 2006, S. 1473–1506. – Also as INS Preprint
No. 0603
[15] GRIEBEL, Michael ; HULLMANN, Alexander: On a multilevel preconditioner and
its condition numbers for the discretized Laplacian on full and sparse grids in
higher dimensions. In: Singular Phenomena and Scaling in Mathematical Models.
Springer International Publishing Switzerland, 2014, S. 263–296
94
LITERATURVERZEICHNIS
[16] GRIEBEL, Michael ; OSWALD, Peter: Tensor product type subspace splittings and
multilevel iterative methods for anisotropic problems. In: Advances in Computatio-
nal Mathematics 4 (1995), Nr. 1, S. 171–206
[17] HÄRDTLEIN, Jochen: Moderne Expression Templates Programmierung - Weiterentwi-
ckelte Techniken und deren Einsatz zur Lösung partieller Differentialgleichungen, Tech-
nische Fakultät der Universität Erlangen-Nürnberg, Dissertation, 2007
[18] HÄRDTLEIN, Jochen ; PFLAUM, Christoph ; LINKE, Alexander ; WOLTERS, Cars-
ten H.: Advanced expression templates programming. In: Computing and Visuali-
zation in Science 13 (2009), Nr. 2, S. 59
[19] HARTMANN, Rainer ; PFLAUM, Christoph: Efficient Ritz-Galerkin discretization
of PDEs with variable coefficients in arbitrary dimensions using sparse grids. In:
Proceedings in Applied Mathematics and Mechanics, 2017
[20] HARTMANN, Rainer ; PFLAUM, Christoph: A prewavelet-based algorithm for the
solution of second-order elliptic differential equations with variable coefficients
on sparse grids. In: Numerical Algorithms (2017)
[21] JAFFARD, Stéphane: Wavelet methods for fast resolution of elliptic problems. In:
SINUM 29 (1992), Nr. 4, S. 965–986
[22] NIEDERMEIER, Andreas ; ZIMMER, Stefan. ; LAI, C-H. (Hrsg.) ; BJOERSTAD, P.
(Hrsg.) ; CROSS, M. (Hrsg.) ; WIDLUND, O. (Hrsg.): Implementational aspects of
prewavelet sparse grid methods. 1999
[23] NOORDMANS, Jan ; HEMKER, Pieter W.: Convergence results for 3D sparse grid
approaches. In: Numerical Lin. Alg. with Applic. 5 (1998), Nr. 5, S. 363–376
[24] PEHERSTORFER, Benjamin: Model order reduction of parametrized systems with sparse
grid learning techniques, Department of Informatics, Technische Universität Mün-
chen, Dissertation, 2013
[25] PEHERSTORFER, Benjamin ; ZIMMER, Stefan ; ZENGER, Christoph ; BUNGARTZ,
Hans-Joachim: A multigrid method for adaptive sparse grids. In: SIAM Journal
on Scientific Computing 37 (2015), Nr. 5, S. 51–70
[26] PFLAUM, Christoph: Discretization of second order elliptic differential equations
on sparse grids. In: Progress in partial differential equations, Pont-a-Mousson 1994,
Harlow: Longman, 1994 (Pitman Research Notes in Mathematics Series 2)
95
LITERATURVERZEICHNIS
[27] PFLAUM, Christoph: Diskretisierung elliptischer Differentialgleichungen mit dünnen
Gittern, Technische Universität München, Dissertation, 1995
[28] PFLAUM, Christoph: Convergence of the combination technique for second-order
elliptic differential equation. In: SIAM J. Numer. Anal. 34 (1997), Nr. 6, S. 2431–2455
[29] PFLAUM, Christoph: A multilevel algorithm for the solution of second order el-
liptic differential equations on sparse grids. In: Numer. Math. 79 (1998), S. 141–155
[30] PFLAUM, Christoph: Fast and robust multilevel algorithms, Julius-Maximilians-
Universität Würzburg, Diss., 1998
[31] PFLAUM, Christoph ; HARTMANN, Rainer: A sparse grid discretization of the
Helmholtz equation with variable coefficients in high dimensions. In: SIAM J.
Numerical Analysis 54 (2016), Nr. 4, S. 2707–2727
[32] PFLAUM, Christoph ; ZHOU, Aihui: Error analysis of the combination technique.
In: Numer. Math. 84 (1999), S. 327–350
[33] PFLÜGER, Dirk ; PEHERSTORFER, Benjamin ; BUNGARTZ, Hans-Joachim: Spatially
adaptive sparse grids for high-dimensional data-driven problems. In: Journal of
Complexity 26 (2010), Nr. 5, S. 508–522. – SI: HDA 2009
[34] RHEINFELS, Tim: Numerische Integration lokaler Steifigkeitsmatrizen auf dünnen
Gittern im d-dimensionalen Raum, Department Informatik, Friedrich-Alexander-
Universität Erlangen-Nürnberg, Bachelorarbeit, 2016
[35] SCHIEKOFER, Thomas: Die Methode der Finiten Differenzen auf dünnen Gittern
zur Lösung elliptischer und parabolischer partieller Differentialgleichungen, Universi-
tät Bonn, Dissertation, 1999
[36] SCHWAB, Christian ; TODOR, Radu A.: Sparse finite elements for stochastic elliptic
problems: higher order moments. In: Computing 71 (2003), September, Nr. 1, S. 43–
63
[37] SPRENGEL, Frauke: Periodic interpolation and wavelets on sparse grids. In: Nu-
merical Algorithms 17 (1998), May, Nr. 1, S. 147–169
[38] Kapitel a wavelet-based conjugate gradient method for solving Poisson equations.
In: TANAKA, Nobuatsu: Wavelets and Their Applications: Case Studies. Society for
Industrial and Applied Mathematics, 1998, S. 45–73
96
LITERATURVERZEICHNIS
[39] VASSILEVSKI, Panayot S. ; WANG, Junping: Stabilizing the hierarchical basis by
approximate wavelets II: implementation and numerical results. In: SIAM J. Sci.
Comput. 20 (1998), Nr. 2, S. 490–514
[40] ZEISER, Andreas: Fast matrix-vector multiplication in the sparse-grid Galerkin
method. In: Journal of Scientific Computing 47 (2011), Nr. 3, S. 328–346
[41] ZENGER, Christoph: Sparse grids. In: HACKBUSCH, Wolfgang (Hrsg.): Parallel
algorithms for partial differential equations, proceedings of the sixth GAMM-Seminar,
Kiel, 1990 Bd. 31. Kiel : Vieweg, 1991 (Notes on Numerical Fluid Mechanics), S.
240–251
[42] Kapitel Hierarchische Datenstrukturen für glatte Funktionen mehrerer Veränder-
licher. In: ZENGER, CHRISTOPH: Informatik und Mathematik. Berlin, Heidelberg :
Springer Berlin Heidelberg, 1991, S. 142–150
[43] Kapitel A sparse grid PDE solver; discretization, adaptivity, software design and
parallelization. In: ZUMBUSCH, Gerhard W.: Advances in Software Tools for Scientific
Computing. Berlin, Heidelberg : Springer Berlin Heidelberg, 2000, S. 133–177
97