Flame fronts

Geometrical restrictions

Exponential growth requires that at all stages of the evolution, infected people have contact with healthy people. But consider a real world example. Assume all of the hundred inhabitants of Hilldale have been infected during the last days. But now there's no one left in Hilldale - the last 40 people find themselves surrounded by sick and immune people. To sustain exponential growth, we must now assume that all of them split up into three groups, leave their home village and go to the neighbouring villages of New Hilldale, Rocky Creek and Ridgeville.

The key words here are all of them - sure, in reality some of them will do that, and hence the disease will spread - but it won't spread exponentially any more. If we go to a moment back in time, it will actually spread at walking or horse-riding pace. Other settlements can only be infected at the speed at which sick people can get there.

That in turn reminds of the propagation of a flame-front. Say on a day without wind, you start a fire in the center of a forest. It will burn radially outward. It can't come back to the center (because there is no fuel left) and it can't jump ahead. So geometry restricts the growth of the number of trees which are on flame to a circle, and the circumference of that grows linear in time, so the total amount of trees consumed grows quadratic in time (rather than exponential).

In fact, this is well known - a chemical reaction requires mixing of the reagents to proceed quickly. Gasoline literally explodes when mixed with air as an aerosol, but burns rather hesitantly (if at all) when it remains a puddle on the ground. Same with an epidemic - exponential growth requires a constantly mixing population.

The effect of mobility

To see this effect in the simulation, let's play with the mobility parameter. Create the following config file:

num_timesteps 1000
snapshot_interval 200
filename_base flamefront

disease recovery_time 7
p_transmission 0.23

grid_size 1000
num_classes 1

class mobility 4
p_mobility 1.0
fraction 1.0


The new simulation parameters instruct the program to write all data as files starting with flamefront, and snapshot_interval causes 2-d plots of the spatial distribution of infected to be written every 200 timesteps. Otherwise the disease is the same as in the last example, just the mobility of the population is reduced. Run the example using

./epidemic example02.cfg

If you change the mobility paramater, you will see the following response of the growth:

Finite mobility effects in cumulative number of infected vs. time

The speed of the spread is much reduced. In fact, dramatically so. If the mobility is restricted enough, the spread is nearly contained. Note that we haven't changed the disease itself at all - from person to person, it's still as contagious as it ever was. If you plot the third column of flamefront.dat (showing the number of currently sick people) to get a feeling for the stress the disease creates for the health system, it looks even more dramatic:

Number of active sickness cases as function of time and mobility

What isn't changed so much is the end result - in all cases more than 60% of the population become infected in the end. But the speed at which that happens is totally different. Restricted to the local environment a single infected person, it matters that large parts of that environment is shared - so locally the spread quickly staurates the available number of healthy people and must then spread outward at the average mobility. In fact, if you plot the spatial distribution files after 200 days flamefront_2d200.dat and after 400 days flamefront_2d400.dat this is very apparent:

Spatial distribution of infected after 200 days

Spatial distribution of infected after 400 days

The infection grows outward of the initial seed points like a flame front, and it can not proceed faster than the mobility of the population.

You might ask the question - did we somehow effectively change the basic reproduction number R0? In other words, do we get a reduced exponential growth out of this? The answer is no - the changes are more profound. If we plot flamefront_growth.dat (which contains the daily increase in the number of cumulative infected), we see that of course the numbers fluctuate, but remain at a steady 17% pace for the exponential scenario well up to day 50 when the majority of the population is infected.

Daily growth with respect to previous day of number of infected people.

With the finite mobility scenarios, that's consistently not the case. Here the day to day growth starts large but steadily declines. Looking at the plot without any other knowledge, you might conclude that someone imposed quarantine measures early on to bring the numbers down, but no - nothing of that happened in the simulation. All we did was to impose the condition that people meet other people locally, rather than across the whole simulated grid. And that has a very profound impact - it makes exponential growth pretty much impossible.


How realistic is the condition of, say, a mobility value of 5? Basically it says that rather than meeting someone of a pool of 40.000 people on every day of the week, the actual social contacts of someone are more of order 80 people - which are more or less near.

It is of course possible to realize the high number - frequently going to concerts, soccer games and other large events will bring a person into contact with potentially lots of people all over the place. But for most people doing their everyday routines, 80 people who are close enough to be infected (co-workers, family members, friends, relatives...) is not an outrageously low number.

So truth is probably somewhere between these extremes - some people get around a lot, others stay home. How does that change the picture? We'll explore that next.

Continue with Superspreading.

Back to main index     Back to science     Back to numerical epidemic

Created by Thorsten Renk 2017-2020 - see the disclaimer, privacy statement and contact information.