Afterburner (Reheat) Cycle (propulsion/gas-turbine-cycle/afterburner-cycle)
Use when the task is the afterburning (reheat) topping block of a gas
turbine: reheat fuel is burned in the duct between the turbine exit and
the nozzle to raise the gas temperature, which lifts the nozzle exit
velocity and thrust at the cost of specific fuel consumption. This leaf
implements the standard model in pure Python, stdlib only: the reheat
fuel-air ratio from the duct energy balance, the reheat fuel flow, the
dry and reheat nozzle exit velocities from a fully expanded ideal
isentropic nozzle, the dry and reheat gross thrust, the thrust
augmentation ratio, and the specific fuel consumption with and without
reheat. It pairs with the gas-turbine-cycle and real-cycle-effects
leaves, which supply the core upstream (the turbine exit state t04, p04
comes from the core analysis), and with combustor-design for the main
combustor context. The fully expanded ideal nozzle is a documented
simplification: real nozzles add a thrust coefficient below one.
Domain quick reference
- Reheat fuel-air ratio from the duct energy balance:
f_ab = (1 + f_core) * CP * (t05 - t04) / (ETA_AB * LHV). The heat to
raise the turbine exit products (air plus core fuel, 1 + f_core kg per
kg of air) from t04 to t05 is divided by the useful heat released per
kg of reheat fuel, ETA_AB * LHV.
- Reheat fuel flow: mdot_f_ab = f_ab * mdot_core.
- Nozzle static temperature after isentropic expansion:
Te = Tt * (p_amb / p_total)^((GAMMA - 1) / GAMMA), GAMMA = 1.33.
- Fully expanded ideal nozzle exit velocity: v = sqrt(2 * CP *
(Tt - Te)), CP = 1150 J/(kg K). Fully expanded means the exit pressure
equals ambient, so the pressure thrust term is zero and the CP form
carries the velocity; R = 287 J/(kg K) is documented but not used.
- Dry gross thrust: F_dry = mdot_core * (1 + f_core) * v_dry, with the
nozzle entry at the turbine exit temperature t04.
- Reheat gross thrust: F_reheat = mdot_core * (1 + f_core + f_ab) *
v_reheat, with the nozzle entry at the afterburner exit temperature
t05.
- Thrust augmentation ratio: F_reheat / F_dry, about 1.4 for a typical
augmented turbofan at full reheat.
- Specific fuel consumption: sfc = mdot_fuel / F in kg/(N s); multiply
by 1e6 for mg/(N s).
- Module constants: CP = 1150.0 J/(kg K), LHV = 43.0e6 J/kg kerosene,
ETA_AB = 0.97, GAMMA = 1.33, R = 287.0 J/(kg K). Units are SI
throughout: K, Pa, kg/s, m/s, N, kg/(N s).
- FAR-33 frames the engine certification context; the relations above
are standard engineering methodology, summary-only.
Workflow
- Fix the operating point: the turbine exit total temperature t04_k and
total pressure p04_pa (take them from the gas-turbine-cycle or
real-cycle-effects core analysis), the core fuel-air ratio f_core,
the core air mass flow mdot_core_kg_s, the chosen afterburner exit
total temperature t05_k, and the ambient pressure p_amb_pa.
- Compute the reheat fuel-air ratio with afterburner_far; the function
rejects t05 <= t04 because an afterburner must add temperature.
- Convert it to a reheat fuel flow with afterburner_fuel_flow.
- Get the dry and reheat nozzle exit velocities with
nozzle_exit_velocity, evaluated at t04 and at t05 with the same
pressure ratio; the function requires p_total > p_amb for the fully
expanded model.
- Compute the dry gross thrust with thrust_dry and the reheat gross
thrust with thrust_reheat (pass the f_ab from step 2).
- Form the thrust augmentation ratio with augmentation_ratio.
- Compute the specific fuel consumption with sfc for each mode: the
core fuel flow f_core * mdot_core over the dry thrust, and the total
fuel flow (f_core + f_ab) * mdot_core over the reheat thrust.
- Run the whole operating point with analyze for the complete summary
dict with all nine SI values.
- Confirm the deterministic checks with the contract test
scripts/test_afterburner_cycle.py.
Worked example
Augmented turbofan at full reheat: turbine exit 900 K, f_core 0.02,
core flow 100 kg/s, afterburner exit 1700 K (an 800 K reheat
temperature rise), p04 3.0e5 Pa, ambient 1.01325e5 Pa.
- f_ab = 1.02 * 1150 * 800 / (0.97 * 43e6) = 0.022498.
- mdot_f_ab = 0.022498 * 100 = 2.2498 kg/s.
- Dry nozzle: Te = 900 * (1.01325 / 3)^(0.33 / 1.33) = 687.6 K;
v_dry = sqrt(2 * 1150 * (900 - 687.6)) = 699.1 m/s.
- Reheat nozzle: Te = 1298.7 K; v_reheat = 960.8 m/s.
- F_dry = 102 * 699.1 = 71,308 N (spec anchor 71,307 N, within 50 N).
- F_reheat = 104.2498 * 960.8 = 100,165 N (spec anchor 100,162 N,
within 50 N).
- Augmentation ratio = 100,165 / 71,308 = 1.405.
- sfc_dry = 2.0 / 71,308 = 2.805e-5 kg/(N s) = 28.05 mg/(N s);
sfc_reheat = 4.2498 / 100,165 = 4.243e-5 kg/(N s) = 42.43 mg/(N s),
spec anchor 42.42 mg/(N s) within 2%. Reheat adds about 40% thrust
but roughly doubles the specific fuel consumption, which is why
military augmented engines use reheat only for dash and takeoff.
Verification
- Confirm afterburner_far(900, 1700, 0.02) returns 0.022498 within
1e-6, and that afterburner_fuel_flow gives 2.2498 kg/s within 1e-3.
- Confirm nozzle_exit_velocity returns 699.1 m/s at 900 K and 960.8 m/s
at 1700 K, each within 1.0 m/s.
- Confirm thrust_dry returns 71,308 N within 50 N of the 71,307 N anchor
and thrust_reheat returns 100,165 N within 50 N of the 100,162 N
anchor.
- Confirm augmentation_ratio 1.405 within 0.005 and the identity
F_reheat / F_dry from analyze equals the standalone ratio.
- Confirm sfc values are within 2% of the 28.05 and 42.42 mg/(N s)
anchors, and that reheat SFC exceeds dry SFC.
- Confirm every invalid input raises ValueError: t05 <= t04, t04 <= 0,
f_core < 0, non-positive mass flow, p04 <= p_amb, p_amb <= 0, zero
fuel flow or negative fuel flow in sfc, non-positive dry thrust in
augmentation_ratio.
- Run the contract test offline: python3
scripts/test_afterburner_cycle.py (35 tests, deterministic).
Related leaves
- propulsion/gas-turbine-cycle/gas-turbine-cycle: the ideal Brayton core
upstream of the reheat duct; supplies t04 for the dry nozzle.
- propulsion/gas-turbine-cycle/real-cycle-effects: the non-ideal core
with component efficiencies, the realistic source of t04 and p04.
- propulsion/gas-turbine-cycle/regenerative-cycle: the recuperated cycle
alternative, which trades exhaust heat instead of burning reheat fuel.
- propulsion/gas-turbine-cycle/combustor-design: the main combustor
fuel-air chemistry, distinct from the reheat duct topping block.
- propulsion/ramjet/ramjet-cycle: the continuous supersonic combustion
cycle, the alternative high-speed propulsion path.
- propulsion/turbofan/turbofan-cycle: the turbofan core context of the
augmented military engine.
Pitfalls
- Feeding an afterburner exit temperature at or below the turbine exit:
t05 must exceed t04 or the duct energy balance is unphysical - the
function rejects t05 <= t04 with ValueError, so the 800 K reheat rise
in the worked example is the intended input shape.
- Ignoring the core fuel in the duct mass balance: the energy balance
heats (1 + f_core) kg of gas per kg of air, and the reheat thrust
carries (1 + f_core + f_ab) mdot_core, so dropping f_core (0.02 in
the example) shifts both the fuel-air ratio and the thrust.
- Using the ideal-nozzle velocity for a real nozzle: the fully expanded
ideal isentropic nozzle is a documented simplification with no
pressure thrust term; real nozzles add a thrust coefficient below
one, so the model overstates v and F.
- Evaluating the nozzle below the choked condition: nozzle_exit_velocity
requires p_total > p_amb for the fully expanded model; feeding an
unchoked or inverted pressure ratio raises ValueError rather than
returning a partial-expansion velocity.
- Selling reheat as an efficiency measure: the worked example adds about
40% thrust (augmentation 1.405) but roughly doubles the specific fuel
consumption (28.05 to 42.43 mg/(N s)) - the augmentation ratio alone
hides the SFC cost.
- Reading the wrong SFC mode: sfc_dry divides only the core fuel flow
f_core * mdot_core by the dry thrust while sfc_reheat divides the
total fuel flow (f_core + f_ab) * mdot_core by the reheat thrust;
swapping the denominators inverts the comparison.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_afterburner_cycle.py
The test covers the worked-example anchors (reheat fuel-air ratio,
reheat fuel flow, dry and reheat nozzle exit velocities, dry and reheat
gross thrust, augmentation ratio, both SFC values), scaling trends with
temperature rise, mass flow and pressure ratio, the augmentation
identity at equal thrusts, the v = F / mdot_gas round trip inside
analyze, and ValueError rejection of every non-physical input in the
validation list.
Compliance
- Standards referenced, not reproduced: FAR-33 (Airworthiness Standards:
Aircraft Engines) frames the engine certification context of the
afterburner cycle assessment; the relations above are standard
engineering methodology, summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: afterburner-cycle3description: Use when you must analyze an afterburning gas turbine cycle with reheat: compute the afterburner fuel-air ratio from the duct energy balance across the turbine exit and the afterburner exit total temperatures with a combustion efficiency, the reheat fuel flow for the core mass flow, the dry and reheat nozzle exit velocities from a fully expanded ideal isentropic nozzle, the dry and reheat gross thrust, the thrust augmentation ratio, and the specific fuel consumption with and without reheat. Produces the reheat fuel flow, augmentation ratio, and dry versus reheat SFC values that gate an afterburner cycle assessment in the FAR-33 engine context. Trigger: afterburner cycle, reheat fuel air ratio, thrust augmentation ratio, reheat temperature rise, dry versus reheat thrust, reheat specific fuel consumption, afterburner nozzle exit velocity.4license: Apache-2.05---67# Afterburner (Reheat) Cycle (propulsion/gas-turbine-cycle/afterburner-cycle)89Use when the task is the afterburning (reheat) topping block of a gas10turbine: reheat fuel is burned in the duct between the turbine exit and11the nozzle to raise the gas temperature, which lifts the nozzle exit12velocity and thrust at the cost of specific fuel consumption. This leaf13implements the standard model in pure Python, stdlib only: the reheat14fuel-air ratio from the duct energy balance, the reheat fuel flow, the15dry and reheat nozzle exit velocities from a fully expanded ideal16isentropic nozzle, the dry and reheat gross thrust, the thrust17augmentation ratio, and the specific fuel consumption with and without18reheat. It pairs with the gas-turbine-cycle and real-cycle-effects19leaves, which supply the core upstream (the turbine exit state t04, p0420comes from the core analysis), and with combustor-design for the main21combustor context. The fully expanded ideal nozzle is a documented22simplification: real nozzles add a thrust coefficient below one.2324## Domain quick reference2526- Reheat fuel-air ratio from the duct energy balance:27 f_ab = (1 + f_core) * CP * (t05 - t04) / (ETA_AB * LHV). The heat to28 raise the turbine exit products (air plus core fuel, 1 + f_core kg per29 kg of air) from t04 to t05 is divided by the useful heat released per30 kg of reheat fuel, ETA_AB * LHV.31- Reheat fuel flow: mdot_f_ab = f_ab * mdot_core.32- Nozzle static temperature after isentropic expansion:33 Te = Tt * (p_amb / p_total)^((GAMMA - 1) / GAMMA), GAMMA = 1.33.34- Fully expanded ideal nozzle exit velocity: v = sqrt(2 * CP *35 (Tt - Te)), CP = 1150 J/(kg K). Fully expanded means the exit pressure36 equals ambient, so the pressure thrust term is zero and the CP form37 carries the velocity; R = 287 J/(kg K) is documented but not used.38- Dry gross thrust: F_dry = mdot_core * (1 + f_core) * v_dry, with the39 nozzle entry at the turbine exit temperature t04.40- Reheat gross thrust: F_reheat = mdot_core * (1 + f_core + f_ab) *41 v_reheat, with the nozzle entry at the afterburner exit temperature42 t05.43- Thrust augmentation ratio: F_reheat / F_dry, about 1.4 for a typical44 augmented turbofan at full reheat.45- Specific fuel consumption: sfc = mdot_fuel / F in kg/(N s); multiply46 by 1e6 for mg/(N s).47- Module constants: CP = 1150.0 J/(kg K), LHV = 43.0e6 J/kg kerosene,48 ETA_AB = 0.97, GAMMA = 1.33, R = 287.0 J/(kg K). Units are SI49 throughout: K, Pa, kg/s, m/s, N, kg/(N s).50- FAR-33 frames the engine certification context; the relations above51 are standard engineering methodology, summary-only.5253## Workflow54551. Fix the operating point: the turbine exit total temperature t04_k and56 total pressure p04_pa (take them from the gas-turbine-cycle or57 real-cycle-effects core analysis), the core fuel-air ratio f_core,58 the core air mass flow mdot_core_kg_s, the chosen afterburner exit59 total temperature t05_k, and the ambient pressure p_amb_pa.602. Compute the reheat fuel-air ratio with afterburner_far; the function61 rejects t05 <= t04 because an afterburner must add temperature.623. Convert it to a reheat fuel flow with afterburner_fuel_flow.634. Get the dry and reheat nozzle exit velocities with64 nozzle_exit_velocity, evaluated at t04 and at t05 with the same65 pressure ratio; the function requires p_total > p_amb for the fully66 expanded model.675. Compute the dry gross thrust with thrust_dry and the reheat gross68 thrust with thrust_reheat (pass the f_ab from step 2).696. Form the thrust augmentation ratio with augmentation_ratio.707. Compute the specific fuel consumption with sfc for each mode: the71 core fuel flow f_core * mdot_core over the dry thrust, and the total72 fuel flow (f_core + f_ab) * mdot_core over the reheat thrust.738. Run the whole operating point with analyze for the complete summary74 dict with all nine SI values.759. Confirm the deterministic checks with the contract test76 scripts/test_afterburner_cycle.py.7778## Worked example7980Augmented turbofan at full reheat: turbine exit 900 K, f_core 0.02,81core flow 100 kg/s, afterburner exit 1700 K (an 800 K reheat82temperature rise), p04 3.0e5 Pa, ambient 1.01325e5 Pa.8384- f_ab = 1.02 * 1150 * 800 / (0.97 * 43e6) = 0.022498.85- mdot_f_ab = 0.022498 * 100 = 2.2498 kg/s.86- Dry nozzle: Te = 900 * (1.01325 / 3)^(0.33 / 1.33) = 687.6 K;87 v_dry = sqrt(2 * 1150 * (900 - 687.6)) = 699.1 m/s.88- Reheat nozzle: Te = 1298.7 K; v_reheat = 960.8 m/s.89- F_dry = 102 * 699.1 = 71,308 N (spec anchor 71,307 N, within 50 N).90- F_reheat = 104.2498 * 960.8 = 100,165 N (spec anchor 100,162 N,91 within 50 N).92- Augmentation ratio = 100,165 / 71,308 = 1.405.93- sfc_dry = 2.0 / 71,308 = 2.805e-5 kg/(N s) = 28.05 mg/(N s);94 sfc_reheat = 4.2498 / 100,165 = 4.243e-5 kg/(N s) = 42.43 mg/(N s),95 spec anchor 42.42 mg/(N s) within 2%. Reheat adds about 40% thrust96 but roughly doubles the specific fuel consumption, which is why97 military augmented engines use reheat only for dash and takeoff.9899## Verification100101- Confirm afterburner_far(900, 1700, 0.02) returns 0.022498 within102 1e-6, and that afterburner_fuel_flow gives 2.2498 kg/s within 1e-3.103- Confirm nozzle_exit_velocity returns 699.1 m/s at 900 K and 960.8 m/s104 at 1700 K, each within 1.0 m/s.105- Confirm thrust_dry returns 71,308 N within 50 N of the 71,307 N anchor106 and thrust_reheat returns 100,165 N within 50 N of the 100,162 N107 anchor.108- Confirm augmentation_ratio 1.405 within 0.005 and the identity109 F_reheat / F_dry from analyze equals the standalone ratio.110- Confirm sfc values are within 2% of the 28.05 and 42.42 mg/(N s)111 anchors, and that reheat SFC exceeds dry SFC.112- Confirm every invalid input raises ValueError: t05 <= t04, t04 <= 0,113 f_core < 0, non-positive mass flow, p04 <= p_amb, p_amb <= 0, zero114 fuel flow or negative fuel flow in sfc, non-positive dry thrust in115 augmentation_ratio.116- Run the contract test offline: python3117 scripts/test_afterburner_cycle.py (35 tests, deterministic).118119## Related leaves120121- propulsion/gas-turbine-cycle/gas-turbine-cycle: the ideal Brayton core122 upstream of the reheat duct; supplies t04 for the dry nozzle.123- propulsion/gas-turbine-cycle/real-cycle-effects: the non-ideal core124 with component efficiencies, the realistic source of t04 and p04.125- propulsion/gas-turbine-cycle/regenerative-cycle: the recuperated cycle126 alternative, which trades exhaust heat instead of burning reheat fuel.127- propulsion/gas-turbine-cycle/combustor-design: the main combustor128 fuel-air chemistry, distinct from the reheat duct topping block.129- propulsion/ramjet/ramjet-cycle: the continuous supersonic combustion130 cycle, the alternative high-speed propulsion path.131- propulsion/turbofan/turbofan-cycle: the turbofan core context of the132 augmented military engine.133134## Pitfalls135136- Feeding an afterburner exit temperature at or below the turbine exit:137 t05 must exceed t04 or the duct energy balance is unphysical - the138 function rejects t05 <= t04 with ValueError, so the 800 K reheat rise139 in the worked example is the intended input shape.140- Ignoring the core fuel in the duct mass balance: the energy balance141 heats (1 + f_core) kg of gas per kg of air, and the reheat thrust142 carries (1 + f_core + f_ab) mdot_core, so dropping f_core (0.02 in143 the example) shifts both the fuel-air ratio and the thrust.144- Using the ideal-nozzle velocity for a real nozzle: the fully expanded145 ideal isentropic nozzle is a documented simplification with no146 pressure thrust term; real nozzles add a thrust coefficient below147 one, so the model overstates v and F.148- Evaluating the nozzle below the choked condition: nozzle_exit_velocity149 requires p_total > p_amb for the fully expanded model; feeding an150 unchoked or inverted pressure ratio raises ValueError rather than151 returning a partial-expansion velocity.152- Selling reheat as an efficiency measure: the worked example adds about153 40% thrust (augmentation 1.405) but roughly doubles the specific fuel154 consumption (28.05 to 42.43 mg/(N s)) - the augmentation ratio alone155 hides the SFC cost.156- Reading the wrong SFC mode: sfc_dry divides only the core fuel flow157 f_core * mdot_core by the dry thrust while sfc_reheat divides the158 total fuel flow (f_core + f_ab) * mdot_core by the reheat thrust;159 swapping the denominators inverts the comparison.160161## Behavior contract (gate 3)162163Run the deterministic contract test (stdlib unittest, offline):164165 python3 scripts/test_afterburner_cycle.py166167The test covers the worked-example anchors (reheat fuel-air ratio,168reheat fuel flow, dry and reheat nozzle exit velocities, dry and reheat169gross thrust, augmentation ratio, both SFC values), scaling trends with170temperature rise, mass flow and pressure ratio, the augmentation171identity at equal thrusts, the v = F / mdot_gas round trip inside172analyze, and ValueError rejection of every non-physical input in the173validation list.174175## Compliance176177- Standards referenced, not reproduced: FAR-33 (Airworthiness Standards:178 Aircraft Engines) frames the engine certification context of the179 afterburner cycle assessment; the relations above are standard180 engineering methodology, summary-only per standards-map.yaml.181- compliance: STANDARDS-REF, gated: false.