Burn-Away Guide¶
This guide covers burn-away modeling for combustible obstructions and furniture, including BULK_DENSITY usage, interior surface exposure, and burn-away physics.
Overview¶
Burn-away modeling allows solid materials to be consumed by fire, exposing interior surfaces or removing obstructions entirely. This is crucial for:
- Furniture fire modeling
- Compartment burn-through
- Structural element failure
- Realistic fire spread
Basic Burn-Away Setup¶
Simple Burn-Away Obstruction¶
from pyfds import Simulation
from pyfds.core.namelists import Obstacle, Surface, Material
# Create simulation
sim = Simulation(chid="burn_away", title="Burn-Away Example")
# Define combustible material
wood = Material(
id="WOOD",
density=500.0,
conductivity=0.13,
specific_heat=2.5,
n_reactions=1,
a=[1e10], e=[100000], heat_of_reaction=[1800],
spec_id=["WOOD_GAS"], nu_spec=[0.75],
matl_id=["CHAR"], nu_matl=[0.25]
)
# Burn-away surface
burning_surface = Surface(
id="BURNING_WOOD",
matl_id="WOOD",
thickness=0.02, # Surface thickness (m)
burn_away=True # Enable burn-away
)
# Combustible obstruction
furniture = Obstacle(
id="CHAIR",
xb=[1.0, 2.0, 1.0, 2.0, 0.0, 0.8], # Chair dimensions
surf_id="BURNING_WOOD",
bulk_density=200.0 # Mass per unit volume (kg/m³)
)
sim.material_mgr.add_material(wood)
sim.material_mgr.add_surface(burning_surface)
sim.geometry.add_obstacle(furniture)
BULK_DENSITY Parameter¶
Purpose¶
BULK_DENSITY controls how much mass is available for burning:
- Without BULK_DENSITY: Only surface material burns
- With BULK_DENSITY: Interior mass burns as surface is consumed
# Surface-only burning (default)
surface_only = Obstacle(
id="THIN_PANEL",
xb=[0, 1, 0, 1, 0, 0.01], # 1cm thick
surf_id="BURNING_SURFACE"
# No bulk_density - only surface burns
)
# Bulk burning
thick_furniture = Obstacle(
id="THICK_COUCH",
xb=[0, 2, 0, 1, 0, 0.3], # 30cm thick
surf_id="BURNING_SURFACE",
bulk_density=100.0 # Burns interior mass too
)
Calculating BULK_DENSITY¶
# For uniform density materials
material_density = 500.0 # kg/m³ (from MATL)
bulk_density = material_density # Same as material density
# For porous/fibrous materials
solid_density = 1000.0 # kg/m³
porosity = 0.8 # 80% air
bulk_density = solid_density * (1 - porosity) # 200 kg/m³
Interior Surface Exposure¶
Multi-Layer Surfaces¶
Expose different materials as outer layers burn away:
# Multi-layer surface
wall = Surface(
id="COMPOSITE_WALL",
matl_id=["GYPSUM", "WOOD", "INSULATION"],
thickness=[0.013, 0.02, 0.1], # Layer thicknesses (m)
burn_away=True
)
# Wall obstruction
wall_obst = Obstacle(
id="WALL",
xb=[0, 0.2, 0, 5, 0, 2.5], # Thin wall
surf_id="COMPOSITE_WALL",
bulk_density=300.0
)
SURF_ID_Interior¶
Specify different surface properties for interior:
# Exterior surface (burns)
exterior = Surface(
id="WOOD_EXTERIOR",
matl_id="WOOD",
thickness=0.02,
burn_away=True
)
# Interior surface (exposed after burning)
interior = Surface(
id="WOOD_INTERIOR",
matl_id="WOOD",
thickness=0.02,
burn_away=False # Interior doesn't burn away
)
# Obstruction with different interior
panel = Obstacle(
id="WOOD_PANEL",
xb=[0, 1, 0, 1, 0, 0.05],
surf_id="WOOD_EXTERIOR",
surf_id_interior="WOOD_INTERIOR", # Different interior surface
bulk_density=400.0
)
Advanced Burn-Away Features¶
Temperature-Based Delamination¶
Layers can separate at specific temperatures:
# Delaminating surface
plywood = Surface(
id="PLYWOOD",
matl_id=["FACE_VENEER", "CORE", "BACK_VENEER"],
thickness=[0.003, 0.014, 0.003],
delamination_tmp=[None, 200.0, None], # Core delaminates at 200°C
burn_away=True
)
Density-Based Delamination¶
Layers can separate based on density changes:
# Density-based delamination
composite = Surface(
id="COMPOSITE",
matl_id=["RESIN", "FIBER", "RESIN"],
thickness=[0.002, 0.016, 0.002],
delamination_density=[None, 150.0, None], # Fiber layer delaminates
burn_away=True
)
Burn-Away Physics¶
Burning Rate Control¶
The burning rate depends on:
- Heat Flux: Higher flux → faster burning
- Material Properties: Pyrolysis kinetics
- Bulk Density: Available fuel mass
- Geometry: Surface area and thickness
Mass Loss Calculation¶
# FDS calculates mass loss rate as:
# m_dot = A * rho_b * pyrolysis_rate
#
# Where:
# A = surface area (m²)
# rho_b = bulk density (kg/m³)
# pyrolysis_rate = reaction rate (1/s)
Surface Regression¶
As material burns:
- Surface thickness decreases
- Interior surfaces become exposed
- Geometry changes affect heat transfer
- New surfaces ignite if hot enough
Validation and Best Practices¶
Required Parameters¶
For burn-away surfaces:
BURN_AWAY=Truein SURFBULK_DENSITYin OBST (recommended)- Valid MATL with pyrolysis parameters
Parameter Validation¶
- Thickness must be positive
- BULK_DENSITY should match material density
- Cross-references must be valid
Common Issues¶
- No burning: Check pyrolysis parameters in MATL
- Too fast burning: Adjust BULK_DENSITY or kinetics
- Unstable burning: Use appropriate grid resolution
- Interior exposure: Verify SURF_ID_INTERIOR setup
Examples¶
Burning Furniture¶
# Couch fire
foam = Material(
id="FOAM",
density=30.0,
conductivity=0.04,
specific_heat=1.5,
n_reactions=1,
a=[1e8], e=[80000], heat_of_reaction=[1000],
spec_id=["FOAM_GAS"], nu_spec=[0.85],
matl_id=["CHAR"], nu_matl=[0.15]
)
couch_surface = Surface(
id="COUCH_SURFACE",
matl_id="FOAM",
thickness=0.05,
burn_away=True
)
couch = Obstacle(
id="COUCH",
xb=[1, 3, 1, 2, 0, 0.5], # Couch dimensions
surf_id="COUCH_SURFACE",
bulk_density=25.0 # Slightly less than solid density
)
Compartment Burn-Through¶
# Wall burn-through
drywall = Material(
id="DRYWALL",
density=800.0,
conductivity=0.16,
specific_heat=0.84,
n_reactions=1,
a=[2e10], e=[100000], heat_of_reaction=[500],
spec_id=["GYPSUM_GAS"], nu_spec=[0.2],
matl_id=["CALCINED_GYPSUM"], nu_matl=[0.8]
)
wall_surface = Surface(
id="WALL_SURFACE",
matl_id="DRYWALL",
thickness=0.013, # 1/2 inch drywall
burn_away=True
)
wall = Obstacle(
id="GYPSUM_WALL",
xb=[0, 0.013, 0, 4, 0, 2.5], # Thin wall
surf_id="WALL_SURFACE",
bulk_density=800.0
)
Multi-Layer Panel¶
# Composite panel with burn-through
panel = Surface(
id="COMPOSITE_PANEL",
matl_id=["ALUMINUM", "INSULATION", "STEEL"],
thickness=[0.001, 0.05, 0.002], # Metal-insulation-metal
burn_away=True
)
composite_obst = Obstacle(
id="COMPOSITE_WALL",
xb=[0, 0.053, 0, 3, 0, 2],
surf_id="COMPOSITE_PANEL",
bulk_density=200.0 # Effective density
)
See the examples directory for complete burn-away simulations.