Simulation von Flügelprofilen

Unter Linux mit OpenFoam
 
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Simulation von Flügelprofilen

 · 
Gepostet: 04.11.2011 - 10:37 Uhr  ·  #1
Ich habe mir zum Ziel gesetzt, Flügelprofile am Computer zu simulieren. Ich möchte also so etwas erreichen:

http://www.youtube.com/watch?v=W_E8PVAaNEs

Bisher habe ich keine Erfahrung damit, wollte euch aber an meinen Fortschritten teilhaben lassen. Falls der ein oder andere in das Projekt einsteigen und mir helfen mag, könnt ihr euch gerne hier beteiligen.

Als Betriebssystem habe ich mir Ubuntu-Linux ausgesucht, ganz einfach, weil es für jeden kostenlos zu bekommen ist. Sämtliche Simulationssoftware ist im Gegensatz zu Windows, wo diese teilweise extrem teuer werden kann, kostenlos. Ich persönliche arbeite viel mit unterschiedlichen Linux-Distributionen, aber auch häufig unter Windows und MacOS. Selbst wenn jemand keine Erfahrung mit Linux hat, muss ihn das aber nicht erschrecken. Ich werde mich bemühen, alle Schritte so zu beschreiben, dass jeder sie nachvollziehen kann. Auch funktioniert Ubuntu in seiner Standardversion ganz ähnlich wie Windows und sieht nur ein bischen anders aus. Ubuntu ist ein sehr einsteigerfreundliches Linux, dass sich parallel zum vorhandenen Betriebssystem installieren lässt. Außerdem hat man die Möglichkeit, Linux als virtuelle Maschine zu installieren. Dabei wird im bestehenden Betriebssystem ein Computer simuliert, auf dem man Linux installieren kann. Dafür benötigt man ein Programm, in dem diese Virtuelle Maschine ausgeführt werden kann, z.B. den VMWare-Player unter Windows oder Parallels unter MacOS. Das hat den Vorteil, dass man am existierenden System nichts ändert und die virtuelle Maschine wie eine gewöhnliche Datei wieder löschen kann. Zusätzlich gibt es für Windows noch das Programm cygwin, das es erlaubt, Linuxprogramme auch unter Windows zu nutzen. Man muss also nicht komplett auf seine gewohnte Arbeitsumgebung verzichten, nur weil man mal ausprobieren will, wie man Flügelprofile simuliert. Ganz wichtig bei der Installation von Linux ist, dass ihr euch euer Administratorpasswort, das sogenannte root-Passwort merkt. Bei Fragen stehe ich auch gerne zur Verfügung.

Nun zum praktischen Teil. Wir haben also einen PC, auf dem Ubuntu (bei mir Version 10.04) installiert ist. Das kann entweder das alleinige Betriebsystem sein, es ist parallel zu einem anderen Betriebssystem installiert oder es läuft auf dem vorhandenen Betriebssystem als virtuelle Maschine. Bei mir ist die englische Version installiert. Das hat für mich den Vorteil, dass man zu Fehlermeldungen leichter eine Lösung im Internet findet. Für euch hat das den Nachteil, dass ihr entweder auch die englische Version installiert, oder dass ihr versuchen müsst, einzelne Begriffe zu übersetzten.

1. OpenFoam installieren
Dafür klickt man auf die Schaltfläche "Applications->Accessories->Terminal". Daraufhin öffnet sich eine textbasierte Befehlskonsole, wie es sie grundsätzlich auch unter Windows und MacOS gibt. Man befindet sich zu Beginn automatisch in seinem Homeverzeichnis. Zu allererst installieren wir einen Texteditor, mit dem wir Dateien bearbeiten können. Normalerweise geschieht das aber schon automatisch bei der Installation des Betriebssystems. Ich führe es nur der Vollständigkeit halber auf. Die Installation funktioniert ganz einfach, indem man den Befehl "sudo apt-get update && sudo apt-get install gedit" (ohne die äußeren Anführungszeichen) eingibt und mit der [Enter](auch "Return" genannt)-Taste bestätigt.

Zunächst muss Ubuntu nun beigebracht bekommen, wo es die Installationsdateien für Openfoam findet. Dafür muss der Befehl "sudo gedit /etc/apt/sources.list" eingegeben. Es öffnet sich der Texteditor, den wir vorher installiert haben. Irgendwo, vorzugsweise am Ende, "deb http://www.openfoam.com/download/ubuntu oneiric main" (für Ubuntu 10.4 lucid statt oneiric) einfügen abspeichern und Editor schließen. Danach "sudo apt-get update" in der Befehlskonsole ausführen.

Um herauszufinden, welches die aktuellsten verfügbaren Versionen sind, führt man "sudo apt-cache search openfoam" aus und installiert diese z.B. mit "sudo apt-get install openfoam201 paraviewopenfoam3101".

Jetzt muss Linux wissen, wo es die installierten Dateien findet. Dafür führt man "echo "source /opt/openfoam210/etc/bashrc" >> ~/.bashrc" (für Ubuntu 11.02 201 statt 210) und "source ~/.bashrc" aus.

Für die OpenFoam-Version von ParaView muss man nun noch die Lesebibliotheken erstellen. Dafür ist ein weiteres kleines Programm notwendig, dass sich mit "sudo apt-get install cmake" installieren lässt. Danach geht es mit "cd $FOAM_UTILITIES/postProcessing/graphics/PV3Readers", "sudo ./Allwclean && sudo ./Allwmake" weiter. Abschließend wechselt man zurück ins Homeverzeichnis "cd ~".

Nun muss ein Arbeitsverzeichnis für OpenFoam erstellt werden "mkdir -p $FOAM_RUN".

Anschließend werden die Beispiele dort hin kopiert "cp -r $FOAM_TUTORIALS $FOAM_RUN" und man wechselt in das entsprechende Verzeichnis "cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity"

2. Vorgefertigtes Mesh erstellen
Endlich lässt sich das Programm zum ersten Mal starten und ein Mesh erstellen "blockMesh". Dabei wird ein Ordner mit dem Namen "0" angelegt. Dieser beinhaltet die Datei p, die Informationen über die Druckverhältnisse und die Datei U, die Informationen über die vorhandenen Geschwindigkeiten enthält. In "constant/transportProperties" wird die Reynoldszahl eintragen. In "system/controlDict" steht, mit welchen Parametern die Simulation ausgeführt werden soll. In erster Linie sind das Start- und Endzeitpunkt sowie die Schrittgröße. Die Schrittgröße ergibt sich aus der Anzahl der Zellen im Mesh und der größten zu erwartenden Gerschwindigkeit. Sie darf höchsten (Kleinste Zellgröße / Höchste Geschwindigkiet) betragen. Ansonsten werden die Ergebnisse ungenau.

3. Beispiel berechnen
Man berechnet des Beispiel mit "icoFoam".

4. Ergebnisse betrachten
Ansehen kann man das Ergebnis mit "paraFoam". Wenn man dort mit der linken Maustaste auf den grünen Button "Apply" klickt, sollte man einen Quader sehen. Wenn man unter "Display->Color By" eins der "U"s auswählt und dann mit der linken Maustaste oben auf den grünen dreieckigen Abspiel-Button klickt, verändert sich das Bild. Wählt man einen Parameter mit Würfel davor, sind die Farbverläufe pixelig. Bei Parametern mit Kreis davor werden die Übergänge weichgezeichnet.
Die Verläufe werden standardmäßig von blau nach weiß dargestellt. Üblicher ist aber blau über grün nach rot. as lässt sich unter "Edit Color Map->Chose Preset->Blue to Red" umstellen.

5. Eigene Geometrie (den Flügel) erstellen
Für die Simulation muss man zunächst ein sogenanntes Mesh (auch Grid genannt) erstellen. Das Programm gmsh (sudo apt-get install gmsh), das auch für Windows erhältlich ist (http://www.geuz.org/gmsh/), könnte dafür geeignet sein. Man startet es nach der Installation mit dem Befehl "gmsh &". Eine Linie kann man nicht direkt malen, sondern muss erst zwei Punkte sezten, die man dann mit einer Linie verbinden kann.
Demovideos: http://www.geuz.org/gmsh/screencasts/
Es wird zwischen der Geomtry, der geometrischen Beschreibung des Modells, und dem Mesh, dem Simulationsmodell, unterschieden. Es gibt also die Geometrie z.B. "Zylinder", die beschreibt, wie ein Objekt aussieht. Da diese aber unendlich fein ist, würde es nun auch unendlich lange dauern, so etwas zu simulieren. Man braucht also für die Simulation ein ungenaueres Modell, das sich in endlicher Zeit simulieren lässt. Dafür wird anscheinend ein Mesh (Netz) über die geometrische Beschreibung gelegt. Die Feinheit kann man aber nur ändern, wenn man die geometrische Beschreibung hat. Das kann man sich ganz gut bildlich vorstellen. Nehmen wir mal an, ein Künstler hat ein Gesicht aus Maschendrahtzaun modelliert (die kommen ja auf die wildesten Ideen). Jetzt hat man zwar einen groben Eindruck der Gesichtsform, kann aber nicht sagen, ob der Mensch, der Modell gestanden, hat vielleicht zwischen den Maschen einen Pickel hatte.
Geometrie und Mesh werden (in gmsh) getrennt voneinander gespeichert. Die Gemometrie als *.geo und das Mesh als *.msh (wer hätte das gedacht).
Zu Anfang dreht man sich am besten die Achse ein wenig. Sonst kann es sein, dass man Punkte, die auf ein und der selben Achse liegen nicht sieht. Das kann für Verwirrung sorgen. Dafür hält man die linke Maustaste gedrückt und bewegt gleichzeitig die Maus. Die Achsenanzeige sollte dann etwa so aussehen:



Zunächst muss man sich dann Stützpunkte zeichnen. Die Zahlenangaben sind dabei in Meter zu verstehen.



Mit deren Hilfe kann man dann Linien ziehen.



Diese wiederum dienen dazu, eine Fläche anzulegen. Mit "Mesh->1D" und "Mesh->2D" kann man dann ein Mesh anlegen. Um es etwas deutlicher abzuzeichnen, kann man unter "Options->Mesh->Visibility->Surface faces" auswählen.



Über "Geometry->Elementary Entities->Extrude->Translate" kann man die Fläche dann in eine zusätzliche Dimension strecken und über die entstandenen Flächen ein Volumen erstellen.



Über "Mesh->3D" kann man dann ein dreidimensionales Mesh durch das Volumen legen. Wenn man "Surface faces" wieder abwählt, sieht das so aus:



Die zugehörige *.geo-Datei findet ihr im Anhang.

Man sollte jetzt sowohl die Geometry als auch das Mesh abspeichern. Die Geometrie speichert man über "File->Save as", das Mesh über "File->Save Mesh". OpenFoam, das eigentliche Simulationsprogramm versteht aber das msh-Format nicht. Deswegen muss das noch umgewandelt werden. Die neuste Version von gmsh kann wohl schon direkt als *.foam abspeichern, die ist aber noch nicht bei Ubuntu dabei.

Man kann aber den Befehl "gmshToFoam meinMesh.msh" nutzen, um die Dateien zu konvertieren. Das hat bei mir allerdings noch nicht geklappt. Es müssen sich die OpenFoam-Steuerdateien und Unterordner im aktuellen Verzeichnis vorhanden sein. Deswegen erstellt man am einfachsten die Kopie eines Tutorials und kopiert die .msh-Datei dort hin.

Zusätzlich zum Geometrie-Mesh muss man noch ein Mesh für die Umgebung definieren, das in .../costant/polyMesh/blockMeshDict beschrieben wird. Das muss vermutlich groß genug für das Geometrie-Mesh sein, was wohl auch der Grund dafür ist, das meine bisherigen Importversuche fehlgeschlagen sind.

Standardmäßig ist die als Quader beschrieben. Meter ist hier als Basiseinheit mit "convertToMeters 1" voreingestellt. Man kann aber auch z.B. mit "convertToMeters 0.1" Zentimeter oder mit "convertToMeters 0.001" Millimter als Einheit festlegen. Zu Anfang der Datei stehen die acht Eckpunkte. Danach wird der Quader als Hexagon definiert. Die Ziffern in der ersten Klammer bezeichnen die Eckpunkte nach ihrer Reihenfolge. Die Position, an der sie aufgelistet sind ist wichtig. Danach wird angeben in wie viele Zellen das MEsh in x-, y- und z-Richtung aufgeteilt werden soll. Die letzte Klammer dieser Zeile beschreibt, wie die Zellengröße sich zueinander ändern soll. (1 1 1) ist gleichmäßig. Inlet bezeichen die Eingangsfläche der Strömung und Outlet die Ausgangsfläche.

Gibt man den Befehl snappyHexMesh im case-Ordner ein, wird das Umgebungs-Mesh genauer an das Geometrie-Mesh angepasst. Die Ordner, die dadurch erstellt werden, müssen in das Verzeichnis 0 kopiert werden.

6. Eigene Simulation starten
In .../system/controlDict wird festgelegt wie lange und in wie vielen Schritten simuliert werden soll.

Der Ablauf ist wohl, dass man zunächst die Randbedingungen festlegen muss. Das sind z.B. Temperatur, Dichte der Luft und Windgeschwindigkeit. Dann muss der Rotor aktiv im Luftstrom gedreht und das Drehmoment (und somit die Leistung) gemessen werden. Hat man nicht gleich die optimale Drehgeschwindigkeit gewählt, muss die Messung mit einer anderen wiederholt werden, bis man sich sicher ist, das MAximum gefunden zu haben. Dieses Vorgehen muss für jede Windgeschwindigkeit wiederholt werden.
Anhänge an diesem Beitrag
Point(1) = {0, 0, 0, 1e+22};
Point(2) = {0, 0, 5, 1e+22};
Point(3) = {0, 0, -5, 1e+22};
Point(4) = {0, 0, -47.5, 1e+22};
Point(5) = {0, 0, 47.5, 1e+22};
Point(6) = {42.5, 0, 47.5, 1e+22};
Point(7) = {-42.5, 0, -47.5, 1e+22};
Point(8) = {-52.5, 0, -47.5, 1e+22};
Point(9) = {52.5, 0, 47.5, 1e+22};
Point(10) = {0, 0, 90, 1e+22};
Point(11) = {0, 0, -90, 1e+22};
Point(12) = {0, 0, -100, 1e+22};
Point(13) = {0, 0, 100, 1e+22};
Point(14) = {0, 200, 90, 1e+22};
Point(15) = {0, 200, 47.5, 1e+22};
Point(16) = {42.5, 200, 47.5, 1e+22};
Point(21) = {0, 200, 5, 1e+22};
Point(25) = {0, 200, -47.5, 1e+22};
Point(26) = {-52.5, 200, -47.5, 1e+22};
Point(31) = {0, 200, -100, 1e+22};
Point(35) = {0, 200, -90, 1e+22};
Point(40) = {-42.5, 200, -47.5, 1e+22};
Point(45) = {0, 200, -5, 1e+22};
Point(50) = {52.5, 200, 47.5, 1e+22};
Point(55) = {0, 200, 100, 1e+22};
Circle(1) = {11, 4, 7};
Circle(2) = {7, 4, 3};
Circle(5) = {12, 4, 8};
Circle(6) = {8, 4, 2};
Line(10) = {12, 11};
Circle(12) = {3, 5, 9};
Circle(13) = {9, 5, 13};
Circle(14) = {10, 5, 6};
Circle(15) = {6, 5, 2};
Line(16) = {10, 13};
Circle(20) = {14, 15, 16};
Circle(21) = {16, 15, 21};
Circle(22) = {21, 25, 26};
Circle(23) = {26, 25, 31};
Line(24) = {31, 35};
Circle(25) = {35, 25, 40};
Circle(26) = {40, 25, 45};
Circle(27) = {45, 15, 50};
Circle(28) = {50, 15, 55};
Line(29) = {55, 14};
Line(31) = {10, 14};
Line(32) = {6, 16};
Line(36) = {2, 21};
Line(40) = {8, 26};
Line(44) = {12, 31};
Line(48) = {11, 35};
Line(52) = {7, 40};
Line(56) = {3, 45};
Line(60) = {9, 50};
Line(64) = {13, 55};
Line Loop(18) = {14, 15, -6, -5, 10, 1, 2, 12, 13, -16};
Plane Surface(18) = {18};
Line Loop(33) = {14, 32, -20, -31};
Ruled Surface(33) = {33};
Line Loop(37) = {15, 36, -21, -32};
Ruled Surface(37) = {37};
Line Loop(41) = {-6, 40, -22, -36};
Ruled Surface(41) = {41};
Line Loop(45) = {-5, 44, -23, -40};
Ruled Surface(45) = {45};
Line Loop(49) = {10, 48, -24, -44};
Ruled Surface(49) = {49};
Line Loop(53) = {1, 52, -25, -48};
Ruled Surface(53) = {53};
Dateiname: Savonius_S2.geo.txt
Dateigröße: 2.45 KB
Titel: Einfaches Savonius S-Profil in gmsh erstellt
Information: Gegebenenfalls .txt-Endung entfernen (war für Upload notwendig)
Heruntergeladen: 894
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 22.11.2011 - 17:35 Uhr  ·  #2
Administrator
Avatar
Geschlecht: keine Angabe
Herkunft: Elsfleth
Alter: 34
Beiträge: 4105
Dabei seit: 04 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 23.11.2011 - 17:09 Uhr  ·  #3
sehr interessant....und ich hab einen mac :-)
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 23.11.2011 - 17:14 Uhr  ·  #4
Administrator
Avatar
Geschlecht: keine Angabe
Herkunft: Elsfleth
Alter: 34
Beiträge: 4105
Dabei seit: 04 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 23.11.2011 - 19:18 Uhr  ·  #5
kann man Datein aus anderen Programmen importieren, beispielsweise aus Solid works? Parasolids oder sonstige Austauschformate?
Dann könnte ich dir das eben fix zeichnen...

Gruß
Max
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 23.11.2011 - 21:00 Uhr  ·  #6
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 23.11.2011 - 21:18 Uhr  ·  #7
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 23.11.2011 - 22:17 Uhr  ·  #8
Ich hab jetzt mal nen Savonius in Google Sketchup gemalt:



Das Programm gibt es unter Linux nicht, aber ich hab grad keine Lust mich in eine der Alternativen einzuarbeiten. Für Google Sketchup kann man separat Plugins installieren, die Objekte als *.stl exportieren, was gmsh dann wieder öffnen kann. Dass sieht so aus:



Dateien gibts im Anhang.
Anhänge an diesem Beitrag
$MeshFormat
2 0 8
$EndMeshFormat
$Nodes
100
1 -50.711105880176 -33.8688553292169 200
2 -52.5 -47.4568551970992 0
3 -52.5 -47.4568551970992 200
4 -50.711105880176 -33.8688553292169 0
5 -45.466333698683 -21.2068551970992 200
6 -45.466333698683 -21.2068551970992 0
7 -37.1231060122937 -10.3337491848055 200
8 -37.1231060122937 -10.3337491848055 0
9 -26.25 -1.9905214984162 0
10 -26.25 -1.9905214984162 200
11 -13.5879998678823 3.25425068307686 0
12 -13.5879998678823 3.25425068307686 200
13 2.68778055367846e-14 99.9568551970993 0
14 10.9774760234813 88.4253534556007 0
15 -2.67015576316254e-14 89.87056559129771 0
16 13.5879998678824 98.16796107727529 0
17 21.2068551970993 84.1882058672312 0
18 26.2500000000001 92.9231888957823 0
19 29.9910222350201 77.4478774321194 0
20 37.1231060122938 84.57996120939301 0
21 36.731350670132 68.6637103941984 0
22 40.9684982585015 58.4343312205805 0
23 45.4663336986831 73.7068551970992 0
24 42.4137103941985 47.4568551970993 0
25 45.466333698683 21.2068551970992 0
26 50.7111058801761 33.8688553292169 0
27 50.7111058801761 61.0448550649815 0
28 52.5 47.4568551970992 0
29 -40.9684982585014 -36.4793791736179 0
30 -42.4137103941985 -47.4568551970993 0
31 -36.7313506701319 -26.25 0
32 -29.9910222350201 -17.4658329620791 0
33 -21.2068551970992 -10.7255045269672 0
34 -10.9774760234813 -6.48835693859782 0
35 2.68778055367846e-14 5.04314480290077 0
36 -2.67015576316254e-14 -5.04314480290076 0
37 13.5879998678823 -3.25425068307686 0
38 10.9774760234813 6.48835693859782 0
39 21.2068551970992 10.7255045269672 0
40 26.25 1.9905214984162 0
41 29.9910222350202 17.4658329620792 0
42 37.1231060122938 10.3337491848055 0
43 36.731350670132 26.25 0
44 40.9684982585014 36.4793791736179 0
45 -50.7111058801761 -61.0448550649816 0
46 -45.466333698683 -73.7068551970992 0
47 -40.9684982585014 -58.4343312205805 0
48 -37.1231060122937 -84.57996120939301 0
49 -36.731350670132 -68.6637103941984 0
50 -26.25 -92.9231888957823 0
51 -29.9910222350201 -77.4478774321193 0
52 -21.2068551970992 -84.1882058672312 0
Dateiname: Savonius_S.txt
Dateigröße: 8.21 KB
Titel: Savonius S-Form
Information: gmsh-Datei
Heruntergeladen: 721
Dateiname: SavoniusSim_S.txt
Dateigröße: 43.58 KB
Titel: Savonius S-Form
Information: Google Sketchup-Datei
Heruntergeladen: 721
Administrator
Avatar
Geschlecht: keine Angabe
Herkunft: Elsfleth
Alter: 34
Beiträge: 4105
Dabei seit: 04 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 23.11.2011 - 22:52 Uhr  ·  #9
ist das nun gut oder schlecht? :-D

Also als Iges könnte ich es auf jeden Fall abspeichern. Keine AHnung ob ich deinen Googlekram öffnen könnte aber das Teil neu zu zeichnen ist ja in wneigen Minuten erledigt...sag einfach bescheid wenn du das mal versuchen willst.

Gruß
Max
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 24.11.2011 - 08:33 Uhr  ·  #10
Zitat geschrieben von Menelaos

ist das nun gut oder schlecht? :-D


Tja, wenn ich das wüsste... Für mich ist es ja das erste Mal, dass ich mich ernsthaft damit auseinandersetze. Ich glaube, es ist mittelgut.

Anscheinend habe ich tatsächlich nur das Mesh exportieren können, aber nicht die Geometrie dahinter. Das scheint ein Unterschied zu sein. Es gibt also die Geometrie z.B. Zylinder, die beschreibt, wie ein Objekt aussieht. Da die aber unendlich fein ist, würde es aber auch unendlich lange dauern, so etwas zu simulieren. Man braucht also ein ungenaueres Modell, das sich in endlicher Zeit simulieren lässt. Dafür wird anscheinend ein Mesh (Netz) über die geometrische beschreibung gelegt. Die Feinheit kann man aber nur ändern, wenn man die geometrische Beschreibung hat. Das kann man sich ja auch ganz gut bildlich vorstellen. Nehmen wir mal an, ein Künstler hat ein Gesicht aus Maschendrahtzaun modelliert (die kommen ja auf die wildesten Ideen). Jetzt hat man zwar einen groben Eindruck der Gesichtsform, kann aber nicht sagen, ob der Mensch, der Modell gestanden hat vieleicht zwischen den Maschen einen Pickel hatte.
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 24.11.2011 - 13:33 Uhr  ·  #11
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 24.11.2011 - 16:11 Uhr  ·  #12
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 28.11.2011 - 14:09 Uhr  ·  #13
Man kann auch Openfoam unter Ubuntu installieren. Mal sehen, ob ich damit schneller weiter komme.

Zunächst muss Ubuntu beigbracht bekommen, wo es die Installationsdateien für Openfoam findet. "sudo gedit /etc/apt/sources.list" Irgendwo, vorzugsweise am Ende, "deb http://www.openfoam.com/download/ubuntu lucid main" einfügen abspechern und editor schließen. Danach "sudo apt-get update".

Um herauszufinden, welches die aktuellste verfügbare Version ist, führt man "sudo apt-cache search openfoam" aus und installiert diese z.B. mit "sudo apt-get install openfoam201 paraviewopenfoam3101".

Für die OpenFoam-Version von ParaView muss man nun noch die Lesebibliotheken erstellen "cd $FOAM_UTILITIES/postProcessing/graphics/PV3Readers", "./Allwclean && Allwmake" und zurück ins Homeverzeichnis wechseln "cd ~".

Jetzt muss Linux wissen, wo es die installierten Dateien findet. Dafür führt man "echo "source /opt/openfoam201/etc/bashrc" >> ~/.bashrc" und "source ~/.bashrc" aus.

Nun muss ein Arbeitsverzeichnis für OpenFoam erstellt werden "mkdir -p $FOAM_RUN".

Anschließend werden die Beispiele dort hin kopiert "cp -r $FOAM_TUTORIALS $FOAM_RUN" und in das entsprechende Verzeichnis wechseln "cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity"

Endlich lässt sich das Programm zum ersten Mal starten und ein Mesh erstellen "BlockMesh"

Man berechnet des Beispiel mit "icoFoam".

Ansehen kann man das Ergebnis mit "paraFoam". Wenn man dort mit der linken Maustaste auf den grünen Button "Apply" klickt, sollte man einen Quader sehen. Wenn man unter "Display->Color By" eins der "U"s auswählt und dann mit der linken Maustaste oben auf den grünen dreieckigen Abspiel-Button klickt, verändert sich das Bild.

Mehr hab ich noch nicht rausgefunden.
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 29.11.2011 - 08:35 Uhr  ·  #14
So langsam glaube ich, OpenFoam ist tatsächlich, was ich brauche. Man kann damit angeblich das Moment an der Rotorachse bestimmen. Das kann dann wiederum über "2 x PI x UPM x 60 x Drehmoment = Leistung" umgerechnet werden.

Hier mal ein paar Beispiele, was mit OpenFoam machbar ist:

https://sites.google.com/site/…m-examples

http://www.youtube.com/watch?v=1xZ3W3ST1Lo

Das Handbuch mit mehreren Tutorials gibt es unter http://www.openfoam.com/docs/user/index.php

Bei OpenFoam wird für jede Berechnung ein sogenannter Fall (case) erstellt. Dieser besteht aus einem Verzeichnis, das einen sinvollen Namen z.B. "savonius_3mps"bekommt, und mehreren Dateien. Die Datei blockMeshDict dient der Erzeugung des Meshs über den Befehl "blockMesh" und liegt im Unterverzeichnis constant/polyMesh. Die Geometrie scheint in dieser Datei beschrieben zu werden.
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 29.11.2011 - 10:18 Uhr  ·  #15
Hier nochmal zur Archivierung die Installation von FreeCFD:

1. FreeCFD herunterladen
Dafür klickt man zunächt (meist) oben links auf die Schaltfläche "Applications->Internet->Firefox" wodurch sich der Internetbrowser Firefox öffnet. Der ist bei Ubuntu normalerweise gleich mit installiert. Viele kennen den vermutlich ohnehin schon z.B. von ihrem Windowssystem und er funktioniert ganz ähnlich wie der Internet Explorer unter Windows oder Safari unter MacOS. Als Internetadresse muss man nun www.freecfd.com eingeben.
Um das Simulationsprogramm FreeCFD herunterladen zu können Muss man sich dort im Forum registrieren. Man klickt also den Button "Forum", klickt dort oben rechts auf "Register" und folgt den Anweisungen. Man bekommt danach eine Bestätigungsemail und kann sich einloggen. Das funktioniert also ganz ähnlich, wie hier im Forum auch.
Nachdem man sich dort eingeloggt hat, Findet man im Bereich "Download Free CFD" die neuste Version. Bei mir war das "Free-CFD.1.0.1 [BUG FIX]". Dort gibt es einen Link auf eine Datei mir der Endung .tar.gz. Das ist ein Archivformat, das unter Linux häufig verwendet wird, ähnlich wie zip (das man unter Linux genausogut benutzen kann). Man klickt jetzt mit der rechten Maustaste auf diesen Link und wählt im Menü, das sich jetzt öffnet "Save Link As...". Es öffent sich daraufhin eine Art Dateimanager. Auf dessen linker Seite findet ihr einen Ordner mit Haussymbol, der wie euer Nutzername heißt. Das ist euer Home-Verzeichnis. Dieses wird mit einem Linksklick markiert und das Archiv dort mit einem weiteren Linksklick auf "Save" gespeichert.
Jetzt muss das Archiv noch entpackt werden. Dafür klickt man auf die Schaltfläche "Applications->Accessories->Terminal". Daraufhin öffnet sich eine textbasierte Befehlskonsole, wie es sie grundsätzlich auch unter Windows und MacOS gibt. Man befindet sich zu Beginn automatisch in seinem Homeverzeichnis. Dort gibt man den Befehl "tar -xvzf free-cfd-1.0.1.tar.gz" (ohne die äußeren Anführungszeichen) ein. Denkt daran, die Versionsnummern anzupassen, falls es eine neue Version gibt.

2. FreeCFD installieren
Das Programm ist jetzt aber noch nicht installiert. Es liegt in einer Art Rohform vor und zwar ist dies genau der Code, den der Programmierer geschrieben hat. Damit man es ausführen kann muss es zunächst in Maschinensprache übersetzt werden, die auch der Computer versteht. Man sagt dazu dass es kompiliert werden muss.
Zunächst müssen wir aber sicherstellen, dass einige Programme installiert sind, die von FreeCFD benötigt werden. Einige davon sind schon in einer Programmsammlung von Ubuntu vorbereitet worden und können ganz einfach mit dem Befehl "sudo apt-get install cmake libopenmpi-dev petsc-dev libparmetis-dev" (ohne Anführungszeichen) installiert werden. Dabei wird man nach seinem Administratorpasswort, das man bei der Installation von Ubuntu angegeben hat gefragt. Falls ihr z.B. Fedora, RedHat oder CentOS als Linux-Distribution nutzt, macht ihr das nicht mit dem Befehl "apt-get install ..." sondern "yum install ...". Die Programm-Pakete können dann unter Umständen aber anders heißen.
Unglücklicherweise funktioniert das für das Programm CGNS, das wir noch benötigen, nicht so einfach. Wir können dadurch aber schon für FreeCFD üben. Zunächst muss man sich das CGNS-Archiv z.B. von http://www.sourceforge.net/projects/cgns/files/cgnslib_2.5 herunterladen und im Home-Verzeichnis speichern, ähnlich wie man es vorher für FreeCFD ja auch schon gemacht hat. Für mich funktioniert Version 2.5-5. Das Paket libcgns-dev von Ubuntu scheint, zumindest in der aktuellen Version, nicht zu funktionieren. Falls jemand ein wenig mit den Versionen experimentieren mag, bin ich für Rückmeldungen dankbar.
In der Befehlskonsole geben wir jetzt den Befehl "tar -xvzf cgnslib_2.5-5.tar.gz" (ohne Anführungszeichen) ein. Das entpackt CGNS und sollte ganz ähmlich aussehen, wie vorher schon für FreeCFD. Mit dem Befehl "ls" in der Text-Konsole kann man sehen, welche Dateien und Ordner sich im aktuellen Verzeichnis befinden. Dort sollten jetzt unter anderem ein Ordner mit cgns und einer mit free-cfd im Namen existieren. Wir wechseln jetzt in den CGNS-Ordner "cd ~/cgnslib_2.5" und installieren CGNS "./configure && make && sudo make install". Das war es schon für CGNS.
Jetzt kommt FreeCFD an die Reihe. Wir wechseln in den FreeCFD-Programmcode-Ordner "cd free-cfd-1.0.1/src". Dort muss zunächst die Datei CMakeLists.txt angepasst werden "gedit CMakeLists.txt &" (Achtung: Linux unterscheidet Groß- und Kleinschreibung in Dateinamen im Gegensatz zu Windows). Hier sind die geänderten Abschnitte:
Zitat
...
set (CGNS_INCLUDE_DIRS "")
set (CGNS_LIBRARY_DIRS "")
set (PARMETIS_INCLUDE_DIRS /usr/include)
set (PARMETIS_LIBRARY_DIRS "")
set (PETSC_INCLUDE_DIRS /usr/lib/petscdir/3.0.0/include/)
set (PETSC_LIBRARY_DIRS "")
...
set (EXTRA_LIBS parmetis metis petsc petscvec petscmat petscdm petscksp cgns)
...

Speichern nicht vergessen. Jetzt kann FreeCFD endlich installiert werden "cmake . && make install".

3. FreeCFD starten
Für einen ersten Testlauf kann man in das Beispielverzeichnis von FreeCFD wechseln "cd ~/free-cfd-1.0.1/examples/wedge". In dem Beispiel befindet sich ein kleiner Fehler. Mann muss in der Datei wedge.in den Namen ramp.cgns durch wedge.cgns ersetzen. Wer nur sehen möchte, ob es überhaupt funktioniert und den Computer nicht lange rechnen lassen möchte, kann "number of steps" auf 100 reduzieren. mit dem Befehl "mpirun -np 1 ../../bin/freecfd wedge" startet man dann die Simulation. Das Ergebnis sollte eine lange Textausgabe sein. Im Befehl steht hinter -np eine Zahl. Diese gibt an, wie viele Prozessoren benutzt werden sollen. Aus der Ausgabe des Befehls "cat /proc/cpuinfo" kann man sich heraussammeln, wie viele Prozessorkerne einem zur Verfügung stehen.

4. Simulation ansehen
FreeCFD hat jetzt im aktuellen Verzeichnis einen Ordner mit dem Namen output angelegt. Dieser enthält mehrere Dateien "ls ./output". Sie enthalten die Simulationsergebnisse. Um sie anzusehen, kann man das Programm ParaView verwenden. Es lässt sich ganz einfach mit dem Befehl "sudo apt-get install paraview" installieren. Starten lässt es sich über den Befehl "paraview &". Über einen Linksklick auf die Schaltfläche "File->Open" oben links im Programmfenster öffnet sich ein Dateidialog. Dort klickt man doppelt auf output und danach noch einmal doppelt auf z.B. 50. Das sind die Ergebnisse nach dem 50sten Simulationsschritt. Man kann nun doppelt auf die Datei mit der Endung .pvtu klicken. Im Programm wird nun der Button "Apply" grün. Wenn im Programmbereich mit der Überschrift "Pipeline Browser" die Datei ausgewählt ist, erscheint bei einem Linksklick auf "Apply" ein Objekt im rechten Fenster. Wie man die Simulation nun ablaufen lässt, habe ich noch nicht herausgefunden.
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 29.11.2011 - 14:23 Uhr  ·  #16
Zur Archivierung die manuelle Installtion von gmsh:

Veraltete Anleitung für gmsh mit OpenFoam: http://openfoamwiki.net/index.php/Contrib_gmshFoam

Vermutlich ist die Version, die in Ubuntu enthalten ist, nicht aktuell genug. Deswegen hier die Anleitung für die manuelle Installation. Um einen Browser zu starten, klickt man zunächt (meist) oben links auf die Schaltfläche "Applications->Internet->Firefox" wodurch sich der Internetbrowser Firefox öffnet. Der ist bei Ubuntu normalerweise gleich mit installiert. Sollte das nicht geschehen sein, muss man die bekannte Befehlskonsole öffnen und den Befehl "sudo apt-get install firefox" starten. Viele kennen Firefox vermutlich ohnehin schon z.B. von ihrem Windowssystem und er funktioniert ganz ähnlich wie der Internet Explorer unter Windows oder Safari unter MacOS. Als Internetadresse muss man nun www.geuz.org/gmsh eingeben.

Unter der Überschrift "Downloads" klickt man mit der rechten Maustaste auf den Link "Linux" und wählt im Menu, das nun erscheint "Save Link as" aus. Es öffent sich daraufhin eine Art Dateimanager. Auf dessen linker Seite findet ihr einen Ordner mit Haussymbol, der wie euer Nutzername heißt. Das ist euer Home-Verzeichnis. Dieses wird mit einem Linksklick markiert und das Archiv dort mit einem weiteren Linksklick auf "Save" gespeichert. Das Ziel ist grundsätzlich beliebig, aber meine folgenden Beschreibungen beziehen sich aber immer auf das Home-Verzeichnis als Speicherort. Was ihr herunterladet ist eine Datei, die etwa "gmsh-2.5.0-Linux.tgz" heißt. Die Endung .tgz zeigt, dass es sich um ein Archivformat handelt, das unter Linux häufig verwendet wird, ähnlich wie zip (das man unter Linux genausogut benutzen kann).
Jetzt muss das Archiv noch entpackt werden. Dafür öffnet man wieder die Befehlskonsole. Dort gibt man den Befehl "tar -xvzf gmsh-2.5.0-Linux.tgz" ein. Denkt daran, die Versionsnummern anzupassen, falls es eine neue Version gibt. Mit "~/gmsh-2.5.0-Linux/bin/gmsh" kann man nun diese Version von gmsh starten. Zumindest bei mir kann man dabei aber auch nicht als *.foam speichern. Das liegt daran, dass man dafür zusätzlich gmshFoam benötigt und das funktioniert nur bis Version 1.5 von gmsh. Man ist also auf die Konvertierungsprogramme aus OpenFoam angewiesen.
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 02.12.2011 - 08:22 Uhr  ·  #17
Leider bekomme ich es nicht hin, ein Mesh aus gmsh in das OpenFOAM-Format zu konvertieren. Normalerweise ist das Vorgehen wie folgt:

1. Eigenes Fallverzeichnis erstellen, indem man einen Beispielorder kopiert z.B.: "cp -r $FOAM_RUN/tutorials/incompressible/icoFoam/cavity ~/savonius"
2. Mesh (im Anhang dieses Beitrages) in das neue Verzeichnis kopieren: "cp ~/Savonius_S2.geo.msh ~/savonius/"
3. In das Fallverzeichnis wechseln: "cd ~/savonius"
4. Mesh konvertieren: "gmshToFoam Savonius_S2.geo.msh"

Das funktioniert bei mir aber nicht. Die Konvertierung endet bei mir immer mit "Segmentation Fault". Jetzt weiß ich bisher nicht, ob das an meiner Installation von OpenFOAM oder meinem Mesh liegt.
Anhänge an diesem Beitrag
Dateiname: Savonius_S2.geo.msh.zip
Dateigröße: 11.76 KB
Titel: Mesh, erstellt in gmsh
Information: Nach dem Download mit "unzip Savonius_S2.geo.msh.zip" entpacken
Heruntergeladen: 461
Administrator
Avatar
Geschlecht: keine Angabe
Herkunft: Elsfleth
Alter: 34
Beiträge: 4105
Dabei seit: 04 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 02.12.2011 - 13:12 Uhr  ·  #18
tja...und nun herausfinden woran es liegt- ätzend :-(
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 03.12.2011 - 09:30 Uhr  ·  #19
Ich habe jetzt eine kleinere und einfachere Geometrie erzeugt (siehe Anhang). Damit tritt bei der Konvertierung kein Segmentation Fault mehr auf. Ich habe allerdings noch nicht herausgefunden, ob die anderen Meldungen Fehler sind und eine erfolgreiche Simulation des eigenen Meshes ist mir auch noch nicht geglückt :(
Anhänge an diesem Beitrag
Dateiname: Cylinder.zip
Dateigröße: 81.17 KB
Titel: Mesh und Geometrie eines Einfachen kleinen Cylinders
Information: Mit "unzip Cylinder.zip" entpacken
Heruntergeladen: 454
Moderator
Avatar
Geschlecht: keine Angabe
Herkunft: Süd-Niedersachsen
Homepage: xxlray.bplaced.net
Beiträge: 6461
Dabei seit: 11 / 2007
Betreff:

Re: Simulation von Flügelprofilen

 · 
Gepostet: 05.12.2011 - 12:42 Uhr  ·  #20
Parallel werde ich mich mal um einen weiteren Lösungsweg kümmern. Eines der beliebtesten 3D Programme für Linux ist blender. Das ist auch für Windows und Mac zu bekommen ( http://www.blender.org/download/get-blender/ ). Unter Ubuntu lässt es sich einfach mit "sudo apt-get install blender" installieren (sofern die universe-Pakete freigeschaltet sind). Dieses Programm kann Dateien im IGES und im STEP-Format speichern. Das wiederum kann durch das Programm NETGEN ( http://sourceforge.net/apps/me…/index.php ) gelesen werden (das auch für Windows zu bekommen ist). Leider ist es nicht (mehr) direkt in der Ubuntu-Paketverwaltung enthalten und muss deswegen manuell heruntergeladen, kompiliert und installiert werden.

NETGEN generiert dann ein Mesh zu Geometrie. Der Import in OpenFOAM funktioniert dann angeblioch folgendermaßen (noch nicht selbst getestet):

1. Mesh um "neutral" format aus NETGEN exportieren.
2. Neues Fallverzeichnis mit foamX erstellen: "Case Browser -> Rechtsklick -> Create Case".
3. Neutrales Mesh zu openFOAM konvertieren (netgenNeutralToFoam <Basisverzeichnis> <Fallname> <Meshdatei>) z.B.: "netgenNeutralToFoam /home/user test /home/user/OpenFOAM/Beispiele/ROHR".
4. Randbedingungsdatei anpassen und passende Namen setzen. "patch" durch "wall", "inlet", etc. ersetzen.
5. In foamX "field divtionary" bearbeiten und abspeichern.
6. Mesh in paraFoam betrachten und auf Fehler untersuchen. Dafür ins Fallverzeichnis wechseln und "paraFoam" ausführen
Gewählte Zitate für Mehrfachzitierung:   0