Each patch gives an equal share of a portion of its value to its neighbor patches.
diffuse(world, pVar, share, nNeighbors, torus = FALSE)
# S4 method for worldMatrix,missing,numeric,numeric
diffuse(world, share, nNeighbors, torus)
# S4 method for worldArray,character,numeric,numeric
diffuse(world, pVar, share, nNeighbors, torus = FALSE)WorldMatrix or worldArray object.
Character. If the world is a worldArray object, pVar
is the name of the layer to use to define the patches values.
pVar must not be provided if the world is a worldMatrix object.
Numeric. Value between 0 and 1 representing the portion of
the patches values to be diffused among the neighbors.
Integer: 4 or 8. Represents the number of neighbor patches
considered.
Logical to determine if the world is wrapped. Default is
torus = FALSE.
WorldMatrix or worldArray object with patches values updated.
What is given is lost for the patches.
If `torus = TRUE`, all `patches` have `nNeighbors` `patches` around
them, which
some may be on the other sides of the `world`. If `torus = FALSE`,
`patches` located on the edges of the `world` have less than
`nNeighbors` `patches` around them.
However, each neighbor still gets 1/4 or 1/8 of the shared amount
and the diffusing
patch keeps the leftover.Wilensky, U. 1999. NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University. Evanston, IL.
w1 <- createWorld(
minPxcor = 0, maxPxcor = 4, minPycor = 0, maxPycor = 4,
data = sample(1:3, size = 25, replace = TRUE)
)
plot(w1)
# Diffuse 50% of each patch value to its 8 neighbors
if (requireNamespace("SpaDES.tools", quietly = TRUE)) {
w2 <- diffuse(world = w1, share = 0.5, nNeighbors = 8)
plot(w2)
}