Functions returning TRUE for plants that compete with a given subject plant, or FALSE otherwise. The decision can depend on distance and plant marks. For use in pairwise()
.
Note: In previous versions of siplab the function names had
.sel
in place of _sel
.
size_sel(imarks, jmarks, dists, dranks, par = list(k = 0.2, smark
= 1))powlinear_sel(imarks, jmarks, dists, dranks, par = list(ki = 0.2,
kj = 0, p = 1, r0 = 0, smark=1))
Marks for the subject plant, a 1-row data frame.
Data frame with marks for potential competitors
Vector of distances between the subject plant and the potential competitors.
Distance ranks.
List of parameters.
Logical vector of length equal to the length of dists
.
The values of par
are taken from the argument selpar
of pairwise()
, if not NULL
.
smark
in par
must be 1 or “mark” if there is only one mark. If the marks are a data frame, smark
must be the number or name of the column with the plant size variable.
size_sel()
is a simple example where competitors are selected within a radius proportional to plant size. This corresponds to the second example in Section 9.2.1 of Burkhart and Tom<U+00E9> (2012).
Note that their first example (fixed radius) is implemented by giving a value to maxR
in pairwise()
, no select
function is needed. Similarly, their third example (fixed number of nearest neighbors) is obtained by giving a value to maxN
.
powlinear_sel()
is a general form that covers all the other examples in Burkhart and Tom<U+00E9> (2012) by choosing specific parameters values (except for the competition elimination angle, which depends on relative positions among competitors and not only on distances).
It implements a condition distance < ki * sizei^p + kj * sizej^p + r0
, with the following special cases:
Multiple of crown radius: kj=0, p=1, r0=0, smark="crownwidth"
.
Angle count sampling: ki=0, p=1, r0=0, smark="dbh"
.
Areas of influence overlap: ki=kj, p=1, r0=0
, if the radius is a linear function of size (p
not 1 for an allometric relationship).
Vertical search cone: If the height of the cone vertex is constant, proportional to tree height, or more generally some linear function \(c_1 h_i + c_2\), then ki
= \(- c_1 / \tan(90 - \beta/2)\), kj
= \(1 / \tan(90 - \beta/2)\), p=1
, r0
= \(- c_2 / \tan(90 - \beta/2)\), smark="height"
.
These and other examples could be coded directly if computational efficiency is important.
https://github.com/ogarciav/siplab
Burkhart, H. E. and Tom<U+00E9>, M. (2012) Modeling Forest Trees and Stands. Springer.