Wake slice (yz, at i = 0.75·N)
Cross-section perpendicular to the flow, just downstream of the body. Colour = density (blue ⟶ white ⟶ red, ρ ∈ [0.5, 1.5]). Black dots: p5-style particle traces of the in-plane (vy, vz) flow with fading comet tails. Reveals the 3D wake vortex structure (recirculation, plume cores) that the xy slice can't show.
t = 0.000
Initializing WebGPU…

Bluff-body flow at Mach 2 in 3D, compressible Navier–Stokes, WebGPU. Uniform inflow ρ = 1, e = 1, vx = 1 from the left. A cubic body of side 0.25 N centred in the domain acts as a hard no-slip wall (frozen ρ, e; zero momentum). Fluid cells adjacent to the body see a zero-momentum / matching-ρ-e ghost.

Display: mid-z slice (xy plane through the centre of the box). Colour = density (blue low → white mid → red high), tuned to ρ ∈ [0.5, 1.5]. Body cells overlaid in yellow.

Equations: ∂ρ/∂t + ∇·(ρv) = 0; ∂(ρv)/∂t + ∇·(ρv⊗v) + ∇p = ∇·σ; ∂e/∂t + ∇·(e v) + p∇·v = 0; p = γe, γ = 0.2; ν = 0.3 h.

Grid: 200³ = 8 000 000 cells. State packed as 8 floats per cell (5 data: ρ, e, mx, my, mz; + 3 pad); ping-pong storage buffers of 256 MB each. Requires maxStorageBufferBindingSize ≥ 256 MB from the adapter (most modern desktop GPUs support up to 1–2 GB).