MIHS-18 period 5 Annie H. Brenna C-W

No preview image

1 collaborator

Default-person Annie Hochberg (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.4 • Viewed 107 times • Downloaded 9 times • Run 0 times
Download the 'MIHS-18 period 5 Annie H. Brenna C-W' modelDownload this modelEmbed this model

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

  1. Set the INITIAL-NUMBER-OF-COLONIES.
  2. Press the SETUP button.
  3. Press the GO button.
  4. Remaining slider parameters (see below) can be adjusted while the model is running.
  5. Look at monitors to see the number of termites that are currently fighting or the number of grasses that have died.
  6. 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:

Please cite the NetLogo software as:

COPYRIGHT AND LICENSE

Copyright 2017 Uri Wilensky.

CC BY-NC-SA 3.0

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

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

Click to Run Model

; 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.