Turbojet Cycle (propulsion/gas-turbine-cycle/turbojet-cycle)
Use when the task is the ideal single-stream turbojet core cycle at a
flight Mach number: the inlet stagnation state, the compressor exit
state, the combustor fuel-to-air ratio, the turbine exit state from the
compressor-turbine work balance, the fully expanded nozzle state, and
the net specific thrust, TSFC and propulsive efficiency that close the
cycle. This leaf owns the compressor-turbine matching middle of the
core-engine cycle assessment, which no other leaf computes. It pairs
with the shaft-power cycle leaf (gas-turbine-cycle/gas-turbine-cycle)
and the lossy cycle leaf (gas-turbine-cycle/real-cycle-effects) for the
ideal-to-real follow-on, with gas-turbine-cycle/subsonic-inlet-recovery
for the ram recovery that sets the inlet stagnation state, and with
gas-turbine-cycle/combustor-design for the burner sizing side of the
fuel-to-air ratio.
Domain quick reference
- Stations: 0 freestream, 3 compressor exit, 4 combustor exit (turbine
inlet), 5 turbine exit, 9 nozzle exit. SI units throughout: K, kg fuel
per kg air, N per (kg/s), kg/(N s), m/s.
- Freestream stagnation temperature: Tt0 = t0 * (1 + (gamma - 1)/2 *
M^2). At mach 0.9 and 288.15 K this gives 334.8 K.
- Compressor exit temperature: T03 = Tt0 * pr^((gamma-1)/gamma). The
compression traverse raises 334.8 K to 764.7 K at pressure ratio 18.
- Fuel-to-air ratio: f = cp_c * (t04 - t03) / (eta_b * lhv), the
combustor energy balance at efficiency eta_b.
- Compressor-turbine work balance (the matching step): Tt5 = t04 -
(cp_c/cp_g) * (t03 - Tt0). The turbine work equals the compressor
work, so Tt5 falls when the compressor exit temperature rises at fixed
turbine inlet temperature.
- Nozzle total pressure ratio chain: pt5/p0 = (1 + (gamma-1)/2 * M^2)^
(gamma/(gamma-1)) * pr * (Tt5/Tt4)^(gamma/(gamma-1)), the ram factor
times the compressor ratio times the turbine expansion factor.
- Nozzle exit temperature: T9 = Tt5 * (p0/pt5)^((gamma-1)/gamma) for a
fully expanded nozzle to ambient pressure.
- Exit velocity: v9 = sqrt(2 * cp_g * (Tt5 - T9)), the thermal expansion
of the remaining enthalpy drop.
- Net specific thrust: F/mdot = v9 - v0 with v0 = M * sqrt(gamma * R *
t0). The flight velocity term is the ram drag, so the specific thrust
falls as the Mach number rises at fixed turbine inlet temperature.
- Turbojet TSFC: TSFC = f / (F/mdot) in kg/(N s); TSFC times the
specific thrust equals the fuel-to-air ratio.
- Propulsive efficiency: eta_p = 2 * v0 / (v0 + v9), always below 1 and
rising as v9 approaches v0.
- Module gas constants: gamma 1.4, cp_c 1005 J/(kg K), cp_g 1150 J/(kg
K), R 287 J/(kg K), lhv 43 MJ/kg, eta_b 0.99; keyword overrides
allowed. FAR 33 frames the engine context; the relations above are
standard engineering methodology, summary-only.
Workflow
- Fix the operating point: freestream static temperature t0, flight
Mach number mach, compressor pressure ratio pr and turbine inlet
temperature t04, all SI, the cycle_report input set.
- Freestream stagnation temperature traverse: freestream_stagnation_
temperature(t0, mach) returns Tt0 from the Mach number.
- Compression traverse: compressor_exit_temperature(t0, mach, pr)
returns the compressor exit temperature T03.
- Combustor energy balance: fuel_air_ratio(t03, t04) returns the
fuel-to-air ratio f from the turbine inlet temperature, the combustor
efficiency and the lower heating value.
- Compressor-turbine matching step: turbine_exit_temperature(t03, t04,
t0, mach) returns the turbine exit temperature Tt5 from the work
balance; this is the canonical compressor-turbine matching of the
core engine.
- Nozzle expansion: nozzle_exit_temperature(t0, mach, pr, t04) returns
the nozzle exit temperature T9 through the nozzle total pressure
ratio chain, then exit_velocity(t05, t9) returns the exit velocity v9
from the thermal drop Tt5 - T9.
- Thrust bookkeeping: net_specific_thrust(t0, mach, t05, t9) returns
the net specific thrust F/mdot, turbojet_tsfc(f, F/mdot) returns the
turbojet TSFC, and propulsive_efficiency(v0, v9) returns the
propulsive efficiency.
- Cycle report: cycle_report(t0, mach, pr, t04) returns the dict with
keys tt0, t03, fuel_air, t05, t9, v9, specific_thrust, tsfc and
propulsive_efficiency for the matching and trade study.
- Verify: run python3 scripts/test_turbojet_cycle.py; the contract
test asserts the worked-example anchors, the TSFC round-trip
identity, the ram-drag trend, the zero-Mach degenerate thermal
expansion identity and every ValueError guard.
Worked example
Sea level static day, t0 = 288.15 K, mach 0.9, pr 18, t04 = 1600 K.
Module outputs (contract test anchors in parentheses):
- Tt0 = 334.83 K (334.8 within 0.2 K).
- T03 = 764.67 K (764.7 within 0.5 K).
- f = 0.01972 (0.0197 within 1e-4), about 19.7 g fuel per kg air.
- Tt5 = 1224.36 K (1224.4 within 0.5 K) from the compressor-turbine
work balance.
- T9 = 602.93 K; v9 = 1195.53 m/s (1195.5 within 1 m/s).
- v0 = 306.24 m/s; F/mdot = 889.29 N/(kg/s) (889.3 within 1).
- TSFC = 2.218e-5 kg/(N s) (2.22e-5 within 1e-7), about 22.2 mg/(N s).
- Propulsive efficiency = 0.408 (0.408 within 0.002).
- Round trip: TSFC * F/mdot = 0.01972 = f exactly.
- The degenerate identity: at zero Mach the flight velocity vanishes and
the net specific thrust equals the nozzle exit velocity, the thermal
expansion of the added heat.
Verification
- Confirm freestream_stagnation_temperature(288.15, 0.9) returns 334.83
K and compressor_exit_temperature(288.15, 0.9, 18.0) returns 764.67 K.
- Confirm fuel_air_ratio(764.67, 1600.0) returns 0.01972 and
turbine_exit_temperature(764.67, 1600.0, 288.15, 0.9) returns 1224.36 K.
- Confirm exit_velocity then net_specific_thrust reproduce v9 = 1195.53
m/s and F/mdot = 889.29 N/(kg/s); the TSFC round trip TSFC * F/mdot
equals f.
- Confirm the net specific thrust decreases as the Mach number rises at
fixed t04 (ram drag) and the propulsive efficiency stays below 1.
- Degenerate identity: the spec states it at zero Mach with a unity
pressure ratio, but the model rejects pressure ratio 1 (no compression
means no expandable pressure ratio, a ValueError guard in the
validation list), so the identity is exercised at zero Mach with
pressure ratio 18, where v0 = 0 and the net specific thrust equals the
nozzle thermal expansion velocity, and in the near-unity limit at
pressure ratio 1.001 where the cycle stays defined.
- Confirm every non-positive temperature or LHV, mach below 0, pressure
ratio at or below 1, turbine inlet temperature at or below the
compressor exit temperature, combustor efficiency outside (0, 1] and
every non-finite input raises ValueError.
- Run the contract test offline: python3 scripts/test_turbojet_cycle.py
(34 tests, deterministic, exits 0).
Related leaves
- propulsion/gas-turbine-cycle/gas-turbine-cycle: the shaft-power
Brayton cycle leaf upstream of the propulsive stream.
- propulsion/gas-turbine-cycle/real-cycle-effects: component
efficiencies and pressure loss that turn this ideal cycle real.
- propulsion/gas-turbine-cycle/subsonic-inlet-recovery: the ram recovery
that sets the inlet stagnation state at flight Mach.
- propulsion/gas-turbine-cycle/combustor-design: burner geometry and
efficiency on the fuel-to-air ratio computed in step 4.
Pitfalls
- Treating the ideal cycle as the real engine: this leaf assumes
isentropic machines and no pressure loss; real-cycle-effects adds the
component efficiencies that lower Tt5 and raise the TSFC.
- Balancing the shaft power on the wrong specific heats: the work
balance Tt5 = t04 - (cp_c/cp_g) * (t03 - Tt0) mixes the cold-side
compressor work (cp_c = 1005) with the hot-side turbine (cp_g =
1150); using one cp for both shifts Tt5 by tens of kelvin.
- Forgetting the ram drag: F/mdot is v9 minus v0, not v9; at mach 0.9
the 306 m/s flight velocity is a third of the exit velocity, so a
gross-thrust number overstates the net specific thrust.
- Reading the degenerate identity at pressure ratio 1: the model
rejects pressure ratio 1 by design, and the check runs at zero Mach
where the ram term vanishes, not at a unity compression ratio.
- Quoting TSFC without the round trip: TSFC * F/mdot must equal the
fuel-to-air ratio; if the product drifts from f, the fuel or thrust
leg is inconsistent.
- Expanding states that cannot reach ambient: the nozzle model requires
pt5/p0 above 1; states that do not expand to ambient raise ValueError
instead of returning an imaginary exit velocity.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_turbojet_cycle.py
The test covers the worked-example anchors (Tt0 334.8 K, T03 764.7 K,
f 0.0197, Tt5 1224.4 K, v9 1195.5 m/s, F/mdot 889.3 N/(kg/s), TSFC
2.22e-5 kg/(N s), propulsive efficiency 0.408), the closed forms of
every traverse, the compressor-turbine work balance trend, the TSFC
round-trip identity, the ram-drag trend, the zero-Mach degenerate
thermal expansion identity, the exact cycle report keys, determinism,
and ValueError rejection of pressure ratio at or below 1, turbine inlet
temperature at or below the compressor exit temperature, negative Mach,
non-positive temperatures and LHV, out-of-range combustor efficiency,
non-finite inputs and nozzle states that do not expand.
Compliance
- Standards referenced, not reproduced: 14 CFR Part 33 (FAR 33) frames
the engine type-certification context (ecfr.gov); the ideal cycle
relations above are standard engineering methodology, summary-only per
standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: turbojet-cycle3description: Use when you must analyze an ideal single-stream turbojet core cycle at flight conditions: compute the freestream stagnation temperature from the flight Mach number, the compressor exit temperature from the pressure ratio, the fuel-to-air ratio from the turbine inlet temperature and the combustor efficiency, the turbine exit temperature from the compressor-turbine work balance, the nozzle exit temperature and exit velocity, the net specific thrust as the exit velocity minus the flight velocity, the turbojet TSFC and the propulsive efficiency. Produces the station temperatures, the specific thrust and the TSFC that gate core-engine matching and cycle-trade studies. Trigger: turbojet core cycle, ideal turbojet, compressor-turbine matching, turbine inlet temperature, net specific thrust, turbojet TSFC, core-engine matching, cycle trade study.4license: Apache-2.05---67# Turbojet Cycle (propulsion/gas-turbine-cycle/turbojet-cycle)89Use when the task is the ideal single-stream turbojet core cycle at a10flight Mach number: the inlet stagnation state, the compressor exit11state, the combustor fuel-to-air ratio, the turbine exit state from the12compressor-turbine work balance, the fully expanded nozzle state, and13the net specific thrust, TSFC and propulsive efficiency that close the14cycle. This leaf owns the compressor-turbine matching middle of the15core-engine cycle assessment, which no other leaf computes. It pairs16with the shaft-power cycle leaf (gas-turbine-cycle/gas-turbine-cycle)17and the lossy cycle leaf (gas-turbine-cycle/real-cycle-effects) for the18ideal-to-real follow-on, with gas-turbine-cycle/subsonic-inlet-recovery19for the ram recovery that sets the inlet stagnation state, and with20gas-turbine-cycle/combustor-design for the burner sizing side of the21fuel-to-air ratio.2223## Domain quick reference2425- Stations: 0 freestream, 3 compressor exit, 4 combustor exit (turbine26 inlet), 5 turbine exit, 9 nozzle exit. SI units throughout: K, kg fuel27 per kg air, N per (kg/s), kg/(N s), m/s.28- Freestream stagnation temperature: Tt0 = t0 * (1 + (gamma - 1)/2 *29 M^2). At mach 0.9 and 288.15 K this gives 334.8 K.30- Compressor exit temperature: T03 = Tt0 * pr^((gamma-1)/gamma). The31 compression traverse raises 334.8 K to 764.7 K at pressure ratio 18.32- Fuel-to-air ratio: f = cp_c * (t04 - t03) / (eta_b * lhv), the33 combustor energy balance at efficiency eta_b.34- Compressor-turbine work balance (the matching step): Tt5 = t04 -35 (cp_c/cp_g) * (t03 - Tt0). The turbine work equals the compressor36 work, so Tt5 falls when the compressor exit temperature rises at fixed37 turbine inlet temperature.38- Nozzle total pressure ratio chain: pt5/p0 = (1 + (gamma-1)/2 * M^2)^39 (gamma/(gamma-1)) * pr * (Tt5/Tt4)^(gamma/(gamma-1)), the ram factor40 times the compressor ratio times the turbine expansion factor.41- Nozzle exit temperature: T9 = Tt5 * (p0/pt5)^((gamma-1)/gamma) for a42 fully expanded nozzle to ambient pressure.43- Exit velocity: v9 = sqrt(2 * cp_g * (Tt5 - T9)), the thermal expansion44 of the remaining enthalpy drop.45- Net specific thrust: F/mdot = v9 - v0 with v0 = M * sqrt(gamma * R *46 t0). The flight velocity term is the ram drag, so the specific thrust47 falls as the Mach number rises at fixed turbine inlet temperature.48- Turbojet TSFC: TSFC = f / (F/mdot) in kg/(N s); TSFC times the49 specific thrust equals the fuel-to-air ratio.50- Propulsive efficiency: eta_p = 2 * v0 / (v0 + v9), always below 1 and51 rising as v9 approaches v0.52- Module gas constants: gamma 1.4, cp_c 1005 J/(kg K), cp_g 1150 J/(kg53 K), R 287 J/(kg K), lhv 43 MJ/kg, eta_b 0.99; keyword overrides54 allowed. FAR 33 frames the engine context; the relations above are55 standard engineering methodology, summary-only.5657## Workflow58591. Fix the operating point: freestream static temperature t0, flight60 Mach number mach, compressor pressure ratio pr and turbine inlet61 temperature t04, all SI, the cycle_report input set.622. Freestream stagnation temperature traverse: freestream_stagnation_63 temperature(t0, mach) returns Tt0 from the Mach number.643. Compression traverse: compressor_exit_temperature(t0, mach, pr)65 returns the compressor exit temperature T03.664. Combustor energy balance: fuel_air_ratio(t03, t04) returns the67 fuel-to-air ratio f from the turbine inlet temperature, the combustor68 efficiency and the lower heating value.695. Compressor-turbine matching step: turbine_exit_temperature(t03, t04,70 t0, mach) returns the turbine exit temperature Tt5 from the work71 balance; this is the canonical compressor-turbine matching of the72 core engine.736. Nozzle expansion: nozzle_exit_temperature(t0, mach, pr, t04) returns74 the nozzle exit temperature T9 through the nozzle total pressure75 ratio chain, then exit_velocity(t05, t9) returns the exit velocity v976 from the thermal drop Tt5 - T9.777. Thrust bookkeeping: net_specific_thrust(t0, mach, t05, t9) returns78 the net specific thrust F/mdot, turbojet_tsfc(f, F/mdot) returns the79 turbojet TSFC, and propulsive_efficiency(v0, v9) returns the80 propulsive efficiency.818. Cycle report: cycle_report(t0, mach, pr, t04) returns the dict with82 keys tt0, t03, fuel_air, t05, t9, v9, specific_thrust, tsfc and83 propulsive_efficiency for the matching and trade study.849. Verify: run python3 scripts/test_turbojet_cycle.py; the contract85 test asserts the worked-example anchors, the TSFC round-trip86 identity, the ram-drag trend, the zero-Mach degenerate thermal87 expansion identity and every ValueError guard.8889## Worked example9091Sea level static day, t0 = 288.15 K, mach 0.9, pr 18, t04 = 1600 K.92Module outputs (contract test anchors in parentheses):9394- Tt0 = 334.83 K (334.8 within 0.2 K).95- T03 = 764.67 K (764.7 within 0.5 K).96- f = 0.01972 (0.0197 within 1e-4), about 19.7 g fuel per kg air.97- Tt5 = 1224.36 K (1224.4 within 0.5 K) from the compressor-turbine98 work balance.99- T9 = 602.93 K; v9 = 1195.53 m/s (1195.5 within 1 m/s).100- v0 = 306.24 m/s; F/mdot = 889.29 N/(kg/s) (889.3 within 1).101- TSFC = 2.218e-5 kg/(N s) (2.22e-5 within 1e-7), about 22.2 mg/(N s).102- Propulsive efficiency = 0.408 (0.408 within 0.002).103- Round trip: TSFC * F/mdot = 0.01972 = f exactly.104- The degenerate identity: at zero Mach the flight velocity vanishes and105 the net specific thrust equals the nozzle exit velocity, the thermal106 expansion of the added heat.107108## Verification109110- Confirm freestream_stagnation_temperature(288.15, 0.9) returns 334.83111 K and compressor_exit_temperature(288.15, 0.9, 18.0) returns 764.67 K.112- Confirm fuel_air_ratio(764.67, 1600.0) returns 0.01972 and113 turbine_exit_temperature(764.67, 1600.0, 288.15, 0.9) returns 1224.36 K.114- Confirm exit_velocity then net_specific_thrust reproduce v9 = 1195.53115 m/s and F/mdot = 889.29 N/(kg/s); the TSFC round trip TSFC * F/mdot116 equals f.117- Confirm the net specific thrust decreases as the Mach number rises at118 fixed t04 (ram drag) and the propulsive efficiency stays below 1.119- Degenerate identity: the spec states it at zero Mach with a unity120 pressure ratio, but the model rejects pressure ratio 1 (no compression121 means no expandable pressure ratio, a ValueError guard in the122 validation list), so the identity is exercised at zero Mach with123 pressure ratio 18, where v0 = 0 and the net specific thrust equals the124 nozzle thermal expansion velocity, and in the near-unity limit at125 pressure ratio 1.001 where the cycle stays defined.126- Confirm every non-positive temperature or LHV, mach below 0, pressure127 ratio at or below 1, turbine inlet temperature at or below the128 compressor exit temperature, combustor efficiency outside (0, 1] and129 every non-finite input raises ValueError.130- Run the contract test offline: python3 scripts/test_turbojet_cycle.py131 (34 tests, deterministic, exits 0).132133## Related leaves134135- propulsion/gas-turbine-cycle/gas-turbine-cycle: the shaft-power136 Brayton cycle leaf upstream of the propulsive stream.137- propulsion/gas-turbine-cycle/real-cycle-effects: component138 efficiencies and pressure loss that turn this ideal cycle real.139- propulsion/gas-turbine-cycle/subsonic-inlet-recovery: the ram recovery140 that sets the inlet stagnation state at flight Mach.141- propulsion/gas-turbine-cycle/combustor-design: burner geometry and142 efficiency on the fuel-to-air ratio computed in step 4.143144## Pitfalls145146- Treating the ideal cycle as the real engine: this leaf assumes147 isentropic machines and no pressure loss; real-cycle-effects adds the148 component efficiencies that lower Tt5 and raise the TSFC.149- Balancing the shaft power on the wrong specific heats: the work150 balance Tt5 = t04 - (cp_c/cp_g) * (t03 - Tt0) mixes the cold-side151 compressor work (cp_c = 1005) with the hot-side turbine (cp_g =152 1150); using one cp for both shifts Tt5 by tens of kelvin.153- Forgetting the ram drag: F/mdot is v9 minus v0, not v9; at mach 0.9154 the 306 m/s flight velocity is a third of the exit velocity, so a155 gross-thrust number overstates the net specific thrust.156- Reading the degenerate identity at pressure ratio 1: the model157 rejects pressure ratio 1 by design, and the check runs at zero Mach158 where the ram term vanishes, not at a unity compression ratio.159- Quoting TSFC without the round trip: TSFC * F/mdot must equal the160 fuel-to-air ratio; if the product drifts from f, the fuel or thrust161 leg is inconsistent.162- Expanding states that cannot reach ambient: the nozzle model requires163 pt5/p0 above 1; states that do not expand to ambient raise ValueError164 instead of returning an imaginary exit velocity.165166## Behavior contract (gate 3)167168Run the deterministic contract test (stdlib unittest, offline):169170 python3 scripts/test_turbojet_cycle.py171172The test covers the worked-example anchors (Tt0 334.8 K, T03 764.7 K,173f 0.0197, Tt5 1224.4 K, v9 1195.5 m/s, F/mdot 889.3 N/(kg/s), TSFC1742.22e-5 kg/(N s), propulsive efficiency 0.408), the closed forms of175every traverse, the compressor-turbine work balance trend, the TSFC176round-trip identity, the ram-drag trend, the zero-Mach degenerate177thermal expansion identity, the exact cycle report keys, determinism,178and ValueError rejection of pressure ratio at or below 1, turbine inlet179temperature at or below the compressor exit temperature, negative Mach,180non-positive temperatures and LHV, out-of-range combustor efficiency,181non-finite inputs and nozzle states that do not expand.182183## Compliance184185- Standards referenced, not reproduced: 14 CFR Part 33 (FAR 33) frames186 the engine type-certification context (ecfr.gov); the ideal cycle187 relations above are standard engineering methodology, summary-only per188 standards-map.yaml.189- compliance: STANDARDS-REF, gated: false.