MIHS-18 period 5 Annie H. Brenna C-W
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model is inspired by the natural phenomenon, Fairy Circles, which can be observed in the Namib Desert in Namibia. In the real world, rings of healthy grasses with barren centers form in geometric configurations across the desert plains. These rings, with life cycles of 30-40 years, have been studied by biologists for years.
This model is based on the recent theory proposed by Tarnita and colleagues in 2017. Fairy circles are formed and maintained through a multi-factor process. Subterranean termites create colonies, expand, and compete when they reach a neighboring colony. These termites eat the roots of the grasses surrounding their colonies. As they create colonies and eat grasses, the soil at their colonies becomes more porous and collects water. Grasses around the colonies compete for water. The grasses closer to the colony have more consistent access to water and become healthier. With this interaction of intraspecies competition, fairy circles form and are maintained.
HOW IT WORKS
This model creates a number of termite colonies that spawn termites. At each clock tick, termites randomly wander. If they find roots, termites will collect some of the roots and reorient towards the colony. Termites with roots take a step towards their home colony at each tick. When they reach the colony, the colony gains energy and the termite will go back to wandering. Termites die when they have reached the TERMITE-LIFETIME count. If a termite runs into a termite from another colony, they will fight and one will die.
Colonies create new termites as they gain energy. When the colony has reached a peak size and has enough energy, it will hatch a new colony in the world. Termite colonies die if all the termites are gone.
Grasses increase their root depth as they grow. They need water to maintain their growth. Grasses get water from the moisture in the soil. If grasses do not have enough water, they shrink and die if they have no roots.
HOW TO USE IT
- Set the INITIAL-NUMBER-OF-COLONIES.
- Press the SETUP button.
- Press the GO button.
- Remaining slider parameters (see below) can be adjusted while the model is running.
- Look at monitors to see the number of termites that are currently fighting or the number of grasses that have died.
- Look at the plots to see the distribution of root depth and soil moisture, or the number of colonies in the world.
Parameters
INITIAL-NUMBER-OF-COLONIES: The initial number of termite colonies. ENERGY-GAIN-FROM-GRASS: The amount of energy termite colonies get from grass roots. POPULATION-NEEDED-TO-HATCH-NEW-COLONY: The amount of termites in a colony needed to create a new colony. TERMITE-LIFETIME: The number of ticks a termite lives. TERMITE-AGGRESSION: The range that termites will see and fight termites from another colony. MAX-ROOT-DEPTH: The maximum depth grasses will grow. MAX-MOISTURE-IN-SOIL: The maximum water the soil will hold. RAIN-RATE: The amount of rain water hitting a patch at each tick.
Notes:
- Termites lose one unit of life at each tick.
- In order for plants to survive and grow, they require a base amount of water plus a proportion of water based on their root depth.
Plots and Monitors
DEAD GRASSES: monitors the number of patches that have dead grasses COLONY COUNT: plots the number of termite colonies present FIGHTING TERMITES: plots the number of termites that have seen a termite from another colony. ROOT DEPTH DISTRIBUTION: plots the distribution of root depth across all patches SOIL MOISTURE DISTRIBUTION: plots the distribution of soil moisture across all patches
Visualization
In this world, termite colonies are represented as magenta circles. Each colony as an initial number of green termites, a population that increases over time. While each patch is associated with both grasses and accumulated soil moisture, patches are colored to reflect the state of grasses in the world. Brown patches are those with dead grass. Green patches are those with living grass. The shade of green reflects the size of grasses. Grasses that are lighter greed have longer roots than those that are darker green.
With this representation, the focus is on the aggregate level interactions between termite colonies and grasses. As such, the termites are visualized in green to background their behavior in the model.
THINGS TO NOTICE
Can you identify when Fairy Circles emerge in the model? Notice where dead patches emerge in the model versus where grasses stay alive. Where do you see the healthiest grasses with the longest roots? Is this related to how water is distributed across the patches?
Why do some termite colonies appear better at gathering food around them? Which termite or colony related parameters affect this?
Watch the patterns of termite colonies emerge. When are new colonies successful and when do they fail?
Observe the root depth of grasses in the model. Is there a relationship between soil moisture and root depth? Observe what happens When you change the parameters related to moisture (MAX-MOISTURE-IN-SOIL, RAIN-RATE).
Why do you suppose that some variations of the model might be stable while others are not?
THINGS TO TRY
Increase and decrease the RAIN-RATE in the model and observe the outcome in the model. How does rain impact the development of Fairy Circles? Vary the MAX-MOISTURE-IN-SOIL, does this change the impact of rain-rate in the world?
How does the MAX-ROOT-DEPTH change the size or pattern of fairy circles? Explore this parameter within the world.
Explore termite aggression in the world. How does termite aggression affect the development of Fairy Circles?
Can you find parameters that cause all termite colonies to die?
This model simplifies the naturally observed phenomenon through assumptions like how termites fight, grasses grow, or how/when it rains in the model. Can you look through the code tab to find and modify one of these assumptions to reflect your understanding of the system?
EXTENDING THE MODEL
Can you extend the model to add in soil porosity?
Can you extend the model by making the intraspecies competition a switch that could be turned on and off?
Can you extend the model by adding in seasonality that affects the rain rate?
RELATED MODELS
- Termites
CREDITS AND REFERENCES
This model was inspired by the journal article:
Tarnita, C. E., Bonachela, J. A., Sheffer, E., Guyton, J. A., Coverdale, T. C., Long, R. A., & Pringle, R. M. (2017). A theoretical foundation for multi-scale regular vegetation patterns. Nature, 541(7637), 398-401.
HOW TO CITE
If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.
For the model itself:
- Anton, G. and Wilensky, U. (2017). NetLogo Fairy Circles model. http://ccl.northwestern.edu/netlogo/models/FairyCircles. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Please cite the NetLogo software as:
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
COPYRIGHT AND LICENSE
Copyright 2017 Uri Wilensky.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.
Comments and Questions
; Termite colonies and termites are both breeds of turtles. turtles-own [energy] breed [ colonies colony ] breed [ termites termite ] breed [ sheep a-sheep ] sheep-own [energy] globals [ grow-rate ] ; keeps track of the rate all grasses should grow colonies-own [ energy ] ; colonies have energy and a number of termites termites-own [ home-colony has-food? termite-energy lifetime-left ] ; termites have a home colony, keep track of if they are carrying food, energy, and a lifetime countdown. patches-own [ root-depth moisture alive? ] ; patches have both an amount of root depth and moisture. Patches can either be alive or not. to setup clear-all set grow-rate 1 ; set root-depth in patches, set as alive, and recolor based on root-depth, set moisture evenly across world ask patches [ set root-depth max-root-depth set alive? true set moisture max-moisture-in-soil / 2 color-grass ] ; create colonies based on slider, set shape, color, and move to a patch create-colonies initial-number-of-colonies [ set shape "circle" set color 123 move-to one-of patches with [not any? colonies-here] set size 2 ] create-sheep initial-number-sheep ; create the sheep, then initialize their variables [ set shape "sheep" set color white set size 1.5 ; easier to see set label-color blue - 2 set energy random (2 * sheep-gain-from-food) setxy random-xcor random-ycor ] ; colonies hatch termites and sets that colony as home, termites are given a life-time based on slider ask colonies [ hatch-termites 10 [ set shape "ant" set color 53 set home-colony myself set has-food? false set size 1 set lifetime-left termite-lifetime ] ] reset-ticks end to go ask sheep [ move set energy energy - 1 eat-grass ] ; termites without food wander until they reach roots ask termites with [not has-food?] [ find-food ] ; if termites have food, turn back to home ask termites with [has-food?] [ return-to-colony ] ; if a termite runs into one from another colony, fight. ask termites [ fight-competitor ] ; based on energy, colonies create new termites or a new colony. ask colonies [ colony-death hatch-new-termites hatch-new-colony ] ; grasses absorb water, spread, and can die ask patches with [ alive? = True ] [ absorb-water sprout-new-growth wither ] ask patches [ rain ] ; diffuse water in soil diffuse moisture .5 tick end ; this is a sheep procedure to move rt random 50 lt random 50 fd 1 end to eat-grass if pcolor = green [ set color brown set energy energy + sheep-gain-from-food ] end ; this is a termite procedure to find-food ; termites without food move randomly rt random 90 lt random 90 fd 1 ; if patch under termite has root-depth, termites have food if root-depth > 0 [ set root-depth root-depth - energy-gain-from-roots set has-food? true ] ; reduce the life of termites , die if lifetime < 0 set lifetime-left lifetime-left - random 10 if lifetime-left <= 0 [ die ] end ; this is a termite procedure to return-to-colony face home-colony fd 1 set lifetime-left lifetime-left - random 10 ; when termite reaches home, give energy to colony, termite no longer has food, randomly set heading if [member? self [colonies-here] of myself] of home-colony [ ask home-colony [ set energy energy + energy-gain-from-roots ] set has-food? false set heading random 360 ] ; when termites have food, termites lose less life (eating) if lifetime-left <= 0 [ die ] end ; this is a termite procedure. to fight-competitor if termite-aggression > 0 [ let my-competitors other termites-here in-radius termite-aggression with [ home-colony != [home-colony] of myself ] ; if termite aggression is greater than 0 and they have another termite in their area from a different colony, ; they identify them as competitors and fight them if any? my-competitors [ ; ifelse random 2 = 0 [ ;one of the termites will randomly die ifelse random 2 = 0 [ ask one-of my-competitors [ die ] ] [ die ] ] ] end ; this is a colony procedure to colony-death ; colonies die if there are no termites left let resident-termites count termites with [home-colony = myself] if resident-termites = 0 [ die ] end ; this is a colony procedure to hatch-new-termites let resident-termites count termites with [home-colony = myself] if resident-termites < population-to-hatch-new-colony [ ; if colonies have enough energy, hatch new termite if energy > energy-needed-for-new-termite [ hatch-termites 1 [ set shape "ant" set color 53 set home-colony myself set has-food? false set size 1 set label "" set lifetime-left termite-lifetime ] set energy 0 ] ] end ; this is a colony procedure to hatch-new-colony let resident-termites count termites with [home-colony = myself] if resident-termites >= population-to-hatch-new-colony [ ; if have enough energy and reach the population cap, create a new colony, set energy to 0 in original colony if energy > energy-needed-for-new-termite [ set energy 0 hatch-colonies 1 [ set shape "circle" set color 123 move-to one-of patches with [not any? colonies-here ] set size 2 ; new colony hatches 10 termites hatch-termites 10 [ set shape "ant" set color 53 set home-colony myself set has-food? false set size 1 set label "" set lifetime-left termite-lifetime ] ] ] ] end ; this is a grass procedure to absorb-water ; each patch takes moisture from soil based on constant + 1/10th of root depth let moisture-needed 1 + (root-depth / 10) ifelse moisture >= moisture-needed [ ; if moisture, grow set moisture moisture - moisture-needed set root-depth root-depth + 1 ][ ; if not enough moisture shrink set root-depth root-depth - moisture-needed ] ; roots cannot grow more than the max root depth if root-depth >= max-root-depth [ set root-depth max-root-depth ] end ; this is a grass procedure to sprout-new-growth ; if root-depth reaches max and there is a dead patch near it, spread into new patch if root-depth > max-root-depth * .75 [ if any? neighbors with [ alive? = False ] [ ask one-of neighbors with [ not alive? ] [ set alive? true color-grass set root-depth max-root-depth / 10 ] ] ] end ; this is a grass procedure to wither ; if root-depth is zero, die, color brown ifelse root-depth <= 0 [ set pcolor brown set alive? False set root-depth 0 ][ color-grass ] end ; this is a patch procedure. to rain ; if the patch is not at max moisture rate, increase the moisture by the rain rate. if moisture < max-moisture-in-soil [ set moisture moisture + rain-rate if moisture > max-moisture-in-soil [ set moisture max-moisture-in-soil ] ] end ; this is a grass procedure. Recolor grass based on root-depth to color-grass set pcolor (scale-color green root-depth -20 140) end ; Copyright 2017 Uri Wilensky. ; See Info tab for full copyright and license.
There is only one version of this model, created over 5 years ago by Annie Hochberg.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.