# Vapor Cloud Explosion
Source: https://tekrisk.com/en/docs/risk-models/vce

Technical documentation for the Vapor Cloud Explosion consequence model — TNT equivalent method, Lees/Brasie overpressure, probit analysis, and fatality estimation

## 1. Introduction and Physical Phenomenon

### 1.1 Vapor Cloud Explosion (VCE)

A **VCE** (Vapor Cloud Explosion) occurs when a significant quantity of flammable gas or vapor is released into the atmosphere, mixes with air forming a flammable cloud, and ignites. If the cloud encounters sufficient confinement or obstruction (equipment, buildings, piping), the combustion can accelerate to generate a destructive overpressure wave.

Unlike a confined detonation, a VCE is a **deflagration** phenomenon where the flame speed is subsonic, but the overpressure generation can be significant depending on the degree of confinement and congestion in the surrounding environment.

The main effects of a VCE include:

- **Overpressure** (blast wave) capable of causing structural collapse
- **Impulse** (pressure-time integral) that determines dynamic damage
- **Lethality** in people from direct overpressure effects
- **Domino effects** through failure of nearby vessels and equipment

### 1.2 Industrial Context

<Callout type="warn" title="High-severity scenario">
VCE events are among the most severe accident outcomes in industrial QRA. Historical incidents such as **Flixborough** (UK, 1974), **Buncefield** (UK, 2005), and **Texas City** (USA, 2005) demonstrate their catastrophic potential.
</Callout>

<Cards>
  <Card title="Petroleum Refineries">
    Gaseous hydrocarbon leaks in congested process areas
  </Card>
  <Card title="Chemical Plants">
    Flammable vapor releases in process zones
  </Card>
  <Card title="LPG Storage Facilities">
    Rapid vaporization of pressurized liquids
  </Card>
  <Card title="Offshore Installations">
    Natural gas releases on platforms and FPSOs
  </Card>
</Cards>

### 1.3 Scope of This Model

This model calculates, using the **TNT equivalent method**:

1. TNT equivalent mass from gas mass, heat of combustion, and energy fraction
2. Overpressure, impulse, duration, and arrival time at any distance
3. Distance to a specified overpressure threshold (inverse problem)
4. Probit-based probability of lethality, eardrum rupture, and structural damage
5. Domino effect probability for nearby equipment (Cozzani and Mingguang)
6. Population fatalities using concentric ring analysis

---

## 2. Calculation Sequence

<Mermaid>
{`flowchart TD
    A["Input Data<br/>(mass, Hc, fe, method)"] --> B["TNT Equivalent<br/>m_TNT = fe*Hc*M / DH_TNT"]
    B --> C["For each distance x:<br/>z, P(z), I(z), td(z), ta(z)"]
    C --> D["Forward: P(x)"]
    C --> E["Inverse: x(P_target)<br/>Incremental Iteration"]
    D --> F["Probit Analysis"]
    E --> F
    F --> G["Lethality<br/>(people)"]
    F --> H["Structural<br/>Damage"]
    F --> I["Domino<br/>Effect"]
    G --> J["Fatality Calculation<br/>(Concentric Rings)"]
    H --> J
    I --> J

    style A fill:#e1f5fe
    style J fill:#c8e6c9
    style C fill:#fff3e0`}
</Mermaid>

The VCE calculation follows these stages:

<Steps>
  <Step>
    **TNT Equivalent** — Convert combustion energy of the vapor cloud into an equivalent mass of TNT.
  </Step>
  <Step>
    **Scaled Distance** — Compute Hopkinson-Cranz scaled distance $z = x / m_{TNT}^{1/3}$ for each receptor.
  </Step>
  <Step>
    **Blast Wave Parameters** — Calculate overpressure $P(z)$, impulse $I(z)$, positive phase duration $t_d(z)$, and arrival time $t_a(z)$ using Lees or Brasie method.
  </Step>
  <Step>
    **Inverse Distance** — Find distance at which overpressure equals a target threshold via incremental iteration.
  </Step>
  <Step>
    **Probit Analysis** — Convert overpressure/impulse to probabilities of lethality, eardrum rupture, structural damage, and domino effects.
  </Step>
  <Step>
    **Fatality Estimation** — Integrate fatality probability over concentric rings to estimate total casualties.
  </Step>
</Steps>

---

## 3. Principal Equations

### 3.1 TNT Equivalent

$$
m_{TNT} = \frac{f_e \cdot \Delta H_c \cdot M}{\Delta H_{TNT}}
$$

| Symbol | Description | Unit | Value/Range |
|--------|-------------|------|-------------|
| $m_{TNT}$ | TNT equivalent mass | kg | calculated |
| $f_e$ | Explosion energy fraction | dimensionless | 0.01–0.10 |
| $\Delta H_c$ | Heat of combustion of gas | kJ/kg | user input |
| $M$ | Mass of flammable gas released | kg | user input |
| $\Delta H_{TNT}$ | Heat of combustion of TNT | kJ/kg | 4,760 |

*Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., p. 165*

<Callout type="info" title="Energy fraction (fe)">
The parameter $f_e$ (explosion efficiency or yield) is typically between 1% and 10%. Higher values correspond to greater confinement/congestion. The user enters the value as a percentage (1–10) and it is divided by 100 internally.
</Callout>

### 3.2 Scaled Distance (Hopkinson-Cranz)

$$
z = \frac{x}{m_{TNT}^{1/3}}
$$

| Symbol | Description | Unit |
|--------|-------------|------|
| $z$ | Scaled distance | m/kg$^{1/3}$ |
| $x$ | Actual distance from explosion center | m |
| $m_{TNT}$ | TNT equivalent mass | kg |

**Valid range for Lees method**: $0.0674 \leq z \leq 40$

### 3.3 Overpressure Calculation

<Tabs items={["Lees (CCPS) — PRIMARY", "Brasie & Simpson"]}>
  <Tab value="Lees (CCPS) — PRIMARY">
    Overpressure is calculated using a degree-11 polynomial in the transformed variable $u$:

$$
u = a_1 + b_1 \cdot \log_{10}(z)
$$

$$
\log_{10}(P) = c_0 + c_1 u + c_2 u^2 + c_3 u^3 + \ldots + c_{11} u^{11}
$$

$$
P = 10^{\log_{10}(P)} \quad \text{(kPa)}
$$

    **Range**: $0.0674 \leq z \leq 40$

    <Accordions type="single">
      <Accordion title="Polynomial Constants (from LessConstants.js)">
        | Constant | Value |
        |----------|-------|
        | $a_1$ | -0.214362789151 |
        | $b_1$ | 1.35034249993 |
        | $c_0$ | 2.78076916577 |
        | $c_1$ | -1.6958988741 |
        | $c_2$ | -0.154159376846 |
        | $c_3$ | 0.514060730593 |
        | $c_4$ | 0.0988554365274 |
        | $c_5$ | -0.293912623038 |
        | $c_6$ | -0.0268112345019 |
        | $c_7$ | 0.109097496421 |
        | $c_8$ | 0.001628467556311 |
        | $c_9$ | -0.0214631030242 |
        | $c_{10}$ | 0.0001456723382 |
        | $c_{11}$ | 0.00167847752266 |
      </Accordion>
    </Accordions>

    <Callout type="warn" title="Errata">
    Some constants differ between the original Lees Loss and CCPS. The constants implemented correspond to the corrected CCPS version (p. 162), which is considered the authoritative version.
    </Callout>

    *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., pp. 161-162; Lees, Loss Prevention, 3rd ed., p. 17-127*
  </Tab>
  <Tab value="Brasie & Simpson">
$$
P(z) = \frac{80800 \cdot \left(1 + (z/4.5)^2\right)}{\sqrt{1 + (z/0.048)^2} \cdot \sqrt{1 + (z/0.32)^2} \cdot \sqrt{1 + (z/1.35)^2}} \quad \text{(kPa)}
$$

    *Reference: Brasie & Simpson, 1968; Kakosimos, Safety in Chemical Engineering, p. 154*
  </Tab>
</Tabs>

### 3.4 Impulse Calculation

<Tabs items={["Lees (CCPS)", "Brasie (JRC)"]}>
  <Tab value="Lees (CCPS)">
    The positive impulse uses two polynomials depending on the range of $z$:

    **Range 1** ($0.0674 \leq z \leq 0.955$): Degree-4 polynomial

    **Range 2** ($0.955 < z \leq 40$): Degree-7 polynomial

    Both use: $u = a + b \cdot \log_{10}(z)$, then $I = 10^{\text{polynomial}(u)}$ (kPa·ms = Pa·s)

    <Accordions type="single">
      <Accordion title="Range 1 Constants (ip1)">
        | Constant | Value |
        |----------|-------|
        | $a$ | 2.06761908721 |
        | $b$ | 3.0760329666 |
        | $c_0$ | 2.52455620925 |
        | $c_1$ | -0.502992763686 |
        | $c_2$ | 0.171335645235 |
        | $c_3$ | 0.0450176963051 |
        | $c_4$ | -0.0118964626402 |
      </Accordion>
      <Accordion title="Range 2 Constants (ip2)">
        | Constant | Value |
        |----------|-------|
        | $a$ | -1.94708846747 |
        | $b$ | 2.40697745406 |
        | $c_0$ | 1.67281645863 |
        | $c_1$ | -0.384519026965 |
        | $c_2$ | -0.0260816706301 |
        | $c_3$ | 0.00595798753822 |
        | $c_4$ | 0.014544526107 |
        | $c_5$ | -0.00663289334734 |
        | $c_6$ | -0.00284189327204 |
        | $c_7$ | 0.0013644816227 |
      </Accordion>
    </Accordions>

    *Reference: Lees, Loss Prevention, 3rd ed., p. 17-127*
  </Tab>
  <Tab value="Brasie (JRC)">
$$
I_{bar \cdot ms} = \frac{0.067 \cdot \sqrt{1 + (z/0.23)^4}}{z^2 \cdot \sqrt{1 + (z/1.55)^3}}
$$

$$
I_{Pa \cdot s} = I_{bar \cdot ms} \times 100
$$

    *Reference: JRC, Major Accident Hazards Bureau Technical Report, p. 85*
  </Tab>
</Tabs>

### 3.5 Duration and Arrival Time

<Tabs items={["Duration (Lees)", "Duration (Brasie)", "Arrival Time (Lees)"]}>
  <Tab value="Duration (Lees)">
    Three polynomials for different ranges of $z$:

    - **Range 1** ($0.178 \leq z \leq 1.01$): Degree-5 polynomial
    - **Range 2** ($1.01 < z \leq 2.78$): Degree-8 polynomial
    - **Range 3** ($2.78 < z \leq 40$): Degree-5 polynomial

    $t_d = 10^{\text{polynomial}(u)}$ (ms)

    <Accordions type="single">
      <Accordion title="Duration Range 1 Constants (td1)">
        | Constant | Value |
        |----------|-------|
        | $a$ | 1.92946154068 |
        | $b$ | 5.25099193925 |
        | $c_0$ | -0.614227603559 |
        | $c_1$ | 0.130143717675 |
        | $c_2$ | 0.134872511954 |
        | $c_3$ | 0.0391574276906 |
        | $c_4$ | -0.00475933664702 |
        | $c_5$ | -0.00428144598008 |
      </Accordion>
      <Accordion title="Duration Range 2 Constants (td2)">
        | Constant | Value |
        |----------|-------|
        | $a$ | -2.12492525216 |
        | $b$ | 9.2996288611 |
        | $c_0$ | 0.315409245784 |
        | $c_1$ | -0.0297944268976 |
        | $c_2$ | 0.030632954288 |
        | $c_3$ | 0.0183405574086 |
        | $c_4$ | -0.0173964666211 |
        | $c_5$ | -0.00106321963633 |
        | $c_6$ | 0.00562060030977 |
        | $c_7$ | 0.0001618217499 |
        | $c_8$ | -0.0006860188944 |
      </Accordion>
      <Accordion title="Duration Range 3 Constants (td3)">
        | Constant | Value |
        |----------|-------|
        | $a$ | -3.53626218091 |
        | $b$ | 3.46349745571 |
        | $c_0$ | 0.686906642409 |
        | $c_1$ | 0.0933035304009 |
        | $c_2$ | -0.0005849420883 |
        | $c_3$ | -0.00226884995013 |
        | $c_4$ | -0.00295908591505 |
        | $c_5$ | 0.00148029868929 |
      </Accordion>
    </Accordions>

    *Reference: Lees, Loss Prevention, 3rd ed., p. 17-127*
  </Tab>
  <Tab value="Duration (Brasie)">
$$
t_d = \frac{980 \cdot m_{TNT}^{1/3} \cdot \left(1 + (z/0.54)^{10}\right)}{(1 + (z/0.02)^3) \cdot (1 + (z + 0.74)^6) \cdot \sqrt{1 + (z/6.9)^2}} \quad \text{(ms)}
$$

    *Reference: Lees, Loss Prevention, 3rd ed., p. 17-124*
  </Tab>
  <Tab value="Arrival Time (Lees)">
    Single degree-9 polynomial for the full range ($0.0674 \leq z \leq 40$):

    $t_a = 10^{\text{polynomial}(u)}$ (ms)

    <Accordions type="single">
      <Accordion title="Arrival Time Constants (ta)">
        | Constant | Value |
        |----------|-------|
        | $a$ | -0.202425716178 |
        | $b$ | 1.37784223635 |
        | $c_0$ | -0.0591634288046 |
        | $c_1$ | 1.35706496258 |
        | $c_2$ | 0.052492798645 |
        | $c_3$ | -0.196563954086 |
        | $c_4$ | -0.0601770052288 |
        | $c_5$ | 0.0696360270891 |
        | $c_6$ | 0.0215297490092 |
        | $c_7$ | -0.0161658930785 |
        | $c_8$ | -0.00232531970294 |
        | $c_9$ | 0.00147752067524 |
      </Accordion>
    </Accordions>

    *Reference: Lees, Loss Prevention, 3rd ed., p. 17-127*
  </Tab>
</Tabs>

### 3.6 Inverse Calculation (Incremental Iteration)

To find the distance $x$ at which overpressure equals a target value $P_{target}$, the model uses **incremental iteration**:

| Parameter | Value |
|-----------|-------|
| Step size | 0.05 m |
| Max iterations | 100,000 |
| Initial reference pressure | 2,068 kPa (EPA maximum) |

**Unit conversion for target overpressure:**

| Input Unit | Factor to kPa |
|------------|---------------|
| kPa | $\times 1$ |
| psi | $\times 6.89476$ |
| bar | $\times 100$ |
| atm | $\times 101.325$ |

<Callout type="info" title="Why not Newton-Raphson?">
The high-degree Lees polynomials can have non-monotonic derivatives, making Newton-Raphson convergence difficult. Incremental iteration always converges if the solution exists within the valid range.
</Callout>

### 3.7 Probit Analysis — Effects on People

<Tabs items={["Hurst (DEFAULT)", "Eisenberg (CCPS)", "Eardrum Rupture"]}>
  <Tab value="Hurst (DEFAULT)">
$$
Y_{death} = 1.47 + 1.35 \cdot \ln(P_{psi})
$$

    where $P_{psi} = P_{kPa} \times 0.145038$.

    *Reference: Hurst, Nussey & Pape, 1989*
  </Tab>
  <Tab value="Eisenberg (CCPS)">
$$
Y_{death} = -77.1 + 6.91 \cdot \ln(P_{Pa})
$$

    where $P_{Pa} = P_{kPa} \times 1000$.

    *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., p. 275*
  </Tab>
  <Tab value="Eardrum Rupture">
$$
Y_{eardrum} = -12.6 + 1.525 \cdot \ln(P_{Pa})
$$

    *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed.*
  </Tab>
</Tabs>

### 3.8 Probit Analysis — Structural Effects

<Tabs items={["Eisenberg Damage", "Window Breakage", "TNO Impulse Damage"]}>
  <Tab value="Eisenberg Damage">
$$
Y_{structure} = -23.8 + 2.92 \cdot \ln(P_{Pa})
$$

    *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., p. 275*
  </Tab>
  <Tab value="Window Breakage">
    **Pre-1975 glass:**

$$
Y_{windows} = -11.97 + 2.12 \cdot \ln(P_{Pa})
$$

    **Post-1975 glass:**

$$
Y_{windows} = -16.58 + 2.53 \cdot \ln(P_{Pa})
$$

    <Callout type="info">
    Post-1975 glass is more resistant due to manufacturing improvements, reflected in more conservative probit constants (requiring higher overpressure for the same damage level).
    </Callout>

    *Reference: TNO Green Book (CPR 16E), p. 119*
  </Tab>
  <Tab value="TNO Impulse Damage">
    These probits incorporate both overpressure and impulse into a combined parameter $V$:

    **Minor damage:**

$$
V = \left(\frac{4600}{P_{Pa}}\right)^{3.9} + \left(\frac{110}{I}\right)^{5.0}
$$

$$
Y_{minor} = 5.0 - 0.26 \cdot \ln(V)
$$

    **Major damage:**

$$
V = \left(\frac{17500}{P_{Pa}}\right)^{8.4} + \left(\frac{290}{I}\right)^{9.3}
$$

$$
Y_{major} = 5.0 - 0.26 \cdot \ln(V)
$$

    **Structural collapse:**

$$
V = \left(\frac{40000}{P_{Pa}}\right)^{7.4} + \left(\frac{460}{I}\right)^{11.3}
$$

$$
Y_{collapse} = 5.0 - 0.22 \cdot \ln(V)
$$

    where $I$ is impulse in Pa·s.

    *Reference: TNO Green Book (CPR 16E); Casal p. 358*
  </Tab>
</Tabs>

### 3.9 Domino Effect

<Tabs items={["Cozzani (Primary)", "Mingguang (Alternative)"]}>
  <Tab value="Cozzani (Primary)">
    All use overpressure in Pascals:

    | Equipment Type | Probit Equation |
    |----------------|-----------------|
    | Atmospheric vessels | $Y = -18.96 + 2.44 \cdot \ln(P_{Pa})$ |
    | Pressurized vessels | $Y = -42.44 + 4.33 \cdot \ln(P_{Pa})$ |
    | Elongated equipment | $Y = -28.07 + 3.16 \cdot \ln(P_{Pa})$ |
    | Small equipment | $Y = -17.79 + 2.18 \cdot \ln(P_{Pa})$ |

    *Reference: Cozzani, V. et al., Journal of Hazardous Materials*
  </Tab>
  <Tab value="Mingguang (Alternative)">
    All use overpressure in Pascals:

    | Equipment Type | Probit Equation |
    |----------------|-----------------|
    | Atmospheric vessels | $Y = -9.36 + 1.43 \cdot \ln(P_{Pa})$ |
    | Pressurized vessels | $Y = -14.44 + 1.82 \cdot \ln(P_{Pa})$ |
    | Elongated equipment | $Y = -12.22 + 1.65 \cdot \ln(P_{Pa})$ |
    | Small equipment | $Y = -12.42 + 1.64 \cdot \ln(P_{Pa})$ |

    *Reference: Mingguang, Z. et al.*
  </Tab>
</Tabs>

### 3.10 Probit to Probability Conversion

$$P(\%) = f_k \cdot 50 \cdot \left[1 + \text{sgn}(Y - 5) \cdot \text{erf}\left(\frac{|Y - 5|}{\sqrt{2}}\right)\right]$$

| Symbol | Description | Value |
|--------|-------------|-------|
| $f_k$ | Protection factor | 1.0 (no protection) |
| $\text{erf}$ | Error function (Taylor series, 50 terms) | — |

**Bounds:** If $Y < 0$ → $P = 0\%$. If $Y > 8.09$ → $P = 100\%$.

### 3.11 Fatality Calculation (Concentric Rings)

Population fatalities are estimated by dividing the affected area into concentric rings centered on the explosion point.

**Algorithm:**

1. Dynamic initial radius: $r_{min} = 0.0674 \cdot m_{TNT}^{1/3}$, effective $r_{initial} = \max(1, \lceil r_{min} \rceil)$ m
2. For each ring $i$ at distance $r_i$ (increment = 5 m, max = 10 km):
   - Calculate overpressure $P$ using selected method
   - If $P = 9999$ or $P \leq 0$: **STOP** (out of range)
   - Calculate lethality probit (Hurst or Eisenberg)
   - Convert probit to percentage $P\%$
   - If $P\% < 0.1\%$: **STOP** (negligible fatalities)
3. Ring area: $A_{ring} = \pi (r_{outer}^{2} - r_{inner}^{2})$
4. Fatalities per ring: $F_i = A_{ring} \times \rho_{pop} \times P_i / 100$
5. Total fatalities: $F_{total} = \sum F_i$

| Parameter | Default Value |
|-----------|---------------|
| Ring increment | 5 m |
| Maximum radius | 10 km |
| Minimum probability threshold | 0.1% |
| Rounding rule | If $F > 0.6$ → $\lceil F \rceil$; otherwise 0 |

*Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., p. 273; TNO Purple Book (CPR 18E)*

### 3.12 Polygon Receiver Exclusion

When polygon-type receivers are defined, the model avoids double-counting population:

1. Polygon receivers overlapping with analysis rings are identified using geographic intersection
2. For each ring, the polygon area is subtracted: $A_{effective} = A_{ring} - A_{excluded}$
3. Fatalities from polygon areas are calculated separately using distributed grid analysis with their own population counts

---

## 4. Justification of Selected Methods

<Accordions type="multiple">
  <Accordion title="Why Lees (CCPS) as Primary Overpressure Method">
    1. **Higher accuracy** — High-degree polynomials (11 for overpressure, 4–9 for other parameters) provide a very precise fit to experimental TNT surface burst curves
    2. **Complete coverage** — Simultaneously calculates overpressure, impulse, positive phase duration, and arrival time
    3. **Wide range** — Covers scaled distances from 0.0674 to 40, spanning near field to far field
    4. **Authoritative reference** — Corrected constants published in CCPS (p. 162) are the most reliable and widely accepted
    5. **Brasie as validation** — The Brasie & Simpson method provides an independent cross-check
  </Accordion>
  <Accordion title="Why Hurst as Default Lethality Probit">
    1. **Direct empirical basis** — Developed specifically for overpressure lethality with industrial accident data
    2. **Convenient numerical range** — More numerically stable than Eisenberg's large negative intercept
    3. **Appropriate conservatism** — Gives more conservative results (higher fatality probabilities) for typical industrial overpressures
    4. **User selection** — The model allows switching between Hurst and Eisenberg according to analysis requirements
  </Accordion>
  <Accordion title="Why Cozzani for Overpressure Domino Effect">
    1. **Equipment-type specificity** — Separate correlations for four categories (atmospheric, pressurized, elongated, small)
    2. **Widely validated** — Most cited and accepted correlations for overpressure domino effect
    3. **Complement with Mingguang** — Alternative correlations offered for comparison and sensitivity analysis
    4. **Direct input** — Uses incident overpressure (Pa) directly available from the VCE calculation
  </Accordion>
  <Accordion title="Why Incremental Iteration for Inverse Calculation">
    1. **Robustness** — High-degree Lees polynomials can have non-monotonic derivatives, making Newton-Raphson difficult
    2. **Simplicity** — No analytical derivative of the degree-11 polynomial needed
    3. **Sufficient accuracy** — 0.05 m step size is adequate for industrial risk analysis
    4. **Infinite loop prevention** — 100,000-iteration limit prevents non-convergence issues
  </Accordion>
</Accordions>

---

## 5. Model Limitations

<Accordions type="multiple">
  <Accordion title="TNT Equivalent Method">
    - **Energy fraction** — The parameter $f_e$ (0.01–0.10) is a significant simplification; real explosion efficiency depends on confinement, congestion, fuel type, mixing rate, and ignition conditions
    - **Explosion geometry** — Assumes hemispheric surface burst; real VCEs have complex geometries
    - **Ideal blast wave** — Assumes Friedlander-type blast wave without multiple reflections, channeling, or confinement amplification
    - **Point source** — All energy released from a single point, a simplification for large-extent clouds
  </Accordion>
  <Accordion title="Scaled Distance Range">
    - **Lower limit** ($z = 0.0674$) — Lees polynomials invalid below this; minimum distance is $0.0674 \times m_{TNT}^{1/3}$ m
    - **Upper limit** ($z = 40$) — Returns 9999 (invalid) outside range rather than extrapolating
    - **Discontinuities** — Polynomial transitions (impulse, duration) may introduce small numerical discontinuities
  </Accordion>
  <Accordion title="Incremental Iteration">
    - **Fixed precision** — 0.05 m step introduces $\pm 0.025$ m error
    - **Speed** — For very low overpressures, many steps needed; 100,000-iteration limit corresponds to max 5,001 m
    - **Non-convergence** — Returns `null` if target overpressure is outside model range
  </Accordion>
  <Accordion title="Probit Limitations">
    - **Limited data** — Probit equations based on limited data from military explosions (Eisenberg) or retrospective accident analysis (Hurst)
    - **Heterogeneous population** — No differentiation by age, condition, body position, or activity
    - **Indirect effects** — Lethality combines direct (lung damage) and indirect (projectile impact, collapse) effects
    - **No combined effects** — Overpressure not combined with thermal or other simultaneous hazards
  </Accordion>
  <Accordion title="Population / Receptor">
    - **Uniform density** — Base calculation assumes uniform population in all directions (polygon exclusion partially addresses this)
    - **No sheltering** — All persons assumed outdoors with no structural protection
    - **No evacuation** — Emergency response not considered
    - **Static population** — Distribution assumed fixed during event
  </Accordion>
  <Accordion title="Numerical">
    - **Constant errata** — Several original Lees Loss constants contain errors corrected in CCPS, documented in `LessConstants.js`
    - **Ring discretization** — 5 m increment introduces $\pm 2.5$ m error
    - **Probit extrapolation** — Values clamped: below 0 → 0%, above 8.09 → 100%
  </Accordion>
</Accordions>

---

## 6. Input/Output Summary

### 6.1 Required Inputs

| Parameter | Description | Unit |
|-----------|-------------|------|
| `massRelease` | Flammable gas mass released | kg, lb, g, ton |
| `hckjkg` | Heat of combustion | kJ/kg |
| `energyFraction` | Explosion energy fraction ($f_e$) | % (1–10) |
| `VCEMethod` | Calculation method | "less" or "brasie" |
| `populationDensity` | Population density | p/m$^2$, p/ha, p/km$^2$, p/mi$^2$ |
| `probitMethod` | Lethality probit method | "hurst" or "eisenberg" |
| `overpressureZones` | Risk zones with overpressure thresholds | kPa |

### 6.2 Outputs

| Output | Description | Unit |
|--------|-------------|------|
| `masaTNTEQ` | TNT equivalent mass | kg |
| `zones` | Array of risk zones with distances | m |
| `zones[i].overpressureZone` | Zone overpressure | kPa |
| `zones[i].distance` | Distance at that overpressure | m |
| `fatalidades` | Fatality calculation results | Object or 0 |
| `receiverEffects` | Effects on each receiver | Array |
| `receiverEffects[i].overpressure` | Overpressure at receiver | kPa |
| `receiverEffects[i].impulse` | Impulse at receiver | Pa·s |
| `receiverEffects[i].duration` | Positive phase duration | ms |
| `receiverEffects[i].arrivalTime` | Arrival time | ms |

### 6.3 Receiver Effect Categories

**Population/Structural Effects:**

| Category | Effect | Probit Source |
|----------|--------|---------------|
| Overpressure | Fatality | Hurst 1989 / CCPS p. 275 |
| Overpressure | Eardrum rupture | CCPS |
| Overpressure | Structural damage | CCPS p. 275 |
| Overpressure | Window breakage | TNO Green Book |

**Domino Effects on Equipment:**

| Equipment Type | Probit Source |
|----------------|---------------|
| Atmospheric vessels | Cozzani — Atmospheric |
| Pressurized vessels | Cozzani — Pressurized |
| Elongated equipment | Cozzani — Elongated |
| Small equipment | Cozzani — Small |

---

## 7. References

<Accordions type="single">
  <Accordion title="CCPS — Guidelines for Chemical Process QRA, 2nd Edition">
    Center for Chemical Process Safety, AIChE/Wiley, 2000. TNT equivalent (p. 165), Overpressure polynomials (pp. 161-162), Eisenberg lethality probit (p. 275), Structural damage probit (p. 275), Fatality rings (p. 273).
  </Accordion>
  <Accordion title="Lees, F.P. — Loss Prevention in the Process Industries, 3rd Edition">
    Butterworth-Heinemann, 2004. Original polynomial constants (p. 17-127), Brasie duration (p. 17-124), General VCE methodology.
  </Accordion>
  <Accordion title="TNO Green Book (CPR 16E, 3rd Edition)">
    *Methods for the Calculation of Physical Effects*. Committee for the Prevention of Disasters, 2005. Window breakage probits (p. 119), TNO impulse damage probits.
  </Accordion>
  <Accordion title="TNO Purple Book (CPR 18E)">
    *Methods for the Determination of Possible Damage*. Committee for the Prevention of Disasters, 1999. Concentric ring fatality calculation methodology.
  </Accordion>
  <Accordion title="Brasie, W.C. & Simpson, D.W. (1968)">
    "Guidelines for Estimating Damage from Chemical Explosions." 63rd National Meeting, AIChE. Alternative overpressure correlation.
  </Accordion>
  <Accordion title="Hurst, N.W., Nussey, C. & Pape, R.P. (1989)">
    "Development and Application of a Risk Assessment Tool (RISKAT)." Chemical Engineering Research and Design, 67. Overpressure lethality probit (default method).
  </Accordion>
  <Accordion title="Cozzani, V. et al.">
    "Escalation thresholds in the assessment of domino accidental events." Journal of Hazardous Materials. Overpressure domino probit (atmospheric, pressurized, elongated, small vessels).
  </Accordion>
  <Accordion title="Kakosimos, K.E.">
    *Safety in Chemical Engineering*. Brasie overpressure equation (p. 154).
  </Accordion>
  <Accordion title="JRC — Joint Research Centre">
    Major Accident Hazards Bureau Technical Report, p. 85. Brasie positive impulse.
  </Accordion>
  <Accordion title="Mingguang, Z. et al.">
    Probit functions for domino effect. Alternative domino effect correlations.
  </Accordion>
</Accordions>
