Critical Velocity Calculator

How Critical Velocity Calculator works

You pick a method, enter the tunnel geometry, fire heat release and air properties, and the app applies that method's equations on the phone. SEDH, NFPA 502 2017 and 2026 iterate until the velocity settles; NFPA 502 2020 is a closed-form calculation. Every equation below is the one the app's engine runs.

Shared inputs

Grade and blockage

Downhill grades raise the result through the grade factor Kg, where Gf is the grade in percent and negative means downhill; level and uphill grades give Kg = 1. The blockage ratio BR converts between the velocity in the annulus around a train and the velocity over the whole tunnel section.

  • Kg = 1 + 0.0374 · |Gf|^0.8 for Gf < 0, otherwise Kg = 1SEDH, NFPA 502 2017 and 2020. NFPA 502 2026 has no grade input: the app follows that edition in treating the gradient effect as negligible.
  • BR = ROUND(Atrain / Atunnel, 2)SEDH, NFPA 502 2017 and 2020. NFPA 502 2026 uses BR = Atrain / (A + Atrain), not rounded.
Iterative

SEDH Handbook

The SEDH Handbook method takes the convective heat release as you enter it, in kW, and the K1 you type. It solves for the critical velocity Vc and the fire-site temperature Tf in turn, feeding each Tf into the next pass, and stops when Vc agrees to four significant figures, or after 50 passes.

  • Vc = K1 · Kg · [(g · H · Q) / (ρa · Cp · A · Ta)]^(1/3)First pass. Q is the convective heat release (kW), A the annular cross-section area.
  • Tf = Q / (ρa · Cp · A · Vc) + Ta
  • Vc = K1 · Kg · [(g · H · Q) / (ρa · Cp · A · Tf)]^(1/3)Later passes: the previous pass's Tf replaces Ta in the denominator.
  • Airflow = Vc · A; CV (annular) = Vc; CV (tunnel) = Vc · (1 − BR)
Iterative

NFPA 502 2017

NFPA 502 2017 runs the same iteration as SEDH, but you enter the total heat release. The app counts 70% of it as convective and takes K1 from the edition's table, interpolated on the total heat release. The K1 field is locked for this method; it fills in from the heat release you enter.

  • Qc = Qtotal × 0.715 MW total gives 10 500 kW convective.
  • K1: 10 MW 0.87, 30 MW 0.74, 50 MW 0.68, 70 MW 0.64, 90 MW 0.62, 100 MW 0.606Linear between rows, rounded to three decimals, held at the end values outside 10 to 100 MW. At 15 MW, K1 = 0.838.
  • Then the SEDH equations above, with Q = Qc.
Closed-form

NFPA 502 2020

NFPA 502 2020 has no iteration. The app computes two comparison factors from the total heat release and the tunnel shape: if F1 is not larger than F2 it uses ratio R1, otherwise R2. An optional backlayering length Lb lowers the result. R2 has no heat release term, so above the switch a bigger fire gives the same velocity.

  • F1 = Q / (ρa · Cp · Ta · √g · H^2.5); F2 = 0.15 · (H / W)^(−0.25)Q is the total heat release (kW), with no convective fraction; W is the tunnel width.
  • decay = exp(Lb / (−18.5 · H))
  • R1 = 0.81 · (1 − BR) · F1^(1/3) · (H / W)^(1/12) · decay
  • R2 = 0.43 · (1 − BR) · decayR1 if F1 ≤ F2, else R2.
  • Vc = R · √(g · H); CV (tunnel) = Kg · Vc
  • Flow = ROUND(CV (tunnel) · Atunnel, 2); CV (annulus) = ROUND(CV (tunnel) / (1 − BR), 4)
Iterative

NFPA 502 2026

NFPA 502 2026 iterates the critical velocity Uc and the plume temperature rise ΔTp together, using the fire's width and area, the radiative fraction ε and the tunnel's hydraulic diameter. It stops when successive Uc values differ by less than 0.01 m/s, or after 50 passes. There is no grade input.

  • Lfire = fire area / Wfire; Ifire = Q′ / (Wfire · Lfire)Q′ in W and cp in J/kg·K: the app converts the heat release from the kW you enter.
  • A = Atunnel − Atrain; P = segment 1 + segment 2; Dh = 4A / P; H = Ln
  • Kl = ROUND(1.83 · (0.95 + exp(Q′ / (2.2 · Ln · Ifire · Wfire)))^(−1), 2)
  • Kf = ROUND(1.0556 · (1 − min(1, Wfire · Ln / A)) + 0.42, 2)
  • Uc = Kf · √(g · Ln³ / Dh² · ΔTp / (Ta + ΔTp))The first pass uses Ta / (Ta + Ta) in place of the temperature ratio.
  • ΔTp = min(Q′, 0.176 · Ifire · Wfire · Ln · Kl) · (1 − ε) / (min(A, Ln · (Wfire + 0.35 · Ln)) · Uc · ρa · cp)
  • VA = Uc; Q = VA · A; VT = VA · (1 − BR)

Worked examples

The app's own NFPA 502 2020 and 2026 sample cases, with the values the app's engine returns, rounded as the app shows them.

Sample cases run through the app's engine
StepNFPA 502 2020 sampleNFPA 502 2026 sample
Inputs Q 15 000 kW, H 5 m, W 5.6 m, Ta 310.55 K, ρa 1.2 kg/m³, Cp 1.0 kJ/kg·K, g 9.81 m/s², Gf −0.533%, tunnel 24.64 m², train 10 m², Lb 0 m Q′ 15 000 kW, Wfire 2.5 m, fire area 10 m², ε 0.3, Ln 5 m, gross tunnel 24.64 m², train 10 m², perimeter 17.4 + 13.34 m, Ta 37.4 °C, ρa 1.2 kg/m³, cp 1005 J/kg·K, g 9.81 m/s²
Derived F1 0.2299 > F2 0.1543, so R2 = 0.2537; Kg 1.0226; BR 0.41 A 14.64 m², Dh 1.9050 m, Kl 0.77, Kf 0.57, BR 0.4058
Result Critical velocity 1.7768 m/s; CV @ tunnel 1.8170 m/s; CV @ annulus 3.0796 m/s; flow rate 44.77 m³/s Converged on pass 10; VA 3.18 m/s; Q 46.60 m³/s; VT 1.89 m/s

Inputs and limits

The app works in SI units only and keeps no inputs after you close it. Each method uses the equations above with the sample cases' conventions, and it does not check results against your tunnel. The limits below are what the engine does at the edges; check them before you rely on a number.

Numbers in this list are the app's engine output, rounded as the app shows them.

  1. SI units only. Lengths in m, areas in m², heat release in kW, density in kg/m³, heat capacity in kJ/kg·K (J/kg·K for NFPA 502 2026) and g in m/s². Temperature can be entered in kelvin or °C; the engine converts it to kelvin. There are no imperial inputs.
  2. NFPA 502 2017 K1 is held outside 10 to 100 MW. Below 10 MW it stays at 0.87 and above 100 MW at 0.606; the table is not extended. 5 MW and 7 MW both use 0.87, 15 MW gives 0.838 and 150 MW gives 0.606. The K1 field is locked for 2017 and is a free input for SEDH.
  3. NFPA 502 2017 counts a fixed 70% of the heat release as convective. 15 MW becomes 10 500 kW and 7 MW becomes 4 900 kW.
  4. SEDH takes the convective heat release and K1 exactly as you enter them. The field is labelled Convective Fire Heat Release Rate (Qc); the sample case uses 7 000 kW and K1 0.606.
  5. The grade factor applies to downhill grades only. In the SEDH sample, a −2% grade gives Kg 1.0651 and an annular critical velocity of 1.73 m/s; a level grade and a +3% grade both give Kg 1.0000 and 1.62 m/s. SEDH, 2017 and 2020 apply Kg; NFPA 502 2026 has no grade input.
  6. The blockage ratio is rounded to two decimals for SEDH, 2017 and 2020 (10 / 47 gives 0.21). NFPA 502 2026 uses Atrain / (A + Atrain) unrounded (0.4058 in its sample).
  7. SEDH and 2017 take the annular area A as a separate input and do not check it against tunnel area minus train area. The SEDH sample case uses A = 50 m² with a 47 m² tunnel and a 10 m² train, where 47 − 10 = 37 m². With A = 37 m² the engine gives 1.88 m/s annular, 1.49 m/s tunnel and 69.71 m³/s.
  8. SEDH and 2017 do not stop a train area equal to or larger than the tunnel area. A 60 m² train in a 47 m² tunnel gives BR 1.28 and a negative tunnel velocity (−0.48 m/s), and the last pass is still marked converged (47 m² in 47 m² gives BR 1.00 and 0 m/s, marked converged).
  9. NFPA 502 2020 stops rising with fire size above the F1/F2 switch. R2 has no heat release term. In the 2020 sample tunnel the critical velocity is 1.4083 m/s at 5 MW and 1.7743 m/s at 10 MW (both R1), then 1.7768 m/s at 15 MW and at 100 MW (both R2).
  10. The 2020 backlayering length Lb lowers the result. At 15 MW, Lb = 50 m gives 1.0349 m/s against 1.7768 m/s at Lb = 0.
  11. NFPA 502 2020 results are rounded like the spreadsheet the method was built from: flow to two decimals (44.77 m³/s), annulus velocity to four (3.0796 m/s).
  12. Iterations stop at 50 passes even if not settled. SEDH and 2017 stop when Vc agrees to four significant figures, 2026 when successive Uc values differ by less than 0.01 m/s. A case that has not settled after 50 passes returns the last pass with no warning; only a settled pass is marked CONVERGED. In sweeps of SEDH cases from 1 kW to 10 GW and NFPA 502 2026 cases from 1 kW to 1 GW, no case reached the cap; the slowest took 18 passes. The SEDH sample takes 5 passes, NFPA 502 2017 at 15 MW takes 5 and the 2026 sample 10.
  13. A heat release of zero does not give a zero velocity in most methods. SEDH, 2017 and 2026 show a raw error message instead, such as "Non-finite value in iteration 1 at index 1" or "Non-finite value in geometry at index 5". NFPA 502 2020 accepts zero and shows 0 m/s. A negative heat release fails the same way in SEDH and 2017; NFPA 502 2020 and 2026 reject it with "heat_release must be non-negative".
  14. Input checks exist only for 2020 and 2026: positive height, width, temperature and tunnel area (train area may be 0), a train area smaller than the tunnel area, ε from 0 up to but not including 1, and Lb of 0 or more. A 30 m² train in a 24.64 m² tunnel is rejected with "train_area must be less than tunnel_area", and ε = 1 with "radiative_fraction must be in [0, 1)". SEDH and 2017 reject only a tunnel area of zero and a zero denominator.
  15. The NFPA 502 2026 geometry is simplified as in the spreadsheet the method was built from: H = Ln, A = gross tunnel area − train area, P = segment 1 + segment 2, Kl and Kf rounded to two decimals, and the heat release capped at 0.176 · Ifire · Wfire · Ln · Kl. The sample gives Kl 0.77, Kf 0.57 and Dh 1.9050 m.
  16. Edition currency is your check. The methods follow each edition's formula as implemented in the app. Industry papers report a 2020 move to withdraw the NFPA 502 2020 Annex D critical-velocity formula; we have not confirmed this from NFPA text. Check the edition and amendments your authority adopts.
  17. Inputs are not saved. Closing the app, or Android stopping it in the background, resets every field and the project name. Export a PDF or CSV report to keep a case.
  18. The sample cases are the reference spreadsheets' cases, not recommendations. SEDH and 2017 open with 7 000 kW, H 6.5 m, Ta 319 K and A 50 m²; 2020 and 2026 open with 15 MW, H or Ln 5 m, a 24.64 m² gross tunnel area, a 10 m² train and 37.4 °C (310.55 K). Overwrite them with your own case.
  19. An old result stays on screen after you change an input. The results card keeps showing the last calculation after you edit a field, and after a calculation fails. Tap Calculate Critical Velocity again after every edit before you read or export a result.

Get Critical Velocity Calculator

Get it on Google Play