Forest Fire (3D)

A Blender-built forest burns as a cellular automaton: set wind, hills and regrowth, light fires, cut firebreaks and watch percolation and self-organised criticality.

Switch to 2D

Presets

Playback

Click or tap the forest to use the tool chosen below. Keys: Space = pause, F = lightning, R = reset.

Forest

Fire spread

Wind and terrain

Touch the forest

Time

Camera

Layers

Quality

Model check

The science

1. The Drossel-Schwabl forest-fire model

The forest is a square grid. Every cell is empty, a tree, burning, water or protected ground. In each time step, in this order:

  • A burning cell sets each tree neighbour on fire with probability ps, then burns out and becomes empty (ash). With "burn duration" b a cell keeps trying for b steps, so a neighbour is lit with 1 − (1 − ps)b.
  • Every empty cell grows a tree with probability p (regrowth).
  • Lightning strikes f · N² random cells per step on average; it only matters when it hits a tree, which then starts a fire.

With the 4-neighbour rule a fire can only use the four edge-sharing cells; with the 8-neighbour rule it also uses diagonals.

2. Percolation: why there is a threshold

With no regrowth and no lightning, a fire is the question "is the ignited tree connected to the far side through a chain of neighbouring trees?". On a large square lattice an infinite connected cluster of trees appears only above the site-percolation threshold pc ≈ 0.5927 (4 neighbours) or pc ≈ 0.4072 (8 neighbours). Below it every fire stays small; above it a fire usually sweeps the whole forest. On a finite grid the change is smooth, not a jump, and the probability that a fire reaches the far edge passes 50 % close to pc (see the third graph). With ps < 1 a tree can survive next to a fire, so the effective threshold moves up.

3. Self-organised criticality

If trees regrow slowly and lightning is rare (f ≪ p), the forest drifts to a state with no tuning at all: dense enough that big fires occur, thin enough that most fires are small. The sizes of fires then follow roughly a power law P(s) ∝ s−τ with τ around 1.1 to 1.2 in two dimensions (the second graph fits the slope from your own run). Finite grids, the discrete time step and overlapping fires change the exponent, and whether the scaling is exact is still discussed in the literature, so treat the fitted number as an estimate.

In the stationary state every tree that burns was grown, so p · Nempty = f · Ntrees · s̄ and the mean fire size is s̄ = p (1 − ρ) / (f ρ). The model check below measures s̄ from a run and compares it with this formula.

4. Wind and slope

Spread probability to a neighbour in direction φ is p = min(1, ps · pwind · pslope) with the form used in cellular-automaton wildfire models (Alexandridis et al. 2008):

  • pwind = exp(c1V) · exp(c2V (cos θ − 1)), V = wind speed in m/s, θ = angle between the spread direction and the wind, c1 = 0.045 s/m, c2 = 0.131 s/m. Downwind (θ = 0) the factor is e0.045 V, upwind it is much smaller.
  • pslope = exp(a · θs), a = 0.078 per degree, θs = slope angle between the two cell centres (uphill positive). Warm air and flames preheat the fuel above the fire, so fires run uphill much faster than downhill.

The fourth graph shows p for every compass direction at the centre of the forest: a flat shape means the fire spreads equally everywhere, a lobe shows where it will run.

5. Honest simplifications

  • One cell is 20 m and one step is one unit of "fire time"; the model gives patterns and trends, not a forecast. Real fire spread depends on fuel moisture, fuel type, flame height, ember spotting and weather, none of which are modelled.
  • Trees are all identical and only the burnt, empty ground regrows; there is no species or age effect other than the visual sapling stage.
  • Wind and slope are the empirical factors above, applied per cell pair. Wind is constant in space and time. Water and protected cells (pond, lookout tower, cabin) simply never burn.
  • Fire sizes count the trees that ignited from a given lightning strike or click. When two fires meet, each tree is credited to the fire that lit it first.
  • The model checks run on fixed reference settings with the same model code: the front-speed check is exact, the two percolation checks use a 48 by 48 forest and 24 runs per density (so they are accurate to about 0.03), and the balance check is statistical (its tolerance shrinks with the number of lightning fires).
Loading model...
Loading Blender model...
Trees and burning cells over time
Fire-size distribution (log-log) and fitted slope
Percolation: does the fire cross the forest?
Spread probability by compass direction
Made with 🟠 Blender · Three.js