{"id":1124,"date":"2026-08-19T09:48:29","date_gmt":"2026-08-19T09:48:29","guid":{"rendered":"https:\/\/matforge.org\/?p=1124","raw":"https:\/\/matforge.org\/?p=1124"},"modified":"2026-08-19T09:48:29","modified_gmt":"2026-08-19T09:48:29","slug":"python-cfd-aerospace-supersonic-shock-capturing","status":"publish","type":"post","link":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/","title":{"rendered":"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung","raw":"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>Wenn Forscher von inkomprimierbaren zu komprimierbaren Str\u00f6mungssimulationen in Python \u00fcbergehen, sto\u00dfen sie auf eine grundlegend andere Physik &#8211; die Dichte wird zu einer Variable, die Energiegleichung muss gel\u00f6st werden und Schockwellen f\u00fchren zu Diskontinuit\u00e4ten, die Standard-Numerikverfahren einfach nicht bew\u00e4ltigen k\u00f6nnen. Dieser Artikel behandelt, was Supersonic Flow anders macht, die Schockerfassungsmethoden, die f\u00fcr die Handhabung entwickelt wurden, und die Python-Solver, die diese Methoden f\u00fcr Luft- und Raumfahrtanwendungen implementieren.<\/p>\n<h2>Schl\u00fcssel zum Mitnehmen<\/h2>\n<ul>\n<li>F\u00fcr die komprimierbare Str\u00f6mung m\u00fcssen die <strong> komprimierbaren Navier-Stokes-Gleichungen <\/strong> gel\u00f6st werden, wobei die Dichte als Variable und die Energiegleichung gekoppelt sind &#8211; im Gegensatz zu einer inkompressiblen Str\u00f6mung, bei der die Dichte konstant ist.<\/li>\n<li><strong>Schockerfassungsmethoden<\/strong> (ROE, AUSM, TVD, Weno, Teno) sind unerl\u00e4sslich, da Schocks zu Diskontinuit\u00e4ten f\u00fchren. Das Roe-Schema erfordert Entropie-Fix- und Karbunkelschutz bei starken St\u00f6\u00dfen.<\/li>\n<li><strong>Python-Solver f\u00fcr komprimierbare Str\u00f6mung<\/strong> 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).<\/li>\n<li><strong>Benchmark Cases<\/strong> Wie das SOD-Schockrohr und das SHU-Osher-Problem bieten Standardvalidierung f\u00fcr die Genauigkeit der Schockerfassung.<\/li>\n<li><strong>MUSCL-TVD ist billiger, aber oszilliert <\/strong> in der N\u00e4he von Diskontinuit\u00e4ten; <strong> Weno 5. Ordnung <\/strong> bietet eine \u00fcberlegene Aufl\u00f6sung, kostet aber mehr. F\u00fcr DNS\/Iles von Wechselwirkungen zwischen Schock-Boundary-Schicht ist WENO\/Teno der aktuelle Standard.<\/li>\n<li><strong>PyGasFlow<\/strong> und das Open-Source-Repository <strong>Python-Shock-Tube<\/strong> bieten zug\u00e4ngliche Einstiegspunkte f\u00fcr das Verst\u00e4ndnis der Schockphysik, bevor sie sich auf Produktionsl\u00f6ser verpflichten.<\/li>\n<\/ul>\n<h2>Was unterscheidet Supersonic Flow von inkompressibler Str\u00f6mung?<\/h2>\n<p>Bei inkompressibler Str\u00f6mung wird die Dichte als Konstante behandelt. Die Impulsgleichungen werden unabh\u00e4ngig von der Energiegleichung gel\u00f6st, und der Druck wird allein durch das Geschwindigkeitsfeld durch einen Druck-Geschwindigkeitskopplungsalgorithmus (wie einfach oder piso) bestimmt. Dies bedeutet, dass Sie f\u00fcr Fl\u00fcsse mit niedriger Geschwindigkeit die Impuls- und Kontinuit\u00e4tsgleichungen l\u00f6sen k\u00f6nnen, ohne jemals die Dichte der Fl\u00fcssigkeit zu kennen &#8211; dies ist eine Selbstverst\u00e4ndlichkeit.<\/p>\n<p>Im komprimierbaren Fluss \u00e4ndert sich alles. Die Dichte wird zu einer Variable, die sich gem\u00e4\u00df der Kontinuit\u00e4tsgleichung, den Impulsgleichungen und der Energiegleichung entwickelt. Der thermodynamische Zustand des Fluids &#8211; Druck, Temperatur und Dichte &#8211; wird durch die Zustandsgleichung (typischerweise das ideale Gasgesetz f\u00fcr Luft- und Raumfahrtanwendungen) gekoppelt. Dies bedeutet, dass Sie den Impuls nicht von der Energiegleichung entkoppeln k\u00f6nnen. Der Solver muss verfolgen, wie sich Druckwellen durch das Fluid ausbreiten, und diese Wellen bewegen sich mit Schallgeschwindigkeit.<\/p>\n<p>Der dimensionslose Parameter, der diesen \u00dcbergang regelt, ist die <strong>Mach-Zahl<\/strong> \u2014 das Verh\u00e4ltnis der Str\u00f6mungsgeschwindigkeit zur lokalen Schallgeschwindigkeit. Wenn m &lt; 0,3 sind Dichte\u00e4nderungen typischerweise klein genug, dass die inkompressible Annahme gilt. Wenn m &gt; 1 (\u00fcbersch\u00fcssig) enth\u00e4lt der Fluss Sto\u00dfwellen &#8211; Diskontinuit\u00e4ten, bei denen Dichte, Druck und Temperatur fast augenblicklich \u00fcber einen schmalen Bereich springen.<\/p>\n<p>F\u00fcr Luft- und Raumfahrtforscher, die Python verwenden, bedeutet dies, dass der Python-CFD-Primer (Post 390) &#8211; der FIPY-, SU2- und JAX-Fl\u00fcssigkeiten haupts\u00e4chlich f\u00fcr inkompressible Str\u00f6mungen abdeckt &#8211; eine erhebliche L\u00fccke hinterl\u00e4sst. Sie m\u00fcssen verstehen:<\/p>\n<ol>\n<li><strong>Die komprimierbaren Navier-Stokes-Gleichungen<\/strong> in ihrer vollst\u00e4ndigen Form, einschlie\u00dflich der Energiegleichung<\/li>\n<li><strong>Riemann-Solver<\/strong>, die Fl\u00fcsse \u00fcber Zellfl\u00e4chen berechnen, wo Diskontinuit\u00e4ten bestehen k\u00f6nnen<\/li>\n<li><strong>Rekonstruktionsmethoden<\/strong>, die bestimmen, wie Variablen von Zellzentren zu Fl\u00e4chen interpolieren<\/li>\n<li><strong>Zeitintegrationsprogramme<\/strong>, die die strengeren CFL-Einschr\u00e4nkungen bei hohen Mach-Zahlen einhalten<\/li>\n<li><strong>Spezielle numerische Behandlungen<\/strong> wie Entropie-Fix und Karbunkelschutz<\/li>\n<\/ol>\n<p>Dies ist keine einfache Erweiterung des inkompressiblen Flusses &#8211; es ist eine andere numerische Methode, die auf ein anderes physikalisches Regime angewendet wird.<\/p>\n<h2>Schockerfassungsmethoden: Von Roe nach Weno<\/h2>\n<p>Wenn sich eine Sto\u00dfwelle bildet, \u00e4ndern sich die Flussvariablen diskontinuierlich \u00fcber eine Strecke, die kleiner ist als jedes physische Gitter, das sich aufl\u00f6sen kann. Anstatt zu versuchen, Schocks direkt aufzul\u00f6sen (was unm\u00f6glich feine Gitter erfordern w\u00fcrde), erm\u00f6glichen Schockerfassungsmethoden das numerische Schema, die Diskontinuit\u00e4t innerhalb einiger Zellen zu absorbieren, wobei numerische Dissipation zur Stabilisierung der L\u00f6sung verwendet wird.<\/p>\n<h3>Das Roe-Schema und warum es Korrekturen ben\u00f6tigt<\/h3>\n<p>Das 1978 von Peter Roe eingef\u00fchrte Roe-Schema ist ein ungef\u00e4hrer 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\u00e4che l\u00f6sen Sie eine linearisierte Version des Riemann-Problems (das anf\u00e4ngliche Wertproblem f\u00fcr diskontinuierliche Daten), berechnen den Fluss und addieren numerische Dissipation proportional zu den Wellengeschwindigkeiten.<\/p>\n<p>In Python folgt die Implementierung des ROE-Schemas aus ARXIV 2103.02794 diesem Muster:<\/p>\n<pre><code class=\"language-python\"># Roe scheme flux computation (simplified from arXiv 2103.02794)\ndef roe_flux(uL, uR, n):\n    \"\"\"Compute Roe flux for Euler equations.\n    uL, uR: left and right primitive states [rho, u, P]\n    n: normal direction (1 or -1 for 1D)\n    \"\"\"\n    rhoL, uL, P_L = uL\n    rhoR, uR, P_R = uR\n    \n    # Compute interface states\n    rho_hat = (rhoL**2 * rhoR**2 \/ \n               (rhoL + rhoR))**0.5\n    u_hat = (rhoL * uL + rhoR * uR) \/ (rhoL + rhoR)\n    \n    # Speed of sound\n    S_hat = ((P_L + P_R) \/ \n             (2 * (rhoL + rhoR)))**0.5\n    \n    # Compute Roe matrix eigenvalues\n    # |u_hat| +\/- S_hat for acoustic waves\n    # |u_hat| for shear\/convection\n    # ... eigenvalue computation omitted for brevity\n<\/code><\/pre>\n<p>Das Problem mit dem grundlegenden ROE-Schema ist zweifach. Erstens kann das Schema bei starken Schocks <strong> negativen Druck <\/strong> entwickeln &#8211; ein unphysischer Zustand, der den Solver zum Absturz bringt. Dies wird durch die <strong>Entropy Fix<\/strong> angegangen, die die Wellengeschwindigkeiten nahe Schocks modifiziert, um die Konvexit\u00e4t der Flussfunktion wiederherzustellen und nicht-physische Zust\u00e4nde zu verhindern.<\/p>\n<p>Zweitens kann das RoE-Schema auf unstrukturierten Gittern das <strong> Carbuncle-Ph\u00e4nomen <\/strong> aufweisen &#8211; eine numerische Instabilit\u00e4t, bei der ein starker Schock (wie der hinter einem stumpfen K\u00f6rper gebildete) einen nicht-physischen zweiten Schock entwickelt, der vom Hauptschock abzweigt. Dies liegt daran, dass das ROE-Schema bei starken Schocks \u00fcberm\u00e4\u00dfig empfindlich gegen\u00fcber der Gitterorientierung ist. Das &#8222;Schock-stabile Roe-Schema&#8220; kombiniert Entropie-Fix mit einem gedrehten Riemann-Solver, um dies zu heilen. F\u00fcr Forscher, die an Luft- und Raumfahrtgeometrien mit starken St\u00f6\u00dfen (wie \u00dcberschallzylinder oder stumpfe K\u00f6rper) arbeiten, kann der Verzicht auf den Karbunkelschutz zu Solver-Ausf\u00e4llen f\u00fchren.<\/p>\n<h3>AUSM: Fluss aufteilen<\/h3>\n<p>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\u00f6\u00dfen robust, ohne dass die Entropie behoben werden muss &#8211; die Spaltung behandelt von Natur aus den Zustand der physischen Entropie. AUSSM-Varianten (AUSM+, AUSM+, AUSM+) und ihre Nachfolger (AusMPWR+) geh\u00f6ren zu den am weitesten verbreiteten Schockerfassungsschemata in CFD-Codes f\u00fcr Luft- und Raumfahrt Hyperschall) ohne Schaltstrategien.<\/p>\n<p>Das Python-Shock-Tube-Repository implementiert AUSM mit einer sauberen Oberfl\u00e4che, die neben Godunov, Roe, HLL und HLLC-Solvern funktioniert:<\/p>\n<pre><code class=\"language-python\"># AUSM implementation pattern from Python-shock-tube\ndef ausm_flux(uL, uR, n):\n    \"\"\"AUSM flux with pressure splitting.\"\"\"\n    rhoL, uL, P_L = uL\n    rhoR, uR, P_R = uR\n    \n    # Split flux into advective and pressure parts\n    # Advective part uses Mach number-based splitting\n    # Pressure part uses sign function of Mach number\n    # See Toro's \"Riemann Solvers and Numerical Methods \n    # for Fluid Dynamics\" for full derivation\n<\/code><\/pre>\n<h3>TVD-Flussbegrenzer und Muscl-Rekonstruktion<\/h3>\n<p>TVD (Gesamtvariation abnehmend) Flussbegrenzer verhindern St\u00f6rschwingungen in der N\u00e4he von Diskontinuit\u00e4ten durch Kontrolle der Gesamtvariation der L\u00f6sung. In Kombination mit der Rekonstruktion von Muscl (monotonisches Upstream-Centered Scheme for Conservation Laws) bilden sie das <strong> muscl-tvd <\/strong> -Schema &#8211; eine Methode zweiter Ordnung, die das Arbeitspferd f\u00fcr die Erfassung von Schocks auf technischer Ebene darstellt.<\/p>\n<p>Der Kompromiss ist hier klar: Muscl-TVD ist rechnerisch billig und robust, kann jedoch bei starken St\u00f6\u00dfen oder komplexen Wellenwechseln kleine Schwingungen hinter der Sto\u00dffront erzeugen. F\u00fcr technische Anwendungen, bei denen die absolute Schockaufl\u00f6sung nicht kritisch ist, reicht Muscl-TVD oft aus.<\/p>\n<h3>Weno und Teno: Hochwertige Sto\u00dfd\u00e4mpfung<\/h3>\n<p>Die gewichtete im Wesentlichen nicht-oszillatorische (WENO)-Rekonstruktion befasst sich mit den Einschr\u00e4nkungen 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\u00f6sung von Hochfrequenzoszillationen in der N\u00e4he von Diskontinuit\u00e4ten &#8211; entscheidend f\u00fcr die direkte numerische Simulation mit hoher Wiedergabetreue (DNS) und die implizite Large Eddy-Simulation (ILES).<\/p>\n<p>Das Python-Shock-Tube-Repository zeigt dies deutlich mit dem <strong>Shu-Osher-Problem<\/strong> &#8211; einem klassischen Benchmark, bei dem ein Schock mit einer Dichtewelle interagiert. Siehe das <a href=\"https:\/\/github.com\/chairmanmao256\/Python-shock-tube\/blob\/main\/gallery\/Shu-Osher.png\"> shu-osher-Vergleichsbild <\/a> aus dem Repository, das zeigt, dass Weno 5. Ordnung die Hochfrequenzoszillationen hinter dem Schock weitaus besser l\u00f6st als Muscl-TVD.<\/p>\n<p>F\u00fcr DNS und ILEs von Schock-Boundary-Layer-Wechselwirkungen &#8211; wie die in OpenSBLI v3.0 validierten Transonic-Buffet-Etuis &#8211; sind Weno und seine kantenerhaltende Variante TENO (gezielte ENO) der aktuelle Standard. Die automatisierte Codegenerierung von OpenSBLI produziert C-Code f\u00fcr produktionstechnische Python-Formulierungen unter Verwendung von Weno \/ Teno f\u00fcr die komprimierbare Diskretisierung von Navier-Stokes.<\/p>\n<h2>Python-Solver f\u00fcr komprimierbare Luft- und Raumfahrt<\/h2>\n<p>Die Landschaft der Python-basierten komprimierbaren Flow-Solver ist zwischen 2021 und 2025 erheblich gereift. F\u00fcr Luft- und Raumfahrtforscher stehen nun f\u00fcnf Frameworks mit unterschiedlichen Architekturen zur Verf\u00fcgung:<\/p>\n<h3>PyBaram \u2013 unstrukturierte Gitter f\u00fcr starke Schocks<\/h3>\n<p>PyBaram (ver\u00f6ffentlicht in SoftwareX, 2022) implementiert finite Volumenmethoden auf unstrukturierten Gittern f\u00fcr 2D- und 3D-Luft- und Raumfahrtgeometrien. Es behandelt explizit starke Schock- und Expansionswellen, die sowohl f\u00fcr das Lehren als auch f\u00fcr die Forschung mit offenen Daten \u00fcber Mendeley konzipiert wurden. Mit mehr als 10 Zitaten ist Pybaram ein zug\u00e4nglicher Einstiegspunkt f\u00fcr Forscher, die unstrukturierte Gitterunterst\u00fctzung ohne den Aufwand gr\u00f6\u00dferer Pakete ben\u00f6tigen.<\/p>\n<h3>OpenSBLI v3.0 \u2014 Automatisierte Codegenerierung f\u00fcr DNS\/ILES<\/h3>\n<p>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 \u00fcber den OPs DSL. Das Framework zielt auf strukturierte Grids mit mehreren Blocks ab und unterst\u00fctzt sowohl CPU- (MPI\/OpenMP) als auch GPU- (CUDA\/OpenCL)-Backends.<\/p>\n<p>Opensbli v3.0, ver\u00f6ffentlicht in Computern &amp; Physik (Januar 2025) unterst\u00fctzt explizit <strong>Weno und Teno-Schock-Erfassung<\/strong> und wurde validiert auf:<\/p>\n<ul>\n<li>Schock-Boundary-Schichten-Wechselwirkungen bei Hyperschall-Mach-Nummern<\/li>\n<li>Transonisches Buffet auf NASA-CRM-Folien<\/li>\n<li>DNS des Hyperschallflusses \u00fcber Gau\u00dfsche Unebenheiten<\/li>\n<\/ul>\n<p>Der akademische Stammbaum des Frameworks ist stark &#8211; das Southampton \/ Oxford-Team (Lusher, Sandham) hat mehr als 20 Artikel zu OpenSBLI-Anwendungen ver\u00f6ffentlicht. Wenn Ihre Forschung mit Schock-Interaktionen komprimierbare DNS\/Iles von komprimierbaren Fl\u00fcssen umfasst, ist die automatisierte Codegenerierung von OpenSBLI die ausgereifteste Option.<\/p>\n<p>Das OpenSBLI Framework <a href=\"https:\/\/github.com\/opensbli\/opensbli\/blob\/main\/readme_images\/instroduction.png\">Workflow-Diagramm<\/a> veranschaulicht, wie Python symbolische Gleichungen sind \u00dcbersetzt in optimierten C-Code \u00fcber das OPS DSL.<\/p>\n<h3>JANC \u2013 Differenzierbarer komprimierbarer Fluss auf der GPU<\/h3>\n<p>JANC (ver\u00f6ffentlicht im April 2025 von Forschern der Tsinghua University und Mitarbeiter) ist wohl der neuartige Python-komprimierbare Solver in den letzten Jahren. JANC wurde vollst\u00e4ndig auf <strong>JAX-AMR<\/strong> (JAX-basierte blockstrukturierte adaptive Netzverfeinerung) aufgebaut und ist ein vollst\u00e4ndig differenzierbarer Solver f\u00fcr komprimierbare Reaktionsstr\u00f6me. Ihr Anspruch auf Unterscheidung:<\/p>\n<blockquote>\n<p>Auf einer einzigen A100-GPU erreicht JANC <strong>1&nbsp;% der Rechenkosten von OpenFoam<\/strong> (mit 384 CPU-Cores). Wenn AMR aktiviert ist, sinken die Kosten auf 1\u20132% des OpenFOAM.<\/p>\n<\/blockquote>\n<p>Dies ist kein Marketinganspruch &#8211; sie wird anhand der gemeldeten Testf\u00e4lle \u00fcberpr\u00fcft. JANC Hebelungen:<\/p>\n<ul>\n<li>Automatische Differenzierung (keine Notwendigkeit, adjungierte Gleichungen abzuleiten)<\/li>\n<li>XLA JIT Compilation (XLAs Tensor-Computation-Optimierung)<\/li>\n<li>Adaptive Netzverfeinerung (automatische Aufl\u00f6sung bei steiler Steigung)<\/li>\n<li>GPU \/ TPU Native Parallelit\u00e4t<\/li>\n<li>MIT-Lizenzierung<\/li>\n<\/ul>\n<p>F\u00fcr Forscher, die sich mit <strong>Differentiable CFD<\/strong> befassen &#8211; ein wachsender Trend f\u00fcr Designoptimierung, Sensitivit\u00e4tsanalyse und ML-Integration &#8211; ist JANC der erste vollst\u00e4ndig differenzierbare Python-Solver f\u00fcr die Reaktion von komprimierbaren Str\u00f6mungen. Der Code ist unter einer MIT-Lizenz verf\u00fcgbar.<\/p>\n<h3>PyGasFlow und SU2 \u2014 Schnelle Berechnungen und vollst\u00e4ndige Luft- und Raumfahrtsuiten<\/h3>\n<p><strong>PyGasFlow<\/strong> (v1.4.1) ist ein leichtes Python-Paket f\u00fcr die quasi-1d ideale Gasdynamik. Es implementiert normale und schr\u00e4ge Schockbeziehungen, isentropische Str\u00f6mung, Fanno- und Rayleigh-Fluss und aerothermodynamische Flach- \/ Stagnationskorrelationen. Obwohl es sich nicht um einen vollst\u00e4ndigen CFD-Solver handelt, ist er f\u00fcr schnelle analytische Berechnungen von unsch\u00e4tzbarem Wert &#8211; interaktive Druck-Ablenkungsdiagramme, Schockrelationspr\u00fcfungen und schnelle parametrische Sweeps, bevor Sie eine vollst\u00e4ndige Simulation durchf\u00fchren.<\/p>\n<p><strong>SU2<\/strong> ist nach wie vor die am h\u00e4ufigsten zitierte Open-Source-CFD-Suite f\u00fcr Luft- und Raumfahrtanwendungen. Zu den \u00dcberschall- \/ komprimierbaren Funktionen geh\u00f6ren der Inviscid Supersonic Wedge, der Transonic Oneram6-Folie und der nicht ideale komprimierbare Fluss in Superschall-D\u00fcsen-Tutorials. Mit mehr als 4.400 GitHub-Sternen ist SU2 die etablierte Wahl f\u00fcr die Produktion von Luft- und Raumfahrt-CFD, bei der Python haupts\u00e4chlich als Skript- und Automatisierungsschicht dient.<\/p>\n<h2>Benchmark-F\u00e4lle und Validierung<\/h2>\n<p>Jede schockierende Implementierung muss anhand von Standard-Benchmark-F\u00e4llen validiert werden. Zwei F\u00e4lle sind unerl\u00e4sslich:<\/p>\n<h3>Rasensto\u00dfrohr<\/h3>\n<p>Der Sod Shock Tube ist der kanonische Test f\u00fcr Riemann-Solver. Es initialisiert eine R\u00f6hre mit einem linken Hochdruckzustand und einem rechten Niederdruckzustand. Bei t = 0 bricht die Membran und ein Schock, eine Kontaktdiskontinuit\u00e4t und ein Expansionsventilator. Das <strong>Python-Shock-Tube<\/strong>-Repository bietet diesen Benchmark. Siehe den <a href=\"https:\/\/github.com\/chairmanmao256\/Python-shock-tube\/blob\/main\/gallery\/SOD.png\"> SOD-Schock-R\u00f6hrenvergleich <\/a>, der die Flussaufl\u00f6sung \u00fcber vier Solver (Godunov, RoE, HLL, HLLC) auf 300 Zellen mit Rekonstruktion 0. Ordnung zeigt.<\/p>\n<p>Das Bild zeigt die Flussaufl\u00f6sung \u00fcber 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\u00f6st die Kontaktdiskontinuit\u00e4t 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.<\/p>\n<h3>Shu-Osher-Problem<\/h3>\n<p>Das Shu-Osher-Problem testet, wie gut ein Schema die Wechselwirkung zwischen einem Schock und einer Dichtewelle behandelt. Die Anfangsbedingung ist eine Schrittfunktion f\u00fcr Druck mit einer St\u00f6rung der Sinusdichte hinter dem Sto\u00df. Dieser Fall zeigt, wie Rekonstruktionsverfahren hochfrequente Schwingungen aufl\u00f6sen:<\/p>\n<ul>\n<li><strong>Rekonstruktion der 0. Ordnung<\/strong> (Godunov) leidet unter \u00fcberm\u00e4\u00dfiger numerischer Dissipation bei starken Schocks<\/li>\n<li><strong>MUSCL-TVD<\/strong> Reduziert die Dissipation, oszilliert aber hinter dem Schock<\/li>\n<li><strong>Weno<\/strong> 5. Ordnung l\u00f6st die Hochfrequenz-Oszillationen genau auf<\/li>\n<\/ul>\n<p>F\u00fcr High-Fidelity-Luftfahrtsimulationen ist Weno jetzt die Standardwahl.<\/p>\n<h2>Numerische Herausforderungen Einzigartig f\u00fcr High-Mach-Flow<\/h2>\n<p>Mehrere numerische Herausforderungen treten speziell im komprimierbaren \/ \u00fcbersch\u00f6nten Fluss auf, die in inkompressiblem CFD nicht erscheinen (oder anders erscheinen):<\/p>\n<h3>CFL-Beschr\u00e4nkungen bei hohen Mach-Zahlen<\/h3>\n<p>Die CFL-Bedingung (Courant-Friedrichs-Lewy) regelt die Stabilit\u00e4t f\u00fcr die explizite Zeitintegration. F\u00fcr die komprimierbare Str\u00f6mung h\u00e4ngt die CFL-Nummer von der Summe von Str\u00f6mungsgeschwindigkeit und Schallgeschwindigkeit ab:<\/p>\n<p>$$cfl = frac{u + a}{delta x} delta t$$<\/p>\n<p>Bei hohen Machzahlen wird $ u  ca. m  cdot a $, so dass die CFL-Bedingung extrem restriktiv wird. Dies bedeutet, dass <strong>Small Time Steps<\/strong> erforderlich sind &#8211; oft um Gr\u00f6\u00dfenordnungen kleiner als bei inkompressiblen Str\u00f6mungen. Implizite Zeitschritt- oder Multigrid-Methoden k\u00f6nnen dies mildern, aber explizite Schemata erfordern eine sorgf\u00e4ltige Zeitschrittkontrolle.<\/p>\n<h3>Entropie-Fix<\/h3>\n<p>Das grundlegende Roe-Schema scheitert bei starken St\u00f6\u00dfen an der Entropie: Anstelle der physikalisch korrekten Entropiezunahme \u00fcber den Schock kann die numerische L\u00f6sung gegen die Thermodynamik versto\u00dfen. Die Entropie-Fixierung modifiziert die Eigenwerte in der N\u00e4he von Schocks, um sicherzustellen, dass das numerische Schema das zweite Gesetz der Thermodynamik einh\u00e4lt. Ohne sie kann die L\u00f6sung zu einem falschen Entropiezustand konvergieren &#8211; ein Schock, der zu stark oder zu schwach ist.<\/p>\n<h3>Karbunkelph\u00e4nomen<\/h3>\n<p>Wie bereits erw\u00e4hnt, ist das Carbuncle-Ph\u00e4nomen eine numerische Instabilit\u00e4t, die f\u00fcr das ROE-Schema auf unstrukturierten Gittern spezifisch ist. Wenn ein starker Schock schlecht mit dem Gitter \u00fcbereinstimmt, kann der Solver einen sekund\u00e4ren Schock entwickeln, der den Hauptschock abzweigt &#8211; physikalisch unm\u00f6glich und numerisch katastrophal. Das Schock-stabile Roe-Schema (Kombinieren von Entropy Fix mit gedrehtem Riemann-Solver) heilt dies.<\/p>\n<h3>Schock-Grenz-Schicht-Interaktion<\/h3>\n<p>In der Luft- und Raumfahrt erzeugen Sto\u00dfwellen, die mit Grenzschichten interagieren, komplexe Str\u00f6mungsstrukturen &#8211; Str\u00f6mungstrennung, Wiederbefestigung und instabiles Buffet. Die L\u00f6sung dieser erfordert:<\/p>\n<ul>\n<li>Feinaufl\u00f6sung der Grenzschicht (h\u00e4ufig wandaufgel\u00f6stes DNS)<\/li>\n<li>Hochwertige Schock-Erfassung (Weno\/Teno), um den Schock zu beheben<\/li>\n<li>Angemessene zeitliche Aufl\u00f6sung f\u00fcr instation\u00e4re Ph\u00e4nomene<\/li>\n<\/ul>\n<p>Aus diesem Grund konzentriert sich die Validierung von OpensBLI v3.0 auf SBLI &#8211; es ist die Physik, die f\u00fcr das Design von Transonic- und Hyperschall-Fahrzeugen am wichtigsten ist.<\/p>\n<h2>Welchen L\u00f6ser sollten Sie w\u00e4hlen?<\/h2>\n<p>Die Wahl des komprimierbaren Flow-Solvers h\u00e4ngt von Ihren Netzanforderungen, den Anforderungen an die Wiedergabetreue und den Rechenressourcen ab. Hier ein Vergleich:<\/p>\n<table>\n<thead>\n<tr>\n<th>L\u00f6ser<\/th>\n<th>Gittertyp<\/th>\n<th>Schockerfassung<\/th>\n<th>am besten f\u00fcr<\/th>\n<th>Hardware-<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Pybaram<\/td>\n<td>Formlos<\/td>\n<td>Endliches Volumen<\/td>\n<td>Lehre, 2D\/3D-Luftfahrt, starke Schocks<\/td>\n<td>CPU-Parallel<\/td>\n<\/tr>\n<tr>\n<td>opensbli<\/td>\n<td>Strukturiert (Multiblock)<\/td>\n<td>Weno \/ Teno<\/td>\n<td>DNS\/Iles, SBLI, Transonic Buffet, Hyperschall<\/td>\n<td>CPU\/GPU (CUDA\/OpenCL)<\/td>\n<\/tr>\n<tr>\n<td>Janc<\/td>\n<td>Strukturiert (Block AMR)<\/td>\n<td>Jax Auto-Diff<\/td>\n<td>Differenzierbare CFD, Adjoint Optimization, GPU<\/td>\n<td>GPU\/TPU (A100+)<\/td>\n<\/tr>\n<tr>\n<td>Pygasflow<\/td>\n<td>N\/A (Analytisch)<\/td>\n<td>Nicht verf\u00fcgbar<\/td>\n<td>Schnelle Schockbeziehungen, Fanno\/Rayleigh, Parametrische Sweeps<\/td>\n<td>Jeder<\/td>\n<\/tr>\n<tr>\n<td>su2<\/td>\n<td>strukturiert \/ unstrukturiert<\/td>\n<td>ROE, AUSM usw.<\/td>\n<td>Volle Luft- und Raumfahrt-Suite, Produktions-CFD, N+1 Flows<\/td>\n<td>CPU \/ MPI<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Praktische Empfehlung<\/strong>: Beginnen Sie mit PyGasFlow zum analytischen Verst\u00e4ndnis der Schockbeziehungen und des Fanno \/ Rayleigh-Flusses. Verwenden Sie dann das Python-Shock-Tube-Repository f\u00fcr die 1D-Schock-Erfassungs\u00fcbung (ROE, AUSM, WENO). W\u00e4hlen Sie PyBaram, wenn Sie unstrukturierte Gitter f\u00fcr komplexe 2D\/3D-Geometrien ben\u00f6tigen. W\u00e4hlen Sie OpenSBLI, wenn Ihre Forschung DNS \/ Iles mit Weno \/ Teno auf strukturierten Gittern umfasst. W\u00e4hlen Sie JANC, wenn Sie differenzierbares CFD mit GPU-Beschleunigung und AMR erkunden.<\/p>\n<h2>Zusammenfassung und n\u00e4chste Schritte<\/h2>\n<p>Dieser Artikel behandelte, was komprimierbare\/\u00fcbersch\u00fcssige Str\u00f6mungen von inkompressiblen Fluss unterscheidet, die Schockerfassungsmethoden (ROE mit Entropy Fix, AUSM, TVD, Weno\/Teno), die Diskontinuit\u00e4ten verarbeiten, die Python-Solver f\u00fcr Anwendungen in der Luftfahrt (PyBaram, OpenSBLI, JANC, PygasFlow, SU2) und Benchmark-F\u00e4lle zur Validierung.<\/p>\n<p><strong>F\u00fcr Forscher beginnend mit komprimierbarem Fluss in Python<\/strong>: Beginnen Sie mit PyGasFlow f\u00fcr schnelle analytische Berechnungen, \u00fcben Sie Schock-Erfassungsmethoden mit Python-Schock-Tube, w\u00e4hlen Sie dann Pybaram (unstrukturiert) oder OpenSBLI (strukturiert) basierend auf Ihren Grid-Anforderungen. F\u00fcr differenzierbare CFD mit GPU-Beschleunigung stellt JANC den aktuellen Stand der Technik dar.<\/p>\n<p><strong>Wenn Sie Python CFD<\/strong> noch nicht kennen, beginnen Sie mit unserem <a href=\"https:\/\/matforge.org\/python-for-computational-cfd-primer-researchers\/\" target=\"_blank\" rel=\"nofollow noopener\"> umfassenden CFD-Primer<\/a>, der FIPY, Meshing und die 12 Schritte zu Navier-Stokes abdeckt. F\u00fcr von der Advektion dominierte Fl\u00fcsse, bei denen die Netzaufl\u00f6sung wichtig ist, kann <a href=\"https:\/\/matforge.org\/anisotropic-mesh-adaptation-advection-dominated-flows\/\" target=\"_blank\" rel=\"nofollow noopener\"> anisotrope Netzanpassung <\/a> Ihr Schockerfassungsschema erg\u00e4nzen. Wenn Sie eine bessere Aufl\u00f6sung als endliches Volumen zweiter Ordnung ben\u00f6tigen, bieten <a href=\"https:\/\/matforge.org\/high-order-numerical-methods-beyond-fdm-fem-fvm\/\" target=\"_blank\" rel=\"nofollow noopener\">Spektral- und DG-Methoden hoher Ordnung <\/a> Alternativen.<\/p>\n<hr>\n<h3>Empfohlene Lesung<\/h3>\n<ul>\n<li><a href=\"https:\/\/quantumzeitgeist.com\/introducing-janc-a-high-performance-python-based-solver-for-compressible-reacting-flows\/\" target=\"_blank\" rel=\"nofollow noopener\">JANC: Ein kosteng\u00fcnstiger, differenzierbarer komprimierbarer Reagierfluss-Solver<\/a> \u2014 JAX-basierter Solver mit AMR, 1\u20132 % der OpenFoam-Kosten (Apr. 2025)<\/li>\n<li><a href=\"https:\/\/github.com\/opensbli\/opensbli\" target=\"_blank\" rel=\"nofollow noopener\">Opensbli GitHub<\/a> \u2014 Automatisierte Codegenerierung f\u00fcr komprimierbare Navier\u2013Stokes Mit Weno \/ Teno-Schock-Erfassung<\/li>\n<li><a href=\"https:\/\/github.com\/chairmanmao256\/Python-shock-tube\" target=\"_blank\" rel=\"nofollow noopener\">Python-Shock-Tube<\/a> \u2014 1D Euler-Gleichungsl\u00f6ser mit Godunov, Roe, AUSM, HLLC, Muscl-TVD und Weno-Implementierungen<\/li>\n<li><a href=\"https:\/\/arxiv.org\/pdf\/2103.02794\" target=\"_blank\" rel=\"nofollow noopener\">Eine Einf\u00fchrung in Fluiddynamik und numerische L\u00f6sungsmethoden<\/a> \u2014 Abschnitt 13.1: Roe-Schema-Python-Implementierung mit SOD-Schockrohr<\/li>\n<li><a href=\"https:\/\/levelup.gitconnected.com\/create-your-own-riemann-solver-with-python-9e38d64ad2ec\" target=\"_blank\" rel=\"nofollow noopener\">Erstellen Sie Ihren eigenen Riemann-Solver<\/a> \u2013 das genaue Riemann-Solver-Tutorial von Philip Mocz f\u00fcr Euler-Gleichungen<\/li>\n<li><a href=\"https:\/\/pygasflow.readthedocs.io\/en\/stable\/\" target=\"_blank\" rel=\"nofollow noopener\">PyGasFlow-Dokumente<\/a> \u2014 Quasi-1d Ideale Gasdynamik, Schock Beziehungen, Fanno \/ Rayleigh-Fluss<\/li>\n<li><a href=\"https:\/\/su2code.github.io\/tutorials\/home\/\" target=\"_blank\" rel=\"nofollow noopener\">SU2-Tutorials<\/a> \u2014 Supersonic Wedge, Oneram6 Transonic, NICFD-D\u00fcse<\/li>\n<\/ul>\n<p><!-- Inhaltsquelle: Matforge SEO Content Pipeline Recherchedatei: Forschung \/ SEO-Inhalt \/ Python-CFD-Aerospace-Superpersonic-Shock.md \u00dcberlappungsklassifizierung: New-Winkel (unterschiedlich von Post 390) Visuelle Entscheidung: Keine (GitHub-Bilder waren aufgrund der Ratenbegrenzung nicht verf\u00fcgbar; stattdessen mit Repository-Images als Referenzen verkn\u00fcpft) Alle externen Links verwenden rel=\"nofollow noopener\" target=\"_blank\" --><\/p>\n","protected":false,"raw":"<p>Wenn Forscher von inkomprimierbaren zu komprimierbaren Str\u00f6mungssimulationen in Python \u00fcbergehen, sto\u00dfen sie auf eine grundlegend andere Physik - die Dichte wird zu einer Variable, die Energiegleichung muss gel\u00f6st werden und Schockwellen f\u00fchren zu Diskontinuit\u00e4ten, die Standard-Numerikverfahren einfach nicht bew\u00e4ltigen k\u00f6nnen. Dieser Artikel behandelt, was Supersonic Flow anders macht, die Schockerfassungsmethoden, die f\u00fcr die Handhabung entwickelt wurden, und die Python-Solver, die diese Methoden f\u00fcr Luft- und Raumfahrtanwendungen implementieren.<\/p>\n<h2>Schl\u00fcssel zum Mitnehmen<\/h2>\n<ul>\n<li>F\u00fcr die komprimierbare Str\u00f6mung m\u00fcssen die <strong> komprimierbaren Navier-Stokes-Gleichungen <\/strong> gel\u00f6st werden, wobei die Dichte als Variable und die Energiegleichung gekoppelt sind - im Gegensatz zu einer inkompressiblen Str\u00f6mung, bei der die Dichte konstant ist.<\/li>\n<li><strong>Schockerfassungsmethoden<\/strong> (ROE, AUSM, TVD, Weno, Teno) sind unerl\u00e4sslich, da Schocks zu Diskontinuit\u00e4ten f\u00fchren. Das Roe-Schema erfordert Entropie-Fix- und Karbunkelschutz bei starken St\u00f6\u00dfen.<\/li>\n<li><strong>Python-Solver f\u00fcr komprimierbare Str\u00f6mung<\/strong> 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).<\/li>\n<li><strong>Benchmark Cases<\/strong> Wie das SOD-Schockrohr und das SHU-Osher-Problem bieten Standardvalidierung f\u00fcr die Genauigkeit der Schockerfassung.<\/li>\n<li><strong>MUSCL-TVD ist billiger, aber oszilliert <\/strong> in der N\u00e4he von Diskontinuit\u00e4ten; <strong> Weno 5. Ordnung <\/strong> bietet eine \u00fcberlegene Aufl\u00f6sung, kostet aber mehr. F\u00fcr DNS\/Iles von Wechselwirkungen zwischen Schock-Boundary-Schicht ist WENO\/Teno der aktuelle Standard.<\/li>\n<li><strong>PyGasFlow<\/strong> und das Open-Source-Repository <strong>Python-Shock-Tube<\/strong> bieten zug\u00e4ngliche Einstiegspunkte f\u00fcr das Verst\u00e4ndnis der Schockphysik, bevor sie sich auf Produktionsl\u00f6ser verpflichten.<\/li>\n<\/ul>\n<h2>Was unterscheidet Supersonic Flow von inkompressibler Str\u00f6mung?<\/h2>\n<p>Bei inkompressibler Str\u00f6mung wird die Dichte als Konstante behandelt. Die Impulsgleichungen werden unabh\u00e4ngig von der Energiegleichung gel\u00f6st, und der Druck wird allein durch das Geschwindigkeitsfeld durch einen Druck-Geschwindigkeitskopplungsalgorithmus (wie einfach oder piso) bestimmt. Dies bedeutet, dass Sie f\u00fcr Fl\u00fcsse mit niedriger Geschwindigkeit die Impuls- und Kontinuit\u00e4tsgleichungen l\u00f6sen k\u00f6nnen, ohne jemals die Dichte der Fl\u00fcssigkeit zu kennen - dies ist eine Selbstverst\u00e4ndlichkeit.<\/p>\n<p>Im komprimierbaren Fluss \u00e4ndert sich alles. Die Dichte wird zu einer Variable, die sich gem\u00e4\u00df der Kontinuit\u00e4tsgleichung, den Impulsgleichungen und der Energiegleichung entwickelt. Der thermodynamische Zustand des Fluids - Druck, Temperatur und Dichte - wird durch die Zustandsgleichung (typischerweise das ideale Gasgesetz f\u00fcr Luft- und Raumfahrtanwendungen) gekoppelt. Dies bedeutet, dass Sie den Impuls nicht von der Energiegleichung entkoppeln k\u00f6nnen. Der Solver muss verfolgen, wie sich Druckwellen durch das Fluid ausbreiten, und diese Wellen bewegen sich mit Schallgeschwindigkeit.<\/p>\n<p>Der dimensionslose Parameter, der diesen \u00dcbergang regelt, ist die <strong>Mach-Zahl<\/strong> \u2014 das Verh\u00e4ltnis der Str\u00f6mungsgeschwindigkeit zur lokalen Schallgeschwindigkeit. Wenn m &lt; 0,3 sind Dichte\u00e4nderungen typischerweise klein genug, dass die inkompressible Annahme gilt. Wenn m &gt; 1 (\u00fcbersch\u00fcssig) enth\u00e4lt der Fluss Sto\u00dfwellen - Diskontinuit\u00e4ten, bei denen Dichte, Druck und Temperatur fast augenblicklich \u00fcber einen schmalen Bereich springen.<\/p>\n<p>F\u00fcr Luft- und Raumfahrtforscher, die Python verwenden, bedeutet dies, dass der Python-CFD-Primer (Post 390) - der FIPY-, SU2- und JAX-Fl\u00fcssigkeiten haupts\u00e4chlich f\u00fcr inkompressible Str\u00f6mungen abdeckt - eine erhebliche L\u00fccke hinterl\u00e4sst. Sie m\u00fcssen verstehen:<\/p>\n<ol>\n<li><strong>Die komprimierbaren Navier-Stokes-Gleichungen<\/strong> in ihrer vollst\u00e4ndigen Form, einschlie\u00dflich der Energiegleichung<\/li>\n<li><strong>Riemann-Solver<\/strong>, die Fl\u00fcsse \u00fcber Zellfl\u00e4chen berechnen, wo Diskontinuit\u00e4ten bestehen k\u00f6nnen<\/li>\n<li><strong>Rekonstruktionsmethoden<\/strong>, die bestimmen, wie Variablen von Zellzentren zu Fl\u00e4chen interpolieren<\/li>\n<li><strong>Zeitintegrationsprogramme<\/strong>, die die strengeren CFL-Einschr\u00e4nkungen bei hohen Mach-Zahlen einhalten<\/li>\n<li><strong>Spezielle numerische Behandlungen<\/strong> wie Entropie-Fix und Karbunkelschutz<\/li>\n<\/ol>\n<p>Dies ist keine einfache Erweiterung des inkompressiblen Flusses - es ist eine andere numerische Methode, die auf ein anderes physikalisches Regime angewendet wird.<\/p>\n<h2>Schockerfassungsmethoden: Von Roe nach Weno<\/h2>\n<p>Wenn sich eine Sto\u00dfwelle bildet, \u00e4ndern sich die Flussvariablen diskontinuierlich \u00fcber eine Strecke, die kleiner ist als jedes physische Gitter, das sich aufl\u00f6sen kann. Anstatt zu versuchen, Schocks direkt aufzul\u00f6sen (was unm\u00f6glich feine Gitter erfordern w\u00fcrde), erm\u00f6glichen Schockerfassungsmethoden das numerische Schema, die Diskontinuit\u00e4t innerhalb einiger Zellen zu absorbieren, wobei numerische Dissipation zur Stabilisierung der L\u00f6sung verwendet wird.<\/p>\n<h3>Das Roe-Schema und warum es Korrekturen ben\u00f6tigt<\/h3>\n<p>Das 1978 von Peter Roe eingef\u00fchrte Roe-Schema ist ein ungef\u00e4hrer 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\u00e4che l\u00f6sen Sie eine linearisierte Version des Riemann-Problems (das anf\u00e4ngliche Wertproblem f\u00fcr diskontinuierliche Daten), berechnen den Fluss und addieren numerische Dissipation proportional zu den Wellengeschwindigkeiten.<\/p>\n<p>In Python folgt die Implementierung des ROE-Schemas aus ARXIV 2103.02794 diesem Muster:<\/p>\n<pre><code class=\"language-python\"># Roe scheme flux computation (simplified from arXiv 2103.02794)\ndef roe_flux(uL, uR, n):\n    \"\"\"Compute Roe flux for Euler equations.\n    uL, uR: left and right primitive states [rho, u, P]\n    n: normal direction (1 or -1 for 1D)\n    \"\"\"\n    rhoL, uL, P_L = uL\n    rhoR, uR, P_R = uR\n    \n    # Compute interface states\n    rho_hat = (rhoL**2 * rhoR**2 \/ \n               (rhoL + rhoR))**0.5\n    u_hat = (rhoL * uL + rhoR * uR) \/ (rhoL + rhoR)\n    \n    # Speed of sound\n    S_hat = ((P_L + P_R) \/ \n             (2 * (rhoL + rhoR)))**0.5\n    \n    # Compute Roe matrix eigenvalues\n    # |u_hat| +\/- S_hat for acoustic waves\n    # |u_hat| for shear\/convection\n    # ... eigenvalue computation omitted for brevity\n<\/code><\/pre>\n<p>Das Problem mit dem grundlegenden ROE-Schema ist zweifach. Erstens kann das Schema bei starken Schocks <strong> negativen Druck <\/strong> entwickeln - ein unphysischer Zustand, der den Solver zum Absturz bringt. Dies wird durch die <strong>Entropy Fix<\/strong> angegangen, die die Wellengeschwindigkeiten nahe Schocks modifiziert, um die Konvexit\u00e4t der Flussfunktion wiederherzustellen und nicht-physische Zust\u00e4nde zu verhindern.<\/p>\n<p>Zweitens kann das RoE-Schema auf unstrukturierten Gittern das <strong> Carbuncle-Ph\u00e4nomen <\/strong> aufweisen - eine numerische Instabilit\u00e4t, bei der ein starker Schock (wie der hinter einem stumpfen K\u00f6rper gebildete) einen nicht-physischen zweiten Schock entwickelt, der vom Hauptschock abzweigt. Dies liegt daran, dass das ROE-Schema bei starken Schocks \u00fcberm\u00e4\u00dfig empfindlich gegen\u00fcber der Gitterorientierung ist. Das \"Schock-stabile Roe-Schema\" kombiniert Entropie-Fix mit einem gedrehten Riemann-Solver, um dies zu heilen. F\u00fcr Forscher, die an Luft- und Raumfahrtgeometrien mit starken St\u00f6\u00dfen (wie \u00dcberschallzylinder oder stumpfe K\u00f6rper) arbeiten, kann der Verzicht auf den Karbunkelschutz zu Solver-Ausf\u00e4llen f\u00fchren.<\/p>\n<h3>AUSM: Fluss aufteilen<\/h3>\n<p>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\u00f6\u00dfen 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\u00f6ren zu den am weitesten verbreiteten Schockerfassungsschemata in CFD-Codes f\u00fcr Luft- und Raumfahrt Hyperschall) ohne Schaltstrategien.<\/p>\n<p>Das Python-Shock-Tube-Repository implementiert AUSM mit einer sauberen Oberfl\u00e4che, die neben Godunov, Roe, HLL und HLLC-Solvern funktioniert:<\/p>\n<pre><code class=\"language-python\"># AUSM implementation pattern from Python-shock-tube\ndef ausm_flux(uL, uR, n):\n    \"\"\"AUSM flux with pressure splitting.\"\"\"\n    rhoL, uL, P_L = uL\n    rhoR, uR, P_R = uR\n    \n    # Split flux into advective and pressure parts\n    # Advective part uses Mach number-based splitting\n    # Pressure part uses sign function of Mach number\n    # See Toro's \"Riemann Solvers and Numerical Methods \n    # for Fluid Dynamics\" for full derivation\n<\/code><\/pre>\n<h3>TVD-Flussbegrenzer und Muscl-Rekonstruktion<\/h3>\n<p>TVD (Gesamtvariation abnehmend) Flussbegrenzer verhindern St\u00f6rschwingungen in der N\u00e4he von Diskontinuit\u00e4ten durch Kontrolle der Gesamtvariation der L\u00f6sung. In Kombination mit der Rekonstruktion von Muscl (monotonisches Upstream-Centered Scheme for Conservation Laws) bilden sie das <strong> muscl-tvd <\/strong> -Schema - eine Methode zweiter Ordnung, die das Arbeitspferd f\u00fcr die Erfassung von Schocks auf technischer Ebene darstellt.<\/p>\n<p>Der Kompromiss ist hier klar: Muscl-TVD ist rechnerisch billig und robust, kann jedoch bei starken St\u00f6\u00dfen oder komplexen Wellenwechseln kleine Schwingungen hinter der Sto\u00dffront erzeugen. F\u00fcr technische Anwendungen, bei denen die absolute Schockaufl\u00f6sung nicht kritisch ist, reicht Muscl-TVD oft aus.<\/p>\n<h3>Weno und Teno: Hochwertige Sto\u00dfd\u00e4mpfung<\/h3>\n<p>Die gewichtete im Wesentlichen nicht-oszillatorische (WENO)-Rekonstruktion befasst sich mit den Einschr\u00e4nkungen 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\u00f6sung von Hochfrequenzoszillationen in der N\u00e4he von Diskontinuit\u00e4ten - entscheidend f\u00fcr die direkte numerische Simulation mit hoher Wiedergabetreue (DNS) und die implizite Large Eddy-Simulation (ILES).<\/p>\n<p>Das Python-Shock-Tube-Repository zeigt dies deutlich mit dem <strong>Shu-Osher-Problem<\/strong> - einem klassischen Benchmark, bei dem ein Schock mit einer Dichtewelle interagiert. Siehe das <a href=\"https:\/\/github.com\/chairmanmao256\/Python-shock-tube\/blob\/main\/gallery\/Shu-Osher.png\"> shu-osher-Vergleichsbild <\/a> aus dem Repository, das zeigt, dass Weno 5. Ordnung die Hochfrequenzoszillationen hinter dem Schock weitaus besser l\u00f6st als Muscl-TVD.<\/p>\n<p>F\u00fcr 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\u00fcr produktionstechnische Python-Formulierungen unter Verwendung von Weno \/ Teno f\u00fcr die komprimierbare Diskretisierung von Navier-Stokes.<\/p>\n<h2>Python-Solver f\u00fcr komprimierbare Luft- und Raumfahrt<\/h2>\n<p>Die Landschaft der Python-basierten komprimierbaren Flow-Solver ist zwischen 2021 und 2025 erheblich gereift. F\u00fcr Luft- und Raumfahrtforscher stehen nun f\u00fcnf Frameworks mit unterschiedlichen Architekturen zur Verf\u00fcgung:<\/p>\n<h3>PyBaram \u2013 unstrukturierte Gitter f\u00fcr starke Schocks<\/h3>\n<p>PyBaram (ver\u00f6ffentlicht in SoftwareX, 2022) implementiert finite Volumenmethoden auf unstrukturierten Gittern f\u00fcr 2D- und 3D-Luft- und Raumfahrtgeometrien. Es behandelt explizit starke Schock- und Expansionswellen, die sowohl f\u00fcr das Lehren als auch f\u00fcr die Forschung mit offenen Daten \u00fcber Mendeley konzipiert wurden. Mit mehr als 10 Zitaten ist Pybaram ein zug\u00e4nglicher Einstiegspunkt f\u00fcr Forscher, die unstrukturierte Gitterunterst\u00fctzung ohne den Aufwand gr\u00f6\u00dferer Pakete ben\u00f6tigen.<\/p>\n<h3>OpenSBLI v3.0 \u2014 Automatisierte Codegenerierung f\u00fcr DNS\/ILES<\/h3>\n<p>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 \u00fcber den OPs DSL. Das Framework zielt auf strukturierte Grids mit mehreren Blocks ab und unterst\u00fctzt sowohl CPU- (MPI\/OpenMP) als auch GPU- (CUDA\/OpenCL)-Backends.<\/p>\n<p>Opensbli v3.0, ver\u00f6ffentlicht in Computern &amp; Physik (Januar 2025) unterst\u00fctzt explizit <strong>Weno und Teno-Schock-Erfassung<\/strong> und wurde validiert auf:<\/p>\n<ul>\n<li>Schock-Boundary-Schichten-Wechselwirkungen bei Hyperschall-Mach-Nummern<\/li>\n<li>Transonisches Buffet auf NASA-CRM-Folien<\/li>\n<li>DNS des Hyperschallflusses \u00fcber Gau\u00dfsche Unebenheiten<\/li>\n<\/ul>\n<p>Der akademische Stammbaum des Frameworks ist stark - das Southampton \/ Oxford-Team (Lusher, Sandham) hat mehr als 20 Artikel zu OpenSBLI-Anwendungen ver\u00f6ffentlicht. Wenn Ihre Forschung mit Schock-Interaktionen komprimierbare DNS\/Iles von komprimierbaren Fl\u00fcssen umfasst, ist die automatisierte Codegenerierung von OpenSBLI die ausgereifteste Option.<\/p>\n<p>Das OpenSBLI Framework <a href=\"https:\/\/github.com\/opensbli\/opensbli\/blob\/main\/readme_images\/instroduction.png\">Workflow-Diagramm<\/a> veranschaulicht, wie Python symbolische Gleichungen sind \u00dcbersetzt in optimierten C-Code \u00fcber das OPS DSL.<\/p>\n<h3>JANC \u2013 Differenzierbarer komprimierbarer Fluss auf der GPU<\/h3>\n<p>JANC (ver\u00f6ffentlicht im April 2025 von Forschern der Tsinghua University und Mitarbeiter) ist wohl der neuartige Python-komprimierbare Solver in den letzten Jahren. JANC wurde vollst\u00e4ndig auf <strong>JAX-AMR<\/strong> (JAX-basierte blockstrukturierte adaptive Netzverfeinerung) aufgebaut und ist ein vollst\u00e4ndig differenzierbarer Solver f\u00fcr komprimierbare Reaktionsstr\u00f6me. Ihr Anspruch auf Unterscheidung:<\/p>\n<blockquote><p>Auf einer einzigen A100-GPU erreicht JANC <strong>1&nbsp;% der Rechenkosten von OpenFoam<\/strong> (mit 384 CPU-Cores). Wenn AMR aktiviert ist, sinken die Kosten auf 1\u20132% des OpenFOAM.<\/p><\/blockquote>\n<p>Dies ist kein Marketinganspruch - sie wird anhand der gemeldeten Testf\u00e4lle \u00fcberpr\u00fcft. JANC Hebelungen:<\/p>\n<ul>\n<li>Automatische Differenzierung (keine Notwendigkeit, adjungierte Gleichungen abzuleiten)<\/li>\n<li>XLA JIT Compilation (XLAs Tensor-Computation-Optimierung)<\/li>\n<li>Adaptive Netzverfeinerung (automatische Aufl\u00f6sung bei steiler Steigung)<\/li>\n<li>GPU \/ TPU Native Parallelit\u00e4t<\/li>\n<li>MIT-Lizenzierung<\/li>\n<\/ul>\n<p>F\u00fcr Forscher, die sich mit <strong>Differentiable CFD<\/strong> befassen - ein wachsender Trend f\u00fcr Designoptimierung, Sensitivit\u00e4tsanalyse und ML-Integration - ist JANC der erste vollst\u00e4ndig differenzierbare Python-Solver f\u00fcr die Reaktion von komprimierbaren Str\u00f6mungen. Der Code ist unter einer MIT-Lizenz verf\u00fcgbar.<\/p>\n<h3>PyGasFlow und SU2 \u2014 Schnelle Berechnungen und vollst\u00e4ndige Luft- und Raumfahrtsuiten<\/h3>\n<p><strong>PyGasFlow<\/strong> (v1.4.1) ist ein leichtes Python-Paket f\u00fcr die quasi-1d ideale Gasdynamik. Es implementiert normale und schr\u00e4ge Schockbeziehungen, isentropische Str\u00f6mung, Fanno- und Rayleigh-Fluss und aerothermodynamische Flach- \/ Stagnationskorrelationen. Obwohl es sich nicht um einen vollst\u00e4ndigen CFD-Solver handelt, ist er f\u00fcr schnelle analytische Berechnungen von unsch\u00e4tzbarem Wert - interaktive Druck-Ablenkungsdiagramme, Schockrelationspr\u00fcfungen und schnelle parametrische Sweeps, bevor Sie eine vollst\u00e4ndige Simulation durchf\u00fchren.<\/p>\n<p><strong>SU2<\/strong> ist nach wie vor die am h\u00e4ufigsten zitierte Open-Source-CFD-Suite f\u00fcr Luft- und Raumfahrtanwendungen. Zu den \u00dcberschall- \/ komprimierbaren Funktionen geh\u00f6ren der Inviscid Supersonic Wedge, der Transonic Oneram6-Folie und der nicht ideale komprimierbare Fluss in Superschall-D\u00fcsen-Tutorials. Mit mehr als 4.400 GitHub-Sternen ist SU2 die etablierte Wahl f\u00fcr die Produktion von Luft- und Raumfahrt-CFD, bei der Python haupts\u00e4chlich als Skript- und Automatisierungsschicht dient.<\/p>\n<h2>Benchmark-F\u00e4lle und Validierung<\/h2>\n<p>Jede schockierende Implementierung muss anhand von Standard-Benchmark-F\u00e4llen validiert werden. Zwei F\u00e4lle sind unerl\u00e4sslich:<\/p>\n<h3>Rasensto\u00dfrohr<\/h3>\n<p>Der Sod Shock Tube ist der kanonische Test f\u00fcr Riemann-Solver. Es initialisiert eine R\u00f6hre mit einem linken Hochdruckzustand und einem rechten Niederdruckzustand. Bei t = 0 bricht die Membran und ein Schock, eine Kontaktdiskontinuit\u00e4t und ein Expansionsventilator. Das <strong>Python-Shock-Tube<\/strong>-Repository bietet diesen Benchmark. Siehe den <a href=\"https:\/\/github.com\/chairmanmao256\/Python-shock-tube\/blob\/main\/gallery\/SOD.png\"> SOD-Schock-R\u00f6hrenvergleich <\/a>, der die Flussaufl\u00f6sung \u00fcber vier Solver (Godunov, RoE, HLL, HLLC) auf 300 Zellen mit Rekonstruktion 0. Ordnung zeigt.<\/p>\n<p>Das Bild zeigt die Flussaufl\u00f6sung \u00fcber 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\u00f6st die Kontaktdiskontinuit\u00e4t 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.<\/p>\n<h3>Shu-Osher-Problem<\/h3>\n<p>Das Shu-Osher-Problem testet, wie gut ein Schema die Wechselwirkung zwischen einem Schock und einer Dichtewelle behandelt. Die Anfangsbedingung ist eine Schrittfunktion f\u00fcr Druck mit einer St\u00f6rung der Sinusdichte hinter dem Sto\u00df. Dieser Fall zeigt, wie Rekonstruktionsverfahren hochfrequente Schwingungen aufl\u00f6sen:<\/p>\n<ul>\n<li><strong>Rekonstruktion der 0. Ordnung<\/strong> (Godunov) leidet unter \u00fcberm\u00e4\u00dfiger numerischer Dissipation bei starken Schocks<\/li>\n<li><strong>MUSCL-TVD<\/strong> Reduziert die Dissipation, oszilliert aber hinter dem Schock<\/li>\n<li><strong>Weno<\/strong> 5. Ordnung l\u00f6st die Hochfrequenz-Oszillationen genau auf<\/li>\n<\/ul>\n<p>F\u00fcr High-Fidelity-Luftfahrtsimulationen ist Weno jetzt die Standardwahl.<\/p>\n<h2>Numerische Herausforderungen Einzigartig f\u00fcr High-Mach-Flow<\/h2>\n<p>Mehrere numerische Herausforderungen treten speziell im komprimierbaren \/ \u00fcbersch\u00f6nten Fluss auf, die in inkompressiblem CFD nicht erscheinen (oder anders erscheinen):<\/p>\n<h3>CFL-Beschr\u00e4nkungen bei hohen Mach-Zahlen<\/h3>\n<p>Die CFL-Bedingung (Courant-Friedrichs-Lewy) regelt die Stabilit\u00e4t f\u00fcr die explizite Zeitintegration. F\u00fcr die komprimierbare Str\u00f6mung h\u00e4ngt die CFL-Nummer von der Summe von Str\u00f6mungsgeschwindigkeit und Schallgeschwindigkeit ab:<\/p>\n<p>$$cfl = frac{u + a}{delta x} delta t$$<\/p>\n<p>Bei hohen Machzahlen wird $ u  ca. m  cdot a $, so dass die CFL-Bedingung extrem restriktiv wird. Dies bedeutet, dass <strong>Small Time Steps<\/strong> erforderlich sind - oft um Gr\u00f6\u00dfenordnungen kleiner als bei inkompressiblen Str\u00f6mungen. Implizite Zeitschritt- oder Multigrid-Methoden k\u00f6nnen dies mildern, aber explizite Schemata erfordern eine sorgf\u00e4ltige Zeitschrittkontrolle.<\/p>\n<h3>Entropie-Fix<\/h3>\n<p>Das grundlegende Roe-Schema scheitert bei starken St\u00f6\u00dfen an der Entropie: Anstelle der physikalisch korrekten Entropiezunahme \u00fcber den Schock kann die numerische L\u00f6sung gegen die Thermodynamik versto\u00dfen. Die Entropie-Fixierung modifiziert die Eigenwerte in der N\u00e4he von Schocks, um sicherzustellen, dass das numerische Schema das zweite Gesetz der Thermodynamik einh\u00e4lt. Ohne sie kann die L\u00f6sung zu einem falschen Entropiezustand konvergieren - ein Schock, der zu stark oder zu schwach ist.<\/p>\n<h3>Karbunkelph\u00e4nomen<\/h3>\n<p>Wie bereits erw\u00e4hnt, ist das Carbuncle-Ph\u00e4nomen eine numerische Instabilit\u00e4t, die f\u00fcr das ROE-Schema auf unstrukturierten Gittern spezifisch ist. Wenn ein starker Schock schlecht mit dem Gitter \u00fcbereinstimmt, kann der Solver einen sekund\u00e4ren Schock entwickeln, der den Hauptschock abzweigt - physikalisch unm\u00f6glich und numerisch katastrophal. Das Schock-stabile Roe-Schema (Kombinieren von Entropy Fix mit gedrehtem Riemann-Solver) heilt dies.<\/p>\n<h3>Schock-Grenz-Schicht-Interaktion<\/h3>\n<p>In der Luft- und Raumfahrt erzeugen Sto\u00dfwellen, die mit Grenzschichten interagieren, komplexe Str\u00f6mungsstrukturen - Str\u00f6mungstrennung, Wiederbefestigung und instabiles Buffet. Die L\u00f6sung dieser erfordert:<\/p>\n<ul>\n<li>Feinaufl\u00f6sung der Grenzschicht (h\u00e4ufig wandaufgel\u00f6stes DNS)<\/li>\n<li>Hochwertige Schock-Erfassung (Weno\/Teno), um den Schock zu beheben<\/li>\n<li>Angemessene zeitliche Aufl\u00f6sung f\u00fcr instation\u00e4re Ph\u00e4nomene<\/li>\n<\/ul>\n<p>Aus diesem Grund konzentriert sich die Validierung von OpensBLI v3.0 auf SBLI - es ist die Physik, die f\u00fcr das Design von Transonic- und Hyperschall-Fahrzeugen am wichtigsten ist.<\/p>\n<h2>Welchen L\u00f6ser sollten Sie w\u00e4hlen?<\/h2>\n<p>Die Wahl des komprimierbaren Flow-Solvers h\u00e4ngt von Ihren Netzanforderungen, den Anforderungen an die Wiedergabetreue und den Rechenressourcen ab. Hier ein Vergleich:<\/p>\n<table>\n<thead>\n<tr>\n<th>L\u00f6ser<\/th>\n<th>Gittertyp<\/th>\n<th>Schockerfassung<\/th>\n<th>am besten f\u00fcr<\/th>\n<th>Hardware-<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Pybaram<\/td>\n<td>Formlos<\/td>\n<td>Endliches Volumen<\/td>\n<td>Lehre, 2D\/3D-Luftfahrt, starke Schocks<\/td>\n<td>CPU-Parallel<\/td>\n<\/tr>\n<tr>\n<td>opensbli<\/td>\n<td>Strukturiert (Multiblock)<\/td>\n<td>Weno \/ Teno<\/td>\n<td>DNS\/Iles, SBLI, Transonic Buffet, Hyperschall<\/td>\n<td>CPU\/GPU (CUDA\/OpenCL)<\/td>\n<\/tr>\n<tr>\n<td>Janc<\/td>\n<td>Strukturiert (Block AMR)<\/td>\n<td>Jax Auto-Diff<\/td>\n<td>Differenzierbare CFD, Adjoint Optimization, GPU<\/td>\n<td>GPU\/TPU (A100+)<\/td>\n<\/tr>\n<tr>\n<td>Pygasflow<\/td>\n<td>N\/A (Analytisch)<\/td>\n<td>Nicht verf\u00fcgbar<\/td>\n<td>Schnelle Schockbeziehungen, Fanno\/Rayleigh, Parametrische Sweeps<\/td>\n<td>Jeder<\/td>\n<\/tr>\n<tr>\n<td>su2<\/td>\n<td>strukturiert \/ unstrukturiert<\/td>\n<td>ROE, AUSM usw.<\/td>\n<td>Volle Luft- und Raumfahrt-Suite, Produktions-CFD, N+1 Flows<\/td>\n<td>CPU \/ MPI<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Praktische Empfehlung<\/strong>: Beginnen Sie mit PyGasFlow zum analytischen Verst\u00e4ndnis der Schockbeziehungen und des Fanno \/ Rayleigh-Flusses. Verwenden Sie dann das Python-Shock-Tube-Repository f\u00fcr die 1D-Schock-Erfassungs\u00fcbung (ROE, AUSM, WENO). W\u00e4hlen Sie PyBaram, wenn Sie unstrukturierte Gitter f\u00fcr komplexe 2D\/3D-Geometrien ben\u00f6tigen. W\u00e4hlen Sie OpenSBLI, wenn Ihre Forschung DNS \/ Iles mit Weno \/ Teno auf strukturierten Gittern umfasst. W\u00e4hlen Sie JANC, wenn Sie differenzierbares CFD mit GPU-Beschleunigung und AMR erkunden.<\/p>\n<h2>Zusammenfassung und n\u00e4chste Schritte<\/h2>\n<p>Dieser Artikel behandelte, was komprimierbare\/\u00fcbersch\u00fcssige Str\u00f6mungen von inkompressiblen Fluss unterscheidet, die Schockerfassungsmethoden (ROE mit Entropy Fix, AUSM, TVD, Weno\/Teno), die Diskontinuit\u00e4ten verarbeiten, die Python-Solver f\u00fcr Anwendungen in der Luftfahrt (PyBaram, OpenSBLI, JANC, PygasFlow, SU2) und Benchmark-F\u00e4lle zur Validierung.<\/p>\n<p><strong>F\u00fcr Forscher beginnend mit komprimierbarem Fluss in Python<\/strong>: Beginnen Sie mit PyGasFlow f\u00fcr schnelle analytische Berechnungen, \u00fcben Sie Schock-Erfassungsmethoden mit Python-Schock-Tube, w\u00e4hlen Sie dann Pybaram (unstrukturiert) oder OpenSBLI (strukturiert) basierend auf Ihren Grid-Anforderungen. F\u00fcr differenzierbare CFD mit GPU-Beschleunigung stellt JANC den aktuellen Stand der Technik dar.<\/p>\n<p><strong>Wenn Sie Python CFD<\/strong> noch nicht kennen, beginnen Sie mit unserem <a href=\"https:\/\/matforge.org\/python-for-computational-cfd-primer-researchers\/\" target=\"_blank\" rel=\"nofollow noopener\"> umfassenden CFD-Primer<\/a>, der FIPY, Meshing und die 12 Schritte zu Navier-Stokes abdeckt. F\u00fcr von der Advektion dominierte Fl\u00fcsse, bei denen die Netzaufl\u00f6sung wichtig ist, kann <a href=\"https:\/\/matforge.org\/anisotropic-mesh-adaptation-advection-dominated-flows\/\" target=\"_blank\" rel=\"nofollow noopener\"> anisotrope Netzanpassung <\/a> Ihr Schockerfassungsschema erg\u00e4nzen. Wenn Sie eine bessere Aufl\u00f6sung als endliches Volumen zweiter Ordnung ben\u00f6tigen, bieten <a href=\"https:\/\/matforge.org\/high-order-numerical-methods-beyond-fdm-fem-fvm\/\" target=\"_blank\" rel=\"nofollow noopener\">Spektral- und DG-Methoden hoher Ordnung <\/a> Alternativen.<\/p>\n<hr>\n<h3>Empfohlene Lesung<\/h3>\n<ul>\n<li><a href=\"https:\/\/quantumzeitgeist.com\/introducing-janc-a-high-performance-python-based-solver-for-compressible-reacting-flows\/\" target=\"_blank\" rel=\"nofollow noopener\">JANC: Ein kosteng\u00fcnstiger, differenzierbarer komprimierbarer Reagierfluss-Solver<\/a> \u2014 JAX-basierter Solver mit AMR, 1\u20132 % der OpenFoam-Kosten (Apr. 2025)<\/li>\n<li><a href=\"https:\/\/github.com\/opensbli\/opensbli\" target=\"_blank\" rel=\"nofollow noopener\">Opensbli GitHub<\/a> \u2014 Automatisierte Codegenerierung f\u00fcr komprimierbare Navier\u2013Stokes Mit Weno \/ Teno-Schock-Erfassung<\/li>\n<li><a href=\"https:\/\/github.com\/chairmanmao256\/Python-shock-tube\" target=\"_blank\" rel=\"nofollow noopener\">Python-Shock-Tube<\/a> \u2014 1D Euler-Gleichungsl\u00f6ser mit Godunov, Roe, AUSM, HLLC, Muscl-TVD und Weno-Implementierungen<\/li>\n<li><a href=\"https:\/\/arxiv.org\/pdf\/2103.02794\" target=\"_blank\" rel=\"nofollow noopener\">Eine Einf\u00fchrung in Fluiddynamik und numerische L\u00f6sungsmethoden<\/a> \u2014 Abschnitt 13.1: Roe-Schema-Python-Implementierung mit SOD-Schockrohr<\/li>\n<li><a href=\"https:\/\/levelup.gitconnected.com\/create-your-own-riemann-solver-with-python-9e38d64ad2ec\" target=\"_blank\" rel=\"nofollow noopener\">Erstellen Sie Ihren eigenen Riemann-Solver<\/a> \u2013 das genaue Riemann-Solver-Tutorial von Philip Mocz f\u00fcr Euler-Gleichungen<\/li>\n<li><a href=\"https:\/\/pygasflow.readthedocs.io\/en\/stable\/\" target=\"_blank\" rel=\"nofollow noopener\">PyGasFlow-Dokumente<\/a> \u2014 Quasi-1d Ideale Gasdynamik, Schock Beziehungen, Fanno \/ Rayleigh-Fluss<\/li>\n<li><a href=\"https:\/\/su2code.github.io\/tutorials\/home\/\" target=\"_blank\" rel=\"nofollow noopener\">SU2-Tutorials<\/a> \u2014 Supersonic Wedge, Oneram6 Transonic, NICFD-D\u00fcse<\/li>\n<\/ul>\n<p><!-- Inhaltsquelle: Matforge SEO Content Pipeline Recherchedatei: Forschung \/ SEO-Inhalt \/ Python-CFD-Aerospace-Superpersonic-Shock.md \u00dcberlappungsklassifizierung: New-Winkel (unterschiedlich von Post 390) Visuelle Entscheidung: Keine (GitHub-Bilder waren aufgrund der Ratenbegrenzung nicht verf\u00fcgbar; stattdessen mit Repository-Images als Referenzen verkn\u00fcpft) Alle externen Links verwenden rel=\"nofollow noopener\" target=\"_blank\" --><\/p>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Deckt komprimierbare Navier-Stokes, Schockerfassungsmethoden (ROE, WENO), Python-Solver (PyBaram, OpenSBLI, JANC) und Benchmark-F\u00e4lle wie Sod Shock Tube.<\/p>\n","protected":false,"raw":"Deckt komprimierbare Navier-Stokes, Schockerfassungsmethoden (ROE, WENO), Python-Solver (PyBaram, OpenSBLI, JANC) und Benchmark-F\u00e4lle wie Sod Shock Tube."},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"de_DE","_original_post":"https:\/\/matforge.org\/?p=1074","iawp_total_views":1,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1124","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","de-DE"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung - matforge.org<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung - matforge.org\" \/>\n<meta property=\"og:description\" content=\"Reading Time:  10 minutesDeckt komprimierbare Navier-Stokes, Schockerfassungsmethoden (ROE, WENO), Python-Solver (PyBaram, OpenSBLI, JANC) und Benchmark-F\u00e4lle wie Sod Shock Tube.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-19T09:48:29+00:00\" \/>\n<meta name=\"author\" content=\"steven\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"steven\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/python-cfd-aerospace-supersonic-shock-capturing\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/python-cfd-aerospace-supersonic-shock-capturing\\\/\"},\"author\":{\"name\":\"steven\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/8f690fb596d657b12994b83caa788f03\"},\"headline\":\"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung\",\"datePublished\":\"2026-08-19T09:48:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/python-cfd-aerospace-supersonic-shock-capturing\\\/\"},\"wordCount\":2868,\"commentCount\":0,\"articleSection\":[\"Simulation & amp; Modellierungsprojekte\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/python-cfd-aerospace-supersonic-shock-capturing\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/python-cfd-aerospace-supersonic-shock-capturing\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/de\\\/python-cfd-aerospace-supersonic-shock-capturing\\\/\",\"name\":\"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung - matforge.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-08-19T09:48:29+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/8f690fb596d657b12994b83caa788f03\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/python-cfd-aerospace-supersonic-shock-capturing\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/python-cfd-aerospace-supersonic-shock-capturing\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/python-cfd-aerospace-supersonic-shock-capturing\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/8f690fb596d657b12994b83caa788f03\",\"name\":\"steven\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g\",\"caption\":\"steven\"},\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/steven\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung - matforge.org","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/","og_locale":"de_DE","og_type":"article","og_title":"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung - matforge.org","og_description":"Reading Time:  10 minutesDeckt komprimierbare Navier-Stokes, Schockerfassungsmethoden (ROE, WENO), Python-Solver (PyBaram, OpenSBLI, JANC) und Benchmark-F\u00e4lle wie Sod Shock Tube.","og_url":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/","og_site_name":"matforge.org","article_published_time":"2026-08-19T09:48:29+00:00","author":"steven","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"steven","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/"},"author":{"name":"steven","@id":"https:\/\/matforge.org\/#\/schema\/person\/8f690fb596d657b12994b83caa788f03"},"headline":"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung","datePublished":"2026-08-19T09:48:29+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/"},"wordCount":2868,"commentCount":0,"articleSection":["Simulation & amp; Modellierungsprojekte"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/","url":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/","name":"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung - matforge.org","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-08-19T09:48:29+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/8f690fb596d657b12994b83caa788f03"},"breadcrumb":{"@id":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/de\/python-cfd-aerospace-supersonic-shock-capturing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/de\/"},{"@type":"ListItem","position":2,"name":"Python CFD f\u00fcr Luft- und Raumfahrt: \u00dcberschallfluss und Schockerfassung"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/8f690fb596d657b12994b83caa788f03","name":"steven","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g","caption":"steven"},"url":"https:\/\/matforge.org\/author\/steven\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=1124"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1124\/revisions"}],"predecessor-version":[{"id":1133,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1124\/revisions\/1133"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=1124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=1124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=1124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}