Overview
| Language | Python 3 |
| Thermo. Property Lib. | CoolProp |
| N₂O Error (Initial) | 35% |
| N₂O Error (After) | 10.3% |
| Orifice Diameter | 0.0468'' |
| Area per Orifice | 0.00172'' ² |
| Sized Injector To | 69 Orifices |
| Discharge Coefficient | 0.4522 |
Injector orifices
Final N₂O mass-flow error
Predicted ox flow rate
Problem
Hybrid rocket injectors using saturated-liquid nitrous oxide have a modeling problem: the Single-Phase Incompressible (SPI) model
assumes non-flashing liquid and overpredicts mass flow by up to 30% when nitrous accelerates through the atomizing injector and drops below the saturation pressure, starting vapor formation. It uses pressure drop. The Homogeneous Equilibrium Model (HEM)
corrects for phase change by assuming full thermodynamic equilibrium between phases, but underpredicts flow, and neither model is perfect. HEM uses enthalpy drop. Injector sizing in our program paired waterflow testing with SPI alone, which is a terrible forward predictor. Two-phase nitrous oxide flow through short orifices remains an active research area with no consensus. The need was a validated forward predictor.
Approach
We chose the Non-Homogeneous Non-Equilibrium (NHNE) model, a weighted combination of SPI and HEM controlled by a single factor κ. The methodology we used was a waterflow-test-derived discharge coefficient (Cd), which captures our geometry-specific losses, and used saturation property lookups in Python for nitrous oxide to produce a forward mass-flow prediction across the operating pressure-drop range. Calibrating κ against oxidizer flow measured in a previous static fire made the abstract physics match our actual injector geometry. Choke detection, specifically the pressure ratio P2/Psat at which further increasing upstream pressure no longer increases mass flow, is computed directly from a thermodynamic lookup, creating an upper bound for any sizing decision.
Build
The implementation uses Python 3 with CoolProp for fluid properties
through property lookups (inputs: pressure, temperature — outputs:
density, enthalpy, vapor quality). NumPy was used for vectorized flow
math, Matplotlib for plotting, and pandas for terminal output. The
project is in a GitHub repository with three scripts:
inputs.py holds all parameters, model.py is
the pure forward model from literature, and
prediction.py sweeps orifice counts to find the quantity
that best meets the target oxidizer flow rate.
Analysis
Calibration swept κ values, evaluating predicted mass flow against the 1.85 lb/s measured from the oxidizer tank load cell of the previous static fire. The key finding was that pure-HEM over-predicted measured flow by 10%, and blending in any SPI only worsened accuracy. Choke detection returned a critical pressure ratio P2/Psat of 0.765, closely matching the empirically established value of approximately 0.8 derived from over 500 cold-flow tests in published literature, independently confirming the results. The 10% over-prediction falls within the ±15% accuracy band reported at appropriate discharge coefficients (Cd), so the validation passed both average mass flow within published accuracy and choke pressure ratio matching empirical expectations. Honestly, the 10% gap is likely water-flow Cd being slightly higher than effective two-phase Cd, and feed-line two-phase effects at the manifold.
Result
My calibrated model sized our flight injector to 69 orifices, with the orifice-count sweep selecting it. On our program’s second hybrid engine static fire, the final fire before flight, the model predicted mass flow (2.693 lbm/s) with a −6.71% error relative to measured (2.88 lbm/s), well within the ±15% accuracy band reported in literature. The legacy SPI approach lacks any physical reality and cannot represent phase change, so it systematically overpredicts flow in the flashing regime. This establishes a calibrated two-phase flow model for the program’s injector development, replacing a waterflow-only sizing method with a quantitative, reproducible process that can be recalibrated. I made sure to document everything for future students.
Reflection
None of this would have been possible without Brian J. Solomon from Utah State University and his 2011 M.S. report, “Engineering Model to Calculate Mass Flow Rate of a Two-Phase Saturated Fluid Through an Injector Orifice.” The residual ~10% error is consistent with HEM’s limitations: it assumes equal velocity for liquid and vapor phases. Closing that gap would require instrumentation that our program does not have. Another limiting factor is that we continue to use Cd derived from water flows.