CFD-Post als Batchjobs betreiben [Beispiel: Video]

Nach der Simulation von Strömungen mit Fluent oder CFX geht es an das Postprocessing – die Auswertung. Bei transienten, also zeitabhängigen Strömungen ist das Auswerten über ein Video oft der erste Ansatz.

Für ein Projekt haben wir eine natürliche Konvektionsströmung untersucht. Wir simulierten eine zweidimensionale Strömung in einem rechteckigen Behälter. Die linke Wand wurde beheizt, die rechte Wand gekühlt. Das Fluid innerhalb des Behälters (in diesem Fall Wasser) beginnt zu strömen (aufgrund des Dichteunterschieds nach der Erwärmung).

Ohne großartig auf die Physik dahinter einzugehen (Boussinesq-Annäherung, Rayleighzahl im Bereich von 10⁸ bis 10¹⁰), möchte ich eigentlich nur das Postprocessing beschreiben.

Wir haben etliche von diesen Simulationen durchgeführt, wo wir entweder die Rayleighzahl oder das Aspektverhältnis variiert haben. Darum gab es relativ viele Videos, die wir erstellen wollten. Leider dauert das Erstellen von Videos auch auf leistungsstarken Rechnern mehrere Stunden, was den Einsatz von Batch-Jobs nahelegt.

Was ist ein Batch-Job?

Bei einem Batch-Job wird keine Interaktion mit einem Clienten erwartet und man braucht keine grafische Ausgabe. Das heißt, es findet eine reine Berechnung statt, deren Prozess uns nicht interessiert, sondern nur das Ergebnis. Wir müssen dem Computer nicht dabei zusehen, wie er rechnet.

Am besten legt man sich einen eigenen Ordner für jeden Batch-Job an, in dem jeweils die Dateien gespeichert werden. Das erleichtert später die Übersichtlichkeit erheblich.

Wie bereitet man einen CFD-Post Batch-Job vor?

Man muss zwei Dateien anfertigen: Die Session-Datei (*.cse) und die State-Datei (*.cst).

Die erste Berechnung findet noch lokal statt. Darum sollte man hier eine Berechnung durchführen, die in absehbarer Zeit beendet wird, z.B. eine kleine Beispielrechnung.

State-Datei: Hierzu lädt man die Ergebnisse der Fluent-Rechnung in CFD-Post (File → Load Results) und erstellt – wie gewohnt – die Auswertung. Ich habe das Feld richtig ausgerichtet, ein Temperaturfeld eingeblendet und einen Zeitstempel auf die rechte Seite gesetzt.

Wenn das alles eingestellt ist (so wird es später im Video zu sehen sein!), kann man die State-Datei speichern (File → Save State as).

CFD-Post fertig eingestellt

CFD-Post fertig eingestellt

Session-Datei: In dieser Datei werden sozusagen „die Mausklicks“ gespeichert, die im Batchjob abgearbeitet werden sollen. Man führt die Berechnung einmal manuell durch, und zeichnet alle Mausklicks dabei auf. Das ist mit den Makros in Excel vergleichbar, die man ja auch „aufzeichnen“ kann.

Die Aufzeichnung starten man, indem man eine Session-Datei anlegt: Session → New Session. Die Datei speichert man in seinem Batch-Ordner. Dann geht man Schritt für Schritt die Mausklicks durch. Bei mir: Auf das Animationssymbol klicken, dann die Videoeinstellungen vornehmen und auf den Playbutton klicken.

Animationsmenü aufrufen

Animationsmenü aufrufen

Alle Videoeinstellungen vornehmen und die Animation starten

Alle Videoeinstellungen vornehmen und die Animation starten

Wenn die Berechnung durch ist, kann man CFD-Post beenden. In der Session-Datei stehen nun alle notwendigen Befehle, die man für einen Batch-Job braucht. Meine sieht z.B. folgendermaßen aus:

COMMAND FILE:
  CFX Post Version = 14.5
END

> load timestep=-1

ANIMATION:
  Animation Bit Rate = 5152000
  Animation Frame Rate = 24
  Animation Quality = Highest
  Animation Speed Factor = 2
  Antialiasing = On
  Drop Last MPEG Frame = Off
  Hardcopy Tolerance = 0.0001
  Intermediate File Format = jpg
  Keep Intermediate Files = Off
  MPEG Height = 480
  MPEG Scale = 100
  MPEG Size = 1080p
  MPEG Width = 640
  Output Directory = .
  Output to User Directory = Off
  QAnim Override Symbol = On
  QAnim Symbol Size = 1.0
  QAnim Symbol Spacing = 0.6
  QAnim Symbol Type = Ball
  Screen Capture = Off
  Speed Adjustment Selection = Normal
  Speed Scaling Method = Distribute Frames Smoothly
  Timestep Interpolation Method = Timestep
  Variable Bit Rate = On
  White Background = Off
END

ANIMATION: ANIMATION
  QAnim Object List = Timesteps
  QAnim Frames = 46
  QAnim MPEG Filename = /pfad/zum/speicherort/video.avi
  QAnim Save MPEG = On
  QAnim Looping = Bounce
  QAnim Looping Cycles = 1
  Video Format = avi
END
>animate quickAnimate

 Wie sendet man ihn über LSF ab?

Der Befehl für einen CFD-Post Batch-Job lautet allgemein:

cfdpost -batch *.cse *.cst

Damit man ihn über das LSF als Batch-Job betreiben kann, muss man ihn noch in eine *.lsf Datei packen. Diese sieht bei mir so aus:

#!/bin/csh
#BSUB -q BatchXL
#BSUB -R "mem > 25000 && mapacc span[hosts=1]"
#BSUB -oo lsf_cfdpost.log
#BSUB -e lsf_cfdpost.err
#BSUB -J CFDPost_job_name
#BSUB -n 4
date
pwd
cfdpost -batch /pfad/zur/session.cse /pfad/zur/state.cst
date

Abschicken kann man diesen Batch-Job wie gewohnt über

bsub < cfdpost.lsf

Und was kommt dabei raus?

Nach einiger Zeit kommen dann die Videos auf die Festplatte. Das ist dann relativ unspektakulär, aber die Berechnung dauert halt ewig. Ein paar von meinen Ergebnissen habe ich in folgendes Youtube-Video gepackt:

https://www.youtube.com/watch?v=DWyAu068HNQ

Weiterführende Links

Natürlich kann man auch schon die Fluent-Rechnung als Batch-Job rechnen. Eine Anleitung habe ich dazu auch schon geschrieben.

Informationen der TU Ilmenau zu diesem Thema.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert