Skip to content

Fire Sources

Learn how to create and configure fire sources in FDS simulations.

Overview

Fire sources in FDS are created by applying fire surfaces to obstructions or vents. The fire is defined by its heat release rate per unit area (HRRPUA).

from pyfds.core.namelists import Surface, Obstruction
from pyfds.core.geometry import Bounds3D

# Create fire surface
sim.add(Surface(id='FIRE', hrrpua=1000.0, color='RED'))

# Apply to obstruction
sim.add(Obstruction(xb=Bounds3D.of(2, 3, 2, 3, 0, 0.1), surf_id='FIRE'))

Basic Fire Surface

Simple Fire

sim.add(Surface(
    id='BURNER',
    hrrpua=1000.0,      # Heat release rate per unit area (kW/m²)
    color='RED'          # Visualization color
)

# Apply to 1m x 1m burner
sim.add(Obstruction(xb=Bounds3D.of(2, 3, 2, 3, 0, 0.1), surf_ids=('BURNER', 'INERT', 'INERT')))

Total HRR = HRRPUA × Area = 1000 kW/m² × 1 m² = 1000 kW

Fire Intensity Levels

Fire Type HRRPUA (kW/m²) Description
Small 250 - 500 Smoldering, paper fire
Medium 500 - 1000 Wood crib, office materials
Large 1000 - 2000 Pool fire, intense burning
Very Large 2000 - 5000 Liquid fuel pool

Time-Varying Fires

Create a fire that grows over time:

# Define fire growth ramp
sim.add(Ramp(
    id='FIRE_GROWTH',
    t=[0, 60, 120, 180, 300],
    f=[0.0, 0.25, 0.5, 1.0, 1.0]
)

# Fire surface with ramp
sim.add(Surface(
    id='GROWING_FIRE',
    hrrpua=2000.0,
    ramp_q='FIRE_GROWTH'
)

See RAMP Guide for more time-varying options.

Fire Geometries

Square Burner

sim.add(Obstruction(xb=Bounds3D.of(2, 3, 2, 3, 0, 0.1), surf_ids=('FIRE', 'INERT', 'INERT')))

Circular Burner

sim.add(Vent(
    xb=Bounds3D.of(-1, 1, -1, 1, 0, 0),
    surf_id='FIRE',
    xyz=Point3D.of(0, 0, 0),
    radius=0.5
)

Multiple Fires

sim.add(Obstruction(xb=Bounds3D.of(1, 2, 1, 2, 0, 0.1), surf_ids=('FIRE', 'INERT', 'INERT')))
sim.add(Obstruction(xb=Bounds3D.of(3, 4, 3, 4, 0, 0.1), surf_ids=('FIRE', 'INERT', 'INERT')))

Complete Example

from pyfds import Simulation
from pyfds.core.namelists import Time, Mesh, Ramp, Surface, Obstruction
from pyfds.core.geometry import Bounds3D, Grid3D

sim = Simulation(chid='fire_demo')
sim.add(Time(t_end=300.0))
sim.add(Mesh(ijk=Grid3D.of(50, 50, 25), xb=Bounds3D.of(0, 5, 0, 5, 0, 2.5)))

# Growing fire
sim.add(Ramp(id='GROWTH', t=[0, 60, 180], f=[0, 0.3, 1.0]))
sim.add(Surface(id='FIRE', hrrpua=1500.0, ramp_q='GROWTH', color='ORANGE'))
sim.add(Obstruction(xb=Bounds3D.of(2, 3, 2, 3, 0, 0.1), surf_ids=('FIRE', 'INERT', 'INERT')))

sim.write('fire_demo.fds')

Next Steps


Devices →