system / blockMeshDict

Koordinaten der Blöcke und Wände vorgeben

In dieser Datei werden alle Daten eingegeben, die zur Erstellung der Geometrie notwendig sind.

In diesem Beispiel erzeugen wir ein 1000 mm langes Quadratrohr mit jeweils 100 mm Breite und Höhe, hinter dem eine 100 mm lange Umlenkung in ein 1000 mm senkrechtes Quadratrohr mit den gleichen Maßen folgt und in das später Wasser von der vorderen Seite durch das Rohr und um die Umlenkung strömen soll.

Scale

Da OpenFOAM in Metern rechnet, muss zuerst ein Skalierungsfaktor angegeben werden, wenn man die Koordinaten der Geometrie in Millimetern eingeben will:

 

scale 0.001;

 

Vertices

Dann werden die Koordinaten aller Punkte (vertices) der späteren Geometrie vorgegeben. Diese beziehen sich auf einen festgelegten Nullpunkt im X/Y/Z Koordinatensystem. Die Zählung der Punkte beginnt bei Punkt 0 in der ersten Zeile, Punkt 1 in der zweiten Zeile usw. Die Reihenfolge der Punktnummern ist im Prinzip egal, es ist aber leichter, die Reihenfolge sinnvoll entlang der Geometrie zu verwenden.

Praxistipp 1: Erstelle zuerst eine Skizze, in der Du die Punkte schonmal durchnummerierst und bestenfalls die jeweiligen Koordinaten aufschreibst.

Praxistipp 2: Schreibe die Punktnummer und ggf. eine Beschreibung des Punktes als Kommentar hinter die Zeilen, weil die Blocks später als Kombination dieser Punktnummer und nicht anhand der Koordinaten erzeugt werden.

Praxistipp 3: Da die Blöcke später alle in der selben umlaufenden Reihenfolge (in diesem Beispiel entgegen dem Uhrzeigersinn) definiert werden müssen, kann man die Reihenfolge der Punkte bereits hier berücksichtigen und sie in einer einheitlichen Reihenfolge setzen.

 

vertices

{

(0 0 0)        // 0 Rohr 1 unten vorne links
(0 0 100)      // 1 Rohr 1 unten vorne rechts
(1000 0 100)   // 2 Rohr 1 unten hinten rechts
(1000 0 0)     // 3 Rohr 1 unten hinten links

(0 100 0)      // 4 Rohr 1 oben vorne links
(0 100 100)    // 5 Rohr 1 oben vorne rechts
(1000 100 100) // 6 Rohr 1 oben hinten rechts
(1000 100 0)   // 7 Rohr 1 oben hinten links

(1100 0 0)     // 8 Umlenkung unten hinten links
(1100 0 100)   // 9 Umlenkung unten hinten rechts
(1100 100 0)   // 10 Umlenkung oben hinten rechts
(1100 100 100) // 11 Umlenkung oben hinten links

(1000 -1000 0)    // 12 Rohr 2 unten vorne links
(1000 -1000 100)  // 13 Rohr 2 unten vorne rechts
(1100 -1000 0)    // 14 Rohr 2 unten hinten rechts
(1100 -1000 100)  // 15 Rohr 2 unten hinten links

};

 

Blocks

Die einzelnen Blöcke (blocks) werden dann aus der Verbindung von jeweils 4 dieser dieser Punkte definiert. Wenn Blöcke aneinander angrenzen bzw. keine Wand zwischen ihnen bestehen soll, wiederholen sich die Punkte in mehreren Blöcken.

In einer Zeile sind verschiedene Angaben zu einem Block enthalten:

hex (Gemetrie Punktenummern) (Mesh Auflösung pro Achse) (Grading)

In der ersten Klammer werden die oben definierten Punktenummern zu jeweils einem Block aus 2 x 4 = 8 Punkten zusammengefasst. Dies sind erstmal die Eckdaten der groben Geometrie.

In der zweiten Klammer wird nun definiert, wie "das Innere des Blocks" als detailiertes Mesh aufgeteilt werden soll. Hierfür muss jede Achse die Auflösung des Mesh vorgegeben werden. Dies erfolgt wieder in der Reihenfolge (X Y Z) Achse. In diesem Beispiel soll das Mesh "millimetergenau" sein, also auf eine Achsenlänge von 1000 mm auch eine Mesh-Auflösung von 1000 haben.

Wichtig: Bei verbundenen Blöcken mit gemeinsamen Punkten muss die Auflösung des Mesh in den jeweiligen Achsen identisch sein, was eigentlich logisch ist, aber besonderer Aufmerksamkeit bedarf.

 

blocks

{

hex (0 1 2 3 4 5 6 7) (1000 100 100) simpleGrading (1 1 1).       // Rohr 1
hex (3 2 7 6 8 9 10 11) (100 100 100) simpleGrading (1 1 1)       // Umlenkung
hex (3 2 9 8 12 13 14 15) (100 1000 100) simpleGrading (1 1 1)    // Rohr 2

};

 

Boundary

Wir haben die Geometrie mit den 3 Blöcken definiert und brauchen nun die Vorgaben, wo etwas rein (inlet) und raus (outlet) fließen soll. In unserem Beispiel wollen wir, dass Wasser in das Rohr 1 vorne reinfließt und aus Rohr 2 unten rausfließt. Dafür müssen wir jeweils die Flächen (faces) mit 4 Punkten definieren.

Hinweis: Wichtig ist hierbei wieder die Reihenfolge der Punkte, damit blockMesh weiß, in welche Richtung das Wasser durch diese Fläche rein und raus fließen soll. (Rechte Hand Daumenregel)

 

boundary

{

  inlet
  {
    type patch;
    faces
    {
      (1 0 4 5)
    };
  };


 outlet
  {
    type patch;
    faces
    {
      (12 13 14 15)
    };
  };
  

};