OpenFOAM in drei einfachen Schritten installieren mit RheologicRemix

In diesem Artikel geben wir eine Schritt-für-Schritt Installationsanleitung wie man unsere RheologicRemix Binaries installiert. Für Anfänger ist dies wohl der einfachste und für Profis wohl der schnellste Weg wie man OpenFOAM mit den wichtigsten Libraries und Unterstützungsprogrammen auf einer Reihe von Betriebssystemen zum Laufen bekommt.

Bevor wir loslegen, möchten wir noch darauf hinweisen, dass OpenFOAM eine Marke im Eigentum von ESI ist und wir gemäß der entsprechenden Trademark Guidelines dazu verpflichtet sind dies auch klar darzulegen. Die Installationsanleitung, die wir unten vorstellen betrifft unsere RheologicRemix Binaries die auf OpenFOAM basieren, aber was wir hier zeigen ist - wie man so schön sagt - not approved or endorsed by OpenCFD Limited, the producer of the OpenFOAM software and owner of the OPENFOAM® and OpenCFD® trade marks.

Was wir also hier zeigen ist, wie man unsere RheologicRemix Binaries installiert. Diesen basieren auf OpenFOAM und wurden von uns inklusive der meist verbreiteten Bibliotheken und Programme (zB Paraview und OpenMPI) für eine Reihe von Plattformen kompiliert. Soweit uns bekannt, ist dies die einfachste und schnellste Methode OpenFOAM aufzusetzen. Wir selbst verwenden diesen Prozess, wenn wir eine neue Maschine in Betrieb nehmen. Wer mehr Kontrolle über die Installation haben möchte oder besondere Compiler Flags oder Quellcode-Modifikationen ausprobieren möchte ist bei diesem Tutorial nicht richtig gelandet; im Kapitel Vertiefende Links verweisen wir auf weiterführende Quellen.

Die offiziell inkludierte Version von Paraview hinkt der neuesten erhältlichen Paraview-Version etwas hinterher. Man kann eine neuere Version von Paraview ohne Probleme parallel zur hier inkludierten über den Packetmanager der jeweiligen Linux Distribution installieren (für die meisten Distributionen sind entsprechende Pakete verfügbar). In RheologicRemix-3.0.1 nicht inkludiert sind die Tools foamyHexMesh und foamyQuadMesh - diese müssen auch bei der Installation über die offiziellen OpenFOAM apt-get Pakete im Nachhinein manuell kompiliert werden.

Für die Ungeduldigen

Einfach die folgenden Befehle im Terminal ausführen (die Zeile mit "bashrc" muss der Version angepasst werden):

$ cd ~ && wget http://rheologic.net/RheologicRemixLatest
$ tar -xvf RheologicRemixLatest
$ cat bashrc-OpenFOAM-3.0.1 >> .bashrc && source .bashrc

Fertig. Ja, das war Alles.

Alle Anderen: bitte weiterlesen!

Vorbereitung

Also los geht's! Für diese Anleitung gehen wir davon aus, das wir auf irgendeiner Art von Linux-System arbeiten und dass das Ausführen von einfachen Kommandos in einem Befehlsfenster bekannt ist. Selbst falls nicht, wird dieses Tutorial in den meisten Fällen zum Erfolg führen, vielleicht mit der einen oder anderen Google-Suche nach Kommandozeilen-Befehlen unter Linux/Unix. Ein häufig vorkommendes Szenario ist die Installation unter Ubuntu oder Kubuntu mit dem einen oder anderen Window-Manager. Um ein Befehlsfenster zu öffnen klickt man einfach auf das Ubuntu oder Kubuntu-Logo und gibt im Suchfeld "Terminal" ein. In den meisten Fällen bekommt man eine Liste der verfügbaren Befehlsfenster-Programme in denen man die unten angeführten Kommandos ausführen kann.

Schritt 1: Die RheologicRemix Binaries herunterladen

Um die Installation einfacher zu machen stellen wir einen Shortcut-Link zum dem Binary Archiv bereit, das auf den meisten modernen Linux-Distributionen funktionieren sollte: http://rheologic.net/RheologicRemixLatest. Im Terminal-Fenster kann man das Archiv so herunterladen:

$ wget http://rheologic.net/RheologicRemixLatest

Die heruntergeladene Datei heißt einfach RheologicRemixLatest und ist ein xz-komprimiertes Tar Archiv.

Wer eine spezifische Version oder eine Version für eines der weniger gebräuchlichen Betriebssysteme benötigt, geht einfach auf unsere RheologicRemix Download Seite und sucht sich das entsprechende Binary aus. Im Moment bieten wir Binaries für Ubuntu, CentOs und auch für ARM Prozessoren (RaspberryPi, Android) an. Im Zweifelsfall wählt man das neueste "Ubuntu"-Binary (dieses ist identisch mit dem oben verlinkten RheologicRemixLatest). Es wurde für x86-64bit Architekturen kompiliert und sollte auf den meisten modernen Linux-Distributionen laufen (wir haben jedoch nur Ubuntu getestet). Bitte nicht von den Dateinamen verwirren lassen - der Link zum Binary-Archiv mit dem Titel "Ubuntu-12.04-LTS up to Ubuntu 14" führt zu einer Archiv-Datei die RheologicRemix-2.3.x-6586d545d605-Ubuntu-12.04_LTS.tar.xz heißt. Obwohl diese nicht "Ubuntu 14" im Dateinamen stehen hat, funktioniert sie ohne Probleme unter Ubunut 14 (ab Ubuntu 12). Wer sie benötigt, findet auch RheologicRemixes die auf älteren Versionen von OpenFOAM basieren; einfach auf die entsprechende Schaltfläche klicken um diese Versionen anzuzeigen. Um also ein Binary herunterzuladen klickt man einfach auf den entsprechenden Link und speichert die Datei. Die heruntergeladene Datei ist ein komprimiertes Tar Archiv mit der Dateiendung .tar.xz. Ganz optional kann man die Datei mit pgp verifizieren und die Integrität des Downloads mit sha256 kontrollieren - weiter unten findet sich eine detaillierte Anleitung wie man verifiziert.

Schritt 2: Entpacken des Archives

Der nächste Schritt ist das Entpacken des Archives. Wir zeigen wie man das im home-Verzeichnis des Users macht. Dadurch erhält man einfache Pfade und es wird auch klar, dass die Installation mit Userrechten kein Problem ist. Wenn man die Binaries unter einem anderen Pfad aufsetzten will, muss man später einige Anpassungen and den Pfadvariablen vornehmen (siehe nächster Schritt). Das bedeutet, dass man auf jedem System, auf dem man Kommandos auf der Kommandozeile ausführen kann, auch unsere Binaries zum Laufen bekommen kann. Das Archiv, dass wir im vorigen Schritt heruntergeladen haben, enthält ein Top-Level Verzeichnis namens OpenFOAM und eine Text-Datei namens bashrc-OpenFOAM-2.3.0 (die Versionsnummer variiert je nach heruntergeladener Version). Wir entpacken das Archiv also in das home-Verzeichnis des Users mit einer der beiden folgenden Methoden. Bei der ersten Methode verwendet man einfach ein Archivierungs-Programm um das Archiv zu entpacken - wie im Screenshot gezeigt. In diesem Fall haben wir "Ark" verwendet, das Archivierungsprogramm, das mit KDE ausgeliefert wird. Aber man kann natürlich jedes beliebige andere Archivierungsprogramm verwenden, das das Dateiformat versteht.
In der zweiten Methode entpacken wir das Archiv gleich im Kommandozeilenfenster mit einem simplen Befehl; angenommen, das das Archiv im home-Verzeichnis des Users liegt, führt man dort einfach das folgende Kommando aus (den Dateinamen mit RheologicRemixLatest ersetzen, falls das Archiv mit dem Shortlink heruntergeladen wurde):

$ tar -xvf RheologicRemix-2.3.x-6586d545d605-Ubuntu-12.04_LTS.tar.xz

Im Terminal sieht man eine lange Listen von Pfadnamen vorbeiscrollen während das Archiv entpackt wird. Dieser Prozess kann einige Minuten dauern, abhängig von der Leistung des Systems. Der Output sieht ungefähr so aus:

$ tar -xvf RheologicRemix-2.3.x-6586d545d605-Ubuntu-12.04_LTS.tar.xz
bashrc-OpenFOAM-2.3.x
OpenFOAM/OpenFOAM-2.3.x/
OpenFOAM/OpenFOAM-2.3.x/.git/
OpenFOAM/OpenFOAM-2.3.x/.git/refs/
OpenFOAM/OpenFOAM-2.3.x/.git/refs/heads/
OpenFOAM/OpenFOAM-2.3.x/.git/refs/heads/master
...
[ around 70.000 more lines ]
...
OpenFOAM/ThirdParty-2.3.x/openmpi-1.6.5/config.log
OpenFOAM/ThirdParty-2.3.x/openmpi-1.6.5/config.status
OpenFOAM/ThirdParty-2.3.x/openmpi-1.6.5/libtool
OpenFOAM/ThirdParty-2.3.x/openmpi-1.6.5/Makefile
$

Sobald das Archiv fertig entpackt ist, hat man alles was man braucht um mit OpenFOAM zu arbeiten auf der Festplatte. Was noch zu tun ist, ist die Arbeitsumgebung (environment variables) einzurichten und die Installation zu testen.

Schritt 3: Umgebungsvariablen einrichten

OpenFOAM verwendet Umgebungsvariablen (environment variables) um Arbeitsverzeichnisse, Pfade zu Bibliotheken und so weiter zu bestimmen. Um diese zu setzen, haben wir eine Textdatei namens bashrc-OpenFOAM-2.3.x erstellt. Das einzige was in dieser Datei manuell verändert werden muss ist die Angabe der Anzahl der Prozessoren die OpenFOAM bei der Berechnung verwenden soll. Will man etwa 4 Prozessoren verwenden, öffnet man die Datei in einem Textbearbeitungsprogramm und löscht einfach das Hash-Zeichen (#) von der Zeile die lautet: #export WM_NCOMPPROCS=4 (das Hash-Zeichen zeigt einen Kommentar an), und speicher die Datei. Um OpenFOAM die Umgebungsvariablen mitzuteilen, fügt man sie am besten der .bashrc Datei hinzu. Dazu führt man das folgende Kommando im home-Verzeichnis aus:

$ cat bashrc-OpenFOAM-2.3.x >> .bashrc

Um zu testen ob alles eingerichtet ist, tippt man die folgenden Kommandos in das Terminal:

$ source .bashrc
$ env | grep OpenFOAM

Sieht man eine Reihe von Zeilen zu verschiedenen OpenFOAM Verzeichnissen, dann hat es geklappt. Damit ist der RheologicRemix vollständig installiert und man kann loslegen!

Installation verifzieren

Der eigentliche Installationsprozess ist mit dem setzen der Umgebungsvariablen abgeschlossen, wir zeigen hier aber noch einen kurzen Testlauf mit dem man überprüfen kann, ob auch alles funktioniert. Dazu verwenden wir den einfachsten Testfall aus dem OpenFOAM Turorial der 2D lid driven cavity flow (official tutorial) heißt.

Dazu einfach die folgenden Befehle ins Befehlsfenster eintippen. Zuerst wechseln wir in das Verzeichnis der Testsimulation, dann generieren wir das Mesh:

$ cd OpenFOAM-2.3.x/tutorials/incompressible/icoFoam/cavity
$ blockMesh
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.3.x                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
Build  : 2.3.x-6586d545d605
Exec   : blockMesh

[ more output ]

Patches
----------------
  patch 0 (start: 760 size: 20) name: movingWall
  patch 1 (start: 780 size: 60) name: fixedWalls
  patch 2 (start: 840 size: 800) name: frontAndBack

End

Wenn man keine Fehlermeldung bekommt, kann man die erste Simulation laufen lassen:

$ icoFOAM
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.3.x                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
Build  : 2.3.x-6586d545d605
Exec   : icoFoam

[ additional output ]

Starting time loop

Time = 0.005

Courant Number mean: 0 max: 0
smoothSolver:  Solving for Ux, Initial residual = 1, Final residual = 8.90511e-06, No Iterations 19
smoothSolver:  Solving for Uy, Initial residual = 0, Final residual = 0, No Iterations 0
DICPCG:  Solving for p, Initial residual = 1, Final residual = 7.55423e-07, No Iterations 35
time step continuity errors : sum local = 5.03808e-09, global = -7.94093e-21, cumulative = -7.94093e-21
DICPCG:  Solving for p, Initial residual = 0.523588, Final residual = 9.72371e-07, No Iterations 34
time step continuity errors : sum local = 1.07766e-08, global = 2.00426e-19, cumulative = 1.92485e-19
ExecutionTime = 0.01 s  ClockTime = 0 s

[ lots of additional output for a number of time steps ]

Time = 0.5

Courant Number mean: 0.222158 max: 0.852134
smoothSolver:  Solving for Ux, Initial residual = 2.32737e-07, Final residual = 2.32737e-07, No Iterations 0
smoothSolver:  Solving for Uy, Initial residual = 5.07002e-07, Final residual = 5.07002e-07, No Iterations 0
DICPCG:  Solving for p, Initial residual = 1.0281e-06, Final residual = 2.77237e-07, No Iterations 1
time step continuity errors : sum local = 4.0374e-09, global = -9.0204e-19, cumulative = -2.44407e-18
DICPCG:  Solving for p, Initial residual = 5.31987e-07, Final residual = 5.31987e-07, No Iterations 0
time step continuity errors : sum local = 6.12557e-09, global = -3.93738e-20, cumulative = -2.48344e-18
ExecutionTime = 0.16 s  ClockTime = 0 s

End

Paraview with OpenFOAM test case and instructions
Sobald man End im Terminalfenster sieht, ist es vollbracht: die erste Simulation mit dem neu-installierten Setup ist durchgelaufen! Die Resultate kann mit sich im ebenfalls aufgesetzten Programm Paraview ansehen:

$ foamToVTK && paraview --data=VTK/cavity_..vtk

Nachdem man Enter gedrückt hat, sieht man ein wenig Programmoutput während foamToVTK die Simulationsergebnisse in vtk-Dateien umrechnet, die von Paraview gelesen werden können, dann öffnet sich das Paraview Fenster. Man klickt auf "Apply", wählt "U" (Fluidgeschwindigkeit) aus und spult for bis zum letzten Zeitschritt der Simulation. Die Ansicht sollte so aussehen wie im Screenshot gezeigt.

Das war's! Wir haben die RheologicRemix Binaries in drei einfachen Schritten erfolgreich aufgesetzt, die Funktionalität mit einer kurzen Simulation kontrolliert und das Ergebnis in Paraview angesehen.
Wenn Sie Fragen oder andere Kommentare haben, kontaktieren Sie uns!


Optional: Das heruntergeladene Archiv verifizieren

Dieser Schritt ist völlig optional. Nachdem man niemals Code aus unbekannter Quelle installieren sollte, bieten wir zwei Methoden an um das heruntergeladene Binary-Archiv zu verifizieren bzw. dessen Integrität zu testen. Die erste Methode besteht darin, die PGP Signaturdatei (endet auf ".asc") von der Download-Seite herunterzuladen. Diese Datei im selben Verzeichnis abspeichern und dann den folgenden Befehl ausführen (ev. Dateinamen anpassen):

$ gpg --verify RheologicRemix-2.3.x-6586d545d605-Ubuntu-12.04_LTS.tar.xz.asc RheologicRemix-2.3.x-6586d545d605-Ubuntu-12.04_LTS.tar.xz

Wenn die Signaturen identisch sind, sollte man folgendes im Terminal sehen:

gpg: Signature made Die 16 Jun 2015 13:57:54 CEST using RSA key ID 3B2974BB
gpg: Good signature from "Andras Horvath "

Die zweite Methode funktioniert über das Erstellen eines SHA256 Hashes (so etwas wie ein Datei-Fingerabdruck) der heruntergeladenen Datei. Diesen vergleicht man dann mit dem, den wir auf der Download-Seite veröffentlicht haben. Wenn sie gleich sind, ist die heruntergeladene Datei identisch mit der von uns erstellten. Um den Hash zu generieren, tippt man folgendes ins Terminal:

$ sha256sum RheologicRemix-2.3.x-6586d545d605-Ubuntu-12.04_LTS.tar.xz
832f71c72d943c3072ba72f7741d4f67ecb2c0df6a6c6fe51835cd42d71dab16  RheologicRemix-2.3.x-6586d545d605-Ubuntu-12.04_LTS.tar.xz

Der Hash sollte identisch sein mit dem Hash den wir für die entprechende Datei auf unserer Homepage veröffentlich haben.


Weiterführende Links

Offizielle und weitergehende Installationsanleitungen (English)

 

OpenFOAM Tutorials (English)