Effects of Masks on Covid Spread

Effects of Masks on Covid Spread preview image

1 collaborator

Default-person Alex Brown (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 6.1.1 • Viewed 94 times • Downloaded 3 times • Run 0 times
Download the 'Effects of Masks on Covid Spread' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Info tab cannot be displayed because of an encoding error

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

globals [
  max-infected
  cumulative-output
  daily-delta
  total-infected
  avg-daily-delta
  total-delta
  moving-average
  day-1
  day-2
  day-3
  day-4
  day-5
  transmissibility
]


turtles-own[
  infected?
  immune?
  mask?
  dead?
]

to setup
  clear-all
  set-patch-size (275 / max-pxcor)
  setup-turtles
  setup-infected
  setup-unmasked
  set max-infected (count turtles with [infected?])
  set cumulative-output (0)
  set transmissibility (1)
  reset-ticks
end 

to setup-turtles
  create-turtles num-people [
    set color blue
    set shape "person"
    set size 2
    set infected? false
    set immune? false
    set mask? true
    set dead? false
    setxy random-pxcor random-pycor
  ]
end 

to setup-unmasked
  ask n-of ((percent-unmasked / 100) * num-people) turtles [
    set color white
    set mask? false
  ]
end 

to setup-infected
  ask n-of init-infected turtles [
   set infected? true
    ifelse mask?
      [set color red]
      [set color orange]
  ]
end 

to go
  ;;stop if everyone or noone is infected
  ;;if (count turtles with [infected? and not dead?] = 0)
  ;;or (count turtles with [infected?] = num-people)

  infect-susceptibles
  recover-infected
  death
  recolor
  move-normal
  calculate-max-infected
  calculate-daily-delta
  if ticks > 0
  [calculate-avg-daily-delta]
  calculate-total-infected
  recolor
  calculate-moving-average

  tick
end 

to infect-susceptibles ;; S -> I
   ask turtles with [not infected? and not immune?][
    let infected-masked-neighbors (count turtles-here with [infected? and mask?])
    if (random-float 1 <  1 - (((1 - masked-transmissibility) ^ infected-masked-neighbors)))
    [set infected? true]
    let infected-neighbors (count turtles-here with [infected? and not mask?])
    if (random-float 1 <  1 - (((1 - transmissibility) ^ infected-neighbors)))
    [set infected? true]
   ;let infected-neighbors (count other turtles with [infected?] in-radius 1)
  ; if (random-float 1 <  1 - (((1 - transmissibility) ^ infected-neighbors)) and not immune?)
   ;[set infected? true]
]
end 

to recolor
  ask turtles with [infected? and not dead? and mask?]
  [ set color red]
  ask turtles with [infected? and not dead? and not mask?]
  [ set color orange]
  ask turtles with [mask? and not infected?]
  [set color blue]
  ask turtles with [not mask? and not infected?]
  [set color white]
  ask turtles with [immune?]
  [set color gray]
  ask turtles with [dead?]
  [ set color pink]
end 

to move-normal

  ask turtles with [not dead?] [
    right random 360 ;;get a new random heading
    forward random sociability
  ]
end 

to recover-infected ;;I -> R

  ;;avg case length is 2 weeks.
  ;;should have 50% chance of becoming immune at 2 weeks
  ;;if we are saying each tick equals 1 day,
  ;;daily odds of recovering should be (1-x)^14=.5, x= 0.0483


  ask turtles with [infected? and not dead?]
  [
    if random-float 1 < 0.0483
    [
      set infected? false
      ifelse are-survivors-immune?
      [
        set immune? true
        set color gray
      ]
      [set color white]
    ]
  ]
end 

to death
  ;;avg case length is 2 weeks.
  ;;1% of infected die,
  ;;if we are saying each tick equals 1 day,
  ;;and 1% of sick patients should be dead at 2 weeks
  ;;daily mortality should be (1-x)^14=.99, x= 0.000717624
  ask turtles with [infected?]
  [
    if random-float 1 < 0.000717624
    [set dead? true
    set color pink
    set infected? false
    ]
  ]
end 

to calculate-max-infected
  let x (count turtles with [infected? and not dead?])
  if x > max-infected
  [set max-infected x]
end 

to calculate-total-infected
  set total-infected ((count turtles with [infected? and not dead?]))
end 

to calculate-daily-delta
  set daily-delta (count turtles with [infected? and not dead?] - total-infected)
end 

to calculate-avg-daily-delta
  let y (daily-delta)
  set total-delta (total-delta + y)
  set avg-daily-delta (total-delta / ticks)
end 

to calculate-moving-average

  set day-1 (day-2)
  set day-2 (day-3)
  set day-3 (day-4)
  set day-4 (day-5)
  set day-5 (daily-delta)
 if (ticks > 4) [
  set moving-average ((day-1 + day-2 + day-3 + day-4 + day-5) / 5)
  ]
end 

to-report total-adjusted-output
  report cumulative-output / (num-people * 2 * (ticks))
end 

to-report max-infected-prop
  report max-infected / num-people
end 

to-report prop-dead
  let y (count turtles with [dead?])
  report y / num-people
end 

to-report prop-uninfected
  report (count turtles with [not infected? and not immune?]) / num-people
end 

There is only one version of this model, created 4 months ago by Alex Brown.

Attached files

File Type Description Last updated
Effects of Masks on Covid Spread.png preview Preview for 'Effects of Masks on Covid Spread' 4 months ago, by Alex Brown Download

This model does not have any ancestors.

This model does not have any descendants.