-
Notifications
You must be signed in to change notification settings - Fork 0
Complex geometries
ℹ️ Updated to BFDS 7.0.x
This wiki page explains how to generate the new FDS complex geometries with the GEOM namelist.
- The
GEOMnamelist - What is a manifold?
- The
GEOMproperty panel - The
GEOMtool sidebar - The remeshing panel
Recent FDS versions propose an additional geometric namelist named GEOM.
This namelist extends the traditional OBST box-shaped obstacle to a free-shaped
obstacle in the fluid domain, represented by a manifold triangulated surface.
The simpler GEOM namelist requires specific geometric parameters:
-
VERTSfor defining the vertices which compose the triangulated surface, - and
FACESfor its face connectivity.
There is also an alternative, more coincise formulation of the GEOM namelist
that expresses that same geometric features in an external .bingeom binary file,
linked by the BINGEOM_FILE parameter.
Here are examples of both types:
&GEOM ID='Example' SURF_ID='S1','S2',...
VERTS=-1.0,1.0,-1.0,... FACES=1,2,1,1,...
/&GEOM ID='Example' SURF_ID='S1','S2',...
BINGEOM_FILE='~/example.bingeom'
/BFDS imports both formats, but exports only the more compact bingeom format.
For a complete description of the
GEOMnamelist, see the relevant chapter of the FDS User's Guide
As already said, the shape of a Blender Object is made of vertices, edges, and faces.

It is exactly the same representation used by the GEOM namelist in FDS.
So BFDS can translate the shapes of the objects to the FDS counterparts as they are,
avoiding any approximation process.
A closed, oriented, 2-manifold triangulated surface is a surface built out of triangles that satisfies the rules of a 2D manifold:
- locally 2D: around every point on the surface, the neighborhood looks like a disk or, at edges, a half-disk;
- oriented: the surface has a well-defined inside and outside, defined by consistent face normal vectors;
- closed: the surface has no boundary, as every edge belongs to exactly two triangles, so that it forms a sealed shell.
The manifold property ensures there are no cracks, dangling faces, or non-physical overlaps. In short, it is a watertight, consistent boundary that properly defines the inside of a solid.
The FDS User's Guide contains a detailed description of the problem.
The GEOM panel in the Properties editor proposes several settings.
First of all, as explained, FDS has strict requirements on the quality of the triangulated surface of GEOM namelists.
When representing a solid obstacle in space, the surface shall be manifold.
So BFDS performs a series of automatic sanity checks while exporting.
If these checks become too intrusive for your use case,
you can disable them entirely with the Check Sanity While Exporting toggle.
You can optionally set the filename and the path of the .bingeom file that is going to be created upon export.
The default filename is taken from the name of the Blender Mesh, that describes the shape
of the active Blender Object.

The IS_TERRAIN and EXTEND_TERRAIN toggles are used when the GEOM namelist
represents vast terrains for wildfire or smoke dispersion of fire pollutants simulations
Look at the FDS documentation for advice on application.
Remember also that there is another companion tool for terrains. The qgis2fds tool is an open QGIS plugin that exports terrains and landuse from geographical data for wildfire simulation and atmospheric dispersion of fire pollutants. The FDS file generated by qgis2fds can be imported to BFDS for further customization.

As you already know, the Blender Object data-block acts as a local reference system
and contains the item location, rotation, and scale.
The item shape shape is described by a linked Blender Mesh data-block,
a collection of connected vertices, edges, and faces.
If the Blender Mesh data-block is shared between several Object instances,
those instances share the same shape,
as for example several identical chairs around a table.
When BFDS exports GEOM objects that share the same Blender Mesh data-block,
the generated .bingeom file is shared between the generated GEOM namelists.
A MOVE namelist is coupled to each GEOM line to take care of the different
positions, rotations, and scales of each entity.
In the following example, the four green Chair.00* objects share the same Blender Mesh datablock,
named Chair shape, as you see in the Outliner editor:

BFDS exports the case like this:
Vertices: 108 | Faces: 204 | Shared BINARY_FILE
&GEOM ID='Chair.001' SURF_ID='Plastic','Wood','Steel'
BINARY_FILE='Chair shape.bingeom' MOVE_ID='Chair.001_move' /
&MOVE ID='Chair.001_move' T34=1.000000,0.000000,0.000000,0.000000,1.000000,
0.000000,0.000000,0.000000,1.000000,0.000000,-1.484168,0.000000 /
Vertices: 108 | Faces: 204 | Shared BINARY_FILE
&GEOM ID='Chair.002' SURF_ID='Plastic','Wood','Steel'
BINARY_FILE='Chair shape.bingeom' MOVE_ID='Chair.002_move' /
&MOVE ID='Chair.002_move' T34=-0.000000,1.000000,0.000000,-1.000000,-0.000000,
0.000000,0.000000,0.000000,1.000000,1.508012,0.053704,0.000000 /
Vertices: 108 | Faces: 204 | Shared BINARY_FILE
&GEOM ID='Chair.003' SURF_ID='Plastic','Wood','Steel'
BINARY_FILE='Chair shape.bingeom' MOVE_ID='Chair.003_move' /
&MOVE ID='Chair.003_move' T34=0.000000,-1.000000,0.000000,1.000000,0.000000,
0.000000,0.000000,0.000000,1.000000,-1.513828,0.053704,0.000000 /
Vertices: 108 | Faces: 204 | Shared BINARY_FILE
&GEOM ID='Chair.004' SURF_ID='Plastic','Wood','Steel'
BINARY_FILE='Chair shape.bingeom' MOVE_ID='Chair.004_move' /
&MOVE ID='Chair.004_move' T34=-1.000000,-0.000000,0.000000,0.000000,-1.000000,
0.000000,0.000000,0.000000,1.000000,0.000000,1.493523,0.000000 /
Vertices: 96 | Faces: 180
&GEOM ID='Table' SURF_ID='Wood' BINARY_FILE='Table shape.bingeom' /Also in the FDS case, the four green Chair.00* GEOM namelists share
the same Chair shape.bingeom shape.
Each linked MOVE line sets the right chair position and orientation.
The GEOM sidebar offers several tools for checking and fixing the triangulated surfaces,
before exporting them to FDS.
When the 3D Viewport editor is in Object Mode:
-
if you click on the
Check Sanitybutton, BFDS checks that the selected object triangulated surface is manifold. -
clicking on the
Check Intersectionsbutton, you verify the existance of intersections between the current active object and all the other selected objects; -
if you untoggle the
Protect Originalsetting, when checking geometry sanity or intersections BFDS selects the offending elements in the3D Viewportafter changing the editor mode toEdit Mode. Note that in this case the checked geometry has to be triangulated, thus modified from the original state.

When the 3D Viewport editor is in Edit Mode, a Clean Up panel is shown,
where selection tools
and cleanup tools are offered.

For the difference between active and selected objects, see this page.
Remeshing is a technique that automatically rebuilds the geometry with a more uniform topology, and is often used to fix bad geometries by generating a new manifold mesh from the current geometry. It produces a mesh with perfectly even distributed topology.
The BFDS Remesh panel is a convenience copy of the same panel used in Blender in Sculpting Mode.
Read its documentation here.
See also the Blender Remesh Modifier for a different approach to the same technique,
here is its documentation.
