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
Comportamiento de gas denso
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.
Charco Evaporativo (idspl=1)
Derrame a nivel del suelo que se evapora en régimen permanente — derrames de GNL, GLP o crio-líquidos
Chorro Horizontal (idspl=2)
Liberación presurizada horizontal a altura — fallas de tuberías o recipientes
Chorro Vertical (idspl=3)
Liberación presurizada vertical con elevación de pluma — venteos de alivio, blowouts
Derrame Instantáneo (idspl=4)
Masa total liberada de golpe; modo puff transitorio — ruptura catastrófica de recipiente
1.3 Alcance del Modelo
Los resultados se usan para determinar:
- Distancia al LFL (Límite Inferior de Inflamabilidad) — límite interior de la zona Flash Fire
- Distancia al 50% LFL — distancia de planificación preventiva
- Distancia al UFL (Límite Superior de Inflamabilidad) — zona sobre-rica
- Umbrales tóxicos IDLH, ERPG y AEGL (cuando aplique)
- Geometría de la nube (altura, ancho) a cada distancia barlovento
- Isopleths GeoJSON para visualización en SIG
2. Secuencia de Cálculo
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 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 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 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 | kg/kmol | BD química (mw) | |
cps | J/(kg·K) | YAWS polinomio gas | |
tbp | K | BD química (boilingPoint) | |
dhe | J/kg | BD química (hvaptb) | |
cpsl | J/(kg·K) | YAWS polinomio líquido | |
rhosl | kg/m³ | YAWS correlación densidad | |
cmed0 | — | Fracción másica inicial de líquido (0 = todo vapor) | |
spb, spc | — | K | Constantes Clausius-Clapeyron |
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
Evaluada a . Código: slabHelpers.ts → calculateGasHeatCapacity().
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):
| Símbolo | Descripción |
|---|---|
| Velocidad de fricción [m/s] | |
| Constante de von Kármán | |
| Longitud de rugosidad superficial [m] | |
Longitud de Monin-Obukhov [m]; = ala | |
| Función de corrección de estabilidad de momentum |
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 | [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 barlovento. Las más importantes son:
7. Velocidades y Altura de Nube — eval()
En cada paso, eval() resuelve iterativamente (máx. 11 iteraciones, tolerancia ) el sistema acoplado:
Altura de la nube (conservación de masa):
Velocidad barlovento (ecuación cúbica, Ermak 1990 §3.2):
resuelta analíticamente con la fórmula trigonométrica de Cardano.
Velocidad media de la capa límite (integración por regla de Simpson):
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
| Símbolo | Valor | Descripción |
|---|---|---|
| 1.50 | Coeficiente de arrastre | |
| 0.41 | Constante de von Kármán | |
| Factor de perfil (se anula en la cima de la capa de mezcla) |
Código: entran.js, líneas 251–272.
9. Termodinámica — thermo()
La subrutina resuelve el equilibrio termodinámico de la mezcla nube + aire a cada paso.
10. Campo de Concentración
10.1 Perfil de Concentración Transversal
SLAB calcula la concentración en 6 posiciones laterales :
con distribución uniforme para y caída gaussiana fuera del semiancho.
11. Integración Numérica — Runge-Kutta 4
El sistema de 11 EDOs se integra a lo largo de con el método de Runge-Kutta de 4.° orden:
El paso de integración se ajusta automáticamente según el multiplicador ncalc. La grilla de salida tiene 61 puntos distribuidos logarítmicamente de 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().