Exercises part III: Forest fires#
We here want to study a forest fire model that is in principle very simple, but in practice tricky to study. We will therefore need to be able to run simulations very efficiently. The model goes as follows.
We are concerned with forest fires along a one-dimensional spatial lattice with strong winds. For simplicity, let’s assume that the world is a discrete ring of made up of \(L\) identical sites, labeled as \(i\) from 0 to \(L\). Sites on this ring can be either empty or forested. Empty sites turn to forested sites at a unit rate (i.e., time is measured in units of expected time for forest growth). Any site is struck by lightning at some other rate \(\lambda \ll 1\). A site ignites if it is forested when struck by lightning, which starts a fire of intensity \(I=1\). As long as fire intensity is greater to zero, the fire then spreads from site \(i\) to site \(i+1\). If the new site is forested, the fire gains in intensity by a unit of 1; conversely, if the new site is empty, the fire loses a unit of intensity.
Starting from an empty ring of \(L\) empty sites, we then care about the density of forested sites over time, the distribution of fire sizes, and the frequency of fires that are able to travel across the entire ring (which we call catastrophes) as we simulate the model for a total time of \(T\).
Note
Models of forest fires often involve two dramatrically different timescales: The timescale of forest growth and of fire spread. They are therefore often implemented using what are called impact models where time freezes when one mechanism kicks in, such that the slower process can be assumed static while the faster process runs its course. In this framework, we get to play out the dynamics of a fire while ignoring the growth of trees. Fires thus run their course instantaneously.
Approach selection#
What continuous time approach should scale better with system size \(L\) and total duration of simulation \(T\)?
Implement a direct simulation, a next-reaction simulation, and an event-driven simulation of the process.
Now vary \(L\) and \(T\). Which approach is faster? How do they scale with the key parameters? Do they give the same results?