This page was automatically generated by NetLogo 5.0.4.
The applet requires Java 5 or higher. Java must be enabled in your browser settings. Mac users must have Mac OS X 10.4 or higher. Windows and Linux users may obtain the latest Java from Oracle's Java site.
In order for this to work, this file, your model file (myFireModel7.nlogo), and the files NetLogoLite.jar and NetLogoLite.jar.pack.gz must all be in the same directory. (You can copy NetLogoLite.jar and NetLogoLite.jar.pack.gz from the directory where you installed NetLogo.)
On some systems, you can test the applet locally on your computer before uploading it to a web server. It doesn't work on all systems, though, so if it doesn't work from your hard drive, please try uploading it to a web server.
You don't need to include everything in this file in your page. If you want, you can just take the HTML code beginning with <applet> and ending with </applet>, and paste it into any HTML file you want. It's even OK to put multiple <applet> tags on a single page.
If the NetLogoLite files and your model are in different directories, you must modify the archive= and value= lines in the HTML code to point to their actual locations. (For example, if you have multiple applets in different directories on the same web server, you may want to put a single copy of the NetLogoLite files in one central place and change the archive= lines of all the HTML files to point to that one central copy. This will save disk space for you and download time for your users.)
powered by NetLogo
view/download model file: myFireModel7.nlogo
(a general understanding of what the model is trying to show or explain)
(what rules the agents use to create the overall behavior of the model)
(how to use the model, including a description of each of the items in the Interface tab)
(suggested things for the user to notice while running the model)
(suggested things for the user to try to do (move sliders, switches, etc.) with the model)
(suggested things to add or change in the Code tab to make the model more complicated, detailed, accurate, etc.)
(interesting or unusual features of NetLogo that the model uses, particularly in the Code tab; or where workarounds were needed for missing features)
(models in the NetLogo Models Library and elsewhere which are of related interest)
(a reference to the model’s URL on the web if it has one, as well as any other necessary credits, citations, and links)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; declarations
globals
[
initial_trees
initial_grass
burned_trees
burned_grass
fire_dataList ; list of sizes of fires
;treeDispersalDistance
;grassDispersalDistance
;global_grass_burn_probability
;global_tree_burn_probability
]
patches-own
[
;vegetation_type
burn_attempt ; boolean
burned ; boolean
pburn_probability; set to be equal to vegetation burn_probability
]
breed [lightning_strikes lightning_strike]
breed [fires fire]
breed [embers ember]
breed [grasses grass]
breed [trees tree]
grasses-own
[
burn_probability
time_born
age
]
trees-own
[
burn_probability
time_born
age
]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; set up
to setup
clear-all
reset-ticks
set-default-shape trees "dot"
set-default-shape grasses "dot"
set-default-shape fires "square"
set-default-shape lightning_strikes "x"
ask patches [
let tree_density random-float 100
ifelse (tree_density < density)
[sprout-trees 1]
[sprout-grasses 1]
]
ask trees [
set color 64
set burn_probability global_tree_burn_probability
set time_born ticks
set age time_born - ticks + 1 ;; trees are age 1 when born
]
ask grasses [
set color 44
set burn_probability global_grass_burn_probability
set time_born ticks
set age time_born - ticks + 1 ;; trees are age 1 when born
]
ask patches [
set burned false
set burn_attempt false
ask grasses-here [set pcolor yellow]
ask trees-here [set pcolor green]
ask grasses-here [set pburn_probability burn_probability]
ask trees-here [set pburn_probability burn_probability]
]
set fire_dataList[ ]
;set initial_trees count patches with [vegetation_type = "tree"]
;set initial_grass count patches with [vegetation_type = "grass"]
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; go
to go
lightning_ignite
fire_spread
vegetation_change
tick
set-current-plot "Fire"
set-current-plot-pen "Fire_Plot"
plot count fires / count patches
clean_landscape
if ticks >= 100 [stop]
set-current-plot "Fire Size Distribution"
histogram fire_dataList
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; lightning_ignite
to lightning_ignite
create-lightning_strikes 1
[
setxy random-pxcor random-pycor
ifelse (random-float 1 < pburn_probability and burned = false and burn_attempt = false)
[
;print "true"
set color red
set burned true
set pcolor black
hatch-fires 1
; ask patch-here [ask trees-here [set breed grass 1] ]; change tree to grass when burned
]
[
;print "false"
set burned false
set color black
]
set burn_attempt true
]
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; fire_fade
to fire_fade
ask fires [
ifelse color < 13
[
set color black
]
[
set color color - 1
]
]
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; fire_spread
to fire_spread
while [ any? patches with [ any? fires-here and any? neighbors4 with [ burn_attempt = false ] ] ]
[
fire_spread_oneStep
fire_fade
]
let fireCount count fires
set fire_dataList fput fireCount fire_dataList
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; fire_spread_oneStep
to fire_spread_oneStep
ask fires
[
ask neighbors with [burned = false and burn_attempt = false]
[
ifelse (random-float 1 < pburn_probability)
[
;print "false"
;set color red
set burned true
set pcolor black
sprout-fires 1 [set color red]
]
[
;print "false"
set burned false
;set color black
]
set burn_attempt true
]
]
;ask fires [print "here"]
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; vegetation_change
to vegetation_change
; if sum [count trees-here] of neighbors > 0 [
ask patches with [burned = true] [
ask trees-here [
let grassCount count grasses in-radius grassDispersalDistance
let treeCount count trees in-radius treeDispersalDistance
let probGrass grassCount / (grassCount + treeCount)
if random-float 1 < probGrass [
set breed grasses
set pcolor blue
set time_born ticks]
]
]
ask patches with [burned = false] [
ask grasses-here [
if age > 5 [
let grassCount count grasses in-radius grassDispersalDistance
let treeCount count trees in-radius treeDispersalDistance
let probTree treeCount / (grassCount + treeCount)
if random-float 1 < probTree [
set breed trees
set pcolor blue
set time_born ticks] ] ]
]
end
;ask patches with [burned = true] [
; ask trees-here [
; if count grasses in-radius 3 > 0 [
; set breed grasses
; set pcolor blue
; set time_born ticks]
; ]
; ]
;ask patches with [burned = false] [
; ask grasses-here [
; if age > 5 and count trees in-radius 3 > 0 [
; set breed trees
; set pcolor blue
; set time_born ticks] ] ]
;;and any? neighbors with trees = true
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; clean_landscape
to clean_landscape
tick
ask patches [
set burned false
set burn_attempt false]
ask fires [die]
ask lightning_strikes [die]
ask patches [
set burned false
set burn_attempt false
ask grasses-here [set pcolor yellow]
ask trees-here [set pcolor green]
ask grasses-here [set pburn_probability burn_probability]
ask trees-here [set pburn_probability burn_probability]
]
ask trees [
set color 64
set burn_probability global_tree_burn_probability
set age ticks - time_born + 1 ;; trees are age 1 when born
]
ask grasses [
set color 44
set burn_probability global_grass_burn_probability
set age ticks - time_born + 1 ;; grasses are age 1 when born
]
; print ticks
end