30
OPENFOAM ® CFD TOOLKIT C++ Dipl.-Ing. (FH) Thomas Tian Symposium “Integrale Planung und Simulation 2012”

OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Embed Size (px)

Citation preview

Page 1: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

OPENFOAM®

CFD TOOLKIT C++Dipl.-Ing. (FH) Thomas TianSymposium “Integrale Planung und Simulation 2012”

Page 2: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Inhaltsverzeichnis

� Einleitung und Historisches

� Was ist OpenFOAM?

� OpenFOAM Mathematische Sprache

� Strukturen, Aufbau und Navigation in OpenFOAM

� Community

� Bezugsquellen� Questions and Discussion

Page 3: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Historisches

� Historisches� Entwickelt am Imperial College London seit Anfang der 90ziger.

� In Professor Gosman‘s Gruppe („Thermofluids Section“)� Maßgeblich von Henry Weller und Hrvoje Jasak� Henry Weller hatte den ersten Code für ein „unsteady laminar flow“ schon längst geschrieben.� Hrvoje Jasak (1993) begleitet Henry Weller im Rahmen seiner Promotion und lernte viel über

CFD und Softwareentwicklung

� Ab 2000: kommerzielle Software, vertrieben durch die Firma „Nabla Ltd.“� Im Rahmen seiner Position als Technical Director und Chief Architect of FOAM sollte die

Software kommerzielle Anwender wie auch die Universitäten bedienen.� Software zur damaliger Zeit leistungsstark, aber zu kompliziert für die Anwender. Daher setzte

sich FOAM überwiegend nur im akademischen Bereich durch.� Ende 2004 wurde die Firma aufgelöst.

� Seit 2005 wurde FOAM unter den Namen OpenFOAM® Version1.2 unter der Public Domain Licence veröffentlicht.� großes Interesse, besonders von Universitäten (über 200)� Nun stieg auch das Interesse von kommerziellen Firmen wie Volkswagen.

Page 4: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Einleitung OpenFOAM

� Was ist OpenFOAM?� OpenFOAM ist ein allgemein programmierbares Softwaretool für

Anwendungen in Computational Fluid Dynamics.

� Für Simulationen im 3-dimensionalen Raum.

� OpenFOAM ist ein frei verwendbares Open Source Programm.

� Wurde unter der GNU General Public Licence programmiert.

� Frei zu verwenden bedeutet, dass man die Software auf über 1000 CPUs parallel verwenden könnte, ohne Support oder Lizenzen zu bezahlen!

� Die Software wird weltweit von vielen Anwendern aus der Industrie, Forschung und Universitäten weiter entwickelt.

� Die Open Source CFD Toolbox ist in C++ geschrieben.

� OpenFOAM steht für Field Operation And Manipulation.

Page 5: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Einleitung OpenFOAM

� OpenFOAM ist eine Toolbox, keine Black-Box!

� OpenFOAM liefert den ganzen Programmiercode aus.

� Eigene Anwendungen für das jeweilige CFD Problem kann selbst entwickelt werden.

� Standardfunktionen können durch Bibliotheken zum eigenen Code gebunden werden.

� Top-Level-Solver Code beinhaltet die Gleichungen die gelöst werden sollen:

� Die Software versucht die natürliche Sprache der Strömungsmechanik nachzubilden.

� Verfügt über eine hoch entwickelte symbolische Benutzerschnittstelle, die es möglich macht, spezielle Gleichungssysteme ohne großen Programmieraufwand zu implementieren.

Page 6: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Kommerzielle Software

� Übliche kommerzielle CFD-Solver:� Überwiegend nur ein Programm (Executable) für alle Problemstellungen in

der Strömungsmechanik.

� Innerhalb des Codes selbständige Umschaltung der Algorithmen.

� Programmiert in Fortran oder C, alte Grundstrukturen, aber stetig erweitert.

� Keine Einsicht im Programmcode und auch nicht veröffentlicht.

� Gegenüber OpenFOAM erscheint immer eine Lösung.

Page 7: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

OpenFOAM Versionen

1.5

NABLA

OpenCFD

1.6 1.7 2.0 2.1

1.5-dev 1.6-ext 2.0-ext

OpenFOAM Extend

demnächst

� Zwei hauptsächliche Entwicklungen von OpenFOAM®

Page 8: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Was ist der Unterschied?

� OpenFOAM-2.1.x ist die stabilere Version, die als ausführbaren Dateien angeboten werden.

� Die Version sollte für die meisten Anwender die erste Wahl sein.

� Beinhaltet die neuesten Fehlerbeseitigungen (bug-fixed)

� Nachteil: Gegenüber der OF Extend Version weniger getestet .

� OpenFOAM -1.6-ext hat keine Beziehung mit OpenCFD.

� Wird überwiegend von der Community entwickelt.

� Sollte in der offizielle Version besondere CFD Methoden fehlen, lohnt sich ein Blick in der Extend Version (Beispiel: GGI, Block Matrix und Block Solver).

Page 9: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

OpenFOAM Mathematische Sprache

solve(

fvm::ddt(rho, U)+ fvm::div(phi, U)+ turbulence->divRhoR(U)==- fvc::grad(p)

);

∂ρU

∂ t+∇⋅ϕU U �∇⋅ρR=�∇ p

1. Locate rate of change ρU

2. Convective rate of change of ρU

3. Viscous dissipation (laminar + turbulent)

4. Pressure gradient

� „solve“-Funktion hat verschiedene Aufgaben, abhängig vom Typ

� +,-, == Operatoren wurden in OpenFOAM neu definiert

� „divRhoR“-Funktion wird abhängig vom Turbulenzmodell definiert

� Verbessert die Lesbarkeit des Codes!

Page 10: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

OpenFOAM Mathematische Sprache

Quelle: Dokumentation OpenFOAM

Page 11: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

OpenFOAM Struktur

� FoamX wurde seit der OpenFOAM Version 1.4 eingestellt.� Die Entwicklung von Lösern ging schneller voran als das GUI anzupassen.� Harte Linux-Anwender arbeiten schneller mit der Konsole als mit der Maus.

Quelle: Dokumentation OpenFOAM

X

Page 12: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Aufbau von OpenFOAM

� Was ist in der OpenFOAM Distrubition?� $HOME/OpenFOAM/

� OpenFOAM-2.1.x/� src/ Quellcode

� applications/ Anwendungsprogramm mit Quellcode

� lib/ Shared-Object Bibliotheken

� wmake/ Compiler Skripte

� bin/ zusätzliche Skripte

� doc/ Dokumentation

� etc/ Daten und Konfigurationen

� tutorials/ Beispiele

� platforms/linux64GccDPOpt/ Ausführbaren Dateien (Doppel Präzision, 64bit)

� ThirdParty-2.1.x� openmpi-1.5.3/ Open Source High Performance Computing

� ParaView-3.12.0 / Visualisierungssoftware

� scootch_5.1.11 / Ein Tool für effiziente parallele Aufteilung

Page 13: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Navigation in OpenFOAM

� Navigation in der OpenFOAM Distrubition� Umgebungsvariablen werden in der Linux-Umgebung gesetzt,

um einfacher zu navigieren.

� Es werden Abkürzungen (alias) definiert, um Ordner schnell zu wechseln.

� $HOME/OpenFOAM/� OpenFOAM-2.1.x/ � foam $WM_PROJECT_DIR

� src/ � src $FOAM_SRC

� OpenFOAM/ � foamsrc

� finiteVolumen � foamfv

� applications/ � app $FOAM_APP

� solvers � sol $FOAM_SOLVERS

� utilities � util $FOAM_UTILITIES

� lib/ � lib $FOAM_LIB

� tutorials/ � tut $FOAM_TUTORIALS

Page 14: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

OpenFOAM Benutzer Ordner

� OpenFOAM Benutzer-Ordner:� In einer Standardinstallation befindet sich der Benutzer-Ordner

innerhalb der OpenFOAM Installation.

� Der Ordnername setzt sich wie folgt zusammen:� ${LOGNAME}-2.1.x

� Beispiel: $HOME/OpenFOAM/tian-2.1.x

� Alias: „run“ � $HOME/OpenFOAM/tian-2.1.x/run

� Die Simulationsfälle sollten aus dem „run“ gestartet werden.� Umgebungsvariable: $FOAM_RUN

Page 15: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Aufbau eines Simulationscases

� Die oberste Ebene bezeichnet den Namen des Simulationsordners

� System Ordner:

� Einstellungen und Definitionen für den Löser

� Constant Ordner:

� Stoffdaten und Netzinformationen

� Zeit Ordner:

� Anfangs- und Randbedingungen

Page 16: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Was ist der Unterschied?

� „polyMesh“-Beschreibung:� „face“ basierte Beschreibung

� Jeder „face“ ist ausgerichtet an Eigentümerzelle (P) und Nachbarzelle (N)

� „Internal face“ ist maximal mit 2 Zellen verbunden.

� Ist ein „face“ ein Begrenzungsfläche ist der Nachbarzellenindex = -1.

� constant/polyMesh/� points/ Liste der Punkte als Vektoren

� faces/ Liste der Faces inkl. der Punkt-Indexe

� owner/ Liste der Eigentümerzellen, der Indes = Face index

� neighbour/ Liste der Nachbarzellen, der Index = Face Index

� boundary/ Liste der Patches

Quelle: Dokumentation OpenFOAM

Page 17: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

„polyMesh“-Beispiel

� polyMesh-Beispiel „faces“:

// * * * * * * * * * * * * * * * * * * * * * //8855078(4(1 543 59621 59079)4(542 59620 59621 543)4(59078 59079 59621 59620)4(2 544 59622 59080)4(543 59621 59622 544)4(59079 59080 59622 59621)4(3 545 59623 59081)4(544 59622 59623 545)4(59080 59081 59623 59622)4(4 546 59624 59082)…)

� polyMesh-Beispiel „points“:

// * * * * * * * * * * * * * * * * * * * * * //

3012978

(

(0 46.175 2.384186e-07)

(0.07005545287 46.175 2.384186e-07)

(0.1401109057 46.175 2.384186e-07)

(0.2101663586 46.175 2.384186e-07)

(0.2802218115 46.175 2.384186e-07)

(0.3502772643 46.175 2.384186e-07)

(0.4203327172 46.175 2.384186e-07)

)

Page 18: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

„polyMesh“-Beispiel

� polyMesh-Beispiel „boundary:

// * * * * * * * * * * * * * * * * * * * * * * * * * * *//

2

(

movingWall Boundary Patch Name

{

type wall; Art des Patches

nFaces 20; Anzahl der Faces

startFace 760; Startposition der Face-Liste

}

fixedWalls

{

type wall;

nFaces 60;

startFace 780;

}

)

Page 19: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Vernetzung in OpenFOAM

� Gitter in OpenFOAM� OpenFOAM arbeitet in einem 3-dimensionalen

Kartesischen Koordinatensystem� Für 1- und 2- dimensional sowie achsensymmetrische

Probleme werden in einem 3D Gitter simuliert durch Anwenden von spezifischen Randbedingungen

� Eine Zelle hat eine nicht eingeschränkte Anzahl von Seitenflächen (faces)

� Eine Seitenfläche kann beliebig viele Kanten haben� Keine Einschränkung bezüglich der Ausrichtung von

Seitenflächen (face alignment)� Dies ermöglicht eine besondere Vernetzungsfreiheit

und manipulation in OpenFOAM, bekannt als „polyMesh“

Page 20: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Netzgeneration mit SnappyHexMesh

� snappyHexMesh benötigt ein Hintergundnetz� Das Netz kann vorab schon verfeinert werden.

� snappyHexMeshDict:� Zu finden im Unterordner „/system“ eines Simulationsfalles.� Das Dictionary beinhaltet Schlüsselwörter zum Steuern der

Vernetzung.� snappyHexMesh benötigt Oberflächengeometrie

� Geometrie kann ein STL Format sein.� Die Vernetzung bringt auch eigene Standardgeometrien mit wie

Kugel, Zylinder und Box.� decomposeParDict:

� Zu finden im Unterordner „/constant“ eines Simulationfalles.� Ist für die Parallelisierung zuständig.� Wird benötigt auch wenn nur einer CPU gerechnet wird.

Page 21: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Hintergundnetz - blockMesh

Quelle: Jukka-Pekka Keskinen, Ville Vuorinen & Martti Larmi, Aalto university

� „blockMesh“-Tool� Einfache Geometrie können mit dem Tool „blockMesh“ generiert

werden.� Für „snappyHexMesh“ sollte das Hintergrundnetz das Gebiet voll

umschlingen� Das Breite/Höhe/Tiefe-Verhältnis sollte nahe bei 1 sein

Page 22: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

SnappyHexMesh

Cell-Spliting(castellatedMesh)

Regionen außerhalb des Tylinders werden nach der Splittung entfernt.

Snapping(snap)

Das Netz wird an anhand der Oberflächengeometrie deformiert.

Add Surface layers(addLayers)

Es wird eine Grenzschicht generiert.

Page 23: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Beispiel: snappyHexMesh

Zuluftdrallauslass Abluftgitter

Quelle: HVAC GUI Tool für OpenFOAM

Page 24: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Bezugsquelle OpenFOAM-2.1.x?

� Offizielle Version OpenFOAM� Version vom 26.03.2012: OF-2.1.x

� Download: http://www.openfoam.com/download

� Verfügbar als:� UBUNTU/DEBIAN Pakete (source code and binaries)� SuSE/RPM Pakete (source code and binaries)� Source Pakete� GIT Repository (Tagesaktuell)

Page 25: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

� Erweiterte Version OpenFOAM� Version vom 26.03.2012: OF-1.6.ext

� Download: git://openfoam-extend.git.sourceforge.net/gitroot/openfoam-extend/openfoam-extend

� Verfügbar als:� Live Distrubitation(source code and binaries)� GIT Repository (Tagesaktuell)

Bezugsquelle OpenFOAM-1.6-ext?

Page 26: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

OpenFOAM-1.6-ext | The Extend Portal

Quelle: https://www.extend-project.com

� Project:� Kerninformationen über die Entwicklung von OpenFOAM® (features, roadmap,

objectives)

� Community:� Treffpunkte, Veranstaltungen, Gruppierungen von Gleichgesinnten, Stammtische

� Network:� Präsentationen von OpenFOAM® Codes, Werbung von Universitäten und Firmen

Page 27: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Anwendungsforen im Internet | Get Help?

Internationales Forum

Quelle: https://www.cfd-online.de

Deutschsprachiges Forum

Quelle: https://www.cad.de

� Erfahrungsaustausch und/oder Hilfestellungen bei der Durchführung von Simulationen durch Foren im Internet möglich

� Gemeinsames Erarbeiten von Problemstellungen

Page 28: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Wo bekommt man sonst noch Unterstützung?

� Von der Firma OpenCFD� Dokumentation:

� Internetseite: http://www.openfoam.com/docs/� Doxygen:

� Internetseite: http://www.openfoam.org/docs/cpp/

� Über Foren im Internet� CAD.de:

� Internetseite: http://www.cad.de� CFD Online:

� Internetseite: http://www.cfd-online.com� Extend Project:

� Internetseite: http://www.extend-project.com

� Sonstiges� OpenFOAM Wiki‘s, Google Suchmaschine, vom Quellcode, usw.

Page 29: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Questions and Discussion

Vielen Dank

Noch fragen? Nein?Dann zur Praxis

Page 30: OPENFOAM - TU Dresden · PDF fileInhaltsverzeichnis Einleitung und Historisches Was ist OpenFOAM? OpenFOAM Mathematische Sprache Strukturen, Aufbau und Navigation in OpenFOAM Community

Download‐Link, um das passende Video herunterzuladen 

http://www.sendspace.com/file/c8kpto