Strömungssimulation Alexander Podlich & Jens Wollenhaupt {podlich, jewollen}@student.uni-kassel.de Sommersemester 2006 03.07.2006
Übersicht 1. Allgemeines über 2. Das Lattice-Boltzmann Modell 3. Umsetzung auf GPU 4. gebiete 5. 2
Übersicht Kapitel 1 1. Allgemeines über 1. Darstellung eines Fluids 2. Strömungsverhaten 3. Navier-Stokes Gleichungen 4. Lösungsmöglichkeiten 5. Zusammenfassung 2. Das Lattice-Boltzmann Modell 3. Umsetzung auf GPU 4. gebiete 5. 3
1.1 Darstellung eines Fluids Geschwindigkeit als wichtigste Größe einer Strömung Änderung in Raum und Zeit Darstellung als Vektorfeld Geschwindigkeit in zweidimensionalem Fluid: u x,t = u x,t v y,t 4
1.1 Darstellung eines Fluids Quelle: Mark J. Harris. GPU GEMS Chapter 38, Fast Fluid Dynamics Simulation on the GPU. 2004. 5
1.2 Strömungsverhalten Strömungsverhalten kann durch die Navier- Stokes Gleichungen beschrieben werden Allgemeine Form ist sehr kompliziert Vereinfachungen durch Annahmen 1. Inkompressibel 2. Homogen 6
1.2 Strömungsverhalten Strömungsverhalten kann durch die Navier- Stokes Gleichungen beschrieben werden Allgemeine Form ist sehr kompliziert Vereinfachungen durch Annahmen 1. Inkompressibel 2. Homogen Dichte des Fluids ist sowohl räumlich als auch zeitlich konstant. 6
1.3 Navier Stokes Gleichungen George Gabriel Stockes (*13.08.1819, 01.02.1903) War ein irischer Mathematiker und Physiker Claude Louis Marie Henri Navier (*10.02.1785, 21.08.1836) War ein französischer Mathematiker und Physiker Quelle: http://de.wikipe dia.org/wiki/bild :Gstokes.jpg Quelle: http://herodes.feld.cvut.cz/n onlin/slavni/n avier.jpg 7
1.3 Navier Stokes Gleichungen u=0 u t = u u 1 p 2 u F 8
1.3 Navier Stokes Gleichungen u=0 Massenerhaltung Einfluß und Ausfluß in einem Fluidelement sind symmetrisch 9
1.3 Navier Stokes Gleichungen u t = u u 1 p 2 u F Impulsehaltung Geschwindigkeitsfeld u Druckfeld p Kinematische Viskosität Externe Kräfte F 10
1.3 Navier Stokes Gleichungen u t = u u 1 p 2 u F Advektion Transport von Eigenschaften eines Fluids Ein Objekt (z.b. Dichte, Geschwindigkeit) ist eine Eigenschaft des Fluids 11
1.3 Navier Stokes Gleichungen u t = u u 1 p 2 u F Druck Teilchen im Fluid bewegen sich frei Kraftaufbringung breitet sich nicht sofort aus Druckunterschied führt zu einer Beschleunigung/Geschwindigkeit 12
1.3 Navier Stokes Gleichungen u t = u u 1 p 2 u F Diffusion Stellt die Dicke, die Viskosität, des Fluids dar 13
1.3 Navier Stokes Gleichungen u t = u u 1 p 2 u F Externe Kräfte Äußere Einflüsse, wie Lokale Kräfte Globale Kräfte 14
1.4 Lösungsmöglichkeiten Analytisch Nur in wenigen Spezialfällen möglich Allgemeine Lösung ist ein großes Problem dieses Jahrhunderts Numerisch Integrationsverfahren (Aufteilung in Advektions-, Diffusions- und Kraftterme) Nichtlinearität der einzelnen Terme führt zu einem hohen Aufwand 15
1.4 Lösungsmöglichkeiten Molekulardynamische Betrachtungsweise bestehen aus vielen kleinen Partikeln Das kollektive Verhalten dieser Partikel bestimmt die makroskopischen Eigenschaften des Fluids Idee: Simulation dieser Partikel, so dass die makroskopischen Navier-Stokes Gleichungen erfüllt sind 16
1.5 Zusammenfassung Geschw. als wichtige Größe der Fluide Eigenschaften der Fluide Inkompressibel & Homogen Beschreibung durch NS-Gleichungen Lösungsmöglichkeiten Analytisch Numerisch Molekulardynamisch 17
Übersicht Kapitel 2 1. Allgemeines über 2. Das Lattice-Boltzmann Modell 1. Das Gitter 2. D3Q19 3. Der Simulationsablauf 4. Zusammenfassung 3. Umsetzung auf GPU 4. gebiete 5. 18
2. Das Lattice-Boltzmann Modell Vom österreichischen Physiker und Philosophen Ludwig Boltzmann Ende der 80er Jahre (20.02.1844, 05.09.1906) entwickelt Das wird auf Teilchenebene simuliert Quelle: http://de.wikipedia.org/wiki/bild:bolt zmann_ludwig_dibner_coll_sil14 -B5-06a.jpg 19
2.1 Das Gitter 20
2.1 Das Gitter 20
2.1 Das Gitter 20
2.1 Das Gitter 20
2.1 Das Gitter 20
2.1 Das Gitter 20
2.1 Das Gitter Klassifikation in DxQy Dimension x Anzahl der Kollokationspunkte y Alle Gittertypen werden aus Untergittern konstruiert D2Q4 21
2.1 Das Gitter - D3Q19 1. UG 0,0,0 3. UG ±1,±1,0 0,±1,±1 ±1,0,±1 2. UG ±1,0,0 0,±1,0 0,0,±1 4. UG ±1,±1,±1 22
2.2 D3Q19 Kombination aus 1., 2. und 3. UG 19 Richtungsvektoren e i 18 + 1 Verteilungen f i x,t Makroskopische Eigenschaften: Dichte: = i f i Geschwindigkeit: u= 1 i f i e i 23
2.3 Der Simulationsablauf Dichte Neue Verteilung Geschwindigkeit Gleichgewichtsverteilung Kollision & Propagation 24
2.4 Zusammenfassung simuliert die Partikelbewegung Unterteilung des Fluids in ein Gitter D3Q19 Simulationsablauf für alle Untergitter Geschwindigkeitsverteilung Dichte Geschwindigkeit 25
Übersicht Kapitel 3 1. Allgemeines über 2. Das Lattice-Boltzmann Modell 3. Umsetzung auf GPU 1. HardwareAnpassung 2. Berechnung pro Zelle 3. Daten auf der GPU 4. Besondere Berechnungen 5. Cg Shaderprogramm 6. Zusammenfassung 4. gebiete 5. 26
3.1 Hardwareanpassung auf der GPU Kernel-Stream Model Eingeschränkter Speicherzugriff eingeschränktes Zahlenformat SIMD Architektur für 4-Komponenten Vektoren 27
3.2 Berechnung pro Zelle Makroskopische Dichte berechnen Makroskopische Geschwindigkeit berechnen Bestimmung der Gleichgewichts - verteilung Partikelkollisionen und resultierende Paket - verteilung berechnen Ergebnisse zu Einga - bedaten für nächsten Durchlauf umkopieren Spezielle Propagation für Ränder und Hindernisse berechnen Propagieren der Paketverteilung in Nachbarzellen 28
3.2 Berechnung pro Zelle Vertex Textur Makroskopische Dichte berechnen Makroskopische Geschwindigkeit berechnen Bestimmung der Gleichgewichts - verteilung Ergebnistextur Partikelkollisionen und resultierende Paket - verteilung berechnen Ergebnisse zu Einga - bedaten für nächsten Durchlauf umkopieren Spezielle Propagation für Ränder und Hindernisse berechnen Propagieren der Paketverteilung in Nachbarzellen 29
3.2 Berechnung pro Zelle Vertex Textur Makroskopische Dichte berechnen Makroskopische Geschwindigkeit berechnen Bestimmung der Gleichgewichts - verteilung Ergebnistextur Partikelkollisionen und resultierende Paket - verteilung berechnen Ergebnisse zu Einga - bedaten für nächsten Durchlauf umkopieren Spezielle Propagation für Ränder und Hindernisse berechnen Propagieren der Paketverteilung in Nachbarzellen 30
3.2 Berechnung pro Zelle Vertex Textur Makroskopische Dichte berechnen Makroskopische Geschwindigkeit berechnen Bestimmung der Gleichgewichts - verteilung Ergebnistextur Partikelkollisionen und resultierende Paket - verteilung berechnen Ergebnisse zu Einga - bedaten für nächsten Durchlauf umkopieren Spezielle Propagation für Ränder und Hindernisse berechnen Propagieren der Paketverteilung in Nachbarzellen extra Vertex 31
3.2 Berechnung pro Zelle Vertex Textur Makroskopische Dichte berechnen Makroskopische Geschwindigkeit berechnen Bestimmung der Gleichgewichts - verteilung Ergebnistextur Partikelkollisionen und resultierende Paket - verteilung berechnen Ergebnisse zu Einga - bedaten für nächsten Durchlauf umkopieren Spezielle Propagation für Ränder und Hindernisse berechnen Propagieren der Paketverteilung in Nachbarzellen extra Vertex 32
3.3 Daten in einer Textur Makr. Geschwindigkeit Makr. Dichte Paketverteilung R G B A v x v y v z Dichte f(1,0,0) f(-1,0,0) f(0,1,0) f(0,-1,0) f(1,1,0) f(-1,-1,0) f(1,-1,0) f(-1,1,0) f(1,0,1) f(-1,0,-1) f(1,0,-1) f(-1,0,1) f(0,1,1) f(0,-1,-1) f(0,1,-1) f(0,-1,1) f(0,0,1) f(0,0,-1) f(0,0,0) leer Quelle: [2] 33
3.3 Daten in einer Textur Makr. Geschwindigkeit Makr. Dichte Paketverteilung R G B A v x v y v z Dichte f(1,0,0) f(-1,0,0) f(0,1,0) f(0,-1,0) f(1,1,0) f(-1,-1,0) f(1,-1,0) f(-1,1,0) f(1,0,1) f(-1,0,-1) f(1,0,-1) f(-1,0,1) f(0,1,1) f(0,-1,-1) f(0,1,-1) f(0,-1,1) f(0,0,1) f(0,0,-1) f(0,0,0) leer Skalieren der Eingangsdaten Quelle: [2] 34
3.3 Daten für 3D Gatter Grafikhardware optimiert für 2D Texturen 3D Gatter in großer 2D Textur speichern Volumes müssen umgerechnet werden Volume einer Zelle v u 2D Textur y z x 35
3.4 Besondere Berechnungen Bei Propagationsberechnung an Rändern und Hinderissen Übergang zur nächsten Seite Abprallen Austreten gesonderte Shaderprogramme gesonderte Vertizes, durch deep peeling bestimmen 36
3.4 Deep Peeling Layer X 0 Blick 37
3.4 Deep Peeling Layer X 0 1 Blick 38
3.4 Deep Peeling Layer X 0 1 Blick 38
3.4 Deep Peeling Layer X 0 1 Blick 38
3.4 Deep Peeling Layer X 0 1 Blick 38
3.4 Deep Peeling Layer X 0 1 Blick 38
3.4 Deep Peeling Blick Layer Y 0 39
3.4 Deep Peeling Blick Layer Y Layer X 0 1 40
3.4 Deep Peeling Blick Layer Y Layer X 0 1 2 Bildquelle: [2] 41
3.5 Cg Shaderprogramm void advect( float2 coords :WPOS // grid coordinates out float4 xnew :Color // advected qty uniform float timestep, uniform float rdx, // 1/grid scale uniform samplerrect u, // input velocity uniform samplerrect x, // qty to advect ){ //follow the velocity field back in time float2 pos = coords timestep * rdx * f2textrect(u, coords); } //interpolate and write to the output fragment xnew = f4texrectbilerp(x, pos); Quelle: [3] 42
3.6 Zusammenfassung Vertizes für Gitterzellen erstellen Extra-Vertizes für spezielle Berechnungen Berechnung auf Fragment-Shader ausführen Eingabedaten in 2D-Textur ablegen Ergebnisse eines Durchlaufs mit copy-totexture oder render-to-texture umkopieren 43
Übersicht Kapitel 4 1. Allgemeines über 2. Das Lattice-Boltzmann Modell 3. Umsetzung auf GPU 4. gebiete 1. Speedups 5. 44
4. gebiete Strömungssimulation für Frischluftversorgung oder Gefahrenstoffe Temperaturströmungen Wettervorhersage Luftströmungen an PKW und Flugzeugen Grafische Strömungssimulationen für Filme und Computerspiele 45
4.1 Speedup Bildquelle: [1] Bildquelle: [4] 46
Übersicht Kapitel 5 1. Allgemeines über 2. Das Lattice-Boltzmann Modell 3. Umsetzung auf GPU 4. gebiete 5. 47
große Speedups möglich Umsetzung erscheint nicht viel aufwendiger Speicher noch zu klein, daher Simulationen noch zu klein rasante Entwicklung wird dies bestimmt lösen 48
Vielen Dank für Ihre Aufmerksamkeit! 49
Quellen [1] Arie Kaufman Zhe Fan and Suzanne Yoakum-Stover. Gpu cluster for high performance computing. 2004. [2] Xiaoming Wei Wei Li Zhe Fan and Arie Kaufman. GPU GEMS Chapter 47, Flow Simulation with Complex Boundaries. 2005. [3] Mark J. Harris. GPU GEMS Chapter 38, Fast Fluid Dynamics Simulation on the GPU. 2004. [4] Xiaoming Wei Wei Li and Arie Kaufman. Implementing lattice boltzmann computation on graphics hardware. 2003. [5] Thomas Schiwietz. Echtzeitfähige Simulation von Wasser auf Grafikhardware. Master s thesis, Technische Universität München, Fakultät für Informatik, 2003. 50