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 F¨ 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) 7→ u(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 l¨ 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 L¨ 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.