Project · Propulsion
N₂O / Ethanol Hot-Fire Simulator
A physics-based hot-fire model for the liquid bipropellant engine my design team is developing. Blowdown feed dynamics, combustion product thermodynamics, and nozzle performance, solved live in the browser so the team can run trades without opening MATLAB.
Runs entirely in your browser. Change any input and the model re-solves immediately. Open it full screen for the complete panel layout.
What it models
The simulator takes the engine from a filled tank to burnout. Inputs cover the feed system, the propellant loads, and the nozzle geometry; outputs are the full time histories an engine designer actually sizes against.
| Feed system | Blowdown from initial tank pressure, with ullage volume and an injector discharge coefficient setting the mass flow schedule as the tank decays. |
|---|---|
| Propellants | Nitrous oxide and ethanol loads set independently, giving the O/F ratio and the burn duration. |
| Combustion | Product composition and chamber thermodynamics from NASA-7 polynomial fits, with elemental balance enforced across the products. |
| Nozzle | Throat and exit area with a specified ambient back pressure, producing thrust coefficient and expansion behaviour. |
| Outputs | Thrust curve, chamber and tank pressure histories, specific impulse, total mass flow, total impulse, peak and mean thrust, mean Isp, and propellant consumed. |
Fixing the combustion solver
The original MATLAB combustion routine did not conserve atoms. Product mole fractions came out plausible-looking but the elemental balance did not close, which quietly corrupted chamber temperature and therefore every performance number downstream of it.
I rewrote the two files at the centre of it. The thermodynamic data layer was rebuilt against corrected NASA-7 coefficients, and the solver was restructured around an oxygen-allocation waterfall so that available oxygen is distributed to product species in a defined physical order rather than being implicitly over-committed. With elemental balance closing, the chamber state became trustworthy and the performance outputs moved to values consistent with hand calculations.
This is the part of the project I would point at first. The porting work made the tool usable; the solver rewrite made it correct.
From MATLAB to the browser
The model started as MATLAB, which meant one person with a licence could run a trade and everyone else waited for a screenshot. Porting it to a React application removed that bottleneck: any team member can open a link, move a slider, and see the consequence for thrust and impulse in the same second.
The MATLAB original was an integrated tool covering both the engine burn and the vehicle’s 6-DOF flight. In the web port those halves are separate applications, so the engine can be iterated without dragging the full trajectory model along with it. The flight half is documented separately.
Context
Built for the Engineering Connections Design Team, which I founded and lead as chief engineer. Twenty of us are developing a nitrous oxide and ethanol liquid sounding rocket, and this tool is the analysis backbone for the engine side of that vehicle. I developed and maintain it single-handedly.