1
x SciComp Lab Labor f¨ ur Scientific Computing und Simulation MATLAB EXPO 2015 SciComp Lab, Hochschule Aschaffenburg, www.h-ab.de/SciComp Ein kompakter und vektorisierter MATLAB Code zur L ¨ osung der inkompressiblen Navier- Stokes Gleichungen M. Kilgenstein, K. M. Kraenzel, S. Schuster, M. St¨ uhmer & J.-M. Sautter Labor f ¨ ur Scientific Computing und Simulation, Hochschule Aschaffenburg Zusammenfassung MATLAB bildet eine ideale Basis f¨ ur die Simulation von sowohl zeit- als auch ortsabh¨ angigen Prozessen. Dazu z¨ ahlen auch inkompressible viskose Str¨ omungen, deren zeit- und ortsabh¨ angiges Verhalten durch die inkompressiblen Navier-Stokes Gleichungen beschrieben wird. Der hier vorgestellte Code erm¨ oglicht die Simulation zweidimensio- naler instation¨ arer inkompressibler viskoser Str¨ omungen. Um den Co- de schlank zu halten, erfolgt die Ortsdiskretisierung der Navier-Stokes Gleichungen mit finiten Differenzen. Dies erm¨ oglicht insbesondere ei- ne weitgehend vektorisierte und auf den St¨ arken von MATLAB basie- rende Implementierung. Die Zeitdiskretisierung erfolgt explizit in Ver- bindung mit einer Projektionsmethode. Zur Steigerung der Effizienz des Codes wurden verschiedene direkte und iterative Verfahren ver- wendet und analysiert, wodurch die Simulationen drastisch beschleu- nigt werden konnten. Der Code erlaubt derzeit verschiedene (orts- und zeitabh¨ angige) Rand- bedingungen, verschiedene benutzerdefinierte Geometrien und bie- tet unterschiedliche M¨ oglichkeiten der Visualisierung. Haupteinsatz- zweck des Codes ist die Ein- und Heranf¨ uhrung von Bachelorstudie- renden ingenieurwissenschaftlicher Fachrichtungen an fortgeschrittene Themen und Fragestellungen aus dem Bereich des Computational En- gineering, des Scientific Computing und insbesondere auch aus dem Bereich der erneuerbaren Energien. Einleitung In vielen Bereichen der Natur- und Ingenieurwissenschaften ist die rechnergest¨ utzte Entwicklung verschiedenster Applika- tionen Stand der Technik. Technische Fragestellungen werden durch mathematische Modelle, meist Differentialgleichungen, beschrieben und dann zun¨ achst am Computer simuliert und opti- miert. Im Falle der Simulation instation¨ arer inkompressibler vis- koser Str¨ omungen m ¨ ussen daf ¨ ur die Navier-Stokes Gleichungen numerisch gel ¨ ost werden. Allerdings geh¨ ort die numerische Simulation von Str¨ omungen zweifelsohne nicht gerade zu den einf¨ uhrenden Beispielen bei der Lehre bzw. dem Erlernen numerischer Verfahren. Zwar gibt es diverse Spezialsoftware zur komfortablen Simulation von Str¨ omungen, aber die Weiterentwicklung derartiger Software bleibt meist nur einem vergleichsweise kleinen Kreis von Spe- zialisten, meist Mathematikern, vorbehalten. Mithilfe von MAT- LAB k ¨ onnen jedoch auch bereits im fortgeschrittenen ingenieur- wissenschaftlichen Bachelorstudium numerische Verfahren so- gar f ¨ ur die Simulation von Str¨ omungen selbstst¨ andig implemen- tiert, angewendet und analysiert werden. Mit klassischen Pro- grammiersprachen w¨ are der Aufwand ungleich h¨ oher und bei der Verwendung von spezieller CFD-Software das Verst¨ andnis numerischer Verfahren wesentlich geringer. Mathematisches Modell ur instation¨ are Str ¨ omungen von inkompressiblen und viskosen Fluiden in der Ebene lauten die Navier-Stokes Gleichungen u ∂t +(u ·∇)u = ν Δu -∇p (1a) ∇· u =0, (1b) wobei u : R × R 2 R 2 mit (t, x) 7u(t, x) das Geschwindig- keitsfeld bezeichnet, p : R × R 2 R den Druck und ν R die kinematische Viskosit¨ at. Dazu kommen noch Anfangsbedingun- gen sowie zeit- und ortsabh¨ angige Randbedingungen (vgl. [5]). Diskretisierung Die Ortsdiskretisierung von (1) erfolgt mittels finiter Differen- zen. Dabei sind die Komponenten u und v der Fluidgeschwin- digkeit u sowie der Druck p auf jeweils versetzten Gittern defi- niert (siehe Abb. 1). Der Konvektionsterm wird mit der Donor- Cell-Methode stabilisiert (vgl. [1]). Insgesamt lassen sich durch diese Vorgehensweise die im Ort diskretisierten Terme beson- ders einfach vektorisieren (vgl. [4]). Die Zeitdiskretisierung erfolgt mit dem expliziten Euler-Ver- fahren und im Wesentlichen der Chorin’schen Projektions- methode. Der Druck p ist dabei in jedem Zeitschritt (unter Ber¨ ucksichtigung der aktuellen Randbedingungen) als L¨ osung einer Poisson-Gleichung gegeben. Aus den vollst¨ andig diskre- tisierten Impulsgleichungen (1a) kann schließlich das neue Ge- schwindigkeitsfeld berechnet werden. p i,j p i+1,j u i-1,j u i,j u i+1,j v i,j -1 v i,j v i+1,j -1 v i+1,j Zelle (i, j ) Zelle (i +1,j ) i - 1 i i +1 i +2 j - 1 j j +1 Abb. 1: Ausschnitt des versetzten Gitters Vektorisierung Alle diskretisierten Terme k¨ onnen mittels Vektorisierung effizi- ent ausgewertet werden. Dies geschieht durch das Verschieben von Matrizen“. F¨ ur das Beispiel " 2 u ∂x 2 # i,j := u i+1,j - 2u i,j + u i-1,j x) 2 ist dies f¨ ur den einfachen Fall des klassischen Driven Cavi- ty Problems in Abb. 2 schematisch dargestellt. Das Verfahren asst sich jedoch auch auf komplizierte Geometrien erweitern (vgl. [3, 4]). j =1 j =2 j =3 . . . j max j max+1 j max+2 i =1 i =2 i =3 ... i max i max+1 i max+2 Abb. 2: Vektorisierte Auswertung von h 2 u ∂x 2 i i,j mittels Shift-Matrizen“ Beschleunigung Als Teil der Str¨ omungssimulation muss in jedem Zeitschritt eine Poisson-Gleichung f ¨ ur den Druck gel ¨ ost werden: 2 p (n+1) ∂x 2 + 2 p (n+1) ∂y 2 = 1 Δt ∂u (n) ∂x + ∂v (n) ∂y ! + ∂F (n) ∂x + ∂G (n) ∂y Dies stellt den mit Abstand rechenintensivsten Teil der Simula- tion dar. Daher wurde die Effizienz unterschiedlicher Verfahren zur L ¨ osung linearer Gleichungssysteme untersucht. Urspr¨ unglich wurde der MATLAB-Befehl mldivide zur osung der Gleichungssysteme verwendet. Zur Beschleuni- gung wurde zun¨ achst die LU- und dann auch die Cholesky- Zerlegung verwendet. Auf diese Weise konnte f¨ ur den Referenz- fall (vgl. [6]) eine Beschleunigung um 96,7% erzielt werden. Um Speicherproblemen durch einen fill-in bei den direkten Verfahren entgegenzuwirken, wurde auch das iterative Verfah- ren der konjugierten Gradienten (CG-Verfahren) mit einer Un- terraumprojektion implementiert. In Abh¨ angigkeit der gefor- derten Genauigkeit k¨ onnen damit enorme Beschleunigungen ohne Speicherprobleme erzielt werden. Bezogen auf die LU- Zerlegung konnte die Berechnungsdauer im Referenzfall um weitere 25,4% reduziert werden (siehe Abb. 3). mldivide LU CG 0 10 Zeit in % 100 Abb. 3: Berechnungszeit der verschiedenen L¨ osungsverfahren Ergebnisse Abb. 4: Geschwindigkeitsfeld einer K´ arm´ an’schen Wirbelstraße (vgl. [2]) Abb. 5: Streichlinien einer K´ arm´ an’schen Wirbelstraße (vgl. [2]) Abb. 6: Stufe mit Driven Cavity: Geschwindigkeitsfeld (vgl. [3]) Abb. 7: Stufe mit Driven Cavity: Stromlinien (vgl. [3]) (a) Geschwindigkeitsfeld (b) Stromlinien bei Zoom in die linke untere Ecke Abb. 8: Klassisches Driven Cavity (vgl. [2]) Fazit Kompakter MATLAB Code Simulation verschiedener Str¨ omungsprobleme durch Anpas- sung der Randbedingungen Beliebige Anzahl beliebig geformter Hindernisse Verschiedene Visualisierungstechniken Erhebliche Steigerung der Effizienz des Codes durch Verwen- dung des CG-Verfahrens Ausblick Der Code ist Work in Progress. Neben weiteren Simulations- beispielen, insbesondere solche mit freien R¨ andern oder Mehr- phasenstr¨ omungen, sind auch weitere Verfahren zur Zeitdiskre- tisierung, insbesondere auch implizite Verfahren (mit und auch ohne Projektionsmethode) geplant. Desweiteren ist geplant, die Ortsdiskretisierung um die Methode der finiten Elemente zu er- weitern. Literatur [1] G RIEBEL , M., D ORNSEIFER T. und N EUNHOEFFER T.: Numerische Si- mulation in der Str ¨ omungsmechanik. Vieweg Verlag, 1995. [2] K ILGENSTEIN ,M ARCEL: Untersuchung und Implementierung numeri- scher Verfahren zur Simulation von Str¨ omungen. Projektdokumentation, Hochschule Aschaffenburg, 2015. [3] K RAENZEL ,K ARL M ARTIN: Simulation of a Backstep Flow with MAT- LAB. Bachelorarbeit, Hochschule Aschaffenburg, 2014. [4] S AUTTER , J.-M.: Numerical Simulation in Fluid Dynamics. Thesis, Uni- versit¨ at T ¨ ubingen, 1998. [5] S CHUSTER ,S IMONE: Implementierung verschiedenartiger Randbedin- gungen f¨ ur das Driven Cavity Problem. Bachelorarbeit, Hochschule Aschaffenburg, 2014. [6] S T ¨ UHMER ,M ARLIES: Beschleunigung einer CFD-Simulation mithilfe eines iterativen Verfahrens. Bachelorarbeit, Hochschule Aschaffenburg, 2015.

Ein kompakter und vektorisierter MATLAB Code zur Losung ... · ne weitgehend vektorisierte und auf den Starken von MATLAB basie-¨ rende Implementierung. Die Zeitdiskretisierung erfolgt

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ein kompakter und vektorisierter MATLAB Code zur Losung ... · ne weitgehend vektorisierte und auf den Starken von MATLAB basie-¨ rende Implementierung. Die Zeitdiskretisierung erfolgt

x

SciComp

Lab

Labor fur ScientificCom

putingund

Simulation

MATLAB EXPO 2015 SciComp Lab, Hochschule Aschaffenburg, www.h-ab.de/SciComp

Ein kompakter und vektorisierter MATLABCode zur Losung der inkompressiblen Navier-Stokes GleichungenM. Kilgenstein, K. M. Kraenzel, S. Schuster, M. Stuhmer & J.-M. Sautter

Labor fur Scientific Computing und Simulation, Hochschule Aschaffenburg

Zusammenfassung

MATLAB bildet eine ideale Basis fur die Simulation von sowohl zeit-als auch ortsabhangigen Prozessen. Dazu zahlen auch inkompressibleviskose Stromungen, deren zeit- und ortsabhangiges Verhalten durchdie inkompressiblen Navier-Stokes Gleichungen beschrieben wird.

Der hier vorgestellte Code ermoglicht die Simulation zweidimensio-naler instationarer inkompressibler viskoser Stromungen. Um den Co-de schlank zu halten, erfolgt die Ortsdiskretisierung der Navier-StokesGleichungen mit finiten Differenzen. Dies ermoglicht insbesondere ei-ne weitgehend vektorisierte und auf den Starken von MATLAB basie-rende Implementierung. Die Zeitdiskretisierung erfolgt explizit in Ver-bindung mit einer Projektionsmethode. Zur Steigerung der Effizienzdes Codes wurden verschiedene direkte und iterative Verfahren ver-wendet und analysiert, wodurch die Simulationen drastisch beschleu-nigt werden konnten.

Der Code erlaubt derzeit verschiedene (orts- und zeitabhangige) Rand-bedingungen, verschiedene benutzerdefinierte Geometrien und bie-tet unterschiedliche Moglichkeiten der Visualisierung. Haupteinsatz-zweck des Codes ist die Ein- und Heranfuhrung von Bachelorstudie-renden ingenieurwissenschaftlicher Fachrichtungen an fortgeschritteneThemen und Fragestellungen aus dem Bereich des Computational En-gineering, des Scientific Computing und insbesondere auch aus demBereich der erneuerbaren Energien.

Einleitung

In vielen Bereichen der Natur- und Ingenieurwissenschaftenist die rechnergestutzte Entwicklung verschiedenster Applika-tionen Stand der Technik. Technische Fragestellungen werdendurch mathematische Modelle, meist Differentialgleichungen,beschrieben und dann zunachst am Computer simuliert und opti-miert. Im Falle der Simulation instationarer inkompressibler vis-koser Stromungen mussen dafur die Navier-Stokes Gleichungennumerisch gelost werden.

Allerdings gehort die numerische Simulation von Stromungenzweifelsohne nicht gerade zu den einfuhrenden Beispielen beider Lehre bzw. dem Erlernen numerischer Verfahren. Zwar gibtes diverse Spezialsoftware zur komfortablen Simulation vonStromungen, aber die Weiterentwicklung derartiger Softwarebleibt meist nur einem vergleichsweise kleinen Kreis von Spe-zialisten, meist Mathematikern, vorbehalten. Mithilfe von MAT-LAB konnen jedoch auch bereits im fortgeschrittenen ingenieur-wissenschaftlichen Bachelorstudium numerische Verfahren so-gar fur die Simulation von Stromungen selbststandig implemen-tiert, angewendet und analysiert werden. Mit klassischen Pro-grammiersprachen ware der Aufwand ungleich hoher und beider Verwendung von spezieller CFD-Software das Verstandnisnumerischer Verfahren wesentlich geringer.

Mathematisches Modell

Fur instationare Stromungen von inkompressiblen und viskosenFluiden in der Ebene lauten die Navier-Stokes Gleichungen

∂u

∂t+ (u · ∇)u = ν∆u−∇p (1a)

∇ · u = 0, (1b)

wobei u : R×R2→ R2 mit (t,x) 7→ u(t,x) das Geschwindig-keitsfeld bezeichnet, p : R×R2→ R den Druck und ν ∈ R diekinematische Viskositat. Dazu kommen noch Anfangsbedingun-gen sowie zeit- und ortsabhangige Randbedingungen (vgl. [5]).

Diskretisierung

Die Ortsdiskretisierung von (1) erfolgt mittels finiter Differen-zen. Dabei sind die Komponenten u und v der Fluidgeschwin-digkeit u sowie der Druck p auf jeweils versetzten Gittern defi-niert (siehe Abb. 1). Der Konvektionsterm wird mit der Donor-Cell-Methode stabilisiert (vgl. [1]). Insgesamt lassen sich durchdiese Vorgehensweise die im Ort diskretisierten Terme beson-ders einfach vektorisieren (vgl. [4]).

Die Zeitdiskretisierung erfolgt mit dem expliziten Euler-Ver-fahren und im Wesentlichen der Chorin’schen Projektions-methode. Der Druck p ist dabei in jedem Zeitschritt (unterBerucksichtigung der aktuellen Randbedingungen) als Losungeiner Poisson-Gleichung gegeben. Aus den vollstandig diskre-tisierten Impulsgleichungen (1a) kann schließlich das neue Ge-schwindigkeitsfeld berechnet werden.

pi,j pi+1,j

ui−1,j ui,j ui+1,j

vi,j−1

vi,j

vi+1,j−1

vi+1,j

Zelle (i, j) Zelle (i + 1, j)

i− 1 i i + 1 i + 2

j − 1

j

j + 1

Abb. 1: Ausschnitt des versetzten Gitters

Vektorisierung

Alle diskretisierten Terme konnen mittels Vektorisierung effizi-ent ausgewertet werden. Dies geschieht durch das ”Verschiebenvon Matrizen“. Fur das Beispiel[

∂2u

∂x2

]i,j

:=ui+1,j − 2ui,j + ui−1,j

(∆x)2

ist dies fur den einfachen Fall des klassischen Driven Cavi-ty Problems in Abb. 2 schematisch dargestellt. Das Verfahrenlasst sich jedoch auch auf komplizierte Geometrien erweitern(vgl. [3, 4]).

j = 1

j = 2

j = 3

...

jmax

jmax+1

jmax+2

i = 1 i = 2 i = 3 . . . imax imax+1 imax+2

Abb. 2: Vektorisierte Auswertung von[∂2u∂x2

]i,j

mittels ”Shift-Matrizen“

Beschleunigung

Als Teil der Stromungssimulation muss in jedem Zeitschritt einePoisson-Gleichung fur den Druck gelost werden:

∂2p(n+1)

∂x2+∂2p(n+1)

∂y2=

1

∆t

(∂u(n)

∂x+∂v(n)

∂y

)+∂F (n)

∂x+∂G(n)

∂y

Dies stellt den mit Abstand rechenintensivsten Teil der Simula-tion dar. Daher wurde die Effizienz unterschiedlicher Verfahrenzur Losung linearer Gleichungssysteme untersucht.

Ursprunglich wurde der MATLAB-Befehl mldivide zurLosung der Gleichungssysteme verwendet. Zur Beschleuni-gung wurde zunachst die LU- und dann auch die Cholesky-Zerlegung verwendet. Auf diese Weise konnte fur den Referenz-fall (vgl. [6]) eine Beschleunigung um 96,7% erzielt werden.

Um Speicherproblemen durch einen fill-in bei den direktenVerfahren entgegenzuwirken, wurde auch das iterative Verfah-ren der konjugierten Gradienten (CG-Verfahren) mit einer Un-terraumprojektion implementiert. In Abhangigkeit der gefor-derten Genauigkeit konnen damit enorme Beschleunigungenohne Speicherprobleme erzielt werden. Bezogen auf die LU-Zerlegung konnte die Berechnungsdauer im Referenzfall umweitere 25,4% reduziert werden (siehe Abb. 3).

mldivide LU CG0

10

Zei

tin

%

100

Abb. 3: Berechnungszeit der verschiedenen Losungsverfahren

Ergebnisse

Abb. 4: Geschwindigkeitsfeld einer Karman’schen Wirbelstraße (vgl. [2])

Abb. 5: Streichlinien einer Karman’schen Wirbelstraße (vgl. [2])

Abb. 6: Stufe mit Driven Cavity: Geschwindigkeitsfeld (vgl. [3])

Abb. 7: Stufe mit Driven Cavity: Stromlinien (vgl. [3])

(a) Geschwindigkeitsfeld (b) Stromlinien bei Zoom in die linkeuntere Ecke

Abb. 8: Klassisches Driven Cavity (vgl. [2])

Fazit

•Kompakter MATLAB Code

• Simulation verschiedener Stromungsprobleme durch Anpas-sung der Randbedingungen

• Beliebige Anzahl beliebig geformter Hindernisse

•Verschiedene Visualisierungstechniken

• Erhebliche Steigerung der Effizienz des Codes durch Verwen-dung des CG-Verfahrens

Ausblick

Der Code ist Work in Progress. Neben weiteren Simulations-beispielen, insbesondere solche mit freien Randern oder Mehr-phasenstromungen, sind auch weitere Verfahren zur Zeitdiskre-tisierung, insbesondere auch implizite Verfahren (mit und auchohne Projektionsmethode) geplant. Desweiteren ist geplant, dieOrtsdiskretisierung um die Methode der finiten Elemente zu er-weitern.

Literatur[1] GRIEBEL, M., DORNSEIFER T. und NEUNHOEFFER T.: Numerische Si-

mulation in der Stromungsmechanik. Vieweg Verlag, 1995.

[2] KILGENSTEIN, MARCEL: Untersuchung und Implementierung numeri-scher Verfahren zur Simulation von Stromungen. Projektdokumentation,Hochschule Aschaffenburg, 2015.

[3] KRAENZEL, KARL MARTIN: Simulation of a Backstep Flow with MAT-LAB. Bachelorarbeit, Hochschule Aschaffenburg, 2014.

[4] SAUTTER, J.-M.: Numerical Simulation in Fluid Dynamics. Thesis, Uni-versitat Tubingen, 1998.

[5] SCHUSTER, SIMONE: Implementierung verschiedenartiger Randbedin-gungen fur das Driven Cavity Problem. Bachelorarbeit, HochschuleAschaffenburg, 2014.

[6] STUHMER, MARLIES: Beschleunigung einer CFD-Simulation mithilfeeines iterativen Verfahrens. Bachelorarbeit, Hochschule Aschaffenburg,2015.