Páginas

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.

No hay comentarios:

Publicar un comentario