Rocket Propellant Vortex-Ring Mixing

Three.js · Dye-Particle Fluid · colliding oxidizer / fuel streams
Dye particles  —
Time           0.00
Phase         Approach
Re = 1750
RP-1 Kerosene 
Liquid Oxygen 
O/F mixing
Simulation Parameters
Propellants
Per-stream properties Left / Right
System & numerics
Per-stream sliders set the Left / Right propellant jets independently. Re maps to dye diffusion: higher Re → sharper filaments; lower Re → more blurred dye.
About this Simulation
Objective

This application visualises the head-on collision of two vortex rings as a model of rocket-propellant stream mixing. Two coaxial rings — one per propellant — are fired toward each other. As they meet, they interpenetrate, the dye intermixes, and the merged structure blooms outward into a larger, lobed ring. It reproduces the qualitative behaviour of the classic Lim & Nickels (1992) experiment and the Basilisk reference simulation, letting you explore how propellant choice and flow parameters shape the mixing.

Method

Each ring is a loop of discrete vortex elements. Both the dye particles and the vortex elements move in the summed Biot–Savart velocity field of every element, so self-propulsion, collision and radial expansion all emerge from the physics rather than being scripted. This is a lightweight qualitative model, not a full Navier–Stokes combustion solver.

Parameters

Parameters that describe a propellant jet are set independently per stream (Left / Right). Parameters that describe the shared domain or the numerical scheme are system-wide.

Per-stream (Left / Right)
Left Stream / Right Stream
The propellant assigned to each ring. Sets its dye colour, density (stream momentum) and viscosity (dye diffusion). The note flags whether the pair is a real oxidizer + fuel combination.
Jet strength (circulation Γ)
How hard that ring is fired — analogous to the injection velocity of the propellant jet. Controls that stream's approach and collision speed.
Ring radius R
The major radius of that ring at launch (its nozzle diameter).
Launch distance
Starting distance of that ring's centre from the origin along the collision axis. The two streams can start at different distances.
Vertical offset
Raises the left ring / lowers the right ring by this amount. Unequal offsets produce an oblique, off-centre collision instead of a head-on one.
Core thickness ε
The Biot–Savart smoothing length of that ring — effectively its vortex core size. Larger values give a thicker, gentler core.
Instability lobes (wavenumber)
Azimuthal perturbation seeding the scalloped "flower" lobes on that ring. 0 = perfectly axisymmetric.
System-wide
Reynolds number (Re)
Ratio of inertial to viscous forces for the whole scene. Drives the dye diffusion rate: high Re → thin, crisp filaments; low Re → blurred dye. Linked to the viscosity slider.
Viscosity (dye diffusion)
The base random-walk coefficient applied to the dye. Inversely linked to Re; combined with each propellant's own viscosity.
Dye particles
Total number of dye particles (half per ring). More particles give a denser cloud at a higher compute cost.
Particle size
On-screen size of each dye point. Updates live without a restart.
Playback speed (dt)
Simulation time step per frame — slows down or speeds up the animation.
References
Created by Andy Kong