Turbine Blade Cooling (propulsion/axial-compressor/turbine-blade-cooling)
Use when the task is the heat-transfer side of a turbine blade row
design: how much cooling flow the hot section must bleed from the
compressor to hold the blade metal below its allowable temperature.
This leaf implements the standard cooling-effectiveness model in pure
Python, stdlib only. The baseline model is internal convection; an
optional film cooling term adds a fixed effectiveness gain at the
leading edge. It pairs with propulsion/axial-compressor/turbine-stage
for the aerodynamic design of the same blade row and with the
gas-turbine-cycle leaves for the cycle cost of the bleed flow.
Domain quick reference
- Cooling effectiveness: phi = (T_gas - T_metal_allow) / (T_gas -
T_coolant). The metal temperature is held a fraction phi of the way
from the gas temperature down toward the coolant supply temperature.
- Coolant fraction from the energy balance: m_dot_c / m_dot_g =
phi / (1 - phi) * CP_RATIO. A unit coolant-to-gas specific heat
ratio (CP_RATIO = 1.0) is the documented simplification for
conceptual design; the coolant heat capacity rate must offset the
blade heat load implied by the effectiveness.
- Bleed limit: fractions up to BLEED_LIMIT = 0.20 are practical for a
blade row; above that the cooling-air penalty on the cycle becomes
prohibitive and the design must trade metal temperature, gas
temperature or cooling scheme.
- Film cooling: film at the leading edge lifts the effectiveness by
FILM_IMPROVEMENT = 0.15 over the internal-convection baseline,
capped at PHI_CAP = 0.95. The achievable metal temperature is
T_m = T_gas - phi_eff * (T_gas - T_coolant).
- Margin: margin_k = T_metal_allow - T_m. A positive margin means the
cooling scheme holds the metal below the allowable temperature.
- Units are SI throughout: K, dimensionless ratios and fractions.
Workflow
- Fix the operating point: hot gas total temperature t_gas_k, the
allowable blade metal temperature t_metal_allow_k and the coolant
supply temperature t_coolant_k.
- Compute the required cooling effectiveness with effectiveness;
the function rejects non-physical inputs with ValueError.
- Convert the effectiveness into the required coolant-to-gas mass
flow fraction with coolant_fraction.
- Check the fraction against the practical bleed limit with
bleed_verdict; a fraction above 0.20 flags a design that needs
revisiting.
- Add the film cooling option: metal_temp_with_film with
film_cooling=True returns the achievable metal temperature with the
leading-edge film effectiveness gain.
- Pull the whole estimate together with analyze, which reports
effectiveness, coolant_fraction, verdict, metal_temp_k and margin_k
in one dict.
- Confirm the deterministic checks with the contract test
scripts/test_turbine_blade_cooling.py.
Worked example
Case 1: first blade row, t_gas = 1500 K, allowable metal 1200 K,
coolant 800 K.
- Effectiveness: phi = (1500 - 1200) / (1500 - 800) = 0.4286.
- Coolant fraction: 0.4286 / 0.5714 = 0.75, far above the 0.20 bleed
limit, verdict "exceeds bleed limit".
- With film: phi_eff = 0.4286 + 0.15 = 0.5786, so
T_m = 1500 - 0.5786 * 700 = 1095.0 K, margin +105 K. Film cooling
brings the row inside the allowable metal temperature.
Case 2: high pressure turbine blade with film, t_gas = 1600 K,
allowable 1250 K, coolant 900 K.
- phi = 350 / 700 = 0.5, fraction 1.0, exceeds bleed limit.
- phi_eff = 0.65, T_m = 1600 - 0.65 * 700 = 1145 K, margin +105 K.
Case 3: t_gas = 1600 K, allowable 1350 K, coolant 900 K: phi = 250 /
700 = 0.3571, fraction 0.5556, still exceeds the bleed limit.
Sensitivity: at t_gas = 1500 K and coolant 800 K the required fraction
falls below 0.20 only when the allowable metal temperature exceeds
1383.33 K, about 117 K below the gas temperature.
Verification
- Confirm effectiveness(1500, 1200, 800) returns 0.4286 and
coolant_fraction of it returns 0.75.
- Confirm analyze(1500, 1200, 800, film_cooling=True) reports
metal_temp_k 1095.0 K and margin_k 105.0 K.
- Confirm analyze(1600, 1250, 900, film_cooling=True) reports
metal_temp_k 1145.0 K.
- Confirm rising allowable metal temperature lowers the required
fraction monotonically and crosses below 0.20 at 1383.33 K.
- Confirm ValueError rejection: t_gas <= 0, t_gas <= t_coolant,
t_metal_allow >= t_gas, t_metal_allow <= t_coolant, phi outside
(0, 1), and negative coolant fractions.
- Run the contract test offline: python3
scripts/test_turbine_blade_cooling.py (35 tests, deterministic).
Related leaves
- propulsion/axial-compressor/turbine-stage: the velocity-triangle
aerodynamic design of the same blade row, the sibling this leaf
feeds with its allowable metal temperature context.
- propulsion/axial-compressor/multi-stage-compressor: the compression
system that supplies the cooling bleed flow.
- propulsion/axial-compressor/compressor-map: bleed extraction points
and their effect on the operating line.
- propulsion/gas-turbine-cycle leaves: the thermodynamic cycle cost of
the cooling-air bleed.
Pitfalls
- Accepting a coolant fraction above the bleed limit as a closed
design: in all three worked-example cases the required fraction (0.75,
1.0, 0.5556) far exceeds the 0.20 practical bleed limit, and only the
film-cooling effectiveness gain brings the metal temperature inside -
the bleed_verdict flags the trade, it does not validate it.
- Neglecting film cooling when the internal-convection fraction is
prohibitive: adding FILM_IMPROVEMENT = 0.15 at the leading edge lifts
the effectiveness (0.4286 to 0.5786 in case 1) and turns a 300 K
over-temperature into a +105 K margin; reporting the baseline-only
number understates what the row can achieve.
- Setting the allowable metal at or above the gas temperature: the
effectiveness definition requires t_metal_allow < t_gas and above
t_coolant; t_metal_allow >= t_gas or t_metal_allow <= t_coolant
raises ValueError because the metal could not be held.
- Forgetting the film cap: film effectiveness is capped at PHI_CAP =
0.95, so stacking film on top of an already high effectiveness does
not keep improving the metal temperature without bound.
- Confusing the margin direction: margin_k = t_metal_allow - T_m is
positive when the scheme holds the metal below the allowable; a
negative margin means the metal is too hot, not a safety surplus.
- Reading the coolant fraction without the cycle and model context: the
0.20 bleed limit exists because the cooling-air penalty becomes
prohibitive above it (pair with the gas-turbine-cycle leaves), and
CP_RATIO = 1.0 is a documented conceptual simplification - real
cooling design needs 3D conjugate heat transfer analysis beyond this
model.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_turbine_blade_cooling.py
The test covers the three worked-example operating points (effectiveness
within 1e-4, fractions within 1e-3, film metal temperatures within 1.0
K), the bleed-limit verdicts, the film effectiveness cap at 0.95, the
analyze dict outputs and margins, the sensitivity boundary crossing at
1383.33 K with the monotonic trend, and ValueError rejection of every
non-physical input.
Compliance
- Standards referenced, not reproduced: FAR-33 is US government work
(public domain) and covers engine type certification; the hot-section
cooling relations above are simplified conceptual-design correlations,
summary-only per standards-map.yaml. Real cooling design needs 3D
conjugate heat transfer analysis beyond this model.
- compliance: STANDARDS-REF, gated: false.
1---2name: turbine-blade-cooling3description: Use when you must analyze the cooling flow required to protect a gas turbine blade row: compute the cooling effectiveness from the hot gas total temperature, the allowable blade metal temperature and the coolant supply temperature, convert it into the required coolant-to-gas mass flow fraction with a simplified energy balance, check the fraction against the practical bleed limit, and estimate the achievable metal temperature when film cooling lifts the effectiveness. Produces the effectiveness, coolant fraction, bleed-limit verdict, metal temperature and margin that gate hot section cooling design in the FAR-33 engine context. Trigger: turbine blade cooling, cooling effectiveness, coolant flow fraction, film cooling, allowable metal temperature, coolant supply temperature, bleed limit, hot section cooling.4license: Apache-2.05---67# Turbine Blade Cooling (propulsion/axial-compressor/turbine-blade-cooling)89Use when the task is the heat-transfer side of a turbine blade row10design: how much cooling flow the hot section must bleed from the11compressor to hold the blade metal below its allowable temperature.12This leaf implements the standard cooling-effectiveness model in pure13Python, stdlib only. The baseline model is internal convection; an14optional film cooling term adds a fixed effectiveness gain at the15leading edge. It pairs with propulsion/axial-compressor/turbine-stage16for the aerodynamic design of the same blade row and with the17gas-turbine-cycle leaves for the cycle cost of the bleed flow.1819## Domain quick reference2021- Cooling effectiveness: phi = (T_gas - T_metal_allow) / (T_gas -22 T_coolant). The metal temperature is held a fraction phi of the way23 from the gas temperature down toward the coolant supply temperature.24- Coolant fraction from the energy balance: m_dot_c / m_dot_g =25 phi / (1 - phi) * CP_RATIO. A unit coolant-to-gas specific heat26 ratio (CP_RATIO = 1.0) is the documented simplification for27 conceptual design; the coolant heat capacity rate must offset the28 blade heat load implied by the effectiveness.29- Bleed limit: fractions up to BLEED_LIMIT = 0.20 are practical for a30 blade row; above that the cooling-air penalty on the cycle becomes31 prohibitive and the design must trade metal temperature, gas32 temperature or cooling scheme.33- Film cooling: film at the leading edge lifts the effectiveness by34 FILM_IMPROVEMENT = 0.15 over the internal-convection baseline,35 capped at PHI_CAP = 0.95. The achievable metal temperature is36 T_m = T_gas - phi_eff * (T_gas - T_coolant).37- Margin: margin_k = T_metal_allow - T_m. A positive margin means the38 cooling scheme holds the metal below the allowable temperature.39- Units are SI throughout: K, dimensionless ratios and fractions.4041## Workflow42431. Fix the operating point: hot gas total temperature t_gas_k, the44 allowable blade metal temperature t_metal_allow_k and the coolant45 supply temperature t_coolant_k.462. Compute the required cooling effectiveness with effectiveness;47 the function rejects non-physical inputs with ValueError.483. Convert the effectiveness into the required coolant-to-gas mass49 flow fraction with coolant_fraction.504. Check the fraction against the practical bleed limit with51 bleed_verdict; a fraction above 0.20 flags a design that needs52 revisiting.535. Add the film cooling option: metal_temp_with_film with54 film_cooling=True returns the achievable metal temperature with the55 leading-edge film effectiveness gain.566. Pull the whole estimate together with analyze, which reports57 effectiveness, coolant_fraction, verdict, metal_temp_k and margin_k58 in one dict.597. Confirm the deterministic checks with the contract test60 scripts/test_turbine_blade_cooling.py.6162## Worked example6364Case 1: first blade row, t_gas = 1500 K, allowable metal 1200 K,65coolant 800 K.6667- Effectiveness: phi = (1500 - 1200) / (1500 - 800) = 0.4286.68- Coolant fraction: 0.4286 / 0.5714 = 0.75, far above the 0.20 bleed69 limit, verdict "exceeds bleed limit".70- With film: phi_eff = 0.4286 + 0.15 = 0.5786, so71 T_m = 1500 - 0.5786 * 700 = 1095.0 K, margin +105 K. Film cooling72 brings the row inside the allowable metal temperature.7374Case 2: high pressure turbine blade with film, t_gas = 1600 K,75allowable 1250 K, coolant 900 K.7677- phi = 350 / 700 = 0.5, fraction 1.0, exceeds bleed limit.78- phi_eff = 0.65, T_m = 1600 - 0.65 * 700 = 1145 K, margin +105 K.7980Case 3: t_gas = 1600 K, allowable 1350 K, coolant 900 K: phi = 250 /81700 = 0.3571, fraction 0.5556, still exceeds the bleed limit.8283Sensitivity: at t_gas = 1500 K and coolant 800 K the required fraction84falls below 0.20 only when the allowable metal temperature exceeds851383.33 K, about 117 K below the gas temperature.8687## Verification8889- Confirm effectiveness(1500, 1200, 800) returns 0.4286 and90 coolant_fraction of it returns 0.75.91- Confirm analyze(1500, 1200, 800, film_cooling=True) reports92 metal_temp_k 1095.0 K and margin_k 105.0 K.93- Confirm analyze(1600, 1250, 900, film_cooling=True) reports94 metal_temp_k 1145.0 K.95- Confirm rising allowable metal temperature lowers the required96 fraction monotonically and crosses below 0.20 at 1383.33 K.97- Confirm ValueError rejection: t_gas <= 0, t_gas <= t_coolant,98 t_metal_allow >= t_gas, t_metal_allow <= t_coolant, phi outside99 (0, 1), and negative coolant fractions.100- Run the contract test offline: python3101 scripts/test_turbine_blade_cooling.py (35 tests, deterministic).102103## Related leaves104105- propulsion/axial-compressor/turbine-stage: the velocity-triangle106 aerodynamic design of the same blade row, the sibling this leaf107 feeds with its allowable metal temperature context.108- propulsion/axial-compressor/multi-stage-compressor: the compression109 system that supplies the cooling bleed flow.110- propulsion/axial-compressor/compressor-map: bleed extraction points111 and their effect on the operating line.112- propulsion/gas-turbine-cycle leaves: the thermodynamic cycle cost of113 the cooling-air bleed.114115## Pitfalls116117- Accepting a coolant fraction above the bleed limit as a closed118 design: in all three worked-example cases the required fraction (0.75,119 1.0, 0.5556) far exceeds the 0.20 practical bleed limit, and only the120 film-cooling effectiveness gain brings the metal temperature inside -121 the bleed_verdict flags the trade, it does not validate it.122- Neglecting film cooling when the internal-convection fraction is123 prohibitive: adding FILM_IMPROVEMENT = 0.15 at the leading edge lifts124 the effectiveness (0.4286 to 0.5786 in case 1) and turns a 300 K125 over-temperature into a +105 K margin; reporting the baseline-only126 number understates what the row can achieve.127- Setting the allowable metal at or above the gas temperature: the128 effectiveness definition requires t_metal_allow < t_gas and above129 t_coolant; t_metal_allow >= t_gas or t_metal_allow <= t_coolant130 raises ValueError because the metal could not be held.131- Forgetting the film cap: film effectiveness is capped at PHI_CAP =132 0.95, so stacking film on top of an already high effectiveness does133 not keep improving the metal temperature without bound.134- Confusing the margin direction: margin_k = t_metal_allow - T_m is135 positive when the scheme holds the metal below the allowable; a136 negative margin means the metal is too hot, not a safety surplus.137- Reading the coolant fraction without the cycle and model context: the138 0.20 bleed limit exists because the cooling-air penalty becomes139 prohibitive above it (pair with the gas-turbine-cycle leaves), and140 CP_RATIO = 1.0 is a documented conceptual simplification - real141 cooling design needs 3D conjugate heat transfer analysis beyond this142 model.143144## Behavior contract (gate 3)145146Run the deterministic contract test (stdlib unittest, offline):147148 python3 scripts/test_turbine_blade_cooling.py149150The test covers the three worked-example operating points (effectiveness151within 1e-4, fractions within 1e-3, film metal temperatures within 1.0152K), the bleed-limit verdicts, the film effectiveness cap at 0.95, the153analyze dict outputs and margins, the sensitivity boundary crossing at1541383.33 K with the monotonic trend, and ValueError rejection of every155non-physical input.156157## Compliance158159- Standards referenced, not reproduced: FAR-33 is US government work160 (public domain) and covers engine type certification; the hot-section161 cooling relations above are simplified conceptual-design correlations,162 summary-only per standards-map.yaml. Real cooling design needs 3D163 conjugate heat transfer analysis beyond this model.164- compliance: STANDARDS-REF, gated: false.