Wenn Forscher von inkomprimierbaren zu komprimierbaren Strömungssimulationen in Python übergehen, stoßen sie auf eine grundlegend andere Physik – die Dichte wird zu einer Variable, die Energiegleichung muss gelöst werden und Schockwellen führen zu Diskontinuitäten, die Standard-Numerikverfahren einfach nicht bewältigen können. Dieser Artikel behandelt, was Supersonic Flow anders macht, die Schockerfassungsmethoden, die für die Handhabung entwickelt wurden, und die Python-Solver, die diese Methoden für Luft- und Raumfahrtanwendungen implementieren.
Schlüssel zum Mitnehmen
- Für die komprimierbare Strömung müssen die komprimierbaren Navier-Stokes-Gleichungen gelöst werden, wobei die Dichte als Variable und die Energiegleichung gekoppelt sind – im Gegensatz zu einer inkompressiblen Strömung, bei der die Dichte konstant ist.
- Schockerfassungsmethoden (ROE, AUSM, TVD, Weno, Teno) sind unerlässlich, da Schocks zu Diskontinuitäten führen. Das Roe-Schema erfordert Entropie-Fix- und Karbunkelschutz bei starken Stößen.
- Python-Solver für komprimierbare Strömung sind jetzt produktionstechnisch: Pybaram (unstrukturierte Grids, 2022), OpenSBLI v3.0 (automatische Codegenerierung, CPC 2025), JANC (Differentiable) GPU-Solver, April 2025) und Pygasflow (Quasi-1D Analytical).
- Benchmark Cases Wie das SOD-Schockrohr und das SHU-Osher-Problem bieten Standardvalidierung für die Genauigkeit der Schockerfassung.
- MUSCL-TVD ist billiger, aber oszilliert in der Nähe von Diskontinuitäten; Weno 5. Ordnung bietet eine überlegene Auflösung, kostet aber mehr. Für DNS/Iles von Wechselwirkungen zwischen Schock-Boundary-Schicht ist WENO/Teno der aktuelle Standard.
- PyGasFlow und das Open-Source-Repository Python-Shock-Tube bieten zugängliche Einstiegspunkte für das Verständnis der Schockphysik, bevor sie sich auf Produktionslöser verpflichten.
Was unterscheidet Supersonic Flow von inkompressibler Strömung?
Bei inkompressibler Strömung wird die Dichte als Konstante behandelt. Die Impulsgleichungen werden unabhängig von der Energiegleichung gelöst, und der Druck wird allein durch das Geschwindigkeitsfeld durch einen Druck-Geschwindigkeitskopplungsalgorithmus (wie einfach oder piso) bestimmt. Dies bedeutet, dass Sie für Flüsse mit niedriger Geschwindigkeit die Impuls- und Kontinuitätsgleichungen lösen können, ohne jemals die Dichte der Flüssigkeit zu kennen – dies ist eine Selbstverständlichkeit.
Im komprimierbaren Fluss ändert sich alles. Die Dichte wird zu einer Variable, die sich gemäß der Kontinuitätsgleichung, den Impulsgleichungen und der Energiegleichung entwickelt. Der thermodynamische Zustand des Fluids – Druck, Temperatur und Dichte – wird durch die Zustandsgleichung (typischerweise das ideale Gasgesetz für Luft- und Raumfahrtanwendungen) gekoppelt. Dies bedeutet, dass Sie den Impuls nicht von der Energiegleichung entkoppeln können. Der Solver muss verfolgen, wie sich Druckwellen durch das Fluid ausbreiten, und diese Wellen bewegen sich mit Schallgeschwindigkeit.
Der dimensionslose Parameter, der diesen Übergang regelt, ist die Mach-Zahl — das Verhältnis der Strömungsgeschwindigkeit zur lokalen Schallgeschwindigkeit. Wenn m < 0,3 sind Dichteänderungen typischerweise klein genug, dass die inkompressible Annahme gilt. Wenn m > 1 (überschüssig) enthält der Fluss Stoßwellen – Diskontinuitäten, bei denen Dichte, Druck und Temperatur fast augenblicklich über einen schmalen Bereich springen.
Für Luft- und Raumfahrtforscher, die Python verwenden, bedeutet dies, dass der Python-CFD-Primer (Post 390) – der FIPY-, SU2- und JAX-Flüssigkeiten hauptsächlich für inkompressible Strömungen abdeckt – eine erhebliche Lücke hinterlässt. Sie müssen verstehen:
- Die komprimierbaren Navier-Stokes-Gleichungen in ihrer vollständigen Form, einschließlich der Energiegleichung
- Riemann-Solver, die Flüsse über Zellflächen berechnen, wo Diskontinuitäten bestehen können
- Rekonstruktionsmethoden, die bestimmen, wie Variablen von Zellzentren zu Flächen interpolieren
- Zeitintegrationsprogramme, die die strengeren CFL-Einschränkungen bei hohen Mach-Zahlen einhalten
- Spezielle numerische Behandlungen wie Entropie-Fix und Karbunkelschutz
Dies ist keine einfache Erweiterung des inkompressiblen Flusses – es ist eine andere numerische Methode, die auf ein anderes physikalisches Regime angewendet wird.
Schockerfassungsmethoden: Von Roe nach Weno
Wenn sich eine Stoßwelle bildet, ändern sich die Flussvariablen diskontinuierlich über eine Strecke, die kleiner ist als jedes physische Gitter, das sich auflösen kann. Anstatt zu versuchen, Schocks direkt aufzulösen (was unmöglich feine Gitter erfordern würde), ermöglichen Schockerfassungsmethoden das numerische Schema, die Diskontinuität innerhalb einiger Zellen zu absorbieren, wobei numerische Dissipation zur Stabilisierung der Lösung verwendet wird.
Das Roe-Schema und warum es Korrekturen benötigt
Das 1978 von Peter Roe eingeführte Roe-Schema ist ein ungefährer Riemann-Solver, der die Euler-Gleichungen um den Zellgesichtszustand linearisiert. Es ist rechnerisch effizient und war jahrzehntelang die dominierende Schockerfassungsmethode. Die Idee ist einfach: Auf jeder Zellfläche lösen Sie eine linearisierte Version des Riemann-Problems (das anfängliche Wertproblem für diskontinuierliche Daten), berechnen den Fluss und addieren numerische Dissipation proportional zu den Wellengeschwindigkeiten.
In Python folgt die Implementierung des ROE-Schemas aus ARXIV 2103.02794 diesem Muster:
# Roe scheme flux computation (simplified from arXiv 2103.02794)
def roe_flux(uL, uR, n):
"""Compute Roe flux for Euler equations.
uL, uR: left and right primitive states [rho, u, P]
n: normal direction (1 or -1 for 1D)
"""
rhoL, uL, P_L = uL
rhoR, uR, P_R = uR
# Compute interface states
rho_hat = (rhoL**2 * rhoR**2 /
(rhoL + rhoR))**0.5
u_hat = (rhoL * uL + rhoR * uR) / (rhoL + rhoR)
# Speed of sound
S_hat = ((P_L + P_R) /
(2 * (rhoL + rhoR)))**0.5
# Compute Roe matrix eigenvalues
# |u_hat| +/- S_hat for acoustic waves
# |u_hat| for shear/convection
# ... eigenvalue computation omitted for brevity
Das Problem mit dem grundlegenden ROE-Schema ist zweifach. Erstens kann das Schema bei starken Schocks negativen Druck entwickeln – ein unphysischer Zustand, der den Solver zum Absturz bringt. Dies wird durch die Entropy Fix angegangen, die die Wellengeschwindigkeiten nahe Schocks modifiziert, um die Konvexität der Flussfunktion wiederherzustellen und nicht-physische Zustände zu verhindern.
Zweitens kann das RoE-Schema auf unstrukturierten Gittern das Carbuncle-Phänomen aufweisen – eine numerische Instabilität, bei der ein starker Schock (wie der hinter einem stumpfen Körper gebildete) einen nicht-physischen zweiten Schock entwickelt, der vom Hauptschock abzweigt. Dies liegt daran, dass das ROE-Schema bei starken Schocks übermäßig empfindlich gegenüber der Gitterorientierung ist. Das „Schock-stabile Roe-Schema“ kombiniert Entropie-Fix mit einem gedrehten Riemann-Solver, um dies zu heilen. Für Forscher, die an Luft- und Raumfahrtgeometrien mit starken Stößen (wie Überschallzylinder oder stumpfe Körper) arbeiten, kann der Verzicht auf den Karbunkelschutz zu Solver-Ausfällen führen.
AUSM: Fluss aufteilen
Die Advection Upstream Splitting Method (AUSM) verfolgt einen anderen Ansatz. Anstatt die Matrix von Roe zu berechnen, teilt AUSM den Fluss in Advektive- und Druckkomponenten auf. Dies macht es sowohl bei hohen Mach-Zahlen als auch bei starken Stößen robust, ohne dass die Entropie behoben werden muss – die Spaltung behandelt von Natur aus den Zustand der physischen Entropie. AUSSM-Varianten (AUSM+, AUSM+, AUSM+) und ihre Nachfolger (AusMPWR+) gehören zu den am weitesten verbreiteten Schockerfassungsschemata in CFD-Codes für Luft- und Raumfahrt Hyperschall) ohne Schaltstrategien.
Das Python-Shock-Tube-Repository implementiert AUSM mit einer sauberen Oberfläche, die neben Godunov, Roe, HLL und HLLC-Solvern funktioniert:
# AUSM implementation pattern from Python-shock-tube
def ausm_flux(uL, uR, n):
"""AUSM flux with pressure splitting."""
rhoL, uL, P_L = uL
rhoR, uR, P_R = uR
# Split flux into advective and pressure parts
# Advective part uses Mach number-based splitting
# Pressure part uses sign function of Mach number
# See Toro's "Riemann Solvers and Numerical Methods
# for Fluid Dynamics" for full derivation
TVD-Flussbegrenzer und Muscl-Rekonstruktion
TVD (Gesamtvariation abnehmend) Flussbegrenzer verhindern Störschwingungen in der Nähe von Diskontinuitäten durch Kontrolle der Gesamtvariation der Lösung. In Kombination mit der Rekonstruktion von Muscl (monotonisches Upstream-Centered Scheme for Conservation Laws) bilden sie das muscl-tvd -Schema – eine Methode zweiter Ordnung, die das Arbeitspferd für die Erfassung von Schocks auf technischer Ebene darstellt.
Der Kompromiss ist hier klar: Muscl-TVD ist rechnerisch billig und robust, kann jedoch bei starken Stößen oder komplexen Wellenwechseln kleine Schwingungen hinter der Stoßfront erzeugen. Für technische Anwendungen, bei denen die absolute Schockauflösung nicht kritisch ist, reicht Muscl-TVD oft aus.
Weno und Teno: Hochwertige Stoßdämpfung
Die gewichtete im Wesentlichen nicht-oszillatorische (WENO)-Rekonstruktion befasst sich mit den Einschränkungen von Muscl-TVD, indem eine gewichtete Kombination von Schablonen verwendet wird, die sich automatisch an glatte und diskontinuierliche Bereiche anpassen. Nahezu glatten Fluss, alle Schablonen tragen dazu bei; Nahezu Schocks konzentrieren sich die Gewichte auf die nicht oszillierende Schablone. Das Ergebnis ist eine dramatisch bessere Auflösung von Hochfrequenzoszillationen in der Nähe von Diskontinuitäten – entscheidend für die direkte numerische Simulation mit hoher Wiedergabetreue (DNS) und die implizite Large Eddy-Simulation (ILES).
Das Python-Shock-Tube-Repository zeigt dies deutlich mit dem Shu-Osher-Problem – einem klassischen Benchmark, bei dem ein Schock mit einer Dichtewelle interagiert. Siehe das shu-osher-Vergleichsbild aus dem Repository, das zeigt, dass Weno 5. Ordnung die Hochfrequenzoszillationen hinter dem Schock weitaus besser löst als Muscl-TVD.
Für DNS und ILEs von Schock-Boundary-Layer-Wechselwirkungen – wie die in OpenSBLI v3.0 validierten Transonic-Buffet-Etuis – sind Weno und seine kantenerhaltende Variante TENO (gezielte ENO) der aktuelle Standard. Die automatisierte Codegenerierung von OpenSBLI produziert C-Code für produktionstechnische Python-Formulierungen unter Verwendung von Weno / Teno für die komprimierbare Diskretisierung von Navier-Stokes.
Python-Solver für komprimierbare Luft- und Raumfahrt
Die Landschaft der Python-basierten komprimierbaren Flow-Solver ist zwischen 2021 und 2025 erheblich gereift. Für Luft- und Raumfahrtforscher stehen nun fünf Frameworks mit unterschiedlichen Architekturen zur Verfügung:
PyBaram – unstrukturierte Gitter für starke Schocks
PyBaram (veröffentlicht in SoftwareX, 2022) implementiert finite Volumenmethoden auf unstrukturierten Gittern für 2D- und 3D-Luft- und Raumfahrtgeometrien. Es behandelt explizit starke Schock- und Expansionswellen, die sowohl für das Lehren als auch für die Forschung mit offenen Daten über Mendeley konzipiert wurden. Mit mehr als 10 Zitaten ist Pybaram ein zugänglicher Einstiegspunkt für Forscher, die unstrukturierte Gitterunterstützung ohne den Aufwand größerer Pakete benötigen.
OpenSBLI v3.0 — Automatisierte Codegenerierung für DNS/ILES
OpensBLI stellt einen grundlegend anderen Ansatz dar: Anstatt kompilierten CFD-Code direkt zu schreiben, schreiben Benutzer Gleichungen in Einstein-Notation mit Python-Symbolalgebra (Sympy) und OpensBLIs Codegenerator erzeugt einen optimierten C-Code über den OPs DSL. Das Framework zielt auf strukturierte Grids mit mehreren Blocks ab und unterstützt sowohl CPU- (MPI/OpenMP) als auch GPU- (CUDA/OpenCL)-Backends.
Opensbli v3.0, veröffentlicht in Computern & Physik (Januar 2025) unterstützt explizit Weno und Teno-Schock-Erfassung und wurde validiert auf:
- Schock-Boundary-Schichten-Wechselwirkungen bei Hyperschall-Mach-Nummern
- Transonisches Buffet auf NASA-CRM-Folien
- DNS des Hyperschallflusses über Gaußsche Unebenheiten
Der akademische Stammbaum des Frameworks ist stark – das Southampton / Oxford-Team (Lusher, Sandham) hat mehr als 20 Artikel zu OpenSBLI-Anwendungen veröffentlicht. Wenn Ihre Forschung mit Schock-Interaktionen komprimierbare DNS/Iles von komprimierbaren Flüssen umfasst, ist die automatisierte Codegenerierung von OpenSBLI die ausgereifteste Option.
Das OpenSBLI Framework Workflow-Diagramm veranschaulicht, wie Python symbolische Gleichungen sind Übersetzt in optimierten C-Code über das OPS DSL.
JANC – Differenzierbarer komprimierbarer Fluss auf der GPU
JANC (veröffentlicht im April 2025 von Forschern der Tsinghua University und Mitarbeiter) ist wohl der neuartige Python-komprimierbare Solver in den letzten Jahren. JANC wurde vollständig auf JAX-AMR (JAX-basierte blockstrukturierte adaptive Netzverfeinerung) aufgebaut und ist ein vollständig differenzierbarer Solver für komprimierbare Reaktionsströme. Ihr Anspruch auf Unterscheidung:
Auf einer einzigen A100-GPU erreicht JANC 1 % der Rechenkosten von OpenFoam (mit 384 CPU-Cores). Wenn AMR aktiviert ist, sinken die Kosten auf 1–2% des OpenFOAM.
Dies ist kein Marketinganspruch – sie wird anhand der gemeldeten Testfälle überprüft. JANC Hebelungen:
- Automatische Differenzierung (keine Notwendigkeit, adjungierte Gleichungen abzuleiten)
- XLA JIT Compilation (XLAs Tensor-Computation-Optimierung)
- Adaptive Netzverfeinerung (automatische Auflösung bei steiler Steigung)
- GPU / TPU Native Parallelität
- MIT-Lizenzierung
Für Forscher, die sich mit Differentiable CFD befassen – ein wachsender Trend für Designoptimierung, Sensitivitätsanalyse und ML-Integration – ist JANC der erste vollständig differenzierbare Python-Solver für die Reaktion von komprimierbaren Strömungen. Der Code ist unter einer MIT-Lizenz verfügbar.
PyGasFlow und SU2 — Schnelle Berechnungen und vollständige Luft- und Raumfahrtsuiten
PyGasFlow (v1.4.1) ist ein leichtes Python-Paket für die quasi-1d ideale Gasdynamik. Es implementiert normale und schräge Schockbeziehungen, isentropische Strömung, Fanno- und Rayleigh-Fluss und aerothermodynamische Flach- / Stagnationskorrelationen. Obwohl es sich nicht um einen vollständigen CFD-Solver handelt, ist er für schnelle analytische Berechnungen von unschätzbarem Wert – interaktive Druck-Ablenkungsdiagramme, Schockrelationsprüfungen und schnelle parametrische Sweeps, bevor Sie eine vollständige Simulation durchführen.
SU2 ist nach wie vor die am häufigsten zitierte Open-Source-CFD-Suite für Luft- und Raumfahrtanwendungen. Zu den Überschall- / komprimierbaren Funktionen gehören der Inviscid Supersonic Wedge, der Transonic Oneram6-Folie und der nicht ideale komprimierbare Fluss in Superschall-Düsen-Tutorials. Mit mehr als 4.400 GitHub-Sternen ist SU2 die etablierte Wahl für die Produktion von Luft- und Raumfahrt-CFD, bei der Python hauptsächlich als Skript- und Automatisierungsschicht dient.
Benchmark-Fälle und Validierung
Jede schockierende Implementierung muss anhand von Standard-Benchmark-Fällen validiert werden. Zwei Fälle sind unerlässlich:
Rasenstoßrohr
Der Sod Shock Tube ist der kanonische Test für Riemann-Solver. Es initialisiert eine Röhre mit einem linken Hochdruckzustand und einem rechten Niederdruckzustand. Bei t = 0 bricht die Membran und ein Schock, eine Kontaktdiskontinuität und ein Expansionsventilator. Das Python-Shock-Tube-Repository bietet diesen Benchmark. Siehe den SOD-Schock-Röhrenvergleich , der die Flussauflösung über vier Solver (Godunov, RoE, HLL, HLLC) auf 300 Zellen mit Rekonstruktion 0. Ordnung zeigt.
Das Bild zeigt die Flussauflösung über vier Solver (Godunov, RoE, HLL, HLLLC) auf 300 Zellen mit Rekonstruktion 0. Ordnung. HLLC (Hybrid Linearisierte LAX-Friedrichs mit Kontakt) bietet im Allgemeinen die beste Balance: Es löst die Kontaktdiskontinuität besser als HLL und ist rechnerisch mit HLL vergleichbar. Aus diesem Grund ist HLLC die Standardauswahl in der Weno-Implementierung des Python-Shock-Tube-Repositorys.
Shu-Osher-Problem
Das Shu-Osher-Problem testet, wie gut ein Schema die Wechselwirkung zwischen einem Schock und einer Dichtewelle behandelt. Die Anfangsbedingung ist eine Schrittfunktion für Druck mit einer Störung der Sinusdichte hinter dem Stoß. Dieser Fall zeigt, wie Rekonstruktionsverfahren hochfrequente Schwingungen auflösen:
- Rekonstruktion der 0. Ordnung (Godunov) leidet unter übermäßiger numerischer Dissipation bei starken Schocks
- MUSCL-TVD Reduziert die Dissipation, oszilliert aber hinter dem Schock
- Weno 5. Ordnung löst die Hochfrequenz-Oszillationen genau auf
Für High-Fidelity-Luftfahrtsimulationen ist Weno jetzt die Standardwahl.
Numerische Herausforderungen Einzigartig für High-Mach-Flow
Mehrere numerische Herausforderungen treten speziell im komprimierbaren / überschönten Fluss auf, die in inkompressiblem CFD nicht erscheinen (oder anders erscheinen):
CFL-Beschränkungen bei hohen Mach-Zahlen
Die CFL-Bedingung (Courant-Friedrichs-Lewy) regelt die Stabilität für die explizite Zeitintegration. Für die komprimierbare Strömung hängt die CFL-Nummer von der Summe von Strömungsgeschwindigkeit und Schallgeschwindigkeit ab:
$$cfl = frac{u + a}{delta x} delta t$$
Bei hohen Machzahlen wird $ u ca. m cdot a $, so dass die CFL-Bedingung extrem restriktiv wird. Dies bedeutet, dass Small Time Steps erforderlich sind – oft um Größenordnungen kleiner als bei inkompressiblen Strömungen. Implizite Zeitschritt- oder Multigrid-Methoden können dies mildern, aber explizite Schemata erfordern eine sorgfältige Zeitschrittkontrolle.
Entropie-Fix
Das grundlegende Roe-Schema scheitert bei starken Stößen an der Entropie: Anstelle der physikalisch korrekten Entropiezunahme über den Schock kann die numerische Lösung gegen die Thermodynamik verstoßen. Die Entropie-Fixierung modifiziert die Eigenwerte in der Nähe von Schocks, um sicherzustellen, dass das numerische Schema das zweite Gesetz der Thermodynamik einhält. Ohne sie kann die Lösung zu einem falschen Entropiezustand konvergieren – ein Schock, der zu stark oder zu schwach ist.
Karbunkelphänomen
Wie bereits erwähnt, ist das Carbuncle-Phänomen eine numerische Instabilität, die für das ROE-Schema auf unstrukturierten Gittern spezifisch ist. Wenn ein starker Schock schlecht mit dem Gitter übereinstimmt, kann der Solver einen sekundären Schock entwickeln, der den Hauptschock abzweigt – physikalisch unmöglich und numerisch katastrophal. Das Schock-stabile Roe-Schema (Kombinieren von Entropy Fix mit gedrehtem Riemann-Solver) heilt dies.
Schock-Grenz-Schicht-Interaktion
In der Luft- und Raumfahrt erzeugen Stoßwellen, die mit Grenzschichten interagieren, komplexe Strömungsstrukturen – Strömungstrennung, Wiederbefestigung und instabiles Buffet. Die Lösung dieser erfordert:
- Feinauflösung der Grenzschicht (häufig wandaufgelöstes DNS)
- Hochwertige Schock-Erfassung (Weno/Teno), um den Schock zu beheben
- Angemessene zeitliche Auflösung für instationäre Phänomene
Aus diesem Grund konzentriert sich die Validierung von OpensBLI v3.0 auf SBLI – es ist die Physik, die für das Design von Transonic- und Hyperschall-Fahrzeugen am wichtigsten ist.
Welchen Löser sollten Sie wählen?
Die Wahl des komprimierbaren Flow-Solvers hängt von Ihren Netzanforderungen, den Anforderungen an die Wiedergabetreue und den Rechenressourcen ab. Hier ein Vergleich:
| Löser | Gittertyp | Schockerfassung | am besten für | Hardware- |
|---|---|---|---|---|
| Pybaram | Formlos | Endliches Volumen | Lehre, 2D/3D-Luftfahrt, starke Schocks | CPU-Parallel |
| opensbli | Strukturiert (Multiblock) | Weno / Teno | DNS/Iles, SBLI, Transonic Buffet, Hyperschall | CPU/GPU (CUDA/OpenCL) |
| Janc | Strukturiert (Block AMR) | Jax Auto-Diff | Differenzierbare CFD, Adjoint Optimization, GPU | GPU/TPU (A100+) |
| Pygasflow | N/A (Analytisch) | Nicht verfügbar | Schnelle Schockbeziehungen, Fanno/Rayleigh, Parametrische Sweeps | Jeder |
| su2 | strukturiert / unstrukturiert | ROE, AUSM usw. | Volle Luft- und Raumfahrt-Suite, Produktions-CFD, N+1 Flows | CPU / MPI |
Praktische Empfehlung: Beginnen Sie mit PyGasFlow zum analytischen Verständnis der Schockbeziehungen und des Fanno / Rayleigh-Flusses. Verwenden Sie dann das Python-Shock-Tube-Repository für die 1D-Schock-Erfassungsübung (ROE, AUSM, WENO). Wählen Sie PyBaram, wenn Sie unstrukturierte Gitter für komplexe 2D/3D-Geometrien benötigen. Wählen Sie OpenSBLI, wenn Ihre Forschung DNS / Iles mit Weno / Teno auf strukturierten Gittern umfasst. Wählen Sie JANC, wenn Sie differenzierbares CFD mit GPU-Beschleunigung und AMR erkunden.
Zusammenfassung und nächste Schritte
Dieser Artikel behandelte, was komprimierbare/überschüssige Strömungen von inkompressiblen Fluss unterscheidet, die Schockerfassungsmethoden (ROE mit Entropy Fix, AUSM, TVD, Weno/Teno), die Diskontinuitäten verarbeiten, die Python-Solver für Anwendungen in der Luftfahrt (PyBaram, OpenSBLI, JANC, PygasFlow, SU2) und Benchmark-Fälle zur Validierung.
Für Forscher beginnend mit komprimierbarem Fluss in Python: Beginnen Sie mit PyGasFlow für schnelle analytische Berechnungen, üben Sie Schock-Erfassungsmethoden mit Python-Schock-Tube, wählen Sie dann Pybaram (unstrukturiert) oder OpenSBLI (strukturiert) basierend auf Ihren Grid-Anforderungen. Für differenzierbare CFD mit GPU-Beschleunigung stellt JANC den aktuellen Stand der Technik dar.
Wenn Sie Python CFD noch nicht kennen, beginnen Sie mit unserem umfassenden CFD-Primer, der FIPY, Meshing und die 12 Schritte zu Navier-Stokes abdeckt. Für von der Advektion dominierte Flüsse, bei denen die Netzauflösung wichtig ist, kann anisotrope Netzanpassung Ihr Schockerfassungsschema ergänzen. Wenn Sie eine bessere Auflösung als endliches Volumen zweiter Ordnung benötigen, bieten Spektral- und DG-Methoden hoher Ordnung Alternativen.
Empfohlene Lesung
- JANC: Ein kostengünstiger, differenzierbarer komprimierbarer Reagierfluss-Solver — JAX-basierter Solver mit AMR, 1–2 % der OpenFoam-Kosten (Apr. 2025)
- Opensbli GitHub — Automatisierte Codegenerierung für komprimierbare Navier–Stokes Mit Weno / Teno-Schock-Erfassung
- Python-Shock-Tube — 1D Euler-Gleichungslöser mit Godunov, Roe, AUSM, HLLC, Muscl-TVD und Weno-Implementierungen
- Eine Einführung in Fluiddynamik und numerische Lösungsmethoden — Abschnitt 13.1: Roe-Schema-Python-Implementierung mit SOD-Schockrohr
- Erstellen Sie Ihren eigenen Riemann-Solver – das genaue Riemann-Solver-Tutorial von Philip Mocz für Euler-Gleichungen
- PyGasFlow-Dokumente — Quasi-1d Ideale Gasdynamik, Schock Beziehungen, Fanno / Rayleigh-Fluss
- SU2-Tutorials — Supersonic Wedge, Oneram6 Transonic, NICFD-Düse