Diplomarbeit Matthias Miemczyk

Werbung
Hexaeder-Gittergenerierung durch Kombination von
Gitterdeformations-, Randadaptions- und
„Fictitious-Boundary“-Techniken zur
Strömungssimulation um komplexe dreidimensionale
Objekte
- Diplomarbeit dem
Fachbereich Informatik
der Universität Dortmund
vorgelegt von
Matthias Miemczyk
20. November 2007
Erstgutachter
Zweitgutachter
:
:
Prof. Dr. H. Müller
Prof. Dr. S. Turek
Universität Dortmund
Fachbereich Informatik
Lehrstuhl für Graphische System
D-44227 Dortmund
Universität Dortmund
Fachbereich Mathematik
Lehrstuhl für Angewandte Mathematik
D-44227 Dortmund
II
Inhaltsverzeichnis
III
Inhaltsverzeichnis
Abbildungsverzeichnis
VI
Tabellenverzeichnis
IX
1
Einleitung
1.1 Einführung und Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Ziele der Diplomarbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Struktur der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
Grundlagen
2.1 Computational Fluid Dynamics . . . .
2.1.1 Das mathematische Modell . .
2.1.2 Diskretisierung . . . . . . . .
2.1.3 Mehrgitterverfahren . . . . .
2.2 Strahlverfolgung . . . . . . . . . . .
2.3 I N G RID 3D . . . . . . . . . . . . . .
2.3.1 Qualitätskriterien für Gitter . .
2.3.2 Glättungsoperatoren für Gitter
2.4 Objektrepräsentation . . . . . . . . .
2.5 Voronoi-Diagramme . . . . . . . . .
2.6 Externe Software . . . . . . . . . . .
3
4
1
1
3
4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
6
7
10
15
15
16
17
17
18
20
Punktklassifizierung
3.1 Schnittzahltest . . . . . . . . . . . . . . . . .
3.2 Octree bzw. Quadtree . . . . . . . . . . . . .
3.3 Spezialisierte Datenstruktur . . . . . . . . . .
3.3.1 Aufbau . . . . . . . . . . . . . . . .
3.3.2 Anwendung für Punktklassifizierung .
3.3.3 Analyse der Effizienz . . . . . . . . .
3.3.4 Heuristiken zur Optimierung . . . . .
3.3.5 Erweiterung auf die dritte Dimension
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
21
21
21
26
27
28
29
30
31
Distanzberechnung
4.1 Naiver Ansatz . . . . .
4.2 Fast Marching . . . . .
4.2.1 Funktionsweise
4.2.2 Korrektheit . .
4.2.3 Effizienz . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
33
34
34
36
36
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
IV
Inhaltsverzeichnis
4.2.4
5
Erweiterung auf die dritte Dimension . . . . . . . . . . . . . . . . . . .
Projektionstechniken
5.1 Allgemein . . . . . . . . .
5.2 Kantenprojektion . . . . .
5.2.1 Projektionsrichtung
5.2.2 Algorithmus . . .
39
.
.
.
.
41
41
42
42
44
6
I N G RID 3DD EFORM
6.1 Simulationsverlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Visualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Zusatzfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
47
49
51
7
Resultate
7.1 Testobjekte . . . . . . . . . . . . . . . . . .
7.1.1 Testobjekt 1 und 2 . . . . . . . . . .
7.1.2 Testobjekt 3 und 4 . . . . . . . . . .
7.1.3 Testobjekt 5 und 6 . . . . . . . . . .
7.2 Punktklassifizierung . . . . . . . . . . . . . .
7.2.1 Testobjekt 1 . . . . . . . . . . . . . .
7.2.2 Testobjekt 2 . . . . . . . . . . . . . .
7.2.3 Testobjekt 6 . . . . . . . . . . . . . .
7.2.4 Zusammenfassung . . . . . . . . . .
7.3 Distanzberechnung mit Fast Marching . . . .
7.3.1 Testobjekt 3 . . . . . . . . . . . . . .
7.3.2 Testobjekt 4 . . . . . . . . . . . . . .
7.3.3 Zusammenfassung . . . . . . . . . .
7.4 Gitterdeformation . . . . . . . . . . . . . . .
7.4.1 Distanzgenauigkeit . . . . . . . . . .
7.4.2 Mehrgitterdeformation . . . . . . . .
7.4.3 Testfälle . . . . . . . . . . . . . . . .
7.5 Projektion zur Randanpassung . . . . . . . .
7.5.1 Funktionsweise . . . . . . . . . . . .
7.5.2 Projektion und Gitterdeformation . .
7.5.3 Komplexe Objekte . . . . . . . . . .
7.5.4 DFG-Benchmark . . . . . . . . . . .
7.6 Bewertung . . . . . . . . . . . . . . . . . . .
7.6.1 Eingesetzte Methoden . . . . . . . .
7.6.2 I N G RID 3DD EFORM . . . . . . . . .
7.6.3 Erweiterte Visualisierung für die DFG
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
53
53
54
54
55
57
57
59
60
62
63
64
65
66
67
70
70
72
73
75
77
79
82
82
86
87
8
Ausblick
8.1 Optimierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 Erweiterte Möglichkeiten zur Verbesserung der Gittererzeugung . . . . . . . . .
89
89
91
9
Danksagung
95
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Inhaltsverzeichnis
V
A Anhang
97
A.1 Tabellen für Punktklassifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . 97
A.2 Tabellen für Distanzberechnung . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Quellenverzeichnis
103
VI
Inhaltsverzeichnis
Abbildungsverzeichnis
VII
Abbildungsverzeichnis
2.1
2.2
2.3
2.4
Typisches Szenario eines Windkanals mit definierten Randbedingungen. . . . . . . .
Zwei unterschiedliche Auflösungen eines Gebietes durch ein Gitter. . . . . . . . . .
Gitterdeformation mit unterschiedlichen Parametern . . . . . . . . . . . . . . . . .
Darstellung einer Gitterhierarchie bestehend aus drei Ebenen mit der FictitiousBoundary Methode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Eine festgelegte Reihenfolge der Knoten eines Hexaeders bestimmt die Orientierung
seiner Seitenflächen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6 Von F EAT F LOW geforderte Orientierung der acht neuen Hexaeder nach der Unterteilung.
2.7 Bestimmung der Reihenfolge dreier Knoten gegen den Uhrzeigersinn. . . . . . . . .
2.8 Mit Hilfe von I N G RID 3D erstellte exakt Randangepasste Approximation eines Objekts.
2.9 Darstellung zweier Objekte als Oberflächentriangulationen. . . . . . . . . . . . . . .
2.10 Voronoi-Diagramm zu einer zufälligen Punktmenge. . . . . . . . . . . . . . . . . .
3.1
3.2
3.3
3.4
3.5
3.6
3.7
4.1
4.2
4.3
4.4
5.1
5.2
5.3
Darstellung des Schnittzahltests. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Darstellung eines Quadtrees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Punktklassifizierung mit Hilfe eines Quadtree. . . . . . . . . . . . . . . . . . . . . .
Punktklassifizierung mit Hilfe des Spezialbaumes. . . . . . . . . . . . . . . . . . . .
Auswirkung der Reihenfolge der Achsen beim Aufbau der Datenstruktur für seine
Effizienz bei der Punktklassifizierung. . . . . . . . . . . . . . . . . . . . . . . . . .
Heuristik zur Steigerung der Effizienz während der Unterteilung der letzten Achse. .
Erweiterung des Spezialbaumes auf die dritte Dimension. . . . . . . . . . . . . . . .
Darstellung der initialen Bänder für die Fast Marching Methode. . . . . . . . . . . .
Zwei Zeitpunkte in der Verbreitungsphase der Fast Marching Methode. . . . . . . .
Beispiele für die Fehler, die in der Distanzberechnung mit der Fast Marching Methode
entstehen können. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ausbreitung der Information eines Referenzpunktes innerhalb seiner Voronoi-Region.
7
8
10
11
12
13
14
17
18
19
22
23
25
26
30
31
32
35
36
37
38
5.4
5.5
Uneindeutigkeit der Projektion mit kürzesten Abständen. . . . . . . . . . . . . . . .
Idee zur Bestimmung der Projektionsrichtung an Hand von Kanten. . . . . . . . . .
Durch Kanten bestimmte Richtung für die Projektion von Knoten auf die Objektoberfläche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Darstellung verschiedener Projektionsmöglichkeiten. . . . . . . . . . . . . . . . . .
Nicht erkannte für die Projektion geeignete Knoten der heuristischen Projektion. . .
42
43
44
45
45
6.1
6.2
6.3
Aufbau von I N G RID 3DD EFORM. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zeichenoptionen für Gitterknoten in der Nähe der Objektoberfläche. . . . . . . . . .
Zeichenoptionen für Hexaederseitenflächen, die das Objekt approximieren. . . . . .
48
50
50
VIII
6.4
6.5
6.6
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7.10
7.11
7.12
7.13
7.14
7.15
7.16
7.17
7.18
7.19
7.20
7.21
7.22
7.23
7.24
8.1
8.2
8.3
8.4
Abbildungsverzeichnis
Zeichenoptionen für Hexaederseitenflächen, die sich innerhalb des Objekts befinden.
Visualisierung eines Geschwindigkeitsfeldes mit drei verschieden orientierten Gitterschichten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Visualisierung der Monitorfunktion für eine Kugel mit unterschiedlicher Skalierung.
51
Testobjekt 1 und 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Testobjekt 3 und 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Testobjekt 5 und 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Initiale Gitter zur Untersuchung der Punktklassifizierung mithilfe des Spezialbaumes.
Ungünstiges Objekt für den Aufbau des Spezialbaumes. . . . . . . . . . . . . . . . .
Entwicklung des Speicherverbrauchs beim Aufbau des Spezialbaumes mit unterschiedlichen Abbruchbedingungen in MB. . . . . . . . . . . . . . . . . . . . . . . .
Entwicklung der durchschnittlichen Laufzeit der Punktklassifizierung pro Gitterknoten mit unterschiedlichen Abbruchbedingungen für den Spezialbaum. . . . . . . . .
Grafik für die Initialphase der Fast Marching Methode. . . . . . . . . . . . . . . . .
Grafik für die Verbreitungsphase der Fast Marching Methode. . . . . . . . . . . . .
Vergleich zwischen FM-Gitter und A-Gitter nach einem Deformationsschritt. . . . .
Vergleich der Gitterdeformation zwischen FM-Gitter und A-Gitter über die Abweichung der Knoten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Testfall 2. Eingitterdeformation an das Golfmodell auf der feinsten Hierarchieebene.
Testfall 2. Mehrgitterdeformation an das Golfmodell mit einem Gitterdeformationsschritt pro Hierarchieebene. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Validierung der Projektionstechniken am Beispiel des Würfels und einem regulär unterteilten Gitter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problematik der Projektionstechniken bei der Gitterdeformation am Beispiel des Würfels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problematik der Projektionstechniken bei der Gitterdeformation am Beispiel der Kugel.
Darstellung der Projektionstechniken an komplexen Objekten. . . . . . . . . . . . .
Gebietsdefinition für den DFG-Benchmark. . . . . . . . . . . . . . . . . . . . . . .
Drei Gitter für den DFG-Benchmark in der Nähe des Zylinders. . . . . . . . . . . .
Vergleich der Strömungsgeschwindigkeiten im DFG-Benchmark. . . . . . . . . . . .
Vergleich des Druckfeldes im DFG-Benchmark. . . . . . . . . . . . . . . . . . . . .
Strömungssimulation für das Golfmodell im Benchmarkkanal. . . . . . . . . . . . .
Strömungssimulation für das Golfmodell im Benchmarkkanal. . . . . . . . . . . . .
Bild für den DFG Kalender. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
54
55
56
59
Beispiel für Gitterdeformation und Projektion mit Maximum-Metrik als Monitorfunktion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Darstellung des berechneten Druckfeldes für das Modell einer Ragattasegelyacht. . .
Darstellung des berechneten Geschwindigkeitsfeldes für das Modell einer Ragattasegelyacht. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Darstellung einer Gitterschicht im Inneren des Modells einer Ragattasegelyacht. . . .
51
52
61
61
65
66
67
68
71
72
74
75
78
79
80
80
81
82
85
86
88
91
92
92
93
Tabellenverzeichnis
IX
Tabellenverzeichnis
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7.10
7.11
7.12
7.13
7.14
7.15
Aufbau der Spezialdatenstruktur für Testobjekt 1 (Kugel, 327.680 Dreiecke) und
vier unterschiedliche Abbruchheuristiken. . . . . . . . . . . . . . . . . . . . . .
Test zur Punktklassifizierung mit Testobjekt 1 (Kugel, 327.680 Dreiecke), der maximalen Gitterhierarchieebene und vier unterschiedlichen Abbruchheuristiken. . .
Aufbau der Spezialdatenstruktur für Testobjekt 2 (Würfel, 3.072 Dreiecke) und
vier unterschiedliche Abbruchheuristiken. . . . . . . . . . . . . . . . . . . . . .
Test zur Punktklassifizierung mit Testobjekt 2 (Würfel, 3.072 Dreiecke), der maximalen Gitterhierarchieebene und vier unterschiedlichen Abbruchheuristiken. . .
Aufbau der Spezialdatenstruktur für Testobjekt 6 (Manta/Taucher, 10.512 Dreiecke) und vier unterschiedliche Abbruchheuristiken. . . . . . . . . . . . . . . . .
Test zur Punktklassifizierung mit Testobjekt 6 (Manta/Taucher, 10.512 Dreiecke),
der maximalen Gitterhierarchieebene und vier unterschiedlichen Abbruchheuristiken. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Distanzberechnung für Testobjekt 3 an Hand einer deformierten und einer regulär
unterteilten Gitterhierarchie. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Distanzberechnung für Testobjekt 4 an Hand einer deformierten und einer regulär
unterteilten Gitterhierarchie. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vergleich der Gitterdeformation zwischen FM- und A-Gitter. . . . . . . . . . . .
Vergleich der resultierenden Qualitätsmaße zwischen der Eingitterdeformation auf
der feinsten Hierarchieebene und der Mehrgitterdeformation. . . . . . . . . . . .
Testwerte zur Funktionsweise der verschiedenen Projektionstechniken mit regulär
unterteiltem Gitter und dem Würfelobjekt. . . . . . . . . . . . . . . . . . . . . .
Testwerte zum Einfluss der unterschiedlichen Skalierung der Monitorfunktion auf
die anschließende Projektion. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Testwerte zum Einfluss der unterschiedlichen Skalierung der Monitorfunktion auf
die anschließende Projektion. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Testwerte zum Einfluss der unterschiedlichen Skalierung der Monitorfunktion auf
die anschließende Projektion. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung der Laufzeiten für das Golfmodell im Benchmarkkanal und
einem aus 21×8×8 Hexaedern bestehendem Grobgitter. . . . . . . . . . . . . .
58
58
58
59
60
60
64
64
69
70
74
76
77
78
85
A.1 Test zur Punktklassifizierung mit Testobjekt 1 (Kugel 327.680 Dreiecke), vier Gitterhierarchieebenen und vier unterschiedlichen Abbruchheuristiken. . . . . . . . 98
A.2 Test zur Punktklassifizierung mit Testobjekt 2 (Würfel 3.072 Dreiecke), vier Gitterhierarchieebenen und vier unterschiedlichen Abbruchheuristiken. . . . . . . . 99
A.3 Test zur Punktklassifizierung mit Testobjekt 6 (Manta/Taucher 10.512 Dreiecke),
vier Gitterhierarchieebenen und vier unterschiedlichen Abbruchheuristiken. . . . 100
X
Tabellenverzeichnis
A.4 Distanzberechnung für Testobjekt 3, an Hand einer deformierten und einer regulär
unterteilten Gitterhierarchie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
1
Kapitel 1
Einleitung
1.1
Einführung und Motivation
Strömungsvorgänge von Flüssigkeiten und Gasen treten in der Natur in vielfältiger Form auf.
Sie existieren bei der Entstehung von Wind und Meeresströmungen, bei Strömungen um verschiedenste Arten von Fahrzeugen oder auch bei Verbrennungsvorgängen innerhalb von Motoren.
Um Strömungen zu simulieren, existieren zwei grundsätzliche Verfahren: das Experiment und die
rechnergestützte Simulation.
Bei der experimentellen Strömungssimulation wird ein reales Modell, meist eine verkleinerte Variante des Originals, in einem Kanal platziert. Dort wird das Modell von einer Flüssigkeit oder
einem Gas umströmt und die entstehende Strömung wird visualisiert und ausgewertet. Diese Art
der Simulation ist technisch sehr aufwendig und sehr kostspielig.
Durch die steigende Rechenleistung moderner Computer hat das Gebiet der numerischen (rechnergestützten) Strömungssimulation (engl. Computational Fluid Dynamics, kurz CFD) stärkere
Beachtung gefunden, bietet jedoch ebenfalls eine gewisse Problematik. Es ist bei dem heutigen
Stand der Technik leider nicht möglich, eine fehlerfreie Simulation für komplexe Probleme zu
erstellen. In einem Aufsatz beschreiben Johnson u. a. [2005] die Entwicklung von Strömungssimulationen bei der Firma Boeing über einen Zeitraum von 30 Jahren. Demnach kann die Zahl der
Unbekannten für eine direkte Lösung von Gleichungssystemen, die eine Strömungssimulation beschreiben, eine Größe von bis zu 1018 erreichen. Diese Zahl übersteigt die Rechenleistung heutiger
Computer bei Weitem. Auf Grund dieser hohen Komplexität müssen Fehler in der Simulation eingeräumt werden, sofern auf die Simulation nicht verzichtet werden soll. Das Ziel jeder Simulation
ist es die entstehenden Fehler so gering wie möglich zu halten und dennoch in angemessener Zeit
brauchbare Ergebnisse zu liefern. Trotz anfänglicher Schwierigkeiten hat sich die rechnergestützte
Simulation als eine zum Experiment gleichwertige Entwicklungsmethode etabliert.
In dieser Arbeit wird der Schwerpunkt auf die Betrachtung von Strömungsvorgängen in einem
Kanal gelegt. Ein Softwarepaket zur Lösung solcher Strömungsvorgänge ist das im Rahmen dieser Arbeit verwendete F EAT F LOW (siehe [Becker u. Turek 1999]). Grundsätzlich bestehen die
numerischen Simulationen aus folgenden vier Phasen:
1. Modellbildung
Die physikalischen Eigenschaften der zu untersuchenden Flüssigkeiten oder Gase werden
durch eine Reihe mathematischer Gleichungen beschrieben. Eine Möglichkeit für eine solche Beschreibung bieten die Navier-Stokes Gleichungen, die in dieser Diplomarbeit ver-
2
1. Einleitung
wendet werden. Sie bilden ein System partieller Differentialgleichungen, in das die physikalischen Erhaltungssätze für Impuls und Masse integriert sind.
2. Diskretisierung
Die Simulation findet in einem begrenztem Gebiet statt. Um eine Bearbeitung der Probleme
mit dem Computer zu ermöglichen, wird das Gebiet in eine endliche Anzahl von Teilgebieten zerlegt, welche in ihrer Gesamtheit ein Gitter beschreiben. Mit Hilfe dieses Gitters
erzeugt die Diskretisierung ein Gleichungssystem, mit welchem eine approximierte Lösung
der Strömungssimulation berechnet werden kann.
3. Berechnung
Die Lösung der Gleichungssysteme mit einem geeigneten Lösungsverfahren liefert eine
große Menge diskreter Rohdaten.
4. Aufbereitung
Die errechneten Daten werden mit Hilfe verschiedener Visualisierungstechniken aufbereitet
und somit in eine interpretierbare Form gebracht.
Sind diese vier Phasen erfolgreich durchlaufen, so kann entschieden werden, ob das Ergebnis
den gewünschten Anforderungen entspricht. Die Güte der Lösung hängt unter anderem von der
Feinheit des Gitters ab. Die Rechnung mit Hilfe des Gitters ist dabei umso genauer, je besser
das Gebiet durch das Gitter aufgelöst wird, also je mehr Knoten es an den „wichtigen“ Stellen
beinhaltet.
Diese Arbeit ist hauptsächlich im Bereich der Diskretisierung einzuordnen. Ein geeignetes Gitter für komplexe Geometrien zu erstellen, ist sehr aufwändig. Die Zeit, die dafür benötigt wird,
beträgt ein vielfaches der Zeit für eine tatsächliche Simulation, was einen Nachteil der rechnergestützten Simulation darstellt und gleichzeitig die Motivation für die Entwicklung einer Software
zur automatisierten Gittererstellung bietet.
Um ein geeignetes Gitter zu erstellen, muss im ersten Schritt das zu umströmende Objekt bestimmt
werden. In der Industrie entsteht der Entwurf von Prototypen hauptsächlich am Computer, welche
daher in den meisten Fällen übernommen werden können. Ein Prototyp, bzw. ein Objekt, kann
dabei aus verschiedenen Formen von Daten bereitgestellt werden, zum Beispiel als Oberflächenbeschreibung mit Hilfe von nicht-uniformen rationalen B-Splines (NURBS), oder auch in Form
von Oberflächentriangulierungen. Dabei bietet eine Triangulierung den Vorteil, dass sie sich aus
allen anderen Oberflächenbeschreibungen überführen lässt.
Zum Erstellen eines geeigneten Gitters existieren mehrere Varianten. In einer Variante beschreiben exakt randangepasste Gitter das Objekt mit den Seitenflächen einzelner Gitterelemente, die
mit ihren Knoten direkt auf dem Objekt liegen. Dazu wird ein Gitter erstellt, welches im Bereich
innerhalb des Objekts keine Elemente enthält. Diese Variante bietet ein genaues Gitter, ist jedoch
für eine automatisierte Gittererstellung sehr problematisch (siehe [Göddeke 2004] und [Bachmann
u. a. 2006]). Eine zweite Variante ist die Fictitious-Boundary Methode und wurde von Turek u. a.
[2003] in das F EAT F LOW-Paket integriert. Sie basiert auf einem Vollgitter, welches auch im Inneren des Objekts Elemente besitzt. Dabei beschreiben diejenigen Seitenflächen die Geometrie, die
sich komplett innerhalb des Objektes befinden. Diese Methode stellt eine gröbere Approximation
des Objektes dar als eine exakt randangepasste, ist jedoch für eine automatisierte Gittererstellung
besser geeignet. Bei beiden Verfahren gilt offensichtlich:
Je kleiner die Gitterelemente in der Nähe des Objektrands sind, desto besser ist die Auflösung
des Objekts. Aus dieser Beobachtung heraus wurden Methoden zur Verfeinerung des Gitters in
der Nähe des Objektrands entwickelt. Dabei können zum Beispiel Gitterelemente in der Nähe des
1.2 Ziele der Diplomarbeit
3
Objektrands mehrmals unterteilt werden, um eine höhere Genauigkeit zu erlangen. Es können aber
auch Gitterknoten so verschoben werden, dass sie sich in der Nähe des Objektrands konzentrieren.
Durch den Einsatz der Fictitious-Boundary Methode und einer Gitteradaptionsmethode (siehe
[Grajewski u. a. 2005]) sollen bestehende Verfahren zur Erstellung eines Gitters mit einem komplexen dreidimensionalen Objekt verbessert werden.
1.2
Ziele der Diplomarbeit
Diese Arbeit beschäftigt sich mit der Weiterentwicklung der Software I N G RID 3D1 , einer Werkzeugsammlung zur Gittererstellung. In ihr sind bereits wichtige visuelle und mathematische Kontrollmechanismen definiert worden, die sich zur Wiederverwendung eignen. Das in I N G RID 3D
verwendete Prinzip einer kontinuierlichen exakten Randanpassung wird auf Grund prinzipieller
Probleme fallen gelassen. Mit steigender Zahl von Gitterzellen wurde die Qualität der Gitter so
schlecht, dass sie trotz eingesetzter Gitterglättungsverfahren nicht auf einem Niveau gehalten werden konnte, welches von einem CFD-Löser benötigt wird. Stattdessen wird die Gitteradaption
nach dem von Grajewski u. a. [2005] vorgestellten Verfahren eingesetzt. Dabei werden Knoten
des Gitters zur Objektoberfläche hin verschoben, so dass sie sich dort konzentrieren und somit
eine höhere Auflösung des Objekts bieten, ohne die Zahl der Gitterelemente zu erhöhen. Für die
Funktionalität der Gitteradaption muss eine Monitorfunktion bestimmt werden, welche die Größe
der Gitterelemente definiert. Eine einfache Heuristik für eine Monitorfunktion ist ein Distanzfeld,
welches jedem Knoten des Gitters seine kürzeste Distanz zur Objektoberfläche zuordnet. Die Berechnung des Distanzfeldes soll mit einem effizienten Algorithmus implementiert werden.
Die Gitteradaption und die Berechnung der Simulation wird aus dem F EAT F LOW-Paket integriert,
wobei die Berechnung der Simulation einen Test für die Funktionalität der erstellten Gitter darstellen soll. Für die Simulation wird die Fictitious-Boundary Methode verwendet. Sie ist zwar
bereits im F EAT F LOW-Paket enthalten, jedoch muss ein Test bereitgestellt werden, der für jeden
Knoten des Gitters effizient entscheiden kann, ob er sich innerhalb oder außerhalb des Objekts
befindet. Um die Randanpassung zu verbessern, werden Projektionstechniken eingesetzt, die eine
nachträgliche Randanpassung ermöglichen sollen. Bei diesen Projektionstechniken werden Knoten des Gitters, die sich in der Nähe der Objektoberfläche befinden, direkt auf diese verschoben,
falls sich dadurch die Gitterqualität nicht zu stark negativ verändert.
Eine zentrale Komponente des F EAT F LOW-Pakets ist der Mehrgitteralgorithmus zur Lösung linearer Gleichungssysteme. Dieser verwendet zur Lösung der Gleichungssysteme nicht ein einzelnes
Gitter, sondern eine Hierarchie verschieden feiner Gitter, die aufeinander aufgebaut sind. Durch
die entstehende Software soll eine Hierarchie von Gittern aufgebaut werden, so dass der Mehrgitteralgorithmus eingesetzt werden kann.
Beim bisherigen Einsatz des F EAT F LOW-Pakets werden Parameter für die Gitterdeformation einmal zu Beginn der Simulation festgelegt und daraufhin die Simulation gestartet. Das Gitter wird
mit definierten Parametern deformiert und die Simulation durchgeführt, ohne dass weiterer Einfluss auf das Verfahren ausgeübt werden kann. Dieser Vorgang kann für Gittergrößen, die qualitativ
gute Ergebnisse liefern sollen, mitunter sehr lange dauern und zu einem so stark verzerrten Gitter
führen, dass die Lösung der Gleichungssysteme für die Simulation der Strömung nicht mehr möglich ist. Das Ziel dieser Arbeit ist es, eine Software zu erstellen, die eine Interaktion mit den bisher
verwendeten Verfahren erlaubt, um dadurch den Prozess der Gittererstellung zu verbessern. Durch
Kombination der verschiedenen hier vorgestellten Methoden soll zudem eine bessere Genauigkeit
und Qualität der Gitter erreicht werden.
1
InGrid3D wurde von der Projektgruppe 471 (siehe Bachmann u. a. [2006]) entwickelt.
4
1.3
1. Einleitung
Struktur der Arbeit
Der folgende Abschnitt liefert eine kurze Übersicht über die Struktur und den Aufbau dieser
Arbeit.
Kapitel 2 beschreibt wichtige Grundlagen, die zum Verständnis dieser Arbeit notwendig sind.
Es beginnt mit der Beschreibung der numerischen Strömungssimulationen (CFD). Es werden
die in dieser Arbeit verwendeten Methoden zur Diskretisierung beschrieben, mit besonderem
Augenmerk auf der Fictitious-Boundary Methode und der Gitterdeformation. Ebenfalls wird
das Mehrgitterverfahren mit den verwendeten Datenstrukturen kurz vorgestellt, die zu seiner
Funktionalität notwendig sind. Im nächsten Abschnitt wird die Software InGrid3D mit den
bereits existierenden Methoden dargestellt und im Anschluss daran die verwendete Objektrepräsentation durch eine Oberflächentriangulierung. Bei den Methoden zur Punktklassifizierung,
Berechnung der Monitorfunktion und der Gitteradaption wird das aus der Computergraphik
bekannte Verfahren zur Strahlverfolgung eingesetzt und daher kurz erläutert. Abschließend werden Voronoi-Diagramme erklärt, welche bei der Berechnung des Distanzfeldes zum Beweis der
Effizienz des implementierten Verfahrens herangezogen werden.
Kapitel 3 behandelt das Problem der Punktklassifizierung, also der Entscheidung, ob sich ein
Knoten innerhalb oder außerhalb des Objektes befindet. Zur effizienten Lösung dieses Problems
können Suchdatenstrukturen in Verbindung mit dem Verfahren der Strahlverfolgung verwendet
werden. Als Suchdatenstruktur wird der Octree, bzw. seine zweidimensionale Variante mit ihren
Vor- und Nachteilen vorgestellt, bevor mit der eigens entwickelten effizienten Datenstruktur
fortgefahren wird.
Kapitel 4 beschäftigt sich mit der Berechnung kürzester Distanzen jedes Knotens zur Objektoberfläche, welche bei der Gitteradaption verwendet werden. Zunächst wird das Problem und eine
Lösung durch einen naiven Algorithmus vorgestellt. Danach wird eine Variante des von Sethian
[1996] vorgestellten Fast Marching Algorithmus zur Berechnung des Distanzfeldes dargestellt.
Nachdem seine Funktionsweise erläutert wurde, wird seine Korrektheit und Effizienz an Hand
von Voronoi-Diagrammen veranschaulicht.
Kapitel 5 stellt verschiedene Projektionstechniken vor, mit denen Knoten des Gitters direkt auf
die Oberfläche des Objekts verschoben werden. Es werden verschiedene Ansätze vorgestellt und
eine optimierte Kombination aufgezeigt.
Kapitel 6 beschreibt die Software I N G RID 3DD EFORM, die im Rahmen dieser Arbeit erstellt wurde. Zuerst wird die grundlegende Funktionalität vorgestellt. Danach werden die implementierten
Methoden und ihre Funktionsweisen erläutert.
Kapitel 7 zeigt zunächst die Ergebnisse und Resultate, die mit den verschiedenen eingesetzten
Techniken erzielt werden können. Die erzielten Ergebnisse werden im Anschluss diskutiert.
Kapitel 8 schließt die Arbeit mit einem Ausblick auf mögliche Erweiterungen und Optimierungen,
die mit der Software I N G RID 3DD EFORM erreicht werden können.
Die Arbeit schließt mit einen Quellenverzeichnis.
5
Kapitel 2
Grundlagen
Dieses Kapitel erläutert die Grundlagen, die zum Verständnis dieser Arbeit notwendig sind. Zuerst wird das Gebiet der numerischen Strömungssimulation (engl. Computational Fluid Dynamics)
vorgestellt. Dabei wird besonders auf das zugrunde liegende mathematische Modell, die Diskretisierung und das Mehrgitterverfahren eingegangen. Bei der Diskretisierung werden verschiedene
Verfahren benutzt, die im Rahmen dieser Arbeit implementiert wurden, und auf dem Prinzip der
Strahlverfolgung (engl. Raytracing) basieren. Da dies ein Kernprinzip der Arbeit darstellt, wird
hierfür ein effizienter Algorithmus erläutert.
Weil die erstellte Software I N G RID 3DD EFORM auf der Software I N G RID 3D der Projektgruppe
4711 aufbaut, wird diese dargestellt, ebenso wie das dort verwendete Prinzip der exakten Randanpassung. Im Anschluss daran wird auf die Datenstruktur und die Eigenschaften des zu umströmenden Objekts eingegangen. Danach werden Voronoi-Diagramme erklärt, die im Kapitel zur
Distanzberechnung verwendet werden. Das Kapitel endet mit einer kurzen Beschreibung der verwendeten externen Software.
2.1
Computational Fluid Dynamics
In diesem Kapitel werden die benötigten Grundlagen des Computational Fluid Dynamics beschrieben. Auf eine ausführliche Beschreibung wird dabei verzichtet, da sich diese Arbeit innerhalb des
CFD hauptsächlich mit dem Teilaspekt der Diskretisierung beschäftigt. Für eine detailliert mathematische Beschreibung sei auf Lehrbücher verwiesen, die sich mit dem Thema CFD auseinander
setzen, wie zum Beispiel Anderson [1995] oder Donea u. Huerta [2003]. Grundsätzlich beschäftigt sich das Gebiet des CFD mit der Simulation von so genannten Fluiden. Mit diesem Begriff
werden Flüssigkeiten und Gase beschrieben, also Stoffe die keine feste Form haben. Will man ein
Fluid simulieren, so muss im ersten Schritt ein mathematisches Modell gefunden werden, das seine
physikalischen Eigenschaften beschreibt. Im zweiten Schritt muss eine geeignete und möglichst
genaue Diskretisierung bestimmt werden. Zuletzt muss ein Verfahren gewählt werden, mit dem eine approximative Lösung des mathematischen Modells mit Hilfe einer Diskretisierung berechnet
werden kann.
1
Details zu den Ergebnissen der PG 471 sind unter http://ls7-www.cs.uni-dortmund.de/
beyondgraphics/ zu finden.
6
2. Grundlagen
2.1.1
Das mathematische Modell
Die mathematische Beschreibung eines Fluids ist nicht trivial, da viele verschiedene physikalische
Vorgänge innerhalb des Fluids wirken können. Alle Vorgänge in eine Simulation zu integrieren,
stellt eine enorme Herausforderung dar, je nach Anwendung müssen aber nicht alle von Bedeutung sein. Für das Szenario eines Windkanals ist zum Beispiel der Einfluss der Temperatur vernachlässigbar, für die Strömungsvorgänge innerhalb einer Teekanne voll kochenden Wassers ist
ihr Einfluss dagegen essentiell.
Die folgenden physikalischen Eigenschaften sind für jede Strömungssimulation bedeutsam:
• Zähigkeit (engl. viscosity)
• Dichte (engl. density)
• Druck (engl. pressure)
• Geschwindigkeit (engl. velocity)
Zähigkeit beschreibt eine grundlegende Eigenschaft des Fluids. Ist die Zähigkeit des Fluids hoch,
wirken in ihm höhere Reibungskräfte. Honig ist ein Beispiel für ein Fluid mit hoher und Wasser
mit niedriger Zähigkeit. Die Dichte ist eine Eigenschaft, die hauptsächlich bei Gasen eine Rolle
spielt, da Flüssigkeiten durch äußeren Einfluss nicht komprimierbar (engl. incompressible) sind.
Für das hier verwendete Modell wird ein nicht komprimierbares Fluid angenommen, bei dem die
Dichte konstant ist. Druck und Geschwindigkeit sind die Hauptkomponenten einer Strömungssimulation und üblicherweise bei Simulationen von Fluiden von besonderem Interesse. Das zugrunde liegende mathematische Modell zur Beschreibung der physikalischen Vorgänge basiert in der
verwendeten Software F EAT F LOW auf den Navier-Stokes Gleichungen, speziell auf der Beschreibung nicht komprimierbarer und nicht turbulenter Strömungen. Bei diesem Gleichungssystem gibt
es drei grundlegende mathematische Größen, welche die Strömung eines Fluids in einem Gebiet
Ω ∈ Rd , d ∈ {2, 3} über die Zeit t ∈ [0, T ] charakterisieren:
• u : Ω × [0, T ] → Rd Geschwindigkeitsfeld
• p : Ω × [0, T ] → R Druck
• ρ : Ω × [0, T ] → R Dichte
Das Navier-Stokes Gleichungssystem basiert auf den Prinzipien der Masse- und EnergieErhaltung. Innerhalb von Ω kann keine neue Energie oder Masse entstehen. Bei dem hier verwendeten Szenario des Windkanals wird das Gebiet durch einen Quader definiert, die Abbildung
2.1 veranschaulicht dies im zweidimensionalen Beispiel an Hand eines Rechtecks. An Seite A
wird typischerweise ein parabolisches Einströmprofil vorgegeben, die gegenüberliegende Seite C
ist als Ausflussrand definiert. Auf allen übrigen Seitenflächen wird die Geschwindigkeit auf u = 0
festgesetzt, wodurch eine undurchdringliche Wand simuliert wird.
In diesem so begrenztem Gebiet Ω müssen die Erhaltungsgleichungen gelten und werden folgendermaßen zusammengefasst:
∂t u + (u · ∇)u + ∇p = ν∆u + f
∇ · u = 0.
(2.1)
(2.2)
Die Gleichung (2.1) wird Impulsgleichung genannt und besteht aus vier Termen: der Zeitableitung
der Geschwindigkeit ∂t u, dem Advektionsterm (u · ∇)u, dem Diffusionsterm ν∆u, sowie dem
2.1 Computational Fluid Dynamics
7
Abbildung 2.1: Typisches Szenario eines Windkanals mit definierten Randbedingungen. A: Rand
mit definiertem parabolischen Einströmprofil. B: Ränder mit definierter Geschwindigkeit 0. C: Ausflussrand mit natürlichen Randbedingungen.
Druckgradienten ∇p. Die Transporteigenschaften des Fluids werden durch den Advektionsterm
beschrieben, während der Diffusionsterm die Viskosität des Fluids darstellt, wobei die Zahl ν ∈ R
als Viskositätskoeffizient bezeichnet wird. Die Gleichung (2.2) wird als Kontinuitätsgleichung
bezeichnet und beschreibt sowohl das physikalische Prinzip der Masseerhaltung als auch die Inkompressibilität des Fluids. Diese Gleichungen definieren das mathematische Modell, welches in
dieser Arbeit angewendet wird.
2.1.2
Diskretisierung
Für komplexe Strömungsvorgänge ist es nicht möglich, die entstehenden Navier-Stokes Gleichungen analytisch zu lösen. Daher bedient man sich numerischer Verfahren, die eine approximative
Lösung berechnen. Der Begriff Diskretisierung bezeichnet hierbei die Bildung eines Gleichungssystems, welches die Navier-Stokes Gleichungen in eine diskrete, mit dem Computer approximativ
berechenbare Form überführt. Ein Hauptbestandteil der Diskretisierung besteht aus der Aufteilung
des Gebietes Ω in eine endliche Anzahl geometrischer Teilgebiete. Mögliche geometrische Einheiten für diese Teilgebiete werden abhängig von den bestehenden Anforderungen gewählt. Das
Gebiet Ω kann im Dreidimensionalen zum Beispiel durch Tetraeder oder Hexaeder unterteilt werden. Tetraeder haben den Vorteil, dass sie sich besser zur automatisierten Unterteilung eines Gebiets eignen. Mit Hexaedern kann jedoch eine genauere Lösung berechnet werden (siehe Ferziger
u. Peric [2002]). Diese Arbeit beschäftigt sich mit der Erstellung von strukturierten Hexaedergittern2 , die zur Diskretisierung verwendet werden können. Die Gesamtheit der Hexaeder wird im
folgenden Gitter (engl. mesh) genannt und ist durch deren Knoten und Kanten definiert.
Eine bessere Approximation der Lösung kann unter anderem dadurch erreicht werden, dass das
Gebiet Ω durch das Gitter besser aufgelöst wird. Das heißt, je mehr Hexaeder das Gebiet unterteilen und je kleiner ihre Kantenlänge ist, desto besser ist die Approximation des Objektes und
somit auch der Lösung (siehe Abbildung 2.2). Zur Lösung der Strömungssimulation existieren
verschiedene Methoden. Beispielhaft seien hier die Methoden der Finiten Differenzen (FD), der
Finiten Volumen (FV) und der Finiten Elemente (FEM) genannt. In dem verwendeten Software
Paket F EAT F LOW wird ausschließlich die Methode der Finiten Elemente eingesetzt.
2
In einem strukturierten Hexaedergitter hat jeder innere Knoten sechs Nachbarn und bis auf die Randknoten hat
jeder Knoten die gleiche Konnektivität. Die verwendeten Datenstrukturen und der verwendete Löser aus dem
F EAT F LOW-Paket sind so aufgebaut, dass eine Erweiterung auf unstrukturierte Hexaeder-Gitter prinzipiell möglich ist.
8
2. Grundlagen
Abbildung 2.2: Zwei unterschiedliche Auflösungen eines Gebietes durch ein Gitter. Das Objekt ist
schwarz und seine Approximation grau dargestellt.
Fictitious-Boundary Methode
Bei den üblichen Verfahren zur Diskretisierung des Problems in einem Gebiet, in dem sich ein
Objekt befindet, existieren innerhalb des Objekts keine Elemente des Gitters. Weil das Innere des
Objekts in der Regel nicht durchströmt wird3 , werden dort keine Gitterelemente benötigt. Am Objekt anliegende Gitterelemente definieren eine Approximation des Objektes und damit einen an
die Objektoberfläche angepassten Rand. Für viele in dieser Arbeit verwendete Methoden ist es
jedoch essentiell, dass das Gebiet auch innerhalb des Objekts durch ein Gitter zerlegt wird. Auf
Grund dieser Tatsache existiert kein echter Rand, durch den das Objekt approximiert wird. Die
von Turek u. a. [2003] vorgestellte Fictitious-Boundary Methode behandelt das Problem ähnlich
den Randbedingungen, die einen undurchdringbaren Rand an den Gebietsgrenzen simulieren. Zuerst ist es notwendig, alle Knoten des Gitters als Knoten innerhalb oder außerhalb des Objekts
zu klassifizieren. Das Objekt bzw. seine Approximation wird durch diejenigen Seitenflächen der
Hexaeder klassifiziert, die sich in seinem Inneren befinden. Für diese Seitenflächen und ihre Knoten werden Dichte oder Zähigkeit auf einen sehr hohen Wert gesetzt, so dass dort das Fluid die
Form eines festen Körpers annimmt und einen undurchdringbaren Rand für die simulierte Strömung darstellt. Der so deklarierte „künstliche“ Rand bildet eine schlechtere Approximation des
tatsächlichen Objektes als ein echter Rand, da nicht gewährleistet werden kann, dass sich die so
3
Eine Ausnahme wäre zum Beispiel, wenn das Objekt aus einem porösen Material bestehen würde.
2.1 Computational Fluid Dynamics
9
definierten Randknoten auch exakt auf der Objektoberfläche befinden (siehe Abbildung 2.2). Die
exakte Randanpassung eines Hexaedergitters konnte bisher nicht zufriedenstellend gelöst werden
und ist ein offenes Problem im Bereich des CFD. Aus diesem Grund wird in dieser Arbeit die
Fictitious-Boundary Methode eingesetzt, die eine viel versprechende Alternative bietet.
Gitterdeformation
Die Genauigkeit einer Simulation hängt unter anderem von der Feinheit des Gitters ab, das zur
Diskretisierung verwendet wird. Theoretisch kann ein Gitter beliebig fein erstellt werden, praktisch jedoch gibt es in Computern Limitierungen von Speicherplatz und Rechenzeit. Aus diesem
Grund wurden Methoden entwickelt, die im Vergleich zu einem regulär unterteiltem Gitter ein
ähnlich genaues Ergebnis liefern, das Gebiet jedoch durch weniger Hexaeder unterteilt. Diese
Verfahren nutzen die Tatsache aus, dass eine genauere Diskretisierung nur in interessanten Regionen des Gebiets erforderlich ist. Dabei ist die Entscheidung, welche Regionen interessant sind,
von der jeweiligen Anwendung abhängig. Sollen mögliche von einem Objekt verursachte Wirbel
in einer Strömung untersucht werden, ist die Region hinter dem Objekt interessant und sollte besser aufgelöst werden. Für den hier vorgestellten Anwendungsfall ist die interessante Region in der
Nähe eines Objektes, was genau dort eine feinere Unterteilung des Gitters impliziert als in anderen
Regionen des Gebietes.
Eine Methode, um eine feineres Gitter in der Nähe des Objekts zu erreichen, ist die h-Adaptivität
(engl. h-adaptivity). Bei dieser Methode werden die Elemente eines Gitters, die sich in der Nähe
des Objekts befinden, zusätzlich unterteilt. Dadurch entstehen dort kleinere Hexaeder, durch die
eine bessere Approximation des Objekts erreicht wird. Nachteil dieser Methode ist jedoch die
Entstehung hängender Knoten, so dass selbst aus strukturierten (Grob-)Gittern unstrukturierte
(Fein-)Gitter entstehen, was zu Leistungseinbußen bei der Berechnung der Strömungssimulation
führt (vergleiche Becker [2007]).
Die in dieser Arbeit verwendete und von Grajewski u. a. [2005] vorgestellte Methode zur Gitteradaption basiert auf der so genannten r-Adaptivität (engl. r-adaptivity), bei der die Struktur des
Gitters erhalten bleibt und die feinere Diskretisierung am Objektrand nur durch die räumliche
Verschiebung von Knoten erreicht wird. Ein wichtiger Bestandteil dieser Methode ist die Wahl einer so genannten Monitorfunktion, deren effiziente Berechnung Teil dieser Arbeit ist. Diese kann
zum Beispiel für jeden Knoten des Gitters aus seiner minimalen euklidischen Distanz zur Objektoberfläche bestehen, wobei die Distanz auf das Intervall [, 1] normiert wird. Die Monitorfunktion
beschreibt hierbei indirekt eine Zielfunktion für das Volumen der Hexaeder bei den Koordinaten
der Knoten. Die Idee dahinter ist in diesem Fall, je näher ein Knoten sich am Objektrand befindet, desto kleiner sollen die Hexaeder an seiner Position werden. Dabei wird durch den Wert 1
das größte mögliche Volumen beschrieben und durch den Wert das kleinste. Dies hat zur Folge,
dass Hexaeder nicht beliebig groß oder beliebig klein werden und dass ihre Größen voneinander
abhängig sind. Wird zum Beispiel auf den Wert 0,1 gesetzt, werden die größten Hexaeder im
Vergleich zu den kleinsten zehn mal so viel Volumen einnehmen (siehe Abbildung 2.3). Weil die
berechnete Distanz jedoch nichts über die tatsächlichen Ausmaße des Gebietes aussagt, kann sie
skaliert werden, wobei die Wahl der richtigen Skalierung heuristisch erfolgt. Ebenfalls ist es möglich, die Distanz für Knoten, die sich innerhalb des Objektes befinden, anders zu skalieren als für
Knoten, die sich außerhalb befinden. Hierdurch kann erreicht werden, dass Hexaeder innerhalb
des Objektes größer werden und somit mehr Knoten in Richtung des Objektrandes verschoben
werden.
Aus der Monitorfunktion wird ein Vektorfeld berechnet, dessen Vektoren zum kleinsten Wert ge-
10
2. Grundlagen
richtet sind. Wird die Distanz als Monitorfunktion gewählt, so sind die Vektoren jeweils zur minimalen Distanz zum Objektrand gerichtet. Bei der Gitterdeformation wird jeder einzelne Knoten
des Gitters entlang dieses Vektorfeldes bewegt, wobei das Vektorfeld eine Art Geschwindigkeitsfeld für die Bewegung der Gitterknoten darstellt. Durch den Einsatz eines geeigneten und einer
geeigneten Skalierung der Monitorfunktion kann ein Gitter erstellt werden, welches das Gebiet
zum Objektrand hin feiner auflöst.
Abbildung 2.3: Gitterdeformation mit unterschiedlichen Parametern . Oben: Schnitt durch ein
deformiertes Gitter mit =0,1. Der größte Hexaeder ist zehn mal so groß wie
der kleinste. Unten: Schnitt durch ein deformiertes Gitter mit =0,01. Der größte
Hexaeder ist hundertmal so groß wie der kleinste. Die Gitterdeformationsmethode
verzerrt das Gitter jedoch so stark, dass eine Lösung der Simulation mit Hilfe
dieses Gitters nicht mehr möglich ist.
2.1.3
Mehrgitterverfahren
Das unter anderem von Hackbusch [1985] entwickelte Mehrgitterverfahren bietet einen optimalen
Ansatz zur Lösung linearer Gleichungssysteme, die als Teilprobleme bei der Lösung der NavierStokes Gleichungen auftreten. Die Grundidee für dieses Verfahren ist der Einsatz mehrerer, unterschiedlich genauer Gitter zur Diskretisierung des Gebiets. Beginnend mit einem groben Gitter
wird eine Hierarchie von Gittern erstellt, in der jedes folgende Gitter durch eine reguläre Unterteilung des vorherigen Gitters erstellt wird. Dabei wird jeder einzelne Hexaeder eines Gitters in acht
2.1 Computational Fluid Dynamics
11
neue geteilt, wodurch das Gebiet feiner aufgelöst wird. Auf Grund dieser Unterteilung bleibt in
jedem Gitter der Hierarchie die Struktur erhalten und die Anzahl der Hexaeder wächst pro Stufe
der Hierarchie um das Achtfache.
Bei Verfahren mit exakter Randanpassung muss bei der Unterteilung eines Gitters eine Randanpassung der neu erstellten Punkte vorgenommen werden, damit das Objekt nach der Unterteilung
auch besser approximiert wird. Dies hat sich im dreidimensionalen Raum jedoch als nicht trivial
herausgestellt (siehe [Göddeke 2004]). Wird die zuvor beschriebene Fictitious-Boundary Methode
verwendet, entfällt die komplizierte Randanpassung (siehe Abbildung 2.4). Ist einmal eine Gitterhierarchie erstellt, löst das Mehrgitterverfahren nun lineare Gleichungssysteme auf dem feinsten
Gitter der Hierarchie mit Hilfe von Teilproblemen auf den gröberen Gittern. Die zentralen Komponenten des Mehrgitterverfahrens sind dabei zum einen iterative Löser für iterative Gleichungssysteme, zum anderen Gittertransferoperatoren, welche Lösungen zwischen verschiedenen Hierarchieebenen transportieren. Wird dabei die Lösung von einem gröberen zu einem feineren Gitter
transportiert, so wird dies Prolongation und der umgekehrte Weg Restriktion genannt.
Im Rahmen dieser Arbeit wird mit Hilfe der erstellten Software eine Mehrgitterhierarchie aufgebaut. Diese dient dem verwendeten Navier-Stokes-Löser als Basis zur Lösung der Strömungssimulation unter Anwendung des Mehrgitterverfahrens.
Abbildung 2.4: Darstellung einer Gitterhierarchie bestehend aus drei Ebenen mit der FictitiousBoundary Methode. Links: Erste Ebene der Hierarchie, auch Grobgitter genannt.
Das Objekt wird nur durch die vier Kanten approximiert, die sich innerhalb des
Objekts befinden. Mitte: Zweite Ebene der Hierarchie. Die Elemente, die sich vollständig innerhalb des Objekts befinden, definieren die Approximation des Objekts.
Rechts: Auf der dritten Hierarchieebene wird das Objekt genauer approximiert.
Datenstruktur für Mehrgitterverfahren
Das in dieser Arbeit verwendete F EAT F LOW-Paket besitzt eine Datenstruktur, auf deren Grundlage
es aus einem Grobgitter heraus die notwendige Mehrgitterhierarchie selbst erstellt. Die Software
I N G RID 3D wurde vollkommen unabhängig von F EAT F LOW entwickelt und besitzt daher eine eigene Datenstruktur, die von sich aus nicht kompatibel ist. Um das Mehrgitterverfahren dennoch in
F EAT F LOW nutzen zu können, wurde eine Methode entwickelt, mit deren Hilfe eine Kompatibilität beider Datenstrukturen erreicht werden kann. Diese Methode ist zwar speziell, jedoch lässt sie
sich auch für andere Datenstrukturen nutzen, die eine Kompatibilität mit F EAT F LOW erfordern.
Die Datenstruktur in F EAT F LOW basiert auf dem so genannten 2-level-ordering. Dabei wird jedes
Element des Gitters nummeriert, so dass sich innerhalb der Datenstruktur immer auf diese Num-
12
2. Grundlagen
merierung bezogen werden kann. Einheiten sind hierbei zum Beispiel Knoten, Kanten, Seitenflächen oder Hexaeder. Eine Eigenschaft, die bei der Erstellung einer Mehrgitterhierarchie benötigt
wird, besteht darin, dass sich die Nummern der Knoten innerhalb der verschiedenen Gitterebenen
der Hierarchie, also mit feiner werdendem Gitter, nicht verändern. Dies kann erreicht werden, indem die Knoten auch innerhalb der Gitterebenen fortlaufend nummeriert werden. Wird ein Gitter
unterteilt, so wird die Nummerierung bei den neu entstehenden Knoten fortgeführt, wodurch die
ursprünglichen Knotennummern bleiben erhalten. Dies ist ebenfalls in der Datenstruktur von I N G RID 3D gegeben, jedoch wird das Gitter in einer anderen Reihenfolge aufgebaut, was zu einer
verschiedenen Nummerierung und damit zu der Inkompatibilität beider Datenstrukturen führt.
Eine weitere Eigenschaft der F EAT F LOW Datenstruktur entsteht bei der Unterteilung der Hexaeder. Für den Mehrgitteralgorithmus muss eine spezielle Verbindung zwischen zwei aufeinander
folgenden Gittern der Hierarchie bestehen. Jeder Hexaeder des gröberen Gitters wird in acht neue
Hexaeder des feineren Gitters unterteilt. Dabei muss sichergestellt werden, dass von dem alten
Hexaeder auf die neuen geschlossen werden kann. Für diese Verbindung müssen zwei Vorgaben
erfüllt werden:
Bei der Verbindung zweier aufeinander folgender Gitter in der Hierarchie muss eine Referenz
zwischen dem Hexaeder des gröberen Gitters und den Hexaedern des feineren Gitters bestehen.
Für diese Referenz wird eine bestimmte Nummerierung der Hexaeder benutzt. Die Nummer des
alten Hexaeders aus dem gröberen Gitter wird einem der acht neuen Hexaeder des feineren Gitters
zugewiesen, die Nummer dieser beiden Hexaeder bildet somit eine Schnittstelle bzw. Referenz
zwischen den Hexaedern der zwei Gitterebenen. Dabei wird jedoch nicht willkürlich einer der
neuen Hexaeder gewählt, sondern ein genau definierter, für dessen Bestimmung eine Orientierung
der Hexaeder eingeführt werden muss.
Für diese Orientierung werden in F EAT F LOW zu jedem Hexaeder seine acht Knoten in einer festgelegten Reihenfolge gespeichert. Die Reihenfolge dieser acht Knoten definiert dabei die Orientierung des Hexaeders und damit ebenfalls die Reihenfolge seiner sechs Seitenflächen. Die Abbildung 2.5 veranschaulicht die Reihenfolge der Knoten 1-8 und die daraus resultierende Orientierung der Seitenflächen A-F. Die ersten vier Knoten 1-4 definieren dabei die erste Seite A und die
letzten vier Knoten 5-8 die gegenüberliegende sechste Seite F. Die zweite Seite B wird durch die
Knoten 1, 2, 5 und 6 definiert. Die dritte Seite C wird durch die Knoten 2, 3, 6 und 7 definiert.
Die Definitionen der vierten und fünften Seiten D und E erfolgen analog. Der Referenz-Hexaeder
der acht neuen Hexaeder wird nun aus dieser Orientierung heraus dadurch bestimmt, dass er zum
Knoten 1 des alten Hexaeders inzident ist. Er ist der einzige neue Hexaeder, der den ersten Knoten
aus der festgelegten Reihenfolge mit dem alten Hexaeder gemeinsam hat.
Abbildung 2.5: Eine festgelegte Reihenfolge der Knoten eines Hexaeder bestimmt die Orientierung seiner Seitenflächen A-F.
2.1 Computational Fluid Dynamics
13
Die zweite Vorgabe ist die, dass es möglich sein muss, vom Referenz-Hexaeder auf die sieben
anderen neuen Hexaeder zu schließen. Ausgehend von ihm wird dazu ein Pfad auf der Grundlage
von Informationen über die Nachbarschaft jedes Hexaeders durchlaufen. Für diesen Pfad muss
eine genau definierte Orientierung der acht Hexaeder zu dem Hexaeder existieren, aus dem sie
durch Unterteilung entstanden sind. Dies ist in Abbildung 2.6 dargestellt. Mit Hilfe des folgenden
Pfades werden alle acht Hexaeder in einer genau definierten Reihenfolge gefunden:
1. Der erste Hexaeder ist der Referenz-Hexaeder.
2. Der zweite Hexaeder ist der an Seite C anliegende Nachbar des ersten Hexaeder.
3. Der dritte Hexaeder ist der an Seite C anliegende Nachbar des zweiten Hexaeder.
4. Der vierte Hexaeder ist der an Seite C anliegende Nachbar des dritten Hexaeder.
5. Der fünfte Hexaeder ist der an Seite F anliegende Nachbar des ersten Hexaeder.
6. Der sechste Hexaeder ist der an Seite C anliegende Nachbar des fünften Hexaeder.
7. Der siebte Hexaeder ist der an Seite C anliegende Nachbar des sechsten Hexaeder.
8. Der achte Hexaeder ist der an Seite C anliegende Nachbar des siebten Hexaeder.
Damit dieser Pfad mit einer erstellten Mehrgitterhierarchie funktioniert, müssen die Seitenflächen
der neuen Hexaeder wie in Abbildung 2.6 orientiert sein. Dies bedeutet wiederum, dass für jeden der acht neuen Hexaeder genau die richtige Reihenfolge seiner acht Knoten herausgefunden
werden muss, um eine Kompatibilität mit F EAT F LOW zu erreichen.
Abbildung 2.6: Von F EAT F LOW geforderte Orientierung der acht neuen Hexaeder nach der Unterteilung. Links: Der ursprüngliche Hexaeder mit der Orientierung seiner Seitenflächen. Rechts: Die daraus resultierende Orientierung der acht neuen Hexaeder,
welche zur Veranschaulichung kleiner skaliert wurden. Die durch Kreise markierten Knoten sind die Knoten, die nach der Unterteilung erhalten bleiben und gleichzeitig die jeweils ersten Knoten der neuen Hexaeder sind.
Zuerst muss die Lage von Seitenflächen in Bezug auf das Gesamtgebiet definiert werden. Das
Gebiet für die Simulation wird durch einen Quader mit sechs Seiten definiert. Ist das Gebiet regulär durch Hexaeder unterteilt, so besitzt jeder Hexaeder Seitenflächen, die zu den sechs Seiten
14
2. Grundlagen
des Gebiets parallel liegen. Von Interesse sind nachfolgend nur die Seiten in horizontaler Lage,
die parallel zur Grundseite des Quaders liegen. Bei einem Grobgitter ist diese Lage der Seitenflächen definiert und muss bei der Unterteilung der Seitenflächen einer Gitterebene an die neuen
Seitenflächen weitergegeben werden. Dadurch kann diese horizontale Lage der Seitenflächen auch
bestimmt werden, falls das Gitter deformiert ist und keine Parallelität mehr vorhanden ist.
Für einen neuen Hexaeders ist nun der erste seiner acht Knoten immer derjenige, welcher schon
im ursprünglichen Hexaeder existiert hat und damit die kleinste Nummer besitzt. In der Abbildung 2.7 wird dieser Knoten mit i bezeichnet. Der zweite Knoten muss dem ersten Knoten auf
der Seitenfläche A gegen den Uhrzeigersinn folgen. Da die Seitenfläche A erst durch die Knoten
definiert wird, muss zuerst herausgefunden werden, welche Seitenfläche des Hexaeders die ersten
vier Knoten enthält. Dabei hilft die zuvor definierte Lage der Seitenflächen. Die Seitenfläche A ist
diejenige, die horizontal liegt und zum ersten Knoten inzident ist. Sie beinhaltet zudem zwei zum
ersten Knoten inzidente Kanten. Von diesen zwei Kanten muss herausgefunden werden, welche
den zweiten Knoten beinhaltet, damit die Reihenfolge der Knoten auf der Seitenfläche A gegen
den Uhrzeigersinn definiert wird. Die beiden Kanten werden dazu als Vektoren ij und ik betrachtet
mit Ursprung in Knoten i. Werden diese Vektoren in die horizontale x-y-Ebene eingebettet, dann
ist ihr Kreuzprodukt positiv, wenn die erste Kante den zweiten Knoten der Orientierung enthält
und negativ wenn ihn die zweite Kante enthält. Es wird im Grunde überprüft, ob die drei Knoten
in der Reihenfolge i → j → k, bzw. i → k → j einen links- bzw. rechts-Knick beschreiben. Ist
auf diese Weise der zweite Knoten in der Reihenfolge festgelegt, ist auf der zuvor identifizierten
Seitenfläche der dritte Knoten inzident zum zweiten und der vierte zum ersten. Die Reihenfolge
der Knoten 5-8 wird aus der Reihenfolge der Knoten 1-4 bestimmt, da der fünfte Knoten dem
ersten gegenüberliegt, der sechste dem zweiten, der siebte dem dritten und der achte dem vierten.
Mit Hilfe dieser Methode kann innerhalb jeder externen Software die in F EAT F LOW gebräuchliche
Orientierung der Hexaeder erreicht werden, die für die Funktionalität des Mehrgitterverfahrens
benötigt wird.
Abbildung 2.7: Bestimmung der Reihenfolge dreier Knoten gegen den Uhrzeigersinn. Die Reihenfolge der Knoten i → j → k beschreibt einen links-Knick und die Reihenfolge
i → k → j beschreibt einen rechts-Knick. Wird ein links-Knick beschrieben, so
folgt der zweite Knoten dem ersten gegen den Uhrzeigersinn, wird ein rechts-Knick
beschrieben, so folgt der dritte Knoten dem ersten gegen den Uhrzeigersinn.
2.2 Strahlverfolgung
2.2
15
Strahlverfolgung
Das Prinzip der Strahlverfolgung (engl. raytracing) wurde im Bereich der 3D-Computergrafik
entwickelt und basiert auf der Verfolgung von Strahlen innerhalb eines definierten Gebietes.
Ein Strahl besteht aus einem Ursprung und einer Richtung, beschreibt also eine Halbgerade.
Bei der Verfolgung eines Strahls wird der Punkt berechnet, in dem der Strahl auf ein beliebiges
Objekt4 trifft. Es muss also derjenige Schnittpunkt des Strahls mit dem Objekt berechnet werden,
der die geringste Distanz zum Ursprung des Strahls besitzt. Das weitere Vorgehen hängt von
dem Verfahren ab, in dem die Strahlverfolgung eingesetzt wird. Beim Einsatz im Bereich der
Sichtbarkeitsberechnungen wird der Strahl nicht weiter verfolgt. Bei der Berechnung photorealistischer Bilder kann hingegen das Material des Objekts über das weitere Vorgehen mit dem
Strahl entscheiden. Der Strahl wird reflektiert, wenn er auf ein spiegelndes Material trifft. Falls
er auf ein transparentes Material trifft, wird er mit den Informationen des transparenten Materials
weiterverfolgt.
In dieser Arbeit wird die Strahlverfolgung dazu benutzt, die exakten Schnittpunkte von Strahlen
mit der Oberfläche des zu umströmenden Objekts zu bestimmen. Da das Objekt als Triangulierung
gegeben ist, wurde ein Verfahren nach Möller u. Trumbore [1997] implementiert, durch welches
effizient entschieden werden kann, ob ein Strahl ein Dreieck schneidet. Falls benötigt, wird mit
dieser Methode ebenfalls der genaue Schnittpunkt berechnet. Als Eingabe benutzt das Verfahren
nur die drei Eckpunkte des Dreiecks, den Ursprung des Strahls und seine Richtung. Wird das
Dreieck vom Strahl geschnitten, werden baryzentrische Koordinaten für den Schnittpunkt innerhalb des Dreiecks berechnet. Baryzentrische Koordinaten sind hierbei Koeffizienten einer Linearkombination der drei Eckpunkte des Dreiecks, wobei jeder Koeffizient im Intervall [0,1] liegt
und ihre Summe genau 1 ergeben muss. Jeder Punkt innerhalb eines Dreiecks kann somit durch
eine Linearkombination aus dessen Eckpunkten dargestellt werden. Geometrisch betrachtet geht
die Methode zur Berechnung des Schnittes folgendermaßen vor:
Zuerst wird das Dreieck so verschoben, dass einer der Eckpunkte sich im Ursprung befindet. Im
zweiten Schritt werden die anderen beiden Eckpunkte auf eine Ebene des Koordinatensystems
projiziert, so dass ein gleichschenkliges Dreieck mit Schenkellänge 1 entsteht. Der Strahl wird
dabei ebenfalls transferiert und verläuft danach parallel zur dritten Achse. Nach dieser Transformation können die baryzentrischen Koordinaten berechnet werden und mit ihnen der tatsächliche
Schnittpunkt, falls dieser existiert.
Ein Vorteil dieser Methode besteht darin, dass es möglich ist, während jeden Schrittes zu überprüfen, ob die Berechnung abgebrochen werden kann. Falls zum Beispiel eine der berechneten
baryzentrischen Koordinaten nicht im Intervall [0,1] liegt, kann das Dreieck nicht vom Strahl geschnitten werden und die weitere Rechnung ist überflüssig.
2.3
I N G RID 3D
Die Projektgruppe 471 des Fachbereichs Informatik an der Universität Dortmund beschäftigte
sich bereits mit dem Problem der Gittererstellung für eine Diskretisierung des Strömungsgebietes
Ω und erstellte zu diesem Zweck die Software I N G RID 3D (siehe [Bachmann u. a. 2006]). Eines
der Ziele war ein exakt randangepasstes Gitter für das zu umströmende Objekt. Exakt randangepasst heißt hierbei, dass jede Seitenfläche eines Hexaeders welche das Objekt approximiert, mit
4
Der Begriff Objekt bezeichnet hierbei beliebige Geometrien, wie zum Beispiel Kugeln oder Triangulierungen.
16
2. Grundlagen
ihren vier Knoten genau auf der Objektoberfläche liegt. Um dieses Ziel zu erreichen, wurde in der
erstellten Software folgender Ansatz gewählt und implementiert.
Es wird von einem manuell erstellten Grobgitter ausgegangen, welches das Objekt grob approximiert und bereits exakt randangepasst ist. Dieses Grobgitter wird nach dem bereits vorgestellten
Verfahren verfeinert, bei dem jeder Hexaeder in acht neue unterteilt wird. Bereits auf der Objektoberfläche liegende Flächen des Grobgitters werden so unterteilt, dass die fünf neu entstehenden
Knoten ebenfalls auf der Objektoberfläche liegen. Dabei ist es nicht trivial zu entscheiden, an
welcher Position auf der Objektoberfläche die neuen Gitterknoten entstehen sollen. Um zwischen
zwei auf der Objektoberfläche liegenden Knoten einen neuen Knoten zu erstellen, wurde in
der Projektgruppe das Objekt zuerst parametrisiert. Die Parametrisierung bildet eine stückweise
Einbettung der Objektoberfläche in die Ebene. Bei der Unterteilung einer Kante kann zwischen
ihren zwei Knoten, die in der so erstellten parametrisierten Ebene liegen, eine Strecke gezogen
werden und deren Mittelpunkt als Parameterwert des neuen Knoten definiert werden. Durch die
Parametrisierung ist die tatsächliche Position des so errechneten neuen Knotens auf der Objektoberfläche bekannt. Mit dieser Methode entstehen bei jeder Verfeinerung des Gitters neue Punkte
direkt auf der Objektoberfläche, wodurch das Objekt besser approximiert wird.
Diese Vorgehensweise ermöglicht eine exakt randangepasste Approximation des Objekts, jedoch
ergeben sich fundamentale Probleme, die im Rahmen der Projektgruppe nicht gelöst werden konnten. Das erste Problem wird vom initialen Grobgitter verursacht. Es hat sich bereits ab einigen
hundert Hexaedern als schwierig erwiesen, ein Grobgitter von Hand zu erstellen. Hinzu kommt
die Tatsache, dass bestimmte Details der Geometrie schon im Grobgitter erfasst werden müssen,
da sie sonst in späteren Verfeinerungsschritten in starken Verzerrungen des Gitters resultieren können. Sind diese Verzerrungen zu stark, können sie bei einem Löser für Strömungssimulationen zu
fehlerhaften Ergebnissen führen. Bei einem Automodell konnten zum Beispiel Details wie Räder,
Radkästen, Spoiler und sogar Außenspiegel nicht durch ein Grobgitter aufgelöst werden, da das
Erstellen eines so feinen Grobgitters mit den verfügbaren Kapazitäten einen enormen Arbeitsaufwand dargestellt hätte, und insbesondere hätte das resultierende Grobgitter die Laufzeit dominiert.
Um dennoch ein simulationstaugliches Gitter zu erstellen, mussten solche Details in der Projektgruppe aus dem Objekt entfernt werden (siehe Abbildung 2.8).
Die im Rahmen dieser Arbeit erstellte Software baut auf der Software I N G RID 3D auf, jedoch wird
auf Grund der dargestellten Problematik auf eine kontinuierliche Randanpassung verzichtet und
erst nachträglich eine teilweise Randanpassung vorgenommen.
2.3.1
Qualitätskriterien für Gitter
Um die Qualität eines Gitters zu überprüfen, wurden in I N G RID 3D Qualitätskriterien implementiert, die folglich auch in der neuen Version zu finden sind. Die einzelnen Kriterien seien hier nur
kurz genannt. Auf eine ausführlichere Beschreibung wird auf die Arbeiten von Bachmann u. a.
[2006], Kelly [1998] und Göddeke [2004] verwiesen. Die Qualität eines Gitters wird an Hand der
Qualität einzelner Hexaeder überprüft, da ein einzelner qualitativ schlechter Hexaeder bereits dazu
führen kann, dass ein auf dem erstellten Gitter aufbauender Löser kein korrektes Ergebnis mehr
berechnet. Die in dieser Arbeit verwendeten Kriterien sind:
• Elementinvertierungen und Zelldurchdringungen,
• Kantenlängenverhältnis (engl. edge ratio),
• Seitenflächenverhältnis (engl. aspect ratio),
2.4 Objektrepräsentation
17
Abbildung 2.8: Mit Hilfe von I N G RID 3D erstellte exakt Randangepasste Approximation eines Objekts. Objektdetails wie Spiegel oder Räder mussten zuvor aus dem Objekt entfernt
werden.
• Innenwinkel (engl. corner angle) und
• Jacobi-Verhältnis (engl. jacobian ratio / deviation).
Die Entscheidung, ob ein Hexaeder den Qualitätskriterien entspricht oder nicht, hängt stark von
dem verwendeten Löser ab. Sind die Hexaeder zu stark verzerrt, kann dies dazu führen, dass
die Gleichungssysteme nicht lösbar sind und damit keine Lösung berechnet werden kann. Daher
ist es der Erfahrung des Anwenders überlassen, ob ein Gitter mit der gemessenen Qualität den
Anforderungen entspricht oder nicht. Schwellwerte für die einzelnen Qualitätskriterien können im
neuen I N G RID 3DD EFORM vom Benutzer eingestellt werden.
2.3.2
Glättungsoperatoren für Gitter
Um die Gitterqualität positiv beeinflussen zu können, wurden Glättungsoperatoren implementiert, die Knotenpositionen verschieben. Die Glättungsoperatoren wurden ebenso wie die zuvor
beschriebenen Qualitätskriterien aus I N G RID 3D übernommen, daher wird an dieser Stelle für eine genauere Beschreibung auf Bachmann u. a. [2006] und Göddeke [2004] verwiesen. Im Rahmen
dieser Arbeit wurden die Laplace- und Umbrella-Glättung (siehe Kobbelt [1994]) eingesetzt.
2.4
Objektrepräsentation
Bei der Simulation eines Windkanal-Szenarios soll üblicherweise der Einfluss eines Objekts
auf die Strömung untersucht werden. Dazu wird das Objekt in einem Gebiet platziert, welches
durchströmt wird. Es gibt dabei mehrere Möglichkeiten, das Objekt zu repräsentieren, wie zum
Beispiel durch seine analytische Beschreibung. Damit wird eine Kugel nur durch einen Mittelpunkt und einen Radius realisiert. Für ein so definiertes Objekt können sowohl die Klassifizierung
der Knoten in innere und äußere, als auch der Abstand jedes Knoten zur Objektoberfläche mit
einfachen mathematischen Formeln berechnet werden. Nachteil der analytischen Definition von
Objekten ist jedoch, dass es mit ihr nur schwer möglich ist, komplexe und realistische Objekte zu
18
2. Grundlagen
modellieren.
Ein weit verbreiteter Standard zur Repräsentation eines dreidimensionalen Objektes ist die Oberflächentriangulation mit Hilfe von Dreiecken. In I N G RID 3D wurde diese Form der Repräsentation
gewählt. Die Gesamtheit aller Dreiecke beschreibt ein Dreiecksnetz und definiert die Oberfläche
des Objektes (siehe Abbildung 2.9). Zum Import des Objektes wurde das STL-Dateiformat gewählt5 , da es eine Schnittstelle vieler CAD-Programme ist. Bei diesem Format wird jedes einzelne Dreieck durch drei Eckpunkte und eine Flächennormale charakterisiert. Die einzige zusätzliche Anforderung an das Objekt ist, dass die Oberfläche geschlossen ist: an jeder Kante des so
definierten Dreiecksnetzes müssen genau zwei Dreiecke anliegen, es dürfen sich keine Lücken in
der Oberfläche befinden. Würden Lücken zugelassen werden, so könnten Fehler in der Klassifizierung der Knoten entstehen, da nicht eindeutig entschieden werden kann, ob ein Knoten sich
innerhalb oder außerhalb des Objekts befindet. Das Objekt darf aus nicht zusammenhängenden
Teilen bestehen, die jedoch in sich geschlossen sein sollten, um Fehler zu vermeiden.
Abbildung 2.9: Darstellung zweier Objekte als Oberflächentriangulationen.
2.5
Voronoi-Diagramme
Benannt nach dem russischen Mathematiker Georgi Woronoi ist das Voronoi-Diagramm fester
Bestandteil der Algorithmischen Geometrie und damit auch in vielen Büchern beschrieben (zum
Beispiel in dem Buch von de Berg u. a. [2000]). Die nachfolgende Beschreibung bezieht sich
der Einfachheit halber auf den zweidimensionalen Raum. Ein Voronoi-Diagramm Vor(P ) wird
für eine beliebige Punktmenge P = {p1 , p2 , ..., pn } definiert. Es beschreibt eine Partitionierung
der Ebene in n Teile, die Voronoi-Regionen V (pi ) genannt werden. Eine Region V (pi ) wird so
definiert, dass innerhalb von V (pi ) jeder beliebige Punkt x zu dem Punkt pi , pi ∈ P die geringste
Distanz dist(x, pi ) hat. Genauer:
∀x ∈ V (pi ) : dist(x, pi ) < dist(x, pj ), ∀j 6= i, mit i, j ∈ {1, 2, ..., n}
(2.3)
Zwei benachbarte Voronoi-Regionen bilden eine Voronoi-Kante, zu der die Punkte beider Regionen die gleiche Distanz haben. Voronoi-Kanten können die Form von Strecken oder Halbgeraden
5
Informationen zum STL-Format sind zum Beispiel unter http://rpdrc.ic.polyu.edu.hk/old_files/
stl_introduction.htm zu finden.
2.5 Voronoi-Diagramme
19
annehmen6 . Sind mehr als zwei Regionen benachbart entsteht ein Voronoi-Knoten, der zu jedem
Punkt der benachbarten Regionen die gleiche Distanz besitzt (siehe Abbildung 2.10 rechts).
Das Voronoi-Diagramm kann theoretisch zur Berechnung der in Kapitel 2.1.2 beschriebenen Monitorfunktion auf folgende Weise hinzugezogen werden:
In einem ersten Schritt muss die Punktmenge bestimmt werden, für die das Voronoi-Diagramm berechnet werden soll. Eine mögliche Punktmenge kann die Menge aller Knoten der Oberflächentriangulierung sein. Je nach geforderter Genauigkeit können dabei auch innerhalb der Dreiecke neue
Punkte gebildet werden. Nachdem für die so definierte Punktmenge ein Voronoi-Diagramm berechnet wurde, kann die Monitorfunktion berechnet werden, indem zuerst für jeden Gitterknoten
die Voronoi-Region V (pi ) gefunden wird, in der er sich befindet. Dann muss nur noch die Distanz
zum Punkt pi berechnet werden.
Im Zweidimensionalen existieren mehrere Algorithmen, die das Voronoi-Diagramm für N Gitterknoten in einer Laufzeit von O(N log N ) berechnen können (zum Beispiel Fortune [1987]).
Im Dreidimensionalen gestaltet es sich jedoch schwieriger und die bisher beste erreichte Laufzeit
ist O(N d3/2e ) (vergleiche [Goodman u. O’Rourke 1997]). Auf Grund dieser schlechten Laufzeit
wurde das Voronoi-Diagramm im Rahmen dieser Arbeit nicht für die Berechnung der Monitorfunktion eingesetzt.
Abbildung 2.10: Voronoi-Diagramm zu einer zufälligen Punktmenge. Links: Darstellung eines
Voronoi-Diagramms. Rechts: Beispielhaft werden einzelne Komponenten des
Voronoi-Diagramms hervorgehoben. Der grau unterlegte Bereich wird VoronoiRegion genannt. Das breiter gezeichnete Segment wird Voronoi-Kante und der
umkreiste Schnittpunkt mehrerer Voronoi-Kanten wird Voronoi-Knoten genannt.
6
Voronoi-Kanten können nur Geraden sein, wenn der Sonderfall eintritt, dass alle Punkte aus P kollinear sind.
20
2. Grundlagen
2.6
Externe Software
Nachfolgend werden die Programmpakete erläutert, die im Rahmen dieser Arbeit erwähnt werden.
• F EAT F LOW
Dieses Software Paket bietet verschiedene Routinen zur numerischen Lösung partieller
Gleichungssysteme durch die Methode der Finiten Elemente. Hauptbestandteil des Pakets
sind zwei Löser, CC3D und PP3D zur Simulation von CFD Problemen. In die Software, die
innerhalb dieser Arbeit entwickelt wurde, ist der CC3D-Löser integriert worden. Informationen zu F EATFLOW sind unter http://www.featflow.de zu finden.
• General Mesh Viewer (GMV)
Dieses Programm dient der Visualisierung von Daten, die in einer CFD-Simulation entstehen. Es können beliebige Daten für strukturierte oder auch unstrukturierte Gitter dargestellt werden. Informationen zu GMV sind unter http://laws.lanl.gov/XCM/
gmv/GMVHome.html zu finden.
• Paraview
Das Programm Paraview dient ebenfalls der Visualisierung verschiedener Simulationsdaten. Es bietet jedoch mehr Funktionen zur Darstellung und Verarbeitung der Datenmengen
als GMV. Informationen zu Paraview sind unter http://www.paraview.org/New/
index.html zu finden.
21
Kapitel 3
Punktklassifizierung
Bei der in Kapitel 2.1.2 beschriebenen Fictitious-Boundary Methode muss entschieden werden,
welche Knoten des Gitters sich im Inneren des Objekts befinden. Im folgenden Kapitel wird ein
Verfahren vorgestellt, mit dessen Hilfe diese Entscheidung effizient getroffen werden kann. Das
Verfahren basiert auf einer speziellen Form von Octrees, weshalb diese zuerst erläutert werden.
Danach wird die spezielle Datenstruktur zuerst hergeleitet, dann analysiert und zum Schluss mit
Heuristiken optimiert. Auf Grund der einfacheren Beschreibung und Visualisierung wird das Verfahren im Zweidimensionalen (2D) erklärt, bevor eine Erweiterung auf die dritte Dimension (3D)
folgt. Bei der 2D Beschreibung werden die Dreiecke der Oberflächentriangulierung auf einen geschlossenen Polygonzug reduziert.
3.1
Schnittzahltest
Der Schnittzahltest (engl. odd-even-test) ist ein allgemeines Verfahren zur Klassifizierung beliebiger Punkte, also zur Entscheidung, ob sich ein Punkt innerhalb eines geschlossenen Körpers
befindet. Wenn für einen Punkt ein Strahl in eine beliebige Richtung gesendet wird, so kann durch
das Auszählen der Schnittpunkte mit der Oberfläche des Körpers bestimmt werden, ob sich der
Punkt in seinem Inneren befindet. Ist die Anzahl der Schnittpunkte ungerade, befindet sich der
Punkt innerhalb des Objektes, ist sie gerade, befindet er sich außerhalb (vergleiche Abbildung 3.1).
In dieser Arbeit wird der Test folgendermaßen angewendet:
Für jeden Knoten des Gitters wird ein Strahl in eine bestimmte Richtung ausgesandt. Daraufhin
wird mit der in Kapitel 2.2 vorgestellten Methode getestet, wie viele Dreiecke des Objekts von dem
Strahl geschnitten werden. Im naiven Ansatz müssen für jeden Knoten des Gitters alle Dreiecke
des Objekts überprüft werden, was einen enormen Aufwand darstellt. Die Anzahl der Dreiecke
für die der Schnitttest durchgeführt werden muss, kann jedoch mit einer passend gewählten Datenstruktur reduziert werden. Für eine ausführliche Zusammenfassung möglicher Datenstrukturen
sei auf Chang [2001] verwiesen.
3.2
Octree bzw. Quadtree
Ein Octree ist eine hierarchische Baumdatenstruktur. Wie in der Einleitung dieses Kapitels angedeutet, wird das Problem zuerst auf den zweidimensionalen Fall reduziert, daher wird anstatt des
22
3. Punktklassifizierung
Abbildung 3.1: Darstellung des Schnittzahltests. Das Objekt ist als geschlossener Polygonzug dargestellt. Die Kreise markieren die Schnittpunkte mit der Objektoberfläche.
Octree, der Quadtree beschrieben. Dieser ist das 2D-Analogon zum Octree und stimmt in seiner
Funktionalität mit ihm überein. Der Quadtree wird im Folgenden für eine gegebene Punktmenge
definiert, ist jedoch auch für verschiedene andere Datentypen einsetzbar. Bei einem Quadtree
entspricht jeder Baumknoten einem rechteckigen Hüllkörper (engl. bounding box), der eine
Punktmenge umschließt. Die Wurzel des Baumes entspricht dabei dem Hüllkörper für die gesamte Punktmenge. Die Ausmaße für den Hüllkörper der Wurzel können aus den minimalen und
maximalen x-, y-Koordinaten der Punkte festgestellt werden. Die folgende Definition beschreibt
die Eigenschaften eines Quadtree für die Punktmenge P , die sich innerhalb des Hüllkörpers σ
befinden:
Definition 1. Sei σ := xmin(σ) , xmax(σ) × ymin(σ) , ymax(σ)
1. Falls die Anzahl der Punkte |P | ≤ 1 ist, dann besteht der Quadtree aus nur einem Blatt, in
dem P und das Rechteck σ gespeichert sind.
2. Sonst seien σN O , σN W , σSO und σSW die vier Quadranten von σ. Seien weiterhin:
xmid :=
ymid :=
(xmin(σ) + xmax(σ) )/2
(ymin(σ) + ymax(σ) )/2
Dann wird P folgendermaßen auf die Punktmengen der vier Quadranten aufgeteilt:
PN O
PN W
PSW
PSO
:=
:=
:=
:=
{p ∈ P
{p ∈ P
{p ∈ P
{p ∈ P
: px
: px
: px
: px
> xmid und py
≤ xmid und py
≤ xmid und py
> xmid und py
> ymid },
> ymid },
≤ ymid },
≤ ymid }
Somit enthält der Quadtree einen Wurzelknoten v, in dem der Hüllkörper σ(v) gespeichert
3.2 Octree bzw. Quadtree
23
wird. Weiterhin hat v vier Kinder:
• Das NO-Kind ist die Wurzel eines Quadtree für die Punktmenge PN O , die sich innerhalb des Hüllkörpers σN O befindet.
• Das NW-Kind ist die Wurzel eines Quadtree für die Punktmenge PN W , die sich innerhalb des Hüllkörpers σN W befindet.
• Das SW-Kind ist die Wurzel eines Quadtree für die Punktmenge PSW , die sich innerhalb des Hüllkörpers σSW befindet.
• Das SO-Kind ist die Wurzel eines Quadtree für die Punktmenge PSO , die sich innerhalb des Hüllkörpers σSO befindet.
Diese Definition resultiert direkt in einem rekursiven Algorithmus zur Erstellung einer Quadtreestruktur. Die Knoten des Quadtree werden so lange unterteilt, bis eine definierte Abbruchbedingung erfüllt ist, also typischerweise bis die Anzahl der Punkte innerhalb eines Rechtecks unter
einen vorher definierten Grenzwert fällt. Ist dieser Wert 1, so werden die Baumknoten solange
unterteilt, bis jedes Blatt der Baumstruktur keinen oder genau einen Punkt enthält. Beispielhaft
wird dieser Vorgang in Abbildung 3.2 veranschaulicht.
Abbildung 3.2: Darstellung eines Quadtrees. Links: Aufbau der Datenstruktur. Die runden Knoten stellen die inneren Knoten des Baumes dar und die rechteckigen Knoten die
Blätter. Rechts: Visualisierung der Unterteilung des Gebietes durch die Hüllkörper.
Für die Anwendung der Punktklassifizierung, die am Anfang dieses Kapitels beschreiben wurde, wird als Datenmenge ein aus Strecken bestehender geschlossener Polygonzug angenommen.
Für den Schnitttest eines Strahls mit dem Polygonzug soll mit Hilfe des Quadtree die Anzahl an
Strecken minimiert werden, für die der Schnitttest durchgeführt werden muss. Der Aufbau eines Quadtree für diese Datenmenge ist jedoch nicht eindeutig. Im Gegensatz zu einer beliebigen
Punktmenge kann der Quadtree so lange unterteilt werden, bis jedes Blatt nur noch eine Strecke
enthält. Es existieren Strecken, die bei der Unterteilung eines Baumknotens nicht eindeutig einem
Kind zugewiesen werden können, weil sie die Hüllkörper von mindestens zwei Kindern schneiden.
Diesem Problem kann mit verschiedenartigen Abbruchbedingungen begegnet werden:
• Abbruch
Der rekursive Aufbau wird für diesen Zweig abgebrochen. Das Problem kann im ungünstigen Fall schon direkt in der Wurzel des Quadtree auftreten, was diese Technik unperformant
macht.
24
3. Punktklassifizierung
• geordnete Einfachreferenzierung
Die Strecke, die das Problem verursacht, wird nur in einem der Kinder gespeichert. Diese
Technik ist für die Punktklassifizierung nicht anwendbar. Die Gesamtheit der Blätter repräsentiert zwar immer noch den geschlossenen Polygonzug, bei der Betrachtung einzelner
Blätter kann jedoch kein geschlossener Polygonzug mehr garantiert werden, was zu fehlerhaften Ergebnissen für die Punktklassifizierung führen kann.
• Mehrfachreferenzierung
Die Strecke wird in jedem Baumknoten gespeichert, in dessen Hüllkörper sich ein Teil der
Strecke befindet. Dadurch überlappen sich die Mengen benachbarter Blätter, und es wird
mehr Speicherplatz verbraucht als in den zuvor beschriebenen Methoden, da die Strecke in
mehreren Baumknoten referenziert wird.
• innere Referenzierung
Kann eine Strecke nicht eindeutig einem Kind zugewiesen werden, so wird sie im Baumknoten selbst gespeichert. Die aufgeteilte Menge wird nicht mehr nur in den Blättern des
Baumes gespeichert, sondern auch in inneren Baumknoten. Hierbei müssen für die Bestimmung einer gesuchten Menge alle Pfade von der Wurzel bis zu den gesuchten Blättern des
Baumes herangezogen werden.
• Zerteilung
Eine Strecke, die keinem Kind eindeutig zugewiesen werden kann, wird zerteilt, so dass
jedes Kind den Abschnitt enthält, den sein Rechteck umhüllt. Falls jede Stecke durch
Anfangs- und Endpunkt gegeben ist, muss jede dieser neuen Strecken gespeichert werden.
Dadurch steigt der Speicherplatzverbrauch im Vergleich zur Mehrfachreferenzierung. Der
Aufwand für den Aufbau eines Quadtree mit dieser Methode ist höher als bei den anderen
Methoden, da die Strecke in einzelne Abschnitte unterteilt werden muss.
Wurde der Quadtree als Datenstruktur aufgebaut, funktioniert die Klassifizierung eines beliebigen
Punktes p in zwei Schritten:
1. Es muss das Blatt b gefunden werden, dessen Hüllkörper σb den Punkt p umschließt. Dazu
muss der Quadtree mit dem top-down Verfahren durchsucht werden. Startend bei der Wurzel
muss überprüft werden, ob sich p innerhalb von σN O , σN W , σSW oder σSO befindet. Ist das
richtige σ gefunden, wird dessen Baumknoten auf die gleiche Weise überprüft.
Dieser Schritt wird solange wiederholt, bis das gesuchte Blatt des Baumes gefunden wurde.
2. Von p ausgehend wird ein Strahl ausgesandt. Die Blätter des Quadtree, deren Hüllkörper
vom Strahl geschnitten werden, beinhalten eine geringe Anzahl an Strecken für die der
Schnitttest durchgeführt werden muss1 . Um die geschnittenen Blätter zu bestimmen, wird
prinzipiell ausgehend von b überprüft, welche der vier Kanten des Hüllkörpers σb durch
den Strahl geschnitten wird. An Hand dieser Information wird dann entschieden, welcher
Baumknoten des Baumes als nächster untersucht wird. Beispielhaft sei der Strahl parallel zur y-Achse nach oben gesendet und schneidet somit die obere Kante von σb . Ist dieser Baumknoten selbst das SO-Kind seines Elternknoten, kann über den Elternknoten auf
das NO-Kind δ zugegriffen werden, welches sich die geschnittene Kante mit σb teilt. Falls
δ selbst kein Blatt des Quadtree ist, muss überprüft werden, welches seiner Kinder vom
1
Falls der Baum mit Hilfe der inneren Referenzierung aufgebaut wurde, müssen zusätzlich die inneren Baumknoten
hinzugezogen werden, die auf den Pfaden zu allen geschnittenen Blättern liegen.
3.2 Octree bzw. Quadtree
25
Strahl geschnitten wird. Dieser Vorgang wird solange durchgeführt, bis alle vom Strahl geschnittenen Blätter ermittelt wurden. Es gibt verschiedene Techniken, diese Suche in einem
Quadtree zu optimieren, wie zum Beispiel durch die Verwaltung von Nachbarschaftsinformationen. Für weiterführende Analysen sei auf Chang [2001] verwiesen.
Abbildung 3.3 dient zur Veranschaulichung dieses Vorgangs, und wie aus ihr ersichtlich wird, ist
die Strahlrichtung ein wichtiger Faktor zur Optimierung. Für die Wahl einer guten Strahlrichtung
existieren Heuristiken, von denen einige nachfolgend vorgestellt werden:
• Achsenparallel
Jeder Strahl verläuft parallel zur x- oder y-Achse. Bei der Wahl einer achsenparallelen
Strahlrichtung entsteht für die Suche innerhalb des Quadtree der Vorteil, dass nicht mehr
alle vier Seiten eines Hüllkörpers auf den Schnitt mit dem Strahl überprüft werden müssen,
sondern immer nur die zwei orthogonal zum Strahl liegenden Seiten.
• Hüllkörpergrenze
Der Strahl verläuft orthogonal zu einer der Seiten des Hüllkörpers der Wurzel. Die Seite
wird bestimmt durch die kürzeste Distanz zum Ausgangspunkt des Strahls. Diese Methode
ist achsenparallel und bietet für beliebig strukturierte Objekte eine gute Heuristik (vergleiche Hein [2007]).
• Zentrisch
Die Richtung des Strahls wird durch die Objektmitte und den Punkt bestimmt. Die Objektmitte kann dabei zum Beispiel als Durchschnittswert der Dreiecksmittelpunkte berechnet
werden. Bei kugelartigen Objekten kann diese Methoden eine gute Heuristik sein, jedoch
nicht bei länglichen Objekten.
Zusammenfassend lässt sich sagen, dass es kein einfaches Verfahren zur Bestimmung einer optimalen Strahlrichtung gibt, ohne zusätzliche Strukturen zu berechnen.
Abbildung 3.3: Punktklassifizierung mit Hilfe eines Quadtree. Die Menge der Strecken, für die
der Schnitttest durchgeführt werden muss, wird durch den Einsatz eines Quadtree
reduziert. Die Richtung des Strahls trägt dabei entscheidend zur Effizienz dieses
Verfahrens bei. Links: Zufällige Wahl der Strahlrichtung. Mitte: Achsenparallele
Strahlrichtung zur y-Achse. Rechts: Die Strahlrichtung wird bestimmt durch die
Hüllkörpergrenze mit der kürzesten Distanz. Durch diese Heuristik wird in diesem
Beispiel die kleinste Anzahl von Schnitttests durchgeführt.
26
3. Punktklassifizierung
3.3
Spezialisierte Datenstruktur
Bei den achsenorientierten Methoden kann beobachtet werden, dass ein Strahl eine komplette Reihe von Blättern schneidet. Für jedes Blatt muss jedoch ein Schnitttest mit den Kanten seines Hüllkörpers berechnet werden. Um die so entstehenden Kosten einzusparen, entstand die Idee, anstatt
der rechteckigen Hüllkörper, säulenartige zu verwenden. Dadurch existiert in Richtung des Strahls
nur noch ein Blatt, dessen Datenmenge überprüft werden muss. Die so erstellte Datenstruktur reduziert sich in ihrer Struktur auf einen Binärbaum und somit auf ein eindimensionales Problem.
Die verwendete Achsenrichtung erlaubt eine einfache Optimierung, welche die Datenmenge für
einen Schnitttest im besten Fall nochmal halbieren kann. Zur Vereinfachung wird angenommen,
dass der Strahl parallel zur y-Achse verläuft. Somit entstehen Blätter des Baumes mit Hüllkörpern, die ebenfalls parallel zur y-Achse ausgerichtet sind. Jedes so entstandene Blatt kann in zwei
Hälften unterteilt werden. Eine Hälfte repräsentiert dabei die positive und die andere die negative Strahlrichtung. Die Abbildung 3.4 veranschaulicht diesen Vorgang und es folgt eine rekursive
Definition des Spezialbaumes mit einem geschlossenen Streckenzug |S| als Datenmenge.
Abbildung 3.4: Punktklassifizierung mit Hilfe des Spezialbaumes. Die Menge der Strecken, für die
der Schnitttest durchgeführt werden muss, wird durch den Einsatz des Spezialbaumes reduziert. Jeder Strahl verläuft nur noch innerhalb eines Blattes. Links: Der
Spezialbaum wird nur nach der x-Koordinate unterteilt. Rechts: Nach der Unterteilung an Hand der x-Koordinate wird jedes so entstandene Blatt noch einmal
parallel zur y-Achse unterteilt, wodurch die positive oder negative Strahlrichtung
definiert wird.
Definition 2. Sei σ := kmin(σ) , kmax(σ) , also das Intervall für eine der Koordinatenachsen
k ∈ {x, y}, welche den Polygonzug beschränkt.
1. Falls ein Abbruchkriterium erreicht wird, besteht der Spezialbaum aus nur einem Blatt in
dem S und das Intervall σ gespeichert sind. Falls S 6= {∅} enthält das Blatt eine zusätzliche
Information für die positive oder negative Strahlrichtung.
2. Sonst spalten σGR und σKL das Intervall in genau zwei gleichgroße Teile von σ auf. Sei
weiterhin:
3.3 Spezialisierte Datenstruktur
kmid(σ)
:=
27
(kmin(σ) + kmax(σ) )/2
Jede Strecke s wird durch zwei Punkte as und es definiert.
Dann wird S folgendermaßen auf die Streckenmengen der zwei Teile von σ aufgeteilt:
SGR :=
SKL :=
s
∈
S
falls
:
a
(k)
≥
k
oder
e
(k)
≥
k
s
s
mid(σ)
mid(σ)
,
s ∈ S falls : as (k) ≤ kmid(σ) oder es (k) ≤ kmid(σ) ,
Somit enthält der Spezialbaum einen Wurzelknoten v, in dem das beschränkende Intervall
σ(v) gespeichert wird. Weiterhin hat v zwei Kinder:
• Das GR-Kind ist selbst die Wurzel eines Spezialbaumes für die Streckenmenge SGR ,
welche alle Strecken beinhaltet, die mit wenigstens einem ihrer Punkte innerhalb des
Intervalls σGR liegen.
• Das KL-Kind ist selbst die Wurzel eines Spezialbaumes für die Streckenmenge SKL ,
welche alle Strecken beinhaltet, die mit wenigstens einem ihrer Punkte innerhalb des
Intervalls σKL liegen.
3.3.1
Aufbau
Von den bereits beschriebenen Möglichkeiten mit Strecken umzugehen, die beim Aufbau der
Suchdatenstruktur nicht eindeutig einem Kind zugewiesen werden können, beinhaltet diese Definition bereits die Mehrfachreferenzierung, weil sich diese für die Art des Spezialbaumes am
besten eignet. Warum der Abbruch und die Einfachreferenzierung ungeeignet sind, wurde bereits
erläutert. Die innere Referenzierung eignet sich ebenfalls nicht: Die Menge eines Baumknotens
wird jeweils nur nach einer Achse unterteilt. Entstehen dabei Elemente, die nur in diesem Knoten
referenziert werden, so können diese Elemente nicht mehr an Hand einer anderen Achse unterteilt
werden. Dies würde die Effizienz des Spezialbaumes deutlich beeinträchtigen.
Die Zerteilung wiederum würde einerseits mehr Speicherplatz verbrauchen als die verwendete
Methode, denn aus einer Strecke würden zwei entstehen, die jeweils in den Kinderknoten referenziert werden müssten. Für den dreidimensionalen Fall würden aus einem Dreieck sogar drei
Dreiecke entstehen. Zum anderen würde die Zerteilung keinen Geschwindigkeitsgewinn erreichen, denn der Schnitttest ist in der Komplexität seiner Berechnungen relativ unabhängig von der
Größe der Dreiecke. Durch die Zerteilung würden sogar mehr Dreiecke entstehen, für die der Test
durchgeführt werden müsste, was die Laufzeit ungünstig beeinflussen würde. Ein weiterer Nachteil besteht in den zusätzlichen Kosten für die Laufzeit zur Berechnung der Einzelteile. Bei der
Mehrfachreferenzierung muss die Strecke beziehungsweise das Dreieck nur in beiden Kinderknoten referenziert werden, was eine speichergünstigere und schnellere Variante bietet.
Definition 2 resultiert ebenso wie Definition 1 in einem rekursiven Algorithmus zum Aufbau des
Spezialbaumes, bei dem jedoch ein paar Besonderheiten beachtet werden müssen.
Der Aufbau des Baumes erfolgt strikt nacheinander für die möglichen Koordinatenachsen. Ist die
Strahlrichtung parallel zur y-Achse gewählt, so wird der Baum zuerst solange nach der x-Achse
unterteilt, bis in allen Blättern die Abbruchbedingung erfüllt ist. Erst nach dieser Unterteilung wird
jedes nicht leere Blatt des Baumes rekursiv nach der y-Achse unterteilt. Im zweidimensionalen Fall
wird somit jedes Blatt nur noch einmal unterteilt, wobei das GR-Kind die positive Strahlrichtung
zugewiesen bekommt und das KL-Kind die negative.
28
3. Punktklassifizierung
Als Rekursionsabbruch für den Aufbau des Spezialbaumes in einer Achsenrichtung existieren
mehrere Möglichkeiten.
• Tiefe des Baumes
Als Abbruchbedingung ist es möglich, eine bestimmte maximale Tiefe für den Aufbau der
Datenstruktur vorzugeben. Dies garantiert zwar eine bestimmte Laufzeit für die Suche innerhalb des Baumes, jedoch kann die Anzahl an Strecken pro Blatt in Abhängigkeit von der
Anzahl der Strecken des Objekts stark variieren. Bei sehr fein aufgelösten Objekten entstehen somit pro Blatt viele Strecken, für die der Schnitttest durchgeführt werden muss, was
dem Prinzip der Suchdatenstruktur widerspricht.
• Anzahl der Strecken
Es ist möglich, als Abbruchbedingung für die Unterteilung eines Baumknotens eine bestimmte Anzahl an Strecken zu definieren. Auf Grund der verwendeten Mehrfachreferenzierung kann jedoch nicht für alle möglichen Objekte garantiert werden, dass diese Abbruchbedingung tatsächlich erreicht wird.
• relativer Speicherverbrauch
Diese in der erstellten Software eingesetzte Abbruchbedingung stellt einen Kompromiss,
zwischen dem zusätzlichen Speicherplatzverbrauch und einer möglichst geringen Tiefe des
Spezialbaumes dar. Durch die Mehrfachreferenzierung werden pro Unterteilung eines Knotens Strecken in beiden Kindern referenziert. Diese Strecken stellen den zusätzlichen Speicherplatzverbrauch dar. Die Knoten werden so lange unterteilt, bis der zusätzliche Speicherverbrauch einen bestimmten Prozentsatz überschreitet. Wird der Prozentsatz beispielsweise
auf 50% gesetzt und ein Knoten unterteilt, der 100 Strecken beinhaltet, so wird die Unterteilung bei seinen Kindern abgebrochen, falls diese zusammen mehr als 150 Strecken beinhalten. Mit dieser Technik kann der zusätzliche Speicherverbrauch, die Tiefe des Baumes und
die Anzahl an Strecken in seinen Blättern unabhängig von der Gesamtzahl an Strecken oder
der Beschaffenheit des Objekts gesteuert werden. Besteht eine Region des Objekts aus wenigen großen und eine andere aus vielen kleinen Strecken, so wird die erste Region weniger
oft unterteilt als die zweite.
3.3.2
Anwendung für Punktklassifizierung
Soll für einen beliebigen Punkt p entschieden werden, ob er sich innerhalb oder außerhalb des
Objekts befindet, funktioniert das Verfahren ähnlich dem Quadtree in zwei Schritten:
1. Jeder Knoten des Spezialbaumes besitzt noch das zusätzliche Attribut a ∈ {x, y}, das angibt, nach welcher Koordinatenachse dieser Knoten unterteilt wurde. Im zweidimensionalen
Fall kann dies die x- oder y-Achse sein. Es muss nun also das Blatt b gefunden werden, in
dessen Intervall σb sich der Punkt p mit der entsprechenden x- oder y-Koordinate befindet, nach der b unterteilt wurde. Dazu wird der Spezialbaum mit dem top-down Verfahren durchsucht. Bei jedem Knoten σ des Baumes wird überprüft, ob p(k) ≥ kmid(σ) oder
p(k) < kmid(σ) ist, also ob sich die Koordinate im Intervall seines SGR - oder SKL -Kindes
befindet. Dementsprechend wird ebenso mit diesem Kind verfahren, so lange bis ein Blatt
erreicht wird. Ist das Blatt leer, beinhaltet also keine Streckenelemente, so befindet sich der
Punkt definitiv außerhalb des Objekts, beinhaltet das Blatt wenigstens eine Strecke, so wird
mit Schritt 2 fortgefahren.
2. Vom Punkt p aus wird ein Strahl in die positive oder negative Richtung gesendet, je nach
Attribut des Blattes. Für diesen Strahl muss der Schnitttest mit den Strecken durchgeführt
3.3 Spezialisierte Datenstruktur
29
werden, die im Blatt gespeichert sind. Die Anzahl existierender Schnitte bestimmt, ob sich
der Punkt innerhalb oder außerhalb des Objekts befindet.
3.3.3
Analyse der Effizienz
Eine detaillierte Laufzeitanalyse dieser Datenstruktur ist stark von den verwendeten Heuristiken
abhängig und würde den Rahmen dieser Arbeit überschreiten, jedoch wird im Folgenden ein
kurzer Überblick über die erwarteten Kosten präsentiert.
Aufbau
Wird ein Baumknoten mit seiner Streckenmenge unterteilt, entstehen zwei neue Knoten, deren
Intervalle halb so groß sind und deren Mengen im günstigsten Fall in zwei gleichgroße Teile geteilt werden. Im ungünstigsten Fall ist die Menge eines Knoten leer und die andere beinhaltet alle
Elemente, was jedoch keine zusätzlichen Kosten durch die Mehrfachreferenzierung verursacht.
Einzelne Strecken können auf Grund der Mehrfachreferenzierung in beiden Kindern vorkommen.
Als Abbruchbedingung beim Aufbau des Baumes wird der relative Speicherverbrauch gewählt.
Werden maximal 20% Mehrfachreferenzierungen pro Unterteilung eines Knotens erlaubt, so verbrauchen die zwei Kinder eines Knotens nicht mehr als 20% zusätzlichen Speicherplatz. Dabei
bilden die 20% eine obere Schranke für den zusätzlichen Speicherverbrauch. Werden bei der Unterteilung eines Knotens beinahe 20% der Strecken mehrfach referenziert, ist das Intervall dieses
Knotens bereits so klein, dass fast ein Fünftel der Strecken nicht mehr durch die Intervallgrenzen
nur eines Kindes beschränkt werden kann. Die Kinder besitzen nun selbst Intervalle, die halb so
klein sind, und werden diese unterteilt, müssten mehr als ein Fünftel der Strecken mehrfach referenziert werden. Anders betrachtet sollte auf Grund dieser Tatsache jede Strecke nicht beliebig
oft von einer Intervallgrenze geschnitten werden, sich also nur in einem gewissen Bereich benachbarter Blätter befinden. Dies bedeutet, dass jede Strecke nicht beliebig oft referenziert wird,
was folglich den Speicherplatzverbrauch beschränkt. Dabei ist die Anzahl der Referenzierungen
pro Strecke stark abhängig von den erlaubten Mehrfachreferenzierungen durch die Abbruchbedingung.
Die Analyse für die Tiefe des Baumes ist auf Grund der relativ dynamischen Abbruchbedingung
nicht einfach. Sie ist von der Verteilung, Größe und Anzahl der Strecken abhängig. Pro Unterteilung eines Knotens werden die Strecken bestenfalls gleichmäßig auf beide Kinder verteilt, was
eine logarithmische Tiefe des Baumes in Bezug auf die Anzahl der Dreiecke darstellen würde.
Im schlimmsten Fall wird die Dreiecksmenge jedoch nur einem Kind zugewiesen, was eine
unendliche Tiefe darstellen könnte. Dies wäre jedoch nur möglich wenn alle Strecken in einer
Ebene liegen würden, die parallel zu einer der Achsen liegen würde, nach denen die Datenstruktur
unterteilt wird. Weil der Polygonzug geschlossen sein muss und davon ausgegangen wird, dass
die umschlossene Fläche ein echtes Inneres hat, kann dieser Fall nicht entstehen. Durch die
Halbierung der Intervalle und der Beschränkung durch die Abbruchbedingung wird erwartet,
dass sich die Menge jedes Knotens pro Unterteilung um einen konstanten Faktor reduziert. Dies
impliziert eine logarithmische Tiefe des Baumes.
Tiefensuche
Als einfache Heuristik wird für einen Punkt zuerst überprüft, ob er sich innerhalb des Hüllkörpers
des Objekts befindet. Ist dies nicht der Fall, so muss keine Tiefensuche durchgeführt werden, da
sich der Punkt nicht innerhalb des Objekts befinden kann.
Bei der Suche des Blattes, innerhalb dessen Intervallgrenzen sich der Punkt befindet, müssen pro
Baumknoten σ nur drei Operationen durchgeführt werden.
30
3. Punktklassifizierung
1. Zuerst wird überprüft, ob der Baumknoten ein Blatt ist. Ein Knoten wird als Blatt definiert,
falls er kein Kind besitzt. Dies ist in konstanter Zeit überprüfbar.
2. Die Mitte seines Intervalls muss bestimmt werden. Dazu werden die Intervallgrenzen
kmin(σ) und kmax(σ) addiert und durch zwei dividiert.
3. Zuletzt entscheidet ein ≤-Vergleich der Koordinate des Punktes mit der Mitte des Intervalls
in welchem Kind die Suche rekursiv fortgeführt wird.
Im Vergleich zum Quadtree sind dies deutlich weniger Operationen. Es muss im ersten Schritt
nicht berechnet werden, in welchem Quadrant sind der Punkt befindet und im zweiten Schritt müssen keine Schnitttests zur Bestimmung der Blätter durchgeführt werden, die vom Strahl geschnitten werden. Mit zusätzlichem Speicherplatzverbrauch können die Intervallmitten jedes Baumknotens gespeichert werden, wodurch sich die Operationen auf einen Vergleich reduzieren würden.
3.3.4
Heuristiken zur Optimierung
Für den Aufbau und die Effizienz der Datenstruktur spielt die Ausrichtung und Dimension des
Objekts eine entscheidende Rolle. Bei länglichen Objekten die parallel zu einer Achse verlaufen
gibt es eine effiziente und eine ineffiziente Art der Unterteilung (siehe Abbildung 3.5). Für eine effiziente Art der Aufteilung kann der Hüllkörper des Objekts herangezogen werden. Dazu wird der
Spezialbaum zuerst an Hand der Koordinatenachse unterteilt, die im Hüllkörper das größte Intervall einnimmt. Alternativ könnte eine Gerade bestimmt werden, die im Durchschnitt die geringste
Entfernung zu allen Streckenelementen besitzt. Mit Hilfe einer Transformation des Koordinatensystems könnte diese Gerade als Achse für die erste Unterteilung dienen. Jedoch ist dieser Ansatz
relativ aufwändig und wurde daher nicht weiter verfolgt.
Abbildung 3.5: Auswirkung der Reihenfolge der Achsen beim Aufbau der Datenstruktur für seine
Effizienz bei der Punktklassifizierung. Oben: Effiziente Art der Aufteilung. Unten:
Ineffiziente Art der Aufteilung.
3.3 Spezialisierte Datenstruktur
31
Bei der einmaligen Unterteilung entlang der letzten Achse kann es vorkommen, dass ein Kind
keine Streckenelemente enthält. Dieser Umstand kann zur Steigerung der Effizienz verwendet
werden. Entsteht bei der letzten Unterteilung ein Kind, das alle Strecken enthält, kann es nochmal auf die gleiche Art unterteilt werden. Dieser Vorgang kann so lange wiederholt werden, bis
beide Kinder wieder Strecken enthalten. Erst dann wird eine positive und eine negative Achsenrichtung für beide Kinder festgelegt (siehe Abbildung 3.6). Die Baumknoten, die während dieses
Vorgangs entstanden sind, ohne Strecken zu beinhalten, sind diejenigen Blätter des Baumes, deren
Intervallgrenzen einen Bereich außerhalb des Objekts definieren.
Abbildung 3.6: Heuristik zur Steigerung der Effizienz während der Unterteilung der letzten Achse.
Die hellgrau unterlegten Rechtecke markieren Blätter mit einer leeren Menge von
Strecken. Jeder Punkt, der sich innerhalb der Intervalle dieser Blätter befindet,
kann ohne Schnitttest als Punkt außerhalb des Objekts klassifiziert werden.
3.3.5
Erweiterung auf die dritte Dimension
Die Erweiterung des Spezialbaumes auf die dritte Dimension ist unkompliziert. Der Aufbau der
Datenstruktur erfolgt wie im Zweidimensionalen strikt sequentiell, jedoch für drei mögliche Achsen x, y und z. Dabei wird die Reihenfolge, in der die Datenstruktur aufgebaut wird, heuristisch
aus der Ausdehnung des Objekts innerhalb der einzelnen Achsen, also aus den minimalen und
maximalen Koordinaten des Hüllkörpers, bestimmt. Die Achse mit der größten Ausdehnung wird
zuerst unterteilt, die mit der zweitgrößten Ausdehnung als zweite und die mit der kleinsten Ausdehnung als letzte. Die Strahlrichtung wird dabei parallel zur Achse mit der kleinsten Ausdehnung
gewählt. Wird beim Aufbau der Datenstruktur die Datenmenge eines Knotens auf seine Kinder
aufgeteilt, so müssen die drei Eckpunkte jedes Dreiecks an Hand einer Koordinate mit der Mitte
des Intervalls verglichen werden. Ist mindestens einer der drei Eckpunkte kleiner oder gleich der
Mitte, so wird das Dreieck dem KL-Kind zugewiesen. Ist mindestens einer der Eckpunkte größer
oder gleich der Mitte, so wird es dem GR-Kind zugewiesen. Abbildung 3.7 veranschaulicht die
Strukturen eines Spezialbaumes in der dritten Dimension. Bei der Anwendung der Punktklassifizierung ändert sich für den dreidimensionalen Fall nichts, da die Achsen im Baum nacheinander
abgearbeitet werden.
32
3. Punktklassifizierung
Abbildung 3.7: Erweiterung des Spezialbaumes auf die dritte Dimension. Links: Beispielhafte
Darstellung einer Unterteilung des Spezialbaumes mit zugehöriger positiver und
negativer Strahlrichtung. Rechts: Beispielhafte Darstellung eines Blattes mit zugehöriger Dreiecksmenge.
33
Kapitel 4
Distanzberechnung
Im folgenden Kapitel wird eine Methode zur Berechnung der Monitorfunktion beschrieben, die
für die Gitterdeformation (siehe Kapitel 2.1.2) benötigt wird. Die im Rahmen dieser Arbeit verwendete Monitorfunktion repräsentiert ein Distanzfeld, d.h. jedem Gitterpunkt wird die kürzeste
Distanz zur Objektoberfläche zugewiesen. Die Methode basiert zum einen auf der im vorigen Kapitel beschriebenen Punktklassifizierung und der dort beschriebenen Suchdatenstruktur und zum
anderen auf einer Variante des von Sethian [1996] vorgestellten Fast Marching Algorithmus. Zuerst wird ein naiver Ansatz für die Distanzberechnung präsentiert. Dann wird die Grundidee des
Fast Marching Algorithmus erläutert, gefolgt von einer eigenen Variante die zur Distanzberechnung genutzt wird. Diese Variante wird auf Korrektheit und Effizienz analysiert. Wie bei der zuvor
beschriebenen Methode zur Punktklassifizierung wird zuerst der zweidimensionale Fall analysiert,
bevor die Erweiterung auf drei Dimensionen folgt.
4.1
Naiver Ansatz
Allgemein muss für jeden Knoten des Gitters die kürzeste Distanz zu der Objektoberfläche
bestimmt werden. Für einen beliebigen Punkt p wird der kürzeste Abstand zu der Triangulierung
T = {T1 , ..., Tm } des Objekts folgendermaßen berechnet:
Iteriere über alle Dreiecke Ti ∈ T :
1. Initialisiere die Distanz als +∞.
2. Berechne die Distanzen von p zu den drei Eckpunkten des Dreiecks Ti . Wird eine geringere
Distanz gefunden, so speichere diese als neue kürzeste Distanz.
3. Berechne den Normalenvektor ni des Dreiecks Ti als Kreuzprodukt zweier Dreiecksseiten.
4. Berechne den Schnittpunkt zwischen der Gerade g := p+αni und dem Dreieck Ti . Existiert
ein Schnittpunkt, berechne die Distanz zu diesem. Ist sie geringer als die bisherige kürzeste
Distanz, speichere sie als neue kürzeste Distanz.
5. Existiert kein Schnittpunkt, berechne den Lotfußpunkt zu jeder Kante des Dreiecks Ti . Falls
existent, berechne die Distanz und speichere sie gegebenenfalls als neue kürzeste Distanz.
34
4. Distanzberechnung
Dieser naive Ansatz berechnet ein exaktes Distanzfeld. Bei relevanten Problemgrößen von mehreren Millionen Gitterknoten und hoch aufgelösten Oberflächentriangulationen ist die Laufzeit von
O(N M ) nicht akzeptabel, wobei N die Anzahl der Gitterknoten und M die Anzahl der Dreiecke
darstellt. Durch den Einsatz von speziellen Datenstrukturen, wie zum Beispiel den Quadtrees, lässt
sich die Anzahl der Dreiecke reduzieren, zu denen die Distanz pro Gitterknoten berechnet werden
muss. Wird jedoch eine geringe Ungenauigkeit im Distanzfeld in Kauf genommen, so kann mit
der Fast Marching Methode ein schnellerer Algorithmus eingesetzt werden.
4.2
Fast Marching
Von Sethian [1999] eingeführt, bietet die Fast Marching Methode ein Verfahren zur Lösung der
Eikonalgleichung:
|∇ φ(x)| = f (x), x ∈ Rn mit Randbedingung φ(x) = g(x), x ∈ Γ ⊂ Rn .
(4.1)
Dieses Verfahren hat eine Laufzeit von O(N log N ) auf einem Gitter mit N Knoten. Für den
speziellen Fall, dass φ(x) als Distanzfunktion definiert wird, ist folgende Gleichung erfüllt:
|∇ φ(x)| = 1, ∀x ∈ Rn und φ(x) = 0, ∀x ∈ Γ.
(4.2)
Durch diese Eigenschaft kann die Eikonalgleichung als Fehlerabschätzung für eine Methode zur
Distanzberechnung benutzt werden. Die Grundidee des Fast Marching Algorithmus besteht nun
aus der Verbreitung von Informationen entlang von Kanten des Gitters. Die für einen Knoten des
Gitters berechnete Information wird an seine Nachbarknoten weitergegeben und dort zur Berechnung verwendet. Die Informationen werden dabei zuerst für die Elemente des Gitters berechnet,
die von der Objektoberfläche geschnitten werden und dann in einer Wellenfront von der Objektoberfläche weg verbreitet. In ihrer Funktionalität ähnelt die Fast Marching Methode dem von
Dijkstra [1959] entwickelten Verfahren zur Berechnung kürzester Pfade auf einem Graphen.
4.2.1
Funktionsweise
Die Fast Marching Methode zur Berechnung von Distanzen arbeitet in zwei Phasen. In der ersten
Phase wird ein initiales Band mit Distanzinformationen berechnet und in der zweiten werden
die Distanzinformationen über das gesamte Gitter verbreitet. Dazu werden zwei Datenstrukturen
benutzt. In der ersten wird für jeden Gitterknoten sein Referenzpunkt und die Distanz zu diesem
gespeichert. Als Referenzpunkt dient der Punkt auf der Objektoberfläche, der zu dem Knoten
die geringste Distanz besitzt. Initialisiert wird jeder Knoten ohne Referenzpunkt und mit einer
Distanz mit Wert +∞. Die zweite Struktur beschreibt ein Band von Knoten, die in einer Liste an
Hand ihrer Distanzinformationen aufsteigend sortiert sind. Damit steht am Anfang der Liste der
Knoten, der innerhalb des Bandes die geringste bisher berechnete Distanz besitzt. Die Sortierung
des Bandes impliziert dabei die wellenartige Ausbreitung der Informationen. Das Band bildet im
Grunde eine aus Gitterknoten bestehende Hülle für die Objektoberfläche.
Initialphase
Bei dem üblichen Verfahren im Einsatz der Fast Marching Methode zur Distanzberechnung müssen zur Bestimmung des Initialbandes zuerst alle Hexaederzellen identifiziert werden, die von
der Objektoberfläche geschnitten werden. Für die acht Knoten dieser Hexaederzellen müssen die
kürzesten Distanzen zur Objektoberfläche berechnet und die jeweiligen Referenzpunkte für die
4.2 Fast Marching
35
Distanzberechnung gespeichert werden. Für jeden Knoten des initialen Bandes wird also seine
kürzeste Distanz gespeichert und ein Referenzpunkt, an Hand dessen diese Distanz ermittelt wurde. Von dem üblichen Verfahren wird in dieser Arbeit zu Gunsten einer höheren Geschwindigkeit
abgewichen. Das initiale Band wird nur aus den Knoten der Kanten gebildet, welche die Objektoberfläche schneiden. Für diese Berechnung kann die in Kapitel 3 vorgestellte Datenstruktur
genutzt werden.
Zuerst werden mit Hilfe der Punktklassifizierung alle Knoten des Gitters bestimmt, die sich im
Inneren des Objekts befinden. Dann muss nur noch über alle Kanten iteriert werden. Jede Kante,
die einen Knoten innerhalb des Objekts und einen außerhalb besitzt, wird für das initiale Band
verwendet. Zwischen den beiden Knoten einer solchen Kante muss sich die Objektoberfläche
befinden, folglich kann ein Strahl von einem Knoten zum anderen gesendet werden, der die
Objektoberfläche in mindestens einem Punkt schneiden muss. Für jeden der beiden Knoten einer
Schnittkante wird nun die Distanz zu den Schnittpunkten berechnet und derjenige Schnittpunkt
mit der geringsten Distanz zu dem Knoten dient als sein Referenzpunkt. Das so berechnete
initiale Band ist mit seinen Distanzinformationen nicht mehr so genau wie das ursprüngliche Verfahren, da es nur noch kürzeste Distanzen zu den Referenzpunkten berechnet (siehe Abbildung
4.1). Diese Berechnung ist nach numerischen Tests jedoch ausreichend geeignet (siehe auch 4.2.2).
Abbildung 4.1: Darstellung der initialen Bänder für die Fast Marching Methode. Die gelben Bänder unterlegen die Knoten, die Bestandteil des initialen Bandes sind. Die grünen
Kreise markieren die Referenzpunkte und die dick gezeichneten schwarzen Linien
verbinden die Knoten mit ihren jeweiligen Referenzpunkten. Links: Eigenes Verfahren, bei dem nur die Schnittpunkte zwischen Kanten und Oberfläche als Referenzpunkte dienen. Rechts: Übliches Verfahren mit tatsächlich berechneten kürzesten Distanzen als Referenzpunkte.
Verbreitungsphase
Ist das initiale Band berechnet, sollen sich die Informationen ähnlich einer Wellenfront von der
Objektoberfläche aus verbreiten. Dazu wird der Knoten aus dem Band entfernt, der die kleinste Distanz besitzt, also am Anfang der sortierten Liste steht. Für alle Nachbarn dieses Knotens
werden Distanzen zu seinem Referenzpunkt berechnet. Wird für einen Nachbarn dadurch eine
geringere Distanz berechnet als bisher, übernimmt der Nachbar den Referenzpunkt und die kleinere Distanz wird gespeichert. Gleichzeitig wird der Nachbar mit dieser neuen Distanzinfomation
in das Band eingefügt. Sind alle Nachbarn bearbeitet, wird der nächste Knoten aus dem Band
entfernt. Dieser Vorgang wird so lange wiederholt, bis das Band leer ist. Abbildung 4.2 veranschaulicht diesen Vorgang.
36
4. Distanzberechnung
Abbildung 4.2: Zwei Zeitpunkte der Verbreitungsphase der Fast Marching Methode. Links: Ausbreitung des Bandes, nachdem drei Knoten entfernt wurden. Rechts: Ausbreitung
des Bandes, nachdem 32 Knoten entfernt wurden.
4.2.2
Korrektheit
Durch die iterative Verbreitung der Distanzinformationen über Nachbarknoten und die Initialisierung der ersten Datenstruktur mit einer unendlich großen Distanz wird garantiert, dass das Gitter
vollständig durchlaufen wird.
Auf Grund der approximierten Distanzen des Initialbandes entsteht ein Fehler, der sich zum einen
durch die Ausdehnung einzelner Gitterelemente abschätzen lässt. Besitzt durch die Punktklassifizierung wenigstens eine Kante eines Hexaeders zwei unterschiedlich klassifizierte Knoten, so
kann der entstehende Fehler nicht größer sein als die Ausdehnung des Hexaeders. Andererseits
wird der Fehler kleiner, wenn die Hexaeder kleiner werden. Hierbei verkleinert die verwendete
Methode der Gitterdeformation den Fehler, da sie die Hexaeder in Objektnähe verkleinert. Die
Fast Marching Methode und die Gitterdeformation verbessern sich somit gegenseitig.
Zum anderen entsteht ein Fehler, falls sich kein Knoten innerhalb des Objekts befindet. Dadurch
werden mit diesem Verfahren Kanten, die das Objekt eigentlich schneiden, nicht erkannt. In einem
solchen Fall muss akzeptiert werden, dass die Diskretisierung nicht genau genug ist, um diese
Geometrie zu erkennen. Abbildung 4.3 veranschaulicht beide Fehlermöglichkeiten.
4.2.3
Effizienz
Die Effizienz des Verfahrens wird einzeln für seine zwei Phasen betrachtet.
Initialphase
Bei der Berechnung der Schnittpunkte einer Kante mit der Objektoberfläche kann der Spezialbaum
genutzt werden, um die Anzahl der Dreiecke zu minimieren, die für den Schnitttest betrachtet werden müssen. Dazu wird auf dem Spezialbaum rekursiv eine Tiefensuche mit den Koordinaten der
zwei Knoten der Kante durchgeführt. Diese Tiefensuche erreicht jedes Blatt, dessen Intervall sich
zwischen den beiden Knoten befindet. Dabei werden an jedem Knoten des Spezialbaumes die Koordinaten beider Knoten zur Entscheidung hinzugezogen, in welchem Kind die Suche rekursiv
weitergeführt wird. Es kann natürlich vorkommen, dass die Suche in beiden Kindern weitergeführt wird. Sind alle Blätter erreicht, werden die Mengen ihrer Dreiecke vereinigt. Dabei können
mehrfach vorhandene Dreiecke entfernt werden, um die Kosten für den Schnitttest zu minimieren.
4.2 Fast Marching
37
Abbildung 4.3: Beispiele für die Fehler, die in der Distanzberechnung mit der Fast Marching Methode entstehen können. Oben: Es befindet sich nur der Knoten links im Inneren des Elements und somit berechnen die anderen drei Knoten ihre Distanzen
zu den Schnittpunkten. Die tatsächlichen Distanzen werden durch schwarze, die
fehlerhaft berechneten durch rote Pfeile verdeutlicht. Der approximative Fehler
entspricht dabei in etwa der maximalen Ausdehnung des Gitterelements. Unten:
Es befindet sich kein Knoten im Inneren des Objekts. Dadurch wird das Objekt
nicht erkannt und keine Distanz berechnet.
Sollen die mehrfach vorhandenen Dreiecke entfernt werden, muss jede Menge eines Blattes zuerst
sortiert werden, was in einer Laufzeit von O(k log k) möglich ist, wobei k die Anzahl der Dreiecke
in einem Blatt ist. Sind zwei Mengen A und B sortiert und beinhalten sie k(A) und k(B) viele
Dreiecke, ist ihre Vereinigung in Laufzeit O(k(A) + k(B)) möglich. Dazu werden die ersten
Elemente beider Mengen miteinander verglichen. Das kleinere Element wird aus seiner Menge
entfernt und in die neue Menge eingefügt. Sind die Elemente gleich, so werden beide aus ihren
Mengen entfernt aber nur einmal in die neue Menge eingefügt. Dieser Vorgang wird so lange
wiederholt bis beide Mengen leer sind.
Die Gesamtlaufzeit der Initialphase ist wiederum abhängig von der Tiefe des Spezialbaumes
und der Anzahl der Blätter, die erreicht werden. Für den ungünstigsten Fall, dass eine Kante das
gesamte Objekt umspannt, werden alle Blätter des Spezialbaumes erreicht. Ist M die Anzahl aller
Dreiecke, so befinden sich pro Ebene des Baumes O(M ) viele Dreiecke in Mengen, die vereinigt
werden. Ist die Tiefe des Baumes O(log M ), so beträgt die Gesamtlaufzeit O(M log M ), falls die
Mengen in den Blättern bereits in sortierter Reihenfolge gespeichert sind.
Verbreitungsphase
Zur anschaulichen Betrachtung der Komplexität dieser Phase wird ein Voronoi-Diagramm (vergleiche Kapitel 2.5) für die Referenzpunkte hinzugezogen, die in der ersten Phase berechnet wurden. Die Information eines Referenzpunktes wird von einzelnen Knoten zu ihren Nachbarknoten
weitergegeben. Die Verbreitung der Informationen in einer Wellenfront garantiert, dass sich die
Information eines Referenzpunktes nur entlang der Kanten verbreiten, die mit mindestens einem
Knoten innerhalb seiner Voronoi-Region liegen (siehe Abbildung 4.4). In der Regel bedeutet dies,
dass jeder Gitterknoten, dessen Nachbarknoten alle innerhalb der gleichen Voronoi-Region liegen, nur einmal zum Band hinzugefügt wird, und zwar mit der Information des Referenzpunktes,
38
4. Distanzberechnung
innerhalb dessen Voronoi-Region er sich befindet.
Abbildung 4.4: Ausbreitung der Information eines Referenzpunktes innerhalb seiner VoronoiRegion. Die roten Linien stellen die Voronoi-Kanten dar und die blauen markieren
die Kanten, über die die Information des mittleren Referenzpunktes verbreitet wird.
Wenn die Knoten einer Kante in unterschiedlichen Voronoi-Regionen liegen, existieren jedoch
zwei Ausnahmen zu dieser Regel. Bei ungünstig verzerrten Gittern kann es für einen Referenzpunkt vorkommen, dass ein Gitterknoten außerhalb seiner Voronoi-Region die Information des
Referenzpunktes annimmt und mit dieser in das Band eingefügt wird. Bevor dieser Gitterknoten
jedoch die Information wiederum an seine Nachbarknoten weitergeben kann, sollte ihn die Distanzinformation des Referenzpunktes, in dessen Voronoi-Region er sich befindet, erreichen. Für
diesen Fall wird ein Knoten mehr als einmal in das Band aufgenommen. Jedoch kann ein Knoten
nur von seinen Nachbarknoten mit einer neuen Information erreicht werden und folglich nicht öfter hinzugefügt werden als die Anzahl seiner Nachbarknoten, und diese ist konstant. Die zweite
Ausnahme entsteht, wenn zwei Referenzpunkte sehr dicht beieinander liegen. Dies kann zur Folge
haben, dass die Information eines der beiden Referenzpunkte im Laufe der Verbreitung verloren
geht. Für diesen Fall ändert sich nur die Genauigkeit der Distanzberechnung, was jedoch in Kauf
genommen werden kann, da die beiden Referenzpunkte nah beieinander liegen und der Fehler
somit akzeptabel ist. An der Komplexität der Laufzeit ändert sich dadurch nichts.
Es kann für die Gittergröße von N Knoten festgehalten werden, dass jeder einzelne Knoten nur
konstant oft in das Band eingefügt wird und somit insgesamt O(N ) Knoten in das Band eingefügt
werden. Das Band wird als eine sortierte Liste repräsentiert. Durch den Einsatz geschickter Datenstrukturen (zum Beispiel eines Min-Heaps) ist das Einfügen eines Elements in die sortierte Liste
in logarithmischer Laufzeit möglich, in der Anzahl der bereits sortierten Elemente. Die maximale
Anzahl der Knoten, die sich gleichzeitig im Band befinden können, lässt sich über die Anzahl der
Gitterknoten abschätzen, die sich am Rand des Gebietes befinden. Im Zweidimensionalen wird die
Anzahl der Gitterknoten mit N = a2 angenommen. Ist die Größe des Gebietes nicht quadratisch,
verringert sich diese Komplexität auf Grund der Wellenfront zu Gunsten der kürzeren Seiten des
Gebietes. Maximal können sich also zur gleichen Zeit 4a viele Knoten im Band befinden, was
einer Komplexität von O(log N 1/2 ) entspricht. In der O-Notation ist dies gleichbedeutend mit
4.2 Fast Marching
39
O(log N ).
Für den zweidimensionalen Fall entspricht die Gesamtlaufzeit der Verbreitungsphase also
O(N log N ). Die zuvor gezeigte genauere Abschätzung entspricht sogar einer Laufzeit von
O(N log N 1/2 ).
4.2.4
Erweiterung auf die dritte Dimension
Bei der Erweiterung des Algorithmus auf den dreidimensionalen Fall ändert sich für den Ablauf
des Algorithmus nichts. Die Initialphase verläuft gleich. Der Referenzpunkt eines Knoten wird in
der Verbreitungsphase auf die gleiche Weise an seine Nachbarknoten weitergegeben, der einzige
Unterschied besteht darin, dass maximal sechs statt vier Nachbarn existieren.
Jeder Knoten wird in 3D ebenso wie in 2D nur konstant oft in das Band eingefügt, jedoch ändert sich die Abschätzung der maximalen Anzahl von Knoten, die sich im Band befinden können. Wird die Anzahl aller Knoten mit N = a3 festgelegt, so können sich maximal 6 · a2 viele
Knoten gleichzeitig im Band befinden. Jeweils a2 viele für die sechs Seiten des Gebietes. Somit
kann die maximale Größe des Bandes mit O(log N 2/3 ) und die Laufzeit der Verbreitungsphase mit O(N log N 2/3 ) genauer abgeschätzt werden, was jedoch einer Laufzeit von O(N log N )
entspricht.
40
4. Distanzberechnung
41
Kapitel 5
Projektionstechniken
Das folgende Kapitel beschäftigt sich mit Methoden zur Projektion von Gitterknoten direkt auf die
Objektoberfläche. Durch den Einsatz der Gitterdeformation wird der Objektrand nicht exakt approximiert, da die Gitterdeformationsmethode nur die Hexaedergröße vorgibt und nicht die genaue
Lage der Punkte. Diese ungenaue Approximation des Objektrandes führt während der Simulation beim Einsatz der Fictitious-Boundary Methode zu einem erhöhtem Randapproximationsfehler.
Um diesen Fehler zu verringern, wird mit den nachfolgend vorgestellten Methoden eine teilweise
Randanpassung vorgenommen. Zuerst werden kurz allgemeine Projektionsverfahren vorgestellt,
bevor das in dieser Arbeit implementierte Verfahren erläutert wird.
5.1
Allgemein
In seiner Diplomarbeit beschreibt Göddeke [2004] den Einsatz verschiedener Projektionstechniken für exakt randangepasste Gitter. Ausgehend von einem exakt randangepassten Grobgitter
müssen dabei neu am Objektrand entstandene Knoten auf die Objektoberfläche projiziert werden.
Bei der Projektion mit kürzesten Abständen wird für die Gitterknoten zuerst der kürzeste Abstand
zur Objektoberfläche in einem Punkt bestimmt und dann die Position des Knotens auf diesen
Punkt verschoben. Die Problematik dieser Projektion ist die Uneindeutigkeit des Punktes, in dem
die kürzeste Distanz zur Objektoberfläche angenommen wird (siehe Abbildung 5.1). Bei runden
Objektoberflächen kann es vorkommen, dass die Distanz des Knotens zur Oberfläche in mehreren
Punkten gleich ist, welche jedoch zu unterschiedlichen Gitterqualitäten führen.
Die gewichtete Projektion bestimmt für einen Knoten eine Projektionsrichtung. Diese wird aus
den Normalen der Hexaederseitenflächen bestimmt, die zu dem Knoten inzident sind. Bei dieser
Technik führt die Richtung der Projektion nicht immer zu einem Schnittpunkt mit der Objektoberfläche und kann zu invertierten Hexaedern führen.
Eine dritte vorgestellte Technik ist die Umbrella-Projektion, basierend auf aktiven Konturen (engl.
active contours, snakes). Dabei werden die Knoten des Gitters, die die Objektoberfläche repräsentieren, schrittweise an Hand von Distanzinformationen an die Objektoberfläche angenähert.
Nach jedem Schritt wird das Gitter geglättet, um Verzerrungen zu vermeiden. Diese Methode ist
erfolgversprechend, kann jedoch auch zu invertierten Hexaedern führen.
Alle drei Projektionstechniken haben das gemeinsame Problem, dass eine gute Projektionsrichtung
heuristisch nicht trivial zu bestimmen ist.
42
5. Projektionstechniken
Abbildung 5.1: Uneindeutigkeit der Projektion mit kürzesten Abständen. Es kann kein eindeutiger Zielpunkt für die Projektion des Punktes p mit kürzestem Abstand bestimmt
werden.
5.2
Kantenprojektion
Im Rahmen dieser Arbeit entstehen Gitter, die im Gegensatz zu der Arbeit von Göddeke [2004] im
Inneren des Gebietes keine Löcher besitzen, welche die Objektoberfläche beschreiben. Es existieren also auch innerhalb des Objekts Hexaeder, die jedoch mit der Fictitious-Boundary Methode
aus der eigentlichen Simulation „ausgeblendet“ werden. Werden die Knoten betrachtet, die für
die Projektion in Frage kommen, führt dies zu folgender Beobachtung: Ein außerhalb des Objekts
liegender Knoten besitzt mindestens einen Nachbarknoten, der sich innerhalb des Objekts befindet (siehe Abbildung 5.2). Folglich sind die Knoten für eine mögliche Projektion durch Kanten
verbunden, die zwangsweise die Objektoberfläche schneiden müssen.
Somit können diese Kanten zur Bestimmung der Richtung für die Projektion genutzt werden. Es
gibt für diese Projektion zwei grundlegende Möglichkeiten: die Projektion von Knoten außerhalb
des Objekts auf die Objektoberfläche und die Projektion innerer Knoten. Beide Fälle sind jedoch
in ihrer Funktionsweise äquivalent und so wird nachfolgend nur die Projektion innerer Knoten
beschrieben.
5.2.1
Projektionsrichtung
Besitzt ein Knoten i im Inneren des Objekts genau einen Nachbarknoten j, der sich außerhalb befindet, so kann die Kante zwischen beiden Knoten als Vektor interpretiert werden, der von Knoten
i zu Knoten j gerichtet ist. Dieser Vektor ist der Richtungsvektor für einen Strahl, der von Knoten i gesendet wird und für den der Schnittpunkt mit der Objektoberfläche bestimmt werden soll.
Für den Schnitt kommen nur Dreiecke der Objektoberfläche in Frage, die sich zwischen den beiden Knoten befinden. Um eine minimierte Menge in Frage kommender Dreiecke zu bestimmen,
kann somit wieder der Spezialbaum mit einer Tiefensuche für die Koordinaten beider Knoten genutzt werden. Da sich ein Knoten innen und der andere außen befindet und die Objektoberfläche
geschlossen ist, muss mindestens ein Schnittpunkt existieren. Wurde mehr als ein Schnittpunkt
gefunden, so wird derjenige für die Projektion gewählt, der die geringste Distanz zum Knoten i
besitzt.
Für den Fall, dass ein innerer Knoten mehrere Nachbarknoten besitzt, die sich außerhalb des Objekts befinden, können alle zwischen den Knoten befindlichen Kanten zur Bestimmung der Rich-
5.2 Kantenprojektion
43
Abbildung 5.2: Idee zur Bestimmung der Projektionsrichtung an Hand von Kanten. Kandidaten
für die Projektion im Inneren des Objekts besitzen Knoten außerhalb, mit denen
sie durch Kanten verbunden sind und umgekehrt.
tung benutzt werden. Aus allen Kanten zu Nachbarknoten, die sich außerhalb des Objekts befinden, werden Vektoren gebildet und anschließend für die Projektionsrichtung gemittelt. Dieser
Vorgang verspricht eine gute Approximation für die Richtung der Projektion (siehe Abbildung
5.3), beinhaltet jedoch eine gewisse Problematik beim Bestimmen der Dreiecke für die Schnittberechnung.
Der Spezialbaum liefert mit einer Tiefensuche für zwei Punkte die Dreiecke, die sich zwischen
deren Koordinaten befinden. Geschieht dies für nur einen Knoten innerhalb des Objekts und einen
Nachbarknoten außerhalb, so müssen sich auf Grund der geschlossenen Objektoberfläche Dreiecke dazwischen befinden. Die Tiefensuche im Spezialbaum liefert dann eine Dreiecksmenge, die
zu einem Schnittpunkt führen muss. Der erste Punkt für die Tiefensuche wird durch den inneren
Knoten bestimmt, der zweite Punkt könnte durch Addition des Richtungsvektors zum Knoten i bestimmt werden. Ein gemittelter Richtungsvektor kann jedoch beliebig kurz sein, und daher könnte
sich der zweite Punkt für die Tiefensuche noch im Inneren des Objekts befinden. Dadurch könnte
die Tiefensuche eine leere Menge Dreiecke liefern und keinen Schnittpunkt mit der Objektoberfläche ergeben. Daher wird für die Tiefensuche ein Hüllkörper aus allen in die Berechnung eingehenden Knoten bestimmt, also aus dem Knoten i und all seinen Nachbarknoten, die sich außerhalb
des Objekts befinden. Die minimalen und maximalen Koordinaten dieses Hüllkörpers liefern zwei
Punkte für die Tiefensuche. Dies garantiert, dass eine Dreiecksmenge bestimmt wird, die einen
Schnittpunkt liefert, da alle zwischen den Knoten befindlichen Dreiecke bestimmt werden.
Wie bei den zuvor vorgestellten Projektionstechniken kann diese Methode zu schlechten Hexaederzellen, im Sinne der in Kapitel 2.3.1 vorgestellten Qualitätskriterien führen. Daher müssen
nach jeder Projektion eines Knotens diese Kriterien für alle zu diesem Knoten inzidenten Hexaeder überprüft werden. Ist ein invertierter Hexaeder entstanden oder wird ein Toleranzwert für
eines der Kriterien überschritten, so muss die Projektion rückgängig gemacht werden. Dies garantiert, dass durch die Projektion die Gitterqualität nur in einem vom Anwender bestimmten Maße
verschlechtert wird.
44
5. Projektionstechniken
Abbildung 5.3: Durch Kanten bestimmte Richtung für die Projektion von Knoten auf die Objektoberfläche.
5.2.2
Algorithmus
Die Projektion von äußeren Knoten erfolgt analog. Dies führt zu dem Problem, dass für jeden
Knoten, der für die Projektion in Frage kommt, mindestens ein anderer existiert, der ebenfalls
projiziert werden kann. Es muss also entschieden werden, für welchen Knoten die Projektion zuerst versucht werden soll. Dazu existieren drei verschiedene Varianten. Entweder es werden nur
innere oder nur äußere Knoten projiziert, oder es wird heuristisch entschieden, welche Knoten zuerst projiziert werden. Theoretisch ist die Projektion innerer Knoten für eine CFD-Simulation zu
bevorzugen, da durch sie mehr und kleinere Hexaeder am Objektrand entstehen. Werden äußere
Knoten projiziert, so entstehen größere Hexaeder am Objektrand. Eine einfache Möglichkeit heuristisch zu entscheiden, welche Knoten zuerst projiziert werden sollen, ist über die Distanz zu den
berechneten Punkten für die Projektion. Intuitiv sollten Knoten zuerst projiziert werden, die sich
bereits nah am Objektrand befinden, da sie die geringste Verzerrung der Hexaeder implizieren.
Die Abbildung 5.4 zeigt Beispiele für die drei Projektionsmöglichkeiten.
Bereits in diesem relativ simplen Beispiel sind Knoten zu sehen, die durch diese Methode nicht
projiziert werden, obwohl sie sich nahe der Objektoberfläche befinden (siehe Abbildung 5.5). Teilweise lässt sich dies erreichen, indem für jeden inneren Knoten überprüft wird, ob sein in jedem
Gitterelement diagonal gegenüber liegender Knoten außerhalb des Objekts liegt. Ist dies der Fall,
so kann ein Strahl von einem Knoten zum anderen gesendet werden und der Schnittpunkt mit der
Objektoberfläche kann als möglicher Projektionspunkt bewertet werden. In der dritten Dimension, mit Hexaedern, kann dieser Fall ebenso auftreten und bearbeitet werden. Dabei wird für einen
inneren Knoten überprüft, ob im Hexaeder sein diagonal gegenüber liegender Knoten außerhalb
des Objekts liegt.
Mit diesen Techniken werden pro Knoten mehrere Richtungen zur Projektion getestet und diejenige gewählt, die das beste Ergebnis verspricht, also in der Heuristik die kürzeste Distanz zum
Objektrand überwindet. Diese Beobachtungen führen zu folgendem Algorithmus:
1. Initialisiere eine Prioritätsliste (engl. priority queue), die nach Distanzinformationen sortiert
wird, und iteriere über alle Knoten des Gitters.
• Falls der Knoten sich innerhalb des Objekts befindet, bestimme mit den zuvor beschriebenen vier Heuristiken Knoten, die sich außerhalb des Objekts befinden. Be-
5.2 Kantenprojektion
45
Abbildung 5.4: Darstellung verschiedener Projektionsmöglichkeiten. Links-oben: Ausgangssituation vor der Projektion. Rechts-oben: Projektion innerer Knoten. Links-unten:
Projektion äußerer Knoten. Rechts-unten: Heuristische Kombination an Hand
von Distanzinformationen zur Objektoberfläche.
Abbildung 5.5: Nicht erkannte für die Projektion geeignete Knoten der heuristischen Projektion.
Durch Kreise wurden die Knoten markiert, für deren Projektion eine gesonderte
Heuristik eingesetzt werden muss.
stimme Projektionsrichtungen und Schnittpunkte mit der Objektoberfläche. Speichere
den Knoten, mit den jeweiligen Projektionspunkten und ihren Distanzen in der Prioritätsliste.
• Falls der Knoten sich außerhalb des Objekts befindet, bestimme mit den zuvor beschriebenen vier Heuristiken Knoten, die sich innerhalb des Objekts befinden. Bestimme Projektionsrichtungen und Schnittpunkte mit der Objektoberfläche. Speichere
den Knoten, mit den jeweiligen Projektionspunkten und ihren Distanzen in der Prioritätsliste.
2. Entferne den Knoten mit der geringsten Distanz aus der Prioritätsliste. Falls der Knoten
nicht bereits projiziert wurde, projiziere ihn auf den berechneten Projektionspunkt und überprüfe, ob sich die Qualität inzidenter Hexaeder noch innerhalb der Toleranzwerte befindet.
• Falls die Toleranzwerte nicht überschritten wurden, markiere den Knoten als projiziert,
46
5. Projektionstechniken
um eine erneute Projektion zu verhindern.
• Falls die Toleranzwerte überschritten wurden, stelle die ursprüngliche Knotenposition
wieder her. Dieser Schritt verhindert unter anderem, dass zwei benachbarte für eine
Projektion in Frage kommende Knoten, auch beide projiziert werden.
3. Wiederhole Schritt zwei bis die Prioritätsliste leer ist.
Dieser Algorithmus testet also verschiedene Projektionsrichtungen beginnend bei derjenigen, die
die kürzeste Distanz zur Objektoberfläche überbrückt.
47
Kapitel 6
I N G RID 3DD EFORM
Das folgende Kapitel enthält eine kurze Übersicht der Funktionen von I N G RID 3DD EFORM, der in
dieser Arbeit entwickelten Software. Die graphische Benutzeroberfläche (engl. Graphical User Interface, Abk. GUI) hat sich im Vergleich zur Vorgängerversion I N G RID 3D nur unwesentlich verändert (siehe Abbildung 6.1). Eine wichtige interne Änderung ist die Integration des F EAT F LOWPakets. Das F EAT F LOW-Paket beinhaltet zum einen die Methode der Gitterdeformation und zum
anderen den Navier-Stokes-Löser. Für eine Strömungssimulation müssen gewisse Abhängigkeiten
der entwickelten und eingesetzten Verfahren beachtet werden. Diese werden im ersten Abschnitt
dieses Kapitels erläutert, um die Zusammenhänge zwischen den einzelnen Methoden darzustellen. Dazu wird ein typischer Ablauf der Schritte erläutert, die benötigt werden, um eine Strömung
mit dem Navier-Stokes-Löser zu simulieren. Im zweiten Abschnitt dieses Kapitels werden die
verschiedenen Visualisierungsmöglichkeiten der in I N G RID 3DD EFORM berechneten Ergebnisse
vorgestellt, da sie ein wichtiger Bestandteil des folgenden Kapitels 7 sind. Abschließend werden
Funktionen erläutert, die zwar bereits in der Software integriert, jedoch noch nicht interaktiv steuerbar sind.
6.1
Simulationsverlauf
Die Hauptaufgabe der Software ist der Aufbau einer Gitterhierarchie, mit deren Hilfe eine Lösung
der Strömungssimulation berechnet werden kann. Beginnend mit einem Grobgitter wird dazu jede
Ebene der Hierarchie durch reguläre Unterteilung aus der vorherigen erstellt. In der Software kann
dabei jeweils nur mit dem Gitter der Hierarchie interagiert werden, welches das aktuell feinste Gitter darstellt. Jede Ebene der Hierarchie muss an F EAT F LOW übergeben werden, um die Methode
zur Gitterdeformation, ebenso wie den Navier-Stokes-Löser, nutzen zu können.
Zu Beginn einer Simulation werden ein Grobgitter und ein Objekt geladen. Ist das aktuelle Gitter
in F EAT F LOW initialisiert, kann die in Kapitel 2.1.2 beschriebenen Methode zu Gitterdeformation benutzt werden. Bevor die Gitterdeformation gestartet werden kann, muss im ersten Schritt
die Punktklassifizierung und daraufhin die Berechnung der Monitorfunktion erfolgen. Diese drei
Schritte sind voneinander abhängig und müssen exakt in dieser Reihenfolge durchgeführt werden:
a) Punktklassifizierung
Für die Initialphase der Fast Marching Methode (vergleiche Kapitel 4.2), müssen die Kanten
bekannt sein, die die Objektoberfläche schneiden. Jede Kante, die sich mit einem Knoten
innerhalb des Objekts und mit einem Knoten außerhalb befindet, muss die Objektoberfläche
48
6. I N G RID 3DD EFORM
Abbildung 6.1: Aufbau von I N G RID 3DD EFORM.
schneiden. Dazu wird, für jeden Knoten die erforderliche Punktklassifizierung mit Hilfe des
Spezialbaumes (siehe Kapitel 3.3) durchgeführt.
b) Distanzfeld
Mit Hilfe der Fast Marching Methode wird für das Gitter ein approximiertes Distanzfeld
zur Objektoberfläche berechnet, welches als Monitorfunktion für die Gitterdeformation verwendet wird. Dabei wird das Distanzfeld mit zwei Faktoren skaliert. Die Distanz zu inneren
Knoten wird mit einem höheren Faktor multipliziert, als die Distanz zu äußeren Knoten.
Dadurch können die Hexaeder innerhalb des Objekts größer werden, als gleich weit entfernt
liegende außerhalb des Objekts. Dies impliziert, dass während der Gitterdeformation mehr
Knoten aus dem Inneren des Objekts zur Objektoberfläche bewegt werden.
c) Gitterdeformation
Nach der Berechnung des Distanzfeldes kann die Gitterdeformation gestartet werden. Vor
einer Deformation können Parameter, wie zum Beispiel der Schwellwert für die kleinste erlaubte Hexaedergröße, in einer Datei eingestellt werden. Das Einstellen der Parameter
vor jedem Deformationsschritt erlaubt es, interaktiven Einfluss auf die Gitterdeformation
auszuüben. Führt ein zu klein gewähltes zu einem verzerrten Gitter, so kann es angepasst werden, um in einem neuen Deformationsschritt das Gitter wieder zu entzerren. Abschließend werden die Positionen der Knoten an Hand der Daten aus F EAT F LOW in I N G RID 3DD EFORM aktualisiert.
Die Gitterdeformation kann mit diesen drei Teilschritten beliebig oft wiederholt werden. Ist eine
Gitterdeformation erfolgt, so ist es möglich das Gitter auf entsprechende Qualitätskriterien (vergleiche Kapitel 2.3.1) zu untersuchen und gegebenenfalls mit einem Glättungsoperator zu glätten.
Nachdem eine akzeptable Gitterebene erstellt wurde, kann aus ihr die nächste Ebene der Hierarchie erstellt werden. Dabei entstehen durch reguläre Unterteilung, aus jedem Hexaeder acht neue.
Das neue, feinste Gitter der Hierarchie kann wiederum deformiert oder geglättet werden, bis es
den gewünschten Anforderungen entspricht.
6.2 Visualisierung
49
Ist auf dem beschriebenen Weg eine komplette Gitterhierarchie erstellt, so können zur Verbesserung der Genauigkeit der Fictitious-Boundary Methode die in Kapitel 5 beschriebenen Projektionstechniken angewendet werden. Dazu ist wieder zuerst die Punktklassifizierung durchzuführen,
da sonst nicht gewährleistet werden kann, dass Schnittpunkte mit der Objektoberfläche gefunden
werden. Um dem Anwender die größtmögliche Freiheit zu gewährleisten, steht dabei jede implementierte Projektionstechnik einzeln zur Verfügung, ebenso wie die kombinierte Variante. Dabei
erfolgt die Projektion eines Knotens auf die Objektoberfläche nur dann, falls sich die Gitterqualität dadurch nicht zu stark verschlechtert. Die Toleranzwerte für die Qualitätskriterien sind in der
Software integriert. Die Gitterqualität kann nach der Projektion wiederum neu berechnet werden,
um das entstandene Gitter auf Tauglichkeit für den Löser zu überprüfen.
Nach erfolgter Projektion kann im letzten Schritt der Navier-Stokes-Löser mit Hilfe der erstellten
Gitterhierarchie gestartet werden. Dazu ist es wiederum möglich verschiedene Parameter einzustellen, auf die hier jedoch nicht näher eingegangen wird. Ist die Simulation abgeschlossen, wird
aus F EAT F LOW eine Lösungsdatei herausgeschrieben, die mit der Software GMV (siehe Kapitel
2.6) betrachtet werden kann. Zusätzlich dazu, existiert die Option eine Datei herauszuschreiben
und diese in der Software Paraview zu importieren und zu visualisieren. An die Software I N G RID 3DD EFORM wird der berechnete Druck und die berechnete Geschwindigkeit des Fluids in
jedem Knoten zur internen Visualisierung der berechneten Simulation zurückgegeben.
6.2
Visualisierung
I N G RID 3DD EFORM enthält im Vergleich zu I N G RID 3D einige veränderte Visualisierungsmöglichkeiten, die nachfolgend vorgestellt werden.
Objekt
Die Optionen zur Visualisierung des Objekts haben sich im Vergleich zur Vorgängerversion nicht
geändert. Das Objekt kann normal, transparent oder gar nicht dargestellt werden. Zusätzlich dazu
kann die Oberflächentriangulierung durch das Zeichnen der Kanten jedes sichtbaren Dreiecks
hervorgehoben werden.
Gitter
Zur besseren Visualisierung der verschiedenen Gittereigenschaften wurden die bestehenden Zeichenoptionen modifiziert. Das Gitter kann weiterhin falls benötigt als Gesamtes gezeichnet werden, jedoch wird diese Darstellung bereits bei einigen tausend Hexaedern sehr unübersichtlich.
Durch die Option „near object“ werden nur Knoten in direkter Nähe zur Objektoberfläche dargestellt, also die inneren Knoten, die einen Nachbarn außerhalb des Objekts besitzen und umgekehrt.
Dazu muss zuerst die Punktklassifizierung durchgeführt worden sein. Ist dies geschehen, so werden die Knoten schwarz gezeichnet, die einen Nachbarknoten innerhalb des Objekts oder direkt
auf der Objektoberfläche besitzen, falls sie sich selbst außerhalb des Objekts befinden. Ebenfalls
werden Knoten blau dargestellt, die sich im Inneren des Objekts befinden und einen Nachbarknoten außerhalb oder direkt auf der Objektoberfläche besitzen. Falls sich Knoten direkt auf der
Objektoberfläche befinden, so werden diese rot dargestellt. Zur anschaulichen Visualisierung des
Gitters an der Objektoberfläche werden die Randknoten mit ihren inzidenten Kanten gezeichnet
(siehe Abbildung 6.2).
Wird die Option „aproximated object“ gewählt, so werden diejenigen Hexaederseitenflächen orange dargestellt, die sich mit ihren vier Knoten innerhalb des Objekts, beziehungsweise direkt auf
der Oberfläche befinden. Diese Option verdeutlicht, was der spätere Löser als Fictitious-Boundary
50
6. I N G RID 3DD EFORM
Abbildung 6.2: Zeichenoptionen für Gitterknoten in der Nähe der Objektoberfläche. Links: Darstellung mit der Option „near object“ ohne Randprojektion. Rechts: Darstellung
mit der Option „near object“ mit Randprojektion.
erkennt. Ist eine Projektion der Knoten auf die Objektoberfläche erfolgt, so werden bei dieser Option Seitenflächen, die sich mit allen vier Knoten auf der Oberfläche des Objekts befinden, rot
dargestellt und alle Flächen, die noch mindestens einen Knoten im Inneren des Objekts besitzen,
weiterhin orange. Die roten Flächen stellen dabei die exakt randangepassten Flächen dar (siehe
Abbildung 6.3).
Abbildung 6.3: Zeichenoptionen für Hexaederseitenflächen, die das Objekt approximieren. Links:
Darstellung mit der Option „aproximated object“ ohne Randprojektion. Rechts:
Darstellung mit der Option „aproximated object“ mit Randprojektion. Deutlich
sichtbar ist bereits eine Verbesserung der Approximation.
Die Option „inner faces“ zeigt zum einen nur diejenigen Seitenflächen in blau, die sich mit allen
vier Knoten im Inneren des Objekts befinden, und zum anderen den Teil des Gitters, der zu
Randknoten inzident, jedoch nicht ins Innere des Objekts gerichtet ist. Die Abbildung 6.4 zeigt
ein Beispiel dieser Zeichenoption.
Gitterschichten
Die Darstellung verschiedener Gitterschichten ist bereits in I N G RID 3D integriert gewesen. Aus
der regulären Struktur der Gitter können Ebenen zusammenhängender Hexaederseitenflächen
extrahiert und dargestellt werden. Die verschiedenen Schichten des Gitters lassen sich mit verschiedenen Datenmengen betrachten, wobei die Schichten in drei verschiedenen Orientierungen
angezeigt werden können. Es ist maximal eine Ebene pro Orientierungen darstellbar.
• Die Option „grid edges“ zeichnet nur die Kanten der Seitenflächen, die sich in der ausgewählten Gitterschicht befinden.
6.3 Zusatzfunktionen
51
Abbildung 6.4: Zeichenoptionen für Hexaederseitenflächen, die sich innerhalb des Objekts befinden. Darstellung mit der Option „inner faces“ mit Randprojektion. Ohne Randprojektion würde sich die Darstellung nicht von der Darstellung der Objektapproximation unterscheiden (siehe Abbildung 6.3 links).
• Die Option „monitorfunction“ zeichnet die berechnete Monitorfunktion für die Gitterdeformation.
• Die Option „velocity field“ stellt das berechnete Geschwindigkeitsfeld dar.
• Durch die Option „pressure“ wird das Druckfeld veranschaulicht.
Beispielhaft zeigt Abbildung 6.5 eine Möglichkeit der Darstellung der errechneten Daten.
Abbildung 6.5: Visualisierung eines Geschwindigkeitsfeldes mit drei verschieden orientierten Gitterschichten. Dargestellt sind die Optionen „grid edges“ und „velocity field“.
6.3
Zusatzfunktionen
In diesem Abschnitt werden einige Funktionen beschrieben, die zwar bereits in die Software integriert wurden, jedoch bisher nur intern funktionieren und noch nicht interaktiv steuerbar sind.
• Gitterexport
Die volle Kompatibilität mit dem F EAT F LOW-Paket erlaubt die Benutzung einer internen
52
6. I N G RID 3DD EFORM
Routine des F EAT F LOW-Pakets zum Exportieren der gesamten Datenstruktur. Dadurch ist
es möglich, ein erstelltes Gitter in ein Datenformat zu exportieren, welches von anderen
Programmen des F EAT F LOW-Pakets wieder eingelesen und zur Simulation einer Strömung
eingesetzt werden kann. Durch diesen Gitterexport ist es somit zum Beispiel möglich, mit
Hilfe der erstellten Gitterhierarchie auch turbulente Strömungen zu berechnen.
• Ebenenexport
Während der Arbeit an der Visualisierung berechneter Simulationen in der Software Paraview hat sich herausgestellt, dass sich einzelne Gitterschichten mit den berechneten
Daten sehr gut zur Visualisierung der Simulation eignen. Für alle Schichten, die in I N G RID 3DD EFORM darstellbar sind, wurde somit ein Export in ein Datenformat entwickelt,
welches in Paraview eingelesen und visualisiert werden kann.
• Skalierung des Gitters
Für eine wissenschaftliche Simulation sind exakte Ausmaße für das Simulationsgebiet wichtig und damit auch für das erstellte Gitter. In der bisherigen Version, die prototypisch angesehen wurde, war dies noch nicht von Interesse, daher konnten zuvor für I N G RID 3DD EFORM
keine exakten Maße für ein Gitter definiert werden. Um dies zu beheben wurde die Möglichkeit zur Skalierung und Verschiebung des Gitters integriert, mit deren Hilfe genau definierte
Ausmaße eingehalten werden können.
• Skalierung des Objekts
Damit ein Objekt exakt in das Strömungsgebiet platziert werden kann, mussten Methoden
zur Skalierung der Größe des Objekts und zur Verschiebung seiner Position innerhalb des
Gebiets integriert werden.
• Skalierung der Monitorfunktion
Wie bereits in Kapitel 2.1.2 dargestellt, bietet die Berechnung der Monitorfunktion verschiedene heuristische Möglichkeiten zur Anpassung der Gitterdeformation. Eine davon bietet
die unterschiedliche Skalierung des Distanzfeldes. Die Distanz zu Knoten innerhalb des
Objekts kann dabei mit einem anderen Faktor skaliert werden als die Distanz zu Knoten
außerhalb des Objekts. Die Möglichkeit verschiedene Faktoren festzulegen ist bereits in
I N G RID 3DD EFORM integriert (siehe Abbildung 6.6).
Abbildung 6.6: Visualisierung der Monitorfunktion für eine Kugel mit unterschiedlicher Skalierung. Die Farbskala verläuft von rot für den Funktionswert größer als 1, bis blau
für den Wert nahe 0. Links: Die Distanz der inneren Knoten wurde mit Faktor 2
skaliert. Rechts: Die Distanz zu inneren Knoten wurde mit Faktor 6 skaliert und
die Distanz zu äußeren Knoten mit Faktor 0,5.
53
Kapitel 7
Resultate
Das folgende Kapitel zeigt die Resultate der verwendeten Methoden, die mit der erstellten Software I N G RID 3DD EFORM gewonnen werden konnten. Zunächst werden einige Objekte vorgestellt,
die bei den anschließenden Tests verwendet werden. Danach werden die Ergebnisse der entwickelten Methoden untersucht.
Zuerst wird der Spezialbaum sowohl in seinem Aufbau als auch in seiner Funktionsweise als Suchdatenstruktur untersucht, mit dessen Hilfe die Punktklassifizierung effizient durchgeführt werden
kann. Als nächstes werden die Ergebnisse zur Berechnung kürzester Distanzen mit der Fast Marching Methode vorgestellt. Der vierte Abschnitt präsentiert die Resultate der Gitterdeformation.
Dabei wird zum einen untersucht, wie sich die ungenaue Berechnung der Distanzen auf die Gitterdeformation auswirkt und zum anderen wird die Verbesserung der Gitterqualität durch die Benutzung der Mehrgitterdeformation analysiert. Der fünfte Abschnitt präsentiert die Ergebnisse der
Projektionstechniken zur Verbesserung der Randapproximation des Objektes. Um die Qualität der
erstellten Approximation des Objektes für die Simulation zu überprüfen, wird das Szenario des
DFG-Benchmarks umgesetzt, zu dem Referenzwerte existieren. Abschließend werden die Ergebnisse bewertet und Vor- sowie Nachteile der verwendeten Methoden diskutiert. Die Messung der
TM 2 CPU T7200 mit 2,00
R
Laufzeiten erfolgt ausschließlich auf einem Notebook mit IntelCore
GHz Taktfrequenz und 2 GB Arbeitsspeicher, wobei nur ein CPU-Kern benutzt wurde. Alle nachfolgend beschriebenen Zeiten werden in Millisekunden angegeben.
7.1
Testobjekte
Im folgenden Abschnitt werden Testobjekte vorgestellt, die in dieser Übersicht nach ihrem Detailgrad aufgelistet sind.
7.1.1
Testobjekt 1 und 2
Die ersten beiden Testobjekte stellen einfache Geometrien dar. Das erste Objekt definiert eine Kugel, bestehend aus 327.680 Dreiecken. Sie kann auf einfache Weise analytisch beschrieben werden
und erlaubt daher den problemlosen Vergleich zwischen der Triangulierung und der exakten Definition einer Kugel. Bei dem zweiten Objekt handelt es sich um einen Würfel, bestehend aus 3.072
Dreiecken (siehe Abbildung 7.1).
54
7. Resultate
Abbildung 7.1: Testobjekt 1 und 2.
7.1.2
Testobjekt 3 und 4
Testobjekt 3 beschreibt eine deformierte Fläche und besteht aus 34.208 Dreiecken. Dieses Objekt
stellt höhere Anforderungen an die Gitteranpassung, da es stark gekrümmte Flächen besitzt. Das
vierte Objekt wird Verschlingung genannt, es besteht aus drei gleichen Einzelelementen, die ineinander verdreht sind. Dabei wird es durch 12.480 Dreiecke beschrieben und besitzt einen hohen
Krümmungsgrad, welcher bei einer Randanpassung zu Problemen führt (siehe Abbildung 7.2).
Abbildung 7.2: Testobjekt 3 und 4.
7.1.3
Testobjekt 5 und 6
Das fünfte Testobjekt ist das Modell eines VW Golf mit vielen kleinen Details und stellt einen
möglichen Anwendungsfall für ein Windkanalszenario dar. Das Objekt besteht aus 215.840 Dreiecken und besitzt Räder, Seitenspiegel, Türgriffe und einen Kühlergrill. Diese Details mussten bei
der exakten Randanpassung in der Vorgängerversion I N G RID 3D entfernt werden, da sie zu nicht
lösbaren Problemen geführt haben. Das letzte Testobjekt Manta/Taucher besteht aus zwei einzelnen Objekten, einem Mantarochen mit nach oben gebogenen Flossen und einem gröber aufgelö-
7.2 Punktklassifizierung
55
sten Taucher (siehe Abbildung 7.3). Beide Geometrien bestehen zusammen aus 10.512 Dreiecken.
Abbildung 7.3: Testobjekt 5 und 6.
7.2
Punktklassifizierung
Für die Punktklassifizierung wird der Aufbau des Spezialbaumes und seine Funktionsweise als
Suchdatenstruktur an Hand von drei Testobjekten untersucht. Das wichtigste Kriterium für den
Aufbau des Spezialbaumes ist die heuristisch bestimmte Abbruchbedingung. Die rekursive Unterteilung eines Knotens wird gestoppt, falls zu viele Dreiecke gleichzeitig in beiden Kinderknoten
referenziert werden (siehe Kapitel 3.3.1). Es wird überprüft, wie sich der Aufbau des Spezialbaumes und die daraus resultierende Laufzeit für die Punktklassifizierung verhält, falls 10%, 20%,
30% oder 40% Mehrfachreferenzierungen erlaubt werden. Der Spezialbaum wird zuerst aufgebaut
und dann mit Hilfe einer Breitensuche statistisch erfasst. Dabei werden folgende Daten erfasst:
• Zeit t
Die Zeit zum Aufbau des Baumes.
• Baumknoten I
Die Knotenzahl des Baumes, als erstes Indiz für seine Größe.
• referenzierte Dreiecke M
Die Gesamtzahl referenzierter Dreiecke, als zweites Indiz für die Größe des Spezialbaumes.
• Dreiecke pro Blatt M/B
Die durchschnittliche Anzahl referenzierter Dreiecke pro Blatt des Spezialbaumes, als Indiz
für die Geschwindigkeit bei der Punktklassifizierung.
• maximale Dreiecke max(M/B)
Die maximale Anzahl von Dreiecken in einem Blatt.
• Tiefe pro Blatt d/B
Die durchschnittliche Tiefe (engl. depth) der Blätter, als Indiz für die durchschnittliche Pfadlänge der Tiefensuche im Spezialbaum.
56
7. Resultate
• maximale Tiefe max(d)
Die maximale Tiefe des Baumes.
Für die Funktionsweise der Datenstruktur bei der Klassifizierung von Punkten werden die aufgebauten Datenstrukturen mit einer aus vier Ebenen bestehenden Gitterhierarchie getestet. Die Gitter
werden dabei an die Ausdehnungen des Objekts angepasst, so dass sich eine möglichst große Zahl
von Knoten innerhalb der Hüllkörper der Objekte befindet, da nur diese Knoten eine Anfrage an
den Spezialbaum stellen. Knoten außerhalb der Hüllkörper können sich nicht innerhalb des Objekts befinden und werden vorab in einem Test aussortiert. Um eine repräsentative Untersuchung
durchzuführen, wird das Grobgitter der Hierarchie einmal deformiert. Anderenfalls würden für
alle Knoten, die entlang von zur Strahlrichtung parallelen Geraden liegen, die gleichen Ergebnisse
bestimmt werden. Ist die Strahlrichtung parallel zur y-Achse, verläuft die Suche im Spezialbaum
für alle Knoten exakt gleich, die die gleichen x- und z-Koordinaten besitzen. Durch die Deformation des Gitters wird die Kollinearität der Knoten weitestgehend aufgehoben (siehe Abbildung
7.4).
Abbildung 7.4: Initiale Gitter zur Untersuchung der Punktklassifizierung mithilfe des Spezialbaumes. Dargestellt sind die Gitter für Testobjekt 1 und 8. Zur Veranschaulichung
wird das Gitter jeweils einmal mit und einmal ohne das Objekt dargestellt.
Damit die Erfassung der statistischen Daten beim Test der Punktklassifizierung die tatsächlichen
Laufzeiten nicht verfälscht, wurde der Test jeweils zweimal durchgeführt, zuerst zur Bestimmung
der Laufzeit und daraufhin mit Erfassung der Daten. Auf diese Weise werden folgende Daten
gesammelt:
• Zeit t
Die Zeit zur Klassifizierung aller Knoten.
• Zeit pro Gitterknoten t/N
Die durchschnittliche Zeit, die pro Gitterknoten gebraucht wurde.
• Dreiecke gesamt M
Die Gesamtzahl von Dreiecken, für die ein Strahl-Schnitttest durchgeführt wurde.
7.2 Punktklassifizierung
57
• Dreiecke pro Gitterknoten M/N
Die durchschnittliche Anzahl von Dreiecken, die pro Gitterknoten auf einen Schnitt mit dem
Strahl getestet wurden.
• maximale Dreiecke max(M/N )
Die maximale Anzahl von Dreiecken, die für einen Gitterknoten auf einen Schnitt mit dem
Strahl getestet wurden.
• Tiefe pro Knoten d/N
Die durchschnittliche Tiefe der Blätter, die pro Gitterknoten mit der Tiefensuche erreicht
wurden, also die Pfadlänge der Tiefensuche pro Knoten.
• maximale Tiefe max(d)
Die maximale Tiefe eines Blattes, der mit der Tiefensuche erreicht wurde.
7.2.1
Testobjekt 1
Als erstes Objekt wurde die Kugel analysiert, da sie ein regelmäßiges Objekt darstellt. Die Tabelle 7.1 zeigt den Aufbau der Datenstruktur mit den vier unterschiedlichen Abbruchbedingungen.
Wie erwartet wird der Spezialbaum um so größer, je mehr Mehrfachreferenzierungen erlaubt werden. Dabei verdreifacht sich in etwa die Zahl der Baumknoten pro 10%, während sich die Zahl
referenzierter Dreiecke in etwa verdoppelt. Dies impliziert ein exponentielles Größenwachstum
des Baumes in den erlaubten Mehrfachreferenzierungen. Im Gegenzug dazu sinkt die Anzahl der
Dreiecke pro Blatt, was eine bessere Laufzeit mit Erhöhung der erlaubten Mehrfachreferenzierung erwarten lässt. Die Zeit t zum Aufbau der Datenstruktur spielt für die Laufzeit der gesamten
CFD-Simulation eine eher untergeordnete Rolle, da die Datenstruktur nur einmal aufgebaut wird,
während die Punktklassifizierung sehr oft verwendet wird. Sie steigt jedoch mit Erhöhung der erlaubten Mehrfachreferenzierung, da dadurch die Anzahl der Knoten I und die Anzahl referenzierter Dreiecke M steigt. Die maximale Tiefe des Baumes max(d) verändert sich nur geringfügig
und entspricht selbst bei der Abbruchbedingung von 40% in etwa 3 log M , während die durchschnittliche Tiefe der Blätter d/B dem Wert von 1, 5 log M entspricht.
Für einen realitätsnahen Test wird die Punktklassifizierung für die vier erstellten Spezialbäume
an Hand von vier Gittern einer Hierarchie, also mit unterschiedlicher Anzahl von Gitterknoten
getestet. Die ermittelten Durchschnittswerte der einzelnen Hierarchieebenen ähneln sich dabei
jedoch so stark, dass die Zeit zur Klassifizierung eines Gitterknotens nicht von der Gesamtzahl
getesteter Gitterknoten abhängt. Somit werden in der Tabelle 7.2 nur die Daten für die vierte
und feinste Ebene der Gitterhierarchie gezeigt, die ca. 900000 Knoten enthält. Die vollständigen
Daten für alle Hierarchieebenen sind im Anhang A.1 zu finden. Die Zeit für die durchschnittliche
Klassifizierung einzelner Gitterknoten sinkt dabei logarithmisch mit Erhöhung der erlaubten
Mehrfachreferenzierung. Wenn die durchschnittliche Tiefe bei der Klassifizierung von Knoten
d/N aus Tabelle 7.2 mit der durchschnittlichen Tiefe der Blätter des Spezialbaumes d/B aus
Tabelle 7.1 verglichen wird, kann eine Entsprechung beobachtet werden.
7.2.2
Testobjekt 2
Als zweites Testobjekt wird der Würfel untersucht, der im Vergleich zur Kugel aus relativ wenigen
Dreiecken besteht (ca. 3000) und ebenfalls eine regelmäßige Struktur besitzt. Die erfassten Daten
beim Aufbau der Datenstruktur können Tabelle 7.3 entnommen werden.
58
7. Resultate
Abbr.
10%
20%
30%
40%
t
1599
2477
3538
5843
I
2,40E+4
1,31E+5
3,62E+5
1,10E+6
M
5,51E+5
9,46E+5
1,54E+6
2,99E+6
M/B
45
14
8
5
max(M/B)
315
117
79
52
d/B
14
16
18
19
max(d)
27
31
31
33
Tabelle 7.1: Aufbau der Spezialdatenstruktur für Testobjekt 1 (Kugel, 327.680 Dreiecke) und vier
unterschiedliche Abbruchheuristiken.
Abbr.
10%
20%
30%
40%
Hierarchieebene 4 - 855129 Testpunkte (912673 ges.)
M/N max(M/N ) d/N
t/N
M
t
7504 8,22E-3 3,80E+7
44
315
13
3073 3,37E-3 1,16E+7
13
117
15
2310 2,53E-3 6,39E+6
7
79
16
2025 2,22E-3 4,10E+6
4
52
18
max(d)
24
26
27
31
Tabelle 7.2: Test zur Punktklassifizierung mit Testobjekt 1 (Kugel, 327.680 Dreiecke), der maximalen Gitterhierarchieebene und vier unterschiedlichen Abbruchheuristiken.
Die gewonnenen Daten zeigen im Vergleich zur Kugel keine so deutliche Regelmäßigkeit mit
Erhöhung der Mehrfachreferenzierung. Es existiert ein starker Unterschied in der Baumstruktur
zwischen 10% und 20% erlaubter Mehrfachreferenzierung während sie sich bei 20% bis 40%
nur noch minimal ändert. Die durchschnittliche Anzahl Dreiecke pro Blatt bleibt, mit einem Wert
von 3, ebenso wie die Tiefe des Baumes, mit einem Wert von 49, konstant. Die Zahl der Knoten wächst beim Übergang von 10% zu 20% um den Faktor 55 während sie beim Übergang von
20% zu 30% nur noch um den Faktor 1,12 wächst. Besonders auffällig ist die (unerwartet hohe) maximale Tiefe des Baumes. Auf Grund der geringen Dreieckszahl von ca. 3000 Dreiecken
wäre eine deutlich geringere Tiefe zu erwarten. Die maximale Tiefe ist jedoch weit größer als
die Tiefe des Spezialbaumes bei seinem Aufbau für die Kugel, obwohl diese aus ca. hundertmal
mehr Dreiecken besteht. Die Erklärung hierfür zeigt ein Problem der verwendeten Abbruchbedingung bei vielen parallel zu den Achsen liegenden Dreiecken. Wird ein Knoten entlang einer Achse
unterteilt und befindet sich eine große Anzahl von Dreiecken parallel zu dieser Unterteilung, so
werden diese Dreiecke komplett einem der Kinder zugewiesen, also nicht geteilt. Dies führt dazu, dass nur wenige Dreiecke mehrfach referenziert werden im Vergleich zu der Gesamtzahl von
Dreiecken, die sich in diesem Knoten befinden. Dadurch werden die zum Abbruch der UnterteiAbbr.
10%
20%
30%
40%
t
9
77
85
118
I
423
2,33E-4
2,61E-4
3,82E-4
M
5,95E-3
4,44E-4
4,99E-4
6,90E-4
M/B
28
3
3
3
max(M/B)
125
60
40
40
d/B
8
23
23
23
max(d)
9
49
49
49
Tabelle 7.3: Aufbau der Spezialdatenstruktur für Testobjekt 2 (Würfel, 3.072 Dreiecke) und vier
unterschiedliche Abbruchheuristiken.
7.2 Punktklassifizierung
59
lung erforderlichen Mehrfachreferenzierungen kaum erreicht. Die Abbildung 7.5 veranschaulicht
dieses Problem, welches schlimmstenfalls sogar dazu führen könnte, dass die Unterteilung nicht
abbricht. Dieses Problem entsteht aus dem strukturellen Konzept für die Funktionsweise des Spezialbaumes und würde beim Einsatz eines Octree nicht bestehen. Es tritt jedoch nur als Sonderfall
auf und lässt sich leicht durch eine zusätzliche Abbruchbedingung abfangen. Eine Möglichkeit für
eine solche Abbruchbedinung, besteht aus der Definition einer maximalen Tiefe, bei der die Unterteilung eines Knotens abgebrochen wird. Um eine logarithmische Laufzeit für die Tiefensuche im
Spezialbaum zu gewährleisten, kann die maximale Tiefe logarithmisch zur Anzahl der Dreiecke
der Oberflächentriangulierung gewählt werden.
Abbildung 7.5: Ungünstiges Objekt für den Aufbau des Spezialbaumes. Befinden sich in der senkrechten Wand des Objekts sehr viele Dreiecke, wird die zum Abbruch der Unterteilung nötige Mehrfachreferenzierung nicht erreicht. Die Unterteilung des Objekts
nähert sich der Wand, erreicht sie jedoch nicht, dadurch findet die Unterteilung
immer wieder statt.
Für die Laufzeit der Punktklassifizierung stellt dieses Problem jedoch keine Einschränkung dar,
wie Tabelle 7.4 entnommen werden kann. Die Ergebnisse sind denen der Kugel ähnlich. Auch
hierbei spielt die Anzahl der Punkte, für die der Test durchgeführt wird, keine wesentliche Rolle
im durchschnittlichen Ablauf der Tiefensuche, wie Tabelle A.2 zeigt. Die durchschnittliche Tiefe
der Suche entspricht den Erwartungen für eine so geringe Dreiecksmenge. Sie erhöht sich dabei
nur gering mit Erhöhung der erlaubten Mehrfachreferenzierungen. Die maximale Tiefe, die bei
der Tiefensuche erreicht wird, beträgt mit einem Wert von 26 also ca. die Hälfte der tatsächlichen
maximalen Tiefe des Baumes von 49 (vergleiche Tabelle 7.3).
Abbr.
10%
20%
30%
40%
Hierarchieebene 4 - 855129 Testpunkte (912673 ges.)
t
t/N
M
M/N max(M/N ) d/N
5681 6,22E-3 3,44E+7
40
125
7
1288 1,41E-3 5,98E+6
6
18
10
1186 1,30E-3 5,14E+6
6
9
10
912 9,99E-4 3,51E+6
4
8
11
max(d)
9
25
26
26
Tabelle 7.4: Test zur Punktklassifizierung mit Testobjekt 2 (Würfel, 3.072 Dreiecke), der maximalen Gitterhierarchieebene und vier unterschiedlichen Abbruchheuristiken.
7.2.3
Testobjekt 6
Als drittes Testobjekt wird die Kombination aus einem Mantarochen und einem Taucher verwendet. Gemeinsam stellen die beiden Objekte eine relativ unregelmäßige Struktur für den Aufbau des
60
7. Resultate
Spezialbaumes dar. Es existieren große Bereiche innerhalb des Hüllkörpers, für die kein Schnitttest durchgeführt werden muss. Es sollten dementsprechend viele Blätter existieren, die keine
Dreiecke enthalten und damit zu einer geringeren durchschnittlichen Laufzeit führen.
Die erfassten Daten zum Aufbau der Datenstruktur sind bei Erhöhung der Mehrfachreferenzierung, denen der Kugel ähnlich (siehe Tabelle 7.5). Die Knotenzahl verdreifacht sich in etwa mit
der Erhöhung der erlaubten Mehrfachreferenzierung, während sich die Dreieckszahl ungefähr verdoppelt. Die durchschnittliche Dreieckszahl pro Blatt sinkt logarithmisch, während sich die durchschnittliche Tiefe des Baumes logarithmisch erhöht.
Die erfassten Daten zur Tiefensuche sind für die maximale Gittergröße in Tabelle 7.6 zu finden.
Der Ablauf der Punktklassifizierung ist dabei wie zuvor relativ unabhängig vor der verwendeten
Gittergröße, wie Tabelle A.3 entnommen werden kann. Die Zeit pro Punkt verhält sich ähnlich wie
bei der Kugel, ist jedoch halb so klein mit einer Ausnahme bei den 10% erlaubten Mehrfachreferenzierungen. Dies entspricht in etwa den Erwartungen, die der unregelmäßigen Dreiecksverteilung innerhalb ihres Hüllkörpers zu Grunde gelegt werden können, und findet sich in der halbierten
durchschnittlichen Dreiecksmenge wieder, die pro Knoten getestet wurde.
Abbr.
10%
20%
30%
40%
t
40
74
120
208
I
1,63E-3
9,77E-3
2,68E-4
6,46E-4
M
1,90E+4
3,64E+4
6,31E+4
1,14E+5
M/B
23
7
4
3
max(M/B)
350
161
91
57
d/B
12
15
17
18
max(d)
21
26
28
31
Tabelle 7.5: Aufbau der Spezialdatenstruktur für Testobjekt 6 (Manta/Taucher, 10.512 Dreiecke)
und vier unterschiedliche Abbruchheuristiken.
Abbr.
10%
20%
30%
40%
Hierarchieebene 4 - 893952 Testpunkte (912673 ges.)
t
t/N
M
M/N max(M/N ) d/N
7515 8,23E-3 4,10E+7
45
350
8
1384 1,52E-3 6,12E+6
6
161
10
970 1,06E-3 3,43E+6
3
91
11
821 9,00E-4 2,22E+6
2
57
12
max(d)
21
26
26
27
Tabelle 7.6: Test zur Punktklassifizierung mit Testobjekt 6 (Manta/Taucher, 10.512 Dreiecke), der
maximalen Gitterhierarchieebene und vier unterschiedlichen Abbruchheuristiken.
7.2.4
Zusammenfassung
Bis auf das zuvor beschriebene Problem beim Testobjekt 2 funktioniert der Aufbau des Spezialbaumes prinzipiell für die unterschiedlichen Arten von Objekten wie gewünscht. Mit der erlaubten Anzahl von Mehrfachreferenzierungen kann der zusätzliche Speicherplatzverbrauch indirekt
zu Gunsten einer besseren Laufzeit der Punktklassifizierung erhöht werden. Abbildung 7.6 zeigt
den tatsächlichen Speicherverbrauch in Megabyte (MB) für die unterschiedlichen Objekte mit unterschiedlichen Mehrfachreferenzierungen. Der Speicherverbrauch steigt dabei wie erwartet für
alle drei Testobjekte exponentiell. Die Laufzeit für die Punktklassifizierung sinkt dabei jedoch
logarithmisch, wie in Abbildung 7.7 dargestellt wird.
7.2 Punktklassifizierung
61
Größe des Spezialbaumes in MB
1000
100
Kugel
Quader
Manta Taucher
10
1
10%
20%
30%
40%
Abbruchbedingung
Abbildung 7.6: Entwicklung des Speicherverbrauchs beim Aufbau des Spezialbaumes mit unterschiedlichen Abbruchbedingungen in MB. Die Skala für den Speicherverbrauch ist
dabei logarithmisch skaliert. Ein linearer Anstieg in diesem Diagramm entspricht
damit einem tatsächlichen exponentiellen Anstieg.
9,00E-03
durchschnittliche Zeit pro Punkt
8,00E-03
7,00E-03
6,00E-03
Kugel
Quader
Manta/Taucher
5,00E-03
4,00E-03
3,00E-03
2,00E-03
1,00E-03
0,00E+00
10%
20%
30%
40%
Abbruchbedingung
Abbildung 7.7: Entwicklung der durchschnittlichen Laufzeit der Punktklassifizierung pro Gitterknoten mit unterschiedlichen Abbruchbedingungen für den Spezialbaum. Die
Laufzeiten verhalten sich dabei für die unterschiedlichen Objekte ähnlich.
62
7. Resultate
Werden 20% Mehrfachreferenzierungen statt 10% erlaubt, bedeutet das für die Kugel, dass die
Laufzeit pro Knoten um den Faktor 0,4 sinkt, während sich der Speicherverbrauch um den Faktor
1,1 erhöht (66 MB zu 71 MB). Eine Erhöhung von 20% auf 30% senkt die Laufzeit pro Knoten
um den Faktor 0,75, während sich der Speicherverbrauch um den Faktor 1,7 erhöht (71 MB zu 123
MB). Bei 40% steigt der Speicherverbrauch um den Faktor 2,2 (123 MB zu 270 MB), während
der Zeitgewinn nur noch dem Faktor 0,9 entspricht. Das bedeutet, dass die Zeit für die Punktklassifizierung nicht beliebig gesenkt werden kann, indem die Mehrfachreferenzierung erhöht wird,
und dass die Kosten für diese Erhöhung den Nutzen sehr schnell überschreiten.
Bei den anderen Objekten verhält sich diese Beobachtung ähnlich. Als guten Kompromiss zwischen Speicherplatzverbrauch und Senkung der Laufzeit werden 30% Mehrfachreferenzierungen
angesehen und folglich bei allen weiteren Tests auf diesen Wert festgesetzt. Der gesamte Speicherverbrauch der Software für eine Strömungssimulation mit einer Gitterhierarchie von vier Gitterebenen, bei der die feinste Ebene ca. 700000 Knoten besitzt, beträgt in etwa 2 GB. Der Speicherbedarf für den Spezialbaum der Kugel beträgt somit ca 6% des Gesamtspeicherbedarfs. Für den
Würfel werden 0,25% des Gesamtspeichers verbraucht und für den Manta/Taucher 0,03%.
Als großer Vorteil dieser Methode wird angesehen, dass die durchschnittliche Zeit für die Klassifizierung eines Punktes bei Objekten unterschiedlicher Größen gleich zu sein scheint. Damit wird
eine Datenstruktur für beliebige Objekte aufgebaut, die eine ähnliche Laufzeit für die Punktklassifizierung bietet. Die geringen Unterschiede in den durchschnittlichen Laufzeiten sind von verschiedenen Faktoren abhängig, die hier nicht genauer analysiert werden können, jedoch scheint
die durchschnittliche Anzahl der zu testenden Dreiecke der ausschlaggebende Faktor zu sein. Im
Vergleich zu der von Hein [2007] verwendeten, auf NURBS basierenden Methode zur Punktklassifizierung ist die hier verwendete, auf Oberflächentriangulierungen basierende Methode für
eine Kugelgeometrie um den Faktor 15 schneller. Die amortisierte Laufzeit für die Punktklassifizierung befindet sich in der Größenordnung von O(N log M ), wobei N die Anzahl der Knoten
und M die Anzahl der Dreiecke darstellt. Auf Grund der geringen Anzahl von Operationen, die
bei der Tiefensuche im Spezialbaum benötigt werden, sollte der tatsächliche Einfluss des Faktors
O(log M ) gering ausfallen. Da sich die Anzahl der Dreiecke der Oberflächentriangulierung im
Laufe der Simulation nicht verändert, kann der Faktor sogar als konstant angenommen werden
und die Komplexität der Punktklassifizierung mit einer Laufzeit von O(N ) abgeschätzt werden.
Tatsächlich werden die durchschnittlichen Zeiten pro Knoten mit Erhöhung der Knotenzahl sogar
geringer, was eventuell an einer besseren Ausnutzung des internen Cache liegt.
7.3
Distanzberechnung mit Fast Marching
Als Monitorfunktion für die Gitterdeformation wird ein Distanzfeld bestimmt. Zur Berechnung
dieses Distanzfeldes wird eine Variante des Fast Marching Algorithmus angewendet (siehe Kapitel 4.2). Die Fast Marching Methode berechnet dabei ein approximatives Distanzfeld, welches
einen Fehler beinhaltet. Der Einfluss dieses Fehlers auf die Gitterdeformation wird erst im folgenden Kapitel 7.4 über die Ergebnisse der Gitterdeformation betrachtet. An dieser Stelle wird die
Laufzeit der Fast Marching Methode in ihren zwei Phasen (vergleiche Kapitel 4.2.1) untersucht.
Die Initialphase ist dabei abhängig von der Tiefensuche im Spezialbaum für zwei Gitterknoten
einer Kante. Wird die Tiefensuche mit zwei anstatt von einem Gitterknoten durchgeführt, so kann
sie zu starken rekursiven Verzweigungen führen und ist damit zur Berechnung des Initialbandes
eventuell nicht optimal. Die Verbreitungsphase ist vom Initialband, der Beschaffenheit des Objekts
und vom Grad der Gitterdeformation abhängig. Die zwei Phasen werden für zwei unterschiedliche Objekte untersucht. Dazu werden wieder vier Gitter einer Gitterhierarchie getestet, um das
7.3 Distanzberechnung mit Fast Marching
63
Laufzeitverhalten bei unterschiedlichen Knotenzahlen zu untersuchen. Um die Unterschiede der
Laufzeit des Fast Marching Algorithmus zwischen einem regulären und einem deformierten Gitter zu untersuchen, wird der Algorithmus mit und ohne Gitterdeformation getestet. Bei dem Test
werden folgende Werte erfasst:
• Initialisierungszeit t(i)
Die Zeit, die für die Berechnung des Initialbandes gebraucht wurde.
• Initiale Gitterknoten N (i)
Anzahl der Knoten die sich im Initialband befinden: Dies entspricht ebenfalls der Anzahl
von zur Verfügung stehenden Referenzpunkten auf der Objektoberfläche.
• Initialzeit pro Knoten t(i)/N
Die durchschnittliche Zeit, die bei der Initialisierung pro Knoten gebraucht wurde.
• Verbreitungszeit t(v)
Gesamtzeit, die für die Verbreitungsphase gebraucht wurde.
• Verbreitungszeit pro Knoten t(v)/N
Die durchschnittliche Zeit, die pro Knoten in der Verbreitungsphase gebraucht wurde.
7.3.1
Testobjekt 3
Als erstes Testobjekt für die Distanzberechnung wird die deformierte Fläche verwendet. Mit ca.
30000 Dreiecken ist sie relativ fein aufgelöst und bietet mit der gekrümmten Oberfläche eine
unregelmäßige Struktur für die Fast Marching Methode.
Die erfassten Daten können Tabelle 7.7 entnommen werden. Sowohl beim regulären als auch beim
deformierten Gitter verhält sich der Algorithmus in der Initialphase ähnlich. Die Zahl der Knoten,
die das initiale Band bilden, wächst in etwa um das Vierfache pro Hierarchieebene. Dabei ist die
Zeit pro Knoten um so niedriger, je mehr Knoten das Gitter besitzt. Dies war zu erwarten, denn
eine geringere Knotenzahl impliziert größere Kantenlängen. Soll ein Schnittpunkt einer Kante
mit der Objektoberfläche berechnet werden, so bedeutet eine größere Kantenlänge, dass sich die
rekursive Tiefensuche im Spezialbaum stärker verzweigt. Dadurch müssen einerseits mehr Dreiecksmengen miteinander vereinigt werden und andererseits liefert die Tiefensuche mehr Dreiecke
für die der vergleichsweise teure Schnitttest durchgeführt werden muss. In Kapitel 4.2.3 wurde
angedeutet, dass eine Sortierung der Dreiecke in jedem Blatt direkt beim Aufbau der Datenstruktur eine bessere Laufzeit bedeuten könnte. In der Tabelle A.4 wurde die Datenstruktur auf diese
Weise aufgebaut. Dabei wird deutlich, dass die Laufzeiten zwar tatsächlich geringer sind, der Geschwindigkeitsgewinn jedoch vergleichsweise minimal ausfällt. Dies legt die Vermutung nahe,
dass die Anzahl der Dreiecke für den Schnitttest den Hauptfaktor für den Zeitaufwand bedeutet
und sich somit die Reduktion mehrfach referenzierter Dreiecke bei der Tiefensuche als sinnvoll
erweist. Diese Vermutung wird durch die Tatsache gestützt, dass sich die durchschnittliche Zeit
pro Knoten in etwa viertelt, während sich die Anzahl der Knoten im Initialband vervierfacht.
In der Verbreitungsphase erhöht sich die Laufzeit pro Knoten logarithmisch mit höheren Knotenzahlen. Pro Hierarchieebene steigt die Anzahl von Knoten um das siebenfache, während sich die
Laufzeit um das zehnfache erhöht. Dieser Effekt entsteht durch die kontinuierliche Sortierung des
Bandes, um seine wellenartige Ausbreitung zu garantieren. Dabei ist die durchschnittliche Laufzeit
auf der regulären Gitterhierarchie geringer als die Laufzeit auf der deformierten Gitterhierarchie.
Dies ist durch die höhere Zahl an Referenzpunkten und deren Voronoi-Regionen erklärbar. Je mehr
Referenzpunkte existieren, desto mehr Überschneidungen entstehen, wenn Knoten ihre Distanzinformationen an die Knoten übergeben, die sich in benachbarten Voronoi-Regionen befinden.
64
7. Resultate
deformierte Fläche, reguläres Gitter
N
t(i)
N (i)
t(i)/N
t(v) t(v)/N
1728
83
216
4,80E-2
3
1,74E-3
12167
152
820
1,25E-2
11
9,04E-4
91125
349
3340 3,83E-3
104 1,14E-3
704969
995 13420 1,35E-3 1294 1,84E-3
deformierte Fläche, deformiertes Gitter
N
t(i)
N (i)
t(i)/N
t(v) t(v)/N
1728
164
436
9,49E-2
2
1,16E-3
12167
441
1872 3,62E-2
14
1,15E-3
91125
890
7384 9,77E-3
131 1,44E-3
704969 2044 29888 2,90E-3 1641 2,33E-3
Tabelle 7.7: Distanzberechnung für Testobjekt 3 an Hand einer deformierten und einer regulär
unterteilten Gitterhierarchie.
7.3.2
Testobjekt 4
Als zweites Objekt wird die Verschlingung untersucht, sie besteht aus weniger Dreiecken als Testobjekt 3, bietet auf Grund ihrer Form jedoch viel Oberfläche für das Initialband. Für dieses Objekt
zeigen sich sehr ähnliche Laufzeiten im Vergleich zu dem vorherigen (vergleiche Tabelle 7.8).
In der Initialphase wird deutlich, dass die durchschnittlichen Zeiten pro Knoten mit zunehmender
Knotenzahl sowohl für die reguläre als auch für die deformierte Gitterhierarchie sinken. Die höhere durchschnittliche Zeit bei den deformierten Gittern im Vergleich zu den regulären Gittern ist
proportional zur Anzahl der Knoten, die sich im Initialband befinden.
Die Daten zur Verbreitungsphase sind denen des ersten Objekts sehr ähnlich. Die Zeit pro Knoten
scheint dabei nur von der Gesamtknotenzahl und von der Deformation des Gitters abhängig zu
sein, die zu mehr Referenzpunkten führt.
N
1728
12167
91125
704969
N
1728
12167
91125
704969
Verschlingung, reguläres Gitter
t(i)
N (i)
t(i)/N
t(v) t(v)/N
25
144
1,45E-2
1
5,79E-4
85
936
6,99E-3
10
8,22E-4
214
3888 2,35E-3
95
1,04E-3
709 16100 1,01E-3 1158 1,64E-3
Verschlingung, deformiertes Gitter
t(i)
N (i)
t(i)/N
t(v) t(v)/N
67
376
3,88E-2
3
1,74E-3
284
3216 2,33E-2
13
1,07E-3
715 13692 7,85E-3
138 1,51E-3
2121 55428 3,01E-3 1704 2,42E-3
Tabelle 7.8: Distanzberechnung für Testobjekt 4 an Hand einer deformierten und einer regulär
unterteilten Gitterhierarchie.
7.3 Distanzberechnung mit Fast Marching
7.3.3
65
Zusammenfassung
Für den Aufbau des Initialbandes sind die durchschnittlichen Zeiten pro Knoten für die verschiedenen Testsituationen in Abbildung 7.8 zu finden. In allen Situationen lässt sich eine logarithmische
Senkung der Laufzeiten bei jeder Gitterverfeinerung beobachten. Die Unterschiede zwischen
den regulären und deformierten Gitterhierarchien lassen sich wie zuvor beschrieben aus der
Anzahl der Knoten ableiten, die das Initialband bilden. Die höheren Zeiten bei der deformierten
Fläche lassen sich mit der höheren Anzahl von Dreiecken erklären, die die Objektoberfläche
repräsentieren. Bei gleichen Kantenlängen im Gitter muss bei dem ersten Objekt in etwa die
dreifache Anzahl Dreiecke pro Kante auf einen Schnitt mit der Objektoberfläche getestet werden,
da das Objekt durch die dreifache Anzahl Dreiecke dargestellt wird. Werden die Gitterkanten
kürzer, so nähern sich die Laufzeiten einander an. Bei der kürzesten Kantenlänge, also im feinsten
Gitter der deformierten Hierarchie, ist die Zeit pro Knoten für das zweite Objekt sogar höher.
Dieser Effekt tritt auf, wenn die Kantenlängen des Gitters ungefähr die Größen der Intervalle
erreichen, die in den Blättern des Spezialbaumes entstanden sind. Die deformierte Fläche besteht
aus kleineren Dreiecken als die Verschlingung. Damit bestehen die Blätter des Spezialbaumes für
die deformierte Fläche aus kleineren Intervallen. Die kleinstmögliche Anzahl von Dreiecken, für
die der Schnitttest durchgeführt werden muss, wird durch die Tiefensuche bei der deformierten
Fläche also erst bei kürzeren Kanten zurückgegeben, bei der Verschlingung bereits bei längeren.
0,1
0,09
0,08
Zeit pro Knoten
0,07
0,06
deformierte Fläche, regulär
Verschlingung, regulär
deformierte Fläche, deformiert
Verschlingung, deformiert
0,05
0,04
0,03
0,02
0,01
0
1728
12167
91125
704969
Anzahl Knoten
Abbildung 7.8: Grafik für die Initialphase der Fast Marching Methode. Getestet werden zwei unterschiedliche Objekte mit einer regulären und einer deformierten Gitterhierarchie.
Die Daten zur Verbreitungsphase sind in Abbildung 7.9 veranschaulicht. Bis auf die erste Hierarchieebene verhalten sich die Laufzeiten unabhängig von der Gitterdeformation und dem Objekt
ähnlich. Dies bedeutet, dass sich die Laufzeiten ebenfalls relativ unabhängig von der Anzahl der
Knoten im Initialband verhalten. Die unregelmäßigen Zeiten in der ersten Hierarchieebene sind
vermutlich auf die ungenaue Zeitmessung im Bereich von einer bis drei Millisekunden zurückzuführen. Die durchschnittliche Laufzeit pro Knoten steigt mit Erhöhung der Knotenzahl. Während
66
7. Resultate
sich die Knotenzahl pro Hierarchieebene ungefähr um den Faktor 7 erhöht, erhöht sich die Laufzeit pro Knoten der regulären Gitter von Ebene 2 auf Ebene 3 um den Faktor 1,25 und von Ebene
3 auf Ebene 4 um den Faktor 1,6. Bei den deformierten Gittern erhöht sich die Laufzeit von Ebene
2 auf Ebene 3 um den Faktor 1,4 und von Ebene 3 auf Ebene 4 wiederum um den Faktor 1,6. Dieser Faktor wird im Bereich von O(log N ) vermutet, was den Erwartungen für die Fast Marching
Methode entspricht.
Insgesamt kann beobachtet werden, dass sich die durchschnittliche Laufzeit zur Initialisierung
des Bandes bei der höchsten Hierarchieebene der Laufzeit nähert, die in der Verbreitungsphase
gemessen wurde. Damit erfolgt ab einer bestimmten Gittergröße die üblicherweise aufwendige
Bestimmung der tatsächlichen Distanzen für das Initialband schneller als die Verbreitungsphase.
Somit dominiert ab einer bestimmten Gittergröße die Verbreitungsphase die Laufzeit des gesamten
Algorithmus. Da die Gitter so fein wie möglich sein sollen, also eine möglichst große Anzahl
von Knoten enthalten sollen, kann damit die Laufzeit des gesamten Algorithmus mit O(N log N )
abgeschätzt werden.
0,003
0,0025
Zeit pro Knoten
0,002
deformierte Fläche, regulär
Verschlingung, regulär
deformierte Fläche, deformiert
Verschlingung, deformiert
0,0015
0,001
0,0005
0
1728
12167
91125
704969
Anzahl Knoten
Abbildung 7.9: Grafik für die Verbreitungsphase der Fast Marching Methode. Getestet werden
zwei unterschiedliche Objekte mit einer regulären und einer deformierten Gitterhierarchie.
7.4
Gitterdeformation
Im folgenden Kapitel werden zwei Eigenschaften der in Kapitel 2.1.2 beschriebenen Gitterdeformationsmethode betrachtet. Als erstes wird der Einfluss der ungenauen Monitorfunktion auf
die Gitterdeformation untersucht. Als zweites wird gezeigt, wie sich die Gitterdeformation auf der
maximalen Hierarchieebene im Vergleich zur sukzessiven Deformation über alle Hierarchieebenen
verhält. Im folgenden wird mit dem Ausdruck Deformationsschritt der Vorgang zusammengefasst,
bei dem die Gitterdeformationsmethode mit einer neu berechneten Monitorfunktion angewendet
wird.
7.4 Gitterdeformation
7.4.1
67
Distanzgenauigkeit
Innerhalb der Gitterdeformationsmethode bestimmt die Monitorfunktion, basierend auf einem skalierten Distanzfeld, indirekt die Größe der Hexaederzellen. Durch die Fast Marching Methode
entsteht ein Fehler in der Distanzberechnung, welcher zu ungenauen Ergebnissen in der Gitterdeformation führen könnte. Aus diesem Grund werden die Ergebnisse von Testobjekt 1 mit den
Ergebnissen einer Referenzrechnung verglichen. Die Referenzrechnung wird mit einer analytischen Kugelbeschreibung mit identischem Durchmesser durchgeführt. Dazu wird eine Kugel mit
Durchmesser 1 ins Zentrum eines Gebiets mit Kantenlängen von 3 platziert. Das Grobgitter besteht
aus 16 Hexaedern, die fünfte und maximale Ebene der Hierarchie besteht aus ca. 260000 Hexaedern. Auf jede Ebene der Hierarchie wird jeweils ein Deformationsschritt mit den unterschiedlich
berechneten Distanzfeldern angewendet. Der Einfachheit halber werden nachfolgend die Gitter,
welche aus der analytisch berechneten Distanz resultierten, als A-Gitter bezeichnet, während die
Gitter die mit Hilfe der Fast Marching Methode erstellt wurden, als FM-Gitter bezeichnet werden.
In Abbildung 7.10 ist ein Vergleich der Ergebnisse auf der fünften Hierarchieebene zu sehen. Bei
den dargestellten Ergebnissen entsteht ein ähnlicher visueller Eindruck der resultierenden Gitter
und der durchschnittlichen Größen der Hexaeder.
Abbildung 7.10: Vergleich zwischen FM-Gitter und A-Gitter nach einem Deformationsschritt. Die
Farbskala verdeutlicht die Größe der Hexaeder. Der helle Kreisbogen markiert
die Position der Kugeloberfläche. Links: FM-Gitter. Rechts: A-Gitter.
Um die tatsächlichen Unterschiede zwischen den Ergebnissen zu analysieren, werden in einem
ersten Schritt die Differenzen der Koordinaten ihrer Knoten gebildet. Dabei werden die Koordinaten des A-Gitters von den Koordinaten des FM-Gitters subtrahiert. Das Resultat dieser Differenz
sind Vektoren, die eine Abweichung der Knoten des FM-Gitters zum A-Gitter darstellen. Um eine
Aussage zur Abweichung der Knoten in Bezug auf das Gitter treffen zu können, wird die Länge
der Vektoren in einem zweiten Schritt mit den Größen umliegender Hexaeder verglichen. Dazu
wird in jedem Knoten ein Wert h definiert. Dieser Wert beschreibt die durchschnittliche Größe
(Kantenlänge) aller zu diesem Knoten inzidenten Hexaeder. Wird in jedem Knoten die Vektorlänge, also die Distanz seiner Abweichung l durch das lokale h dividiert, so resultiert dies in
der prozentualen Abweichung eines Knotens im Vergleich zu den Größen inzidenter Hexaeder.
Abbildung 7.11 veranschaulicht diese beiden Vergleichsmöglichkeiten.
68
7. Resultate
Abbildung 7.11: Vergleich der Gitterdeformation zwischen FM-Gitter und A-Gitter über die Abweichung der Knoten. Links: Vergleich der Abweichung an Hand des Vektorfeldes. Für eine bessere Darstellung wird nur ein Teil der Vektoren um ein vielfaches vergrößert dargestellt. Rechts: Relative Abweichung der Gitterknoten im
Vergleich zur Hexaedergröße.
Die maximale gemessene Abweichung der Knoten beträgt 0,009. Es lässt sich jedoch beobachten,
dass die Abweichung in der Nähe der Objektoberfläche im Durchschnitt mit 0,002 deutlich geringer ausfällt. Allgemein führt die ungenau berechnete Distanz zu einem Gitter, dessen Knoten vom
Zentrum des Objekts zum Gebietsrand hin von dem A-Gitter abweichen. Die maximal gemessene
prozentuale Abweichung der Gitterknoten beträgt ca. 30% der lokalen Hexaedergröße h, jedoch
lässt sich auch hier wiederum beobachten, dass die Abweichung in der Nähe zur Objektoberfläche
mit ca. 8-14% geringer ausfällt.
Aus diesen Beobachtungen heraus wurden für eine nähere Untersuchung folgende Größen ermittelt, die miteinander in Bezug gestellt werden können:
• Fehler pro Knoten FM e/N
Durchschnittlicher Fehler pro Knoten bei der Berechnung mit der Fast Marching Methode.
• maximaler Fehler FM max(e/N )
Der maximale Fehler in der Distanzberechnung, der in einem Knoten durch die Fast Marching Methode entstanden ist.
• Vektorlänge an Objektoberfläche l(obj)
Die durchschnittliche Vektorlänge, als Vergleichswert für die Abweichung der Knoten in
der Nähe der Objektoberfläche.
• maximale Vektorlänge max(l)
Die maximale Vektorlänge, als Indiz für die größte gemessene Abweichung.
• Prozentuale Abweichung an Objektoberfläche a(obj)
Die prozentuale Abweichung im Vergleich zur Hexaedergröße für Knoten in der Nähe der
Objektoberfläche.
7.4 Gitterdeformation
69
• Maximale prozentuale Abweichung max(a)
Die maximale prozentuale Abweichung die gemessen wurde.
Diese Daten werden für die verschiedenen Ebenen der Hierarchie erfasst, da die Genauigkeit der
Fast Marching Methode und damit der Unterschied zum analytisch berechneten Distanzfeld von
der Größe der Hexaeder abhängig ist. Dazu wird die Gitterdeformation mit beiden Methoden
zur Bestimmung des Distanzfeldes auf den Hierarchieebenen 3 bis 5 unabhängig voneinander
durchgeführt. Interessant ist ebenfalls die Untersuchung der Anwendung mehrerer aufeinander
folgender Deformationsschritte, bei denen das Gitter nach der Deformation jeweils mit Hilfe des
Umbrella-Operators geglättet wird. Dazu wird zuerst auf der fünften Hierarchieebene das einmal
deformierte Gitter geglättet. Danach wird auf diesem Gitter ein weiterer Deformationsschritt mit
anschließender Glättung durchgeführt. Die auf diese Weise gesammelten Daten sind in Tabelle 7.9
zusammengestellt.
e/N
8,38E-3
3,03E-3
9,25E-4
9,25E-4
9,25E-4
max(e/N )
l(obj)
max(l) a(obj)
Ebene 3
6,42E-2
2,3E-2 5,72E-2
20%
Ebene 4
3,15E-2
6,75E-3 2,25E-2
15%
Ebene 5
2,78E-2
3,00E-3 9,04E-3
14%
Ebene 5, Glättung
2,78E-2
2,58E-3 8,59E-2
14%
Ebene 5, 2 Deformationen, Glättung
3,05E-2
2,01E-3 5,02E-3
9%
max(a)
36%
30%
29%
23%
15%
Tabelle 7.9: Vergleich der Gitterdeformation zwischen FM- und A-Gitter.
Für die Hierarchieebenen 3 bis 5 lässt sich beobachten, dass die Abweichung der Gitter mit zunehmender Genauigkeit der Fast Marching Methode abnimmt. Die Abweichung zur lokalen Hexaedergröße ist jedoch auch beim größten Fehler in Ebene 3 mit einer maximalen gemessenen
Abweichung von 36% und einer durchschnittlichen von 20% an der Objektoberfläche immer noch
als gering anzusehen. Eine nachträgliche Glättung des Gitters auf Ebene 5 mit Hilfe des UmbrellaOperators senkt die maximale Abweichung der Knoten um weitere 7%. Wird ein weiterer Deformationsschritt auf diesem Gitter durchgeführt und anschließend das Gitter geglättet, so sinkt die
Abweichung sogar auf 9% und 15%.
Diese Ergebnisse bestätigen, dass sich die Fast Marching Methode trotz ihrer Ungenauigkeit zur
Berechnung des Distanzfeldes als Monitorfunktion für die Gitterdeformation eignet. Je feiner das
Gitter ist, desto genauer ist die Fast Marching Methode, was zu einer kleineren Abweichung im
Vergleich zu einem Gitter mit exakt berechneter Distanz führt. Bereits für dieses noch relativ grobe
Gitter mit 260000 Hexaedern ist der Unterschied sehr gering, vor allem wenn mehrere Deformationsschritte in Kombination mit einer Glättung des Gitters verwendet werden. Zudem muss bedacht
werden, dass es nicht einfach ist, die resultierenden Gitter auf ihre numerische Genauigkeit miteinander zu vergleichen. Bei dem Gitter, welches aus der Fast Marching Methode resultiert, befinden
sich weniger Knoten innerhalb des Objekts, was evtl. sogar zu besseren Ergebnissen führen könnte. Eine komplexe Analyse dieser Unterschiede würde jedoch den Rahmen dieser Diplomarbeit
überschreiten.
70
7.4.2
7. Resultate
Mehrgitterdeformation
Bei dem bestehenden Verfahren in F EAT F LOW funktioniert die Gitterdeformation bisher nur auf
der feinsten Hierarchieebene, nachfolgend wird dieses Verfahren Eingitterdeformation genannt.
Mit der erstellten Software I N G RID 3DD EFORM ist jedoch ein Ansatz möglich, der zu besseren
Ergebnissen führt. Bei diesem Ansatz wird die Gitterdeformation in den Prozess der Bildung einer
Mehrgitterhierarchie einbezogen. Dazu wird die Gitterdeformation bereits auf dem Grobgitter und
sukzessive auf jeder weiteren Ebene der Hierarchie einmal durchgeführt. Es wird also ein Deformationsschritt auf dem Grobgitter durchgeführt, das resultierende Gitter wird verfeinert und dient
als zweites Gitter der Hierarchie. Dieses wird wiederum deformiert und anschließend verfeinert,
um das nächste Gitter der Hierarchie zu bilden. Wurde die feinste Hierarchieebene erreicht, so wird
diese einmal deformiert. Dieses Verfahren wird nachfolgend Mehrgitterdeformation genannt.
7.4.3
Testfälle
Bei Tests mit verschiedenen Objekten hat sich herausgestellt, dass die Mehrgitterdeformation
unabhängig vom Objekt ähnliche Vorteile bringt, daher wird der Test an dieser Stelle nur mit
dem Golfmodell durchgeführt. Das Objekt wird in seiner Länge auf den Wert 1,5, in seiner Breite
auf den Wert 0,7 und in seiner Höhe auf den Wert 0,6 skaliert. Zur Beschreibung des Gebiets
wird ein Grobgitter bestehend aus 21×8×8 gleichgroßen Hexaedern verwendet, welche den
Quader [0;5] × [-1;1] × [-1;1] ausfüllen. Auf der vierten und feinsten Hierarchieebene besteht das
Gitter aus ca. 700000 Hexaedern. Die Verbesserung, die mit der Mehrgitterdeformation erreicht
werden kann, ist unter anderem von der relativen Position des Objekts zum Kanal abhängig. Für
den ersten Testfall wird das Objekt im Intervall [0;1,5] positioniert, die Front des Golfmodells
befindet sich also genau am Einströmrand des Kanals. Beim zweiten Testfall wird das Objekt im
Intervall [1;2,5] positioniert, das Heck des Golfmodells befindet sich also genau in der Mitte der
Kanallänge. Für den dritten Testfall wird das Golfmodell zentriert im Kanal positioniert, also im
Intervall [1,75;3,25]. Tabelle 7.10 veranschaulicht den Einfluss der Mehrgitterdeformation auf die
Qualitätsmaße der feinsten Gitterhierarchie im Vergleich zur Eingitterdeformation.
Testfall 1, Golfmodell (Position 0-1,5)
Kleinster Winkel Größter Winkel
Eingitterdeformation
7,98◦
172,88◦
◦
Mehrgitterdeformation
21,04
158,94◦
Testfall 2, Golfmodell (Position 1-2,5)
Kleinster Winkel Größter Winkel
Eingitterdeformation
11,16◦
170,28◦
Mehrgitterdeformation
41,32◦
140,19◦
Testfall 3, Golfmodell (Position 1,75-3,25)
Kleinster Winkel Größter Winkel
Eingitterdeformation
17,5◦
162,02◦
◦
Mehrgitterdeformation
41,41
139,44◦
AR
14,56
9,22
ER
20
12,44
AR
11,58
4,97
ER
14,29
6,73
AR
11,55
5,28
ER
14,73
7,24
Tabelle 7.10: Vergleich der resultierenden Qualitätsmaße zwischen der Eingitterdeformation auf
der feinsten Hierarchieebene und der Mehrgitterdeformation, an Hand des Gofmodells
7.4 Gitterdeformation
71
Für Testfall 1 verbessert die Mehrgitterdeformation die schlechtesten gemessenen Winkel um ca.
14◦ während sich sowohl die Seitenflächenverhältnis (AR) als auch die Kantenlängenverhältnis
(ER) um den Faktor 0,6 verbessern. Für Testfall 2 verbessert die Mehrgitterdeformation die Winkel um ca. 30◦ . Die AR und die ER werden jeweils halbiert. Der Testfall 3 liefert ähnliche Ergebnisse wie Testfall 2, wobei die geringere Verbesserung der Winkel mit den besseren Winkeln der
Eingitterdeformation einhergeht.
Insgesamt lässt sich eine starke Verbesserung der Gitterqualität durch den Einsatz der Mehrgitterdeformation feststellen. Die Problematik beim Einsatz der Eingitterdeformation ist in Abbildung
7.12 für Testfall 2 dargestellt. Durch die Eingitterdeformation entstehen sehr starke Verzerrungen in den einzelnen Gitterschichten, die sich auch durch den Einsatz von Glättungsoperatoren
nicht vollständig beseitigen lassen. Wie in Abbildung 7.13 zu sehen ist, wird das Gitter durch den
Einsatz der Mehrgitterdeformation insgesamt gleichmäßiger und ist weniger verzerrt. Zusätzlich
dazu reicht die Skala für die durchschnittliche Größe der Hexaeder bei der Mehrgitterdeformation
von 2,65E-6 bis 7,32E-5, während sie bei der Eingitterdeformation von 3,57E-6 bis 7,14E-5 reicht.
Das bedeutet, dass bei der Mehrgitterdeformation sogar deutlich kleinere Hexaeder in der Nähe der
Objektoberfläche entstehen, durch die das Objekt approximiert wird. Die Verbesserung der Gitterqualität ist dabei teilweise von der Länge des Kanals abhängig. Je länger der Kanal, desto stärker
sind die Verzerrungen bei der Eingitterdeformation. Da der Kanal üblicherweise noch länger ist
als bei diesem Testfall, bietet der Einsatz der Mehrgitterdeformation eine deutliche Verbesserung
der Gitterqualität.
Abbildung 7.12: Testfall 2. Testfall 2. Eingitterdeformation an das Golfmodell auf der feinsten
Hierarchieebene. Links: Frontansicht einer Gitterschicht. Rechts: Seitenansicht
der Gitterschicht.
72
7. Resultate
Abbildung 7.13: Testfall 2. Mehrgitterdeformation an das Golfmodell mit einem Gitterdeformationsschritt pro Hierarchieebene. Links: Frontansicht einer Gitterschicht. Rechts:
Seitenansicht der Gitterschicht.
7.5
Projektion zur Randanpassung
Zur Untersuchung der in Kapitel 5 vorgestellten Projektionstechniken wird zuerst ihre Funktionsweise an Hand eines einfachen Tests mit dem Würfel und einem regulären Gitter verdeutlicht.
Danach wird der Einfluss der Gitterdeformation auf die nachträgliche Projektion an Hand der zwei
einfachen Geometrien (Kugel und Würfel) erläutert und die grundlegende Problematik dargestellt.
Die Projektion wird daraufhin an zwei komplexen Objekten untersucht. Abschließend wird die numerische Genauigkeit der Gitter mit und ohne Projektion an Hand eines Benchmarks untersucht,
zu dem Referenzwerte existieren.
Eines der Kriterien für die Projektion ist, dass sich die Gitterqualität nicht zu stark verschlechtern
darf. Für alle folgenden Tests wurden die erlaubten Toleranzwerte für die Gitterqualität auf folgende Werte eingestellt: Der größte Winkel darf 151◦ sein, der kleinste Winkel 29◦ und sowohl
die ER als auch die AR dürfen maximal den Wert 6 besitzen. Im Laufe aller Tests wurden diese Toleranzwerte durch die Projektionen nicht überschritten, daher wird auf einen expliziten Test
verzichtet.
7.5 Projektion zur Randanpassung
7.5.1
73
Funktionsweise
Die Funktionsweise der einzelnen Heuristiken lässt sich an Hand des Würfels und einem regulären
Gitter gut veranschaulichen. Um einen Vergleichswert für die Güte der Projektion zu erhalten,
werden folgende Datenmengen zu den Projektionen gesammelt:
• fictitious-Knoten f (N )
Knoten die sich innerhalb des Objekts befinden und mindestens einen inzidenten Hexaeder besitzen, der wenigstens eine Seitenfläche außerhalb des Objekts besitzt. Diese Knoten
liegen nicht auf dem Objektrand, sind jedoch Teil der Hülle der Objektapproximation bei
Anwendung der Fictitious-Boundary Methode.
• Randknoten r(N )
Knoten, die die Hülle der Objektapproximation darstellen, jedoch exakt auf dem Objektrand
liegen.
• Quotient χ
Anteil exakt auf dem Objektrand liegender Knoten im Vergleich zur Gesamtzahl von Kno)
ten, die die Hülle der Objektapproximation darstellen. χ = f (Nr(N
)+r(N )
• fictitious-Seitenflächen f (A)
Hexaederseitenflächen, die sich innerhalb des Objekts befinden, jedoch Teil der Hülle der
Objektapproximation bei Anwendung der Fictitious-Boundary Methode darstellen; also Seitenflächen, bei denen mindestens einer der inzidenten Hexaeder wenigstens eine Seitenfläche außerhalb der Objekts enthält.
• Randseitenflächen r(A)
Hexaederseitenflächen, die die Hülle der Objektapproximation darstellen, jedoch mit ihren
vier Knoten exakt auf der Objektoberfläche liegen.
• Quotient δ
Anteil exakt auf dem Objektrand liegender Seitenflächen im Vergleich zur Gesamtzahl Seir(A)
tenflächen, die die Hülle der Objektapproximation darstellen. δ = f (A)+r(A)
)
Als wichtigstes Indiz für die Güte der Objektapproximation gilt hierbei die Anzahl der exakt auf
der Objektoberfläche liegenden Seitenflächen. Für den Testfall eines Würfels sind die vier Heuristiken in Abbildung 7.14 dargestellt. Ohne Projektion beschreiben 218 fictitious-Knoten die Hülle
der Approximation des Objekts. Zuerst wurde die Projektion innerer Knoten durchgeführt, die jedoch auf Grund der eingestellten Toleranzwerte zu keiner Änderung geführt hat. Bei der äquivalent
funktionierenden Projektion äußerer Knoten wurden 294 Knoten exakt auf die Objektoberfläche
projiziert. Dies sind genau diejenigen Knoten außerhalb des Objekts, die genau einen Nachbarknoten innerhalb des Objekts besitzen. Die Knoten, die sich in der Nähe der Würfelkanten befinden
wurden nicht projiziert, da sie keine Nachbarknoten im Inneren des Objekts haben. Diese Knoten sind jedoch Teil von Seitenflächen, deren diagonal gegenüber liegende Knoten sich innerhalb
des Objekts befinden und werden somit durch die Heuristik an Hand von Seitenflächen exakt
auf die Kanten des Würfels projiziert. Als Kandidaten für eine Projektion verbleiben die Knoten,
die sich in der Nähe der Eckpunkte des Würfels befinden, denn sie wurden durch die vorherigen
Heuristiken nicht erkannt. Die Heuristik, welche die diagonal gegenüber liegenden Knoten eines Hexaeders überprüft, erkennt und projiziert diese letzten verbliebenen 8 Knoten exakt auf die
Eckpunkte des Würfels. Damit wird das Objekt durch eine exakt randangepasste Approximation
dargestellt. Wie aus der Tabelle 7.11 ersichtlich ist, wird das Objekt nach der Projektion durch ca.
doppelt so viele Seitenflächen approximiert wie zuvor (f (A) =216 zu r(A) =384).
74
7. Resultate
Abbildung 7.14: Validierung der Projektionstechniken am Beispiel des Würfels und einem regulär unterteilten Gitter. Zur Veranschaulichung des Gitters werden jeweils zwei
Gitterschichten gezeichnet. Oben: Der Würfel und die Darstellung seiner Approximation, die durch die Fictitious-Boundary Methode erkannt wird. Unten: Die
Approximation nach Projektion äußerer Knoten, die Approximation nach Projektion an Hand von Hexaederseitenflächen, die Approximation nach Projektion an
Hand von Hexaedern.
Projektion an Testobjekt 2, reguläres Gitter
Projektionstechnik f (N ) r(N )
χ
f (A) r(A)
keine
218
0
0%
216
0
v. Innen n. Außen
218
0
0%
216
0
v. Außen n. Innen
68
294
81%
144
216
an Seitenflächen
8
378
98%
24
360
an Hexaedern
0
386 100%
0
384
δ
0%
0%
60%
94%
100%
Tabelle 7.11: Testwerte zur Funktionsweise der verschiedenen Projektionstechniken mit regulär
unterteiltem Gitter und dem Würfelobjekt.
7.5 Projektion zur Randanpassung
7.5.2
75
Projektion und Gitterdeformation
Das zuvor gezeigte Beispiel stellt einen Sonderfall dar, bei dem eine vollständige Randanpassung
nur deshalb möglich ist, weil ein reguläres Gitter und ein quaderförmiges Objekt verwendet wurde,
dessen Seiten exakt parallel zu den Seitenflächen des Gebiets liegen. Der Einsatz der Gitterdeformation verursacht jedoch auch schon bei diesem einfachen Objekt eine grundlegende Problematik.
Durch die Gitterdeformation werden Knoten in die Nähe der Objektoberfläche geschoben. Diese
Verschiebung geschieht jedoch nicht gleichmäßig, und für ein Objekt bedeutet dies, dass einzelne
Gitterschichten in der Nähe der Objektoberfläche gekrümmt werden und somit nicht mehr exakt
parallel zu den Seitenflächen des Würfels liegen. Bei der Projektion führt dies wiederum dazu,
dass zusammenhängende Schichten von Hexaederseitenflächen nicht als Gesamtheit auf eine Seite des Objekts projiziert werden können. Es entstehen Gräben in der exakten Randapproximation,
die durch fiktive Seitenflächen innerhalb des Objekts beschrieben werden (siehe Abbildung 7.15).
Abbildung 7.15: Problematik der Projektionstechniken bei der Gitterdeformation am Beispiel des
Würfels. Oben: Der Würfel mit einer Gitterschicht. Unten: Die Approximation
des Würfels nach der Projektion. Die exakt randangepasste Approximation ist
nicht geschlossen, da einzelne Gitterschichten nicht parallel zur Objektoberfläche verliefen.
Eine Möglichkeit, den Grad der Krümmung einzelner Gitterschichten zu manipulieren, ist die
Skalierung der Monitorfunktion. Wird die Distanzfunktion für Knoten innerhalb des Objekts stärker skaliert, entstehen im Inneren des Objekts größere Hexaeder, was zu einer Krümmung der
Schichten an der Objektoberfläche führt. Um den Einfluss der unterschiedlichen Skalierung der
Distanzfunktion auf die Projektion zu verdeutlichen, wurde die Monitorfunktion folgendermaßen
76
7. Resultate
definiert:
(
α · dist(x, Objekt) falls x ∈ Objekt
fmon (x) =
dist(x, Objekt)
falls x ∈
/ Objekt
(7.1)
Für die Tests wurde der Faktor α mit den Werten 1, 2, 3 und 4 definiert. Tabelle 7.12 zeigt die
ermittelten Ergebnisse.
Projektion an Testobjekt 2, deformiertes Gitter
Skalierung
f (N ) r(N )
χ
f (A) r(A)
α =1, vor Proj.
2146
0
0% 2144
0
α =1, nach Proj. 208
2396 92% 420 2210
α =2, vor Proj.
2194
0
0% 2248
0
α =2, nach Proj. 314
2140 87% 670 1781
α =3, vor Proj.
2022
0
0% 1984
0
α =3, nach Proj. 426
2044 83% 853 1624
α =4, vor Proj.
1894
0
0% 1956
0
α =4, nach Proj. 488
1909 80% 1216 1304
δ
0%
84%
0%
73%
0%
66%
0%
52%
Tabelle 7.12: Testwerte zum Einfluss der unterschiedlichen Skalierung der Monitorfunktion auf die
anschließende Projektion.
Grundsätzlich lässt sich aus den Werten der Tabelle beobachten, dass die Anzahl der Knoten und
Seitenflächen, die den Objektrand approximieren, durch die Projektion um ca. 20% zunimmt. Das
bedeutet, dass Knoten außerhalb des Objekts, die vor der Projektion keinen Rand approximiert
haben, auf den Objektrand projiziert wurden und somit das Volumen der Objektapproximation
vergrößert haben. Gleichzeitig vergrößern diese Knoten Hexaeder am Objektrand. Die Werte verdeutlichen ebenfalls, dass die Krümmung der Gitterschichten in direktem Zusammenhang mit der
Skalierung der Distanzen steht. Werden die Distanzen zu Knoten innerhalb des Objekts mit dem
gleichen Faktor multipliziert wie zu Knoten außerhalb, so ist die Krümmung gering und 92% der
Knoten, sowie 84% der Seitenflächen definieren eine exakt randangepasste Approximation des
Objekts. Werden die Distanzen zu Knoten innerhalb des Objekts mit Faktor α = 4 multipliziert,
so definieren nur noch 80% der Knoten und 52% der Seitenflächen die exakt randangepasste Approximation.
Mit einer Monitorfunktion, die auf der euklidischen Distanz beruht, lässt sich die Gitterdeformation jedoch nicht so steuern, dass die Approximation nach der Projektion zu 100% exakt
randangepasst ist, da diese nur die Größe der Hexaeder in Betracht zieht und nicht die Position
von Knoten in Relation zur Objektoberfläche. Eventuell können mit anders aufgebauten Monitorfunktionen bessere Ergebnisse ohne grundlegende Änderung der Gitterdeformationsmethode
erzielt werden, dies zu untersuchen liegt jedoch außerhalb der Möglichkeiten im Rahmen dieser
Diplomarbeit.
Als zweiter Testfall wird die Kugel untersucht, da sie im Gegensatz zum Würfel eine vollständig
gekrümmte Oberfläche besitzt. Aus den Werten der Tabelle 7.13 kann unter anderem entnommen
werden, dass die Gesamtzahl von Knoten und Seitenflächen, die die Approximation des Objektes
definieren durch die Projektion um ca. 15% steigt.
7.5 Projektion zur Randanpassung
77
Werden die Distanzen zu inneren Knoten nicht skaliert, also mit Faktor α = 1 multipliziert, so
beträgt χ 68%. Das bedeutet, die Objektapproximation wird nach der Projektion durch doppelt so
viele exakt randangepasste Knoten definiert als fictitious-Knoten. Bei den Seitenflächen verhält es
sich genau umgekehrt, der Quotient δ beträgt nur 31%, also wird die Approximation des Objektes durch halb so viele exakt auf dem Objektrand liegende Seitenflächen definiert als fictitiousSeitenflächen. Bei einem Faktor von α = 4 definieren jedoch nur noch ca. 21% der Seitenflächen
eine exakte Randapproximation, das Verhältnis ist also deutlich schlechter. Bei der Kugel wird
kein so deutlicher Trend zu einer Verschlechterung der Projektionsergebnisse mit Erhöhung von
α sichtbar. Jedoch wird, wie beim Würfel zuvor, das beste Ergebnis für die Projektion erreicht,
wenn die Distanz zu den Knoten gar nicht skaliert wird. Eine Untersuchung zur Skalierung der
Distanzen mit dem gleichen Faktor sowohl zu Knoten innerhalb als auch zu Knoten außerhalbdes objekts ergab ähnliche Ergebnisse. Jedoch werden diese Ergebnisse nicht aufgeführt, da die
Skalierung der Distanzen eine Heuristik darstellt und unter anderem von der Größe des Gebiets
abhängig ist.
Allgemein entstehen die meisten Probleme mit der exakten Randanpassung bei einem stark gekrümmten Objekt wie der Kugel gerade dort, wo die Objektoberfläche im Winkel von 45◦ zu den
Seiten des Gesamtgebiets liegt (siehe Abbildung 7.16).
Skalierung
α =1, vor Proj.
α =1, nach Proj.
α =2, vor Proj.
α =2, nach Proj.
α =3, vor Proj.
α =3, nach Proj.
α =4, vor Proj.
α =4, nach Proj.
Projektion an Testobjekt 1
f (N ) r(N )
χ
f (A)
1658
0
0% 1656
616
1283 68% 1316
1346
0
0% 1344
564
974 63% 1200
1175
0
0% 1173
432
842 66% 944
986
0
0%
984
413
717 63% 891
r(A)
0
581
0
336
0
328
0
237
δ
0%
31%
0%
21%
0%
26%
0%
21%
Tabelle 7.13: Testwerte zum Einfluss der unterschiedlichen Skalierung der Monitorfunktion auf die
anschließende Projektion.
Zusammenfassend kann festgehalten werden, dass zum einen die Skalierung der Monitorfunktion einen entscheidenden Faktor zur späteren exakten Randanpassung beiträgt. Selbst für diese
einfachen Geometrien lässt sich jedoch kein Richtwert festlegen, der eine optimale Anpassung
ermöglicht. Um dem Benutzer die größte mögliche Freiheit bei der Gittererstellung zu gewähren, sollte eine nachträgliche Änderung dieses Faktors ermöglicht werden. Dadurch könnte die
Gitterdeformation mit einer festgelegten Skalierung erfolgen und gegebenenfalls durch eine erneute Gitterdeformation mit einer angepassten Skalierung nachgebessert werden. Zum anderen
lässt sich selbst für diese einfachen Geometrien zusammen mit der Gitterdeformation keine vollständige exakte Randanpassung durchführen. Hier könnten mit unstrukturierten Gittern eventuell
bessere Ergebnisse erzielt werden.
7.5.3
Komplexe Objekte
Die zuvor untersuchten Objekte stellen einfache Geometrien dar, daher wird im folgenden Abschnitt die Projektion an komplexen Geometrien getestet. Zum einen wird das Verhalten der Pro-
78
7. Resultate
Abbildung 7.16: Problematik der Projektionstechniken bei der Gitterdeformation am Beispiel der
Kugel. Das Gitter kann schlecht an Bereiche der Objektoberfläche projiziert werde, die im Winkel von 45◦ zu den Seitenflächen des Gebietes liegen.
jektion bei Testobjekt 4, der Verschlingung, getestet. Die Verschlingung ist für eine exakte Randapproximation eine enorme Herausforderung, da sie stark gekrümmt und in sich verdreht ist.
Als zweite Geometrie wird Testobjekt 5 untersucht. Das Golfmodell bietet große Gebiete ebener
Oberflächen, daher kann eine gute Randanpassung durch die Projektion erwartet werden. Tabelle
7.14 beinhaltet die gewonnen Daten. Beide Objekte werden in einem Grobgitter bestehend aus
21×8×8, also 1344 Hexaedern positioniert, wobei die vierte und feinste Hierarchieebene aus ca.
700000 Hexaedern besteht. Für beide Objekte wurde zur Skalierung des Distanzfeldes der gleiche Faktor, sowohl für die Distanzen zu inneren als auch für die Distanzen zu äußeren Knoten
verwendet.
Projektion an Testobjekt 1
Objekt
f (N ) r(N )
χ
Verschlingung vor Proj.
8891
0
0%
Verschlingung nach Proj. 3240
8016 71%
Golfmodell vor Proj.
14896
0
0%
Golfmodell nach Proj.
2826 13503 83%
f (A)
8791
7896
14865
6138
r(A)
0
3461
0
10401
δ
0%
30%
0%
63%
Tabelle 7.14: Testwerte zum Einfluss der unterschiedlichen Skalierung der Monitorfunktion auf die
anschließende Projektion.
Bei der Verschlingung definieren nach der Projektion 30% der Seitenflächen die exakt randangepasste Approximation und 71% der Knoten. Beim Golfmodell liegen nach der Projektion 82% der
Knoten direkt auf der Objektoberfläche und 63% der Seitenflächen. Interessant ist die Tatsache,
dass die Anzahl der exakt randangepassten Knoten bei beiden Objekten 90% der Anzahl von Knoten darstellt, die vor der Projektion die Objektapproximation definiert haben. Weil diese Zahlen
sehr abstrakt sind, werden die Ergebnisse in Abbildung 7.17 verdeutlicht.
Ohne Projektion werden die einzelnen Objektelemente bei der Verschlingung an ihren schmalen
Stellen teilweise gar nicht durch Seitenflächen approximiert. Die Fictitious-Boundary Methode
„sieht“ an diesen Stellen Lücken im Objekt, obwohl die Objektoberfläche dort geschlossen ist.
Diese Lücken werden durch die Projektion von Knoten geschlossen. Auch an den breiten Stellen
7.5 Projektion zur Randanpassung
79
Abbildung 7.17: Darstellung der Projektionstechniken an komplexen Objekten. Oben: Verschlingung vor und nach der Projektion. Das Objekt ist nach der Projektion deutlich
besser approximiert. Unten: Golfmodell nach der Projektion. Weite Gebiete der
Objektapproximation sind exakt randangepasst.
der Objektelemente werden durch die Projektion Rundungen sichtbar, die durch die FictitiousBoundary Methode nicht erfasst werden. Das Gesamtvolumen der Objektapproximation ist nach
der Projektion deutlich größer. Beim Golfmodell sind wiederum große zusammenhängende Gebiete exakt randangepasster Approximationen zu sehen. Dennoch sind in dieser exakten Randapproximation die zuvor beschriebenen charakteristischen Gräben zu sehen, die sich mit den vorhandenen Techniken nicht vollständig vermeiden lassen. Insgesamt kann somit auch für diese
komplexen Objekte eine sichtbare Verbesserung der Objektapproximation durch die Projektionstechniken erreicht werden. Ob sich dadurch jedoch auch die Qualität der numerischen Lösung
verbessert, wird im folgenden Abschnitt untersucht.
7.5.4
DFG-Benchmark
Um zu testen, ob sich die Randprojektion tatsächlich auf die numerischen Ergebnisse auswirkt,
wurde als Testszenario der DFG-Benchmark ausgewählt. Der DFG–Benchmark „Laminar flow
around a cylinder“ wurde im Rahmen des Schwerpunktprogramms „Flow simulation with highperformance computers“ von Schäfer u. Turek [1996] definiert. Dafür wird ein Zylinder festgelegter Dimension in einem exakt definierten Gebiet platziert (siehe Abbildung 7.18).
80
7. Resultate
Abbildung 7.18: Gebietsdefinition für den DFG-Benchmark.
Üblicherweise werden so genannte Auftriebs- und Widerstandsbeiwerte (engl. lift, drag) sowie
eine Druckdifferenz zwischen zwei festgelegten Punkten auf der Oberfläche des Zylinders verglichen. Durch den Einsatz der Ficticious-Boundary Methode ist die Berechnung der Widerstandsbeiwerte technisch sehr aufwendig und bisher wurde dazu für die dritte Dimension kein Verfahren
eingeführt. Aus diesem Grund wird ein visueller Vergleich der Geschwindigkeits- und Druckfelder für drei Lösungen dargestellt, die auf verschieden erstellten Gittern basieren. Die ersten beiden
Gitter wurden mit Hilfe der Software I N G RID 3DD EFORM erstellt. Für Lösung 1 wurde das Gitter
nur mit der Gitterdeformationsmethode erstellt. Für Lösung 2 wurde eine nachträgliche Projektion von Gitterknoten auf den Objektrand durchgeführt. Für die Referenzlösung wurde manuell ein
unstrukturiertes Gitter mit exakter Randanpassung generiert. Die Gitter für die drei verschiedenen
Lösungen sind in Abbildung 7.19 im Bereich des Zylinders dargestellt.
Abbildung 7.19: Drei Gitter für den DFG-Benchmark in der Nähe des Zylinders. Links: Gitter für
Lösung 1. Mitte: Gitter für Lösung 2. Rechts: Gitter für Referenzlösung.
Zum Vergleich der numerischen Qualität der jeweiligen Gitter wurde eine instationäre (zeitabhängige) Simulation mit den gleichen Parametern durchgeführt, welche einer Reynoldszahl von
7.5 Projektion zur Randanpassung
81
Re = 100 entsprechen. Weil der Zylinder nicht exakt mittig innerhalb des Gebiets positioniert
ist, entsteht nach einer gewissen Zeit eine deutlich sichtbare Schwingung in der Strömung. Wie
in Abbildung 7.20 zu sehen ist, ist der jeweilige Unterschied im Geschwindigkeitsfeld nach 18
Sekunden Simulationszeit sehr gering. Die Unterschiede im hinteren Bereich der Strömung nah
am Ausflussrand sind vermutlich durch die unterschiedliche Feinheit der Gitter in diesem Bereich
entstanden. Dennoch lässt sich eine Tendenz im Bereich des Zylinders erkennen, bei der Lösung 2
der Referenzlösung ähnlicher ist als die Lösung 1. Weitere Unterschiede im Geschwindigkeitsfeld
sieht man auch in dem Bereich oberhalb des Zylinders, wo es auf Grund der Gebietsverengung zu
höheren Geschwindigkeiten kommt. Das Stromlinienfeld ist bei Lösung 2 mit der Randprojektion weit ähnlicher als bei Lösung 1 ohne die Randprojektion. Eine mögliche Erklärung hierfür ist,
dass ohne Randprojektion das von der FB-Methode ’gesehene’ Objekt ein geringeres Volumen besitzt als das tatsächliche Objekt. Dadurch entsteht mehr Volumen zwischen dem Objekt und dem
Gebietsrand, was in einer geringeren Geschwindigkeit resultiert. Das Druckfeld der drei Lösungen zeigt ebenfalls nur sehr geringe Unterschiede (siehe Abbildung 7.21). In der zweiten Lösung
sind Artefakte am Objektrand sichtbar, die vermutlich auf Grund der nicht vollständigen exakten
Randanpassung entstanden sind, jedoch keinen Einfluss auf die Qualität der Lösung ausüben.
Abbildung 7.20: Vergleich der Strömungsgeschwindigkeiten im DFG-Benchmark. Oben: Lösung
1, ohne Projektion auf den Objektrand. Mitte: Lösung 2, mit Projektion auf den
Objektrand. Unten: Referenzlösung mit einem Gitter, welches manuell an den
Rand angepasst wurde.
Insgesamt lässt sich festhalten, dass mit den von I N G RID 3DD EFORM erstellten Gittern bereits
durch die Fictitious-Boundary Methode eine Lösung berechnet wird, die sich kaum von der Referenzlösung unterscheidet. Eine nachträgliche Projektion kann jedoch die Qualität der Lösung
verbessern. Daher sollte an einer Optimierung dieser Methode gearbeitet werden, so dass eine
weitestgehend vollständige Randanpassung ermöglicht wird.
82
7. Resultate
Abbildung 7.21: Vergleich des Druckfeldes im DFG-Benchmark. Oben: Lösung 1, ohne Projektion
auf den Objektrand. Mitte: Lösung 2, mit Projektion auf den Objektrand. Unten:
Referenzlösung mit einem Gitter, welches manuell an den Rand angepasst wurde.
7.6
Bewertung
Nachfolgend sollen die erzielten Ergebnisse der Diplomarbeit diskutiert werden. Dazu werden
zunächst die Methoden, die im Rahmen dieser Arbeit verwendet wurden, in dem globalen Kontext der gesamten Simulation betrachtet. Anschließend soll der Einsatz der entwickelten Software
I N G RID 3DD EFORM als Hilfswerkzeug zur numerischen Strömungssimulation diskutiert werden.
Abschließend wird ein Ergebnis präsentiert, welches erst durch diese Software möglich wurde.
7.6.1
Eingesetzte Methoden
Im folgenden Abschnitt werden die Ergebnisse der einzelnen Methoden und ihre Beziehungen
untereinander noch einmal herausgestellt.
Spezialbaum zur Punktklassifizierung
Ein zentrales Element der verwendeten Methoden ist der entwickelte Spezialbaum als Suchdatenstruktur. Für das Problem der Punktklassifizierung garantiert der Spezialbaum eine Laufzeit von
O(N log M ). Bei den experimentellen Untersuchungen sank jedoch die Zeit pro Knoten sogar
mit Erhöhung der Knotenzahl, was den Spezialbaum somit mit einer Laufzeit von nahezu O(N )
optimal macht. Sein Einsatz minimiert dabei die Anzahl der Dreiecke für die ein Schnitttest durchgeführt werden muss fast unabhängig von der Größe und Beschaffenheit der Oberflächentriangulierung.
Dennoch ist eine weitere Optimierung durch eine bessere Balancierung des Baumes vorstellbar.
Bei der Unterteilung eines Baumknotens wird bei dem vorgestellten Verfahren sein Intervall exakt halbiert, ohne die Dreiecksmengen in die Unterteilung mit einzubeziehen, die er tatsächlich
enthält. Es müsste untersucht werden, ob sich die Aufteilung nach anderen Kriterien positiv auf
die Laufzeit auswirkt. Zum Beispiel könnte eine Unterteilung des Knotens nach dem Median der
Dreieckskoordinaten aller Dreiecke erfolgen, die in dem Knoten gespeichert sind. Diese Art der
7.6 Bewertung
83
Unterteilung würde zwar mehr Rechenzeit beim Aufbau des Baumes erfordern, jedoch wären die
Dreiecksmengen gleichmäßiger auf seine Blätter aufgeteilt.
Der Einsatz des Spezialbaumes ist sowohl zur Bestimmung des Initialbandes für die Fast Marching Methode als auch für die Projektionstechniken nicht optimal, da seine Funktionsweise ganz
auf die Klassifizierung einzelner Punkte spezialisiert wurde. Soll mit Hilfe des Spezialbaums eine
minimale Dreiecksmenge bestimmt werden, die sich zwischen zwei Knoten einer Kante befindet,
so verzweigt sich die Tiefensuche im Spezialbaum bei langen Kanten sehr stark und liefert große
Dreiecksmengen. Für diesen Fall wäre ein normaler Octree vermutlich die bessere Lösung. Jedoch
ist das Ziel der Gittererstellung ein Gitter größtmöglicher Feinheit, also mit kleinstmöglichen
Hexaedern und damit mit kurzen Kanten. Wächst im Laufe der Gittererstellung die Anzahl der
Knoten, so wird gleichzeitig die Länge der Kanten geringer und damit sinkt die Verzweigung
der Tiefensuche und die Anzahl der Dreiecke, die durch sie bestimmt wird. Die Laufzeit zur
Bestimmung des Initialbandes für die Fast Marching Methode sinkt ab einer gewissen Gittergröße
sogar unter die Laufzeit der Verbreitungsphase, die mit einer Laufzeit von O(N log N ) mit größer
werdendem N pro Knoten sogar weiter steigt. Damit ist der Einsatz des Spezialbaumes auch für
die anderen Methoden akzeptabel, da er ab einer gewissen Knotenzahl, bzw. Kantenlänge die
nahezu optimale Laufzeit erreicht.
Distanzberechnung mit Fast Marching
Die Berechnung des Distanzfeldes mit Hilfe der Fast Marching Methode ist mit einer Gesamtlaufzeit von O(N log N ) fast optimal und dabei unabhängig vor der verwendeten Objektrepräsentation. Wird die so berechnete approximative Distanz als Monitorfunktion für die Gitterdeformation
verwendet, so führen die Ungenauigkeiten im Distanzfeld zu vernachlässigbar geringen Unterschieden in der Gitterdeformation. Erfahrungsgemäß ist die Fast Marching Methode sehr robust
und lässt sich auf einfache Weise an andere Monitorfunktionen (anstatt der euklidischen Distanz)
anpassen, die zu anderen Ergebnissen der Gitterdeformationen führen können. Vor allem in Bezug
auf die nachträgliche Randanpassung sind Untersuchungen mit anderen Monitorfunktionen zu
empfehlen.
Gitterdeformation
Die Gitterdeformationsmethode funktioniert mit der vorgestellten Methode zur Bestimmung
der Monitorfunktion für beliebige dreidimensionale Oberflächentriangulierungen unabhängig
vom Genus oder der Anzahl der Objekte. Durch den Einsatz der Mehrgitterdeformation kann
die Gitterqualität im Vergleich zum bisherigen Verfahren deutlich verbessert werden. Mit Hilfe
der Fictitious-Boundary Methode kann somit eine Strömungssimulation für beliebige Objekte durchgeführt werden. Beim Einsatz der Gitterdeformation werden Objektdetails durch die
Fictitious-Boundary Methode erst „gesehen“, wenn das Gitter fein genug ist und sich ganze
Hexaederseitenflächen in ihrem Inneren befinden. Dadurch entstehen keine Probleme bei der
Gittererstellung mit kleinen Details, die nicht bereits im Grobgitter erfasst wurden. Beim Golfmodell verursachen zum Beispiel die Details wie die Radkästen oder die Außenspiegel keine
Einschränkungen für die Gittererstellung. Die Gitterqualität verschlechtert sich somit nicht durch
Verfeinerung des Gitters, was bei exakt randangepassten Gittern vorkommen kann. Die mit dieser
Methode einher gehende Ungenauigkeit kann dabei noch durch den Einsatz der Projektionstechniken gemindert werden. Einer der Vorteile der Gitterdeformation ist die Tatsache, dass kein exakt
randangepasstes Grobgitter in einem Vorverarbeitungsschritt von Hand erstellt werden muss. Ein
Nachteil ist die Tatsache, dass sich auch innerhalb des Objektes Hexaeder befinden. Diese fließen
zwar nicht in die Berechnung ein (sind also unnötig), belegen jedoch Speicherplatz. Insgesamt
wird die Gitterdeformation in Kombination mit der Fictitious-Boundary Methode als eine sehr
84
7. Resultate
gute Lösung für die Gittererstellung eingeschätzt.
Projektionstechniken
Den Einfluss der Projektionstechniken auf die Qualität der Lösung für komplexe Objekte zu bestimmen, ist auf Grund fehlender Referenzwerte ohne sehr aufwendige Analysen nicht einfach.
Selbst für einen standardisierten Benchmark ist dies schwer durchzuführen. Dennoch zeigen die
Ergebnisse, dass bei Objekten wie dem Golf große Gebiete der Objektapproximation exakt randangepasst werden können. Die Projektionstechniken sind in diesem Fall eher als prototypisch
anzusehen und bieten viele Verbesserungsmöglichkeiten. Zum einen ist die Laufzeit im Vergleich
zu den anderen Methoden um ein Vielfaches langsamer, da sehr viele Projektionsrichtungen getestet werden und dazu sehr viele Schnitttests mit der Oberflächentriangulierung nötig sind. Zum
anderen werden die Ergebnisse der Projektion schlechter, wenn das Gitter feiner wird. Bei feineren
Gittern entstehen mehr Überschneidungen zwischen Gitterschichten und der Objektoberfläche. Es
können also schlechter einzelne Gitterschichten komplett auf die Objektoberfläche projiziert werden, um eine großflächig exakte Randanpassung zu bilden.
Es bietet sich an dieser Stelle jedoch die Möglichkeit, die Mehrgitterdeformation mit den Projektionstechniken zu kombinieren. Beim Einsatz der Mehrgitterdeformation ist die Änderung des
Gitters durch die Gitterdeformation beispielsweise auf Ebene 4 erfahrungsgemäß minimal, wenn
es zuvor auf den Ebenen 1 bis 3 mit den gleichen Parametern deformiert wurde. Es kann also auf
Ebene 3 eine Projektion durchgeführt und das Gitter anschließend verfeinert werden, ohne eine
Deformation auf Ebene 4 durchzuführen. Dadurch bleiben die exakt randangepassten Seitenflächen auch nach ihrer Unterteilung durch erneute Projektion exakt randangepasst. Diese Vorgehensweise ist jedoch sehr heuristisch und muss nicht unbedingt zu besseren Ergebnissen führen.
Eine weniger heuristische Idee ist aus der Beobachtung heraus entstanden, dass Gitterschichten,
die die Objektoberfläche schneiden, die zuvor beschriebenen Gräben in der exakten Randanpassung entstehen lassen. Um diese Gräben verschwinden zu lassen, müssten ganze Gitterschichten bewegt werden, um die Flächen mit der exakten Randanpassung zu ebnen. Zu diesem
Zweck können eventuell die aktiven Konturen (engl. snakes) verwendet werden, die das Gitter in
der Nähe der Objektoberfläche verschieben und dadurch Hexaederseitenflächen genauer an die
Objektoberfläche anpassen könnten.
Zusammenfassung
Insgesamt bieten die vorgestellten Techniken eine gute Möglichkeit zur Erstellung von Gittern, die
für eine Strömungssimulation genutzt werden können. Die eingesetzten Methoden nehmen dabei
teilweise einen Bruchteil der Zeit ein, die von den bestehenden Methoden des F EAT F LOW-Pakets
(Gitterdeformation und Navier-Stokes Löser) gebraucht wird. Tabelle 7.15 zeigt die ermittelten
Laufzeiten für die einzelnen Methoden auf den jeweiligen Ebenen der erstellten Mehrgitterhierarchie. Zur Ermittlung dieser Zeiten wurde eine Gitterhierarchie mit vier Ebenen erstellt, wobei
jede Hierarchieebene einmal deformiert wurde. Die Zeit zum Aufbau des Spezialbaumes wird nur
bei Gitterebene 1 aufgelistet, da der Spezialbaum nur einmal am Anfang der Prozedur aufgebaut
werden muss. Die Laufzeit für die Gitterunterteilung ist diejenige Zeit, die für die reguläre Unterteilung einer Hierarchieebene gebraucht wird, das Grobgitter muss dabei nicht unterteilt werden.
Die Projektion wird nur auf der letzten Hierarchieebene einmal durchgeführt. Das Ergebnis der
Strömungssimulation ist in Abbildung 7.22 und 7.23 dargestellt, die Skala reicht dabei von rot für
die maximale Geschwindigkeit zu blau für Stillstand.
Die Punktklassifizierung und die Berechnung der Monitorfunktion dienen als Vorverarbeitungsschritte für die Gitterdeformationsmethode. Die Gesamtlaufzeit für einen Gitterdeformationsschritt wird also aus der Summe der einzelnen Methoden bestimmt. Für die Ebenen 1 bis 4 nehmen
7.6 Bewertung
85
Laufzeiten beim Golfmodell im Benchmarkkanal
Hierarchieebene (N )
1 (1782) 2 (12427) 3 (92565) 4 (714025)
Spezialbaum (Aufbau) 5,36E+3
Punktklassifizierung
<1
7
44
306
Fast Marching (Initial,)
57
285
7,69E+3
1,48E+4
Fast Marching (Verbr,)
2
13
114
1,35E+3
Gitterdeformation
432
3,38E+3
3,05E+4
2,64E+5
Gitterunterteilung
1,10E+3
7,34E+3
5,77E+4
Projektion
5,69E+5
Löser (stationär)
5,72E+6
Tabelle 7.15: Zusammenfassung der Laufzeiten für das Golfmodell im Benchmarkkanal und einem
aus 21×8×8 Hexaedern bestehendem Grobgitter.
dabei die Punktklassifizierung und die Berechnung der Monitorfunktion 12%, 8%, 20% und 6%
der Gesamtlaufzeit für die Gitterdeformation ein. Die relativ zeitintensive Unterteilung der Gitter,
begründet im Aufbau der Gitterdatenstruktur, nimmt dennoch auf jeder Hierarchieebene nur ca.
20%-30% der Laufzeit für die Gitterdeformation ein. Die Projektion ist wie zuvor beschrieben
sehr langsam und dauert auf der letzten Hierarchieebene in etwa doppelt so lang wie die Gitterdeformation und länger als die Summe aller vorhergehenden Methoden. Jedoch beträgt die Laufzeit
aller Methoden, inklusive der Projektion, immer noch nur 17% der Laufzeit für eine stationäre
Lösung der Strömung, wobei üblicherweise eine instationäre Lösung berechnet wird, die für diese
Gittergröße ein vielfaches dieser Laufzeit (mehrere Tage) dauern kann.
Somit machen die eingesetzten Methoden zur Gittergenerierung, obwohl noch nicht vollständig
optimiert, bereits nur einen kleinen Bruchteil der Gesamtlaufzeit für eine Strömungssimulation
aus. Insgesamt kann der Einsatz von Parallelisierungstechniken im Zusammenhang mit Mehrkernprozessoren weitere Geschwindigkeitsgewinne mit sich bringen.
Abbildung 7.22: Strömungssimulation für das Golfmodell im Benchmarkkanal. Darstellung des
Geschwindigkeits- und des Druckfeldes von der Seite.
86
7. Resultate
Abbildung 7.23: Strömungssimulation für das Golfmodell im Benchmarkkanal. Darstellung des
Geschwindigkeits- und des Druckfeldes von oben.
7.6.2
I N G RID 3DD EFORM
Nachfolgend werden Vor- und Nachteile der erstellte Software I N G RID 3DD EFORM zur Gittergenerierung aufgezeigt. Zuerst werden einige Nachteile dargestellt:
• Erhöhter Speicherbedarf
Sowohl I N G RID 3DD EFORM als auch das F EAT F LOW-Paket bauen auf eigenen Datenstrukturen auf, die jedoch eine große Menge redundanter Daten enthalten. Dadurch geht
viel Speicherplatz verloren und die maximale Anzahl von Hexaedern die momentan in
I N G RID 3DD EFORM verarbeitet werden kann beträgt ca. 700000, wobei ca. 2 GB Speicherplatz verbraucht wird. Eine Anpassung der Datenstrukturen könnte zusammen mit der
Verwendung eines gemeinsamen Speicherbereichs einen großen Speicherplatzgewinn erlauben. Auch beim Export der Gitter ist der unterschiedliche Aufbau der Datenstrukturen hinderlich. Um eine vollständige Kompatibilität zu erreichen, ist bisher ein Austausch großer
Datenmengen erforderlich. Wäre der Aufbau der Datenstrukturen gleich, so könnten diese
Datenmengen drastisch reduziert werden.
• Ungenauigkeit der Objektapproximation
Durch den Einsatz der Gitterdeformation und eines strukturierten Hexaedergitters ist es mit
den bestehenden Techniken selbst für einfache Geometrien nicht möglich, eine vollständige
Randanpassung vorzunehmen. Ein Einsatz der Fictitious-Boundary Methode bleibt erforderlich. Dadurch entstehen Ungenauigkeiten in der Objektapproximation, die zu zusätzlichen numerischen Ungenauigkeiten in der Lösung der Strömungssimulation führen können.
Eine Verbesserung der Fictitious-Boundary Methode, bei der Hexaeder, die die Objektoberfläche schneiden, gesondert behandelt werden, könnte in diesem Fall die numerische Ungenauigkeit mindern. Dies würde jedoch eine Erweiterung der Methode der Finiten Elemente
erfordern.
• Keine lokale Gitterverbesserung
Durch die verwendeten Methoden ist es bisher nicht möglich, Operatoren zu verwenden,
die nur lokal auf manuell festgelegte Bereiche wirken. Manchmal wäre es zum Beispiel einfacher, eine manuelle Verschiebung von Knoten vorzunehmen. Die eingesetzten Techniken
wirken direkt auf das gesamte Gitter, was nicht immer erwünscht ist.
7.6 Bewertung
87
Nachfolgend werden die Vorteile der Software dargestellt, denn mit ihrer Hilfe können Gitter
erstellt werden, die Strömungssimulationen für nahezu beliebige dreidimensionale Objekte erlauben. Des Weiteren existieren Programmfunktionen, die den Prozess der Gittererstellung relativ
komfortabel gestalten.
• Interaktivität
Alle eingesetzten Techniken können interaktiv gesteuert werden. Dies erlaubt Korrekturen
und Nachbesserungen im Prozess der Gittererstellung. Die Gitterdeformation kann durch die
Anpassung verschiedener Parameter in einem aus mehreren Schritten bestehenden Prozess
angepasst werden, um zu einem besseren Ergebnis zu führen. Ebenso kann eine erfolgte
Projektion, zum Beispiel durch die Nutzung von Glättungsoperatoren, wieder weitestgehend
rückgängig gemacht werden.
• Kontrolle
Durch visuelle und computergestützte Kontrollen kann das Gitter in jedem Schritt auf seine
Tauglichkeit für eine Simulation überprüft werden.
• Speicher- und Ladefunktionen
Die Möglichkeit, ein erstelltes Gitter zu speichern und wieder zu laden, kann die Gittererstellung deutlich vereinfachen. Falls sich ein Gitter als untauglich erweist, kann die Gittererstellung an einem vorher gespeicherten Zustand wieder aufgenommen werden.
• Kompatibilität
Die erstellten Gitter sind vollkommen kompatibel zu jeder Applikation die auf den
F EAT F LOW-Paketen basieren und damit vielfach einsetzbar.
• Erweiterbarkeit
Die Software bietet eine Umgebung zur Integration neuer Methoden und Verfahren, die
gleichzeitig auf Grund der Kontrollmechanismen relativ komfortabel getestet werden können. Zum Beispiel können auf einfache Weise unterschiedliche Monitorfunktionen definiert
werden, die nicht auf der euklidischen Distanz zur Objektoberfläche beruhen.
7.6.3
Erweiterte Visualisierung für die DFG
Im Rahmen der Arbeit an dieser Software wurde eine Strömungssimulation an Testobjekt 6 durchgeführt. Die mit Hilfe der Software I N G RID 3DD EFORM berechnete instationäre Strömungssimulation wurde unter Einsatz diverser externer Programme visualisiert und wird in einem Kalender
der Deutschen Forschungsgemeinschaft (DFG1 ) erscheinen. Berechnet wurde die Simulation auf
einem Gitter mit ca. 700000 Hexaedern, es wurden also lineare Gleichungssysteme mit ca. sieben
Millionen Unbekannten gelöst. Das Ergebnis wird in Abbildung 7.24 dargestellt und zeigt eine
weiter gehende Möglichkeit zur Visualisierung der in I N G RID 3DD EFORM erstellten Datenmengen. Gleichzeitig verdeutlicht es das Potential dieser Software zur Berechnung von Strömungssimulationen um nahezu beliebig komplexe dreidimensionale Objekte.
1
Informationen zur DFG sind unter http://www.dfg.de zu finden.
88
7. Resultate
Abbildung 7.24: Bild für den DFG Kalender. Zu sehen ist eine gerenderte Darstellung der beiden Objekte mit Partikelverfolgung und zwei Schnittebenen des simulierten Geschwindigkeitsfeldes. Der kleine Bildausschnitt zeigt zwei Schichten des erstellten Gitters und die Objekte als Oberflächentriangulationen.
89
Kapitel 8
Ausblick
Das folgende Kapitel soll Ideen für eine mögliche Weiterentwicklung der Software I N G RID 3DD EFORM skizzieren. Es wird zuerst eine Reihe von Optimierungen der bestehenden
Techniken dargestellt, bevor mögliche ein paar Ideen für neue Verfahren vorgestellt werden, die
zu besseren Ergebnissen führen können.
8.1
Optimierungen
Ein wichtiger Schritt in der Weiterentwicklung der Software ist die Optimierung der verwendeten
Methoden. Einige Ideen zur Verbesserung der einzelnen Methoden wurden bereits in Kapitel
7.6 vorgestellt. Von den nachfolgend vorgestellten Vorschlägen zur Optimierung sind einige
essentiell, wohingegen andere eine eher untergeordnete Rolle spielen. Die Reihenfolge der Vorschläge entspricht ihrer Priorität für eine Integration in die Software. Die Priorität basiert auf den
Erfahrungen, die in der Entwicklungszeit von I N G RID 3DD EFORM gesammelt wurden, und stellt
im Grunde einen Plan für die Weiterentwicklung dar.
Datenstruktur
Zuerst sollte die Gitterdatenstruktur der Software an die von F EAT F LOW angepasst werden.
Beide Datenstrukturen parallel zu verwalten, ist sehr speicherintensiv und im Grunde unnötig. Ein
Manko der aktuellen Datenstruktur in I N G RID 3DD EFORM besteht in der eher langsamen Unterteilung einer Hierarchieebene und ein anderes entsteht durch die notwendigen Konvertierungen
für eine Kompatibilität mit der F EAT F LOW Datenstruktur. Andererseits bietet die Datenstruktur
von F EAT F LOW nicht alle Funktionen, die in I N G RID 3DD EFORM verwendet werden. Es bietet
sich daher eine Kombination beider Datenstrukturen an, die auf der F EAT F LOW Datenstruktur
basiert und gleichzeitig die grundlegende Funktionalität der bisherigen Datenstruktur von I N G RID 3DD EFORM erhält. Weiterhin sollte eine Kompatibilität zu den Softwarepaketen FEAST
und F EAT F LOW 2 gewährleistet werden, die am Lehrstuhl für Angewandte Mathematik und
Numerik beim Fachbereich Mathematik an der Universität Dortmund entwickelt werden.
Fictitious-Boundary Methode
Auf Grund der Erfahrungen, die im Laufe dieser Diplomarbeit gesammelt wurden, bietet die
Fictitious-Boundary Methode sehr viele Vorteile und Freiheiten bei der Gittererstellung. Ein vollkommener Verzicht auf diese Methode kann nur mit langjähriger Forschungsarbeit erreicht werden. Daher wäre eine Verbesserung der numerischen Genauigkeit dieser Methode ein wichtiges
90
8. Ausblick
Kriterium für qualitativ wertvolle Ergebnisse.
Dazu müssen diejenigen Hexaeder gesondert behandelt werden, die trotz der Projektionstechniken
durch die Objektoberfläche geschnitten werden. Eine Möglichkeit würde hybride Gitter erfordern,
bei denen die Hexaeder entlang ihrer Schnittfläche mit der Objektoberfläche durch andere Gitterelemente wie zum Beispiel Tetraeder unterteilt werden würden. Die so neu erstellten Tetraeder
könnten sich besser exakt an die Objektoberfläche anpassen lassen. Eine andere Möglichkeit
besteht in der Anpassung der Methode der Finiten Elemente, bei der die Schnittfläche mit der
Objektoberfläche innerhalb der Hexaeder möglichst genau approximiert werden müsste. In einem
Großteil der entstehenden Problemfälle würde es zum Beispiel reichen, eine zusätzliche diagonale
Seitenfläche in den Hexaedern zu definieren, um eine bessere Approximation zu erreichen.
Mehrgitteralgorithmus
Die Gitterdeformationsmethode wird ab einer Gittergröße von ca. 300000 Knoten deutlich langsamer als die restlichen verwendeten Methoden zur Gittererstellung. Trotz des Einsatzes der
Mehrgitterdeformation, bei der auf den feineren Gittern die Auswirkung eines weiteren Gitterdeformationsschrittes minimal ist, müssen große lineare Gleichungssysteme aufgestellt und gelöst
werden. Ein Einsatz des Mehrgitteralgorithmus zur schnelleren Lösung dieser Gleichungssysteme
ist daher sehr zu empfehlen.
Interaktion mit allen Hierarchieebenen
Momentan ist eine Interaktion nur mit der aktuell feinsten Hierarchieebene möglich. Zu Entwicklungszwecken bietet es sich jedoch an, eine Interaktion mit den vorherigen Hierarchieebenen zu
ermöglichen. Zumindest die Visualisierung aller Hierarchieebenen sollte auf einfache Weise möglich sein. Für eine Änderung der Gitterpositionen auf den gröberen Hierarchieebenen müsste eine
entsprechende Translation für die Positionen der Gitterknoten auf den feineren Hierarchieebenen
entwickelt werden.
Datenstruktur für Triangulierung
Der Spezialbaum ist bisher nur auf eine effiziente Punktklassifizierung ausgelegt. Für andere
Methoden, zum Beispiel eine Kollisionserkennung bei mehreren sich bewegenden Objekten, bieten sich andere Hüllkörperdatenstrukturen an, die für diese Art von Problemen spezifiziert sind.
Eine Erweiterung um eine solche Datenstruktur wird in naher Zukunft notwendig sein. Eventuell
kann mit einer solchen Datenstruktur die Initialphase der Fast Marching Methode ebenso wie die
Methoden zur Projektion beschleunigt werden.
Unterschiedliche Monitorfunktionen
Für die Qualität der Gitterdeformation spielt die Art der Montorfunktion eine entscheidende Rolle,
daher können verschiedene Arten von Monitorfunktionen in die Software integriert werden, um
dem Benutzer eine Auswahl verschiedener Möglichkeiten zu bieten, die Gitterdeformation beeinflussen zu können. Anstatt der Euklidischen- kann zum Beispiel die Maximum-Metrik als Monitorfunktion verwendet werden. In Kapitel 7.5.2 wurde die Problematik der Gitterdeformation mit
einer auf der Euklidischen Distanz beruhenden Monitorfunktion für das Beispiel des Würfels dargestellt. Mit Hilfe der Maximum-Metrik als Monitorfunktion, für deren Berechnung sich die Fast
Marching Methode genauso gut eignet, lässt sich ein Gitter so deformieren, dass nachträglich eine
vollständige exakte Randanpassung durch die Projektion möglich wird (siehe Abbildung 8.1). Der
Parameter α für die Skalierung der Monitorfunktion zu inneren Knoten muss dazu auf den Wert
α = 1.5 eingestellt werden.
8.2 Erweiterte Möglichkeiten zur Verbesserung der Gittererzeugung
91
Abbildung 8.1: Beispiel für Gitterdeformation und Projektion mit Maximum-Metrik als Monitorfunktion. Links: Darstellung der Monitorfunktion aus der Maximum-Metrik. Mitte: Darstellung des deformierten Gitters. Rechts: Darstellung des deformierten
Gitters und der exakt an die Objektoberfläche angepassten Approximation.
8.2
Erweiterte Möglichkeiten zur Verbesserung der Gittererzeugung
Der folgende Abschnitt beschreibt drei Beispiele für eine mögliche Entwicklung neuer Methoden,
die bei der Gittererstellung in einem geringeren Randapproximationsfehler resultieren können,
also eine möglichst vollständige exakt randangepasste Objektapproximation zum Ziel haben.
Gitterdeformation
Die eingesetzte Methode zur Gitterdeformation beruht auf einer vorgegebenen Zielfunktion
(Monitorfunktion) für die Größe der Hexaeder. Es ist, wie bereits beschrieben, möglich, mit
unterschiedlichen Monitorfunktionen zu arbeiten und somit die Gitterdeformation zu steuern.
Würde die Gitterdeformationsmethode so angepasst werden, dass sie zusätzlich zur Hexaedergröße, ihre Lage und Qualität berücksichtigt, so könnte dies zu Gittern führen, die sich besser an die
Objektoberfläche anpassen lassen.
NURBS
Eine Erweiterung um die von Hein [2007] entwickelten Methoden, die auf einer Beschreibung
der Objektoberfläche mit NURBS basiert, ist möglich. Durch NURBS definierte Objekte haben
den Vorteil, dass sie gekrümmte Oberflächen exakt definieren, im Gegensatz zu den Oberflächentriangulierungen, mit deren Hilfe nur eine Approximation möglich ist. Die Approximation
kann zwar nahezu beliebig genau werden, bleibt jedoch eine Approximation. Ein weiterer Vorteil
der Beschreibung durch NURBS ist, dass sie per Definition bereits eine Parametrisierung bieten,
was sich für einige Methoden als vorteilhaft erweisen könnte. Es ist sogar eine Kombination aus
NURBS und Oberflächentriangulierung vorstellbar, die auf den ersten Gitterebenen die schnellen
Methoden der Oberflächentriangulierung nutzen und im letzten Schritt auf die langsameren aber
genaueren, auf NURBS basierenden Methoden wechseln.
Spezielle Geometrien
Es existieren spezielle Objekte, für die besondere Techniken entwickelt werden können, die zu
besseren Ergebnissen für die Approximation der Objekte führen können. Soll eine Strömung für
eine auf dem Wasser schwimmende Ragattasegelyacht simuliert werden, so erfüllt das Modell
92
8. Ausblick
dieser Yacht gleich zwei Besonderheiten, aus denen Vorteile gewonnen werden können. Die
Abbildungen 8.2 und 8.3 zeigen das berechnete Druck- sowie Geschwindigkeitsfeld für eine
stationäre Simulation um ein selbst erstelltes Modell einer Ragattasegelyacht mit so genanntem
Kippkiel zu ihrer Stabilisierung.
Abbildung 8.2: Darstellung des berechneten Druckfeldes für das Yachtmodell. Links: Darstellung
des Druckfeldes einer Gitterschicht durch das Objekt. Rechts: Darstellung des
Druckfeldes an einem Flügel der so genannten Kielbombe.
Abbildung 8.3: Darstellung des berechneten Geschwindigkeitsfeldes für das Modell einer Ragattasegelyacht. Links: Darstellung zweier Gitterschichten und einem transparenten
Objekt. Rechts: Darstellung zweier Gitterschichten und der verwendeten Objektapproximation.
Eine Besonderheit der Ragattasegelyacht ist ihre Symmetrie, bei dieser Art von Objekten wäre
es theoretisch möglich, ein Gitter für nur eine Hälfte des Gebiets zu erstellen. Dieses könnte
im Anschluss an die Gittergenerierung entlang der Symmetrieachse des Objekts gespiegelt werden, um ein vollständiges Gitter für eine Simulation zu erhalten. Mit diesem Verfahren könnte
entweder die Rechenzeit zur Erstellung eines Gitters halbiert, oder ein doppelt so großes Gitter
in einer ähnlichen Laufzeit erstellt werden. Andererseits ist es auf Grund der Symmetrie sogar
möglich, eine Simulation mit entsprechenden Randbedingungen nur auf einer Hälfte des Gebiets
zu berechnen.
Zum anderen ragt das Modell über die Gebietsgrenzen hinaus. Eine exakte Randanpassung am
Rumpf des Objekts wird dadurch erschwert, dass viele Gitterschichten dort die Objektoberfläche
8.2 Erweiterte Möglichkeiten zur Verbesserung der Gittererzeugung
93
schneiden. Wie in Abbildung 8.4 dargestellt, existieren Hexaeder im Inneren des Modells, deren
Knoten üblicherweise fest am Gebietsrand verankert sind. Wäre es möglich, die Knoten des
Gitters, die am Gebietsrand liegen, von dort zu lösen und einer Membran ähnlich an den Rumpf
der Yacht anzupassen, könnte dies in einer deutlich besseren Randanpassung resultieren. Hier
könnte eventuell ein durch NURBS definiertes Gebiet von Vorteil sein, welches an den Rumpf der
Yacht angepasst wird.
Eine Erweiterung der Software I N G RID 3DD EFORM um die vorgestellten Verbesserungen wäre
insbesondere im Hinblick auf eine Nutzung der Gittererstellung für industrielle Zwecke vorteilhaft.
Abbildung 8.4: Darstellung einer Gitterschicht im Inneren des Modells einer Ragattasegelyacht.
Die oberen Gitterknoten der dargestellten Schicht wurden bereits zu Testzwecken
vom Gebietsrand losgelöst.
94
8. Ausblick
95
Kapitel 9
Danksagung
An dieser Stelle möchte ich mich bei allen Personen bedanken, die zu dieser Arbeit beigetragen
haben. Allen voran meinen Betreuern Prof. Dr. Müller und Prof. Dr. Turek für ihre Hilfe und Unterstützung. Michael Köster für seine geduldige Hilfe beim Umgang mit dem F EAT F LOW-Paket.
Matthias Grajewski, der mir die mathematische Problematik begreiflich gemacht hat. Dominik
Göddeke der sich einen Teil seiner knappen Zeit für Korrekturen und Diskussionen genommen
hat. Des Weiteren möchte ich mich bei allen Mitarbeitern des LS3 für die freundliche und angenehme Atmosphäre bedanken in der ich diese Arbeit schreiben durfte.
Zuletzt möchte ich mich bei Vanessa Galanti bedanken, die für mich eine Quelle ständiger Lebensfreude geworden ist.
96
9. Danksagung
97
Anhang A
Anhang
A.1
Tabellen für Punktklassifizierung
Nachfolgend werden die vollständigen Daten präsentiert, die für die Punktklassifizierung über
verschiedene Gitterhierarchieebenen gesammelt wurden.
98
A. Anhang
Abbr.
10%
20%
30%
40%
Abbr.
10%
20%
30%
40%
Abbr.
10%
20%
30%
40%
Abbr.
10%
20%
30%
40%
Hierarchieebene 1 - 1331 Testpunkte (2197 ges.)
t/N
M
M/N max(M/N ) d/N
1,23E-2 6,76E+4
50
315
13
4,55E-3 2,04E+4
15
79
15
3,64E-3 1,12E+4
8
72
17
2,73E-3 7,08E+3
5
37
18
Hierarchieebene 2 - 12167 Testpunkte (15625 ges.)
t
t/N
M
M/N max(M/N ) d/N
161 1,03E-2 5,70E+5
46
315
13
84
5,38E-3 1,73E+5
14
105
15
58
3,71E-3 9,55E+4
7
72
17
50
3,20E-3 6,21E+4
5
43
18
Hierarchieebene 3 - 103823 Testpunkte (117649 ges.)
t
t/N
M
M/N max(M/N ) d/N
1014 8,62E-3 4,68E+6
45
315
13
459 3,90E-3 1,44E+6
13
117
15
345 2,93E-3 7,92E+5
7
79
16
301 2,56E-3 5,09E+5
4
52
18
Hierarchieebene 4 - 855129 Testpunkte (912673 ges.)
t
t/N
M
M/N max(M/N ) d/N
7504 8,22E-3 3,80E+7
44
315
13
3073 3,37E-3 1,16E+7
13
117
15
2310 2,53E-3 6,39E+6
7
79
16
2025 2,22E-3 4,10E+6
4
52
18
t
27
10
8
6
max(d)
16
19
20
21
max(d)
22
22
22
24
max(d)
24
26
27
30
max(d)
24
26
27
31
Tabelle A.1: Test zur Punktklassifizierung mit Testobjekt 1 (Kugel 327.680 Dreiecke), vier Gitterhierarchieebenen und vier unterschiedlichen Abbruchheuristiken.
A.1 Tabellen für Punktklassifizierung
Abbr.
10%
20%
30%
40%
Abbr.
10%
20%
30%
40%
Abbr.
10%
20%
30%
40%
Abbr.
10%
20%
30%
40%
Hierarchieebene 1 - 1331 Testpunkte (2197 ges.)
t/N
M
M/N max(M/N ) d/N
4,10E-3 4,91E+4
36
125
7
1,82E-3 9,60E+3
7
18
9
1,82E-3 8,20E+3
6
8
10
1,37E-3 5,89E+3
4
8
11
Hierarchieebene 2 - 12167 Testpunkte (15625 ges.)
t
t/N
M
M/N max(M/N ) d/N
182 8,19E-3 4,56E+5
37
125
7
32
2,05E-3 8,58E+4
7
18
9
29
1,86E-3 7,36E+4
6
9
10
23
1,47E-3 5,07E+4
4
8
11
Hierarchieebene 3 - 103823 Testpunkte (117649 ges.)
t
t/N
M
M/N max(M/N ) d/N
726 6,17E-3 4,12E+6
39
125
7
217 1,84E-3 7,30E+5
7
18
9
184 1,56E-3 6,27E+5
6
9
10
159 1,35E-3 4,24E+5
4
8
11
Hierarchieebene 4 - 855129 Testpunkte (912673 ges.)
t
t/N
M
M/N max(M/N ) d/N
5681 6,22E-3 3,44E+7
40
125
7
1288 1,41E-3 5,98E+6
6
18
10
1186 1,30E-3 5,14E+6
6
9
10
912 9,99E-4 3,51E+6
4
8
11
t
9
4
4
3
99
max(d)
9
12
13
14
max(d)
9
14
15
16
max(d)
9
16
17
18
max(d)
9
25
26
26
Tabelle A.2: Test zur Punktklassifizierung mit Testobjekt 2 (Würfel 3.072 Dreiecke), vier Gitterhierarchieebenen und vier unterschiedlichen Abbruchheuristiken.
100
A. Anhang
Abbr.
10%
20%
30%
40%
Abbr.
10%
20%
30%
40%
Abbr.
10%
20%
30%
40%
Abbr.
10%
20%
30%
40%
Hierarchieebene 1 - 1872 Testpunkte (2197 ges.)
t/N
M
M/N max(M/N ) d/N
1,28E-2 9,06E+4
48
350
8
2,73E-3 1,39E+4
7
134
10
1,82E-3 6,83E+3
3
44
11
1,82E-3 4,32E+3
2
40
12
Hierarchieebene 2 - 14400 Testpunkte (15625 ges.)
t
t/N
M
M/N max(M/N ) d/N
159 1,02E-2 6,53E+5
46
350
8
40
2,56E-3 9,98E+4
6
134
10
27
1,73E-3 5,50E+4
3
91
11
22
1,40E-3 3,54E+4
2
45
12
Hierarchieebene 3 - 112896 Testpunkte (117649 ges.)
t
t/N
M
M/N max(M/N ) d/N
1003 8,53E-3 5,19E+6
45
350
8
219 1,86E-3 7,67E+5
6
161
10
174 1,48E-3 4,31E+5
3
91
11
151 1,28E-3 2,79E+5
2
57
12
Hierarchieebene 4 - 893952 Testpunkte (912673 ges.)
t
t/N
M
M/N max(M/N ) d/N
7515 8,23E-3 4,10E+7
45
350
8
1384 1,52E-3 6,12E+6
6
161
10
970 1,06E-3 3,43E+6
3
91
11
821 9,00E-4 2,22E+6
2
57
12
t
28
6
4
4
max(d)
17
18
21
23
max(d)
19
21
23
24
max(d)
20
22
26
26
max(d)
21
26
26
27
Tabelle A.3: Test zur Punktklassifizierung mit Testobjekt 6 (Manta/Taucher 10.512 Dreiecke), vier
Gitterhierarchieebenen und vier unterschiedlichen Abbruchheuristiken.
A.2 Tabellen für Distanzberechnung
A.2
101
Tabellen für Distanzberechnung
deformierte Fläche, deformiertes Gitter (vorsortierte Dreiecksmengen)
t(i)/N
t(v)
t(v)/N
N
t(i)
N (i)
1728
167
436
9,66E-2
2
1,16E-3
12167
435
1872 3,58E-2
14
1,15E-3
91125
845
7384 9,27E-3
130
1,42E-3
704969 1959 29888 2,78E-3 1719
2,44E-3
Tabelle A.4: Distanzberechnung für Testobjekt 3, an Hand einer deformierten und einer regulär
unterteilten Gitterhierarchie. Die hier dargestellten Berechnungen erfolgten mit vorsortierten Dreiecksmengen in den Blättern des Spezialbaumes.
102
A. Anhang
Quellenverzeichnis
103
Quellenverzeichnis
[Anderson 1995]
A NDERSON, J. D.: Computational Fluid Dynamics: The Basics with Applications. 6. McGraw Hill, 1995
[Bachmann u. a. 2006]
BACHMANN, Daniel; B EBEN, Przemyslaw; B ECKER -A DAM, Till; B RAUN, André; E HREN BERG , Andreas; G ROSS, Christian; H EIN , Michael; M IEMCZYK , Matthias; M ÜNSTER , Raphael; S ENNE, Mark; S YKORRA, Mirko; W OHLGEMUTH, Klaus: Beyond Graphics Strömungssimulation in der GPU. 2006. – Endbericht der Projektgruppe 471. http://
ls7-www.cs.uni-dortmund.de/beyondgraphics/
[Becker u. Turek 1999]
B ECKER, Ch.; T UREK, S.: FEATFLOW - Finite element software for the incompressible
Navier-Stokes equations, 1999
[Becker 2007]
B ECKER, Ch. a.: Strategien und Methoden zur Ausnutzung der High-PerformanceRessourcen moderner Rechnerarchitekturen für Finite-Element-Simulationen und ihre Realisierung in FEAST (Finite Element Analysis & Solution Tools). Logos Verlag, Berlin, Universität Dortmund, Diss., Juli 2007
[de Berg u. a. 2000]
B ERG, M. de; K REVELD, M. van; OVERMARS, M.; S CHWARZKOPF, O.: Computational
Geometry. second edition. http://www.cs.uu.nl/geobook/ : Springer-Verlag, 2000
[Chang 2001]
C HANG, D. W.: A Survey of Geometric Data Structures for Ray Tracing, Department of
Computer and Information Science, Polytechnic University, Brooklyn, New York, Dissertation, 2001
[Dijkstra 1959]
D IJKSTRA, Edsger. W.: A note on two problems in connexion with graphs. In: Numerische
Mathematik 1 (1959), S. 269–271
[Donea u. Huerta 2003]
D ONEA, J.; H UERTA, A.: Finite Element Methods for Flow Problems. Wiley, Mai, 2003
[Ferziger u. Peric 2002]
F ERZIGER, Joel H.; P ERIC, Milovan: Computational Methods for Fluid Dynamics. Heidelberg, Berlin, New York : Springer, 2002. – ISBN 3–540–42074–6
104
Quellenverzeichnis
[Fortune 1987]
F ORTUNE, S. J.: A Sweepline Algorithm for Voronoi Diagrams. In: Algorithmica 2 (1987),
S. 153–174
[Göddeke 2004]
G ÖDDEKE, D.: Geometrische Projektionstechniken auf Oberflächentriangulierung zur numerischen Strömungssimulation mit hierarchischen Mehrgitterverfahren, Universität Dortmund,
Diplomarbeit, 2004. – Diplomarbeit, Universität Dortmund, 2004
[Goodman u. O’Rourke 1997]
G OODMAN, Jacob E.; O’ROURKE, Joseph: Handbook of Discrete and Computational Geometry. Boca Raton, FL, USA : CRC Press, Inc., 1997. – ISBN 0–8493–8524–5
[Grajewski u. a. 2005]
G RAJEWSKI, M.; KÖSTER, M.; K ILIAN, S.; T UREK, S.: Numerical Analysis and Practical
Aspects of a Robust and Efficient Grid Deformation Method in the Finite Element Context
/ FB Mathematik, Universität Dortmund. 2005. – Ergebnisberichte des Instituts für Angewandte Mathematik, Nr. 294
[Hackbusch 1985]
H ACKBUSCH, W.: Multi-Grid Methods and Applications. Springer, Berlin, 1985 (Springer
Series in Computational Mathematics)
[Hein 2007]
H EIN, M.: Effiziente Distanzberechnung und Punktklassifizierung für NURBS-basierte CADModelle zur Gitteradaption in der numerischen Strömungssimulation in 3D, Universität Dortmund, Diplomarbeit, 2007
[Johnson u. a. 2005]
J OHNSON, F. T.; N., Tinoco E.; Y UN, Jong: Thirty years of development and application of
CFD at Boeing Commercial Airplanes, Seattle. In: Computers & fluids (Comput. fluids) 34
(2005), S. 1115–1151
[Kelly 1998]
K ELLY, S.: Element Shape Testing. Bd. 9 th edition. AnSyS Inc., 1998. – chapter 13 in Ansys
Theory Reference; http://www.ansys.com
[Kobbelt 1994]
KOBBELT, L. P.: Iterative Erzeugung glatter Interpolanten. Verlag Shaker, Aachen, 1995,
Universität Karlsruhe, Dissertation, 1994
[Möller u. Trumbore 1997]
M ÖLLER, T.; T RUMBORE, B.: Fast, Minimum Storage Ray/Triangle Intersection. (1997)
[Schäfer u. Turek 1996]
S CHÄFER, M.; T UREK, S.: Benchmark Computations of Laminar Flow Around a Cylinder /
Universität Heidelberg. 1996. – Preprints SFB 359, Nr. 96-03
[Sethian 1996]
S ETHIAN, J.: A Fast Marching Level Set Method for Monotonically Advancing Fronts. In:
Proc. Nat. Acad. Sci. Bd. 93, 1996, 1591–1595
Quellenverzeichnis
105
[Sethian 1999]
S ETHIAN, J. A.: Fast Marching Methods. In: SIAM Review 41 (1999), Nr. 2, S. 199–235
[Turek u. a. 2003]
T UREK, S.; WAN, D.; R IVKIND, L.: The Fictitious Boundary Method for the implicit treatment of Dirichlet boundary conditions with applications to incompressible flow simulations
/ FB Mathematik, Universität Dortmund. 2003. – Ergebnisberichte des Instituts für Angewandte Mathematik, Nr. 236
Herunterladen