Interactive Rocket Nozzle + Plume Visualizer
Axisymmetric nozzle + plume simulation with shock-cell structure (“shock diamonds”) emerging from a real-time compressible Euler solution. Use presets to jump into a compelling state.
About this project
This is a browser-based, interactive rocket nozzle + plume visualization driven by a coarse axisymmetric compressible Euler solver. You control chamber total pressure P₀, temperature T₀, ambient pressure Pₐ, nozzle area ratio Aₑ/Aₜ, and other parameters, then watch how expansion waves, shocks, and shock-cell (“diamond”) structures form and interact with the nozzle and plume.
The scalar views (ρ, p, M) come from sampling the simulated flow field. The Schlieren view is a “CFD-style” visualization computed from the density gradient (a stand-in for optical schlieren photography): sharp gradients show up as bright features, revealing shock waves, expansion fans, and the characteristic diamond pattern in the exhaust.
What it shows
- Shock-cell formation: underexpanded exhaust forms periodic shock/expansion structures (“diamonds”) as the plume adjusts to ambient pressure.
- Nozzle geometry effects: changing area ratio, length, and shape alters plume expansion, shock spacing, and exhaust structure.
- Ambient pressure influence: lowering Pₐ (simulating altitude) changes plume width, shock intensity, and expansion fan behavior.
- Unsteady settling: the solver advances continuously; the field “spins up” from chamber conditions toward a quasi-steady plume pattern.
What it hopes to accomplish
- Provide an intuitive, fast way to explore how nozzle design and chamber/ambient conditions influence plume structure and shock-cell appearance.
- Give a physically grounded alternative to analytic/painted shock diamonds: structures emerge from the PDE solver rather than being drawn as overlays.
- Offer a compact, single-file demo that runs anywhere (no build step, no external dependencies) and can be iterated quickly.
What it is not
- Not high-fidelity CFD: this is an inviscid Euler model (no viscosity, no turbulence model, no heat transfer, no mixing).
- Not a validated design tool: results are qualitative; they are not calibrated to a specific experiment, mesh study, or uncertainty quantification.
- Not a perfect boundary treatment: boundaries use simple conditions plus damping to reduce reflections; some artifacts can still exist.
- Not high order: the numerical method is intentionally simple/coarse for real-time speed, so shocks are thicker and small features are smeared.
- Not 3D: full three-dimensional plume effects and sidewall interactions are not represented.
Controls glossary (what it changes / what to look for)
- Chamber total pressure, P₀: Sets the initial pressure in the combustion chamber. Higher P₀ increases exhaust velocity and shock intensity.
- Chamber total temperature, T₀: Sets the initial temperature. Higher T₀ increases exhaust energy and plume expansion.
- Ambient pressure, Pₐ: Simulates altitude. Lower Pₐ (higher altitude) widens the plume and changes shock-cell spacing.
- γ (specific heats): Changes the ratio of specific heats. This affects wave speeds and shock strengths for the same chamber/ambient conditions.
- Nozzle area ratio, Aₑ/Aₜ: Sets the exit-to-throat area ratio. Larger ratios produce higher expansion and more pronounced plume structure.
- Nozzle length, L: Adjusts the physical length of the nozzle, affecting plume shape and shock pattern.
- Nozzle shape: Switches between bell and conical nozzle profiles, changing expansion fan geometry and plume appearance.
- View: ρ shows density (good for “CFD contour” look), p shows pressure (often highlights shocks clearly), M shows local Mach number, Schlieren shows a contrast-enhanced density-gradient image (good for wave visualization).
- Schlieren sensitivity (only in Schlieren view): Chooses which density-gradient component is emphasized: ∂/∂x highlights features with strong streamwise gradients, ∂/∂y highlights vertical gradients, |∇| highlights overall gradient magnitude.
- Schlieren gain (only in Schlieren view): Contrast/compression tuning for the Schlieren image. Higher gain makes weak waves more visible but can also saturate bright regions.
- Texture (only in Schlieren + Density): Adds a small procedural “numerical texture” to reduce banding and mimic CFD/optical grain. Set to 0 for the cleanest contours.
- Streamlines: Draws approximate streamlines over the field. This is a visualization aid (not a separate solver); it can help show plume expansion and shock-cell structure qualitatively.
- Fixed color range: When enabled, uses a fixed mapping range so colors are comparable across parameter changes; when disabled, the range auto-scales to the current frame (more contrast, less comparability).
Disclaimer: Axisymmetric inviscid Euler: captures shock structure; does not model viscosity/turbulence/mixing; shock diamonds are physical from inviscid compressible flow, but plume spreading/mixing is not.