# Percolation 3D

### 1 collaborator

Uri Wilensky (Author)

### Tags

(This model has yet to be categorized with any tags)
Model group CCL | Visible to everyone | Changeable by group members (CCL)
Model was written in NetLogo 3D 4.1pre7 • Viewed 589 times • Downloaded 36 times • Run 0 times

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

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.

Click to Run Model

```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
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]
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
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

; The full copyright notice is in the Information tab.
```

There are 3 versions of this model.