Calculation Area

Reading time


The Calculation Area tool allows you to define the area where fire dynamics simulation is necessary.

Configuring the Calculation Area

The computational domain is the space within which calculations will be performed, defined by the combined specified Calculation Areas.

The sizes of cells within the Calculation Areas can be calculated using the following formula:

{width=30%}

Configuring the BaseSize Parameter

The Calculation Area is transferred to the FDS file through the MESH parameter group and the VENT parameter group if the Calculation Area has “open” facets. In simple scenarios, the relation between the Calculation Area and the Grid is straightforward. However, generally, the correspondence is only approximate; for example, one Calculation Area may create several MESH groups in the FDS input file, or alternatively, several Calculation Areas may combine into a single MESH group.

Below is an example of a MESH group:

&MESH IJK = 36, 24, 12 XB = -1, 8, 1, 7, -0.1, 3 MPI_PROCESS=0/

Here, the XB parameter specifies the coordinates of the rectangular parallelepiped defining the Calculation Area in FDS. The IJK parameter determines the number of cells along each axis of the coordinate system into which the area is divided. In the example provided, the Calculation Area extends from -1 m to 8 m along the X-axis and is divided into 36 cells along this axis, making the cell size along the X-axis 0.25 m.

The MPI_PROCESS parameter within the MESH group specifies the MPI process number in which the calculations for this group is performed. It is only relevant when your hardware supports multi-threaded computation, and the number of processes remains within the limits set in the Fire Simulation Parameters.

Setting the Number of Processes

By default, the outer facets of the Calculation Area in FDS are considered “closed,” meaning they are impervious to air and fire-related hazards. In the properties of the Calculation Area you can specify which facets are “open.” Air, smoke, and thermal radiation can freely exit the Calculation Area through these “open” facets. For “open” facets, the FDS file includes code like the following:

&VENT XB=1, 1, 1, 7, 0, 3 SURF_ID='OPEN'/

Here, the XB parameter defines the coordinates of the facet that needs to be “open”. One pair of coordinates must be identical as the facet is flat. The SURF_ID parameter, set to ‘OPEN’, indicates that the facet is covered with a surface possessing open space properties.

If there are multiple Calculation Areas in contact with each other on the scene, it doesn’t matter if their boundaries are closed or open where they meet. Fire hazards will propagate freely at these contact points.

Calculation Area Dimensions and Cell Size

The length and width of the Calculation Area are determined by the user when placing the area on the scene. The height of the Calculation Area is defined by elements located on the floor. They are considered in the fire simulation (the Ignore During Fire setting is disabled), and their outlines are within or intersect with the contour of the Calculation Area, ensuring all elements are fully enclosed.

The height of the Calculation Area cannot be less than the height of the floor on which it is located.

In Fenix+ 3, the cell dimensions along the X and Y axes are always identical and equal to the size specified during the creation of the Calculation Area. The number of cells along the X and Y axes is calculated by dividing the dimensions of the Calculation Area by the cell size.

The number of cells along the Z axis is determined as follows. The height of the Calculation Area is divided by the horizontal cell dimension. The resulting number is approximated to the nearest whole number and represents the quantity of vertical cells.

Placement of Multiple Calculation Areas

You can place multiple Calculation Areas on the same floor. These areas may vary in dimensions and other parameters, such as cell size and the state of open facets. The arrangement of Calculation Areas relative to each other can be arbitrary; they can intersect, touch, or be completely separate from one another.

FDS imposes numerous requirements on MESH groups and their mutual arrangement.

MESH Alignment{width=60%}

Conversion of Calculation Areas

By default, Fenix+ 3 converts Calculation Areas into MESH groups in a way that meets all FDS requirements, provided the Automatically Adjust Calculation Areas check box is selected.

Automatically Adjust Calculation Areas

The conversion of Calculation Areas to Meshes consists of the following main stages:

  1. Merging. All Calculation Areas with the same cell size are merged into larger areas, where possible. During this process:
  • Intersections of Calculation Areas are eliminated. If areas with different cell sizes intersect, the intersection within the area with larger cells is removed from the area with smaller cells, and the remainder is divided into several rectangular areas.
  • Calculation areas are expanded in directions where the number of cells is less than three.
  1. Splitting. If the number of threads the user intends to use for simulation exceeds the number of areas obtained in the first stage, those with the most cells are split in half in the direction with the most cells. Splitting stops if:
  • The number of existing Calculation Areas equals or exceeds the desired number of threads.
  • The boundaries of the Calculation Areas resulting from splitting the largest area are obtained with any VENT groups in the FDS input file (where fire sources or smoke dampers are located).
  • No more MESHes are available to split.

After this stage, the Calculation Areas obtained fully correspond to the meshes in the FDS input file. Since splitting can be interrupted, the number of meshes might be less than the desired number of threads.

  1. Balancing. Each resulting mesh is assigned an MPI process that will manage its computations. This is done by:
  • Selecting the largest mesh that has not yet been assigned an MPI process.
  • Choosing an MPI process that has the smallest total volume of meshes already assigned to it.
  • Assigning the selected mesh to the chosen MPI process.

If the Transfer Calculation Areas Unchanged parameter is used, the first stage (merging into larger areas) does not occur. Only the second and third stages are executed if needed.

In this scenario, the resulting MESH groups exactly match the original locations of the Calculation Areas. Here, the height of the Calculation Areas is considered equal to the floor height where they are located.

Adjustment of Calculation Area Dimensions Along the Z-Axis

When multiple Calculation Areas are placed on a scene, their dimensions and locations may need to be aligned along the Z-axis. This adjustment is necessary only if the placement and cell sizes of the Calculation Areas can result in an invalid configuration of MESH groups in the FDS input file.

Alignment along the Z-axis is not required if the cell dimensions along the Z-axis of two intersecting Calculation Areas are multiples of each other and an integer number of cells fits within the three areas (A, B, C) shown in the picture.

MESH Groups Correctly Aligned Along Z Axis{width=60%}

If this condition is not met, the height of both Calculation Areas is increased to a multiple of the BaseSize parameter, and the vertical cell size in each Calculation Area is made uniform with the horizontal cell size.

Elimination of Intersections Between Calculation Areas

When intersections occur between Calculation Areas, they are resolved by dividing the intersecting areas into a typically larger number of MESH groups, ensuring that none of the resulting groups intersect with each other.

Below is an example where two intersecting areas have different cell sizes.

Two Intersecting Calculation Areas{width=50%}

In the area of intersection, the smaller cell size is chosen. Subsequently, through an optimization procedure to find the optimal splitting, the Calculation Areas are represented using several non-intersecting MESH groups, arranged to minimize the contact area between them.

Minimizing the contact area between MESH groups is crucial for accelerating computation.

The potential outcome of splitting into three non-intersecting MESH groups is illustrated in the picture, using areas of different colors.

Three Non-Intersecting MESH{width=50%}

Example of Intersection Elimination

Below is an example of a scenario where, apart from a room with a fire source, there are two intersecting Calculation Areas with different cell sizes. Furthermore, some elements of the scene are not encompassed by any Calculation Areas.

Two Intersecting Calculation Areas{width=50%}

To prevent MESH intersections, the two Calculation Areas were represented in the FDS file using three separate MESH elements.

&MESH IJK=16,16,12 XB=1,5,1,5,0,3 MPI_PROCESS=0/

&MESH IJK=8,12,12 XB=5,7,1,4,0,3 MPI_PROCESS=0/

&MESH IJK=24,24,24 XB=5,8,4,7,0,3 MPI_PROCESS=0/

Three MESHs (view in Smokeview){width=50%}

Examples of Calculation Area Conversion

The examples below use scenarios with Calculation Areas where cell sizes differ by a factor of two.

The examples below illustrate the outcome of the Merging stage in forming MESH groups for various relative placements of Calculation Areas.

{width=60%}

The following examples illustrate the results of the Splitting and Balancing stages for varying numbers of simulation threads (number indicated above) when the number of meshes after the Splitting stage does not exceed the number of threads.

Above each mesh, the number of the MPI process assigned to that mesh is displayed.

Cases where each MPI thread processes meshes of equal size (with identical cell counts) are highlighted in blue.

{width=60%}

Further examples demonstrate the Balancing stage results for two simulation threads, where the number of meshes following the Splitting stage exceeds the number of threads.

Each mesh is marked with the number of the MPI process assigned to it.

The best balanced scenarios, where each MPI thread processes meshes of consistent size (with the same number of cells), are highlighted in blue.

{width=60%}

All examples above use a two-dimensional view to display the meshing algorithm. However, it’s important to note that the algorithm functions similarly across all three dimensions.