Erosion

Erosion preview image

2 collaborators

Uri_dolphin3 Uri Wilensky (Author)
79107734_n00-1 Seth Tisue (Author)

Tags

earth science 

Tagged by Reuven M. Lerner over 11 years ago

Model group CCL | Visible to everyone | Changeable by group members (CCL)
Model was written in NetLogo 5.0.4 • Viewed 643 times • Downloaded 107 times • Run 1 time
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.

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: http://maps.google.com/?t=k&ll=52.544312,157.338467&spn=0.070884,0.118103&t=k

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

HOW TO CITE

If you mention this model in a publication, we ask that you include these citations for the model itself and for the NetLogo software:

  • Dunham, G., Tisue, S. and Wilensky, U. (2004). NetLogo Erosion model. http://ccl.northwestern.edu/netlogo/models/Erosion. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.
  • Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.

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 http://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

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
]

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

to setup
  clear-all
  set show-water? true
  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
  ]
  ;; 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 ]
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
  ;; 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 ] ]

  ;; 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
  tick
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 are 10 versions of this model.

Uploaded by When Description Download
Uri Wilensky over 11 years ago Updated to NetLogo 5.0.4 Download this version
Uri Wilensky about 12 years ago Updated version tag Download this version
Uri Wilensky about 12 years ago Updated to version from NetLogo 5.0.3 distribution Download this version
Uri Wilensky almost 13 years ago Updated to NetLogo 5.0 Download this version
Uri Wilensky over 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 14 years ago Model from NetLogo distribution Download this version
Uri Wilensky over 14 years ago Erosion Download this version

Attached files

File Type Description Last updated
Erosion.png preview Preview for 'Erosion' over 11 years ago, by Uri Wilensky Download

This model does not have any ancestors.

This model does not have any descendants.