Standard-Handbuch
In diesem Thema
    SnappyHexMesh
    In diesem Thema

    SnappyHexMesh ist ein vollständig paralleler, geteilter Sechseck-Gittergenerator, der eine minimale Gitterqualität garantiert. Gesteuert mit OpenFOAM®-Dictionaries eignet er sich besonders gut im batchgesteuerten Betrieb.

    Die wichtigsten Merkmale:

    - startet von jedem reinen Hex-Mesh (strukturiert oder unstrukturiert)
    - liest Geometrie in triangulierten Formaten, z.B. in stl, obj, vtk
    - keine Begrenzung der Anzahl der Eingabeflächen
    - kann einfache analytisch definierte Geometrie verwenden, z.B. Kasten, Kugel, Kegel
    - erzeugt prismatische Schichten
    - skaliert gut beim parallelen Vermaschen.
    - kann mit unsauberen Oberflächen arbeiten, d.h. mit nicht wasserdichten Oberflächen

    Netzgenerierung mit dem Dienstprogramm snappyHexMesh

    (Aus dem OpenFOAM® v8 Benutzerhandbuch: 5.4 Netzgenerierung mit snappyHexMesh)

    Dieser Abschnitt beschreibt das Netzgenerierungsprogramm snappyHexMesh, das mit OpenFOAM geliefert wird. Das Dienstprogramm snappyHexMesh erzeugt automatisch 3-dimensionale Netze mit Hexaedern (hex) und Split-Hexaedern (split-hex) aus triangulierten Oberflächengeometrien oder Dreiflächen im Stereolithographie- (STL) oder Wellenfront-Objekt- (OBJ) Format. Das Netz passt sich annähernd der Oberfläche an, indem ein Ausgangsnetz iterativ verfeinert und das resultierende Split-Hex-Netz auf die Oberfläche gemorpht wird. In einer optionalen Phase wird das resultierende Netz zurück geschrumpft und Zellschichten werden eingefügt. Die Spezifikation des Netzverfeinerungsgrades ist sehr flexibel und die Oberflächenbehandlung ist robust mit einer vordefinierten Endqualität des Netzes. Sie läuft bei jeder Iteration parallel zu einem Load-Balancing-Schritt.

    Der Netzgenerierungsprozess von snappyHexMesh

    Der Prozess der Erzeugung eines Netzes mit snappyHexMesh wird anhand des unten gezeigten Schemas beschrieben.



    Ziel ist es, einen rechteckig geformten Bereich (in der Abbildung grau schattiert) zu vernetzen, der ein Objekt umgibt, das durch eine Dreifläche beschrieben wird, z.B. typisch für eine externe Aerodynamiksimulation. Beachten Sie, dass der Schaltplan zweidimensional ist, um ihn leichter verständlich zu machen, auch wenn das snappyHexMesh ein 3D-Vernetzungswerkzeug ist.

    Um snappyHexMesh ausführen zu können, benötigt der Benutzer Folgendes:
    Eine oder mehrere Tri-Surface-Dateien, die sich in einem Constant/Tri-Surface-Unterverzeichnis des Fallverzeichnisses (Case-Ordner im OpenFOAM-Verzeichnis)befinden.
    Ein Hex-Hintergrundnetz, das die Ausdehnung des Rechengebiets und eine Netzdichte auf Basisebene definiert, typischerweise wird es mit blockMesh erzeugt.
    Ein snappyHexMeshDict-Wörterbuch mit entsprechenden Einträgen, das sich im Systemunterverzeichnis des Falls befindet.
    Das snappyHexMeshDict-Wörterbuch enthält Schalter auf der obersten Ebene, die die verschiedenen Stufen des Vernetzungsprozesses steuern und individuelle Unterverzeichnisse eines jeden Prozesses.

    snappyHexMesh bietet folgende Parameter und Einstellmöglichkeiten

    Nach dem Wählen des Tools snappyHexMesh öffnet sich folgendes Fenster.


    Mit diesen 4 Schaltern aktivieren, bzw. deaktivieren Sie die enthaltenen Optionen, in den entsprechenden Bereichen, "castellateMesh", "Snap", "Layers" und "Quality" oder "keepPatches".


    castellatedMesh

    castellatedMesh (verzahnte Netzstruktur), die Zellaufteilung wird gemäß der vom Benutzer im Subdictionary castellatedMeshControls im snappyHexMeshDict angegebenen Spezifikation durchgeführt.

    maxLocalCells Maximale Anzahl von Zellen pro Prozessor während der Verfeinerung.
    Dies gibt die maximale Anzahl von Zellen pro Prozessor während der Verfeinerungsphase an. Wenn die lokale Anzahl von Zellen größer als die maximale Anzahl von Zellen pro Prozessor (maxLocalCells) auf einem beliebigen Prozessor ist, wechselt der Algorithmus von der Verfeinerung mit anschließender Balancierung (aktuelle Methode) zur Balancierung vor der Verfeinerung (gewichtet) .
    maxGlobalCells Gesamtzahl der Zellen während der Verfeinerung (d.h. vor Abschluss der vollständigen Verfeinerung).
    Diese gibt die maximale Gesamtanzahl der Zellen während der Verfeinerungsphase an. Der Verfeinerungsprozess wird sofort beendet, wenn die Gesamtanzahl der Zellen während der Verfeinerung diese Zahl überschreitet. In diesem Fall kann es sein, dass die Verfeinerungsstufe nicht abgeschlossen wird. (Zum Beispiel werden in diesem Fall einige Regionsverfeinerungen nicht durchgeführt).
    minRefinementCells Wenn minRefinementCells ≥ Anzahl der zu veredelnden Zellen ist, stoppt die Verfeinerung des Netzes.
    Damit wird die Mindestanzahl von Zellen während der Verfeinerungsphase festgelegt. Der Algorithmus zur Oberflächenverfeinerung kann beispielsweise viele Iterationen zur Verfeinerung nur einiger Zellen benötigen. Diese Einstellung bewirkt, dass die Verfeinerung gestoppt wird, wenn die zu verfeinernden Zellen unter dem angegebenen Wert liegen
    Hinweis: Es wird mindestens eine Iteration durchgeführt, es sei denn, die Anzahl der zu verfeinernden Zellen ist 0.
    nCellsBetweenLevels

    Anzahl der Pufferschichten von Zellen zwischen aufeinander folgenden Verfeinerungsebenen.
    Dies spezifiziert die genaue Anzahl der Zellschichten des Puffervolumens zwischen verschiedenen Verfeinerungsstufen.
    1 bedeutet, dass bei Bedarf nur eine einzige Zwischenschicht hinzugefügt wird, um den Verfeinerungsunterschied auszugleichen. Größere Werte, wie z.B. 5, führen dazu, dass mehr Zwischenzellschichten hinzugefügt werden, um den Verfeinerungsunterschied allmählich abzudecken, haben aber einen großen Einfluss auf die Maschengröße.
    Ein typischer Wert ist 3.

    resolveFeatureAngle Wendet den maximalen Verfeinerungsgrad auf Zellen an, die Schnittpunkte sehen können, deren Winkel den resolveFeatureAngle überschreitet (typischerweise auf 30 gesetzt).
    Das refinementSurfaces-Wörterbuch in castellatedMeshControls erfordert Wörterbucheinträge für jede STL-Oberfläche und eine Standard-Level-Spezifikation der minimalen und maximalen Verfeinerung in der Form (<min> <max>). Die minimale Verfeinerungsebene wird im Allgemeinen über die Oberfläche angewendet, die maximale Ebene wird auf Zellen angewendet, die Schnittpunkte sehen können, die einen Winkel bilden, der über den durch resolveFeatureAngle angegebenen hinausgeht.
    maxLoadUnbalance Dies gibt die maximale Abweichung der Prozessorbalance im parallelen Vermaschungsprozess an. Ein Wert von 0 zwingt zum ständigen Ausgleich.


    Snap

    Der nächste Schritt des Vernetzungsprozesses umfasst das Verschieben von Zell-Eckpunkten auf die Oberflächengeometrie, um die zerklüftete, zackenförmige Oberfläche aus dem Netz zu entfernen. Um das Netz an die Oberfläche anzuschmiegen und anzugleichen.



    Der Snap-Prozess wird durch die folgenden Parameter bestimmt, die Anzahl der Iterationen und den maximalen relativen Abstand für die Fangpunktsuche (Toleranz) zwischen Netz und Objektoberfläche steuern.

    Der Prozess funktioniert folgendermaßen.

    Verschieben der Scheitelpunkte in der gezackten Grenzfläche auf die STL-Oberfläche;
    Lösen der Relaxation des internen Netzes mit den zuletzt verschobenen Grenzpunkten.
    Die Eckpunkte finden, die eine Verletzung der Netzqualitätsparameter verursachen.
    Die Verschiebung dieser Eckpunkte von ihrem Anfangswert (bei 1) zu reduzieren und von 2 zu wiederholen, bis die Netzqualität zufriedenstellend ist.
    Die Methode verwendet die Einstellungen im snapControls-Subdictionary in snappyHexMeshDict, die unten aufgeführt sind.

    nSmoothPatch Anzahl der Patch-Glättungsiterationen, bevor eine Übereinstimmung mit der Oberfläche gefunden wird (typischerweise 3).
    tolerance Verhältnis des Abstands für Punkte, die von einem Oberflächenmerkmalspunkt oder einer Kante angezogen werden sollen, zur lokalen maximalen Kantenlänge (typischerweise 2,0).
    nSolveIter Anzahl der Netzverschiebungsrelaxations-Iterationen (typischerweise 30-100).
    nRelaxIter Maximale Anzahl von Fangrelaxations-Iterationen (typischerweise 5).
    nFeatureSnapIter Diese gibt die Anzahl der Iterationen innerhalb des Hauptfangiterationsprozesses an, um Netzpunkte an die Oberfläche zu ziehen und scharfe Kanten zu vermeiden. Dies geschieht unter Verwendung der extrahierten Featurekanten im Schritt des kaskadierten Netzes.
    ExplicitFeatureSnap

    Für diese Methode kann eine Feature-Verfeinerung unter Netzverfeinerungen hinzugefügt werden, um die Feature-Extraktion für das Fangen zu spezifizieren. Die Methode kann Fang-Features behandeln, die den Schnittpunkt zwischen Begrenzungsflächen darstellen, die sich sogar in derselben Ebene befinden.

    Von der offiziellen Website von OPENFOAM® "Die explizite Methode bietet eine größere Kontrolle und, unserer Erfahrung nach, eine etwas bessere Merkmalskonformation. Die implizite Methode hat den Vorteil, dass sie vollständig automatisiert ist.

    ImplicitFeatureSnap Bei der impliziten Methode muss der Benutzer keine Merkmale extrahieren. Stattdessen wird der Schlüsselworteintrag resolveMax Face Angle For Layer Generation (featureAngle) verwendet, um oberflächengeometrische Merkmale, z.B. Falten in der Geometrie, zu identifizieren. Anstatt direkt an einer Kantengeometrie zu rasten, wie in der vorherigen Methode explizit angegeben, rastet die implizite Methode an einer Darstellung des Features ein, die aus der lokalen Oberflächentopologie berechnet wurde.


    Layers

    Die Netzausgabe aus dem snapping kann zur Simulation Zweck geeignet sein, obwohl sie einige unregelmäßige Zellen entlang der Grenzflächen erzeugen kann. Es gibt eine optionale Stufe des Vernetzungsprozesses, die zusätzliche Schichten hexaedrischer Zellen einführt, die an der Grenzfläche ausgerichtet sind, wie durch die dunkel schattierten Zellen unten veranschaulicht wird.



    Der Prozess des Hinzufügens von Netzschichten beinhaltet das Schrumpfen des vorhandenen Netzes von der Grenze aus und das Einfügen von Zellschichten, im Großen und Ganzen wie folgt.
    1.   Das Netz wird von der Oberfläche um eine bestimmte Dicke in der Richtung senkrecht zur Oberfläche zurück projiziert.
    2.   Lösen der Auflockerung des inneren Netzes mit den letzten projizierten Grenzpunkten.
    3.   Prüfen, ob die Validierungskriterien erfüllt sind, andernfalls die projizierte Dicke reduzieren und zu 2 zurückkehren, wenn die Validierung für keine Dicke erfüllt
          werden kann, keine Schichten mehr einfügen, wenn die Validierungskriterien erfüllt werden können, keine Schichten mehr einfügen.
    4.   Wenn die Validierungskriterien erfüllt werden können, Netzschichten einfügen.
    5.   Das Netz wird erneut geprüft, wenn die Prüfungen fehlschlagen, werden Schichten entfernt und wir kehren zu 2 zurück.

    Das Layer-Additionsverfahren verwendet die Einstellungen im addLayersControls-Subdictionary in snappyHexMeshDict, die Einträge sind unten aufgeführt. Der Benutzer hat die Wahl zwischen 4 verschiedenen Schichtdickenparametern - expansionRatio, finalLayerThickness, firstLayerThickness, thickness - von denen er nur 2 angeben muss; mehr als 2, und das Problem ist überbestimmt.

    relativeSizes

    relativeSizes Schalter, der festlegt, ob die angegebenen Schichtdicken relativ zur unverzerrten Zellgröße außerhalb der Schicht oder absolut sind.


    method

    firstLayerThickness

    Dicke der am weitesten von der Wand entfernten Schicht, normalerweise in Kombination mit relativen Größen gemäß dem Eintrag relativeSizes,

    finalLayerThickness

    Dicke der am weitesten von der Wand entfernten Schicht, normalerweise in Kombination mit relativen Größen gemäß dem Eintrag relativeSizes.


    method1

    expansionRatio Gibt das Wachstum aufeinander folgender Schichten an. Je größer der Wert, desto größer der Höhenunterschied der Schichten. Dieser Standardwert wird durch die Ebenenverfeinerung unter Netzverfeinerungen überschrieben.
    thickness Gesamtdicke aller Zellschichten, normalerweise in Kombination mit absoluten Größen gemäß dem Eintrag relativeSizes.


    method

    finalLayerThickness Dicke der am weitesten von der Wand entfernten Schicht, normalerweise in Kombination mit relativen Größen gemäß dem Eintrag relativeSizes.
    minThickness Mindestdicke der Zellschicht, entweder relativ oder absolut (siehe Schalter "relattiveSizes" oben).
    featureAngle Winkel, oberhalb dessen die Oberfläche nicht extrudiert wird.
    nSmoothNormals Anzahl der Glättungsiterationen der Bewegungsrichtung des inneren Netzes (typischerweise 3). Höhere Werte führen zu einer besseren Extrusion der Schichten.
    maxFaceThicknessRatio Stoppen des Schichtwachstums bei stark verzogenen Zellen (typischerweise 0,5).
    maxThicknessToMediaRatio

    Reduzierung des Schichtwachstums bei großem Verhältnis von Dicke zu medialem Abstand (typischerweise 0,3)

    Diese Variable gibt das maximale Verhältnis von Dicke zu medialem Abstand an. Das Schichtwachstum wird reduziert, wenn das Verhältnis größer als der angegebene Wert ist.

    nRelaxedlter Maximale Anzahl von Iterationen, nach denen die Kontrollen im aufgelockerten Subdictionary von meshQuality verwendet werden (typischerweise 20).
    nBufferCellsNoExtrude Dies gibt die Anzahl der Pufferzellen für die Terminierung der Schichten an (typischerweise 0).

    method1

    expansionRatio Legt das Wachstum aufeinander folgender Schichten fest, ein Expansionsfaktor für das Schichtnetz, Zunahme der Größe von einer Schicht zur nächsten.
    Je größer der Wert, desto größer der Höhenunterschied der Schichten. Dieser Standardwert wird durch die Lagenverfeinerung unter Netzverfeinerungen überschrieben.
    nGrow Die Anzahl der Schichten verbundener Flächen, die nicht gewachsen sind, wenn Punkte nicht extrudiert werden, hilft bei der Konvergenz der Schichtaddition in der Nähe von Merkmalen.
    nSmoothSurfaceNormals Dies gibt die Anzahl der Iterationen zur Glättung der Oberflächennormalen für die Extrusion von Schichten an (typischerweise 1). Höhere Werte führen zu einer besseren Extrusion von Schichten.
    nSmoothThickness Dies gibt die Anzahl der Iterationen zum Glätten der Gesamtschichtdicke über verschiedene Oberflächenbereiche an (typischerweise 10).
    minMediaAxisAngle Winkel, der zur Aufnahme von Punkten der Mittelachse verwendet wird (typischerweise 90).
    nRelaxIter Dies gibt die maximale Anzahl von Iterationen an, nach denen vereinfachte Netzqualitätskontrollen verwendet werden. Bis zum Wert Max Iteration's with Strict Quality Controls (nRelaxedIter) verwendet der Algorithmus die Einstellungen in den Netz-Qualitätskontrollen, nach diesen Iterationen verwendet er die vereinfachten Netz-Qualitätskontrollwerte (typischerweise 5).
    nLayerIter Dies spezifiziert die Iterationen des gesamten Layer-Additionsalgorithmus. Der Algorithmus stoppt sofort nach dem angegebenen Wert, auch wenn das Netz schlechte Zellen aufweist. Ein Wert von 50-60 wird empfohlen.

    Quality

    Die Netzqualität wird durch die Einträge im Sub-Dictionary meshQualityControls in snappyHexMeshDict kontrolliert.

    maxNonOrtho Maximal zulässige Nicht-Orthogonalität (in Grad, typischerweise 65).
    maxBoundarySkewness Max. zulässige Grenzflächenschiefe (typischerweise 20).
    maxInternalSkewness Max. zulässige Schiefe der Innenfläche (typischerweise 4).
    maxConcave Max. zulässige Konkavität der Flächen (typischerweise 80).
    miniFlatness Verhältnis der minimalen projizierten Fläche zur tatsächlichen Fläche (typischerweise 0,5).
    minVol Minimales Zellpyramidenvolumen (typischerweise 1e-13, große negative Zahl deaktiviert).
    minTetQuality Minimale Qualität der tetraedrischen Zellen aus der Zellzerlegung. (Im Allgemeinen deaktiviert durch die Einstellung einer großen negativen Zahl seit v5.0, als die neue baryzentrische Verfolgung eingeführt wurde, die mit negativen Tets umgehen konnte.)
    minTwist Minimale Flächenverdrehung (typischerweise 0,05).
    minDeterminant Minimale normalisierte Zelldeterminante, 1 = hex, ≤ 0 = illegale Zelle (typischerweise 0,001).
    minFaceWeight Minimale Flächengewichtung 0 - 0,5 (typischerweise 0,05)
    minVolRatio Minimales Volumenverhältnis 0 - 1,0 (typischerweise 0,01).
    minTriangleTwist Minimale Dreiecksverdrehung > 0 für Fluent Kompatibilität (typischerweise -1).
    nSmoothScale Anzahl der Fehlerverteilungs-Iterationen (typischerweise 4).
    errorReduction Betrag, um die Verschiebung an Fehlerpunkten zu reduzieren (typischerweise 0,75).


    Mit einem Klick auf den Buttons "Ok", akzeptieren Sie die von Ihnen getätigten Eingaben und das Fenster schließt sich.
    Mit einem Klick auf den Button "Reset" setzen Sie alle Einstellungen wieder auf die Originaleinstellungen zurück, mit einem Klick auf den Button "Abbrechen" brechen Sie die Übernahme aller Einstellungen ab und dieses Fenster schließt sich wieder.