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"ba cell keeps trying for b steps, so a neighbour is lit with1 − (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).