tilman | R Documentation |
Tilman's competition model for essential resources. The model can in principle contain any number of resources or species.
tilman(S, a, r, m, k, c, Rnames, Spnames) ## S3 method for class 'tilman' plot(x, R, N, S, time = 40, step = 0.2, lwd = 1, col, ...) tilmandiagr(x, R, N, S, col = c(4,2,1), add = FALSE, xlim, ylim, xlab, ylab, ...) ## S3 method for class 'tilman' traj(x, R, N, time = 40, step = 1, ...)
S, a |
Supply points and mobilization rates for resources. |
r, m |
Per capita rates of population increase and mortality for each species. |
k, c |
Half-saturation constants and consumption rates for each species and resource. For multi-resource models, these must be matrices with a row for each resource and column for each species. The matrix can also be given as a single vector elements ordered by species (column). |
Rnames, Spnames |
Names of resources and species. Defaults will be used if not given. |
x |
A |
R, N |
Initial resource levels and population sizes. Defaults
to supply level |
add |
Add new resource trajectories to an existing diagram. |
time, step |
Total time and time step for trajectories |
lwd, col |
The line width and colours for trajectory lines. |
xlim, ylim |
Axis limits. |
xlab, ylab |
Axis labels. |
... |
Other parameters passed to functions. |
The populations grow by consuming resources, and the population growths stop when resources are depleted to a critical level R*. The differential equation for the change in the available amount of resource i and species j is given as
dR[i]/dt = a[i]*(S[i]-R[i]) - SUM(j)(c[ij] * (dN[j]/dt + N[j]*m[j])),
where R and S are current resource level and its supply point, a is the resource mobilization rate from S to R, N is the current population size, m its per capita mortality rate, and c the resource consumption rate. The corresponding change in the population size (that also appears in the equation above) is
dN[j]/dt = min(i) N[j] * (r[j] * R[i] / (R[i] + k[ij]) - m[j]),
where r is the per capita growth rate of N and k is the half-saturation parameter of the Monod equation that describes the relationship between resource use and population size, and \min selects the resource that gives the smallest response for the species.
The population growth stops when the resource level for the critical resource is
R*[i] = k[ij]*m[j]/(r[j] - m[j]).
The corresponding maximum population size is
N*[j] = a[i] * (S[i] - R*[i])/(c[ij] * m[j]).
With one resource, the winner will be the species with lowest R* with population size N* and all other species will have N* = 0. The outcome of multi-resource model is best inspected with simulations and graphics.
Function plot
shows resource levels and population
trajectories against time. The critical resource levels
(R*) are also displayed if there is only one resource or
one species. Function tilmandiagr
makes the traditional
Tilman graphics of resource trajectories in a two-resource plane
together with R* lines for each species. The diagram
will be only drawn for two-resource models, but the number of
species is not limited. Function traj
is used to calculate
the resource and population trajectories.
Krebs (2009) discusses the model on p. 168–169. The current implementation is based on Tilman (1982).
Function returns an object of class "tilman"
with following
items:
S, a, r, m, k, c |
Model input parameters. |
Rstar, Nstar |
Equilibrium resource levels and population sizes for each species and resource. |
nres, nsp |
Number of resources and species. |
call |
Function call. |
Jari Oksanen
Krebs, C. J. (2009) Ecology. Benjamin Cummings. 6 ed., 655 p.
Tilman, D. (1982) Resource competition and community structure. Princeton UP, 296pp.
## One resource mod <- tilman(S = 20, a = 0.5, r = c(2,1), m = 0.5, k = c(5,0.5), c = 0.1) mod plot(mod) ## Two resources mod2 <- update(mod, S=c(20,20), k=c(5,0.5, 1,2), c = c(0.15, 0.1, 0.1, 0.2)) tilmandiagr(mod2) tilmandiagr(mod2, S = c(10,20), add = TRUE, time = 100) tilmandiagr(mod2, S = c(20,10), add = TRUE, time = 100) op <- par(mfrow=c(3,1), mar=c(4,4,0,1)+.1) plot(mod2) plot(mod2, S = c(10,20)) plot(mod2, S = c(20,10)) par(op)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.