# Flash Fire
Source: https://tekrisk.com/en/docs/risk-models/flash-fire

Technical documentation for the Flash Fire (SLAB) consequence model — dense gas atmospheric dispersion, concentration field, flammability zones, and LFL/UFL distance estimation

## 1. Introduction and Physical Phenomenon

### 1.1 Flash Fire and SLAB

A **Flash Fire** occurs when a flammable gas cloud disperses in the atmosphere, reaches a flammable concentration (between LFL and UFL), and ignites without producing significant overpressure. The result is a rapidly propagating flame that sweeps through the cloud, causing lethal burns in the engulfed zone.

The **SLAB** (*Simulating Large Atmospheric Body*) engine is a direct JavaScript translation of the original Fortran code developed by Donald L. Ermak at Lawrence Livermore National Laboratory (1990). It preserves the physics, constants, and subroutine structure of the original model.

SLAB predicts the spatio-temporal evolution of a dense gas cloud along **61 downwind grid points**, computing:

- Substance concentration (mass fraction and volume fraction)
- Cloud geometry (height, crosswind half-width, alongwind half-width)
- Mixture temperature and density
- Downwind, crosswind, and vertical velocities

### 1.2 Industrial Context

<Callout type="warn" title="Dense gas behavior">
SLAB was designed for gases denser than air (cryogenic LNG, LPG, chlorine). Dense gas clouds hug the ground and spread laterally under gravity, creating large flammable zones at low wind speeds.
</Callout>

<Cards>
  <Card title="Evaporating Pool (idspl=1)">
    Ground-level spill evaporating at steady state — LNG, LPG, or cryogenic liquid spills
  </Card>
  <Card title="Horizontal Jet (idspl=2)">
    Pressurized horizontal release at height $h_s > 0$ — pipeline or vessel failures
  </Card>
  <Card title="Vertical Jet (idspl=3)">
    Pressurized vertical release with plume rise — pressure relief vents, blowouts
  </Card>
  <Card title="Instantaneous (idspl=4)">
    Total mass released at once; transient puff mode — catastrophic vessel rupture
  </Card>
</Cards>

### 1.3 Scope of This Model

Results are used to determine:

1. Distance to LFL (Lower Flammable Limit) — inner boundary of flash fire zone
2. Distance to 50% LFL — precautionary planning distance
3. Distance to UFL (Upper Flammable Limit) — outer boundary of over-rich zone
4. IDLH, ERPG, and AEGL toxic thresholds (when applicable)
5. Cloud geometry (height, width) at each downwind distance
6. GeoJSON isopleths for GIS visualization

---

## 2. Calculation Sequence

<Mermaid>
{`flowchart TD
    A["Input Data<br/>(30+ parameters)"] --> B["Step 1: Chemical Properties<br/>slabHelpers.ts — YAWS mapping<br/>cps, cpsl, rhosl, dhe"]
    B --> C["Step 2: Validation<br/>Zod schema + coherence checks<br/>qs>0 for idspl 1-3; qtis>0 for idspl=4"]
    C --> D["Step 3: Initialization<br/>Monin-Obukhov wind profile<br/>Mixing layer hmx, source conditions"]
    D --> E["Step 4: Integration Loop<br/>61 grid points: x=0 → xffm<br/>slope() → RK4 → solve() → eval() → thermo() → entran()"]
    E --> F["Step 5: Concentration Field<br/>Crosswind profile (6 positions)<br/>Cloud duration tcld, effective width with meander"]
    F --> G["Step 6: Post-processing<br/>LFL/UFL concentration zones<br/>Cloud mass per isopleth, GeoJSON output"]

    style A fill:#e1f5fe
    style G fill:#c8e6c9
    style E fill:#fff3e0`}
</Mermaid>

<Steps>
  <Step>
    **Chemical Property Mapping** — `mapChemicalToSlabInput()` retrieves gas/liquid heat capacities, liquid density, and heat of vaporization from the YAWS database, converting units for the SLAB engine.
  </Step>
  <Step>
    **Validation** — Zod schema validates types and ranges; coherence checks ensure `qs > 0` for continuous sources (`idspl` 1–3) and `qtis > 0` for instantaneous release (`idspl=4`).
  </Step>
  <Step>
    **Initialization** — Computes the Monin-Obukhov wind profile, estimates the mixing layer height $h_{mx}$, and sets initial cloud state variables for the chosen source type.
  </Step>
  <Step>
    **Integration Loop** — Advances the 11-ODE system along 61 grid points from $x=0$ to `xffm` using 4th-order Runge-Kutta, calling `slope()`, `solve()`, `eval()`, `thermo()`, and `entran()` at each step.
  </Step>
  <Step>
    **Concentration Field** — Computes the crosswind concentration profile at 6 lateral positions, cloud duration $t_{cld}$, and effective dispersion width incorporating wind meander.
  </Step>
  <Step>
    **Post-processing** — Identifies LFL/UFL concentration zones by linear interpolation, computes cloud mass per isopleth, and generates GeoJSON polygons for visualization.
  </Step>
</Steps>

---

## 3. Input Parameters

<Tabs items={["Material Properties", "Source Conditions", "Meteorological", "Field Parameters"]}>
  <Tab value="Material Properties">

| Parameter | Symbol | Unit | Source |
|-----------|--------|------|--------|
| `wms` | $M_s$ | kg/kmol | Chemical DB (`mw`) |
| `cps` | $c_{p,s}$ | J/(kg·K) | YAWS gas polynomial |
| `tbp` | $T_{bp}$ | K | Chemical DB (`boilingPoint`) |
| `dhe` | $\Delta H_{vap}$ | J/kg | Chemical DB (`hvaptb`) |
| `cpsl` | $c_{p,sl}$ | J/(kg·K) | YAWS liquid polynomial |
| `rhosl` | $\rho_{sl}$ | kg/m³ | YAWS density correlation |
| `cmed0` | $c_{med,0}$ | — | Initial liquid mass fraction (0 = all vapor) |
| `spb`, `spc` | — | K | Clausius-Clapeyron constants |

  </Tab>
  <Tab value="Source Conditions">

| Parameter | Symbol | Unit | Description |
|-----------|--------|------|-------------|
| `ts` | $T_s$ | K | Source temperature |
| `qs` | $\dot{q}_s$ | kg/s | Mass rate (continuous sources) |
| `as` | $A_s$ | m² | Source area |
| `tsd` | $t_{sd}$ | s | Release duration |
| `qtis` | $M_{inst}$ | kg | Total mass (only for `idspl=4`) |
| `hs` | $h_s$ | m | Source height |

  </Tab>
  <Tab value="Meteorological">

| Parameter | Symbol | Unit | Description |
|-----------|--------|------|-------------|
| `ua` | $u_a$ | m/s | Wind speed at height `za` |
| `za` | $z_a$ | m | Wind measurement height |
| `ta` | $T_a$ | K | Ambient temperature |
| `rh` | $RH$ | % | Relative humidity |
| `stab` | — | 0–6 | Pasquill-Gifford stability class (A=1 … F=6) |
| `ala` | $\Lambda = 1/L$ | 1/m | Inverse Monin-Obukhov length (only when `stab=0`) |
| `z0` | $z_0$ | m | Surface roughness length |

  </Tab>
  <Tab value="Field Parameters">

| Parameter | Description |
|-----------|-------------|
| `tav` | Concentration averaging time (s) |
| `xffm` | Maximum downwind distance computed (m) |
| `zp[4]` | Concentration measurement heights (m) |
| `ncalc` | Numerical sub-step multiplier (1–10) |

  </Tab>
</Tabs>

---

## 4. Chemical Properties — YAWS Mapping

Before running the SLAB engine, `mapChemicalToSlabInput()` computes thermodynamic properties from YAWS regression coefficients.

<Tabs items={["Gas Heat Capacity", "Liquid Heat Capacity", "Liquid Density", "Heat of Vaporization"]}>
  <Tab value="Gas Heat Capacity">

### 4.1 Ideal Gas Heat Capacity

$$
c_{p,gas}(T) = \frac{c_{pga} + c_{pgb} T + c_{pgc} T^2 + c_{pgd} T^3 + c_{pge} T^4}{M_w} \times 10^3 \quad [\text{J/(kg·K)}]
$$

Evaluated at $T = T_{bp}$. **Code:** `slabHelpers.ts` → `calculateGasHeatCapacity()`.

  </Tab>
  <Tab value="Liquid Heat Capacity">

### 4.2 Liquid Heat Capacity

$$
c_{p,liq}(T) = \frac{c_{pla} + c_{plb} T + c_{plc} T^2 + c_{pld} T^3}{M_w} \times 10^3 \quad [\text{J/(kg·K)}]
$$

**Code:** `slabHelpers.ts` → `calculateLiquidHeatCapacity()`.

  </Tab>
  <Tab value="Liquid Density">

### 4.3 Liquid Density (YAWS)

$$
\rho_L(T) = d_{lqa} \cdot d_{lqb}^{-(1 - T/T_c)^{d_{lqn}}} \times 10^3 \quad [\text{kg/m}^3]
$$

**Code:** `slabHelpers.ts` → `calculateLiquidDensity()`.

  </Tab>
  <Tab value="Heat of Vaporization">

### 4.4 Heat of Vaporization Conversion

Converted from kJ/mol to J/kg:

$$
\Delta H_{vap} \, [\text{J/kg}] = \frac{h_{vap,tb} \, [\text{kJ/mol}] \times 10^6}{M_w \, [\text{g/mol}]}
$$

**Code:** `slabHelpers.ts`, line 469.

  </Tab>
</Tabs>

---

## 5. Wind Profile — Monin-Obukhov Similarity Theory

SLAB models the vertical wind speed profile using **Monin-Obukhov Similarity Theory** within the atmospheric surface layer:

$$
u(z) = \frac{u_*}{\kappa} \left[\ln\!\left(\frac{z}{z_0}\right) - \Psi_M\!\left(\frac{z}{L}\right)\right]
$$

| Symbol | Description |
|--------|-------------|
| $u_*$ | Friction velocity [m/s] |
| $\kappa = 0.41$ | von Kármán constant |
| $z_0$ | Surface roughness length [m] |
| $L$ | Monin-Obukhov length [m]; $\Lambda = 1/L$ = `ala` |
| $\Psi_M$ | Momentum stability correction function |

<Tabs items={["Unstable (z/L < 0)", "Stable (z/L > 0)"]}>
  <Tab value="Unstable (z/L < 0)">

$$
\Psi_M = 2\ln\!\left(\frac{1+\phi_M^{-1}}{2}\right) + \ln\!\left(\frac{1+\phi_M^{-2}}{2}\right) - 2\arctan(\phi_M^{-1}) + \frac{\pi}{2}
$$

  </Tab>
  <Tab value="Stable (z/L > 0)">

$$
\Psi_M = -5 \cdot \frac{z}{L}
$$

  </Tab>
</Tabs>

**Code:** `slab-js/utils/uafn.js` (function `uafn`). **Reference:** Ermak (1990), §2.1; Monin & Obukhov (1954).

### 5.1 Pasquill-Gifford Stability Classes

| PG Class | `stab` | $\Lambda = 1/L$ [1/m] | Condition |
|----------|--------|----------------------|-----------|
| A | 1 | −0.10 to −0.05 | Very unstable |
| B | 2 | −0.05 to −0.02 | Unstable |
| C | 3 | −0.02 to −0.005 | Slightly unstable |
| D | 4 | ≈ 0 | Neutral |
| E | 5 | +0.005 to +0.02 | Slightly stable |
| F | 6 | +0.02 to +0.10 | Stable |

---

## 6. Conservation Equations (11-ODE System)

The engine solves **11 ordinary differential equations** along the downwind direction $x$. The most important equations are:

<Accordions type="multiple">
  <Accordion title="Mass Conservation — f[1]">

$$
\frac{d}{dx}(\rho u A) = \rho_a \sqrt{3}(v h + w b_b) + \dot{q}_s
$$

where $v$ and $w$ are the horizontal and vertical entrainment velocities.

**Code:** `slope.js`, `f[1]` (line 103).

  </Accordion>
  <Accordion title="Lateral Spreading — Half-width bb — f[2]">

$$
\frac{d b_b}{dx} = \frac{\sqrt{3}(\rho_a/\rho) v + v_g}{u}
$$

The gravitational spreading velocity for dense gases:

$$
v_g = \sqrt{\frac{d(\rho - \rho_a)}{dx} \cdot \alpha_g \cdot g \cdot h^2}, \quad \alpha_g = 0.25
$$

**Code:** `slope.js`, `f[2]` (line 110).

  </Accordion>
  <Accordion title="Crosswind Momentum (Gravitational Spreading) — f[4]">

$$
\frac{d}{dx}\left[\rho u v_g b_b\right] = \alpha_{gv} \cdot g \cdot (\rho - \rho_a) \cdot h^2
$$

The coefficient $\alpha_{gv} = 0.75$ is the vertical gravitational spreading factor.

**Code:** `slope.js`, `f[4]` (line 125).

  </Accordion>
  <Accordion title="Vertical Momentum — Center Height zc — f[7], f[8]">

$$
\frac{d z_c}{dx} = \frac{w_c}{u}, \quad 0 \leq z_c \leq h_{mx} - 0.5\, h
$$

$$
\frac{d}{dx}[\rho u w_c b_b h] = -g(\rho - \rho_a) b_b h
$$

A cloud denser than air ($\rho > \rho_a$) experiences downward acceleration — the mechanism that keeps dense gas clouds near the ground.

**Code:** `slope.js`, `f[7]` and `f[8]`; `solve.js`, lines 123–136.

  </Accordion>
  <Accordion title="Energy Conservation (Temperature Flux) — f[5]">

$$
\frac{d}{dx}[c_p \rho u T \cdot A] = f_t
$$

where $f_t$ includes surface friction heat transfer and ground heat exchange.

**Code:** `slope.js`, `f[5]`; `entran.js`, line 366.

  </Accordion>
</Accordions>

---

## 7. Velocities and Cloud Height — `eval()`

At each step, `eval()` iteratively solves (max. 11 iterations, tolerance $\Delta u/u < 0.001$) the coupled system:

**Cloud height** (from mass conservation):
$$
h = \frac{r}{\rho \cdot u \cdot b_b}
$$

**Downwind velocity** (cubic equation, Ermak 1990 §3.2):
$$
u^3 - u_0 \, u^2 + u_{g}^3 = 0
$$

solved analytically using the trigonometric form of Cardano's formula.

**Boundary layer mean velocity** (Simpson's rule integration):
$$
\bar{u}_a \approx \frac{u_1 + 4u_{1/2} + u_2}{6}
$$

**Code:** `slab-js/core/eval.js`.

---

## 8. Entrainment Rates — `entran()`

Entrainment is the primary cloud dilution mechanism — the process by which ambient air mixes into the cloud and reduces concentration.

<Tabs items={["Vertical Entrainment w", "Horizontal Entrainment v", "Total Friction Velocity"]}>
  <Tab value="Vertical Entrainment w">

### 8.1 Vertical Entrainment Velocity

$$
w = \frac{u_{ref}}{u_a(h_{tp})} \cdot \alpha_e \cdot \kappa \cdot u_* \cdot \left(\frac{f_{pr}}{\phi_m(h_{tp})} + \frac{f_{pr,b}}{\phi_m(h_b)}\right)
$$

| Symbol | Value | Description |
|--------|-------|-------------|
| $\alpha_e$ | 1.50 | Entrainment coefficient |
| $\kappa$ | 0.41 | von Kármán constant |
| $f_{pr}$ | $1 - h_{tp}/h_{mx}$ | Profile factor (vanishes at mixing layer top) |

**Code:** `entran.js`, lines 251–272.

  </Tab>
  <Tab value="Horizontal Entrainment v">

### 8.2 Horizontal Entrainment Velocity

$$
v = \sqrt{v_a^2 + c_{f1} \cdot v_{jet}^2}
$$

where $v_a$ is ambient turbulence entrainment and $v_{jet}$ is jet shear entrainment:

$$
v_a = \frac{\alpha_{fa} \cdot s_{tb} \cdot \bar{u}_a}{1 + (\sigma_b / 2\alpha_{fa} s_{tb}) \cdot b_b / \sqrt{3}}
$$

with $c_{f1} = 0.02$, $\sigma_b = 0.0004$.

**Code:** `entran.js`, lines 281–293.

  </Tab>
  <Tab value="Total Friction Velocity">

### 8.3 Total Friction Velocity

$$
u_{*,total}^2 = u_{*,bulk}^2 + u_{*,shear}^2 + u_{*,convect}^2
$$

The convective contribution (unstable conditions, $T_{ground} > T_{cloud}$):

$$
u_{*,convect}^2 = \left[c_{th} \cdot g \cdot \frac{(T_{ground} - T_{cloud})}{T_{mean}} \cdot v_h \cdot h\right]^{2/3}, \quad c_{th} = 0.14
$$

**Code:** `entran.js`, lines 195–215.

  </Tab>
</Tabs>

---

## 9. Thermodynamics — `thermo()`

The subroutine solves the thermodynamic equilibrium of the cloud + air mixture at each step.

<Accordions type="multiple">
  <Accordion title="Energy Balance — Initial Temperature Estimate">

The mixture temperature is initially estimated from the enthalpy balance:

$$
T = \frac{e_{trn}}{c_p}
$$

$$
e_{trn} = (1-c_m) c_{p,a} T_a + c_m c_{p,s} T_s + \frac{r_0}{r}\left[c_{p,0} T_0 - (1-c_{m,0})c_{p,a} T_a - c_{m,0} c_{p,s} T_s + e_{fr}\right]
$$

  </Accordion>
  <Accordion title="Vapor-Liquid Equilibrium (Clausius-Clapeyron)">

For the source substance:

$$
P_{sat,s} = P_a \exp\!\left(A_s - \frac{B_s}{T + C_s}\right), \quad A_s = \ln(P_a) + \frac{B_s}{T_{bp} + C_s}
$$

For water:

$$
P_{sat,w} = P_a \exp\!\left(15.08 - \frac{5514}{T}\right)
$$

Constants $B_s$ and $C_s$ are user-provided parameters `spb` and `spc`.

  </Accordion>
  <Accordion title="Newton-Raphson Temperature Iteration">

Iterates up to 15 times (tolerance $\Delta T < 0.001$ K) until vapor fractions $c_{m,ev}$ and $c_{m,wv}$ are consistent with saturation pressures and energy balance:

$$
T^{k+1} = T^k - \frac{T^k - T^k_a}{1 + \dfrac{\Delta H_w \cdot \partial c_{m,wv}/\partial T + \Delta H_s \cdot \partial c_{m,ev}/\partial T}{c_p}}
$$

  </Accordion>
  <Accordion title="Cloud Density">

$$
\rho = \frac{\rho_a \, T_a}{\alpha_m \, T + \beta_m \, T_a}
$$

where $\alpha_m$ is the effective molecular weight factor and $\beta_m$ is the volumetric correction for the liquid fraction.

**Code:** `thermo.js`, function `calculateDensity()`, lines 451–473.

  </Accordion>
</Accordions>

---

## 10. Concentration Field

<Tabs items={["Steady-state Plume (idspl 1-3)", "Transient Puff (idspl=4)", "Wind Meander Correction"]}>
  <Tab value="Steady-state Plume (idspl 1-3)">

### 10.1 Crosswind Concentration Profile

SLAB computes concentration at 6 lateral positions $y/b_{bc} = \{0,\ 0.5,\ 1.0,\ 1.5,\ 2.0,\ 2.5\}$:

$$
c(x, y, z) = c_{max}(x, z) \cdot F_c\!\left(\frac{y}{b_{bc}}\right)
$$

with **uniform distribution** for $|y| \leq b_{bc}$ and **Gaussian decay** outside.

  </Tab>
  <Tab value="Transient Puff (idspl=4)">

### 10.2 Transient Puff Mode

For instantaneous releases, concentration also varies in time. At each downwind point:

- $t_{imp}$ — time of maximum concentration arrival
- $t_{cld}$ — cloud duration (time above threshold)

Both are used to determine worst-case exposure duration for hazard assessment.

  </Tab>
  <Tab value="Wind Meander Correction">

### 10.3 Effective Width with Wind Meander

For averaging times $t_{av} > 0$, the effective half-width incorporates lateral wind direction variability:

$$
b_{bc} = b_b \sqrt{1 + \sigma_y^2 / b_b^2}
$$

where $\sigma_y$ is the additional lateral dispersion due to wind meander.

  </Tab>
</Tabs>

---

## 11. Numerical Integration — Runge-Kutta 4

The 11-ODE system is integrated along $x$ using the **4th-order Runge-Kutta** method:

$$
y_{n+1} = y_n + \frac{\Delta x}{6}(k_1 + 2k_2 + 2k_3 + k_4)
$$

The integration step $\Delta x$ is automatically adjusted by the `ncalc` sub-step multiplier. The output grid has **61 points** distributed logarithmically from $x = 0$ to `xffm`.

**Code:** `slab-js/core/rungeKutta.js`.

---

## 12. Post-processing and Outputs

<Tabs items={["Concentration Zones", "Cloud Mass per Isopleth"]}>
  <Tab value="Concentration Zones">

### 12.1 Flammability and Hazard Zones

| Zone | Concentration | Criterion |
|------|---------------|-----------|
| LFL | `lel` % vol | Lower Flammable Limit — inner flash fire boundary |
| 50% LFL | `0.5 × lel` % | Precautionary planning zone |
| UFL | `uel` % vol | Upper Flammable Limit — over-rich zone boundary |

Distances are obtained by linear interpolation on the 61-point output grid.

**Code:** `slabAction.ts`, function `findDistanceForConcentration()`.

  </Tab>
  <Tab value="Cloud Mass per Isopleth">

### 12.2 Cloud Mass per Isoconcentration

$$
M_{cloud}(c_{target}) = \int_{V:\, c \geq c_{target}} \rho(x,y,z) \, dV
$$

Computed numerically by integrating over the 61 downwind grid points.

**Code:** `analysis/isopleths.js`.

  </Tab>
</Tabs>

---

## 13. Physical Constants

<Accordions type="single">
  <Accordion title="View model constants">

| Constant | Value | Description |
|----------|-------|-------------|
| $\kappa$ | 0.41 | von Kármán constant |
| $\alpha_e$ | 1.50 | Entrainment coefficient |
| $c_{f1}$ | 0.02 | Friction coefficient 1 |
| $C_{RI}$ | 0.025 | Richardson number criterion |
| $c_{th}$ | 0.14 | Convective heat transfer coefficient |
| $\alpha_g$ | 0.25 | Horizontal gravitational spreading factor |
| $\alpha_{gv}$ | 0.75 | Vertical gravitational spreading factor |
| $\sigma_b$ | 0.0004 | Buoyancy sigma coefficient |
| $c_{ws}$ | 0.05 | Wind shear coefficient |
| $R$ | 8.31431 | Universal gas constant [J/(mol·K)] |
| $g$ | 9.80665 | Gravitational acceleration [m/s²] |
| $P_a$ | 101 325 | Standard atmospheric pressure [Pa] |

**Code:** `slab-js/state/constants.js`.

  </Accordion>
</Accordions>

---

## 14. Model Limitations

<Accordions type="multiple">
  <Accordion title="Flat, homogeneous terrain">
    SLAB assumes flat terrain with no obstacles. It does not model channeling through valleys, buildings, or topographic features.
  </Accordion>
  <Accordion title="Constant, unidirectional wind">
    Wind speed and direction are fixed throughout the simulation. There is no temporal wind variability or backing/veering.
  </Accordion>
  <Accordion title="Single cloud simulation">
    The model simulates a single cloud from one source. It does not model multiple simultaneous sources or cloud interactions.
  </Accordion>
  <Accordion title="Dense gas assumption">
    Designed for gases denser than air (LNG, LPG, chlorine). For very light gases ($\rho_s \ll \rho_a$) results are conservative — the model may overestimate ground-level concentrations.
  </Accordion>
  <Accordion title="No reactive chemistry">
    Chemical reactions between the gas and ambient air are not modeled. Concentration is treated as a conserved scalar throughout the simulation.
  </Accordion>
  <Accordion title="Surface boundary layer validity">
    Monin-Obukhov theory is valid within the surface layer ($z < h_{mx}$). The model limits entrainment above the mixing layer.
  </Accordion>
  <Accordion title="61-point spatial resolution">
    The output grid is fixed at 61 points. Regions of rapid concentration change near the source may be under-sampled with `ncalc=1`.
  </Accordion>
  <Accordion title="Clausius-Clapeyron parameters">
    Parameters `spb` and `spc` must be provided by the user. If not available in the chemical database, vapor-liquid equilibrium is omitted from the calculation.
  </Accordion>
  <Accordion title="Fixed empirical constants">
    Entrainment ($\alpha_e$, $c_{f1}$) and spreading ($\alpha_{gv}$) coefficients are fixed constants calibrated from laboratory and field experiments. Their validity for extreme conditions is not guaranteed.
  </Accordion>
  <Accordion title="Near-source uncertainty">
    In the immediate source zone ($x < b_s$), the model uses approximations. Results within the source area carry greater uncertainty.
  </Accordion>
</Accordions>

---

## 15. Bibliographic References

<Accordions type="single">
  <Accordion title="View complete reference list">

| # | Reference |
|---|-----------|
| 1 | **Ermak, D.L.** (1990). *SLAB: An Atmospheric Dispersion Model for Denser-than-Air Releases*. UCRL-MA-105607. Lawrence Livermore National Laboratory, Livermore, CA. — **Primary model reference** |
| 2 | **Monin, A.S. & Obukhov, A.M.** (1954). Basic laws of turbulent mixing in the ground layer of the atmosphere. *Tr. Geofiz. Inst. AN SSSR*, 151, 163–187. |
| 3 | **Pasquill, F.** (1961). The estimation of the dispersion of windborne material. *Meteorological Magazine*, 90, 33–49. |
| 4 | **YAWS, C.L.** (1999). *Chemical Properties Handbook*. McGraw-Hill, New York. |
| 5 | **Spicer, T.O. & Havens, J.A.** (1989). *User's Guide for the DEGADIS 2.1 Dense Gas Dispersion Model*. EPA/450/4-89/019. |
| 6 | **CCPS** (1999). *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed. AIChE, New York. |
| 7 | **Briggs, G.A.** (1984). *Plume Rise and Buoyancy Effects*. In: Atmospheric Science and Power Production. DOE/TIC-27601. |
| 8 | **van Ulden, A.P.** (1974). On the spreading of a heavy gas released near the ground. *Proc. Loss Prevention and Safety Promotion*, Vol. 1, 221–226. |

  </Accordion>
</Accordions>
