globals [ initial-trees ;; how many trees (green patches) we started with burned-trees ;; how many have burned so far runs-done points ] ;; CODAP methods to be overloaded to codap-add-collection [ name columns ] end to codap-initialize [ name ] end to codap-open-case [ name data ] end to codap-close-case [ name data ] end to codap-record-data [ name data ] end to codap-record-cases [ name data ] end to codap-open-table end to setup-runs clear-all set density min-density set runs-done -1 end to do-run if not any? turtles [ ifelse runs-done > -1 [ codap-record-cases "Ticks" points codap-close-case "Runs" (list ticks density ((burned-trees / initial-trees) * 100)) ] [ set runs-done 0 ] if runs-done >= runs-per-density [ set density density + 1 set runs-done 0 if density > max-density [ stop ] ] let runs-done-local runs-done setup set runs-done runs-done-local + 1 ] go end to setup clear-all resize-world 0 world-size 0 world-size set points [] set-default-shape turtles "square" ;; make some green trees ask patches with [(random-float 100) < density] [ set pcolor green ] ;; make a column of burning trees ask patches with [pxcor = min-pxcor] [ ignite ] ;; set tree counts set initial-trees count patches with [pcolor = green] set burned-trees 0 codap-open-case "Runs" (list 0 density 0) reset-ticks set points lput (list ticks ((burned-trees / initial-trees) * 100)) points end to startup codap-add-collection "Runs" (list "Ticks" "Density" "Percent Burned") codap-add-collection "Ticks" (list "Tick" "Percent Burned") codap-initialize "Fire" codap-open-table end to go if not any? turtles ;; either fires or embers [ codap-record-cases "Ticks" points codap-close-case "Runs" (list ticks density ((burned-trees / initial-trees) * 100)) stop ] ask turtles with [ color = red ] [ ask neighbors4 with [pcolor = green] [ ignite ] set color color - 1 ] fade-embers tick set points lput (list ticks ((burned-trees / initial-trees) * 100)) points end ;; creates the fire turtles to ignite ;; patch procedure sprout 1 [ set color red ] set pcolor black set burned-trees burned-trees + 1 end ;; achieve fading color effect for the fire as it burns to fade-embers ask turtles with [ color != red ] [ set color color - 0.3 ;; make red darker if color < red - 3.5 ;; are we almost at black? [ set pcolor color die ] ] end