# 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. | --- # Model validation Source: https://tekrisk.com/en/docs/validation Cases where TekRisk results are compared with external references (Yellow Book, Phast, ALOHA, the original LLNL SLAB code and SCRI), with the deviation of each one, the unresolved differences and the models that have no benchmark yet. This page collects every case where a TekRisk result is compared with an external reference: a worked example from a book, the output of another program or the original code of a model. Each case lists the quantity compared, both values and the deviation. It also lists the differences we have not been able to explain and the models that do not have any external benchmark yet. Status as of 30 September 2026. Each case carries one of these marks: - **Automated test.** A test in the repository fails if the deviation exceeds the stated tolerance. - **Diagnostic.** A script prints the comparison but does not fail on the deviation. - **Documented.** The comparison is described in the documentation, with no test that checks it. A match in one case does not prove the model over its whole range. It shows that the equations are correctly implemented for that case. ## 1. Liquid outflow (Yellow Book, ch. 2 and §6.6.4) Leak flow calculator of the [pool fire](/en/docs/risk-models/pool-fire#outflow-calculator). **Automated test.** | Case | Quantity | Yellow Book | TekRisk | Deviation | |---|---|---:|---:|---:| | §2.6.4.1: acrylonitrile, 0.1 m hole | Flow at 500 s (kg/s) | 58.44 | 58.439 | 0.00 % | | | Level at 500 s (m) | 11.12 | 11.124 | +0.03 % | | | Mass released at 500 s (kg) | 29 416 | 29 270 | −0.50 % (book erratum) | | §2.6.4.1, Table 2.8 | Mass released at 4698 s (kg) | 281 550 | 281 556 | 0.00 % | | §2.6.4.2: 100 m pipe | Initial flow (kg/s) | 22.33 | 22.30 | −0.11 % | | §6.6.4: draining, benzene | Release time (s) | 5064 | 5064.25 | 0.00 % | | | Maximum pool diameter (m) | 31.97 | 31.97 | 0.00 % | The book does not publish the viscosity of the pipe case: with 0.337 mPa·s the flow matches exactly, and with 0.36 mPa·s it comes out −0.11 %. Table 2.8 is computed with a density of 844 kg/m³, not the 812.5 stated in the text. ## 2. Pool fire, Yellow Book preset (§6.6.3 and §6.6.4) Benzene, receptor 100 m downwind. **Automated test** for the equations; **diagnostic** for the final flux. | Case | Quantity | Yellow Book | TekRisk | Deviation | |---|---|---:|---:|---:| | §6.6.3, confined | Diameter (m) | 42.445 | 42.446 | 0.00 % | | | Flame length (m) | 46.77 | 46.78 | 0.01 % | | | Surface emissive power (kW/m²) | 66 | 66.48 | +0.73 % (book rounding) | | | Flux with the book's τ (kW/m²) | 4.581 | 4.583 | +0.03 % | | | **TekRisk final flux (kW/m²)** | 4.581 | 6.342 | **+38 %** | | §6.6.4, unconfined | Diameter (m) | 31.97 | 31.97 | 0.00 % | | | Surface emissive power (kW/m²) | 63.4 | 63.47 | +0.10 % | | | Flux with the book's τ (kW/m²) | 2.141 | 2.158 | +0.77 % | | | **TekRisk final flux (kW/m²)** | 2.141 | 2.785 | **+30 %** | ### Is it an error? No Unlike the differences in [section 6](#unresolved), this one is fully explained. **The equations match.** The "flux with the book's τ" row runs the same TekRisk equations with the example's geometry and gives 4.583 against 4.581 kW/m² (+0.03 %) and 2.158 against 2.141 kW/m² (+0.77 %, book rounding). If any formula were wrong, that row would not match. **The book's example does not apply its own method.** §6.5.4 describes how the flame is built, but the worked example in §6.6.3 simplifies it in three places. TekRisk follows the method: | Point | Book method (§6.5.4) | Worked example (§6.6.3) | TekRisk | |---|---|---|---| | Flame base | Step 7: wind elongates the base and "the distance between the outer flame surface and the radiated object may decrease" (fig. 6.9c) | Computes the elongated base D′ = 52.4 m but does not use it | Elliptical D′ × D base, elongated downwind from the pool edge | | View factor | Step 12: "use the calculated flame dimensions and the distance from the flame to the radiated object" | Radius D/2 = 21.2 m and a distance of 100 m from the pool centre | Integrates over the tilted flame with its elongated base | | Distance for τ | Steps 9 and 10: "a distance x, between the flame surface and the object" | The text says "50 m from the flame surface", but the calculation uses 100 m from the centre | Distance to the flame surface (44 m) | **Where the +38 % comes from.** Starting from the example's convention, each point of the method is added one at a time. Receptor 100 m downwind, flux in kW/m²: | Step | §6.6.3 | §6.6.4 | |---|---:|---:| | Example convention (circular base, τ over 100 m) | 4.52 | 2.14 | | + τ measured from the flame surface | 4.80 (+6 %) | 2.25 (+5 %) | | + base shifted downwind by the wind | 5.62 (+17 %) | 2.55 (+13 %) | | + elongated D′ × D base | 6.34 (+13 %) | 2.79 (+9 %) | The book's 4.581 uses the τ of eq. 6.24 instead of eq. 6.29 (4.52). That difference is 1.3 %. **Checks that rule out an error.** - **No more energy is radiated than the balance allows.** The emissive power comes from eq. 6.71, which assumes a straight cylinder of diameter D. TekRisk's tilted flame has 4 % less surface than that cylinder (7 322 against 7 652 m² in §6.6.3). - **The view factor is integrated correctly.** On a circular base it reproduces the closed form of the book's Appendix 6.A within 0.02 %. - **Using a single optical path barely matters.** TekRisk applies the τ of the nearest flame point to the whole flame. Computed element by element, the flux is only 2 % lower. **The effect depends on direction.** The +38 % is the case of a receptor downwind, where the wind pushes the flame. Receptor at 100 m, §6.6.3, in kW/m²: | Receptor | Book example | TekRisk | |---|---:|---:| | Downwind | 4.52 | 6.34 (+40 %) | | Crosswind | 1.93 | 2.35 (+22 %) | | Upwind | 1.30 | 1.28 (−2 %) | In short, TekRisk uses a model that is more conservative downwind; it does not make a calculation error: it brings the flame closer to the receptor, as the book itself says. The detailed comparison with both examples is in [Comparison with the Yellow Book worked examples](/en/docs/risk-models/pool-fire#yellow-book-examples). ## 3. Solid-flame jet fire ### 3.1 Yellow Book example §6.6.2 Methane at 100 bar, 100 mm hole, 30 kg/s, receptor at 150 m. **Automated test.** | Quantity | Yellow Book | TekRisk | Deviation | |---|---:|---:|---:| | Steps 1 to 23 (velocity, flame length and geometry, emissive power) | | | all within ±0.05 % | | Base width $W_1$ (m) | 0.71691 | 0.716909 | 0.00 % | | Flux with the book's τ (kW/m²) | 0.4172 | 0.4171 | −0.02 % | | **TekRisk final flux (kW/m²)** | 0.4172 | 0.3889 | **−6.8 %** | The final difference is one of method: TekRisk spreads the emissive power over the frustum area (eq. 6.56) instead of the mean cylinder (eq. 6.57), and computes transmissivity with eq. 6.29. Step 28b of the book uses an exponent of −0.08 instead of the −0.09 of eq. 6.29. A second source, Example 3.7 of Casal (2018), is reproduced within ±1 % to ±5 % depending on the quantity. ### 3.2 Real DNV Phast 6.7 report LPG (60 % butane, 40 % propane), 11.62 kg/s, vertical release at 20 m, 6 m/s wind. **Automated test** (geometry ±1 %, emissive power ±2 %, radiation ±3 %). | Quantity | Phast | TekRisk | |---|---:|---:| | Flame length in still air (m) | 45.05 | 44.88 | | Flame length (m) | 24.16 | 24.07 | | Flame widths $W_1$ / $W_2$ (m) | 2.59 / 8.16 | 2.58 / 8.13 | | Radiated fraction | 0.18 | 0.179 | | Surface emissive power (kW/m²) | 232 | 233.9 | | Ground-level radiation, 9 points between 16.8 and 75 m | | −0.4 % to +1.1 % | | Reach of 1.6 kW/m² (m) | 56.8 | 55.9 (−1.6 %) | The case starts from the expanded jet that Phast prints. Only the vertical gas release has been benchmarked. ### 3.3 ALOHA 5.4.7: flame length Three runs with a 2 in pipe. **Automated test** (±0.5 m, because ALOHA rounds to whole metres). | Run | ALOHA (m) | TekRisk (m) | |---|---:|---:| | Propane at 4.8 atm, 4 m/s wind | 7 | 6.94 | | Propane at 4.7 atm, 1.5 m/s wind | 7 | 6.93 | | Methane at 20 atm, 1.5 m/s wind | 5 | 5.36 | The radiation zones of these same runs do not match: see [section 6](#unresolved). ## 4. Fireball against SCRI Fuego LPG, 1000 kg BLEVE. **Automated test.** | Quantity | SCRI | TekRisk | Deviation | |---|---:|---:|---:| | Maximum diameter (m) | 58.0 | 58.0 | 0 % | | Height (m) | 43.5 | 43.5 | 0 % | | Duration (s) | 4.5 | 4.5 | 0 % | | Flux at 10 distances (kW/m²) | 1231.36 … 6.98 | 1203.33 … 6.82 | −2.28 % constant | | Distance to 5.05 / 12.6 / 31.5 kW/m² (m) | 205.1 / 132.4 / 85.4 | 202.9 / 131.0 / 84.5 | −1.09 % | The −2.28 % comes from an exponent: TekRisk uses $M^{2/3}$ while SCRI, like CCPS eq. 2.2.41, uses $M^{0.67}$. ## 5. SLAB dispersion against the original LLNL program GASPRB case (LP gas, pool evaporation), compared with the output of SLAB.exe, the Fortran program of Lawrence Livermore National Laboratory (Ermak, 1990). **Diagnostic.** | Quantity | SLAB.exe | TekRisk | Deviation | |---|---:|---:|---:| | Centreline concentration, 8 points between 22.7 and 1600 m | | | −0.6 % to +0.2 % | | Ground-level concentration, 9 points | | | −0.8 % to −0.1 % | | Distance to 100 % of the LFL (m) | 79 | 78.7 | −0.4 % | | Distance to 50 % of the LFL (m) | 147 | 144.2 | −1.9 % | | Distance to 25 % of the LFL (m) | 240 | 240.5 | +0.2 % | Only the pool evaporation source has been benchmarked. The horizontal and vertical jets and the instantaneous release do not have a numerical comparison yet. ## 6. Unresolved differences ### 6.1 Jet fire radiation against ALOHA 5.4.7 **Documented.** The flame length matches (section 3.3), but the 10 / 5 / 2 kW/m² zones do not: | Run | ALOHA (m) | TekRisk without cap (m) | TekRisk with cap (m) | |---|---|---|---| | Propane, 4 m/s, 2.10 kg/s | 10 / 12 / 19 | 11.4 / 15.7 / 24.5 | 7.1 / 10.5 / 16.1 | | Propane, 1.5 m/s, 2.03 kg/s | 10 / 12 / 18 | 10.5 / 15.1 / 23.5 | 5.2 / 9.0 / 14.8 | | Methane at 20 atm, 6.62 kg/s | 10 / 12 / 18 | 16.2 / 22.7 / 35.1 | 5.3 / 8.2 / 13.4 | ALOHA's zones are almost the same in the three runs, even though the maximum flow rate changes more than threefold. The most likely explanation is that ALOHA computes the radiation with a time-averaged flow rate rather than the maximum. In a pipeline release, the «Max Burn Rate» that ALOHA prints is the initial peak, while the pipe depressurizes; the flow then drops to what the source can sustain through the 100 m of pipe. That is why the hour's «Total Amount Burned» corresponds to a mean flow rate of only 22–28 % of the maximum. ALOHA's technical documentation (chapter 3) states that the release is summarized in at most five averaged flow-rate steps. With a flow rate between 1.05 and 1.36 times the hourly mean (23–38 % of the maximum), uncapped TekRisk reproduces the 5 and 2 kW/m² zones of all three runs within ALOHA's rounding to whole metres, and the flame still comes out at 7 / 7 / 5 m. This also explains why the zones barely change: with less flow the jet is slower, the radiated fraction rises and partly offsets the difference in flow rate. At that flow rate the 10 kW/m² zone lies at 8–9 m, but ALOHA prints 10 m in all three runs and draws it as a regular polygon, which points to a minimum display distance. Neither point is written in ALOHA's documentation. Confirming them requires reading the flow-rate steps in ALOHA's source graph (*Display → Source Strength*) or repeating the case with a constant-rate source. Meanwhile, to compare a pipeline release with ALOHA, enter the averaged flow rate in TekRisk rather than the «Max Burn Rate». The details and the cap option are in [Black-body SEP cap](/en/docs/risk-models/jet-fire#sep-black-body-cap). ### 6.2 Point-source jet fire against SCRI Fuego **Diagnostic.** LP gas release through a hole. SCRI computes 1.056 kg/s and TekRisk 0.581 kg/s (−45 %). The zone distances come out between −29 % and −53 %. SCRI's flow implies a molar mass of about 164 g/mol, which is incompatible with LP gas, so we have not been able to reconcile the two calculations. ## 7. Models without an external benchmark yet These models implement published equations and have internal tests, but have not been compared with a worked example or with another program yet: - **VCE** (TNT equivalence, overpressure and impulse). - **SLAB** with horizontal jet, vertical jet and instantaneous release (only pool evaporation is benchmarked). - **Individual risk** (contours and average risk) and **societal risk** (F-N curves). - **Probit functions** and fatality calculation. - **Fault trees and event trees**: their tests check internal consistency. - **Warehouse fire**: only the view factor is benchmarked, against Appendix 6.1 of the Yellow Book (±0.1 % for a flat radiator and ±3 % for the 10 values of Table 6.A.1). - **Pool fire** with the point-source preset and the ALOHA-based preset: there are no runs of the original program. - Substance **mixtures** and the **line source** (pipelines). If you have a worked case for any of these models (a book example or the output of another program) and want us to benchmark it, send it to us from the feedback button in the application. --- # 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 reference 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 | Directional (extended flame) or radial (point source) | 2D fatality field rotated by the rose, or CCPS Eq. 4.4.4 disk × downwind profile | Wind rose or uniform wind, chosen per scenario | | **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 and Pool 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. #### Pool fire: rotating the radiation field A **pool fire** with an extended flame (Yellow Book, ALOHA and screening presets) produces a **2D fatality-probability field** $pf(x, y)$ computed for the wind bearing of the weather scenario: the flame tilts and the lethal zone stretches downwind. That field is computed once and the IR engine **rotates it about the pool** to every sector $\theta_j$ of the rose ($\Delta = \theta_j - \theta_{\text{base}}$), sampling it bilinearly: $$ P_{f,\text{pf}}(x, y) = \min\!\left(1.0,\; \sum_{j} p(\theta_j) \cdot pf\!\left(R(-\Delta_j)\,(x, y)\right)\right) $$ With the **CCPS simplified method (Eq. 4.4.4)** the wind is assumed uniform and the lethal footprint ($pf \ge 1\,\%$) is described by its disk: radius $R$ (maximum reach from the pool), area $A$ and area-equivalent angle $\theta_{eq} = 360 \cdot A / (\pi R^2)$ (the footprint always wraps the pool). Inside the disk the IR keeps the thermal gradient through the downwind profile $Pf_{dw}(r)$: $$ IR(r \le R) = f \cdot \frac{\theta_{eq}}{360} \cdot Pf_{dw}(r), \qquad IR(r > R) = 0 $$ Under the **strict method** both modes collapse to the $\theta_{eq}/360$ disk evaluated at the strict threshold (uniform wind, as for flash fire). The choice is made per scenario in the **Weather** tab of the pool fire panel and also drives the receiver table and the F-N curve (16 sub-scenarios with $f \cdot p(\theta_j)$ and $N_{\theta_j}$). It does not apply to the point-source preset, to scenarios without a wind bearing, or to line sources. Internally this route is generic: the engine only **weights per-sector fields** ($\sum_j p(\theta_j)\,pf_{\theta_j}$) and an *adapter* decides where each $pf_{\theta_j}$ comes from. For the pool fire the adapter **rotates** the base field, which is exact only because the pool is symmetric about the rotation axis (Yellow Book, equivalent diameter). A model whose shape depends on the angle between wind and source (a horizontal jet fire, for instance) must supply **one field per bearing** computed by its own engine; the individual-risk engine, the receiver table and the F-N curve stay unchanged. --- ### 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 — Yellow Book solid flame (Chamberlain) and point source (CCPS) 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 (Yellow Book §6.5.3) **Geometry:** Cone frustum tilted by the wind, view factor integrated over the actual flame **Use Case:** Near field, directional zones and individual risk with the wind rose **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 (Kalghatgi / CCPS)** — Solve for flame length with the Chamberlain implicit equation (solid flame) or the CCPS correlation (point source). **Flame Geometry (solid flame only)** — Compute tilt, lift-off, frustum length and base and tip widths (Yellow Book §6.5.3). **Surface Emissive Power (SEP)** — Calculate radiated fraction and surface emissive power from flame area and heat of combustion. **Atmospheric Transmissivity** — Yellow Book eq. 6.29 over the distance to the flame surface (solid flame) or CCPS 2.2.42 (point source). **Thermal Radiation at Distance** — Compute incident radiation at a given distance using the frustum view factor (solid flame) or the 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 solid flame follows the Chamberlain (1987) model as transcribed by the Yellow Book (CPR 14E, §6.5.3). **Step 1 — stoichiometric mass fraction $W$.** With the substance's chemical formula, the exact MASS fraction in dry air is used; without it, the book's paraffin correlation: $$W = \frac{W_g}{15.816\,W_g + 0.0395}\qquad (W_g \text{ in kg/mol})$$ **Steps 10–12 — flame length (Kalghatgi correlation).** $Y$ is the root of $$C_a Y^{5/3} + C_b Y^{2/3} - C_c = 0$$ $$C_a = 0.024\left(\frac{g\,D_s}{u_j^2}\right)^{1/3}\qquad C_b = 0.2\qquad C_c = \left(\frac{2.85}{W}\right)^{2/3}$$ The function increases for $Y > 0$, so TekRisk solves it by bisection, which always converges. $$L_{b0} = Y\,D_s$$ $$L_b = L_{b0}\left(0.51\,e^{-0.4\,u_w} + 0.49\right)\left(1 - 6.07\cdot10^{-3}\,(\Theta_{jv} - 90)\right)$$ | Variable | Description | Unit | |----------|-------------|------| | $W$ | Fuel mass fraction in the stoichiometric mixture | dimensionless | | $Y$ | Dimensionless flame-length parameter | dimensionless | | $L_{b0}$ | Flame length in still air | m | | $L_b$ | Flame length, from the tip to the centre of the exit plane | m | | $u_w$ | Wind speed | m/s | | $\Theta_{jv}$ | Angle between the orifice axis and the horizontal in the wind direction: 90° vertical, 0° horizontal downwind | degrees | The constant 2.85 in $C_c$ is fitted for paraffins. With another substance (for example, ethylene) the result carries the corresponding warning. *Reference: Yellow Book (CPR 14E, 3rd ed.), §6.5.3, eqs. 6.30 and 6.42–6.44; 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 Solid Flame Geometry (Yellow Book §6.5.3) **Expanded jet (steps 2–6).** The jet velocity comes from the storage pressure and temperature, also with a known flow rate: $$\gamma = \left(1 - \frac{R_c}{C_p\,W_g}\right)^{-1}\qquad T_j = T_s\left(\frac{P_{air}}{P_{init}}\right)^{(\gamma-1)/\gamma}\qquad P_c = P_{init}\left(\frac{2}{\gamma+1}\right)^{\gamma/(\gamma-1)}$$ Choked flow ($P_{init}/P_{air} \geq ((\gamma+1)/2)^{\gamma/(\gamma-1)}$): $$M_j = \sqrt{\frac{(\gamma+1)\left(P_c/P_{air}\right)^{(\gamma-1)/\gamma} - 2}{\gamma-1}}$$ Subsonic flow with orifice discharge: $$M_j = \sqrt{\frac{\sqrt{1 + 2(\gamma-1)F^2} - 1}{\gamma-1}}\qquad F = \frac{4\,\dot m}{\pi\,d_o^2\,P_{air}}\sqrt{\frac{R_c\,T_s}{\gamma\,W_g}}$$ Subsonic flow with a known mass flow (isentropic expansion to $P_{air}$, consistent with the $T_j$ equation; with an orifice consistent with the flow it gives the same $M_j$): $$M_j = \sqrt{\frac{2}{\gamma-1}\left[\left(\frac{P_{init}}{P_{air}}\right)^{(\gamma-1)/\gamma} - 1\right]}$$ $$u_j = M_j\sqrt{\frac{\gamma\,R_c\,T_j}{W_g}}$$ The book writes $F$ with $T_j$. With the static exit temperature the mass–Mach relation gives exactly $F = M_j$; the book's quadratic form only follows with the stagnation temperature $T_s$, which is what TekRisk uses. The book's constant, $3.6233\cdot10^{-5}$, is $4/(\pi\cdot101325)\cdot\sqrt{8.31451}$; TekRisk uses the local atmospheric pressure (altitude). **Effective source diameter $D_s$.** By default («Expanded jet» block, Kalghatgi 1984 and Phast, engine 1.3.0) $D_s = \sqrt{4\dot m/(\pi\,\rho_{air}\,u_j)}$ (eq. 6.39) in any regime, with $u_j$ of the expanded jet from eq. 6.36. With the «Yellow Book literal» option, for choked flow the book's eq. 6.41 is used, $D_s = d\,\sqrt{\rho_j/\rho_{air}}$ with $\rho_j = P_c W_g/(R_c T_j)$; for subsonic flow, eq. 6.39, $D_s = \sqrt{4\dot m/(\pi\,\rho_{air}\,u_j)}$. With **orifice discharge**, $d$ is the orifice diameter. With a **known mass flow**, the diameter is not an input: mass flow, pressure and diameter are not independent (a given orifice at a given pressure passes a given flow). TekRisk uses the **equivalent diameter** of the ideal nozzle ($C_d = 1$) that discharges that flow: $$d_{eq} = \sqrt{\frac{4\,\dot m}{\pi\,P_{init}\sqrt{\dfrac{\gamma\,W_g}{R_c\,T_s}\left(\dfrac{2}{\gamma+1}\right)^{(\gamma+1)/(\gamma-1)}}}}$$ So with a known mass flow the flame grows with the flow and does not depend on any diameter the user might set. **Tilt (steps 7 and 13).** $$R_w = \frac{u_w}{u_j}\qquad Ri(L_{b0}) = \left(\frac{g}{D_s^2\,u_j^2}\right)^{1/3} L_{b0}$$ For $R_w \leq 0.05$ (jet-dominated flame): $$\alpha = (\Theta_{jv} - 90)\left(1 - e^{-25.6\,R_w}\right) + \frac{8000\,R_w}{Ri(L_{b0})}$$ For $R_w > 0.05$ (wind-dominated): $$\alpha = (\Theta_{jv} - 90)\left(1 - e^{-25.6\,R_w}\right) + \frac{134 + 1726\sqrt{R_w - 0.026}}{Ri(L_{b0})}$$ **Lift-off and frustum length (steps 14–15).** $$K = 0.185\,e^{-20\,R_w} + 0.015\qquad b = L_b\,\frac{\sin(K\alpha)}{\sin\alpha}$$ In still air ($\alpha = 0$) $b = K\,L_b = 0.2\,L_b$; with $\alpha = 180°$, $b = 0.015\,L_b$. $$R_l = \sqrt{L_b^2 - b^2\sin^2\alpha} - b\cos\alpha$$ **Widths (steps 16–19).** $$\frac{\rho_{air}}{\rho_j} = \frac{T_j\,W_{air}}{T_{air}\,W_g}\qquad Ri(D_s) = \left(\frac{g}{D_s^2\,u_j^2}\right)^{1/3} D_s\qquad C' = 1000\,e^{-100\,R_w} + 0.8$$ $$W_1 = D_s\left(13.5\,e^{-6R_w} + 1.5\right)\left\{1 - \left[1 - \frac{1}{15}\sqrt{\frac{\rho_{air}}{\rho_j}}\right]\exp\!\left(-70\,Ri(D_s)^{C' R_w}\right)\right\}$$ $$W_2 = L_b\left(0.18\,e^{-1.5\,R_w} + 0.31\right)\left(1 - 0.47\,e^{-25\,R_w}\right)$$ Sources transcribe eq. 6.54 in two ways. The **Yellow Book** (equation and example §6.6.2) and **ALOHA** (NOAA), which states it checked the equation against Chamberlain's original paper (p. 303), use the **power** $Ri(D_s)^{C' R_w}$. Lees (2001) —and Casal and Kakosimos after him— write it as a **product** $Ri(D_s)\cdot C'\cdot R_w$. Cook et al. (1990) proposed replacing the term by $e^{-7.5R}$. DNV Phast, however, uses the **product** form in practice: its report of a vertical LPG release gives $W_1 = 2.59$ m, which TekRisk reproduces with the product (2.58 m) and not with the power (0.12 m) or Cook's simplification (0.42 m). The Yellow Book preset uses the **power** form, which reproduces the book example's $W_1 = 0.71691$ m; the Phast-based preset uses the product. In near-calm wind ($R_w < 0.002$) the equation jumps towards $W_1 = 15\,D_s$ (because $Ri^0 = 1$) and the result carries a warning; the effect on radiation is small because $W_2$ dominates the flame size. **Flame area (step 20).** The frustum with both end discs (eq. 6.56): $$A = \frac{\pi}{4}\left(W_1^2 + W_2^2\right) + \frac{\pi}{2}\left(W_1 + W_2\right)\sqrt{R_l^2 + \left(\frac{W_2 - W_1}{2}\right)^2}$$ The book offers the mean-width cylinder (eq. 6.57) as an alternative, and its example uses it; TekRisk publishes both and uses 6.56, because it is the surface over which the view factor is integrated. **Release orientation and 3D geometry.** The book warns that its geometric transformation is only correct with the orifice in the vertical plane of the wind ($\Theta_j = \Theta_{jv}$). TekRisk offers the two orientations that satisfy it for any wind direction: **vertical** ($\Theta_j = 90°$: stack, vent) and **horizontal downwind** ($\Theta_j = 0°$: the worst case of a horizontal release of unknown heading). With the origin at the foot of the source, $x$ downwind and $z$ upwards: $$O = (0,\,0,\,h_s)\qquad P = O + b\,(\cos\Theta_j,\,0,\,\sin\Theta_j)\qquad T = P + R_l\,(\sin\varphi,\,0,\,\cos\varphi)$$ with $\varphi = 90° - \Theta_j + \alpha$ the angle of the flame axis from the vertical. By construction $|T - O| = L_b$ (eq. 6.50 is the law of cosines of triangle $OPT$). The part of the flame below ground (low horizontal release) does not radiate and is discarded, with a warning. *Reference: Yellow Book (CPR 14E, 3rd ed.), §6.5.3, eqs. 6.31–6.57; Chamberlain (1987)* #### Radiation presets: Yellow Book, Phast and ALOHA The solid flame uses the Yellow Book by default. Under **Advanced radiation parameters**, the settings button next to «Calculation method», any user chooses a base methodology (which sets every block in the table) or combines the blocks as they see fit; it is the only place where the methodology is chosen. If you change any block from its methodology, the scenario becomes **custom** and is shown as such in the results, the PDF and the calculation report. | Block | Yellow Book (CPR 14E §6.5.3) | Phast-based (DNV cone) | ALOHA-based (5.4.4, §6.4) | |---|---|---|---| | Expanded jet and $D_s$ | Eqs. 6.33–6.36 and $D_s$ from eq. 6.39 with the expanded jet (the book's and Kalghatgi 1984's definition); the book's eq. 6.41 shortcut remains as the «Yellow Book literal» option | Same as the Yellow Book | Pipe exit (§3.5.2 and §6.4.2): adiabatic expansion from the choked-flow interface $P_{ia}$ to atmospheric pressure, $T_j = T_s(P_{air}/P_{ia})^{(\gamma-1)/\gamma}$ and $D_s = d\,\sqrt{\rho_j/\rho_{air}}$ with the pipe diameter | | Flame length | Kalghatgi: root $Y$ of eq. 6.42, $L_{b0} = Y\,D_s$ and eq. 6.44 | Same as the Yellow Book | $L_b = 105.4\,D_s\left[1 - 6.07\cdot10^{-3}(\Theta_j - 90)\right]$ (Lees 16.18.21b); $L_{b0}$ is solved from eq. 6.44 for the tilt | | Base width $W_1$ | Eq. 6.54, power form | Eq. 6.54, product form | Power form | | Radiated fraction | $F_s = 0.21\,e^{-0.00323\,u_j} + 0.11$ | Same as the Yellow Book | $F_s = 0.21\,C_{MW}\,e^{-0.00323\,u_j} + 0.11$, with $C_{MW} = 1$ ($MW < 21$), $\sqrt{MW/21}$ (21–60) or 1.69 ($MW > 60$) | | Transmissivity | Bagster–Pitblado, $\tau = 2.02\,(p_w x)^{-0.09}$ | Wayne (1991): H₂O and CO₂ absorption | Cook, $\tau = 1.389 - 0.135\,\log_{10}(p_w x)$ | The advanced settings also allow combining the blocks as you see fit and setting the **receptor height**. The default is 0 m: zones, receptors and the individual-risk field are evaluated at ground level, as in the Yellow Book and ALOHA. The ALOHA technical documentation prints three equations that contradict the Yellow Book and Lees: the tilt for $R_w > 0.05$ without the 134 term, $R_L$ with «+» under the root, and choked $M_j$ with $\gamma + 1$ in the denominator. TekRisk does not copy them and uses the Yellow Book forms; the expansion-to-atmospheric-pressure block follows §6.4.2 as published. ALOHA also only models vertical releases: with the horizontal release the results are not comparable with ALOHA. A vertical flame starts lifted ($h_s + b$ above ground), is narrow at the bottom and wide at the top, and a ground receptor sees it from below. Example with LPG (2.5 in orifice, 97.62 psi, 25 °C, 4 m/s wind): with the Yellow Book (expanded-jet Ds) the flame is 15.7 m long, the SEP 236 kW/m², and at ground level the 10 and 5 kW/m² zones reach 9 and 18.5 m. With the literal eq. 6.41 shortcut the flame would be 27 m, the SEP 82 kW/m² and the peak ground radiation 3.9 kW/m² (neither zone), although next to the flame, at mid-height, it would exceed 28 kW/m². With the ALOHA-based preset the flame is 9.2 m and the SEP 722 kW/m² (uncapped, the default): 10 kW/m² at 14.5 m and 5 kW/m² at 20.6 m. With the black-body cap on (722 → 300), 7.8 and 13.1 m; with the cap and the receptor at 1.5 m, 10 kW/m² at 9.4 m. Propane from a 2 in pipeline at 4.8 atm and 25 °C, vertical release, 4 m/s wind. With the mass flow ALOHA prints (2.10 kg/s), the ALOHA-based preset (with the pipe diameter, 2 in) gives a 6.9 m flame versus 7 m, and zones of 11.4 / 15.7 / 24.5 m versus 10 / 12 / 19 m for 10 / 5 / 2 kW/m² (no SEP cap, like ALOHA). With the black-body cap on, 7.1 / 10.5 / 16.1 m. With methane at 20 atm (6.62 kg/s) the flame is 5.4 m versus 5 m. The full comparison, with a second propane run at 1.5 m/s, is in [Black-body SEP cap](#sep-black-body-cap). The flame length matches in all three runs; ALOHA's zones fall below what the equations of its own documentation give (see the note in that section). With the literal eq. 6.41 shortcut of the Yellow Book in the ALOHA preset the flame came out 53 % longer and the 5 and 2 kW/m² zones a third longer. The default Yellow Book preset (Kalghatgi with the expanded-jet Ds) gives for this case a 13.6 m flame and zones of 9.5 / 16.5 / 27 m, above ALOHA in all three. ALOHA also discounts pipe friction in the mass flow: to compare, enter ALOHA's mass flow in TekRisk as a known flow. LPG (60 % butane, 40 % propane), 11.62 kg/s, vertical release 20 m above ground, 6 m/s wind, 23.5 °C and 75 % humidity, «Cone model – DNV recommended». Starting from the expanded jet Phast prints, the Phast-based preset gives: still-air flame 44.9 m (Phast 45.05), flame 24.1 m (24.16), lift-off 3.60 m (3.62), frustum 20.7 m (20.80), widths 2.58 and 8.13 m (2.59 and 8.16), angle 23.57° (23.54°), radiated fraction 0.179 (0.18) and SEP 234 kW/m² (232). Ground-level radiation between 10 and 75 m matches within ±1.5 % and the 1.6 kW/m² reach is 55.9 m versus 56.8 m. Only the vertical gas release was checked: Phast handles horizontal and two-phase releases with its own models. #### What to expect from each preset with a small vertical leak With a small vertical leak the Yellow Book may not reach the 10 kW/m² zone (and with the literal eq. 6.41 shortcut not the 5 kW/m² one either) while the ALOHA-based preset reaches both. Nothing caps the Yellow Book: the engine's only cap is the black-body emissive power (SEP ≤ 300 kW/m², optional and off by default) and the Yellow Book stays below it. What changes is the effective diameter $D_s$ and the geometry. Example with propane, 1 in orifice at 8 bar abs and 25 °C, vertical release 1 m above ground, 4 m/s wind, mass flow 0.672 kg/s (the radiated heat is the same in every row; what changes is the surface it is spread over and where the receptor sees it from): | Configuration | Flame | Area | SEP (kW/m²) | Peak flux at receptor height | 10 / 5 / 2 kW/m² zones | |---|---:|---:|---:|---:|---| | Yellow Book (expanded-jet Ds), receptor at 0 m | 7.2 m | 25 m² | 199 | 8.3 kW/m² at 2.75 m | no / 7.5 / 13.3 m | | Yellow Book, receptor at 1.5 m | 7.2 m | 25 m² | 199 | 16.8 kW/m² | 5.4 / 8.7 / 13.8 m | | Yellow Book literal (eq. 6.41 shortcut), receptor at 0 m | 12.6 m | 77 m² | 64 | 2.9 kW/m² at 4.5 m | no / no / 10.7 m | | ALOHA-based | 3.5 m | 6 m² | 799 | 27.2 kW/m² at 1.75 m | 5.8 / 8.3 / 13.2 m | | ALOHA-based, SEP cap on | 3.5 m | 6 m² | 799 → 300 | 10.2 kW/m² at 1.75 m | 2.1 / 4.9 / 8.1 m | | Yellow Book, horizontal release | 11.1 m | 59 m² | 84 | 84 kW/m² (inside the flame) | 14.8 / 16.6 / 20.0 m | Reading: 1. **The length is set by the effective diameter $D_s$.** The book's eq. 6.41 shortcut (gas density at the exit plane) gives 12.6 m; the book's and Kalghatgi's (1984) general definition, the jet expanded to atmospheric pressure of eq. 6.39 that Phast uses, gives 7.2 m and is the preset's since engine 1.3.0. ALOHA starts from the gas expanded at the pipe exit and uses the laboratory correlation $105.4\,D_s$: 3.5 m and an emitter so concentrated (799 kW/m²) that it exceeds black-body emission; with the cap on TekRisk clips it to 300. For comparison, measured emissive powers of hydrocarbon flares (Chamberlain, 1987) range from 60 to 230 kW/m². 2. **In a vertical release the ground receptor sees the flame edge-on.** It starts lifted 1.2 m above the orifice, with a 3 cm base and a 2.2 m tip; from the ground the peak flux is 8.3 kW/m² and the 10 kW/m² zone is not reached. Raising the receptor to 1.5 m takes it to 16.8 kW/m² and the 10 kW/m² zone appears at 5.4 m. When no zone of 5 kW/m² or more is reached (literal-shortcut row), TekRisk flags it in Results with the `vertical_flame_low_ground_flux` warning. 3. **The worst case of a small leak is the horizontal downwind orientation**, not the vertical one: the same leak laid over gives 14.8, 16.6 and 20 m with the Yellow Book. For a risk study, evaluate that orientation whenever the leak direction is unknown. #### Guide to the solid-flame blocks Each block under **Advanced radiation parameters** offers two or three options. For each one: what it is, when to use it and what its limitations are. When a calculation runs into one of those limitations, TekRisk flags it in Results (extrapolated τ, wind-sensitive W1, SEP above or capped at the black body, flame below ground, vertical release with no zone of 5 kW/m² or more at receptor height). #### Expanded jet and effective diameter Ds **Expanded jet (Kalghatgi 1984, Phast; eq. 6.39).** The jet expands isentropically to atmospheric pressure (eqs. 6.33–6.36: $T_j$, $P_c$, $M_j$ from eq. 6.35 in choked flow) and $D_s$ follows from the book's general definition, $D_s = \sqrt{4\dot m/(\pi\,\rho_{air}\,u_j)}$: the diameter of the imaginary nozzle releasing air at ambient density with the same mass flow and the expanded-jet velocity. It is exactly what Kalghatgi (1984) does, who in choked flow "replaces the burner by an equivalent nozzle at whose exit the flow has expanded to atmospheric pressure", and what Phast does (for its report of an LPG release at 11.6 kg/s, this route reproduces its 45 m still-air flame and 24 m with wind). *When:* default, in any regime; it does not depend on the orifice, so with a known flow the diameter is irrelevant. *Limitations:* Kalghatgi's correlation was fitted with 1–10 mm burners and natural-gas flares; for choked jets of heavy gases the SEP rises (less area) and may approach the black-body cap. **Yellow Book literal (eq. 6.41, example §6.6.2).** The eqs. 6.40–6.41 shortcut for choked flow: gas density at the exit plane, $\rho_j = P_c W_g/(R_c T_j)$, and "jet diameter ≈ orifice diameter", $D_s = d_o\sqrt{\rho_j/\rho_{air}}$ (with a known flow, the equivalent nozzle $d_{eq}$). *When:* reproducing the book's example §6.6.2 or studies made with that recipe. *Limitations:* it inflates $D_s$ by $\sqrt{P_c/P_{air}}$ relative to the general definition: ×2 at 5 bar, ×7 in the book's example at 100 bar (a 141 m flame for 30 kg/s of methane). Flames 1.5–2 times longer than Phast and a proportionally lower SEP; in a vertical release it underestimates the flux at ground level. **ALOHA pipe exit (§3.5.2 and §6.4.2).** ALOHA's pipeline model (Wilson) assumes nearly isothermal flow up to the last 200 diameters, where the flow is choked, and adiabatic expansion from there to atmospheric pressure. TekRisk takes the pressure at that interface, $P_{ia} = \frac{4\,\dot m}{\pi d^2}\sqrt{R_c T_s/W_g}$, the exit temperature $T_j = T_s\,(P_{air}/P_{ia})^{(\gamma-1)/\gamma}$, the density $\rho_j$ at atmospheric pressure and the velocity of the expanded gas at the exit section, $u_j = \dot m/(\rho_j\,\pi d^2/4)$; with it eq. 6.39 gives exactly $D_s = d\,\sqrt{\rho_j/\rho_{air}}$, ALOHA's form. With the mass flow ALOHA prints it reproduces its flame length in three real runs (propane at 4.7 and 4.8 atm: 6.9 m versus 7; methane at 20 atm: 5.4 m versus 5). **It asks for the pipe diameter also with a known flow.** $P_{ia}$ is limited to the range between atmospheric and storage pressure: below it the gas leaves without expanding; above it the mass flow is not consistent with the diameter and the pressure, the calculation continues with the storage pressure and Results flags it (`pipe_flow_exceeds_storage_pressure`). *When:* comparing with ALOHA and full-bore pipe ruptures. *Limitations:* the exit velocity it implies is higher than an isentropic jet's (several times the speed of sound at high pressure), but it only enters the radiated fraction, which at those velocities is already at its 0.11 minimum; ALOHA 5.4.7's zones fall below what these equations give with its own mass flow (see the SEP cap). #### Flame length **Kalghatgi (Yellow Book, eqs. 6.42–6.44).** Solves the root $Y$ of Kalghatgi's implicit equation: the length depends on the fuel (molar mass, jet temperature and stoichiometric fraction), on the expanded jet velocity and on the wind through the Richardson number. *When:* risk analysis with either orientation; it is the correlation Chamberlain validated against industrial natural-gas and propane flares. *Limitations:* assumes a subsonic expanded gas jet; $\beta = 2.85$ is fitted for paraffins (`non_paraffin_beta` warning for other gases); at very low wind the length barely changes but the base width does (see W1). **L = 105.4·Ds (Lees 16.18.21b, ALOHA).** Laboratory correlation: the length is proportional to the expanded source diameter, with a tilt factor $[1 - 6.07\cdot10^{-3}(\Theta_j - 90)]$; $L_{b0}$ is then back-solved from eq. 6.44. *When:* comparing with ALOHA or with studies based on Lees; quick screening. *Limitations:* independent of fuel and wind, so methane and propane get the same flame for the same diameter; it was derived from small-scale vertical jets and for large releases gives shorter flames than Kalghatgi (10 m versus the Yellow Book's 15.7 m in the LPG example above, both with the expanded jet); ALOHA only models vertical releases. #### Base width W1 **Power form (Yellow Book, ALOHA).** Eq. 6.54 as printed by the Yellow Book and by ALOHA, which states it was checked against Chamberlain: the term $Ri(D_s)^{C'R_w}$ is a power. *When:* Yellow Book preset; reproduces example §6.6.2. *Limitations:* except in very strong wind the base comes out narrow, of the order of $D_s$; in near-calm wind ($R_w < 0.002$) it jumps to $15\,D_s$ and the result is sensitive to small wind changes (`w1_low_wind_sensitive` warning). **Product form (Lees, Casal, Phast).** The transcription in Lees (2001), followed by Casal and Kakosimos: $Ri(D_s)\cdot C'\cdot R_w$. It is the one DNV Phast uses: with it TekRisk reproduces the $W_1 = 2.59$ m of a real Phast report (2.58 m). *When:* Phast-based preset and calculations made with Lees or Casal. *Limitations:* in normal wind it gives a wide base, of the order of 10–20 $D_s$, very different from the power form (2.6 m versus 0.12 m in the Phast case); it does not reproduce the Yellow Book example. #### Radiated fraction Fs **Eq. 6.59 (Yellow Book).** $F_s = 0.21\,e^{-0.00323\,u_j} + 0.11$: the fraction of the heat released that leaves as radiation, decreasing with jet velocity. *When:* default; it is Chamberlain's. *Limitations:* fitted with natural-gas flares; for heavier gases (propane, butane, LPG), which burn with more luminous flames, it tends to underestimate the emissive power. **With molecular-weight factor C_MW (Cook, ALOHA).** Multiplies the exponential term by $C_{MW} = 1$ if $MW < 21$ g/mol, $\sqrt{MW/21}$ between 21 and 60 g/mol and 1.69 above. *When:* gases heavier than natural gas and comparisons with ALOHA. *Limitations:* an empirical scaling from Cook et al. (1990), not in the Yellow Book; for heavy gases the SEP may exceed black-body emission (`sep_above_black_body` warning); with the [cap](#sep-black-body-cap) on it is clipped to 300 kW/m² (`sep_capped_black_body` warning) and the flux no longer grows with $F_s$. #### Atmospheric transmissivity τ **Bagster–Pitblado (Yellow Book, eq. 6.29).** $\tau = 2.02\,(p_w\,x)^{-0.09}$, with $x$ measured to the flame surface. *When:* default for risk analysis. *Limitations:* published only for $10^4 \le p_w x \le 10^5$ N/m; at 25 °C and 50 % humidity that is path lengths of about 6 to 63 m. Below the range the formula exceeds 1 (TekRisk caps it) and above it is extrapolated, although there it practically matches Cook. The `transmissivity_extrapolated` warning means some zone or receiver fell outside the range. **Wayne (1991), Phast's.** Absorption by water vapour and CO₂ along the optical path, with $X_{H_2O} = HR\,x\,p_{sat}[\text{mmHg}]\cdot 288.651/T_{air}$ and $X_{CO_2} = 273\,x/T_{air}$. *When:* Phast-based preset; with it TekRisk reproduces the ground-level radiation profile of a Phast report within ±1.5 % (with Bagster–Pitblado or Cook it comes out 1–2 % low). *Limitations:* published for 10 to 1000 m; below that it is extrapolated, although in the near field τ ≈ 1. It accounts for water vapour and CO₂, not smoke or fog. **Cook (ALOHA).** $\tau = 1.389 - 0.135\,\log_{10}(p_w x)$, from NOAA OR&R 43. *When:* comparing with ALOHA and near field (under 6 m), where it does not exceed 1. *Limitations:* no published validity range; beyond about 60 m it gives the same as eq. 6.29; like it, it only accounts for water vapour and ambient CO₂, not smoke or fog. #### Receptor height Height above ground at which zones, receivers and the individual-risk field are evaluated. **0 m** is the Yellow Book and ALOHA convention. **1.5 m** approximates a standing person: with a lifted vertical flame, raising the receptor increases the flux beneath the flame (in the LPG example, the 10 kW/m² zone goes from not reached to about 11 m). *Limitations:* a single height for the whole scenario, not per receiver; it does not replace an elevated-equipment calculation nor account for obstacles. ### 3.9 Surface Emissive Power (SEP) **Solid flame (steps 21–23).** $$Q' = \dot m\,\Delta H_c\qquad F_s = 0.21\,e^{-0.00323\,u_j} + 0.11\qquad SEP = \frac{F_s\,Q'}{A}$$ No molecular-weight correction factor (it is not in eq. 6.59) and no soot ($\varsigma = 0$, as in the book's example). By default the SEP is not capped; if it exceeds 300 kW/m² (black-body emission of a hydrocarbon flame), Results flags it. The cap is optional (see below). #### Black-body SEP cap A hydrocarbon flame at about 1500 K cannot radiate more than a black body at that temperature ($\sigma T^4 \approx 300$ kW/m²), and emissive powers measured on flares (Chamberlain, 1987) range from 60 to 230 kW/m². The $F_s\,Q'/A$ balance, however, can give much more when the computed flame is short and its area small: with propane and LPG the ALOHA-based preset reaches 700–800 kW/m², and with high-pressure methane more than 2000. The **Black-body SEP cap** option, under **Advanced radiation parameters**, decides what to do with that excess. It is not a preset block: changing it does not turn the methodology into "Custom". - **Off (default since engine 1.4.0).** The SEP is published as it comes out of the balance and Results flags it (`sep_above_black_body`). This is what ALOHA does, which does not cap the emissive power. The result stays on the conservative side. - **On.** The SEP is capped at 300 kW/m² and Results flags it (`sep_capped_black_body`). Above the cap the flux no longer grows with $F_s$ or with the mass flow. It only has an effect when the balance exceeds 300 kW/m². In the examples on this page the Yellow Book and Phast stay below it (199–236 kW/m²); the ALOHA-based preset with heavy gases almost always exceeds it. *When to leave it off:* conservative consequence and risk studies, and comparisons with ALOHA. Comparison with three real ALOHA 5.4.7 runs (2 in pipeline, vertical release, ALOHA's mass flow as a known flow; propane unless stated), 10 / 5 / 2 kW/m² zones: | Run | ALOHA | Uncapped | Capped | |---|---|---|---| | 4 m/s, 2.10 kg/s | 10 / 12 / 19 m | 11.4 / 15.7 / 24.5 m | 7.1 / 10.5 / 16.1 m | | 1.5 m/s, 2.03 kg/s | 10 / 12 / 18 m | 10.5 / 15.1 / 23.5 m | 5.2 / 9.0 / 14.8 m | | Methane 20 atm, 1.5 m/s, 6.62 kg/s | 10 / 12 / 18 m | 16.2 / 22.7 / 35.1 m | 5.3 / 8.2 / 13.4 m | With ALOHA's «Max Burn Rate» neither option reproduces its zones: the flame length matches in all three runs, but uncapped TekRisk comes out +4 to +30 % above with propane (on the conservative side) and capped −12 to −48 %. The most likely cause is not the cap: in a pipeline release that value is the initial depressurization peak, and ALOHA appears to compute the radiation with a time-averaged flow rate. With a flow rate of 1.05–1.36 times the hourly mean (the one given by the «Total Amount Burned»), uncapped TekRisk reproduces the 5 and 2 kW/m² zones of all three runs within ALOHA's rounding. ALOHA's 10 kW/m² zone always comes out at 10 m and is drawn as a regular polygon: it looks like an ALOHA minimum display distance, not a result. Details in [Model validation](/en/docs/validation#unresolved-jet-fire-aloha). *When to turn it on:* when the study calls for a realistic rather than conservative estimate of the near field (for example, design distances to equipment, where overestimating also has a cost), or to reproduce TekRisk results computed before engine 1.4.0, which always capped. Results saved before that change keep the cap in Results and in the calculation reports; when recalculated, the scenario's option applies. | Variable | Description | Unit | |----------|-------------|------| | $Q'$ | Heat released by combustion | kW | | $F_s$ | Fraction of the heat radiated from the surface | dimensionless | | $SEP$ | Surface emissive power | kW/m² | | $\Delta H_c$ | Heat of combustion | kJ/kg | *Reference: Yellow Book, eqs. 6.58–6.60; Chamberlain (1987)* **Point source.** It does not use a SEP: the radiated fraction $f_r$ is chosen by the user (section 3.11). ### 3.10 Atmospheric Transmissivity **Solid flame.** Yellow Book eq. 6.29 (Bagster and Pitblado), with the partial water vapour pressure from the book's appendix 2.1 and the optical path measured to the **flame surface** ($x$ in eq. 6.63): $$\tau = 2.02\,(p_w\,x)^{-0.09}\qquad p_w = RH\cdot p_w^{sat}(T_a)$$ TekRisk clamps $\tau$ to $[0,\,1]$ and warns when a published point falls outside the book's validity range ($10^4 \leq p_w\,x \leq 10^5$ N/m). The book's example uses the absorption charts 6.2 and 6.3 (eq. 6.24) instead. **Point source (CCPS Eqs. 2.2.42–2.2.43).** $$p_w = 1013.25 \times RH \times \exp(14.4114 - 5328 / T_a)\qquad \tau = 2.02 \times (p_w \times x)^{-0.09}$$ | Variable | Description | Unit | |----------|-------------|------| | $\tau$ | Atmospheric transmissivity | dimensionless | | $p_w$ | Partial pressure of water vapour | Pa | | $RH$ | Relative humidity (as a 0–1 fraction) | dimensionless | | $x$ | Optical path | m | *References: Yellow Book, eq. 6.29; CCPS, "Guidelines for CPQRA", 2nd Ed., Eqs. 2.2.42–2.2.43, p. 209* ### 3.11 Thermal Radiation at Distance $$q = SEP \times F_{max} \times \tau$$ **View factor.** TekRisk integrates the definition of the view factor (eq. 6.A.13) numerically over the ACTUAL frustum surface (lateral surface and both end discs), tessellated once per scenario: $$F = \frac{1}{\pi}\int_A \frac{\cos\beta_1\cos\beta_2}{r^2}\,dA\qquad F_{max} = \min\left(1,\ \sqrt{F_v^2 + F_h^2}\right)$$ $F_v$ is the view factor of a vertical receiver facing the flame and $F_h$ that of a horizontal one (eq. 6.A.18). Near the surface the elements are subdivided adaptively, so there are no quadrature holes; a receiver inside the flame receives $q = SEP$. The integration reproduces the appendix closed form (eqs. 6.A.14–6.A.15) for the equivalent cylinder within ±0.02 %. **Zones.** The isolines of each level are solved per azimuth at ground level: with a wind direction, each zone is drawn as a wind-aligned ellipse spanning the isoline from its furthest upwind to its furthest downwind point, with the isoline's maximum half-width (the representation used by Phast); without one, the circular envelope. The ellipse is only the drawing: the distances come from the isolines, and receivers and risk use the exact field. The 2D lethality field feeds individual and societal risk, rotated with the wind rose or with the CCPS simplified method. Methane at 100 bar, 100 mm orifice (choked), 30 kg/s, $\Theta_j = 85°$, 5 m/s wind, target at 150 m. Each step is recomputed with the TekRisk function that implements its equation: | Quantity | Yellow Book | TekRisk | |---|---:|---:| | $u_j$ (m/s) | 915.606 | 915.619 | | $L_b$ (m) | 141.722 | 141.723 | | $\alpha$ (°) | 6.8348 | 6.8348 | | $b$ (m) | 25.69 | 25.691 | | $R_l$ (m) | 116.181 | 116.182 | | $W_1$ (m) | 0.71691 | 0.71691 | | $W_2$ (m) | 40.8475 | 40.8478 | | $SEP$ with area 6.57 (kW/m²) | 21.951 | 21.947 | | $F_v$ / $F_h$ | 0.02665 / 0.00934 | 0.02665 / 0.00934 | | $q$ with the book's $\tau$ (kW/m²) | 0.417 | 0.417 | The engine, as TekRisk uses it, gives 0.389 kW/m² (−6.8 %). The difference is one of method, not of equations: SEP over the frustum area (6.56) instead of the mean cylinder (−8.3 %), the view factor of the actual frustum (+0.5 %) and $\tau$ from eq. 6.29 (+1.3 %). The test `solid-flame/__tests__/yellow-book-jet-example.test.ts` reproduces the table. *Reference: Yellow Book, eqs. 6.4, 6.61–6.63 and appendix 6.1, §3 (eqs. 6.A.13–6.A.18)* $$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. The solid flame does not use this inverse calculation: it solves the isolines per azimuth over the ground-level field (section 3.11). ### 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 Solid Flame Model (Yellow Book) The Chamberlain (1987) model is the one the Yellow Book selects for jet fires (§6.4.2) because: - It represents the flame as a **cone frustum** radiating as a solid body, with shape correlations validated in wind tunnels and field trials onshore and offshore. - It reproduces the wind effects on the flame **tilt, lift-off and widths**, which the point source cannot see. - Its surface allows a physical **view factor** in the near field, where the point source is no longer applicable. - It is the reference model of **ALOHA** (NOAA/EPA) and the basis of the frustum models in SAFETI and Phast. TekRisk follows the letter of the book in eqs. 6.30–6.60 (including the power form of eq. 6.54, see section 3.8) and applies the complete method for radiation: view factor of the actual frustum and optical path to the flame surface. ### 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}$ ($\varsigma = 0$, as in the Yellow Book example). For heavy hydrocarbons with significant soot production, the actual emissive power may be lower than calculated. This makes the result conservative. 6. **Simplified transmissivity** — Eq. 6.29 (and the point source's CCPS 2.2.42) is a simplified correlation with a published range of $10^4 \leq p_w x \leq 10^5$ N/m. The Yellow Book absorption charts (eq. 6.24) or models such as LOWTRAN may give different results at long distances or extreme humidity. 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. The solid flame only supports a vertical release or a horizontal release aligned with the wind, the two orientations for which the Yellow Book declares its geometry correct ($\Theta_j = \Theta_{jv}$): a crosswind horizontal release is not covered, and the one aligned with the wind is its worst case. 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 flares and jet fires. The flame-length constant $\beta = 2.85$ is fitted for paraffins; applying it to other substances carries a warning and 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 (solid flame) | 90° or 0° | 90° = vertical; 0° = horizontal downwind. The point source does not depend on the angle | --- ## 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 the radiated fraction (p. 72), Chamberlain implementation (p. 75): power form of the base-width equation and its difference from Lees' transcription. Lees, *Loss Prevention in the Process Industries*, 3rd ed., eq. 16.18.29; Casal, *Evaluation of the Effects and Consequences of Major Accidents in Industrial Plants*, 2nd ed., eq. 3.67 and example 3.7. They transcribe Chamberlain's base width in product form. JFSH-Chamberlain and JFSH-Cook models; Cook, Bahrami and Whitehouse's (1990) $e^{-7.5R}$ simplification of the base width. "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 Section 20 documents the current solid-flame preset. The historical spread, point-source and Newton-Raphson formulas in sections 4–13 describe the legacy engine, not the preset's Yellow Book procedure. ### 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. ### 2.1 Release tab: containment and inventory The **Release** tab describes the pool source with two decisions, in that order, because the first one fixes the area and the second only completes it: **Containment** — *Unconfined*, *Rectangular bund* (length × width) or *Circular bund* (diameter). With a bund, the pool area is the bund area; without one, the area has to come from the inventory. **Inventory** — Without a bund it is required: *Released quantity* (mass or volume) or *Continuous feed*. With a bund it is optional: *Bund area only*, *Released quantity* or *Continuous feed*. Options are named after the data you have, not the phenomenon, because with a full bund the radiation does not change with them. Both decisions are stored in a single field (`sourceType`) with eight values; the table summarises what each combination fixes in the stationary model (Yellow Book and ALOHA presets, and any preset with a fed bund): | Containment | Inventory | Pool area | Fire duration | What the inventory adds | |---|---|---|---|---| | Unconfined | Released quantity | $A = V/\delta$, with $\delta$ the minimum depth for the surface type (Yellow Book, Table 3.1: 5 to 25 mm) or a custom value between 1 and 50 mm | $t = \rho_L\,\delta/\dot m''$ | It is the area: required | | Unconfined | Continuous feed | Equilibrium diameter where combustion equals feed; with a release duration, the one reached when it stops (section 2.2) | With a release duration: $t_{rel} + \rho_L\,\delta/\dot m''$; without it, not estimated | It is the area: required | | Bund | Bund area only | Bund area | Not estimated | — | | Bund | Released quantity | $\min(V/\delta,\ A_{bund})$ | $t = \rho_L\,h/\dot m''$, with $h = V/A$ | Duration and the short-fire notice; if $V/\delta < A_{bund}$, a pool smaller than the bund | | Bund | Continuous feed | Equilibrium diameter, which must fit inside the bund; with a release duration, the bund may fill | With a release duration, by mass balance (section 2.2); without it, not estimated | Without a duration: if feed exceeds combustion inside the bund there is no steady solution and the calculation is rejected | The depth $\delta$ is chosen by surface type: the Yellow Book assumes the pool spreads until it reaches a minimum depth of the order of the characteristic roughness of the subsoil (Table 3.1: 5 mm on concrete or an industrial site, 10 mm on gravel, 20 mm on farmland, 25 mm on very rough ground; an order-of-magnitude assumption, not a measured depth) and also accepts a custom value, in m, cm or mm, between 1 and 50 mm. With a 5 mm depth almost any inventory fills a bund (a 10 × 10 m bund is filled by 0.5 m³). In that case *Bund area only* and *Released quantity* produce **exactly the same pool**, the same flame and the same zones: the quantity only sets the fire duration and, through it, the **short-fire** notice (under 600 s, the BR 187 reference for solid ignition). The duration does not cap the exposure time of the thermal dose, which remains the one set in the Vulnerability tab. If the spill fills the bund even at the maximum permitted depth ($V/0.05\ \mathrm{m} \ge A_{bund}$), no valid $\delta$ changes the result: TekRisk stops asking for the surface and depth and says so instead. **Resulting pool.** Below the two selectors, TekRisk shows live the effective area, the equivalent diameter and the duration the engine will use, together with the reason for the area (*bund area*, *bund filled*, *inventory < bund*, *volume / depth*, *feed = combustion equilibrium* or *legacy sizing*). It comes from the same code as the calculation, so what you read is what will be computed; if the engine cannot size the pool with the current data (for example, a feed with no equilibrium inside the bund), it says so instead of showing a number. **Rules and limits.** - A bund assumes **full retention**: overtopping is not simulated. Filling is only followed for a continuous feed with a release duration (section 2.2). - A rectangular bund is approximated by an equal-area circle; solid-flame models require length/width ≤ 2. - *ALOHA-based radiation* requires an equivalent diameter ≤ 200 m. - The *Conservative screening* and *Point source* presets **without a bund** keep the engine's legacy sizing from quantity or feed (section 5); with a fed bund, screening uses the stationary model in this table and point source does not support it (the panel leaves only *Bund area only*). ### 2.2 Continuous release duration A continuous feed with no other data gives an equilibrium pool and no duration: the fire lasts as long as the release, which is not a property of the model. The optional **Release duration** field (time until isolation or until the vessel empties) settles both with the Yellow Book (CPR 14E, §6.5.5): - **Transient pool.** With a constant feed the pool grows towards equilibrium as $A(t) = A_{eq}\,(1 - e^{-\tau})$, with $\tau = \dot m''\,t/(\rho_L\,\delta)$ (Eq. 6.82 with $\beta' = 0$). If the release is short the pool does not reach equilibrium and radiation uses the diameter reached. - **Fire duration.** When the release stops, the remaining $\delta$ layer burns: $t = t_{rel} + \rho_L\,\delta/\dot m''$ (Eq. 6.87). With a bund, if the pool fills it before the release stops, it burns with the bund area and the duration follows from the mass balance (no overtopping). - **Depth.** With a duration, the panel asks for the surface type (Table 3.1) as for a released quantity. With the *Point source* preset only the duration is added; the legacy diameter does not change. The duration feeds the **short-fire** notice and the solid-ignition criterion (600 s); it does not cap the exposure time of the dose. ### 2.3 Leak flow calculator The **Calculate flow** button, next to the flow field, opens a Yellow Book outflow calculator for **non-boiling liquids** (CPR 14E, ch. 2 §2.5.4). Describe the vessel and the opening; the scale drawing and the result update as you type. | Block | Model | Equations | |---|---|---| | Vessel | Vertical cylinder, horizontal cylinder or sphere; level by filling degree $\varphi$ or by height | 2.180–2.182, 2.192–2.193 | | Hole in the wall | $q_s = C_d\,A_h\sqrt{2(P-P_a)\rho_L}$, with $P - P_a = \rho_L\,g\,h + (P_{pad} - P_a)$ | 2.194–2.196 | | Discharge coefficient | Sharp edge 0.62, straight 0.82, rounded 0.96, pipe rupture 1.0, or custom | 2.197 | | Pipe | $\Delta P = \rho u^2/2\,(1/C_d^2 + f_D L/d + \sum K)$ solved for the flow; $f_D$ laminar 64/Re or Colebrook–White; roughness by material; fittings with their $K$ | 2.198–2.209 | | Draining | The flow drops with the level until it reaches the hole (or the isolation time) | 2.183–2.191 | **What is applied.** The flow falls as the vessel drains, so you choose which one to apply: the **initial** flow (the maximum, giving the largest pool), the **mean** flow (mass released over the duration) or the flow **at an instant t**. The flow, converted to the field unit, and the release duration are applied to the scenario; the calculation runs when you save or calculate. **Calculation.** Draining is integrated with Gauss–Legendre quadrature over the level, more accurate than the book's explicit time step, and the released mass comes exactly from the geometry. Viscosity (pipe only) comes from the substance; without it a fully rough regime is assumed, which gives the maximum flow. **Validation.** It reproduces the book's worked examples: §2.6.4.1 (hole, 58.44 kg/s at 500 s and Table 2.8), §2.6.4.2 (100 m pipe, 22.33 kg/s; the book does not publish the viscosity) and the §6.6.4 drain ($t_{rel}$ = 5064 s). **Limits.** Non-boiling liquids only: pressurised liquefied gases (two-phase outflow, §2.5.3) are out of scope, and the calculator warns when the substance boils at ambient temperature. The pad pressure is assumed constant. ### 2.4 Pipeline leak flow When the source is a **pipeline** (line or polyline), **Calculate flow** opens a dedicated calculator: there is no vessel or level, and the flow depends on pumping, the pressure along the line, the elevations and the isolation. **Basis.** The Yellow Book has no model for liquid pipelines: it deems it "not relevant" (§2.4.4) and lists pipeline leak and rupture among the models not available (Diagram 2.6). It gives two rules (§2.3.5.4): for a **rupture**, the pump flow with less friction over the shorter length up to the break; for a **small hole**, the flow at the initial pipeline pressure at that point; and it refers to the equations of §2.5.4.2. The source term follows the Purple Book (CPR 18E) and the two-phase structure of 49 CFR 194.105. | Block | Model | Reference | |---|---|---| | Pressure profile | $P(x) = P_{in} - \dfrac{f_D}{D}\dfrac{\rho v^2}{2}\,x - \rho g\,[z(x) - z_{in}]$ at the nominal flow; with a delivery pressure, the measured gradient governs | YB 2.198, 2.202 | | Leak | $q = C_d A_h \sqrt{2\rho\,P(x_l)}$ at the initial pressure at the point, $C_d = 0.62$; 20 mm hole (transport) or 10 % of DN up to 50 mm (plant) | YB 2.194, §2.3.5.4; PB §3.5.2, §3.2.3 | | Rupture, upstream | Pump flow (1.5 × nominal without data), capped by what the discharge pressure can push through length $x$ with $C_d = 1$ | YB §2.3.5.4; PB §4.3 note 9 | | Rupture, downstream | Static head at the destination plus the elevation difference through $L - x$ (or, conservatively, the delivery pressure); none with a check valve | PB §3.5.4.2 | | Isolation | Detection + valve closure: automatic 120 s, remote 600 s, manual 1800 s | PB §4.4.1 | | Expansion | After closure the compressed liquid escapes with $\beta = 10^{-9}\ \mathrm{Pa^{-1}}$; with flow $\propto \sqrt{\Delta P}$ it decays linearly | YB 2.7; PB §3.5.4.1 | | Gravity drainage | **Full volume** of the isolated section (conservative, 49 CFR 194.105) or **by elevation** (only what lies above the leak up to each side's crest) | PB §3.5.4.1–2 | | Duration | 30 min at most; an undetected leak flows at a constant rate up to that cap | PB §4.3 note 7, §3.5.4.1 | **Leak position.** The calculation applies one flow to the whole route, so you pick the point: by distance from the pump ($x = 0$), by dragging it on the profile, with **Worst case** (it scans the pipeline and places the leak where the most mass escapes within the cap, with the elevation profile fixed) or with **Pick on the map**: the dialog hides without losing what you entered, you mark the leak on the route by clicking, dragging the marker or with the slider, and on accept the dialog returns with the position. The map shows which end is the pump and lets you **reverse the direction** if the route was drawn from the destination. The pipeline length is always the length of the drawn route; edit the route to change it. **What is applied.** As for the vessel: the **initial** flow (sustained while the pump runs), the **mean** flow (mass released over duration) or the flow **at an instant t**, with the release duration. **Assumptions and warnings.** Yellow Book initial-pressure rule at the leak, without iterating the pressure drop (a warning appears when the leak exceeds 5 % of the nominal flow; below 1 % it is probably not detected). The discharge pressure is taken as constant, so the hydraulic limit is an upper bound. The line vents through the break (no vacuum hold-up); if the pressure falls below the vapour pressure somewhere, a slack-line warning appears. Manual elevations at three points, piecewise linear. Neither the Yellow Book nor the Purple Book gives a worked example for liquid pipelines: the tests use closed-form drainage solutions and the mass balance. --- ## 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 only accurate beyond 5 pool diameters from the flame centre (Yellow Book, §6.3.4.2). Closer in it overestimates radiation, because the flux depends on flame size, shape and tilt (Mudan, 1984, §3.1). --- ### Wind direction in individual and societal risk Consequences (zones, receivers) are computed for **a single wind bearing**, the one of the selected weather scenario. Individual risk and the F-N curve do not take that bearing as certain: in the **Weather** tab the scenario chooses between the **site wind rose** (the radiation field is rotated to every sector and weighted by its probability) and the **CCPS simplified method (Eq. 4.4.4)** (disk of radius $R$ with factor $\theta_{eq}/360$ over the downwind profile). See the [individual risk contours](/en/docs/individual-risk/ir-contours#wind-direction) documentation. The point-source preset, scenarios without a bearing (circular envelope) and line sources are not directional. ## 20. Radiation Model Presets A radiation preset selects six methodological blocks at once — burning rate, flame geometry, emissive power, transmissivity, the density reference used in the dimensionless wind speed $u^*$, and the radiative fraction — stored together in `RiskModel.poolFireRadiationConfig`. A scenario with no saved configuration falls back to the legacy `point_source` preset, which reproduces the engine documented in sections 4–13 above unchanged. ### 20.1 Presets | Preset | Burning rate | Flame geometry | Emissive power | Transmissivity | $u^*$ density | Lethality | |--------|--------------|-----------------|-----------------|-----------------|-----------------|-----------| | `yellow_book` (default for new scenarios) | Babrauskas (per substance) | Binding tilt, elliptical base with Moorhouse drag | Explicit Fs and soot, Eqs. 6.71 and 6.20 | Eq. 6.29 (Bagster–Pitblado) | Air | Yes | | `conservative_screening` | Burgess-Strasser | Tilted cylinder | Fixed fraction (0.35) | Wayne (1991) | Vapor | Yes — conservative | | `point_source` (legacy) | Burgess-Strasser | Point source | Fixed fraction (0.3) | Bagster-Pitblado | Air | Yes | `yellow_book` implements the CPR 14E solid-plume procedure (Yellow Book, 2005, §6.5.4) with simplified transmissivity. `conservative_screening` retains historical screening, which is not equivalent to ALOHA. `point_source` retains the legacy engine. Extended-flame results predating version 2.0 require recalculation; their historical traces are not rewritten. `aloha_fixed_area` retains its identifier but is displayed as **ALOHA-based radiation**. It uses NOAA OR&R 43 §§6.3.3 and 6.5 scalar correlations with equivalent diameter ≤ 200 m. The pool source is described in the Release tab by containment and inventory (see section 2.1): TekRisk calculates static area from V/δ, feed/combustion equilibrium or geometry, limited by containment, with full retention and no overtopping check. A feed without equilibrium inside the bund is rejected. Rectangles use an equal-area circle with aspect ratio ≤ 2. Pool growth and tank discharge are not modelled. TekRisk geometric integration, optical path and SEP cap are retained; **numerical equivalence to the ALOHA executable is not claimed**. Dose and risk are TekRisk extensions. The `burgess_aloha` block does not apply the Babrauskas diameter factor, even with tabulated kβ. The `cook` block uses $\tau=1.389-0.135\log_{10}(p_w L_p)$ and $p_w=99.89\,RH\,\exp(21.66-5431.3/T_a)$, with RH as a fraction, temperature in K, pressure in Pa and optical path in m. τ is bounded to [0,1]; dry air or zero path gives τ = 1. Both blocks are also available in custom configurations. All three presets — and any combination of advanced blocks — compute thermal dose, probit, fatalities and the fatality-probability field that feeds individual risk and the F-N curve: the incident flux is thermal radiation whatever the emissive-power method, so the dose follows from the same $q$ and the same exposure time. What changes across presets is not whether lethality exists but how conservative it is: with a fixed radiative fraction the flux is overestimated by design and the lethality derived from it inherits that overestimate, as the scenario panel, the calculation memory and the PDF report all state. Results saved before September 2026, when screening did not evaluate dose, stay out of individual risk with that reason until they are recalculated. ### 20.2 Advanced Blocks Each block can be overridden independently of the preset; a manual value requires a written justification. - **Burning rate** ($\dot m''$): `burgess` (mass form $10^{-3}\cdot\Delta H_c/\Delta H^*$, see section 4.2 above, with the Babrauskas diameter factor applied when $k_\beta$ is known) · `babrauskas` (tabulated $\dot m''_\infty$ and $k_\beta$ per substance, Babrauskas 1983; falls back to `burgess` without the diameter factor when substance data is missing) · `mudan` (mass form without the diameter factor, matching the legacy engine's Mudan branch) · manual value. - **Flame geometry**: `point_source` (legacy) · `vertical_cylinder` (Thomas or Pritchard, no tilt) · `tilted` · `tilted_drag` (Moorhouse drag, Eq. 6.18-2). Tilt is selected separately: Binding (Eq. 6.70) for Yellow Book or the AGA alternative. - **Surface emissive power (SEP)**: `fixed_fraction` (configured radiative fraction $f$) · `fs_diameter` ($F_s(D) = 0.35\cdot e^{-0.05D}$) · `yb_soot` (CPR 14E ch. 6: a cold-soot fraction $\zeta$ near 20 kW/m² blended with the luminous SEP) · `mudan_ed` (Mudan's empirical $E(D)$) · manual value. - **Atmospheric transmissivity**: `bagster_pitblado` (Yellow Book Eq. 6.29, simplified approximation) · `wayne` (Wayne 1991 alternative) · `cook` (NOAA OR&R 43) · `none` ($\tau = 1$). The extended engine bounds the result to [0,1] and warns about extrapolation (see "Transmissivity validity range" below). #### Block-by-block guide: what it is, when to use it and limitations The help buttons in the dialog open each block of this guide. When a calculation runs into a limitation, TekRisk flags it in Results and in the calculation memory. #### Burning rate **Burgess–Strasser (`burgess`).** Mass form $\dot m'' = 10^{-3}\,\Delta H_c/\Delta H^*$ (section 4.2), with the Babrauskas diameter factor when $k_\beta$ is known. *When:* hydrocarbons without tabulated data. *Limitations:* a large-pool correlation; for small pools (under 1–2 m) it overestimates when there is no $k_\beta$. **Burgess (ALOHA, `burgess_aloha`).** The same mass form without the diameter correction, as in ALOHA. *When:* comparing with ALOHA. *Limitations:* ignores the diameter effect even when $k_\beta$ exists; overestimates the rate for small pools. **Babrauskas (`babrauskas`).** Tabulated $\dot m''_\infty$ and $k_\beta$ per substance (Babrauskas 1983), with $\dot m'' = \dot m''_\infty(1 - e^{-k_\beta D})$. *When:* default and recommended whenever the substance is in the table; it is the Yellow Book method. *Limitations:* without substance data it falls back to Burgess without the diameter factor (the results table says so); the data come from pools on land, not cryogenic gases on water. **Mudan (`mudan`).** Mudan's (1984) mass form without a diameter factor. *When:* reproducing studies based on Mudan/SFPE. *Limitations:* the same as uncorrected Burgess. **Own value (`user_value`).** A measured or reference rate. Requires a written justification and marks the scenario as custom. #### Flame geometry **Point source (`point_source`).** Legacy engine: all radiation leaves a point at mid flame height (section 11.1). *When:* far field, quick screening. *Limitations:* valid only beyond 5 pool diameters from the flame centre (Yellow Book, §6.3.4.2); describes neither the near field nor the wind asymmetry; circular zones. **Vertical cylinder (`vertical_cylinder`).** Cylindrical flame without tilt; height by Thomas (1963) or Pritchard–Binding (section 8). *When:* calm wind or when a symmetric envelope is wanted. *Limitations:* with real wind it underestimates the downwind flux and overestimates the upwind one. **Tilted cylinder (`tilted`).** Cylinder tilted by the wind, with the AGA tilt (u*^−0.5) or Binding's (eq. 6.70, with Fr and Re). *When:* comparing with ALOHA (Thomas/AGA) or with classical studies. *Limitations:* the base stays circular: it does not capture the downwind elongation of the flame base. **Tilted with drag (`tilted_drag`).** Yellow Book §6.5.4: elliptical base elongated downwind by Moorhouse drag ($D'$) and Binding tilt. *When:* default for risk analysis; the most complete geometry. *Limitations:* needs a wind direction to draw directional zones (without it, a circular envelope); the Fr and Re correlations come from hydrocarbon pools of 1 to 50 m; very elongated rectangular dikes (aspect ratio above 2) are not well represented by a cylinder. #### Surface emissive power (SEP) **Fixed radiant fraction (`fixed_fraction`).** $E = f\,\dot m''\,\Delta H_c / (1 + 4L/D)$ with a configurable $f$ (0.30 in ALOHA, 0.35 in the screening). *When:* conservative screening and comparison with ALOHA. *Limitations:* does not discount soot, so for large heavy-hydrocarbon fires it overestimates the flux (and with it dose, probit and fatalities); TekRisk marks it as conservative. **Fs with diameter (`fs_diameter`).** $F_s(D) = 0.35\,e^{-0.05D}$ (Mudan and Croce, SFPE): the fraction decreases with diameter because of smoke. *When:* large pools without soot data. *Limitations:* an empirical hydrocarbon correlation; it does not distinguish clean fuels (methanol, LNG) from very smoky ones. **Yellow Book with soot (`yb_soot`).** $SEP_{max} = F_s\,\dot m''\,\Delta H_c/(1+4L/D)$ and $E = SEP_{max}(1-\zeta) + 20\,\zeta$, with the luminous $F_s$ per fuel (table 6.6) and soot fraction $\zeta$. *When:* default; the most faithful for smoky hydrocarbons. *Limitations:* $F_s$ and $\zeta$ are per-fuel data; when unknown, TekRisk uses defaults and writes them in the results table. **Mudan E(D) (`mudan_ed`).** $E = 140\,e^{-0.12D} + 20\,(1 - e^{-0.12D})$ kW/m² (Mudan 1984). *When:* typical hydrocarbons without substance data. *Limitations:* depends only on diameter; unsuitable for clean fuels or very small pools. **Own value (`user_value`).** A measured or reference SEP. Requires a written justification. #### Black-body SEP cap No hydrocarbon flame radiates more than a black body at its temperature ($\sigma T^4 \approx 300$ kW/m² at 1500 K); measured SEPs range from about 20 kW/m² (large, very smoky pools) to about 150 kW/m² (small clean flames). The fixed radiative-fraction correlations (`fixed_fraction`, `fs_diameter`) have no upper bound and, without a diameter correction, return an $E$ that **grows** with the pool (up to 337 kW/m² for a 130 m pool), the opposite of physical behaviour. The `yb_soot` and `mudan_ed` methods do not approach the cap, and `user_value` is the analyst's own figure. The **Black-body SEP cap** option, under **Advanced parameters**, only appears with `fixed_fraction` and `fs_diameter`. It is not a preset block: changing it does not turn the methodology into "Custom". - **On (default for the pool fire).** $E$ is capped at 300 kW/m² and Results flags it (`sep_capped_black_body`). *When:* almost always; it keeps fixed-fraction screening from publishing an impossible emissive power for large pools. - **Off.** $E$ is published as the correlation returns it and Results flags it when it exceeds 300 kW/m² (`sep_above_black_body`). *When:* only to reproduce literally another tool that does not cap (for example, an ALOHA calculation with a fixed radiative fraction) or to show the effect of the cap in a report. The jet fire has the same option, but off by default: there the excess appears with heavy gases in short flames, and ALOHA does not cap it (see [jet fire](/en/docs/risk-models/jet-fire#sep-black-body-cap)). #### Atmospheric transmissivity **Bagster–Pitblado (`bagster_pitblado`).** Yellow Book eq. 6.29, $\tau = 2.02\,(p_w L_p)^{-0.09}$. *When:* default. *Limitations:* published only for $10^4 \le p_w L_p \le 10^5$ N/m (about 6 to 63 m at 25 °C and 50 % RH); outside the range it is capped at 1 or extrapolated, and TekRisk warns. Details and comparison table under "Transmissivity validity range" below. **Wayne (`wayne`).** Wayne's (1991) correlation with CO₂ and water vapour. *When:* studies that cite it (CCPS). *Limitations:* valid from 10 to 1000 m; does not resolve the near field. **Cook (`cook`).** $\tau = 1.389 - 0.135\,\log_{10}(p_w L_p)$ (NOAA OR&R 43). *When:* comparing with ALOHA and near field, where it does not exceed 1. *Limitations:* no published range; beyond about 60 m it matches eq. 6.29. **No attenuation (`none`).** $\tau = 1$. *When:* conservative screening at any distance or when humidity is unknown. *Limitations:* overestimates the flux far from the flame (up to 30 % at 60 m in humid air). ### 20.3 Yellow Book v2 parameters and limits - Enter wind at **10 m**. Air kinematic viscosity ν is optional; automatic mode uses Sutherland μ(T)/ρa. - Tilt: $c=0.666 Fr^{0.333}Re^{0.117}$, $\sin\theta=2c/(\sqrt{1+4c^2}+1)$; $Fr=U^2/(gD)$ and $Re=UD/\nu$. - $SEP_{max}=F_s\dot m''\Delta H_c/(1+4L/D)$; $E=SEP_{max}(1-\zeta)+20\zeta$. **Luminous Fs is a fuel-dependent input** (Table 6.6); 0.35 is an initial assumption. No exponential diameter attenuation precedes soot coverage. Different fuel Fs values do not count as mixed methodologies. - Instantaneous spill: explicit final thickness δ (by surface type, Yellow Book Table 3.1, or a custom value), $D=\sqrt{4V/(\pi\delta)}$, duration $\rho_L\delta/\dot m''$. Mass input is conserved; volumetric inventory and feed are interpreted at pool temperature. - Continuous spill: steady area balancing feed and combustion. No transient growth or tank-emptying calculation. For a hole leak the flow is $\dot V = C_d\,A_0\sqrt{2gh}$ with $C_d$ applied **once** (in the Yellow Book $v_0 = C_0\sqrt{2gh}$ already includes it and the flow is $A_0 v_0$). - Rectangular bunds with aspect ratio greater than 2 are rejected: a flat radiator is required, not an equivalent cylinder. - $\tau=2.02(p_w L_p)^{-0.09}$: published range $10^4\le p_wL_p\le10^5$ N/m. The detailed absorptivity method of Eq. 6.24 is not implemented here. - The surface is an oblique elliptical body with uniform emission. View factors are integrated numerically, using solid angle near the surface without artificially imposing $q=E$ on exterior receivers. With a wind direction available, the tilted geometries produce downwind/upwind/crosswind-oriented zone polygons instead of circles; without a wind direction the contour degrades to a circular envelope. The full intermediate chain per zone and receiver ($\dot m''$, $u^*$, $\theta$, $L$, $D'$, $E$, $\zeta$, $F_s$, $\tau$) is written to the calculation memory (MD/DOCX) from the result's `radiationTrace`; the PDF report publishes from that same trace the preset with its references, the scalar intermediates, the transmissivity of each zone and, per receiver, its view factor and transmissivity. A study with pool fires on different presets blocks individual and social risk with an explanatory alert, since the contours are not comparable across presets. On a **line source** (a pipeline or duct route, `RiskModel.coords` of type `LineString`) the directional field is anchored per target: the effect on each receiver is evaluated in a local wind frame whose origin is the point of the route nearest to that receiver, so the published flux corresponds to the published perpendicular distance and the downwind/upwind asymmetry is preserved along the whole route. Two simplifications remain downstream and are stated in the scenario panel, the calculation memory and the PDF report: the map corridors are built as a symmetric buffer whose half-width is the downwind radius of each zone, an envelope that is conservative on the upwind side; and individual risk keeps the radial path (the azimuth-averaged fatality profile replicated along the discretised route), because the 2D fatality field is anchored in absolute grid coordinates and cannot be stamped at every point of the route. #### Transmissivity validity range Eq. 6.29 (Bagster and Pitblado) is an empirical correlation published only for $10^4 \le p_w L_p \le 10^5$ N/m, where $L_p$ is the optical path from the **flame surface** to the receiver. In metres the range depends on humidity: with $p_w = 1584$ Pa (about 25 °C and 50 % relative humidity) it covers paths between $10^4/p_w = 6.3$ m and $10^5/p_w = 63.1$ m. A scenario with several zones usually leaves it at both ends: high-threshold zones and upwind radii lie a few metres from the flame, while low-threshold zones of large pools lie beyond 63 m. Outside the range the power law is extrapolated: | $L_p$ ($p_w = 1584$ Pa) | $p_w L_p$ (N/m) | $\tau$ Eq. 6.29 | $\tau$ Cook (same $p_w$) | |---|---|---|---| | 1 m | 1,584 | 1.04 → **bounded to 1** | 0.96 | | 3 m | 4,752 | 0.94 (extrapolated) | 0.89 | | 6.3 m | $10^4$ | 0.88 | 0.85 | | 63.1 m | $10^5$ | 0.72 | 0.71 | | 200 m | $3.2\cdot10^5$ | 0.65 (extrapolated) | 0.65 | - **Below the range** the curve keeps rising and exceeds 1 for $p_w L_p < 2{,}470$ N/m (about 1.6 m with this $p_w$); the engine bounds it to [0, 1], which is the physical limit (no path, no absorption). Between that point and the lower bound the deviation is a few percentage points in $\tau$. - **Above the range** the curve decreases slowly and practically matches Cook (NOAA OR&R 43), so the extrapolation is reasonable. - **It does not depend on the view factor.** The view factor is pure geometry and has no validity range; it only supplies the distance to the flame surface used as $L_p$. Changing the flame geometry does not remove the extrapolation. TekRisk warns on screen and in the calculation memory when a published zone or receiver falls outside the range; the PDF report does not repeat the warning. To avoid extrapolation, choose `none` ($\tau = 1$, conservative at any distance) or `cook`, which has no equivalent published range, in the advanced blocks. Wayne (1991) does not solve it in the near field: its range is 10 to 1000 m. ### 20.4 Comparison with the Yellow Book worked examples The preset equations reproduce the CPR 14E examples §6.6.3 and §6.6.4 step by step (±0.5 %, apart from the book's rounding and typos). The **final flux** published by TekRisk is nevertheless higher than the example's: 100 m downwind, 6.34 versus 4.58 kW/m² (§6.6.3) and 2.78 versus 2.14 kW/m² (§6.6.4). This is not a calculation error: the examples simplify the method the book itself describes in §6.5.4, and TekRisk applies the full method. | | Book example | TekRisk | Effect on q | |---|---|---|---| | Flame base | Circular, diameter $D$ (the example computes $D'$ but does not use it) | Elongated $D' \times D$ and shifted downwind (§6.5.4 step 7, fig. 6.9c) | +22 % to +30 % in $F$ | | Distance for $\tau$ | 100 m from the pool centre | From the flame surface, as Eq. 6.29 defines $x$ | +6 % to +8 % in $\tau$ | | Transmissivity | Eq. 6.24 ($\alpha_w$, $\alpha_c$ charts) | Eq. 6.29 | −1 % | The method text supports both choices. Steps 9 and 10 define $x$ as "a distance x, between the flame surface and the object", and step 12 asks to "use the calculated flame dimensions and the distance from the flame to the radiated object"; the example instead uses 100 m from the pool centre (its own text even says "50 m from the flame surface") and discards $D'$. With the example's convention (circular base $D$, $x$ from the centre and its $\tau$), the same TekRisk functions give 4.58 and 2.16 kW/m², so no equation is wrong. The result is **conservative downwind** and the effect depends on where the receptor is. Receptor at 100 m, §6.6.3, in kW/m²: | Receptor | Book example convention | TekRisk | |---|---:|---:| | Downwind | 4.52 | 6.34 (+40 %) | | Crosswind | 1.93 | 2.35 (+22 %) | | Upwind | 1.30 | 1.28 (−2 %) | The step-by-step breakdown and the checks that rule out an error (energy balance, view factor, optical path) are in [Model validation](/en/docs/validation#pool-fire-why). --- ## 21. 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, Yellow Book), 2005, ch. 6, §6.5.4 and example §6.6.3. | | 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. | --- # Validación de modelos Source: https://tekrisk.com/es/docs/validation Casos en los que los resultados de TekRisk se comparan con referencias externas (Yellow Book, Phast, ALOHA, SLAB original de LLNL y SCRI), con la desviación de cada uno, las diferencias sin resolver y los modelos que aún no tienen contraste. Esta página reúne cada caso en el que un resultado de TekRisk se compara con una referencia externa: un ejemplo resuelto de un libro, la salida de otro software o el código original de un modelo. Para cada caso se indica la magnitud comparada, los dos valores y la desviación. También se listan las diferencias que no hemos podido explicar y los modelos que todavía no tienen ningún contraste externo. Estado a 30 de septiembre de 2026. Cada caso lleva una de estas marcas: - **Prueba automatizada.** Un test del repositorio falla si la desviación supera la tolerancia indicada. - **Diagnóstico.** Un script imprime la comparación, pero no falla por la desviación. - **Documentado.** La comparación está descrita en la documentación, sin test que la compruebe. Una coincidencia en un caso no prueba el modelo en todo su rango. Indica que las ecuaciones están bien implementadas para ese caso. ## 1. Caudal de fuga de líquidos (Yellow Book, cap. 2 y §6.6.4) Calculadora de caudal de fuga del [pool fire](/es/docs/risk-models/pool-fire#outflow-calculator). **Prueba automatizada.** | Caso | Magnitud | Yellow Book | TekRisk | Desviación | |---|---|---:|---:|---:| | §2.6.4.1: acrilonitrilo, orificio de 0.1 m | Caudal a 500 s (kg/s) | 58.44 | 58.439 | 0.00 % | | | Nivel a 500 s (m) | 11.12 | 11.124 | +0.03 % | | | Masa liberada a 500 s (kg) | 29 416 | 29 270 | −0.50 % (errata del libro) | | §2.6.4.1, Tabla 2.8 | Masa liberada a 4698 s (kg) | 281 550 | 281 556 | 0.00 % | | §2.6.4.2: tubería de 100 m | Caudal inicial (kg/s) | 22.33 | 22.30 | −0.11 % | | §6.6.4: vaciado, benceno | Tiempo de liberación (s) | 5064 | 5064.25 | 0.00 % | | | Diámetro máximo del charco (m) | 31.97 | 31.97 | 0.00 % | El libro no publica la viscosidad del caso de tubería: con 0.337 mPa·s el caudal coincide exactamente, y con 0.36 mPa·s sale −0.11 %. La Tabla 2.8 está calculada con una densidad de 844 kg/m³ y no con los 812.5 que declara el texto. ## 2. Pool fire, preset Yellow Book (§6.6.3 y §6.6.4) Benceno, receptor a 100 m a sotavento. **Prueba automatizada** para las ecuaciones; **diagnóstico** para el flujo final. | Caso | Magnitud | Yellow Book | TekRisk | Desviación | |---|---|---:|---:|---:| | §6.6.3, confinado | Diámetro (m) | 42.445 | 42.446 | 0.00 % | | | Longitud de llama (m) | 46.77 | 46.78 | 0.01 % | | | Poder emisivo (kW/m²) | 66 | 66.48 | +0.73 % (redondeo del libro) | | | Flujo con la τ del libro (kW/m²) | 4.581 | 4.583 | +0.03 % | | | **Flujo final de TekRisk (kW/m²)** | 4.581 | 6.342 | **+38 %** | | §6.6.4, no confinado | Diámetro (m) | 31.97 | 31.97 | 0.00 % | | | Poder emisivo (kW/m²) | 63.4 | 63.47 | +0.10 % | | | Flujo con la τ del libro (kW/m²) | 2.141 | 2.158 | +0.77 % | | | **Flujo final de TekRisk (kW/m²)** | 2.141 | 2.785 | **+30 %** | ### ¿Es un error? No A diferencia de las de la [sección 6](#unresolved), esta diferencia está explicada por completo. **Las ecuaciones coinciden.** La fila «flujo con la τ del libro» usa las mismas ecuaciones de TekRisk con la geometría del ejemplo, y da 4.583 frente a 4.581 kW/m² (+0.03 %) y 2.158 frente a 2.141 kW/m² (+0.77 %, redondeo del libro). Si alguna fórmula estuviera mal, esa fila no coincidiría. **El ejemplo del libro no aplica su propio método.** El §6.5.4 describe cómo se construye la llama, pero el ejemplo resuelto del §6.6.3 lo simplifica en tres puntos. TekRisk sigue el método: | Punto | Método del libro (§6.5.4) | Ejemplo resuelto (§6.6.3) | TekRisk | |---|---|---|---| | Base de la llama | Paso 7: el viento alarga la base y «la distancia entre la superficie de la llama y el objeto puede disminuir» (fig. 6.9c) | Calcula la base alargada D′ = 52.4 m, pero no la usa | Base elíptica D′ × D, alargada a sotavento desde el borde del charco | | Factor de vista | Paso 12: «usar las dimensiones calculadas de la llama y la distancia desde la llama al objeto» | Radio D/2 = 21.2 m y distancia de 100 m desde el centro del charco | Integra sobre la llama inclinada con su base alargada | | Distancia para τ | Pasos 9 y 10: «distancia x entre la superficie de la llama y el objeto» | El texto dice «50 m desde la superficie», pero el cálculo usa 100 m desde el centro | Distancia a la superficie de la llama (44 m) | **De dónde sale el +38 %.** Partiendo de la convención del ejemplo, se añade cada punto del método por separado. Receptor a 100 m a sotavento, flujo en kW/m²: | Paso | §6.6.3 | §6.6.4 | |---|---:|---:| | Convención del ejemplo (base circular, τ con 100 m) | 4.52 | 2.14 | | + τ medida desde la superficie de la llama | 4.80 (+6 %) | 2.25 (+5 %) | | + base desplazada a sotavento por el viento | 5.62 (+17 %) | 2.55 (+13 %) | | + base alargada D′ × D | 6.34 (+13 %) | 2.79 (+9 %) | El 4.581 del libro usa la τ de la ec. 6.24 y no la de la 6.29 (4.52). Esa diferencia es del 1.3 %. **Comprobaciones que descartan un error.** - **No se radia más energía de la que permite el balance.** El poder emisivo sale de la ec. 6.71, que supone un cilindro recto de diámetro D. La llama inclinada de TekRisk tiene un 4 % menos de superficie que ese cilindro (7 322 frente a 7 652 m² en el §6.6.3). - **El factor de vista está bien integrado.** Sobre una base circular reproduce la forma cerrada del Apéndice 6.A del libro con un error de 0.02 %. - **Usar un solo camino óptico apenas influye.** TekRisk aplica a toda la llama la τ de su punto más cercano. Calculada elemento a elemento, el flujo solo baja un 2 %. **El efecto depende de la dirección.** El +38 % es el caso de un receptor a sotavento, hacia donde el viento empuja la llama. Receptor a 100 m, §6.6.3, en kW/m²: | Receptor | Ejemplo del libro | TekRisk | |---|---:|---:| | A sotavento | 4.52 | 6.34 (+40 %) | | De través | 1.93 | 2.35 (+22 %) | | A barlovento | 1.30 | 1.28 (−2 %) | En resumen, TekRisk usa un modelo más conservador a sotavento, no comete un error de cálculo: acerca la llama al receptor como indica el propio libro. La comparación detallada con los dos ejemplos está en [Comparación con los ejemplos resueltos del Yellow Book](/es/docs/risk-models/pool-fire#yellow-book-examples). ## 3. Jet fire de llama sólida ### 3.1 Ejemplo §6.6.2 del Yellow Book Metano a 100 bar, orificio de 100 mm, 30 kg/s, receptor a 150 m. **Prueba automatizada.** | Magnitud | Yellow Book | TekRisk | Desviación | |---|---:|---:|---:| | Pasos 1 a 23 (velocidad, longitud y geometría de la llama, poder emisivo) | | | todos dentro de ±0.05 % | | Ancho de la base $W_1$ (m) | 0.71691 | 0.716909 | 0.00 % | | Flujo con la τ del libro (kW/m²) | 0.4172 | 0.4171 | −0.02 % | | **Flujo final de TekRisk (kW/m²)** | 0.4172 | 0.3889 | **−6.8 %** | La diferencia final es de método: TekRisk reparte el poder emisivo sobre el área del tronco de cono (ec. 6.56) y no sobre la del cilindro medio (ec. 6.57), y calcula la transmisividad con la ec. 6.29. El paso 28b del libro usa un exponente de −0.08 en lugar del −0.09 de la ec. 6.29. Una segunda fuente, el Ejemplo 3.7 de Casal (2018), se reproduce dentro de ±1 % a ±5 % según la magnitud. ### 3.2 Reporte real de DNV Phast 6.7 GLP (60 % butano, 40 % propano), 11.62 kg/s, fuga vertical a 20 m, viento de 6 m/s. **Prueba automatizada** (geometría ±1 %, poder emisivo ±2 %, radiación ±3 %). | Magnitud | Phast | TekRisk | |---|---:|---:| | Longitud de llama en calma (m) | 45.05 | 44.88 | | Longitud de llama (m) | 24.16 | 24.07 | | Anchos de la llama $W_1$ / $W_2$ (m) | 2.59 / 8.16 | 2.58 / 8.13 | | Fracción radiada | 0.18 | 0.179 | | Poder emisivo (kW/m²) | 232 | 233.9 | | Radiación a nivel de suelo, 9 puntos entre 16.8 y 75 m | | −0.4 % a +1.1 % | | Alcance de 1.6 kW/m² (m) | 56.8 | 55.9 (−1.6 %) | El caso parte del chorro expandido que imprime Phast. Solo se ha contrastado la fuga vertical de gas. ### 3.3 ALOHA 5.4.7: longitud de llama Tres corridas con tubería de 2 in. **Prueba automatizada** (±0.5 m, porque ALOHA redondea a metros enteros). | Corrida | ALOHA (m) | TekRisk (m) | |---|---:|---:| | Propano a 4.8 atm, viento de 4 m/s | 7 | 6.94 | | Propano a 4.7 atm, viento de 1.5 m/s | 7 | 6.93 | | Metano a 20 atm, viento de 1.5 m/s | 5 | 5.36 | Las zonas de radiación de estas mismas corridas no coinciden: ver la [sección 6](#unresolved). ## 4. Bola de fuego frente a SCRI Fuego GLP, BLEVE de 1000 kg. **Prueba automatizada.** | Magnitud | SCRI | TekRisk | Desviación | |---|---:|---:|---:| | Diámetro máximo (m) | 58.0 | 58.0 | 0 % | | Altura (m) | 43.5 | 43.5 | 0 % | | Duración (s) | 4.5 | 4.5 | 0 % | | Flujo en 10 distancias (kW/m²) | 1231.36 … 6.98 | 1203.33 … 6.82 | −2.28 % constante | | Distancia a 5.05 / 12.6 / 31.5 kW/m² (m) | 205.1 / 132.4 / 85.4 | 202.9 / 131.0 / 84.5 | −1.09 % | El −2.28 % viene de un exponente: TekRisk usa $M^{2/3}$ y SCRI, como la ec. 2.2.41 de CCPS, usa $M^{0.67}$. ## 5. Dispersión SLAB frente al programa original de LLNL Caso GASPRB (gas LP, evaporación de charco), comparado con la salida de SLAB.exe, el programa en Fortran de Lawrence Livermore National Laboratory (Ermak, 1990). **Diagnóstico.** | Magnitud | SLAB.exe | TekRisk | Desviación | |---|---:|---:|---:| | Concentración en el eje, 8 puntos entre 22.7 y 1600 m | | | −0.6 % a +0.2 % | | Concentración a nivel de suelo, 9 puntos | | | −0.8 % a −0.1 % | | Distancia al 100 % del LII (m) | 79 | 78.7 | −0.4 % | | Distancia al 50 % del LII (m) | 147 | 144.2 | −1.9 % | | Distancia al 25 % del LII (m) | 240 | 240.5 | +0.2 % | Solo se ha contrastado la fuente de evaporación de charco. Los chorros horizontal y vertical y la fuga instantánea todavía no tienen comparación numérica. ## 6. Diferencias sin resolver ### 6.1 Radiación del jet fire frente a ALOHA 5.4.7 **Documentado.** La longitud de llama coincide (sección 3.3), pero las zonas de 10 / 5 / 2 kW/m² no: | Corrida | ALOHA (m) | TekRisk sin tope (m) | TekRisk con tope (m) | |---|---|---|---| | Propano, 4 m/s, 2.10 kg/s | 10 / 12 / 19 | 11.4 / 15.7 / 24.5 | 7.1 / 10.5 / 16.1 | | Propano, 1.5 m/s, 2.03 kg/s | 10 / 12 / 18 | 10.5 / 15.1 / 23.5 | 5.2 / 9.0 / 14.8 | | Metano a 20 atm, 6.62 kg/s | 10 / 12 / 18 | 16.2 / 22.7 / 35.1 | 5.3 / 8.2 / 13.4 | Las zonas de ALOHA son casi iguales en las tres corridas, aunque el caudal máximo cambie más de tres veces. La explicación más probable es que ALOHA calcule la radiación con un caudal promediado en el tiempo y no con el máximo. En una fuga de tubería, el «Max Burn Rate» que imprime ALOHA es el pico inicial, mientras la tubería se despresuriza; después el caudal baja al que la fuente puede mantener a través de los 100 m de tubería. Por eso el «Total Amount Burned» de la hora equivale a un caudal medio de solo el 22–28 % del máximo. La documentación técnica de ALOHA (capítulo 3) indica que la fuga se resume en cinco tramos de caudal promediado como máximo. Con un caudal entre 1.05 y 1.36 veces el medio de la hora (el 23–38 % del máximo), TekRisk sin tope reproduce las zonas de 5 y 2 kW/m² de las tres corridas dentro del redondeo de ALOHA a metros enteros, y la llama sigue saliendo en 7 / 7 / 5 m. Esto explica también por qué las zonas apenas cambian: con menos caudal el chorro sale más lento, la fracción radiada sube y compensa en parte la diferencia de caudal. Con ese caudal la zona de 10 kW/m² queda en 8–9 m, pero ALOHA imprime 10 m en las tres corridas y la dibuja como un polígono regular, lo que apunta a una distancia mínima de presentación. Ninguna de las dos cosas está escrita en la documentación de ALOHA. Para confirmarlas falta leer los tramos de caudal en la gráfica de fuente de ALOHA (*Display → Source Strength*) o repetir el caso con una fuente de caudal constante. Mientras tanto, para comparar con ALOHA una fuga de tubería conviene introducir en TekRisk el caudal promediado y no el «Max Burn Rate». Los detalles y la opción de tope están en [Tope de cuerpo negro del SEP](/es/docs/risk-models/jet-fire#sep-black-body-cap). ### 6.2 Jet fire de fuente puntual frente a SCRI Fuego **Diagnóstico.** Fuga de gas LP por orificio. SCRI calcula 1.056 kg/s y TekRisk 0.581 kg/s (−45 %). Las distancias a las zonas salen entre −29 % y −53 %. El caudal de SCRI implica una masa molar de unos 164 g/mol, incompatible con el gas LP, así que no hemos podido conciliar los dos cálculos. ## 7. Modelos sin contraste externo todavía Estos modelos implementan ecuaciones publicadas y tienen pruebas internas, pero todavía no se han comparado con un ejemplo resuelto ni con otro software: - **VCE** (TNT equivalente, sobrepresión e impulso). - **SLAB** con chorro horizontal, chorro vertical y fuga instantánea (solo está contrastada la evaporación de charco). - **Riesgo individual** (contornos y riesgo medio) y **riesgo social** (curvas F-N). - **Funciones probit** y cálculo de fatalidad. - **Árboles de fallo y de eventos**: sus pruebas son de consistencia interna. - **Incendio de almacén**: solo está contrastado el factor de vista, con el Apéndice 6.1 del Yellow Book (±0.1 % en radiador plano y ±3 % en los 10 valores de la Tabla 6.A.1). - **Pool fire** con el preset de fuente puntual y con el preset basado en ALOHA: no hay corridas del programa original. - **Mezclas** de sustancias y **fuente lineal** (ductos). Si tienes un caso resuelto con alguno de estos modelos (un ejemplo de libro o la salida de otro programa) y quieres que lo contrastemos, envíanoslo desde el botón de comentarios de la aplicación. --- # 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 de referencia 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 | Direccional (llama extensa) o radial (fuente puntual) | Campo 2D de fatalidad rotado por la rosa, o disco CCPS Ec. 4.4.4 × perfil a sotavento | Rosa de vientos o viento uniforme, a elección del escenario | | **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 y Pool 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. #### Pool fire: rotación del campo de radiación El **incendio de charco** con llama extensa (presets Yellow Book, ALOHA y cribado) produce un **campo 2D de probabilidad de fatalidad** $pf(x, y)$ calculado para el rumbo del viento del escenario meteorológico: la llama se inclina y la zona letal se alarga a sotavento. Ese campo se calcula una sola vez y el motor de RI lo **rota alrededor del charco** a cada sector $\theta_j$ de la rosa ($\Delta = \theta_j - \theta_{\text{base}}$), muestreándolo por interpolación bilineal: $$ P_{f,\text{pf}}(x, y) = \min\!\left(1.0,\; \sum_{j} p(\theta_j) \cdot pf\!\left(R(-\Delta_j)\,(x, y)\right)\right) $$ Con el **método simplificado CCPS (Ec. 4.4.4)** el viento se asume uniforme y la huella letal ($pf \ge 1\,\%$) se describe por su disco: radio $R$ (alcance máximo desde el charco), área $A$ y ángulo equivalente $\theta_{eq} = 360 \cdot A / (\pi R^2)$ (la huella siempre envuelve el charco). Dentro del disco el RI conserva el gradiente térmico a través del perfil a sotavento $Pf_{dw}(r)$: $$ IR(r \le R) = f \cdot \frac{\theta_{eq}}{360} \cdot Pf_{dw}(r), \qquad IR(r > R) = 0 $$ En el **método estricto** ambos modos colapsan al disco $\theta_{eq}/360$ evaluado al umbral estricto (viento uniforme, igual que el incendio súbito). La elección se hace por escenario en la pestaña **Meteorología** del panel del pool fire y gobierna también la tabla de receptores y la curva F-N (16 subescenarios con $f \cdot p(\theta_j)$ y $N_{\theta_j}$). No aplica al preset de fuente puntual, a escenarios sin rumbo de viento ni a fuentes lineales. Internamente esta ruta es genérica: el motor sólo **pondera campos por sector** ($\sum_j p(\theta_j)\,pf_{\theta_j}$) y un *adaptador* decide de dónde sale cada $pf_{\theta_j}$. Para el pool fire el adaptador **rota** el campo base, lo que es exacto sólo porque el charco es simétrico respecto al eje de giro (Yellow Book, diámetro equivalente). Un modelo cuya forma dependa del ángulo entre el viento y la fuente (por ejemplo un jet fire horizontal) deberá entregar **un campo por rumbo** calculado por su propio motor; el motor de riesgo individual, la tabla de receptores y la curva F-N no cambian. --- ### 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 — llama sólida del Yellow Book (Chamberlain) y fuente puntual (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 (Yellow Book §6.5.3) **Geometría:** Frustum de cono inclinado por el viento, factor de vista integrado sobre la llama real **Caso de Uso:** Campo cercano, zonas direccionales y riesgo individual con rosa de vientos **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 (Kalghatgi / CCPS)** — Resolver la longitud de llama con la ecuación implícita de Chamberlain (llama sólida) o la correlación CCPS (fuente puntual). **Geometría de la llama (solo llama sólida)** — Calcular inclinación, despegue, longitud del frustum y anchos de base y punta (Yellow Book §6.5.3). **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** — Ec. 6.29 del Yellow Book sobre la distancia a la superficie de la llama (llama sólida) o CCPS 2.2.42 (fuente puntual). **Radiación térmica a una distancia dada** — Calcular la radiación incidente a una distancia dada usando el factor de vista del frustum (llama sólida) o la 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 llama sólida sigue el modelo de Chamberlain (1987) tal como lo transcribe el Yellow Book (CPR 14E, §6.5.3). **Paso 1 — fracción másica estequiométrica $W$.** Con la fórmula química de la sustancia se usa la fracción MÁSICA exacta en aire seco; sin ella, la correlación de parafinas del libro: $$W = \frac{W_g}{15.816\,W_g + 0.0395}\qquad (W_g \text{ en kg/mol})$$ **Pasos 10–12 — longitud de llama (correlación de Kalghatgi).** $Y$ es la raíz de $$C_a Y^{5/3} + C_b Y^{2/3} - C_c = 0$$ $$C_a = 0.024\left(\frac{g\,D_s}{u_j^2}\right)^{1/3}\qquad C_b = 0.2\qquad C_c = \left(\frac{2.85}{W}\right)^{2/3}$$ La función es creciente en $Y > 0$, así que TekRisk la resuelve por bisección, que converge siempre. $$L_{b0} = Y\,D_s$$ $$L_b = L_{b0}\left(0.51\,e^{-0.4\,u_w} + 0.49\right)\left(1 - 6.07\cdot10^{-3}\,(\Theta_{jv} - 90)\right)$$ | Variable | Descripción | Unidad | |----------|-------------|--------| | $W$ | Fracción másica de combustible en la mezcla estequiométrica | adimensional | | $Y$ | Parámetro adimensional de longitud de llama | adimensional | | $L_{b0}$ | Longitud de llama en aire en calma | m | | $L_b$ | Longitud de llama, de la punta al centro del plano de salida | m | | $u_w$ | Velocidad del viento | m/s | | $\Theta_{jv}$ | Ángulo entre el eje del orificio y la horizontal en la dirección del viento: 90° vertical, 0° horizontal a favor del viento | grados | La constante 2.85 de $C_c$ está ajustada para parafinas. Con otra sustancia (por ejemplo, etileno) el resultado lleva el aviso correspondiente. *Referencia: Yellow Book (CPR 14E, 3.ª ed.), §6.5.3, ecs. 6.30 y 6.42–6.44; 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 Sólida (Yellow Book §6.5.3) **Chorro expandido (pasos 2–6).** La velocidad del chorro sale de la presión y la temperatura de almacenamiento, también con caudal conocido: $$\gamma = \left(1 - \frac{R_c}{C_p\,W_g}\right)^{-1}\qquad T_j = T_s\left(\frac{P_{air}}{P_{init}}\right)^{(\gamma-1)/\gamma}\qquad P_c = P_{init}\left(\frac{2}{\gamma+1}\right)^{\gamma/(\gamma-1)}$$ Flujo choked ($P_{init}/P_{air} \geq ((\gamma+1)/2)^{\gamma/(\gamma-1)}$): $$M_j = \sqrt{\frac{(\gamma+1)\left(P_c/P_{air}\right)^{(\gamma-1)/\gamma} - 2}{\gamma-1}}$$ Flujo subsónico con descarga por orificio: $$M_j = \sqrt{\frac{\sqrt{1 + 2(\gamma-1)F^2} - 1}{\gamma-1}}\qquad F = \frac{4\,\dot m}{\pi\,d_o^2\,P_{air}}\sqrt{\frac{R_c\,T_s}{\gamma\,W_g}}$$ Flujo subsónico con caudal conocido (expansión isentrópica hasta $P_{air}$, coherente con la ecuación de $T_j$; con un orificio coherente con el caudal da el mismo $M_j$): $$M_j = \sqrt{\frac{2}{\gamma-1}\left[\left(\frac{P_{init}}{P_{air}}\right)^{(\gamma-1)/\gamma} - 1\right]}$$ $$u_j = M_j\sqrt{\frac{\gamma\,R_c\,T_j}{W_g}}$$ El libro escribe $F$ con $T_j$. Con la temperatura estática de salida la relación masa–Mach da $F = M_j$ exactamente; la forma cuadrática del libro solo se deduce con la temperatura de estancamiento $T_s$, que es la que usa TekRisk. La constante del libro, $3.6233\cdot10^{-5}$, es $4/(\pi\cdot101325)\cdot\sqrt{8.31451}$; TekRisk usa la presión atmosférica local (altitud). **Diámetro efectivo de la fuente $D_s$.** Por defecto (bloque «Chorro expandido», Kalghatgi 1984 y Phast, motor 1.3.0) $D_s = \sqrt{4\dot m/(\pi\,\rho_{air}\,u_j)}$ (ec. 6.39) en cualquier régimen, con $u_j$ del chorro expandido de la ec. 6.36. Con la opción «Yellow Book literal», en flujo crítico se usa la ec. 6.41 del libro, $D_s = d\,\sqrt{\rho_j/\rho_{air}}$ con $\rho_j = P_c W_g/(R_c T_j)$; en flujo subsónico, la ec. 6.39, $D_s = \sqrt{4\dot m/(\pi\,\rho_{air}\,u_j)}$. Con **descarga por orificio**, $d$ es el diámetro del orificio. Con **caudal conocido**, el diámetro no es un dato: caudal, presión y diámetro no son independientes (un orificio dado a una presión dada deja pasar un caudal dado). TekRisk usa el **diámetro equivalente** de la tobera ideal ($C_d = 1$) que descarga ese caudal: $$d_{eq} = \sqrt{\frac{4\,\dot m}{\pi\,P_{init}\sqrt{\dfrac{\gamma\,W_g}{R_c\,T_s}\left(\dfrac{2}{\gamma+1}\right)^{(\gamma+1)/(\gamma-1)}}}}$$ Así, con caudal conocido la llama crece con el caudal y no depende de ningún diámetro que el usuario pudiera fijar. **Inclinación (pasos 7 y 13).** $$R_w = \frac{u_w}{u_j}\qquad Ri(L_{b0}) = \left(\frac{g}{D_s^2\,u_j^2}\right)^{1/3} L_{b0}$$ Para $R_w \leq 0.05$ (llama dominada por el chorro): $$\alpha = (\Theta_{jv} - 90)\left(1 - e^{-25.6\,R_w}\right) + \frac{8000\,R_w}{Ri(L_{b0})}$$ Para $R_w > 0.05$ (dominada por el viento): $$\alpha = (\Theta_{jv} - 90)\left(1 - e^{-25.6\,R_w}\right) + \frac{134 + 1726\sqrt{R_w - 0.026}}{Ri(L_{b0})}$$ **Despegue y longitud del frustum (pasos 14–15).** $$K = 0.185\,e^{-20\,R_w} + 0.015\qquad b = L_b\,\frac{\sin(K\alpha)}{\sin\alpha}$$ En aire en calma ($\alpha = 0$) $b = K\,L_b = 0.2\,L_b$; con $\alpha = 180°$, $b = 0.015\,L_b$. $$R_l = \sqrt{L_b^2 - b^2\sin^2\alpha} - b\cos\alpha$$ **Anchos (pasos 16–19).** $$\frac{\rho_{air}}{\rho_j} = \frac{T_j\,W_{air}}{T_{air}\,W_g}\qquad Ri(D_s) = \left(\frac{g}{D_s^2\,u_j^2}\right)^{1/3} D_s\qquad C' = 1000\,e^{-100\,R_w} + 0.8$$ $$W_1 = D_s\left(13.5\,e^{-6R_w} + 1.5\right)\left\{1 - \left[1 - \frac{1}{15}\sqrt{\frac{\rho_{air}}{\rho_j}}\right]\exp\!\left(-70\,Ri(D_s)^{C' R_w}\right)\right\}$$ $$W_2 = L_b\left(0.18\,e^{-1.5\,R_w} + 0.31\right)\left(1 - 0.47\,e^{-25\,R_w}\right)$$ Las fuentes transcriben la ec. 6.54 de dos maneras. El **Yellow Book** (ecuación y ejemplo §6.6.2) y **ALOHA** (NOAA), que declara haberla cotejado con el artículo original de Chamberlain (p. 303), usan la **potencia** $Ri(D_s)^{C' R_w}$. Lees (2001) —y de él Casal y Kakosimos— la escriben como **producto** $Ri(D_s)\cdot C'\cdot R_w$. Cook et al. (1990) propusieron sustituir el término por $e^{-7.5R}$. DNV Phast, en cambio, usa en la práctica la forma de **producto**: su reporte de una fuga vertical de GLP da $W_1 = 2.59$ m, que TekRisk reproduce con el producto (2.58 m) y no con la potencia (0.12 m) ni con la simplificación de Cook (0.42 m). El preset Yellow Book usa la **potencia**, que reproduce el $W_1 = 0.71691$ m del ejemplo del libro; el preset basado en Phast usa el producto. Con viento casi nulo ($R_w < 0.002$) la ecuación salta hacia $W_1 = 15\,D_s$ (porque $Ri^0 = 1$) y el resultado lleva un aviso; el efecto sobre la radiación es pequeño porque $W_2$ domina el tamaño de la llama. **Área de la llama (paso 20).** El frustum con sus dos tapas (ec. 6.56): $$A = \frac{\pi}{4}\left(W_1^2 + W_2^2\right) + \frac{\pi}{2}\left(W_1 + W_2\right)\sqrt{R_l^2 + \left(\frac{W_2 - W_1}{2}\right)^2}$$ El libro ofrece como alternativa el cilindro de ancho medio (ec. 6.57), que es el que usa su ejemplo; TekRisk publica ambas y usa la 6.56, porque es la superficie sobre la que integra el factor de vista. **Orientación de la fuga y geometría 3D.** El libro advierte que su transformación geométrica solo es correcta si el orificio está en el plano vertical del viento ($\Theta_j = \Theta_{jv}$). TekRisk ofrece las dos orientaciones que lo cumplen para cualquier rumbo: **vertical** ($\Theta_j = 90°$: chimenea, venteo) y **horizontal a favor del viento** ($\Theta_j = 0°$: el peor caso de una fuga horizontal de rumbo desconocido). Con el origen en el pie de la fuente, $x$ a sotavento y $z$ hacia arriba: $$O = (0,\,0,\,h_s)\qquad P = O + b\,(\cos\Theta_j,\,0,\,\sin\Theta_j)\qquad T = P + R_l\,(\sin\varphi,\,0,\,\cos\varphi)$$ con $\varphi = 90° - \Theta_j + \alpha$ el ángulo del eje de la llama con la vertical. Por construcción $|T - O| = L_b$ (la ec. 6.50 es la ley de cosenos del triángulo $OPT$). La parte de la llama que queda bajo el suelo (fuga horizontal baja) no radia y se descarta, con aviso. *Referencia: Yellow Book (CPR 14E, 3.ª ed.), §6.5.3, ecs. 6.31–6.57; Chamberlain (1987)* #### Presets de radiación: Yellow Book, Phast y ALOHA La llama sólida calcula por defecto con el Yellow Book. En **Parámetros avanzados de radiación**, el botón de ajustes junto a «Método de cálculo», cualquier usuario elige una metodología base (que fija todos los bloques de la tabla) o combina los bloques a su criterio; es el único sitio donde se elige la metodología. Si cambias algún bloque respecto a su metodología, el escenario queda como **personalizado** y así aparece en los resultados, el PDF y la memoria de cálculo. | Bloque | Yellow Book (CPR 14E §6.5.3) | Basada en Phast (cono DNV) | Basada en ALOHA (5.4.4, §6.4) | |---|---|---|---| | Chorro expandido y $D_s$ | Ecs. 6.33–6.36 y $D_s$ por la ec. 6.39 con el chorro expandido (definición del libro y de Kalghatgi 1984); el atajo 6.41 del libro queda como opción «Yellow Book literal» | Igual que el Yellow Book | Salida de la tubería (§3.5.2 y §6.4.2): expansión adiabática desde la interfaz de flujo crítico $P_{ia}$ hasta la presión atmosférica, $T_j = T_s(P_{air}/P_{ia})^{(\gamma-1)/\gamma}$ y $D_s = d\,\sqrt{\rho_j/\rho_{air}}$ con el diámetro de la tubería | | Longitud de llama | Kalghatgi: raíz $Y$ de la ec. 6.42, $L_{b0} = Y\,D_s$ y ec. 6.44 | Igual que el Yellow Book | $L_b = 105.4\,D_s\left[1 - 6.07\cdot10^{-3}(\Theta_j - 90)\right]$ (Lees 16.18.21b); $L_{b0}$ se despeja de la ec. 6.44 para la inclinación | | Ancho de la base $W_1$ | Ec. 6.54, forma de potencia | Ec. 6.54, forma de producto | Forma de potencia | | Fracción radiada | $F_s = 0.21\,e^{-0.00323\,u_j} + 0.11$ | Igual que el Yellow Book | $F_s = 0.21\,C_{MW}\,e^{-0.00323\,u_j} + 0.11$, con $C_{MW} = 1$ ($MW < 21$), $\sqrt{MW/21}$ (21–60) o 1.69 ($MW > 60$) | | Transmisividad | Bagster–Pitblado, $\tau = 2.02\,(p_w x)^{-0.09}$ | Wayne (1991): absorción de H₂O y CO₂ | Cook, $\tau = 1.389 - 0.135\,\log_{10}(p_w x)$ | Los ajustes avanzados permiten además combinar los bloques a criterio y fijar la **altura del receptor**. Por defecto es 0 m: zonas, receptores y campo del riesgo individual se evalúan a ras de suelo, como en el Yellow Book y en ALOHA. La documentación técnica de ALOHA imprime tres ecuaciones que contradicen el Yellow Book y a Lees: la inclinación para $R_w > 0.05$ sin el término 134, $R_L$ con «+» bajo la raíz y $M_j$ crítico con $\gamma + 1$ en el denominador. TekRisk no las copia y usa las formas del Yellow Book; el bloque de expansión a presión atmosférica sigue el §6.4.2 tal como está publicado. ALOHA además solo modela la fuga vertical: con la fuga horizontal los resultados no son comparables con ALOHA. Una llama vertical nace despegada ($h_s + b$ sobre el suelo), es estrecha abajo y ancha arriba, y el receptor en el suelo la ve desde abajo. Ejemplo con gas LP (orificio de 2.5 in, 97.62 psi, 25 °C, viento de 4 m/s): con el Yellow Book (Ds del chorro expandido) la llama mide 15.7 m, el SEP 236 kW/m² y a nivel de suelo las zonas de 10 y 5 kW/m² llegan a 9 y 18.5 m. Con el atajo 6.41 literal la llama sería de 27 m, el SEP 82 kW/m² y la radiación máxima en el suelo 3.9 kW/m² (ninguna de las dos zonas), aunque junto a la llama, a su altura media, superaría 28 kW/m². Con el preset basado en ALOHA la llama es de 9.2 m y el SEP de 722 kW/m² (sin tope, el valor por defecto): 10 kW/m² a 14.5 m y 5 kW/m² a 20.6 m. Con el tope de cuerpo negro activado (722 → 300), 7.8 y 13.1 m; con el tope y el receptor a 1.5 m, 10 kW/m² a 9.4 m. Propano por tubería de 2 in a 4.8 atm y 25 °C, fuga vertical, viento de 4 m/s. Con el caudal que imprime ALOHA (2.10 kg/s), el preset basado en ALOHA (con el diámetro de la tubería, 2 in) da una llama de 6.9 m frente a 7 m, y zonas de 11.4 / 15.7 / 24.5 m frente a 10 / 12 / 19 m para 10 / 5 / 2 kW/m² (sin tope de SEP, como ALOHA). Con el tope de cuerpo negro activado, 7.1 / 10.5 / 16.1 m. Con metano a 20 atm (6.62 kg/s) la llama es de 5.4 m frente a 5 m. La comparación completa, con una segunda corrida de propano a 1.5 m/s, está en [Tope de cuerpo negro del SEP](#sep-black-body-cap). La longitud de llama coincide en las tres corridas; las zonas de ALOHA quedan por debajo de lo que dan las ecuaciones de su propia documentación (ver la nota de ese apartado). Con el atajo 6.41 literal del Yellow Book en el preset ALOHA la llama salía un 53 % más larga y las zonas de 5 y 2 kW/m² un tercio más largas. El preset Yellow Book por defecto (Kalghatgi con el Ds del chorro expandido) da para este caso una llama de 13.6 m y zonas de 9.5 / 16.5 / 27 m, por encima de ALOHA en las tres. ALOHA descuenta además la fricción de la tubería en el caudal: para comparar, introduce en TekRisk el caudal de ALOHA como caudal conocido. GLP (60 % butano, 40 % propano), 11.62 kg/s, fuga vertical a 20 m de altura, viento de 6 m/s, 23.5 °C y 75 % de humedad, modelo «Cone model – DNV recommended». Partiendo del chorro expandido que imprime Phast, el preset basado en Phast da: llama en calma 44.9 m (Phast 45.05), llama 24.1 m (24.16), despegue 3.60 m (3.62), frustum 20.7 m (20.80), anchos 2.58 y 8.13 m (2.59 y 8.16), ángulo 23.57° (23.54°), fracción radiada 0.179 (0.18) y SEP 234 kW/m² (232). La radiación a nivel de suelo entre 10 y 75 m coincide al ±1.5 % y el alcance de 1.6 kW/m² es 55.9 m frente a 56.8 m. Solo se contrastó la fuga vertical de gas: Phast trata la horizontal y la bifásica con modelos propios. #### Qué esperar de cada preset con una fuga vertical pequeña Con una fuga vertical pequeña el Yellow Book puede no alcanzar la zona de 10 kW/m² (y con el atajo 6.41 literal tampoco la de 5) mientras el preset basado en ALOHA alcanza ambas. No hay ningún tope que frene al Yellow Book: el único tope del motor es el poder emisivo de cuerpo negro (SEP ≤ 300 kW/m², opcional y desactivado por defecto) y el Yellow Book queda por debajo. Lo que cambia es el diámetro efectivo $D_s$ y la geometría. Ejemplo con propano, orificio de 1 in a 8 bar abs y 25 °C, fuga vertical a 1 m del suelo, viento de 4 m/s, caudal 0.672 kg/s (el calor radiado es el mismo en todas las filas; cambia sobre cuánta superficie se reparte y desde dónde lo ve el receptor): | Configuración | Llama | Área | SEP (kW/m²) | Flujo máximo a la altura del receptor | Zonas 10 / 5 / 2 kW/m² | |---|---:|---:|---:|---:|---| | Yellow Book (Ds del chorro expandido), receptor a 0 m | 7.2 m | 25 m² | 199 | 8.3 kW/m² a 2.75 m | no / 7.5 / 13.3 m | | Yellow Book, receptor a 1.5 m | 7.2 m | 25 m² | 199 | 16.8 kW/m² | 5.4 / 8.7 / 13.8 m | | Yellow Book literal (atajo 6.41), receptor a 0 m | 12.6 m | 77 m² | 64 | 2.9 kW/m² a 4.5 m | no / no / 10.7 m | | Basada en ALOHA | 3.5 m | 6 m² | 799 | 27.2 kW/m² a 1.75 m | 5.8 / 8.3 / 13.2 m | | Basada en ALOHA, tope de SEP activado | 3.5 m | 6 m² | 799 → 300 | 10.2 kW/m² a 1.75 m | 2.1 / 4.9 / 8.1 m | | Yellow Book, fuga horizontal | 11.1 m | 59 m² | 84 | 84 kW/m² (dentro de la llama) | 14.8 / 16.6 / 20.0 m | Lectura: 1. **La longitud la fija el diámetro efectivo $D_s$.** El atajo 6.41 del libro (densidad del gas en el plano de salida) da 12.6 m; la definición general del libro y de Kalghatgi (1984), el chorro expandido a presión atmosférica de la ec. 6.39 que usa Phast, da 7.2 m y es la del preset desde el motor 1.3.0. ALOHA parte del gas expandido a la salida de la tubería y usa la correlación de laboratorio $105.4\,D_s$: 3.5 m y un emisor tan concentrado (799 kW/m²) que supera la emisión de cuerpo negro; con el tope activado TekRisk lo recorta a 300. Por comparación, los poderes emisivos medidos en antorchas de hidrocarburos (Chamberlain, 1987) van de 60 a 230 kW/m². 2. **En vertical, el receptor del suelo ve la llama de canto.** Nace despegada 1.2 m sobre el orificio, con una base de 3 cm y una punta de 2.2 m; desde el suelo el flujo máximo es 8.3 kW/m² y la zona de 10 kW/m² no se alcanza. Subir el receptor a 1.5 m lo lleva a 16.8 kW/m² y la zona de 10 aparece a 5.4 m. Cuando ninguna zona de 5 kW/m² o más se alcanza (fila del atajo literal), TekRisk lo indica en Resultados con el aviso `vertical_flame_low_ground_flux`. 3. **El peor caso de una fuga pequeña es la orientación horizontal a favor del viento**, no la vertical: la misma fuga tumbada da 14.8, 16.6 y 20 m con el Yellow Book. Para un estudio de riesgo, evalúa esa orientación cuando el rumbo de la fuga sea desconocido. #### Guía de los bloques de la llama sólida Cada bloque de **Parámetros avanzados de radiación** admite dos o tres opciones. Para cada una: qué es, cuándo usarla y qué limitaciones tiene. Cuando un cálculo entra en una de esas limitaciones, TekRisk lo avisa en Resultados (τ extrapolada, W1 sensible al viento, SEP por encima del cuerpo negro o acotado a él, llama bajo el suelo, fuga vertical sin zonas de 5 kW/m² o más a la altura del receptor). #### Chorro expandido y diámetro efectivo Ds **Chorro expandido (Kalghatgi 1984, Phast; ec. 6.39).** El chorro se expande isentrópicamente hasta la presión atmosférica (ecs. 6.33–6.36: $T_j$, $P_c$, $M_j$ de la ec. 6.35 en flujo crítico) y $D_s$ sale de la definición general del libro, $D_s = \sqrt{4\dot m/(\pi\,\rho_{air}\,u_j)}$: el diámetro de la tobera imaginaria que descarga aire a densidad ambiente con el mismo caudal y la velocidad del chorro expandido. Es exactamente lo que hace Kalghatgi (1984), que en flujo estrangulado «sustituye el quemador por una tobera equivalente en cuya salida el flujo se ha expandido a presión atmosférica», y lo que hace Phast (con su reporte de un GLP a 11.6 kg/s, esta vía reproduce sus 45 m de llama en calma y 24 m con viento). *Cuándo:* por defecto, en cualquier régimen; no depende del orificio, así que con caudal conocido el diámetro es irrelevante. *Limitaciones:* la correlación de Kalghatgi se ajustó con quemadores de 1 a 10 mm y antorchas de gas natural; en chorros críticos de gases pesados el SEP sube (menos área) y puede acercarse al tope de cuerpo negro. **Yellow Book literal (ec. 6.41, ejemplo §6.6.2).** El atajo de las ecs. 6.40–6.41 para flujo crítico: densidad del gas en el plano de salida, $\rho_j = P_c W_g/(R_c T_j)$, y «diámetro del chorro ≈ diámetro del orificio», $D_s = d_o\sqrt{\rho_j/\rho_{air}}$ (con caudal conocido, la tobera equivalente $d_{eq}$). *Cuándo:* reproducir el ejemplo §6.6.2 del libro o estudios hechos con esa receta. *Limitaciones:* infla $D_s$ en $\sqrt{P_c/P_{air}}$ respecto a la definición general: ×2 a 5 bar, ×7 en el ejemplo del libro a 100 bar (141 m de llama para 30 kg/s de metano). Llamas 1.5–2 veces más largas que Phast y SEP proporcionalmente menor; en fuga vertical subestima el flujo al suelo. **Salida de la tubería de ALOHA (§3.5.2 y §6.4.2).** El modelo de tubería de ALOHA (Wilson) supone flujo casi isotérmico hasta los últimos 200 diámetros, donde el flujo es crítico, y expansión adiabática desde ahí hasta la presión atmosférica. TekRisk toma la presión en esa interfaz, $P_{ia} = \frac{4\,\dot m}{\pi d^2}\sqrt{R_c T_s/W_g}$, la temperatura de salida $T_j = T_s\,(P_{air}/P_{ia})^{(\gamma-1)/\gamma}$, la densidad $\rho_j$ a presión atmosférica y la velocidad del gas expandido en la sección de salida, $u_j = \dot m/(\rho_j\,\pi d^2/4)$; con ella la ec. 6.39 da exactamente $D_s = d\,\sqrt{\rho_j/\rho_{air}}$, la forma de ALOHA. Con el caudal que imprime ALOHA reproduce su longitud de llama en tres corridas reales (propano a 4.7 y 4.8 atm: 6.9 m frente a 7; metano a 20 atm: 5.4 m frente a 5). **Pide el diámetro de la tubería también con caudal conocido.** $P_{ia}$ se limita al intervalo entre la presión atmosférica y la de almacenamiento: por debajo, el gas sale sin expansión; por encima, el caudal no es coherente con el diámetro y la presión, el cálculo sigue con la presión de almacenamiento y Resultados lo avisa (`pipe_flow_exceeds_storage_pressure`). *Cuándo:* comparar con ALOHA y fugas por rotura total de tubería. *Limitaciones:* la velocidad de salida que implica es mayor que la de un chorro isentrópico (a presión alta, varias veces la del sonido), pero solo entra en la fracción radiada, que a esas velocidades ya está en su mínimo de 0.11; las zonas de ALOHA 5.4.7 quedan por debajo de lo que dan estas ecuaciones con su propio caudal (ver el tope de SEP). #### Longitud de llama **Kalghatgi (Yellow Book, ecs. 6.42–6.44).** Resuelve la raíz $Y$ de la ecuación implícita de Kalghatgi: la longitud depende del combustible (masa molar, temperatura del chorro y fracción estequiométrica), de la velocidad del chorro expandido y del viento a través del número de Richardson. *Cuándo:* análisis de riesgo con cualquier orientación; es la correlación validada por Chamberlain con datos de antorchas industriales de gas natural y propano. *Limitaciones:* supone chorro subsónico expandido de gas; $\beta = 2.85$ está ajustado para parafinas (aviso `non_paraffin_beta` en otros gases); con viento muy débil la longitud apenas cambia, pero el ancho de la base sí (ver W1). **L = 105.4·Ds (Lees 16.18.21b, ALOHA).** Correlación de laboratorio: la longitud es proporcional al diámetro de la fuente expandida, con un factor de inclinación $[1 - 6.07\cdot10^{-3}(\Theta_j - 90)]$; $L_{b0}$ se despeja después de la ec. 6.44. *Cuándo:* comparar con ALOHA o con estudios hechos con Lees; cribados rápidos. *Limitaciones:* no depende del combustible ni del viento, así que da la misma llama para metano y propano a igual diámetro; se obtuvo con chorros verticales de escala pequeña y en fugas grandes produce llamas más cortas que Kalghatgi (en el ejemplo de gas LP de arriba, 10 m frente a los 15.7 m del Yellow Book, ambos con el chorro expandido); ALOHA solo modela la fuga vertical. #### Ancho de la base W1 **Forma de potencia (Yellow Book, ALOHA).** La ec. 6.54 tal como la imprimen el Yellow Book y ALOHA, que declara haberla cotejado con Chamberlain: el término $Ri(D_s)^{C'R_w}$ es una potencia. *Cuándo:* preset Yellow Book; reproduce el ejemplo §6.6.2. *Limitaciones:* salvo con viento muy fuerte la base sale estrecha, del orden de $D_s$; con viento casi nulo ($R_w < 0.002$) salta a $15\,D_s$ y el resultado es sensible a pequeños cambios de viento (aviso `w1_low_wind_sensitive`). **Forma de producto (Lees, Casal, Phast).** La transcripción de Lees (2001), que siguen Casal y Kakosimos: $Ri(D_s)\cdot C'\cdot R_w$. Es la que usa DNV Phast: con ella TekRisk reproduce el $W_1 = 2.59$ m de un reporte real de Phast (2.58 m). *Cuándo:* preset basado en Phast y cálculos hechos con Lees o Casal. *Limitaciones:* con viento normal da una base ancha, del orden de 10–20 $D_s$, muy distinta de la potencia (en el caso de Phast, 2.6 m frente a 0.12 m); no reproduce el ejemplo del Yellow Book. #### Fracción radiada Fs **Ec. 6.59 (Yellow Book).** $F_s = 0.21\,e^{-0.00323\,u_j} + 0.11$: la fracción del calor liberado que sale como radiación, decreciente con la velocidad del chorro. *Cuándo:* por defecto; es la de Chamberlain. *Limitaciones:* se ajustó con antorchas de gas natural; en gases más pesados (propano, butano, gas LP), que producen llamas más luminosas, tiende a subestimar el poder emisivo. **Con factor de peso molecular C_MW (Cook, ALOHA).** Multiplica el término exponencial por $C_{MW} = 1$ si $MW < 21$ g/mol, $\sqrt{MW/21}$ entre 21 y 60 g/mol y 1.69 por encima. *Cuándo:* gases más pesados que el gas natural y comparaciones con ALOHA. *Limitaciones:* es un escalado empírico de Cook et al. (1990), no está en el Yellow Book; en gases pesados el SEP puede superar la emisión de cuerpo negro (aviso `sep_above_black_body`); con el [tope](#sep-black-body-cap) activado se acota a 300 kW/m² (aviso `sep_capped_black_body`) y el flujo ya no crece con $F_s$. #### Transmisividad atmosférica τ **Bagster–Pitblado (Yellow Book, ec. 6.29).** $\tau = 2.02\,(p_w\,x)^{-0.09}$, con $x$ medido hasta la superficie de la llama. *Cuándo:* por defecto en análisis de riesgo. *Limitaciones:* publicada solo para $10^4 \le p_w x \le 10^5$ N/m; con 25 °C y 50 % de humedad son caminos de unos 6 a 63 m. Por debajo la fórmula supera 1 (TekRisk la acota) y por encima se extrapola, aunque ahí prácticamente coincide con Cook. El aviso `transmissivity_extrapolated` indica que alguna zona o receptor quedó fuera del rango. **Wayne (1991), la de Phast.** Absorción del vapor de agua y del CO₂ en el camino óptico, con $X_{H_2O} = HR\,x\,p_{sat}[\text{mmHg}]\cdot 288.651/T_{air}$ y $X_{CO_2} = 273\,x/T_{air}$. *Cuándo:* preset basado en Phast; con ella TekRisk reproduce el perfil de radiación a nivel de suelo de un reporte de Phast al ±1.5 % (con Bagster–Pitblado o Cook queda un 1–2 % bajo). *Limitaciones:* publicada de 10 a 1000 m; por debajo se extrapola, aunque en campo cercano τ ≈ 1. Considera vapor de agua y CO₂, no humo ni niebla. **Cook (ALOHA).** $\tau = 1.389 - 0.135\,\log_{10}(p_w x)$, la de NOAA OR&R 43. *Cuándo:* comparar con ALOHA y campo cercano (menos de 6 m), donde no tiene el problema de superar 1. *Limitaciones:* no tiene un rango de validez publicado; a más de unos 60 m da lo mismo que la ec. 6.29; igual que ella, solo considera vapor de agua y CO₂ ambiente, no humo ni niebla. #### Altura del receptor Altura sobre el suelo a la que se evalúan las zonas, los receptores y el campo del riesgo individual. **0 m** es la convención del Yellow Book y de ALOHA. **1.5 m** aproxima a una persona de pie: con una llama vertical despegada, subir el receptor aumenta el flujo bajo la llama (en el ejemplo de gas LP, la zona de 10 kW/m² pasa de no alcanzarse a unos 11 m). *Limitaciones:* es una sola altura para todo el escenario, no por receptor; no sustituye a un cálculo de equipos elevados ni tiene en cuenta obstáculos. ### 3.9 Poder Emisivo Superficial (SEP) **Llama sólida (pasos 21–23).** $$Q' = \dot m\,\Delta H_c\qquad F_s = 0.21\,e^{-0.00323\,u_j} + 0.11\qquad SEP = \frac{F_s\,Q'}{A}$$ Sin factor de corrección por peso molecular (no está en la ec. 6.59) y sin hollín ($\varsigma = 0$, como el ejemplo del libro). Por defecto el SEP no se acota; si supera 300 kW/m² (emisión de cuerpo negro de una llama de hidrocarburo), Resultados lo avisa. El tope es opcional (ver abajo). #### Tope de cuerpo negro del SEP Una llama de hidrocarburo a unos 1500 K no puede radiar más que un cuerpo negro a esa temperatura ($\sigma T^4 \approx 300$ kW/m²), y los poderes emisivos medidos en antorchas (Chamberlain, 1987) van de 60 a 230 kW/m². El balance $F_s\,Q'/A$, sin embargo, puede dar mucho más cuando la llama calculada es corta y su área pequeña: con propano y GLP el preset basado en ALOHA llega a 700–800 kW/m², y con metano a presión alta a más de 2000. La opción **Tope de cuerpo negro del SEP**, en **Parámetros avanzados de radiación**, decide qué hacer con ese exceso. No es un bloque del preset: cambiarla no convierte la metodología en «Personalizada». - **Desactivado (por defecto desde el motor 1.4.0).** El SEP se publica tal como sale del balance y Resultados lo avisa (`sep_above_black_body`). Es lo que hace ALOHA, que no acota el poder emisivo. El resultado queda del lado conservador. - **Activado.** El SEP se acota a 300 kW/m² y Resultados lo avisa (`sep_capped_black_body`). Por encima del tope el flujo deja de crecer con $F_s$ y con el caudal. Solo tiene efecto cuando el balance supera 300 kW/m². En los ejemplos de esta página el Yellow Book y Phast quedan por debajo (199–236 kW/m²); el preset basado en ALOHA con gases pesados lo supera casi siempre. *Cuándo dejarlo desactivado:* estudios de consecuencias y de riesgo conservadores, y comparaciones con ALOHA. Contraste con tres corridas reales de ALOHA 5.4.7 (tubería de 2 in, fuga vertical, caudal de ALOHA como caudal conocido; propano salvo indicación), zonas de 10 / 5 / 2 kW/m²: | Corrida | ALOHA | Sin tope | Con tope | |---|---|---|---| | 4 m/s, 2.10 kg/s | 10 / 12 / 19 m | 11.4 / 15.7 / 24.5 m | 7.1 / 10.5 / 16.1 m | | 1.5 m/s, 2.03 kg/s | 10 / 12 / 18 m | 10.5 / 15.1 / 23.5 m | 5.2 / 9.0 / 14.8 m | | Metano 20 atm, 1.5 m/s, 6.62 kg/s | 10 / 12 / 18 m | 16.2 / 22.7 / 35.1 m | 5.3 / 8.2 / 13.4 m | Con el «Max Burn Rate» de ALOHA ninguna de las dos opciones reproduce sus zonas: la longitud de llama coincide en las tres corridas, pero sin tope TekRisk sale entre +4 y +30 % por encima con propano (del lado conservador) y con tope entre −12 y −48 %. La causa más probable no es el tope: en una fuga de tubería ese valor es el pico inicial de la despresurización, y ALOHA parece calcular la radiación con un caudal promediado en el tiempo. Con un caudal de 1.05–1.36 veces el medio de la hora (el que resulta del «Total Amount Burned»), TekRisk sin tope reproduce las zonas de 5 y 2 kW/m² de las tres corridas dentro del redondeo de ALOHA. La zona de 10 kW/m² de ALOHA sale siempre en 10 m y se dibuja como un polígono regular: parece un mínimo de presentación de ALOHA, no un resultado. Detalle en [Validación de modelos](/es/docs/validation#unresolved-jet-fire-aloha). *Cuándo activarlo:* cuando el estudio pida una estimación realista del campo cercano y no una conservadora (por ejemplo, distancias de diseño frente a equipos, donde sobreestimar también tiene costo), o para reproducir resultados de TekRisk calculados antes del motor 1.4.0, que acotaban siempre. Los resultados guardados antes de ese cambio conservan el tope en Resultados y en las memorias; al recalcularlos se aplica la opción del escenario. | Variable | Descripción | Unidad | |----------|-------------|--------| | $Q'$ | Calor liberado por la combustión | kW | | $F_s$ | Fracción del calor radiada desde la superficie | adimensional | | $SEP$ | Poder emisivo superficial | kW/m² | | $\Delta H_c$ | Calor de combustión | kJ/kg | *Referencia: Yellow Book, ecs. 6.58–6.60; Chamberlain (1987)* **Fuente puntual.** No usa SEP: la fracción radiada $f_r$ la elige el usuario (sección 3.11). ### 3.10 Transmisividad Atmosférica **Llama sólida.** Ecuación 6.29 del Yellow Book (Bagster y Pitblado), con la presión parcial de vapor de agua del apéndice 2.1 del libro y el camino óptico medido hasta la **superficie de la llama** ($x$ de la ec. 6.63): $$\tau = 2.02\,(p_w\,x)^{-0.09}\qquad p_w = HR\cdot p_w^{sat}(T_a)$$ TekRisk acota $\tau$ a $[0,\,1]$ y avisa cuando algún punto publicado cae fuera del rango de validez del libro ($10^4 \leq p_w\,x \leq 10^5$ N/m). El ejemplo del libro usa en su lugar las gráficas de absorción 6.2 y 6.3 (ec. 6.24). **Fuente puntual (CCPS Ecs. 2.2.42–2.2.43).** $$p_w = 1013.25 \times HR \times \exp(14.4114 - 5328 / T_a)\qquad \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$ | Camino óptico | m | *Referencias: Yellow Book, ec. 6.29; 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 = SEP \times F_{max} \times \tau$$ **Factor de vista.** TekRisk integra numéricamente la definición del factor de vista (ec. 6.A.13) sobre la superficie REAL del frustum (lateral y dos tapas), teselada una vez por escenario: $$F = \frac{1}{\pi}\int_A \frac{\cos\beta_1\cos\beta_2}{r^2}\,dA\qquad F_{max} = \min\left(1,\ \sqrt{F_v^2 + F_h^2}\right)$$ $F_v$ es el factor de un receptor vertical orientado hacia la llama y $F_h$ el de uno horizontal (ec. 6.A.18). Cerca de la superficie los elementos se subdividen de forma adaptativa, así que no hay huecos de cuadratura; un receptor dentro de la llama recibe $q = SEP$. La integración reproduce la forma cerrada del apéndice (ecs. 6.A.14–6.A.15) para el cilindro equivalente con un error de ±0.02 %. **Zonas.** Las isolíneas de cada nivel se resuelven por acimut a nivel del suelo: con rumbo de viento, cada zona se dibuja como una elipse alineada con el viento que va del punto más a barlovento al más a sotavento de la isolínea, con su medio ancho máximo (la representación que usa Phast); sin rumbo, la envolvente circular. La elipse es solo el dibujo: las distancias salen de las isolíneas, y los receptores y el riesgo usan el campo exacto. El campo 2D de letalidad alimenta el riesgo individual y el social, rotado con la rosa de vientos o con el método simplificado CCPS. Metano a 100 bar, orificio de 100 mm (choked), 30 kg/s, $\Theta_j = 85°$, viento de 5 m/s, blanco a 150 m. Cada paso se recalcula con la función de TekRisk que implementa su ecuación: | Magnitud | Yellow Book | TekRisk | |---|---:|---:| | $u_j$ (m/s) | 915.606 | 915.619 | | $L_b$ (m) | 141.722 | 141.723 | | $\alpha$ (°) | 6.8348 | 6.8348 | | $b$ (m) | 25.69 | 25.691 | | $R_l$ (m) | 116.181 | 116.182 | | $W_1$ (m) | 0.71691 | 0.71691 | | $W_2$ (m) | 40.8475 | 40.8478 | | $SEP$ con el área 6.57 (kW/m²) | 21.951 | 21.947 | | $F_v$ / $F_h$ | 0.02665 / 0.00934 | 0.02665 / 0.00934 | | $q$ con la $\tau$ del libro (kW/m²) | 0.417 | 0.417 | El motor, tal como lo usa TekRisk, da 0.389 kW/m² (−6.8 %). La diferencia no es de ecuaciones sino de método: el SEP sobre el área del frustum (6.56) en lugar del cilindro medio (−8.3 %), el factor de vista del frustum real (+0.5 %) y $\tau$ por la ec. 6.29 (+1.3 %). El test `solid-flame/__tests__/yellow-book-jet-example.test.ts` reproduce la tabla. *Referencia: Yellow Book, ecs. 6.4, 6.61–6.63 y apéndice 6.1, §3 (ecs. 6.A.13–6.A.18)* $$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. La llama sólida no usa este cálculo inverso: resuelve las isolíneas por acimut sobre el campo a nivel del suelo (sección 3.11). ### 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 de Llama Sólida de Chamberlain (Yellow Book) El modelo de Chamberlain (1987) es el que selecciona el Yellow Book para jet fires (§6.4.2) porque: - Representa la llama como un **frustum de cono** que radia como cuerpo sólido, con correlaciones de forma validadas en túnel de viento y en ensayos de campo en tierra y mar. - Reproduce los efectos del viento sobre la **inclinación, el despegue y los anchos** de la llama, que la fuente puntual no ve. - Su superficie permite un **factor de vista** físico en campo cercano, donde la fuente puntual deja de ser aplicable. - Es el modelo de referencia de **ALOHA** (NOAA/EPA) y la base de los modelos de frustum de SAFETI y Phast. TekRisk sigue la letra del libro en las ecuaciones 6.30–6.60 (incluida la forma de potencia de la ec. 6.54, ver sección 3.8) y aplica el método completo en la radiación: factor de vista del frustum real y camino óptico hasta la superficie de la llama. ### 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}$ ($\varsigma = 0$, como el ejemplo del Yellow Book). 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** — La ec. 6.29 (y la CCPS 2.2.42 de la fuente puntual) es una correlación simplificada con rango publicado $10^4 \leq p_w x \leq 10^5$ N/m. Las gráficas de absorción del Yellow Book (ec. 6.24) o modelos como LOWTRAN pueden dar resultados diferentes a largas distancias o con humedad extrema. 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. La llama sólida solo admite fuga vertical u horizontal alineada con el viento, las dos orientaciones en las que el Yellow Book declara correcta su geometría ($\Theta_j = \Theta_{jv}$): una fuga horizontal de través no está cubierta, y la alineada con el viento es su peor caso. 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 antorchas y jet fires de gas natural. La constante $\beta = 2.85$ de la longitud de llama está ajustada para parafinas; la aplicación a otras sustancias lleva un aviso y 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 (llama sólida) | 90° o 0° | 90° = vertical; 0° = horizontal a favor del viento. La fuente puntual no depende del ángulo | --- ## 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): forma de potencia de la ec. del ancho de la base y su diferencia con la transcripción de Lees. Lees, *Loss Prevention in the Process Industries*, 3.ª ed., ec. 16.18.29; Casal, *Evaluation of the Effects and Consequences of Major Accidents in Industrial Plants*, 2.ª ed., ec. 3.67 y ejemplo 3.7. Transcriben el ancho de la base de Chamberlain en forma de producto. Modelos JFSH-Chamberlain y JFSH-Cook; simplificación $e^{-7.5R}$ del ancho de la base de Cook, Bahrami y Whitehouse (1990). "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 Charco Source: https://tekrisk.com/es/docs/risk-models/pool-fire Documentación técnica del modelo de consecuencias Pool Fire (Incendio de Charco) — 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 El preset actual de llama sólida se documenta en la sección 20. Las fórmulas históricas de extensión, fuente puntual y Newton-Raphson de las secciones 4–13 describen el motor heredado, no sustituyen al procedimiento Yellow Book del preset. ### 1.1 Pool Fire (Incendio de Charco) El modelo **Pool Fire** (Incendio de Charco) 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. ### 2.1 Fuga: confinamiento e inventario La pestaña **Fuga** describe la fuente del charco con dos decisiones, y en ese orden, porque la primera es la que fija el área y la segunda solo la completa: **Confinamiento** — *Sin confinamiento*, *Dique rectangular* (largo × ancho) o *Dique circular* (diámetro). Con dique, el área del charco es el área del dique; sin dique, el área tiene que salir del inventario. **Inventario** — Sin dique es obligatorio: *Cantidad liberada* (masa o volumen) o *Caudal continuo*. Con dique es opcional: *Solo el área del dique*, *Cantidad liberada* o *Caudal continuo*. Se nombra por el dato que se tiene, no por el fenómeno, porque con el dique lleno la radiación no cambia con él. Las dos decisiones se guardan en un único campo (`sourceType`) con ocho valores; la tabla resume qué fija cada combinación en el modelo estacionario (presets Yellow Book y ALOHA, y cualquier preset con dique alimentado): | Confinamiento | Inventario | Área del charco | Duración del incendio | Qué aporta el inventario | |---|---|---|---|---| | Sin confinamiento | Cantidad liberada | $A = V/\delta$, con $\delta$ el espesor mínimo por tipo de superficie (Yellow Book, Tabla 3.1: 5 a 25 mm) o un valor propio entre 1 y 50 mm | $t = \rho_L\,\delta/\dot m''$ | Es el área: obligatorio | | Sin confinamiento | Caudal continuo | Diámetro de equilibrio donde la combustión iguala la alimentación; con duración de fuga, el alcanzado al cesar (sección 2.2) | Con duración de fuga: $t_{fuga} + \rho_L\,\delta/\dot m''$; sin ella, no se estima | Es el área: obligatorio | | Dique | Solo el área del dique | Área del dique | No se estima | — | | Dique | Cantidad liberada | $\min(V/\delta,\ A_{dique})$ | $t = \rho_L\,h/\dot m''$, con $h = V/A$ | Duración y aviso de incendio corto; si $V/\delta < A_{dique}$, un charco menor que el dique | | Dique | Caudal continuo | Diámetro de equilibrio, que debe caber en el dique; con duración de fuga, el dique puede llenarse | Con duración de fuga, por balance de masa (sección 2.2); sin ella, no se estima | Sin duración: si la alimentación supera la combustión dentro del dique no hay solución estacionaria y el cálculo se rechaza | El espesor $\delta$ se elige por tipo de superficie: el Yellow Book supone que el charco se extiende hasta un espesor mínimo del orden de la rugosidad característica del subsuelo (Tabla 3.1: 5 mm en hormigón o planta industrial, 10 mm en grava, 20 mm en campo, 25 mm en terreno muy irregular; es una hipótesis de orden de magnitud, no un espesor medido) y también admite un valor propio, en m, cm o mm, entre 1 y 50 mm. Con 5 mm de espesor casi cualquier inventario llena un dique (un dique de 10 × 10 m se llena con 0,5 m³). En ese caso *Solo el área del dique* y *Cantidad liberada* producen **exactamente el mismo charco**, la misma llama y las mismas zonas: la cantidad solo determina la duración del incendio y, con ella, el aviso de **incendio corto** (menos de 600 s, referencia BR 187 para la ignición de sólidos). La duración no acota el tiempo de exposición de la dosis térmica, que sigue siendo el de la pestaña Vulnerabilidad. Si el derrame llena el dique incluso con el espesor máximo permitido ($V/0{,}05\ \mathrm{m} \ge A_{dique}$), ningún $\delta$ válido cambia el resultado: TekRisk deja de pedir la superficie y el espesor y lo indica en su lugar. **Charco resultante.** Bajo los dos selectores, TekRisk muestra en vivo el área efectiva, el diámetro equivalente y la duración que usará el motor, junto con el motivo del área (*área del dique*, *dique lleno*, *inventario < dique*, *volumen / espesor*, *equilibrio alimentación = combustión* o *dimensionado heredado*). Sale del mismo código que el cálculo, así que lo que se lee es lo que se calculará; si con los datos actuales el motor no puede dimensionar el charco (por ejemplo, un caudal sin equilibrio dentro del dique), lo dice en lugar de mostrar un número. **Reglas y límites.** - Con un dique se supone **retención completa**: no se simula el desbordamiento. El llenado solo se sigue con caudal continuo y duración de fuga (sección 2.2). - Un dique rectangular se aproxima por un círculo de igual área; con llama extensa se admite largo/ancho ≤ 2. - *Radiación basada en ALOHA* exige diámetro equivalente ≤ 200 m. - Los presets *Screening conservador* y *Fuente puntual* **sin dique** conservan el dimensionado heredado del motor a partir de la cantidad o el caudal (sección 5); con dique alimentado, el screening usa el modelo estacionario de esta tabla y la fuente puntual no lo admite (el panel deja solo *Solo el área del dique*). ### 2.2 Duración de la fuga continua Un caudal continuo sin más datos da un charco en equilibrio y ninguna duración: el incendio dura lo que dure la fuga, y eso no es una propiedad del modelo. El campo opcional **Duración de la fuga** (tiempo hasta el aislamiento o el vaciado) cierra las dos cosas con el Yellow Book (CPR 14E, §6.5.5): - **Charco transitorio.** Con caudal constante el charco crece hacia su equilibrio como $A(t) = A_{eq}\,(1 - e^{-\tau})$, con $\tau = \dot m''\,t/(\rho_L\,\delta)$ (ec. 6.82 con $\beta' = 0$). Si la fuga es corta, el charco no llega al equilibrio y la radiación se calcula con el diámetro alcanzado. - **Duración del incendio.** Al cesar la fuga arde la capa $\delta$ que queda: $t = t_{fuga} + \rho_L\,\delta/\dot m''$ (ec. 6.87). Con dique, si el charco lo llena antes de cesar la fuga, arde con el área del dique y la duración sale del balance de masa (sin rebose). - **Espesor.** Con duración, el panel pide el tipo de superficie (Tabla 3.1) igual que en la cantidad liberada. Con el preset *Fuente puntual* solo se añade la duración; el diámetro heredado no cambia. La duración alimenta el aviso de **incendio corto** y el criterio de ignición de sólidos (600 s); no acota el tiempo de exposición de la dosis. ### 2.3 Calculadora de caudal de fuga El botón **Calcular caudal**, junto al campo de caudal, abre una calculadora de salida de **líquidos no hirvientes** del Yellow Book (CPR 14E, cap. 2 §2.5.4). Describe el recipiente y la abertura; el esquema a escala y el resultado se actualizan mientras escribes. | Bloque | Modelo | Ecuaciones | |---|---|---| | Recipiente | Cilindro vertical, cilindro horizontal o esfera; nivel por grado de llenado $\varphi$ o por altura | 2.180–2.182, 2.192–2.193 | | Orificio en la pared | $q_s = C_d\,A_h\sqrt{2(P-P_a)\rho_L}$, con $P - P_a = \rho_L\,g\,h + (P_{colchón} - P_a)$ | 2.194–2.196 | | Coeficiente de descarga | Arista viva 0.62, recto 0.82, redondeado 0.96, rotura de tubería 1.0, o propio | 2.197 | | Tubería | $\Delta P = \rho u^2/2\,(1/C_d^2 + f_D L/d + \sum K)$ resuelto en el caudal; $f_D$ laminar 64/Re o Colebrook–White; rugosidad por material; accesorios con su $K$ | 2.198–2.209 | | Vaciado | El caudal baja con el nivel hasta que alcanza el orificio (o el tiempo de aislamiento) | 2.183–2.191 | **Qué se aplica.** El caudal baja mientras el recipiente se vacía, así que se elige cuál aplicar: el **inicial** (el máximo, que da el charco más grande), el **medio** (masa liberada entre duración) o el caudal **en un instante t**. Se aplican al escenario el caudal, convertido a la unidad del campo, y la duración de la fuga; el cálculo se hace al guardar o calcular. **Cálculo.** El vaciado se integra con cuadratura de Gauss–Legendre sobre el nivel, más precisa que el paso explícito del libro, y la masa liberada sale exacta de la geometría. La viscosidad (solo para tubería) viene de la sustancia; sin ella se supone régimen totalmente rugoso, que da el caudal máximo. **Validación.** Reproduce los ejemplos resueltos del libro: §2.6.4.1 (orificio, 58.44 kg/s a 500 s y la Tabla 2.8), §2.6.4.2 (tubería de 100 m, 22.33 kg/s; el libro no publica la viscosidad) y el vaciado del §6.6.4 ($t_{rel}$ = 5064 s). **Límites.** Solo líquidos no hirvientes: los gases licuados a presión (salida bifásica, §2.5.3) quedan fuera, y la calculadora lo avisa si la sustancia hierve a la temperatura ambiente. La presión del colchón se supone constante. ### 2.4 Caudal de fuga en ductos Cuando la fuente es un **ducto** (línea o polilínea), **Calcular caudal** abre una calculadora propia: no hay recipiente ni nivel, y el caudal depende del bombeo, de la presión a lo largo de la línea, de las cotas y del aislamiento. **Base normativa.** El Yellow Book no tiene modelo para ductos de líquido: lo declara «no relevante» (§2.4.4) y lo lista entre los modelos no disponibles (Diagrama 2.6, fuga y ruptura de ducto). Da dos reglas (§2.3.5.4): en **ruptura**, el caudal de la bomba con menos fricción por la menor longitud hasta la rotura; en **orificio pequeño**, el caudal según la presión inicial del ducto en ese punto; y remite a las ecuaciones del §2.5.4.2. El término fuente sigue el Purple Book (CPR 18E) y la estructura en dos fases de 49 CFR 194.105. | Bloque | Modelo | Referencia | |---|---|---| | Perfil de presión | $P(x) = P_{ent} - \dfrac{f_D}{D}\dfrac{\rho v^2}{2}\,x - \rho g\,[z(x) - z_{ent}]$ con el caudal nominal; si se da la presión de entrega, manda el gradiente medido | YB 2.198, 2.202 | | Fuga | $q = C_d A_h \sqrt{2\rho\,P(x_f)}$ a la presión inicial en el punto, $C_d = 0.62$; orificio de 20 mm (transporte) o 10 % del DN hasta 50 mm (planta) | YB 2.194, §2.3.5.4; PB §3.5.2, §3.2.3 | | Ruptura, aguas arriba | Caudal de la bomba (1.5 × nominal sin datos), acotado por lo que la presión de descarga empuja a través de la longitud $x$ con $C_d = 1$ | YB §2.3.5.4; PB §4.3 nota 9 | | Ruptura, aguas abajo | Carga estática del destino más la diferencia de cotas a través de $L - x$ (o, de forma conservadora, la presión de entrega); nada con válvula de retención | PB §3.5.4.2 | | Aislamiento | Detección + cierre de válvulas: automática 120 s, remota 600 s, manual 1800 s | PB §4.4.1 | | Expansión | Tras el cierre, el líquido comprimido sale con $\beta = 10^{-9}\ \mathrm{Pa^{-1}}$; con caudal $\propto \sqrt{\Delta P}$ decrece linealmente | YB 2.7; PB §3.5.4.1 | | Drenaje por gravedad | **Volumen completo** del tramo aislado (conservador, criterio 49 CFR 194.105) o **según cotas** (solo lo que queda por encima de la fuga hasta la cresta de cada lado) | PB §3.5.4.1–2 | | Duración | 30 min como máximo; una fuga no detectada sale a caudal constante hasta ese tope | PB §4.3 nota 7, §3.5.4.1 | **Posición de la fuga.** El cálculo aplica un solo caudal a todo el trazo, así que se elige el punto: por distancia desde la bomba ($x = 0$), arrastrándolo en el perfil, con **Peor caso** (recorre el ducto y coloca la fuga donde más masa sale dentro del tope, con el perfil de cotas fijo) o con **Elegir en el mapa**: el modal se oculta sin perder lo capturado, la fuga se marca sobre el trazo con un clic, arrastrando el marcador o con el deslizador, y al aceptar vuelve el modal con la posición. En el mapa se ve qué extremo es la bomba y se puede **invertir el sentido** si el trazo se dibujó desde el destino. La longitud del ducto es siempre la del trazo dibujado; para cambiarla se edita el trazo. **Qué se aplica.** Como en el recipiente: el caudal **inicial** (el sostenido con la bomba en marcha), el **medio** (masa liberada entre duración) o el caudal **en un instante t**, con la duración de la fuga. **Hipótesis y avisos.** Regla del Yellow Book de presión inicial en la fuga, sin iterar la caída de presión (se avisa cuando la fuga supera el 5 % del caudal nominal; por debajo del 1 % probablemente no se detecta). La presión de descarga se supone constante, así que el límite hidráulico es una cota superior. La línea ventila por la rotura (sin retención por vacío); si la presión cae bajo la de vapor en algún punto se avisa del vaciado parcial de la línea. Cotas manuales en tres puntos, lineales a tramos. Sin ejemplo resuelto en el Yellow Book ni en el Purple Book para ductos de líquido: los tests usan soluciones cerradas del drenaje y el balance de masa. --- ## 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 solo es precisa a más de 5 diámetros de charco desde el centro de la llama (Yellow Book, §6.3.4.2). Más cerca sobreestima la radiación, porque el flujo depende del tamaño, la forma y la inclinación de la llama (Mudan, 1984, §3.1). --- ### Dirección del viento en el riesgo individual y social Las consecuencias (zonas, receptores) se calculan para **un solo rumbo de viento**, el del escenario meteorológico seleccionado. En el riesgo individual y en la curva F-N ese rumbo no se toma como cierto: en la pestaña **Meteorología** el escenario elige entre la **rosa de vientos del sitio** (el campo de radiación se rota a cada sector y se pondera por su probabilidad) y el **método simplificado CCPS (Ec. 4.4.4)** (disco de radio $R$ con factor $\theta_{eq}/360$ sobre el perfil a sotavento). Ver la documentación de [contornos de riesgo individual](/es/docs/individual-risk/ir-contours#wind-direction). El preset de fuente puntual, los escenarios sin rumbo (envolvente circular) y las fuentes lineales no son direccionales. ## 20. Presets del Modelo de Radiación Un preset de radiación fija a la vez seis bloques metodológicos — velocidad de combustión, geometría de llama, poder emisivo, transmisividad, la densidad de referencia usada en la velocidad de viento adimensional $u^*$ y la fracción radiante — guardados juntos en `RiskModel.poolFireRadiationConfig`. Un escenario sin configuración guardada cae al preset heredado `point_source`, que reproduce sin cambios el motor documentado en las secciones 4 a 13 anteriores. ### 20.1 Presets | Preset | Velocidad de combustión | Geometría de llama | Poder emisivo | Transmisividad | Densidad de $u^*$ | Letalidad | |--------|--------------------------|----------------------|------------------|-----------------|----------------------|-----------| | `yellow_book` (por defecto en escenarios nuevos) | Babrauskas (por sustancia) | Binding, base elíptica con arrastre Moorhouse | Fs explícito y hollín, ecs. 6.71 y 6.20 | Ec. 6.29 (Bagster–Pitblado) | Aire | Sí | | `conservative_screening` | Burgess-Strasser | Cilindro inclinado | Fracción fija (0,35) | Wayne (1991) | Vapor | Sí — conservadora | | `aloha_fixed_area` | Burgess, sin corrección de diámetro | Thomas/AGA sin arrastre | Fracción fija (0,30) | Cook (1990) | Aire | Extensión TekRisk | | `point_source` (heredado) | Burgess-Strasser | Fuente puntual | Fracción fija (0,3) | Bagster-Pitblado | Aire | Sí | `yellow_book` implementa el procedimiento solid plume del CPR 14E (Yellow Book, 2005, §6.5.4) con transmisividad simplificada. `conservative_screening` conserva el cribado histórico, que no equivale a ALOHA. `point_source` conserva el motor heredado. Los resultados extensos anteriores a la versión 2.0 requieren recalcularse; sus trazas históricas no se reescriben. `aloha_fixed_area` conserva su identificador, pero se muestra como **Radiación basada en ALOHA**. Usa las correlaciones escalares de NOAA OR&R 43 §§6.3.3 y 6.5 con diámetro equivalente ≤ 200 m. La fuente del charco se describe en la pestaña Fuga por confinamiento e inventario (ver sección 2.1): TekRisk calcula área estática por V/δ, equilibrio de alimentación/combustión o geometría; el dique limita el área, con retención completa y sin comprobar desbordamiento. Una alimentación sin equilibrio dentro del dique se rechaza. Rectángulos: círculo equivalente y relación de lados ≤ 2. No se modela crecimiento del charco ni fuga de tanque. Se conservan integración geométrica, camino óptico y límite de SEP de TekRisk; **no se afirma equivalencia numérica con el ejecutable ALOHA**. Dosis y riesgo son extensiones de TekRisk. El bloque `burgess_aloha` no aplica el factor de diámetro de Babrauskas aunque exista kβ tabulado. El bloque `cook` usa $\tau=1.389-0.135\log_{10}(p_w L_p)$ y $p_w=99.89\,HR\,\exp(21.66-5431.3/T_a)$, con HR como fracción, temperatura en K, presión en Pa y camino óptico en m. Se limita τ a [0,1]; con aire seco o camino nulo se toma τ = 1. Ambos bloques también se pueden seleccionar en configuraciones personalizadas. Los tres presets —y cualquier combinación de bloques avanzados— calculan dosis térmica, probit, fatalidades y el campo de probabilidad de fatalidad que alimenta el riesgo individual y la curva F-N: el flujo incidente es radiación térmica sea cual sea el método de poder emisivo, así que la dosis sale del mismo $q$ y del mismo tiempo de exposición. Lo que cambia entre presets no es si hay letalidad, sino cuán conservadora es: con fracción radiante fija el flujo está sobreestimado por diseño y la letalidad que se deriva de él hereda esa sobreestimación, y así lo advierten el panel del escenario, la memoria de cálculo y el reporte PDF. Los resultados guardados antes de septiembre de 2026, cuando el cribado no evaluaba dosis, siguen quedando fuera del riesgo individual con ese motivo hasta que se recalculen. ### 20.2 Bloques Avanzados Cada bloque puede sobrescribirse de forma independiente del preset; un valor manual exige una justificación escrita. - **Velocidad de combustión** ($\dot m''$): `burgess` (forma másica $10^{-3}\cdot\Delta H_c/\Delta H^*$, ver sección 4.2 anterior, con el factor de diámetro de Babrauskas aplicado cuando se conoce $k_\beta$) · `babrauskas` ($\dot m''_\infty$ y $k_\beta$ tabulados por sustancia, Babrauskas 1983; cae a `burgess` sin el factor de diámetro cuando faltan los datos de sustancia) · `mudan` (forma másica sin el factor de diámetro, la misma rama Mudan del motor heredado) · valor manual. - **Geometría de llama**: `point_source` (heredado) · `vertical_cylinder` (Thomas o Pritchard, sin inclinación) · `tilted` · `tilted_drag` (arrastre Moorhouse, ec. 6.18-2). La inclinación se selecciona aparte: Binding (ec. 6.70) en Yellow Book o AGA como alternativa. - **Poder emisivo superficial (SEP)**: `fixed_fraction` (fracción radiante $f$ configurada) · `fs_diameter` ($F_s(D) = 0,35\cdot e^{-0,05D}$) · `yb_soot` (CPR 14E cap. 6: una fracción de hollín frío $\zeta$ cercana a 20 kW/m² mezclada con el SEP luminoso) · `mudan_ed` (correlación empírica $E(D)$ de Mudan) · valor manual. - **Transmisividad atmosférica**: `bagster_pitblado` (Yellow Book ec. 6.29, aproximación simplificada) · `wayne` (alternativa Wayne 1991) · `cook` (NOAA OR&R 43) · `none` ($\tau = 1$). El motor extenso limita el resultado a [0,1] y avisa de extrapolaciones (ver «Rango de validez de la transmisividad» más abajo). #### Guía por bloque: qué es, cuándo usarlo y limitaciones Los botones de ayuda del diálogo abren cada bloque de esta guía. Cuando un cálculo entra en una limitación, TekRisk lo avisa en Resultados y en la memoria de cálculo. #### Velocidad de combustión **Burgess–Strasser (`burgess`).** Forma másica $\dot m'' = 10^{-3}\,\Delta H_c/\Delta H^*$ (sección 4.2), con el factor de diámetro de Babrauskas cuando se conoce $k_\beta$. *Cuándo:* hidrocarburos sin datos tabulados. *Limitaciones:* correlación para charcos grandes; en charcos pequeños (menos de 1–2 m) sobreestima si no hay $k_\beta$. **Burgess (ALOHA, `burgess_aloha`).** La misma forma másica sin corrección de diámetro, como ALOHA. *Cuándo:* comparar con ALOHA. *Limitaciones:* ignora el efecto del diámetro aunque exista $k_\beta$; en charcos pequeños sobreestima la tasa. **Babrauskas (`babrauskas`).** $\dot m''_\infty$ y $k_\beta$ tabulados por sustancia (Babrauskas 1983), con $\dot m'' = \dot m''_\infty(1 - e^{-k_\beta D})$. *Cuándo:* por defecto y recomendado siempre que la sustancia esté en la tabla; es el método del Yellow Book. *Limitaciones:* sin datos de la sustancia cae a Burgess sin factor de diámetro (la tabla de resultados lo indica); los datos son de charcos en tierra, no de gases criogénicos sobre agua. **Mudan (`mudan`).** Forma másica de Mudan (1984) sin factor de diámetro. *Cuándo:* reproducir estudios hechos con Mudan/SFPE. *Limitaciones:* las mismas de Burgess sin corrección. **Valor propio (`user_value`).** Tasa medida o de referencia. Exige justificación escrita y el escenario queda como personalizado. #### Geometría de llama **Fuente puntual (`point_source`).** Motor heredado: toda la radiación sale de un punto a media altura (sección 11.1). *Cuándo:* campo lejano, cribado rápido. *Limitaciones:* válida solo a más de 5 diámetros de charco desde el centro de la llama (Yellow Book, §6.3.4.2); no describe el campo cercano ni la asimetría con el viento; zonas circulares. **Cilindro vertical (`vertical_cylinder`).** Llama cilíndrica sin inclinación; altura por Thomas (1963) o Pritchard–Binding (sección 8). *Cuándo:* viento en calma o cuando se quiere una envolvente simétrica. *Limitaciones:* con viento real subestima el flujo a sotavento y lo sobreestima a barlovento. **Cilindro inclinado (`tilted`).** Cilindro inclinado por el viento, con la inclinación de AGA (u*^−0.5) o de Binding (ec. 6.70, con Fr y Re). *Cuándo:* comparar con ALOHA (Thomas/AGA) o con estudios clásicos. *Limitaciones:* la base sigue siendo circular: no recoge el alargamiento del charco de llama a sotavento. **Inclinado con arrastre (`tilted_drag`).** Yellow Book §6.5.4: base elíptica alargada a sotavento por el arrastre de Moorhouse ($D'$) e inclinación de Binding. *Cuándo:* por defecto para análisis de riesgo; es la geometría más completa. *Limitaciones:* necesita dirección de viento para dibujar zonas direccionales (sin ella, envolvente circular); las correlaciones de Fr y Re se obtuvieron con charcos de hidrocarburos de 1 a 50 m; diques rectangulares muy alargados (relación de lados mayor de 2) no se representan bien con un cilindro. #### Poder emisivo superficial (SEP) **Fracción radiante fija (`fixed_fraction`).** $E = f\,\dot m''\,\Delta H_c / (1 + 4L/D)$ con $f$ configurable (0.30 en ALOHA, 0.35 en el cribado). *Cuándo:* cribados conservadores y comparación con ALOHA. *Limitaciones:* no descuenta el hollín, así que en incendios grandes de hidrocarburos pesados sobreestima el flujo (y con él dosis, probit y fatalidades); TekRisk lo marca como conservador. **Fs con diámetro (`fs_diameter`).** $F_s(D) = 0.35\,e^{-0.05D}$ (Mudan y Croce, SFPE): la fracción decrece con el diámetro por el humo. *Cuándo:* charcos grandes sin datos de hollín. *Limitaciones:* correlación empírica de hidrocarburos; no distingue combustibles limpios (metanol, LNG) de los que producen mucho humo. **Yellow Book con hollín (`yb_soot`).** $SEP_{max} = F_s\,\dot m''\,\Delta H_c/(1+4L/D)$ y $E = SEP_{max}(1-\zeta) + 20\,\zeta$, con $F_s$ luminoso por combustible (tabla 6.6) y fracción de hollín $\zeta$. *Cuándo:* por defecto; el más fiel para hidrocarburos con humo. *Limitaciones:* $F_s$ y $\zeta$ son datos por combustible; si no se conocen, TekRisk usa valores por defecto y los deja escritos en la tabla de resultados. **Mudan E(D) (`mudan_ed`).** $E = 140\,e^{-0.12D} + 20\,(1 - e^{-0.12D})$ kW/m² (Mudan 1984). *Cuándo:* hidrocarburos típicos sin datos de sustancia. *Limitaciones:* solo depende del diámetro; no sirve para combustibles limpios ni para charcos muy pequeños. **Valor propio (`user_value`).** SEP medido o de referencia. Exige justificación escrita. #### Tope de cuerpo negro del SEP Ninguna llama de hidrocarburo radia más que un cuerpo negro a su temperatura ($\sigma T^4 \approx 300$ kW/m² a 1500 K); los SEP medidos van de unos 20 kW/m² (charcos grandes con mucho humo) a unos 150 kW/m² (llamas limpias pequeñas). Las correlaciones de fracción radiante fija (`fixed_fraction`, `fs_diameter`) no tienen cota superior y, sin corrección por diámetro, devuelven un $E$ que **crece** con el charco (hasta 337 kW/m² en un charco de 130 m), lo contrario del comportamiento físico. Los métodos `yb_soot` y `mudan_ed` no se acercan al tope, y `user_value` es el dato del analista. La opción **Tope de cuerpo negro del SEP**, en **Parámetros avanzados**, solo aparece con `fixed_fraction` y `fs_diameter`. No es un bloque del preset: cambiarla no convierte la metodología en «Personalizada». - **Activado (por defecto en el pool fire).** $E$ se acota a 300 kW/m² y Resultados lo avisa (`sep_capped_black_body`). *Cuándo:* casi siempre; es la forma de que el cribado con fracción fija no publique un poder emisivo imposible en charcos grandes. - **Desactivado.** $E$ se publica tal como sale de la correlación y Resultados avisa si supera 300 kW/m² (`sep_above_black_body`). *Cuándo:* solo para reproducir literalmente otra herramienta que no acota (por ejemplo, un cálculo de ALOHA con fracción radiante fija) o para mostrar el efecto del tope en una memoria. El jet fire tiene la misma opción, pero desactivada por defecto: allí el exceso aparece con gases pesados en llamas cortas, y ALOHA no lo acota (ver [jet fire](/es/docs/risk-models/jet-fire#sep-black-body-cap)). #### Transmisividad atmosférica **Bagster–Pitblado (`bagster_pitblado`).** Ec. 6.29 del Yellow Book, $\tau = 2.02\,(p_w L_p)^{-0.09}$. *Cuándo:* por defecto. *Limitaciones:* publicada solo para $10^4 \le p_w L_p \le 10^5$ N/m (unos 6 a 63 m a 25 °C y 50 % HR); fuera del rango se acota a 1 o se extrapola, y TekRisk avisa. Detalle y tabla comparativa en «Rango de validez de la transmisividad», más abajo. **Wayne (`wayne`).** Correlación de Wayne (1991) con CO₂ y vapor de agua. *Cuándo:* estudios que la citan (CCPS). *Limitaciones:* válida de 10 a 1000 m; no resuelve el campo cercano. **Cook (`cook`).** $\tau = 1.389 - 0.135\,\log_{10}(p_w L_p)$ (NOAA OR&R 43). *Cuándo:* comparar con ALOHA y campo cercano, donde no supera 1. *Limitaciones:* sin rango publicado; a más de unos 60 m coincide con la ec. 6.29. **Sin atenuación (`none`).** $\tau = 1$. *Cuándo:* cribado conservador a cualquier distancia o cuando la humedad no se conoce. *Limitaciones:* sobreestima el flujo lejos de la llama (hasta un 30 % a 60 m con aire húmedo). ### 20.3 Parámetros y límites Yellow Book v2 - Introduce el viento a **10 m**. La viscosidad cinemática del aire ν es opcional: en automático se usa Sutherland μ(T)/ρa. - Inclinación: $c=0.666 Fr^{0.333}Re^{0.117}$, $\sin\theta=2c/(\sqrt{1+4c^2}+1)$; $Fr=U^2/(gD)$ y $Re=UD/\nu$. - $SEP_{max}=F_s\dot m''\Delta H_c/(1+4L/D)$; $E=SEP_{max}(1-\zeta)+20\zeta$. **Fs luminoso es un input según combustible** (tabla 6.6); 0.35 es una hipótesis inicial. No se aplica la atenuación exponencial en diámetro antes del hollín. Distintos Fs por combustible no cuentan como metodologías mezcladas. - Derrame instantáneo: espesor final δ explícito (por tipo de superficie, Yellow Book Tabla 3.1, o valor propio), $D=\sqrt{4V/(\pi\delta)}$, duración $\rho_L\delta/\dot m''$. Masa ingresada se conserva; volumen y caudal volumétrico se interpretan a la temperatura del charco. - Derrame continuo: área estacionaria que iguala alimentación y combustión. No calcula crecimiento transitorio ni vaciado de tanque. Para una fuga por orificio, el caudal es $\dot V = C_d\,A_0\sqrt{2gh}$ con $C_d$ aplicado **una sola vez** (en el Yellow Book, $v_0 = C_0\sqrt{2gh}$ ya lo incluye y el caudal es $A_0 v_0$). - Diques rectangulares con relación de lados mayor de 2 se rechazan: requieren radiador plano, no cilindro equivalente. - $\tau=2.02(p_w L_p)^{-0.09}$: rango publicado $10^4\le p_wL_p\le10^5$ N/m. No se implementa aquí el método detallado de absortividades de la ec. 6.24. - La superficie es un cuerpo oblicuo elíptico de emisión uniforme. El factor de vista se integra numéricamente; cerca de la superficie se usa ángulo sólido, sin imponer artificialmente $q=E$ a receptores exteriores. Con dirección de viento disponible, las geometrías inclinadas producen polígonos de zona orientados a sotavento/barlovento/a través en lugar de círculos; sin dirección de viento el contorno se degrada a una envolvente circular. La cadena completa de intermedios por zona y receptor ($\dot m''$, $u^*$, $\theta$, $L$, $D'$, $E$, $\zeta$, $F_s$, $\tau$) se escribe en la memoria de cálculo (MD/DOCX) desde el `radiationTrace` del resultado; el reporte PDF publica de esa misma traza el preset con sus referencias, los intermedios escalares, la transmisividad de cada zona y, por receptor, su factor de vista y su transmisividad. Un estudio con pool fires en presets distintos bloquea el riesgo individual y social con un aviso explicativo, porque los contornos no son comparables entre presets. En una **fuente lineal** (trazo de tubería o ducto, `RiskModel.coords` de tipo `LineString`) el campo direccional se ancla por objetivo: el efecto sobre cada receptor se evalúa en un marco de viento local cuyo origen es el punto del trazo más cercano a ese receptor, de modo que el flujo publicado corresponde a la distancia perpendicular publicada y la asimetría sotavento/barlovento se conserva a lo largo de todo el trazo. Aguas abajo quedan dos simplificaciones, declaradas en el panel del escenario, la memoria de cálculo y el reporte PDF: los corredores del mapa se construyen como un buffer simétrico cuyo semiancho es el radio a sotavento de cada zona, una envolvente conservadora del lado de barlovento; y el riesgo individual mantiene el camino radial (el perfil de fatalidad promediado en acimut replicado a lo largo del trazo discretizado), porque el campo 2D de fatalidad se ancla en coordenadas absolutas de la malla y no puede sellarse en cada punto del trazo. #### Rango de validez de la transmisividad La ec. 6.29 (Bagster y Pitblado) es una correlación empírica publicada solo para $10^4 \le p_w L_p \le 10^5$ N/m, donde $L_p$ es el camino óptico desde la **superficie de la llama** hasta el receptor. Traducido a metros, el rango depende de la humedad: con $p_w = 1584$ Pa (unos 25 °C y 50 % de humedad relativa) cubre caminos entre $10^4/p_w = 6.3$ m y $10^5/p_w = 63.1$ m. En un escenario con varias zonas lo habitual es salir de él por los dos extremos: las zonas de umbral alto y los radios a barlovento quedan a pocos metros de la llama, y las zonas de umbral bajo de charcos grandes, a más de 63 m. Fuera del rango la ley de potencia se extrapola: | $L_p$ ($p_w = 1584$ Pa) | $p_w L_p$ (N/m) | $\tau$ ec. 6.29 | $\tau$ Cook (misma $p_w$) | |---|---|---|---| | 1 m | 1 584 | 1.04 → **se limita a 1** | 0.96 | | 3 m | 4 752 | 0.94 (extrapolada) | 0.89 | | 6.3 m | $10^4$ | 0.88 | 0.85 | | 63.1 m | $10^5$ | 0.72 | 0.71 | | 200 m | $3.2\cdot10^5$ | 0.65 (extrapolada) | 0.65 | - **Por debajo del rango** la curva sigue creciendo y supera 1 para $p_w L_p < 2\,470$ N/m (unos 1.6 m con esta $p_w$); el motor la limita a [0, 1], que es el límite físico (sin camino no hay absorción). Entre ese punto y el límite inferior la desviación es de pocos puntos porcentuales en $\tau$. - **Por encima del rango** la curva decrece lentamente y prácticamente coincide con Cook (NOAA OR&R 43), así que la extrapolación es razonable. - **No depende del factor de vista.** El factor de vista es geometría pura y no tiene rango de validez; solo aporta la distancia a la superficie de la llama que se usa como $L_p$. Cambiar la geometría de llama no elimina la extrapolación. TekRisk avisa en pantalla y en la memoria de cálculo cuando alguna zona o receptor publicado queda fuera del rango; el reporte PDF no repite el aviso. Si hace falta evitar la extrapolación, en los bloques avanzados se puede elegir `none` ($\tau = 1$, conservador a cualquier distancia) o `cook`, que no tiene un rango publicado equivalente. Wayne (1991) no lo resuelve en campo cercano: su rango es de 10 a 1000 m. ### 20.4 Comparación con los ejemplos resueltos del Yellow Book Las ecuaciones del preset reproducen paso a paso los ejemplos §6.6.3 y §6.6.4 del CPR 14E (±0.5 %, salvo redondeos y erratas del libro). El **flujo final** que publica TekRisk es, sin embargo, mayor que el del ejemplo: a 100 m a sotavento, 6.34 frente a 4.58 kW/m² (§6.6.3) y 2.78 frente a 2.14 kW/m² (§6.6.4). No es un error de cálculo: los ejemplos simplifican el método que el propio libro describe en §6.5.4, y TekRisk aplica el método completo. | | Ejemplo del libro | TekRisk | Efecto en q | |---|---|---|---| | Base de la llama | Circular, diámetro $D$ (el ejemplo calcula $D'$ pero no lo usa) | Elongada $D' \times D$ y desplazada a sotavento (§6.5.4 paso 7, fig. 6.9c) | +22 % a +30 % en $F$ | | Distancia para $\tau$ | 100 m desde el centro del charco | Desde la superficie de la llama, como define $x$ la ec. 6.29 | +6 % a +8 % en $\tau$ | | Transmisividad | Ec. 6.24 (gráficas de $\alpha_w$, $\alpha_c$) | Ec. 6.29 | −1 % | El texto del método respalda las dos decisiones. Los pasos 9 y 10 definen $x$ como la «distancia x entre la superficie de la llama y el objeto», y el paso 12 pide «usar las dimensiones calculadas de la llama y la distancia desde la llama al objeto». El ejemplo, en cambio, usa 100 m desde el centro del charco (su propio texto dice «50 m desde la superficie de la llama») y descarta $D'$. Con la convención del ejemplo (base circular $D$, $x$ desde el centro y su $\tau$), las mismas funciones de TekRisk dan 4.58 y 2.16 kW/m², así que ninguna ecuación está mal. El resultado es **conservador a sotavento**, y el efecto depende de dónde esté el receptor. Receptor a 100 m, §6.6.3, en kW/m²: | Receptor | Convención del ejemplo | TekRisk | |---|---:|---:| | A sotavento | 4.52 | 6.34 (+40 %) | | De través | 1.93 | 2.35 (+22 %) | | A barlovento | 1.30 | 1.28 (−2 %) | El desglose paso a paso y las comprobaciones que descartan un error (balance de energía, factor de vista, camino óptico) están en [Validación de modelos](/es/docs/validation#pool-fire-why). --- ## 21. 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, Yellow Book), 2005, cap. 6, §6.5.4 y ejemplo §6.6.3. | | 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.