# Competitor Selection Rules

### Description

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`

.

### Usage

1 2 3 4 5 |

### Arguments

`imarks` |
Marks for the subject plant, a 1-row data frame. |

`jmarks` |
Data frame with marks for potential competitors |

`dists` |
Vector of distances between the subject plant and the potential competitors. |

`dranks` |
Distance ranks. |

`par` |
List of parameters. |

### Details

The values of `par`

must be given in the argument `selpar`

of `pairwise`

, they are shown here as examples.

`smark`

in `par`

indicates the location of the plant size variable in `marks`

. It can be a data frame column number, or a string id like "dbh".

`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é (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é (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 - β/2)*,`kj`

=*1 / \tan(90 - β/2)*,`p=1`

,`r0`

=*- c_2 / \tan(90 - β/2)*,`smark="height"`

.

These and other examples could be coded directly if computational efficiency is important.

### Value

Logical vector of length equal to the length of `dists`

.

### Author(s)

Oscar García.

### References

http://forestgrowth.unbc.ca/siplab

Burkhart, H. E. and Tomé, M. (2012) *Modeling Forest Trees and Stands*. Springer.

### See Also

`pairwise`