Several logic features group together due to similarities in how they are applied, though their applications lead to different outcomes. For example, recruitment, reproduction, kill boost, growth, succession, and spreading are called “vertical rules” because those rules are primarily applied for individual elements, independently. “Vertical” is meant to communicate that a rule like recruitment can be applied per element using information about each element, independently, such that recruitment will occur in an element that has suitable soil, water, and community assemblage regardless of the conditions that exist in any other element. Communities whose dynamics are determined mostly by vertical rules are often vegetative. Plant communities flourish or fade based on conditions within the space where they exist.
Mobile communities are also influenced by “horizontal rules”, which can generate movement. “Horizontal” is meant to communicate that a rule like instinctual can attract or repel a simulated community and that community will move accordingly, per their community movement parameters.
Instinctual, forage, road, and density are horizontal rules that generate attractions. The general sequence for attractions is to compute a strength of attraction (-1 to 1), apply a seasonality factor multiplicatively (0 to 1), dissipate the attractions of individual elements to other elements within the dissipation range, and then multiply by the user-specified rule weight. Strengths can be positive or negative, acting as attractions and repulsions, respectively. Dissipation is done as a linear or a sigmoidal decay. Post-dissipation, elements have an array of possible attractions comprised of its own attraction, if it had a non-zero strength of attraction, and the dissipated attractions of other non-zero attraction elements within the dissipation range. From this array, the maximum value is selected if any of the values are positive and the minimum value is selected if all values are negative. Selected values are between -1 and 1. Selected values are multiplied by the rule weight to compute the final attractions for the rule (range is no less than – weight to no more than + weight; one attraction layer per time step). Aggregations of attractions are done additively per rule type, for forage and instinctual rules, and for total attraction.