Saltar al contenido

Pool Fire

Technical documentation for the Pool Fire consequence model — burning rate, flame geometry, thermal radiation, probit analysis, domino effects, and fatality estimation

1. Introduction and Physical Phenomenon#

1.1 Pool Fire#

The Pool Fire model simulates the steady-state combustion of a flammable liquid that has spilled onto a flat surface and ignited. The model computes:

  • Maximum pool diameter based on spill type
  • Mass burning rate per unit area (burning rate)
  • Flame geometry (height, wind-induced tilt angle)
  • Thermal radiation intensity at any given distance
  • Human effects (1st/2nd degree burns, fatalities) via Probit functions
  • Domino effects on neighboring vessels using Cozzani correlations
  • Expected fatalities by integrating thermal radiation with population density

1.2 Industrial Context#

Continuous Spill

Steady-state release; pool diameter grows until equilibrium between inflow and combustion rate

Massive (Instantaneous)

Entire volume released at once; maximum diameter depends on total volume released

Circular Dike

Fixed diameter defined by the user (inner dike diameter)

Rectangular Dike

Equivalent diameter computed from length × width of the containment dike

1.3 Scope of This Model#

This model calculates:

  1. Pool diameter and geometry based on source type (continuous, massive, circularDike, rectangularDike)
  2. Burning rate using Burgess-Strasser, Mudan, or tabulated methods
  3. Flame height via Thomas or Pritchard-Binding correlations
  4. Surface Emissive Power (SEP) accounting for soot shielding in large hydrocarbon fires
  5. Thermal radiation at any distance — Point Source or Solid Plume (tilted cylinder) model
  6. Distance to a specified radiation threshold (inverse problem via Newton-Raphson)
  7. Thermal dose and probit-based probability of 1st/2nd degree burns and fatalities
  8. Domino effect time-to-failure for neighboring vessels (Cozzani correlations)
  9. Population fatalities using concentric annular ring integration

2. Calculation Sequence#

flowchart TD
  A["Input Data<br/>(fuel, source type, weather)"] --> B["Chemical Properties<br/>YAWS: ΔHvap, cP, ρL at Tamb & Tb"]
  B --> C["Burning Rate<br/>ṁ'' = f(ΔHc, ΔHvap, cP, ρL)"]
  C --> D["Pool Diameter<br/>D = f(sourceType, Q or V)"]
  D --> E["Flame Geometry<br/>u*, H(Thomas|Pritchard), θ, SEP"]
  E --> F["For each distance x:<br/>F_view, τ_atm, q(x)"]
  F --> G["Forward problem<br/>q(x)"]
  F --> H["Inverse problem<br/>x(q_target) — Newton-Raphson"]
  G --> I["Thermal Dose<br/>D_dose = t_exp · (q×10³)^(4/3)"]
  H --> I
  I --> J["Probit Analysis<br/>(Burns 1°/2°, Fatalities TNO/CCPS, Domino)"]
  J --> K["Fatality Calculation<br/>(Concentric Rings + FatalityUtils)"]

  style A fill:#e1f5fe
  style K fill:#c8e6c9
  style F fill:#fff3e0
Cargando diagrama…
  1. Chemical Properties — Retrieve fuel properties from YAWS database at TambT_{amb}: heat of vaporization ΔHvap\Delta H_{vap}, liquid heat capacity cPc_P, and liquid density ρL\rho_L.

  2. Burning Rate — Compute m˙\dot{m}'' [kg/(m²·s)] using Burgess-Strasser, Mudan, or tabulated value (gasoline).

  3. Pool Diameter — Determine maximum pool diameter DD based on source type: continuous spill, massive release, circular dike, or rectangular dike.

  4. Flame Geometry — Compute dimensionless wind speed uu^*, flame height HH (Thomas or Pritchard-Binding), tilt angle θ\theta, and Surface Emissive Power (SEP).

  5. Thermal Radiation — Compute radiation q(x)q(x) [kW/m²] at target distances using Point Source or Solid Plume (tilted cylinder) view factor model.

  6. Probit Analysis — Convert thermal dose into probability of 1st/2nd degree burns, fatalities (TNO or CCPS), and domino effects (Cozzani).

  7. Fatality Estimation — Integrate fatality probability over concentric annular rings to estimate total casualties.


3. Chemical Properties (YAWS Correlations)#

All fuel properties are retrieved from the YAWS chemical database evaluated at ambient temperature TambT_{amb} (Kelvin).

3.1 Heat of Vaporization at TambT_{amb}#

ΔHvap(Tamb)=hva(1TambTc)hvnMw×103[kJ/kg]\Delta H_{vap}(T_{amb}) = \frac{h_{va} \cdot \left(1 - \dfrac{T_{amb}}{T_c}\right)^{h_{vn}}}{M_w} \times 10^3 \quad [\text{kJ/kg}]
SymbolDescriptionSource
hvah_{va}Vaporization coefficient AYAWS, p. 109
hvnh_{vn}Correlation exponentYAWS, p. 109
TcT_cCritical temperature (K)YAWS
MwM_wMolecular weight (g/mol)YAWS

Code: PoolFire.js, lines 81–85.


4. Burning Rate — burningRate()#

The burning rate m˙\dot{m}'' [kg/(m²·s)] is the mass of fuel consumed per unit area per unit time. It governs fire intensity and pool diameter.

4.1 Special Case: Gasoline#

For gasoline (GASOLINE-s), a tabulated experimental value is used directly:

m˙=0.055[kg/(m2⋅s)]\dot{m}'' = 0.055 \quad [\text{kg/(m}^2\text{·s)}]

Code: PoolFire.js, lines 291–293.


5. Pool Diameter — poolDiameter()#

5.1 Continuous Spill (CCPS p. 228)#

The maximum diameter is reached when the horizontal spreading rate equals the combustion rate. The vertical burning rate is:

ymax=1.27×106ΔHcΔHvap(Tb)[m/s]y_{max} = 1.27 \times 10^{-6} \cdot \frac{\Delta H_c}{\Delta H_{vap}(T_b)} \quad [\text{m/s}]

The equilibrium maximum diameter:

D=2Qspillπymax[m]D = 2 \sqrt{\frac{Q_{spill}}{\pi \cdot y_{max}}} \quad [\text{m}]

where QspillQ_{spill} is the volumetric spill rate [m³/s].

Reference: CCPS, p. 228. Code: PoolFire.js, lines 331–345.


6. Time Calculations#

6.1 Continuous Spill — timeToReachPoolSize()#

teq=0.564D(gvfD)1/3[s]t_{eq} = 0.564 \cdot \frac{D}{\left(g \cdot v_f \cdot D\right)^{1/3}} \quad [\text{s}]

Code: PoolFire.js, lines 377–379.

6.2 Massive Spill#

teq=0.6743(Vgvf2)1/4[s]t_{eq} = 0.6743 \cdot \left(\frac{V}{g \cdot v_f^2}\right)^{1/4} \quad [\text{s}]

Code: PoolFire.js, lines 381–386.


7. Dimensionless Wind Speed — ux()#

u=uw(gm˙Dρair)1/3,u1.0u^* = u_w \cdot \left(\frac{g \cdot \dot{m}'' \cdot D}{\rho_{air}}\right)^{-1/3}, \quad u^* \geq 1.0

The physical minimum u=1.0u^* = 1.0 corresponds to the no-wind condition. Dry air density uses ISA 1976 altitude correction:

P=101325(12.5577×105H)5.25588[Pa],ρair=P287.05TambP = 101\,325 \cdot \left(1 - 2.5577 \times 10^{-5} \cdot H\right)^{5.25588} \quad [\text{Pa}], \quad \rho_{air} = \frac{P}{287.05 \cdot T_{amb}}

Reference: ISA 1976. Code: PoolFire.js, lines 414–430.


8. Flame Height — alturaFlama()#

8.1 Thomas Method — No Wind (uw=0u_w = 0)#

H=42D(m˙ρairgD)0.61H = 42 \cdot D \cdot \left(\frac{\dot{m}''}{\rho_{air} \sqrt{g \cdot D}}\right)^{0.61}

Reference: Thomas, P.H., The size of flames from natural fires, 1963; Kakosimos p. 86. Code: PoolFire.js, lines 464–470.


9. Surface Emissive Power (SEP) — SEP()#

The SEP [kW/m²] is the radiant power emitted per unit area of the flame surface.

For large hydrocarbon pools (alkanes, gasoline, diesel, jet fuel), soot significantly reduces effective radiation. The bi-exponential correlation models the shielding effect:

SEP=140e0.12D+20(1e0.12D)[kW/m2]SEP = 140 \cdot e^{-0.12 D} + 20 \cdot (1 - e^{-0.12 D}) \quad [\text{kW/m}^2]

The first term represents radiation from the luminous core; the second, background radiation from the smoke column.

Reference: Mudan & Croce, SFPE Handbook, 1995; Kakosimos p. 88. Code: PoolFire.js, lines 505–508.


10. Flame Tilt Angle — anguloFlama()#

Wind tilts the flame from the vertical. The angle θ\theta [rad] is computed from the Froude and Reynolds numbers:

Fr=uw2gD,Re=uwDν,c=0.666Fr0.333Re0.117Fr = \frac{u_w^2}{g \cdot D}, \quad Re = \frac{u_w \cdot D}{\nu}, \quad c = 0.666 \cdot Fr^{0.333} \cdot Re^{0.117} θ=arcsin ⁣(4c2+112c)[rad]\theta = \arcsin\!\left(\frac{\sqrt{4c^2 + 1} - 1}{2c}\right) \quad [\text{rad}]

For uw0u_w \leq 0, θ=0\theta = 0 (vertical flame). Kinematic viscosity ν\nu [m²/s] is obtained from an empirical polynomial in TambT_{amb} [K].

Code: PoolFire.js, lines 523–542.


11. View Factor — viewFactor(x)#

11.1 Point Source Model#

Assumes all energy radiates from a geometric point at the flame center:

F=14πx2F = \frac{1}{4\pi x^2}

Code: PoolFire.js, line 610.


12. Atmospheric Transmissivity — ta(x)#

Atmospheric humidity attenuates thermal radiation. Transmissivity τ\tau uses Wayne's correlation (cited in CCPS):

τ=2.02(Pwx)0.09\tau = 2.02 \cdot (P_w \cdot x)^{-0.09}

The partial pressure of water vapor PwP_w [Pa]:

Pw0=exp ⁣(77.345+0.0057T7235/T)T8.2,Pw=HR100Pw0P_w^0 = \frac{\exp\!\left(77.345 + 0.0057\,T - 7235/T\right)}{T^{8.2}}, \qquad P_w = \frac{HR}{100} \cdot P_w^0

where HRHR is relative humidity [%] and T=TambT = T_{amb} [K]. Code: PoolFire.js, lines 620–638.


13. Thermal Radiation — qTermAtX(x)#

q(x)=τ(x)Fηm˙ΔHcFvista(x)Apool[kW/m2]q(x) = \tau(x) \cdot F_\eta \cdot \dot{m}'' \cdot \Delta H_c \cdot F_{vista}(x) \cdot A_{pool} \quad [\text{kW/m}^2]

where:

  • FηF_\eta — radiated energy fraction (0.15–0.35, user-configurable; CCPS p. 230–232, Table 2.27)
  • Apool=πD2/4A_{pool} = \pi D^2 / 4 — pool area [m²]

Code: PoolFire.js, lines 652–663.


14. Distance to a Given Radiation Level — xTerm(q_target)#

Given a target radiation level qtargetq_{target} [kW/m²], the distance xx [m] is found via Newton-Raphson. For the Point Source model:

f(x)=ZPw0.094πx2.09qtarget=0,Z=2.02Fηm˙ΔHcApoolf(x) = \frac{Z \cdot P_w^{-0.09}}{4\pi} \cdot x^{-2.09} - q_{target} = 0, \qquad Z = 2.02 \cdot F_\eta \cdot \dot{m}'' \cdot \Delta H_c \cdot A_{pool} f(x)=2.09ZPw0.094πx3.09,xn+1=xnf(xn)f(xn)f'(x) = -\frac{2.09 \cdot Z \cdot P_w^{-0.09}}{4\pi} \cdot x^{-3.09}, \qquad x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

Convergence tolerance: 0.01 m. Code: PoolFire.js, lines 681–737.


15. Thermal Dose — dose(x)#

Ddose=texp[q(x)×103]4/3[(W/m2)4/3s]D_{dose} = t_{exp} \cdot \left[q(x) \times 10^3\right]^{4/3} \quad \left[(\text{W/m}^2)^{4/3} \cdot \text{s}\right]

The factor 10310^3 converts qq from kW/m² to W/m². Code: PoolFire.js, line 758.


16. Effects — Probit Functions#

Probit functions transform the thermal dose into damage probability via the standard normal distribution.


17. Time to Failure for Vessels (Domino Effect) — Cozzani Correlations#


18. Fatality Calculation — fatalidades()#

The method numerically integrates the probability of death over concentric annular rings:

Nfatal=riPdeath(ri)ρpopAring(ri)N_{fatal} = \sum_{r_i} P_{death}(r_i) \cdot \rho_{pop} \cdot A_{ring}(r_i)
SymbolDescriptionUnit
Pdeath(ri)P_{death}(r_i)Probability of death at distance rir_i (CCPS method)%
ρpop\rho_{pop}Population densitypersons/m²
Aring(ri)A_{ring}(r_i)Annular ring area

For polygon receivers (zones with known population), FatalityUtils.js uses a 10 m grid to distribute the population within the polygon and excludes that area from the uniform density calculation.

Code: PoolFire.js, lines 818–860; delegated to FatalityUtils.js.


19. Model Limitations#


20. Bibliographic References#