# Memoria de Cálculo General — Guía de Uso
Source: https://tekrisk.com/es/docs/guides/general-memory-excel

Cómo leer la memoria de cálculo en Excel del riesgo individual promedio bajo el método general CCPS QRA (probit continuo, rosa de vientos).

## 1. ¿Qué es este archivo?

Este libro de Excel constituye la **memoria de cálculo detallada** del Riesgo Individual Promedio de la Población Expuesta (IR_av) para proyectos generados con TekRisk bajo el **método general** de contornos de riesgo del CCPS QRA (curva probit continua, con o sin rosa de vientos).

**Propósito**: documentar paso a paso, con tablas explícitas y fórmulas vivas, el aporte específico de cada *incident outcome case* al riesgo individual en cada punto (x,y) de interés, las frecuencias iniciales y las probabilidades aplicadas. Está pensado para entregarse a autoridades regulatorias y permite la auditoría por pares.

**Público objetivo**:
- Autoridad reguladora revisora del análisis de riesgo.
- Ingenieros de proceso que validan los cálculos por pares.
- Auditores externos que necesitan reproducir el cálculo con sus propios supuestos.

**Diferencia con el método simplificado**: en el método simplificado el aporte de un escenario es binario (`SI(distancia ≤ radio; f×factor; 0)`). En el método general el aporte es `f × Pf(distancia)`, donde `Pf` proviene de una **curva probit continua** — interpolación lineal del perfil de fatalidad distancia→% — y, para escenarios con rosa de vientos, de una suma sobre sectores `Σ_θ P(θ)·Pf(d_θ)`. Esta memoria reproduce esa cadena completa con fórmulas vivas.

---

## 2. Estructura del libro

El libro contiene **9 hojas** ordenadas secuencialmente. Cada hoja arranca con un bloque introductorio gris que explica su contenido y propósito. Las celdas con fórmula viva se muestran en **azul cursiva**.

| # | Hoja | Contenido |
|---|---|---|
| 1 | **Resumen** | Metadatos del proyecto, método aplicado, criterios IR, población y resultado IR_av. Define los named ranges INTOL_THR_GEN, TOL_THR_GEN, POBLACION_PROYECTO_GEN, DENSIDAD_PROYECTO_GEN. |
| 2 | **Escenarios** | Una fila por *incident outcome case*: frecuencia inicial f_i, tipo de agregación, modo de rosa de vientos. Define FREQ_SCENARIOS_GEN. |
| 3 | **Perfiles de Fatalidad** | Por cada escenario radial/VCE, la tabla distancia→fatalidad%. Define PERF_DIST_j / PERF_FAT_j. |
| 4 | **Rosa de Vientos** | Por cada escenario direccional, los 16 sectores \{θ, P(θ)\}. Define ROSA_DIR_s / ROSA_PROB_s. |
| 5 | **Receptores** | Coordenadas (x,y) de interés (receptores del proyecto), con población y densidad. |
| 6 | **Aportes por Punto** | Matriz Receptores × Escenarios. Por escenario: Pf (referencia a Hoja 7) y Aporte = f_i × Pf. Columna final IR(x,y) = SUMA(aportes). Define IR_POR_RECEPTOR_GEN. |
| 7 | **Desglose Paso a Paso** | El corazón auditable. Por cada par receptor-escenario, las columnas auxiliares de la interpolación del Pf y, para escenarios direccionales, el desglose por los 16 sectores de viento. |
| 8 | **IR Promedio** | Por cada receptor, IR(x,y) × P(x,y), más el aporte de la población de fondo. IR_av Eq. 4.4.6 (población expuesta total = receptores + fondo) y Eq. 4.4.7 (población total P_T). Define IR_AV_EXPOSED_GEN / IR_AV_TOTAL_GEN. |
| 9 | **Metodología** | Ecuaciones canónicas del método general, la lógica de interpolación, tabla de variables/unidades y referencias bibliográficas. |

---

## 3. Cómo auditar el IR_av paso a paso

### Paso 1 — Hoja 1 (Resumen)

1. Verifique que **Método aplicado** = `General (CCPS QRA — curva probit continua)`.
2. Confirme los **criterios IR** (intolerable / tolerable) y el preset/país aplicable.
3. Observe la **población total P_T** y la **densidad** del proyecto.
4. Las celdas **IR_av total (Población Expuesta)** e **IR_av (Población Total P_T)** referencian los resultados finales desde la Hoja 8.

### Paso 2 — Hojas de insumos (2, 3, 4, 5)

- **Hoja 2 (Escenarios)**: cada fila es un *incident outcome case*. La columna **Frecuencia f_i** es el insumo del análisis de frecuencias. El **Tipo de agregación** indica cómo evaluó el motor el escenario (radial, VCE direccional, flash fire con rosa, flash fire CCPS-simplificado, envolvente).
- **Hoja 3 (Perfiles de Fatalidad)**: por cada escenario radial/VCE, su tabla distancia→fatalidad%. Es el insumo de las interpolaciones.
- **Hoja 4 (Rosa de Vientos)**: por cada escenario direccional, los 16 sectores con su probabilidad P(θ). La fila de verificación confirma Σ P(θ) ≈ 1.
- **Hoja 5 (Receptores)**: los puntos (x,y) de interés, con población. Si la geometría no es `Point`, el lat/lon es el centroide.

### Paso 3 — Hoja 7 (Desglose Paso a Paso) — **el corazón de la auditoría**

Para cada par receptor-escenario, muestra cómo se obtiene el Pf:

- **Escenarios radiales** (térmico, VCE radial): una fila por receptor con las columnas auxiliares de la interpolación lineal del perfil — `idx` (tramo identificado por MATCH), `d1`/`d2` y `f1`/`f2` (puntos que acotan), `fracción`, `Fatalidad %` (fórmula maestra de los 4 casos) y `Pf` = Fatalidad%/100.
- **VCE direccional**: un bloque de filas-sector por receptor con `θ`, `P(θ)` (referencia viva a la rosa de la Hoja 4), `d_θ` (distancia representativa del sector), `Pf(d_θ)` (tabulado del motor — en modo envolvente colapsa múltiples muestras por dirección y no es recalculable celda a celda) y `Aporte parcial` = P(θ)·Pf(d_θ). El **subtotal** Σ aportes = Pf del escenario para ese receptor. Si el motor no produjo desglose direccional (típicamente agregación MAX), se tabula `contrib.pf` en una sola fila.
- **Flash fire con rosa de vientos**: un bloque de filas-sector con `θ`, `P(θ)`, `inside_θ` (0/1 del ray-cast punto-en-polígono LEL rotado) y `Aporte parcial` = P(θ)·inside_θ. El **subtotal** Σ aportes (clamp a 1) = Pf del escenario.
- **Flash fire CCPS-simplificado**: `Pf = SI(d ≤ R; θ/360; 0)`.
- **Envolvente VCE (peor caso)**: el Pf es un MÁX sobre los samples del envelope; se tabula el valor del motor (no recalculable celda a celda).

### Paso 4 — Hoja 6 (Aportes por Punto) — **la matriz que pide la autoridad**

1. La **fila de referencia** trae la frecuencia inicial f_i de cada escenario desde la Hoja 2 vía `INDEX(FREQ_SCENARIOS_GEN, #)`.
2. Por cada receptor (fila) y escenario:
   - **Pf**: referencia viva al Pf calculado en la Hoja 7.
   - **Aporte**: fórmula viva `= f_i × Pf` (CCPS Eq. 4.4.1).
3. La columna final **IR(x,y) = SUMA(aportes)** es el riesgo individual en el punto.

### Paso 5 — Hoja 8 (IR Promedio)

1. Por cada receptor, **IR(x,y)** se referencia desde la Hoja 6 y se multiplica por **P(x,y)**.
2. El **Subtotal receptores** acumula Σ(IR×P) y Σ(P) de los receptores expuestos (con `SUMIF` sobre IR > 0: un receptor con IR = 0 no está expuesto y no entra al denominador).
3. La sección **Población de fondo** lista las bandas de IR del cálculo de contornos persistido y su **Subtotal fondo** (escalares persistidos — ver Limitaciones).
4. **IR_av total (Población Expuesta)** = (Σ IR·P receptores + Σ IR·P fondo) / (Σ P receptores + Σ P fondo) — CCPS Eq. 4.4.6. Es la **cifra principal**, consistente con el tab de Riesgo Individual de la aplicación.
5. **IR_av (Población Total)** = (Σ IR·P receptores + Σ IR·P fondo) / P_T — CCPS Eq. 4.4.7.
6. La línea **IR_av solo receptores (sin fondo)** se muestra como referencia secundaria.

---

## 4. Cómo hacer un análisis de sensibilidad

El libro es completamente recalculable. Edite cualquier insumo y observe la propagación:

- **Frecuencia f_i** (Hoja 2, columna E): cambia el aporte de ese escenario en todos los receptores.
- **Perfil de fatalidad** (Hoja 3): cambia el Pf interpolado en todos los pares de ese escenario.
- **Probabilidad P(θ)** (Hoja 4): cambia el aporte parcial de ese sector en el desglose direccional.
- **Población P(x,y)** (Hoja 8, columna D): cambia el IR_av sin afectar el IR(x,y).

La cadena de fórmulas vivas propaga el cambio: Hojas 3-4 → Hoja 7 → Hoja 6 → Hoja 8 → Hoja 1.

> El libro se genera con `fullCalcOnLoad`: Excel recalcula todo al abrirlo. Si su lector no recalcula automáticamente, presione `Ctrl+Alt+F9`.

---

## 5. Glosario

| Símbolo | Significado | Unidad |
|---|---|---|
| IR(x,y) | Riesgo individual en el punto (x,y) | año⁻¹ |
| IR_av | Riesgo individual promedio | año⁻¹ |
| f_i | Frecuencia inicial del escenario i | año⁻¹ |
| Pf | Probabilidad de fatalidad del escenario en el punto | — |
| P(θ) | Probabilidad de que el viento sople desde θ (rosa de vientos) | — |
| Pf(d_θ) | Probabilidad de fatalidad a la distancia d_θ para la dirección θ | — |
| d_θ | Distancia del receptor a la zona de efecto para la dirección θ | m |
| θ | Dirección del viento / ángulo del polígono LEL | ° |
| P(x,y) | Personas en el punto (x,y) | personas |
| P_T | Población total predeterminada del proyecto | personas |

---

## 6. Referencias

- CCPS, *Guidelines for Chemical Process Quantitative Risk Analysis*, 2ª Ed., AIChE/CCPS, 2000. Capítulo 4 §4.4: Effect Models; Eq. 4.4.4 factor direccional simplificado; Eq. 4.4.6 / 4.4.7 IR_av.
- CCPS, *Guidelines for Evaluating the Characteristics of Vapor Cloud Explosions, Flash Fires, and BLEVEs*, AIChE, 1994.
- TNO, *Methods for the Determination of Possible Damage* (Green / Yellow / Purple Book), Voorburg, 2005.
- Lees, *Loss Prevention in the Process Industries*, 4ª Ed.; Eisenberg 1975; Hurst RISKAT 1989.
- Norma técnica aplicable (e.g. NTE-002-CGPC) según la jurisdicción del proyecto.

---

## 7. Discrepancias con cálculos previos (auditoría)

Si al comparar la columna **IR_xy** de un receptor entre el **PDF "Exportar PDF" (IR Average)** y esta **Memoria de Cálculo Excel** los valores no coinciden, el origen casi siempre es el siguiente:

- El PDF lee el `IR_xy` del **último snapshot persistido** que se generó cuando se presionó "Calcular IR Contour" por última vez. Versiones anteriores del motor (pre-2026-05-14) evaluaban ese `IR_xy` localizando la **celda del grid de contornos más cercana** al receptor — una aproximación con error de proximidad (resolución típica del grid: 50 m) que además usaba la **rosa interpolada a 72 direcciones** (suavizado visual del mapa).
- Esta Memoria de Cálculo Excel **siempre reconstruye** el `IR_xy` al vuelo con el motor actual: `IR_xy = Σ_j (f_j × Pf_j)` evaluado en la **coordenada exacta** del receptor con la **rosa real de 16 sectores**. Es el valor que parametriza el modelo probabilístico CCPS.

**Qué hacer si el auditor pregunta**:

1. **El valor defendible es el del Excel.** Es el resultado del motor probabilístico parametrizado por la rosa de vientos real de 16 sectores, evaluado en el punto exacto del receptor. La Hoja 7 muestra paso a paso cómo se obtiene ese `Pf` (perfil distancia-fatalidad o suma direccional `Σ_θ P(θ)·Pf(d_θ)`) y la Hoja 6 muestra `Aporte = f_i × Pf`.
2. **El PDF queda alineado tras recalcular.** Presione "Calcular IR Contour" una vez con la versión actual del software. El snapshot persistido se actualiza usando el mismo motor que la Memoria Excel y los `IR_xy` por receptor pasan a coincidir byte-idénticamente. La aplicación muestra un banner amarillo en la vista "Resumen" cuando detecta que el snapshot proviene de un motor anterior.
3. **El RI total puede coincidir incluso con `IR_xy` desfasados**, porque las divergencias receptor-a-receptor se compensan parcialmente al sumar ponderado por población. Esto es esperable y no indica un error de cálculo en ninguno de los dos paths.

A partir de la versión `ir-xy-point-evaluation-v1` del motor, el campo `metadata.engineVersion` se sella en el snapshot persistido y la UI detecta automáticamente cuando un proyecto fue calculado con una versión anterior, para invitar al usuario a recalcular antes de exportar.

---

## 8. Limitaciones y supuestos

1. **Rosa de 16 sectores**: la memoria evalúa con la rosa de vientos real de 16 sectores. El IR(x,y) por receptor de esta memoria es byte-idéntico al de la tabla de desglose del tab de Riesgo Individual de la aplicación (ambos usan el mismo motor de evaluación puntual). El **mapa de contornos** usa una rosa interpolada a 72 sectores como suavizado visual: puede haber una diferencia residual menor entre el IR(x,y) de esta memoria y el contorno que pasa por ese punto — ese residual es el artefacto del suavizado, no una brecha de riesgo real.
2. **Recálculo desde los modelos actuales**: la memoria se reconstruye desde los modelos de riesgo actuales del proyecto al momento de la exportación. Si los modelos se editan después de calcular los contornos, la memoria y el mapa pueden divergir. La fecha de exportación se registra en la Hoja 1.
3. **Población de fondo**: el aporte de fondo (densidad × área fuera de los receptores) proviene de la integración sobre el grid de contornos persistido y **sí entra** al IR_av total de la Hoja 8. Sus valores (subtotal de población y de IR·P) son escalares persistidos del cálculo de contornos: no son recalculables celda a celda en esta hoja porque la integración angular usó la rosa interpolada del grid. La parte de receptores del IR_av sí es fórmula viva y recalculable.
4. **Probit aguas arriba**: el método general no evalúa una función probit con `erf` en el motor de IR. El perfil de fatalidad distancia→% ya tiene la probit aplicada (al calcular las fatalidades del modelo de riesgo). Esta memoria interpola ese perfil — la trazabilidad documentada parte del perfil de fatalidad.
5. **Envolvente VCE**: para escenarios VCE en modo envolvente (peor caso), el Pf es un MÁX sobre los samples del envelope y se tabula el valor del motor sin desglose celda a celda.
6. **Requiere Excel con soporte de funciones estándar** (`INDEX`, `MATCH`, `IF`, `SUM`). No usa funciones de versiones recientes — es compatible con cualquier versión moderna de Excel y con LibreOffice Calc.
