99 F, Isp, OF, Pc_psi = 8000.0, 237.0, 1.65, 430.0
100 mdot = F / (Isp * 9.80665)
101 mdot_O, mdot_F = mdot * OF / (1 + OF), mdot / (1 + OF)
103 d_half_npt = 0.5 * IN
108 print(
"CalSTAR ethalox flight feed runs -- K0 from the as-built component list (operator, 2026-09-13)")
109 print(f
"design point: F {F:.0f} N, O/F {OF}, Pc {Pc_psi:.0f} psia"
110 f
" -> mdot_O {mdot_O:.3f}, mdot_F {mdot_F:.3f} kg/s")
115 lox =
Run(
"OXIDISER (reference: 1/2\" tube ID)", d_half_tube, mdot_O, 1140.0, 1.8e-4)
116 lox.entrance(d_half_npt)
117 lox.ball_valve_full_bore(d_half_npt, f_T=0.027)
118 lox.contraction(d_half_npt, d_half_tube)
119 lox.straight(d_half_tube, 4.0 * IN)
120 lox.expansion(d_half_tube, d_half_npt)
125 fu =
Run(
"FUEL (reference: 3/8\" tube ID)", d_38_tube, mdot_F, 789.0, 1.2e-3)
126 fu.entrance(d_half_npt)
127 fu.ball_valve_full_bore(d_half_npt, f_T=0.027)
128 fu.contraction(d_half_npt, d_38_tube)
129 fu.straight(d_38_tube, 36.0 * IN)
130 fu.expansion(d_38_tube, d_half_npt)
134 print(
"\n" +
"=" * 96)
135 print(
"PRESSURE BUDGET at a 600 psi tank")
137 for tag, run, K
in ((
"LOX", lox, K_O), (
"FUEL", fu, K_F)):
138 dp_line = K * 0.5 * run.rho * run.v_ref ** 2 / PSI
139 for frac
in (0.20, 0.25):
140 need = Pc_psi + dp_line + frac * Pc_psi
141 mark =
"OK" if need <= 600
else f
"SHORT {need-600:.0f} psi"
142 print(f
" {tag:4s} dP/Pc {frac:.2f}: {Pc_psi:.0f} Pc + {dp_line:5.1f} line"
143 f
" + {frac*Pc_psi:5.1f} inj = {need:5.1f} psi {mark}")
146 print(
"\n" +
"=" * 96)
147 print(
"IF THE FUEL RUN WERE 1/2\" TUBE INSTEAD (same layout, 3 ft straight)")
149 alt =
Run(
"FUEL alt (reference: 1/2\" tube ID)", d_half_tube, mdot_F, 789.0, 1.2e-3)
150 alt.entrance(d_half_npt)
151 alt.ball_valve_full_bore(d_half_npt, f_T=0.027)
152 alt.contraction(d_half_npt, d_half_tube)
153 alt.straight(d_half_tube, 36.0 * IN)
154 alt.expansion(d_half_tube, d_half_npt)
156 dp_alt = K_alt * 0.5 * alt.rho * alt.v_ref ** 2 / PSI
157 for frac
in (0.20, 0.25, 0.30):
158 need = Pc_psi + dp_alt + frac * Pc_psi
159 mark =
"OK" if need <= 600
else f
"SHORT {need-600:.0f} psi"
160 print(f
" FUEL dP/Pc {frac:.2f}: {Pc_psi:.0f} + {dp_alt:5.1f} + {frac*Pc_psi:5.1f}"
161 f
" = {need:5.1f} psi {mark}")