Heat Flux Hazards¶
Flames, hot metal surfaces, and other heat sources can cause burns. The heat flux is the amount of heat energy transferred per unit area per unit time. The heat flux is measured in W/m^2.

Figure 1:1st, 2nd, and 3rd Degree Burns Image Reference
From Handbook of Chemical Hazards Analysis Procedures (1989), Table 4.2
| Heat Radiation Intensity (kW/m^2) | Time for pain (seconds) | Time for 2nd Degree Burn (seconds) |
|---|---|---|
| 1 | 115 | 663 |
| 2 | 45 | 187 |
| 3 | 27 | 92 |
| 4 | 18 | 57 |
| 5 | 13 | 40 |
| 6 | 11 | 30 |
| 8 | 7 | 20 |
| 10 | 5 | 14 |
| 12 | 4 | 11 |
Reference Link (You may have to click the ‘reference link’ twice to get it to work.)
import pandas as pd
data = {'Radiation (kW/m2)':[1,2,3,4,5,6,8,10,12],
'Pain time (sec)':[115,45,27,18,13,11,7,5,4],
'2nd Degree Time (sec)':[663, 187,92,57,40,30,20,14,11]}
df = pd.DataFrame(data)DESR 6055.09 is the handbook for the Department of Defense and gives the following relationship for heat flux (q, kW/m2) and time,t, before a 2nd degree burn:
#Causitive variable from Probit correlations from death from burning
import numpy as np
time = np.linspace(5, 700, 1000)
def Q2(t):
return (t/200)**(-1/1.46)import matplotlib.pyplot as plt
df.plot(x='2nd Degree Time (sec)', y='Radiation (kW/m2)', kind = 'scatter', label='EPA 2nd Degree Burn')
plt.scatter(df['Pain time (sec)'], df['Radiation (kW/m2)'], marker = '+', label = 'EPA Pain threshold')
plt.plot(time, Q2(time), label = 'DESR 6055 Q')
plt.legend(); plt.show()
The above plot shows that the relationship used for the military (DESR 6055) is conservative relative to the EPA’s Handbook of Chemical Hazards Analysis Procedures. Considert that in full sun, the approximate radiation is 1 kW/m2. Would it really take 660 seconds (11 minutes) to get a sunburn that blisters? No, it would take longer indicating that both relationships are conservative.
Estimating thermal flux from a fire¶
The radiation from a fire or fireball descreases with the square of the distance from the fire. The heat flux is given by:
where is the power of the fire in watts and is the distance from the fire in meters.
Thus, if a fire has a power of 1 MW and you are 10 meters away, the heat flux is:
‘Your answer here’
How long would you have before a 2nd degree burn?
Overpressure Hazards¶
The below blast waveform is from a detonation where a mass of explosive material is rapidly converted to gas, creating a high-pressure wave that propagates outward. The peak overpressure () and the duration of the positive phase () depend on factors such as the type and amount of explosive, the distance from the explosion, and the surrounding environment.
Other explosions (bursting of a vessel, BLEVE, etc.) may have different blast wave characteristics where the overpressure rises more slowly and the duration is longer.

Figure 2:Blast Wave Overpressure vs. Time (Friedlander Waveform). Generated with Gemini.
Friedlander waveforms are commonly used to represent blast waves from explosions. The overpressure (the pressure above atmospheric pressure) can cause physical injuries, particularly to the lungs and eardrums.
0.4 psig: limited minor structural damage
0.4-1.0 psig: window breakage to partial demolition of houses
1-5 psig: significant damage to buildings to nearly complete destruction of houses (think about the total pressure on a 10 ft x 10 ft wall)
2 psig: Threshold for ear drum rupture
10 psig: Threshold for lung and traumatic brain injury
35 psig: Threshold for fatal injuries
#Example calculation using the Friedlander waveform:
import numpy as np
Po = 10 # Peak overpressure in psig
td = 0.1 # Duration of positive phase in seconds
P_t = lambda t: Po * (1 - t/td) * np.exp(-t/td)
P_t(0.05), P_t(0.1), P_t(0.2), P_t(.6) # Overpressure at t=0.05s, 0.1s, and 0.2s(3.032653298563167, 0.0, -1.353352832366127, -0.12393760883331802)Noise¶
Sound pressure level (SPL) is used as an intensity measure. The lowest SPL that can be heard by the human ear is near 2E-5 Pa. Thus in the below equation is 2E-5 Pa.
where is the sound pressure and is the intensity.
See “Permissible Noise Exposures,” [https://
Industrial hygienists help protect workers from over exposure: Industrial Hygienists.
Acute vs. Chronic¶
Some injuries are acute\index{acute}, or of short duration, and others are chronic\index{chronic} and last years. Similarly, some toxins\index{toxin} act over a short time and others are chronic and can change the genetic instructions our bodies use (mutagens)\index{mutagen}. Other chemicals can cause cancer (like asbestos causing malignant mesothelioma). Some toxins can cause birth defects and others damage the reproductive system\index{reproductive system} (such as some heavy metals). Some acute toxins can directly target different organs in the body: neurotoxins (nervous system), hepatotoxicants (liver), nephrotoxicants (kidneys), pulmonotoxicants (lungs), or hemotoxicants (blood).
Elimination of Toxins¶
Our bodies have natural mechanisms to eliminate toxins. The liver metabolizes many toxins into less harmful substances that can be excreted in the urine or feces. The liver can use enzymes such as cytochrome P450 (CYP450) to oxidize toxins, making them more water-soluble. It can use other mechanisms such as conjugation (adding another chemical group to the toxin) to make it easier to eliminate. Or enzymes can hydrolyze toxins into less harmful substances.
The kidneys filter the blood to remove waste products and toxins, which are then excreted in the urine. The lungs can expel volatile toxins through exhalation. The skin can also eliminate some toxins through sweat.
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# Parameters
ti = np.linspace(0, 10, 100)
kp = 0.5
V = 5
C0 = 0 # Initial concentration in blood
# Define Dose D(t) as a function of time
def get_D(t):
# If time is in the last 50 time points, dose is 0
if t > ti[len(ti)-50]:
return 0
return 4
# Differential Equation: dC/dt = Dose/V - kp*C
def model(C, t):
dCdt = get_D(t)/V - kp*C
return dCdt
def model2(C, t):
dCdt = get_D(t)/V
return dCdt
# Solve ODE
C = odeint(model, C0, ti)
CnK = odeint(model2, C0, ti)
# Plotting the results
plt.plot(ti, C, label='Toxin Concentration')
plt.plot(ti, CnK, label='Toxin Concentration, no kidney elimination', linestyle='--')
plt.xlabel('Time')
plt.ylabel('Concentration (C)')
plt.title('Toxin Concentration Over Time')
plt.grid(True)
plt.show()
Process Injuries¶
In addition to the above injury modes, there are other physical injury modes common in processing industries:
Moving equipment, machinery, and vehicles
Falls from heights
Confined spaces
Electrical hazards
etc.
Common Injury Frequencies¶
| Injury Mode | Likelihood (yr−1) | Ref. |
|---|---|---|
| Driving fatality | 0.022 | iihs.org |
| Table saw injury | 0.003 | see text |
| Total OSHA recordable injuries | 0.01 | bls.gov¹ |
| “Work-related slip, trips, and falls” | 0.002 | bls.govᵃ |
| Work-related fatalities | 2.0×10−5 | bls.govᵃ |
| Chemical manufacturing related fatalities | 2.3×10−5 | bls.govᵃ and statista.com² |