# Bibliography Source: https://tekrisk.com/en/docs/bibliography Consolidated bibliographic references for industrial QRA — standards, consequence models, dispersion, fire and explosion theory, domino effect, vulnerability, and mathematical framework This page consolidates every bibliographic reference cited across the TekRisk PRO documentation: regulatory standards, QRA textbooks, consequence and dispersion models, fire and explosion theory, domino-effect probits, vulnerability models, and the mathematical framework underpinning the methodology. --- ## 1. Standards and QRA Frameworks | # | Reference | |---|-----------| | 1 | **CCPS** (2000). *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed. AIChE, New York. | | 2 | **TNO** (2005). *Methods for the Calculation of Physical Effects* (Yellow Book, CPR 14E), 3rd Ed. Committee for the Prevention of Disasters, The Netherlands. | | 3 | **TNO** (2005). *Methods for the Determination of Possible Damage* (Green Book, CPR 16E), 3rd Ed. Committee for the Prevention of Disasters, The Netherlands. | | 4 | **TNO** (1999). *Guidelines for Quantitative Risk Assessment* (Purple Book, CPR 18E). Committee for the Prevention of Disasters, The Netherlands. | | 5 | **UK HSE** (2001). *Reducing Risks, Protecting People (R2P2)*. Health and Safety Executive, London. | | 6 | **RIVM / IPO** (2009). *Reference Manual Bevi Risk Assessments*, Version 3.2. Bilthoven, The Netherlands. | | 7 | **HKSAR** (1994). *Risk Guidelines for New Territories East Landfill*. Hong Kong Special Administrative Region. | | 8 | **HIPAP No. 4** (1994). *Risk Criteria for Land Use Safety Planning*. NSW Department of Planning, Australia. | | 9 | **ASEA** (2016). *Lineamientos para la Elaboración del Análisis de Riesgo*. Agencia de Seguridad, Energía y Ambiente, México. | | 10 | **EPA**. *Risk Management Program Guidance*. U.S. Environmental Protection Agency. | --- ## 2. QRA and Process Safety Textbooks | # | Reference | |---|-----------| | 11 | **Lees, F.P.** (2012). *Loss Prevention in the Process Industries*, 4th Ed. Butterworth-Heinemann / Elsevier, Amsterdam. | | 12 | **Crowl, D.A. & Louvar, J.F.** (2011). *Chemical Process Safety: Fundamentals with Applications*, 3rd Ed. Prentice Hall. | | 13 | **Casal, J.** (2008). *Evaluation of the Effects and Consequences of Major Accidents in Industrial Plants*. Elsevier. | | 14 | **Kakosimos, K.E.** *Safety in Chemical Engineering — Complex Hazardous Activities: Preventing and Managing Industrial Disasters*. Papasotiriou Publications. | | 15 | **Yaws, C.L.** (1999). *Chemical Properties Handbook*. McGraw-Hill, New York. | --- ## 3. Atmospheric Dispersion | # | Reference | |---|-----------| | 16 | **Ermak, D.L.** (1990). *User's Manual for SLAB: An Atmospheric Dispersion Model for Denser-Than-Air Releases*. UCRL-MA-105607, Lawrence Livermore National Laboratory, Livermore, CA. | | 17 | **Pasquill, F.** (1961). The estimation of the dispersion of windborne material. *Meteorological Magazine*, 90, 33–49. | | 18 | **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. | | 19 | **Briggs, G.A.** (1984). *Plume Rise and Buoyancy Effects*. In: Atmospheric Science and Power Production. DOE/TIC-27601. | | 20 | **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. | --- ## 4. Fire Models | # | Reference | |---|-----------| | 21 | **Thomas, P.H.** (1963). The size of flames from natural fires. *9th International Symposium on Combustion*, pp. 844–859. | | 22 | **Pritchard, M.J. & Binding, T.M.** (1992). *FIRE2: A new approach for predicting thermal hazards from hydrocarbon pool fires*. IChemE Symposium Series No. 130. | | 23 | **Mudan, K.S. & Croce, P.A.** (1995). Fire hazard calculations for large open hydrocarbon fires. *SFPE Handbook of Fire Protection Engineering*. SFPE/NFPA. | | 24 | **Chamberlain, G.A.** (1987). Developments in design methods for predicting thermal radiation from flares. *Chemical Engineering Research and Design*, 65, pp. 299–309. | --- ## 5. Explosion and Overpressure Models | # | Reference | |---|-----------| | 25 | **Brasie, W.C. & Simpson, D.W.** (1968). *Guidelines for Estimating Damage from Chemical Explosions*. 63rd National Meeting, AIChE. | | 26 | **Hurst, N.W., Nussey, C. & Pettitt, G.N.** (1989). *Development and Application of a Risk Assessment Methodology for Gaseous Blast Waves*. IChemE Symposium Series No. 110. | | 27 | **Hurst, N.W., Nussey, C. & Pape, R.P.** (1989). Development and Application of a Risk Assessment Tool (RISKAT). *Chemical Engineering Research and Design*, 67. | --- ## 6. Domino Effect | # | Reference | |---|-----------| | 28 | **Cozzani, V., Gubinelli, G., Antonioni, G., Spadoni, G. & Zanelli, S.** (2006). The assessment of risk caused by domino effect in quantitative area risk analysis. *Journal of Hazardous Materials*, 127, pp. 14–30. | | 29 | **Cozzani, V. et al.** (2006). Escalation thresholds in the assessment of domino accidental events. *Journal of Hazardous Materials*, 129(1-3), pp. 1–21. | | 30 | **Mingguang, Z. et al.** *Probit functions for domino effect*. Alternative domino-effect correlations. | --- ## 7. Vulnerability and Probit Models | # | Reference | |---|-----------| | 31 | **Eisenberg, N.A., Lynch, C.J. & Breeding, R.J.** (1975). *Vulnerability Model*. CG-D-136-75. United States Coast Guard, Washington. — Original probit equations for thermal and overpressure lethality. | | 32 | **CCPS** (2000). *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed. AIChE, New York. — Compiled probit functions: thermal fatality $Pr = -14.9 + 2.56\ln(D/10{,}000)$ (p. 269, Eisenberg), overpressure lethality $Pr = -77.1 + 6.91\ln(P_{Pa})$ (p. 275, Eisenberg), structural damage $Pr = -23.8 + 2.92\ln(P_{Pa})$ (p. 275), eardrum rupture $Pr = -12.6 + 1.525\ln(P_{Pa})$, fatality rings (p. 273). | | 33 | **Hurst, N.W., Nussey, C. & Pape, R.P.** (1989). Development and Application of a Risk Assessment Tool (RISKAT). *Chemical Engineering Research and Design*, 67. — Default overpressure lethality probit: $Pr = 1.47 + 1.35\ln(P_{psi})$, derived from retrospective accident analysis. | | 34 | **Hurst, N.W., Nussey, C. & Pettitt, G.N.** (1989). *Development and Application of a Risk Assessment Methodology for Gaseous Blast Waves*. IChemE Symposium Series No. 110. — Probit methodology for gaseous blast waves, applied in overpressure consequence modelling. | --- ## 8. Technical Reports and Atmospheric References | # | Reference | |---|-----------| | 35 | **JRC — Joint Research Centre**. *Major Accident Hazards Bureau Technical Report*. | | 36 | **U.S. EPA / NOAA** (2013). *ALOHA Technical Documentation*. | | 37 | **ICAO** (1976). *International Standard Atmosphere (ISA)*. ICAO Doc 7488/2. | --- ## 9. Mathematical Framework | # | Reference | |---|-----------| | 38 | **Arfken, G.** (1981). *Mathematical Methods for Physicists*. Editorial Diana. | | 39 | **Arnold, V.I.** (1985). *Ordinary Differential Equations*. The MIT Press, Cambridge, Massachusetts, and London. | | 40 | **Farlow, S.J.** (1993). *Partial Differential Equations for Scientists and Engineers*. Dover Publications, Inc., New York. | | 41 | **Dafermos, C.M. & Pokorný, M.** (eds.) (2008). *Handbook of Differential Equations: Ordinary Differential Equations*. Elsevier North Holland, Amsterdam, London. | | 42 | **Hogben, L.** (ed.) (2007). *Handbook of Linear Algebra*. Discrete Mathematics and its Applications. Series Editor Kenneth H. Rosen. Chapman & Hall / CRC. | | 43 | **Jordan, D.W. & Smith, P.** (1994). *Nonlinear Ordinary Differential Equations*, 2nd Ed. Oxford Applied Mathematics and Computing Science Series. Clarendon Press, Oxford. | | 44 | **Gil, A., Segura, J. & Temme, N.M.** *Numerical Methods for Special Functions*. Society for Industrial and Applied Mathematics, Philadelphia. | | 45 | **Stoll, R.R.** (1963). *Set Theory and Logic*. Dover Publications Inc., New York. | | 46 | **Suppes, P.** (1960). *Axiomatic Set Theory*. D. Van Nostrand Company Inc. | --- # TekRisk PRO Source: https://tekrisk.com/en/docs SaaS Platform for Industrial Quantitative Risk Analysis ## What is TekRisk PRO? TekRisk PRO is a web-based quantitative risk analysis (QRA) platform designed for industrial safety engineers, environmental consultants, and decision-makers in the chemical and oil & gas industries. The platform centralizes consequence modeling, individual and societal risk analysis, and professional report generation in a single tool — eliminating the need for scattered spreadsheets and specialized desktop software. {/* screenshot: hero-dashboard.png */} --- ## Key Capabilities | Capability | Description | |-----------|-------------| | **Consequence Modeling** | Simulation models for different industrial hazard scenarios | | **Individual Risk** | Quantitative risk assessment by geographic location | | **Societal Risk** | F-N curve with acceptability zones based on international criteria | | **Geospatial Visualization** | Interactive maps with overlaid risk zones | | **PDF Reports** | Professional documents ready for regulatory submission | | **Multilingual** | Full interface in Spanish and English | | **Chemical Database** | Integrated catalog of substances with physicochemical properties | --- ## Consequence Models TekRisk PRO includes 6 simulation models covering the main industrial hazard phenomena: | Model | Phenomenon | Typical Application | |-------|-----------|---------------------| | **BLEVE / Fireball** | Fireball from catastrophic vessel rupture | Pressurized LPG tanks, liquefied gases | | **Pool Fire** | Flammable liquid pool fire | Hydrocarbon spills, solvents, fuels | | **Jet Fire** | Pressurized jet fire | Leaks from pipelines, valves, flanges, and fittings | | **VCE** | Confined vapor cloud explosion | Flammable clouds in confined or semi-confined areas | | **Flash Fire** | Flammable cloud ignition without overpressure | Flammable gas dispersion in open field | | **Toxic Dispersion** | Atmospheric toxic gas dispersion (SLAB model) | Chlorine, ammonia, H₂S, hydrofluoric acid releases | Each model calculates impact zones at different damage levels, allowing assessment of the reach of an accidental scenario and its effects on people, equipment, and structures. {/* screenshot: consequence-models-overview.png */} --- ## Risk Analysis Workflow Risk analysis in TekRisk PRO follows a structured 7-step workflow: 1. **Create project** — Define geographic location, facility data, and study context 2. **Define risk sources** — Register equipment, pipelines, or process areas and assign chemical substances 3. **Configure weather scenarios** — Set wind conditions, temperature, humidity, and atmospheric stability class 4. **Run consequence models** — Simulate accidental scenarios and obtain impact zones 5. **Define receivers** — Locate populations, buildings, equipment, and infrastructure in the area of influence 6. **Evaluate risk** — Calculate individual risk (IR) by location and societal risk (F-N curve) 7. **Generate reports** — Produce professional PDF documents with complete results {/* diagram: workflow-diagram.png */} --- ## Interactive Map Visualization TekRisk PRO integrates interactive maps with multiple geospatial visualization capabilities: - **Multiple map styles**: satellite, dark, streets, and outdoors - **Overlaid risk zones**: visualization of impact areas directly on the map - **Wind rose**: directional petals for flash fire scenarios based on wind direction probability - **Differentiated markers**: risk sources, receivers, and ignition points with distinctive iconography - **Measurement tool**: distance measurement directly on the map - **KML export**: download geospatial data for use in Google Earth and GIS systems {/* screenshot: map-visualization.png */} --- ## Risk Criteria & Standards ### Individual Risk TekRisk PRO allows evaluation of individual risk against internationally recognized acceptability criteria: | Criterion | Country / Organization | |----------|----------------------| | **HSE** | United Kingdom — Health and Safety Executive | | **ASEA** | Mexico — Agency for Safety, Energy, and Environment | | **RIVM** | Netherlands — National Institute for Public Health | | **HIPAP No. 4** | Australia — Hazardous Industry Planning Advisory Paper | | **Hong Kong** | Hong Kong — Risk Guidelines | | **EPA** | United States — Environmental Protection Agency | ### Societal Risk - F-N curve with acceptability zones: **acceptable**, **ALARP** (as low as reasonably practicable), and **unacceptable** - Graphical visualization of the frequency-number of fatalities relationship ### Probit Effects - Thermal radiation (first, second, and third degree burns) - Overpressure (blast wave damage) - Toxicity (concentration-time exposure) - Domino effect (damage to adjacent equipment) {/* screenshot: fn-curve.png */} --- ## Professional Reports TekRisk PRO generates comprehensive PDF reports ready for submission to regulatory authorities and clients: - **Scenario data**: chemical substance, physicochemical properties, environmental conditions - **Risk zones**: tables and diagrams with impact distances by damage level - **Model-specific diagrams**: visual representation for each phenomenon type (fireball, jet fire, pool fire, VCE, flash fire) - **Fatality tables**: casualty estimation by zone and effect level - **Individual Risk Report**: individual risk contours and average individual risk results - **Societal Risk Report**: F-N curve with acceptability zones {/* screenshot: pdf-report-sample.png */} --- ## Chemical Substance Database TekRisk PRO includes an integrated database with over 1,300 chemical substances and the properties needed for consequence modeling: - **General properties**: molecular weight, boiling point, melting point, flash point, autoignition temperature, density - **Thermal properties**: heat of combustion, heat of vaporization, heat capacity (gas and liquid) - **Flammability limits**: LFL (lower flammable limit) and UFL (upper flammable limit) - **Toxicity indices**: IDLH, ERPG-1, ERPG-2, ERPG-3 - **Hydrocarbon mixtures**: support for custom blends (Standard plan and above) - **Search**: by substance name or CAS number --- ## Next Steps - Visit [tekrisk.com](https://tekrisk.com) to create your free account - Explore the [full documentation](/en/docs/risk-models/fire-ball) for detailed guides on each module - Contact the support team for enterprise plan inquiries {/* screenshot: cta-signup.png */} ## Quick tools Interactive calculators that use the same functions as the TekRisk engine. Each model page includes its own «Try it» blocks next to the equations. --- *TekRisk PRO — Industrial quantitative risk analysis.* --- # Social Risk & F-N Curve Source: https://tekrisk.com/en/docs/social-risk Technical documentation for Social Risk quantification, F-N Curve construction, ALARP criteria evaluation, and Individual Risk calculation in industrial QRA ## 1. Introduction **Social Risk** quantifies the hazard that an industrial facility poses to the **surrounding community**. Unlike Individual Risk (which evaluates the probability that a specific person will die), Social Risk expresses the relationship between the frequency of an accident and the number of fatalities it could cause. The primary tool for visualizing and evaluating Social Risk is the **F-N Curve** (*frequency-number chart*): - **X-axis (N):** Number of fatalities in a single event - **Y-axis (F):** Cumulative frequency $F(N)$ = annual frequency of events causing **at least N** fatalities [events/year] Both axes use a **logarithmic scale**. F-N Curves are required by major QRA standards worldwide (UK R2P2, Netherlands RIVM, Mexico ASEA, Australia HIPAP, Hong Kong HKSAR) for operating permits and land-use planning around hazardous facilities. --- ## 2. Key Concepts Annual rate [events/year] at which accidental scenario $A_s$ is expected to occur — from LOPA, fault trees, or historical databases (OREDA, TNO FACTS) Expected number of deaths given that $A_s$ occurs — computed by consequence models via concentric ring integration with Probit functions Number of people within the risk radius — defined by the 1% Probit radius for thermal/overpressure models, or by the LFL area for Flash Fire Annual probability that an average person in the exposed population will die — $RI_g = E[F_a] / N_g$ ### 2.1 Formal Definitions $$ E[F(A_s)] = \sum_{r_i} P_{death}(r_i) \cdot \rho_{pop} \cdot A_{ring}(r_i) $$ $$ N_g = \pi \cdot r_{1\%}^2 \cdot \rho_{pop} \quad \text{(Probit models)} \qquad N_g = A_{LFL} \cdot \rho_{pop} \quad \text{(Flash Fire)} $$ $$ RI_g = \frac{E[F_a]}{N_g}, \quad \text{where} \quad E[F_a] = \sum_s P(A_s) \cdot E[F(A_s)] $$ --- ## 3. Calculation Sequence {`flowchart TD A["Risk Models
(PoolFire, JetFire, VCE, FlashFire, FireBall)
with frequency P(As) per scenario"] --> B["Step 1: Model Fatalities
FatalityUtils.js
Concentric rings 5m wide, up to 10 km
E[F(As)] = Σ Fatal_i"] B --> C["Step 2: Exposed Population Ng
ng-calculator.ts
Probit: Ng = π×r₁%²×ρ_pop
Flash Fire: Ng = A_LFL×ρ_pop
Wind rose: Ng = Σ Ng_i×P(dir_i)"] C --> D["Step 3: F-N Curve Construction
social-risk-table.tsx
F(N) = Σ fs for all s where Ns ≥ N
Decreasing step function on log-log axes"] D --> E["Step 4: ALARP Criteria Evaluation
fn-curve-analysis.ts
Upper limit: F_lim(N) = C₁/N^|n|
Excess: ΔF(N) = F(N) − F_obj(N)"] style A fill:#e1f5fe style E fill:#c8e6c9 style D fill:#fff3e0`}
**Model Fatalities** — For each scenario, `FatalityUtils.js` integrates the death probability over concentric rings of 5 m width (up to 10 km), computing $E[F(A_s)] = \sum_i F_i$ using the applicable Probit function. **Exposed Population $N_g$** — `ng-calculator.ts` computes $N_g$ using the 1% Probit radius for thermal/overpressure models, the LFL polygon area for Flash Fire, or the weighted wind-rose sum for multi-directional scenarios. **F-N Curve Construction** — `calculateFnCurve()` collects all $(f_s, N_s)$ pairs and computes $F(N_k) = \sum_{s:\,N_s \geq N_k} f_s$ for each unique $N$ value, producing a decreasing log-log step function. **ALARP Evaluation** — `analyzeUnacceptableScenarios()` compares each curve point against the upper limit $F_{lim}(N) = C_1/N^{|n|}$, computes excess frequency $\Delta F$, and generates frequency reduction recommendations per scenario. --- ## 4. Fatality Calculation by Concentric Rings ### 4.1 Ring Geometry and Thermal Dose The study area is divided into concentric rings of 5 m width, from the emission point to the maximum radius (default 10 km): $$ A_{ring}(r_i) = \pi \left(r_{i+1}^2 - r_i^2\right) \quad [\text{m}^2] $$ The accumulated thermal dose in each ring: $$ D_{dose} = t_{exp} \cdot \left[q(r_i) \times 10^3\right]^{4/3} \quad \left[(\text{W/m}^2)^{4/3} \cdot \text{s}\right] $$ **Code:** `FatalityUtils.js` → `calculateFatalities()`. ### 4.2 Fatality Probit Functions **CCPS Methodology (Eisenberg):** $$ Pr = -14.9 + 2.56 \cdot \ln\!\left(\frac{D_{dose}}{10\,000}\right) $$ *Reference: CCPS, Guidelines for CPQRA, 2nd Ed., p. 269.* **TNO Methodology:** $$ Pr = -36.38 + 2.56 \cdot \ln(D_{dose}) $$ *Reference: TNO Green Book (CPR 14E), 1997, p. 20, eq. 3.5.* **Eisenberg Model (CCPS):** $$ Pr = -77.1 + 6.91 \cdot \ln(P_{Pa}) $$ where $P_{Pa}$ is peak overpressure in Pascals. **Hurst Model (1989):** $$ Pr = 1.47 + 1.35 \cdot \ln(P_{psi}) $$ where $P_{psi}$ is overpressure in psi. *Reference: CCPS (1999), p. 273; Hurst, N.W. et al. (1989).* ### 4.3 Probit to Fatality Percentage $$ P_{fatal}\% = 50 \left(1 + \frac{Pr-5}{|Pr-5|} \cdot \text{erf}\!\left(\frac{|Pr-5|}{\sqrt{2}}\right)\right) $$ ### 4.4 Fatalities per Ring $$ F_i = \frac{P_{fatal,i}}{100} \cdot \rho_{pop} \cdot A_{ring}(r_i) $$ Calculation stops when $P_{fatal} < 0.1\%$. If $\sum F_i < 0.6$ the result is returned as 0 (negligible impact). **Code:** `FatalityUtils.js`, lines 111–200. --- ## 5. Exposed Population — $N_g$ ### 5.1 PoolFire, JetFire, VCE, FireBall Interpolates model results to find the **1% death probability radius** $r_{1\%}$: $$ N_g = \pi \cdot r_{1\%}^2 \cdot \rho_{pop} $$ Linear interpolation between adjacent rings where fatal percentage crosses 1%: $$ r_{1\%} = r_i + \frac{1\% - P_i}{P_{i+1} - P_i} \cdot (r_{i+1} - r_i) $$ **Code:** `ng-calculator.ts` → `calculateNgForProbitModel()`. ### 5.2 Flash Fire Within the LFL envelope, probability of death is **100%** for unprotected persons: $$ N_g = A_{LFL} \cdot \rho_{pop} $$ where $A_{LFL}$ is the SLAB dispersion polygon area at LFL concentration. **Code:** `ng-calculator.ts` → `calculateNgForFlashFire()`. ### 5.3 16-Direction Wind Rose For events with uncertain wind direction, a **petal diagram** is used: $$ N_g = \sum_{i=1}^{16} N_{g,i} \cdot P_{dir,i} $$ Each petal is treated as an independent sub-scenario on the F-N curve: $$ f_{petal,i} = P(A_s) \cdot P_{dir,i} $$ **Code:** `ng-calculator.ts` → `calculateNgForFlashFireWithPetals()`. ### 5.4 Polygon Receiver Correction When polygon receivers with known population exist (industrial areas, hospitals, schools): $$ N_g = (A_{circle} - A_{intersection}) \cdot \rho_{pop} + N_{receiver} $$ Geometric intersection computed with `@turf/turf`. **Code:** `ng-calculator.ts` → `calculateNgWithReceiverCorrection()`. --- ## 6. F-N Curve Construction ### 6.1 Formal Definition Given $S$ accidental scenarios, each with frequency $f_s$ [events/year] and fatalities $N_s$ [persons]: $$ \boxed{F(N) = \sum_{s:\; N_s \geq N} f_s} $$ $F(N)$ is the sum of frequencies of **all scenarios that produce at least $N$ fatalities**. **Code:** `social-risk-table.tsx` → `calculateFnCurve()`. ### 6.2 Algorithm Collect all scenarios with their pairs $(f_s, N_s)$: frequency and fatalities for each Extract the unique set of $N$ values, sorted in **descending** order For each $N_k$: compute $F(N_k) = \sum f_s$ where $N_s \geq N_k$ Plot the pairs $(N_k,\, F(N_k))$ as a **decreasing step function** on log-log axes The F-N curve is always a **decreasing step function**: $F(N) \leq F(N-1)$ for all $N$, since larger fatality thresholds can only be met by fewer scenarios. --- ## 7. Tolerance Zones and ALARP Criteria ### 7.1 Limit Lines The tolerability lines are power functions on the log-log plane: $$ F_{lim}(N) = \frac{C}{N^{|n|}} $$ | Line | Formula | Meaning | |------|---------|---------| | Upper limit | $F_{upper}(N) = C_1 / N^{\lvert n \rvert}$ | Boundary between Unacceptable and ALARP zones | | Lower limit | $F_{lower}(N) = C_2 / N^{\lvert n \rvert}$ | Boundary between ALARP and Acceptable zones | **Code:** `fn-curve-analysis.ts` → `calculateUpperLimit()`; `fn-curve-chartjs.tsx` → `drawLimitLines()`. ### 7.2 ALARP Zones **ALARP** (*As Low As Reasonably Practicable*) — risk must be reduced as far as reasonably practicable. Being in the ALARP zone does not mean risk is acceptable; it must be demonstrated that further reduction is not reasonably practicable. | Zone | Criterion | Required action | |------|-----------|----------------| | **Unacceptable** | $F(N) > F_{upper}(N)$ | Mandatory risk reduction | | **ALARP** | $F_{lower}(N) < F(N) \leq F_{upper}(N)$ | Reduce unless disproportionately costly | | **Acceptable** | $F(N) \leq F_{lower}(N)$ | No further action required | ### 7.3 International Standard Criteria | Parameter | Value | |-----------|-------| | $C_1$ (upper) | $10^{-2}$ events/year | | $C_2$ (lower) | $10^{-4}$ events/year | | Slope $n$ | $-1$ | | Reference | R2P2 (2001) | | Parameter | Value | |-----------|-------| | $C_1$ (upper) | $10^{-3}$ events/year | | $C_2$ (lower) | $10^{-5}$ events/year | | Slope $n$ | $-2$ (risk aversion to catastrophes) | | Reference | IPO/RIVM Bevi | | Parameter | Value | |-----------|-------| | $C_1$ (upper) | $10^{-3}$ events/year | | $C_2$ (lower) | $10^{-5}$ events/year | | Slope $n$ | $-1$ | | Reference | HKSAR (1994) | | Parameter | Value | |-----------|-------| | $C_1$ (upper) | $10^{-3}$ events/year | | $C_2$ (lower) | $10^{-5}$ events/year | | Slope $n$ | $-2$ (risk aversion to catastrophes) | | Reference | HIPAP No. 4 (1994) | Values $C_1$, $C_2$, and $n$ are configured in **Project Settings → Social Risk Criteria** and persisted to `project.socialRiskCriteria`. --- ## 8. Unacceptable Scenario Analysis A point $(N, F(N))$ is **unacceptable** when $F(N) > C_1 / N^{|n|}$. **Identify unacceptable point** — Find all $(N_k, F(N_k))$ where $F(N_k) > F_{upper}(N_k)$ **Apply ALARP target** — Set objective with 10% safety margin below upper limit: $$F_{target}(N) = F_{upper}(N) \cdot (1 - m), \quad m = 0.10$$ **Compute excess frequency**: $$\Delta F(N) = F(N) - F_{target}(N)$$ **Required reduction per scenario** — For contributing scenario $s$: $$f_{required,s} = f_{current,s} - \Delta F(N), \quad RF_s = \frac{f_{current,s}}{f_{required,s}}$$ If $f_{required,s} \leq 0$, the scenario alone cannot fix the problem — combined reductions are required. **Code:** `fn-curve-analysis.ts` → `analyzeUnacceptablePoint()`, lines 60–127. --- ## 9. Individual Risk ### 9.1 Calculation $$ E[F_a] = \sum_{s} P(A_s) \cdot E[F(A_s)], \qquad RI_g = \frac{E[F_a]}{N_g} $$ ### 9.2 Classification | Classification | Criterion | |----------------|---------| | Acceptable | $RI_g < \text{tolerable threshold}$ | | ALARP | $\text{tolerable} \leq RI_g < \text{intolerable}$ | | Unacceptable | $RI_g \geq \text{intolerable threshold}$ | **Code:** `individual-risk-summary.tsx` → `evaluateRiskStatus()`. ### 9.3 Criteria by Country / Standard | Group | Intolerable | Tolerable | |-------|------------|----------| | Public | $10^{-4}$/year | $10^{-6}$/year | | Workers | $10^{-3}$/year | $10^{-6}$/year | *Reference: R2P2 (2001)* | Group | Intolerable | Tolerable | |-------|------------|----------| | Public | $10^{-3}$/year | $10^{-6}$/year | *Reference: ASEA Lineamientos (2016)* | Group | Intolerable | Tolerable | |-------|------------|----------| | Public | $10^{-5}$/year | $10^{-8}$/year | *Reference: RIVM Bevi* | Group | Intolerable | Tolerable | |-------|------------|----------| | Public | $10^{-5}$/year | $10^{-6}$/year | *Reference: HIPAP No. 4 / HKSAR* | Group | Intolerable | Tolerable | |-------|------------|----------| | Public | $10^{-4}$/year | $10^{-6}$/year | *Reference: EPA RMP* **Code:** `individual-risk-presets.ts`. --- ## 10. How to Use in the System **Define scenarios** — For each source, create RiskModels with event type (PoolFire, JetFire, FlashFire, VCE, FireBall) and assign frequency $P(A_s)$. **Run consequence calculations** — Execute each model to obtain `fatalidades.sumaFatalidades` and `fatalidades.resultados`. **Configure criteria** — In *Project Settings → Social Risk Criteria*, select the international standard or enter custom $C_1$, $C_2$, and $n$ values. **Visualize the F-N Curve** — In the *Social Risk* tab → *F-N Curve* sub-tab, the table automatically computes $N$ and $F(N)$ for each scenario and plots them. **Interpret zones** — Points above the upper line ($F > C_1/N^{|n|}$) are **unacceptable**. The system generates automatic frequency reduction recommendations. **Individual Risk** — In the *Individual Risk* sub-tab, enter $N_g$ or let the system calculate it automatically, then verify $RI_g$ against the country criterion. For Flash Fire events with uncertain wind direction, activate the **wind rose** in the model panel. The system expands the scenario into up to 16 sub-scenarios — one per wind direction — each with effective frequency $P(A_s) \times P_{dir,i}$ and its own $N_{g,i}$. On the F-N curve they appear as separate rows: `{scenario_name} — {direction}`. --- ## 11. Applications of the F-N Curve | Application | Description | |-----------|-------------| | **Industrial QRA** | Quantitative risk assessment of petrochemical facilities, process plants, and storage terminals | | **Land-use planning** | Determining restriction zones and safety distances around hazardous facilities | | **Operating permits** | Comparing facility risk against national regulatory criteria to obtain permits | | **Safeguard design** | Identifying which scenarios need additional protection layers (SIL, safety valves, PLC) | | **Alternative comparison** | Evaluating the impact of different plant configurations, materials, or technologies | | **Regulatory communication** | Presenting QRA results to regulators (ASEA, HSE, INERIS) in a standardized format | | **Industrial insurance** | Quantifying PML (*Probable Maximum Loss*) for insurance premium calculation | | **Emergency planning** | Determining evacuation zones based on concentration/radiation isopleths | --- ## 12. Analysis Limitations The calculation assumes population is uniformly distributed within the impact radius. Local concentrations (buildings, nighttime patterns) are not modeled, except through explicit polygon receivers. The F-N curve assumes all scenarios are statistically independent. Correlated scenarios (chain accidents, domino effects) may underestimate $F(N)$ for high values of $N$. PoolFire, JetFire, and VCE models assume radial symmetry for $N_g$ calculation. In reality, impact is asymmetric based on wind direction. Using the radius where the Probit reaches 1% as the $N_g$ boundary is a conservative convention. The death probability is not integrated across the full distance range. The analysis quality fundamentally depends on the accuracy of input frequencies $P(A_s)$. Incorrect frequencies shift the entire F-N curve vertically. The analysis is limited to fixed industrial facilities. Transportation risk for hazardous materials is not included. --- ## 13. Bibliographic References | # | Reference | |---|-----------| | 1 | **CCPS** (1999). *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed. AIChE, New York. (pp. 269, 273) | | 2 | **TNO** (1997). *Methods for the Determination of Possible Damage (CPR 16E, "Purple Book")*, 2nd Ed. The Hague. | | 3 | **TNO** (1997). *Methods for the Calculation of Physical Effects (CPR 14E, "Green Book")*, 3rd Ed. The Hague. | | 4 | **UK HSE** (2001). *Reducing Risks, Protecting People (R2P2)*. Health & Safety Executive, London. | | 5 | **RIVM / IPO** (2009). *Reference Manual Bevi Risk Assessments*. Version 3.2. Bilthoven. | | 6 | **Lees, F.P.** (2005). *Loss Prevention in the Process Industries*, 3rd Ed. Elsevier, Amsterdam. | | 7 | **HKSAR** (1994). *Risk Guidelines for New Territories East Landfill*. Hong Kong Special Administrative Region. | | 8 | **HIPAP No. 4** (1994). *Risk Criteria for Land Use Safety Planning*. NSW Department of Planning, Australia. | | 9 | **Hurst, N.W., Nussey, C. & Pettitt, G.N.** (1989). *Development and Application of a Risk Assessment Methodology for Gaseous Blast Waves*. IChemE Symposium Series No. 110. | | 10 | **ASEA** (2016). *Lineamientos para la Elaboración del Análisis de Riesgo*. Agencia de Seguridad, Energía y Ambiente, México. | | 12 | **Eisenberg, N.A., Lynch, C.J. & Breeding, R.J.** (1975). *Vulnerability Model*. CG-D-136-75. USCG, Washington. | --- # General Calculation Memory — User Guide Source: https://tekrisk.com/en/docs/guides/general-memory-excel How to read the Excel calculation memory of the average individual risk under the general CCPS QRA method (continuous probit, wind rose). ## 1. What is this file? This Excel workbook is the **detailed calculation memory** of the Average Individual Risk of the Exposed Population (IR_av) for projects generated with TekRisk under the **general method** of CCPS QRA risk contours (continuous probit curve, with or without wind rose). **Purpose**: to document step by step, with explicit tables and live formulas, the specific contribution of each *incident outcome case* to the individual risk at each (x,y) point of interest, the initial frequencies and the applied probabilities. It is meant to be delivered to regulatory authorities and enables peer review. **Target audience**: - The regulatory authority reviewing the risk analysis. - Process engineers validating the calculations through peer review. - External auditors who need to reproduce the calculation with their own assumptions. **Difference from the simplified method**: in the simplified method a scenario's contribution is binary (`IF(distance ≤ radius; f×factor; 0)`). In the general method the contribution is `f × Pf(distance)`, where `Pf` comes from a **continuous probit curve** — linear interpolation of the fatality profile (distance→%) — and, for scenarios with a wind rose, from a sum over sectors `Σ_θ P(θ)·Pf(d_θ)`. This memory reproduces that full chain with live formulas. --- ## 2. Workbook structure The workbook contains **9 sheets** ordered sequentially. Each sheet starts with a grey introductory block explaining its content and purpose. Live-formula cells are rendered in **blue italics**. | # | Sheet | Content | |---|---|---| | 1 | **Summary** | Project metadata, applied method, IR criteria, population and IR_av result. Defines the named ranges INTOL_THR_GEN, TOL_THR_GEN, POBLACION_PROYECTO_GEN, DENSIDAD_PROYECTO_GEN. | | 2 | **Scenarios** | One row per *incident outcome case*: initial frequency f_i, aggregation type, wind rose mode. Defines FREQ_SCENARIOS_GEN. | | 3 | **Fatality Profiles** | For each radial/VCE scenario, the distance→fatality% table. Defines PERF_DIST_j / PERF_FAT_j. | | 4 | **Wind Rose** | For each directional scenario, the 16 sectors \{θ, P(θ)\}. Defines ROSA_DIR_s / ROSA_PROB_s. | | 5 | **Receivers** | (x,y) coordinates of interest (project receivers), with population and density. | | 6 | **Point Contributions** | Receivers × Scenarios matrix. Per scenario: Pf (reference to Sheet 7) and Contribution = f_i × Pf. Final column IR(x,y) = SUM(contributions). Defines IR_POR_RECEPTOR_GEN. | | 7 | **Step-by-step Breakdown** | The auditable core. For each receiver-scenario pair, the auxiliary columns of the Pf interpolation and, for directional scenarios, the breakdown over the 16 wind sectors. | | 8 | **Average IR** | For each receiver, IR(x,y) × P(x,y), plus the background population contribution. IR_av Eq. 4.4.6 (total exposed population = receivers + background) and Eq. 4.4.7 (total population P_T). Defines IR_AV_EXPOSED_GEN / IR_AV_TOTAL_GEN. | | 9 | **Methodology** | Canonical general-method equations, the interpolation logic, variable/unit table and bibliographic references. | --- ## 3. How to audit IR_av step by step ### Step 1 — Sheet 1 (Summary) 1. Verify that **Method applied** = `General (CCPS QRA — continuous probit curve)`. 2. Confirm the **IR criteria** (intolerable / tolerable) and the applicable preset/country. 3. Note the **total population P_T** and the project **density**. 4. The **IR_av total (Exposed Population)** and **IR_av (Total Population P_T)** cells reference the final results from Sheet 8. ### Step 2 — Input sheets (2, 3, 4, 5) - **Sheet 2 (Scenarios)**: each row is an *incident outcome case*. The **Frequency f_i** column is the input from the frequency analysis. The **Aggregation type** indicates how the engine evaluated the scenario (radial, VCE directional, flash fire with rose, CCPS-simplified flash fire, envelope). - **Sheet 3 (Fatality Profiles)**: for each radial/VCE scenario, its distance→fatality% table. It is the input for the interpolations. - **Sheet 4 (Wind Rose)**: for each directional scenario, the 16 sectors with their probability P(θ). The verification row confirms Σ P(θ) ≈ 1. - **Sheet 5 (Receivers)**: the (x,y) points of interest, with population. If the geometry is not `Point`, the lat/lon is the centroid. ### Step 3 — Sheet 7 (Step-by-step Breakdown) — **the core of the audit** For each receiver-scenario pair, it shows how Pf is obtained: - **Radial scenarios** (thermal, radial VCE): one row per receiver with the auxiliary columns of the profile's linear interpolation — `idx` (segment found by MATCH), `d1`/`d2` and `f1`/`f2` (bracketing points), `fraction`, `Fatality %` (master formula of the 4 cases) and `Pf` = Fatality%/100. - **VCE directional**: a block of sector rows per receiver with `θ`, `P(θ)` (live reference to the rose in Sheet 4), `d_θ` (representative sector distance), `Pf(d_θ)` (tabulated from the engine — in envelope mode it collapses multiple samples per direction and is not recalculable cell-by-cell) and `Partial contribution` = P(θ)·Pf(d_θ). The **subtotal** Σ contributions = the scenario Pf for that receiver. If the engine produced no directional breakdown (typically MAX aggregation), `contrib.pf` is tabulated in a single row. - **Flash fire with wind rose**: a block of sector rows with `θ`, `P(θ)`, `inside_θ` (0/1 from the rotated LEL polygon point-in-polygon ray-cast) and `Partial contribution` = P(θ)·inside_θ. The **subtotal** Σ contributions (clamped to 1) = the scenario Pf. - **CCPS-simplified flash fire**: `Pf = IF(d ≤ R; θ/360; 0)`. - **VCE envelope (worst case)**: Pf is a MAX over the envelope samples; the engine value is tabulated (not recalculable cell-by-cell). ### Step 4 — Sheet 6 (Point Contributions) — **the matrix the authority asks for** 1. The **reference row** brings each scenario's initial frequency f_i from Sheet 2 via `INDEX(FREQ_SCENARIOS_GEN, #)`. 2. For each receiver (row) and scenario: - **Pf**: live reference to the Pf computed in Sheet 7. - **Contribution**: live formula `= f_i × Pf` (CCPS Eq. 4.4.1). 3. The final column **IR(x,y) = SUM(contributions)** is the individual risk at the point. ### Step 5 — Sheet 8 (Average IR) 1. For each receiver, **IR(x,y)** is referenced from Sheet 6 and multiplied by **P(x,y)**. 2. The **Receivers subtotal** accumulates Σ(IR×P) and Σ(P) for the exposed receivers (via `SUMIF` on IR > 0: a receiver with IR = 0 is not exposed and does not enter the denominator). 3. The **Background population** section lists the IR bands from the persisted contour calculation and their **Background subtotal** (persisted scalars — see Limitations). 4. **IR_av total (Exposed Population)** = (Σ IR·P receivers + Σ IR·P background) / (Σ P receivers + Σ P background) — CCPS Eq. 4.4.6. This is the **headline figure**, consistent with the application's Individual Risk tab. 5. **IR_av (Total Population)** = (Σ IR·P receivers + Σ IR·P background) / P_T — CCPS Eq. 4.4.7. 6. The **IR_av receivers only (no background)** line is shown as a secondary reference. --- ## 4. How to run a sensitivity analysis The workbook is fully recalculable. Edit any input and watch the propagation: - **Frequency f_i** (Sheet 2, column E): changes that scenario's contribution at every receiver. - **Fatality profile** (Sheet 3): changes the interpolated Pf at every pair of that scenario. - **Probability P(θ)** (Sheet 4): changes that sector's partial contribution in the directional breakdown. - **Population P(x,y)** (Sheet 8, column D): changes IR_av without affecting IR(x,y). The live-formula chain propagates the change: Sheets 3-4 → Sheet 7 → Sheet 6 → Sheet 8 → Sheet 1. > The workbook is generated with `fullCalcOnLoad`: Excel recalculates everything on open. If your reader does not recalculate automatically, press `Ctrl+Alt+F9`. --- ## 5. Glossary | Symbol | Meaning | Unit | |---|---|---| | IR(x,y) | Individual risk at point (x,y) | yr⁻¹ | | IR_av | Average individual risk | yr⁻¹ | | f_i | Initial frequency of scenario i | yr⁻¹ | | Pf | Fatality probability of the scenario at the point | — | | P(θ) | Probability that the wind blows from θ (wind rose) | — | | Pf(d_θ) | Fatality probability at distance d_θ for direction θ | — | | d_θ | Distance from the receiver to the effect zone for direction θ | m | | θ | Wind direction / LEL polygon angle | ° | | P(x,y) | People at point (x,y) | persons | | P_T | Predetermined total project population | persons | --- ## 6. References - CCPS, *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed., AIChE/CCPS, 2000. Chapter 4 §4.4: Effect Models; Eq. 4.4.4 simplified direction factor; Eq. 4.4.6 / 4.4.7 IR_av. - CCPS, *Guidelines for Evaluating the Characteristics of Vapor Cloud Explosions, Flash Fires, and BLEVEs*, AIChE, 1994. - TNO, *Methods for the Determination of Possible Damage* (Green / Yellow / Purple Book), Voorburg, 2005. - Lees, *Loss Prevention in the Process Industries*, 4th Ed.; Eisenberg 1975; Hurst RISKAT 1989. - Applicable technical standard (e.g. NTE-002-CGPC) per project jurisdiction. --- ## 7. Discrepancies with previous calculations (audit) If, when comparing the **IR_xy** column of a receiver between the **PDF "Export PDF" (IR Average)** and this **Excel Calculation Memory**, the values do not match, the cause is almost always the following: - The PDF reads the `IR_xy` from the **last persisted snapshot**, generated the last time "Calculate IR Contour" was pressed. Earlier engine versions (pre-2026-05-14) evaluated that `IR_xy` by locating the **closest contour-grid cell** to the receiver — an approximation with proximity error (typical grid resolution: 50 m) that additionally used the **rose interpolated to 72 directions** (the map's visual smoothing). - This Excel Calculation Memory **always rebuilds** the `IR_xy` on the fly with the current engine: `IR_xy = Σ_j (f_j × Pf_j)` evaluated at the receiver's **exact coordinate** with the **real 16-sector rose**. It is the value that parameterises the CCPS probabilistic model. **What to tell the auditor**: 1. **The defensible value is the one in the Excel.** It is the output of the probabilistic engine parameterised by the real 16-sector wind rose, evaluated at the exact receiver point. Sheet 7 shows step-by-step how that `Pf` is obtained (distance-fatality profile or directional sum `Σ_θ P(θ)·Pf(d_θ)`) and Sheet 6 shows `Contribution = f_i × Pf`. 2. **The PDF aligns once you recalculate.** Press "Calculate IR Contour" once with the current software version. The persisted snapshot is updated using the same engine as the Excel Memory and the per-receiver `IR_xy` start matching byte-identically. The application shows an amber banner in the "Summary" view when it detects the snapshot comes from an earlier engine. 3. **The total RI can match even when per-receiver `IR_xy` is out of sync**, because receiver-by-receiver discrepancies partially cancel out when summed and population-weighted. This is expected and does not signal a calculation error in either path. Starting with engine version `ir-xy-point-evaluation-v1`, the `metadata.engineVersion` field is sealed into the persisted snapshot and the UI automatically detects when a project was calculated with an earlier version, inviting the user to recalculate before exporting. --- ## 8. Limitations and assumptions 1. **16-sector rose**: the memory is evaluated with the real 16-sector wind rose. This memory's per-receiver IR(x,y) is byte-identical to the breakdown table in the application's Individual Risk tab (both use the same point-evaluation engine). The **contour map** uses a rose interpolated to 72 sectors as visual smoothing: there may be a minor residual difference between this memory's IR(x,y) and the contour passing through that point — that residual is the smoothing artifact, not a real risk gap. 2. **Recalculated from current models**: the memory is rebuilt from the project's current risk models at export time. If the models are edited after the contours are calculated, the memory and the map may diverge. The export date is recorded in Sheet 1. 3. **Background population**: the background contribution (density × area outside the receivers) comes from integration over the persisted contour grid and **does enter** the total IR_av in Sheet 8. Its values (population and IR·P subtotals) are persisted scalars from the contour calculation: they are not recalculable cell-by-cell in this sheet because the angular integration used the grid's interpolated rose. The receiver part of IR_av is a live, recalculable formula. 4. **Probit applied upstream**: the general method does not evaluate a probit function with `erf` in the IR engine. The distance→fatality% profile already has the probit applied (when the risk model's fatalities were computed). This memory interpolates that profile — the documented traceability starts from the fatality profile. 5. **VCE envelope**: for VCE scenarios in envelope (worst-case) mode, Pf is a MAX over the envelope samples and the engine value is tabulated without a cell-by-cell breakdown. 6. **Requires Excel with standard function support** (`INDEX`, `MATCH`, `IF`, `SUM`). It does not use recent-version functions — it is compatible with any modern Excel version and with LibreOffice Calc. --- # Simplified Calculation Memory — User Guide Source: https://tekrisk.com/en/docs/guides/strict-memory-excel How to read the Excel calculation memory of the average individual risk under the CCPS-4-3 simplified method. ## 1. What is this file? This Excel workbook constitutes the **detailed calculation memory** of the Average Individual Risk of the Exposed Population (IR_av) for projects generated with TekRisk under the CCPS-4-3 §4.4.1.3 simplified method. **Purpose**: to document step by step, with explicit tables and live formulas, the specific contribution of each *incident outcome case* to the individual risk at each (x,y) point of interest, the initial frequencies, and the applied probabilities. It is intended to be delivered to regulatory authorities (e.g. ASEA in Mexico, HSE in UK, RIVM in the Netherlands) and allows peer review. **Target audience**: - Regulatory authority reviewing. - Process engineers performing peer validation of the calculations. - External auditors who need to reproduce the calculation with their own assumptions. --- ## 2. Workbook structure The workbook contains **7 sheets** ordered sequentially. Each sheet starts with a gray introductory block explaining its content and purpose. | # | Sheet | Content | |---|---|---| | 1 | **Summary** | Project metadata, applied method, threshold, IR criteria, population, and IR_av result. Defines the named ranges THRESHOLD_PCT, INTOL_THR, TOL_THR, POBLACION_PROYECTO, DENSIDAD_PROYECTO. | | 2 | **Scenarios** | One row per *incident outcome case*: initial frequency f_i, analytical radius r_i, directional factor, potential IR contribution. | | 3 | **Receivers** | (x,y) coordinates of interest (receivers defined in the project), with population and density. | | 4 | **Point Contributions** | Receivers × Scenarios matrix. Each cell with a live formula `=IF(distance ≤ radius; contribution; 0)`. Final column IR(x,y) = SUM(contributions). | | 5 | **Average IR** | For each receiver, IR(x,y) × P(x,y). IR_av Eq. 4.4.6 (exposed population) and Eq. 4.4.7 (total population). | | 6 | **Contour Levels** | Application of CCPS Eq. 4.4.5 (cumulative sum per cluster) — actual iso-contour levels of the map. | | 7 | **Methodology** | Canonical equations, variables/units table, and bibliographic references. | --- ## 3. How to audit IR_av step by step ### Step 1 — Sheet 1 (Summary) 1. Verify that **Method applied** = `Simplified (CCPS-4-3 §4.4.1.3)`. 2. Note the **Fatality threshold** (% of probit fatality that defines the binary discriminator). 3. Confirm the **IR criteria** (intolerable / tolerable) and the applicable country preset. 4. Observe the **total population P_T** and the **density** of the project. 5. The **IR_av Exposed Population** cell references the final result from Sheet 5. ### Step 2 — Sheet 2 (Scenarios) 1. Each row is a scenario (incident outcome case): combination of source + risk model + method. 2. **Column E (Frequency f_i)**: initial frequency in events/year, entered by the engineer. 3. **Column G (Radius r_i)**: distance precomputed by the engine where the fatality probability crosses the threshold from Step 1. 4. **Column H (Directional factor)**: `1` for thermal / radial VCE models; `θ/360` for Flash Fire (CCPS Eq. 4.4.4). 5. **Column J (IR contribution)**: live formula `=E×I = f_i × factor`. This is what it contributes to the IR of any point that falls within the circle. 6. **Column L (Notes)**: indicates special cases like "source inside LEL polygon → θ=360°". ### Step 3 — Sheet 3 (Receivers) 1. Each row is an (x,y) point of interest with its name, type, lat/lon, and population. 2. If **Geometry** ≠ `Point`, the lat/lon is the centroid of the original geometry (LineString/Polygon) — the Notes column flags it. ### Step 4 — Sheet 4 (Point Contributions) — **the key sheet for the authority** 1. The *Reference* row (row 6 approx.) brings the **radii** and **potential contributions** from Sheet 2 via `INDEX(RADIOS_SCENARIOS, #)` and `INDEX(CONTRIBUCIONES_SCENARIOS, #)`. 2. For each receiver (row): - **Distance (precomputed)**: haversine between the receiver and the circle center of the scenario. - **Contribution (live formula)**: `=IF(distance ≤ radius; contribution; 0)`. If the receiver falls inside the circle, the contribution is added; otherwise, 0. 3. The final column **IR(x,y)** sums the individual contributions: `=SUM(contributions in the row)`. This is CCPS Eq. 4.4.1 in its binary form. **How to verify a point manually**: - Compute by hand the distance from the receiver to the scenario source. - Compare with the radius r_i from Sheet 2. - If distance ≤ r_i → the contribution must be f_i × directional_factor. - Sum all contributions ≠ 0 → it should match the IR(x,y) column. ### Step 5 — Sheet 5 (Average IR) 1. For each receiver: `IR(x,y)` is referenced from Sheet 4 (`INDEX(IR_POR_RECEPTOR, #)`). 2. `IR × P` is a live formula. 3. If there is **background population** (density × area per band outside receivers), an additional block appears below. 4. **TOTAL** row: `Σ(P)` and `Σ(IR×P)` with SUM formulas. 5. **IR_av (Eq. 4.4.6)** = `Σ(IR×P) / Σ(P)` — average individual risk of the exposed population. 6. **IR_av (Eq. 4.4.7)** = `Σ(IR×P) / P_T` — average individual risk over the total project population. ### Step 6 — Sheet 6 (Contour Levels) 1. For each cluster of concentric disks (scenarios at the same source), the disks are sorted by descending radius. 2. The **Cumulative IR** column applies CCPS Eq. 4.4.5: `F = F_previous + E_current` (cumulative sum). 3. Each cumulative corresponds to an actual iso-contour level drawn on the map. 4. The last value of each cluster (bold red) = maximum IR of the cluster. ### Step 7 — Sheet 7 (Methodology) 1. Table of canonical equations with their mathematical form and description. 2. Table of variables with SI units. 3. List of bibliographic references (CCPS QRA 2nd Ed., NTE-002, etc.). --- ## 4. How to do a sensitivity analysis The workbook contains live formulas that recalculate automatically when opened. To audit sensitivities: - **Change the fatality threshold**: modify the **THRESHOLD_PCT** cell in Sheet 1. This affects labeling only; the radii r_i are precomputed by the engine for the threshold fixed at calculation time. To reflect a new threshold you must regenerate the Excel from the application. - **Change an initial frequency**: modify the corresponding cell E in **Sheet 2**. The contribution (Column J) and the IR(x,y) of each receiver (Sheet 4) recalculate instantly. - **Change the directional factor**: modify column H in **Sheet 2**. Useful to evaluate scenarios where θ is uncertain in FF. - **Change a receiver's population**: modify column D in **Sheet 5**. Σ(P) and IR_av recalculate. - **Change the tolerability criteria**: modify INTOL_THR / TOL_THR in **Sheet 1**. The Band in Sheet 5 changes category. > **Note**: the workbook has `fullCalcOnLoad = true`, so Excel recalculates all formulas when opened. If cells appear blank, press **F9** to force recalculation. --- ## 5. Glossary | Symbol | Meaning | Unit | |---|---|---| | **IR(x,y)** | Individual risk at location (x,y) | yr⁻¹ | | **IR_av** | Average individual risk (population-weighted) | yr⁻¹ | | **Pf** | Fatality probability (0–1). In the simplified method: 0 or 1. | — | | **f_i** | Initial frequency of scenario i (events/year) | yr⁻¹ | | **P(x,y)** | People at location (x,y) | persons | | **P_T** | Predetermined total project population | persons | | **r_i** | Analytical radius where Pf crosses the threshold | m | | **θ** | Angle enclosed by the LEL polygon from the source | degrees | | **θ/360** | Flash Fire directional factor (CCPS Eq. 4.4.4) | — | | **Cluster** | Group of concentric scenarios at the same source | — | | **Analytical circle** | Circular approximation of the scenario in the simplified method | — | | **Tolerability band** | Intolerable / ALARP / Acceptable per criteria | — | --- ## 6. References - CCPS, *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed., AIChE/CCPS, 2000. Chapter 4 §4.4.1.3. - CCPS QRA 2nd Ed., Equations 4.4.1, 4.4.4, 4.4.5, 4.4.6, 4.4.7. - Applicable technical standard per project jurisdiction (e.g. NTE-002, ASEA Guidelines). --- ## 7. Limitations and assumptions 1. **Binary discriminator**: in the simplified method, `Pf = 1` if probit fatality ≥ threshold, otherwise `Pf = 0`. The continuous probit curve from the general method is not used. 2. **Simplified Flash Fire**: for FF scenarios, the engine forces CCPS Eq. 4.4.4 (circular zone of radius R with factor θ/360), regardless of the individual model's wind rose setting. 3. **Directional VCE**: for VCE scenarios with SLAB dispersion, the engine collapses the directional envelope to a worst-case circle centered at the source. 4. **Receivers with complex geometry**: for LineString/Polygon the centroid is used as the evaluation point. This may underestimate IR for extended receivers near the circle boundary. 5. **Source inside LEL polygon**: if the source falls inside the LEL polygon in FF, θ saturates to 360° (directional factor = 1). 6. **Background population**: when using population density, the calculation assumes uniform people distribution within the band. This may not reflect actual concentrations (urban vs rural zones). 7. **Workbook recalculation**: live formulas recalculate automatically when the file is opened in Excel/LibreOffice. If the file is opened in viewers that do not evaluate formulas, the cached values show the original result. --- *Generated by TekRisk — Simplified Method Calculation Memory (CCPS-4-3 §4.4.1.3).* --- # Average Individual Risk: Exposed & Total Population Source: https://tekrisk.com/en/docs/individual-risk/ir-average Calculation methodology for Average Individual Risk (IR_av) using CCPS Equations 4.4.6 and 4.4.7 — exposed population weighting, total population averaging, and ALARP classification ## 1. Purpose This document describes the complete calculation methodology for the **Average Individual Risk ($IR_{av}$)** as implemented in TekRisk. It covers: How individual risk $IR(x,y)$ is computed at each geographic point How the exposed population is estimated across the risk contours How the two $IR_{av}$ metrics are calculated and what they represent How the result is classified against international tolerance criteria CCPS (Center for Chemical Process Safety), *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Edition. - **Equation 4.4.6** — Average Individual Risk (Exposed Population) - **Equation 4.4.7** — Average Individual Risk (Total Population) --- ## 2. Key Concepts Individual risk at geographic location $(x,y)$. Probability per year that a person permanently located at that point would die as a consequence of an industrial accident. Unit: $\text{yr}^{-1}$. Average individual risk. The population-weighted average of $IR(x,y)$ over all locations where people are present. Total predetermined population for averaging risk. May include people located outside the risk contours. As Low As Reasonably Practicable. The zone between tolerable and intolerable risk thresholds. | Term | Definition | |------|-----------| | $f_i$ | Annual frequency of accident scenario $i$. Unit: events/yr. | | $P_{f,i}(x,y)$ | Probability of fatality at location $(x,y)$ given that scenario $i$ occurs. Range: 0 to 1. | | $P_{xy}$ | Number of people at location $(x,y)$. Derived from receivers or background density. | | Contour level | A specific IR value (e.g., $10^{-5}\ \text{yr}^{-1}$). The contour line encloses all locations where $IR \geq$ that value. | --- ## 3. Calculation Chain Overview The complete calculation follows this sequence: **Define accident scenarios** — source location, frequency, consequence model **Calculate $IR(x,y)$** at every point on a geographic grid: $$IR(x,y) = \sum_{i} f_i \times P_{f,i}(x,y)$$ **Extract contour polygons** from the grid (lines of equal individual risk) **Assign population** to grid cells (receivers + background density) **Calculate $IR_{av}$ (Exposed Population)** — Eq. 4.4.6: $$IR_{av} = \frac{\sum(IR_{xy} \times P_{xy})}{\sum(P_{xy})}$$ **Calculate $IR_{av}$ (Total Population)** — Eq. 4.4.7: $$IR_{av} = \frac{\sum(IR_{xy} \times P_{xy})}{P_T}$$ **Classify the result** against tolerance criteria (Acceptable / ALARP / Intolerable) --- ## 4. Accident Scenarios Each scenario represents a specific accident that could occur at an industrial source. The following data is required: | Parameter | Description | Example | |-----------|-------------|---------| | Source coordinates | Geographic location (latitude, longitude) | 19.4326 N, -99.1332 W | | Frequency ($f_i$) | How often this accident is expected to occur | $1.5 \times 10^{-4}$ events/yr | | Model type | Type of consequence model | Pool fire, jet fire, VCE, flash fire, fireball | | Fatality profile | Distance vs. fatality probability | See Section 4.1 | ### 4.1 Fatality Profile For **thermal models** (fireball, pool fire, jet fire) and **explosions** (VCE), the fatality profile is a table of radial distance vs. fatality probability: | Distance (m) | Fatality (%) | |:---:|:---:| | 50 | 100 | | 100 | 80 | | 200 | 40 | | 300 | 10 | | 400 | 0 | This profile is derived from probit equations applied to the thermal radiation or overpressure results for each scenario. For flash fire, the hazard zone is a geographic polygon (the LEL cloud boundary). Anyone inside the cloud at the time of ignition is assumed to have 100% fatality probability. Wind direction determines the cloud orientation. --- ## 5. Individual Risk at Each Point: IR(x,y) ### 5.1 Formula $$ IR(x,y) = \sum_{i=1}^{n} f_i \times P_{f,i}(x,y) $$ Where: - $n$ = number of accident scenarios - $f_i$ = frequency of scenario $i$ ($\text{yr}^{-1}$) - $P_{f,i}(x,y)$ = probability of fatality at $(x,y)$ for scenario $i$ This means: **sum the risk contributions from all scenarios** at each point. ### 5.2 Calculation Grid The calculation is performed on a uniform rectangular grid: | Parameter | Description | Typical value | |-----------|-------------|---------------| | Center | Centroid of all source locations | Automatic | | Resolution | Distance between grid points | 25 meters | | Extent | Half-width of the grid from center | 500 to 6,000 meters (automatic) | **Grid size example:** Resolution = 25 m, extent = 2,500 m produces 201 $\times$ 201 = 40,401 calculation points. ### 5.3 Fatality Probability: Thermal and Explosion Models For a grid point at distance $d$ from the source: **Calculate distance:** $d = \sqrt{(x - x_{\text{source}})^2 + (y - y_{\text{source}})^2}$ **Interpolate the fatality profile:** - If $d \leq$ minimum profile distance: $P_f = $ first profile value / 100 - If $d \geq$ maximum profile distance: $P_f = 0$ - Otherwise: linear interpolation between the two nearest profile points **Contribution to IR:** $f_i \times P_f$ ### 5.4 Fatality Probability: Flash Fire (Directional) Flash fire is direction-dependent. The LEL cloud polygon is rotated to each possible wind direction: $$ P_{f,\text{ff}}(x,y) = \sum_{\theta} P(\text{wind} = \theta) \times \mathbb{1}\{(x,y) \in \text{LEL}_{\theta}\} $$ Where: - $\theta$ = wind direction (16 directions from wind rose: N, NNE, NE, ..., NNW) - $P(\text{wind} = \theta)$ = probability that wind blows FROM direction $\theta$ - $\mathbb{1}()$ = 1 if the point is inside the rotated LEL polygon, 0 otherwise The 16 wind rose directions are interpolated to 72 directions (every 5 degrees) using a circular Catmull-Rom spline. This produces smooth contours instead of discrete "petal" artifacts. ### 5.5 Combining All Scenarios At each grid point, the IR contributions from ALL scenarios are summed: $$ IR(x_i, y_j) = \sum_{k=1}^{n} f_k \times P_{f,k}(x_i, y_j) $$ --- ## 6. Contour Extraction ### 6.1 Contour Levels | Level ($\text{yr}^{-1}$) | Meaning | |--------------------------|---------| | $10^{-2}$ | 1 in 100 per year | | $10^{-3}$ | 1 in 1,000 per year | | $10^{-4}$ | 1 in 10,000 per year | | $10^{-5}$ | 1 in 100,000 per year | | $10^{-6}$ | 1 in 1,000,000 per year | | $10^{-7}$ | 1 in 10,000,000 per year | | $10^{-8}$ | 1 in 100,000,000 per year | ### 6.2 Extraction Method Contour polygons are extracted using the **marching squares** algorithm: For each contour level, classify every grid cell as above or below Interpolate exact crossing points on cell edges Connect all crossing points into closed polygons Convert to geographic coordinates ### 6.3 Area Calculation The enclosed area of each contour is calculated using the **shoelace formula** applied to the polygon vertices. Results in $\text{m}^2$ and hectares. --- ## 7. Population Assignment Population is assigned to each grid cell from three sources, in priority order: **Polygon receivers** (e.g., residential zones, school campuses): $$ P_{\text{cell}} = P_{\text{receiver}} \times \frac{A_{\text{cell}}}{A_{\text{receiver}}} $$ The receiver's population is distributed uniformly across its geographic area. **Point receivers** (e.g., a hospital, a specific building): $$ P_{\text{cell}} = P_{\text{receiver}} $$ The entire population is assigned to the nearest grid cell. For all grid cells NOT assigned to any receiver, and where $IR > 0$: $$ P_{\text{cell}} = \rho \times A_{\text{cell}} $$ **Density conversion:** | Input unit | Conversion to p/m² | |------------|---------------------| | p/km² | $\rho / 1{,}000{,}000$ | | p/ha | $\rho / 10{,}000$ | | p/m² | no conversion needed | **Example:** density = 100 p/km², cell = 25 $\times$ 25 m = 625 m² $$ P_{\text{cell}} = \frac{100}{1{,}000{,}000} \times 625 = 0.0625 \text{ persons per cell} $$ --- ## 8. IR_av: Exposed Population (Eq. 4.4.6) ### 8.1 Formula $$ IR_{av}^{(\text{exp})} = \frac{\sum(IR_{xy} \times P_{xy})}{\sum(P_{xy})} \qquad \text{(CCPS Eq. 4.4.6)} $$ | Variable | Description | |----------|-------------| | $IR_{xy}$ | Individual risk at location $(x,y)$ — the actual grid value ($\text{yr}^{-1}$) | | $P_{xy}$ | Number of people at location $(x,y)$ | | $\sum(P_{xy})$ | Total exposed population — only people within risk contours | ### 8.2 Meaning This metric answers: **"What is the average annual fatality risk for a person in the exposed population?"** The "exposed population" consists only of people who are within the risk contours — i.e., people who face some non-zero level of risk from the facility. ### 8.3 Calculation Procedure ``` totalWeightedRisk = 0 (numerator) totalPopulation = 0 (denominator) For each grid cell (i, j) where IR > 0: IR_cell = grid value at (i, j) Determine P_cell: - If cell is inside a polygon receiver: proportional population - Else if cell matches a point receiver: receiver population - Else if project density > 0: density × cell_area - Else: skip (no people at this location) If P_cell > 0: totalWeightedRisk += IR_cell × P_cell totalPopulation += P_cell IR_av(exposed) = totalWeightedRisk / totalPopulation ``` If `totalPopulation = 0`, the result is null (no exposed population found). ### 8.4 Audit Breakdown For traceability, each grid cell is classified into a contour band: | Band | Risk Level | |------|-----------| | $\geq 10^{-2}$ | Innermost, highest risk | | $10^{-3}$ to $10^{-2}$ | | | $10^{-4}$ to $10^{-3}$ | | | $10^{-5}$ to $10^{-4}$ | | | $10^{-6}$ to $10^{-5}$ | | | $10^{-7}$ to $10^{-6}$ | | | $10^{-8}$ to $10^{-7}$ | Outermost, lowest risk | For each band, the report shows: - Number of grid cells - Area ($\text{m}^2$) - Population - Representative IR (weighted average of grid values in that band) - Weighted risk contribution ($IR \times P$) - Percentage of total contribution This breakdown is available in both the application interface and the PDF report. --- ## 9. IR_av: Total Population (Eq. 4.4.7) ### 9.1 Formula $$ IR_{av}^{(\text{tot})} = \frac{\sum(IR_{xy} \times P_{xy})}{P_T} \qquad \text{(CCPS Eq. 4.4.7)} $$ | Variable | Description | |----------|-------------| | $\sum(IR_{xy} \times P_{xy})$ | Same numerator as Eq. 4.4.6 — identical calculation | | $P_T$ | Total predetermined population — entered by the user | ### 9.2 Meaning This metric answers: **"What is the average annual fatality risk across the entire surrounding population, including those who face zero risk?"** $P_T$ is the entire population of interest. For example: - The population of the town surrounding the plant - All workers inside an industrial complex - The population within a defined radius from the facility ### 9.3 Key Difference from Eq. 4.4.6 | Aspect | Exposed Population (Eq. 4.4.6) | Total Population (Eq. 4.4.7) | |--------|--------------------------------|-------------------------------| | **Numerator** | $\sum(IR_{xy} \times P_{xy})$ | $\sum(IR_{xy} \times P_{xy})$ — **identical** | | **Denominator** | $\sum(P_{xy})$ — exposed only | $P_T$ — all people, including unexposed | | **What it includes** | Only people within risk contours | All people, even those with zero risk | | **Typical result** | Higher value | Lower value | | **When to use** | Default metric for risk assessment | When regulations require total population basis | ### 9.4 Calculation Since the numerator is already computed in Step 5: $$ IR_{av}^{(\text{tot})} = \frac{\text{totalWeightedRisk}}{P_T} $$ Where $P_T$ is entered directly in the IR Average tab of the application. ### 9.5 CCPS Warning *"This measure of individual risk must be used with caution. Average individual risk can be made to appear very low by including a large number of people incurring little or no risk in the predetermined population."* — CCPS QRA 2nd Ed., Section 4.4, p. 418 A facility near a large city will show a very low $IR_{av}^{(\text{tot})}$ simply because the denominator is large. This does **not** mean the risk is low for people near the facility. Always interpret Eq. 4.4.7 together with Eq. 4.4.6. --- ## 10. Risk Level Classification ### 10.1 ALARP Framework | Zone | Condition | Required Action | |------|-----------|----------------| | **Intolerable** | $IR_{av} \geq$ intolerable threshold | Risk is unacceptable. Reduction required regardless of cost. | | **ALARP** | tolerable $\leq IR_{av} <$ intolerable | Risk should be reduced unless cost is grossly disproportionate to the benefit. | | **Acceptable** | $IR_{av} <$ tolerable threshold | Risk is broadly acceptable. No additional measures required. | ### 10.2 Available Criteria | Country / Standard | Target | Intolerable ($\text{yr}^{-1}$) | Tolerable ($\text{yr}^{-1}$) | Reference | |-------------------|--------|-------------------------------|-----------------------------|-----------| | UK HSE | Workers | $10^{-3}$ | $10^{-6}$ | R2P2 | | UK HSE | Public | $10^{-4}$ | $10^{-6}$ | R2P2 | | Mexico ASEA | Public | $10^{-3}$ | $10^{-6}$ | ASEA Guidelines | | Netherlands RIVM | Public | $10^{-5}$ | $10^{-8}$ | Dutch Risk Criteria | | Hong Kong | Public | $10^{-5}$ | $10^{-6}$ | HKSAR Guidelines | | Australia (HIPAP) | Public | $10^{-5}$ | $10^{-6}$ | HIPAP No. 4 | | USA EPA | Public | $10^{-4}$ | $10^{-6}$ | EPA Guidelines | | Custom | — | User-defined | User-defined | — | **Both $IR_{av}$ metrics** (Exposed and Total Population) are independently classified against the same criteria. They may fall in different zones — this is expected. --- ## 11. Worked Numerical Example ### 11.1 Project Data - Grid resolution: 25 m (cell area = 625 $\text{m}^2$) - Population density: 100 p/km² = 0.0001 p/m² - $P_T$ (total population of nearby town): 15,000 inhabitants - Two accident scenarios: - Scenario A: Pool fire, $f = 5 \times 10^{-4}\ \text{yr}^{-1}$ - Scenario B: VCE, $f = 2 \times 10^{-5}\ \text{yr}^{-1}$ ### 11.2 IR at a Sample Point (200 m East of Scenario A) $$ IR_A = f_A \times P_{f,A}(200\ \text{m}) = 5 \times 10^{-4} \times 0.40 = 2.00 \times 10^{-4} $$ $$ IR_B = f_B \times P_{f,B}(200\ \text{m}) = 2 \times 10^{-5} \times 0.15 = 3.00 \times 10^{-6} $$ $$ IR(200\ \text{m east}) = 2.00 \times 10^{-4} + 3.00 \times 10^{-6} = 2.03 \times 10^{-4}\ \text{yr}^{-1} $$ ### 11.3 Receiver: "North Colony" (Polygon) - Population: 200 people, area: 30,000 $\text{m}^2$ - 48 grid cells inside (48 $\times$ 625 = 30,000 $\text{m}^2$) - Population per cell: $200 \times (625 / 30{,}000) = 4.17$ persons | Band | Cells | Avg IR | Pop. per cell | $IR \times P$ per band | |------|-------|--------|---------------|----------------------| | $10^{-5}$ to $10^{-4}$ | 3 | $4.2 \times 10^{-5}$ | 4.17 | $5.25 \times 10^{-4}$ | | $10^{-6}$ to $10^{-5}$ | 12 | $5.1 \times 10^{-6}$ | 4.17 | $2.55 \times 10^{-4}$ | | Below $10^{-6}$ | 33 | $< 10^{-6}$ | 4.17 | negligible | | **Subtotal** | **48** | | **200** | **$\approx 7.80 \times 10^{-4}$** | ### 11.4 Receiver: "School" (Point) - Population: 150 people - IR at location: $8.5 \times 10^{-7}\ \text{yr}^{-1}$ - Contribution: $8.5 \times 10^{-7} \times 150 = 1.275 \times 10^{-4}$ ### 11.5 Background Population - 520 grid cells with $IR > 0$ not inside any receiver - $P_{\text{cell}} = 0.0625$ per cell - Background population: $520 \times 0.0625 = 32.5$ persons - Background weighted risk: $6.12 \times 10^{-5}$ ### 11.6 Results $$ \text{Numerator:}\quad \sum(IR \times P) = 7.80 \times 10^{-4} + 1.275 \times 10^{-4} + 6.12 \times 10^{-5} = 9.69 \times 10^{-4} $$ $$ \text{Denominator:}\quad \sum(P_{xy}) = 200 + 150 + 32.5 = 382.5 $$ $$ \text{Eq. 4.4.6:}\quad IR_{av}^{(\text{exp})} = \frac{9.69 \times 10^{-4}}{382.5} = 2.53 \times 10^{-6}\ \text{yr}^{-1} $$ $$ \text{Eq. 4.4.7:}\quad IR_{av}^{(\text{tot})} = \frac{9.69 \times 10^{-4}}{15{,}000} = 6.46 \times 10^{-8}\ \text{yr}^{-1} $$ ### 11.7 Classification (UK HSE — Public) | Metric | Value | vs. Intolerable ($10^{-4}$) | vs. Tolerable ($10^{-6}$) | Result | |--------|-------|---------------------------|--------------------------|--------| | $IR_{av}$ Exposed | $2.53 \times 10^{-6}$ | Below | Above | **ALARP** | | $IR_{av}$ Total | $6.46 \times 10^{-8}$ | Below | Below | **Acceptable** | People in the exposed area face ALARP-level risk; risk reduction measures should be evaluated. The average across the entire town is acceptable. Both perspectives are complementary and should be reported together. --- ## 12. Interpretation Guidelines for Regulators ### 12.1 Which Metric to Use - **Eq. 4.4.6 (Exposed Population)** is the **primary metric** for most frameworks. It directly answers: "how much risk do exposed people face?" - **Eq. 4.4.7 (Total Population)** is a **supplementary metric**. Use when regulations specifically require it, or to provide context about risk dilution. ### 12.2 Verification Checklist | # | Check | What to look for | |---|-------|-----------------| | 1 | Scenario completeness | Are all relevant accident scenarios included? | | 2 | Frequencies | Consistent with historical data, fault trees, or event trees? | | 3 | Fatality profiles | Reasonable distances for the substances and conditions? | | 4 | Grid resolution | Fine enough to capture risk gradients? (Recommended: $\leq$ 25 m) | | 5 | Population data | Receivers correctly placed? Background density matches census? | | 6 | Contour areas | Physically reasonable given the scenario types? | | 7 | $P_T$ value | Represents the actual population in the defined influence area? | | 8 | Tolerance criteria | Correct country-specific criteria applied? | ### 12.3 Common Pitfalls | Issue | Impact | How to detect | |-------|--------|---------------| | Missing scenarios | Underestimates risk | Compare scenario list against HAZOP/PHA | | Coarse grid (>50 m) | Smooths out peak risk | Check resolution in report | | No receivers defined | Only background density used | Check receiver count in breakdown | | $P_T$ too large | $IR_{av}^{(\text{tot})}$ artificially low | Compare $P_T$ against census data | | Wrong density units | Over/underestimated population | Verify p/km² matches actual area | --- ## 13. References | # | Reference | |---|-----------| | 1 | **CCPS** (2000). *"Guidelines for Chemical Process Quantitative Risk Analysis"*, 2nd Ed., AIChE. | | 2 | **UK HSE** (2001). *"Reducing Risks, Protecting People (R2P2)"*. Health and Safety Executive. | | 3 | **ASEA Mexico**. *"Lineamientos para el Análisis de Riesgo Industrial"*. | | 4 | **RIVM Netherlands**. *"Dutch Risk Criteria for External Safety"*. | | 5 | **HIPAP No. 4**. *"Risk Criteria for Land Use Safety Planning"*, NSW Australia. | | 6 | **EPA**. *"Risk Management Program Guidance"*. | --- # Individual Risk Contours Source: https://tekrisk.com/en/docs/individual-risk/ir-contours Technical methodology for calculating Individual Risk (IR) contour maps using TekRisk — grid-based IR aggregation, Marching Squares contouring, and GeoJSON output for QRA visualization ## 1. Executive Summary **Individual Risk (IR) contours** are iso-risk lines drawn on a map that connect all geographic points sharing the same annual probability of fatality due to industrial hazards. They are the cornerstone of Quantitative Risk Assessment (QRA) in the chemical and oil & gas industries. TekRisk computes IR contours by: **Aggregating** all defined risk scenarios (fires, explosions, toxic clouds) at a facility **Evaluating** the fatality probability at thousands of grid points around the site **Extracting** contour lines at standard risk levels (e.g., $1 \times 10^{-5}$, $1 \times 10^{-6}$ per year) **Projecting** results onto a geographic map as GeoJSON polygons The result is a set of nested contour polygons — each representing a different risk level — overlaid on a Mapbox GL map, allowing engineers to visually assess whether vulnerable receptors (schools, hospitals, residential areas) fall within unacceptable risk zones. --- ## 2. Key Concepts Annual probability that a hypothetical person, continuously present and unprotected at a specific location, will be killed due to an industrial accident. Expressed as a dimensionless number per year (e.g., $IR = 1 \times 10^{-5}$/year = 1 in 100,000 chance). How often a particular accident scenario is expected to occur, in events/year. Derived from historical failure rate databases (OREDA, OGP/IOGP) combined with event tree analysis. Probability of death at a specific location given a scenario occurs. Derived from probit models (thermal/blast) or point-in-polygon tests (flash fire — $P_f = 1.0$ inside the LEL envelope, $0$ outside). Specific IR values at which iso-risk lines are drawn. TekRisk uses seven standard levels: $10^{-2}$ through $10^{-8}$ per year. ### 2.1 Core Formula The Individual Risk at any point $(x, y)$ is the sum of contributions from all scenarios: $$ IR(x, y) = \sum_{i} f_i \times P_{f,i}(x, y) $$ | Symbol | Description | Units | |--------|-------------|-------| | $IR(x, y)$ | Individual risk at location $(x, y)$ | per year | | $f_i$ | Frequency of scenario $i$ | events/year | | $P_{f,i}(x, y)$ | Probability of fatality at $(x, y)$ given scenario $i$ occurs | dimensionless $[0, 1]$ | | $i$ | Scenario index (each risk model is a scenario) | — | --- ## 3. Supported Risk Models TekRisk supports five consequence model types, each contributing to the overall IR calculation: | Model | Hazard Type | Symmetry | $P_f$ Method | Wind Dependence | |-------|-------------|----------|-------------|-----------------| | **Fireball** | Thermal radiation | Radial | Distance-based interpolation on fatality profile | None — omni-directional | | **Pool Fire** | Thermal radiation | Radial | Distance-based interpolation on fatality profile | None — radially symmetric | | **Jet Fire** | Thermal radiation | Radial | Distance-based interpolation on fatality profile | None — radially symmetric | | **VCE** | Blast overpressure | Radial | Distance-based interpolation on fatality profile | None — radially symmetric | | **Flash Fire** | Flame engulfment | Directional | Point-in-polygon on rotated LEL envelope | Critical — uses full 16-direction wind rose | **Fireball, Pool Fire, Jet Fire, VCE** — These models assume the hazard effect decays with distance from the source in all directions equally. The fatality probability at any point depends only on the Euclidean distance to the source, following a pre-computed **fatality profile** (fatality percentage vs. distance). **Flash Fire** is fundamentally different. The flammable vapor cloud extends downwind from the source, and its shape depends on atmospheric dispersion. The fatality probability at any point depends on whether the point falls inside the **Lower Explosive Limit (LEL)** envelope, and the **probability** that the wind is blowing in the direction that would carry the cloud toward that point. --- ## 4. Step-by-Step Methodology {`flowchart TD A["Input Data
(Risk Models, Source Locations,
Fatality Profiles, Wind Rose)"] --> B["Step 1: Scenario Definition
Build scenario list with
frequency, source, model type"] B --> C["Step 2: Wind Rose Integration
(Flash Fire only)
Pre-rotate LEL polygons × 16 dirs"] B --> D["Step 3: Grid Generation
2D rectangular grid
resolution + auto-extent"] C --> E["Step 4: IR Calculation
For each grid point:
Radial → distance + interpolate
Flash Fire → point-in-polygon"] D --> E E --> F["Step 5: Contour Extraction
Marching Squares algorithm
4-bit cell → closed polygons"] F --> G["Step 6: Geographic Conversion
Local meters → lat/lon
GeoJSON FeatureCollection"] style A fill:#e1f5fe style G fill:#c8e6c9 style E fill:#fff3e0`}
### Step 1: Scenario Definition Each enabled risk model defines a **scenario** characterized by: | Parameter | Description | Source | |-----------|-------------|--------| | Frequency ($f$) | Annual occurrence rate | Risk model configuration | | Source location | Geographic coordinates (lat, lon) | Source definition | | Model type | fireball, poolfire, jetfire, vce, flashfire | Risk model type | | Fatality profile | $P_f$ vs. distance curve (radial) or LEL polygon (flash fire) | Prior consequence calculation results | **Fatality profiles** are extracted from previously completed consequence calculations stored in `RiskCalculation.results.fatalidades`. Each profile consists of distance-fatality percentage pairs: | Distance (m) | Fatality (%) | |:---:|:---:| | 0 | 100 | | 25 | 95 | | 50 | 70 | | 100 | 30 | | 200 | 5 | | 350 | 0 | For flash fire models, the fatality "profile" is replaced by a **LEL polygon** — the geographic outline of the flammable cloud at the Lower Explosive Limit concentration for a single wind direction. --- ### Step 2: Wind Rose Integration (Flash Fire) Flash fire scenarios require integration with a **Pasquill-Gifford wind rose** to account for the directional nature of vapor cloud propagation. #### Wind Rose Structure The wind rose divides the compass into **16 equi-spaced directions** at 22.5° intervals. Each direction carries a probability (fraction of time the wind blows from that direction), split into day and night periods: | Period | Hours | Stability Classes | |--------|-------|-------------------| | Day | 06:00 – 18:00 | A, B, C, D | | Night | 18:00 – 06:00 | D, E, F | #### Polygon Rotation For each of the 16 wind directions, the base LEL polygon is **rotated around the source point**: $$ x' = x \cos(\theta) - y \sin(\theta) $$ $$ y' = x \sin(\theta) + y \cos(\theta) $$ Where $(x, y)$ is the original polygon vertex relative to source, $\theta$ is the rotation angle, and $(x', y')$ is the rotated vertex. The result is **16 rotated LEL polygons**, each associated with the wind probability for its direction. #### Flash Fire $P_f$ Formula $$ P_{f,\text{ff}}(x, y) = \min\!\left(1.0,\; \sum_{j} p(\theta_j) \cdot \mathbb{1}\{(x,y) \in \text{Polygon}(\theta_j)\}\right) $$ Where: | Symbol | Description | |--------|-------------| | $\theta_j$ | Wind direction $j \in \{0°, 22.5°, \ldots, 337.5°\}$ | | $p(\theta_j)$ | Probability of wind from direction $\theta_j$ $(0$ to $1)$ | | $\text{Polygon}(\theta_j)$ | LEL polygon rotated to direction $\theta_j$ | | $\mathbb{1}\{\cdot\}$ | Indicator function: 1 if point is inside polygon, 0 otherwise | The sum is capped at 1.0 because the maximum fatality probability cannot exceed certainty. --- ### Step 3: Grid Generation A uniform 2D rectangular grid is generated to evaluate IR across the study area. | Parameter | Description | Default | |-----------|-------------|---------| | Center | Centroid of all source coordinates | Auto-calculated | | Resolution | Spacing between adjacent grid points | 25 m | | Extent | Half-size of the grid from center | Auto-calculated | **Available resolutions**: 1, 5, 10, 25, 50, 100 meters. #### Auto-Calculation of Extent Find the **maximum fatality profile distance** across all scenarios Multiply by **1.3** (30% padding factor) Round up to the nearest **100 m** #### Grid Dimensions $$ \text{Points per side} = \frac{2 \times \text{extent}}{\text{resolution}} + 1 $$ $$ \text{Total grid points} = (\text{Points per side})^2 $$ **Example**: With extent = 2,000 m and resolution = 25 m → 161 points per side → **25,921 total points**. #### Coordinate System The grid uses a **local Cartesian coordinate system** in meters: - **Origin**: Grid center (centroid of sources) - **X-axis**: West → East (positive eastward) - **Y-axis**: South → North (positive northward) This approximation is valid for distances up to ~50 km from the center — adequate for typical industrial sites. --- ### Step 4: IR Calculation at Each Grid Point For every point in the grid, the system accumulates IR contributions from all enabled scenarios. **Fireball, Pool Fire, Jet Fire, VCE** — For each grid point $(x_i, y_j)$ and each radial scenario $s$: **Step 1 — Euclidean distance:** $d = \sqrt{(x_i - x_s)^2 + (y_j - y_s)^2}$ **Step 2 — Quick reject:** If $d > d_{\max}$ → skip ($P_f = 0$) **Step 3 — Interpolate fatality profile:** If $d \leq d_0$: $P_f = P_0 / 100$. Otherwise find interval $[d_k, d_{k+1}]$ containing $d$: $$ t = \frac{d - d_k}{d_{k+1} - d_k}, \qquad P_f = \frac{P_k + t \cdot (P_{k+1} - P_k)}{100} $$ **Step 4 — Accumulate:** $IR(x_i, y_j) \mathrel{+}= f_s \times P_f$ For each grid point $(x_i, y_j)$ and each flash fire scenario $s$: **Step 1 — Convert** grid point to geographic coordinates (lat, lon). **Step 2 — Point-in-polygon test:** For each of 16 pre-rotated LEL polygons, test if (lon, lat) falls inside the polygon using the **ray-casting** algorithm. **Step 3 — Accumulate** wind-weighted probability: $$ P_f = \min\!\left(1.0,\; \sum (\text{wind probability} \times \text{inside indicator})\right) $$ **Step 4 — Accumulate:** $IR(x_i, y_j) \mathrel{+}= f_s \times P_f$ For thermal and VCE fatality profiles, the interpolation is **piecewise linear**. Given profile points $(d_0, P_0), (d_1, P_1), \ldots, (d_n, P_n)$: If $d \leq d_0$ → $P_f = P_0$ (constant below minimum distance). If $d \geq d_n$ → $P_f = 0$ (zero beyond maximum distance). Otherwise → **linear interpolation** between bracketing points. --- ### Step 5: Contour Extraction (Marching Squares) Once the IR grid is fully populated, contour lines at each target level are extracted using the **Marching Squares** algorithm. Marching Squares processes the grid **cell by cell**. Each cell has four corner values. For a given contour level, each corner is classified as **above** ($\geq$ level) or **below** ($<$ level), creating a **4-bit index** (16 possible configurations). The four bits correspond to: bit 0 = bottom-left, bit 1 = bottom-right, bit 2 = top-right, bit 3 = top-left. If a corner value $\geq$ the contour level, its bit = 1. **Saddle points** (cases 5 and 10) are ambiguous configurations that generate two separate edge segments. For each edge that the contour crosses, the exact crossing position is computed by **linear interpolation**: Given two adjacent corner values $v_1$ and $v_2$, and the contour level $L$: $$ t = \frac{L - v_1}{v_2 - v_1}, \qquad t \in [0, 1] $$ $$ \text{Crossing point} = \text{vertex}_1 + t \times (\text{vertex}_2 - \text{vertex}_1) $$ The marching squares pass produces disconnected line segments. These are connected into **closed polygons**: Start with an unvisited segment → find the nearest unvisited segment whose start point is within tolerance ($1 \times 10^{-6}$ m) of the current endpoint → append and continue until the polygon closes (endpoint $\approx$ start point) → repeat for remaining unvisited segments. All output polygons are validated to ensure **counter-clockwise (CCW)** winding order, as required by the GeoJSON specification. This is verified using the **signed area** from the shoelace formula: $$ \text{Signed Area} = \frac{1}{2} \sum_{i} (x_i \cdot y_{i+1} - x_{i+1} \cdot y_i) $$ If Signed Area $< 0$ → polygon is clockwise → **reverse vertex order**. If Signed Area $> 0$ → polygon is counter-clockwise → **correct**. --- ### Step 6: Geographic Conversion Contour polygons are converted from local meter coordinates back to geographic coordinates for map display. #### Conversion Formulas $$ \text{lat} = \text{lat}_{\text{center}} + \frac{y}{111{,}320} $$ $$ \text{lon} = \text{lon}_{\text{center}} + \frac{x}{111{,}320 \times \cos(\text{lat}_{\text{center}} \times \pi / 180)} $$ Where $111{,}320$ is the approximate meters per degree of latitude (WGS84). #### GeoJSON Output Each contour polygon is packaged as a GeoJSON Feature: ```json { "type": "Feature", "properties": { "level": 1e-5, "levelFormatted": "1e-5", "color": "#EA580C", "opacity": 0.3, "type": "ir_contour" }, "geometry": { "type": "Polygon", "coordinates": [[[lon1, lat1], [lon2, lat2], "...", [lon1, lat1]]] } } ``` #### Area Calculation The area enclosed by each contour is computed using the **shoelace formula** on local meter coordinates: $$ A = \frac{1}{2} \left| \sum_{i} (x_i \cdot y_{i+1} - x_{i+1} \cdot y_i) \right| \quad [\text{m}^2] $$ | Area Range | Display Unit | |------------|-------------| | $< 10{,}000$ m² | m² | | $10{,}000 – 1{,}000{,}000$ m² | hectares (ha) | | $\geq 1{,}000{,}000$ m² | km² | --- ## 5. Risk Tolerability Criteria The following table summarizes international standards for individual risk tolerability: | Standard | Region | Intolerable Limit | Broadly Acceptable | Reference | |----------|--------|-------------------|---------------------|-----------| | **UK HSE R2P2** | United Kingdom | $1 \times 10^{-4}$ (public) | $1 \times 10^{-6}$ | HSE (2001) | | **ASEA** | Mexico | $1 \times 10^{-3}$ | $1 \times 10^{-6}$ | ASEA Guidelines | | **RIVM** | Netherlands | $1 \times 10^{-5}$ | $1 \times 10^{-8}$ | RIVM guidelines | | **Hong Kong** | Hong Kong | $1 \times 10^{-5}$ | $1 \times 10^{-6}$ | HK risk guidelines | | **HIPAP No. 4** | Australia | $1 \times 10^{-5}$ | $1 \times 10^{-6}$ | NSW HIPAP No. 4 | | **EPA / OSHA** | United States | $1 \times 10^{-4}$ | $1 \times 10^{-6}$ | EPA RMP / OSHA PSM | ### ALARP Principle Between the **intolerable** and **broadly acceptable** limits lies the **ALARP** region. Within this zone, risk is tolerated only if further reduction is impracticable or disproportionately costly. | Zone | Risk Level | Required Action | |------|-----------|----------------| | **Intolerable** | $\geq 1 \times 10^{-3}$ to $1 \times 10^{-4}$ (varies by standard) | Risk cannot be justified except in extraordinary circumstances | | **ALARP** | Between intolerable and acceptable thresholds | Tolerable only if reduction is impracticable | | **Broadly Acceptable** | $\leq 1 \times 10^{-6}$ to $1 \times 10^{-8}$ (varies by standard) | No further action needed | --- ## 6. Contour Color Code TekRisk uses a seven-level color scheme to distinguish risk zones on the map: | Level (per year) | Color | Hex Code | Risk Interpretation | |:---:|-------|:---:|---------------------| | $1 \times 10^{-2}$ | Indigo | `#4B0082` | Extreme — immediate action required | | $1 \times 10^{-3}$ | Dark Red | `#8B0000` | Intolerable — exceeds all standards | | $1 \times 10^{-4}$ | Red | `#DC2626` | Intolerable for public (UK HSE, US EPA) | | $1 \times 10^{-5}$ | Orange | `#EA580C` | Upper ALARP bound (many jurisdictions) | | $1 \times 10^{-6}$ | Yellow | `#EAB308` | Broadly acceptable threshold | | $1 \times 10^{-7}$ | Light Green | `#84CC16` | Low risk | | $1 \times 10^{-8}$ | Green | `#22C55E` | Negligible risk | Contour levels not in this standard set default to gray (`#6B7280`). --- ## 7. Comparison with CCPS Methodology TekRisk implements the **general approach** described in CCPS *Guidelines for Chemical Process Quantitative Risk Analysis* (2nd Ed., 2000), §4.4.1.2. The core formula documented in §2.1 is literally **Eq. 4.4.2** of CCPS. This section traces the implementation-to-implementation correspondence so that auditors and regulatory reviewers can map TekRisk's outputs back to the canonical reference. ### 7.1 Equation-to-Equation Mapping | CCPS (2000) | TekRisk Equivalent | Note | |---|---|---| | Eq. 4.4.1 — $IR_{x,y} = \sum_{i} IR_{x,y,i}$ | Scenario additivity (§2.1) | Identical | | Eq. 4.4.2 — $IR_{x,y,i} = f_i \cdot p_{f,i}$ | Per-grid-cell term (§4 Step 4) | Shared foundation | | Eq. 4.4.3 — $f_i = F_I \cdot p_{O,i} \cdot p_{OC,i}$ | $f_i$ consumed from upstream `RiskCalculation.results` (§4 Step 1) | TekRisk does not recompute the event tree; it ingests the frequency already derived | | Eq. 4.4.4 — directional factor $f_i \cdot (\theta_i / 360)$ | Replaced by 16-direction wind rose with empirical $p(\theta_j)$ (§4 Step 2) | TekRisk refines: real directional probabilities vs. uniform wind | | Eq. 4.4.5 — cumulative contour-by-contour summation | Replaced by full-grid IR evaluation + Marching Squares (§4 Step 5) | Eq. 4.4.5 only applies to the CCPS simplified approach | ### 7.2 General Approach (CCPS §4.4.1.2, Fig. 4.7) vs TekRisk | Aspect | CCPS General Approach | TekRisk | |---|---|---| | Geographic evaluation | "Every geographical location" (unspecified discretization) | Uniform rectangular grid (1–100 m), auto-extent from fatality profile | | Effect zones | Probit model or discrete zones per incident outcome | Continuous $P_f(d)$ profile with piecewise-linear interpolation | | Wind treatment | Any level of detail (manual) | 16-direction Pasquill–Gifford wind rose, day/night split | | Contour tracing | "Manually or by any standard graphics contouring package" | Marching Squares (16 cases + saddle-point handling) | | Output format | Printed map | GeoJSON FeatureCollection + Mapbox GL visualization | ### 7.3 Simplified Approach (CCPS §4.4.1.3, Fig. 4.8) vs TekRisk The CCPS simplified approach bundles six conservative assumptions designed for hand calculation. Because TekRisk runs on a numerical grid, those simplifications are unnecessary and **the most restrictive ones are replaced with realistic physical models**, yielding contours that are more accurate, directionally correct, and less conservative than the CCPS uniform circles: | CCPS Simplified Assumption | TekRisk | |---|---| | Point sources | Point sources (compatible) | | Uniform wind distribution (equally likely in any direction) | **16-direction wind rose with empirical probabilities** | | Single wind speed and stability class | Day/night split across Pasquill–Gifford classes A–F | | Discrete effect zones (100% inside / 0% outside) | **Continuous $P_f$ vs distance profile** | | Uniform ignition distribution | Inherited from the scenario event tree (upstream) | | Circular risk contours | **Realistic contour shapes that follow the actual risk distribution, traced by Marching Squares** | ### 7.4 What TekRisk Adds Beyond CCPS - **Continuous fatality profile** with piecewise-linear interpolation — CCPS §4.4.1.3 contemplates only step functions or full probit models - **Marching Squares contour extraction** with CCW winding validation for GeoJSON compliance — CCPS specifies only "manually or by any standard graphics contouring package" - **Flash fire via rotated LEL envelope** across 16 directions — CCPS §8.2 only covers the pie-shaped sector simplification - **Automatic local-meter ↔ lat/lon conversion** plus enclosed-area computation via the shoelace formula (§4 Step 6) - **Seven standardized contour levels** ($10^{-2}$ to $10^{-8}$) with fixed color coding (§6) — CCPS leaves level selection to the analyst --- ## 8. Limitations **Flat-earth approximation** for coordinate conversion. Valid only for distances $< 50$ km from the grid center. Negligible for typical industrial sites ($< 5$ km extent). **Linear interpolation** between fatality profile points. Real fatality curves may be non-linear. Conservative between points; accuracy depends on profile density. 16 directions (22.5° spacing). Finer directional resolution is not captured. Adequate for most QRA applications; aligns with Pasquill-Gifford convention. Uses annual average or day/night average wind rose. May underestimate directional risk for locations with strong seasonal patterns. All persons assumed to be outdoors and unprotected. Results are conservative (overestimate risk to sheltered populations). Flat terrain assumed for gas dispersion. May underestimate risk in valleys or underestimate dilution on ridges. Each scenario is treated independently. Does not capture cascading failures or multi-source escalation. Features smaller than the grid spacing may be missed. Use finer resolution (1–10 m) near sources if needed. Thermal and VCE models assume no wind-driven fire shape deformation. Real fire plumes may be elongated downwind. Population assumed permanently present outdoors. Worst-case assumption; actual exposure varies with occupancy schedules. Scenario frequency assumed constant throughout the year. Does not account for seasonal operations or shutdown periods. Depends on quality of upstream consequence calculations. IR contours inherit any errors in consequence modeling. --- ## 9. Bibliographic References | # | Reference | |---|-----------| | 1 | **Ermak, D.L.** (1990). *"User's Manual for SLAB: An Atmospheric Dispersion Model for Denser-Than-Air Releases"*. UCRL-MA-105607, Lawrence Livermore National Laboratory. | | 2 | **TNO** (2005). *"Methods for the Calculation of Physical Effects"* (Yellow Book), 3rd Ed. Committee for the Prevention of Disasters, The Netherlands. | | 3 | **TNO** (1999). *"Guidelines for Quantitative Risk Assessment"* (Purple Book), CPR 18E. Committee for the Prevention of Disasters, The Netherlands. | | 4 | **CCPS** (2000). *"Guidelines for Chemical Process Quantitative Risk Analysis"*, 2nd Ed. AIChE. | | 5 | **UK HSE** (2001). *"Reducing Risks, Protecting People"* (R2P2). Health and Safety Executive, United Kingdom. | | 6 | **ASEA** (Mexico). *Regulatory framework for risk tolerability criteria*. Agencia de Seguridad, Energía y Ambiente. | | 8 | **Lees, F.P.** (2012). *"Loss Prevention in the Process Industries"*, 4th Ed. Butterworth-Heinemann. | | 9 | **Crowl, D.A. & Louvar, J.F.** (2011). *"Chemical Process Safety: Fundamentals with Applications"*, 3rd Ed. Prentice Hall. | | 10 | **RIVM** (Netherlands). *Risk tolerability criteria documentation*. National Institute for Public Health and the Environment. | --- # Fire Ball Source: https://tekrisk.com/en/docs/risk-models/fire-ball Technical documentation for the BLEVE-FireBall consequence model — thermal radiation, probit analysis, domino effects, and fatality estimation ## 1. Introduction and Physical Phenomenon ### 1.1 BLEVE and FireBall A **BLEVE** (Boiling Liquid Expanding Vapor Explosion) occurs when a pressurized vessel containing a liquid at a temperature above its atmospheric boiling point fails catastrophically. The sudden depressurization causes instantaneous flash vaporization of a significant fraction of the liquid, generating a rapid two-phase release. If the substance is flammable and an ignition source is present, the resulting combustion produces a characteristic **fireball**. The fireball is a luminous, approximately spherical mass of burning vapor/aerosol that rises due to buoyancy. It produces intense thermal radiation over a short duration (typically seconds to tens of seconds), capable of causing: - **Burns** (first and second degree) to exposed persons - **Fatalities** from lethal thermal dose - **Domino effects** through failure of nearby equipment and vessels ### 1.2 Industrial Context BLEVE/fireball events are among the most severe accident outcomes in industrial QRA. Historical incidents such as **San Juan Ixhuatepec** (Mexico, 1984) and the **Feyzin refinery explosion** (France, 1966) demonstrate their catastrophic potential. Propane and butane terminals, tank farms Pressurized hydrocarbon vessels and process units Flammable liquid storage under pressure Tank cars and road tankers carrying pressurized flammable liquids ### 1.3 Scope of This Model This model calculates: 1. Fireball geometry (diameter, height, duration) 2. Thermal radiation intensity at any distance 3. Distance to a specified radiation threshold (inverse problem) 4. Thermal dose and probit-based probability of burns/fatalities 5. Domino effect probability for nearby equipment (Cozzani method) 6. Population fatalities using concentric ring analysis --- ## 2. Calculation Sequence {`flowchart TD A["Input Data
(mass, Hc, fs, weather)"] --> B["Geometry Calculations
Dmax, t_fb, H_fb"] B --> C["Combustion Parameters
m'', SEP_max"] C --> D["For each distance x:
X_surface, tau_atm, F_view, q"] D --> E["Forward: q(x)"] D --> F["Inverse: x(q_target)
Newton-Raphson"] E --> G["Thermal Dose
D = t * q^(4/3)"] F --> G G --> H["Probit Analysis
Burns / Deaths"] G --> I["Domino Effect
TTF - Cozzani"] H --> J["Fatality Calculation
(Concentric Rings)"] I --> J style A fill:#e1f5fe style J fill:#c8e6c9 style D fill:#fff3e0`}
The BLEVE-FireBall calculation follows these stages: **Geometry Calculations** — Compute maximum diameter ($D_{max}$), fireball duration ($t_{fb}$), and center height ($H_{fb}$) from the released fuel mass. **Combustion Parameters** — Calculate mass burning rate ($\dot{m}''$) and Surface Emissive Power ($SEP_{max}$) from fuel properties. **Atmospheric & View Factor** — For each distance, compute surface distance ($X_{surface}$), atmospheric transmissivity ($\tau_{atm}$), and geometric view factor ($F_{view}$). **Thermal Radiation** — Calculate incident radiation using three available models (solid plume, point source, empirical). **Inverse Distance** — Solve for the distance at which radiation equals a target threshold using Newton-Raphson iteration. **Thermal Dose & Probit** — Compute thermal dose and convert to burn/fatality probabilities via probit functions. **Domino Effect** — Estimate time-to-failure for nearby vessels using Cozzani correlations. **Fatality Estimation** — Integrate fatality probability over concentric rings to estimate total casualties. --- ## 3. Principal Equations ### 3.1 Geometry: Diameter, Duration, Height #### Maximum Fireball Diameter $$ D_{max} = 5.8 \cdot M^{1/3} \tag{2.1} $$ | Symbol | Description | Unit | |--------|-------------|------| | $D_{max}$ | Maximum fireball diameter | m | | $M$ | Mass of flammable fuel released | kg | *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., Eq. 2.2.32, p. 207* The TNO Yellow Book (CPR 14E) provides: $D_{max} = 2 \times 3.24 \cdot M^{0.325}$ (Eq. 6.119), but is not used as the primary method. The **initial diameter at ground level** accounts for the expansion phase before lift-off: $$ D_{ground} = 1.3 \cdot D_{max} \tag{2.2} $$ #### Fireball Duration The duration depends on whether the fireball is momentum-dominated or buoyancy-dominated: $$ t_{fb} = \begin{cases} 0.45 \cdot M^{1/3} & \text{if } M < 30{,}000 \text{ kg} \\ 2.6 \cdot M^{1/6} & \text{if } M \geq 30{,}000 \text{ kg} \end{cases} \tag{2.3/2.4} $$ | Symbol | Description | Unit | |--------|-------------|------| | $t_{fb}$ | Fireball duration | s | | $M$ | Mass of flammable fuel | kg | *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., pp. 207-208* #### Fireball Center Height $$ H_{fb} = 0.75 \cdot D_{max} \tag{2.5} $$ *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., p. 211* Kakosimos proposes $H_{fb} = 1.0 \cdot D_{max}$, placing the fireball higher. The CCPS factor of 0.75 is used by default — a more conservative (closer to ground) assumption that yields higher radiation at ground-level receptors. ### 3.2 Combustion: Burning Rate and SEP #### Burning Rate $$\dot{m}'' = \frac{M}{\pi \cdot D_{max}^{2} \cdot t_{fb}}$$ | Symbol | Description | Unit | |--------|-------------|------| | $\dot{m}''$ | Burning rate | kg/(m$^2$ s) | | $M$ | Fuel mass | kg | | $D_{max}$ | Maximum diameter | m | | $t_{fb}$ | Fireball duration | s | *Reference: Kakosimos, Safety in Chemical Engineering, p. 102* #### Surface Emissive Power (SEP) $$SEP_{max} = f_s \cdot \dot{m}'' \cdot \Delta H_c$$ | Symbol | Description | Unit | |--------|-------------|------| | $SEP_{max}$ | Maximum surface emissive power | kW/m$^2$ | | $f_s$ | Radiation fraction | dimensionless (0.2–0.4) | | $\dot{m}''$ | Burning rate | kg/(m$^2$ s) | | $\Delta H_c$ | Heat of combustion | kJ/kg | *Reference: TNO Yellow Book (CPR 14E) and Kakosimos p. 102* ### 3.3 Atmospheric Transmissivity **Surface distance** from the fireball to the ground-level receptor at horizontal distance $x$: $$X_{surface} = \sqrt{H_{fb}^{2} + x^{2}} - \frac{D_{max}}{2}$$ **Partial vapor pressure of water:** $$ p_a = 1013.25 \cdot RH \cdot \exp\left(14.4114 - \frac{5328}{T_a}\right) \tag{2.8} $$ | Symbol | Description | Unit | |--------|-------------|------| | $p_a$ | Partial pressure of water vapor | Pa | | $RH$ | Relative humidity | % (0–100) | | $T_a$ | Ambient temperature | K | **Atmospheric transmissivity:** $$ \tau_{atm} = 2.02 \cdot (p_a \cdot X_{surface})^{-0.09} \tag{2.7} $$ *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., Eqs. 2.2.42–2.2.43, p. 209* If relative humidity is zero, it is replaced by 0.001 to avoid division by zero in the transmissivity calculation. ### 3.4 View Factors (4 Methods) The view factor $F_{view}$ represents the geometric fraction of the fireball's radiation that reaches the receptor. $$F_{view} = \frac{x \cdot (D_{max}/2)^{2}}{\left(x^{2} + H_{fb}^{2}\right)^{3/2}}$$ This is the view factor used in the solid plume radiation model (`qTerm0`). *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., Eq. 2.2.47, p. 209* $$F_{view} = \left(\frac{D_{max}/2}{X_{center}}\right)^{2}$$ where $X_{center} = \sqrt{H_{fb}^{2} + x^{2}}$ is the distance from the **center** of the fireball to the receptor. *Reference: Kakosimos, Safety in Chemical Engineering, p. 103, Eq. C2.44* $$F_{view} = \frac{x \cdot (D_{max}/2)^{2}}{\left(x^{2} + (D_{max}/2)^{2}\right)^{3/2}}$$ *Reference: EPA/NOAA, ALOHA Technical Documentation, p. 68* $$F_{view} = \frac{r^{2}}{4 \cdot (r + d)^{2}}$$ where $r = D_{max}/2$ (fireball radius) and $d = X_{center} - r$ (surface-to-receptor distance). *Reference: Casal, J., Evaluation of the Effects and Consequences of Major Accidents in Industrial Plants, p. 137, Eq. 3.102* ### 3.5 Thermal Radiation Models (3 Equations) Each model calculates the incident heat flux $q$ (kW/m$^2$) at a ground-level receptor located at horizontal distance $x$ from the fireball center projection. $$ q_1(x) = \frac{2.2 \cdot \tau_{atm}(x) \cdot f_s \cdot \Delta H_c \cdot M^{2/3}}{4\pi \cdot X_{center}^{2}} \tag{2.6} $$ where $X_{center} = \sqrt{H_{fb}^{2} + x^{2}}$. | Symbol | Description | Unit | |--------|-------------|------| | $q_1$ | Thermal radiation at receptor | kW/m$^2$ | | $\tau_{atm}$ | Atmospheric transmissivity | dimensionless | | $f_s$ | Radiation fraction | dimensionless | | $\Delta H_c$ | Heat of combustion | kJ/kg | | $M$ | Fuel mass | kg | | $X_{center}$ | Center-to-receptor distance | m | The constant 2.2 is an empirical correction factor derived from experimental data. This is the **primary radiation model** used for all downstream calculations (dose, probit, fatalities, inverse distance). *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., Eq. 2.2.41, p. 208* $$q_0(x) = SEP_{max} \cdot F_{view,CCPS}(x) \cdot \tau_{atm}(x)$$ This is the **solid flame** model that treats the fireball as a solid sphere with uniform surface emission. *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., Eq. 2.2.45, p. 209* $$q_2(x) = \frac{828 \cdot M^{0.771}}{X_{center}^{2}}$$ A simplified empirical correlation that does not require radiation fraction or atmospheric transmissivity inputs. Provides results that closely match ALOHA output for validation purposes. *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., Eq. 2.2.44, p. 209* ### 3.6 Inverse Calculation (Newton-Raphson) To find the distance $x$ at which thermal radiation equals a target value $q_{target}$, the model solves: $$f(x) = q_1(x) - q_{target} = 0$$ using the **Newton-Raphson iterative method**. | Parameter | Value | |-----------|-------| | Initial guess | $x_0 = D_{max}/2$ (fireball radius) | | Solver | `newton-raphson-method` npm package | | Unit conversion | $1 \text{ BTU/(s ft}^2) = 11.3565 \text{ kW/m}^2$ | ### 3.7 Thermal Dose $$D = t_{fb} \cdot (q_1(x) \times 1000)^{4/3}$$ | Symbol | Description | Unit | |--------|-------------|------| | $D$ | Thermal dose | W$^{4/3}$ s m$^{-8/3}$ | | $t_{fb}$ | Fireball duration | s | | $q_1$ | Thermal radiation (converted from kW to W) | W/m$^2$ | The exponent 4/3 accounts for the non-linear relationship between radiation intensity and skin damage. *Reference: TNO Green Book (CPR 16E), Methods for the Determination of Possible Damage, Chapter 3* ### 3.8 Probit Analysis (Burns and Fatalities) Probit functions transform a physical exposure parameter into a normally-distributed probability. The general probit equation is $Y = a + b \cdot \ln(V)$. **Probit equations:** | Effect | Equation | Reference | |--------|----------|-----------| | First degree burn | $Y = -39.83 + 3.0186 \cdot \ln(D)$ | TNO Green Book, Eq. 3.4, p. 20 | | Second degree burn | $Y = -43.14 + 3.0186 \cdot \ln(D)$ | TNO Green Book, Eq. 3.7, p. 20 | | Fatality (CCPS) | $Y = -14.9 + 2.56 \cdot \ln(D / 10{,}000)$ | CCPS, p. 269 | | Fatality (TNO) | $Y = -36.38 + 2.56 \cdot \ln(D)$ | TNO Green Book, Eq. 3.5, p. 20 | FireBall uses CCPS methodology for probit deaths by default. Both CCPS and TNO equations are mathematically equivalent. **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.9 Domino Effect (TTF — Cozzani) The domino effect analysis estimates the probability that nearby equipment will fail under thermal radiation exposure. #### Time to Failure (TTF) **TTF correlations by vessel type:** | Vessel Type | Equation | Reference | |-------------|----------|-----------| | Atmospheric | $TTF = \exp(-1.13 \ln(q) - 2.667 \times 10^{-5} V + 9.877)$ | Cozzani et al. | | Pressurized | $TTF = \exp(-0.95 \ln(q) + 8.845 V^{0.032})$ | Cozzani et al. | | Full engulfment | $TTF = \exp(-1.29 \ln(q) + 10.97 V^{0.026})$ | Cozzani et al. | | Symbol | Description | Unit | |--------|-------------|------| | $TTF$ | Time to failure | s | | $q$ | Incident thermal radiation | kW/m$^2$ | | $V$ | Vessel volume | m$^3$ | Equipment is considered fully engulfed when its distance from the fireball center is less than $1.1 \times D_{max}/2$ (10% safety margin accounting for thermal radiation gradients at the fireball boundary). #### Domino Probit $$Y_{domino} = 9.25 - 1.847 \cdot \ln\left(\frac{TTF}{60}\right)$$ TTF is divided by 60 to convert from seconds to minutes. *Reference: Cozzani, V. et al., Journal of Hazardous Materials, p. 300* #### Equipment Type Mapping | Database Type | Cozzani Category | |---------------|------------------| | `atmospheric_tanks`, `storage_tanks` | Atmospheric | | `pressurized_vessels`, `lpg_tanks`, `gas_cylinders` | Pressurized | | `reactors`, `heat_exchangers`, `columns` | Pressurized | ### 3.10 Fatality Calculation (Concentric Rings) Population fatalities are estimated by dividing the affected area into concentric rings centered on the fireball ground projection. **Algorithm:** 1. For each ring $i$ at distance $r_i$ (increment = 5 m, max = 10 km): - Calculate thermal radiation: $q = q_1(r_i)$ - Calculate thermal dose: $D = t_{fb} \times (q \times 1000)^{4/3}$ - Calculate CCPS probit: $Y = -14.9 + 2.56 \times \ln(D / 10000)$ - Convert probit to percentage: $P = \text{probitToPercent}(Y)$ - If $P < 0.1\%$: **STOP** (negligible fatalities beyond this distance) 2. Ring area: $A_{ring} = \pi (r_{outer}^{2} - r_{inner}^{2})$ 3. Fatalities per ring: $F_i = A_{ring} \times \rho_{pop} \times P_i / 100$ 4. 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 | **Population density conversion:** | Input Unit | Conversion Factor to p/m$^2$ | |------------|-------------------------------| | p/m$^2$ | 1 | | p/ha | $\div$ 10,000 | | p/km$^2$ | $\div$ 1,000,000 | | p/mi$^2$ | $\div$ 2,589,988 | *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., p. 273; TNO Purple Book (CPR 18E)* ### 3.11 Polygon Receiver Exclusion When polygon-type receivers (e.g., residential zones, industrial areas) 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 1. **Conservative yet realistic** — The empirical factor 2.2 provides results between the solid plume model (higher estimates) and the simple empirical correlation (qTerm2) 2. **Physical basis** — The $1/(4\pi X^2)$ factor correctly represents isotropic radiation attenuation from a point at the fireball center 3. **Atmospheric correction** — Includes $\tau_{atm}$ for atmospheric absorption, unlike the purely empirical qTerm2 4. **Newton-Raphson compatibility** — Smooth, monotonically decreasing behavior provides excellent convergence for inverse distance calculations 5. **Industry adoption** — Used by SCRI and widely accepted in QRA practice The CCPS probit equation ($Y = -14.9 + 2.56 \ln(D/10000)$) is mathematically equivalent to the TNO equation ($Y = -36.38 + 2.56 \ln(D)$). The CCPS version is preferred for: - **Consistency** with other CCPS equations used throughout the model - **Numerical stability** — the $D/10000$ scaling keeps the logarithm argument in a convenient range 1. **Vessel-type specificity** — Separate correlations for atmospheric, pressurized, and full engulfment scenarios 2. **Volume dependency** — Includes vessel volume, which significantly affects TTF 3. **Widely validated** — Most cited empirical TTF models in process safety literature 4. **Direct radiation input** — Uses $q$ (kW/m$^2$) directly available from the fireball calculation 1. **Captures decay gradient** — Ring method captures the radiation decrease with distance 2. **Computationally efficient** — Typically < 100 rings before reaching the 0.1% threshold 3. **Standard practice** — Recommended by CCPS (p. 273) and TNO Purple Book (CPR 18E) 4. **Extensible** — Polygon exclusion allows integration with specific population zones --- ## 5. Model Limitations - **Spherical assumption** — The fireball is modeled as a perfect sphere; real fireballs are irregularly shaped and deform during rise - **Static geometry** — Uses maximum diameter, single height, and total duration; does not model the dynamic evolution (expansion → rise → burnout) - **No ground reflection** of thermal radiation - **Flat terrain assumed** — Topographic shielding is not modeled - **No wind effects** — Wind shear causing fireball tilt or drift is not modeled; the fireball is assumed to rise vertically - **Simplified transmissivity** — Empirical fit for standard conditions; extreme humidity, fog, dust, or smoke may not be accurately represented - **Humidity floor** — Minimum 0.1% enforced to avoid singularity; may slightly overestimate absorption in extremely dry conditions - **Uniform atmosphere** — Temperature and humidity gradients along the radiation path are not considered - **Constant radiation fraction** — $f_s$ is treated as user-supplied constant (0.2–0.4); in reality it varies with fuel type, fireball size, soot formation, and combustion efficiency - **Complete combustion assumed** — Ground-level pooling, incomplete mixing, and multi-phase effects reduce the effective mass in practice - **Single fuel** — Multi-component fuel mixtures are not explicitly handled - **Uniform density** — Base fatality calculation assumes uniform population density in all directions (polygon exclusion partially addresses this) - **No sheltering** — Protection factor $f_k = 1.0$ assumes all persons are outdoors with no protection - **No evacuation** — Emergency response actions that could reduce exposure time are not modeled - **Static population** — Distribution is assumed fixed during the event - **Cozzani correlations only** — TTF equations exist only for atmospheric and pressurized vessels; other equipment types cannot be assessed - **Thermal radiation only** — Domino effects from overpressure or projectile impact are handled by the VCE model - **Steel vessels** — Correlations were derived for steel; other materials may have different failure characteristics - **No partial failure** — Only catastrophic failure (loss of containment) is considered - **Newton-Raphson convergence** — May fail for very low radiation thresholds (far field) or poor initial guesses - **Ring discretization** — 5 m increment introduces $\pm 2.5$ m error (negligible for most industrial scenarios) - **Probit extrapolation** — Values below 0 are clamped to 0%, above 8.09 are clamped to 100% --- ## 6. Input/Output Summary ### 6.1 Required Inputs | Parameter | Description | Unit | |-----------|-------------|------| | `mass` | Flammable fuel mass | kg, lb, g, ton | | `hckjkg` | Heat of combustion | kJ/kg | | `radiationFraction` | Fraction of energy radiated ($f_s$) | 0.2–0.4 | | `tempAmb` | Ambient temperature | C, F, K | | `humidityRel` | Relative humidity | % (0–100) | | `populationDensity` | Population density | p/m$^2$, p/ha, p/km$^2$, p/mi$^2$ | | `thermalZones` | Risk zones with radiation thresholds | kW/m$^2$ | ### 6.2 Outputs | Output | Description | Unit | |--------|-------------|------| | `diameterMax` | Maximum fireball diameter | m | | `durationFireBallCombustion` | Fireball duration | s | | `heigthFireBall` | Fireball center height | m | | `burningRate` | Mass burning rate | kg/(m$^2$ s) | | `SEPmax` | Maximum surface emissive power | kW/m$^2$ | | `zones` | Array of risk zones with distances | m | | `zones[i].dose` | Thermal dose at zone boundary | W$^{4/3}$ s m$^{-8/3}$ | | `fatalidades` | Fatality calculation results | Object or 0 | | `receiverEffects` | Effects on each receiver | Array | ### 6.3 Receiver Effect Categories | Category | Effect | Probit Source | |----------|--------|---------------| | Thermal | 1st degree burn | TNO Eq. 3.4 | | Thermal | 2nd degree burn | TNO Eq. 3.7 | | Thermal | Fatality | CCPS p. 269 | | Domino | Equipment failure | Cozzani p. 300 | --- ## 7. References Center for Chemical Process Safety, AIChE/Wiley, 2000. Diameter (Eq. 2.2.32, p. 207), Duration (pp. 207-208), Height (p. 211), Transmissivity (Eqs. 2.2.42-2.2.43, p. 209), View Factor (Eq. 2.2.47, p. 209), Radiation models (Eqs. 2.2.41, 2.2.44, 2.2.45, pp. 208-209), Probit fatalities (p. 269), Fatality rings (p. 273). *Methods for the Determination of Possible Damage*. Committee for the Prevention of Disasters, 2005. Probit equations for 1st degree burns (Eq. 3.4, p. 20), 2nd degree burns (Eq. 3.7, p. 20), Deaths (Eq. 3.5, p. 20), Thermal dose exponent. *Methods for the Determination of Possible Damage*. Committee for the Prevention of Disasters, 1999. Fatality calculation methodology, concentric ring analysis. *Methods for the Calculation of Physical Effects Due to Releases of Hazardous Materials*. Alternative diameter correlation (Eq. 6.119), View factor formulations. "Escalation thresholds in the assessment of domino accidental events." *Journal of Hazardous Materials*, 129(1-3), 2006, pp. 1-21. TTF correlations (atmospheric, pressurized, full engulfment), Domino probit (p. 300). *Evaluation of the Effects and Consequences of Major Accidents in Industrial Plants*. Elsevier. View factor Casal (Eq. 3.102, p. 137), Radiation fraction discussion (p. 136). U.S. EPA / NOAA, 2013. View factor ALOHA (p. 68). *Safety in Chemical Engineering*. Burning rate (p. 102), View factor Kakosimos (p. 103, Eq. C2.44). *Loss Prevention in the Process Industries*. 3rd ed. Butterworth-Heinemann. General QRA methodology, fatality estimation. --- # 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 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. Ground-level spill evaporating at steady state — LNG, LPG, or cryogenic liquid spills Pressurized horizontal release at height $h_s > 0$ — pipeline or vessel failures Pressurized vertical release with plume rise — pressure relief vents, blowouts Total mass released at once; transient puff mode — catastrophic vessel rupture ### 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 {`flowchart TD A["Input Data
(30+ parameters)"] --> B["Step 1: Chemical Properties
slabHelpers.ts — YAWS mapping
cps, cpsl, rhosl, dhe"] B --> C["Step 2: Validation
Zod schema + coherence checks
qs>0 for idspl 1-3; qtis>0 for idspl=4"] C --> D["Step 3: Initialization
Monin-Obukhov wind profile
Mixing layer hmx, source conditions"] D --> E["Step 4: Integration Loop
61 grid points: x=0 → xffm
slope() → RK4 → solve() → eval() → thermo() → entran()"] E --> F["Step 5: Concentration Field
Crosswind profile (6 positions)
Cloud duration tcld, effective width with meander"] F --> G["Step 6: Post-processing
LFL/UFL concentration zones
Cloud mass per isopleth, GeoJSON output"] style A fill:#e1f5fe style G fill:#c8e6c9 style E fill:#fff3e0`}
**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. **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`). **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. **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. **Concentration Field** — Computes the crosswind concentration profile at 6 lateral positions, cloud duration $t_{cld}$, and effective dispersion width incorporating wind meander. **Post-processing** — Identifies LFL/UFL concentration zones by linear interpolation, computes cloud mass per isopleth, and generates GeoJSON polygons for visualization. --- ## 3. Input Parameters | 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 | | 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 | | 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 | | 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) | --- ## 4. Chemical Properties — YAWS Mapping Before running the SLAB engine, `mapChemicalToSlabInput()` computes thermodynamic properties from YAWS regression coefficients. ### 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()`. ### 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()`. ### 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()`. ### 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. --- ## 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 | 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} $$ $$ \Psi_M = -5 \cdot \frac{z}{L} $$ **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: $$ \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). $$ \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). $$ \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). $$ \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. $$ \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. --- ## 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. ### 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. ### 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. ### 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. --- ## 9. Thermodynamics — `thermo()` The subroutine solves the thermodynamic equilibrium of the cloud + air mixture at each step. 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] $$ 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`. 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}} $$ $$ \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. --- ## 10. Concentration Field ### 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. ### 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. ### 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. --- ## 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 ### 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()`. ### 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`. --- ## 13. Physical 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`. --- ## 14. Model Limitations SLAB assumes flat terrain with no obstacles. It does not model channeling through valleys, buildings, or topographic features. Wind speed and direction are fixed throughout the simulation. There is no temporal wind variability or backing/veering. The model simulates a single cloud from one source. It does not model multiple simultaneous sources or cloud interactions. 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. Chemical reactions between the gas and ambient air are not modeled. Concentration is treated as a conserved scalar throughout the simulation. Monin-Obukhov theory is valid within the surface layer ($z < h_{mx}$). The model limits entrainment above the mixing layer. The output grid is fixed at 61 points. Regions of rapid concentration change near the source may be under-sampled with `ncalc=1`. 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. 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. In the immediate source zone ($x < b_s$), the model uses approximations. Results within the source area carry greater uncertainty. --- ## 15. Bibliographic References | # | 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. | --- # Jet Fire Source: https://tekrisk.com/en/docs/risk-models/jet-fire Technical documentation for the Jet Fire consequence model — Solid Plume (Chamberlain) and Point Source (CCPS) methodologies for thermal radiation analysis ## 1. Introduction and General Description A **jet fire** is a turbulent diffusion flame that results from the combustion of a pressurized gas or volatile liquid released continuously through an orifice or pipe failure. Unlike pool fires, jet fires are characterized by high momentum discharge, directional flame geometry, and intense localized thermal radiation. ### 1.1 Implemented Models TekRisk PRO implements two complementary methodologies for jet fire consequence analysis: **Approach:** Surface emitter **Geometry:** Frustum-shaped flame with view factor **Use Case:** Detailed near-field analysis with flame geometry **Approach:** Point emitter **Geometry:** Single radiant point at flame midpoint **Use Case:** Simplified far-field analysis, conservative estimates ### 1.2 Source Types - **`knownFlow`** — Mass flow rate is directly specified by the user (kg/s). Used when flow measurement data is available. - **`gasLeakFromOrifice`** — Mass flow rate is calculated from vessel conditions (internal pressure, temperature, orifice diameter) using isentropic discharge equations. --- ## 2. Calculation Sequence The algorithm follows 15 sequential stages: **Input Processing & Unit Conversion** — Convert user inputs to SI units; compute atmospheric pressure and air density at altitude. **Gas Properties (Cp polynomial, gamma)** — Evaluate heat capacity polynomial and compute specific heat ratio. **Flow Regime (sonic vs subsonic)** — Determine whether the discharge is choked or unchoked via critical pressure ratio. **Mass Flow Rate (vessel discharge)** — Calculate mass flow from orifice conditions using Kakosimos discharge equations. **Exit Conditions (P, T, Mach, u, rho)** — Compute pressure, temperature, Mach number, velocity, and density at the jet exit. **Equivalent Diameter (Ds)** — Calculate the effective source diameter for flame length correlations. **Flame Length (Newton-Raphson / CCPS)** — Solve for flame length using the Chamberlain implicit equation or CCPS correlation. **Flame Geometry (Solid Plume only)** — Compute tilt angle, lift-off, frustum dimensions, base and top widths. **Surface Emissive Power (SEP)** — Calculate radiated fraction and surface emissive power from flame area and heat of combustion. **Atmospheric Transmissivity (Wayne/CCPS)** — Evaluate atmospheric absorption using the Wayne humidity correlation. **Thermal Radiation at Distance** — Compute incident radiation at a given distance using view factor (Solid Plume) or point source formula. **Distance to Given Radiation (inverse Newton-Raphson)** — Find the distance at which a specified radiation level occurs. **Probit Analysis (burns & fatality)** — Convert thermal dose to burn probabilities and fatality using probit functions. **Domino Effect — TTF (Cozzani)** — Estimate time-to-failure for nearby vessels under thermal radiation loading. **Fatality Estimation (concentric ring integration)** — Integrate fatality probability over concentric rings to estimate total casualties. --- ## 3. Principal Equations ### 3.1 Input Processing and Unit Conversion **Atmospheric pressure at altitude:** $$P_a = 101325 \times (1 - 2.5577 \times 10^{-5} \times h)^{5.25588}$$ | Variable | Description | Unit | |----------|-------------|------| | $P_a$ | Atmospheric pressure at altitude | Pa | | $h$ | Altitude above sea level | m | *Reference: Standard barometric formula (ISO 2533)* **Air density at altitude:** $$\rho_{air} = \frac{P_a}{R_d \times T_a}$$ | Variable | Description | Unit | |----------|-------------|------| | $\rho_{air}$ | Air density | kg/m³ | | $R_d$ | Specific gas constant for dry air (287.05) | J/(kg·K) | | $T_a$ | Ambient temperature | K | ### 3.2 Gas Properties **Heat capacity polynomial (Cp):** $$C_{p,mol} = a + bT + cT^2 + dT^3 + eT^4$$ | Variable | Description | Unit | |----------|-------------|------| | $C_{p,mol}$ | Molar heat capacity at constant pressure | J/(mol·K) | | $a$–$e$ | Polynomial coefficients (cpga through cpge) | various | | $T$ | Internal gas temperature | K | **Specific heat capacities and gamma:** $$C_p = \frac{C_{p,mol}}{MW} \times 1000$$ $$C_v = C_p - \frac{R}{MW} \times 1000$$ $$\gamma = \frac{C_p}{C_v}$$ | Variable | Description | Unit | |----------|-------------|------| | $C_p$ | Specific heat at constant pressure | J/(kg·K) | | $C_v$ | Specific heat at constant volume | J/(kg·K) | | $R$ | Universal gas constant (8.31451) | J/(mol·K) | | $MW$ | Molecular weight | kg/mol | | $\gamma$ | Heat capacity ratio (must be > 1.0) | dimensionless | $\gamma \leq 1.0$ indicates a non-gaseous substance and raises an error. This model supports **gas-phase releases only**. ### 3.3 Flow Regime Determination **Critical pressure ratio (sonic threshold):** $$\frac{P_0}{P_a} \leq \left(\frac{\gamma + 1}{2}\right)^{\gamma / (\gamma - 1)}$$ If the pressure ratio is less than or equal to the critical value, the flow is **subsonic** (unchoked). Otherwise, the flow is **sonic/supersonic** (choked). *Reference: Kakosimos, Eq. B2.14, p. 36* ### 3.4 Mass Flow Rate from Vessel Discharge **General discharge equation (Kakosimos B2.13):** $$\dot{m} = C_d \times A \times P_0 \times K \times \sqrt{\frac{MW}{\gamma \times R \times T_0}}$$ | Variable | Description | Unit | |----------|-------------|------| | $\dot{m}$ | Mass flow rate | kg/s | | $C_d$ | Discharge coefficient | dimensionless | | $A$ | Orifice area ($\pi d^2 / 4$) | m² | | $P_0$ | Internal pressure | Pa | | $T_0$ | Internal temperature | K | **Factor K for sonic flow (Kakosimos B2.14):** $$K = \gamma \times \left(\frac{2}{\gamma + 1}\right)^{(\gamma + 1) / (2(\gamma - 1))}$$ **Factor K for subsonic flow (Kakosimos B2.15):** $$K = \sqrt{\frac{2\gamma^2}{\gamma - 1} \times \left(\frac{P_a}{P_0}\right)^{2/\gamma} \times \left(1 - \left(\frac{P_a}{P_0}\right)^{(\gamma-1)/\gamma}\right)}$$ *Reference: Kakosimos, K.E., "Complex Hazardous Activities", Eqs. B2.13–B2.15, p. 36* ### 3.5 Exit Conditions **Exit pressure for known flow (adiabatic, Kakosimos C2.55):** $$P_{exit} = P_0 \times \left(\frac{2}{1 + \gamma}\right)^{\gamma / (\gamma - 1)}$$ **Exit pressure for orifice discharge (Kakosimos C2.52):** $$P_{exit} = \frac{4\dot{m}}{\pi d^2} \times \sqrt{\frac{R \times T_o}{\gamma \times MW}}$$ where $T_o = 2T_0 / (1 + \gamma)$ (Kakosimos C2.54) **Exit temperature (adiabatic, Kakosimos C2.56):** $$T_j = T_0 \times \left(\frac{P_a}{P_0}\right)^{(\gamma - 1) / \gamma}$$ **Mach number at exit (sonic flow):** $$M_j = \sqrt{\frac{(\gamma + 1)(P_{exit}/P_a)^{(\gamma-1)/\gamma} - 2}{\gamma - 1}}$$ **Exit velocity (Kakosimos C2.50):** $$u_j = M_j \times \sqrt{\frac{\gamma \times R \times T_j}{MW}}$$ **Exit density (ideal gas):** $$\rho_j = \frac{P_{exit} \times MW}{R \times T_j}$$ *References: Kakosimos, Eqs. C2.50, C2.52, C2.54–C2.56, pp. 108–109; TNO Yellow Book, Eqs. 6.33, 6.36* ### 3.6 Equivalent Diameter **For known mass flow (Kakosimos C2.59):** $$D_s = \sqrt{\frac{4\dot{m}}{\pi \times \rho_{air} \times u_j}}$$ **For orifice discharge (Kakosimos C2.60):** $$D_s = d \times \sqrt{\frac{\rho_j}{\rho_{air}}}$$ | Variable | Description | Unit | |----------|-------------|------| | $D_s$ | Equivalent diameter | m | | $d$ | Orifice diameter | m | *Reference: Kakosimos, Eqs. C2.59–C2.60, p. 110* ### 3.7 Flame Length The flame length is computed by solving a non-linear equation for the dimensionless parameter $Y$ using Newton-Raphson iteration: $$C_a Y^{5/3} + C_b Y^{2/3} - C_c = 0$$ where: $$C_a = 0.024 \times \left(\frac{g \times D_s}{u_j^2}\right)^{1/3}$$ $$C_b = 0.2$$ $$C_c = \left(\frac{2.85}{W}\right)^{2/3}$$ $$W = \frac{MW}{15.816 \times MW + 0.0395}$$ **Newton-Raphson iteration:** $$Y_{n+1} = Y_n - \frac{C_a Y_n^{5/3} + C_b Y_n^{2/3} - C_c}{(5C_a Y_n + 2C_b) / (3Y_n^{1/3})}$$ Convergence tolerance: 0.01 **Still-air flame length:** $$L_{Bo} = Y \times D_s$$ **Wind-corrected flame length:** $$L_f = L_{Bo} \times (0.51 \exp(-0.4 u_w) + 0.49) \times (1 - 0.00607(\theta - 90))$$ | Variable | Description | Unit | |----------|-------------|------| | $W$ | Stoichiometric mass fraction in air mixture | dimensionless | | $Y$ | Dimensionless flame length parameter | dimensionless | | $L_{Bo}$ | Still-air flame length | m | | $L_f$ | Wind-corrected flame length | m | | $u_w$ | Wind speed | m/s | | $\theta$ | Hole axis angle relative to wind | degrees | | $g$ | Gravitational acceleration (9.80665) | m/s² | *Reference: TNO Yellow Book (CPR 14E, 3rd Ed.), pp. 6.97–6.101, Eqs. 6.30–6.56; Chamberlain (1987)* For the Point Source model with orifice discharge, the flame length is calculated using the CCPS equation: $$L_f = d \times \frac{15}{W} \times \sqrt{\frac{MW_{air}}{MW}}$$ where $MW_{air} = 0.029$ kg/mol. For known flow with Point Source, the flame length is not required (set to 1.0 m as placeholder) since the radiant intensity is calculated directly from the mass flow rate. *Reference: CCPS, "Guidelines for CPQRA", 2nd Ed., Eq. 2.2.64* ### 3.8 Flame Geometry (Solid Plume Only) **Flame tilt angle (Kakosimos C2.68):** $$R_1 = u_w / u_j$$ Richardson number: $$Ri = L_{Bo} \times \left(\frac{g}{D_s^2 \times u_j^2}\right)^{1/3}$$ For $R_1 \leq 0.05$: $$\alpha = (\theta - 90)(1 - e^{-25.6 R_1}) + \frac{8000 R_1}{Ri}$$ For $R_1 > 0.05$: $$\alpha = (\theta - 90)(1 - e^{-25.6 R_1}) + \frac{134 + 1726\sqrt{R_1 - 0.026}}{Ri}$$ *Reference: Kakosimos, Eq. C2.68, p. 111; TNO Yellow Book* **Lift-off distance:** For zero wind: $b = 0.2 \times L_f$ For flame angle > 175 deg: $b = 0.015 \times L_f$ Otherwise (Chamberlain): $$K_{lo} = 0.187 \exp(-20 R_1) + 0.015$$ $$b = L_f \times \frac{\sin(K_{lo} \times \alpha)}{\sin(\alpha)}$$ *Reference: TNO Yellow Book, Eq. 6.49, p. 6.57; Chamberlain (1987)* **Frustum length:** $$R_L = \sqrt{L_f^2 - b^2 \sin^2(\alpha)} - b \cos(\alpha)$$ **Base width (Chamberlain):** $$C = 1000 \exp(-100 R_1) + 0.8$$ $$Ri_{Ds} = D_s \times \left(\frac{g}{u_j^2 \times D_s^2}\right)^{1/3}$$ $$W_1 = D_s \times (13.5 e^{-6R_1} + 1.5) \times \left(1 - e^{-70 Ri_{Ds}^{CR_1}} \left(1 - \frac{1}{15}\sqrt{\rho_r}\right)\right)$$ where $\rho_r = T_j MW_{air} / (T_a MW)$ is the relative density. *Reference: Chamberlain (1987); ALOHA Technical Documentation, p. 75; Kakosimos Eq. C2.73* **Top width:** $$W_2 = L_f \times (0.18 e^{-1.5 R_1} + 0.31) \times (1 - 0.47 e^{-25 R_1})$$ *Reference: Chamberlain (1987)* **Flame surface area (frustum):** $$A_1 = \sqrt{R_L^2 + \left(\frac{W_2 - W_1}{2}\right)^2}$$ $$A_{flame} = \frac{\pi}{4}(W_1^2 + W_2^2) + \frac{\pi}{2}(W_1 + W_2) A_1$$ ### 3.9 Surface Emissive Power (SEP) **Molecular weight correction factor (ALOHA):** | MW range | $C_{mw}$ | |----------|------| | $MW \leq 21$ | 1.0 | | $21 < MW \leq 60$ | $\sqrt{MW / 21}$ | | $MW > 60$ | 1.69 | *Reference: ALOHA Technical Documentation, NOAA/EPA, p. 72* **Radiated fraction (Chamberlain 1987):** $$F_s = 0.21 \times C_{mw} \times \exp(-0.00323 \times u_j) + 0.11$$ **Surface Emissive Power:** $$SEP = F_s \times \frac{\dot{m}}{A_{flame}} \times \Delta H_c$$ | Variable | Description | Unit | |----------|-------------|------| | $F_s$ | Fraction of heat radiated | dimensionless | | $SEP$ | Surface emissive power ($SEP_{act} = SEP_{max}$, no soot correction) | kW/m² | | $\Delta H_c$ | Heat of combustion | kJ/kg | No soot correction is applied ($SEP_{act} = SEP_{max}$). This is conservative for sooty flames. *Reference: Chamberlain, G.A. (1987), Chem. Eng. Res. Des., 65; ALOHA Technical Documentation, p. 72* ### 3.10 Atmospheric Transmissivity **Wayne model (CCPS Eqs. 2.2.42–2.2.43):** Partial vapor pressure of water: $$p_w = 1013.25 \times RH \times \exp(14.4114 - 5328 / T_a)$$ Atmospheric transmissivity: $$\tau = 2.02 \times (p_w \times x)^{-0.09}$$ | Variable | Description | Unit | |----------|-------------|------| | $\tau$ | Atmospheric transmissivity | dimensionless | | $p_w$ | Partial pressure of water vapor | Pa | | $RH$ | Relative humidity (as fraction 0–1) | dimensionless | | $x$ | Distance from flame surface | m | *Reference: CCPS, "Guidelines for CPQRA", 2nd Ed., Eqs. 2.2.42–2.2.43, p. 209* ### 3.11 Thermal Radiation at Distance $$q(x) = SEP \times F_{view}(x) \times \tau(x)$$ The **view factor** $F_{view}$ is calculated from horizontal and vertical components using the tilted cylinder method: $$F_{view} = \sqrt{F_v^2 + F_h^2}$$ where $F_v$ and $F_h$ are computed from geometric parameters (frustum length $R_L$, equivalent radius $R$, distance $X$, tilt angle) using analytical expressions involving arctangent functions. The full view factor formulation follows the TNO Yellow Book tilted cylinder methodology. *Reference: Kakosimos, Eq. C2.84, p. 119; TNO Yellow Book* $$q(x) = \tau(x) \times f_r \times \dot{m} \times \Delta H_c \times F_{view,ps}(x)$$ where: $$F_{view,ps} = \frac{1}{4\pi X_h^2}$$ $$X_h = \sqrt{(h_{source} + L_f/2)^2 + x^2}$$ | Variable | Description | Unit | |----------|-------------|------| | $q(x)$ | Thermal radiation at distance $x$ | kW/m² | | $f_r$ | Radiation fraction (user-specified) | dimensionless | | $X_h$ | Distance from point source to receiver | m | | $h_{source}$ | Height of leak above ground | m | *Reference: CCPS, "Guidelines for CPQRA", 2nd Ed., Eq. 2.2.65, p. 239* ### 3.12 Distance to Given Radiation (Inverse Calculation) The distance $x$ at which a specified thermal radiation $q^*$ is received is found by solving: $$q(x) - q^* = 0$$ This is solved using the **Newton-Raphson method** (npm package `newton-raphson-method`), with the flame top width as the initial guess. A fallback iterative method with 0.1 m increments is also implemented. ### 3.13 Probit Analysis **Thermal dose:** $$D = t_{exp} \times (q \times 1000)^{4/3}$$ | Variable | Description | Unit | |----------|-------------|------| | $D$ | Thermal dose | $(W/m^2)^{4/3} \cdot s$ | | $t_{exp}$ | Exposure time | s | | $q$ | Thermal radiation (converted from kW to W) | W/m² | **Probit equations:** | Effect | Equation | Reference | |--------|----------|-----------| | First degree burn | $Pr = -39.83 + 3.0186 \ln(D)$ | TNO Green Book, Eq. 3.4, p. 20 | | Second degree burn | $Pr = -43.14 + 3.0186 \ln(D)$ | TNO Green Book, Eq. 3.7, p. 20 | | Fatality (CCPS) | $Pr = -14.9 + 2.56 \ln(D / 10000)$ | CCPS, p. 269 | | Fatality (TNO) | $Pr = -36.38 + 2.56 \ln(D)$ | TNO Green Book, Eq. 3.5, p. 20 | JetFire uses CCPS methodology for probit deaths by default. **Probit to probability conversion:** $$P(\%) = f_k \times 50 \times \left(1 + \text{sgn}(Pr - 5) \times \text{erf}\left(\frac{|Pr - 5|}{\sqrt{2}}\right)\right)$$ | Variable | Description | Value | |----------|-------------|-------| | $f_k$ | Protection factor (no protective clothing) | 1.0 | | $Pr$ | Probit value | dimensionless | | $\text{erf}$ | Error function (Taylor series, 50 terms) | dimensionless | The protection factor $f_k = 1.0$ assumes no protective clothing. This is conservative for industrial workers who may wear flame-retardant clothing. *References: TNO Green Book (CPR 16E), p. 20; CCPS, p. 269* ### 3.14 Domino Effect — Time to Fail (Cozzani) **TTF correlations by vessel type:** | Vessel Type | Equation | Reference | |-------------|----------|-----------| | Atmospheric | $TTF = \exp(-1.13 \ln(q) - 2.667 \times 10^{-5} V + 9.877)$ | Cozzani et al. | | Pressurized | $TTF = \exp(-0.95 \ln(q) + 8.845 V^{0.032})$ | Cozzani et al. | | Full engulfment | $TTF = \exp(-1.29 \ln(q) + 10.97 V^{0.026})$ | Cozzani et al. | | Variable | Description | Unit | |----------|-------------|------| | $TTF$ | Time to fail | s | | $q$ | Thermal radiation received | kW/m² | | $V$ | Vessel volume | m³ | **Full engulfment criterion:** Equipment is considered fully engulfed when its distance from the jet fire source is less than $1.1 \times L_f$ (10% safety margin). **Domino probit (Cozzani):** $$Pr_{domino} = 9.25 - 1.847 \times \ln(TTF / 60)$$ *Reference: Cozzani, V. et al., "The assessment of risk caused by domino effect in quantitative area risk analysis", Journal of Hazardous Materials, p. 300* ### 3.15 Fatality Estimation Fatalities are estimated using **concentric ring integration**: 1. The area around the source is divided into concentric rings of width $\Delta r = 5$ m 2. For each ring at distance $r_i$: - Thermal radiation $q(r_i)$ is calculated - Thermal dose $D_i = t_{exp} \times (q_i \times 1000)^{4/3}$ is computed - Probit value is converted to fatality probability $P_i$ - Ring area: $A_i = \pi (r_{out}^2 - r_{in}^2)$ where $r_{in} = r_i - \Delta r/2$, $r_{out} = r_i + \Delta r/2$ - Fatalities in ring: $F_i = A_i \times \rho_{pop} \times P_i / 100$ 3. Total fatalities: $F = \sum F_i$ for all rings where $P_i \geq 0.1\%$ 4. If $F > 0.6$, result is $\lceil F \rceil$; otherwise result is 0 **Polygon receiver exclusion:** When polygon receivers are defined, their areas are subtracted from the concentric rings to avoid double-counting population (polygon populations are calculated separately with distributed spatial discretization). | Parameter | Default Value | |-----------|---------------| | Ring increment | 5 m | | Maximum radius | 10 km | | Minimum probability threshold | 0.1% | | TNO methodology | Used for ring-based fatalities | *Reference: CCPS, "Guidelines for CPQRA", 2nd Ed., p. 273* --- ## 4. Justification of Methodology Selection ### 4.1 Chamberlain Frustum Model (Solid Plume) The Chamberlain (1987) model was selected for the Solid Plume approach because: - It provides a **validated frustum geometry** for the flame shape, allowing accurate near-field radiation calculations - The model has been **extensively validated** against full-scale natural gas jet fire experiments - It accounts for wind effects on flame tilt, lift-off, and width variation - The view factor calculation captures the directional nature of radiation from an extended source - It is the **standard model used by ALOHA** (NOAA/EPA) and recommended in the TNO Yellow Book ### 4.2 CCPS Point Source Model The Point Source model was selected as an alternative because: - It provides **conservative estimates** suitable for preliminary hazard assessment - It requires fewer input parameters (no flame geometry needed for known flow) - The model is **computationally simpler** and avoids view factor convergence issues - It is recommended by CCPS for far-field radiation estimates where flame geometry is less critical ### 4.3 Newton-Raphson Method Newton-Raphson iteration is used for two purposes: 1. **Flame length calculation** (solving the non-linear $Y$ equation) — Provides rapid convergence (typically 3–5 iterations) for the implicit Chamberlain equation 2. **Inverse distance calculation** — Finding the distance at which a given thermal radiation level occurs The `newton-raphson-method` npm package is used for the inverse distance calculation, with the flame top width as the initial guess. ### 4.4 Dual Probit Methodologies Two probit approaches are available: - **TNO (default for ring-based fatalities):** Standard European methodology, widely used in QRA - **CCPS (default for JetFire probit):** Standard American methodology, mathematically equivalent when properly normalized ### 4.5 Cozzani Domino Correlations The Cozzani correlations are the only published empirical correlations specifically developed for estimating time-to-failure of industrial vessels under thermal radiation loading. They are supported by experimental data and distinguish between atmospheric and pressurized vessel behavior. --- ## 5. Model Limitations 1. **Gas phase only** — The model requires $\gamma > 1.0$ (ideal gas). Two-phase (gas-liquid) releases are not supported. 2. **Steady-state flow** — The release rate is assumed constant throughout the event duration. Transient vessel blowdown is not modeled. 3. **Ideal gas behavior** — Real gas effects (compressibility factor $Z \neq 1$) are not accounted for. This may introduce errors at very high pressures. 4. **Flat terrain, no obstacles** — The model assumes unobstructed propagation of thermal radiation. Buildings, terrain features, and shielding effects are not considered. 5. **No soot correction** — $SEP_{act} = SEP_{max}$. For heavy hydrocarbons with significant soot production, the actual emissive power may be lower than calculated. This makes the result conservative. 6. **Simplified transmissivity** — The Wayne model (CCPS 2.2.42) is a simplified correlation. More detailed models (e.g., LOWTRAN) may give different results at long distances or extreme humidity conditions. 7. **Protection factor $f_k = 1.0$** — No protective clothing is assumed. This is conservative for industrial workers who may wear flame-retardant clothing. 8. **Frustum approximation** — The actual flame shape is approximated as a truncated cone (frustum). Complex flame shapes due to crosswind, buoyancy effects, or turbulence are simplified. 9. **Point Source ignores geometry** — The Point Source model does not consider flame shape, making it less accurate in the near field but conservative overall. 10. **Newton-Raphson convergence** — The iterative solver may fail to converge for extreme parameter combinations. The fallback iterative method (0.1 m increments) is available but slower. 11. **Uniform population density** — The base fatality calculation assumes spatially uniform population density. This limitation is mitigated by polygon receiver support, which allows spatially distributed population modeling. 12. **Chamberlain validation** — The model was primarily validated against natural gas (methane) jet fire experiments. Application to other substances, particularly heavy hydrocarbons, should be treated with caution. 13. **Cozzani correlations** — The TTF correlations apply only to atmospheric and pressurized vessels. Other equipment types (reactors, heat exchangers, columns) are mapped to the closest available vessel type. 14. **Atmospheric effects** — Detailed atmospheric turbulence effects on flame geometry and radiation propagation are not modeled. --- ## 6. Range of Applicability | Parameter | Typical Range | Notes | |-----------|---------------|-------| | Internal pressure | 1–200 atm | Higher pressures may violate ideal gas assumption | | Orifice diameter | 1–500 mm | Very large diameters may produce non-jet behavior | | Molecular weight | 2–150 g/mol | MW correction factor applied for SEP | | Wind speed | 0–30 m/s | Model validated primarily for moderate winds | | Gas temperature | > boiling point | Must be gas phase at release conditions | | Heat capacity ratio | $\gamma > 1.0$ | Strictly gas-phase releases only | | Hole angle | 0–180° | 90° = horizontal, relative to wind | --- ## 7. References *Complex Hazardous Activities: Preventing and Managing Industrial Disasters*. Safety in Chemical Engineering. Equations B2.13–B2.15 (pp. 36), C2.50–C2.60 (pp. 108–110), C2.68 (p. 111), C2.73 (p. 112), C2.84 (p. 119). *Methods for the Calculation of Physical Effects Due to Releases of Hazardous Materials*. Committee for the Prevention of Disasters, The Netherlands. Flame geometry pp. 6.97–6.101, Eqs. 6.30–6.56. *Methods for the Determination of Possible Damage to People and Objects Resulting from Releases of Hazardous Materials*. Probit equations, p. 20, Eqs. 3.4, 3.5, 3.7. Center for Chemical Process Safety, AIChE. Point source model Eqs. 2.2.64–2.2.65 (p. 239), transmissivity Eqs. 2.2.42–2.2.43 (p. 209), probit (p. 269), fatalities (p. 273). "Developments in design methods for predicting thermal radiation from flares." *Chemical Engineering Research and Design*, 65, pp. 299–309. Frustum model, radiated fraction, flame geometry correlations. NOAA/EPA. Molecular weight correction for radiated fraction (p. 72), Chamberlain implementation (p. 75). "The assessment of risk caused by domino effect in quantitative area risk analysis." *Journal of Hazardous Materials*. TTF correlations for atmospheric/pressurized vessels (p. 300). "An Analysis and Interpretation of Casualty Rates in Major Hazard Events." Referenced in overpressure probit calculations (FatalityUtils). --- # Pool Fire Source: https://tekrisk.com/en/docs/risk-models/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 Pool fires produce sustained thermal radiation capable of causing severe burns and fatalities. The hazard zone depends on pool size, fuel properties, wind conditions, and atmospheric humidity. Steady-state release; pool diameter grows until equilibrium between inflow and combustion rate Entire volume released at once; maximum diameter depends on total volume released Fixed diameter defined by the user (inner dike diameter) 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
(fuel, source type, weather)"] --> B["Chemical Properties
YAWS: ΔHvap, cP, ρL at Tamb & Tb"] B --> C["Burning Rate
ṁ'' = f(ΔHc, ΔHvap, cP, ρL)"] C --> D["Pool Diameter
D = f(sourceType, Q or V)"] D --> E["Flame Geometry
u*, H(Thomas|Pritchard), θ, SEP"] E --> F["For each distance x:
F_view, τ_atm, q(x)"] F --> G["Forward problem
q(x)"] F --> H["Inverse problem
x(q_target) — Newton-Raphson"] G --> I["Thermal Dose
D_dose = t_exp · (q×10³)^(4/3)"] H --> I I --> J["Probit Analysis
(Burns 1°/2°, Fatalities TNO/CCPS, Domino)"] J --> K["Fatality Calculation
(Concentric Rings + FatalityUtils)"] style A fill:#e1f5fe style K fill:#c8e6c9 style F fill:#fff3e0`}
**Chemical Properties** — Retrieve fuel properties from YAWS database at $T_{amb}$: heat of vaporization $\Delta H_{vap}$, liquid heat capacity $c_P$, and liquid density $\rho_L$. **Burning Rate** — Compute $\dot{m}''$ [kg/(m²·s)] using Burgess-Strasser, Mudan, or tabulated value (gasoline). **Pool Diameter** — Determine maximum pool diameter $D$ based on source type: continuous spill, massive release, circular dike, or rectangular dike. **Flame Geometry** — Compute dimensionless wind speed $u^*$, flame height $H$ (Thomas or Pritchard-Binding), tilt angle $\theta$, and Surface Emissive Power (SEP). **Thermal Radiation** — Compute radiation $q(x)$ [kW/m²] at target distances using Point Source or Solid Plume (tilted cylinder) view factor model. **Probit Analysis** — Convert thermal dose into probability of 1st/2nd degree burns, fatalities (TNO or CCPS), and domino effects (Cozzani). **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 $T_{amb}$ (Kelvin). ### 3.1 Heat of Vaporization at $T_{amb}$ $$ \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}] $$ | Symbol | Description | Source | |--------|-------------|--------| | $h_{va}$ | Vaporization coefficient A | YAWS, p. 109 | | $h_{vn}$ | Correlation exponent | YAWS, p. 109 | | $T_c$ | Critical temperature (K) | YAWS | | $M_w$ | Molecular weight (g/mol) | YAWS | **Code:** `PoolFire.js`, lines 81–85. ### 3.2 Liquid Heat Capacity $$ c_P(T_{amb}) = \frac{c_{pla} + c_{plb} \cdot T + c_{plc} \cdot T^2 + c_{pld} \cdot T^3}{M_w} \quad [\text{kJ/(kg·K)}] $$ where $T = T_{amb}$ in Kelvin. **Reference:** YAWS, *Chemical Properties Handbook*, 1999. **Code:** `PoolFire.js`, lines 91–96. ### 3.3 Liquid Density (at $T_{amb}$ and $T_b$) $$ \rho_L(T) = d_{lqa} \cdot d_{lqb}^{-\left(1 - T/T_c\right)^{d_{lqn}}} \times 10^3 \quad [\text{kg/m}^3] $$ Density is calculated at two points: - $\rho_L(T_{amb})$: ambient temperature (for mass-to-volume conversion) - $\rho_L(T_b)$: boiling point (for fuel regression rate $v_f$) **Reference:** YAWS, p. 185. **Code:** `PoolFire.js`, lines 98–113. ### 3.4 Heat of Vaporization at $T_b$ (CCPS Correction) $$ \Delta H_{vap}(T_b) = \Delta H_{vap}(T_{amb}) + c_P \cdot (T_b - T_{amb}) \quad [\text{kJ/kg}] $$ **Reference:** CCPS, *Guidelines for CPQRA*, 2nd Ed., p. 234. **Code:** `PoolFire.js`, lines 119–121. --- ## 4. Burning Rate — `burningRate()` The burning rate $\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: $$ \dot{m}'' = 0.055 \quad [\text{kg/(m}^2\text{·s)}] $$ **Code:** `PoolFire.js`, lines 291–293. ### 4.2 Burgess-Strasser Method (Kakosimos) $$ \dot{m}'' = \rho_L(T_b) \cdot 1.27 \times 10^{-6} \cdot \frac{\Delta H_c}{\Delta H_{vap}(T_b) + c_P \cdot (T_b - T_{amb})} $$ **Reference:** Kakosimos, K.E. et al., *Safety in Chemical Engineering*, p. 82. **Code:** `PoolFire.js`, lines 298–305. ### 4.3 Mudan Method $$ \dot{m}'' = \frac{0.001 \cdot \Delta H_{vap}(T_b)}{\Delta H_{vap}(T_{amb}) + c_P \cdot (T_b - T_{amb})} $$ **Reference:** Mudan & Croce, *SFPE Handbook of Fire Protection Engineering*, 1995; cited in Kakosimos p. 83. **Code:** `PoolFire.js`, lines 307–313. The denominator in both Burgess-Strasser and Mudan methods includes $c_P \cdot (T_b - T_{amb})$ to account for the sensible heat required to bring the liquid to its boiling point before evaporation. --- ## 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: $$ 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 = 2 \sqrt{\frac{Q_{spill}}{\pi \cdot y_{max}}} \quad [\text{m}] $$ where $Q_{spill}$ is the volumetric spill rate [m³/s]. For GASOLINE: $y_{max} = 7 \times 10^{-5}$ m/s; for LP GAS: $y_{max} = 2 \times 10^{-4}$ m/s (tabulated values). **Reference:** CCPS, p. 228. **Code:** `PoolFire.js`, lines 331–345. ### 5.2 Massive / Instantaneous Spill (CCPS p. 234) For a volume $V$ [m³] released instantaneously, the maximum diameter is: $$ D = 2 \cdot \left(\frac{V^3 \cdot g}{v_f^2}\right)^{1/8} $$ where the fuel regression rate is: $$ v_f = \frac{\dot{m}''}{\rho_L(T_b)} \quad [\text{m/s}] $$ **Reference:** CCPS, p. 234. **Code:** `PoolFire.js`, lines 347–356. ### 5.3 Circular Dike The diameter is specified directly by the user (inner dike diameter). No calculation required. **Code:** `PoolFire.js`, line 357. ### 5.4 Rectangular Dike Equivalent diameter by equating the rectangular containment area with a circle: $$ D_{equiv} = \sqrt{\frac{4 \cdot L \cdot W}{\pi}} $$ where $L$ is the length and $W$ the width of the dike [m]. **Code:** `PoolFire.js`, lines 359–363. --- ## 6. Time Calculations ### 6.1 Continuous Spill — `timeToReachPoolSize()` $$ 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 $$ 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. ### 6.3 Fire Duration — `timeDurationPoolFire(V)` $$ t_{dur} = \frac{4 \cdot V}{\pi \cdot D^2 \cdot v_f} \quad [\text{s}] $$ where $V$ is the available liquid volume [m³]. **Reference:** Based on circular pool geometry with regression rate $v_f$. **Code:** `PoolFire.js`, lines 397–405. --- ## 7. Dimensionless Wind Speed — `ux()` $$ u^* = 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.0$ corresponds to the no-wind condition. Dry air density uses ISA 1976 altitude correction: $$ P = 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 ($u_w = 0$) $$ H = 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. ### 8.2 Thomas Method — With Wind $$ H = 55 \cdot D \cdot \left(\frac{\dot{m}''}{\rho_{air} \sqrt{g \cdot D}}\right)^{0.67} \cdot (u^*)^{-0.21} $$ **Reference:** Thomas, 1963; Kakosimos p. 86. **Code:** `PoolFire.js`, lines 472–477. ### 8.3 Pritchard-Binding Method $$ H = 10.615 \cdot D \cdot \left(\frac{\dot{m}''}{\rho_{air} \sqrt{g \cdot D}}\right)^{0.305} \cdot (u^*)^{-0.03} $$ **Reference:** Pritchard, M.J. & Binding, T.M., *FIRE2*, IChemE Symposium Series No. 130, 1992. **Code:** `PoolFire.js`, lines 479–484. Thomas slightly overestimates height for large pools (D > 50 m) with strong wind. Pritchard-Binding was developed specifically for hydrocarbons and yields somewhat lower heights; recommended for conservative analyses in industrial facilities at low $u^*$ values. --- ## 9. Surface Emissive Power (SEP) — `SEP()` The SEP [kW/m²] is the radiant power emitted per unit area of the flame surface. 15 m (Mudan-Croce)", "Non-hydrocarbons or D ≤ 15 m"]}> For large hydrocarbon pools (alkanes, gasoline, diesel, jet fuel), soot significantly reduces effective radiation. The bi-exponential correlation models the shielding effect: $$ 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. The code identifies hydrocarbons by the presence of suffixes `ANE`, `GAS`, `GASOLINE`, `DIESEL`, or `TURBO` in the substance name. **Reference:** Mudan & Croce, *SFPE Handbook*, 1995; Kakosimos p. 88. **Code:** `PoolFire.js`, lines 505–508. For non-aromatic fuels or small pools where soot does not dominate: $$ SEP = \frac{0.35 \cdot \dot{m}'' \cdot \Delta H_c}{1 + 72 \cdot (\dot{m}'')^{0.61}} \quad [\text{kW/m}^2] $$ **Code:** `PoolFire.js`, lines 510–513. --- ## 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 = \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} $$ $$ \theta = \arcsin\!\left(\frac{\sqrt{4c^2 + 1} - 1}{2c}\right) \quad [\text{rad}] $$ For $u_w \leq 0$, $\theta = 0$ (vertical flame). Kinematic viscosity $\nu$ [m²/s] is obtained from an empirical polynomial in $T_{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 = \frac{1}{4\pi x^2} $$ Valid for $x \gg D$. Underestimates radiation in the near field. **Code:** `PoolFire.js`, line 610. ### 11.2 Solid Plume Model Treats the flame as a solid tilted cylinder with dimensionless variables: $$ \alpha = \frac{H}{R}, \quad \beta = \frac{x}{R}, \quad R = \frac{D}{2} $$ $$ A = \sqrt{\alpha^2 + (\beta+1)^2 - 2\alpha(\beta+1)\sin\theta}, \quad B = \sqrt{\alpha^2 + (\beta-1)^2 - 2\alpha(\beta-1)\sin\theta} $$ $$ C = \sqrt{1 + (\beta^2-1)\cos^2\theta}, \quad D_v = \sqrt{\frac{\beta-1}{\beta+1}}, \quad E = \frac{\alpha\cos\theta}{\beta - \alpha\sin\theta}, \quad F_2 = \sqrt{\beta^2-1} $$ **Vertical component $F_v$:** $$ F_v = \frac{1}{\pi}\!\left[-E\arctan(D_v) + E\cdot\frac{\alpha^2+(\beta+1)^2-2\beta(1+\alpha\sin\theta)}{AB}\arctan\!\frac{AD_v}{B} + \frac{\cos\theta}{C}\!\left(\arctan\!\frac{\alpha\beta - F_2^2\sin\theta}{F_2 C} + \arctan\!\frac{F_2^2\sin\theta}{F_2 C}\right)\right] $$ **Horizontal component $F_h$:** $$ F_h = \frac{1}{\pi}\!\left[\arctan\!\frac{1}{D_v} + \frac{\sin\theta}{C}\!\left(\arctan\!\frac{\alpha\beta - F_2^2\sin\theta}{F_2 C} + \arctan\!\frac{F_2\sin\theta}{C}\right) - \frac{\alpha^2+(\beta+1)^2-2(\beta+1+\alpha\beta\sin\theta)}{AB}\arctan\!\frac{AD_v}{B}\right] $$ **Combined view factor:** $$ F_{vista} = \sqrt{F_v^2 + F_h^2} $$ **Code:** `PoolFire.js`, lines 550–611. --- ## 12. Atmospheric Transmissivity — `ta(x)` Atmospheric humidity attenuates thermal radiation. Transmissivity $\tau$ uses Wayne's correlation (cited in CCPS): $$ \tau = 2.02 \cdot (P_w \cdot x)^{-0.09} $$ The partial pressure of water vapor $P_w$ [Pa]: $$ P_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 $HR$ is relative humidity [%] and $T = T_{amb}$ [K]. **Code:** `PoolFire.js`, lines 620–638. --- ## 13. Thermal Radiation — `qTermAtX(x)` $$ 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_\eta$ — radiated energy fraction (0.15–0.35, user-configurable; CCPS p. 230–232, Table 2.27) - $A_{pool} = \pi D^2 / 4$ — pool area [m²] **Code:** `PoolFire.js`, lines 652–663. $$ q(x) = SEP \cdot F_{vista}(x) \cdot \tau(x) \quad [\text{kW/m}^2] $$ **Code:** `PoolFire.js`, line 667. --- ## 14. Distance to a Given Radiation Level — `xTerm(q_target)` Given a target radiation level $q_{target}$ [kW/m²], the distance $x$ [m] is found via **Newton-Raphson**. For the Point Source model: $$ f(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) = -\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)` $$ 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 $10^3$ converts $q$ 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. $$ Pr = -39.83 + 3.0186 \cdot \ln(D_{dose}) $$ **Reference:** TNO Green Book (CPR 14E), 1997, p. 20, eq. 3.4. **Code:** `ProbitUtils.js`, line 90. $$ Pr = -43.14 + 3.0186 \cdot \ln(D_{dose}) $$ **Reference:** TNO Green Book (CPR 14E), 1997, p. 20, eq. 3.7. **Code:** `ProbitUtils.js`, line 94. $$ Pr = -36.38 + 2.56 \cdot \ln(D_{dose}) $$ **Reference:** TNO Green Book (CPR 14E), 1997, p. 20, eq. 3.5. **Code:** `ProbitUtils.js`, line 103. $$ Pr = -14.9 + 2.56 \cdot \ln\!\left(\frac{D_{dose}}{10\,000}\right) $$ The Pool Fire model uses the CCPS methodology for fatality calculations in population density integration. **Reference:** CCPS, *Guidelines for CPQRA*, 2nd Ed., p. 269. **Code:** `ProbitUtils.js`, line 100. $$ P\% = 50 \cdot \left(1 + \frac{Pr - 5}{|Pr - 5|} \cdot \text{erf}\!\left(\frac{|Pr - 5|}{\sqrt{2}}\right)\right) $$ Limits: $Pr < 0 \Rightarrow P = 0\%$; $Pr > 8.09 \Rightarrow P = 100\%$. **Code:** `ProbitUtils.js`, lines 125–145. --- ## 17. Time to Failure for Vessels (Domino Effect) — Cozzani Correlations $$ TTF = \exp\!\left(-1.13 \cdot \ln(q) - 0.00002667 \cdot V + 9.877\right) $$ $$ TTF = \exp\!\left(-0.95 \cdot \ln(q) + 8.845 \cdot V^{0.032}\right) $$ Condition: distance from equipment to pool center < 1.1 × pool radius. $$ TTF = \exp\!\left(-1.29 \cdot \ln(q) + 10.97 \cdot V^{0.026}\right) $$ $$ Pr_{domino} = 9.25 - 1.847 \cdot \ln\!\left(\frac{TTF}{60}\right) $$ **Reference:** Cozzani, V. et al., *Journal of Hazardous Materials*, Vol. 127, 2006, p. 300. **Code:** `ProbitUtils.js`, lines 50–63 (TTF), line 108 (domino probit). --- ## 18. Fatality Calculation — `fatalidades()` The method numerically integrates the probability of death over concentric annular rings: $$ N_{fatal} = \sum_{r_i} P_{death}(r_i) \cdot \rho_{pop} \cdot A_{ring}(r_i) $$ | Symbol | Description | Unit | |--------|-------------|------| | $P_{death}(r_i)$ | Probability of death at distance $r_i$ (CCPS method) | % | | $\rho_{pop}$ | Population density | persons/m² | | $A_{ring}(r_i)$ | Annular ring area | m² | 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 The model assumes a cylindrical flame shape (solid plume). Real flames are conical or irregular, especially under strong wind. SEP is assumed constant across the entire flame surface. In reality, SEP varies with height (higher at the base, lower in the smoke plume). The model considers a single wind direction; it does not model directional variability or turbulence. Terrain slopes, obstacles, and three-dimensional confinement are not considered. Pool diameter models assume equilibrium. The transient behavior during pool growth is not simulated in the radiation calculation. Additional evaporation induced by radiation on unburned liquid is not accounted for. Valid only for atmospheric and pressurized vessels. Not applicable to reactors, heat exchangers, or other equipment without available experimental correlations. Wayne's correlation is valid for distances of 10 m to 1000 m. For very short distances it may overestimate attenuation. The point source simplification is valid for $x \gg D$. It underestimates radiation in the near field. --- ## 20. Bibliographic References | # | Reference | |---|-----------| | 1 | Kakosimos, K.E. et al. — *Safety in Chemical Engineering*. Papasotiriou Publications. (pp. 82, 83, 86, 88) | | 2 | CCPS — *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed. AIChE, New York, 1999. (pp. 228, 230–234, 269) | | 3 | TNO — *Methods for the Calculation of Physical Effects* (CPR 14E, "Green Book"), 3rd Ed. 1997. (p. 20, eqs. 3.4, 3.5, 3.7) | | 4 | YAWS, C.L. — *Chemical Properties Handbook*. McGraw-Hill, New York, 1999. (pp. 109, 185, 582) | | 5 | Thomas, P.H. — *The size of flames from natural fires*. 9th Intl. Symposium on Combustion, 1963, pp. 844–859. | | 6 | Pritchard, M.J. & Binding, T.M. — *FIRE2: A new approach for predicting thermal hazards from hydrocarbon pool fires*. IChemE Symposium Series No. 130, 1992. | | 7 | Cozzani, V., Gubinelli, G., Antonioni, G., Spadoni, G. & Zanelli, S. — *The assessment of risk caused by domino effect in quantitative area risk analysis*. J. Hazardous Materials, Vol. 127, 2006, pp. 14–30. | | 8 | Mudan, K.S. & Croce, P.A. — *Fire hazard calculations for large open hydrocarbon fires*, SFPE Handbook of Fire Protection Engineering. SFPE/NFPA, 1995. | | 9 | ISA — *International Standard Atmosphere*. ICAO Doc 7488/2, 1976. | --- # 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 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. Gaseous hydrocarbon leaks in congested process areas Flammable vapor releases in process zones Rapid vaporization of pressurized liquids Natural gas releases on platforms and FPSOs ### 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 {`flowchart TD A["Input Data
(mass, Hc, fe, method)"] --> B["TNT Equivalent
m_TNT = fe*Hc*M / DH_TNT"] B --> C["For each distance x:
z, P(z), I(z), td(z), ta(z)"] C --> D["Forward: P(x)"] C --> E["Inverse: x(P_target)
Incremental Iteration"] D --> F["Probit Analysis"] E --> F F --> G["Lethality
(people)"] F --> H["Structural
Damage"] F --> I["Domino
Effect"] G --> J["Fatality Calculation
(Concentric Rings)"] H --> J I --> J style A fill:#e1f5fe style J fill:#c8e6c9 style C fill:#fff3e0`}
The VCE calculation follows these stages: **TNT Equivalent** — Convert combustion energy of the vapor cloud into an equivalent mass of TNT. **Scaled Distance** — Compute Hopkinson-Cranz scaled distance $z = x / m_{TNT}^{1/3}$ for each receptor. **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. **Inverse Distance** — Find distance at which overpressure equals a target threshold via incremental iteration. **Probit Analysis** — Convert overpressure/impulse to probabilities of lethality, eardrum rupture, structural damage, and domino effects. **Fatality Estimation** — Integrate fatality probability over concentric rings to estimate total casualties. --- ## 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* 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. ### 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 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$ | 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 | 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. *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., pp. 161-162; Lees, Loss Prevention, 3rd ed., p. 17-127* $$ 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* ### 3.4 Impulse Calculation 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) | 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 | | 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 | *Reference: Lees, Loss Prevention, 3rd ed., p. 17-127* $$ 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* ### 3.5 Duration and Arrival Time 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) | 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 | | 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 | | 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 | *Reference: Lees, Loss Prevention, 3rd ed., p. 17-127* $$ 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* Single degree-9 polynomial for the full range ($0.0674 \leq z \leq 40$): $t_a = 10^{\text{polynomial}(u)}$ (ms) | 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 | *Reference: Lees, Loss Prevention, 3rd ed., p. 17-127* ### 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$ | 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. ### 3.7 Probit Analysis — Effects on People $$ Y_{death} = 1.47 + 1.35 \cdot \ln(P_{psi}) $$ where $P_{psi} = P_{kPa} \times 0.145038$. *Reference: Hurst, Nussey & Pape, 1989* $$ 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* $$ Y_{eardrum} = -12.6 + 1.525 \cdot \ln(P_{Pa}) $$ *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed.* ### 3.8 Probit Analysis — Structural Effects $$ Y_{structure} = -23.8 + 2.92 \cdot \ln(P_{Pa}) $$ *Reference: CCPS, Guidelines for Chemical Process QRA, 2nd ed., p. 275* **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}) $$ Post-1975 glass is more resistant due to manufacturing improvements, reflected in more conservative probit constants (requiring higher overpressure for the same damage level). *Reference: TNO Green Book (CPR 16E), p. 119* 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* ### 3.9 Domino Effect 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* 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.* ### 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 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 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 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 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 --- ## 5. Model Limitations - **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 - **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 - **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 - **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 - **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 - **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% --- ## 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 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). Butterworth-Heinemann, 2004. Original polynomial constants (p. 17-127), Brasie duration (p. 17-124), General VCE methodology. *Methods for the Calculation of Physical Effects*. Committee for the Prevention of Disasters, 2005. Window breakage probits (p. 119), TNO impulse damage probits. *Methods for the Determination of Possible Damage*. Committee for the Prevention of Disasters, 1999. Concentric ring fatality calculation methodology. "Guidelines for Estimating Damage from Chemical Explosions." 63rd National Meeting, AIChE. Alternative overpressure correlation. "Development and Application of a Risk Assessment Tool (RISKAT)." Chemical Engineering Research and Design, 67. Overpressure lethality probit (default method). "Escalation thresholds in the assessment of domino accidental events." Journal of Hazardous Materials. Overpressure domino probit (atmospheric, pressurized, elongated, small vessels). *Safety in Chemical Engineering*. Brasie overpressure equation (p. 154). Major Accident Hazards Bureau Technical Report, p. 85. Brasie positive impulse. Probit functions for domino effect. Alternative domino effect correlations. --- # Bibliografía Source: https://tekrisk.com/es/docs/bibliography Referencias bibliográficas consolidadas para QRA industrial — estándares, modelos de consecuencias, dispersión, teoría de incendios y explosiones, efecto dominó, vulnerabilidad y marco matemático Esta página consolida todas las referencias bibliográficas citadas a lo largo de la documentación de TekRisk PRO: estándares regulatorios, libros de texto de QRA, modelos de consecuencias y dispersión, teoría de incendios y explosiones, probits de efecto dominó, modelos de vulnerabilidad y el marco matemático que sustenta la metodología. --- ## 1. Estándares y Marcos de QRA | # | Referencia | |---|-----------| | 1 | **CCPS** (2000). *Guidelines for Chemical Process Quantitative Risk Analysis*, 2da Ed. AIChE, Nueva York. | | 2 | **TNO** (2005). *Methods for the Calculation of Physical Effects* (Yellow Book, CPR 14E), 3ra Ed. Committee for the Prevention of Disasters, Países Bajos. | | 3 | **TNO** (2005). *Methods for the Determination of Possible Damage* (Green Book, CPR 16E), 3ra Ed. Committee for the Prevention of Disasters, Países Bajos. | | 4 | **TNO** (1999). *Guidelines for Quantitative Risk Assessment* (Purple Book, CPR 18E). Committee for the Prevention of Disasters, Países Bajos. | | 5 | **UK HSE** (2001). *Reducing Risks, Protecting People (R2P2)*. Health and Safety Executive, Londres. | | 6 | **RIVM / IPO** (2009). *Reference Manual Bevi Risk Assessments*, Versión 3.2. Bilthoven, Países Bajos. | | 7 | **HKSAR** (1994). *Risk Guidelines for New Territories East Landfill*. Hong Kong Special Administrative Region. | | 8 | **HIPAP No. 4** (1994). *Risk Criteria for Land Use Safety Planning*. NSW Department of Planning, Australia. | | 9 | **ASEA** (2016). *Lineamientos para la Elaboración del Análisis de Riesgo*. Agencia de Seguridad, Energía y Ambiente, México. | | 10 | **EPA**. *Risk Management Program Guidance*. U.S. Environmental Protection Agency. | --- ## 2. Libros de Texto de QRA y Seguridad de Procesos | # | Referencia | |---|-----------| | 11 | **Lees, F.P.** (2012). *Loss Prevention in the Process Industries*, 4ta Ed. Butterworth-Heinemann / Elsevier, Amsterdam. | | 12 | **Crowl, D.A. & Louvar, J.F.** (2011). *Chemical Process Safety: Fundamentals with Applications*, 3ra Ed. Prentice Hall. | | 13 | **Casal, J.** (2008). *Evaluation of the Effects and Consequences of Major Accidents in Industrial Plants*. Elsevier. | | 14 | **Kakosimos, K.E.** *Safety in Chemical Engineering — Complex Hazardous Activities: Preventing and Managing Industrial Disasters*. Papasotiriou Publications. | | 15 | **Yaws, C.L.** (1999). *Chemical Properties Handbook*. McGraw-Hill, Nueva York. | --- ## 3. Dispersión Atmosférica | # | Referencia | |---|-----------| | 16 | **Ermak, D.L.** (1990). *User's Manual for SLAB: An Atmospheric Dispersion Model for Denser-Than-Air Releases*. UCRL-MA-105607, Lawrence Livermore National Laboratory, Livermore, CA. | | 17 | **Pasquill, F.** (1961). The estimation of the dispersion of windborne material. *Meteorological Magazine*, 90, 33–49. | | 18 | **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. | | 19 | **Briggs, G.A.** (1984). *Plume Rise and Buoyancy Effects*. En: Atmospheric Science and Power Production. DOE/TIC-27601. | | 20 | **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. | --- ## 4. Modelos de Incendio | # | Referencia | |---|-----------| | 21 | **Thomas, P.H.** (1963). The size of flames from natural fires. *9th International Symposium on Combustion*, pp. 844–859. | | 22 | **Pritchard, M.J. & Binding, T.M.** (1992). *FIRE2: A new approach for predicting thermal hazards from hydrocarbon pool fires*. IChemE Symposium Series No. 130. | | 23 | **Mudan, K.S. & Croce, P.A.** (1995). Fire hazard calculations for large open hydrocarbon fires. *SFPE Handbook of Fire Protection Engineering*. SFPE/NFPA. | | 24 | **Chamberlain, G.A.** (1987). Developments in design methods for predicting thermal radiation from flares. *Chemical Engineering Research and Design*, 65, pp. 299–309. | --- ## 5. Modelos de Explosión y Sobrepresión | # | Referencia | |---|-----------| | 25 | **Brasie, W.C. & Simpson, D.W.** (1968). *Guidelines for Estimating Damage from Chemical Explosions*. 63rd National Meeting, AIChE. | | 26 | **Hurst, N.W., Nussey, C. & Pettitt, G.N.** (1989). *Development and Application of a Risk Assessment Methodology for Gaseous Blast Waves*. IChemE Symposium Series No. 110. | | 27 | **Hurst, N.W., Nussey, C. & Pape, R.P.** (1989). Development and Application of a Risk Assessment Tool (RISKAT). *Chemical Engineering Research and Design*, 67. | --- ## 6. Efecto Dominó | # | Referencia | |---|-----------| | 28 | **Cozzani, V., Gubinelli, G., Antonioni, G., Spadoni, G. & Zanelli, S.** (2006). The assessment of risk caused by domino effect in quantitative area risk analysis. *Journal of Hazardous Materials*, 127, pp. 14–30. | | 29 | **Cozzani, V. et al.** (2006). Escalation thresholds in the assessment of domino accidental events. *Journal of Hazardous Materials*, 129(1-3), pp. 1–21. | | 30 | **Mingguang, Z. et al.** *Probit functions for domino effect*. Correlaciones de efecto dominó alternativas. | --- ## 7. Modelos de Vulnerabilidad y Probit | # | Referencia | |---|-----------| | 31 | **Eisenberg, N.A., Lynch, C.J. & Breeding, R.J.** (1975). *Vulnerability Model*. CG-D-136-75. United States Coast Guard, Washington. — Ecuaciones probit originales para letalidad térmica y por sobrepresión. | | 32 | **CCPS** (2000). *Guidelines for Chemical Process Quantitative Risk Analysis*, 2da Ed. AIChE, Nueva York. — Funciones probit compiladas: fatalidad térmica $Pr = -14.9 + 2.56\ln(D/10{,}000)$ (p. 269, Eisenberg), letalidad por sobrepresión $Pr = -77.1 + 6.91\ln(P_{Pa})$ (p. 275, Eisenberg), daño estructural $Pr = -23.8 + 2.92\ln(P_{Pa})$ (p. 275), rotura de tímpano $Pr = -12.6 + 1.525\ln(P_{Pa})$, anillos de fatalidades (p. 273). | | 33 | **Hurst, N.W., Nussey, C. & Pape, R.P.** (1989). Development and Application of a Risk Assessment Tool (RISKAT). *Chemical Engineering Research and Design*, 67. — Probit de letalidad por sobrepresión (método por defecto): $Pr = 1.47 + 1.35\ln(P_{psi})$, derivado de análisis retrospectivo de accidentes. | | 34 | **Hurst, N.W., Nussey, C. & Pettitt, G.N.** (1989). *Development and Application of a Risk Assessment Methodology for Gaseous Blast Waves*. IChemE Symposium Series No. 110. — Metodología probit para ondas de explosión gaseosa, aplicada en el modelado de consecuencias por sobrepresión. | --- ## 8. Reportes Técnicos y Referencias Atmosféricas | # | Referencia | |---|-----------| | 35 | **JRC — Joint Research Centre**. *Major Accident Hazards Bureau Technical Report*. | | 36 | **U.S. EPA / NOAA** (2013). *ALOHA Technical Documentation*. | | 37 | **ICAO** (1976). *International Standard Atmosphere (ISA)*. ICAO Doc 7488/2. | --- ## 9. Marco Matemático | # | Referencia | |---|-----------| | 38 | **Arfken, G.** (1981). *Métodos matemáticos para físicos*. Editorial Diana. | | 39 | **Arnold, V.I.** (1985). *Ordinary Differential Equations*. The MIT Press, Cambridge, Massachusetts, y Londres. | | 40 | **Farlow, S.J.** (1993). *Partial Differential Equations for Scientists and Engineers*. Dover Publications, Inc., Nueva York. | | 41 | **Dafermos, C.M. & Pokorný, M.** (eds.) (2008). *Handbook of Differential Equations: Ordinary Differential Equations*. Elsevier North Holland, Amsterdam, Londres. | | 42 | **Hogben, L.** (ed.) (2007). *Handbook of Linear Algebra*. Discrete Mathematics and its Applications. Series Editor Kenneth H. Rosen. Chapman & Hall / CRC. | | 43 | **Jordan, D.W. & Smith, P.** (1994). *Nonlinear Ordinary Differential Equations*, 2da Ed. Oxford Applied Mathematics and Computing Science Series. Clarendon Press, Oxford. | | 44 | **Gil, A., Segura, J. & Temme, N.M.** *Numerical Methods for Special Functions*. Society for Industrial and Applied Mathematics, Philadelphia. | | 45 | **Stoll, R.R.** (1963). *Set Theory and Logic*. Dover Publications Inc., Nueva York. | | 46 | **Suppes, P.** (1960). *Axiomatic Set Theory*. D. Van Nostrand Company Inc. | --- # TekRisk PRO Source: https://tekrisk.com/es/docs Plataforma SaaS para Análisis Cuantitativo de Riesgo Industrial ## Qué es TekRisk PRO TekRisk PRO es una plataforma web de análisis cuantitativo de riesgo (QRA) diseñada para ingenieros de seguridad industrial, consultoras ambientales y tomadores de decisiones en la industria química y de oil & gas. La plataforma centraliza en una sola herramienta el modelado de consecuencias, el análisis de riesgo individual y social, y la generación de reportes profesionales — eliminando la necesidad de hojas de cálculo dispersas y software de escritorio especializado. {/* screenshot: hero-dashboard.png */} --- ## Capacidades Principales | Capacidad | Descripción | |-----------|-------------| | **Modelado de Consecuencias** | Modelos de simulación para diferentes fenómenos industriales | | **Riesgo Individual** | Evaluación cuantitativa del riesgo por ubicación geográfica | | **Riesgo Social** | Curva F-N con zonas de aceptabilidad según criterios internacionales | | **Visualización Geoespacial** | Mapas interactivos con zonas de riesgo superpuestas | | **Reportes PDF** | Documentos profesionales listos para entrega a autoridades | | **Multilingüe** | Interfaz completa en español e inglés | | **Base de Datos Química** | Catálogo integrado de sustancias con propiedades fisicoquímicas | --- ## Modelos de Consecuencias TekRisk PRO incluye 6 modelos de simulación que cubren los principales fenómenos de riesgo industrial: | Modelo | Fenómeno | Aplicación Típica | |--------|----------|-------------------| | **BLEVE / Fireball** | Bola de fuego por ruptura catastrófica de recipiente | Tanques presurizados de GLP, gases licuados | | **Pool Fire** | Incendio de charco de líquido inflamable | Derrames de hidrocarburos, solventes, combustibles | | **Jet Fire** | Fuego de chorro presurizado | Fugas en tuberías, válvulas, bridas y conexiones | | **VCE** | Explosión de nube de vapor confinada | Nubes inflamables en áreas confinadas o semiconfinadas | | **Flash Fire** | Ignición de nube inflamable sin sobrepresión | Dispersión de gas inflamable en campo abierto | | **Dispersión Tóxica** | Dispersión atmosférica de gas tóxico (modelo SLAB) | Fugas de cloro, amoniaco, H₂S, ácido fluorhídrico | Cada modelo calcula zonas de afectación con diferentes niveles de daño, permitiendo evaluar el alcance de un escenario accidental y sus efectos sobre personas, equipos y estructuras. {/* screenshot: consequence-models-overview.png */} --- ## Flujo de Trabajo El análisis de riesgo en TekRisk PRO sigue un flujo estructurado de 7 pasos: 1. **Crear proyecto** — Definir ubicación geográfica, datos de la instalación y contexto del estudio 2. **Definir fuentes de riesgo** — Registrar equipos, tuberías o áreas de proceso y asignar sustancias químicas 3. **Configurar escenarios meteorológicos** — Establecer condiciones de viento, temperatura, humedad y clase de estabilidad atmosférica 4. **Ejecutar modelos de consecuencias** — Simular escenarios accidentales y obtener zonas de afectación 5. **Definir receptores** — Ubicar poblaciones, edificios, equipos e infraestructura en el área de influencia 6. **Evaluar riesgo** — Calcular riesgo individual (RI) por ubicación y riesgo social (curva F-N) 7. **Generar reportes** — Producir documentos PDF profesionales con resultados completos {/* diagram: workflow-diagram.png */} --- ## Visualización en Mapa Interactivo TekRisk PRO integra mapas interactivos con múltiples capacidades de visualización geoespacial: - **Múltiples estilos de mapa**: satélite, oscuro, calles y exteriores - **Zonas de riesgo superpuestas**: visualización de las áreas de afectación directamente sobre el mapa - **Rosa de vientos**: pétalos direccionales para escenarios de flash fire según probabilidad de dirección del viento - **Marcadores diferenciados**: fuentes de riesgo, receptores y puntos de ignición con iconografía distintiva - **Herramienta de medición**: medición de distancias directamente sobre el mapa - **Exportación KML**: descarga de datos geoespaciales para uso en Google Earth y sistemas GIS {/* screenshot: map-visualization.png */} --- ## Criterios de Riesgo y Normatividad ### Riesgo Individual TekRisk PRO permite evaluar el riesgo individual contra criterios de aceptabilidad reconocidos internacionalmente: | Criterio | País / Organismo | |----------|-----------------| | **HSE** | Reino Unido — Health and Safety Executive | | **ASEA** | México — Agencia de Seguridad, Energía y Ambiente | | **RIVM** | Países Bajos — Instituto Nacional de Salud Pública | | **HIPAP No. 4** | Australia — Hazardous Industry Planning Advisory Paper | | **Hong Kong** | Hong Kong — Risk Guidelines | | **EPA** | Estados Unidos — Environmental Protection Agency | ### Riesgo Social - Curva F-N con zonas de aceptabilidad: **aceptable**, **ALARP** (tan bajo como sea razonablemente posible) e **inaceptable** - Visualización gráfica de la relación frecuencia-número de fatalidades ### Efectos Probit - Radiación térmica (quemaduras de primer, segundo y tercer grado) - Sobrepresión (daños por onda de choque) - Toxicidad (concentración-tiempo de exposición) - Efecto dominó (daño a equipos adyacentes) {/* screenshot: fn-curve.png */} --- ## Reportes Profesionales TekRisk PRO genera reportes PDF completos listos para entrega a autoridades regulatorias y clientes: - **Datos del escenario**: sustancia química, propiedades fisicoquímicas, condiciones ambientales - **Zonas de riesgo**: tablas y diagramas con distancias de afectación por nivel de daño - **Diagramas por modelo**: representación visual específica para cada tipo de fenómeno (fireball, jet fire, pool fire, VCE, flash fire) - **Tablas de fatalidades**: estimación de víctimas por zona y nivel de efecto - **Reporte de Riesgo Individual**: contornos de riesgo individual y riesgo individual promedio - **Reporte de Riesgo Social**: curva F-N con zonas de aceptabilidad {/* screenshot: pdf-report-sample.png */} --- ## Base de Datos de Sustancias Químicas TekRisk PRO incluye una base de datos integrada con más de 1,300 sustancias químicas y las propiedades necesarias para el modelado de consecuencias: - **Propiedades generales**: peso molecular, punto de ebullición, punto de fusión, punto de inflamación, temperatura de autoignición, densidad - **Propiedades térmicas**: calor de combustión, calor de vaporización, capacidad calorífica (gas y líquido) - **Límites de inflamabilidad**: LFL (límite inferior) y UFL (límite superior) - **Índices de toxicidad**: IDLH, ERPG-1, ERPG-2, ERPG-3 - **Mezclas de hidrocarburos**: soporte para mezclas personalizadas (plan Standard y superior) - **Búsqueda**: por nombre de sustancia o número CAS ## Herramientas rápidas Calculadoras interactivas que usan las mismas funciones que el motor de TekRisk. Cada página de modelo incluye sus propios bloques «Pruébalo» junto a las ecuaciones. --- *TekRisk PRO — Análisis cuantitativo de riesgo industrial.* --- # Riesgo Social y Curva F-N Source: https://tekrisk.com/es/docs/social-risk Documentación técnica para la cuantificación del Riesgo Social, construcción de la Curva F-N, evaluación de criterios ALARP y cálculo de Riesgo Individual en QRA industrial ## 1. Introducción El **Riesgo Social** cuantifica el peligro que representa una instalación industrial para la **colectividad** que reside o trabaja en sus alrededores. A diferencia del Riesgo Individual (que evalúa la probabilidad de que una persona específica fallezca), el Riesgo Social expresa la relación entre la frecuencia de ocurrencia de un accidente y el número de víctimas fatales que podría causar. La herramienta principal para visualizar y evaluar el Riesgo Social es la **Curva F-N** (*curva frecuencia-número*): - **Eje X (N):** Número de fatalidades en un evento - **Eje Y (F):** Frecuencia acumulativa $F(N)$ = frecuencia anual de eventos que causen **al menos N** fatalidades [eventos/año] Ambos ejes usan escala **logarítmica**. Las Curvas F-N son requeridas por los principales estándares de QRA a nivel mundial (UK R2P2, Países Bajos RIVM, México ASEA, Australia HIPAP, Hong Kong HKSAR) para licencias de operación y planificación de uso del suelo. --- ## 2. Conceptos Clave Tasa anual [eventos/año] de ocurrencia del escenario accidental $A_s$ — obtenida de LOPA, árboles de fallo o bases de datos históricas (OREDA, TNO FACTS) Número esperado de muertes dado que $A_s$ ocurre — calculado por los modelos de consecuencias mediante integración en anillos concéntricos con funciones Probit Personas dentro del radio de riesgo — definido por el radio al 1% Probit para modelos térmicos/sobrepresión, o por el área LFL para Flash Fire Probabilidad anual de muerte de una persona promedio en la población expuesta — $RI_g = E[F_a] / N_g$ ### 2.1 Definiciones Formales $$ E[F(A_s)] = \sum_{r_i} P_{muerte}(r_i) \cdot \rho_{pop} \cdot A_{anillo}(r_i) $$ $$ N_g = \pi \cdot r_{1\%}^2 \cdot \rho_{pop} \quad \text{(modelos Probit)} \qquad N_g = A_{LFL} \cdot \rho_{pop} \quad \text{(Flash Fire)} $$ $$ RI_g = \frac{E[F_a]}{N_g}, \quad \text{donde} \quad E[F_a] = \sum_s P(A_s) \cdot E[F(A_s)] $$ --- ## 3. Secuencia de Cálculo {`flowchart TD A["Modelos de Riesgo
(PoolFire, JetFire, VCE, FlashFire, FireBall)
con frecuencia P(As) por escenario"] --> B["Paso 1: Fatalidades del Modelo
FatalityUtils.js
Anillos concéntricos 5m, hasta 10 km
E[F(As)] = Σ Fatal_i"] B --> C["Paso 2: Población Expuesta Ng
ng-calculator.ts
Probit: Ng = π×r₁%²×ρ_pop
Flash Fire: Ng = A_LFL×ρ_pop
Rosa de vientos: Ng = Σ Ng_i×P(dir_i)"] C --> D["Paso 3: Construcción Curva F-N
social-risk-table.tsx
F(N) = Σ fs para todo s donde Ns ≥ N
Función escalón decreciente en log-log"] D --> E["Paso 4: Evaluación Criterios ALARP
fn-curve-analysis.ts
Límite sup: F_lim(N) = C₁/N^|n|
Exceso: ΔF(N) = F(N) − F_obj(N)"] style A fill:#e1f5fe style E fill:#c8e6c9 style D fill:#fff3e0`}
**Fatalidades del modelo** — Para cada escenario, `FatalityUtils.js` integra la probabilidad de muerte en anillos concéntricos de 5 m de espesor (hasta 10 km), calculando $E[F(A_s)] = \sum_i F_i$ con la función Probit correspondiente. **Población expuesta $N_g$** — `ng-calculator.ts` calcula $N_g$ usando el radio al 1% Probit para modelos térmicos/sobrepresión, el área del polígono LFL para Flash Fire, o la suma ponderada de la rosa de vientos para escenarios multi-direccionales. **Construcción de la Curva F-N** — `calculateFnCurve()` recopila todos los pares $(f_s, N_s)$ y calcula $F(N_k) = \sum_{s:\,N_s \geq N_k} f_s$ para cada valor único de $N$, generando una función escalón decreciente en escala log-log. **Evaluación ALARP** — `analyzeUnacceptableScenarios()` compara cada punto de la curva con el límite superior $F_{lim}(N) = C_1/N^{|n|}$, calcula el exceso de frecuencia $\Delta F$ y genera recomendaciones de reducción por escenario. --- ## 4. Cálculo de Fatalidades por Anillos Concéntricos ### 4.1 Geometría de Anillos y Dosis Térmica El área de estudio se divide en anillos concéntricos de 5 m de espesor, desde el punto de emisión hasta el radio máximo (por defecto 10 km): $$ A_{anillo}(r_i) = \pi \left(r_{i+1}^2 - r_i^2\right) \quad [\text{m}^2] $$ La dosis térmica acumulada en cada anillo: $$ D_{dosis} = t_{exp} \cdot \left[q(r_i) \times 10^3\right]^{4/3} \quad \left[(\text{W/m}^2)^{4/3} \cdot \text{s}\right] $$ **Código:** `FatalityUtils.js` → `calculateFatalities()`. ### 4.2 Funciones Probit de Fatalidades **Metodología CCPS (Eisenberg):** $$ Pr = -14.9 + 2.56 \cdot \ln\!\left(\frac{D_{dosis}}{10\,000}\right) $$ *Referencia: CCPS, Guidelines for CPQRA, 2nd Ed., p. 269.* **Metodología TNO:** $$ Pr = -36.38 + 2.56 \cdot \ln(D_{dosis}) $$ *Referencia: TNO Green Book (CPR 14E), 1997, p. 20, ec. 3.5.* **Modelo Eisenberg (CCPS):** $$ Pr = -77.1 + 6.91 \cdot \ln(P_{Pa}) $$ donde $P_{Pa}$ es la sobrepresión máxima en Pascales. **Modelo Hurst (1989):** $$ Pr = 1.47 + 1.35 \cdot \ln(P_{psi}) $$ donde $P_{psi}$ es la sobrepresión en psi. *Referencia: CCPS (1999), p. 273; Hurst, N.W. et al. (1989).* ### 4.3 Conversión Probit → Porcentaje Fatal $$ P_{fatal}\% = 50 \left(1 + \frac{Pr-5}{|Pr-5|} \cdot \text{erf}\!\left(\frac{|Pr-5|}{\sqrt{2}}\right)\right) $$ ### 4.4 Fatalidades por Anillo $$ F_i = \frac{P_{fatal,i}}{100} \cdot \rho_{pop} \cdot A_{anillo}(r_i) $$ El cálculo se detiene cuando $P_{fatal} < 0.1\%$. Si $\sum F_i < 0.6$ el resultado se devuelve como 0 (impacto despreciable). **Código:** `FatalityUtils.js`, líneas 111–200. --- ## 5. Cálculo de la Población Expuesta — $N_g$ ### 5.1 PoolFire, JetFire, VCE, FireBall Se interpola en los resultados del modelo para encontrar el **radio al 1% de probabilidad de muerte** $r_{1\%}$: $$ N_g = \pi \cdot r_{1\%}^2 \cdot \rho_{pop} $$ Interpolación lineal entre los dos anillos adyacentes donde el porcentaje fatal cruza el 1%: $$ r_{1\%} = r_i + \frac{1\% - P_i}{P_{i+1} - P_i} \cdot (r_{i+1} - r_i) $$ **Código:** `ng-calculator.ts` → `calculateNgForProbitModel()`. ### 5.2 Flash Fire Dentro del envolvente LFL, la probabilidad de muerte es **100%** para personas sin protección: $$ N_g = A_{LFL} \cdot \rho_{pop} $$ donde $A_{LFL}$ es el área del polígono de dispersión SLAB a la concentración LFL. **Código:** `ng-calculator.ts` → `calculateNgForFlashFire()`. ### 5.3 Rosa de Vientos con 16 Direcciones Para eventos con dirección de viento incierta se usa el **diagrama de pétalos**: $$ N_g = \sum_{i=1}^{16} N_{g,i} \cdot P_{dir,i} $$ Cada pétalo se trata como sub-escenario independiente en la curva F-N: $$ f_{pétalo,i} = P(A_s) \cdot P_{dir,i} $$ **Código:** `ng-calculator.ts` → `calculateNgForFlashFireWithPetals()`. ### 5.4 Corrección por Receptores Poligonales Cuando existen receptores con población conocida (áreas industriales, hospitales, escuelas): $$ N_g = (A_{circulo} - A_{interseccion}) \cdot \rho_{pop} + N_{receptor} $$ La intersección geométrica se calcula con la librería `@turf/turf`. **Código:** `ng-calculator.ts` → `calculateNgWithReceiverCorrection()`. --- ## 6. Construcción de la Curva F-N ### 6.1 Definición Formal Dado un conjunto de $S$ escenarios accidentales, cada uno con frecuencia $f_s$ [eventos/año] y fatalidades $N_s$ [personas]: $$ \boxed{F(N) = \sum_{s:\; N_s \geq N} f_s} $$ $F(N)$ es la suma de frecuencias de **todos los escenarios que producen al menos $N$ fatalidades**. **Código:** `social-risk-table.tsx` → `calculateFnCurve()`. ### 6.2 Algoritmo de Cálculo Recopilar todos los escenarios con sus pares $(f_s, N_s)$: frecuencia y fatalidades de cada uno Obtener el conjunto único de valores $N$, ordenados de **mayor a menor** Para cada $N_k$: calcular $F(N_k) = \sum f_s$ donde $N_s \geq N_k$ Graficar los pares $(N_k,\, F(N_k))$ como **función escalón decreciente** en ejes log-log La Curva F-N siempre es una **función escalón decreciente**: $F(N) \leq F(N-1)$ para todo $N$, ya que umbrales de fatalidad más altos solo pueden ser superados por menos escenarios. --- ## 7. Zonas de Tolerabilidad y Criterios ALARP ### 7.1 Líneas Límite Las líneas de tolerabilidad son funciones potenciales en el plano log-log: $$ F_{lim}(N) = \frac{C}{N^{|n|}} $$ | Línea | Fórmula | Significado | |-------|---------|-------------| | Límite superior | $F_{sup}(N) = C_1 / N^{\lvert n \rvert}$ | Frontera entre zonas Inaceptable y ALARP | | Límite inferior | $F_{inf}(N) = C_2 / N^{\lvert n \rvert}$ | Frontera entre zonas ALARP y Aceptable | **Código:** `fn-curve-analysis.ts` → `calculateUpperLimit()`; `fn-curve-chartjs.tsx` → `drawLimitLines()`. ### 7.2 Zonas ALARP **ALARP** (*As Low As Reasonably Practicable*) — el riesgo debe reducirse tanto como sea razonablemente practicable. Estar en la zona ALARP no significa que el riesgo sea aceptable; debe demostrarse que reducciones adicionales no son razonablemente factibles. | Zona | Criterio | Acción requerida | |------|----------|-----------------| | **Inaceptable** | $F(N) > F_{sup}(N)$ | Reducción obligatoria del riesgo | | **ALARP** | $F_{inf}(N) < F(N) \leq F_{sup}(N)$ | Reducir a menos que sea desproporcionadamente costoso | | **Aceptable** | $F(N) \leq F_{inf}(N)$ | No se requiere acción adicional | ### 7.3 Criterios por Estándar Internacional | Parámetro | Valor | |-----------|-------| | $C_1$ (superior) | $10^{-2}$ eventos/año | | $C_2$ (inferior) | $10^{-4}$ eventos/año | | Pendiente $n$ | $-1$ | | Referencia | R2P2 (2001) | | Parámetro | Valor | |-----------|-------| | $C_1$ (superior) | $10^{-3}$ eventos/año | | $C_2$ (inferior) | $10^{-5}$ eventos/año | | Pendiente $n$ | $-2$ (aversión a catástrofes) | | Referencia | IPO/RIVM Bevi | | Parámetro | Valor | |-----------|-------| | $C_1$ (superior) | $10^{-3}$ eventos/año | | $C_2$ (inferior) | $10^{-5}$ eventos/año | | Pendiente $n$ | $-1$ | | Referencia | HKSAR (1994) | | Parámetro | Valor | |-----------|-------| | $C_1$ (superior) | $10^{-3}$ eventos/año | | $C_2$ (inferior) | $10^{-5}$ eventos/año | | Pendiente $n$ | $-2$ (aversión a catástrofes) | | Referencia | HIPAP No. 4 (1994) | Los valores $C_1$, $C_2$ y $n$ se configuran en **Configuración del Proyecto → Criterios de Riesgo Social** y se persisten en `project.socialRiskCriteria`. --- ## 8. Análisis de Escenarios Inaceptables Un punto $(N, F(N))$ es **inaceptable** cuando $F(N) > C_1 / N^{|n|}$. **Identificar el punto inaceptable** — Encontrar todos $(N_k, F(N_k))$ donde $F(N_k) > F_{sup}(N_k)$ **Aplicar objetivo ALARP** — Establecer objetivo con 10% de margen de seguridad: $$F_{obj}(N) = F_{sup}(N) \cdot (1 - m), \quad m = 0.10$$ **Calcular exceso de frecuencia**: $$\Delta F(N) = F(N) - F_{obj}(N)$$ **Reducción requerida por escenario** — Para el escenario $s$ contribuyente: $$f_{requerida,s} = f_{actual,s} - \Delta F(N), \quad FR_s = \frac{f_{actual,s}}{f_{requerida,s}}$$ Si $f_{requerida,s} \leq 0$, el escenario no puede resolver el problema solo — se requieren reducciones combinadas. **Código:** `fn-curve-analysis.ts` → `analyzeUnacceptablePoint()`, líneas 60–127. --- ## 9. Riesgo Individual ### 9.1 Cálculo $$ E[F_a] = \sum_{s} P(A_s) \cdot E[F(A_s)], \qquad RI_g = \frac{E[F_a]}{N_g} $$ ### 9.2 Clasificación | Clasificación | Criterio | |---------------|---------| | Aceptable | $RI_g < \text{umbral tolerable}$ | | ALARP | $\text{tolerable} \leq RI_g < \text{intolerable}$ | | Inaceptable | $RI_g \geq \text{umbral intolerable}$ | **Código:** `individual-risk-summary.tsx` → `evaluateRiskStatus()`. ### 9.3 Criterios por País / Norma | Grupo | Intolerable | Tolerable | |-------|------------|----------| | Público | $10^{-4}$/año | $10^{-6}$/año | | Trabajadores | $10^{-3}$/año | $10^{-6}$/año | *Referencia: R2P2 (2001)* | Grupo | Intolerable | Tolerable | |-------|------------|----------| | Público | $10^{-3}$/año | $10^{-6}$/año | *Referencia: Lineamientos ASEA (2016)* | Grupo | Intolerable | Tolerable | |-------|------------|----------| | Público | $10^{-5}$/año | $10^{-8}$/año | *Referencia: RIVM Bevi* | Grupo | Intolerable | Tolerable | |-------|------------|----------| | Público | $10^{-5}$/año | $10^{-6}$/año | *Referencia: HIPAP No. 4 / HKSAR* | Grupo | Intolerable | Tolerable | |-------|------------|----------| | Público | $10^{-4}$/año | $10^{-6}$/año | *Referencia: EPA RMP* **Código:** `individual-risk-presets.ts`. --- ## 10. Modo de Uso en el Sistema **Definir escenarios** — Para cada fuente, crear RiskModels con su tipo de evento (PoolFire, JetFire, FlashFire, VCE, FireBall) y asignarle una frecuencia $P(A_s)$. **Ejecutar cálculo de consecuencias** — Correr el cálculo de cada modelo para obtener `fatalidades.sumaFatalidades` y `fatalidades.resultados`. **Configurar criterios** — En *Configuración del Proyecto → Criterios de Riesgo Social*, seleccionar el estándar internacional o ingresar valores personalizados de $C_1$, $C_2$ y $n$. **Visualizar la Curva F-N** — En la pestaña *Riesgo Social* → subpestaña *Curva F-N*, la tabla calcula automáticamente $N$ y $F(N)$ para cada escenario y los grafica. **Interpretar zonas** — Puntos sobre la línea superior ($F > C_1/N^{|n|}$) son **inaceptables**. El sistema genera recomendaciones automáticas de reducción de frecuencia. **Riesgo Individual** — En la subpestaña *Riesgo Individual*, ingresar $N_g$ o dejar que el sistema lo calcule, y verificar $RI_g$ contra el criterio del país. Para eventos Flash Fire con dirección de viento incierta, activar la **rosa de vientos** en el panel del modelo. El sistema expande el escenario en hasta 16 sub-escenarios — uno por dirección del viento — cada uno con frecuencia efectiva $P(A_s) \times P_{dir,i}$ y su propia $N_{g,i}$. En la curva F-N aparecen como filas separadas: `{nombre_escenario} — {dirección}`. --- ## 11. Aplicaciones de la Curva F-N | Aplicación | Descripción | |-----------|-------------| | **QRA industrial** | Evaluación de riesgo cuantitativo de instalaciones petroquímicas, plantas de proceso y terminales de almacenamiento | | **Planes de uso de suelo** | Determinar zonas de restricción y distancias de seguridad alrededor de instalaciones peligrosas | | **Licencias de operación** | Comparar el riesgo de la instalación contra criterios regulatorios nacionales para obtener permisos | | **Diseño de salvaguardas** | Identificar qué escenarios requieren capas adicionales de protección (SIL, válvulas de seguridad, PLC) | | **Comparación de alternativas** | Evaluar el impacto de diferentes configuraciones de planta, materiales o tecnologías en el perfil de riesgo | | **Comunicación con autoridades** | Presentar resultados del estudio de riesgo de manera estandarizada ante reguladores (ASEA, HSE, INERIS) | | **Seguros industriales** | Cuantificar el PML (*Probable Maximum Loss*) para el cálculo de primas de seguros | | **Planes de emergencia** | Determinar zonas de evacuación basadas en isópletas de concentración/radiación | --- ## 12. Limitaciones del Análisis El cálculo asume que la población se distribuye uniformemente dentro del radio de impacto. Variaciones locales (concentración en edificios, evacuación nocturna) no se modelan, excepto mediante receptores poligonales explícitos. La curva F-N supone que todos los escenarios son independientes entre sí. Escenarios correlacionados (accidente en cadena, efecto dominó) pueden subestimar $F(N)$ para valores altos de $N$. Los modelos PoolFire, JetFire y VCE asumen simetría radial para el cálculo de $N_g$. En la realidad el impacto es asimétrico según la dirección del viento. El uso del radio donde el Probit alcanza el 1% como radio de $N_g$ es una convención conservadora. No se integra la probabilidad de muerte en todo el rango de distancias. La calidad del análisis depende fundamentalmente de la precisión de las frecuencias $P(A_s)$ ingresadas. Frecuencias incorrectas desplazan toda la curva F-N verticalmente. El análisis se limita a instalaciones industriales fijas. No cubre el riesgo de transporte de materiales peligrosos. --- ## 13. Referencias Bibliográficas | # | Referencia | |---|-----------| | 1 | **CCPS** (1999). *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed. AIChE, New York. (pp. 269, 273) | | 2 | **TNO** (1997). *Methods for the Determination of Possible Damage (CPR 16E, "Purple Book")*, 2nd Ed. La Haya. | | 3 | **TNO** (1997). *Methods for the Calculation of Physical Effects (CPR 14E, "Green Book")*, 3rd Ed. La Haya. | | 4 | **UK HSE** (2001). *Reducing Risks, Protecting People (R2P2)*. Health & Safety Executive, Londres. | | 5 | **RIVM / IPO** (2009). *Reference Manual Bevi Risk Assessments*. Version 3.2. Bilthoven. | | 6 | **Lees, F.P.** (2005). *Loss Prevention in the Process Industries*, 3rd Ed. Elsevier, Amsterdam. | | 7 | **HKSAR** (1994). *Risk Guidelines for New Territories East Landfill*. Hong Kong Special Administrative Region. | | 8 | **HIPAP No. 4** (1994). *Risk Criteria for Land Use Safety Planning*. NSW Department of Planning, Australia. | | 9 | **Hurst, N.W., Nussey, C. & Pettitt, G.N.** (1989). *Development and Application of a Risk Assessment Methodology for Gaseous Blast Waves*. IChemE Symposium Series No. 110. | | 10 | **ASEA** (2016). *Lineamientos para la Elaboración del Análisis de Riesgo*. Agencia de Seguridad, Energía y Ambiente, México. | | 12 | **Eisenberg, N.A., Lynch, C.J. & Breeding, R.J.** (1975). *Vulnerability Model*. CG-D-136-75. USCG, Washington. | --- # Memoria de Cálculo General — Guía de Uso Source: https://tekrisk.com/es/docs/guides/general-memory-excel Cómo leer la memoria de cálculo en Excel del riesgo individual promedio bajo el método general CCPS QRA (probit continuo, rosa de vientos). ## 1. ¿Qué es este archivo? Este libro de Excel constituye la **memoria de cálculo detallada** del Riesgo Individual Promedio de la Población Expuesta (IR_av) para proyectos generados con TekRisk bajo el **método general** de contornos de riesgo del CCPS QRA (curva probit continua, con o sin rosa de vientos). **Propósito**: documentar paso a paso, con tablas explícitas y fórmulas vivas, el aporte específico de cada *incident outcome case* al riesgo individual en cada punto (x,y) de interés, las frecuencias iniciales y las probabilidades aplicadas. Está pensado para entregarse a autoridades regulatorias y permite la auditoría por pares. **Público objetivo**: - Autoridad reguladora revisora del análisis de riesgo. - Ingenieros de proceso que validan los cálculos por pares. - Auditores externos que necesitan reproducir el cálculo con sus propios supuestos. **Diferencia con el método simplificado**: en el método simplificado el aporte de un escenario es binario (`SI(distancia ≤ radio; f×factor; 0)`). En el método general el aporte es `f × Pf(distancia)`, donde `Pf` proviene de una **curva probit continua** — interpolación lineal del perfil de fatalidad distancia→% — y, para escenarios con rosa de vientos, de una suma sobre sectores `Σ_θ P(θ)·Pf(d_θ)`. Esta memoria reproduce esa cadena completa con fórmulas vivas. --- ## 2. Estructura del libro El libro contiene **9 hojas** ordenadas secuencialmente. Cada hoja arranca con un bloque introductorio gris que explica su contenido y propósito. Las celdas con fórmula viva se muestran en **azul cursiva**. | # | Hoja | Contenido | |---|---|---| | 1 | **Resumen** | Metadatos del proyecto, método aplicado, criterios IR, población y resultado IR_av. Define los named ranges INTOL_THR_GEN, TOL_THR_GEN, POBLACION_PROYECTO_GEN, DENSIDAD_PROYECTO_GEN. | | 2 | **Escenarios** | Una fila por *incident outcome case*: frecuencia inicial f_i, tipo de agregación, modo de rosa de vientos. Define FREQ_SCENARIOS_GEN. | | 3 | **Perfiles de Fatalidad** | Por cada escenario radial/VCE, la tabla distancia→fatalidad%. Define PERF_DIST_j / PERF_FAT_j. | | 4 | **Rosa de Vientos** | Por cada escenario direccional, los 16 sectores \{θ, P(θ)\}. Define ROSA_DIR_s / ROSA_PROB_s. | | 5 | **Receptores** | Coordenadas (x,y) de interés (receptores del proyecto), con población y densidad. | | 6 | **Aportes por Punto** | Matriz Receptores × Escenarios. Por escenario: Pf (referencia a Hoja 7) y Aporte = f_i × Pf. Columna final IR(x,y) = SUMA(aportes). Define IR_POR_RECEPTOR_GEN. | | 7 | **Desglose Paso a Paso** | El corazón auditable. Por cada par receptor-escenario, las columnas auxiliares de la interpolación del Pf y, para escenarios direccionales, el desglose por los 16 sectores de viento. | | 8 | **IR Promedio** | Por cada receptor, IR(x,y) × P(x,y), más el aporte de la población de fondo. IR_av Eq. 4.4.6 (población expuesta total = receptores + fondo) y Eq. 4.4.7 (población total P_T). Define IR_AV_EXPOSED_GEN / IR_AV_TOTAL_GEN. | | 9 | **Metodología** | Ecuaciones canónicas del método general, la lógica de interpolación, tabla de variables/unidades y referencias bibliográficas. | --- ## 3. Cómo auditar el IR_av paso a paso ### Paso 1 — Hoja 1 (Resumen) 1. Verifique que **Método aplicado** = `General (CCPS QRA — curva probit continua)`. 2. Confirme los **criterios IR** (intolerable / tolerable) y el preset/país aplicable. 3. Observe la **población total P_T** y la **densidad** del proyecto. 4. Las celdas **IR_av total (Población Expuesta)** e **IR_av (Población Total P_T)** referencian los resultados finales desde la Hoja 8. ### Paso 2 — Hojas de insumos (2, 3, 4, 5) - **Hoja 2 (Escenarios)**: cada fila es un *incident outcome case*. La columna **Frecuencia f_i** es el insumo del análisis de frecuencias. El **Tipo de agregación** indica cómo evaluó el motor el escenario (radial, VCE direccional, flash fire con rosa, flash fire CCPS-simplificado, envolvente). - **Hoja 3 (Perfiles de Fatalidad)**: por cada escenario radial/VCE, su tabla distancia→fatalidad%. Es el insumo de las interpolaciones. - **Hoja 4 (Rosa de Vientos)**: por cada escenario direccional, los 16 sectores con su probabilidad P(θ). La fila de verificación confirma Σ P(θ) ≈ 1. - **Hoja 5 (Receptores)**: los puntos (x,y) de interés, con población. Si la geometría no es `Point`, el lat/lon es el centroide. ### Paso 3 — Hoja 7 (Desglose Paso a Paso) — **el corazón de la auditoría** Para cada par receptor-escenario, muestra cómo se obtiene el Pf: - **Escenarios radiales** (térmico, VCE radial): una fila por receptor con las columnas auxiliares de la interpolación lineal del perfil — `idx` (tramo identificado por MATCH), `d1`/`d2` y `f1`/`f2` (puntos que acotan), `fracción`, `Fatalidad %` (fórmula maestra de los 4 casos) y `Pf` = Fatalidad%/100. - **VCE direccional**: un bloque de filas-sector por receptor con `θ`, `P(θ)` (referencia viva a la rosa de la Hoja 4), `d_θ` (distancia representativa del sector), `Pf(d_θ)` (tabulado del motor — en modo envolvente colapsa múltiples muestras por dirección y no es recalculable celda a celda) y `Aporte parcial` = P(θ)·Pf(d_θ). El **subtotal** Σ aportes = Pf del escenario para ese receptor. Si el motor no produjo desglose direccional (típicamente agregación MAX), se tabula `contrib.pf` en una sola fila. - **Flash fire con rosa de vientos**: un bloque de filas-sector con `θ`, `P(θ)`, `inside_θ` (0/1 del ray-cast punto-en-polígono LEL rotado) y `Aporte parcial` = P(θ)·inside_θ. El **subtotal** Σ aportes (clamp a 1) = Pf del escenario. - **Flash fire CCPS-simplificado**: `Pf = SI(d ≤ R; θ/360; 0)`. - **Envolvente VCE (peor caso)**: el Pf es un MÁX sobre los samples del envelope; se tabula el valor del motor (no recalculable celda a celda). ### Paso 4 — Hoja 6 (Aportes por Punto) — **la matriz que pide la autoridad** 1. La **fila de referencia** trae la frecuencia inicial f_i de cada escenario desde la Hoja 2 vía `INDEX(FREQ_SCENARIOS_GEN, #)`. 2. Por cada receptor (fila) y escenario: - **Pf**: referencia viva al Pf calculado en la Hoja 7. - **Aporte**: fórmula viva `= f_i × Pf` (CCPS Eq. 4.4.1). 3. La columna final **IR(x,y) = SUMA(aportes)** es el riesgo individual en el punto. ### Paso 5 — Hoja 8 (IR Promedio) 1. Por cada receptor, **IR(x,y)** se referencia desde la Hoja 6 y se multiplica por **P(x,y)**. 2. El **Subtotal receptores** acumula Σ(IR×P) y Σ(P) de los receptores expuestos (con `SUMIF` sobre IR > 0: un receptor con IR = 0 no está expuesto y no entra al denominador). 3. La sección **Población de fondo** lista las bandas de IR del cálculo de contornos persistido y su **Subtotal fondo** (escalares persistidos — ver Limitaciones). 4. **IR_av total (Población Expuesta)** = (Σ IR·P receptores + Σ IR·P fondo) / (Σ P receptores + Σ P fondo) — CCPS Eq. 4.4.6. Es la **cifra principal**, consistente con el tab de Riesgo Individual de la aplicación. 5. **IR_av (Población Total)** = (Σ IR·P receptores + Σ IR·P fondo) / P_T — CCPS Eq. 4.4.7. 6. La línea **IR_av solo receptores (sin fondo)** se muestra como referencia secundaria. --- ## 4. Cómo hacer un análisis de sensibilidad El libro es completamente recalculable. Edite cualquier insumo y observe la propagación: - **Frecuencia f_i** (Hoja 2, columna E): cambia el aporte de ese escenario en todos los receptores. - **Perfil de fatalidad** (Hoja 3): cambia el Pf interpolado en todos los pares de ese escenario. - **Probabilidad P(θ)** (Hoja 4): cambia el aporte parcial de ese sector en el desglose direccional. - **Población P(x,y)** (Hoja 8, columna D): cambia el IR_av sin afectar el IR(x,y). La cadena de fórmulas vivas propaga el cambio: Hojas 3-4 → Hoja 7 → Hoja 6 → Hoja 8 → Hoja 1. > El libro se genera con `fullCalcOnLoad`: Excel recalcula todo al abrirlo. Si su lector no recalcula automáticamente, presione `Ctrl+Alt+F9`. --- ## 5. Glosario | Símbolo | Significado | Unidad | |---|---|---| | IR(x,y) | Riesgo individual en el punto (x,y) | año⁻¹ | | IR_av | Riesgo individual promedio | año⁻¹ | | f_i | Frecuencia inicial del escenario i | año⁻¹ | | Pf | Probabilidad de fatalidad del escenario en el punto | — | | P(θ) | Probabilidad de que el viento sople desde θ (rosa de vientos) | — | | Pf(d_θ) | Probabilidad de fatalidad a la distancia d_θ para la dirección θ | — | | d_θ | Distancia del receptor a la zona de efecto para la dirección θ | m | | θ | Dirección del viento / ángulo del polígono LEL | ° | | P(x,y) | Personas en el punto (x,y) | personas | | P_T | Población total predeterminada del proyecto | personas | --- ## 6. Referencias - CCPS, *Guidelines for Chemical Process Quantitative Risk Analysis*, 2ª Ed., AIChE/CCPS, 2000. Capítulo 4 §4.4: Effect Models; Eq. 4.4.4 factor direccional simplificado; Eq. 4.4.6 / 4.4.7 IR_av. - CCPS, *Guidelines for Evaluating the Characteristics of Vapor Cloud Explosions, Flash Fires, and BLEVEs*, AIChE, 1994. - TNO, *Methods for the Determination of Possible Damage* (Green / Yellow / Purple Book), Voorburg, 2005. - Lees, *Loss Prevention in the Process Industries*, 4ª Ed.; Eisenberg 1975; Hurst RISKAT 1989. - Norma técnica aplicable (e.g. NTE-002-CGPC) según la jurisdicción del proyecto. --- ## 7. Discrepancias con cálculos previos (auditoría) Si al comparar la columna **IR_xy** de un receptor entre el **PDF "Exportar PDF" (IR Average)** y esta **Memoria de Cálculo Excel** los valores no coinciden, el origen casi siempre es el siguiente: - El PDF lee el `IR_xy` del **último snapshot persistido** que se generó cuando se presionó "Calcular IR Contour" por última vez. Versiones anteriores del motor (pre-2026-05-14) evaluaban ese `IR_xy` localizando la **celda del grid de contornos más cercana** al receptor — una aproximación con error de proximidad (resolución típica del grid: 50 m) que además usaba la **rosa interpolada a 72 direcciones** (suavizado visual del mapa). - Esta Memoria de Cálculo Excel **siempre reconstruye** el `IR_xy` al vuelo con el motor actual: `IR_xy = Σ_j (f_j × Pf_j)` evaluado en la **coordenada exacta** del receptor con la **rosa real de 16 sectores**. Es el valor que parametriza el modelo probabilístico CCPS. **Qué hacer si el auditor pregunta**: 1. **El valor defendible es el del Excel.** Es el resultado del motor probabilístico parametrizado por la rosa de vientos real de 16 sectores, evaluado en el punto exacto del receptor. La Hoja 7 muestra paso a paso cómo se obtiene ese `Pf` (perfil distancia-fatalidad o suma direccional `Σ_θ P(θ)·Pf(d_θ)`) y la Hoja 6 muestra `Aporte = f_i × Pf`. 2. **El PDF queda alineado tras recalcular.** Presione "Calcular IR Contour" una vez con la versión actual del software. El snapshot persistido se actualiza usando el mismo motor que la Memoria Excel y los `IR_xy` por receptor pasan a coincidir byte-idénticamente. La aplicación muestra un banner amarillo en la vista "Resumen" cuando detecta que el snapshot proviene de un motor anterior. 3. **El RI total puede coincidir incluso con `IR_xy` desfasados**, porque las divergencias receptor-a-receptor se compensan parcialmente al sumar ponderado por población. Esto es esperable y no indica un error de cálculo en ninguno de los dos paths. A partir de la versión `ir-xy-point-evaluation-v1` del motor, el campo `metadata.engineVersion` se sella en el snapshot persistido y la UI detecta automáticamente cuando un proyecto fue calculado con una versión anterior, para invitar al usuario a recalcular antes de exportar. --- ## 8. Limitaciones y supuestos 1. **Rosa de 16 sectores**: la memoria evalúa con la rosa de vientos real de 16 sectores. El IR(x,y) por receptor de esta memoria es byte-idéntico al de la tabla de desglose del tab de Riesgo Individual de la aplicación (ambos usan el mismo motor de evaluación puntual). El **mapa de contornos** usa una rosa interpolada a 72 sectores como suavizado visual: puede haber una diferencia residual menor entre el IR(x,y) de esta memoria y el contorno que pasa por ese punto — ese residual es el artefacto del suavizado, no una brecha de riesgo real. 2. **Recálculo desde los modelos actuales**: la memoria se reconstruye desde los modelos de riesgo actuales del proyecto al momento de la exportación. Si los modelos se editan después de calcular los contornos, la memoria y el mapa pueden divergir. La fecha de exportación se registra en la Hoja 1. 3. **Población de fondo**: el aporte de fondo (densidad × área fuera de los receptores) proviene de la integración sobre el grid de contornos persistido y **sí entra** al IR_av total de la Hoja 8. Sus valores (subtotal de población y de IR·P) son escalares persistidos del cálculo de contornos: no son recalculables celda a celda en esta hoja porque la integración angular usó la rosa interpolada del grid. La parte de receptores del IR_av sí es fórmula viva y recalculable. 4. **Probit aguas arriba**: el método general no evalúa una función probit con `erf` en el motor de IR. El perfil de fatalidad distancia→% ya tiene la probit aplicada (al calcular las fatalidades del modelo de riesgo). Esta memoria interpola ese perfil — la trazabilidad documentada parte del perfil de fatalidad. 5. **Envolvente VCE**: para escenarios VCE en modo envolvente (peor caso), el Pf es un MÁX sobre los samples del envelope y se tabula el valor del motor sin desglose celda a celda. 6. **Requiere Excel con soporte de funciones estándar** (`INDEX`, `MATCH`, `IF`, `SUM`). No usa funciones de versiones recientes — es compatible con cualquier versión moderna de Excel y con LibreOffice Calc. --- # Memoria de Cálculo Simplificada — Guía de Uso Source: https://tekrisk.com/es/docs/guides/strict-memory-excel Cómo leer la memoria de cálculo en Excel del riesgo individual promedio bajo el método simplificado CCPS-4-3. ## 1. ¿Qué es este archivo? Este libro de Excel constituye la **memoria de cálculo detallada** del Riesgo Individual Promedio de la Población Expuesta (IR_av) para proyectos generados con TekRisk bajo el método simplificado del CCPS-4-3 §4.4.1.3. **Propósito**: documentar paso a paso, con tablas explícitas y fórmulas vivas, el aporte específico de cada *incident outcome case* al riesgo individual en cada punto (x,y) de interés, las frecuencias iniciales y las probabilidades aplicadas. Está pensado para entregarse a autoridades regulatorias (ej. ASEA en México, HSE en UK, RIVM en Países Bajos) y permite auditoría por pares. **Público objetivo**: - Autoridad reguladora revisora. - Ingenieros de proceso que validan los cálculos por pares. - Auditores externos que necesitan reproducir el cálculo con sus propios supuestos. --- ## 2. Estructura del libro El libro contiene **7 hojas** ordenadas secuencialmente. Cada hoja arranca con un bloque introductorio gris que explica su contenido y propósito. | # | Hoja | Contenido | |---|---|---| | 1 | **Resumen** | Metadatos del proyecto, método aplicado, umbral, criterios IR, población y resultado IR_av. Define los named ranges THRESHOLD_PCT, INTOL_THR, TOL_THR, POBLACION_PROYECTO, DENSIDAD_PROYECTO. | | 2 | **Escenarios** | Una fila por cada *incident outcome case*: frecuencia inicial f_i, radio analítico r_i, factor direccional, contribución potencial IR. | | 3 | **Receptores** | Coordenadas (x,y) de interés (receptores definidos en el proyecto), con población y densidad. | | 4 | **Aportes por Punto** | Matriz Receptores × Escenarios. Cada celda con fórmula viva `=SI(distancia ≤ radio; contribución; 0)`. Columna final IR(x,y) = SUMA(aportes). | | 5 | **IR Promedio** | Por cada receptor, IR(x,y) × P(x,y). IR_av Eq. 4.4.6 (población expuesta) y Eq. 4.4.7 (población total). | | 6 | **Niveles de Contorno** | Aplicación de CCPS Eq. 4.4.5 (suma cumulativa por cluster) — niveles iso-contorno reales del mapa. | | 7 | **Metodología** | Ecuaciones canónicas, tabla de variables/unidades y referencias bibliográficas. | --- ## 3. Cómo auditar el IR_av paso a paso ### Paso 1 — Hoja 1 (Resumen) 1. Verifique que **Método aplicado** = `Simplificado (CCPS-4-3 §4.4.1.3)`. 2. Anote el **Umbral de fatalidad** (% de fatalidad probit que define el discriminador binario). 3. Confirme los **criterios IR** (intolerable / tolerable) y el preset/país aplicable. 4. Observe la **población total P_T** y la **densidad** del proyecto. 5. La celda **IR_av Exposed Population** referencia el resultado final desde la Hoja 5. ### Paso 2 — Hoja 2 (Escenarios) 1. Cada fila es un escenario (incident outcome case): combinación de fuente + modelo de riesgo + método. 2. **Columna E (Frecuencia f_i)**: frecuencia inicial en eventos/año, ingresada por el ingeniero. 3. **Columna G (Radio r_i)**: distancia precalculada por el motor donde la probabilidad de fatalidad cruza el umbral del paso 1. 4. **Columna H (Factor direccional)**: `1` para modelos térmicos / VCE radial; `θ/360` para Flash Fire (CCPS Eq. 4.4.4). 5. **Columna J (Contribución IR)**: fórmula viva `=E×I = f_i × factor`. Es lo que aportará al IR de cualquier punto que caiga dentro del círculo. 6. **Columna L (Notas)**: indica casos especiales como "fuente dentro polígono LEL → θ=360°". ### Paso 3 — Hoja 3 (Receptores) 1. Cada fila es un punto (x,y) de interés con su nombre, tipo, lat/lon y población. 2. Si **Geometría** ≠ `Point`, el lat/lon es el centroide de la geometría original (LineString/Polygon) — la columna Notas lo indica. ### Paso 4 — Hoja 4 (Aportes por Punto) — **la hoja clave para la autoridad** 1. La fila *Referencia* (fila 6 aprox.) trae los **radios** y **contribuciones potenciales** desde la Hoja 2 vía `INDEX(RADIOS_SCENARIOS, #)` e `INDEX(CONTRIBUCIONES_SCENARIOS, #)`. 2. Por cada receptor (fila): - **Distancia (precalculada)**: haversine entre el receptor y el centro del círculo del escenario. - **Aporte (fórmula viva)**: `=SI(distancia ≤ radio; contribución; 0)`. Si el receptor cae dentro del círculo, el aporte es la contribución; si no, 0. 3. La columna final **IR(x,y)** suma los aportes individuales: `=SUMA(aportes en la fila)`. Esta es la ecuación CCPS Eq. 4.4.1 en su forma binaria. **Cómo verificar manualmente un punto**: - Calcule a mano la distancia desde el receptor a la fuente del escenario. - Compare con el radio r_i de la Hoja 2. - Si distancia ≤ r_i → el aporte debe ser f_i × factor_direccional. - Sume todos los aportes ≠ 0 → debe coincidir con la columna IR(x,y). ### Paso 5 — Hoja 5 (IR Promedio) 1. Por cada receptor: `IR(x,y)` se referencia desde la Hoja 4 (`INDEX(IR_POR_RECEPTOR, #)`). 2. `IR × P` es fórmula viva. 3. Si hay **población de fondo** (densidad × área por banda fuera de receptores), aparece un bloque adicional debajo. 4. Fila **TOTAL**: `Σ(P)` y `Σ(IR×P)` con fórmulas SUMA. 5. **IR_av (Eq. 4.4.6)** = `Σ(IR×P) / Σ(P)` — riesgo individual promedio de la población expuesta. 6. **IR_av (Eq. 4.4.7)** = `Σ(IR×P) / P_T` — riesgo individual promedio sobre la población total del proyecto. ### Paso 6 — Hoja 6 (Niveles de Contorno) 1. Para cada cluster de discos concéntricos (escenarios en la misma fuente), los discos se ordenan por radio descendente. 2. La columna **Cumulativa IR** aplica CCPS Eq. 4.4.5: `F = F_anterior + E_actual` (suma cumulativa). 3. Cada cumulativa corresponde a un nivel real del iso-contorno dibujado en el mapa. 4. El último valor de cada cluster (negrita roja) = máximo IR del cluster. ### Paso 7 — Hoja 7 (Metodología) 1. Tabla de ecuaciones canónicas con su forma matemática y descripción. 2. Tabla de variables con unidades en SI. 3. Lista de referencias bibliográficas (CCPS QRA 2nd Ed., NTE-002, etc.). --- ## 4. Cómo hacer un análisis de sensibilidad El libro contiene fórmulas vivas que se recalculan automáticamente al abrirlo. Para auditar sensibilidades: - **Cambiar el umbral de fatalidad**: modifique la celda **THRESHOLD_PCT** en Hoja 1. Esto solo afecta el etiquetado; los radios r_i son precalculados por el motor para el umbral fijado en el momento del cálculo. Para reflejar un nuevo umbral debe regenerar el Excel desde la aplicación. - **Cambiar una frecuencia inicial**: modifique la celda E correspondiente en **Hoja 2**. La contribución (Columna J) y el IR(x,y) de cada receptor (Hoja 4) se recalculan al instante. - **Cambiar el factor direccional**: modifique la columna H en **Hoja 2**. Útil para evaluar escenarios donde θ es incierto en FF. - **Cambiar la población de un receptor**: modifique la columna D en **Hoja 5**. Σ(P) y IR_av se recalculan. - **Cambiar los criterios de tolerabilidad**: modifique INTOL_THR / TOL_THR en **Hoja 1**. La banda en Hoja 5 cambia de categoría. > **Nota**: el libro tiene `fullCalcOnLoad = true`, así que Excel recalcula todas las fórmulas al abrirlo. Si las celdas aparecen en blanco, presione **F9** para forzar el recálculo. --- ## 5. Glosario | Símbolo | Significado | Unidad | |---|---|---| | **IR(x,y)** | Riesgo individual en la ubicación (x,y) | yr⁻¹ | | **IR_av** | Riesgo individual promedio (por población) | yr⁻¹ | | **Pf** | Probabilidad de fatalidad (0–1). En el método simplificado: 0 ó 1. | — | | **f_i** | Frecuencia inicial del escenario i (eventos/año) | yr⁻¹ | | **P(x,y)** | Personas en la ubicación (x,y) | personas | | **P_T** | Población total predeterminada del proyecto | personas | | **r_i** | Radio analítico donde Pf cruza el umbral | m | | **θ** | Ángulo encerrado por el polígono LEL desde la fuente | grados | | **θ/360** | Factor direccional de Flash Fire (CCPS Eq. 4.4.4) | — | | **Cluster** | Grupo de escenarios concéntricos en la misma fuente | — | | **Círculo analítico** | Aproximación circular del escenario en el método simplificado | — | | **Banda de tolerabilidad** | Intolerable / ALARP / Aceptable según criterios | — | --- ## 6. Referencias - CCPS, *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed., AIChE/CCPS, 2000. Capítulo 4 §4.4.1.3. - CCPS QRA 2nd Ed., Ecuaciones 4.4.1, 4.4.4, 4.4.5, 4.4.6, 4.4.7. - Norma técnica aplicable según jurisdicción del proyecto (ej. NTE-002, ASEA Guidelines). --- ## 7. Limitaciones y supuestos 1. **Discriminador binario**: en el método simplificado, `Pf = 1` si la fatalidad probit ≥ umbral, sino `Pf = 0`. No se usa la curva probit continua del método general. 2. **Flash Fire simplificado**: para escenarios FF, el motor fuerza CCPS Eq. 4.4.4 (zona circular de radio R con factor θ/360), independiente de la rosa de vientos del modelo individual. 3. **VCE direccional**: para escenarios VCE con dispersión SLAB, el motor colapsa el envolvente direccional a un círculo worst-case centrado en la fuente. 4. **Receptores con geometría compleja**: para LineString/Polygon se usa el centroide como punto de evaluación. Esto puede subestimar el IR para receptores extendidos cerca del borde del círculo. 5. **Fuente dentro de polígono LEL**: si la fuente cae dentro del polígono LEL en FF, θ se satura a 360° (factor direccional = 1). 6. **Población de fondo**: cuando se usa la densidad poblacional, el cálculo asume distribución uniforme de personas dentro de la banda. Esto puede no reflejar concentraciones reales (zonas urbanas vs rurales). 7. **Recálculo del Excel**: las fórmulas vivas se recalculan automáticamente al abrir el archivo en Excel/LibreOffice. Si el archivo se abre en visores que no evalúan fórmulas, los valores cacheados muestran el resultado original. --- *Generado por TekRisk — Memoria de Cálculo del Método Simplificado (CCPS-4-3 §4.4.1.3).* --- # Riesgo Individual Promedio: Poblacion Expuesta y Total Source: https://tekrisk.com/es/docs/individual-risk/ir-average Metodologia de calculo del Riesgo Individual Promedio (IR_av) usando las Ecuaciones 4.4.6 y 4.4.7 del CCPS — ponderacion por poblacion expuesta, promedio por poblacion total y clasificacion ALARP ## 1. Proposito Este documento describe la metodologia completa de calculo del **Riesgo Individual Promedio ($IR_{av}$)** implementada en TekRisk. Cubre: Como se calcula el riesgo individual $IR(x,y)$ en cada punto geografico Como se estima la poblacion expuesta dentro de los contornos de riesgo Como se calculan las dos metricas $IR_{av}$ y que representan Como se clasifica el resultado contra criterios de tolerancia internacionales CCPS (Center for Chemical Process Safety), *Guidelines for Chemical Process Quantitative Risk Analysis*, 2da Edicion. - **Ecuacion 4.4.6** — Riesgo Individual Promedio (Poblacion Expuesta) - **Ecuacion 4.4.7** — Riesgo Individual Promedio (Poblacion Total) --- ## 2. Conceptos Clave Riesgo individual en la ubicacion geografica $(x,y)$. Probabilidad por ano de que una persona ubicada permanentemente en ese punto fallezca como consecuencia de un accidente industrial. Unidad: $\text{yr}^{-1}$ ($\text{ano}^{-1}$). Riesgo individual promedio. Promedio ponderado por poblacion de $IR(x,y)$ sobre todas las ubicaciones donde hay personas presentes. Poblacion total predeterminada para promedio de riesgo. Puede incluir personas fuera de los contornos de riesgo. As Low As Reasonably Practicable (Tan Bajo Como Sea Razonablemente Practicable). Zona entre los umbrales de riesgo tolerable e intolerable. | Termino | Definicion | |---------|-----------| | $f_i$ | Frecuencia anual del escenario de accidente $i$. Unidad: eventos/ano. | | $P_{f,i}(x,y)$ | Probabilidad de fatalidad en la ubicacion $(x,y)$ dado que ocurre el escenario $i$. Rango: 0 a 1. | | $P_{xy}$ | Numero de personas en la ubicacion $(x,y)$. Proviene de receptores o densidad de fondo. | | Nivel de contorno | Un valor especifico de IR (ej: $10^{-5}\ \text{yr}^{-1}$). La linea de contorno encierra todas las ubicaciones donde $IR \geq$ ese valor. | --- ## 3. Cadena de Calculo La secuencia completa de calculo es la siguiente: **Definir escenarios de accidente** — ubicacion de la fuente, frecuencia, modelo de consecuencias **Calcular $IR(x,y)$** en cada punto de una grilla geografica: $$IR(x,y) = \sum_{i} f_i \times P_{f,i}(x,y)$$ **Extraer poligonos de contorno** de la grilla (lineas de igual riesgo individual) **Asignar poblacion** a las celdas de la grilla (receptores + densidad de fondo) **Calcular $IR_{av}$ (Poblacion Expuesta)** — Ec. 4.4.6: $$IR_{av} = \frac{\sum(IR_{xy} \times P_{xy})}{\sum(P_{xy})}$$ **Calcular $IR_{av}$ (Poblacion Total)** — Ec. 4.4.7: $$IR_{av} = \frac{\sum(IR_{xy} \times P_{xy})}{P_T}$$ **Clasificar el resultado** contra criterios de tolerancia (Aceptable / ALARP / Intolerable) --- ## 4. Escenarios de Accidente Cada escenario representa un accidente especifico que podria ocurrir en una fuente industrial. Se requieren los siguientes datos: | Parametro | Descripcion | Ejemplo | |-----------|-------------|---------| | Coordenadas de la fuente | Ubicacion geografica (latitud, longitud) | 19.4326 N, -99.1332 W | | Frecuencia ($f_i$) | Con que frecuencia se espera que ocurra este accidente | $1.5 \times 10^{-4}$ eventos/ano | | Tipo de modelo | Tipo de modelo de consecuencias | Incendio de charco, dardo de fuego, VCE, flash fire, bola de fuego | | Perfil de fatalidad | Distancia vs. probabilidad de fatalidad | Ver Seccion 4.1 | ### 4.1 Perfil de Fatalidad Para **modelos termicos** (bola de fuego, incendio de charco, dardo de fuego) y **explosiones** (VCE), el perfil de fatalidad es una tabla de distancia radial vs. probabilidad de fatalidad: | Distancia (m) | Fatalidad (%) | |:---:|:---:| | 50 | 100 | | 100 | 80 | | 200 | 40 | | 300 | 10 | | 400 | 0 | Este perfil se deriva de ecuaciones probit aplicadas a los resultados de radiacion termica o sobrepresion de cada escenario. Para flash fire (incendio de nube), la zona de peligro es un poligono geografico (el limite de la nube LEL — Limite Inferior de Explosividad). Cualquier persona dentro de la nube al momento de la ignicion tiene probabilidad de fatalidad del 100%. La direccion del viento determina la orientacion de la nube. --- ## 5. Riesgo Individual en Cada Punto: IR(x,y) ### 5.1 Formula $$ IR(x,y) = \sum_{i=1}^{n} f_i \times P_{f,i}(x,y) $$ Donde: - $n$ = numero de escenarios de accidente - $f_i$ = frecuencia del escenario $i$ ($\text{yr}^{-1}$) - $P_{f,i}(x,y)$ = probabilidad de fatalidad en $(x,y)$ para el escenario $i$ Esto significa: **sumar las contribuciones de riesgo de todos los escenarios** en cada punto. ### 5.2 Grilla de Calculo El calculo se realiza sobre una grilla rectangular uniforme: | Parametro | Descripcion | Valor tipico | |-----------|-------------|--------------| | Centro | Centroide de todas las fuentes | Automatico | | Resolucion | Distancia entre puntos de grilla | 25 metros | | Extension | Mitad del ancho de la grilla desde el centro | 500 a 6,000 metros (automatico) | **Ejemplo de tamano:** Resolucion = 25 m, extension = 2,500 m produce 201 $\times$ 201 = 40,401 puntos de calculo. ### 5.3 Probabilidad de Fatalidad: Modelos Termicos y Explosiones Para un punto de grilla a distancia $d$ de la fuente: **Calcular distancia:** $d = \sqrt{(x - x_{\text{fuente}})^2 + (y - y_{\text{fuente}})^2}$ **Interpolar el perfil de fatalidad:** - Si $d \leq$ distancia minima del perfil: $P_f = $ primer valor / 100 - Si $d \geq$ distancia maxima del perfil: $P_f = 0$ - De lo contrario: interpolacion lineal entre los dos puntos mas cercanos **Contribucion al IR:** $f_i \times P_f$ ### 5.4 Probabilidad de Fatalidad: Flash Fire (Direccional) El flash fire depende de la direccion del viento. El poligono LEL se rota a cada direccion posible: $$ P_{f,\text{ff}}(x,y) = \sum_{\theta} P(\text{viento} = \theta) \times \mathbb{1}\{(x,y) \in \text{LEL}_{\theta}\} $$ Donde: - $\theta$ = direccion del viento (16 direcciones de la rosa de vientos: N, NNE, NE, ..., NNW) - $P(\text{viento} = \theta)$ = probabilidad de que el viento sople DESDE la direccion $\theta$ - $\mathbb{1}()$ = 1 si el punto esta dentro del poligono LEL rotado, 0 en caso contrario Las 16 direcciones de la rosa de vientos se interpolan a 72 direcciones (cada 5 grados) usando una spline circular Catmull-Rom. Esto produce contornos suaves en lugar de artefactos discretos tipo "petalo". ### 5.5 Combinacion de Todos los Escenarios En cada punto de la grilla, las contribuciones de IR de TODOS los escenarios se suman: $$ IR(x_i, y_j) = \sum_{k=1}^{n} f_k \times P_{f,k}(x_i, y_j) $$ --- ## 6. Extraccion de Contornos ### 6.1 Niveles de Contorno | Nivel ($\text{yr}^{-1}$) | Significado | |--------------------------|-------------| | $10^{-2}$ | 1 en 100 por ano | | $10^{-3}$ | 1 en 1,000 por ano | | $10^{-4}$ | 1 en 10,000 por ano | | $10^{-5}$ | 1 en 100,000 por ano | | $10^{-6}$ | 1 en 1,000,000 por ano | | $10^{-7}$ | 1 en 10,000,000 por ano | | $10^{-8}$ | 1 en 100,000,000 por ano | ### 6.2 Metodo de Extraccion Los poligonos de contorno se extraen usando el algoritmo **marching squares**: Para cada nivel, clasificar cada celda de la grilla como por encima o por debajo Interpolar los puntos exactos de cruce en los bordes de las celdas Conectar todos los puntos de cruce en poligonos cerrados Convertir a coordenadas geograficas ### 6.3 Calculo de Area El area encerrada por cada contorno se calcula con la **formula del cordon** (shoelace) aplicada a los vertices del poligono. Resultados en $\text{m}^2$ y hectareas. --- ## 7. Asignacion de Poblacion La poblacion se asigna a cada celda de la grilla desde tres fuentes, en orden de prioridad: **Receptores poligono** (ej: zonas residenciales, campus escolares): $$ P_{\text{celda}} = P_{\text{receptor}} \times \frac{A_{\text{celda}}}{A_{\text{receptor}}} $$ La poblacion del receptor se distribuye uniformemente sobre su area geografica. **Receptores punto** (ej: un hospital, un edificio especifico): $$ P_{\text{celda}} = P_{\text{receptor}} $$ Toda la poblacion se asigna a la celda de grilla mas cercana. Para todas las celdas NO asignadas a ningun receptor, y donde $IR > 0$: $$ P_{\text{celda}} = \rho \times A_{\text{celda}} $$ **Conversion de densidad:** | Unidad de entrada | Conversion a p/m² | |-------------------|---------------------| | p/km² | $\rho / 1{,}000{,}000$ | | p/ha | $\rho / 10{,}000$ | | p/m² | sin conversion | **Ejemplo:** densidad = 100 p/km², celda = 25 $\times$ 25 m = 625 m² $$ P_{\text{celda}} = \frac{100}{1{,}000{,}000} \times 625 = 0.0625 \text{ personas por celda} $$ --- ## 8. IR_av: Poblacion Expuesta (Ec. 4.4.6) ### 8.1 Formula $$ IR_{av}^{(\text{exp})} = \frac{\sum(IR_{xy} \times P_{xy})}{\sum(P_{xy})} \qquad \text{(CCPS Ec. 4.4.6)} $$ | Variable | Descripcion | |----------|-------------| | $IR_{xy}$ | Riesgo individual en la ubicacion $(x,y)$ — valor real de la grilla ($\text{yr}^{-1}$) | | $P_{xy}$ | Numero de personas en la ubicacion $(x,y)$ | | $\sum(P_{xy})$ | Poblacion expuesta total — solo personas dentro de los contornos de riesgo | ### 8.2 Significado Esta metrica responde: **"Cual es el riesgo anual promedio de fatalidad para una persona de la poblacion expuesta?"** La "poblacion expuesta" incluye solamente a las personas que estan dentro de los contornos de riesgo, es decir, personas que enfrentan algun nivel de riesgo no nulo de la instalacion. ### 8.3 Procedimiento de Calculo ``` riesgoPonderadoTotal = 0 (numerador) poblacionTotal = 0 (denominador) Para cada celda de grilla (i, j) donde IR > 0: IR_celda = valor de la grilla en (i, j) Determinar P_celda: - Si la celda esta dentro de un receptor poligono: poblacion proporcional - Si la celda corresponde a un receptor punto: poblacion del receptor - Si la densidad del proyecto > 0: densidad × area_celda - De lo contrario: omitir (no hay personas en esta ubicacion) Si P_celda > 0: riesgoPonderadoTotal += IR_celda × P_celda poblacionTotal += P_celda IR_av(expuesta) = riesgoPonderadoTotal / poblacionTotal ``` Si `poblacionTotal = 0`, el resultado es nulo (no se encontro poblacion expuesta). ### 8.4 Desglose para Auditoria Para trazabilidad, cada celda de la grilla se clasifica en una banda de contorno: | Banda | Nivel de Riesgo | |-------|----------------| | $\geq 10^{-2}$ | Mas interna, mayor riesgo | | $10^{-3}$ a $10^{-2}$ | | | $10^{-4}$ a $10^{-3}$ | | | $10^{-5}$ a $10^{-4}$ | | | $10^{-6}$ a $10^{-5}$ | | | $10^{-7}$ a $10^{-6}$ | | | $10^{-8}$ a $10^{-7}$ | Mas externa, menor riesgo | Para cada banda, el reporte muestra: - Numero de celdas de grilla - Area ($\text{m}^2$) - Poblacion - IR representativo (promedio ponderado de valores reales de grilla en esa banda) - Contribucion al riesgo ponderado ($IR \times P$) - Porcentaje de contribucion al total Este desglose esta disponible tanto en la interfaz de la aplicacion como en el reporte PDF. --- ## 9. IR_av: Poblacion Total (Ec. 4.4.7) ### 9.1 Formula $$ IR_{av}^{(\text{tot})} = \frac{\sum(IR_{xy} \times P_{xy})}{P_T} \qquad \text{(CCPS Ec. 4.4.7)} $$ | Variable | Descripcion | |----------|-------------| | $\sum(IR_{xy} \times P_{xy})$ | Mismo numerador que Ec. 4.4.6 — calculo identico | | $P_T$ | Poblacion total predeterminada — ingresada por el usuario | ### 9.2 Significado Esta metrica responde: **"Cual es el riesgo anual promedio de fatalidad considerando toda la poblacion circundante, incluyendo aquellos que no enfrentan ningun riesgo?"** $P_T$ es la poblacion total de interes. Por ejemplo: - La poblacion del pueblo que rodea la planta - Todos los trabajadores dentro de un complejo industrial - La poblacion dentro de un radio definido desde la instalacion ### 9.3 Diferencia Clave con la Ec. 4.4.6 | Aspecto | Poblacion Expuesta (Ec. 4.4.6) | Poblacion Total (Ec. 4.4.7) | |---------|--------------------------------|------------------------------| | **Numerador** | $\sum(IR_{xy} \times P_{xy})$ | $\sum(IR_{xy} \times P_{xy})$ — **identico** | | **Denominador** | $\sum(P_{xy})$ — solo expuestos | $P_T$ — todas las personas, incluyendo no expuestas | | **Que incluye** | Solo personas dentro de contornos | Todas las personas, aun con riesgo cero | | **Resultado tipico** | Valor mas alto | Valor mas bajo | | **Cuando usar** | Metrica principal para evaluacion | Cuando la regulacion requiere base de poblacion total | ### 9.4 Calculo Como el numerador ya esta calculado en el Paso 5: $$ IR_{av}^{(\text{tot})} = \frac{\text{riesgoPonderadoTotal}}{P_T} $$ Donde $P_T$ se ingresa directamente en la pestana de IR Promedio de la aplicacion. ### 9.5 Advertencia del CCPS *"Esta medida de riesgo individual debe usarse con precaucion. El riesgo individual promedio puede parecer muy bajo al incluir un gran numero de personas que incurren en poco o ningun riesgo en la poblacion predeterminada."* — CCPS QRA 2da Ed., Seccion 4.4, p. 418 Una instalacion cerca de una ciudad grande mostrara un $IR_{av}^{(\text{tot})}$ muy bajo simplemente porque el denominador es grande. Esto **no** significa que el riesgo sea bajo para las personas cerca de la instalacion. Siempre interprete la Ec. 4.4.7 junto con la Ec. 4.4.6. --- ## 10. Clasificacion del Nivel de Riesgo ### 10.1 Marco ALARP | Zona | Condicion | Accion Requerida | |------|-----------|-----------------| | **Intolerable** | $IR_{av} \geq$ umbral intolerable | El riesgo es inaceptable. Reduccion obligatoria sin importar el costo. | | **ALARP** | tolerable $\leq IR_{av} <$ intolerable | El riesgo debe reducirse a menos que el costo sea desproporcionado al beneficio. | | **Aceptable** | $IR_{av} <$ umbral tolerable | El riesgo es ampliamente aceptable. No se requieren medidas adicionales. | ### 10.2 Criterios Disponibles | Pais / Estandar | Objetivo | Intolerable ($\text{yr}^{-1}$) | Tolerable ($\text{yr}^{-1}$) | Referencia | |-----------------|----------|-------------------------------|-----------------------------|-----------| | UK HSE | Trabajadores | $10^{-3}$ | $10^{-6}$ | R2P2 | | UK HSE | Publico | $10^{-4}$ | $10^{-6}$ | R2P2 | | Mexico ASEA | Publico | $10^{-3}$ | $10^{-6}$ | Lineamientos ASEA | | Holanda RIVM | Publico | $10^{-5}$ | $10^{-8}$ | Criterios Holandeses | | Hong Kong | Publico | $10^{-5}$ | $10^{-6}$ | Directrices HKSAR | | Australia (HIPAP) | Publico | $10^{-5}$ | $10^{-6}$ | HIPAP No. 4 | | USA EPA | Publico | $10^{-4}$ | $10^{-6}$ | Directrices EPA | | Personalizado | — | Definido por usuario | Definido por usuario | — | **Ambas metricas $IR_{av}$** (Poblacion Expuesta y Total) se clasifican independientemente contra los mismos criterios. Pueden caer en zonas diferentes — esto es esperado. --- ## 11. Ejemplo Numerico Completo ### 11.1 Datos del Proyecto - Resolucion de grilla: 25 m (area de celda = 625 $\text{m}^2$) - Densidad de poblacion: 100 p/km² = 0.0001 p/m² - $P_T$ (poblacion total del pueblo cercano): 15,000 habitantes - Dos escenarios de accidente: - Escenario A: Incendio de charco, $f = 5 \times 10^{-4}\ \text{yr}^{-1}$ - Escenario B: VCE, $f = 2 \times 10^{-5}\ \text{yr}^{-1}$ ### 11.2 IR en un Punto de Ejemplo (200 m al Este del Escenario A) $$ IR_A = f_A \times P_{f,A}(200\ \text{m}) = 5 \times 10^{-4} \times 0.40 = 2.00 \times 10^{-4} $$ $$ IR_B = f_B \times P_{f,B}(200\ \text{m}) = 2 \times 10^{-5} \times 0.15 = 3.00 \times 10^{-6} $$ $$ IR(200\ \text{m al este}) = 2.00 \times 10^{-4} + 3.00 \times 10^{-6} = 2.03 \times 10^{-4}\ \text{yr}^{-1} $$ ### 11.3 Receptor: "Colonia Norte" (Poligono) - Poblacion: 200 personas, area: 30,000 $\text{m}^2$ - 48 celdas de grilla dentro (48 $\times$ 625 = 30,000 $\text{m}^2$) - Poblacion por celda: $200 \times (625 / 30{,}000) = 4.17$ personas | Banda | Celdas | IR Prom. | Pob. por celda | $IR \times P$ por banda | |-------|--------|----------|----------------|------------------------| | $10^{-5}$ a $10^{-4}$ | 3 | $4.2 \times 10^{-5}$ | 4.17 | $5.25 \times 10^{-4}$ | | $10^{-6}$ a $10^{-5}$ | 12 | $5.1 \times 10^{-6}$ | 4.17 | $2.55 \times 10^{-4}$ | | Debajo de $10^{-6}$ | 33 | $< 10^{-6}$ | 4.17 | despreciable | | **Subtotal** | **48** | | **200** | **$\approx 7.80 \times 10^{-4}$** | ### 11.4 Receptor: "Escuela" (Punto) - Poblacion: 150 personas - IR en la ubicacion: $8.5 \times 10^{-7}\ \text{yr}^{-1}$ - Contribucion: $8.5 \times 10^{-7} \times 150 = 1.275 \times 10^{-4}$ ### 11.5 Poblacion de Fondo - 520 celdas de grilla con $IR > 0$ no dentro de ningun receptor - $P_{\text{celda}} = 0.0625$ por celda - Poblacion de fondo: $520 \times 0.0625 = 32.5$ personas - Riesgo ponderado de fondo: $6.12 \times 10^{-5}$ ### 11.6 Resultados $$ \text{Numerador:}\quad \sum(IR \times P) = 7.80 \times 10^{-4} + 1.275 \times 10^{-4} + 6.12 \times 10^{-5} = 9.69 \times 10^{-4} $$ $$ \text{Denominador:}\quad \sum(P_{xy}) = 200 + 150 + 32.5 = 382.5 $$ $$ \text{Ec. 4.4.6:}\quad IR_{av}^{(\text{exp})} = \frac{9.69 \times 10^{-4}}{382.5} = 2.53 \times 10^{-6}\ \text{yr}^{-1} $$ $$ \text{Ec. 4.4.7:}\quad IR_{av}^{(\text{tot})} = \frac{9.69 \times 10^{-4}}{15{,}000} = 6.46 \times 10^{-8}\ \text{yr}^{-1} $$ ### 11.7 Clasificacion (UK HSE — Publico) | Metrica | Valor | vs. Intolerable ($10^{-4}$) | vs. Tolerable ($10^{-6}$) | Resultado | |---------|-------|---------------------------|--------------------------|-----------| | $IR_{av}$ Expuesta | $2.53 \times 10^{-6}$ | Debajo | Encima | **ALARP** | | $IR_{av}$ Total | $6.46 \times 10^{-8}$ | Debajo | Debajo | **Aceptable** | Las personas en el area expuesta enfrentan un nivel de riesgo ALARP; deben evaluarse medidas de reduccion de riesgo. El promedio sobre toda la poblacion del pueblo es aceptable. Ambas perspectivas son complementarias y deben reportarse juntas. --- ## 12. Guia de Interpretacion para Reguladores ### 12.1 Que Metrica Usar - **Ec. 4.4.6 (Poblacion Expuesta)** es la **metrica principal** para la mayoria de marcos regulatorios. Responde directamente: "cuanto riesgo enfrentan las personas expuestas?" - **Ec. 4.4.7 (Poblacion Total)** es una **metrica complementaria**. Usarla cuando la regulacion lo requiera especificamente, o para dar contexto sobre la dilucion del riesgo. ### 12.2 Lista de Verificacion | # | Verificacion | Que buscar | |---|-------------|-----------| | 1 | Completitud de escenarios | Estan incluidos todos los escenarios relevantes? | | 2 | Frecuencias | Consistentes con datos historicos, arboles de falla o eventos? | | 3 | Perfiles de fatalidad | Distancias razonables para las sustancias y condiciones? | | 4 | Resolucion de grilla | Suficientemente fina para capturar gradientes? (Recomendado: $\leq$ 25 m) | | 5 | Datos de poblacion | Receptores correctamente ubicados? Densidad coincide con censo? | | 6 | Areas de contorno | Fisicamente razonables dados los tipos de escenario? | | 7 | Valor de $P_T$ | Representa la poblacion real en el area de influencia definida? | | 8 | Criterios de tolerancia | Criterios correctos del pais aplicados? | ### 12.3 Errores Comunes | Problema | Impacto | Como detectarlo | |----------|---------|-----------------| | Escenarios faltantes | Subestima el riesgo | Comparar lista contra HAZOP/ARP | | Grilla gruesa (>50 m) | Suaviza el riesgo pico | Verificar resolucion en reporte | | Sin receptores definidos | Solo densidad de fondo | Verificar conteo de receptores en desglose | | $P_T$ demasiado grande | $IR_{av}^{(\text{tot})}$ artificialmente bajo | Comparar $P_T$ contra datos censales | | Unidades de densidad incorrectas | Poblacion sobre/subestimada | Verificar p/km² contra datos reales | --- ## 13. Referencias | # | Referencia | |---|-----------| | 1 | **CCPS** (2000). *"Guidelines for Chemical Process Quantitative Risk Analysis"*, 2da Ed., AIChE. | | 2 | **UK HSE** (2001). *"Reducing Risks, Protecting People (R2P2)"*. Health and Safety Executive. | | 3 | **ASEA Mexico**. *"Lineamientos para el Analisis de Riesgo Industrial"*. | | 4 | **RIVM Holanda**. *"Dutch Risk Criteria for External Safety"*. | | 5 | **HIPAP No. 4**. *"Risk Criteria for Land Use Safety Planning"*, NSW Australia. | | 6 | **EPA**. *"Risk Management Program Guidance"*. | --- # Contornos de Riesgo Individual Source: https://tekrisk.com/es/docs/individual-risk/ir-contours Metodología técnica para el cálculo de mapas de contornos de Riesgo Individual (RI) usando TekRisk — agregación de RI basada en malla, contorneo por Marching Squares y salida GeoJSON para visualización QRA ## 1. Resumen Ejecutivo Los **contornos de Riesgo Individual (RI)** son líneas de iso-riesgo trazadas sobre un mapa que conectan todos los puntos geográficos que comparten la misma probabilidad anual de fatalidad debido a peligros industriales. Son la piedra angular del Análisis Cuantitativo de Riesgos (ACR) en las industrias química y de petróleo y gas. TekRisk calcula los contornos de RI mediante: **Agregación** de todos los escenarios de riesgo definidos (incendios, explosiones, nubes tóxicas) en una instalación **Evaluación** de la probabilidad de fatalidad en miles de puntos de una malla alrededor del sitio **Extracción** de líneas de contorno en niveles de riesgo estándar (por ejemplo, $1 \times 10^{-5}$, $1 \times 10^{-6}$ por año) **Proyección** de los resultados sobre un mapa geográfico como polígonos GeoJSON El resultado es un conjunto de polígonos de contorno anidados — cada uno representando un nivel de riesgo diferente — superpuestos en un mapa Mapbox GL, permitiendo a los ingenieros evaluar visualmente si los receptores vulnerables (escuelas, hospitales, áreas residenciales) se encuentran dentro de zonas de riesgo inaceptable. --- ## 2. Conceptos Clave Probabilidad anual de que una persona hipotética, presente de forma continua y sin protección en una ubicación específica, sea víctima mortal como consecuencia de un accidente industrial. Se expresa como un número adimensional por año (ej., $RI = 1 \times 10^{-5}$/año = 1 en 100,000). Qué tan seguido se espera que ocurra un escenario de accidente particular, en eventos/año. Se deriva de bases de datos de tasas de falla históricas (OREDA, OGP/IOGP) combinadas con análisis de árboles de eventos. Probabilidad de muerte en una ubicación específica dado que ocurre un escenario. Se deriva de modelos probit (térmicos/explosión) o pruebas punto-en-polígono (flash fire — $P_f = 1.0$ dentro de la envolvente LEL, $0$ fuera). Valores específicos de RI en los cuales se trazan las líneas de iso-riesgo. TekRisk utiliza siete niveles estándar: $10^{-2}$ a $10^{-8}$ por año. ### 2.1 Fórmula Principal El Riesgo Individual en cualquier punto $(x, y)$ es la suma de las contribuciones de todos los escenarios: $$ RI(x, y) = \sum_{i} f_i \times P_{f,i}(x, y) $$ | Símbolo | Descripción | Unidades | |---------|-------------|----------| | $RI(x, y)$ | Riesgo individual en la ubicación $(x, y)$ | por año | | $f_i$ | Frecuencia del escenario $i$ | eventos/año | | $P_{f,i}(x, y)$ | Probabilidad de fatalidad en $(x, y)$ dado que ocurre el escenario $i$ | adimensional $[0, 1]$ | | $i$ | Índice del escenario (cada modelo de riesgo es un escenario) | — | --- ## 3. Modelos de Riesgo Soportados TekRisk soporta cinco tipos de modelos de consecuencias, cada uno contribuyendo al cálculo global del RI: | Modelo | Tipo de Peligro | Simetría | Método de $P_f$ | Dependencia del Viento | |--------|----------------|----------|-------------|------------------------| | **Bola de Fuego** | Radiación térmica | Radial | Interpolación en perfil de fatalidad basada en distancia | Ninguna — omni-direccional | | **Incendio de Charco** | Radiación térmica | Radial | Interpolación en perfil de fatalidad basada en distancia | Ninguna — radialmente simétrico | | **Fuego de Chorro** | Radiación térmica | Radial | Interpolación en perfil de fatalidad basada en distancia | Ninguna — radialmente simétrico | | **VCE (UVCE)** | Sobrepresión por explosión | Radial | Interpolación en perfil de fatalidad basada en distancia | Ninguna — radialmente simétrico | | **Incendio Súbito** | Envolvimiento por llama | Direccional | Punto-en-polígono sobre envolvente LEL rotada | Crítica — usa rosa de vientos completa de 16 direcciones | **Bola de Fuego, Incendio de Charco, Fuego de Chorro, VCE (UVCE)** — Estos modelos asumen que el efecto del peligro decae con la distancia desde la fuente en todas las direcciones por igual. La probabilidad de fatalidad en cualquier punto depende únicamente de la distancia euclidiana a la fuente, siguiendo un **perfil de fatalidad** precalculado (porcentaje de fatalidad vs. distancia). El **Incendio Súbito** es fundamentalmente diferente. La nube de vapor inflamable se extiende a favor del viento desde la fuente, y su forma depende de la dispersión atmosférica. La probabilidad de fatalidad en cualquier punto depende de si el punto cae dentro de la envolvente del **Límite Inferior de Explosividad (LEL)**, y la **probabilidad** de que el viento sople en la dirección que llevaría la nube hacia ese punto. --- ## 4. Metodología Paso a Paso {`flowchart TD A["Datos de Entrada
(Modelos de Riesgo, Ubicaciones,
Perfiles de Fatalidad, Rosa de Vientos)"] --> B["Paso 1: Definición del Escenario
Construir lista de escenarios con
frecuencia, fuente, tipo de modelo"] B --> C["Paso 2: Integración Rosa de Vientos
(Solo Flash Fire)
Pre-rotar polígonos LEL × 16 dirs"] B --> D["Paso 3: Generación de Malla
Malla rectangular 2D
resolución + extensión automática"] C --> E["Paso 4: Cálculo del RI
Para cada punto de malla:
Radial → distancia + interpolar
Flash Fire → punto-en-polígono"] D --> E E --> F["Paso 5: Extracción de Contornos
Algoritmo Marching Squares
celda 4-bit → polígonos cerrados"] F --> G["Paso 6: Conversión Geográfica
Metros locales → lat/lon
GeoJSON FeatureCollection"] style A fill:#e1f5fe style G fill:#c8e6c9 style E fill:#fff3e0`}
### Paso 1: Definición del Escenario Cada modelo de riesgo habilitado define un **escenario** caracterizado por: | Parámetro | Descripción | Origen | |-----------|-------------|--------| | Frecuencia ($f$) | Tasa de ocurrencia anual | Configuración del modelo de riesgo | | Ubicación de la fuente | Coordenadas geográficas (lat, lon) | Definición de la fuente | | Tipo de modelo | fireball, poolfire, jetfire, vce, flashfire | Tipo del modelo de riesgo | | Perfil de fatalidad | Curva $P_f$ vs. distancia (radial) o polígono LEL (flash fire) | Resultados previos de cálculo de consecuencias | Los **perfiles de fatalidad** se extraen de cálculos de consecuencias previamente completados almacenados en `RiskCalculation.results.fatalidades`. Cada perfil consiste en pares de distancia-porcentaje de fatalidad: | Distancia (m) | Fatalidad (%) | |:---:|:---:| | 0 | 100 | | 25 | 95 | | 50 | 70 | | 100 | 30 | | 200 | 5 | | 350 | 0 | Para modelos de incendio súbito, el "perfil" de fatalidad se reemplaza por un **polígono LEL** — el contorno geográfico de la nube inflamable en la concentración del Límite Inferior de Explosividad para una dirección de viento única. --- ### Paso 2: Integración de la Rosa de Vientos (Flash Fire) Los escenarios de incendio súbito requieren integración con una **rosa de vientos Pasquill-Gifford** para considerar la naturaleza direccional de la propagación de la nube de vapor. #### Estructura de la Rosa de Vientos La rosa de vientos divide la brújula en **16 direcciones equi-espaciadas** a intervalos de 22.5°. Cada dirección lleva una probabilidad (fracción del tiempo en que el viento sopla desde esa dirección), dividida en períodos diurno y nocturno: | Período | Horas | Clases de Estabilidad | |---------|-------|----------------------| | Día | 06:00 – 18:00 | A, B, C, D | | Noche | 18:00 – 06:00 | D, E, F | #### Rotación de Polígonos Para cada una de las 16 direcciones de viento, el polígono LEL base se **rota alrededor del punto fuente**: $$ x' = x \cos(\theta) - y \sin(\theta) $$ $$ y' = x \sin(\theta) + y \cos(\theta) $$ Donde $(x, y)$ es el vértice original del polígono relativo a la fuente, $\theta$ es el ángulo de rotación, y $(x', y')$ es el vértice rotado. El resultado son **16 polígonos LEL rotados**, cada uno asociado con la probabilidad de viento para su dirección. #### Fórmula de $P_f$ para Incendio Súbito $$ P_{f,\text{ff}}(x, y) = \min\!\left(1.0,\; \sum_{j} p(\theta_j) \cdot \mathbb{1}\{(x,y) \in \text{Polígono}(\theta_j)\}\right) $$ Donde: | Símbolo | Descripción | |---------|-------------| | $\theta_j$ | Dirección del viento $j \in \{0°, 22.5°, \ldots, 337.5°\}$ | | $p(\theta_j)$ | Probabilidad del viento desde la dirección $\theta_j$ $(0$ a $1)$ | | $\text{Polígono}(\theta_j)$ | Polígono LEL rotado a la dirección $\theta_j$ | | $\mathbb{1}\{\cdot\}$ | Función indicadora: 1 si el punto está dentro del polígono, 0 en caso contrario | La suma se limita a 1.0 porque la probabilidad máxima de fatalidad no puede exceder la certeza. --- ### Paso 3: Generación de la Malla Se genera una malla rectangular 2D uniforme para evaluar el RI a través del área de estudio. | Parámetro | Descripción | Valor por Defecto | |-----------|-------------|-------------------| | Centro | Centroide de todas las coordenadas de fuentes | Auto-calculado | | Resolución | Espaciamiento entre puntos adyacentes de la malla | 25 m | | Extensión | Mitad del tamaño de la malla desde el centro | Auto-calculada | **Resoluciones disponibles**: 1, 5, 10, 25, 50, 100 metros. #### Auto-cálculo de la Extensión Encontrar la **distancia máxima del perfil de fatalidad** entre todos los escenarios Multiplicar por **1.3** (factor de relleno del 30%) Redondear hacia arriba al múltiplo de **100 m** más cercano #### Dimensiones de la Malla $$ \text{Puntos por lado} = \frac{2 \times \text{extensión}}{\text{resolución}} + 1 $$ $$ \text{Total de puntos} = (\text{Puntos por lado})^2 $$ **Ejemplo**: Con extensión = 2,000 m y resolución = 25 m → 161 puntos por lado → **25,921 puntos totales**. #### Sistema de Coordenadas La malla utiliza un **sistema de coordenadas cartesianas local** en metros: - **Origen**: Centro de la malla (centroide de las fuentes) - **Eje X**: Oeste → Este (positivo hacia el este) - **Eje Y**: Sur → Norte (positivo hacia el norte) Esta aproximación es válida para distancias de hasta ~50 km desde el centro — adecuada para sitios industriales típicos. --- ### Paso 4: Cálculo del RI en Cada Punto de la Malla Para cada punto de la malla, el sistema acumula las contribuciones de RI de todos los escenarios habilitados. **Bola de Fuego, Incendio de Charco, Fuego de Chorro, VCE (UVCE)** — Para cada punto de la malla $(x_i, y_j)$ y cada escenario radial $s$: **Paso 1 — Distancia euclidiana:** $d = \sqrt{(x_i - x_s)^2 + (y_j - y_s)^2}$ **Paso 2 — Rechazo rápido:** Si $d > d_{\max}$ → omitir ($P_f = 0$) **Paso 3 — Interpolar perfil de fatalidad:** Si $d \leq d_0$: $P_f = P_0 / 100$. En otro caso, encontrar intervalo $[d_k, d_{k+1}]$ que contiene $d$: $$ t = \frac{d - d_k}{d_{k+1} - d_k}, \qquad P_f = \frac{P_k + t \cdot (P_{k+1} - P_k)}{100} $$ **Paso 4 — Acumular:** $RI(x_i, y_j) \mathrel{+}= f_s \times P_f$ Para cada punto de la malla $(x_i, y_j)$ y cada escenario de flash fire $s$: **Paso 1 — Convertir** punto de la malla a coordenadas geográficas (lat, lon). **Paso 2 — Prueba punto-en-polígono:** Para cada uno de los 16 polígonos LEL pre-rotados, verificar si (lon, lat) cae dentro del polígono usando el algoritmo de **ray-casting**. **Paso 3 — Acumular** probabilidad ponderada por viento: $$ P_f = \min\!\left(1.0,\; \sum (\text{prob. viento} \times \text{indicador de contención})\right) $$ **Paso 4 — Acumular:** $RI(x_i, y_j) \mathrel{+}= f_s \times P_f$ Para perfiles de fatalidad térmicos y de VCE (UVCE), la interpolación es **lineal a trozos**. Dados los puntos del perfil $(d_0, P_0), (d_1, P_1), \ldots, (d_n, P_n)$: Si $d \leq d_0$ → $P_f = P_0$ (constante por debajo de la distancia mínima). Si $d \geq d_n$ → $P_f = 0$ (cero más allá de la distancia máxima). En otro caso → **interpolación lineal** entre puntos adyacentes. --- ### Paso 5: Extracción de Contornos (Marching Squares) Una vez que la malla de RI está completamente poblada, las líneas de contorno en cada nivel objetivo se extraen usando el algoritmo **Marching Squares**. Marching Squares procesa la malla **celda por celda**. Cada celda tiene cuatro valores en sus esquinas. Para un nivel de contorno dado, cada esquina se clasifica como **por encima** ($\geq$ nivel) o **por debajo** ($<$ nivel), creando un **índice de 4 bits** (16 configuraciones posibles). Los cuatro bits corresponden a: bit 0 = inferior-izquierdo, bit 1 = inferior-derecho, bit 2 = superior-derecho, bit 3 = superior-izquierdo. Si un valor de esquina $\geq$ el nivel de contorno, su bit = 1. Los **puntos silla** (casos 5 y 10) son configuraciones ambiguas que generan dos segmentos de borde separados. Para cada borde que el contorno cruza, la posición exacta de cruce se calcula por **interpolación lineal**: Dados dos valores de esquinas adyacentes $v_1$ y $v_2$, y el nivel de contorno $L$: $$ t = \frac{L - v_1}{v_2 - v_1}, \qquad t \in [0, 1] $$ $$ \text{Punto de cruce} = \text{vértice}_1 + t \times (\text{vértice}_2 - \text{vértice}_1) $$ El paso de marching squares produce segmentos de línea desconectados. Estos se conectan en **polígonos cerrados**: Comenzar con un segmento no visitado → encontrar el segmento no visitado más cercano cuyo punto de inicio esté dentro de la tolerancia ($1 \times 10^{-6}$ m) del punto final actual → anexar y continuar hasta que el polígono se cierre (punto final $\approx$ punto de inicio) → repetir para los segmentos no visitados restantes. Todos los polígonos de salida se validan para asegurar el orden de enrollamiento **anti-horario (CCW)**, como requiere la especificación GeoJSON. Esto se verifica usando el **área con signo** de la fórmula del zapato (shoelace): $$ \text{Área con Signo} = \frac{1}{2} \sum_{i} (x_i \cdot y_{i+1} - x_{i+1} \cdot y_i) $$ Si Área con Signo $< 0$ → polígono es horario → **invertir orden de vértices**. Si Área con Signo $> 0$ → polígono es anti-horario → **correcto**. --- ### Paso 6: Conversión Geográfica Los polígonos de contorno se convierten de coordenadas locales en metros de vuelta a coordenadas geográficas para la visualización en el mapa. #### Fórmulas de Conversión $$ \text{lat} = \text{lat}_{\text{centro}} + \frac{y}{111{,}320} $$ $$ \text{lon} = \text{lon}_{\text{centro}} + \frac{x}{111{,}320 \times \cos(\text{lat}_{\text{centro}} \times \pi / 180)} $$ Donde $111{,}320$ es los metros aproximados por grado de latitud (WGS84). #### Salida GeoJSON Cada polígono de contorno se empaqueta como un Feature GeoJSON: ```json { "type": "Feature", "properties": { "level": 1e-5, "levelFormatted": "1e-5", "color": "#EA580C", "opacity": 0.3, "type": "ir_contour" }, "geometry": { "type": "Polygon", "coordinates": [[[lon1, lat1], [lon2, lat2], "...", [lon1, lat1]]] } } ``` #### Cálculo de Área El área encerrada por cada contorno se calcula usando la **fórmula del zapato (shoelace)** sobre las coordenadas locales en metros: $$ A = \frac{1}{2} \left| \sum_{i} (x_i \cdot y_{i+1} - x_{i+1} \cdot y_i) \right| \quad [\text{m}^2] $$ | Rango de Área | Unidad de Visualización | |---------------|------------------------| | $< 10{,}000$ m² | m² | | $10{,}000 – 1{,}000{,}000$ m² | hectáreas (ha) | | $\geq 1{,}000{,}000$ m² | km² | --- ## 5. Criterios de Tolerabilidad del Riesgo La siguiente tabla resume los estándares internacionales para la tolerabilidad del riesgo individual: | Estándar | Región | Límite Intolerable | Ampliamente Aceptable | Referencia | |----------|--------|-------------------|------------------------|------------| | **UK HSE R2P2** | Reino Unido | $1 \times 10^{-4}$ (público) | $1 \times 10^{-6}$ | HSE (2001) | | **ASEA** | México | $1 \times 10^{-3}$ | $1 \times 10^{-6}$ | Lineamientos ASEA | | **RIVM** | Países Bajos | $1 \times 10^{-5}$ | $1 \times 10^{-8}$ | Directrices RIVM | | **Hong Kong** | Hong Kong | $1 \times 10^{-5}$ | $1 \times 10^{-6}$ | Directrices de riesgo HK | | **HIPAP No. 4** | Australia | $1 \times 10^{-5}$ | $1 \times 10^{-6}$ | NSW HIPAP No. 4 | | **EPA / OSHA** | Estados Unidos | $1 \times 10^{-4}$ | $1 \times 10^{-6}$ | EPA RMP / OSHA PSM | ### Principio ALARP Entre los límites de **intolerable** y **ampliamente aceptable** se encuentra la región **ALARP**. Dentro de esta zona, el riesgo solo se tolera si su reducción adicional es impracticable o desproporcionadamente costosa. | Zona | Nivel de Riesgo | Acción Requerida | |------|----------------|-----------------| | **Intolerable** | $\geq 1 \times 10^{-3}$ a $1 \times 10^{-4}$ (varía por estándar) | El riesgo no puede justificarse excepto en circunstancias extraordinarias | | **ALARP** | Entre umbrales intolerable y aceptable | Tolerable solo si la reducción es impracticable | | **Ampliamente Aceptable** | $\leq 1 \times 10^{-6}$ a $1 \times 10^{-8}$ (varía por estándar) | No se requiere acción adicional | --- ## 6. Código de Colores de Contornos TekRisk utiliza un esquema de siete colores para distinguir las zonas de riesgo en el mapa: | Nivel (por año) | Color | Código Hex | Interpretación del Riesgo | |:---:|-------|:---:|--------------------------| | $1 \times 10^{-2}$ | Índigo | `#4B0082` | Extremo — acción inmediata requerida | | $1 \times 10^{-3}$ | Rojo Oscuro | `#8B0000` | Intolerable — excede todos los estándares | | $1 \times 10^{-4}$ | Rojo | `#DC2626` | Intolerable para el público (UK HSE, US EPA) | | $1 \times 10^{-5}$ | Naranja | `#EA580C` | Límite superior ALARP (muchas jurisdicciones) | | $1 \times 10^{-6}$ | Amarillo | `#EAB308` | Umbral ampliamente aceptable | | $1 \times 10^{-7}$ | Verde Claro | `#84CC16` | Riesgo bajo | | $1 \times 10^{-8}$ | Verde | `#22C55E` | Riesgo insignificante | Los niveles de contorno que no están en este conjunto estándar se muestran en gris (`#6B7280`). --- ## 7. Comparación con la metodología CCPS TekRisk implementa el **enfoque general** descrito en CCPS *Guidelines for Chemical Process Quantitative Risk Analysis* (2ª Ed., 2000), §4.4.1.2. La fórmula núcleo documentada en §2.1 es literalmente la **Ec. 4.4.2** del CCPS. Esta sección traza la correspondencia implementación a implementación para que auditores y revisores regulatorios puedan mapear las salidas de TekRisk contra la referencia canónica. ### 7.1 Mapeo ecuación a ecuación | CCPS (2000) | Equivalente TekRisk | Nota | |---|---|---| | Ec. 4.4.1 — $IR_{x,y} = \sum_{i} IR_{x,y,i}$ | Aditividad por escenario (§2.1) | Idéntica | | Ec. 4.4.2 — $IR_{x,y,i} = f_i \cdot p_{f,i}$ | Término por celda de malla (§4 Paso 4) | Base compartida | | Ec. 4.4.3 — $f_i = F_I \cdot p_{O,i} \cdot p_{OC,i}$ | $f_i$ consumida desde `RiskCalculation.results` upstream (§4 Paso 1) | TekRisk no recalcula el árbol de eventos; ingiere la frecuencia ya derivada | | Ec. 4.4.4 — factor direccional $f_i \cdot (\theta_i / 360)$ | Sustituida por rosa de 16 direcciones con $p(\theta_j)$ empírica (§4 Paso 2) | TekRisk refina: probabilidades direccionales reales vs. viento uniforme | | Ec. 4.4.5 — suma acumulativa contorno a contorno | Sustituida por evaluación de IR en toda la malla + Marching Squares (§4 Paso 5) | La Ec. 4.4.5 solo aplica al enfoque simplificado del CCPS | ### 7.2 Enfoque general (CCPS §4.4.1.2, Fig. 4.7) vs TekRisk | Aspecto | Enfoque general CCPS | TekRisk | |---|---|---| | Evaluación geográfica | "Cada ubicación geográfica" (discretización no especificada) | Malla rectangular uniforme (1–100 m), extensión automática según perfil de fatalidad | | Zonas de efecto | Modelo probit o zonas discretas por incidente | Perfil continuo $P_f(d)$ con interpolación lineal por tramos | | Tratamiento del viento | Cualquier nivel de detalle (manual) | Rosa de vientos Pasquill–Gifford de 16 direcciones, separación día/noche | | Trazado de contornos | "Manualmente o con cualquier paquete gráfico de contorneo" | Marching Squares (16 casos + manejo de saddle points) | | Formato de salida | Mapa impreso | FeatureCollection GeoJSON + visualización en Mapbox GL | ### 7.3 Enfoque simplificado (CCPS §4.4.1.3, Fig. 4.8) vs TekRisk El enfoque simplificado del CCPS agrupa seis supuestos conservadores pensados para cálculo a mano. Al ejecutarse sobre una malla numérica, TekRisk no necesita esas simplificaciones y **sustituye los más restrictivos por modelos físicos reales**, lo que produce contornos más precisos, direccionalmente correctos y menos conservadores que los círculos uniformes del CCPS: | Supuesto simplificado CCPS | TekRisk | |---|---| | Fuentes puntuales | Fuentes puntuales (compatible) | | Distribución de viento uniforme (misma probabilidad en todas direcciones) | **Rosa de 16 direcciones con probabilidades empíricas** | | Velocidad de viento y clase de estabilidad únicas | Separación día/noche a través de las clases Pasquill–Gifford A–F | | Zonas de efecto discretas (100% dentro / 0% fuera) | **Perfil continuo $P_f$ vs distancia** | | Distribución uniforme de fuentes de ignición | Heredada del árbol de eventos del escenario (upstream) | | Contornos de riesgo circulares | **Contornos con forma realista que sigue la dispersión real del riesgo, trazados por Marching Squares** | ### 7.4 Qué añade TekRisk más allá del CCPS - **Perfil de fatalidad continuo** con interpolación lineal por tramos — el CCPS §4.4.1.3 solo contempla funciones escalón o modelos probit completos - **Extracción de contornos por Marching Squares** con validación de winding CCW para cumplir GeoJSON — el CCPS solo especifica "manualmente o con cualquier paquete gráfico" - **Flash fire con envolvente LEL rotada** a lo largo de 16 direcciones — el CCPS §8.2 solo cubre la simplificación de sector pie-shape - **Conversión automática metros locales ↔ lat/lon** más cálculo del área encerrada vía la fórmula del shoelace (§4 Paso 6) - **Siete niveles de contorno estandarizados** ($10^{-2}$ a $10^{-8}$) con código de color fijo (§6) — el CCPS deja la selección de niveles al analista --- ## 8. Limitaciones **Aproximación de tierra plana** para la conversión de coordenadas. Válida solo para distancias $< 50$ km desde el centro de la malla. Insignificante para sitios industriales típicos ($< 5$ km de extensión). **Interpolación lineal** entre puntos del perfil de fatalidad. Las curvas de fatalidad reales pueden ser no lineales. Conservadora entre puntos; la precisión depende de la densidad del perfil. 16 direcciones (espaciamiento de 22.5°). No se captura resolución direccional más fina. Adecuada para la mayoría de aplicaciones de ACR; se alinea con la convención Pasquill-Gifford. Usa la rosa de vientos promedio anual o promedio día/noche. Puede subestimar el riesgo direccional para ubicaciones con patrones estacionales fuertes. Todas las personas se asumen al aire libre y sin protección. Los resultados son conservadores (sobreestiman el riesgo para poblaciones resguardadas). Se asume terreno plano para la dispersión de gases. Puede subestimar el riesgo en valles o subestimar la dilución en crestas. Cada escenario se trata de forma independiente. No captura fallas en cascada ni escalamiento multi-fuente. Características más pequeñas que el espaciamiento de la malla pueden no detectarse. Usar resolución más fina (1–10 m) cerca de las fuentes si es necesario. Modelos térmicos y de VCE (UVCE) asumen sin deformación de la forma del fuego por el viento. Las columnas de fuego reales pueden alargarse a favor del viento. Se asume que la población está presente permanentemente al aire libre. Asunción de peor caso; la exposición real varía con los horarios de ocupación. La frecuencia del escenario se asume constante durante todo el año. No tiene en cuenta operaciones estacionales o períodos de paro. Depende de la calidad de los cálculos de consecuencias previos. Los contornos de RI heredan cualquier error en el modelado de consecuencias. --- ## 9. Referencias Bibliográficas | # | Referencia | |---|-----------| | 1 | **Ermak, D.L.** (1990). *"User's Manual for SLAB: An Atmospheric Dispersion Model for Denser-Than-Air Releases"*. UCRL-MA-105607, Lawrence Livermore National Laboratory. | | 2 | **TNO** (2005). *"Methods for the Calculation of Physical Effects"* (Yellow Book), 3ra Ed. Committee for the Prevention of Disasters, Países Bajos. | | 3 | **TNO** (1999). *"Guidelines for Quantitative Risk Assessment"* (Purple Book), CPR 18E. Committee for the Prevention of Disasters, Países Bajos. | | 4 | **CCPS** (2000). *"Guidelines for Chemical Process Quantitative Risk Analysis"*, 2da Ed. AIChE. | | 5 | **UK HSE** (2001). *"Reducing Risks, Protecting People"* (R2P2). Health and Safety Executive, Reino Unido. | | 6 | **ASEA** (México). *Marco regulatorio para criterios de tolerabilidad del riesgo*. Agencia de Seguridad, Energía y Ambiente. | | 8 | **Lees, F.P.** (2012). *"Loss Prevention in the Process Industries"*, 4ta Ed. Butterworth-Heinemann. | | 9 | **Crowl, D.A. & Louvar, J.F.** (2011). *"Chemical Process Safety: Fundamentals with Applications"*, 3ra Ed. Prentice Hall. | | 10 | **RIVM** (Países Bajos). *Documentación de criterios de tolerabilidad del riesgo*. National Institute for Public Health and the Environment. | --- # Bola de Fuego Source: https://tekrisk.com/es/docs/risk-models/fire-ball Documentacion tecnica del modelo de consecuencias BLEVE-FireBall — radiacion termica, analisis probit, efectos domino y estimacion de fatalidades ## 1. Introduccion y Fenomeno Fisico ### 1.1 BLEVE y Bola de Fuego Un **BLEVE** (Boiling Liquid Expanding Vapor Explosion - Explosion de Vapor en Expansion de Liquido en Ebullicion) ocurre cuando un recipiente presurizado que contiene un liquido a una temperatura superior a su punto de ebullicion atmosferico falla catastroficamente. La despresurización subita causa la vaporizacion instantanea (flash) de una fraccion significativa del liquido, generando una liberacion bifasica rapida. Si la sustancia es inflamable y existe una fuente de ignicion, la combustion resultante produce una caracteristica **bola de fuego** (fireball). La bola de fuego es una masa luminosa, aproximadamente esferica, de vapor/aerosol en combustion que se eleva por efecto de la flotabilidad. Produce radiacion termica intensa durante una corta duracion (tipicamente de segundos a decenas de segundos), capaz de causar: - **Quemaduras** (de primer y segundo grado) a personas expuestas - **Fatalidades** por dosis termica letal - **Efectos domino** por fallo de equipos y recipientes cercanos ### 1.2 Contexto Industrial Los eventos BLEVE/bola de fuego se encuentran entre los resultados de accidentes mas severos en QRA industrial. Incidentes historicos como **San Juan Ixhuatepec** (Mexico, 1984) y la **explosion de la refineria de Feyzin** (Francia, 1966) demuestran su potencial catastrofico. Terminales de propano y butano, parques de tanques Recipientes presurizados de hidrocarburos y unidades de proceso Almacenamiento de liquidos inflamables bajo presion Vagones cisterna y camiones cisterna de liquidos inflamables presurizados ### 1.3 Alcance de Este Modelo Este modelo calcula: 1. Geometria de la bola de fuego (diametro, altura, duracion) 2. Intensidad de radiacion termica a cualquier distancia 3. Distancia a un umbral de radiacion especificado (problema inverso) 4. Dosis termica y probabilidad basada en probit de quemaduras/fatalidades 5. Probabilidad de efecto domino para equipos cercanos (metodo de Cozzani) 6. Fatalidades de poblacion usando analisis de anillos concentricos --- ## 2. Secuencia de Calculo {`flowchart TD A["Datos de Entrada
(masa, Hc, fs, clima)"] --> B["Calculos Geometricos
Dmax, t_fb, H_fb"] B --> C["Parametros de Combustion
m'', SEP_max"] C --> D["Para cada distancia x:
X_superficie, tau_atm, F_vista, q"] D --> E["Directo: q(x)"] D --> F["Inverso: x(q_objetivo)
Newton-Raphson"] E --> G["Dosis Termica
D = t * q^(4/3)"] F --> G G --> H["Analisis Probit
Quemaduras / Muertes"] G --> I["Efecto Domino
TTF - Cozzani"] H --> J["Calculo de Fatalidades
(Anillos Concentricos)"] I --> J style A fill:#e1f5fe style J fill:#c8e6c9 style D fill:#fff3e0`}
El calculo del BLEVE-FireBall sigue estas etapas: **Calculos Geometricos** — Calcular diametro maximo ($D_{max}$), duracion de la bola de fuego ($t_{fb}$) y altura del centro ($H_{fb}$) a partir de la masa de combustible liberada. **Parametros de Combustion** — Calcular tasa de quemado masico ($\dot{m}''$) y Poder Emisivo Superficial ($SEP_{max}$) a partir de las propiedades del combustible. **Atmosfera y Factor de Vista** — Para cada distancia, calcular distancia superficial ($X_{superficie}$), transmisividad atmosferica ($\tau_{atm}$) y factor de vista geometrico ($F_{vista}$). **Radiacion Termica** — Calcular radiacion incidente usando tres modelos disponibles (pluma solida, fuente puntual, empirico). **Distancia Inversa** — Resolver la distancia a la cual la radiacion iguala un umbral objetivo usando iteracion de Newton-Raphson. **Dosis Termica y Probit** — Calcular dosis termica y convertir a probabilidades de quemaduras/fatalidad via funciones probit. **Efecto Domino** — Estimar tiempo de fallo para recipientes cercanos usando correlaciones de Cozzani. **Estimacion de Fatalidades** — Integrar probabilidad de fatalidad sobre anillos concentricos para estimar el total de victimas. --- ## 3. Ecuaciones Principales ### 3.1 Geometria: Diametro, Duracion, Altura #### Diametro Maximo de la Bola de Fuego $$ D_{max} = 5.8 \cdot M^{1/3} \tag{2.1} $$ | Simbolo | Descripcion | Unidad | |---------|-------------|--------| | $D_{max}$ | Diametro maximo de la bola de fuego | m | | $M$ | Masa de combustible inflamable liberada | kg | *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., Ec. 2.2.32, p. 207* El TNO Yellow Book (CPR 14E) proporciona: $D_{max} = 2 \times 3.24 \cdot M^{0.325}$ (Ec. 6.119), pero no se utiliza como metodo principal. El **diametro inicial a nivel de piso** tiene en cuenta la fase de expansion antes de la elevacion: $$ D_{piso} = 1.3 \cdot D_{max} \tag{2.2} $$ #### Duracion de la Bola de Fuego La duracion depende de si la bola de fuego esta dominada por momento o por flotabilidad: $$ t_{fb} = \begin{cases} 0.45 \cdot M^{1/3} & \text{si } M < 30{,}000 \text{ kg} \\ 2.6 \cdot M^{1/6} & \text{si } M \geq 30{,}000 \text{ kg} \end{cases} \tag{2.3/2.4} $$ | Simbolo | Descripcion | Unidad | |---------|-------------|--------| | $t_{fb}$ | Duracion de la bola de fuego | s | | $M$ | Masa de combustible inflamable | kg | *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., pp. 207-208* #### Altura del Centro de la Bola de Fuego $$ H_{fb} = 0.75 \cdot D_{max} \tag{2.5} $$ *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., p. 211* Kakosimos propone $H_{fb} = 1.0 \cdot D_{max}$, posicionando la bola de fuego mas alto. El factor CCPS de 0.75 se usa por defecto — una suposicion mas conservadora (mas cerca del suelo) que produce mayor radiacion en receptores a nivel del suelo. ### 3.2 Combustion: Tasa de Quemado y SEP #### Tasa de Quemado (Burning Rate) $$\dot{m}'' = \frac{M}{\pi \cdot D_{max}^{2} \cdot t_{fb}}$$ | Simbolo | Descripcion | Unidad | |---------|-------------|--------| | $\dot{m}''$ | Tasa de quemado | kg/(m$^2$ s) | | $M$ | Masa de combustible | kg | | $D_{max}$ | Diametro maximo | m | | $t_{fb}$ | Duracion de la bola de fuego | s | *Referencia: Kakosimos, Safety in Chemical Engineering, p. 102* #### Poder Emisivo Superficial (SEP) $$SEP_{max} = f_s \cdot \dot{m}'' \cdot \Delta H_c$$ | Simbolo | Descripcion | Unidad | |---------|-------------|--------| | $SEP_{max}$ | Poder emisivo superficial maximo | kW/m$^2$ | | $f_s$ | Fraccion de radiacion | adimensional (0.2–0.4) | | $\dot{m}''$ | Tasa de quemado | kg/(m$^2$ s) | | $\Delta H_c$ | Calor de combustion | kJ/kg | *Referencia: TNO Yellow Book (CPR 14E) y Kakosimos p. 102* ### 3.3 Transmisividad Atmosferica **Distancia superficial** desde la bola de fuego hasta el receptor a nivel del suelo a una distancia horizontal $x$: $$X_{superficie} = \sqrt{H_{fb}^{2} + x^{2}} - \frac{D_{max}}{2}$$ **Presion parcial de vapor de agua:** $$ p_a = 1013.25 \cdot RH \cdot \exp\left(14.4114 - \frac{5328}{T_a}\right) \tag{2.8} $$ | Simbolo | Descripcion | Unidad | |---------|-------------|--------| | $p_a$ | Presion parcial de vapor de agua | Pa | | $RH$ | Humedad relativa | % (0–100) | | $T_a$ | Temperatura ambiente | K | **Transmisividad atmosferica:** $$ \tau_{atm} = 2.02 \cdot (p_a \cdot X_{superficie})^{-0.09} \tag{2.7} $$ *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., Ecs. 2.2.42–2.2.43, p. 209* Si la humedad relativa es cero, se reemplaza por 0.001 para evitar division por cero en el calculo de transmisividad. ### 3.4 Factores de Vista (4 Metodos) El factor de vista $F_{vista}$ representa la fraccion geometrica de la radiacion de la bola de fuego que alcanza al receptor. $$F_{vista} = \frac{x \cdot (D_{max}/2)^{2}}{\left(x^{2} + H_{fb}^{2}\right)^{3/2}}$$ Este es el factor de vista utilizado en el modelo de radiacion de pluma solida (`qTerm0`). *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., Ec. 2.2.47, p. 209* $$F_{vista} = \left(\frac{D_{max}/2}{X_{centro}}\right)^{2}$$ donde $X_{centro} = \sqrt{H_{fb}^{2} + x^{2}}$ es la distancia desde el **centro** de la bola de fuego hasta el receptor. *Referencia: Kakosimos, Safety in Chemical Engineering, p. 103, Ec. C2.44* $$F_{vista} = \frac{x \cdot (D_{max}/2)^{2}}{\left(x^{2} + (D_{max}/2)^{2}\right)^{3/2}}$$ *Referencia: EPA/NOAA, ALOHA Technical Documentation, p. 68* $$F_{vista} = \frac{r^{2}}{4 \cdot (r + d)^{2}}$$ donde $r = D_{max}/2$ (radio de la bola de fuego) y $d = X_{centro} - r$ (distancia superficie-receptor). *Referencia: Casal, J., Evaluation of the Effects and Consequences of Major Accidents in Industrial Plants, p. 137, Ec. 3.102* ### 3.5 Modelos de Radiacion Termica (3 Ecuaciones) Cada modelo calcula el flujo de calor incidente $q$ (kW/m$^2$) en un receptor a nivel del suelo a una distancia horizontal $x$ desde la proyeccion del centro de la bola de fuego. $$ q_1(x) = \frac{2.2 \cdot \tau_{atm}(x) \cdot f_s \cdot \Delta H_c \cdot M^{2/3}}{4\pi \cdot X_{centro}^{2}} \tag{2.6} $$ donde $X_{centro} = \sqrt{H_{fb}^{2} + x^{2}}$. | Simbolo | Descripcion | Unidad | |---------|-------------|--------| | $q_1$ | Radiacion termica en el receptor | kW/m$^2$ | | $\tau_{atm}$ | Transmisividad atmosferica | adimensional | | $f_s$ | Fraccion de radiacion | adimensional | | $\Delta H_c$ | Calor de combustion | kJ/kg | | $M$ | Masa de combustible | kg | | $X_{centro}$ | Distancia centro-receptor | m | La constante 2.2 es un factor de correccion empirico derivado de datos experimentales. Este es el **modelo principal de radiacion** utilizado para todos los calculos aguas abajo (dosis, probit, fatalidades, distancia inversa). *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., Ec. 2.2.41, p. 208* $$q_0(x) = SEP_{max} \cdot F_{vista,CCPS}(x) \cdot \tau_{atm}(x)$$ Este es el modelo de **llama solida** que trata la bola de fuego como una esfera solida con emision superficial uniforme. *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., Ec. 2.2.45, p. 209* $$q_2(x) = \frac{828 \cdot M^{0.771}}{X_{centro}^{2}}$$ Una correlacion empirica simplificada que no requiere fraccion de radiacion ni transmisividad atmosferica. Proporciona resultados que se aproximan a la salida de ALOHA para propositos de validacion. *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., Ec. 2.2.44, p. 209* ### 3.6 Calculo Inverso (Newton-Raphson) Para encontrar la distancia $x$ a la cual la radiacion termica iguala un valor objetivo $q_{objetivo}$, el modelo resuelve: $$f(x) = q_1(x) - q_{objetivo} = 0$$ usando el **metodo iterativo de Newton-Raphson**. | Parametro | Valor | |-----------|-------| | Estimacion inicial | $x_0 = D_{max}/2$ (radio de la bola de fuego) | | Solver | Paquete npm `newton-raphson-method` | | Conversion de unidades | $1 \text{ BTU/(s ft}^2) = 11.3565 \text{ kW/m}^2$ | ### 3.7 Dosis Termica $$D = t_{fb} \cdot (q_1(x) \times 1000)^{4/3}$$ | Simbolo | Descripcion | Unidad | |---------|-------------|--------| | $D$ | Dosis termica | W$^{4/3}$ s m$^{-8/3}$ | | $t_{fb}$ | Duracion de la bola de fuego | s | | $q_1$ | Radiacion termica (convertida de kW a W) | W/m$^2$ | El exponente 4/3 tiene en cuenta la relacion no lineal entre la intensidad de radiacion y el dano a la piel. *Referencia: TNO Green Book (CPR 16E), Methods for the Determination of Possible Damage, Capitulo 3* ### 3.8 Analisis Probit (Quemaduras y Fatalidades) Las funciones probit transforman un parametro de exposicion fisica en una probabilidad con distribucion normal. La ecuacion probit general es $Y = a + b \cdot \ln(V)$. **Ecuaciones probit:** | Efecto | Ecuacion | Referencia | |--------|----------|------------| | Quemadura de 1er grado | $Y = -39.83 + 3.0186 \cdot \ln(D)$ | TNO Green Book, Ec. 3.4, p. 20 | | Quemadura de 2do grado | $Y = -43.14 + 3.0186 \cdot \ln(D)$ | TNO Green Book, Ec. 3.7, p. 20 | | Fatalidad (CCPS) | $Y = -14.9 + 2.56 \cdot \ln(D / 10{,}000)$ | CCPS, p. 269 | | Fatalidad (TNO) | $Y = -36.38 + 2.56 \cdot \ln(D)$ | TNO Green Book, Ec. 3.5, p. 20 | FireBall usa la metodologia CCPS para probit de muertes por defecto. Ambas ecuaciones (CCPS y TNO) son matematicamente equivalentes. **Conversion de probit a probabilidad:** $$P(\%) = f_k \cdot 50 \cdot \left[1 + \text{sgn}(Y - 5) \cdot \text{erf}\left(\frac{|Y - 5|}{\sqrt{2}}\right)\right]$$ | Simbolo | Descripcion | Valor | |---------|-------------|-------| | $f_k$ | Factor de proteccion | 1.0 (sin proteccion) | | $\text{erf}$ | Funcion error (serie de Taylor, 50 terminos) | — | **Limites:** Si $Y < 0$ → $P = 0\%$. Si $Y > 8.09$ → $P = 100\%$. ### 3.9 Efecto Domino (TTF — Cozzani) El analisis de efecto domino estima la probabilidad de que equipos cercanos fallen bajo exposicion a radiacion termica. #### Tiempo de Fallo (TTF) **Correlaciones TTF por tipo de recipiente:** | Tipo de Recipiente | Ecuacion | Referencia | |--------------------|----------|------------| | Atmosferico | $TTF = \exp(-1.13 \ln(q) - 2.667 \times 10^{-5} V + 9.877)$ | Cozzani et al. | | Presurizado | $TTF = \exp(-0.95 \ln(q) + 8.845 V^{0.032})$ | Cozzani et al. | | Envolvimiento total | $TTF = \exp(-1.29 \ln(q) + 10.97 V^{0.026})$ | Cozzani et al. | | Simbolo | Descripcion | Unidad | |---------|-------------|--------| | $TTF$ | Tiempo de fallo | s | | $q$ | Radiacion termica incidente | kW/m$^2$ | | $V$ | Volumen del recipiente | m$^3$ | Un equipo se considera totalmente envuelto cuando su distancia al centro de la bola de fuego es menor al $1.1 \times D_{max}/2$ (margen de seguridad del 10% que tiene en cuenta los gradientes de radiacion termica en el limite de la bola de fuego). #### Probit de Efecto Domino $$Y_{domino} = 9.25 - 1.847 \cdot \ln\left(\frac{TTF}{60}\right)$$ El TTF se divide entre 60 para convertir de segundos a minutos. *Referencia: Cozzani, V. et al., Journal of Hazardous Materials, p. 300* #### Mapeo de Tipos de Equipo | Tipo en Base de Datos | Categoria Cozzani | |-----------------------|-------------------| | `atmospheric_tanks`, `storage_tanks` | Atmosferico | | `pressurized_vessels`, `lpg_tanks`, `gas_cylinders` | Presurizado | | `reactors`, `heat_exchangers`, `columns` | Presurizado | ### 3.10 Calculo de Fatalidades (Anillos Concentricos) Las fatalidades de poblacion se estiman dividiendo el area afectada en anillos concentricos centrados en la proyeccion de la bola de fuego al suelo. **Algoritmo:** 1. Para cada anillo $i$ a distancia $r_i$ (incremento = 5 m, max = 10 km): - Calcular radiacion termica: $q = q_1(r_i)$ - Calcular dosis termica: $D = t_{fb} \times (q \times 1000)^{4/3}$ - Calcular probit CCPS: $Y = -14.9 + 2.56 \times \ln(D / 10000)$ - Convertir probit a porcentaje: $P = \text{probitToPercent}(Y)$ - Si $P < 0.1\%$: **DETENER** (fatalidades despreciables mas alla de esta distancia) 2. Area del anillo: $A_{anillo} = \pi (r_{ext}^{2} - r_{int}^{2})$ 3. Fatalidades por anillo: $F_i = A_{anillo} \times \rho_{pob} \times P_i / 100$ 4. Fatalidades totales: $F_{total} = \sum F_i$ | Parametro | Valor por Defecto | |-----------|-------------------| | Incremento del anillo | 5 m | | Radio maximo | 10 km | | Umbral minimo de probabilidad | 0.1% | | Regla de redondeo | Si $F > 0.6$ → $\lceil F \rceil$; de lo contrario 0 | **Conversion de densidad de poblacion:** | Unidad de Entrada | Factor de Conversion a p/m$^2$ | |--------------------|-------------------------------| | p/m$^2$ | 1 | | p/ha | $\div$ 10,000 | | p/km$^2$ | $\div$ 1,000,000 | | p/mi$^2$ | $\div$ 2,589,988 | *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., p. 273; TNO Purple Book (CPR 18E)* ### 3.11 Exclusion de Receptores Poligonales Cuando se definen receptores de tipo poligono (ej., zonas residenciales, areas industriales), el modelo evita el doble conteo de poblacion: 1. Los receptores poligonales que se superponen con los anillos se identifican usando interseccion geografica 2. Para cada anillo, el area del poligono se resta: $A_{efectiva} = A_{anillo} - A_{excluida}$ 3. Las fatalidades de las areas poligonales se calculan por separado usando analisis de grilla distribuida con sus propios conteos de poblacion --- ## 4. Justificacion de los Metodos Seleccionados 1. **Conservador pero realista** — El factor empirico 2.2 proporciona resultados entre el modelo de pluma solida (estimaciones mas altas) y la correlacion empirica simple (qTerm2) 2. **Base fisica** — El factor $1/(4\pi X^2)$ representa correctamente la atenuacion isotropica de la radiacion desde un punto en el centro de la bola de fuego 3. **Correccion atmosferica** — Incluye $\tau_{atm}$ para absorcion atmosferica, a diferencia de la puramente empirica qTerm2 4. **Compatibilidad con Newton-Raphson** — Comportamiento suave y monotonamente decreciente con excelentes propiedades de convergencia 5. **Adopcion industrial** — Usado por SCRI y ampliamente aceptado en la practica de QRA La ecuacion probit del CCPS ($Y = -14.9 + 2.56 \ln(D/10000)$) es matematicamente equivalente a la ecuacion TNO ($Y = -36.38 + 2.56 \ln(D)$). La version CCPS se prefiere por: - **Consistencia** con las demas ecuaciones CCPS usadas en todo el modelo - **Estabilidad numerica** — la escala $D/10000$ mantiene el argumento del logaritmo en un rango conveniente 1. **Especificidad por tipo de recipiente** — Correlaciones separadas para atmosferico, presurizado y envolvimiento total 2. **Dependencia del volumen** — Incluye volumen del recipiente, que afecta significativamente el TTF 3. **Ampliamente validado** — Modelos empiricos de TTF mas citados en la literatura de seguridad de procesos 4. **Entrada directa de radiacion** — Usa $q$ (kW/m$^2$) directamente disponible del calculo de la bola de fuego 1. **Captura el gradiente de decaimiento** — El metodo de anillos captura la disminucion de radiacion con la distancia 2. **Computacionalmente eficiente** — Tipicamente < 100 anillos antes de alcanzar el umbral del 0.1% 3. **Practica estandar** — Recomendado por CCPS (p. 273) y TNO Purple Book (CPR 18E) 4. **Extensible** — La exclusion de poligonos permite integracion con zonas de poblacion especificas --- ## 5. Limitaciones del Modelo - **Suposicion esferica** — La bola de fuego se modela como una esfera perfecta; las reales tienen formas irregulares y se deforman durante su ascenso - **Geometria estatica** — Usa diametro maximo, unica altura y duracion total; no modela la evolucion dinamica (expansion → ascenso → extincion) - **Sin reflexion del suelo** de la radiacion termica - **Terreno plano asumido** — El apantallamiento topografico no se modela - **Sin efectos del viento** — La cizalladura que causa inclinacion o deriva no se modela; se asume ascenso vertical - **Transmisividad simplificada** — Ajuste empirico para condiciones estandar; humedad extrema, niebla, polvo o humo pueden no estar bien representados - **Piso de humedad** — Minimo 0.1% impuesto para evitar singularidad; puede sobreestimar ligeramente la absorcion en condiciones muy secas - **Atmosfera uniforme** — No se consideran gradientes de temperatura y humedad - **Fraccion de radiacion constante** — $f_s$ se trata como constante del usuario (0.2–0.4); en realidad varia con el tipo de combustible, tamano, hollin y eficiencia de combustion - **Combustion completa asumida** — Acumulacion a nivel del suelo, mezcla incompleta y efectos multifase reducen la masa efectiva en la practica - **Combustible unico** — Las mezclas multicomponente no se manejan explicitamente - **Densidad uniforme** — El calculo base asume densidad uniforme en todas las direcciones (la exclusion de poligonos aborda parcialmente esto) - **Sin proteccion** — Factor $f_k = 1.0$ asume todas las personas al aire libre sin proteccion - **Sin evacuacion** — No se modelan acciones de respuesta de emergencia - **Poblacion estatica** — Distribucion fija durante el evento - **Solo correlaciones de Cozzani** — TTF solo para recipientes atmosfericos y presurizados; otros tipos no pueden evaluarse - **Solo radiacion termica** — Efectos domino por sobrepresion o proyectiles se manejan en el modelo VCE - **Recipientes de acero** — Correlaciones derivadas para acero; otros materiales pueden tener diferentes caracteristicas - **Sin fallo parcial** — Solo fallo catastrofico (perdida de contencion) - **Convergencia de Newton-Raphson** — Puede fallar para umbrales muy bajos (campo lejano) o estimaciones iniciales deficientes - **Discretizacion de anillos** — Incremento de 5 m introduce error de $\pm 2.5$ m (despreciable en la mayoria de escenarios) - **Extrapolacion probit** — Valores debajo de 0 se limitan a 0%, encima de 8.09 a 100% --- ## 6. Resumen de Entradas/Salidas ### 6.1 Entradas Requeridas | Parametro | Descripcion | Unidad | |-----------|-------------|--------| | `mass` | Masa de combustible inflamable | kg, lb, g, ton | | `hckjkg` | Calor de combustion | kJ/kg | | `radiationFraction` | Fraccion de energia radiada ($f_s$) | 0.2–0.4 | | `tempAmb` | Temperatura ambiente | C, F, K | | `humidityRel` | Humedad relativa | % (0–100) | | `populationDensity` | Densidad de poblacion | p/m$^2$, p/ha, p/km$^2$, p/mi$^2$ | | `thermalZones` | Zonas de riesgo con umbrales de radiacion | kW/m$^2$ | ### 6.2 Salidas | Salida | Descripcion | Unidad | |--------|-------------|--------| | `diameterMax` | Diametro maximo de la bola de fuego | m | | `durationFireBallCombustion` | Duracion de la bola de fuego | s | | `heigthFireBall` | Altura del centro de la bola de fuego | m | | `burningRate` | Tasa de quemado masico | kg/(m$^2$ s) | | `SEPmax` | Poder emisivo superficial maximo | kW/m$^2$ | | `zones` | Arreglo de zonas de riesgo con distancias | m | | `zones[i].dose` | Dosis termica en el limite de la zona | W$^{4/3}$ s m$^{-8/3}$ | | `fatalidades` | Resultados del calculo de fatalidades | Objeto o 0 | | `receiverEffects` | Efectos sobre cada receptor | Arreglo | ### 6.3 Categorias de Efectos en Receptores | Categoria | Efecto | Fuente Probit | |-----------|--------|---------------| | Termica | Quemadura de 1er grado | TNO Ec. 3.4 | | Termica | Quemadura de 2do grado | TNO Ec. 3.7 | | Termica | Fatalidad | CCPS p. 269 | | Domino | Fallo de equipo | Cozzani p. 300 | --- ## 7. Referencias Bibliograficas Center for Chemical Process Safety, AIChE/Wiley, 2000. Diametro (Ec. 2.2.32, p. 207), Duracion (pp. 207-208), Altura (p. 211), Transmisividad (Ecs. 2.2.42-2.2.43, p. 209), Factor de vista (Ec. 2.2.47, p. 209), Modelos de radiacion (Ecs. 2.2.41, 2.2.44, 2.2.45, pp. 208-209), Probit de fatalidades (p. 269), Anillos de fatalidades (p. 273). *Methods for the Determination of Possible Damage*. Committee for the Prevention of Disasters, 2005. Ecuaciones probit para quemaduras de 1er grado (Ec. 3.4, p. 20), 2do grado (Ec. 3.7, p. 20), Muertes (Ec. 3.5, p. 20), Exponente de dosis termica. *Methods for the Determination of Possible Damage*. Committee for the Prevention of Disasters, 1999. Metodologia de calculo de fatalidades, analisis de anillos concentricos. *Methods for the Calculation of Physical Effects Due to Releases of Hazardous Materials*. Correlacion alternativa de diametro (Ec. 6.119), Formulaciones de factor de vista. "Escalation thresholds in the assessment of domino accidental events." *Journal of Hazardous Materials*, 129(1-3), 2006, pp. 1-21. Correlaciones TTF (atmosferico, presurizado, envolvimiento total), Probit domino (p. 300). *Evaluation of the Effects and Consequences of Major Accidents in Industrial Plants*. Elsevier. Factor de vista Casal (Ec. 3.102, p. 137), Discusion de fraccion de radiacion (p. 136). U.S. EPA / NOAA, 2013. Factor de vista ALOHA (p. 68). *Safety in Chemical Engineering*. Tasa de quemado (p. 102), Factor de vista Kakosimos (p. 103, Ec. C2.44). *Loss Prevention in the Process Industries*. 3ra ed. Butterworth-Heinemann. Metodologia general de QRA, estimacion de fatalidades. --- # Flash Fire Source: https://tekrisk.com/es/docs/risk-models/flash-fire Documentación técnica del modelo de consecuencias Flash Fire (SLAB) — dispersión atmosférica de gas denso, campo de concentraciones, zonas de inflamabilidad y distancias LFL/UFL ## 1. Introducción y Fenómeno Físico ### 1.1 Flash Fire y SLAB Un **Flash Fire** (Incendio Repentino) ocurre cuando una nube de gas inflamable se dispersa en la atmósfera, alcanza una concentración inflamable (entre LFL y UFL) y se enciende sin producir una sobrepresión significativa. El resultado es una llama que se propaga rápidamente a través de la nube, causando quemaduras letales en la zona envuelta. El motor **SLAB** (*Simulating Large Atmospheric Body*) es una traducción directa a JavaScript del código Fortran original desarrollado por Donald L. Ermak en el Lawrence Livermore National Laboratory (1990). Preserva la física, las constantes y la estructura de subrutinas del modelo original. SLAB predice la evolución espacio-temporal de una nube de gas denso a lo largo de **61 puntos de grilla** en la dirección del viento, calculando: - Concentración de la sustancia (fracción en masa y fracción volumétrica) - Geometría de la nube (altura, semiancho transversal, semiancho longitudinal) - Temperatura y densidad de la mezcla - Velocidades barlovento, transversal y vertical ### 1.2 Contexto Industrial SLAB fue diseñado para gases más densos que el aire (GNL criogénico, GLP, cloro). Las nubes de gas denso se adhieren al suelo y se expanden lateralmente bajo la gravedad, creando grandes zonas inflamables con vientos bajos. Derrame a nivel del suelo que se evapora en régimen permanente — derrames de GNL, GLP o crio-líquidos Liberación presurizada horizontal a altura $h_s > 0$ — fallas de tuberías o recipientes Liberación presurizada vertical con elevación de pluma — venteos de alivio, blowouts Masa total liberada de golpe; modo puff transitorio — ruptura catastrófica de recipiente ### 1.3 Alcance del Modelo Los resultados se usan para determinar: 1. Distancia al LFL (Límite Inferior de Inflamabilidad) — límite interior de la zona Flash Fire 2. Distancia al 50% LFL — distancia de planificación preventiva 3. Distancia al UFL (Límite Superior de Inflamabilidad) — zona sobre-rica 4. Umbrales tóxicos IDLH, ERPG y AEGL (cuando aplique) 5. Geometría de la nube (altura, ancho) a cada distancia barlovento 6. Isopleths GeoJSON para visualización en SIG --- ## 2. Secuencia de Cálculo {`flowchart TD A["Datos de entrada
(30+ parámetros)"] --> B["Paso 1: Propiedades químicas
slabHelpers.ts — mapeo YAWS
cps, cpsl, rhosl, dhe"] B --> C["Paso 2: Validación
Esquema Zod + verificaciones de coherencia
qs>0 para idspl 1-3; qtis>0 para idspl=4"] C --> D["Paso 3: Inicialización
Perfil de viento Monin-Obukhov
Capa de mezcla hmx, condiciones de fuente"] D --> E["Paso 4: Lazo de integración
61 puntos: x=0 → xffm
slope() → RK4 → solve() → eval() → thermo() → entran()"] E --> F["Paso 5: Campo de concentración
Perfil transversal (6 posiciones)
Duración de nube tcld, ancho efectivo con meandro"] F --> G["Paso 6: Post-proceso
Zonas LFL/UFL, masa de nube por isopleta, GeoJSON"] style A fill:#e1f5fe style G fill:#c8e6c9 style E fill:#fff3e0`}
**Mapeo de propiedades químicas** — `mapChemicalToSlabInput()` obtiene capacidades caloríficas gas/líquido, densidad líquida y entalpía de vaporización de la base de datos YAWS, convirtiendo unidades para el motor SLAB. **Validación** — El esquema Zod valida tipos y rangos; las verificaciones de coherencia aseguran `qs > 0` para fuentes continuas (`idspl` 1–3) y `qtis > 0` para liberación instantánea (`idspl=4`). **Inicialización** — Calcula el perfil de viento Monin-Obukhov, estima la altura de la capa de mezcla $h_{mx}$ y establece las variables de estado iniciales de la nube según el tipo de fuente. **Lazo de integración** — Avanza el sistema de 11 EDOs a lo largo de 61 puntos de grilla desde $x=0$ hasta `xffm` usando Runge-Kutta de 4.° orden, llamando `slope()`, `solve()`, `eval()`, `thermo()` y `entran()` en cada paso. **Campo de concentración** — Calcula el perfil de concentración transversal en 6 posiciones laterales, la duración de nube $t_{cld}$ y el ancho de dispersión efectivo incorporando el meandro del viento. **Post-proceso** — Identifica las zonas de concentración LFL/UFL por interpolación lineal, calcula la masa de nube por isopleta y genera polígonos GeoJSON para visualización. --- ## 3. Parámetros de Entrada | Parámetro | Símbolo | Unidad | Fuente | |-----------|---------|--------|--------| | `wms` | $M_s$ | kg/kmol | BD química (`mw`) | | `cps` | $c_{p,s}$ | J/(kg·K) | YAWS polinomio gas | | `tbp` | $T_{bp}$ | K | BD química (`boilingPoint`) | | `dhe` | $\Delta H_{vap}$ | J/kg | BD química (`hvaptb`) | | `cpsl` | $c_{p,sl}$ | J/(kg·K) | YAWS polinomio líquido | | `rhosl` | $\rho_{sl}$ | kg/m³ | YAWS correlación densidad | | `cmed0` | $c_{med,0}$ | — | Fracción másica inicial de líquido (0 = todo vapor) | | `spb`, `spc` | — | K | Constantes Clausius-Clapeyron | | Parámetro | Símbolo | Unidad | Descripción | |-----------|---------|--------|-------------| | `ts` | $T_s$ | K | Temperatura de la fuente | | `qs` | $\dot{q}_s$ | kg/s | Tasa másica (fuentes continuas) | | `as` | $A_s$ | m² | Área de la fuente | | `tsd` | $t_{sd}$ | s | Duración de la liberación | | `qtis` | $M_{inst}$ | kg | Masa total (solo `idspl=4`) | | `hs` | $h_s$ | m | Altura de la fuente | | Parámetro | Símbolo | Unidad | Descripción | |-----------|---------|--------|-------------| | `ua` | $u_a$ | m/s | Velocidad del viento a altura `za` | | `za` | $z_a$ | m | Altura de medición del viento | | `ta` | $T_a$ | K | Temperatura ambiente | | `rh` | $RH$ | % | Humedad relativa | | `stab` | — | 0–6 | Clase de estabilidad Pasquill-Gifford (A=1 … F=6) | | `ala` | $\Lambda = 1/L$ | 1/m | Inverso de longitud de Monin-Obukhov (solo si `stab=0`) | | `z0` | $z_0$ | m | Longitud de rugosidad superficial | | Parámetro | Descripción | |-----------|-------------| | `tav` | Tiempo de promediado de concentración (s) | | `xffm` | Distancia máxima barlovento calculada (m) | | `zp[4]` | Alturas de medición de concentración (m) | | `ncalc` | Multiplicador de sub-pasos numéricos (1–10) | --- ## 4. Propiedades Físico-Químicas — Mapeo YAWS Antes de ejecutar el motor SLAB, `mapChemicalToSlabInput()` calcula las propiedades termodinámicas desde los coeficientes de regresión YAWS. ### 4.1 Capacidad Calorífica del Gas Ideal $$ 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)}] $$ Evaluada a $T = T_{bp}$. **Código:** `slabHelpers.ts` → `calculateGasHeatCapacity()`. ### 4.2 Capacidad Calorífica del Líquido $$ 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)}] $$ **Código:** `slabHelpers.ts` → `calculateLiquidHeatCapacity()`. ### 4.3 Densidad del Líquido (YAWS) $$ \rho_L(T) = d_{lqa} \cdot d_{lqb}^{-(1 - T/T_c)^{d_{lqn}}} \times 10^3 \quad [\text{kg/m}^3] $$ **Código:** `slabHelpers.ts` → `calculateLiquidDensity()`. ### 4.4 Conversión de Entalpía de Vaporización Convertida de kJ/mol a J/kg: $$ \Delta H_{vap} \, [\text{J/kg}] = \frac{h_{vap,tb} \, [\text{kJ/mol}] \times 10^6}{M_w \, [\text{g/mol}]} $$ **Código:** `slabHelpers.ts`, línea 469. --- ## 5. Perfil de Viento — Teoría de Similitud de Monin-Obukhov SLAB modela el perfil vertical de velocidad del viento con la **Teoría de Similitud de Monin-Obukhov** (capa superficial): $$ u(z) = \frac{u_*}{\kappa} \left[\ln\!\left(\frac{z}{z_0}\right) - \Psi_M\!\left(\frac{z}{L}\right)\right] $$ | Símbolo | Descripción | |---------|-------------| | $u_*$ | Velocidad de fricción [m/s] | | $\kappa = 0.41$ | Constante de von Kármán | | $z_0$ | Longitud de rugosidad superficial [m] | | $L$ | Longitud de Monin-Obukhov [m]; $\Lambda = 1/L$ = `ala` | | $\Psi_M$ | Función de corrección de estabilidad de momentum | 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} $$ $$ \Psi_M = -5 \cdot \frac{z}{L} $$ **Código:** `slab-js/utils/uafn.js` (función `uafn`). **Referencia:** Ermak (1990), §2.1; Monin & Obukhov (1954). ### 5.1 Clases de Estabilidad Pasquill-Gifford | Clase PG | `stab` | $\Lambda = 1/L$ [1/m] | Condición | |----------|--------|----------------------|-----------| | A | 1 | −0.10 a −0.05 | Muy inestable | | B | 2 | −0.05 a −0.02 | Inestable | | C | 3 | −0.02 a −0.005 | Ligeramente inestable | | D | 4 | ≈ 0 | Neutral | | E | 5 | +0.005 a +0.02 | Ligeramente estable | | F | 6 | +0.02 a +0.10 | Estable | --- ## 6. Ecuaciones de Conservación (Sistema de 11 EDOs) El motor resuelve **11 ecuaciones diferenciales ordinarias** a lo largo de la dirección $x$ barlovento. Las más importantes son: $$ \frac{d}{dx}(\rho u A) = \rho_a \sqrt{3}(v h + w b_b) + \dot{q}_s $$ donde $v$ y $w$ son las velocidades de arrastre horizontal y vertical. **Código:** `slope.js`, `f[1]` (línea 103). $$ \frac{d b_b}{dx} = \frac{\sqrt{3}(\rho_a/\rho) v + v_g}{u} $$ La velocidad de spreading gravitacional para gases densos: $$ v_g = \sqrt{\frac{d(\rho - \rho_a)}{dx} \cdot \alpha_g \cdot g \cdot h^2}, \quad \alpha_g = 0.25 $$ **Código:** `slope.js`, `f[2]` (línea 110). $$ \frac{d}{dx}\left[\rho u v_g b_b\right] = \alpha_{gv} \cdot g \cdot (\rho - \rho_a) \cdot h^2 $$ El coeficiente $\alpha_{gv} = 0.75$ es el factor de spreading gravitacional vertical. **Código:** `slope.js`, `f[4]` (línea 125). $$ \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 $$ Una nube más densa que el aire ($\rho > \rho_a$) experimenta aceleración descendente — el mecanismo que mantiene las nubes de gas denso cerca del suelo. **Código:** `slope.js`, `f[7]` y `f[8]`; `solve.js`, líneas 123–136. $$ \frac{d}{dx}[c_p \rho u T \cdot A] = f_t $$ donde $f_t$ incluye la transferencia de calor por fricción superficial y el intercambio con el suelo. **Código:** `slope.js`, `f[5]`; `entran.js`, línea 366. --- ## 7. Velocidades y Altura de Nube — `eval()` En cada paso, `eval()` resuelve iterativamente (máx. 11 iteraciones, tolerancia $\Delta u/u < 0.001$) el sistema acoplado: **Altura de la nube** (conservación de masa): $$ h = \frac{r}{\rho \cdot u \cdot b_b} $$ **Velocidad barlovento** (ecuación cúbica, Ermak 1990 §3.2): $$ u^3 - u_0 \, u^2 + u_{g}^3 = 0 $$ resuelta analíticamente con la fórmula trigonométrica de Cardano. **Velocidad media de la capa límite** (integración por regla de Simpson): $$ \bar{u}_a \approx \frac{u_1 + 4u_{1/2} + u_2}{6} $$ **Código:** `slab-js/core/eval.js`. --- ## 8. Tasas de Arrastre — `entran()` El arrastre (*entrainment*) es el mecanismo principal de dilución de la nube — el proceso por el cual el aire ambiente se mezcla en la nube y reduce la concentración. ### 8.1 Velocidad de Arrastre Vertical $$ 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) $$ | Símbolo | Valor | Descripción | |---------|-------|-------------| | $\alpha_e$ | 1.50 | Coeficiente de arrastre | | $\kappa$ | 0.41 | Constante de von Kármán | | $f_{pr}$ | $1 - h_{tp}/h_{mx}$ | Factor de perfil (se anula en la cima de la capa de mezcla) | **Código:** `entran.js`, líneas 251–272. ### 8.2 Velocidad de Arrastre Horizontal $$ v = \sqrt{v_a^2 + c_{f1} \cdot v_{jet}^2} $$ donde $v_a$ es el arrastre por turbulencia ambiental y $v_{jet}$ es el arrastre por cizalladura del chorro: $$ 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}} $$ con $c_{f1} = 0.02$, $\sigma_b = 0.0004$. **Código:** `entran.js`, líneas 281–293. ### 8.3 Velocidad de Fricción Total $$ u_{*,total}^2 = u_{*,bulk}^2 + u_{*,shear}^2 + u_{*,convect}^2 $$ La contribución convectiva (condiciones inestables, $T_{suelo} > T_{nube}$): $$ u_{*,convect}^2 = \left[c_{th} \cdot g \cdot \frac{(T_{suelo} - T_{nube})}{T_{medio}} \cdot v_h \cdot h\right]^{2/3}, \quad c_{th} = 0.14 $$ **Código:** `entran.js`, líneas 195–215. --- ## 9. Termodinámica — `thermo()` La subrutina resuelve el equilibrio termodinámico de la mezcla nube + aire a cada paso. La temperatura de la mezcla se estima inicialmente a partir del balance de entalpías: $$ 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] $$ Para la sustancia fuente: $$ 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} $$ Para el agua: $$ P_{sat,w} = P_a \exp\!\left(15.08 - \frac{5514}{T}\right) $$ Las constantes $B_s$ y $C_s$ provienen de los parámetros `spb` y `spc` del usuario. Itera hasta 15 veces (tolerancia $\Delta T < 0.001$ K) hasta que las fracciones de vapor $c_{m,ev}$ y $c_{m,wv}$ sean consistentes con las presiones de saturación y el balance de energía: $$ 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}} $$ $$ \rho = \frac{\rho_a \, T_a}{\alpha_m \, T + \beta_m \, T_a} $$ donde $\alpha_m$ es el factor de peso molecular efectivo y $\beta_m$ es la corrección volumétrica por fracción líquida. **Código:** `thermo.js`, función `calculateDensity()`, líneas 451–473. --- ## 10. Campo de Concentración ### 10.1 Perfil de Concentración Transversal SLAB calcula la concentración en 6 posiciones laterales $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) $$ con distribución **uniforme** para $|y| \leq b_{bc}$ y caída **gaussiana** fuera del semiancho. ### 10.2 Modo Puff Transitorio Para liberaciones instantáneas, la concentración también varía en el tiempo. En cada punto barlovento se calcula: - $t_{imp}$ — tiempo de llegada de la concentración máxima - $t_{cld}$ — duración de la nube (tiempo por encima del umbral) Ambos se usan para determinar la duración de exposición más desfavorable en la evaluación de riesgos. ### 10.3 Ancho Efectivo con Meandro Para tiempos de promediado $t_{av} > 0$, el semiancho efectivo incorpora la variabilidad direccional del viento: $$ b_{bc} = b_b \sqrt{1 + \sigma_y^2 / b_b^2} $$ donde $\sigma_y$ es la dispersión lateral adicional por meandro del viento. --- ## 11. Integración Numérica — Runge-Kutta 4 El sistema de 11 EDOs se integra a lo largo de $x$ con el método de **Runge-Kutta de 4.° orden**: $$ y_{n+1} = y_n + \frac{\Delta x}{6}(k_1 + 2k_2 + 2k_3 + k_4) $$ El paso de integración $\Delta x$ se ajusta automáticamente según el multiplicador `ncalc`. La grilla de salida tiene **61 puntos** distribuidos logarítmicamente de $x = 0$ a `xffm`. **Código:** `slab-js/core/rungeKutta.js`. --- ## 12. Post-proceso y Salidas ### 12.1 Zonas de Inflamabilidad y Peligro | Zona | Concentración | Criterio | |------|---------------|---------| | LFL | `lel` % vol | Límite Inferior de Inflamabilidad — límite interior del Flash Fire | | 50% LFL | `0.5 × lel` % | Zona de precaución | | UFL | `uel` % vol | Límite Superior de Inflamabilidad — zona sobre-rica | Las distancias se obtienen por interpolación lineal en la grilla de 61 puntos. **Código:** `slabAction.ts`, función `findDistanceForConcentration()`. ### 12.2 Masa de Nube por Isoconcentración $$ M_{nube}(c_{target}) = \int_{V:\, c \geq c_{target}} \rho(x,y,z) \, dV $$ Calculada numéricamente integrando en los 61 puntos de grilla. **Código:** `analysis/isopleths.js`. --- ## 13. Constantes Físicas del Modelo | Constante | Valor | Descripción | |-----------|-------|-------------| | $\kappa$ | 0.41 | Constante de von Kármán | | $\alpha_e$ | 1.50 | Coeficiente de arrastre (entrainment) | | $c_{f1}$ | 0.02 | Coeficiente de fricción 1 | | $C_{RI}$ | 0.025 | Criterio de número de Richardson | | $c_{th}$ | 0.14 | Coeficiente de transferencia de calor convectiva | | $\alpha_g$ | 0.25 | Factor de spreading gravitacional horizontal | | $\alpha_{gv}$ | 0.75 | Factor de spreading gravitacional vertical | | $\sigma_b$ | 0.0004 | Coeficiente sigma de flotabilidad | | $c_{ws}$ | 0.05 | Coeficiente de cizalladura de viento | | $R$ | 8.31431 | Constante universal del gas [J/(mol·K)] | | $g$ | 9.80665 | Aceleración gravitacional [m/s²] | | $P_a$ | 101 325 | Presión atmosférica estándar [Pa] | **Código:** `slab-js/state/constants.js`. --- ## 14. Limitaciones del Modelo SLAB asume terreno horizontal sin obstáculos. No modela canalizaciones por valles, edificios ni accidentes topográficos. La velocidad y dirección del viento se consideran fijas durante toda la simulación. No hay variabilidad temporal ni rotación/viraje del viento. El modelo simula una sola nube desde una fuente. No modela múltiples fuentes simultáneas ni interacción entre nubes. Diseñado para gases más densos que el aire (GNL, GLP, cloro). Para gases muy livianos ($\rho_s \ll \rho_a$) los resultados son conservadores — el modelo puede sobreestimar las concentraciones a nivel del suelo. No modela reacciones químicas entre el gas y el aire. La concentración se trata como un escalar conservado durante toda la simulación. La teoría de Monin-Obukhov es válida para la capa superficial ($z < h_{mx}$). El modelo limita el arrastre por encima de la capa de mezcla. La grilla de salida es fija. Regiones de cambio rápido de concentración cerca de la fuente pueden estar sub-muestreadas con `ncalc=1`. Los parámetros `spb` y `spc` deben ser ingresados por el usuario. Si no están disponibles en la base de datos química, el equilibrio vapor-líquido se omite del cálculo. Los coeficientes de arrastre ($\alpha_e$, $c_{f1}$) y spreading ($\alpha_{gv}$) son constantes calibradas para escenarios de laboratorio y campo. Su validez para condiciones extremas no está garantizada. En la zona fuente inmediata ($x < b_s$), el modelo usa aproximaciones. Los resultados dentro del área de la fuente tienen incertidumbre mayor. --- ## 15. Referencias Bibliográficas | # | Referencia | |---|-----------| | 1 | **Ermak, D.L.** (1990). *SLAB: An Atmospheric Dispersion Model for Denser-than-Air Releases*. UCRL-MA-105607. Lawrence Livermore National Laboratory, Livermore, CA. — **Referencia principal del modelo** | | 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. | --- # Dardo de Fuego (Jet Fire) Source: https://tekrisk.com/es/docs/risk-models/jet-fire Documentación técnica del modelo de Jet Fire — Metodologías Solid Plume (Chamberlain) y Point Source (CCPS) para análisis de radiación térmica ## 1. Introducción y Descripción General Un **jet fire** (fuego tipo chorro) es una llama de difusión turbulenta que resulta de la combustión de un gas presurizado o líquido volátil liberado de forma continua a través de un orificio o falla en tubería. A diferencia de los incendios de charco (pool fire), los jet fires se caracterizan por una descarga de alto momento, geometría de llama direccional y radiación térmica localizada intensa. ### 1.1 Modelos Implementados TekRisk PRO implementa dos metodologías complementarias para el análisis de consecuencias de jet fire: **Enfoque:** Emisor superficial **Geometría:** Llama con forma de frustum con factor de vista **Caso de Uso:** Análisis detallado de campo cercano con geometría de llama **Enfoque:** Emisor puntual **Geometría:** Punto radiante único en el punto medio de la llama **Caso de Uso:** Análisis simplificado de campo lejano, estimaciones conservadoras ### 1.2 Tipos de Fuente - **`knownFlow`** — El flujo másico es especificado directamente por el usuario (kg/s). Se usa cuando se dispone de datos de medición de flujo. - **`gasLeakFromOrifice`** — El flujo másico se calcula a partir de las condiciones del recipiente (presión interna, temperatura, diámetro del orificio) usando ecuaciones de descarga isentrópica. --- ## 2. Secuencia de Cálculo El algoritmo sigue 15 etapas secuenciales: **Procesamiento de entrada y conversión de unidades** — Convertir entradas del usuario a unidades SI; calcular presión atmosférica y densidad del aire a la altitud dada. **Propiedades del gas (polinomio Cp, gamma)** — Evaluar el polinomio de capacidad calorífica y calcular la relación de calores específicos. **Régimen de flujo (sónico vs subsónico)** — Determinar si la descarga es estrangulada o no mediante la relación de presión crítica. **Flujo másico (descarga de recipiente)** — Calcular el flujo másico a partir de las condiciones del orificio usando las ecuaciones de descarga de Kakosimos. **Condiciones de salida (P, T, Mach, u, rho)** — Calcular presión, temperatura, número de Mach, velocidad y densidad en la salida del chorro. **Diámetro equivalente (Ds)** — Calcular el diámetro efectivo de la fuente para las correlaciones de longitud de llama. **Longitud de la llama (Newton-Raphson / CCPS)** — Resolver la longitud de llama usando la ecuación implícita de Chamberlain o la correlación CCPS. **Geometría de la llama (solo Solid Plume)** — Calcular ángulo de inclinación, lift-off, dimensiones del frustum, anchos de base y superior. **Poder Emisivo Superficial (SEP)** — Calcular la fracción radiada y el poder emisivo superficial a partir del área de la llama y el calor de combustión. **Transmisividad atmosférica (Wayne/CCPS)** — Evaluar la absorción atmosférica usando la correlación de humedad de Wayne. **Radiación térmica a una distancia dada** — Calcular la radiación incidente a una distancia dada usando factor de vista (Solid Plume) o fórmula de fuente puntual. **Distancia a una radiación dada (Newton-Raphson inverso)** — Encontrar la distancia a la cual ocurre un nivel de radiación especificado. **Análisis Probit (quemaduras y mortalidad)** — Convertir la dosis térmica a probabilidades de quemadura y mortalidad usando funciones probit. **Efecto Domino — TTF (Cozzani)** — Estimar el tiempo de fallo para recipientes cercanos bajo carga de radiación térmica. **Estimación de fatalidades (integración por anillos concéntricos)** — Integrar la probabilidad de mortalidad sobre anillos concéntricos para estimar el total de víctimas. --- ## 3. Ecuaciones Principales ### 3.1 Procesamiento de Entrada y Conversión de Unidades **Presión atmosférica en función de la altitud:** $$P_a = 101325 \times (1 - 2.5577 \times 10^{-5} \times h)^{5.25588}$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $P_a$ | Presión atmosférica a la altitud dada | Pa | | $h$ | Altitud sobre el nivel del mar | m | *Referencia: Fórmula barométrica estándar (ISO 2533)* **Densidad del aire en función de la altitud:** $$\rho_{aire} = \frac{P_a}{R_d \times T_a}$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $\rho_{aire}$ | Densidad del aire | kg/m³ | | $R_d$ | Constante específica del aire seco (287.05) | J/(kg·K) | | $T_a$ | Temperatura ambiente | K | ### 3.2 Propiedades del Gas **Polinomio de capacidad calorífica (Cp):** $$C_{p,mol} = a + bT + cT^2 + dT^3 + eT^4$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $C_{p,mol}$ | Capacidad calorífica molar a presión constante | J/(mol·K) | | $a$–$e$ | Coeficientes del polinomio (cpga a cpge) | varios | | $T$ | Temperatura interna del gas | K | **Calores específicos y gamma:** $$C_p = \frac{C_{p,mol}}{MW} \times 1000$$ $$C_v = C_p - \frac{R}{MW} \times 1000$$ $$\gamma = \frac{C_p}{C_v}$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $C_p$ | Calor específico a presión constante | J/(kg·K) | | $C_v$ | Calor específico a volumen constante | J/(kg·K) | | $R$ | Constante universal de los gases (8.31451) | J/(mol·K) | | $MW$ | Peso molecular | kg/mol | | $\gamma$ | Relación de calores específicos (debe ser > 1.0) | adimensional | $\gamma \leq 1.0$ indica una sustancia no gaseosa y genera un error. Este modelo soporta **solo liberaciones en fase gaseosa**. ### 3.3 Determinación del Régimen de Flujo **Relación de presión crítica (umbral sónico):** $$\frac{P_0}{P_a} \leq \left(\frac{\gamma + 1}{2}\right)^{\gamma / (\gamma - 1)}$$ Si la relación de presión es menor o igual al valor crítico, el flujo es **subsónico** (no estrangulado). En caso contrario, el flujo es **sónico/supersónico** (estrangulado o choked). *Referencia: Kakosimos, Ec. B2.14, p. 36* ### 3.4 Flujo Másico por Descarga de Recipiente **Ecuación general de descarga (Kakosimos B2.13):** $$\dot{m} = C_d \times A \times P_0 \times K \times \sqrt{\frac{MW}{\gamma \times R \times T_0}}$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $\dot{m}$ | Flujo másico | kg/s | | $C_d$ | Coeficiente de descarga | adimensional | | $A$ | Área del orificio ($\pi d^2 / 4$) | m² | | $P_0$ | Presión interna | Pa | | $T_0$ | Temperatura interna | K | **Factor K para flujo sónico (Kakosimos B2.14):** $$K = \gamma \times \left(\frac{2}{\gamma + 1}\right)^{(\gamma + 1) / (2(\gamma - 1))}$$ **Factor K para flujo subsónico (Kakosimos B2.15):** $$K = \sqrt{\frac{2\gamma^2}{\gamma - 1} \times \left(\frac{P_a}{P_0}\right)^{2/\gamma} \times \left(1 - \left(\frac{P_a}{P_0}\right)^{(\gamma-1)/\gamma}\right)}$$ *Referencia: Kakosimos, K.E., "Complex Hazardous Activities", Ecs. B2.13–B2.15, p. 36* ### 3.5 Condiciones de Salida **Presión de salida para flujo conocido (adiabático, Kakosimos C2.55):** $$P_{salida} = P_0 \times \left(\frac{2}{1 + \gamma}\right)^{\gamma / (\gamma - 1)}$$ **Presión de salida para descarga por orificio (Kakosimos C2.52):** $$P_{salida} = \frac{4\dot{m}}{\pi d^2} \times \sqrt{\frac{R \times T_o}{\gamma \times MW}}$$ donde $T_o = 2T_0 / (1 + \gamma)$ (Kakosimos C2.54) **Temperatura de salida (adiabática, Kakosimos C2.56):** $$T_j = T_0 \times \left(\frac{P_a}{P_0}\right)^{(\gamma - 1) / \gamma}$$ **Número de Mach a la salida (flujo sónico):** $$M_j = \sqrt{\frac{(\gamma + 1)(P_{salida}/P_a)^{(\gamma-1)/\gamma} - 2}{\gamma - 1}}$$ **Velocidad de salida (Kakosimos C2.50):** $$u_j = M_j \times \sqrt{\frac{\gamma \times R \times T_j}{MW}}$$ **Densidad de salida (gas ideal):** $$\rho_j = \frac{P_{salida} \times MW}{R \times T_j}$$ *Referencias: Kakosimos, Ecs. C2.50, C2.52, C2.54–C2.56, pp. 108–109; TNO Yellow Book, Ecs. 6.33, 6.36* ### 3.6 Diámetro Equivalente **Para flujo másico conocido (Kakosimos C2.59):** $$D_s = \sqrt{\frac{4\dot{m}}{\pi \times \rho_{aire} \times u_j}}$$ **Para descarga por orificio (Kakosimos C2.60):** $$D_s = d \times \sqrt{\frac{\rho_j}{\rho_{aire}}}$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $D_s$ | Diámetro equivalente | m | | $d$ | Diámetro del orificio | m | *Referencia: Kakosimos, Ecs. C2.59–C2.60, p. 110* ### 3.7 Longitud de la Llama La longitud de la llama se calcula resolviendo una ecuación no lineal para el parámetro adimensional $Y$ mediante iteración Newton-Raphson: $$C_a Y^{5/3} + C_b Y^{2/3} - C_c = 0$$ donde: $$C_a = 0.024 \times \left(\frac{g \times D_s}{u_j^2}\right)^{1/3}$$ $$C_b = 0.2$$ $$C_c = \left(\frac{2.85}{W}\right)^{2/3}$$ $$W = \frac{MW}{15.816 \times MW + 0.0395}$$ **Iteración Newton-Raphson:** $$Y_{n+1} = Y_n - \frac{C_a Y_n^{5/3} + C_b Y_n^{2/3} - C_c}{(5C_a Y_n + 2C_b) / (3Y_n^{1/3})}$$ Tolerancia de convergencia: 0.01 **Longitud de llama sin viento:** $$L_{Bo} = Y \times D_s$$ **Longitud de llama corregida por viento:** $$L_f = L_{Bo} \times (0.51 \exp(-0.4 u_w) + 0.49) \times (1 - 0.00607(\theta - 90))$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $W$ | Fracción másica estequiométrica en mezcla con aire | adimensional | | $Y$ | Parámetro adimensional de longitud de llama | adimensional | | $L_{Bo}$ | Longitud de llama sin viento | m | | $L_f$ | Longitud de llama corregida por viento | m | | $u_w$ | Velocidad del viento | m/s | | $\theta$ | Ángulo del eje del orificio respecto al viento | grados | | $g$ | Aceleración gravitacional (9.80665) | m/s² | *Referencia: TNO Yellow Book (CPR 14E, 3ra Ed.), pp. 6.97–6.101, Ecs. 6.30–6.56; Chamberlain (1987)* Para el modelo Point Source con descarga por orificio, la longitud de la llama se calcula con la ecuación CCPS: $$L_f = d \times \frac{15}{W} \times \sqrt{\frac{MW_{aire}}{MW}}$$ donde $MW_{aire} = 0.029$ kg/mol. Para flujo conocido con Point Source, la longitud de la llama no es necesaria (se establece en 1.0 m como valor de referencia) ya que la intensidad radiante se calcula directamente del flujo másico. *Referencia: CCPS, "Guidelines for CPQRA", 2da Ed., Ec. 2.2.64* ### 3.8 Geometría de la Llama (Solo Solid Plume) **Ángulo de inclinación de la llama (Kakosimos C2.68):** $$R_1 = u_w / u_j$$ Número de Richardson: $$Ri = L_{Bo} \times \left(\frac{g}{D_s^2 \times u_j^2}\right)^{1/3}$$ Para $R_1 \leq 0.05$: $$\alpha = (\theta - 90)(1 - e^{-25.6 R_1}) + \frac{8000 R_1}{Ri}$$ Para $R_1 > 0.05$: $$\alpha = (\theta - 90)(1 - e^{-25.6 R_1}) + \frac{134 + 1726\sqrt{R_1 - 0.026}}{Ri}$$ *Referencia: Kakosimos, Ec. C2.68, p. 111; TNO Yellow Book* **Distancia de separación (lift-off):** Sin viento: $b = 0.2 \times L_f$ Ángulo de llama > 175 grados: $b = 0.015 \times L_f$ En otro caso (Chamberlain): $$K_{lo} = 0.187 \exp(-20 R_1) + 0.015$$ $$b = L_f \times \frac{\sin(K_{lo} \times \alpha)}{\sin(\alpha)}$$ *Referencia: TNO Yellow Book, Ec. 6.49, p. 6.57; Chamberlain (1987)* **Longitud del frustum:** $$R_L = \sqrt{L_f^2 - b^2 \sin^2(\alpha)} - b \cos(\alpha)$$ **Ancho de la base (Chamberlain):** $$C = 1000 \exp(-100 R_1) + 0.8$$ $$Ri_{Ds} = D_s \times \left(\frac{g}{u_j^2 \times D_s^2}\right)^{1/3}$$ $$W_1 = D_s \times (13.5 e^{-6R_1} + 1.5) \times \left(1 - e^{-70 Ri_{Ds}^{CR_1}} \left(1 - \frac{1}{15}\sqrt{\rho_r}\right)\right)$$ donde $\rho_r = T_j MW_{aire} / (T_a MW)$ es la densidad relativa. *Referencia: Chamberlain (1987); ALOHA Technical Documentation, p. 75; Kakosimos Ec. C2.73* **Ancho superior:** $$W_2 = L_f \times (0.18 e^{-1.5 R_1} + 0.31) \times (1 - 0.47 e^{-25 R_1})$$ *Referencia: Chamberlain (1987)* **Área superficial de la llama (frustum):** $$A_1 = \sqrt{R_L^2 + \left(\frac{W_2 - W_1}{2}\right)^2}$$ $$A_{llama} = \frac{\pi}{4}(W_1^2 + W_2^2) + \frac{\pi}{2}(W_1 + W_2) A_1$$ ### 3.9 Poder Emisivo Superficial (SEP) **Factor de corrección por peso molecular (ALOHA):** | Rango de MW | $C_{mw}$ | |-------------|------| | $MW \leq 21$ | 1.0 | | $21 < MW \leq 60$ | $\sqrt{MW / 21}$ | | $MW > 60$ | 1.69 | *Referencia: ALOHA Technical Documentation, NOAA/EPA, p. 72* **Fracción de calor radiada (Chamberlain 1987):** $$F_s = 0.21 \times C_{mw} \times \exp(-0.00323 \times u_j) + 0.11$$ **Poder Emisivo Superficial:** $$SEP = F_s \times \frac{\dot{m}}{A_{llama}} \times \Delta H_c$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $F_s$ | Fracción de calor radiado | adimensional | | $SEP$ | Poder emisivo superficial ($SEP_{act} = SEP_{max}$, sin corrección por hollín) | kW/m² | | $\Delta H_c$ | Calor de combustión | kJ/kg | No se aplica corrección por hollín ($SEP_{act} = SEP_{max}$). Esto es conservador para llamas con alta producción de hollín. *Referencia: Chamberlain, G.A. (1987), Chem. Eng. Res. Des., 65; ALOHA Technical Documentation, p. 72* ### 3.10 Transmisividad Atmosférica **Modelo Wayne (CCPS Ecs. 2.2.42–2.2.43):** Presión parcial de vapor de agua: $$p_w = 1013.25 \times HR \times \exp(14.4114 - 5328 / T_a)$$ Transmisividad atmosférica: $$\tau = 2.02 \times (p_w \times x)^{-0.09}$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $\tau$ | Transmisividad atmosférica | adimensional | | $p_w$ | Presión parcial del vapor de agua | Pa | | $HR$ | Humedad relativa (como fracción 0–1) | adimensional | | $x$ | Distancia desde la superficie de la llama | m | *Referencia: CCPS, "Guidelines for CPQRA", 2da Ed., Ecs. 2.2.42–2.2.43, p. 209* ### 3.11 Radiación Térmica a una Distancia Dada $$q(x) = SEP \times F_{vista}(x) \times \tau(x)$$ El **factor de vista** $F_{vista}$ se calcula a partir de componentes horizontal y vertical usando el método del cilindro inclinado: $$F_{vista} = \sqrt{F_v^2 + F_h^2}$$ donde $F_v$ y $F_h$ se computan a partir de parámetros geométricos (longitud del frustum $R_L$, radio equivalente $R$, distancia $X$, ángulo de inclinación) usando expresiones analíticas que involucran funciones arcotangente. La formulación completa del factor de vista sigue la metodología del cilindro inclinado del TNO Yellow Book. *Referencia: Kakosimos, Ec. C2.84, p. 119; TNO Yellow Book* $$q(x) = \tau(x) \times f_r \times \dot{m} \times \Delta H_c \times F_{vista,ps}(x)$$ donde: $$F_{vista,ps} = \frac{1}{4\pi X_h^2}$$ $$X_h = \sqrt{(h_{fuente} + L_f/2)^2 + x^2}$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $q(x)$ | Radiación térmica a la distancia $x$ | kW/m² | | $f_r$ | Fracción de radiación (especificada por el usuario) | adimensional | | $X_h$ | Distancia desde el punto fuente al receptor | m | | $h_{fuente}$ | Altura de la fuga sobre el suelo | m | *Referencia: CCPS, "Guidelines for CPQRA", 2da Ed., Ec. 2.2.65, p. 239* ### 3.12 Distancia a una Radiación Dada (Cálculo Inverso) La distancia $x$ a la cual se recibe una radiación térmica especificada $q^*$ se encuentra resolviendo: $$q(x) - q^* = 0$$ Esto se resuelve usando el **método de Newton-Raphson** (paquete npm `newton-raphson-method`), con el ancho superior de la llama como estimación inicial. Un método iterativo alternativo con incrementos de 0.1 m también está implementado. ### 3.13 Análisis Probit **Dosis térmica:** $$D = t_{exp} \times (q \times 1000)^{4/3}$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $D$ | Dosis térmica | $(W/m^2)^{4/3} \cdot s$ | | $t_{exp}$ | Tiempo de exposición | s | | $q$ | Radiación térmica (convertida de kW a W) | W/m² | **Ecuaciones Probit:** | Efecto | Ecuación | Referencia | |--------|----------|------------| | Quemadura 1er grado | $Pr = -39.83 + 3.0186 \ln(D)$ | TNO Green Book, Ec. 3.4, p. 20 | | Quemadura 2do grado | $Pr = -43.14 + 3.0186 \ln(D)$ | TNO Green Book, Ec. 3.7, p. 20 | | Mortalidad (CCPS) | $Pr = -14.9 + 2.56 \ln(D / 10000)$ | CCPS, p. 269 | | Mortalidad (TNO) | $Pr = -36.38 + 2.56 \ln(D)$ | TNO Green Book, Ec. 3.5, p. 20 | JetFire usa la metodología CCPS para el cálculo probit de mortalidad por defecto. **Conversión de Probit a probabilidad:** $$P(\%) = f_k \times 50 \times \left(1 + \text{sgn}(Pr - 5) \times \text{erf}\left(\frac{|Pr - 5|}{\sqrt{2}}\right)\right)$$ | Variable | Descripción | Valor | |----------|-------------|-------| | $f_k$ | Factor de protección (sin ropa protectora) | 1.0 | | $Pr$ | Valor probit | adimensional | | $\text{erf}$ | Función error (serie de Taylor, 50 términos) | adimensional | El factor de protección $f_k = 1.0$ asume que no se usa ropa protectora. Esto es conservador para trabajadores industriales que pueden usar ropa ignífuga. *Referencias: TNO Green Book (CPR 16E), p. 20; CCPS, p. 269* ### 3.14 Efecto Domino — Tiempo de Fallo (Cozzani) **Correlaciones TTF por tipo de recipiente:** | Tipo de Recipiente | Ecuación | Referencia | |--------------------|----------|------------| | Atmosférico | $TTF = \exp(-1.13 \ln(q) - 2.667 \times 10^{-5} V + 9.877)$ | Cozzani et al. | | Presurizado | $TTF = \exp(-0.95 \ln(q) + 8.845 V^{0.032})$ | Cozzani et al. | | Engolfamiento total | $TTF = \exp(-1.29 \ln(q) + 10.97 V^{0.026})$ | Cozzani et al. | | Variable | Descripción | Unidad | |----------|-------------|--------| | $TTF$ | Tiempo hasta el fallo | s | | $q$ | Radiación térmica recibida | kW/m² | | $V$ | Volumen del recipiente | m³ | **Criterio de engolfamiento total:** Un equipo se considera totalmente engolfado cuando su distancia a la fuente del jet fire es menor a $1.1 \times L_f$ (margen de seguridad del 10%). **Probit de efecto domino (Cozzani):** $$Pr_{domino} = 9.25 - 1.847 \times \ln(TTF / 60)$$ *Referencia: Cozzani, V. et al., "The assessment of risk caused by domino effect in quantitative area risk analysis", Journal of Hazardous Materials, p. 300* ### 3.15 Estimación de Fatalidades Las fatalidades se estiman mediante **integración por anillos concéntricos**: 1. El área alrededor de la fuente se divide en anillos concéntricos de ancho $\Delta r = 5$ m 2. Para cada anillo a distancia $r_i$: - Se calcula la radiación térmica $q(r_i)$ - Se computa la dosis térmica $D_i = t_{exp} \times (q_i \times 1000)^{4/3}$ - El valor probit se convierte a probabilidad de mortalidad $P_i$ - Área del anillo: $A_i = \pi (r_{ext}^2 - r_{int}^2)$ donde $r_{int} = r_i - \Delta r/2$, $r_{ext} = r_i + \Delta r/2$ - Fatalidades en el anillo: $F_i = A_i \times \rho_{pob} \times P_i / 100$ 3. Fatalidades totales: $F = \sum F_i$ para todos los anillos donde $P_i \geq 0.1\%$ 4. Si $F > 0.6$, el resultado es $\lceil F \rceil$; en caso contrario, el resultado es 0 **Exclusión de receptores poligonales:** Cuando se definen receptores poligonales, sus áreas se sustraen de los anillos concéntricos para evitar doble conteo de población (las poblaciones de los polígonos se calculan por separado con discretización espacial distribuida). | Parámetro | Valor por Defecto | |-----------|-------------------| | Incremento del anillo | 5 m | | Radio máximo | 10 km | | Umbral mínimo de probabilidad | 0.1% | | Metodología TNO | Usada para fatalidades basadas en anillos | *Referencia: CCPS, "Guidelines for CPQRA", 2da Ed., p. 273* --- ## 4. Justificación de la Selección Metodológica ### 4.1 Modelo Frustum de Chamberlain (Solid Plume) El modelo de Chamberlain (1987) fue seleccionado para el enfoque Solid Plume porque: - Proporciona una **geometría de frustum validada** para la forma de la llama, permitiendo cálculos precisos de radiación en campo cercano - El modelo ha sido **extensamente validado** contra experimentos de jet fire de gas natural a escala real - Considera los efectos del viento sobre la inclinación, separación y variación de ancho de la llama - El cálculo del factor de vista captura la naturaleza direccional de la radiación desde una fuente extendida - Es el **modelo estándar utilizado por ALOHA** (NOAA/EPA) y recomendado en el TNO Yellow Book ### 4.2 Modelo Point Source de CCPS El modelo Point Source fue seleccionado como alternativa porque: - Proporciona **estimaciones conservadoras** adecuadas para evaluación preliminar de riesgos - Requiere menos parámetros de entrada (no necesita geometría de llama para flujo conocido) - El modelo es **computacionalmente más simple** y evita problemas de convergencia del factor de vista - Es recomendado por CCPS para estimaciones de radiación en campo lejano donde la geometría de la llama es menos crítica ### 4.3 Método Newton-Raphson La iteración Newton-Raphson se usa para dos propósitos: 1. **Cálculo de longitud de llama** (resolver la ecuación no lineal de $Y$) — Proporciona convergencia rápida (típicamente 3–5 iteraciones) para la ecuación implícita de Chamberlain 2. **Cálculo inverso de distancia** — Encontrar la distancia a la cual ocurre un nivel dado de radiación térmica Se utiliza el paquete npm `newton-raphson-method` para el cálculo inverso de distancia, con el ancho superior de la llama como estimación inicial. ### 4.4 Doble Metodología Probit Se dispone de dos enfoques probit: - **TNO (por defecto para fatalidades por anillos):** Metodología estándar europea, ampliamente utilizada en ACR - **CCPS (por defecto para probit de JetFire):** Metodología estándar americana, matemáticamente equivalente cuando se normaliza correctamente ### 4.5 Correlaciones de Domino de Cozzani Las correlaciones de Cozzani son las únicas correlaciones empíricas publicadas específicamente desarrolladas para estimar el tiempo de fallo de recipientes industriales bajo carga de radiación térmica. Están respaldadas por datos experimentales y distinguen entre el comportamiento de recipientes atmosféricos y presurizados. --- ## 5. Limitaciones del Modelo 1. **Solo fase gaseosa** — El modelo requiere $\gamma > 1.0$ (gas ideal). Liberaciones bifásicas (gas-líquido) no están soportadas. 2. **Flujo en estado estacionario** — La tasa de liberación se asume constante durante toda la duración del evento. El vaciado transitorio del recipiente no se modela. 3. **Comportamiento de gas ideal** — Los efectos de gas real (factor de compresibilidad $Z \neq 1$) no se consideran. Esto puede introducir errores a presiones muy altas. 4. **Terreno plano, sin obstáculos** — El modelo asume propagación sin obstáculos de la radiación térmica. Edificios, características del terreno y efectos de apantallamiento no se consideran. 5. **Sin corrección por hollín** — $SEP_{act} = SEP_{max}$. Para hidrocarburos pesados con producción significativa de hollín, el poder emisivo real puede ser menor al calculado. Esto hace el resultado conservador. 6. **Transmisividad simplificada** — El modelo Wayne (CCPS 2.2.42) es una correlación simplificada. Modelos más detallados (ej. LOWTRAN) pueden dar resultados diferentes a largas distancias o condiciones extremas de humedad. 7. **Factor de protección $f_k = 1.0$** — No se asume ropa protectora. Esto es conservador para trabajadores industriales que pueden usar ropa ignífuga. 8. **Aproximación frustum** — La forma real de la llama se aproxima como un cono truncado (frustum). Formas complejas de llama debidas a viento cruzado, efectos de flotabilidad o turbulencia se simplifican. 9. **Point Source ignora geometría** — El modelo Point Source no considera la forma de la llama, haciéndolo menos preciso en campo cercano pero conservador en general. 10. **Convergencia Newton-Raphson** — El solucionador iterativo puede fallar en converger para combinaciones extremas de parámetros. El método iterativo alternativo (incrementos de 0.1 m) está disponible pero es más lento. 11. **Densidad poblacional uniforme** — El cálculo base de fatalidades asume densidad poblacional espacialmente uniforme. Esta limitación se mitiga con el soporte de receptores poligonales, que permite modelado de población distribuida espacialmente. 12. **Validación de Chamberlain** — El modelo fue validado principalmente contra experimentos de jet fire de gas natural (metano). La aplicación a otras sustancias, particularmente hidrocarburos pesados, debe tratarse con precaución. 13. **Correlaciones de Cozzani** — Las correlaciones TTF aplican solo a recipientes atmosféricos y presurizados. Otros tipos de equipo (reactores, intercambiadores de calor, columnas) se mapean al tipo de recipiente más cercano disponible. 14. **Efectos atmosféricos** — Los efectos detallados de turbulencia atmosférica sobre la geometría de la llama y la propagación de la radiación no se modelan. --- ## 6. Rango de Aplicabilidad | Parámetro | Rango Típico | Notas | |-----------|--------------|-------| | Presión interna | 1–200 atm | Presiones más altas pueden violar la suposición de gas ideal | | Diámetro del orificio | 1–500 mm | Diámetros muy grandes pueden producir comportamiento no-jet | | Peso molecular | 2–150 g/mol | Factor de corrección de MW aplicado para SEP | | Velocidad del viento | 0–30 m/s | Modelo validado principalmente para vientos moderados | | Temperatura del gas | > punto de ebullición | Debe estar en fase gaseosa a condiciones de liberación | | Relación de calores específicos | $\gamma > 1.0$ | Estrictamente solo liberaciones en fase gaseosa | | Ángulo del orificio | 0–180° | 90° = horizontal, relativo al viento | --- ## 7. Referencias *Complex Hazardous Activities: Preventing and Managing Industrial Disasters*. Safety in Chemical Engineering. Ecuaciones B2.13–B2.15 (p. 36), C2.50–C2.60 (pp. 108–110), C2.68 (p. 111), C2.73 (p. 112), C2.84 (p. 119). *Methods for the Calculation of Physical Effects Due to Releases of Hazardous Materials*. Committee for the Prevention of Disasters, Países Bajos. Geometría de llama pp. 6.97–6.101, Ecs. 6.30–6.56. *Methods for the Determination of Possible Damage to People and Objects Resulting from Releases of Hazardous Materials*. Ecuaciones probit, p. 20, Ecs. 3.4, 3.5, 3.7. Center for Chemical Process Safety, AIChE. Modelo point source Ecs. 2.2.64–2.2.65 (p. 239), transmisividad Ecs. 2.2.42–2.2.43 (p. 209), probit (p. 269), fatalidades (p. 273). "Developments in design methods for predicting thermal radiation from flares." *Chemical Engineering Research and Design*, 65, pp. 299–309. Modelo frustum, fracción radiada, correlaciones de geometría de llama. NOAA/EPA. Corrección por peso molecular para fracción radiada (p. 72), implementación de Chamberlain (p. 75). "The assessment of risk caused by domino effect in quantitative area risk analysis." *Journal of Hazardous Materials*. Correlaciones TTF para recipientes atmosféricos/presurizados (p. 300). "An Analysis and Interpretation of Casualty Rates in Major Hazard Events." Referenciado en cálculos probit de sobrepresión (FatalityUtils). --- # Incendio de Alberca Source: https://tekrisk.com/es/docs/risk-models/pool-fire Documentación técnica del modelo de consecuencias Pool Fire (Incendio de Alberca) — tasa de combustión, geometría de llama, radiación térmica, análisis Probit, efectos dominó y estimación de fatalidades ## 1. Introducción y Fenómeno Físico ### 1.1 Pool Fire (Incendio de Alberca) El modelo **Pool Fire** (Incendio de Alberca) simula la combustión en régimen estacionario de un líquido inflamable que se ha derramado sobre una superficie plana y se ha encendido. El modelo calcula: - El diámetro máximo de la alberca según el tipo de derrame - La tasa de combustión en masa por unidad de área (*burning rate*) - La geometría de la llama (altura, ángulo de inclinación por viento) - La intensidad de radiación térmica a cualquier distancia - Los efectos sobre personas (quemaduras 1.° y 2.° grado, muertes) mediante funciones Probit - El efecto dominó sobre recipientes vecinos mediante correlaciones de Cozzani - Las fatalidades esperadas integrando la radiación térmica con la densidad de población ### 1.2 Contexto Industrial Los incendios de alberca producen radiación térmica sostenida capaz de causar quemaduras graves y fatalidades. La zona de peligro depende del tamaño de la alberca, las propiedades del combustible, el viento y la humedad atmosférica. Derrame en régimen permanente; el diámetro crece hasta equilibrio entre aporte y combustión Volumen liberado de una vez; el diámetro máximo depende del volumen total Diámetro fijo definido por el usuario (diámetro interior del dique) Diámetro equivalente calculado a partir de largo × ancho del dique ### 1.3 Alcance del Modelo El modelo calcula: 1. Diámetro y geometría de la alberca según el tipo de fuente (`continuous`, `massive`, `circularDike`, `rectangularDike`) 2. Tasa de combustión mediante los métodos Burgess-Strasser, Mudan o valor tabulado (gasolina) 3. Altura de llama con correlaciones Thomas o Pritchard-Binding 4. Poder de Emisión Superficial (SEP) con corrección por apantallamiento de hollín en hidrocarburos 5. Radiación térmica a cualquier distancia — modelos Point Source o Solid Plume (cilindro inclinado) 6. Distancia a un nivel de radiación objetivo (problema inverso por Newton-Raphson) 7. Dosis térmica y probabilidad de quemaduras/fatalidades mediante funciones Probit (TNO y CCPS) 8. Tiempo de fallo de recipientes vecinos por efecto dominó (correlaciones de Cozzani) 9. Fatalidades poblacionales por integración en anillos concéntricos --- ## 2. Secuencia de Cálculo {`flowchart TD A["Datos de entrada
(combustible, tipo de fuente, clima)"] --> B["Propiedades químicas
YAWS: ΔHvap, cP, ρL a Tamb y Tb"] B --> C["Tasa de combustión
ṁ'' = f(ΔHc, ΔHvap, cP, ρL)"] C --> D["Diámetro de alberca
D = f(tipoFuente, Q o V)"] D --> E["Geometría de llama
u*, H (Thomas|Pritchard), θ, SEP"] E --> F["Para cada distancia x:
F_vista, τ_atm, q(x)"] F --> G["Problema directo
q(x)"] F --> H["Problema inverso
x(q_objetivo) — Newton-Raphson"] G --> I["Dosis térmica
D_dosis = t_exp · (q×10³)^(4/3)"] H --> I I --> J["Análisis Probit
(Quemaduras 1°/2°, Muertes TNO/CCPS, Dominó)"] J --> K["Cálculo de fatalidades
(Anillos concéntricos + FatalityUtils)"] style A fill:#e1f5fe style K fill:#c8e6c9 style F fill:#fff3e0`}
**Propiedades químicas** — Obtener propiedades del combustible de la base de datos YAWS a $T_{amb}$: entalpía de vaporización $\Delta H_{vap}$, capacidad calorífica $c_P$ y densidad líquida $\rho_L$. **Tasa de combustión** — Calcular $\dot{m}''$ [kg/(m²·s)] con los métodos Burgess-Strasser, Mudan o valor tabulado (gasolina). **Diámetro de alberca** — Determinar el diámetro máximo $D$ según el tipo de fuente: fuga continua, masiva, dique circular o rectangular. **Geometría de llama** — Calcular la velocidad de viento adimensional $u^*$, la altura de llama $H$ (Thomas o Pritchard-Binding), el ángulo de inclinación $\theta$ y el SEP. **Radiación térmica** — Calcular la radiación $q(x)$ [kW/m²] a distancias objetivo usando el modelo Point Source o Solid Plume (cilindro inclinado). **Análisis Probit** — Convertir la dosis térmica en probabilidades de quemaduras de 1.°/2.° grado, muertes (TNO o CCPS) y efecto dominó (Cozzani). **Estimación de fatalidades** — Integrar la probabilidad de muerte en anillos anulares concéntricos para estimar el total de víctimas. --- ## 3. Propiedades Químicas (Correlaciones YAWS) Todas las propiedades del combustible se obtienen de la base de datos YAWS evaluadas a la temperatura ambiente $T_{amb}$ (en Kelvin). ### 3.1 Entalpía de Vaporización a $T_{amb}$ $$ \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}] $$ | Símbolo | Descripción | Fuente | |---------|-------------|--------| | $h_{va}$ | Coeficiente A de entalpía de vaporización | YAWS, p. 109 | | $h_{vn}$ | Exponente de la correlación | YAWS, p. 109 | | $T_c$ | Temperatura crítica (K) | YAWS | | $M_w$ | Peso molecular (g/mol) | YAWS | **Código:** `PoolFire.js`, líneas 81–85. ### 3.2 Capacidad Calorífica del Líquido $$ c_P(T_{amb}) = \frac{c_{pla} + c_{plb} \cdot T + c_{plc} \cdot T^2 + c_{pld} \cdot T^3}{M_w} \quad [\text{kJ/(kg·K)}] $$ donde $T = T_{amb}$ en Kelvin. **Referencia:** YAWS, *Chemical Properties Handbook*, 1999. **Código:** `PoolFire.js`, líneas 91–96. ### 3.3 Densidad del Líquido (a $T_{amb}$ y a $T_b$) $$ \rho_L(T) = d_{lqa} \cdot d_{lqb}^{-\left(1 - T/T_c\right)^{d_{lqn}}} \times 10^3 \quad [\text{kg/m}^3] $$ La densidad se calcula en dos puntos: - $\rho_L(T_{amb})$: temperatura ambiente (para conversión de masa a volumen) - $\rho_L(T_b)$: temperatura de ebullición (para la tasa de regresión $v_f$) **Referencia:** YAWS, p. 185. **Código:** `PoolFire.js`, líneas 98–113. ### 3.4 Entalpía de Vaporización a $T_b$ (Corrección CCPS) $$ \Delta H_{vap}(T_b) = \Delta H_{vap}(T_{amb}) + c_P \cdot (T_b - T_{amb}) \quad [\text{kJ/kg}] $$ **Referencia:** CCPS, *Guidelines for CPQRA*, 2nd Ed., p. 234. **Código:** `PoolFire.js`, líneas 119–121. --- ## 4. Tasa de Combustión — `burningRate()` La tasa de combustión $\dot{m}''$ [kg/(m²·s)] es la masa de combustible quemada por unidad de área y tiempo. Determina la intensidad del incendio y el tamaño de la alberca. ### 4.1 Caso Especial: GASOLINA Para gasolina (*GASOLINE-s*), se usa directamente el valor experimental tabulado: $$ \dot{m}'' = 0.055 \quad [\text{kg/(m}^2\text{·s)}] $$ **Código:** `PoolFire.js`, líneas 291–293. ### 4.2 Método Burgess-Strasser (Kakosimos) $$ \dot{m}'' = \rho_L(T_b) \cdot 1.27 \times 10^{-6} \cdot \frac{\Delta H_c}{\Delta H_{vap}(T_b) + c_P \cdot (T_b - T_{amb})} $$ **Referencia:** Kakosimos, K.E. et al., *Safety in Chemical Engineering*, p. 82. **Código:** `PoolFire.js`, líneas 298–305. ### 4.3 Método Mudan $$ \dot{m}'' = \frac{0.001 \cdot \Delta H_{vap}(T_b)}{\Delta H_{vap}(T_{amb}) + c_P \cdot (T_b - T_{amb})} $$ **Referencia:** Mudan & Croce, *SFPE Handbook of Fire Protection Engineering*, 1995; citado en Kakosimos p. 83. **Código:** `PoolFire.js`, líneas 307–313. El denominador en los métodos Burgess-Strasser y Mudan incluye el término $c_P \cdot (T_b - T_{amb})$ para representar el calor sensible necesario para llevar el líquido a su temperatura de ebullición antes de evaporarse. --- ## 5. Diámetro de la Alberca — `poolDiameter()` ### 5.1 Fuga Continua (CCPS p. 228) El diámetro máximo se alcanza cuando la tasa de expansión horizontal iguala la tasa de combustión. La velocidad vertical de combustión es: $$ y_{max} = 1.27 \times 10^{-6} \cdot \frac{\Delta H_c}{\Delta H_{vap}(T_b)} \quad [\text{m/s}] $$ El diámetro máximo en equilibrio: $$ D = 2 \sqrt{\frac{Q_{spill}}{\pi \cdot y_{max}}} \quad [\text{m}] $$ donde $Q_{spill}$ es la tasa de derrame volumétrico [m³/s]. Para GASOLINA: $y_{max} = 7 \times 10^{-5}$ m/s; para LP GAS: $y_{max} = 2 \times 10^{-4}$ m/s (valores tabulados). **Referencia:** CCPS, p. 228. **Código:** `PoolFire.js`, líneas 331–345. ### 5.2 Fuga Masiva / Instantánea (CCPS p. 234) Para un volumen $V$ [m³] liberado instantáneamente: $$ D = 2 \cdot \left(\frac{V^3 \cdot g}{v_f^2}\right)^{1/8} $$ donde la tasa de regresión del combustible es: $$ v_f = \frac{\dot{m}''}{\rho_L(T_b)} \quad [\text{m/s}] $$ **Referencia:** CCPS, p. 234. **Código:** `PoolFire.js`, líneas 347–356. ### 5.3 Dique Circular El diámetro lo especifica directamente el usuario (diámetro interior del dique). No requiere cálculo adicional. **Código:** `PoolFire.js`, línea 357. ### 5.4 Dique Rectangular El diámetro equivalente se obtiene igualando el área rectangular con la de un círculo: $$ D_{equiv} = \sqrt{\frac{4 \cdot L \cdot W}{\pi}} $$ donde $L$ es el largo y $W$ el ancho del dique [m]. **Código:** `PoolFire.js`, líneas 359–363. --- ## 6. Cálculos de Tiempo ### 6.1 Fuga Continua — `timeToReachPoolSize()` $$ t_{eq} = 0.564 \cdot \frac{D}{\left(g \cdot v_f \cdot D\right)^{1/3}} \quad [\text{s}] $$ **Código:** `PoolFire.js`, líneas 377–379. ### 6.2 Fuga Masiva $$ t_{eq} = 0.6743 \cdot \left(\frac{V}{g \cdot v_f^2}\right)^{1/4} \quad [\text{s}] $$ **Código:** `PoolFire.js`, líneas 381–386. ### 6.3 Duración del Incendio — `timeDurationPoolFire(V)` $$ t_{dur} = \frac{4 \cdot V}{\pi \cdot D^2 \cdot v_f} \quad [\text{s}] $$ donde $V$ es el volumen de líquido disponible [m³]. **Referencia:** Basado en geometría de alberca circular con tasa de regresión $v_f$. **Código:** `PoolFire.js`, líneas 397–405. --- ## 7. Velocidad del Viento Adimensional — `ux()` $$ u^* = u_w \cdot \left(\frac{g \cdot \dot{m}'' \cdot D}{\rho_{air}}\right)^{-1/3}, \quad u^* \geq 1.0 $$ El mínimo físico $u^* = 1.0$ corresponde a la condición sin viento. La densidad del aire seco usa la corrección de altitud ISA 1976: $$ P = 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}} $$ **Referencia:** ISA 1976 — Atmósfera Estándar Internacional. **Código:** `PoolFire.js`, líneas 414–430. --- ## 8. Altura de la Llama — `alturaFlama()` ### 8.1 Método Thomas — Sin viento ($u_w = 0$) $$ H = 42 \cdot D \cdot \left(\frac{\dot{m}''}{\rho_{air} \sqrt{g \cdot D}}\right)^{0.61} $$ **Referencia:** Thomas, P.H., *The size of flames from natural fires*, 1963; Kakosimos p. 86. **Código:** `PoolFire.js`, líneas 464–470. ### 8.2 Método Thomas — Con viento $$ H = 55 \cdot D \cdot \left(\frac{\dot{m}''}{\rho_{air} \sqrt{g \cdot D}}\right)^{0.67} \cdot (u^*)^{-0.21} $$ **Referencia:** Thomas, 1963; Kakosimos p. 86. **Código:** `PoolFire.js`, líneas 472–477. ### 8.3 Método Pritchard-Binding $$ H = 10.615 \cdot D \cdot \left(\frac{\dot{m}''}{\rho_{air} \sqrt{g \cdot D}}\right)^{0.305} \cdot (u^*)^{-0.03} $$ **Referencia:** Pritchard, M.J. & Binding, T.M., *FIRE2*, IChemE Symposium Series No. 130, 1992. **Código:** `PoolFire.js`, líneas 479–484. Thomas sobreestima levemente la altura para grandes albercas (D > 50 m) con viento fuerte. Pritchard-Binding fue desarrollado específicamente para hidrocarburos y produce alturas algo menores; se recomienda para análisis conservadores con valores bajos de $u^*$. --- ## 9. Poder de Emisión Superficial (SEP) — `SEP()` El SEP [kW/m²] representa la potencia radiante emitida por unidad de área de la superficie de la llama. 15 m (Mudan-Croce)", "No-hidrocarburos o D ≤ 15 m"]}> Para grandes albercas de hidrocarburos (alcanos, gasolina, diésel, turbosina), el hollín reduce significativamente la radiación efectiva. La correlación biexponencial modela el efecto de apantallamiento: $$ SEP = 140 \cdot e^{-0.12 D} + 20 \cdot (1 - e^{-0.12 D}) \quad [\text{kW/m}^2] $$ El primer término representa la radiación del núcleo luminoso; el segundo, la radiación de fondo de la columna de humo. El código identifica hidrocarburos por la presencia de los sufijos `ANE`, `GAS`, `GASOLINE`, `DIESEL` o `TURBO` en el nombre de la sustancia. **Referencia:** Mudan & Croce, *SFPE Handbook*, 1995; Kakosimos p. 88. **Código:** `PoolFire.js`, líneas 505–508. Para combustibles no aromáticos o albercas pequeñas donde el hollín no domina: $$ SEP = \frac{0.35 \cdot \dot{m}'' \cdot \Delta H_c}{1 + 72 \cdot (\dot{m}'')^{0.61}} \quad [\text{kW/m}^2] $$ **Código:** `PoolFire.js`, líneas 510–513. --- ## 10. Ángulo de Inclinación de la Llama — `anguloFlama()` El viento inclina la llama respecto a la vertical. El ángulo $\theta$ [rad] se obtiene de los números de Froude y Reynolds: $$ Fr = \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} $$ $$ \theta = \arcsin\!\left(\frac{\sqrt{4c^2 + 1} - 1}{2c}\right) \quad [\text{rad}] $$ Para $u_w \leq 0$ se retorna $\theta = 0$ (llama vertical). La viscosidad cinemática $\nu$ [m²/s] se obtiene de un polinomio empírico en $T_{amb}$ [K]. **Código:** `PoolFire.js`, líneas 523–542. --- ## 11. Factor de Vista — `viewFactor(x)` ### 11.1 Modelo Point Source Asume que toda la energía se irradia desde un punto geométrico en el centro de la llama: $$ F = \frac{1}{4\pi x^2} $$ Válido para $x \gg D$. Subestima la radiación en campo cercano. **Código:** `PoolFire.js`, línea 610. ### 11.2 Modelo Solid Plume Trata la llama como un cilindro sólido inclinado. Las variables adimensionales son: $$ \alpha = \frac{H}{R}, \quad \beta = \frac{x}{R}, \quad R = \frac{D}{2} $$ $$ A = \sqrt{\alpha^2 + (\beta+1)^2 - 2\alpha(\beta+1)\sin\theta}, \quad B = \sqrt{\alpha^2 + (\beta-1)^2 - 2\alpha(\beta-1)\sin\theta} $$ $$ C = \sqrt{1 + (\beta^2-1)\cos^2\theta}, \quad D_v = \sqrt{\frac{\beta-1}{\beta+1}}, \quad E = \frac{\alpha\cos\theta}{\beta - \alpha\sin\theta}, \quad F_2 = \sqrt{\beta^2-1} $$ **Componente vertical $F_v$:** $$ F_v = \frac{1}{\pi}\!\left[-E\arctan(D_v) + E\cdot\frac{\alpha^2+(\beta+1)^2-2\beta(1+\alpha\sin\theta)}{AB}\arctan\!\frac{AD_v}{B} + \frac{\cos\theta}{C}\!\left(\arctan\!\frac{\alpha\beta - F_2^2\sin\theta}{F_2 C} + \arctan\!\frac{F_2^2\sin\theta}{F_2 C}\right)\right] $$ **Componente horizontal $F_h$:** $$ F_h = \frac{1}{\pi}\!\left[\arctan\!\frac{1}{D_v} + \frac{\sin\theta}{C}\!\left(\arctan\!\frac{\alpha\beta - F_2^2\sin\theta}{F_2 C} + \arctan\!\frac{F_2\sin\theta}{C}\right) - \frac{\alpha^2+(\beta+1)^2-2(\beta+1+\alpha\beta\sin\theta)}{AB}\arctan\!\frac{AD_v}{B}\right] $$ **Factor de vista resultante:** $$ F_{vista} = \sqrt{F_v^2 + F_h^2} $$ **Código:** `PoolFire.js`, líneas 550–611. --- ## 12. Transmisividad Atmosférica — `ta(x)` La humedad del aire atenúa la radiación térmica. La transmisividad $\tau$ se calcula con la correlación de Wayne (citada en CCPS): $$ \tau = 2.02 \cdot (P_w \cdot x)^{-0.09} $$ La presión parcial de vapor de agua $P_w$ [Pa]: $$ P_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 $$ donde $HR$ es la humedad relativa [%] y $T = T_{amb}$ [K]. **Código:** `PoolFire.js`, líneas 620–638. --- ## 13. Radiación Térmica — `qTermAtX(x)` $$ 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] $$ donde: - $F_\eta$ — fracción de energía radiada (0.15–0.35, configurable por usuario; CCPS p. 230–232, Tabla 2.27) - $A_{pool} = \pi D^2 / 4$ — área de la alberca [m²] **Código:** `PoolFire.js`, líneas 652–663. $$ q(x) = SEP \cdot F_{vista}(x) \cdot \tau(x) \quad [\text{kW/m}^2] $$ **Código:** `PoolFire.js`, línea 667. --- ## 14. Distancia a un Nivel de Radiación Dado — `xTerm(q_objetivo)` Dado un nivel de radiación objetivo $q_{obj}$ [kW/m²], la distancia $x$ [m] se determina por **Newton-Raphson**. Para el modelo Point Source: $$ f(x) = \frac{Z \cdot P_w^{-0.09}}{4\pi} \cdot x^{-2.09} - q_{obj} = 0, \qquad Z = 2.02 \cdot F_\eta \cdot \dot{m}'' \cdot \Delta H_c \cdot A_{pool} $$ $$ 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)} $$ Tolerancia de convergencia: 0.01 m. **Código:** `PoolFire.js`, líneas 681–737. --- ## 15. Dosis Térmica — `dose(x)` $$ D_{dosis} = t_{exp} \cdot \left[q(x) \times 10^3\right]^{4/3} \quad \left[(\text{W/m}^2)^{4/3} \cdot \text{s}\right] $$ El factor $10^3$ convierte $q$ de kW/m² a W/m². **Código:** `PoolFire.js`, línea 758. --- ## 16. Efectos — Funciones Probit Las funciones Probit transforman la dosis térmica en probabilidad de daño mediante la función de distribución normal estándar. $$ Pr = -39.83 + 3.0186 \cdot \ln(D_{dosis}) $$ **Referencia:** TNO Green Book (CPR 14E), 1997, p. 20, ec. 3.4. **Código:** `ProbitUtils.js`, línea 90. $$ Pr = -43.14 + 3.0186 \cdot \ln(D_{dosis}) $$ **Referencia:** TNO Green Book (CPR 14E), 1997, p. 20, ec. 3.7. **Código:** `ProbitUtils.js`, línea 94. $$ Pr = -36.38 + 2.56 \cdot \ln(D_{dosis}) $$ **Referencia:** TNO Green Book (CPR 14E), 1997, p. 20, ec. 3.5. **Código:** `ProbitUtils.js`, línea 103. $$ Pr = -14.9 + 2.56 \cdot \ln\!\left(\frac{D_{dosis}}{10\,000}\right) $$ El modelo Pool Fire utiliza metodología CCPS para el cálculo de fatalidades por integración de densidad de población. **Referencia:** CCPS, *Guidelines for CPQRA*, 2nd Ed., p. 269. **Código:** `ProbitUtils.js`, línea 100. $$ P\% = 50 \cdot \left(1 + \frac{Pr - 5}{|Pr - 5|} \cdot \text{erf}\!\left(\frac{|Pr - 5|}{\sqrt{2}}\right)\right) $$ Límites: $Pr < 0 \Rightarrow P = 0\%$; $Pr > 8.09 \Rightarrow P = 100\%$. **Código:** `ProbitUtils.js`, líneas 125–145. --- ## 17. Tiempo de Fallo de Recipientes (Efecto Dominó) — Correlaciones de Cozzani $$ TTF = \exp\!\left(-1.13 \cdot \ln(q) - 0.00002667 \cdot V + 9.877\right) $$ $$ TTF = \exp\!\left(-0.95 \cdot \ln(q) + 8.845 \cdot V^{0.032}\right) $$ Condición: distancia del equipo al centro de la alberca < 1.1 × radio de la alberca. $$ TTF = \exp\!\left(-1.29 \cdot \ln(q) + 10.97 \cdot V^{0.026}\right) $$ $$ Pr_{domino} = 9.25 - 1.847 \cdot \ln\!\left(\frac{TTF}{60}\right) $$ **Referencia:** Cozzani, V. et al., *Journal of Hazardous Materials*, Vol. 127, 2006, p. 300. **Código:** `ProbitUtils.js`, líneas 50–63 (TTF), línea 108 (Probit dominó). --- ## 18. Cálculo de Fatalidades — `fatalidades()` El método integra numéricamente la probabilidad de muerte en anillos anulares concéntricos alrededor de la fuente: $$ N_{fatal} = \sum_{r_i} P_{muerte}(r_i) \cdot \rho_{pop} \cdot A_{anillo}(r_i) $$ | Símbolo | Descripción | Unidades | |---------|-------------|----------| | $P_{muerte}(r_i)$ | Probabilidad de muerte a distancia $r_i$ (metodología CCPS) | % | | $\rho_{pop}$ | Densidad de población | personas/m² | | $A_{anillo}(r_i)$ | Área del anillo anular | m² | Para receptores poligonales (polígonos de población conocida), el módulo `FatalityUtils.js` utiliza una malla de 10 m para distribuir la población dentro del polígono y excluir esa área del cálculo de densidad uniforme. **Código:** `PoolFire.js`, líneas 818–860; delegado a `FatalityUtils.js`. --- ## 19. Limitaciones del Modelo El modelo asume una llama de forma cilíndrica (solid plume). Las llamas reales tienen forma cónica o irregular, especialmente con viento fuerte. Se asume que el SEP es constante en toda la superficie de la llama. En llamas reales el SEP varía con la altura (mayor en la base, menor en el penacho de humo). El modelo considera un único ángulo de viento; no modela variabilidad direccional ni turbulencia. No considera pendientes del terreno, obstáculos ni confinamiento tridimensional. Los modelos de diámetro asumen equilibrio. El comportamiento transitorio durante el crecimiento de la alberca no se simula en el cálculo de radiación. La evaporación adicional inducida por la radiación sobre el líquido no derramado no se considera. Válidas únicamente para recipientes atmosféricos y presurizados. No aplican a reactores, intercambiadores u otros equipos sin correlación experimental disponible. La correlación de Wayne es válida para distancias de 10 m a 1000 m. Para distancias muy cortas puede sobreestimar la atenuación. La simplificación de punto fuente es válida para $x \gg D$. Subestima la radiación en campo cercano. --- ## 20. Referencias Bibliográficas | # | Referencia | |---|-----------| | 1 | Kakosimos, K.E. et al. — *Safety in Chemical Engineering*. Papasotiriou Publications. (pp. 82, 83, 86, 88) | | 2 | CCPS — *Guidelines for Chemical Process Quantitative Risk Analysis*, 2nd Ed. AIChE, New York, 1999. (pp. 228, 230–234, 269) | | 3 | TNO — *Methods for the Calculation of Physical Effects* (CPR 14E, "Green Book"), 3rd Ed. 1997. (p. 20, ecs. 3.4, 3.5, 3.7) | | 4 | YAWS, C.L. — *Chemical Properties Handbook*. McGraw-Hill, New York, 1999. (pp. 109, 185, 582) | | 5 | Thomas, P.H. — *The size of flames from natural fires*. 9th Intl. Symposium on Combustion, 1963, pp. 844–859. | | 6 | Pritchard, M.J. & Binding, T.M. — *FIRE2: A new approach for predicting thermal hazards from hydrocarbon pool fires*. IChemE Symposium Series No. 130, 1992. | | 7 | Cozzani, V., Gubinelli, G., Antonioni, G., Spadoni, G. & Zanelli, S. — *The assessment of risk caused by domino effect in quantitative area risk analysis*. J. Hazardous Materials, Vol. 127, 2006, pp. 14–30. | | 8 | Mudan, K.S. & Croce, P.A. — *Fire hazard calculations for large open hydrocarbon fires*, SFPE Handbook of Fire Protection Engineering. SFPE/NFPA, 1995. | | 9 | ISA — *International Standard Atmosphere*. ICAO Doc 7488/2, 1976. (Fórmula presión-altitud) | --- # Explosión de Nube de Vapor Source: https://tekrisk.com/es/docs/risk-models/vce Documentacion tecnica del modelo de consecuencias VCE (Explosion de Nube de Vapor) — metodo TNT equivalente, sobrepresion Lees/Brasie, analisis probit y estimacion de fatalidades ## 1. Introduccion y Fenomeno Fisico ### 1.1 Explosion de Nube de Vapor (VCE) Una **VCE** (Vapor Cloud Explosion - Explosion de Nube de Vapor) ocurre cuando una cantidad significativa de gas o vapor inflamable se libera a la atmosfera, se mezcla con el aire formando una nube inflamable, y se enciende. Si la nube encuentra suficiente confinamiento u obstruccion (equipos, edificios, tuberias), la combustion puede acelerar hasta generar una onda de sobrepresion destructiva. A diferencia de una detonacion confinada, la VCE es un fenomeno de **deflagracion** donde la velocidad de la llama es subsonica, pero la generacion de sobrepresion puede ser significativa dependiendo del grado de confinamiento y congestion del entorno. Los efectos principales de una VCE incluyen: - **Sobrepresion** (onda de choque) capaz de causar colapso estructural - **Impulso** (integral presion-tiempo) que determina el dano dinamico - **Letalidad** en personas por los efectos directos de la sobrepresion - **Efectos domino** por fallo de recipientes y equipos cercanos ### 1.2 Contexto Industrial Los eventos VCE se encuentran entre los accidentes mas severos en QRA industrial. Incidentes historicos como **Flixborough** (Reino Unido, 1974), **Buncefield** (Reino Unido, 2005) y **Texas City** (EE.UU., 2005) demuestran su potencial catastrofico. Fugas de hidrocarburos gaseosos en areas congestionadas de proceso Liberacion de vapores inflamables en zonas de proceso Vaporizacion rapida de liquidos presurizados Liberaciones de gas natural en plataformas y FPSOs ### 1.3 Alcance de Este Modelo Este modelo calcula, utilizando el **metodo de equivalente TNT**: 1. Masa equivalente de TNT a partir de la masa de gas, calor de combustion y fraccion de energia 2. Sobrepresion, impulso, duracion y tiempo de arribo a cualquier distancia 3. Distancia a un umbral de sobrepresion especificado (problema inverso) 4. Probabilidad basada en probit de letalidad, rotura de timpano y dano estructural 5. Probabilidad de efecto domino para equipos cercanos (Cozzani y Mingguang) 6. Fatalidades de poblacion usando analisis de anillos concentricos --- ## 2. Secuencia de Calculo {`flowchart TD A["Datos de Entrada
(masa, Hc, fe, metodo)"] --> B["Equivalente TNT
m_TNT = fe*Hc*M / DH_TNT"] B --> C["Para cada distancia x:
z, P(z), I(z), td(z), ta(z)"] C --> D["Directo: P(x)"] C --> E["Inverso: x(P_objetivo)
Iteracion Incremental"] D --> F["Analisis Probit"] E --> F F --> G["Letalidad
(personas)"] F --> H["Dano
Estructural"] F --> I["Efecto
Domino"] G --> J["Calculo de Fatalidades
(Anillos Concentricos)"] H --> J I --> J style A fill:#e1f5fe style J fill:#c8e6c9 style C fill:#fff3e0`}
El calculo del VCE sigue estas etapas: **Equivalente TNT** — Convertir la energia de combustion de la nube de vapor en una masa equivalente de TNT. **Distancia Escalada** — Calcular la distancia escalada de Hopkinson-Cranz $z = x / m_{TNT}^{1/3}$ para cada receptor. **Parametros de Onda de Choque** — Calcular sobrepresion $P(z)$, impulso $I(z)$, duracion de fase positiva $t_d(z)$ y tiempo de arribo $t_a(z)$ usando el metodo Lees o Brasie. **Distancia Inversa** — Encontrar la distancia a la cual la sobrepresion iguala un umbral objetivo via iteracion incremental. **Analisis Probit** — Convertir sobrepresion/impulso a probabilidades de letalidad, rotura de timpano, dano estructural y efectos domino. **Estimacion de Fatalidades** — Integrar probabilidad de fatalidad sobre anillos concentricos para estimar el total de victimas. --- ## 3. Ecuaciones Principales ### 3.1 Equivalente TNT $$ m_{TNT} = \frac{f_e \cdot \Delta H_c \cdot M}{\Delta H_{TNT}} $$ | Simbolo | Descripcion | Unidad | Valor/Rango | |---------|-------------|--------|-------------| | $m_{TNT}$ | Masa equivalente de TNT | kg | calculado | | $f_e$ | Fraccion de energia de explosion | adimensional | 0.01–0.10 | | $\Delta H_c$ | Calor de combustion del gas | kJ/kg | dato de entrada | | $M$ | Masa de gas inflamable liberado | kg | dato de entrada | | $\Delta H_{TNT}$ | Calor de combustion del TNT | kJ/kg | 4,760 | *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., p. 165* El parametro $f_e$ (eficiencia de explosion o yield) es tipicamente entre 1% y 10%. Valores mas altos corresponden a mayor confinamiento/congestion. El usuario introduce el valor en porcentaje (1–10) y se divide entre 100 internamente. ### 3.2 Distancia Escalada (Hopkinson-Cranz) $$ z = \frac{x}{m_{TNT}^{1/3}} $$ | Simbolo | Descripcion | Unidad | |---------|-------------|--------| | $z$ | Distancia escalada | m/kg$^{1/3}$ | | $x$ | Distancia real desde el centro de la explosion | m | | $m_{TNT}$ | Masa equivalente de TNT | kg | **Rango valido para el metodo Lees**: $0.0674 \leq z \leq 40$ ### 3.3 Calculo de Sobrepresion La sobrepresion se calcula usando un polinomio de grado 11 en la variable transformada $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)} $$ **Rango**: $0.0674 \leq z \leq 40$ | Constante | Valor | |-----------|-------| | $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 | Algunas constantes difieren entre Lees Loss original y CCPS. Las constantes implementadas corresponden a la version corregida de CCPS (p. 162), considerada la version autoritativa. *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., pp. 161-162; Lees, Loss Prevention, 3ra ed., p. 17-127* $$ 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)} $$ *Referencia: Brasie & Simpson, 1968; Kakosimos, Safety in Chemical Engineering, p. 154* ### 3.4 Calculo de Impulso El impulso positivo usa dos polinomios segun el rango de $z$: **Rango 1** ($0.0674 \leq z \leq 0.955$): Polinomio de grado 4 **Rango 2** ($0.955 < z \leq 40$): Polinomio de grado 7 Ambos usan: $u = a + b \cdot \log_{10}(z)$, luego $I = 10^{\text{polinomio}(u)}$ (kPa·ms = Pa·s) | Constante | Valor | |-----------|-------| | $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 | | Constante | Valor | |-----------|-------| | $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 | *Referencia: Lees, Loss Prevention, 3ra ed., p. 17-127* $$ 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 $$ *Referencia: JRC, Major Accident Hazards Bureau Technical Report, p. 85* ### 3.5 Duracion y Tiempo de Arribo Tres polinomios para diferentes rangos de $z$: - **Rango 1** ($0.178 \leq z \leq 1.01$): Polinomio de grado 5 - **Rango 2** ($1.01 < z \leq 2.78$): Polinomio de grado 8 - **Rango 3** ($2.78 < z \leq 40$): Polinomio de grado 5 $t_d = 10^{\text{polinomio}(u)}$ (ms) | Constante | Valor | |-----------|-------| | $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 | | Constante | Valor | |-----------|-------| | $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 | | Constante | Valor | |-----------|-------| | $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 | *Referencia: Lees, Loss Prevention, 3ra ed., p. 17-127* $$ 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)} $$ *Referencia: Lees, Loss Prevention, 3ra ed., p. 17-124* Unico polinomio de grado 9 para todo el rango ($0.0674 \leq z \leq 40$): $t_a = 10^{\text{polinomio}(u)}$ (ms) | Constante | Valor | |-----------|-------| | $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 | *Referencia: Lees, Loss Prevention, 3ra ed., p. 17-127* ### 3.6 Calculo Inverso (Iteracion Incremental) Para encontrar la distancia $x$ a la cual la sobrepresion iguala un valor objetivo $P_{objetivo}$, el modelo usa **iteracion incremental**: | Parametro | Valor | |-----------|-------| | Paso de iteracion | 0.05 m | | Maximo de iteraciones | 100,000 | | Presion inicial de referencia | 2,068 kPa (maximo EPA) | **Conversion de unidades para sobrepresion objetivo:** | Unidad de Entrada | Factor a kPa | |--------------------|-------------| | kPa | $\times 1$ | | psi | $\times 6.89476$ | | bar | $\times 100$ | | atm | $\times 101.325$ | Los polinomios de Lees de alto grado pueden tener derivadas no monotonas, dificultando la convergencia de Newton-Raphson. La iteracion incremental siempre converge si la solucion existe dentro del rango valido. ### 3.7 Analisis Probit — Efectos en Personas $$ Y_{muerte} = 1.47 + 1.35 \cdot \ln(P_{psi}) $$ donde $P_{psi} = P_{kPa} \times 0.145038$. *Referencia: Hurst, Nussey & Pape, 1989* $$ Y_{muerte} = -77.1 + 6.91 \cdot \ln(P_{Pa}) $$ donde $P_{Pa} = P_{kPa} \times 1000$. *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., p. 275* $$ Y_{timpano} = -12.6 + 1.525 \cdot \ln(P_{Pa}) $$ *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed.* ### 3.8 Analisis Probit — Efectos en Estructuras $$ Y_{estructura} = -23.8 + 2.92 \cdot \ln(P_{Pa}) $$ *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., p. 275* **Vidrios pre-1975:** $$ Y_{vidrios} = -11.97 + 2.12 \cdot \ln(P_{Pa}) $$ **Vidrios post-1975:** $$ Y_{vidrios} = -16.58 + 2.53 \cdot \ln(P_{Pa}) $$ Los vidrios post-1975 son mas resistentes debido a mejoras en la fabricacion, reflejado en constantes probit mas conservadoras (requieren mayor sobrepresion para el mismo nivel de dano). *Referencia: TNO Green Book (CPR 16E), p. 119* Estos probits incorporan tanto sobrepresion como impulso en un parametro combinado $V$: **Dano menor:** $$ V = \left(\frac{4600}{P_{Pa}}\right)^{3.9} + \left(\frac{110}{I}\right)^{5.0} $$ $$ Y_{menor} = 5.0 - 0.26 \cdot \ln(V) $$ **Dano mayor:** $$ V = \left(\frac{17500}{P_{Pa}}\right)^{8.4} + \left(\frac{290}{I}\right)^{9.3} $$ $$ Y_{mayor} = 5.0 - 0.26 \cdot \ln(V) $$ **Colapso estructural:** $$ V = \left(\frac{40000}{P_{Pa}}\right)^{7.4} + \left(\frac{460}{I}\right)^{11.3} $$ $$ Y_{colapso} = 5.0 - 0.22 \cdot \ln(V) $$ donde $I$ es el impulso en Pa·s. *Referencia: TNO Green Book (CPR 16E); Casal p. 358* ### 3.9 Efecto Domino Todos usan sobrepresion en Pascales: | Tipo de Equipo | Ecuacion Probit | |----------------|-----------------| | Recipientes atmosfericos | $Y = -18.96 + 2.44 \cdot \ln(P_{Pa})$ | | Recipientes presurizados | $Y = -42.44 + 4.33 \cdot \ln(P_{Pa})$ | | Equipos elongados | $Y = -28.07 + 3.16 \cdot \ln(P_{Pa})$ | | Equipos pequenos | $Y = -17.79 + 2.18 \cdot \ln(P_{Pa})$ | *Referencia: Cozzani, V. et al., Journal of Hazardous Materials* Todos usan sobrepresion en Pascales: | Tipo de Equipo | Ecuacion Probit | |----------------|-----------------| | Recipientes atmosfericos | $Y = -9.36 + 1.43 \cdot \ln(P_{Pa})$ | | Recipientes presurizados | $Y = -14.44 + 1.82 \cdot \ln(P_{Pa})$ | | Equipos elongados | $Y = -12.22 + 1.65 \cdot \ln(P_{Pa})$ | | Equipos pequenos | $Y = -12.42 + 1.64 \cdot \ln(P_{Pa})$ | *Referencia: Mingguang, Z. et al.* ### 3.10 Conversion de Probit a Probabilidad $$P(\%) = f_k \cdot 50 \cdot \left[1 + \text{sgn}(Y - 5) \cdot \text{erf}\left(\frac{|Y - 5|}{\sqrt{2}}\right)\right]$$ | Simbolo | Descripcion | Valor | |---------|-------------|-------| | $f_k$ | Factor de proteccion | 1.0 (sin proteccion) | | $\text{erf}$ | Funcion error (serie de Taylor, 50 terminos) | — | **Limites:** Si $Y < 0$ → $P = 0\%$. Si $Y > 8.09$ → $P = 100\%$. ### 3.11 Calculo de Fatalidades (Anillos Concentricos) Las fatalidades de poblacion se estiman dividiendo el area afectada en anillos concentricos centrados en el punto de la explosion. **Algoritmo:** 1. Radio inicial dinamico: $r_{min} = 0.0674 \cdot m_{TNT}^{1/3}$, efectivo $r_{inicial} = \max(1, \lceil r_{min} \rceil)$ m 2. Para cada anillo $i$ a distancia $r_i$ (incremento = 5 m, max = 10 km): - Calcular sobrepresion $P$ usando el metodo seleccionado - Si $P = 9999$ o $P \leq 0$: **DETENER** (fuera de rango) - Calcular probit de letalidad (Hurst o Eisenberg) - Convertir probit a porcentaje $P\%$ - Si $P\% < 0.1\%$: **DETENER** (fatalidades despreciables) 3. Area del anillo: $A_{anillo} = \pi (r_{ext}^{2} - r_{int}^{2})$ 4. Fatalidades por anillo: $F_i = A_{anillo} \times \rho_{pob} \times P_i / 100$ 5. Fatalidades totales: $F_{total} = \sum F_i$ | Parametro | Valor por Defecto | |-----------|-------------------| | Incremento del anillo | 5 m | | Radio maximo | 10 km | | Umbral minimo de probabilidad | 0.1% | | Regla de redondeo | Si $F > 0.6$ → $\lceil F \rceil$; de lo contrario 0 | *Referencia: CCPS, Guidelines for Chemical Process QRA, 2da ed., p. 273; TNO Purple Book (CPR 18E)* ### 3.12 Exclusion de Receptores Poligonales Cuando se definen receptores de tipo poligono, el modelo evita el doble conteo de poblacion: 1. Los receptores poligonales que se superponen con los anillos se identifican usando interseccion geografica 2. Para cada anillo, el area del poligono se resta: $A_{efectiva} = A_{anillo} - A_{excluida}$ 3. Las fatalidades de las areas poligonales se calculan por separado usando analisis de grilla distribuida con sus propios conteos de poblacion --- ## 4. Justificacion de los Metodos Seleccionados 1. **Mayor precision** — Polinomios de alto grado (11 para sobrepresion, 4–9 para otros parametros) proporcionan ajuste muy preciso a las curvas experimentales 2. **Cobertura completa** — Calcula simultaneamente sobrepresion, impulso, duracion y tiempo de arribo 3. **Rango amplio** — Distancias escaladas de 0.0674 a 40, del campo cercano al lejano 4. **Referencia autoritativa** — Constantes corregidas en CCPS (p. 162) son las mas fiables y aceptadas 5. **Brasie como validacion** — Verificacion independiente cruzada de resultados 1. **Base empirica directa** — Desarrollada especificamente para letalidad por sobrepresion con datos de accidentes industriales 2. **Rango numerico conveniente** — Mas estable numericamente que el intercepto negativo grande de Eisenberg 3. **Conservadurismo apropiado** — Resultados mas conservadores (mayores probabilidades de fatalidad) para sobrepresiones industriales tipicas 4. **Seleccion del usuario** — Permite cambiar entre Hurst y Eisenberg segun el requerimiento 1. **Especificidad por tipo de equipo** — Correlaciones separadas para cuatro categorias (atmosferico, presurizado, elongado, pequeno) 2. **Ampliamente validado** — Correlaciones mas citadas y aceptadas para efecto domino por sobrepresion 3. **Complemento con Mingguang** — Correlaciones alternativas para comparacion y analisis de sensibilidad 4. **Entrada directa** — Usa sobrepresion incidente (Pa) directamente disponible del calculo VCE 1. **Robustez** — Los polinomios de Lees de alto grado pueden tener derivadas no monotonas, dificultando Newton-Raphson 2. **Simplicidad** — No requiere derivada analitica del polinomio de grado 11 3. **Precision suficiente** — Paso de 0.05 m adecuado para analisis de riesgo industrial 4. **Prevencion de loops infinitos** — Limite de 100,000 iteraciones --- ## 5. Limitaciones del Modelo - **Fraccion de energia** — $f_e$ (0.01–0.10) es una simplificacion; la eficiencia real depende del confinamiento, congestion, tipo de combustible, velocidad de mezcla y condiciones de ignicion - **Geometria de la explosion** — Asume explosion hemisferica de superficie; las VCE reales tienen geometrias complejas - **Onda de choque ideal** — Asume tipo Friedlander sin reflexiones multiples, canalizacion ni amplificacion por confinamiento - **Fuente puntual** — Toda la energia desde un punto unico, simplificacion para nubes de gran extension - **Limite inferior** ($z = 0.0674$) — Polinomios de Lees invalidos debajo; distancia minima es $0.0674 \times m_{TNT}^{1/3}$ m - **Limite superior** ($z = 40$) — Retorna 9999 (invalido) fuera del rango en lugar de extrapolar - **Discontinuidades** — Transiciones de polinomios pueden introducir pequenas discontinuidades numericas - **Precision fija** — Paso de 0.05 m introduce error de $\pm 0.025$ m - **Velocidad** — Para sobrepresiones muy bajas, muchos pasos necesarios; limite de 100,000 iteraciones corresponde a max 5,001 m - **No convergencia** — Retorna `null` si la sobrepresion objetivo esta fuera del rango del modelo - **Datos limitados** — Ecuaciones basadas en datos de explosiones militares (Eisenberg) o analisis retrospectivo (Hurst) - **Poblacion heterogenea** — Sin diferenciacion por edad, condicion, posicion o actividad - **Efectos indirectos** — Letalidad combina efectos directos (dano pulmonar) e indirectos (proyectiles, colapso) - **Sin efectos combinados** — Sobrepresion no se combina con efectos termicos u otros peligros - **Densidad uniforme** — Calculo base asume densidad uniforme en todas las direcciones (exclusion de poligonos lo aborda parcialmente) - **Sin proteccion** — Todas las personas al aire libre sin proteccion estructural - **Sin evacuacion** — Respuesta de emergencia no considerada - **Poblacion estatica** — Distribucion fija durante el evento - **Erratas en constantes** — Varias constantes en Lees Loss original con errores corregidos en CCPS, documentados en `LessConstants.js` - **Discretizacion de anillos** — Incremento de 5 m introduce error de $\pm 2.5$ m - **Extrapolacion probit** — Valores limitados: debajo de 0 → 0%, encima de 8.09 → 100% --- ## 6. Resumen de Entradas/Salidas ### 6.1 Entradas Requeridas | Parametro | Descripcion | Unidad | |-----------|-------------|--------| | `massRelease` | Masa de gas inflamable liberado | kg, lb, g, ton | | `hckjkg` | Calor de combustion | kJ/kg | | `energyFraction` | Fraccion de energia de explosion ($f_e$) | % (1–10) | | `VCEMethod` | Metodo de calculo | "less" o "brasie" | | `populationDensity` | Densidad de poblacion | p/m$^2$, p/ha, p/km$^2$, p/mi$^2$ | | `probitMethod` | Metodo probit de letalidad | "hurst" o "eisenberg" | | `overpressureZones` | Zonas de riesgo con umbrales de sobrepresion | kPa | ### 6.2 Salidas | Salida | Descripcion | Unidad | |--------|-------------|--------| | `masaTNTEQ` | Masa equivalente de TNT | kg | | `zones` | Arreglo de zonas de riesgo con distancias | m | | `zones[i].overpressureZone` | Sobrepresion de la zona | kPa | | `zones[i].distance` | Distancia a esa sobrepresion | m | | `fatalidades` | Resultados del calculo de fatalidades | Objeto o 0 | | `receiverEffects` | Efectos sobre cada receptor | Arreglo | | `receiverEffects[i].overpressure` | Sobrepresion en el receptor | kPa | | `receiverEffects[i].impulse` | Impulso en el receptor | Pa·s | | `receiverEffects[i].duration` | Duracion de fase positiva | ms | | `receiverEffects[i].arrivalTime` | Tiempo de arribo | ms | ### 6.3 Categorias de Efectos en Receptores **Efectos en Poblacion/Estructuras:** | Categoria | Efecto | Fuente Probit | |-----------|--------|---------------| | Sobrepresion | Fatalidad | Hurst 1989 / CCPS p. 275 | | Sobrepresion | Rotura de timpano | CCPS | | Sobrepresion | Dano estructural | CCPS p. 275 | | Sobrepresion | Rotura de vidrios | TNO Green Book | **Efectos Domino en Equipos:** | Tipo de Equipo | Fuente Probit | |----------------|---------------| | Recipientes atmosfericos | Cozzani — Atmosferico | | Recipientes presurizados | Cozzani — Presurizado | | Equipos elongados | Cozzani — Elongado | | Equipos pequenos | Cozzani — Pequeno | --- ## 7. Referencias Bibliograficas Center for Chemical Process Safety, AIChE/Wiley, 2000. Equivalente TNT (p. 165), Polinomios de sobrepresion (pp. 161-162), Probit letalidad Eisenberg (p. 275), Probit dano estructural (p. 275), Anillos de fatalidades (p. 273). Butterworth-Heinemann, 2004. Constantes polinomiales originales (p. 17-127), Duracion Brasie (p. 17-124), Metodologia general de VCE. *Methods for the Calculation of Physical Effects*. Committee for the Prevention of Disasters, 2005. Probit rotura de vidrios (p. 119), Probit TNO dano por impulso. *Methods for the Determination of Possible Damage*. Committee for the Prevention of Disasters, 1999. Metodologia de calculo de fatalidades por anillos concentricos. "Guidelines for Estimating Damage from Chemical Explosions." 63rd National Meeting, AIChE. Correlacion de sobrepresion alternativa. "Development and Application of a Risk Assessment Tool (RISKAT)." Chemical Engineering Research and Design, 67. Probit letalidad por sobrepresion (metodo por defecto). "Escalation thresholds in the assessment of domino accidental events." Journal of Hazardous Materials. Probit efecto domino por sobrepresion (recipientes atmosfericos, presurizados, elongados, pequenos). *Safety in Chemical Engineering*. Ecuacion de sobrepresion Brasie (p. 154). Major Accident Hazards Bureau Technical Report, p. 85. Impulso positivo Brasie. Probit functions for domino effect. Correlaciones de efecto domino alternativas.