This name should be self-explanatory and short. Ideally, it will indicate the types of entity it is applicable to, the processes described and any theory it is based on, e.g.:
All authors should be mentioned here - the one(s) who originally submitted the RBB to the repository, and the ones who contributed to its subsequent development [*]. Additional details such as email addresses and ORCID iDs are considered optional.
Additional terms that suggest what the topic of the RBB is about. They may also include words and phrases that are closely related to your topic and help interested modellers find your RBB easily. For example, if the RBB is about random walk, use phrases like animal movement, animal behaviour, food search, etc.
A narrative description of what mechanism or process the RBB is representing and in what environments or systems. What kind of questions has the RBB already been used to address and what other questions could it be relevant to? Preferably include references to relevant publications.
A description of the theoretical concepts the RBB is building on, e.g., a specific standard description of a certain behaviour such as symmetric competition or the informed user. This helps to classify the building block and to find a link to others that could be grouped in one category.
This section follows the rationale of the Overview part of the ODD protocol (see supplement S1 of Grimm et al. 2020). RBBs are typically relatively short procedures that describe a certain process affecting a certain entity, e.g., an agent. For example, a plant uses water, or competes with other plants, a buyer buys something, or a farmer is affecting the way other farmers use their land. Note that the calling and affecting agents can be the same. The following information should thus be provided:
A table which specifies:
On which spatio-temporal scales is the RBB valid, i.e., what are the possible range of resolutions and extents of the spatial and temporal scale?
We consider this as semi-optional information since the suitability of each tool strongly depends on the complexity of the RBB. The author should ensure, however, that a reader understands what the RBB code is doing and in which sequence.
Results obtained with the example implementation providing insights into how - under different settings - the RBB performs, including extreme scenarios. For a linear output at least two test cases should be provided, for a curved one as many as required to capture the behaviour of the RBB over the full range of input values. Benchmarks should provide outputs for standardised scenarios. They are the base for evaluating re-implementations.
A version control is already included if GitHub is used. If the RBB is provided via a different platform, an individual version control would help to document the history. At least it should be provided:
Any information on how the RBB should be referenced when reused. If the RBB is already tested and received a DOI, this is the place to find it.
It should be a demonstration program specifically written for the purpose of demonstrating the RBB in action with minimal superfluous content (like the code examples provided in the NetLogo library). It must be in a format that is readable by compilers or development environments commonly used by agent-based modellers (like NetLogo, GAMA etc.). Complex model structures should be avoided to reduce the risk of obsolescence over time and to prevent the actual mechanics of the RBB being obscured by unimportant model details. The following information should be provided:
What is the history of the RBB? Is it entirely new or based on earlier submodels, or an implementation of an existing submodel? Has the RBB, or its predecessors, been used in literature? Reference list of publications, where the RBB was successfully used.
Optional because of the effort, but it would be worthwhile particularly if the RBB is complex.
Sometimes an RBB belongs to a family of others. For example:
Any external reference (not included in bullet point 11) if required.