I knew I wanted to build rockets at age seven, when I assembled a LEGO Saturn V rocket. Now I'm designing an amateur N₂O/ethanol liquid bipropellant rocket from scratch — running NASA CEA, isentropic flow equations, and Barrowman analysis to get it off the ground.
In Cluster 5 at UCLA under Professor Spearrin, I learned the fundamentals of aerospace engineering — then applied them in two weeks of hands-on manufacturing with a small team.
After COSMOS, I designed my own N₂O/ethanol liquid bipropellant rocket from scratch. The seven-year-old with the LEGO Saturn V is still in there — he just has better tools now.
Full rocket assembly - designed and modeled in OnShape.
I used Chemical Equilibrium Analysis (CEA) to compute combustion properties, then applied isentropic flow equations to determine nozzle geometry. These simplified models work well — but can't capture complex shock structures in overexpanded flow, which is why CFD is the next step.
# Chemical Equilibrium Analysis
# Oxidizer: N2O · Fuel: Ethanol (E85)
# Pc = 300 psi · MR = 3.2 · ε = 4.0
Isp (vac) = 235.5 s
C* = 1399 m/s
Tc = 2084 K
gamma = 1.21
throat area = 0.785 in²
# Derived from C* = p_c * A_t / m_dot
# At gives ~270 lbf thrust at Pc = 300 psi
from rocketcea.cea_obj_w_units import CEA_Obj
cea = CEA_Obj(
oxName='N2O',
fuelName='Ethanol',
pressure_units='bar',
temperature_units='K',
isp_units='sec',
cstar_units='m/s'
)
Pc = 20.7 # bar (~300 psi)
MR = 3.2 # mixture ratio
eps = 4.0 # expansion ratio
isp_vac = cea.get_Isp(Pc=Pc, MR=MR, eps=eps)
c_star = cea.get_Cstar(Pc=Pc, MR=MR)
Tc = cea.get_Tcomb(Pc=Pc, MR=MR)
print(f"Isp: {isp_vac:.1f} s")
print(f"C*: {c_star:.0f} m/s")
print(f"Tc: {Tc:.0f} K")
Using the Barrowman equations, I estimated the center of pressure from the rocket's geometry. The stability margin of 1.55 calibers confirms stable flight — the CP sits far enough behind the CG that aerodynamic forces will self-correct any perturbation in trajectory.
// Nose cone normal force coefficient
CN_n = 2
// Fin correction (4 trapezoidal fins)
CN_f = 4 * (1 + r/(s+r)) * (S_f / A_ref) / (1 + √(1 + (2*λ/c_m)²))
// Weighted center of pressure
X_cp = (CN_n * X_n + CN_f * X_f) / (CN_n + CN_f)
// Result
X_cp ≈ 66.2 in. from nose cone
SM = (X_cp - X_cg) / D = (66.2 - 55.9) / 4.0 = 1.55 cal ✓