Standard-Handbuch
In diesem Thema
    Grundlagen und Vernetzen in OpenFOAM®
    In diesem Thema

    Grundlagen vernetzen aus dem OpenFOAM® Userguide

    Netz, Mesh, eine Beschreibung

    Dieser Abschnitt enthält eine Spezifikation der Art und Weise, wie die OpenFOAM C++-Klassen ein Netz handhaben.
    Das Netz ist ein integraler Bestandteil der numerischen Lösung und muss bestimmte Kriterien erfüllen, um eine gültige und damit genaue Lösung zu gewährleisten. Während jedes Durchlaufs überprüft OpenFOAM, ob das Netz eine ziemlich rigorose Menge von Gültigkeitsbedingungen erfüllt und hört auf zu laufen, wenn die Bedingungen unerfüllt sind.
    Die Konsequenz ist, dass ein Benutzer eine gewisse Frustration bei der "Korrektur" eines grossen Netzes erfahren könnte, das von Netzgeneratoren von Drittherstellern erzeugt wurde, bevor OpenFOAM mit diesem Netz läuft.
    Das ist unglücklich, aber wir entschuldigen uns keineswegs dafür, dass OpenFOAM einfach gute Praxis anwendet, um sicherzustellen, dass das Netz gültig ist.
    Denn andernfalls ist die Lösung fehlerhaft, bevor der Lauf überhaupt begonnen hat.

    Standardmäßig definiert OpenFOAM ein Netz aus beliebigen polyedrischen Zellen in 3-D, die durch beliebige polygonale Flächen begrenzt sind, d.h. die Zellen können eine unbegrenzte Anzahl von Flächen haben, wobei jede Fläche weder eine Begrenzung der Anzahl der Kanten noch eine Beschränkung ihrer Ausrichtung hat.
    Ein Netz mit dieser allgemeinen Struktur wird in OpenFOAM als PolyMesh bezeichnet.
    Diese Art von Netz bietet große Freiheit bei der Netzgenerierung und -manipulation, insbesondere wenn die Geometrie des Bereichs komplex ist oder sich im Laufe der Zeit ändert. Der Preis der absoluten Allgemeingültigkeit des Netzes besteht jedoch darin, dass es schwierig sein kann, mit herkömmlichen Werkzeugen erzeugte Netze zu konvertieren.
    Die OpenFOAM-Bibliothek bietet daher cellShape-Werkzeuge zur Verwaltung konventioneller Netzformate, die auf Sätzen vordefinierter Zellformen basieren.

    Netzspezifikation und Gültigkeitsbedingungen

    Bevor wir das OpenFOAM-Netzformat, polyMesh und die cellShape-Werkzeuge beschreiben, werden wir zunächst die in OpenFOAM verwendeten Gültigkeitsbeschränkungen darlegen. Die Bedingungen, die ein Mesh erfüllen muss, sind folgende. 

    Points

    Ein Punkt ist ein Ort im 3-D-Raum, der durch einen Vektor in Einheiten von Metern [m] definiert ist.
    Die Punkte werden zu einer Liste zusammengestellt und jeder Punkt wird durch ein Label bezeichnet, das seine Position in der Liste, beginnend bei Null, darstellt. Die Punkteliste kann weder zwei verschiedene Punkte an einer exakt identischen Position noch einen Punkt enthalten, der nicht Teil mindestens einer Fläche ist.

    Faces

    Ein Face ist eine geordnete Liste von Punkten, wobei ein Punkt durch sein Label bezeichnet wird. Die Anordnung von Punktbezeichnungen in einer Fläche ist so, dass jeweils zwei benachbarte Punkte durch eine Kante verbunden sind, d.h. man folgt den Punkten, während man sich um den Umfang der Fläche bewegt. Die Flächen werden zu einer Liste zusammengestellt und jede Fläche wird durch ihre Beschriftung bezeichnet, die ihre Position in der Liste darstellt. Die Richtung des Faces-Normalenvektors wird durch die Rechtshandregel definiert, d.h. wenn Sie auf ein Face blicken und die Nummerierung der Punkte gegen den Uhrzeigersinn erfolgt, zeigt der Normalenvektor auf Sie, wie in der folgenden Abbildung dargestellt. 

    Faces-Flächenvektor aus der Nummerierung der Punkte auf dem Face.




    Es gibt zwei Arten von Faces.

    Interne-Faces

    Die Faces, die zwei Zellen verbinden (und es können nie mehr als zwei sein). Für jede Innenfläche ist die Reihenfolge der Punktbeschriftungen so gewählt, dass die Flächennormale in die Zelle mit der größeren Beschriftung zeigt, d.h. für die Zellen 2 und 5 zeigt die Normale in 5.

    Es kann vorkommen das bim Import von Geometrien und Netzen von externen Programmen die Normalen der Flächen (Faces) verdreht sind, Innen zeigt nach außen und vice versa. In diesem Fall kann man im BIM HVACTool Client die Flächennormalen wieder in die richtige Lage bringen, mit dem Befehl "Innenflächen wenden", im rechten Seitenmenü "Werkzeuge", darin im Untermenü "Optionen".

    Begrenzungs-Faces

    Diejenigen, die zu einer Zelle gehören, da sie mit der Grenze der Domäne zusammenfallen. Eine Boundary Face wird daher durch eine Zelle (nur) und einen Boundary Patch adressiert. Die Reihenfolge der Punktbeschriftungen ist so gewählt, dass die Flächennormalen außerhalb des Rechengebiets liegen.
    Im Allgemeinen wird erwartet, dass die Flächen konvex sind; zumindest muss der Flächenmittelpunkt innerhalb der Fläche liegen. Faces dürfen verzogen sein, d.h. nicht alle Punkte des Faces müssen koplanar sein.

    Cells

    Eine Zelle ist eine Liste von Flächen, Faces, in beliebiger Reihenfolge. Zellen müssen die unten aufgeführten Eigenschaften haben.

    Angrenzende

    Die Zellen müssen den Rechenbereich vollständig abdecken und dürfen sich nicht überlappen. 

    Konvex

    Jede Zelle muss konvex sein und ihr Zellzentrum innerhalb der Zelle liegen.

    Geschlossen

    Jede Zelle muss geschlossen sein, sowohl geometrisch als auch topologisch, wo die geometrische Geschlossenheit erfordert, dass, wenn alle Stirnflächenvektoren so orientiert sind, dass sie nach außen aus der Zelle zeigen, ihre Summe dem Nullvektor entspricht, um die Maschinengenauigkeit zu gewährleisten und die topologische Geschlossenheit erfordert, dass alle Kanten in einer Zelle von genau zwei Flächen der betreffenden Zelle benutzt werden.

    Orthogonalität

    Für alle Innenflächen des Netzes definieren wir den Zentrum-zu-Zentrum-Vektor als denjenigen, der die Zentren der beiden Zellen, an die er angrenzt, vom Zentrum der Zelle mit kleinerer Beschriftung zum Zentrum der Zelle mit größerer Beschriftung verbindet. Die Orthogonalitätsbedingung erfordert, dass für jede Innenfläche der Winkel zwischen dem Flächenflächenvektor, der wie oben beschrieben orientiert ist, und dem Mittelpunkt-zu-Mittelpunkt-Vektor immer kleiner als 90° sein muss.

    Boundary

    Eine Grenze, Boundary, ist eine Liste von Flecken, von denen jeder mit einer Randbedingung verknüpft ist. Ein Patch ist eine Liste von Flächenbeschriftungen, die eindeutig nur Randflächen und keine Innenflächen enthalten dürfen. Die Begrenzung muss geschlossen sein, d.h. die Summe aller Flächenvektoren der Begrenzungsflächen ist gleich Null bis zur Maschinentoleranz. 

    polyMesh eine Beschreibung

    Das Konstanten-Verzeichnis (Ordner constant im OpenFOAM-Verzeichnis) enthält eine vollständige Beschreibung des Falles polyMesh in einem Unterverzeichnis Namens polyMesh. Die polyMesh-Beschreibung basiert auf Flächen und wie bereits besprochen, verbinden interne Zellen 2 Zellen und Begrenzungsflächen adressieren eine Zelle und ein Begrenzungsfeld.
    Jeder Fläche wird daher eine "Besitzer"-Zelle und eine "Nachbar"-Zelle zugewiesen, so dass die Konnektivität über eine gegebene Fläche einfach durch die Beschriftung der Besitzer- und Nachbarzellen beschrieben werden kann. Im Falle von Begrenzungen ist die verbundene Zelle der Eigentümer und dem Nachbarn wird die Beschriftung '-1' zugewiesen. In diesem Sinne besteht die E/A-Spezifikation aus den folgenden Dateien.

    Points

    Eine Liste von Vektoren, die die Eckpunkte der Zelle beschreiben, wobei der erste Vektor in der Liste für den Eckpunkt 0 steht, der zweite Vektor für den Eckpunkt 1 usw.

    Faces

    Eine Liste von Flächen, wobei jede Fläche eine Liste von Indizes zu Eckpunkten in der Punkteliste ist, wobei wiederum der erste Eintrag in der Liste die Fläche 0 darstellt, usw.

    Owner

    Eine Liste von Eigentümerzellen-Etiketten, wobei sich der Index des Eintrags direkt auf den Index der Vorderseite bezieht, so dass der erste Eintrag in der Liste das Eigentümer-Etikett für Vorderseite 0 ist, der zweite Eintrag das Eigentümer-Etikett für Vorderseite 1 usw.

    Neighbour

    Eine Liste der Bezeichnungen von Nachbarzellen.

    Boundary

    Eine Liste von Patches, die für jeden Patch einen Wörterbucheintrag enthält, deklariert unter Verwendung des Patch-Namens, z.B.
    movingWall
    {
        Typ Patch;
        nGesichter 20;
        startFace 760;
    }
       
    Das startFace ist der Index in die Face-Liste des ersten Faces im Patch, und nFaces ist die Anzahl der Faces im Patch.
    Beachten Sie, dass, wenn der Benutzer wissen möchte, wie viele Zellen sich in seiner Domäne befinden, ein Hinweis im FoamFile-Header der Eigentümerdatei vorhanden ist, der einen Eintrag für nCells enthält.

    cellShape Tools - Die cellShape Werkzeuge

    Wir werden die alternativen cellShape-Werkzeuge beschreiben, die insbesondere bei der Konvertierung einiger (einfacherer) Standardnetzformate für die Verwendung mit der OpenFOAM-Bibliothek verwendet werden können.
    Die überwiegende Mehrheit der Netzgeneratoren und Post-Processing-Systeme unterstützt nur einen Bruchteil der möglichen polyedrischen Zellformen, die es gibt. Sie definieren ein Netz in Form eines begrenzten Satzes von 3D-Zellgeometrien, die als Zellformen bezeichnet werden. Die OpenFOAM-Bibliothek enthält Definitionen dieser Standardformen, um eine Umwandlung eines solchen Netzes in das im vorigen Abschnitt beschriebene PolyMesh-Format zu ermöglichen.
    Die von OpenFOAM unterstützten cellShape-Modelle sind in nachfolgend dargestellt.
    Die Form wird durch die Anordnung von Punktbeschriftungen in Übereinstimmung mit dem im Formmodell enthaltenen Nummerierungsschema definiert. Die Ordnungsschemata für Punkte, Flächen und Kanten sind unten dargestellt. Die Nummerierung der Punkte darf nicht so erfolgen, dass die Form verdreht wird oder in andere Geometrien ausartet, d.h. dieselbe Punktbeschriftung kann nicht öfter verwendet werden, als einmal eine einzige Form ist. Ausserdem ist es unnötig, doppelte Punkte in OpenFOAM zu verwenden, da die verfügbaren Formen in OpenFOAM den vollen Satz von degenerierten Hexaedern abdecken.
    Die Zellbeschreibung besteht aus zwei Teilen, dem Namen eines Zellmodells und der geordneten Liste der Beschriftungen. Daher wird die folgende Liste von Punkten verwendet.

        8
        (
            (0 0 0)
            (1 0 0)
            (1 1 0)
            (0 1 0)
            (0 0 0.5)
            (1 0 0.5)
            (1 1 0.5)
            (0 1 0.5)
        )

    Eine hexaedrische Zelle würde wie geschrieben werden 
        (Feld 8(0 1 2 3 4 5 5 6 7))

    Hier wird die hexaedrische Zellform mit dem Schlüsselwort hex deklariert.
    Andere Formen werden mit den unten aufgeführten Schlüsselwörtern beschrieben.



    a) Hexaeder: Schlüsselwort hex



    (b) Keil: Stichwort Keil



    c) Prisma: Stichwort Prisma



    (d) Pyramide: Stichwort py

    r

    e) Tetraeder: Schlüsselwort tet



    (f) Tetraederkeil: Stichwort tetWedge

    Eckpunkt-, Flächen- und Kantennummerierung für cellShapes, 1- und 2-dimensionale und axi-symmetrische Probleme

    OpenFOAM ist als ein Code für den 3-dimensionalen Raum konzipiert und definiert alle Netze als solche. Jedoch können 1- und 2-dimensionale und axi-symmetrische Probleme in OpenFOAM simuliert werden, indem ein Netz in 3 Dimensionen erzeugt wird und spezielle Randbedingungen auf jeden beliebigen Fleck in der Ebene (den Ebenen) senkrecht zur interessierenden Richtung (den interessierenden Richtungen) angewendet werden. Genauer gesagt wird bei 1- und 2-dimensionalen Problemen der Leerflächentyp und bei axi-symmetrischen Problemen der Keiltyp verwendet.

    Kompressible und Inkompressible Medien

    Die Definition kompressibler und inkompressibler Medien ist in der CFD - Simulation unter anderem über die Machzahl defininert.

    Kompressible Medien

    Wenn eine Fluidströmung kompressibel ist, variiert die Fluiddichte mit ihrem Druck. Kompressible Strömungen sind in der Regel schnell fließende Strömungen mit Machzahlen höher als ca. 0,3 (die Machzahl selbst ist Dimensionslos). Beispiele finden sich in aerodynamischen Anwendungen, wie die Strömung über eine Tragfläche oder den Rumpf eines Flugzeugs, sowie in industriellen Anwendungen, etwa eine Strömung durch Hochleistungsventile.

    Inkompressible Medien

    Inkompressiblen Strömungen werden ohne Variation der Dichte berechnet. Der Hauptunterschied zwischen kompressiblen und inkompressiblen Strömungen ist die Geschwindigkeit der Strömung. Ein Fluid wie Luft, das sich langsamer als Mach 0,3 bewegt, gilt als inkompressibel, auch wenn es ein Gas ist. Ein Gas, das durch einen Kompressor geleitet wird, gilt nicht wirklich als kompressibel (im thermodynamischen Sinne), es sei denn, seine Geschwindigkeit übersteigt Mach 0,3. Dies ist wichtig zu beachten, da Analysen, die als kompressibel ausgeführt werden, schwieriger auszuführen sein können und längere Analysezeiten erfordern als inkompressible Strömungen.