Water Cycle MSU
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This is an interactive simulation that models the water cycle. It aims to illustrate how relative humidity and the temperature of air, mountain, land, and lake affect the movement of water molecules. This model represents the following five phases of the water cycle: evaporation, condensation, precipitation, surface runoff, and infiltration.
Water is one of the most important element on Earth that is necessary to sustain life. All living organisms need water to survive. Also, learning how water can be made available for consumption helps us understand how we can be responsible in managing our water resources. Therefore, it is important to educate every generation on what causes the water cycle and how it works.
In order to understand the concept of water cycle, one must have knowledge of how the Earth’s gravity pulls objects toward its center and how the sun causes heat on Earth. This simulation will potentially help the user to describe and reason non-numerically about the factors that affect the flow of the water molecules in the cycle. The user will observe the behavior of the water molecules while changing the relative humidity and temperature (air, mountain, land, and lake) parameters.
HOW IT WORKS
How does Water Cycle work?
Water vapors (orange dots) evaporate from the lake (light blue curved shape) and rise into the sky (blue background). The occurrence and speed of evaporation vary depending on the temperature of the lake. As the water vapor moves into the sky, the cloud (white cloud) forms. This cloud forms by accumulating the water vapor which cools off during evaporation. Then, the cloud is blown by the wind towards another place, such as the mountain (triangular shape). Then the cloud appears darker (dark cloud) and releases rain (ticks) or snow (white dots) while it slowly disappears (growing smaller).
The precipitation in the form of rain, snow or a mixture of rain or snow varies depending on the percentage of humidity and the temperature of air, mountain, land, and lake. These temperatures are mainly influenced by the sun (yellow object appearing in the sky), gases, and other things.
On top of the mountain, there are existing snowcaps (white triangular shapes). The melting of the snowcaps and precipitation causes water to runoff (flowing of blue dots from the top of the mountain) towards the lower surface of the Earth (green or white plain). Similar to precipitation, the occurrence of surface runoff depends on the temperature of the mountain.
Meanwhile, the Earth's surface (plain on the lower ground) is filled with plants (turns green) or covered with snow (turns white) depending on the temperature of the land. Underneath the ground surface, the water (ticks) infiltrates. The occurrence of infiltration varies depending on the temperature of the land.
Then, the water that is accumulated on the Earth's surface (including lake, ponds, and oceans) goes back into the sky in the form of water vapor. Similar to the other phases of the water cycle, the temperature of the land, lake, pond and ocean mainly influences the movement of the water vapor to rise into the sky. Note that water evaporates at any temperature but of varying quantities.
There are other attributes that influence the water molecules to move around the Earth, such as gravity, speed of the wind, area of the vegetation, elevation of the land, and population of living things but these are not illustrated in this simulation. Also, we did not include all the water cycle phases, such as evapo-transpiration, in which the water molecules transpired by plants, animals, and human beings evaporate into the sky. Future development of this simulation may include more phases and attributes.
How does the model work?
There are several attributes that influence the water cycle. In this model, only the following factors are illustrated:
Sun - emits energy that heats up the Earth's water, air, land, and atmosphere.
Relative Humidity - the amount of water vapor present in air. This is expressed as a percentage of water vapor or moisture in the air compared to how much the air can hold at a particular temperature. In this model, the values of the relative humidity vary from 0% to 100%. In a natural environment, relative humidity has never dropped to zero percent because water vapor is always present in the air even on the smallest quantity. A reading of 100% relative humidity implies that the air is completely saturated with water vapor and can no longer hold more water vapor. The possibility of precipitation can occur anytime from 1% to 100% humidity.
Temperature (air, mountain, land, lake) - measures how hot or cold the air or surface (mountain, land, or lake) is. In this simulation, the values for the temperature can vary from 0 to 100 degrees Fahrenheit (°F). Water molecules begin to freeze when the temperature falls below 32°F. Otherwise, water molecules remain in their liquid or gaseous state. In a natural environment, water begins to boil at 200°F depending on the altitude, but this is not included in this model.
Water vapor - the gaseous (invisible) state of water molecule. Water vapor in the atmosphere serves as the raw material for cloud and rain formation.
Cloud - forms during condensation and is made of tiny drops of water in the form of liquid or ice. Cloud is a vital part of precipitation as it brings water molecules in the form of rain or snow.
Rain - is a liquid water falling visibly from the clouds.
Snow - ice crystals formed from frozen water vapor and is falling from the clouds in light white flakes.
Mountain - a higher elevation of the Earth's surface.
Earth's surface - surface of the Earth that changes into green if it is filled with plants and other green vegetation, or white if it is covered with snow.
HOW TO USE IT
Reset button - sets up the background with white cloud forming above the lake and dark cloud pouring rain above the mountain. Trees, grasses, and animals will also vary upon clicking this button. At the same time, the following parameters were set with initial values: Relative humidity - 70%; Air Temperature - 45; Mountain Temperature - 33; Land Temperature - 60; Lake Temperature - 55.
GO button - turns black and runs the model.
Relative_humidity slider - changes the percentage of humidity from 0% (left) to 100% (right)
AirTemperature slider - changes the temperature of the air from 0°F (left) to 100°F (right).
MountainTemperature slider - changes the temperature of the mountain surface from 0°F to 100°F.
LandTemperature slider - changes the temperature of the land surface from 0°F to 100°F.
LakeTemperature slider - changes the temperature of the lake surface from 0°F to 100°F.
ticks slider - changes the speed of the simulation. The speed of the simulation can be adjusted into either slower (left) or faster (right) pace. (The ticks don't seem to mean anything besides showing that the simulation is on the GO).
The simulation runs until the GO button is clicked again and returns into grey color.
THINGS TO NOTICE
Notice the changes on the following features:
Rate of water vapor and how it depends on the lake temperature.
Form of precipitation and how it is affected by the air, mountain, land temperature.
Earth's surface and how it relates to the land temperature.
Water runoff and infiltration and how those relate to mountain and land temperature.
THINGS TO EXPLORE
Manipulate the sliders and identify the factors that influence evaporation. Note that you need to click on Reset! and go before you start exploring each slider.
Manipulate only the air temperature and the land temperature to make the precipitation to be in the form of snow. In what conditions of the air temperature and land temperature will release more snow?
What conditions will STOP the water runoff from the surface of the mountain?
In what land temperature will infiltration occur?
“The less precipitation the more runoff. The more runoff the more infiltration. So, the less precipitation the more infiltration.” Is this statement true? If not, correct it.
EXTENDING THE SIMULATION
Consider other features such as:
Wind direction and speed that influence precipitation.
Evapo-transpiration from plants, animals and human beings.
Water accumulation under the surface of the Earth.
CREDITS AND REFERENCES
Lee, T. D., Jones, M. G., & Chesnutt, K. (2017). Teaching Systems Thinking In The Context of the Water Cycle. Research in Science Education, pp. 1-36, (URL: https://doi.org/10.1007/s11165-017-9613-7). https://pmm.nasa.gov/education/lesson-plans/exploring-water-cycle
https://science.nasa.gov/earth-science/oceanography/ocean-earth-system/ocean-water-cycle
https://pmm.nasa.gov/education/sites/default/files/videos/A_Tour_of_the_Water_Cycle.mp4
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 simulation itself:
ACMES Group (2018). NetLogo Water Cycle simulation. Assimilating Computational and Mathematical Thinking into Earth and Environmental Science. Montclair State University, Montclair, NJ.
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 2018 ACMES Group at Montclair State University This work is licensed under the GNU GENERAL PUBLIC LICENSE V3. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. To view the details of the license, you can visit https://www.gnu.org/licenses/gpl.html.
Acknowledgment This research is supported through a STEM+Computing grant from the Division of Research on Learning of the National Science Foundation (# 1742125).
Comments and Questions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Variables ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; globals [ vapor-incrementer cloud-line ;; y coordinate of bottom row of cloud surface ;; y coordinate of top row of earth top-of-cloud bottom-of-cloud mountain-incrementer runoff-mover vapor-mover rain-incrementer ;;tell me when to delete cloud cloudsize hitCloud? isRaining? makeCloud? sideCloudSize climate cloudInPosition? cloudYcor cloudDeleter cloudrain rainxcor infiltratexcor isInfiltrating? firstCloud firstCloudXCor leftFirstCloud ] breed [trees my-tree] breed [fishes fish] breed [cacti cactus] breed [rivers river] breed [boats boat] breed [clouds cloud] breed [rainfall rain] breed [lakes lake] breed [suns sun] breed [vapors vapor] breed [mountain-peak mountain] breed [mountain-body mountain1] breed [runoff run1] breed [ponds pond] breed [water infiltration] breed [vegetations vegetation] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Setup Procedures ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;; Setup ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to reset clear-all set cloudDeleter 0 set cloudInPosition? false set climate "temperate" set LandTemperature 60 set Relative_humidity 70 set AirTemperature 45 set MountainTemperature 33 set LakeTemperature 55 set runoff-mover 1 set sideCloudSize 56 set makeCloud? false set isRaining? 0 set hitCloud? false set vapor-incrementer 45 set cloudsize 70 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; set global variable values set cloud-line 100 set surface -30; set the height of the earth set top-of-cloud 86 set bottom-of-cloud 72 ask patches [ if pycor = surface ;; set color of the earth surface with input number of positive streamers [set pcolor green - 1] if pycor > (cloud-line - 1) [set pcolor gray] ;;set color of the cloud if pycor > surface and pycor < cloud-line [set pcolor blue] ;; set color of the sky if pycor < surface [set pcolor green] ;; set color of the earth if pycor < -70 and pycor > -100 ;; set groundwater [set pcolor brown] if pxcor > -70 and pxcor < 70 and pycor < -80 [set pcolor blue + 1] ;;set up mountain if pycor < 20 and pxcor < -75 and pycor > surface [set pcolor gray - 2] ;;lake if pycor < surface and pxcor > 60 and pycor > -55 [set pcolor blue + 1] ] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; create the trees in the meadow based on the slider value for the number of trees create-trees 30 [ set shape "grass" set size (5) setxy random(50) - 25 (surface + size / 2) ] create-trees 10 [ set shape "myPineTree" set size random(10) + 30 setxy random(70) - 110 (surface - random(5) - 20) ] create-ponds 1 [ set shape "circle" set size 9 setxy -70 -85 set color blue + 1 ] create-ponds 1 [ set shape "circle" set size 9 setxy 70 -85 set color blue + 1 ] create-vegetations 4[ set shape "rabbit" set size random(2) + 5 setxy random(90) - 110 (surface - random(15) - 25) ] create-vegetations 4[ set shape "bug" set size random(2) + 2 setxy random(70) - 110 (surface - random(15) - 20) ] ;;create rainfall create-rainfall 14[ set shape "line" set size 5 setxy random(7 * 7) - (117) 70 + random(10) set heading 180 set color blue + 1 ] ;;create lake/ocean create-lakes 1[ set shape "circle" set size 50 setxy 60 surface set color blue + 1 ] create-vapors 14[ set shape "dot" set size 5 setxy 75 + (sideCloudSize / 2) - random(vapor-incrementer) surface set color red + 2 ] ;;create sun create-suns 1 [ set shape "sun" set color yellow set size 20 setxy 90 75 ] create-mountain-peak 1[ set shape "triangle" set size 30 set color white setxy -109 30 ] create-mountain-peak 1[ set shape "triangle" set size 30 set color white setxy -90 30 ] create-mountain-body 1[ set shape "triangle" set size 70 set color gray - 2 setxy -95 surface + 21.5 ] create-mountain-body 1[ set shape "triangle" set size 70 set color gray - 2 setxy -76 surface + 21.5 ] create-clouds 1 [ set heading 0 set shape "cloud3" set size 90 setxy -90 75 set color grey set cloudYCor ycor set firstCloudXCor xcor set leftFirstCloud (firstCloudXCor - (size / 3)) ] set firstCloud one-of clouds create-clouds 1 [ set heading 0 set shape "cloud3" set size 86 setxy 75 35 set color white - 1 ] create-lakes 1[ set color blue set size 80 set heading 360 set shape "rectangle" setxy 60 surface + 13 ] create-runoff 14[ set color blue + 1 set shape "dot" set size 5 setxy -109 40 ] create-runoff 14[ set color blue + 1 set shape "dot" set size 5 setxy -89 40 ] create-water 14[ set color blue + 1 set shape "line" set heading 180 set size 8 setxy random(50) - 25 surface - 10 ] reset-ticks end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Runtime Procedures ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to go ifelse (landTemperature < 32) [ ask patches[ if pycor = surface [set pcolor white] if pycor < surface [set pcolor white] if pycor <= surface and pxcor > 60 and pycor > -55 [set pcolor blue + 1] if pycor < -65 and pycor > -100 ;; set groundwater [set pcolor brown] if pxcor > -70 and pxcor < 70 and pycor < -80 [set pcolor blue + 1] ] ] [ ask patches[ if pycor <= surface [ set pcolor green ] if pycor <= surface and pxcor > 60 and pycor > -55 [set pcolor blue + 1] if pycor < -70 and pycor > -100 ;; set groundwater [set pcolor brown] if pxcor > -70 and pxcor < 70 and pycor < -80 [set pcolor blue + 1] ] ] try-rain try-runoff try-infiltrate try-vapor move-cloud-temperate if ticks mod (11 - floor (Relative_humidity / 10)) = 0 [ if (isRaining? = 0 and climate = "temperate")[ create-rain ] create-infiltration runoff-maker ] ifelse LandTemperature >= 0[ if makeCloud? = true[ create-cloud ] if ticks mod (floor (Relative_humidity / 10) + 1) = 0 [ create-vapor ] set vapor-mover 1 ] [ set vapor-mover 0 ] tick end ;;Has the rain go down to try-rain ask rainfall[ ifelse ycor >= surface [ if AirTemperature < 25[ set ycor ycor - 2 ] if AirTemperature >= 25 and AirTemperature < 50[ set ycor ycor - 3 ] if AirTemperature >= 50[ set ycor ycor - 4 ] ] [ set infiltratexcor xcor set isInfiltrating? true die ] ] if count rainfall = 0 [ set isInfiltrating? false ] end to try-vapor ask vapors[ ifelse ycor + (LakeTemperature / 4) < 30 [ if ycor != -60[ set ycor ycor + (LakeTemperature / 4) / 3 ] ] [ set hitCloud? true die ] ] if hitCloud? = true[ ask clouds[ if (color = white - 1)[ ifelse (size + 5 <= 70)[ set size size + 1 set vapor-incrementer size set sideCloudSize size ] [ set vapor-incrementer 0 set size 70 set xcor 74 set hitCloud? false set makeCloud? true ifelse (climate = "temperate") [ set color white ] [ set color grey ] ] ] ] ] end to create-vapor create-vapors 14[ set shape "dot" set size 5 setxy 80 + (sideCloudSize / 2) - random(vapor-incrementer) surface set color red + 2 ] end ;;Creates rain so there is a continuous supply to create-rain ifelse (is-turtle? firstCloud) [ ask firstCloud[ set firstCloudXCor xcor ] create-rainfall 14[ set shape "line" set size 5 ifelse (firstCloudXCor - (cloudsize / 3) < -120) [ set leftFirstCloud -120 ] [ set leftFirstCloud firstCloudXCor - (cloudsize / 3) ] setxy leftFirstCloud + random((cloudsize / 7) * 5) cloudYcor + random(5) set color blue + 1 set heading 180 ] ] [ if LandTemperature < 33 and AirTemperature > 32 and AirTemperature <= 75[ create-rainfall 14[ set shape "line" set size 5 setxy random((cloudsize / 5) * 7) - (80) cloudYcor + random(5) set color blue + 1 set heading 180 ] ask rainfall[ if ycor < surface + 35[ set shape "dot" set size 5 set color white set heading 180 ] ] ] if LandTemperature > 32 and AirTemperature < 33 [ create-rainfall 14[ set shape "dot" set size 5 setxy random((cloudsize / 5) * 7) - (80) cloudYcor + random(5) set color white set heading 180 ] ask rainfall[ if ycor < surface + 35[ set shape "line" set size 5 set color blue + 1 set heading 180 ] ] ] if AirTemperature < 33[ create-rainfall 14[ set shape "dot" set size 5 setxy random((cloudsize / 5) * 7) - (80) cloudYcor + random(5) set color white set heading 180 ] ] if AirTemperature >= 33 and AirTemperature <= 75[ create-rainfall 14[ set shape "line" set size 5 setxy random((cloudsize / 5) * 7) - (80) cloudYcor + random(5) set color blue + 1 set heading 180 ] ] ] make-cloud-smaller if Relative_humidity > 50 [create-rainfall 14[ set shape "line" set size 5 setxy random((cloudsize / 5) * 7) - (80) cloudYcor + random(5) set color blue + 1 set heading 180 ] ] ask rainfall[ if AirTemperature > 75 and Relative_humidity < 50[ die] if Relative_humidity = 0[ die] ] end to make-cloud-smaller if (Relative_humidity > 75) [ set cloudDeleter cloudDeleter + 1 ] ifelse (cloudDeleter < 3 and Relative_humidity > 75) [ ] [ set cloudDeleter 0 ask clouds[ if color = grey[ if (ycor + 4 <= 75) [ set ycor ycor + 4 set xcor xcor - 4 set cloudYCor ycor ] ifelse (size - 4 >= 20) [ set size size - 4 set cloudsize cloudsize - 4 set xcor xcor - 1 ] [ set cloudsize 70 set isRaining? 1 die ] ] ] ] end to try-runoff if (climate = "temperate")[ ask runoff [ ifelse ycor - runoff-mover >= surface - 3 [ ifelse MountainTemperature < 33[ die] [ set ycor ycor - (runoff-mover / 2.5) - (MountainTemperature / 150) set xcor xcor + (random(runoff-mover + .5)) / 2.5 ]] [ if color != green[ set xcor xcor + runoff-mover ] ] if xcor > 70 [die] ] ] if LandTemperature < 33 [ ask runoff[ if xcor > -42 [ die] ] ] end to runoff-maker if MountainTemperature < 33[ create-runoff 1[ set color white set shape "dot" set size 5 setxy -109 40 if xcor < -30 [ die] ] ] if MountainTemperature >= 33[ create-runoff 5[ set color blue + 1 set shape "dot" set size 5 setxy -109 40 ]] if MountainTemperature < 33[ create-runoff 1[ set color white set shape "dot" set size 5 setxy -89 40 if xcor < -30 [ die] ] ] if MountainTemperature >= 33[ create-runoff 5[ set color blue + 1 set shape "dot" set size 5 setxy -89 40 ]] if LandTemperature > 33[ create-runoff 8[ set color blue + 1 set shape "dot" set size 5 setxy -54 -20 ] ] end to try-infiltrate ask water[ ifelse ycor - runoff-mover >= -80[ set ycor ycor - runoff-mover ] [ die ] ] end to create-infiltration if (climate = "temperate") and LandTemperature > 32[ create-water (LandTemperature / 5)[ set color blue + 1 set shape "line" set heading 180 set size 8 setxy random(150) - 80 surface - 12 ] ] end to move-cloud-temperate ask clouds[ if color = white[ ifelse xcor - 2 > -20[ set xcor xcor - 4 ] [ ask clouds[ if color = grey [die] if color = white[ set cloudSize size ] ] set color grey set xcor xcor + 3 set cloudInPosition? true set isRaining? 0 set cloudYcor ycor ] ] ] end to create-cloud create-clouds 1[ set color white - 1 set size 0 set shape "cloud3" set heading 0 setxy 75 25 set sideCloudSize size ] set makeCloud? false end
There is only one version of this model, created over 7 years ago by MSU ACMES.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.