Fire Simulation for Engineers/FDS/Boundary Conditions

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Boundary conditions[edit | edit source]

Third, some properties are set up, as the types of boundary conditions (SURF).

This is the most challenging part of setting up the simulation: first, for both real and simulated fires, the growth of the fire is very sensitive to the thermal properties of the surrounding materials. Second, even if all the material properties are known to some degree, the physical phenomena of interest may not be simulated properly due to limitations in the model algorithms or resolution of the numerical mesh.

It is your responsibility to supply the thermal properties of the materials, and then assess the performance of the model to ensure that the phenomena of interest are being captured.

This chapter covers RAMP (time dependent) namelist group, too.

Defining boundary conditions, SURF[edit | edit source]

This chapter describes how to specify the properties of the bounding surfaces of the flow domain. The namelist group that defines the types of boundary conditions is SURF. For example,

 &SURF ID='warm_surface', TMP_FRONT=25. /

defines a surface named warm_surface. Its temperature is fixed to 25 °C.

While building the solid geometry, the types of boundary conditions will be applied to each of the bounding surfaces of the flow domain: the faces of the solid obstructions and the exterior boundaries of the computational domain.

The following table summarizes some SURF parameters:

Predefined boundary conditions[edit | edit source]

FDS contains some predefined boundary conditions that do not need to be set within a SURF namelist group: INERT, OPEN, and MIRROR.

An INERT boundary condition represents an isothermal wall with the temperature fixed at ambient temperature. INERT allows for heat loss and is not the same as an adiabatic surface. An INERT solid is something that never heats up, like a piece of steel that has cold water constantly flowing across its back side.

In general, this boundary condition should not be used, as it is better to assign actual material properties to everything.

An OPEN boundary condition assumes that ambient conditions exist beyond that VENT. OPEN can only be prescribed at an exterior boundary of the computational domain.

If you are concerned about the flow through a particular vent, do not use an OPEN boundary because the constant pressure assumption is just an approximation. You should extend your computational domain beyond the vent and build it out of obstructions, as shown in Figure [fig:Extending-the-domain]. The flow in and out will then be treated naturally as part of the solution of the governing equations.

Choice of computational domain to mimic open boundary conditions

A MIRROR boundary condition denotes a symmetry plane. A MIRROR should span an entire face of the computational domain, essentially doubling the size of the domain. The flow on the opposite side of the MIRROR is exactly reversed. From a numerical point of view, a MIRROR is a no-flux, free-slip boundary.

MIRROR can only be prescribed at an exterior boundary of the computational domain.

Coloring boundary conditions[edit | edit source]

As explained in Section [sec:Prescribing-colors]:

 &SURF ID='upholstery', RGB=0,255,0 /
 &SURF ID='carpet', COLOR='VIOLET RED' /

will cause objects with a boundary condition of type upholstery to be colored green and the objects of type carpet to be violet red.

It is highly recommended that colors be assigned to solid obstructions via the SURF line because, as the geometries of FDS simulations become more complex, it is very useful to use color as a spot check to determine if the desired surface properties have been assigned throughout the room or building under study.

Another example:

 &SURF ID='glass', RGB=0,255,0, TRANSPARENCY=.3 /

will cause objects with a boundary condition of type glass to be colored green and to be partially transparent.

Examples of boundary conditions[edit | edit source]

In the following Sections a list of simple boundary conditions are presented. More complex examples can be found in Chapter [cha:Real-world-examples].

Adiabatic surface[edit | edit source]

For some special applications, it is often desired that a solid surface be adiabatic, that is, there is no net heat transfer (radiative and convective) from the gas to the solid. The line:

 &SURF ID='adiabatic_surface', ADIABATIC=.TRUE. /

defines an adiabatic surface named adiabatic_surface. FDS will compute a wall temperature so that the sum of the convective and radiative fluxes to the wall is zero.

Fixed temperature and heat flux[edit | edit source]

The line:

 &SURF ID='warm_surface', TMP_FRONT=25. /

fixes the surface temperature to 25 °C.

The following line specifies a NET_HEAT_FLUX in units of kW/m^{2}:

 &SURF ID='warm_surface', NET_HEAT_FLUX=25. /

FDS will compute the surface temperature required to ensure that the combined radiative and convective heat flux from the surface is equal to the prescribed flux.

The following line specifies separately the CONVECTIVE_HEAT_FLUX, in units of kW/m2 and the radiative heat flux using TMP_FRONT temperature in °C and EMISSIVITY:

 &SURF ID='warm_surface', CONVECTIVE_HEAT_FLUX=25.,
     TMP_FRONT=150., EMISSIVITY=.9 /

The sign convention is that positive heat flux from a surface heats up the gas.

Fans[edit | edit source]

For most applications, the ventilation system of a building is described in FDS using velocity boundary conditions. For example, fresh air can be blown into, and smoke can be drawn from a compartment by specifying a velocity in the normal direction to a solid surface. However, there are various other facets of velocity boundary conditions that are described below.

For example, the line:

 &SURF ID='supply', VEL=-1.2, TMP_FRONT=50. /

defines a surface supplying hot air to the domain at a velocity of 1.2 m/s and temperature of 50 °C. The volume flux depends on the prescribed area and its alignment with the computational mesh.

The line:

 &SURF ID='supply', VOLUME_FLUX=1.2 /

defines a surface extracting air from the domain at a volume flow of 1.2 m3/s. The velocity depends on the prescribed area and its alignment with the computational mesh.

This line:

 &SURF ID='supply', MASS_FLUX_TOTAL=-1.2 /

supplies air to the domain at a mass flow rate of 1.2 kg/s. The MASS_FLUX_TOTAL is converted internally into a velocity boundary condition whose value for an outflow is adjusted based on the local density.

The line:

 &SURF ID='louver', VEL=-1.2, VEL_T=0.5,-0.3 /

represents a boundary condition for a louvered vent that pushes air into the space with a normal velocity of 1.2 m/s and a tangential velocity of 0.5 m/s in either the x or y direction and -0.3 m/s in either the y or z direction, depending on what the normal direction is.

In cases of limited mesh resolution, it may not be possible to describe a louvered vent or slot diffuser using VEL_T because there may not be enough mesh cells spanning the opening. In these cases, you might consider simply specifying a flat plate obstruction in front of the VENT with an offset of one mesh cell. The plate will simply redirect the air flow in all lateral directions.

Note that either VEL, VOLUME_FLUX, or MASS_FLUX_TOTAL should be prescribed, not both. The choice depends on whether an exact velocity is desired at a given vent, or whether the given volume flux or mass flux is desired.

The sign convention convention is that positive volume or mass flux is drawn out of the domain.

Fans injecting extra gas species[edit | edit source]

There are two species boundary conditions that can be specified: MASS_FLUX(n) and MASS_FRACTION(n) where n refers to a given specie SPEC via its place in the input file.

If the mass fraction of the n specie is to be some value at a forced flow boundary (VEL or MASS_FLUX_TOTAL) set MASS_FRACTION(n) equal to the desired mass fraction on the appropriate SURF line.

If the mass flux of the n specie is desired, set MASS_FLUX(n) instead of MASS_FRACTION(n). If MASS_FLUX(n) is set, no VEL should be set. It is automatically calculated based on the mass flux.

The inputs MASS_FLUX(n) and MASS_FRACTION(n) should only be used for inflow boundary conditions. MASS_FLUX(n) should always be positive with units of kg/m2/s.

For example, the lines:

 &SPEC ID='ARGON', MASS_FRACTION_0=0.1 / 
 &SPEC ID='HELIUM' / 
 &SURF ID='inlet', MASS_FRACTION(2)=0.2, VEL=-0.3 /

specify that ARGON and HELIUM are to be included in the calculation in addition to the unlisted default AIR. At the inlet, a mixture of helium (20% by mass), argon (10% by mass because nothing different is specified), and air (70% by mass making up the rest) flows out at a velocity of 0.3 m/s into the flow domain.

Dynamic pressure at an open boundary[edit | edit source]

In some situations, it is more convenient to specify a dynamic pressure, rather than a velocity, at a boundary.

Suppose that you are modeling the interior of a tunnel, and a wind is blowing at one of the portals that affects the overall flow within the tunnel. If (and only if) the portal is defined using an OPEN vent, then the dynamic pressure at the boundary can be specified like this:

 &VENT XB=0.,0.,0.,4.,0.,3., SURF_ID='OPEN',
     DYNAMIC_PRESSURE=2.4 /

A dynamic pressure of 2.4 Pa is applied to the specified face. See Section [sec:VENT] for a description of the VENT namelist group.

Prescribing a heat release rate[edit | edit source]

Solids and liquid fuels can be modeled by specifying their relevant properties via the MATL namelist group. However, if you simply want to specify a fire of a given Heat Release Rate (HRR)Heat Release Rate (HRR), you need not specify any material properties. A specified fire is basically modeled as the ejection of gaseous fuel from a solid surface or vent. This is essentially a burner, with a specified heat release rate per unit area, HRRPUA, in units of kW/m2. For example, the line:

 &SURF ID='burner', HRRPUA=500. /

defines a surface that injects a flow of fuel gas that, when properly mixed with ambient air, burns and produces 500 kW per m2 of emitting surface.

An alternative to HRRPUA with the exact same functionality is MLRPUA, except this parameter specifies the mass loss rate of fuel gas per unit area in kg/m2/s. Do not specify both HRRPUA and MLRPUA on the same SURF line.

For example:

 &SURF ID='burner', MRLPUA=5. /

specifies the a mass loss rate of fuel gas per unit area of 5 kg/m2/s.

By specifying HRRPUA or MRLPUA, you are controlling the burning rate rather than letting the material pyrolyze based on the conditions of the surrounding environment.

Geometric conformity and rates[edit | edit source]

Be aware that, whenever geometric objects are transformed to become conform to the underlying mesh, their face areas can change. FDS adjusts the value of HRRPUA, MRLPUA, and of other mass fluxes to guarantee the user prescribed rates.

Boundary conditions for solids[edit | edit source]

The thermal and burning properties of each material are specified via the MATL namelist group. Then materials are invoked by the SURF namelist group to define boundary conditions for solids.

FDS performs a one-dimensional heat transfer calculation at each surface of the solid to provide a reasonable bounding surface temperature for the gas phase calculation.

A solid boundary can consist of one or multiple layers of different materials, and each layer can consist of multiple material components.

These combinations of layers and material components are specified on the SURF line via the array parameter called MATL_ID(i,j). The argument i is an integer indicating the layer index, starting at 1, the layer at the exterior boundary. The argument j is an integer indicating the component index. MATL_ID(2,3)='brick' indicates that the third material component of the second layer is brick.

The components of the solid mixtures are treated as pure substances with no voids.

The following is an example of a multi-layer, multi-component surface:

 &MATL ID='water', CONDUCTIVITY=0.60, SPECIFIC_HEAT=4.19,
     DENSITY=1000. / material
 &MATL ID='brick', CONDUCTIVITY=0.69, SPECIFIC_HEAT=0.84,
     DENSITY=1600. / material
 &MATL ID='insulator', CONDUCTIVITY=0.041, SPECIFIC_HEAT=2.09,
     DENSITY=229. / material
 &SURF ID='brick wall', MATL_ID(1,1:2)='brick','water',
     MATL_MASS_FRACTION(1,1:2) = 0.95,0.05,
     MATL_ID(2,1)='insulator',
     THICKNESS(1:2)=0.1,0.2 / boundary condition

First, materials are defined, then a boundary condition brick wall is prescribed.

In brick wall surface (see Figure [fig:brick-wall]), the first layer is composed of a mixture of brick and water. This is given by the MATL_ID array which specifies component 1 of layer 1 to be of brick material, and component 2 of layer 1 to be of water material. The mass fraction of each is specified via MATL_MASS_FRACTION: brick is 95% by mass and water is 5%. The first layer is 0.1 m thick.

The innermost layer is made of one only component, insulator, and is 0.2 m thick.

Solid surface

Backing[edit | edit source]

The heat transfer condition of the innermost layer of a wall is set using the BACKING parameter. This parameter can be set to VOID, INSULATED, or EXPOSED.

For VOID example:

 &SURF ID='double_layer', MATL_ID(1:2,1)='plastic','steel',
     THICKNESS(1:2)=0.1,0.2, BACKING='VOID', TMP_BACK=30. /

defines a two layers surface. The external layer is made of one only component, plastic, and is 0.1 m thick. The innermost layer is made of one only component, steel, and is 0.2 m thick. The innermost layer backs up to an air gap. The air gap is at a TMP_BACK temperature of 30 °C. If TMP_BACK is not set, the air gap defaults to ambient temperature. BACKING='VOID' can be safely omitted as it is the default value.

A second INSULATED example:

 &SURF ID='double_layer', MATL_ID(1:2,1)='plastic','steel',
     THICKNESS(1:2)=0.1,0.2, BACKING='INSULATED' /

defines the same two layers surface. In this second case, the innermost layer backs up to an insulating (adiabatic) material, so that no heat is lost to the backing material.

As EXPOSED a last example:

 &SURF ID='double_layer', MATL_ID(1:2,1)='plastic','steel',
     THICKNESS(1:2)=0.1,0.2, BACKING='EXPOSED' /

defines the same two layers surface. In this third case, the innermost layer backs up to the room on the other side of the wall. EXPOSED only works if the wall is less than or equal to one mesh cell thick, and if there is a non-zero volume of computational domain on the other side of the wall. FDS calculates the heat conduction through the entire THICKNESS and uses the gas phase temperature and heat flux on the front and back sides for boundary conditions.

A redundant calculation is performed on the opposite side of the obstruction, so be careful how you specify multiple layers: if the layering is symmetric, the same SURF line can be applied to both sides; however, if the layering is not symmetric, you must create two separate SURF lines and apply one to each side.

For example, a asymmetric layered hollow box column that is made of steel and covered on the outside by a layer of insulation material and a layer of plastic on top of the insulation material, would have to be described with two SURF lines like the following:

 &SURF ID='column exterior', BACKING='EXPOSED',
     MATL_ID(1:3,1)='plastic','insulation','steel',
     THICKNESS(1:3)=0.002,0.036,0.0063 /
 &SURF ID='column interior', BACKING='EXPOSED',
     MATL_ID(1:3,1)='steel','insulation','plastic',
     THICKNESS(1:3)=0.0063,0.036,0.002 /

Setting an initial temperature[edit | edit source]

A solid obstruction can be given an initial temperature via the parameter TMP_INNER on the SURF line:

 &SURF ID='stuff', MATL_ID='steel', THICKNESS=.1, TMP_INNER=30. /

the initial temperature shall be 30 °C within the concerned face, instead of the ambient.

Time dependent boundary conditions[edit | edit source]

When solid obstacles are activated (See Section [sec:Activating-and-deactivating-objs]), the prescribed boundary conditions for their faces begin to come into effect.

After activation, temperatures, velocities, burning rates, etc., are ramped-up from their initial values to their prescribed values in roughly 1 s, because nothing can happen instantaneously.

This default 1 s ramp can be modified by the user: many SURF parameters can become time dependent and follow a different trend after the activation instant.

Simplified ramps[edit | edit source]

The parameters TAU_Q, TAU_T, TAU_V, TAU_MF(n) indicate that the heat release rate (HRRPUA), surface temperature (TMP_FRONT), normal velocity (VEL, VOLUME_FLUX) or MASS_FLUX_TOTAL, mass fraction or mass flux of specie n are to ramp up to their prescribed values in TAU_* seconds after SURF activation and remain there.

If TAU_* is positive, then the related quantity ramps up like tanh(t/τ). If negative, then it ramps up like (t/τ2). As stated before, the default value for all TAU_* is 1 s.

For example, this line:

 &SURF ID='burner', HRRPUA=4000., TAU_Q=-120 /

specifies a boundary condition for a burner that activates when the calculation starts at t=0 s, ramps up like HRRPUA=4000~(t/120)2 while t<120 s and remains at 4000 kW/m2 after 120 s, as shown in Figure [fig:HRRPUA-as-function].

Graph

User defined ramps[edit | edit source]

If something other than a tanh or t2 ramp up is desired, then a user-defined function must be input. To do this, set RAMP_Q, RAMP_T, RAMP_V or RAMP_MF(n) equal to a character string designating the ramp function to use for that particular surface type, then somewhere in the input file generate lines of the form:

 &RAMP ID='rampname1', T= 0.0, F=0.0 / 
 &RAMP ID='rampname1', T= 5.0, F=0.5 /
 &RAMP ID='rampname1', T=10.0, F=0.7 /

For this kind of ramp, T is the time passed from activation, and F indicates the fraction of the heat release rate, wall temperature, velocity, mass fraction, etc., to apply. Linear interpolation is used to fill in intermediate time points.

Note that each set of RAMP lines must be listed with monotonically increasing T.

For example, a simple blowing fan can be controlled via the lines:

 &SURF ID='blower', VEL=-2., TMP_FRONT=50.,
     RAMP_V='blower_v', RAMP_T='blower_t' /
 &RAMP ID='blower_v', T=20.0, F=1.0 /
 &RAMP ID='blower_v', T=30.0, F=0.5 /
 &RAMP ID='blower_v', T=60.0, F=0. / 
 &RAMP ID='blower_t', T=40.0, F=1.0 /
 &RAMP ID='blower_t', T=50.0, F=1.5 / 
 &RAMP ID='blower_t', T=60.0, F=0.5 /

that produce the time trend shown in Figure [fig:VEL-and-TMP_FRONT] for SURF parameters.

Velocity temperature front graph

The following table summarizes some RAMP (time) parameters:

Parameter Type Description Unit Default
ID String Identifier
T Real Time s
F Real Function value

Injecting Lagrangian particles[edit | edit source]

Lagrangian particles can be introduced into the fluid flow from a solid surface via boundary conditions.

For example, the following line defines a type of Lagrangian particles:

 &PART ID='my tracer', MASSLESS=.TRUE. /

These Lagrangian particles are then introduced into the fluid flow from a solid surface that has the following boundary condition prescribed:

 &SURF PART_ID='my tracer' /

Note that a surface on which particles are specified must have a non-zero normal velocity directed into the computational domain. This happens automatically if the surface is burning, hence injecting fuel gas into the flow domain, but must be specified if it is not.