SFPE Handbook of Fire Protection Engineering¶
Society of Fire Protection Engineers Handbook calculations.
SFPE Handbook of Fire Protection Engineering - Fire engineering correlations and calculations.
This module contains correlations, equations, and calculation methods from the Society of Fire Protection Engineers (SFPE) Handbook of Fire Protection Engineering. The handbook serves as a reference for fire protection engineering calculations and methodologies.
Chapter 14¶
Chapter 14 - Fire Detection correlations and calculations.
This chapter contains correlations and methods for fire detection systems, including ceiling jet correlations and related fire property calculations.
Alpert Correlations¶
Alpert Correlations - Ceiling jet correlations for fire properties.
This module contains correlations developed by Alpert for ceiling jet flows beneath unconfined ceilings. These correlations relate fire properties to measurements taken in the ceiling jet.
Heat Release Rate Correlations¶
Heat Release Rate Correlations - Alpert correlations for estimating heat release rates.
This module contains the Alpert correlations for calculating heat release rates from ceiling jet temperature measurements. The correlations distinguish between two regions based on the normalized radial distance (r/H).
- ofire.sfpe_handbook.chapter_14.alpert.heat_release.from_temperature_and_position(temp, temp_amb, height, radial_position)¶
Calculate heat release rate from temperature and position using Alpert correlations.
This function implements the Alpert correlations for estimating heat release rate from ceiling jet temperature measurements at different radial positions beneath an unconfined ceiling. These correlations are fundamental for fire detection and suppression system design.
\begin{align} \text{For } \frac{r}{H} \leq 0.18: \quad &\dot{Q} = \left(\frac{(T - T_{\infty}) \cdot H^{5/3}}{16.9}\right)^{3/2} \\ \text{For } \frac{r}{H} > 0.18: \quad &\dot{Q} = \left(\frac{(T - T_{\infty}) \cdot \left(\frac{r}{H}\right)^{2/3} \cdot H^{5/3}}{5.38}\right)^{3/2} \end{align}where:
\(\dot{Q}\) is the heat release rate (kW)
\(T\) is the ceiling jet temperature (K)
\(T_{\infty}\) is the ambient temperature (K)
\(H\) is the height of the ceiling above the fire (m)
\(r\) is the radial distance from the fire centerline (m)
- Parameters:
- Returns:
Heat release rate (kW)
- Return type:
- Assumptions:
To be completed
- Limitations:
To be completed
Example
>>> import ofire >>> # Calculate heat release rate for ceiling jet at 500K, 5m high, 2m from center >>> q = ofire.sfpe_handbook.chapter_14.alpert.heat_release.from_temperature_and_position( ... temp=500.0, ... temp_amb=293.15, ... height=5.0, ... radial_position=2.0 ... ) >>> print(f"Heat release rate: {q:.1f} kW")
Chapter 50 - Smoke Control¶
This chapter contains equations for smoke control applications.
Equation 50.1 - Pressure Difference Due to Stack Effect¶
This equation calculates the pressure difference due to stack effect.
- ofire.sfpe_handbook.chapter_50.equation_50_1.pressure_difference(t_0, t_s, z)¶
Pressure difference due to stack effect.
This function calculates the pressure difference between indoor and outdoor environments due to stack effect.
\[\Delta P_{so} = 3460 \cdot \left(\frac{1}{T_0 + 273} - \frac{1}{T_s + 273}\right) \cdot z\]where:
\(\Delta P_{so}\) is the pressure difference due to stack effect (Pa)
\(T_0\) is the outdoor temperature (°C)
\(T_s\) is the shaft temperature (°C)
\(z\) is the height above the neutral pressure level (m)
- Parameters:
- Returns:
Pressure difference due to stack effect (Pa)
- Return type:
- Assumptions:
To be completed.
- Limitations:
Not applicable for complicated buildings, with shafts of various heights and different shafts temperatures.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_1.pressure_difference(-18.0, 21.0, 30.0) >>> print(f"{result:.2f} Pa")
Equation 50.2 - Pressure Difference between a Fire Compartment and its Surroundings¶
This equation calculates the pressure difference due to stack effect between a fire compartment and its surroundings.
- ofire.sfpe_handbook.chapter_50.equation_50_2.pressure_difference(t_0, t_f, z)¶
This function calculates the pressure difference between a fire compartment and its surroundings.
\[\Delta P_{so} = 3460 \cdot \left(\frac{1}{T_0 + 273} - \frac{1}{T_f + 273}\right) \cdot z\]where:
\(\Delta P_{so}\) is the pressure difference due to stack effect (Pa)
\(T_0\) is the temperature of the surroundings (°C)
\(T_f\) is the fire compartment temperature (°C)
\(z\) is the height above the neutral plane (m)
- Parameters:
- Returns:
Pressure difference due to stack effect (Pa)
- Return type:
- Assumptions:
To be completed.
- Limitations:
None stated.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_2.pressure_difference(20.0, 800.0, 1.52) >>> print(f"{result:.2f} Pa")
Equation 50.4 - Pressure Exerted by Wind on a Wall¶
- ofire.sfpe_handbook.chapter_50.equation_50_4.wind_pressure(c_w, rho_0, u_h)¶
This function calculates the pressure exerted by wind on a building’s wall surface.
\[P_w = 0.5 \cdot C_w \cdot \rho_0 \cdot u_h^2\]where:
\(P_w\) is the pressure exerted by wind (Pa)
\(C_w\) is the wind pressure coefficient (dimensionless)
\(\rho_0\) is the air density at ambient conditions (kg/m³)
\(u_h\) is the wind speed at height h (m/s)
- Parameters:
- Returns:
Pressure exerted by wind (Pa)
- Return type:
- Assumptions:
The pressure coefficient C_w depends on wind direction, building geometry and local obstructions.
- Limitations:
None stated.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_4.pressure_exerted_wind(0.8, 1.2, 15.0) >>> print(f"{result:.2f} Pa")
Equation 50.6 - Upper Limit Pressure Difference for Piston Effect¶
- ofire.sfpe_handbook.chapter_50.equation_50_6.pressure_difference(rho, a_s, a_e, u, a_a, a_ir, c_c)¶
This function calculates upper limit pressure difference due to piston effect from the shaft to the building
\[\Delta P_{usi} = \frac{\rho}{2} \cdot \left(\frac{A_s \cdot A_e \cdot u}{A_a \cdot A_{ir} \cdot C_c}\right)^2\]where:
\(\Delta P_{usi}\) is the upper limit pressure difference (Pa)
\(\rho\) is the air density in hoistway (kg/m³)
\(A_s\) is the cross-sectional area of the shaft (m²)
\(A_e\) is the effective area (m²)
\(U\) is the elevator car velocity (m/s)
\(A_a\) is the free area around the elevator car (m²)
\(A_{ir}\) is the leakage area between building and lobby (m²)
\(C_c\) is the flow coefficient for flow around car (dimensionless)
- Parameters:
rho (float) – Air density in hoistway (kg/m³)
a_s (float) – Cross-sectional area of the shaft (m²)
a_e (float) – Effective area (m²)
U (float) – Elevator car velocity (m/s)
a_a (float) – Free area around the elevator car (m²)
a_ir (float) – Leakage area between building and lobby (m²)
c_c (float) – Flow coefficient for flow around car (dimensionless)
- Returns:
Pressure difference (Pa)
- Return type:
- Assumptions:
None stated.
- Limitations:
The flow coefficient was determined experimentally at 0.94 for multiple cars and 0.83 for a single car.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_6.pressure_difference(0.8, 6.0, 5.0, 2.5, 1.0, 1.0, 0.84) >>> print(f"{result:.2f} Pa")
Equation 50.7 - Effective Area for Elevator with Enclosed Lobbies¶
- ofire.sfpe_handbook.chapter_50.equation_50_7.effective_area(a_sr, a_ir, a_io)¶
This function calculates the effective area for an elevator with enclosed lobbies.
\[A_{e} = \left(\frac{1}{A_{sr}^2} + \frac{1}{A_{ir}^2} + \frac{1}{A_{io}^2}\right)^{-0.5}\]where:
\(A_{e}\) is the effective area (m²)
\(A_{sr}\) is the leakage area between shaft and lobby (m²)
\(A_{ir}\) is the leakage area between building and lobby (m²)
\(A_{io}\) is the leakage area between the building and outside (m²)
- Parameters:
- Returns:
Effective area (m²)
- Return type:
- Assumptions:
None stated.
- Limitations:
None stated.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_7.effective_area(0.5, 0.75, 2.5) >>> print(f"{result:.6f} m²")
Equation 50.14 - Door Opening Force Resulting from Pressure Differences¶
- ofire.sfpe_handbook.chapter_50.equation_50_14.door_opening_force(f_dc, w, a, delta_p, d)¶
This function calculates the door opening force resulting from the pressure differences produced by smoke control systems.
\[F = F_{dc} + \frac{W \cdot A \cdot \Delta p}{2 (W - d)}\]where:
\(F\) is the total door opening force (N)
\(F_{dc}\) is the door closer force (N)
\(W\) is the door width (m)
\(A\) is the door area (m^2)
\(\Delta p\) is the pressure difference across the door (Pa)
\(d\) is the distance from door knob to knob side of the door (m)
- Parameters:
- Returns:
Door opening force (N)
- Return type:
- Assumptions:
None stated.
- Limitations:
None stated.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_14.door_opening_force(40.0, 0.9, 1.9, 25.0, 0.05) >>> print(f"{result:.6f} N")
Equation 50.15 - Height Limit for Pressurization Systems¶
- ofire.sfpe_handbook.chapter_50.equation_50_15.height_limit(f_r, delta_p_max, delta_p_min, t_0, t_s)¶
Height limit above which acceptable pressurization is not possible for an idealized building.
\[H_m = 0.000289 \times \frac{F_R \times (\Delta p_{max} - \Delta p_{min})}{\left|\frac{1}{T_0 + 273} - \frac{1}{T_s + 273}\right|}\]where:
\(H_m\) is the height limit (m)
\(F_R\) is the flow area factor (dimensionless)
\(\Delta p_{max}\) is the maximum design pressure difference (Pa)
\(\Delta p_{min}\) is the minimum design pressure difference (Pa)
\(T_0\) is the ambient temperature (°C)
\(T_s\) is the stairwell temperature (°C)
- Parameters:
- Returns:
Height limit (m)
- Return type:
- Assumptions:
Standard atmospheric pressure at sea level is assumed.
- Limitations:
This equation has been derived for idealised buildings. More likely to apply with systems with treated supply air.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_15.height_limit(2.0, 75.0, 25.0, 0.0, 25.0) >>> print(f"{result:.6f}")
Equation 50.16 - Flow Area Factor for Pressurization Systems¶
- ofire.sfpe_handbook.chapter_50.equation_50_16.factor(a_sb, a_bo, t_b, t_s)¶
Flow area factor for pressurization systems, relevant for the calculation of the maximum height limit.
\[F_r = 1 + \frac{A_{SB}^2 \times (T_b + 273)}{A_{BO}^2 \times (T_s + 273)}\]where:
\(F_r\) is the flow area factor (dimensionless)
\(A_{SB}\) is the stairwell bottom opening area (m²)
\(T_b\) is the building interior temperature (°C)
\(A_{BO}\) is the building outside opening area (m²)
\(T_s\) is the stairwell temperature (°C)
- Parameters:
- Returns:
Flow area factor (dimensionless)
- Return type:
- Assumptions:
None stated.
- Limitations:
Refer to the SFPE Handbook for details. To determine \(A_{SB}\) and \(A_{BO}\), the specifc layout of the lobbies and stairwells as well as the leakage paths must be understood.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_16.factor(0.005, 0.005, 15.0, 5.0) >>> print(f"{result:.6f}")
Equation 50.17 - Stairwell Temperature for Untreated Pressurization Air¶
- ofire.sfpe_handbook.chapter_50.equation_50_17.stairwell_temperature(t_0, eta, t_b)¶
Stairwell temperature calculation for untreated pressurization air.
\[T_S = T_0 + \eta (T_B - T_0)\]where:
\(T_S\) is the stairwell temperature (°C)
\(T_0\) is the outdoors temperature (°C)
\(\eta\) is the heat transfer factor (dimensionless)
\(T_B\) is the building temperature (°C)
- Parameters:
- Returns:
Stairwell temperature (°C)
- Return type:
- Assumptions:
None stated.
- Limitations:
This equation applies to untreated pressurization air. A heat transfer factor of \(\eta = 0.15\) is suggested in the absence of better data.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_17.stairwell_temperature(-10.0, 0.15, 15.0) >>> print(f"{result:.2f}")
Equation 50.18 - Fractional Effective Dose¶
- ofire.sfpe_handbook.chapter_50.equation_50_18.fed(c_i, delta_t_i, lc_t50)¶
Fractional Effective Dose (FED) calculation for evaluation of exposure to smoke.
\[FED = \frac{\sum (C_i \Delta t_i)}{LCt_{50}}\]where:
\(FED\) is the fractional effective dose (dimensionless)
\(C_i\) is the mass concentration of material burned at the end of time interval i (g/m³)
\(\Delta t_i\) is the time interval i (s)
\(LC_{t50}\) is the lethal exposure dose from test data (g/m³)
- Parameters:
- Returns:
Fractional effective dose (dimensionless)
- Return type:
- Assumptions:
Uniform time intervals.
- Limitations:
Simplest model for evaluating exposure to smoke.
Example
>>> import ofire >>> c_i = [0.001, 0.002, 0.003] >>> delta_t_i = 1.0 >>> lc_t50 = 10.0 >>> result = ofire.sfpe_handbook.chapter_50.equation_50_18.fed(c_i, delta_t_i, lc_t50) >>> print(f"{result:.2f}")
Equation 50.19 - Visibility Through Uniform Smoke¶
- ofire.sfpe_handbook.chapter_50.equation_50_19.visibility(k, delta_m, c_i)¶
Visibility in smoke at a point where mass concentration of fuel burned is known.
\[S_i = \frac{K}{2.303 {\delta}_m C_i}\]where:
\(S_i\) is the visibility through smoke (m)
\(K\) is the proportionality constant (dimensionless)
\({\delta}_m\) is the mass optical density (m²/g)
\(C_i\) is the mass concentration of fuel burned (g/m³)
- Parameters:
- Returns:
Visibility through smoke (m)
- Return type:
- Assumptions:
The calculated visibility can be thought of as visibility if smoke is uniform.
- Limitations:
See assumptions above. Assumes uniform smoke and, utilises the proportionality constant K, commonly taken as 8 for illuminated signs and 3 for non-illuminated.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_19.visibility(8.0, 0.22, 1.0) >>> print(f"{result:.2f}")
Equation 50.20 - Visibility Through Smoke (Percent Obscuration)¶
- ofire.sfpe_handbook.chapter_50.equation_50_20.visibility()¶
Visibility calculation through smoke from percent obscuration.
\[S_i = -\frac{K L}{\ln(1 - \frac{\lambda}{100})}\]where:
\(S_i\) is the visibility through smoke (m)
\(K\) is proportionality constant (dimensionless)
\(L\) is the path length (m)
\(\lambda\) is the percent obscuration (dimensionless)
- Parameters:
- Returns:
Visibility through smoke (m)
- Return type:
- Assumptions:
An object can be seen for S > L.
- Limitations:
None stated.
Example
>>> import ofire >>> result = ofire.sfpe_handbook.chapter_50.equation_50_20.visibility(8.0, 10.0, 95.0) >>> print(f"{result:.2f}")