Testing
Model was written in NetLogo 6.4.0
•
Viewed 43 times
•
Downloaded 2 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
;~~~~~~~~~~~~ These are globals breed [Mosquitos Mosquito] breed [Reindeers Reindeer] extensions [ csv time ] globals [ grass-growth-rate ; the rate at which grass gows grass-density ; the density of patches that is vegetation grass-probability ; the probability that grass has not been overgrazed grass-regrowth-rate ; the rate at which grass grows back grass-energy ; amount of energy grass provides reproductive-energy ; amount of energy needed for reproduction new-turtle ; spawn a new turtle herd-size ; the size of a herd initial-energy ; We assume each reindeer will live for 12 years (365 ticks * 12 years = 4380) mortality-rate ; the rate at which reindeer die risky-reindeer ; the rate at which reindeer will explore cluster-center ; this is the center of the blue water body mosquito-start reindeer-density ; This is how many reindeer can occupy any one patch at a given time snow-density wise-one ; oldest reindeer patch-radius ; This is the radius of the lakes elevation ; this is the elevation of the terrain elevation-max ; This is the maximum elevation of the terrain in the model current-date ; This is the current date of the tick current-month ; This is the current month of the date of the tick, useful for categorizing meterological seasons time-series ; This is if user uploads a .csv file with the first column being a datetime (YYYY-MM-DD) and the second column is temperature in degrees Celcius (must have 1 row of headers) temperature ; This is the daily temperature for the simulation index ; This is to keep track of the list in the time-series rainy-days ; This is to track how many consecutive days of rain there has been cold-warm-days ; This is to track how many consecutive warm days above 0 C there have been ] patches-own [ grass-amount ; This is how much units of grass there is, 1 unit of grass can feed 1 turtle ] ;~~~~~~~~~~~~These are turtle properties Reindeers-own [ energy ; enrgy of the turtle hunger ; minimum amount of grass need to be eaten for turtle survival age ; the age of turtles in ticks reproductiveness ; the reproductive ability for turtles, based on age and body condition infected? ; if this is true, the turtle is infected immunity-remaining ; how many weeks of immunity the turtle has left flockmates ; agentsset of nearby turtles nearest-neighbor ; closest flockmate immune? ; if this is true a turtle is immune recovered? ; if this is true a turtle has recovered sick-time ; when a turtle became sick dead? ; when true, a turtle is dead larvae-count ; how many larvae are in each reindeer ] Mosquitos-own [ age ; age of mosquito (22-76 ticks, days), adult after 20 ticks infected ; infected with m.f. infected? blood-meal ; cumulative count of blood for oviposit ] to clear-run clear-all end to setup clear-output clear-all reset-ticks ifelse file-option? [ ;set current-time time:create "2010-01-01" setup-file ][ set current-date time:create Date_opt ] setup-patches setup-reindeer setup-mosquitos set cold-warm-days 0 set rainy-days 0 end ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This is to setup the world to setup-file set time-series csv:from-file File-name let start-date first item 1 time-series let end-date first item (length time-series - 1) time-series set current-date start-date set index 1 end to setup-patches resize-world 0 world-size 0 world-size ; set up world size. This is in m. 1 patch is 100 m x 100 m ask patches [ ifelse random-float 1.0 < 0.2 ; Adjust the probability (0.2 in this case) for green patches [ set pcolor green set grass-amount 5] [ set pcolor brown set grass-amount 0] ] create-blue-clusters ; Create irregular-shaped clusters of blue patches end ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~ This is to set up a water body ~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ to create-blue-clusters ifelse patch-sizes = "small" [ set patch-radius world-size * 0.05 ][ ifelse patch-sizes = "medium" [ set patch-radius world-size * 0.15 ][ set patch-radius world-size * 0.3 ]] repeat patches-amt [ set cluster-center patch random-xcor random-ycor ask cluster-center [ set pcolor blue ask patches in-radius patch-radius [ set pcolor blue ] ] ] ; Define mosquito-start patches at the edge of blue patches let edge-patches patches with [ pcolor = blue and any? neighbors with [pcolor != blue] ] ifelse any? edge-patches [ set mosquito-start edge-patches ][ user-message "No suitable mosquito start patches found" ] end ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~ This is to set up the reindeer;~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ to setup-reindeer let non-blue-patches patches with [pcolor != blue] ; consider only non-blue patches ; Set initial positions closer together near the nearest non-blue patch let p one-of non-blue-patches create-Reindeers Reindeer-pop [ set shape "reindeer" set size 1.5 set color 33 set age 0 set energy initial-energy set immune? false set dead? false set energy 300 set infected? false set larvae-count 0 if random-float 1 < initial-infected-rate [ set infected? true set larvae-count larvae-count + 1 set color violet ] set reindeer-density 5 move-to p ; this is the initial point let i 0 let q patch-ahead random-float (herd-spread * Reindeer-pop) while [ i < reindeer-density] [ rt random 360 ;cw: we were missing random turns so it was only doing random distance below set q patch-ahead random-float (herd-spread * Reindeer-pop) ;cw: copied this inside the while so q is a new patch each loop of the while, also changed to * reindeer to match herd-movement if q != nobody and [pcolor] of q != blue and [pcolor] of q != white and [count Reindeers-here] of q < reindeer-density [ move-to q set i reindeer-density ;cw: if they move, break the while ] set i i + 1 ] ;cw: optional check to more fully scatter over-crowded reindeer (or increase reindeer-density above) if count Reindeers-here > reindeer-density [ move-to one-of patches with [pcolor != blue and pcolor != white and count Reindeers-here < reindeer-density] ] ] end ;~~~~~~~~~~~~~~~~~~~ This is to set up mosquitos to setup-mosquitos create-Mosquitos Mosquitos-pop[ set shape "mosquito" set size 0.45 set color white set age 0 ;set age random-float max-age set blood-meal 0 let initial-patch one-of mosquito-start ;patches with [pcolor = blue] move-to initial-patch ] end ;~~~~~~~~~~~~~~~~~~~ This is to set up mosquitos ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++++ +++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ++ + + ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++++ +++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ to go ;;;;;;;;;;;;;;; PATCHES STUFF ;;;;;;;;;;;;;;; grow-grass eat-grass herd-movement ;;;;;;;;;;;;;;; REINDEER STUFF ;;;;;;;;;;;;;;; if reindeer-life-cycle? [ reproduce age-and-die ] infect-reindeer ;;;;;;;;;;;;;;; MOSQUITO STUFF ;;;;;;;;;;;;;;; mosquito-age mosquito-move mosquito-bite mosquito-reproduce-die ;;;;;;;;;;;;;;; TEMP STUFF (FROM FILE OPTION) ;;;;;;;;;;;;;;; ifelse file-option? [ if index < length time-series [ set temperature last item index time-series set current-date first item index time-series ] set index index + 1 if index > length time-series [ user-message "The simulation has reached the end of your file points" stop ] ][ temp ifelse temperature > 0 [set cold-warm-days cold-warm-days + 1] [set cold-warm-days 0] set current-date time:plus current-date 1 "days" ] ;;;;;;;;;;;;;;; RAIN STUFF ;;;;;;;;;;;;;;; if climate-on? [precipitation] tick end ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ to grow-grass ; grass grows on dirt patches at a constant rate ; Within 14 ticks, theres a threshold for 5 reindeer grazing ; Grass will regrow set grass-regrowth-rate 0.0025 ask patches with [pcolor = brown] [ if random-float 1 < grass-regrowth-rate [ set pcolor green set grass-amount 5 ; later I want to add a variation on green depending on grass-amount ;Last visited by reindeer over a certain amount of time, will regrow. Healthier grass patch after an amount of time ] ] end ;~~~~~ ++ ++ ++++++++ ++++++++ +++++ ++++ ++++ ++++++++ ++++++++ ++ ++ ~~~~~~~~~~ ;~~~~~ +++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~ +++ ++++ ++ ++ ++ ++ ++ ++ ++++ ++++ +++ ~~~~~~~~~~ ;~~~~~ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~ ++ ++ ++++++++ ++++++++ ++ ++++ ++++ ++++++++ ++++++++ ++ ++ ~~~~~~~~~~ to butcher ask n-of butcher-amt Reindeers [die] print (word "You have butchered " butcher-amt " reindeer") end to eat-grass ask reindeers [ if pcolor = green and grass-amount > 0 [ set energy energy + 10 ask patch-here [ set grass-amount grass-amount - 1 if grass-amount = 0 [ set pcolor brown ] ] ] ] end to reproduce ; ask Reindeers with [energy > 150 and random-float 1 < reproduction-rate] [ let nearby-Reindeers other Reindeers in-radius vision let parent-Reindeers min-one-of nearby-Reindeers with [self != myself] [distance myself] if parent-Reindeers != nobody [ hatch-reindeers 1 [ let mean-x mean [xcor] of nearby-Reindeers let mean-y mean [ycor] of nearby-Reindeers setxy mean-x mean-y set age 1 set energy initial-energy ] face parent-Reindeers fd 1 ] ] end to age-and-die ;Adult reindeer max age is 20 years. Each tick is a day (20 years is 7300 days) ;Reindeer become adults at 5 (Females) and 6 (Males). For now, will set for 5. ask Reindeers [ set age age + 1 set energy energy - 1 if age > 7300 or energy <= 0 [ die] ] if wise-one = nobody [ set wise-one min [who] of Reindeers ; this is the minimum ID of all turtles, the turtle with the lowest identifier ask Reindeer wise-one [set color yellow] ] end to infect-reindeer ask reindeers [ if any? turtles-here with [breed = mosquitos and infected > 0] [ if random-float 1 < 0.5 [ set infected? true set larvae-count larvae-count + 1 ] ] ] end ;to herd-movement-stationary ; ; ; Ask all turtles to perform herd movement logic ; ; Check if the turtle is a cow ; ; ask turtles [ ; ; if shape = "cow" [ ; let all-turtles other turtles ; let nearby-turtles all-turtles with [distance myself < vision] ; ; ; check if turtle is on a non-frozen patch next to a water patch ; ; let risky? false ; let neighboring-patches patches in-radius 1 with [pcolor = blue] ; if pcolor != white and any? neighboring-patches [ ; set risky? (random-float 1 < risky-reindeer) ; ] ; ; ; move towards mean position if not risky ; if not risky? and any? nearby-turtles [ ; let mean-x mean [xcor] of nearby-turtles ; let mean-y mean [ycor] of nearby-turtles ; let mean-position patch mean-x mean-y ; ; let dispersion-factor herd-spread * Reindeer-pop ; let max-dispersion round(vision * 0.5) ; let min-dispersion round(vision * 0.25) ; let radius random-float (max-dispersion - min-dispersion) + min-dispersion ; ; ; find all patches within radius that are not frozen or water and have fewer than 5 turtles ; let non-frozen-patches patches with [ ; pcolor != white and ; pcolor != blue and ; distance myself <= radius and ; count Reindeers-here < 5 ; ] ; ; ; move towards a non-frozen patch if there is one, otherwise move randomly ; ifelse any? non-frozen-patches [ ; let destination one-of non-frozen-patches ; face destination ; fd 1 ; ] [ ; rt random 360 ; fd 1 ; ] ;]]] ; ;end to herd-movement let non-frozen-patches patches with [ ;Patches that are not snow or water pcolor != 105 ] set wise-one min [who] of Reindeers ; this is the minimum ID of all turtles, the turtle with the lowest identifier ask Reindeer wise-one [set color yellow] let dispersion-factor herd-spread * Reindeer-pop ; this is how many patches wide herded reindeer can move around in let herd-patches non-frozen-patches with [distance Reindeer wise-one < dispersion-factor] ; contain a subset of non-frozen-patches that are within the specified distance from the turtle wise-one let lead-x [xcor] of Reindeer wise-one let lead-y [ycor] of Reindeer wise-one let lead-distance patch lead-x lead-y ; The location of wise-one will dictate movements of all turtles ask Reindeer wise-one [ face one-of herd-patches in-radius vision if patch-ahead 1 != nobody and [pcolor] of patch-ahead 1 != blue [ fd 1 ] ] ask Reindeers [ ; if the distance of the turtle to the lead-turtle is less than the dispersion factor, then it will move randomly within the "radius" of the herd ; However, if the distance of the turtle to the lead turtle is more than the dispersion factor, then it will move forward one towards the leader ; We also want to make sure there are only 5 turtles on a patch ifelse distance Reindeer wise-one < dispersion-factor [ rt random 360 if patch-ahead 1 != nobody and member? patch-ahead 1 non-frozen-patches and [count Reindeers-here] of patch-ahead 1 < 5 [ ; rename to land fd 1];[if count turtles-here > 5 [type "a"]] ][ ; this is asking if the patch ahead the turtle satifies the following conditions. If it does it moves fd 1. If not it faces the wise-one and moves fd 1 towards them ;[1] That the patch is a herd-patch, meaning it is grass and not frozen ;[2] that there are less than 5 turtles on that patch face Reindeer wise-one ifelse patch-ahead 1 != nobody and member? patch-ahead 1 herd-patches and [count Reindeers-here] of patch-ahead 1 < 5 and [pcolor] of patch-ahead 1 != blue [ fd 1 ] [ rt 90 - random 180 if patch-ahead 1 != nobody and member? patch-ahead 1 non-frozen-patches and [count Reindeers-here] of patch-ahead 1 < 5 and [pcolor] of patch-ahead 1 != blue [ fd 1 ];[if count turtles-here > 5 [type "b"]] ] ] if patch-here = blue [ rt 180 fd 1 ] ;if count turtles-here > 5 [type "c"] ] ; if [pcolor] of patch-here = blue [ ; print "Turtle is on a blue patch." ; stop ] ; CHECK HOW MANY REINDEER PER PATCH ; if max [count turtles-here] of patches > 5 [ ; print word ("There are more than 5 turtles on a patch:") max [count turtles-here] of patches ; ] end ;~~~~~~~~~~ +++ +++ +++++ ++++++ +++++ ~~~~~~~~~~ ;~~~~~~~~~~ ++ + + ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~~~~~~ ++ + + ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~~~~~~ ++ + + ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~~~~~~ ++ + ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~~~~~~ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~ ;~~~~~~~~~~ ++ ++ ++ ++ ++ ++ +++ ~~~~~~~~~~ ;~~~~~~~~~~ ++ ++ +++++ ++++++ +++++ ++ ~~~~~~~~~~ to mosquito-age ; Age adult mosquitos ask Mosquitos with [color != white] [ set age age + 1] ; Mosquito larvae and pupa will grow above 5 degrees if temperature > 4 and temperature < 40 [ if member? current-month [3 4 5 6 7 8 9] [ ask mosquitos with [color = white] [ set age age + 1 if age >= 20 [ set color 1 ] ] ] ] ; but half will die if temperatures hit above 40 if temperature > 40 [ ask n-of (0.5 * count mosquitos with [color = white]) mosquitos with [color = white] [ die] ] end to mosquito-move ;This is set up so that all mosquitos move around the water body ;as they are flood-water mosquitos. ask Mosquitos with [color != white] [ ifelse blood-meal < blood-max [ let r min-one-of Reindeers [distance myself] ifelse distance r < mosquito-vision [ face r fd random-float mosquito-move-day] [ rt random 360 fd random-float mosquito-move-day] ] [ let t min-one-of mosquito-start [distance myself] face t ; print "t" ifelse distance t < mosquito-move-day [ move-to t][ fd random-float mosquito-move-day ] ] ] end to mosquito-bite ; this model will follow the SIRS ;Susceptible ;Infected ; Only consider mosquitoes that are either healthy (color 1) or already infected (color red) ask Mosquitos with [color = 1 or color = red] [ ; If there are reindeer on the same patch as the mosquito if count Reindeers-here != 0 [ let lunch 0 ; Initialize a variable 'lunch' to store that the mosquito has had a blood meal or partial blood meal ifelse count Reindeers-here <= mosquito-bite-day ; If the number of reindeer on the patch is less than or equal to the number of bites a mosquito can take in a day [set lunch Reindeers-here] [set lunch n-of mosquito-bite-day Reindeers-here ] ; if there are 50 reindeer, they will bite all 50, if 100 reindeer, they will bite random 50 if mosquito bite is 50 set blood-meal blood-meal + (count lunch * random-float blood-meal-size) ; Increase the mosquito's blood meal by an amount proportional to the number of reindeer bitten and a random factor of the blood-meal-size ; if blood-meal >= blood-max [ ; print "blood!" ; print blood-meal] let infected-lunch lunch with [infected? = true] ; Create a subset of 'lunch' that includes only the reindeer that are already infected let i 0 while [i < count infected-lunch] [ ; Create a subset of 'lunch' that includes only the reindeer that are already infected if random-float 1 < infected-probability [ ; If a randomly generated number between 0 and 1 is less than the infected-probability set infected 1 ; can add m.f. load here (avg 3-6 per mosquito) set color red ] set i i + 1 ] print infected-lunch ] ] end to mosquito-reproduce-die ; Only reproduction happening from April to September if member? current-month [4 5 6 7 8 9] [ ask mosquitos with [blood-meal >= blood-max] [ if member? patch-here mosquito-start [ hatch-mosquitos eggs [ set infected 0 set color white set age 0 set blood-meal 0 ] ; print "babies!"] ; print count mosquitos with [color = white] set blood-meal 0 ] ; Some percentage of adult mosquitos die after reproduction if random-float 1 < percent-die-oviposit [ die ] ] ] ; Mosquitoes have a short life expectancy ask mosquitos with [age >= max-age] [ die] ; Mosquitos die off after september ask mosquitos with [color != white] [ if member? current-month [10 11 12 1 2 3] and temperature < 1 [ die ] ] end ;~~~~~~ ++++++++ ++ ++++++++ +++++ +++++ ++++++++ ++++++++ +++++++ ~~~~~~~~~~~~ ;~~~~~~ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~~~ ;~~~~~~ ++ ++ ++ ++ ++++ ++ ++ ++ ++ ++ ~~~~~~~~~~~~ ;~~~~~~ ++ ++ ++ ++ ++ ++ ++ ++ ++ +++++ ~~~~~~~~~~~~ ;~~~~~~ ++ ++ ++ ++ ++ ++++++++ ++ ++ ~~~~~~~~~~~~ ;~~~~~~ ++ ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~~~ ;~~~~~~ ++ ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~~~ ;~~~~~~ ++++++++ ++++++++ ++++++++ ++ ++ ++ ++ ++ +++++++ ~~~~~~~~~~~~ to temp ; This is to set random temperatures for the meterological seasons of DJF, MAM, JJA, SON ; DJF is between -30 and 00 ; MAM is between -05 and 05 ; JJA is between 10 and 15 ; SON is between 00 and 05 set current-month time:get "month" current-date ifelse member? current-month [1 2 12] [ set temperature random -30 ][ ifelse member? current-month [3 4 5] [ set temperature -5 + random 5 ][ ifelse member? current-month [6 7 8] [ set temperature 10 + random 15 ][ set temperature 0 + random 5 ] ] ] end to precipitation ; procedure to create random snow when the temperature is below 0. for now if the month is DJF, snowfall has a probability of 30% ; if the month is MAM, snowfall has a probability of 15% ; if the month is JJA, snowfall has a 5% ; if the month is SON, snowfall has a 10% ; the snow should "disappear" after 3 consecutive days of temp over 0 degrees let precip-prob 0 let precip-dens 0 let snow-prob 0 let snow-dens 0 set current-month time:get "month" current-date ifelse member? current-month [12 1 2] [ set precip-prob 5 set precip-dens 0.05 * world-size set snow-prob 30 set snow-dens 0.5 * world-size ] [ ifelse member? current-month [3 4 5] [ set precip-prob 10 set precip-dens 0.15 * world-size set snow-prob 15 set snow-dens 0.3 * world-size ] [ ifelse member? current-month [6 7 8] [ set precip-prob 30 set precip-dens 0.40 * world-size set snow-prob 5 set snow-dens 0.1 * world-size ] [ set precip-prob 15 set precip-dens 0.25 * world-size set snow-prob 10 set snow-dens 0.2 * world-size ] ] ] ask n-of snow-dens patches with [pcolor = brown or pcolor = green] [ if temperature < 1 [ set pcolor white] ] ; Snow melts after 3 consecutive warm days (days above 0) ask patches with [pcolor = white] [ if temperature > 0 and cold-warm-days > 2 [ set pcolor brown] ] ;Rain if temperature > 0 [ ;Rain on grass or dirt ifelse random-float 100 < precip-prob [ set rainy-days rainy-days + 1 ask n-of precip-dens patches with [pcolor != blue] [ set pcolor 104 ] ][ set rainy-days 0 ] ;Expand or contract ephemeral water depending on how much it rained ;if it rains more than 2 consecutive days, the area will pond randomly ifelse rainy-days < 2 [ ask patches with [pcolor = 104] [ set pcolor brown ] ][ ask patches with [pcolor = 104] [ if any? neighbors with [pcolor = brown or pcolor = green] [ ask one-of neighbors with [pcolor = brown or pcolor = green] [ set pcolor 104 ] ] ] ] ] ;if it rains for 5+ consecutuve days, then the permanent waterbodies will flood and expand if rainy-days > 4 [ ask patches with [pcolor = green or pcolor = brown] [ if any? neighbors with [pcolor = blue] [ set pcolor 107] ] ] ; if it doesn't rain for 2 days, then the permenant water bodies that previously flooded will contract. (I will have to fix this) if rainy-days < 2 [ ask patches with [pcolor = 107] [ set pcolor brown] ] end
There is only one version of this model, created 6 months ago by test testing.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Testing.png | preview | Preview for 'Testing' | 6 months ago, by test testing | Download |
This model does not have any ancestors.
This model does not have any descendants.