Avionics Bay Cooling Sizing (vehicle-design/sizing/avionics-bay-cooling-sizing)
Use when the task is sizing the cooling airflow for the avionics and
equipment bay of an aircraft: the LRU heat dissipations must be
carried away by a cooling air flow whose exhaust stays at or below the
LRU inlet-air temperature limit, and each LRU case must stay within
its case temperature limit. This leaf implements the standard bay
cooling model in pure Python, stdlib only: heat load rollup, cooling
mass flow from the allowable temperature rise, volumetric flow and
CFM conversion, and the per-LRU case temperature check. It pairs with
vehicle-design/sizing/environmental-control-sizing (the cabin
conditioning leaf, which stops at the conditioning pack flow and never
sizes bay airflow or LRU case temperatures) and with
avionics/do160/environmental-qualification (the LRU temperature test
specification side, which does not size airflow).
Domain quick reference
- Bay heat load rollup: Q_total = sum of the LRU heat dissipations
P_i, each LRU power in W. The bay is a collection of line-replaceable
units (LRUs) inside the avionics/equipment bay.
- Cooling mass flow: m_dot = Q / (cp * (T_exhaust_limit - T_supply)),
with cp = 1005 J/(kg K) for dry air. The exhaust temperature is sized
to equal the LRU inlet-air temperature limit, giving the maximum
cooling benefit without exceeding the LRU inlet limit.
- Volumetric flow: V_dot = m_dot / rho with rho = 1.2 kg/m3 near sea
level; CFM = V_dot * 2118.88 (ft3/min per m3/s).
- LRU case temperature: T_case = T_inlet_air + P / (h A), where h A is
the case-to-air conductance in W/K (default 12 W/K shared across the
bay). A zero-power LRU sits exactly at the inlet air temperature.
- Case verdict: PASS when T_case <= T_limit, else FAIL; margin is
T_limit - T_case (positive for PASS, negative for FAIL).
- Bay verdict: FAIL when any LRU case exceeds its limit or the mass
flow is zero with positive heat, else PASS.
- Units are W, deg C, kg/s, m3/s, ft3/min (CFM), K.
- FAR 25.1309 frames the equipment installation context; the relations
above are standard engineering methodology, summary-only.
Workflow
- Collect the LRU heat dissipations in W and roll up the bay heat
load with bay_heat_load.
- Fix the bay cooling supply temperature and the LRU inlet-air
temperature limit, then size the cooling mass flow with
cooling_mass_flow; the returned exhaust temperature equals the
limit by construction.
- Convert the mass flow to the volumetric flow and CFM with
volumetric_flow.
- For each LRU, compute the case temperature from the dissipated
power and the case-to-air conductance with
lru_case_temperature, then grade it against the LRU case limit
with case_verdict.
- Run the whole bay in one call with bay_cooling_summary to get the
heat load, flows, exhaust temperature, per-LRU case temperatures,
case verdicts and the bay PASS/FAIL verdict that gates the bay
ventilation layout.
- Confirm the deterministic checks with the contract test
scripts/test_avionics_bay_cooling_sizing.py.
Worked example
Reference bay with six LRUs dissipating 400, 350, 300, 550, 450 and
450 W (2500 W total), supply air at 25 C, LRU inlet-air limit 55 C,
air density 1.2 kg/m3, case-to-air conductance 12 W/K for every LRU,
and case limits [60, 60, 60, 65, 60, 60] C.
- Bay heat load: bay_heat_load returns total_w 2500.0 W.
- Cooling mass flow: cooling_mass_flow(2500.0, 25.0, 55.0) returns
0.08292 kg/s (2500 / (1005 * 30)); exhaust_temp_c 55.0 C.
- Volumetric flow: volumetric_flow returns 0.06910 m3/s and 146.4 CFM.
- 300 W LRU: lru_case_temperature gives rise 300 / 12 = 25.0 K and
case_temp_c 25 + 25 = 50.0 C, versus the 60 C limit a PASS with
margin 10.0 K.
- 550 W LRU: rise 550 / 12 = 45.83 K, case_temp_c 70.83 C, versus the
65 C limit a FAIL with margin -5.83 K; this is the undersized heat
path the check exists to catch.
- Bay summary: bay_cooling_summary over the six LRUs reports the
2500.0 W load, 0.08292 kg/s, 146.4 CFM, exhaust 55.0 C, case temps
{0: 58.33, 1: 54.17, 2: 50.0, 3: 70.83, 4: 62.5, 5: 62.5} C with
verdicts PASS, PASS, PASS, FAIL, FAIL, FAIL and a bay verdict FAIL,
so the bay layout must be revised (heat path or limits) before
release. Re-running the summary with the 550 W LRU reduced to 350 W
gives an all-PASS set and a bay verdict PASS.
Pitfalls
- Checking the airflow but not the individual LRU cases: the bay
verdict FAILs when any LRU case exceeds its limit even if the mass
flow is adequate - in the worked bay three LRUs fail their case
limits (550 W gives 70.83 C against 65 C) while the flow itself
closes the 30 K rise.
- Sizing the flow on a temperature difference that is not positive:
cooling_mass_flow requires the LRU inlet-air limit above the
supply temperature; a limit at or below supply raises ValueError
because there is no cooling potential.
- Reading the exhaust temperature as a margin: the sized exhaust
EQUALS the LRU inlet limit by construction (55.0 C in the worked
example); it is the per-LRU case temperatures that carry margin.
- Sharing one conductance blindly: the case temperature uses the
case-to-air conductance h A (12 W/K default) per LRU, and
doubling the conductance halves the case rise; a high-dissipation
LRU with poor local heat path fails while the average looks fine.
- Treating this leaf as the cabin conditioning pack: the bay airflow
and LRU case checks are this leaf's claim; environmental-control-
sizing stops at the conditioning pack flow, and DO-160
environmental-qualification covers the LRU test side.
- Feeding non-physical bay inputs: an empty LRU list, negative
power, density or conductance at or below zero, and a case limit
below absolute zero all raise ValueError.
Verification
- Confirm bay_heat_load([400, 350, 300, 550, 450, 450]) returns total
2500.0 W.
- Confirm cooling_mass_flow(2500.0, 25.0, 55.0) returns 0.08292 kg/s
(inside the independently verified 0.08 to 0.09 kg/s bound) and that
zero heat returns a 0.0 kg/s flow.
- Confirm volumetric_flow converts the reference flow to 0.06910 m3/s
and 146.4 CFM, and that 1 kg/s at 1.2 kg/m3 gives 0.8333 m3/s and
1765.7 CFM.
- Confirm the identities: doubling the allowable temperature rise at
fixed heat halves the mass flow, doubling the heat doubles the flow,
doubling the case-to-air conductance halves the case rise, and a
zero-power LRU sits at the inlet air temperature.
- Confirm the 300 W LRU case is 50.0 C (PASS, margin 10.0 K) and the
550 W LRU case is 70.83 C (FAIL, margin -5.83 K), and that the bay
verdict is FAIL when any LRU fails and PASS only when every LRU
passes.
- Confirm every non-physical input raises ValueError: empty LRU list,
negative power, temperature difference not positive (limit at or
below supply), density at or below zero, conductance at or below
zero, and a case limit below absolute zero.
- Run the contract test offline: python3
scripts/test_avionics_bay_cooling_sizing.py (32 tests,
deterministic).
Related leaves
- vehicle-design/sizing/environmental-control-sizing: the cabin
conditioning leaf; its equipment heat line sits inside the cabin
load and it stops at the air conditioning pack, it does not size
bay airflow or LRU case temperatures.
- vehicle-design/sizing/ice-protection-sizing: surface thermal ice
protection for the aerodynamic surfaces, a different thermal sizing
problem.
- avionics/do160/environmental-qualification: the test specification
side of LRU temperature qualification, not airflow sizing.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_avionics_bay_cooling_sizing.py
The test covers the reference bay sizing contract (2500 W heat load,
0.08292 kg/s mass flow, 146.4 CFM, 55.0 C exhaust, 300 W LRU case
50.0 C PASS, 550 W LRU case 70.83 C FAIL and the FAIL bay verdict),
the flow and case scaling identities, the volumetric conversion
references, the convenience dict keys, determinism and the ValueError
rejection of every non-physical input.
Compliance
- Standards referenced, not reproduced: FAR 25.1309 is the equipment
installation context (case of an avionics bay in an aircraft); the
bay cooling relations above are standard engineering methodology,
summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: avionics-bay-cooling-sizing3description: Use when you must size the cooling airflow for the avionics and equipment bay: rolling up the bay heat load from the LRU heat dissipations, sizing the bay cooling mass flow from the allowable cooling air temperature rise so the bay exhaust temperature stays at or below the LRU inlet air temperature limit, converting the mass flow to the volumetric flow and to cubic feet per minute, and checking each LRU case temperature against its case limit from the dissipated power and the case to air conductance. Produces the bay heat load, the required cooling mass flow and CFM, the exhaust temperature, the per LRU case temperature verdicts and the bay cooling PASS or FAIL verdict that gate the bay ventilation layout. Trigger: avionics bay cooling sizing, equipment bay cooling airflow, LRU heat dissipation, LRU case temperature check, cooling air temperature rise, case to air conductance.4license: Apache-2.05---67# Avionics Bay Cooling Sizing (vehicle-design/sizing/avionics-bay-cooling-sizing)89Use when the task is sizing the cooling airflow for the avionics and10equipment bay of an aircraft: the LRU heat dissipations must be11carried away by a cooling air flow whose exhaust stays at or below the12LRU inlet-air temperature limit, and each LRU case must stay within13its case temperature limit. This leaf implements the standard bay14cooling model in pure Python, stdlib only: heat load rollup, cooling15mass flow from the allowable temperature rise, volumetric flow and16CFM conversion, and the per-LRU case temperature check. It pairs with17vehicle-design/sizing/environmental-control-sizing (the cabin18conditioning leaf, which stops at the conditioning pack flow and never19sizes bay airflow or LRU case temperatures) and with20avionics/do160/environmental-qualification (the LRU temperature test21specification side, which does not size airflow).2223## Domain quick reference2425- Bay heat load rollup: Q_total = sum of the LRU heat dissipations26 P_i, each LRU power in W. The bay is a collection of line-replaceable27 units (LRUs) inside the avionics/equipment bay.28- Cooling mass flow: m_dot = Q / (cp * (T_exhaust_limit - T_supply)),29 with cp = 1005 J/(kg K) for dry air. The exhaust temperature is sized30 to equal the LRU inlet-air temperature limit, giving the maximum31 cooling benefit without exceeding the LRU inlet limit.32- Volumetric flow: V_dot = m_dot / rho with rho = 1.2 kg/m3 near sea33 level; CFM = V_dot * 2118.88 (ft3/min per m3/s).34- LRU case temperature: T_case = T_inlet_air + P / (h A), where h A is35 the case-to-air conductance in W/K (default 12 W/K shared across the36 bay). A zero-power LRU sits exactly at the inlet air temperature.37- Case verdict: PASS when T_case <= T_limit, else FAIL; margin is38 T_limit - T_case (positive for PASS, negative for FAIL).39- Bay verdict: FAIL when any LRU case exceeds its limit or the mass40 flow is zero with positive heat, else PASS.41- Units are W, deg C, kg/s, m3/s, ft3/min (CFM), K.42- FAR 25.1309 frames the equipment installation context; the relations43 above are standard engineering methodology, summary-only.4445## Workflow46471. Collect the LRU heat dissipations in W and roll up the bay heat48 load with bay_heat_load.492. Fix the bay cooling supply temperature and the LRU inlet-air50 temperature limit, then size the cooling mass flow with51 cooling_mass_flow; the returned exhaust temperature equals the52 limit by construction.533. Convert the mass flow to the volumetric flow and CFM with54 volumetric_flow.554. For each LRU, compute the case temperature from the dissipated56 power and the case-to-air conductance with57 lru_case_temperature, then grade it against the LRU case limit58 with case_verdict.595. Run the whole bay in one call with bay_cooling_summary to get the60 heat load, flows, exhaust temperature, per-LRU case temperatures,61 case verdicts and the bay PASS/FAIL verdict that gates the bay62 ventilation layout.636. Confirm the deterministic checks with the contract test64 scripts/test_avionics_bay_cooling_sizing.py.6566## Worked example6768Reference bay with six LRUs dissipating 400, 350, 300, 550, 450 and69450 W (2500 W total), supply air at 25 C, LRU inlet-air limit 55 C,70air density 1.2 kg/m3, case-to-air conductance 12 W/K for every LRU,71and case limits [60, 60, 60, 65, 60, 60] C.7273- Bay heat load: bay_heat_load returns total_w 2500.0 W.74- Cooling mass flow: cooling_mass_flow(2500.0, 25.0, 55.0) returns75 0.08292 kg/s (2500 / (1005 * 30)); exhaust_temp_c 55.0 C.76- Volumetric flow: volumetric_flow returns 0.06910 m3/s and 146.4 CFM.77- 300 W LRU: lru_case_temperature gives rise 300 / 12 = 25.0 K and78 case_temp_c 25 + 25 = 50.0 C, versus the 60 C limit a PASS with79 margin 10.0 K.80- 550 W LRU: rise 550 / 12 = 45.83 K, case_temp_c 70.83 C, versus the81 65 C limit a FAIL with margin -5.83 K; this is the undersized heat82 path the check exists to catch.83- Bay summary: bay_cooling_summary over the six LRUs reports the84 2500.0 W load, 0.08292 kg/s, 146.4 CFM, exhaust 55.0 C, case temps85 {0: 58.33, 1: 54.17, 2: 50.0, 3: 70.83, 4: 62.5, 5: 62.5} C with86 verdicts PASS, PASS, PASS, FAIL, FAIL, FAIL and a bay verdict FAIL,87 so the bay layout must be revised (heat path or limits) before88 release. Re-running the summary with the 550 W LRU reduced to 350 W89 gives an all-PASS set and a bay verdict PASS.909192## Pitfalls9394- Checking the airflow but not the individual LRU cases: the bay95 verdict FAILs when any LRU case exceeds its limit even if the mass96 flow is adequate - in the worked bay three LRUs fail their case97 limits (550 W gives 70.83 C against 65 C) while the flow itself98 closes the 30 K rise.99- Sizing the flow on a temperature difference that is not positive:100 cooling_mass_flow requires the LRU inlet-air limit above the101 supply temperature; a limit at or below supply raises ValueError102 because there is no cooling potential.103- Reading the exhaust temperature as a margin: the sized exhaust104 EQUALS the LRU inlet limit by construction (55.0 C in the worked105 example); it is the per-LRU case temperatures that carry margin.106- Sharing one conductance blindly: the case temperature uses the107 case-to-air conductance h A (12 W/K default) per LRU, and108 doubling the conductance halves the case rise; a high-dissipation109 LRU with poor local heat path fails while the average looks fine.110- Treating this leaf as the cabin conditioning pack: the bay airflow111 and LRU case checks are this leaf's claim; environmental-control-112 sizing stops at the conditioning pack flow, and DO-160113 environmental-qualification covers the LRU test side.114- Feeding non-physical bay inputs: an empty LRU list, negative115 power, density or conductance at or below zero, and a case limit116 below absolute zero all raise ValueError.117## Verification118119- Confirm bay_heat_load([400, 350, 300, 550, 450, 450]) returns total120 2500.0 W.121- Confirm cooling_mass_flow(2500.0, 25.0, 55.0) returns 0.08292 kg/s122 (inside the independently verified 0.08 to 0.09 kg/s bound) and that123 zero heat returns a 0.0 kg/s flow.124- Confirm volumetric_flow converts the reference flow to 0.06910 m3/s125 and 146.4 CFM, and that 1 kg/s at 1.2 kg/m3 gives 0.8333 m3/s and126 1765.7 CFM.127- Confirm the identities: doubling the allowable temperature rise at128 fixed heat halves the mass flow, doubling the heat doubles the flow,129 doubling the case-to-air conductance halves the case rise, and a130 zero-power LRU sits at the inlet air temperature.131- Confirm the 300 W LRU case is 50.0 C (PASS, margin 10.0 K) and the132 550 W LRU case is 70.83 C (FAIL, margin -5.83 K), and that the bay133 verdict is FAIL when any LRU fails and PASS only when every LRU134 passes.135- Confirm every non-physical input raises ValueError: empty LRU list,136 negative power, temperature difference not positive (limit at or137 below supply), density at or below zero, conductance at or below138 zero, and a case limit below absolute zero.139- Run the contract test offline: python3140 scripts/test_avionics_bay_cooling_sizing.py (32 tests,141 deterministic).142143## Related leaves144145- vehicle-design/sizing/environmental-control-sizing: the cabin146 conditioning leaf; its equipment heat line sits inside the cabin147 load and it stops at the air conditioning pack, it does not size148 bay airflow or LRU case temperatures.149- vehicle-design/sizing/ice-protection-sizing: surface thermal ice150 protection for the aerodynamic surfaces, a different thermal sizing151 problem.152- avionics/do160/environmental-qualification: the test specification153 side of LRU temperature qualification, not airflow sizing.154155## Behavior contract (gate 3)156157Run the deterministic contract test (stdlib unittest, offline):158159 python3 scripts/test_avionics_bay_cooling_sizing.py160161The test covers the reference bay sizing contract (2500 W heat load,1620.08292 kg/s mass flow, 146.4 CFM, 55.0 C exhaust, 300 W LRU case16350.0 C PASS, 550 W LRU case 70.83 C FAIL and the FAIL bay verdict),164the flow and case scaling identities, the volumetric conversion165references, the convenience dict keys, determinism and the ValueError166rejection of every non-physical input.167168## Compliance169170- Standards referenced, not reproduced: FAR 25.1309 is the equipment171 installation context (case of an avionics bay in an aircraft); the172 bay cooling relations above are standard engineering methodology,173 summary-only per standards-map.yaml.174- compliance: STANDARDS-REF, gated: false.