Percolation 3D
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 3D version of the 2D model Percolation. It shows how an oil spill can percolate down through permeable soil. It was inspired by a similar model meant to be done by hand on graph paper (see "Forest Fires, Oil Spills, and Fractal Geometry", Mathematics Teacher, Nov. 1998, p. 684-5).
HOW IT WORKS
This model represents an oil spill as a finite number of oil "particles", or simply oil drops. The oil drops sink downward through the soil by moving diagonally down and northeast, southeast, northwest or southwest. The patches through which the drops spread represent the empty spaces in the soil the porosity (or "holeyness") is adjustable. Each drop's chance of actually moving on down is contingent on a certain probability, set by the POROSITY slider. That is, the higher the porosity, the higher the chance of a drop to percolate through it. This models the fact that in more porous soil, oil has a greater chance of continuing downward.
HOW TO USE IT
Push the SETUP button. The oil spill is represented by red patches, which start at the top of the world.
Press the GO button to run the model or the GO ONCE button to advance the oil drops one step.
The POROSITY slider can be changed at any time to adjust the probability that droplets of oil will percolate down through the soil.
It can be run as long as you like; it resets to the top of the world when it reaches the bottom. It stops automatically when the oil spill stops advancing.
The two plots show how large the leading edge of the spill is (red) and how much soil has been saturated (brown).
THINGS TO NOTICE
Try different settings for the porosity. What do you notice about the pattern of affected soil? Can you find a setting where the oil just keeps sinking, and a setting where it just stops?
If percolation stops at a certain porosity, it's still possible that it would percolate further at that porosity given a larger world.
Note the plot of the size of the leading edge of oil. Does the value settle down roughly to a constant? How does this value depend on the porosity?
EXTENDING THE MODEL
Give the soil different porosity at different depths. How does it affect the flow? In a real situation, if you took soil samples, Could you reliably predict how deep an oil spill would go or be likely to go?
Currently, the model is set so that the user has no control over how much oil will spill. Try adding a feature that will allow the user to specify precisely, when s/he presses SETUP, the amount of oil that will spill on that go. For instance, a slider may be useful here, but you'd have to modify the code to accommodate this new slider. Such control over the to-be-spilled amount of oil gives the user a basis to predict how deep the oil will eventually percolate (i.e. how many empty spaces it will fill up). But then again, the depth of the spill is related to the soil's porosity. Can you predict the depth of the spill before you press GO?
NETLOGO FEATURES
This is a good example of a cellular automaton model, because it uses only patches. It also uses a simple random-number generator to give a probability, which in turn determines the average large-scale behavior.
This is also a simple example of how plots can be used to reveal, graphically, the average behavior of a model as it unfolds.
RELATED MODELS
"Fire" is a similar model. In both cases, there is a rather sharp cutoff between halting and spreading forever.
This model qualifies as a "stochastic" or "probabilistic" one-dimension cellular automaton. For more information, see the "CA Stochastic" model.
HOW TO CITE
If you mention this model in an academic publication, we ask that you include these citations for the model itself and for the NetLogo software:
- Wilensky, U. (2006). NetLogo Percolation 3D model. http://ccl.northwestern.edu/netlogo/models/Percolation3D. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
In other publications, please use:
- Copyright 2006 Uri Wilensky. All rights reserved. See http://ccl.northwestern.edu/netlogo/models/Percolation3D for terms of use.
COPYRIGHT NOTICE
Copyright 2006 Uri Wilensky. All rights reserved.
Permission to use, modify or redistribute this model is hereby granted, provided that both of the following requirements are followed:
a) this copyright notice is included.
b) this model will not be redistributed for profit without permission from Uri Wilensky. Contact Uri Wilensky for appropriate licenses for redistribution for profit.
This is a 3D version of the 2D model Percolation.
Comments and Questions
globals [ current-row ;; agentset of patches in current row total-oil ;; keeps track of how much ground has been saturated ;; since the simulation began. ] to setup ca orbit-down 90 orbit-left 45 set total-oil 0 ask patches [ if (pzcor = max-pzcor) [ set pcolor black ] ;; unsaturated soil if (pxcor = max-pxcor) or (pycor = max-pycor) [ set pcolor yellow ] ;; Place a boundary on the right side of the screen. ;; This prevents the oil from wrapping laterally. ] ;; set up top row set current-row patches with [pzcor = max-pzcor] ask current-row [ if (pxcor mod 2 = 0) and (pycor mod 2 = 0) and (pcolor != yellow) [ set pcolor red ] ;; This code initializes the "oil spill". Red ;; patches represent the leading edge of the spill. ] do-plot end to go if not any? current-row with [pcolor = red] [ stop ] percolate tick do-plot wrap-oil end to percolate ask current-row with [pcolor = red] [ ;; oil percolates to the four patches down and southwest, southeast ;; northeast, and northwest ask patches at-points [[-1 -1 -1] [1 -1 -1] [1 1 -1] [-1 1 -1]] [ if (pcolor = black) and (random-float 100 < porosity) [ set pcolor red ] ] set pcolor brown set total-oil total-oil + 1 ] ;; advance to the next row set current-row patch-set [patch-at 0 0 -1] of current-row end to wrap-oil if [pzcor] of one-of current-row = max-pzcor [ ;; force a display update before we ;; return to the top of the world. display ask patches with [pcolor = brown] [ set pcolor black ] ] end to do-plot ;; This plot displays the number of patches that are red (percolating oil). set-current-plot "Percolating Oil" plot count current-row with [pcolor = red] ;; This plot displays the number of patches that are black (saturated soil). set-current-plot "Saturated Soil" plot total-oil end ; Copyright 2006 Uri Wilensky. All rights reserved. ; The full copyright notice is in the Information tab.
There are 3 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Percolation 3D.png | preview | Preview for 'Percolation 3D' | over 11 years ago, by Uri Wilensky | Download |
This model does not have any ancestors.
This model does not have any descendants.