Reading Time: 9 minutes

TL; DR

Stellen Sie vor einer wissenschaftlichen Simulation sicher, dass das Netz geometrische Qualitätsprüfungen besteht, und stellen Sie dann nach, dass sich die Ergebnisse bei weiterer Verfeinerung nicht wesentlich ändern.

Eine Netzkonvergenzstudie, bei der mindestens drei Gitterebenen verwendet werden, kann Diskretisierungsfehler durch Richardson-Extrapolation und den Gitterkonvergenzindex quantifizieren. Dieser Leitfaden erklärt die wichtigsten Metriken, praktischen Schwellenwerte und Berechnungsschritte anhand von Python-Beispielen.

Schlüssel zum Mitnehmen

  • Die Netzqualität bestimmt, ob ein Solver zuverlässig konvergieren kann. Schlechte Netzformen können numerische Diffusion, Instabilität und Divergenz verursachen, bevor die Genauigkeit sinnvoll wird.
  • Die Netzkonvergenz zeigt, dass die Ergebnisse nicht stark von der Netzauflösung abhängen. Es ist einer der wichtigsten Lösungsüberprüfungsschritte im wissenschaftlichen Rechnen.
  • Der Gitterkonvergenzindex ist eine Standardmetrik für die Meldung der netzinduzierten Unsicherheit in Simulationsergebnissen.
  • Die Richardson-Extrapolation schätzt den Kontinuumswert bei Null-Rasterabstand und kann mit kompaktem Python-Code implementiert werden.

Warum die Netzqualität wichtig ist, bevor Sie überhaupt anfangen

Wenn ein CFD, eine Wärmeübertragung oder eine Struktursimulation unterschiedlich ist, ist das Netz häufig eines der ersten zu untersuchenden Dinge. Mesh-Qualität ist kein abstraktes Detail. Es bestimmt, ob das numerische Schema stabile und physikalisch aussagekräftige Ergebnisse liefern kann.

Sie können einen ausgeklügelten Solver, ein starkes Turbulenzmodell und sorgfältig ausgewählte Randbedingungen haben. Wenn das Netz jedoch schräg, gedehnte, invertierte oder schlecht abgestufte Zellen enthält, können numerische Fehler die Lösung dominieren.

Die Meshing-Community verwendet häufig sechs Kernmetriken, um zu beurteilen, ob ein Netz verwendbar ist.

Metrisch Was es misst Gute Reichweite kritischer Bereich zu vermeiden Warum es wichtig ist
Orthogonale Qualität Ausrichtung der Zellfläche mit Vektoren von Mitte zu Mitte über 0,15, mit 1,0 ideal unter 0,01 Schlechte Orthogonalität verursacht Genauigkeitsverlust und Divergenz in Diffusionsbegriffen
Schiefe Wie sehr weicht ein Element von seiner idealen Form ab? unter 0,5 für FEA, unter 0,75 für viele CFD-Workflows über 0,85 für FEA, über 0,95 für CFD Hohe Schiefe führt numerische Diffusion und schlechte Interpolation ein
Seitenverhältnis Verhältnis der längsten zur kürzesten Dimension in einer Zelle 1–5 für viele FEA-Maschen; Höher kann in ausgerichteten CFD-Grenzschichten akzeptabel sein über 10–20 für allgemeine FEA-Regionen; Sehr hohe Werte in nicht ausgerichteten CFD-Regionen Hohe Seitenverhältnisse im falschen Bereich verringern die Genauigkeit der Gradienten
Jacobian-Verhältnis Elementverzerrung aus seiner idealen Referenzform Positiv und bequem über Null Negativ oder nahe Null Negative Jacobis weisen invertierte Elemente auf und verursachen normalerweise ein Ausfall der Solver
Volumetrisches Expansionsverhältnis Volumenverhältnis zwischen benachbarten Zellen unter 1,5–2,0 über 3,0 Scharfe Lautstärkesprünge erzeugen Kürzungsfehler
Maximaler und minimaler Winkel Extreme Innenwinkel in den Elementen ca. 20°–140° für Dreiecke und 30°–150° für Quads unter 5° oder über 170° Extreme Winkel erzeugen schlecht konditionierte Matrizen und schlechte Interpolation

Die oben genannten guten Bereiche stellen praktische Basiswerte dar, die in vielen Simulationsworkflows verwendet werden. Die genauen Schwellenwerte variieren je nach Solver, Elementtyp, numerischer Methode und physikalischem Modell. Überprüfen Sie immer die Dokumentation des verwendeten Solvers.

Die sechs Metriken der Mesh-Qualität, erklärt

1. Orthogonale Qualität

Die orthogonale Qualität ist besonders wichtig bei endlichen Volumen- und CFD-Workflows. Es misst, wie gut eine Zellfläche normal mit dem Vektor ausrichtet, der benachbarte Zellzentren verbindet.

Wenn diese Ausrichtung schlecht ist, werden die Berechnungen des Gesichtsgradienten weniger genau. Dies kann Diffusionsbedingungen, Flussberechnungen und Druckgradientenrekonstruktionen beschädigen.

Für FIPY-Benutzer ist dies wichtig, da FIPY auf face-basierten Finite-Volumen-Operationen angewiesen ist. Wenn das Netz eine schlechte Orthogonalität aufweist, können Gesichtsgradientenberechnungen einen Kürzungsfehler verursachen, der über Iterationen hinweg wächst.

Ein praktischer Tipp: Wenn eine Simulation auf einem optisch akzeptablen Netz voneinander abweicht, überprüfen Sie die orthogonale Qualitätsverteilung. Selbst eine kleine Gruppe armer Zellen kann die globale Stabilität beeinträchtigen.

2. Schiefe

Die Schiefe misst, wie weit ein Element von seiner idealen Form entfernt ist. Für Dreiecke und Tetraeder ist die ideale Form nahe am gleichseitig. Bei Vierecken und Hexahedra ist die ideale Form näher an orthogonal und gleichmäßig proportioniert.

Hohe Schiefe macht die Interpolation zwischen Zellzentren weniger zuverlässig. Es kann künstliche Diffusion, ungenaue Gradienten und eine verringerte Genauigkeitsreihenfolge einführen.

Etwas Schiefe ist in der Nähe von Ecken, Filets und komplexer Geometrie üblich. Ziel ist es, stark verzerrte Zellen von den Regionen fernzuhalten, in denen Sie wichtige Ergebnisse extrahieren.

3. Seitenverhältnis

Das Seitenverhältnis ist das Verhältnis der längsten zur kürzesten Dimension in einer Zelle. Niedrige Seitenverhältnisse sind in der Regel sicherer für Allzwecknetze.

Es gibt eine wichtige Ausnahme: CFD-Grenzschichten. In der Nähe von Wänden können gestreckte Zellen nützlich und notwendig sein, da die physikalischen Gradienten stark gerichtet sind. In diesem Fall sind Zellen mit hohem Seitenverhältnis akzeptabel, wenn sie sich an der Physik ausrichten.

Das Seitenverhältnis wird schädlich, wenn die Dehnung nicht mit dem erwarteten Gradienten ausgerichtet ist. In Spannungskonzentrationszonen, Reaktionsfronten oder Mischbereichen können schlecht ausgerichtete gestreckte Zellen die Genauigkeit zerstören.

4. Jacobian-Verhältnis

Das Jacobi-Verhältnis misst, wie stark ein Element von seiner idealen Referenzform verzerrt wird. Ein negativer Jacobian bedeutet, dass ein Element invertiert ist.

Negative Jacobis sind schwere Netzfehler. Sie zeigen normalerweise eine ungültige Geometrie, eine falsche Knotenreihenfolge oder eine extreme Elementverzerrung an. Dies ist ein Vernetzungsproblem, keine Solver-Funktion.

Wenn Sie negative Jacobien sehen, korrigieren Sie die CAD-Geometrie, entfernen Sie Splitter, schließen Sie kleine Lücken oder passen Sie die Vernetzungsparameter an, bevor Sie die Simulation ausführen.

5. Volumetrisches Expansionsverhältnis

Das volumetrische Expansionsverhältnis misst, wie schnell sich das Zellvolumen von einer Zelle zur nächsten ändert. Glatte Übergänge sind normalerweise besser, da numerische Schemata davon ausgehen, dass die räumliche Variation im Gittermaßstab nicht abrupt ist.

Als Faustregel gilt, dass benachbarte Zellvolumenverhältnisse, wenn möglich, unter etwa 1,5–2,0 liegen. Scharfe Sprünge können zu Verkürzungsfehlern und lokalisierten Instabilität führen.

6. Maximaler und minimaler Winkel

Innenwinkel zeigen an, ob ein Element geometrisch gesund ist. Sehr kleine Winkel erzeugen dünne Splitterelemente. Sehr große Winkel korrelieren oft mit hoher Schiefe oder hohem Seitenverhältnis.

Beide Fälle können Matrizen schlecht konditioniert machen und die Interpolationsgenauigkeit verringern. In Finite-Elemente-Workflows können schlechte Winkel besonders schädlich für die Konditionierung der Steifheitsmatrix sein.

Mesh-Konvergenzstudien: Beweisergebnisse sind unabhängig

Nach der Überprüfung der Netzqualität ist der nächste Schritt eine Netzkonvergenzstudie, die auch als Gitterverfeinerungsstudie bezeichnet wird.

Das Ziel ist einfach: Beweisen Sie, dass sich das Ergebnis nicht wesentlich ändert, wenn das Netz verfeinert wird. Wenn sich das Ergebnis stark ändert, ist das Netz für die Menge, die Ihnen wichtig ist, nicht ausreichend.

Der Standard-Drei-Grid-Ansatz

Eine strenge Konvergenzstudie sollte mindestens drei Netzebenen verwenden:

  1. Grobes Gitter, normalerweise h₃ genannt.
  2. Medium Grid, normalerweise h₂ genannt.
  3. Feines Gitter, normalerweise h₁ genannt.

Das Verfeinerungsverhältnis sollte so konsistent wie möglich sein. Ein Verhältnis nahe 2,0 ist üblich, da jede Gitterebene die charakteristische Zellgröße halbiert.

Warum drei Gitter statt zwei?

Mit zwei Gittern können Sie eine Änderung des Ergebnisses abschätzen, aber Sie können nicht zuverlässig überprüfen, ob sich die Lösung im asymptotischen Konvergenzbereich befindet.

Der asymptotische Bereich ist das Regime, bei dem der numerische Fehler vorhersehbar abnimmt, wenn das Netz verfeinert wird. Mit drei Gittern können Sie die beobachtete Reihenfolge der Konvergenz abschätzen und feststellen, ob das Verfeinerungsverhalten konsistent ist.

Das schrittweise Vorgehen

Schritt 1: Wählen Sie eine interessierende Menge

Wählen Sie eine skalare Menge, die das Ergebnis darstellt, das Ihnen wichtig ist. Gemeinsame Entscheidungen sind:

  • Luftwiderstandsbeiwert.
  • Spitzenstress.
  • Druckabfall.
  • Temperatur an einem ausgewählten Punkt.
  • Gesamtenergie, Massenstrom oder eine andere integrale Größe.

Diese Menge wird normalerweise als φ geschrieben. Sie extrahieren es aus jeder Netzebene.

Schritt 2: Führen Sie Simulationen auf allen drei Gittern aus

Führen Sie die gleiche Simulation auf den groben, mittleren und feinen Maschen aus. Halten Sie Randbedingungen, Solvereinstellungen, physikalische Parameter und Konvergenzkriterien konsistent.

Verlassen Sie sich nicht nur auf Residuen. Überwachen Sie auch die Menge des Interesses. Ein Rest kann akzeptabel aussehen, während sich die tatsächlichen technischen oder wissenschaftlichen Ergebnisse noch ändern.

Schritt 3: Berechnen Sie die beobachtete Näherungsreihenfolge

Die beobachtete Annäherungsreihenfolge, die normalerweise als p geschrieben wird, zeigt Ihnen, wie schnell der Fehler mit der Netzverfeinerung abnimmt.

Für drei Gitter mit konstantem Verfeinerungsverhältnis r ist eine praktische Schätzung:

p = ln(|(φ₃ - φ₂) / (φ₂ - φ₁)|) / ln(r)

Python-Implementierung:

import numpy as np

def compute_observed_order(phi_coarse, phi_medium, phi_fine, r):
    """Compute observed order of approximation for three grid levels."""
    eps_32 = phi_coarse - phi_medium
    eps_21 = phi_medium - phi_fine
    
    if eps_21 == 0:
        raise ValueError("Medium-fine difference is zero; cannot compute observed order.")
    
    ratio = abs(eps_32 / eps_21)
    
    if ratio <= 0:
        raise ValueError("Invalid error ratio; check grid results.")
    
    return np.log(ratio) / np.log(r)

Wenn das Verfahren nominell zweiter Ordnung ist, könnte eine praktische beobachtete Reihenfolge nahe bei 2,0 liegen. Niedrigere Werte können Probleme mit der Netzqualität, Randeffekten, nichtlineares Verhalten oder darauf hinweisen, dass sich die Gitter noch nicht im asymptotischen Bereich befinden.

Schritt 4: Richardson-Extrapolation anwenden

Die Richardson-Extrapolation schätzt den Kontinuumswert bei Null-Gitterabstand. Es verbessert die Schätzung über das Feinrasterergebnis hinaus, indem die feinen und mittleren Ergebnisse plus der beobachteten Reihenfolge verwendet werden.

def richardson_extrapolation(phi_medium, phi_fine, r, p):
    """Estimate the continuum value using Richardson extrapolation."""
    denominator = r**p - 1
    
    if denominator == 0:
        raise ValueError("Invalid denominator; check refinement ratio and observed order.")
    
    return phi_fine + (phi_fine - phi_medium) / denominator

Dies ersetzt nicht die Validierung, liefert jedoch eine nützliche Schätzung des netzunabhängigen numerischen Wertes.

Schritt 5: Berechnen Sie den Gitterkonvergenzindex

Der Gitterkonvergenzindex quantifiziert die prozentuale Unsicherheit, die durch die Netzauflösung verursacht wird. Es wird häufig verwendet, um die Netzkonvergenz standardisiert zu melden.

def calculate_gci(phi_medium, phi_fine, r, p, safety_factor=1.25):
    """Calculate fine-grid Grid Convergence Index as a percentage."""
    if phi_fine == 0:
        raise ValueError("Fine-grid value is zero; relative GCI is undefined.")
    
    denominator = r**p - 1
    
    if denominator == 0:
        raise ValueError("Invalid denominator; check refinement ratio and observed order.")
    
    apparent_relative_error = abs((phi_fine - phi_medium) / phi_fine)
    gci = safety_factor * apparent_relative_error / denominator
    
    return gci * 100

Der Sicherheitsfaktor ist wichtig:

  • Verwenden Sie 1.25, wenn Sie drei oder mehr Gitter verwenden.
  • Verwenden Sie einen konservativeren Wert, wenn nur zwei Gitter verfügbar sind, obwohl zwei Gitter für eine strenge Berichterstattung nicht empfohlen werden.

Schritt 6: Überprüfen Sie den asymptotischen Bereich

Um zu überprüfen, ob die Gitter im asymptotischen Bereich liegen, vergleichen Sie die GCI-Werte zwischen dem mittelfeinen Paar und dem Grobmediumpaar.

def asymptotic_range_ratio(gci_32, gci_21, r, p):
    """Check whether grid convergence is close to the asymptotic range."""
    if gci_21 == 0:
        raise ValueError("Fine-grid GCI is zero; asymptotic ratio is undefined.")
    
    return gci_32 / (gci_21 * r**p)

Ein Wert nahe 1,0 deutet darauf hin, dass sich die Gittersequenz dem asymptotischen Bereich nähert. Große Abweichungen deuten darauf hin, dass eine weitere Verfeinerung erforderlich sein kann oder dass die ausgewählte interessierende Menge nicht reibungslos konvergiert.

Ein konkretes Beispiel

Angenommen, Sie simulieren den Fluss durch ein Rohr und extrahieren die Druckwiederherstellung aus drei Gittern.

Gitter Knoten Druckwiederherstellung
Fein 100.000 0,97050
Mittel 25.000 0,96854
Grob 6.250 0,96178

Angenommen, das Verfeinerungsverhältnis ist r = 2.0 .

Beobachtete Reihenfolge:

p = ln(|(0.96178 - 0.96854) / (0.96854 - 0.97050)|) / ln(2)
p = 1.786

Richardson-Extrapolation:

φ_ext = 0.97050 + (0.97050 - 0.96854) / (2^1.786 - 1)
φ_ext ≈ 0.97130

Feinraster-GCI:

GCI_21 = 1.25 × |0.97050 - 0.96854| / 0.97050 / (2^1.786 - 1)
GCI_21 ≈ 0.103%

Dies bedeutet, dass die Feinrasterdruckrückgewinnung nahe am geschätzten Kontinuumswert liegt, mit einer netzinduzierten Unsicherheit von etwa 0,1%. Dies ist die Art des Ergebnisses, das in einem strengen Simulationsworkflow gemeldet werden kann.

Netzkonvergenz vs. Code-Überprüfung

Die Netzkonvergenz und die Codeüberprüfung hängen zusammen, aber sie sind nicht gleich.

  • Die Codeüberprüfung fragt, ob der Code die Gleichungen richtig löst.
  • Die Netzkonvergenz fragt, ob diese spezifische Lösung unabhängig von der Netzauflösung ist.

Die Netzkonvergenz ist ein Schritt zur Lösungsüberprüfung. Es schätzt den numerischen Fehler für einen Simulationsaufbau. Es beweist nicht, dass der Code im Allgemeinen korrekt ist, und es beweist nicht, dass das Modell die Realität darstellt.

Ein praktischer Arbeitsablauf ist:

  1. Verwenden Sie die Codeüberprüfung, wie z. B. hergestellte Lösungen, um die Implementierung zu überprüfen.
  2. Verwenden Sie die Netzkonvergenz, um die numerische Unsicherheit von Produktionssimulationen zu überprüfen.
  3. Verwenden Sie die Validierung gegen Experimente oder Benchmark-Daten, um die physikalische Glaubwürdigkeit zu überprüfen.

Häufige Fehler in Netzkonvergenzstudien

  1. Verwenden Sie nur zwei Gitter. Dies verhindert eine zuverlässige Überprüfung des asymptotischen Bereichs und der beobachteten Reihenfolge.
  2. inkonsistente Verfeinerung verwenden. Wenn Sie nur eine Richtung verfeinern oder die Netztopologie ändern, können Sie die Annahme des Verfeinerungsverhältnisses beeinträchtigen.
  3. Mesh-Qualität ignorieren. Ein feineres Netz mit schlechten Zellen kann zur falschen Antwort konvergieren.
  4. Überwachung der falschen Menge. Die Menge des Interesses sollte die wissenschaftliche oder technische Schlussfolgerung darstellen, die Ihnen wichtig ist.
  5. Stoppen nur basierend auf Residuen. Residuen beweisen nicht immer, dass sich die interessierende Menge stabilisiert hat.
  6. Behandlung von GCI als Beweis für die körperliche Korrektheit. Ein niedriger GCI bedeutet nur, dass die Netz-induzierte Unsicherheit gering ist. Eine Validierung ist weiterhin erforderlich.

Netzanpassung und -automatisierung

Moderne Workflows nutzen zunehmend die Netzanpassung. Anstatt eine feste Sequenz von Netzen manuell zu erstellen, verfeinert oder vergröbert die Simulation Regionen basierend auf Fehlerindikatoren.

Häufige Anpassungsansätze sind:

  • H-Anpassung, bei der die Zellen lokal verfeinert oder vergröbert werden.
  • p-Anpassung, bei der die Polynomreihenfolge in Regionen mit hohen Gradienten zunimmt.
  • Hybride Ansätze, die lokale Netzverfeinerung und Methoden höherer Ordnung kombinieren.

Python-Tooling für Konvergenzstudien zeichnet sich ebenfalls ab. Skripte können Richardson-Extrapolation, GCI-Berechnungen, Konvergenzdiagramme und Berichtstabellen automatisieren.

Wann sollte man aufhören zu verfeinern?

Sie verfeinern nicht für immer. Die Netzverfeinerung sollte aufhören, wenn zusätzliche Genauigkeit die Rechenkosten nicht mehr rechtfertigt.

Gemeinsame Stoppbedingungen sind:

  • GCI liegt unter der für das Projekt erforderlichen Toleranz.
  • Eine weitere Verfeinerung kostet viel mehr, ändert aber das Ergebnis nur geringfügig.
  • Hardware-Grenzwerte machen die nächste Verfeinerungsstufe unpraktisch.
Lage Empfohlener Netzpegel
Vorläufige Erkundung des Entwurfs Grobes Netz nur für qualitative Trends
Engineering-Analyse mit GCI-Ziel Mittel- bis feines Netz, häufig unter 2 % auf GCI abzielen
Publikationssimulation Feinnetz, häufig auf GCI unter 1% mit Dokumentation abzielen
sicherheitskritische oder behördliche Verwendung Sehr feines Netz plus vollständiger Verifizierungs- und Validierungs-Workflow

Eine praktische Checkliste für Ihre nächste Simulation

Überprüfen Sie vor dem Ausführen einer Produktionssimulation Folgendes:

  • Netzqualitätsbericht: Jede Zelle sollte die Qualitätsschwellen für den Solver und den Elementtyp überschreiten.
  • Orthogonale Qualität: Überprüfen Sie bei CFD- oder endlichen Volumen-Workflows, ob schlechte Zellen unter akzeptable Grenzen fallen.
  • Schiefe: Überprüfen Sie den Maximalwert und die Verteilung, nicht nur den Durchschnitt.
  • Jacobian: Bestätigen Sie, dass keine Elemente negative Jacobien haben.
  • Drei-Gitter-Konvergenzstudie: Verwenden Sie grob-, mittel- und feine Maschen mit einem konsistenten Raffinessverhältnis.
  • GCI-Berechnung: Den Wert in Prozent angeben und den Sicherheitsfaktor korrekt anwenden.
  • Asymptotic Range Check: Vergleichen Sie das aufeinanderfolgende Konvergenzverhalten nach Möglichkeit.
  • Interessante Menge: Überwachen Sie das gleiche skalare Ergebnis über alle Netzebenen hinweg konsistent.
  • Volle Konvergenz: Überprüfen Sie die Residuen und Lösungsänderungen, bevor Sie die Ergebnisse extrahieren.
  • Dokumentation: Speichern Sie Netzgrößen, Solver-Einstellungen, GCI-Werte und Konvergenzdiagramme.

Verwandte Anleitungen

Zusammenfassung und nächste Schritte

Netzqualität und Konvergenzstudien sind keine optionalen Extras. Sie sind Teil glaubwürdiger wissenschaftlicher Simulation.

Ein strenger Workflow beginnt mit geometrischen Qualitätsprüfungen und geht dann zum quantitativen Konvergenznachweis über. Die wesentlichen Bestandteile sind Metriken der Netzqualität, drei Rasterebenen, die beobachtete Reihenfolge, die Richardson-Extrapolation und die GCI-Berichterstattung.

Prüfen Sie für Ihr nächstes Projekt den aktuellen Simulationsworkflow. Wenn Sie Einzelmesh-Berechnungen ohne Netzqualitätsbericht oder Konvergenzstudie durchführen, fügen Sie diese Schritte hinzu, bevor Sie das Ergebnis als endgültig behandeln.

Stellen Sie für FIPY-Benutzer sicher, dass die Netze die Qualitätsschwellen überschreiten, und führen Sie vor Produktionssimulationen eine dreistufige Konvergenzstudie zu einem repräsentativen Problem durch. Dokumentieren Sie die GCI-Werte und das Konvergenzverhalten. Diese Praxis trennt strenge Simulationsarbeiten von Rätselraten.

Dieser Leitfaden enthält etablierte Methoden aus der Netzkonvergenzforschung, Verifizierungsworkflows im NASA-Stil, der GCI-Berichterstattungspraxis und den praktischen Richtlinien für die Netzqualität, die in CFD-, FEA- und wissenschaftlichen Simulationsgemeinschaften verwendet werden.