<![CDATA[COVID 19 virus spread Model ]]> false true false false ]]> ./covid19/Screenshot 2020-04-02 at 10.47.20 AM.png ./01authorPacoEsquembre2011.png;./01authorfu-kwun.hwang.png;./01authorlookang50x50.png;; 20 1 false VARIABLE_EDITOR Common true false VARIABLE_EDITOR language NOT USED false false "]]> VARIABLE_EDITOR Disks true false VARIABLE_EDITOR Events true false VARIABLE_EDITOR lookang true false VARIABLE_EDITOR layout true false VARIABLE_EDITOR translator true false CODE_EDITOR Initialisation true false CODE_EDITOR undefined true false CODE_EDITOR lookang true false CODE_EDITOR translation false false CODE_EDITOR detectlanguage false false CODE_EDITOR TRmessage true false ODE_EDITOR Motion true false ERROR_EDITOR Error handling code true false ANY_ERROR t dt vx[i] vy[i] getA(i,vx) getA(i,vy) Euler 10000 false false false false CODE_EDITOR Fixed Rel true false 0 && d0 && d CODE_EDITOR covid count true false CODE_EDITOR recoveredtimer true false 14&&timeronetime[i]==1&&healthstate[i] ==1){ healthstate[i] =2; } } if (countrecovered==n||counthealthy+countrecovered==n){ _pause(); _tools.showOkDialog("the population has recovered from covid-19! Try to achieve all recovered by more social distancing to keep even more people healthy. Simulation is paused."); } ]]> CODE_EDITOR message true false CODE_EDITOR cheatcodeforstayathome true false CODE_EDITOR sync healthstate to boolean true false LIBRARY_EDITOR collision true false Math.random()){ //only affect healthy and sick healthstate[collision]= Math.max(healthstate[collision],healthstate[collision2]); //max is to force sick up, min is to ensure no recover also make healthy recovered healthstate[collision2]= Math.max(healthstate[collision],healthstate[collision2]); // } if (healthstate[collision]==0&&healthstate[collision2]==0){//healthy meet healthy //color change moved to fixed relationship // color[collision]=colorhealthy; // color[collision2]=colorhealthy; //timer[collision]=t; //do ntg } else if (healthstate[collision]==1&&healthstate[collision2]==0){//sick meet healthy // color[collision]=colorsick; if (timeronetime[collision]==0){ timer[collision]=t; } timeronetime[collision]=timeronetime[collision]+1; // counthealthy= counthealthy-1; // countsick=countsick+1; } else if (healthstate[collision]==0&&healthstate[collision2]==1){ //healthy meet sick // color[collision2]=colorsick; if (timeronetime[collision2]==0){ timer[collision2]=t; } timeronetime[collision2]=1; // counthealthy= counthealthy-1; // countsick=countsick+1; } else if (healthstate[collision]==2&&healthstate[collision2]==0){ //healthy meet recovered } else if (healthstate[collision]==0&&healthstate[collision2]==2){//healthy meet recovered } else if (healthstate[collision]==1&&healthstate[collision2]==1){ // color[collision]=colorsick; // color[collision2]=colorsick; if (timeronetime[collision]==0){ timer[collision]=t; } if (timeronetime[collision2]==0){ timer[collision2]=t; } timeronetime[collision]=1; timeronetime[collision2]=1; // counthealthy= counthealthy-1; // countsick=countsick+1; } else if (healthstate[collision]==2&&healthstate[collision2]==1){ } else if (healthstate[collision]==1&&healthstate[collision2]==2){ } else if (healthstate[collision]==2&&healthstate[collision2]==2){ } } // social distancing } ]]> LIBRARY_EDITOR toggleVaccinated true false LIBRARY_EDITOR storedata true false LIBRARY_EDITOR randomize true false LIBRARY_EDITOR changeOrientation true false LIBRARY_EDITOR vdistribution false false nv-1)id=nv-1; V[id]+=1; } } ]]> LIBRARY_EDITOR playpause true false LIBRARY_EDITOR getAx true false n)return b*v[0]; // else return 0; return 0; } ]]> LIBRARY_EDITOR setSize true false LIBRARY_EDITOR fullscreen true false LIBRARY_EDITOR android true false -1; //&& ua.indexOf("mobile"); } ]]> LIBRARY_EDITOR speech true false { // console.log(voice.name, voice.lang) //}) //debug // Queue this utterance. window.speechSynthesis.speak(msg); } } ]]> HTML_VIEW_EDITOR HtmlView Page true false true Elements.Panel true Elements.Panel Elements.ComboBox 0)? opts[0]:""; // selected option //["mass on cart =0.00 kg","mass on cart =0.05 kg","mass on cart =0.100 kg","mass on cart =0.15 kg","mass on cart =0.20 kg","mass on cart =0.25 kg","mass on cart =0.30 kg"] if ( option=="exponential spread"){ vmax= (xmax-xmin)/2; socialdist=false; randomize (); } else if ( option=="slow spread"){ vmax= (xmax-xmin)/8; socialdist=false; randomize (); } else if ( option=="social distancing"){ vmax= (xmax-xmin)/2; probability=0.1; socialdist=true; randomize (); } else if ( option=="half work from home"){ vmax= (xmax-xmin)/2; socialdist=false; randomize (); for (var i=1; i true Elements.Panel Elements.Label Elements.Slider Elements.ParsedField true Elements.Panel Elements.Label Elements.Slider Elements.ParsedField = n) vaccinated = n - 1; else if(vaccinated < 0) vaccinated = 0; toggleVaccinated();]]> Elements.TwoStateButton Elements.Button Elements.Button Elements.Button Elements.CheckBox true Elements.Panel true Elements.PlottingPanel Elements.Shape2D Elements.ShapeSet2D true Elements.Group2D Elements.TextSet2D Elements.TextSet2D Elements.TextSet2D Elements.ShapeSet2D Elements.ArrowSet2D Elements.Arrow2D Elements.Trace Elements.TextSet2D Elements.TraceSet Elements.Shape2D Elements.Shape2D true Elements.PlottingPanel true Elements.Group2D Elements.Trail2D 0]]> Elements.Trace Elements.Trail2D 0]]> Elements.Trace Elements.Trail2D 0]]> Elements.Trace true Elements.Group2D Elements.Trail2D 0]]> Elements.Trace true Elements.Panel Why outbreaks like coronavirus spread exponentially, and how to “flatten the curve”

Coronavirus disease (COVID-19) is an infectious disease caused by a new virus.The disease causes respiratory illness (like the flu) with symptoms such as a cough, fever, and in more severe cases, difficulty breathing. You can protect yourself by washing your hands frequently, avoiding touching your face, and avoiding close contact (1 meter or 3 feet) with people who are unwell.

HOW IT SPREADS

Coronavirus disease spreads primarily through contact with an infected person when they cough or sneeze. It also spreads when a person touches a surface or object that has the virus on it, then touches their eyes, nose, or mouth.

Prevention

There’s currently no vaccine to prevent coronavirus disease (COVID-19).You can protect yourself and help prevent spreading the virus to others if you:

Do

  • Wash your hands regularly for 20 seconds, with soap and water or alcohol-based hand rub
  • Cover your nose and mouth with a disposable tissue or flexed elbow when you cough or sneeze
  • Avoid close contact (1 meter or 3 feet) with people who are unwell
  • Stay home and self-isolate from others in the household if you feel unwell

Don't

  • Touch your eyes, nose, or mouth if your hands are not clean

View

Left panel shows the visualization or the big picture view a population of 100 people, modelled as balls

Right panel show the graphs of healthy, sick and recovered people based on the colors representation.

Simulations Features

The simulation is designed to be simple to use via dropdown menu. the option are self explanatory.

Exponential spread is modelled using a random velocity and random direction, the spread of the virus from sick to healthy is probabilistic based on closeness or collision. The reason why each country is preventing this rapid growth rate to prevent filling up the hospitals to their maximum capacity, forcing emergency rooms to close their doors to new patients. This will likely lead to more deaths due to COVID-19.

]]>
Elements.HtmlArea ]]> true Elements.Panel Slow spread is modelled using a smaller random velocity and random direction, thus the spread of the virus from sick to healthy will be lesser. After observing the right panel, notice the sick curve is now flatten or lower than the earlier case, and therefore, the country's hospitals can operate and give medical care to the sick, and thus, there is now a higher chance of survival as you probably realised from the daily reports in gov.sg, the number of sick in intensive care unit ICU.

]]>
Elements.HtmlArea ]]> false Elements.Panel Social distancing is modelled using a dotted circle surrounding each ball where there is now a lower chance of the spread of the virus from sick to healthy as the virus probably need to be close enough and long enough time to transmit to the healthy. The simulation will run likely with little or low number of sick eventually and COVID-19 is defeated!

]]>
Elements.HtmlArea ]]> false Elements.Panel Half Work from home is modelled using half of the total number of the balls stationary even after collision or contact, again there is now a lower chance of the spread of the virus from sick to healthy as the virus has a lower opportunity to transmit to the healthy

]]>
Elements.HtmlArea ]]> true Elements.Panel All Work from home or also known as total lockdown, is modelled using all of the total number of the balls stationary even after collision or contact, again there is now a even lower chance of the spread of the virus from sick to healthy as the virus has a near impossible opportunity to transmit to the healthy

]]>
Elements.HtmlArea ]]> true Elements.Panel Vaccinated, is modelled using if the person is vaccinated the probability of infection is reduced to zero, or p=0 even after collision or contact. In other words, the spread of the virus from sick to vaccinated persons is nearly impossible after vaccination. The picture below shows how vaccinated causes the pool of healthy to be lower, but for vaccination to work against a virus, a large number needs to be vaccinated say N=90, where the sick will be a smaller number, easing the load on hospitals etc, so we may have a higher chance of lesser people dying after being sick due to good medical treatments and care in health care facilities.

]]>
Elements.HtmlArea ]]> Elements.Panel more options are coming, stay tuned for more updates!

Assumptions made in the model

The motion of the people (balls) are completely random, this might not be the case in real life, most people travel to work or to school in a regular timing.

The healthy is moving about randomly, after collision contact, the balls moves off obeying collision laws of physics.

The sick can only infect healthy, and the first sick remains sick until the virus is spread to another healthy ball making it sick too.

The sick takes 14 days to recover after the first contact with another sick ball, this is a arbitrary length of days, email me if you think you have a better approximation?

The recovered cannot be infected by the sick again. As more real world data surfaced, this assumption could be incorrect but not accounted for in the model.

Social distancing completely makes the probability of virus spreading p = 0, which could be inaccurate as the virus could spread through 1. Person-to-person spread (modelled), 2.Spread from contact with contaminated surfaces or objects (not modelled)

Interaction/Games

Drag any balls, especially the sick ball to infect more balls at the beginning when time t = 0 day. This allows you to determine the initial number of sick.

Inspired by https://www.washingtonpost.com/graphics/2020/world/corona-simulator/

]]>