This is a component of the ad hoc covid19 data project connected to the FUFF platform (fuff.org)
http://fuff.org/data/cr0.html
At the bottom of this page are tabs. they link to the other sheets/pages
html version: http://fuff.org/data/cr2.html (only demo, you can not experiment yourself)
important for html export: if you come back for updated versions, you have to refresh every single page!! sorry
google sheet link here: http://fuff.org/data/cr0.html (make a copy and start trying)
important for google sheets version: I might replace this with a new google sheet so check that link above for the active google sheet link!!
important for google sheets: I am not sure it really behaves the same in all details (matrix formula etc.). better ask for the excel version! 
about and how-to                
this is a simplified probability model to demonstrate some simple elemental mathematical properties of the spread of a virus (important: read disclaimers!)
you can simulate the spread of a virus in a population
you can simulate the toughening and loosening of interventions like lockdowns and other measures by decreasing and increasing the spread/ person over time
you can simulate the effect of (early) testing plus isolation of diagnosed by reducing or increasing the length of the spread period / person
you can simulate the effect of having different population clusters with different parameters. These can be behavioural clusters or regional clusters.
you can simulate the effect of leakage/overspilling between clusters and interventions to reduce the effect (example attempt to protect risk groups or virus free but not immune regions)
I might add more features in the future (like number of immunized, fatalaty rate etc)
please review the model for possible flaws. only this way we can improve our understanding!
questions that can be investigated by changing the parameters…      
How does timing of toughening and loosening of lockdown measures influence a scenario?
How does different intensity and timing of testing influence a scenario?
How does clustering a population into groups of different behaviour (or local scenarios) influence the spread?
When and how does a possible (herd) immunity influence the spread? 
In what combination of immunity levels, interventions and spread velocity do factor and generational multiplication have unexpected combined effects?
(see disclaimers below!!!)
thesis that can be investigated, like...:          
- as long as the spread/person is above 1, 'herd immunity' plays little part in the first wave as the spread is faster than the spread of immunity (and the time from infection to immunity is too long)
-> well not so fast, see examples tab - it depends on what you define as the eventual R0
- any loosening of measures that lead to a higher R0 than 1 will inevitably make the spreading mechanism return until the clusters are saturated
-> this brings up two interesting views: (1) testing defined as a seperated measure to lockdown (2) the definition of uninfected as 'potential'. can we separate the two paradigms so that not every uninfected is potential (ex. vaccine)?
we can try to model the parameters so that they fit actual scenarios we know so far  
-> here is the first big problem: we can only estimate the real number of infections with a wide margin of error  (this is a model for infections, not confirmed cases)
-> the problem is discussed in my daily updated projections: http://fuff.org/data/cr1.html
-> also we can relate to the imperial college study published March 30 and the estimations made there  https://www.imperial.ac.uk/media/imperial-college/medicine/sph/ide/gida-fellowships/Imperial-College-COVID19-Europe-estimates-and-NPI-impact-30-03-2020.pdf
important disclaimers              
the model is highly simplified yet and will not deliver projections that can be anyhow made basis for decisions!! There are better models out there, that the specialists use (but which for us might be black boxes)
what it does, it helps us understanding some basic behaviours of the curve like a dramatic acceleration period, and basic things needed like a spread forced way below under 1 
(yet it is a better model better than just to work with regression functions (like exponential curves etc). The applicated formulas here considers the actual properties of the system and do not only describe a short period of time.)
important disclaimer: the model works with averages. In fact a lot of data analysis you find on this crisis on the web, in the news is based on averages.
Even the basic data used -here and everywhere- are summaries of totally diverging cluster scenarios of crisis hot spots, high potential sleepers, and low risk areas.
-> this is highly dangerous and leads to false or detracted results and misinterpretations! (see the example 'the dangers of averages')
-> example: people could lift measures because of a completely false idea of what is happening. could.
-> also google for Taleb corona fat tail risk
warning: the closer the model appears to match an -idealised- reality, the higher the danger of being mislead. 
Already small changes in parameters lead to entirely different results. THIS is a result we can take away. 
another disclaimer: the model assumes immunity after cure. This is debated among experts and not a given!
another disclaimer: fatalaties are still included in the total population number after their occurance. this may be confusing, but does not have negative effect on the mathematics. I do not want to make it too complicated at this point.
yet another disclaimer: some of the waves you see probably are rather consequence of the mathematical simplification (improvised model) into 32 clusters.
quick start - howto (full simulation)          
- first step: leave aside the clustering of the population, work with one cluster only. This makes it easier to understand the simulator.
-> set initial setting of the parameters depth and divide to 1 and 100 which results in 1 cluster =no clustering of population
-> however learn to experiment with the clustering of population. this is really the important concept that distinguishes this model.
adjustable parameters at this point are:
population the preset in this example is set to 80000000 That can be altered of course
so you can try this for different sized countries, regions, states
(initial) spread average spread of an average person in an uninfluenced scenario without saturation. 
the initial value is distributed on all timesteps (days) to all clusters automatically by formula. can be manually overwritten for particular dates in coulmn B to simulate changes in circumstances
for example cancelling of mass events, physical distancing, lockdown have impact on this, but also lifting measures at some point 
look at the examples in tab 'example results'
it can be also overwritten for particular clusters and timelines to simulate parallel different situations and timelines for different regions or behavioural or society clusters in columns AR-BW 
days (norm) days an average person is infectious to others before it becomes isolated and from there on immune (recovered or fatality)
-> this number needs to remain constant for the model to work properly and to get comparable results. it is the value without interventions
days influenced influenced number of days an average person is infectious to others before becoming isolated and lateron immune (recovered or fatality) 
this can be overwritten for particular dates in column C to simulate changes over time for all clusters
it can be be overwritten for particular dates and individual clusters in columns BX-DC
leakage pct. principle share of infections by spillover from the other clusters. It is not added on, it is the share. the actual share depends however on the parameters and situation inside and outside the clusters. 
this can be overwritten for particular dates in column D to simulate changes over time for all clusters
it can be be overwritten for particular dates and individual clusters in columns DD-EI
depth and devide regulate an automated distribution of probabilities in the clusters regarding size relation of clusters and their spread probability differences
initially this is set to only 1 cluster (1 and 100 for depth and devide) so that the model is easier to understand
you can overwrite the values in line 61 and 62 and work with manual values, be sure the checksums are correct. 
Better change the value pyramid in area AR49:BW62 to balance out sizes and clusters for each level. 
-> there are persons who are spreading more and some who are spreading less. This is simulated through the probabiliy shift in the different clusters
hint: good values for depth appear to be rather between  >1 and <1.2. Higher values seperate clusters so much that only the initial cluster gets exposed in the 300 day time frame. But it depends on leakage
1st person the model is initialized in day 0 so that it is not determined in which cluster the first person is situated. this makes it more easy to handle as otherwise you will have to adjust the spread values very well to get it started. 
you could however start 1 cluster with 0 instead to simulate isolation, but would have to see that the checksum for the first row is 1 again.
Of course you can start the model with more than 1 infected person, too
needed improvements              
the model needs to be improved. Please help find flaws and improve it.
the model uses simplified probabilities. the original model featured binominal distribution probablilities. maybe I can reestablish but that is a time thing.
the model does not consider yet that people are not equally infectious over the period of days
warning: however: the closer it comes to an -idealised- reality the more seducing it can be to understand the results as actual projections of reality. this is where you have to be very careful. 
Already small changes in parameters lead to entirely different results. THIS is a result we can take away. 
quick start - howto (simplified 4 cluster model)        
the simplified 4 cluster model is to learn some basic cluster effects, while ignoring the more realistic scenario of a pluralistic society. 
I have set one cluster to 0 in day0. you will have to replace all initial values of day 0 with a balanced formula (or values adding up to 1), if you want to change this.
Of course you can start the model with more than 1 infected person, too