Forest Dynamic Model - Bell (2000)
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
Neutral models refer to communities of ecological similar species in which individuals compete with one another and do not describe trophic interactions (Bell, 2001). Here I developed the NetLogo model that used in Bell's (2000) paper. Bell (2000) describes the properties of a very simple neutral model. It represents macro-ecological patterns of a community of functionally identical species. He used the term "neutral" to mean that individuals possess the same properties, regardless of species membership; thus, individuals of different species are indistinguishable (Bell, 2000).
Bell (2000) assumed followings:
Species of community terms) is drawn from a external regional pool of JMS species.
The community initially consists of Ni individuals of each species (Bell, 2000).
Bell (2000) assumed the following dynamics in his model.
Immigration: A single individual is added to the community from each species in the pool with probability m.
Birth: Each individual gives rise to a single offspring with probability b.
Death: Each adult individual dies with probability d.
Density regulation: If the community exceeds its capacity of K individuals, excess individuals are removed at random, each individual having the same probability of being removed, until the community is reduced to exactly K individuals before the next cycle is begun.
Note: "It is individuals that are culled, and that all species are treated alike, so that each species is on average culled in proportion to its relative abundance alone. Species do not differ in their sensitivity to density, and there are no implicit or explicit interactions among species (Bell, 2000)".
The model is different from Hubbell's model becaused Bell (2000) used a species pool where each species has equal chance, not individuals, to immigrate.
HOW IT WORKS
There are two sets of turtles. Trees and meta-species. Trees and meta-trees own property called "species". Patches have a property called "occupied". If a tree or meta-tree occupied the local community then patch is 'occupied'. When a patch is vacant patch is 'unoccupied'. Initial abundances of species are set to Ni.
HOW TO USE IT
Sliders
JMS: Species present in the regional species pool. It is equal to size of the regional pool. JMS= (w1 + 1)2. The JMS slider automatically changes when w1 changes.
w1: It is used to decides the JMS.
Ni: Initial abundances of species (all the populations have equal sizes).
initial-local-richness: This decides the inital species richness of the local community.
JL: This is the initial local community size. Initial local community size (JL) is also a automatically change. Initial abundances of species are set to Ni. Therefore, initial abundance of the community is equal to 100 times initial-local-richness.
w2: This decides the size of the local community, the maximum capacity. (w2 + 1)2.
m: It is the rate of immigration of species from the regional pool.
K: Automatic slider. It is the maximum capacity community can hold. Also called carrying capacity.
K = (w2 + 1)2.
b: It is the birth rate of individuals.
d: It is the death rate of individuals.
THINGS TO NOTICE
The model can then be used to describe the relationship of diversity and abundance to the six parameters of the model: pool size JMS species, size of the initial species populations (Ni individuals), community capacity K individuals, immigration rate m per species per cycle, birth rate b, and death rate d per individual per cycle. It can then be determined whether the patterns exhibited by natural populations differ systematically from those generated by a finite stochastic birth-death-immigration process.
Outputs
Local Community Trees: Number of trees or meta-trees in the local community
Total dead trees from t = 0 to t = t: Total number of deaths happened in the local community.
Immigrant-trees from t = 0 to t = t: Total number of immigrations happened in the local community.
New Births from t = 0 to t = t: Total number of births happened in the local community.
Local community species richness: Species richness of the local community.
Number of temporal extinct species in the local community: Total number of temporal extinctions happened in the local community.
Plots
Local Community Size: Abundance of the local community.
Local Community Species Richness: Number of species in the local community.
Species Abundance Distribution of Local-Community: Species abundance distribution of the local community.
Relative Species Abundance Distribution: Relative species abundance distribution of the local community.
THINGS TO TRY
Change the sliders (i.e. b for birth rate, d for death rate, and m for immigration rates, initial-species-richness for initial species richness). Use slider w1 to change the regional species richness (JMS) and slider w2 to chnage the carrying capacity (K)). See how community species richness and community species abundance vary.
EXTENDING THE MODEL
NETLOGO FEATURES
RELATED MODELS
Bell, G. (2000). The Distribution of Abundance in Neutral Communities. The American Naturalist, 155 (5), pp. 606-617.
Bell, G. (2001). Neutral Macroecology. Science, 293(5539), 2413–2418.
CREDITS AND REFERENCES
- Punchi-Manage, R. (2023e). NetLogo Bell's (2000) Model. http://netlogo/models/Bell-2000-Model.
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.
Comments and Questions
extensions [table csv] globals [meta-sp extinct-species n-speciation spi local-s K1 i1 K2 i2 hist-frq-local rel-hist-frq-local local-richness local-richness-counts count-dead-trees immigrant-trees count-new-trees n crowding conspecifics di-locx di-locy neighbor-patch JL1] breed [meta-trees meta-tree] breed [trees tree] meta-trees-own [species] trees-own [species h] patches-own [occupied] circles-own [] breed [circles a-circle] to setup2 clear-all set meta-sp 0 set JMS (w1 + 1) * (w1 + 1) resize-world 0 (w1 + w2 + 20) 0 (w1 + w2 + 20) ;set hist-frq-meta sort-by > map count table:values table:group-agents meta-trees [ meta-species ] ;set rel-hist-frq-meta map [ i -> i / JM ] hist-frq-meta set extinct-species 0 set n-speciation 0 set JL initial-local-richness * Ni set K (w2 + 1) * (w2 + 1) set w2 w2 set n 0 set di-locx 0 set di-locy max-pycor ask patches with [pycor <= max-pycor AND pycor >= w1 + 20 AND pxcor >= 0 AND pxcor <= w2] [ set pcolor gray set occupied 0 ] species-generator-1 species-generator-4 set hist-frq-local sort-by > map count table:values table:group-agents turtles with [ycor >= w1 + 20] [species] set rel-hist-frq-local map [ i -> i / JL ] hist-frq-local set local-richness local-s set count-dead-trees 0 set immigrant-trees 0 set count-new-trees 0 create-channel reset-ticks end to species-generator-1 set k1 -1 while [k1 < w1 ] [ set k1 k1 + 1 set i1 -1 while [i1 < w1 ] [ set i1 i1 + 1 create-meta-trees 1 [ let random-patch one-of patches with [pycor <= w1 AND pycor >= 0 AND pxcor >= 0 AND pxcor <= w1 AND occupied = 0] setxy [pxcor] of random-patch [pycor] of random-patch set shape "circle" set size 1 set species (meta-sp + 1) set meta-sp meta-sp + 1 set color species ask patch-here [set occupied 1] ] ] ] end to species-generator-4 set k2 1 while [k2 <= initial-local-richness] [ set k2 k2 + 1 set i2 max-pxcor + 1 set local-s local-s + 1 repeat Ni [ let random-patch one-of patches with [pycor <= max-pycor AND pycor >= w1 + 20 AND pxcor >= 0 AND pxcor <= w2 AND occupied = 0] create-trees 1 [ set i2 i2 - 1 set shape "circle" set size 1 set species local-s setxy [pxcor] of random-patch [pycor] of random-patch set color local-s ask patch-here [set occupied 1] ] ] ] end to go2 test-capacity death-rates birth-rates immigration set JL1 count turtles-on patches with [pycor <= max-pycor AND pycor >= w1 + 20 AND pxcor >= 0 AND pxcor <= w2] set hist-frq-local sort-by > map count table:values table:group-agents turtles with [pycor > w1 + 20] [ species ] set rel-hist-frq-local map [ i -> i / JL1 ] hist-frq-local set local-richness-counts map count table:values table:group-agents turtles with [pycor >= w1 + 20] [species ] set local-richness length local-richness-counts update-plots tick end to immigration let random-number3 random-float 1 if (immigration-rate > random-number3) [ replace-previous-immigrant move-immigrant immigration-through-channel ask one-of meta-trees [ hatch 1 let random-patch one-of patches with [pycor <= max-pycor AND pycor >= w1 + 20 AND pxcor >= 0 AND pxcor <= w2 AND occupied = 0] setxy [pxcor] of random-patch [pycor] of random-patch ask patch-here [set occupied 1] ] set immigrant-trees immigrant-trees + 1 ] end to birth-rates let random-number1 random-float 1 if (b > random-number1) [ set count-new-trees count-new-trees + 1 ask one-of turtles with [ycor >= w1 + 20] [ hatch 1 let random-patch one-of patches with [pycor <= max-pycor AND pycor >= w1 + 20 AND pxcor >= 0 AND pxcor <= w2 AND occupied = 0] setxy [pxcor] of random-patch [pycor] of random-patch ask patch-here [set occupied 1] ] ] end to death-rates let random-number2 random-float 1 if (d > random-number2) [ ask one-of turtles with [ycor >= w1 + 20] [ set di-locx xcor set di-locy ycor die] set count-dead-trees count-dead-trees + 1 ] end to create-channel ask patches [ if (pxcor > w2 / 2 AND pxcor < ((w2 / 2) + 2) AND pycor > w1 AND pycor < w1 + 20) [ set pcolor gray ] ] end to immigration-through-channel create-circles 1 [ set color ticks set heading 0 set size 1 setxy ((w2 + 2) / 2) (w1 + 1) ] end to move-immigrant ask circles [ fd 4] end to replace-previous-immigrant ask circles with [ycor > (w1 + 13) ] [die] end to update-plot2 set-current-plot "Species Abundance Distribution Local Community" set n 1 while [n <= meta-sp] [ create-temporary-plot-pen (word n) set-current-plot-pen (word n) set-plot-pen-color 5 * n + 4 plotxy ticks count trees with [ycor >= w1 + 20 AND species = n] set n n + 1 plot-pen-down ] end to test-capacity if (count turtles with [ycor >= w1 + 20] > K - 5) [ ask one-of turtles with [ycor >= w1 + 20] [die] ] ask patches [ if (count turtles-here > 0) [ set occupied 1 ] if (count turtles-here = 0) [ set occupied 0 ] ] end ; Copyright 2023e Ruwan Punchi-Manage. ; See Info tab for full copyright and license.
There is only one version of this model, created almost 2 years ago by Ruwan Punchi-Manage.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.