Erosion
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:
- 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 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 2004 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.
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
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 about 8 years ago by Elyse Warren.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Erosion .png | preview | Preview for 'Erosion ' | about 8 years ago, by Elyse Warren | Download |
This model does not have any ancestors.
This model does not have any descendants.