Páginas

domingo, 29 de diciembre de 2013

Ha salido la versión 6.0.1 de FDS

Tras mucho tiempo en la cocina, ha aparecido la nueva versión de FDS.

Esta versión tiene algunas novedades de importancia, como la introducción de turbulencias en la combustión.

Además tiene incluida la versión  Evac 2.4.1, que simplifica notablemente la preparación de archivos de entrada.

La nueva versión necesita más capacidad de proceso que la 5 y por ser más configurable y permitir más parámetros de entrada presenta bastante complejidad.

Es decir, tendremos que trastear con ella antes de hacer cosas nuevas, porque los archivos de entrada de FDS 5 frecuentemente no funcionan en la nueva versión.

domingo, 2 de junio de 2013

Hipotético pabellón


SOLUCIÓN DE UN PROBLEMA EN UN HIPOTÉTICO PABELLÓN


Supongamos que queremos hacer un espectáculo masivo en un pabellón que no cumple la parte prescriptiva del CTE porque es un edificio deportivo y queremos poner personas en la pista deportiva para un espectáculo.

Available Safe Egress Time o tiempo disponible

Para determinar el tiempo disponible se debe modelizar un fuego.

El dato más importante sería la tasa de liberación de calor por metro cuadrado de incendio y la superficie máxima que estimemos que puede alcanzar.

En este caso apoyándonos en la norma UNE 1991-1, aunque no está específicamente contemplado este caso tomaremos 250 kW/m2, con una fase de desarrollo 6 minutos.

La carga en un edificio de este tipo será pequeña.

En cuanto a la superficie de desarrollo, puede haber elementos limitadores. En este caso he estimado que está presente una dotación de bomberos, además de personal de la organización y por ello he supuesto una superficie de 1m2.

Como no sabemos el combustible que puede arder he tomado poliuretano y la situación una posible mesa de sonido en el centro de la sala.

Cabe suponer que si hay ventanas abiertas y ventilación natural haya una cierta corriente de aire que mejorará las condiciones ambientales en la zona por la que entra el aire y las empeorará en la contraria.

Como datos de salida del incendio le vamos a pedir al programa que nos indique temperaturas, concentración de CO y oscurecimiento del ambiente. Para este último a falta de algo más próximo tomamos la CFPA-E 19, que es una guía europea de asociaciones de protección contra incendios, que pide una visibilidad de 10m en grandes edificios.

Required Safe Egress Time o tiempo necesario

Para averiguar esto FDS tiene el módulo EVAC integrado, que es bastante farragoso de usar, pero es gratis y con los tiempos que corren…

Para no complicarnos la vida elegimos como tipo de persona el adulto medio.

Como ocupación del recinto vamos a poner 4.000 personas, de ellas 2.000 estarán en la pista y otras 2.000 bajarán de las gradas.

El movimiento por las gradas es difícil de simular con FDS-EVAC por lo que recurro a una simplificación poniendo unas entradas por las que van apareciendo 250 personas y añadiéndose a las de la pista.

Hay valores que se pueden indicar, como el tiempo que tardan los avatares en descubrir el fuego, etc… pero para tener una aproximación de lo que puede ocurrir puede servir.

Las salidas estarán en las esquinas.

Se procesa todo en el ordenador y…15 horas más tarde se obtiene el resultado.

Que por supuesto no puede verse en Internet, porque es una larga serie de datos. Aplicando el programa de postproceso Smokewiev y diciéndole por ejemplo que nos enseñe a los avatares, el humo y la concentración de CO, podemos generar una serie de imágenes como ésta.

Y generando unas 4.500 imágenes podemos hacer una película que sí es posible colgar a través de Youtube.




miércoles, 27 de marzo de 2013

Simulando un incendio

Hemos estado viendo simulaciones de evacuación y va siendo hora de ver la simulación de un incendio, que es la función básica del FDS.

Usaré la versión 5 que es la estable, ya que la 6 es una beta y todavía tiene desarrollo por delante.

Hay dos formas de simular un incendio. La fácil, que es definir una potencia de fuego por área de superficie y luego aplicar esa superficie a una zona. Se define el parámetro HRRPUA (Heat Relise Rate Per Unit Area) en kW/m2. De esta forma se suelen definir los quemadores, es decir las zonas donde queremos que el incendio comience o también el máximo incendio que suponemos que pueda haber. La potencia del incendio que corresponda puede sacarse de otras publicaciones como “Initial Fires” de la Universidad de Lund en Suecia, que presenta las curvas de tasa de emisión de calor en distintos incendios.

Por ejemplo en el caso del Buesa Arena acordamos con los proyectistas 5MW, que podría equivaler al incendio simultáneo de dos furgonetas. En un recinto de esas características no imaginamos un incendio de más potencia, porque por su configuración geométrica (techo a 32m de altura) y por la reacción al fuego de los materiales (butacas clase B) no nos parecía (ni nos parece) posible un flash-over. Al programa se le puede decir que el incendio siga un patrón de crecimiento y decrecimiento determinado. En el caso del Buesa Arena el incendio alcanzaba su máximo desarrollo en 315s y se mantenía en los 5MW por tiempo indefinido.

Por ejemplo:

&SURF ID='BURNER', HRRPUA=1000., COLOR='RASPBERRY' /

Si queremos ver la propagación por distintos materiales tenemos que usar la forma más compleja y seguir los siguientes pasos:

- Definir los materiales implicados dando sus características físico-químicas por ejemplo en un tejido:

&MATL ID                    = 'FABRIC'
      FYI                   = 'Properties completely fabricated'
      SPECIFIC_HEAT         = 1.0
      CONDUCTIVITY          = 0.1
      DENSITY               = 100.0
      N_REACTIONS           = 1
      NU_FUEL               = 1.
      REFERENCE_TEMPERATURE = 350.
      HEAT_OF_REACTION      = 3000.
      HEAT_OF_COMBUSTION    = 15000. /

-         Después tenemos que definir las superficies, que en ocasiones estarán compuestas de capas de distintos materiales. Por ejemplo:
&SURF ID             = 'UPHOLSTERY'
      COLOR          = 'PURPLE'
      BURN_AWAY      = .TRUE.
      MATL_ID(1:2,1) = 'FABRIC','FOAM'
      THICKNESS(1:2) = 0.002,0.1 /

Donde tenemos una identificación de la superficie.
Un color asociado a esa superficie.
Una indicación de que cuando se haya quemado desaparezca de la simulación. Algo que queda muy bien, pero consume recursos del ordenador.
Una indicación del orden en el que están los materiales en la superficie.
Y otra del grosor de cada capa de material.

Después de hacer esto tenemos que aplicarlo a los objetos, paredes y techo del recinto en el que queremos hacer la simulación.

-         También tenemos que definir una y en la versión 5 sólo una reacción de combustión. Si no definimos ninguna el programa en versión 5 adopta el propano. Ejemplo:

&REAC ID         = 'POLYURETHANE'
      FYI        = 'C_6.3 H_7.1 N O_2.1, NFPA Handbook, Babrauskas'
      SOOT_YIELD = 0.10
      N          = 1.0
      C          = 6.3
      H          = 7.1
      O          = 2.1  /

Y pertrechados con todo esto definir la geometría con superficies, orificios y obstáculos.

Vamos a hacer correr el siguiente ejemplo:

Room fire test case, based on an actual test conducted for US ATF by the University of Maryland.
All material properties are completely fabricated.

&HEAD CHID='room_fire', TITLE='ATF Room Fire Test, SVN $Revision: 4664 $'  /

&MESH IJK=52,54,24, XB=0.0,5.2,-0.8,4.6,0.0,2.4 /

&TIME T_END=2000.0 /

&MISC SURF_DEFAULT='WALL'/



&REAC ID         = 'POLYURETHANE'
      FYI        = 'C_6.3 H_7.1 N O_2.1, NFPA Handbook, Babrauskas'
      SOOT_YIELD = 0.10
      N          = 1.0
      C          = 6.3
      H          = 7.1
      O          = 2.1  /

&SURF ID='BURNER', HRRPUA=1000., COLOR='RASPBERRY' /

&MATL ID                    = 'FABRIC'
      FYI                   = 'Properties completely fabricated'
      SPECIFIC_HEAT         = 1.0
      CONDUCTIVITY          = 0.1
      DENSITY               = 100.0
      N_REACTIONS           = 1
      NU_FUEL               = 1.
      REFERENCE_TEMPERATURE = 350.
      HEAT_OF_REACTION      = 3000.
      HEAT_OF_COMBUSTION    = 15000. /

&MATL ID                    = 'FOAM'
      FYI                   = 'Properties completely fabricated'
      SPECIFIC_HEAT         = 1.0
      CONDUCTIVITY          = 0.05
      DENSITY               = 40.0
      N_REACTIONS           = 1
      NU_FUEL               = 1.
      REFERENCE_TEMPERATURE = 350.
      HEAT_OF_REACTION      = 1500.
      HEAT_OF_COMBUSTION    = 30000. /

&MATL ID            = 'GYPSUM PLASTER'
      FYI           = 'Quintiere, Fire Behavior'
      CONDUCTIVITY  = 0.48
      SPECIFIC_HEAT = 0.84
      DENSITY       = 1440. /

&MATL ID                    = 'CARPET PILE'
      FYI                   = 'Completely made up'
      CONDUCTIVITY          = 0.16
      SPECIFIC_HEAT         = 2.0
      DENSITY               = 750.
      N_REACTIONS           = 1
      NU_FUEL               = 1.
      REFERENCE_TEMPERATURE = 290.
      HEAT_OF_COMBUSTION    = 22300.
      HEAT_OF_REACTION      = 2000. /


&SURF ID             = 'UPHOLSTERY'
      COLOR          = 'PURPLE'
      BURN_AWAY      = .TRUE.
      MATL_ID(1:2,1) = 'FABRIC','FOAM'
      THICKNESS(1:2) = 0.002,0.1 /

&SURF ID             = 'WALL'
      RGB            = 200,200,200
      MATL_ID        = 'GYPSUM PLASTER'
      THICKNESS      = 0.012 /

&SURF ID              = 'CARPET'
      MATL_ID         = 'CARPET PILE'
      COLOR           = 'KHAKI'
      BACKING         = 'INSULATED'
      THICKNESS       = 0.006 /

&OBST XB= 1.50, 3.10, 3.80, 4.60, 0.00, 0.40 /
&OBST XB= 1.50, 3.10, 3.80, 4.60, 0.40, 0.60, SURF_ID='UPHOLSTERY' / Couch, seat cushions
&OBST XB= 1.30, 1.50, 3.80, 4.60, 0.00, 0.90, SURF_ID='UPHOLSTERY' / Couch, armrest
&OBST XB= 3.10, 3.30, 3.80, 4.60, 0.00, 0.90, SURF_ID='UPHOLSTERY' / Couch, armrest
&OBST XB= 1.50, 3.10, 4.40, 4.60, 0.60, 1.20, SURF_ID='UPHOLSTERY' / Couch, back cushions

&VENT XB= 2.50, 2.60, 4.30, 4.40, 0.60, 0.60, SURF_ID='BURNER' / Ignition source on couch

&OBST XB= 4.00, 4.60, 3.80, 4.60, 0.00, 0.40 /
&OBST XB= 4.00, 4.60, 3.80, 4.60, 0.40, 0.60, SURF_ID='UPHOLSTERY' / Chair, back corner, seat cushion
&OBST XB= 3.80, 4.00, 3.80, 4.60, 0.00, 0.90, SURF_ID='UPHOLSTERY' / Chair, back corner, right armrest
&OBST XB= 4.60, 4.80, 3.80, 4.60, 0.00, 0.90, SURF_ID='UPHOLSTERY' / Chair, back corner, left armerest
&OBST XB= 4.00, 4.60, 4.40, 4.60, 0.60, 1.20, SURF_ID='UPHOLSTERY' / Chair, back corner, back cushion

 OBST XB= 1.60, 3.00, 2.80, 3.60, 0.40, 0.60, SURF_ID='SPRUCE' / Table

&OBST XB= 0.00, 0.80, 2.00, 2.60, 0.00, 0.40 /
&OBST XB= 0.00, 0.80, 2.00, 2.60, 0.40, 0.60, SURF_ID='UPHOLSTERY' / Chair, left wall, seat cusion
&OBST XB= 0.00, 0.80, 1.80, 2.00, 0.00, 0.90, SURF_ID='UPHOLSTERY' / Chair, left wall, right armrest
&OBST XB= 0.00, 0.80, 2.60, 2.80, 0.00, 0.90, SURF_ID='UPHOLSTERY' / Chair, left wall, left armrest
&OBST XB= 0.00, 0.20, 2.00, 2.60, 0.00, 0.90, SURF_ID='UPHOLSTERY' / Chair, left wall, back cushion

&OBST XB= 1.80, 3.80, 0.00, 1.00, 0.00, 0.20, SURF_ID='UPHOLSTERY' / Futon on floor?

&OBST XB= 2.00, 2.40, 1.60, 2.00, 0.00, 0.40 /
&OBST XB= 2.00, 2.40, 1.60, 2.00, 0.40, 0.60, SURF_ID='UPHOLSTERY' / Small chair, room center, seat cushion
&OBST XB= 1.80, 2.00, 1.60, 2.00, 0.00, 0.80, SURF_ID='UPHOLSTERY' / Small chair, room center, left armrest
&OBST XB= 2.40, 2.60, 1.60, 2.00, 0.00, 0.80, SURF_ID='UPHOLSTERY' / Small chair, room center, right armrest
&OBST XB= 1.80, 2.60, 1.40, 1.60, 0.00, 0.80, SURF_ID='UPHOLSTERY' / Small chair, room center, back cushion
 OBST XB= 4.40, 5.20, 1.00, 2.00, 0.00, 0.80, SURF_ID='SPRUCE' / TV cart?

&OBST XB= 0.00, 5.20, -0.20, 0.00, 0.00, 2.40 / Front wall
&HOLE XB= 4.00, 4.90, -0.20, 0.00, 0.00, 2.00 / Door

&VENT MB='YMIN',SURF_ID='OPEN' /
&VENT XB=0.00,5.20,0.00,4.60,0.00,0.00, SURF_ID='CARPET' /

&BNDF QUANTITY='GAUGE HEAT FLUX' /
&BNDF QUANTITY='WALL TEMPERATURE' /
&BNDF QUANTITY='BURNING RATE' /

&SLCF PBX=2.60, QUANTITY='TEMPERATURE' /
&SLCF PBX=2.60, QUANTITY='HRRPUV' / Heat Release Rate per Unit Volume
&SLCF PBX=2.60, QUANTITY='MIXTURE FRACTION' /
&SLCF PBX=4.45, QUANTITY='TEMPERATURE' /
&SLCF PBX=4.45, QUANTITY='HRRPUV' / Heat Release Rate per Unit Volume
&SLCF PBX=4.45, QUANTITY='MIXTURE FRACTION' /

&DEVC XYZ=2.6,2.3,2.1, QUANTITY='TEMPERATURE' /
&DEVC XYZ=2.6,2.3,1.8, QUANTITY='TEMPERATURE' /
&DEVC XYZ=2.6,2.3,1.5, QUANTITY='TEMPERATURE' /
&DEVC XYZ=2.6,2.3,1.2, QUANTITY='TEMPERATURE' /
&DEVC XYZ=2.6,2.3,0.9, QUANTITY='TEMPERATURE' /
&DEVC XYZ=2.6,2.3,0.6, QUANTITY='TEMPERATURE' /

&DEVC XYZ=4.5,0.3,2.1, QUANTITY='TEMPERATURE' /
&DEVC XYZ=4.5,0.3,1.8, QUANTITY='TEMPERATURE' /
&DEVC XYZ=4.5,0.3,1.5, QUANTITY='TEMPERATURE' /
&DEVC XYZ=4.5,0.3,1.2, QUANTITY='TEMPERATURE' /
&DEVC XYZ=4.5,0.3,0.9, QUANTITY='TEMPERATURE' /
&DEVC XYZ=4.5,0.3,0.6, QUANTITY='TEMPERATURE' /

&DEVC XYZ=0.3,4.3,2.1, QUANTITY='TEMPERATURE' /
&DEVC XYZ=0.3,4.3,1.8, QUANTITY='TEMPERATURE' /
&DEVC XYZ=0.3,4.3,1.5, QUANTITY='TEMPERATURE' /
&DEVC XYZ=0.3,4.3,1.2, QUANTITY='TEMPERATURE' /
&DEVC XYZ=0.3,4.3,0.9, QUANTITY='TEMPERATURE' /
&DEVC XYZ=0.3,4.3,0.6, QUANTITY='TEMPERATURE' /

&DEVC XYZ=2.6,2.3,0.0, QUANTITY='RADIATIVE HEAT FLUX', IOR=3 /

&TAIL /


Donde además de los parámetros que definen el espacio, tenemos una serie de dispositivos de toma de datos, que serían termómetros (DEVC), unas superficies definidas (SLCF) que nos indicarían la evolución espacial de distintos planos de sección y BNDF que nos indicarían cómo evolucionan los parámetros seleccionados en las superficies que hemos definido.

Esto hay que marcarlo previamente, porque la salida de datos ocupa mucho espacio y da trabajo al programa.

¡Qué cosa esto de ahorrar trabajo al programa!

A estas alturas no me pongas una ecuación diferencial, porque sabría lo que significa (probablemente), pero sería incapaz de resolverla. Recuerdo que resolver media docena podía ser un duro examen de matemáticas. El programa para hacer la simulación resuelve miles o millones.

Tengo un ordenador portátil con procesador i7 y Linux Mint 14 instalado. Le costó 14 horas hacer la simulación de este “sencillo” ejemplo que es un incendio en un cuarto de estar.

La salida de un DEVC es una columna en una hoja de cálculo que registra el dato indiquemos en el punto que hayamos definido.


Este es el cuarto de estar y los puntos verdes que hay flotando los termómetros.




La salida de un SLCF es algo como esto, pero con posibilidad de animarlo. Aquí vemos una imagen fija de la sección que indica las temperaturas, donde podemos ver cómo hay una corriente de aire fresco entrando en la habitación y cómo produce temperaturas más elevadas cerca de la puerta que en el interior de la habitación por facilitar la combustión en esa zona, ya que nos encontraríamos por una combustión dominada por la disponibilidad de oxígeno.


Y aquí vemos mezclada la sección con las temperaturas de las superficies y una barra indicadora de qué quieren decir los colores.

sábado, 16 de marzo de 2013

¿Cuándo una persona está incapacitada debido a un incendio?

FDS utiliza la fractional effective dose (en adelante FED) que es una medida desarrollada por Purser y que relaciona las concentraciones de distintos contaminantes con el tiempo que las personas están sometidas a ellos y con otros factores como falta de oxígeno u oscurecimiento del ambiente.

De esta forma una persona tiene FED = 0 cuando está en ambiente limpio y FED = 1 cuando el incendio la ha incapacitado.  Es una forma muy sencilla de controlar cómo les va a nuestros avatares.

Lo bueno del programa es que realiza por nosotros una cantidad de cálculos enorme, ya que calcula la FED de la siguiente forma:

Concentración de gas presente x tiempo de exposición / concentración x tiempo de incapacitación

Como referencia se aplican los valores IDLH: “Immediately dangerous to life or health” (inmediatamente peligroso para la vida o salud) en 30 minutos, pero como siempre en este programa se pueden introducir otros.

FDS puede controlar la cantidad de contaminantes, humo, falta de oxígeno y calor que llega a cada punto de la simulación o a cada uno de los avatares que hemos definido.

Los datos que produce, además de verse, pueden salvarse en una hoja de cálculo.

La versión 5 usaba CO, CO2, O2 (para medir hipoxia) y un factor de corrección para introducir el efecto de hiperventilación que ocasiona el aumento de CO2.

La versión 6 (beta) usa la siguiente fórmula:

FEDtot = (FEDCO+FEDCN+FEDNOx +FLDirr)×HVCO2 +FEDO2

Donde además del monóxido de carbono, cianhídrico, óxidos nitrosos, el factor de hiperventilación (HV) y la falta de oxígeno, nos encontramos con la fracción de la dosis letal (FDL), que en este programa se calcula con la presencia de ácidos clorhídrico, bromhídrico, fluorhídrico, óxidos de azufre y nitrógeno, acroleína y formaldehído, según la siguiente fórmula:


¡¡ Menos mal que el programa hace los cálculos por nosotros!!

sábado, 9 de marzo de 2013

El yin-yang de la simulación


El concepto taoista del yin-yang nos ayuda a ver lo bueno que hay en lo malo y lo malo que hay en lo bueno.

Para mí, la simulación con FDS-EVAC tiene una cosa muy buena, que es una herramienta científica muy poderosa que nos permite hacer montones de pruebas y tomar montañas de datos sin quemar nada. Además si, como nos ocurre a menudo, despúes de realizada decimos: ¡ah! tenía que haber medido esto o introducido este factor, pues se repite la prueba sin romper nada.

Esta facilidad para introducir datos y parámetros en las simulaciones hace que sus resultados sean manipulables con facilidad y que si por un interés espúreo queremos un resultado determinado podemos conseguirlo sin problemas.

He añadido un incendio de 360 kW a la simulación para que podamos ver el grado de intoxicación de los avatares.




En esta imagen podemos ver cómo los últimos se van coloreando de verde porque van alcanzando el 0,008 de la dosis tóxica mortal y en esta otra


El humo es más claro, los avatares no muestran intoxicación y de hacerlo lo harían con una dosis unas 100 veces menor que en el ejemplo anterior.

¿Cuál es la diferencia?

Para verla tendríamos que acudir al archivo que he usado para hacer la simulación que en este caso es el    siguiente:


&HEAD CHID='DISCO3F', TITLE='Discoteca con dos salidas en fachada y un pequño incendio en una puerta'/

se trata de un local alargado con 25m de fondo y 6 de fachada, 300 personas dentro segun CTE

Hago una malla de 20cm de lado y me sale. Le añado 60cm para el exterior.

++MALLA DE FUEGO++

&MESH IJK=128,30,13, XB= -0.6,25.0, 0.0,6.0, 0.0,2.6/

++MALLA DE EVACUACION++

&MESH IJK=128,30,1, XB=-0.6,25.0, 0.0,6.0, 0.6,1.40, EVAC_Z_OFFSET=1.0, EVACUATION=.TRUE., EVAC_HUMANS=.TRUE. ID='MALLAEVACUACION' /

&MESH IJK=128,30,1, XB=-0.6,25.0, 0.0,6.0, 0.6,1.40, EVACUATION=.TRUE., ID='SALIDAS'/

Esta linea es importante debe haber un flujo de salida se suelen empear siempre estos valores

&REAC ID         = 'POLYURETHANE'
      FYI        = 'C_6.3 H_7.1 N O_2.1, NFPA Handbook, Babrauskas'
      SOOT_YIELD = 0.10
CO_YIELD = 0.1
      N          = 1.0
      C          = 6.3
      H          = 7.1
      O          = 2.1  /

&SURF ID='BURNER', HRRPUA=1000., COLOR='RASPBERRY' /

&VENT XB= 23.2, 23.8, 1.2, 1.8, 0.0, 0.0, SURF_ID='BURNER' / quemador

&MATL ID            = 'GYPSUM PLASTER'
      FYI           = 'Quintiere, Fire Behavior'
      CONDUCTIVITY  = 0.48
      SPECIFIC_HEAT = 0.84
      DENSITY       = 1440. /

&SURF ID='EVAC_WALL', RGB= 200,0,200 / or COLOR

&MISC SURF_DEFAULT='WALL',
      EVAC_SURF_DEFAULT = 'EVAC_WALL' /

&SURF ID             = 'WALL'
      RGB            = 100,100,100
      MATL_ID        = 'GYPSUM PLASTER'
      THICKNESS      = 0.012 /


&SURF ID='OUTFLOW', VEL= +0.000001, TAU_V=0.1 /


&OBST XB= 0.0,0.2, 0.0,6.0, 0.0,2.5 /
&HOLE XB= -0.1, 0.21,  0.5,2.0, 0.00, 2.00 / PUERTA IZQUIERDA

&HOLE XB= -0.1, 0.21,  5.5,4.0, 0.00, 2.00 / PUERTA DERECHA

&VENT MB='XMIN',SURF_ID='OPEN'/
&VENT XB= -0.60,-0.6,  0.0,6.0, 0.0,2.50, SURF_ID='OUTFLOW',
      MESH_ID='MALLAEVACUACION', EVACUATION=.TRUE., RGB=0,0,255 / CALLE

&PERS ID='Adult',
      FYI='Male+Female diameter and velocity',
      DEFAULT_PROPERTIES='Adult',

      TDET_SMOKE_DENS=0.1,
      HUMAN_SMOKE_HEIGHT=1.60,
      DENS_INIT=4.0,
      OUTPUT_SPEED=.TRUE.,
      OUTPUT_FED=.TRUE.,
      COLOR_METHOD= 0,
OUTPUT_FED=.TRUE. /

&EVAC ID='EVACUADOS',
      NUMBER_INITIAL_PERSONS = 300,
      XB= -0.6,25.0,  0.0,6.0, 0.6,1.4,
      AVATAR_COLOR = 'BLUE',
      PERS_ID = 'Adult' /

&TIME T_END=100.0/



TAIL/

Sí, la entrada al programa no se hace con cliks de ratón, todo no puede ser.

Bueno, en el segundo ejemplo he modificado los parámetros:


  SOOT_YIELD = 0.10
CO_YIELD = 0.1

de la reacción de combustión dividiéndolos por 10, con lo que el mismo fuego se produce la décima parte de humo y de monóxido de carbono.

Por otra parte al programa de postproceso e he dicho que no coloree los avatares.




viernes, 1 de marzo de 2013

Simulando la evacuación de una discoteca


Para comprender mejor cómo funciona un programa de simulación de evacuación vamos a ver cómo se evacúa una discoteca.

Un caso sencillo, un local de 6 x 25m, lo que nos da 150m2 de superficie y usando la ocupación del CTE para discotecas 300 personas en el interior.

No hay fuego y hemos definido 2 puertas de salida de 1,5m según marca la normativa, a razón de 200 personas por metro de salida pensando que una de las salidas pueda estar bloqueada.

Haciendo correr el modelo nos da este resultado.


El movimiento está acelerado. Atiempo normal la evacuación dura 96 s.
 El video no ha quedado con mucha calidad.
En posteriores entradas los mejoraré


¡A que es bonito!

 E inquietante, porque podemos ver empujones y sentir que no nos gustaría estar en el medio.

Detrás estos simpáticos avatares hay un trabajo técnico importante en los que están definidos multitud de características.

Como es un ejemplo muy simple he introducido estas características en los agentes.

&PERS ID='Adult',
      FYI='Male+Female diameter and velocity',
      DEFAULT_PROPERTIES='Adult',
      PRE_EVAC_DIST=1,PRE_LOW=5.0,PRE_HIGH=15.0,
      DET_EVAC_DIST=1,DET_LOW=5.0,DET_HIGH=15.0,
      TDET_SMOKE_DENS=0.1,
      HUMAN_SMOKE_HEIGHT=1.60,
      DENS_INIT=4.0,
      OUTPUT_SPEED=.TRUE.,
      OUTPUT_FED=.TRUE.,
      COLOR_METHOD= 0 /


Para comprender las características tenemos que saber que la imagen es sólo una representación y que un agente tiene esta forma en el cálculo:


Se asume que el cuerpo humano puede asimilarse a la superposición de 3 cículos, pudiendo definir diferentes tipos de persona variando el diámetro de esos círuclos.

Por otra parte también se asume que su movilidad puede ser distinta y podemos variar ambas cosas según nos convenga.

El programa trae los siguientes tipos predefinidos:





Osea adulto, hombre, mujer, niño o anciano.

En el ejemplo, con la línea "DEFAULT_PROPERTIES='Adult' nos hemos decantado por la primera opción.

Podemos definir multitud de opciones. En el ejemplo:

- DET_EVAC_DIST=1,PRE_LOW=5.0,PRE_HIGH=15.0: Indica el tiempo máximo y nínimo que los agentes van a tardar en detectar el motivo de la evacuación.
- PRE_EVAC_DIST=1,PRE_LOW=5.0,PRE_HIGH=15.0: Indica el tiempo máximo y nínimo que los agentes van a tomarse para iniciar la evacuación una vez detectado el fuego.
- TDET_SMOKE_DENS=0.1: Indica la densidad de humo en mg/m3 que tiene que alcanzarse en la posición del agente para que detecte humo.
- HUMAN_SMOKE_HEIGHT=1.60 es la altura a la que se realiza la toma de muestra de la densidad del humo en una posición determinada.
- DENS_INIT=4.0:m: permite altas densidades de personas en las condiciones iniciales, ya que la distribución de los agentes es aleatoria.

Las indicaciones OUTPUT son para que el programa guarde datos de la velocidad y de las concentraciones de tóxicos que les llegan a cada agente.

Esos datos se pueden usar en el postproceso para dar color a los avatares.

De esta forma si le decimos al programa que los coloree por velocidad de salida tendremos este resultado:



Vemos a los avatares casi parados en azul intenso y los que se mueven más deprisa en rojo




viernes, 8 de febrero de 2013

Evacuación. La pregunta del millón

En un diseño prestacional, la pregunta del millón en evacuación es ¿cuanto tardan los ocupantes de un recinto en alcanzar un lugar seguro?

Estos días es la Copa del Rey de baloncesto en Vitoria-Gasteiz y el pabellón Buesa Arena fue proyectado con un diseño prestacional, lo que quiere decir que el principal parámetro que define la seguridad de la evacuación del recinto es el tiempo que tarda en vaciarse una vez concluido el partido.

Hay edificios cuyo diseño ya te produce tranquilidad. Un edificio con 12 escaleras protegidas perimetrales es candidato ideal para una buena evacuación.

En un edificio como ese, en el que vamos a tener 15.000 personas dentro y que van a salir todas a la vez hay muchos factores que influyen en la evacuación y van más allá de la mera anchura de los pasillos.

Por ejemplo si cuando la gente sale del edificio se relaja y se queda junto a la puerta de salida, esto retrasa la evacuación de los que están dentro aún.

En el Buesa Arena el edificio está rodeado por el aparcamiento y la gente sale rápida a por su coche. Esto ayuda a que la evacuación sea eficiente.

En España no conozco ninguna norma que diga cuanto tiempo se puede tardar en salir de un recinto de este tipo, por lo que como nos ocurre muchas veces hay que salir a textos extranjeros.

Tras mucho bucear por la Red he visto que se reconoce como tiempo máximo de evacuación 8 minutos para estadios deportivos o lugares análogos. Hay que decir que en general se refieren a recintos al aire libre.

Según datos recogidos en la tesis doctoral del Dr. Salvador Casadesús las personas asignadas a una salida deberían poder alcanzarla antes de 2,5 minutos y situarse en un lugar seguro en 1 minuto de recorrido ascendente o 5 de descendente.


La experiencia subjetiva en el Buesa Arena es que se evacúa muy rápido. ¿Pero en cuánto tiempo?

Esta pregunta no es tan fácil de responder, pero en futuros posts la abordaremos.