Advektionsdominierte partielle Differentialgleichungen sind schwierig, da sich Informationen hauptsächlich entlang einer Flussrichtung bewegen, während die physikalische Diffusion nur wenig Glättung bietet. Eine numerische Methode, die für ein diffusionsdominiertes Problem gut funktioniert, kann Schwingungen, übermäßige Schmierung oder nichtphysische Werte erzeugen, wenn die Advektion stärker wird.
Die richtige Antwort besteht nicht nur darin, das am weitesten verfügbare Schema auszuwählen. Übermäßige numerische Diffusion kann scharfe Fronten verbergen, Konzentrationsspitzen schwächen und die Transportraten verändern. Eine nützliche Diskretisierung muss Stabilität, Begrenztheit, Erhaltung und Auflösung ausgleichen.
Die Zellpeclet-Nummer hilft, dieses Gleichgewicht zu beschreiben. Zentrale Differenzierung kann funktionieren, wenn das Netz die physikalische Diffusion auflöst. Upwind erster Ordnung bietet Robustheit, schmiert aber die Lösung. Begrenzte Schemata höherer Ordnung reduzieren das Verschmieren, während die Schwingungen kontrolliert werden. Bei Finite-Elemente-Methoden fügt SUPG eine konsistente Stabilisierung hauptsächlich entlang der Stromlinien hinzu.
Die Advektions-Diffusionsgleichung
Ein gängiges Skalartransportmodell ist:
∂φ/∂t + ∇ · (vφ) = ∇ · (α∇φ) + S
Für ein inkompressibles Geschwindigkeitsfeld wird dies oft geschrieben als:
∂φ/∂t + v · ∇φ = α∇²φ + S
Hier:
φist der transportierte Skalar, wie Temperatur oder Konzentration.vist das Geschwindigkeitsfeld.αist die physikalische Diffusivität.Sist eine Quelle oder Senke.
Die Diffusion verbreitet Informationen in alle Richtungen und glättet Steigungen. Die Advektion transportiert die Informationen hauptsächlich entlang der vom Geschwindigkeitsfeld bestimmten Merkmale. Wenn die Diffusion schwach ist, muss die numerische Methode diesen gerichteten Transport respektieren.
die Zellpeclet-Nummer
Die Zellpeclet-Zahl vergleicht Advektion und Diffusion auf der Skala einer Mesh-Zelle. Eine weit verbreitete Konvention ist:
Peₕ = |v|h / α
Für eine eindimensionale stetige Konvektions-Diffusions-Gleichung auf einem einheitlichen Gitter bleiben die klassischen zentralen endlichen Volumenkoeffizienten nicht negativ, wenn:
|Peₕ| ≤ 2
Einige Referenzen definieren die Zell-Peclet-Nummer mit einem zusätzlichen Faktor von zwei:
Pe* = |v|h / (2α)
Nach dieser Konvention lautet die äquivalente Bedingung:
|Pe*| ≤ 1
Das Übereinkommen muss daher vor Angabe einer Schwelle angegeben werden. Das Schreiben von |v|h/(2α) und der Vergleich mit 2 würde zwei verschiedene Definitionen mischen.
Für ein mehrdimensionales Finite-Volumen-Netz ist ein nützlicherer lokaler Nennwert:
Pe_f =
|v_f · n_f| d_PA
/ α_f
Der Wert hängt von der normalen Geschwindigkeit durch eine Fläche, dem Abstand benachbarter Zellzentren und der lokalen Diffusionsfähigkeit ab. Es kann über die Domäne variieren, wenn die Netz-, Geschwindigkeits- oder Materialeigenschaften ungleichmäßig sind.
Was das Peclet-Kriterium eigentlich bedeutet
Die oft zitierte Schwelle in der Nähe von zwei gilt für eine bestimmte stetige eindimensionale Konvektions-Diffusionsdiskretisierung. Es ist ein Begrenzungskriterium für die algebraischen Koeffizienten, die durch zentrale Differenzierung erzeugt werden.
Dies bedeutet nicht, dass jedes zentrale Schema für jedes vorübergehende Problem bei gleicher Zahl sofort instabil wird. Räumliche und zeitliche Diskretisierungen müssen zusammen analysiert werden.
Zwei verschiedene Probleme werden oft verwechselt:
- In einer stetigen Konvektions-Diffusions-Finite-Volumen-Gleichung kann die zentrale Differenzierung die Positivität des Koeffizienten verlieren, wenn die Zellpeclet-Zahl zu groß ist. Die Lösung kann dann Über- und Unterschwingungen entwickeln.
- Für reine vorübergehende Advektion ist der Vorwärts-Euler in der Zeit in Kombination mit dem zentrierten Raum, bekannt als FTCs, für jede Courant-Zahl ungleich Null instabil.
Beide Probleme können Schwingungen hervorrufen, aber ihre mathematischen Ursachen sind nicht identisch.
Warum zentrale Differenzierung oszillieren kann
Zentrale Differenzierung schätzt einen symmetrischen Nennwert:
φ_f ≈ (φ_P + φ_A) / 2
Auf einem einheitlichen Gitter ergibt dies eine Näherung zweiter Ordnung für glatte Lösungen. Es führt auch sehr wenig numerische Dissipation ein.
Diese geringe Dissipation ist nützlich, wenn die physikalische Lösung glatt und gut aufgelöst ist. Es wird zu einem Problem in der Nähe von steilen Schichten oder wenn die physikalische Diffusion zu schwach ist, um den Gittermaßstab zu steuern.
In der stetigen eindimensionalen, endlichen Volumengleichung verringert das Erhöhen der Zellpeclet-Zahl einen benachbarten Koeffizienten. Sobald dieser Koeffizient das Vorzeichen ändert, kann das diskrete Maximalprinzip verloren gehen. Die Lösung kann Grenzwerte überschreiten oder auch dann negativ werden, wenn die physikalische Lösung begrenzt bleibt.
Für die transiente reine Advektion ist eine zentrierte räumliche Ableitung in erster Linie dispersiv. Seine Eignung hängt vom Zeitintegrator ab. Die Paarung mit Forward Euler erzeugt eine instabile Methode, während andere Zeitintegratoren das Wachstum steuern können, aber dennoch Phasenfehler oder Oszillationen in der Nähe von ungelösten Gradienten einführen.
Upwind-Differenzierung erster Ordnung
Bei der Aufwinddifferenzierung werden Informationen aus der Richtung verwendet, in der der Fluss entsteht. Für eine positive eindimensionale Geschwindigkeit:
(∂φ/∂x)ᵢ
≈ (φᵢ - φᵢ₋₁) / h
Für eine negative Geschwindigkeit wird der Wert von rechts verwendet:
(∂φ/∂x)ᵢ
≈ (φᵢ₊₁ - φᵢ) / h
Diese richtungsbewusste Schablone unterdrückt viele der durch eine zentrierte Approximation erzeugten Schwingungen. Für die stetige lineare Konvektions-Diffusion werden auch positive benachbarte Koeffizienten über einen viel größeren Bereich von Zell-Peclet-Zahlen erzeugt.
Die räumliche Diskretisierung des Aufwindes sollte ohne Qualifikation nicht als bedingungslos beschrieben werden. Wird es mit einem expliziten Zeitintegrator kombiniert, hat die vollständige Methode immer noch eine Courant-Einschränkung.
Gegenwind als zentrale Differenzierung plus Diffusion
Für eine positive konstante Geschwindigkeit kann die Upwind-Ableitung erster Ordnung genau wie folgt geschrieben werden:
(φᵢ - φᵢ₋₁) / h
=
(φᵢ₊₁ - φᵢ₋₁) / (2h)
-
(φᵢ₊₁ - 2φᵢ + φᵢ₋₁) / (2h)
Der Zweitdifferentialausdruck nähert sich hφₓₓ. Das Einsetzen des Aufwindoperators in die Advektionsgleichung ergibt die modifizierte Gleichung:
∂φ/∂t + v∂φ/∂x
=
(|v|h / 2) ∂²φ/∂x²
+ higher-order terms
Der führende numerische Diffusionskoeffizient der räumlichen Halbdiskretisierung lautet daher:
α_num = |v|h / 2
Dies erklärt sowohl die Stabilität als auch das Verschmieren, das mit dem Aufwind erster Ordnung verbunden ist. Es fügt einen diffusionsähnlichen Kürzungsbegriff hinzu, der kurze Wellen und scharfe Gradienten unterdrückt.
Die Formel beschreibt den führenden Fehler des räumlichen Operators. Sobald eine Zeitdiskretisierung hinzugefügt wird, kann die vollständige modifizierte Gleichung zusätzliche Terme enthalten, die von der Courantzahl und der Zeitschrittgröße abhängen.
Reduzieren der numerischen Diffusion
Da die führende Aufwinddiffusionsskalierung mit Netzabstand verfeinert wird, verringert das Verfeinern das Verschmieren. Wenn nur der Zeitschritt reduziert wird, wird der führende räumliche Fehler nicht entfernt.
Weitere Optionen sind:
- Verwenden einer Rekonstruktion zweiter Ordnung
- Anwenden eines Flussbegrenzers
- Verwenden von Quick auf geeigneten strukturierten Netzen
- Anwenden von TVD- oder Weno-Methoden
- Verwenden von SUPG in einer Finite-Elemente-Formulierung
- Ausrichten und Verfeinern des Netzes in der Nähe wichtiger Ebenen
Die Erhöhung der physikalischen Diffusivität ist keine numerische Lösung. Es ändert sich das Modell und sollte nur durchgeführt werden, wenn das physikalische Problem einen anderen Koeffizienten erfordert.
Numerische Diffusion und Dispersion
Die numerische Diffusion verringert die Amplitude der aufgelösten Wellen. Es verbreitet Diskontinuitäten und glättet enge Spitzen.
Die numerische Dispersion ändert die Ausbreitungsgeschwindigkeit verschiedener Wellenlängen. Es kann führende oder hintere Schwingungen erzeugen, selbst wenn die Gesamtamplitude nicht stark gedämpft ist.
Der Aufwind erster Ordnung ist in erster Linie dissipativ. Viele zentrierte und höherwertige Schemata sind weniger dissipativ, aber dispersiver. Ein gutes Transportverfahren muss beide Effekte kontrollieren.
Die richtige Balance hängt von der Anwendung ab. Eine kleine begrenzte Menge an Dissipation kann in einer robusten technischen Berechnung akzeptabel sein. Bei der Wellenausbreitung kann eine übermäßige Dämpfung die gemessene Menge zerstören. Beim reaktiven Transport können oszillierende Unterschwingungen negative Konzentrationen erzeugen und das Reaktionsmodell brechen.
Lineare Schemata höherer Ordnung
| Schema | Nennordnung | Hauptstärke | Hauptrisiko |
|---|---|---|---|
| Zentraler Unterschied | Zweite Ordnung auf glatten einheitlichen Gittern | Niedrige numerische Diffusion | Verlust der Begrenzung oder dispersive Schwingungen |
| Aufwind erster Ordnung | Erste Bestellung | Robust und richtungsbewusst | Starke numerische Diffusion |
| Linearer Aufwind | Zweite Ordnung auf glatten Gittern | Weniger Diffusion als Aufwind erster Ordnung | Nicht automatisch begrenzt in der Nähe von scharfen Gradienten |
| Schnell | Gesichtsinterpolation dritter Ordnung auf einem einheitlichen Gitter | Gute Genauigkeit für reibungslose Konvektion | kann überschreiten und Ordnung in der Nähe von Grenzen oder unregelmäßigen Gittern verlieren |
| LAX-WENDROFF | Zweite Ordnung in Raum und Zeit für lineare Advektion | Geringe Dissipation für aufgelöste Wellen | Dispersive Oszillationen in der Nähe von Diskontinuitäten |
Die Nennordnung gilt in glatten Regionen unter den Annahmen, die zur Ableitung des Schemas verwendet werden. Grenzen, Begrenzer, Netz-Nicht-Orthogonalität, Diskontinuitäten und variable Koeffizienten können die beobachtete Konvergenzrate verringern.
Flussbegrenzer und TVD-Schemata
Ein Flussbegrenzer kombiniert einen robusten Fluss mit niedriger Ordnung mit einer weniger diffusiven Korrektur höherer Ordnung. In glatten Bereichen erlaubt der Begrenzer die Näherung höherer Ordnung. Nahe scharfe Steigungen reduzieren die Korrektur, um neue Maxima oder Minima zu vermeiden.
Ein vereinfachter gemischter Nennwert kann wie folgt geschrieben werden:
φ_f =
φ_f(upwind)
+
ψ(r) [
φ_f(high-order)
- φ_f(upwind)
]
Die Begrenzungsfunktion ψ(r) hängt von benachbarten Gradienten ab. Häufige Beispiele sind MinMod, Van Leer, Superbee und monotonisierte zentrale Begrenzer.
Die Verfahren zur Verringerung der Gesamtvariation sind so konzipiert, dass sie die Gesamtvariation einer eindimensionalen Lösung nicht erhöhen. Sie bieten einen nützlichen Kompromiss zwischen der Robustheit des Aufwindes erster Ordnung und der Auflösung eines Schemas höherer Ordnung.
In der Nähe einer echten Diskontinuität reduziert ein nichtlinearer Begrenzer normalerweise die lokale Reihenfolge. Dies wird erwartet: Die Aufrechterhaltung der Monotonie und der hohen linearen Ordnung bei einer Diskontinuität sind widersprüchliche Ziele.
Weno-Methoden
Bei gewichteten im Wesentlichen nicht oszillierenden Methoden verwenden mehrere Kandidatenschablonen. Glättungsindikatoren weisen den Schablonen, die eine Diskontinuität kreuzen, ein geringeres Gewicht zu.
Weno-Methoden können Genauigkeit in glatten Regionen mit hoher Ordnung bieten und gleichzeitig die stärksten Schwingungen eines linearen Schemas höherer Ordnung vermeiden. Sie werden weit verbreitet für komprimierbare Strömungen, Erhaltungsgesetze und Probleme mit sich bewegenden Schocks verwendet.
Zu ihren Nachteilen gehören höhere Rechenkosten, umfassendere Datenabhängigkeiten, komplexere Grenzbehandlungen und mehrere Implementierungsoptionen, die sich auf die Dissipation auswirken.
SUPG-Stabilisierung
Die Stabilisierung von Upwind / Petrov-Galerkin-Stabilisierung ist in erster Linie eine Finite-Elemente-Technik. Es ändert den Testraum, so dass die schwache Form einen auf den Fluss ausgerichteten Beitrag auf der Basis von Rest erhält.
Für einen Operator mit starkem Rest:
R(φ) =
∂φ/∂t
+ v · ∇φ
- ∇ · (α∇φ)
- S
Ein typischer Stabilisierungsbegriff ist:
Σ_K ∫_K
τ_K
(v · ∇w)
R(φ_h)
dΩ
Da das starke Residuum in der Formulierung vorkommt, ist der Begriff konsistent: Die genaue Lösung erfüllt auch die stabilisierte Gleichung.
Der Faktor v · ∇w betont die Richtung der Stromlinien. Dies reduziert Schwingungen, ohne die gleiche Menge an Seitenwindschmierung wie einfache isotrope künstliche Diffusion einzuführen.
Auswahl des SUPG-Parameters
Der Stabilisierungsparameter ist nicht universell gleich h/(2|v|). Dieser Ausdruck ist die hohe Peclet-Grenze mehrerer stationärer Advektionsformeln.
Für ein eindimensionales stetiges Advektions-Diffusionsproblem ist eine häufige Form:
τ =
h / (2|v|)
[
coth(Pe*) - 1/Pe*
]
Pe* = |v|h / (2α)
Wenn die Advektion stark dominiert:
τ → h / (2|v|)
Wenn die Diffusion dominiert, nähert sich die Expression einer diffusionsskalierten Grenze, anstatt eine übermäßige Stabilisierung hinzuzufügen.
Transiente und mehrdimensionale Implementierungen können Zeit-, Advektions- und Diffusionsskalen kombinieren:
τ ≈
[
(c_t / Δt)²
+ (c_v |v| / h)²
+ (c_d α / h²)²
]⁻¹ᐟ²
Die Konstanten und die Elementlängendefinition hängen von der Formulierung ab. Der geeignete Ausdruck sollte von der Finite-Elemente-Methode und der verwendeten Softwareimplementierung stammen.
Die Dokumentation von Moose LevelsetAdvectionSupg zeigt, wie SUPG als Teil einer vollständig stabilisierten Level-Set-Gleichung enthalten ist.
SUPG ist keine isotrope künstliche Diffusion
Das Hinzufügen eines größeren Skalarkoeffizienten zu einem gewöhnlichen Diffusionsterm ist keine vollständige SUPG-Implementierung. In jeder Raumrichtung wirkt ein skalarer Diffusionskoeffizient.
SUPG modifiziert die schwache Form unter Verwendung der Richtungsableitung der Testfunktion und des starken Rests. Es kann daher eine rationelle Stabilisierung hinzufügen und gleichzeitig eine höhere Seitenwindauflösung erhalten.
In schwierigen mehrdimensionalen Schichten kann es immer noch zu Schwingungen des Seitenwindes kommen. Zusätzliche Begriffe für Diskontinuitätserfassung oder Schockerfassung werden manchmal mit SUPG verwendet, diese müssen jedoch separat entworfen und validiert werden.
Advektion – Diffusion in FIPY
FIPY bietet mehrere Konvektionsbegriffe für endliche Volumen, darunter:
CentralDifferenceConvectionTermExponentialConvectionTermHybridConvectionTermPowerLawConvectionTermUpwindConvectionTermExplicitUpwindConvectionTermVanLeerConvectionTerm
Der Koeffizient eines Konvektionsterms muss eine Vektorgeschwindigkeit oder einen Fluss darstellen. In zwei Dimensionen kann ein konstanter Vektor in Form ((v_x,), (v_y,)) geliefert werden.
Ein Fipy Upwind-Beispiel
Das folgende Beispiel transportiert einen kreisförmigen skalaren Bereich durch eine zweidimensionale Domäne, während eine kleine Menge physikalischer Diffusion hinzugefügt wird:
from fipy import (
Grid2D,
CellVariable,
TransientTerm,
DiffusionTerm,
UpwindConvectionTerm
)
from fipy.tools import numerix
# Domain
length_x = 2.0
length_y = 1.0
nx = 200
ny = 100
dx = length_x / nx
dy = length_y / ny
mesh = Grid2D(
nx=nx,
ny=ny,
dx=dx,
dy=dy
)
# Transported scalar
phi = CellVariable(
name="concentration",
mesh=mesh,
value=0.0,
hasOld=True
)
x, y = mesh.cellCenters
initial_region = (
(x - 0.4) ** 2
+ (y - 0.5) ** 2
< 0.1 ** 2
)
phi.setValue(
1.0,
where=initial_region
)
# Constant velocity vector
velocity_x = 1.0
velocity_y = 0.0
velocity = (
(velocity_x,),
(velocity_y,)
)
diffusivity = 1e-3
equation = (
TransientTerm(var=phi)
+ UpwindConvectionTerm(
coeff=velocity,
var=phi
)
== DiffusionTerm(
coeff=diffusivity,
var=phi
)
)
# Inflow value on the left boundary
phi.constrain(
0.0,
where=mesh.facesLeft
)
# Moderate time step for temporal accuracy
dt = 0.25 * dx / abs(velocity_x)
number_of_steps = 200
for step in range(number_of_steps):
phi.updateOld()
equation.solve(
var=phi,
dt=dt
)
UpwindConvectionTerm verwendet eine implizite Konvektionsdiskretisierung erster Ordnung. Der gewählte Zeitschritt wird daher nicht als strikte explizite CFL-Grenze dargestellt. Es wird mäßig gehalten, um den Transport genau zu lösen.
Für die explizit integrierte Konvektion muss das vollständige Schema die mit den gewählten räumlichen und zeitlichen Methoden verbundene Stabilitätsbeschränkung erfüllen.
Mit dem Potenzgesetz von FIPY
Für die stetige Konvektions-Diffusion verwenden die offiziellen Beispiele von FIPY PowerLawConvectionTerm:
from fipy import (
CellVariable,
Grid1D,
DiffusionTerm,
PowerLawConvectionTerm
)
length = 10.0
cell_count = 1000
mesh = Grid1D(
nx=cell_count,
dx=length / cell_count
)
concentration = CellVariable(
name="concentration",
mesh=mesh,
value=0.0
)
concentration.constrain(
0.0,
where=mesh.facesLeft
)
concentration.constrain(
1.0,
where=mesh.facesRight
)
diffusivity = 1.0
velocity = (10.0,)
equation = (
DiffusionTerm(
coeff=diffusivity
)
+ PowerLawConvectionTerm(
coeff=velocity
)
)
equation.solve(
var=concentration
)
FIPY-Dokumente PowerLawConvectionTerm und ExponentialConvectionTerm als geeignet für eine breite Palette von Konvektions-Diffusionsfällen, wobei die Potenzgesetz-Approximation eine effizientere praktische Option bietet.
Überprüfen der Peclet-Nummer
Für das einheitliche zweidimensionale Beispiel können gerichtete Zellpeclet-Nummern wie folgt berechnet werden:
peclet_x = (
abs(velocity_x)
* dx
/ diffusivity
)
peclet_y = (
abs(velocity_y)
* dy
/ diffusivity
)
print("Pe_x =", peclet_x)
print("Pe_y =", peclet_y)
Berechnen Sie für ungleichmäßige Netze und variable Geschwindigkeiten eine lokale Peclet-Nummer mit der normalen Gesichtsgeschwindigkeit und dem lokalen Zellzentrumsabstand. Ein einzelner globaler Wert kann High-Peclet-Regionen verbergen.
räumliche und zeitliche Fehler müssen getrennt werden
Das Verschmieren in einer Advektionsberechnung kann vom räumlichen Fluss, dem Zeitintegrator oder beiden erfolgen.
Rückwärts-Euler zum Beispiel ist für abfallende und oszillatorische Modi ableitend. Crank-Nicocolson verhält sich anders und dämpft nicht alle steifen Modi. Explizite Runge-Kutta-Methoden haben ihre eigenen Dissipations- und Dispersionskurven.
Es ist daher ungenau festzustellen, dass jede implizite Methode immer die gleiche Menge an Diffusion einführt. Die numerische Dämpfung ist methodenabhängig.
Eine nützliche Analyse variiert das Netz, während der zeitliche Fehler klein bleibt, und dann den Zeitschritt auf einem festen feinen Netz. Dies hilft dabei, die räumliche numerische Diffusion vom zeitlichen Fehler zu trennen.
Der zugehörige Leitfaden Zeitintegrationsmethoden für PDE-Solver: Explicit vs. Implicit Schemes diskutiert diese Unterscheidung genauer.
Auswahl einer Stabilisierungsstrategie
| Lage | Möglicher Ausgangspunkt | Hauptüberlegung |
|---|---|---|
| Niedrige Zell-Peclet-Nummer und glatte Lösung | Zentrale Differenzierung | Geringe Diffusion und Genauigkeit zweiter Ordnung |
| Hohe Peclet-Nummer mit Robustheitspriorität | Aufwind erster Ordnung | begrenzt, aber möglicherweise überdiffusionsoffen |
| Sanfte Lösung, die eine höhere Genauigkeit erfordert | Linearer Aufwind oder schnell | Begrenzung und Grenzbehandlung überprüfen |
| Scharfe Front, die Monotonie erfordert | TVD-Flux-begrenzte Methode | Nichtlinearer Begrenzer reduziert Oszillationen |
| Schockdominiertes Naturschutzgesetz | Godunov-Typ-, Weno- oder DG-Methode | Benötigt Gleichungsangemessene numerische Flüsse |
| Finite Element Advection – Diffusion | supg | Konsequente rationelle Reststabilisierung |
| Komplexe Seitenwindschichten | Supg mit zusätzlicher Schockerfassung oder lokaler Verfeinerung | SUPG allein kontrolliert möglicherweise nicht jede Seitenwindoszillation |
Randbedingungen bei Advektionsproblemen
Advection transportiert Informationen über Zuflussgrenzen in die Domäne. Grenzwerte sollten normalerweise vorgeschrieben werden, wenn:
v · n < 0
An einer Abflussgrenze kann die Verschreibung eines unnötigen Skalarwerts das Problem überbegrenzen oder eine falsche Grenzschicht erzeugen.
Die Diffusion ändert die Grenzanforderungen, da sie einen räumlichen Operator zweiter Ordnung einführt. Ein vollständiges Advektions-Diffusionsmodell kann daher eine Wert- oder Flussbedingung erfordern, die aus dem physikalischen Problem abgeleitet ist.
Randbedingungen sollten zusammen mit der Strömungsrichtung überprüft werden. Ein Schema kann instabil erscheinen, wenn das tatsächliche Problem eine falsche Zu- oder Abflussbehandlung ist.
Netzausrichtung und Seitenwinddiffusion
Die numerische Diffusion wird durch die Netzorientierung beeinflusst. Auf einem kartesischen Gitter wird der Transport, der mit einer Koordinatenachse ausgerichtet ist, in der Regel sauberer dargestellt als der Diagonaltransport.
Wenn die Strömung das Gitter schräg überquert, können mehrdimensionale Aufwindschemata erster Ordnung ein erhebliches Schmirgeln des Seitenwinds verursachen. Verfeinerung, anisotrope Netze, Rekonstruktion der kleinsten Quadrate, mehrdimensionale Begrenzung oder Stabilisierung auf der Basis von Finite-Elementen können das Ergebnis verbessern.
Eine kleine Zellgröße allein garantiert keine gute Genauigkeit, wenn die Zellen stark verzerrt oder schlecht auf wichtige Schichten ausgerichtet sind.
Verifizierungstests
Eine neue Advektionsimplementierung sollte auf Probleme mit bekanntem Verhalten getestet werden.
Übersetzung eines glatten Profils
Verwenden Sie periodische Grenzen und transportieren Sie eine glatte Gauß- oder Sinuswelle. Vergleichen Sie nach einer Periode das numerische Profil mit der Anfangsbedingung.
Dieser Test zeigt Amplitudenverlust und Phasenfehler.
Übersetzung eines Quadratimpulses
Ein Quadratimpuls belichtet numerische Diffusion und Schwingungen. Der Aufwind erster Ordnung verschmiert die Kanten, während uneingeschränkte Schemata höherer Ordnung übertrieben werden können.
Rotierender Blob
Ein zweidimensionales Drehgeschwindigkeitsfeld testet mehrdimensionale Transport-, Seitenwinddiffusions- und Netzorientierungseffekte.
stetige Grenzschicht
Ein eindimensionales stetiges Konvektions-Diffusionsproblem mit einer bekannten analytischen Lösung testet das Zellpeclet-Kriterium und die Fähigkeit, eine dünne Ausströmschicht aufzulösen.
Mesh- und Zeitschrittkonvergenz
Führen Sie das gleiche Problem auf mehreren Netzen aus. Messen Sie Fehler in Mengen wie:
- Spitzenwert
- Frontposition
- Schichtdicke
- Insgesamt transportierte Masse
L1,L2oder maximale Norm- Überschießen und Unterschießen
Wiederholen Sie die Berechnung mit kleineren Zeitschritten auf einem festen Netz. Dies trennt räumliche und zeitliche Fehler.
Eine Methode höherer Ordnung sollte ihre erwartete Konvergenz bei einem reibungslosen Test nachweisen. Nahe Diskontinuitäten kann die globale Konvergenz geringer sein, da es der genauen Lösung an ausreichender Regelmäßigkeit mangelt.
Häufige Fehler
- Mischen von zwei verschiedenen Peclet-Nummerdefinitionen
- Anwenden der stationären Zentraldifferenzschwelle auf jedes transiente Schema
- Aufrufen von Upwind bedingungslos stabil ohne Angabe des Zeitintegrators
- Angenommen, numerische Diffusion hängt nur vom Zeitschritt ab
- Ersetzen von SUPG durch gewöhnliche isotrope Diffusion
- Angenommen, SUPG verwendet immer
τ = h/(2|v|) - Verwenden eines uneingeschränkten linearen Schemas höherer Ordnung in der Nähe einer Diskontinuität
- Steigerung der physischen Diffusivität, um numerisches Verschmieren zu verbergen
- Anwenden von Skalarwerten sowohl bei Zu- als auch bei Ausfluss ohne Überprüfung der PDE
- Vergleichen von Schemata auf verschiedenen Netzen oder auf unterschiedlichen Fehlerebenen
- Ignorieren der Massenerhaltung und der physischen Grenzen
- Alle Dämpfung der räumlichen Diskretisierung zuzuordnen
Ein praktischer Arbeitsablauf
- Schreiben Sie die Gleichung in konservativer oder nicht konservativer Form, wie es die Physik verlangt.
- Identifizieren Sie Zufluss, Abfluss und diffuse Grenzen.
- Berechnen Sie die lokalen gerichteten Zellpeclet-Nummern.
- Beginnen Sie mit einem robusten Aufwind oder begrenzten Schema.
- Die numerische Diffusion bei einem bekannten Transporttest messen.
- Verfeinern Sie das Netz und überprüfen Sie die Konvergenz.
- Wechseln Sie zu einem begrenzten Schema höherer Ordnung, wenn das Verschmieren nicht akzeptabel ist.
- Verwenden Sie supg für Finite-Elemente-Formulierungen, die eine stromlinienförmige Stabilisierung benötigen.
- Überprüfen Sie die Courant-Nummer und die zeitliche Konvergenz separat.
- Dokumentieren Sie den Fluss, den Begrenzer, den Stabilisierungsparameter und die Grenzbehandlung.
Verwandte Anleitungen
- Finite Volume-Methode einfach erklärt – Überprüfen Sie die Gesichtsflüsse, die Erhaltung und die zellzentrierte Diskretisierung.
- Zeitintegrationsmethoden für PDE-Solver: Explizite vs. implizite Schemes — Vergleichen Sie CFL-Einschränkungen, Dämpfung und zeitlichen Fehler.
- Wann verwenden FEM, FVM oder FDM – Wählen Sie eine räumliche Diskretisierung für das maßgebliche Problem.
- Mesh-Qualitäts- und Konvergenzstudien: Ein praktischer Leitfaden – Verbinden Sie die lokale Auflösung mit der numerischen Konvergenz.
- Operator-Splitting, Strang-Splitting und IMEX-Schemata für PDE-Solver — Separate Advektion von Diffusions- und Reaktionsprozessen.
- Erweitern Sie FIPY mit benutzerdefinierten Modulen – Erkunden Sie benutzerdefiniertes numerisches Verhalten um FIPY-Modelle.
weiterlesen
- Finite Difference Computing mit PDEs — detaillierte Analyse von Advektionsschemata, Verstärkungsfaktoren, Diffusion und Streuung.
- nptel: Konvektion und Diffusion – Diskussion über das Verhalten von zentralem und Upwind-Finitem Volumen und des Peclet-Kriteriums.
- Dokumentation für MooseleveletAdvectionsupg – Eine Implementierung der SUPG-Stabilisierung für eine Level-Set-Gleichung.
- WIAS Berlin: Stabilisierung von konvektionsdominierten Problemen – Ressourcen zu stabilisierten Finite-Elemente-Methoden.
- Fenics-QA: Implementierung von SUPG – Historische Implementierungsdiskussion und praktische Vorsichtsmaßnahmen.
- FIPY-Level-Set-Advektionsbeispiele – Advection-Beispiele aus der FIPY-Dokumentation.
- Supg Finite Element Method Analysis – Mathematische Analyse stabilisierter Finite-Elemente-Formulierungen.
- Computational Science Stack Exchange: Warum Advektion herausfordert – Diskussion der numerischen Probleme in der Gemeinschaft in Advektionsgleichungen.
Schlussfolgerung
Advektionsdominierte Gleichungen stellen numerische Methoden in Frage, da die physikalische Diffusion zu schwach ist, um das ungelöste Verhalten im Rastermaßstab zu unterdrücken. Die Zellpeclet-Nummer hilft festzustellen, ob eine stetige Diskretisierung des zentralen endlichen Volumens wahrscheinlich begrenzt bleibt, aber ihre Definition und ihr Anwendungsfeld müssen korrekt angegeben werden.
Der Aufwind erster Ordnung bietet eine robuste Richtungsannäherung. Sein führender Verkürzungsfehler verhält sich wie eine künstliche Diffusion mit dem Koeffizienten |v|h/2 , was sowohl seine Stabilität als auch seine Tendenz zur Verschmierung von Fronten erklärt.
Lineare Verfahren höherer Ordnung reduzieren die numerische Diffusion, können jedoch dispersive Schwingungen einleiten. Flussbegrenzer, TVD-Schemata und WENO-Methoden verwenden nichtlineare Mechanismen, um eine hohe Auflösung in glatten Regionen beizubehalten und gleichzeitig die Schwingungen in der Nähe steiler Gradienten zu reduzieren.
SUPG dient einem verwandten Zweck bei Finite-Elemente-Methoden. Es fügt einen konsistenten auf Residuen basierenden Term hinzu, der auf die Strömungsrichtung ausgerichtet ist. Sein Stabilisierungsparameter hängt von der lokalen Advektion, Diffusion, Mesh und manchmal der Zeitskala ab. Es sollte nicht blind durch eine feste Menge an isotroper Diffusion ersetzt werden.
Kein Schema ist allgemein am besten. Die richtige Wahl hängt von der lokalen Peclet-Nummer, der Regelmäßigkeit der Lösung, den Anforderungen an die Konservierung, der Netzqualität, den Randbedingungen und der Toleranz für Diffusion oder Dispersion ab. Eine glaubwürdige Wahl muss durch analytische Tests, Netzverfeinerung, zeitliche Konvergenz und Überprüfung der physischen Grenzen unterstützt werden.