Skip to content

Geometry Namelists

FDS geometry namelists define the physical layout and boundaries of the simulation domain.

Overview

Geometry in FDS is defined through several namelists that work together:

  • MESH: Computational domain discretization
  • OBST: Solid obstructions and structures
  • VENT: Boundary conditions and openings
  • HOLE: Openings carved through obstructions
  • MULT: Array replication of objects
  • GEOM: Unstructured geometry (beta)
  • MOVE: Geometry transformations

MESH - Computational Domain

Defines the computational grid and domain boundaries.

from pyfds import Mesh

# Simple rectangular domain
mesh = Mesh(
    xb=Bounds3D.of(0, 10, 0, 8, 0, 6),  # domain bounds
    ijk=Grid3D.of(50, 40, 30)           # grid resolution
)

# Multiple meshes for parallel computation
mesh1 = Mesh(id='MESH1', xb=Bounds3D.of(0, 5, 0, 8, 0, 6), ijk=Grid3D.of(25, 40, 30))
mesh2 = Mesh(id='MESH2', xb=Bounds3D.of(5, 10, 0, 8, 0, 6), ijk=Grid3D.of(25, 40, 30))

OBST - Solid Obstructions

Creates solid objects that block flow and affect heat transfer.

from pyfds import Obstruction

# Simple wall
wall = Obstruction(
    xb=Bounds3D.of(5, 5.2, 0, 8, 0, 6),  # thick wall at x=5
    surf_id='CONCRETE'
)

# Floor slab
floor = Obstruction(
    xb=Bounds3D.of(0, 10, 0, 8, 0, 0.3),  # 30cm thick floor
    surf_id='CONCRETE'
)

# With thermal properties
thermal_wall = Obstruction(
    xb=Bounds3D.of(0, 0.2, 0, 8, 0, 6),
    surf_id='INSULATED_WALL',
    ht3d=True  # Enable 3D heat conduction
)

VENT - Boundary Conditions

Defines openings, vents, and boundary conditions.

from pyfds import Vent

# Open boundary (ambient)
open_wall = Vent(
    mb='XMIN',  # mesh boundary
    surf_id='OPEN'
)

# Supply vent
supply = Vent(
    xb=Bounds3D.of(2, 3, 2, 3, 6, 6),  # ceiling vent
    surf_id='SUPPLY',
    volume_flow=0.5  # m³/s
)

# Fire source
fire = Vent(
    xb=Bounds3D.of(4.5, 5.5, 4.5, 5.5, 0, 0),  # floor burner
    surf_id='FIRE'
)

HOLE - Carved Openings

Creates openings through existing obstructions.

from pyfds import Hole

# Door opening
door = Hole(
    xb=Bounds3D.of(4.9, 5.1, 2, 4, 0, 2.1),  # door bounds
    id='MAIN_DOOR'
)

# Controlled window
window = Hole(
    xb=Bounds3D.of(0, 0.1, 1, 2, 1.5, 2.5),
    id='WINDOW',
    ctrl_id='WINDOW_CONTROL',
    color='GRAY'  # appearance when closed
)

MULT - Array Replication

Creates regular arrays of repeated objects.

from pyfds import Mult

# 3x3 grid of objects
grid = Mult(
    id='GRID_3X3',
    dx=2.0, dy=2.0,  # 2m spacing
    i_lower=0, i_upper=2,
    j_lower=0, j_upper=2
)

# Linear array
row = Mult(
    id='ROW_10',
    dx=1.0,  # 1m spacing
    n_lower=0, n_upper=9  # 10 objects
)

GEOM - Unstructured Geometry (Beta)

Defines complex geometry using triangulated surfaces.

Beta Feature

GEOM is a beta feature in FDS. Use with caution.

from pyfds import Geom

# Simple triangle
triangle = Geom(
    id='TRIANGLE',
    surf_id='STEEL',
    verts=[0,0,0, 1,0,0, 0.5,1,0],  # vertices
    faces=[1,2,3,1]  # face definition
)

# Sphere
sphere = Geom(
    id='BALL',
    surf_id='RUBBER',
    sphere_origin=(5, 5, 1),
    sphere_radius=0.5,
    n_levels=3
)

# Terrain
terrain = Geom(
    id='GROUND',
    surf_id='DIRT',
    zvals=[1.0, 1.2, 1.1, 0.9],  # elevation data
    is_terrain=True
)

MOVE - Geometry Transformations

Applies transformations to GEOM objects.

from pyfds import Move

# Translation
shift = Move(
    id='SHIFT_RIGHT',
    dx=5.0, dy=0.0, dz=0.0
)

# Rotation
rotate = Move(
    id='ROTATE_90',
    axis=(0, 0, 1),
    rotation_angle=90.0
)

# Combined
transform = Move(
    id='COMPLEX',
    dx=1.0, dy=1.0, dz=0.0,
    axis=(0, 0, 1),
    rotation_angle=45.0,
    scale=(2.0, 2.0, 1.0)
)

Integration Examples

Complete Room with Door

from pyfds import Simulation, Mesh, Obstruction, Hole

sim = Simulation('room_with_door')

# Domain
sim.add(Mesh(xb=Bounds3D.of(0, 6, 0, 4, 0, 3), ijk=Grid3D.of(30, 20, 15)))

# Walls
sim.add(Obstruction(xb=Bounds3D.of(0, 0.2, 0, 4, 0, 3), surf_id='WALL')  # Left wall
sim.add(Obstruction(xb=Bounds3D.of(5.8, 6, 0, 4, 0, 3), surf_id='WALL')  # Right wall
sim.add(Obstruction(xb=Bounds3D.of(0, 6, 0, 0.2, 0, 3), surf_id='WALL')  # Back wall
sim.add(Obstruction(xb=Bounds3D.of(0, 6, 3.8, 4, 0, 3), surf_id='WALL')  # Front wall

# Floor and ceiling
sim.add(Obstruction(xb=Bounds3D.of(0, 6, 0, 4, 0, 0.1), surf_id='FLOOR'))
sim.add(Obstruction(xb=Bounds3D.of(0, 6, 0, 4, 2.9, 3), surf_id='CEILING'))

# Door
sim.add(Hole(xb=Bounds3D.of(2.9, 3.1, 0, 0.2, 0, 2.1), id='DOOR'))

Storage Warehouse with Arrays

from pyfds import Simulation, Mult, Obstruction

sim = Simulation('warehouse')

# Rack array multiplier
sim.mult(
    id='RACK_ARRAY',
    dx=3.0, dy=5.0,  # spacing
    i_lower=0, i_upper=9,  # 10 aisles
    j_lower=0, j_upper=3   # 4 rows
)

# Single rack definition (replicated by MULT)
sim.add(Obstruction(
    xb=Bounds3D.of(0, 1, 0, 2, 0, 4),  # rack dimensions
    surf_id='STEEL',
    mult_id='RACK_ARRAY'     # creates 10×4 = 40 racks
)

Complex Geometry with Transformations

from pyfds import Simulation, Geom, Move

sim = Simulation('complex_geometry')

# Create a sphere
sphere = Geom(
    id='BALL',
    surf_id='RUBBER',
    sphere_origin=(0, 0, 0),
    sphere_radius=0.5
)

# Transform it
transform = Move(
    id='BALL_POSITION',
    dx=5.0, dy=5.0, dz=1.0,  # position
    axis=(0, 0, 1),
    rotation_angle=45.0       # rotation
)

sim.add_geometry(sphere)
sim.add_geometry(transform)

# Reference the transformation
sphere.move_id = 'BALL_POSITION'

Namelist Reference

Common Parameters

Parameter Description Units
id Unique identifier -
xb Bounds (xmin, xmax, ymin, ymax, zmin, zmax) m
surf_id Surface properties ID -
color Visualization color -
rgb RGB color values (0-255) -

MESH Specific

Parameter Description Units
ijk Grid resolution (nx, ny, nz) -
trnx, trny, trnz Mesh stretching factors -

OBST Specific

Parameter Description Units
ht3d Enable 3D heat conduction -
thick Custom thickness m
mult_id MULT reference for arrays -

VENT Specific

Parameter Description Units
mb Mesh boundary location -
volume_flow HVAC volume flow rate m³/s
mass_flow HVAC mass flow rate kg/s
tmp Supply temperature °C

HOLE Specific

Parameter Description Units
ctrl_id Control ID for activation -
devc_id Device ID for activation -
transparency Transparency when closed -
mult_id MULT reference for arrays -

MULT Specific

Parameter Description Units
dx, dy, dz Spacing in each direction m
i_lower/upper X-direction array bounds -
j_lower/upper Y-direction array bounds -
k_lower/upper Z-direction array bounds -
n_lower/upper Sequential bounds -

GEOM Specific

Parameter Description Units
verts Vertex coordinates m
faces Face definitions -
sphere_origin Sphere center m
sphere_radius Sphere radius m
move_id MOVE transformation reference -

MOVE Specific

Parameter Description Units
dx, dy, dz Translation offsets m
axis Rotation axis vector -
rotation_angle Rotation angle degrees
scale Scaling factors -

See Also