Skip to content

The idea behind BlenderFDS

Ruggero edited this page Nov 27, 2019 · 1 revision

Let's start by comparing the geometric-data structures used by Blender and FDS for describing the 3D space, its physical objects, and their properties.

Blender 3D space:
a collection of data-blocks

Each Blender file (.blend) contains a database of geometric features. This database describes all the Scene, Object, Mesh, Material data-blocks, that are shown in Blender user interface.

A Blender Scene represents the 3D space where the collection of Object data-blocks is placed.

A Blender Object is a 3D entity: its shape is built from the related Mesh geometry, its aspect (eg. colour, transparency, ...) depends on the referenced Material appearance. Its properties are manipulated in Blender Object Mode.

A .blend file can provide multiple Scene data-blocks, i.e. different 3D spaces populated by Object data-blocks.

The user can easily inspect the file contents and the relationship between data-blocks by using the Outliner editor in Blender interface, which displays all of the data-blocks in the .blend file.

The Outliner allows the user to do simple operations on data-blocks, such as selecting, renaming, deleting, linking and parenting. Data-blocks can link to each other, for reuse and instancing. For example, two Object data-blocks can share the same Mesh shape or Material appearance, and the same Object can exist in different Scene data-blocks.

ℹ️ For example, if you have a car Mesh, you can use that car Mesh for various different cars Objects in a parking lot Scene. If you modify the original car Mesh, then all the linked cars of the parking lot inherit that modification.

A Blender Mesh is a collection of faces, edges, and vertices which can be modeled and manipulated in Blender Edit Mode.

A vertex is a 3-dimensional coordinate, representing a point in space. An edge is a straight, wire-like line representing the boundary of 2 adjacent vertices. A face is a planar connection of edges representing a boundary, field, or solid surface. Faces are always flat and edges are always straight. An edge is formed by the intersection of 2 faces. Vertices are formed by the intersection of 3 or more faces (eg. a cube is represented by 6 faces, 12 edges and 8 vertices).

FDS 3D space:
a long list of namelist groups

FDS input is a single text file. Input data is specified by namelist groups:

Namelist groups are used to describe every aspect of the fire simulation: simulation name, duration, computational domain, geometry, boundary conditions, materials, output quantities, control logic...

Many namelist groups extend their action in the computational space to volumes, faces, segments, points, or planes. We call those groups geometric namelists.

The simulated 3D space geometric description is entered line by line by geometric namelist groups having XB, XYZ, PBX, PBY, PBZ parameters.

In FDS 3D space, a face is represented by a right plane face with edges parallel to the axis. Its position and dimensions are described by the coordinates of two opposite vertices, that must lie on the same plane.

ℹ️ For example:

&VENT XB=0.5,1.1,2.0,3.1,-2.0,-2.0, SURF_ID='fire' /

uses the parameter XB to define a flat face perpendicular to the z axis imposing a particular boundary condition over a solid. Two of the six coordinates are the same, denoting a flat face as opposed to a solid.

In FDS 3D space, a segment is bounded by two end points. If point A=(xA, yA, zA) and point B=(xB, yB, zB) are the end points, its coordinates are entered following the same convention valid for volumes.

ℹ️ For example,

&DEVC XB=0.5,1.5,2.0,3.5,-2.0,0., QUANTITY='PATH OBSCURATION', ID='beam1', SETPOINT=0.33 /

is a beam smoke detector between (0.5,2.0,-2.0) and (1.5,3.5,0.) end points.

In FDS 3D space, a point is simply identified by its 3 coordinates.

ℹ️ For example, the line:

&DEVC XYZ=2.,3.,4., QUANTITY='THERMOCOUPLE', ID='termo1' /

uses the parameter XYZ to insert a thermocouple at the point of coordinates (2.,3.,4.).

In FDS 3D space, a plane is represented by a right plane perpendicular to one of the reference axis.

ℹ️ For example, these lines:

&SLCF PBX=0.5, QUANTITY='TEMPERATURE' /

is a plane perpendicular to the x axis and intersecting its point (.5,0.,0.).

&SLCF PBY=1.5, QUANTITY='TEMPERATURE' /

is a plane perpendicular to the y axis and intersecting its point (0.,1.5,0.).

&SLCF PBZ=-.5, QUANTITY='TEMPERATURE' /

is a plane perpendicular to the z axis and intersecting its point (0.,0.,-.5).

All these namelists use the parameters PBX, PBY, PBZ to specify the coordinate in the direction of the perpendicular axis.

BlenderFDS transforms Blender data-blocks
to FDS namelist groups

The following table explains how BlenderFDS translates Blender 3d space and entities into corresponding FDS entities.

Blender FDS
Each file One or more FDS cases (.fds files)
Each Scene One FDS case, specified by general namelists as HEAD, TIME, MISC, DUMP, REAC, ...
Each Object Depending on the complexity of the Object, one or more geometric namelist groups (eg. OBST, DEVC, VENT, HOLE, SLCF, ...)
Each Material One SURF namelist group, specifing a boundary condition of the fluid domain

Each Blender Scene is exported to an .fds input file. In this way, a single Blender file can contain several simulated FDS scenarios, one for each of its Scene data-blocks.

ℹ️ For example, one .blend file can contain several design scenarios of the same parking lot. Cars and walls Object data-blocks are linked to several Scene data-blocks. The geometry and the thermo-physical parameters of cars and walls are shared between all Scene data-blocks, but the position of the cars can be varied according to the various simulated scenarios.

When exporting to an FDS case, each Blender Object is transformed to one or more FDS namelist groups. The exported namelist groups will extend their action to the geometry described by the related Blender Mesh. The boundary condition SURF is created from the related Blender Material.

A quick example

Let's imagine a simple one floor building.

The wall geometry is modeled in a Blender Object named Wall. The user assigns an OBST FDS namelist and its parameters to the Wall Object.

Then a Blender Material named Gypsum wall is linked to the Wall Object. The SURF namelist is automatically assigned to it. The user sets its FDS parameters.

That Wall Object is exported to many OBST namelist groups that describe the round geometry of the wall. The entered FDS parameters are appended to the generated namelists.

The Gypsum wall Material is exported as an FDS SURF namelist containing all its FDS parameters.

An excerpt of the exported FDS case follows:

&SURF ID='Gypsum wall',
      RGB=204,199,56,
      MATL_ID='Gypsum plaster',
      THICKNESS=0.03
      /

&OBST ID='Wall_0',
      XB=-1.575,-1.375,-1.375,-0.475,-0.025,1.975,
      SURF_ID='Gypsum wall'
      /
&OBST ID='Wall_1',
      XB=-1.575,-1.375,-1.375,1.375,1.975,3.025,
      SURF_ID='Gypsum wall'
      /
&OBST ID='Wall_2',
      XB=-1.575,-1.375,0.475,1.375,-0.025,1.975,
      SURF_ID='Gypsum wall'
      /
...

After generation of the FDS file (.fds), the user launches the FDS calculation on the command line, and visualizes the results in Smokeview.

The generated geometry appears in Smokeview as follows: