Domain - firetools/blenderfds GitHub Wiki
:information_source: Updated to BlenderFDS 6.0.x
This wiki page explains how to set and manage the FDS computational domain in BlenderFDS for serial and parallel runs.
- Define your computational domain
- Configure a
MESH - Set the cell size
- Split a
MESH - Multiply a
MESH - Multiply and split combined
- Align
MESHinstances - Parallel calculations
Define your computational domain
All FDS calculations must be performed within a domain that is made up
of rectilinear volumes. Each volume is divided into rectangular cells,
the number of which depends on the desired resolution
of the flow dynamics.
MESH is the namelist group that defines the computational domain of your FDS case.
The computational domain can consist of more than one computational MESH,
usually connected, although this is not required.
The order in which these MESH lines are entered in the input file matters.
Furthermore, to run FDS in parallel, you must break up the computational
domain into multiple MESH volumes so that the workload can
be divided among the processes.
See the FDS documentation for further details.
Configure a MESH
As it happens for the other namelists, the configuration of the MESH namelist is done
from the related Properties panel.

For example, the Blender Object named Domain configured
as in the above picture is exported like this:
--- Computational domain | MPI Processes: 1 | MESH Qty: 1 | Cell Qty: 12000
-- MPI Process: <0> | MESH Qty: 1 | Cell Qty: 12000
Cell Qty: 12000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain' IJK=30,20,20 XB=-2.000,4.000,-2.000,2.000,0.000,3.000
MPI_PROCESS=0 /

Set the cell size
The MESH is subdivided into uniform cells via the parameter IJK.
In the previous example, that MESH is divided into 12000 cells.
BlenderFDS shows some diagnostic information on the MESH namelist:
the total cell quantities, the cell size, the aspect of the cell,
and the respect of the Poisson constraint for IJK values.
The information is also saved to your FDS case when exporting.
It is best if the cells resemble cubes; that is, the length, width and height of the cells ought to be roughly the same. The aspect is the maximum ratio between cell sizes, ans should never be larger than 2.
The sidebar panel for MESH namelists offers two operators for setting
the cell sizes. The first one assists the user in setting the cell size
according to the hypothesis and calculations of the
NUREG 1824.
The results are saved to the Free Text, too, for your reference.
The second one helps you translating the desired cell size to the
IJK values that are closer to your choice.

Split a MESH
The MESH properties panel also allows splitting the MESH along the axis,
duly conserving the cell size you previously set, and evenly dividing the cells.
If the number of cells along the splitted axis cannot be exactly divided (eg. 10 cells splitted in 3 distinct parts),
BlenderFDS distributes the remaining cells between the splits.

For example, the Blender Object named Domain configured
as in the above picture is exported like this:
--- Computational domain | MPI Processes: 1 | MESH Qty: 3 | Cell Qty: 12000
-- MPI Process: <0> | MESH Qty: 3 | Cell Qty: 12000
Cell Qty: 4000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain_s0' IJK=10,20,20 XB=-2.000,0.000,-2.000,2.000,0.000,3.000
MPI_PROCESS=0 /
Cell Qty: 4000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain_s1' IJK=10,20,20 XB=0.000,2.000,-2.000,2.000,0.000,3.000
MPI_PROCESS=0 /
Cell Qty: 4000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain_s2' IJK=10,20,20 XB=2.000,4.000,-2.000,2.000,0.000,3.000
MPI_PROCESS=0 /

Multiply a MESH
A MULT namelist panel is proposed at the bottom side of the MESH panel.
When toggled, this panel builds an array of MESH namelists in a regular pattern.
BlenderFDS uses the same exact parameters and logic as the FDS MULT namelist.
See the relevant chapter of the FDS User's Guide for the details.

For example, the Blender Object named Domain configured
as in the above picture is exported like this:
--- Computational domain | MPI Processes: 1 | MESH Qty: 6 | Cell Qty: 72000
-- MPI Process: <0> | MESH Qty: 6 | Cell Qty: 72000
Cell Qty: 12000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain_i0_j0_k0' IJK=30,20,20 XB=-2.000,4.000,-2.000,2.000,0.000,3.000
MPI_PROCESS=0 /
Cell Qty: 12000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain_i0_j0_k1' IJK=30,20,20 XB=-2.000,4.000,-2.000,2.000,3.000,6.000
MPI_PROCESS=0 /
Cell Qty: 12000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain_i0_j1_k0' IJK=30,20,20 XB=-2.000,4.000,2.000,6.000,0.000,3.000
MPI_PROCESS=0 /
Cell Qty: 12000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain_i0_j1_k1' IJK=30,20,20 XB=-2.000,4.000,2.000,6.000,3.000,6.000
MPI_PROCESS=0 /
Cell Qty: 12000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain_i0_j2_k0' IJK=30,20,20 XB=-2.000,4.000,6.000,10.000,0.000,3.000
MPI_PROCESS=0 /
Cell Qty: 12000 | Size: 0.200·0.200·0.150m | Aspect: 1.3 | Poisson: Yes
&MESH ID='Domain_i0_j2_k1' IJK=30,20,20 XB=-2.000,4.000,6.000,10.000,3.000,6.000
MPI_PROCESS=0 /

Note that BlenderFDS does not insert an explicit
MULTnamelist, because having the full list of generatedMESHinstances in the FDS case allows assigning eachMESHnamelist to a specificMPI_PROCESSfor well balanced parallel calculations. See later on on this page for a discussion on the topic.
Multiply and split combined
Of course, you can combine both splitting and multipling to obtain an array of splitted MESH instances.

Align MESH instances
FDS enforces strict rules on MESH instances alignment.
In the following example, you see a fine and a coarse MESH sharing a border.
The fine cells of the same MESH should always completely cover each coarse one.

The MESH instances generated by BlenderFDS by splitting or multipling
the same Blender Object are always correctly aligned.
But if you need to align MESH namelists generated from different Objects,
BlenderFDS offers an Align To operator in the sidebar,
that aligns the currently selected MESH to a reference one,
by moving and resizing the selected MESH and updating its cell size, when needed.
The alignment is performed only if they share common borders or the border is at snapping distance.
The current FDS constraints make the alignment not always possible.
The operator tries to conserve as much as possible the overall size
and the cell size of the reference MESH, too, but you can choose to
allow updating those sizes, too.

If you would like to have FDS check the alignment without running the full case, set the parameter
CHECK_MESH_ALIGNMENT=Tto anyMESHline. If the job stops with no errors, the meshes obey the alignment rules. This check can sometimes take a few tens of seconds, but you can open Smokeview after launching the job to check the alignment by eye.
Parallel calculations
If you switch on the MPI_PROCESS parameter in the FDS Case Config panel
and set the number of processes you wish to dedicate to the FDS run,
all the MESH lines of your FDS cases will have the MPI_PROCESS number assigned.

BlenderFDS tries to evenly distribute the load between the MPI processes, as much as possible.
By using a simple first-fit bin pack algorithm
the MESH lines are assigned to the available MPI processes, according to their cell quantity.
The following picture shows an example of the algorithm sorting the MESH instances
by cell quantity (colored boxes) and evenly distributing them on the 4 processes.

In the same
FDS Case Configpanel you can also setup the number ofOpenMP Threads, that are going to be used when performing FDS computations from BlenderFDS, as described in the Run FDS wiki page.