Erosion

Erosion  preview image

1 collaborator

Default-person Elyse Warren (Author)

Tags

tools and toys 

Tagged by Elyse Warren over 7 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0-BETA1 • Viewed 353 times • Downloaded 23 times • Run 0 times
Download the 'Erosion ' 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 a simulation of soil erosion by water. The user is presented with an empty terrain. Rain falls on the terrain and starts to flow downhill. As it flows, it erodes the terrain below. The patterns of water flow change as the terrain is reshaped by erosion. Eventually, a river system emerges.

HOW IT WORKS

The soil is represented by gray patches. The lighter the patch, the higher the elevation. Water is represented by blue patches. Deeper water is represented by a darker blue. Around the edge of the world is a "drain" into which water and sediment disappear.

Each patch has a certain chance per time step of receiving rain. If it does receive rain, its water depth increases by one.

The model uses the following naive model of flowing water. Water flows to the adjacent patch where the water level is lowest, as long as that patch is lower than the source. The amount of flow is proportional to the difference in level, so that the water level on the two patches is (if possible) equalized.

Erosion is represented by decreasing the elevation of the source patch a bit when flow occurs. The amount of erosion is proportional to the amount of flow.

HOW TO USE IT

The SETUP button generates a terrain. The smoothness of the terrain is controlled by the TERRAIN-SMOOTHNESS slider. Lower values give rougher terrain, with more variation in elevation. If you want a perfectly flat terrain, turn off the BUMPY? switch. If you want to start out with a hill in the middle, turn on the HILL? switch.

The GO button runs the erosion simulation.

You can use the HIDE-WATER button to make the water vanish so you can see the terrain beneath.

The RAINFALL slider controls how much rain falls. For example, if RAINFALL is 0.1, then each patch has a 10% chance of being rained on at each time step.

The SOIL-HARDNESS slider controls how "hard" or resistant to erosion the soil is. Higher values will cause the soil to be harder, and less likely to erode, while lower values will cause the soil to erode more quickly. A value of 1.0 means that the soil will not erode at all.

THINGS TO NOTICE

Initially, the world is covered by lakes. Then rivers start to form at the edge of the world. Gradually, these rivers grow until they have drained all the lakes.

THINGS TO TRY

Use the HIDE-WATER button to make the water invisible, and observe the terrain.

Experiment with the effect of the different sliders on the appearance of the resulting rivers.

See what happens when you start with a perfectly flat terrain. (Is what happens realistic, or does it reveal limitations of the model?)

See what happens when you start with a hill.

EXTENDING THE MODEL

Add evaporation. Does this alter the behavior of the system in interesting ways?

Add "springs" -- point sources from which new water flows.

Add indicator turtles to show the direction and magnitude of flow on each patch.

Experiment with the rules for water flow. Currently, all of the water simply flows to the lowest neighbor. Would a more elaborate rule produce different results?

Add multiple soil types to the terrain, so that the land is of varying hardness, that is, varying speed of erosion.

What would it take to get river deltas to form? You'd need to model sediment being carried by water and then deposited.

REFLECTION

We added elevation capabilities to simulate an example of erosion occuring in one area versus another losing elevation.

When the mouse is pressed down the elevation increases patch by patch and will continue to do that until the mouse is released.

We added a lightening button to simulate the effects lightening has on stopping erosion from occuring in an area. When lightening strikes sand it makes glass and stops erosion represented by the blue color in the model.

When the lightening button is clicked the elevation and erosion stop. When a patch is in the state of lightening all rules do not apply. If it is not lightening then rules are in effect.

NETLOGO FEATURES

Only patches are used, no turtles.

The code depends on agentsets always being randomly ordered.

CREDITS AND REFERENCES

Here is an eroded volcano in Kamchatka with a strong resemblance to this model: https://www.google.com/maps/@52.544312,157.338467,7882m/data=!3m1!1e3?dg=dbrw&newdg=1

Thanks to Greg Dunham and Seth Tisue for their work on this model.

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

This model was created as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227.

Comments and Questions

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

Click to Run Model

globals [
  show-water?     ;; whether the water is visible
  drains          ;; agentset of all edge patches where the water drains off
  land            ;; agentset of all non-edge patches
  click?
  show-lightning?
]

patches-own [
  elevation       ;; elevation here (may be negative)
  water           ;; depth of water here
  drain?           ;; is this an edge patch?
  lightning?
]

to setup
  clear-all
  set show-water? true
  set show-lightning? false
  set click? false
  ask patches [
    ifelse bumpy?
       [ ifelse hill?
           [ set elevation -100 * (distancexy 0 0 / max-pxcor) + 100 + random 100 ]
           [ set elevation random 125 ] ]
       [ set elevation 100 ]
    set water 0
    set drain? false
    set lightning? false
  ]
  ;; the DIFFUSE command is useful for smoothing out the terrain
  if bumpy? [
    repeat terrain-smoothness [ diffuse elevation 0.5 ]
  ]
  ;; make the drain around the edge
  ask patches with [count neighbors != 8]
    [ set drain? true
      set elevation -10000000 ]
  set drains patches with [drain?]
  set land patches with [not drain?]
  ;; display the terrain
  ask land [ recolor ]
  reset-ticks
end 

to recolor  ;; patch procedure
  ifelse water = 0 or not show-water?
    [ set pcolor scale-color white elevation -250 100 ]
    [ set pcolor scale-color blue (min list water 75) 100 -10 ]
  if lightning?
   [ set pcolor scale-color blue elevation 100 -5 ]
end 

to show-water
  set show-water? true
  ask land [ recolor ]
end 

to hide-water
  set show-water? false
  ask land [ recolor ]
end 

to go
 if click? [mouse-down]
  ;; first do rainfall
  ask land [
    if random-float 1.0 < rainfall [
      set water water + 1
    ]

  ]
  ;; then do flow;  we don't want to bias the flow in any
  ;; particular direction, so we need to shuffle the execution
  ;; order of the patches each time; using an agentset does
  ;; this automatically.
  ask land [ if water > 0 [ flow ] ]
  ask land [if lightning? [
    set pcolor yellow
    ]]
  ;; reset the drains to their initial state
  ask drains [
    set water 0
    set elevation -10000000
  ]
  ;; update the patch colors
  ask land [ recolor ]
  ;; update the clock
   go-mouse
  tick
end 

to go-mouse

  ifelse mouse-down?
  [ if not click? [ mouse-down  set click? true ] ]
   [ if click? [ mouse-up  set click? false ] ]
end 

to mouse-down  ; by observer -- handle mouse down event
    ask patch mouse-xcor mouse-ycor [ set elevation 100 lightning ]
  ; ask patch mouse-xcor mouse-ycor [ show "mouse-down" ]
end 

to lightning-mode
set show-lightning? true
end 

to lightning-hide
  set show-lightning? false
end 

to lightning
  if show-lightning?
   [ask patch mouse-xcor mouse-ycor [ask patches in-radius 8 [set lightning? true]]]
end 

to mouse-up  ; by observer -- handle mouse up event
  ;; ask patch mouse-xcor mouse-ycor [ show "mouse-up" ] ;;;test
end 

to flow  ;; patch procedure
  ;; find the neighboring patch where the water is lowest
  let target min-one-of neighbors [elevation + water]
  ;; the amount of flow is half the level difference, unless
  ;; that much water isn't available
  let amount min list water (0.5 * (elevation + water - [elevation] of target - [water] of target))
  ;; don't flow unless the water is higher here
  if amount > 0 [
    ;; first erode
    let erosion amount * (1 - soil-hardness)
    set elevation elevation - erosion
    ;; but now the erosion has changed the amount of flow needed to equalize the level,
    ;; so we have to recalculate the flow amount
    set amount min list water (0.5 * (elevation + water - [elevation] of target - [water] of target))
    set water water - amount
    ask target [ set water water + amount ]
  ]
end 





; Copyright 2004 Uri Wilensky.
; See Info tab for full copyright and license.

There is only one version of this model, created over 7 years ago by Elyse Warren.

Attached files

File Type Description Last updated
Erosion .png preview Preview for 'Erosion ' over 7 years ago, by Elyse Warren Download

This model does not have any ancestors.

This model does not have any descendants.