ALMaSS Hare ODDox  1.1
The hare model description following ODdox protocol
ALMaSS Hare ODdox Documentation

Created by:
Chris J. Topping
Dept. Wildlife Ecology,
National Environmental Research Institute, Aarhus University,
DK-8410, Roende, Denmark
5th November 2008, revised 3rd November 2009


1. Purpose

Since the 1960s, hare population have undergone severe declines in Denmark and the rest of Europe. Many factors have been suggested as possible causes and there is a clear correlation between intensification of agriculture and population decline. However many of the potential causal factors co-vary in time and space and as such analyses seeking to attribute the causes of declines to simple factors have not been successful. This model was designed to integrate the knowledge we have on hare ecology and behaviour to better understand hare population regulating factors.

2. State variables and scales

The hare model presented here forms part of the ALMaSS framework of models (Topping et al., 2003). ALMaSS integrates a detailed simulation of the landscape together with agent-based models of individual animals to elucidate impacts of changes in environmental factors including man's management on animal population dynamics.
Hares are simulated in five life-stages: infants up to 11 days during which they are totally dependent on the lactating doe; young 12-35 days old after which they are fully weaned, juveniles 35-365 days old, adult males and females. The model hare is quite mobile and able to find suitable forage over a wide area when not encumbered with young. Breeding starts in Spring when body condition allows for the production of foetal mass. After birth the female must increase her energy intake in order to provide enough energy for lactation. Energy comes from foraging from green shoot material and the amount of energy obtained depends on the age of the shoot and the overall structure of the vegetation. Dense vegetation may therefore have a high food value in terms of biomass but a poor digestibility and high impedance. A female that cannot support lactation because her combined energy intake and reserves fall too low will abandon her young. Reproduction will not be attempted again until energy reserves are replenished. Growth of model hares is also dependent on energy balance and hares which do not achieve 45% of their potential weight at any age will die. Adults rarely die of energy shortage and are assumed to be able to "carry" a negative energy balance. Since they will remain in the population contributing to social stress, which is the primary density-dependent regulation factor in the hare model. Hunting occurs in Autumn but other non-energetic related losses are based on life-stage specific constant daily probabilities or on events driven by human management activities.

A class attribute overview is presented below or navigate to the individual entry to obtain further details:

2.a Hare Base

Below are all used in alternative configurations:

2.b Hare Infant

2.c Hare Young

2.d Hare Juvenile

2.e Hare Male

2.f Hare Female

Variables related to reproduction:

2.g Environment

ALMaSS is spatially explicit, requiring a detailed two-dimensional map of the landscape and having a time-step of 24 hours. The extent of the model landscape was variable and was a square raster representation of a landscape (e.g. 10 km x 10 km; 5 km x 5 km etc.) at 1 m2 resolution, with wrap around. State variables associated with each raster map were:

  • Id: Identification number associated with each unique polygon.
  • Habitat: Land cover code for each polygon.
  • Farm unit: If the land cover code was a field then it also had an owner associated with it. The owner represented the farmer who carried out farm management on their farm unit.
  • Vegetation type: Vegetation type for the polygon (if any vegetation grows in the polygon).

The environment model in ALMaSS was weather dependent and the state variables associated with the weather sub-model were:

  • Temp: mean temperature on the given day (Celsius).
  • Wind: mean wind speed on the given day (m).
  • Rain: total precipitation on given day (mm).

ALMaSS is a complex ecological simulation system (Topping et al. 2003) with several sub-models, each with its unique set of state variables. E.g. Farm management is a crucial part of ALMaSS, consisting of 3 elements: farm units, farm types, and crop husbandry plans. There are 74 possible crops types in ALMaSS each with its own crop husbandry plan (e.g. WinterWheat) see Crop Classes. Each crop type is a sub-model and has its own set of state variables. Documentation of the environment section is an ongoing process but the classes indicated above provide useful starting points. Readers may refer to Topping et al. (2003) for more information on farm units, crop types, crop rotations, and farm types in ALMaSS.
The original ALMaSS model was augmented for the purposes of including the hare model by the addition of a digestibility measure to the vegetation growth model. Digestibility was modelled as being between 0.5-0.8, as 0.5 plus the ratio of new growth <14 days old to green biomass >14 days old. If digestibility exceeded 0.8 it was capped at 0.8.

3. Process Overview and Scheduling

The hare model consisted of five life-stage classes, infant (up to 10 days old at which time the hares start having an increasing portion of their diet consisting of solid food); young (up to 35 days, which is the normal weaning age); juvenile (from 35 days to adult, here defined as being a minimum of 180 days old before September 1st); male; and female. Individual hares passed through each life-stage until either becoming adult males or females.

Each life-stage had a set of potential behavioural states linked together by conditional transitions. For example, a hare finding itself in a negative energy situation will make a transition to the behavioural state dispersal.

Most of the key processes in the hare model had an energetic basis. Energy supply and demand determines the dispersal patterns of the hares, their rate of development and reproductive success. The key processes are as follows:

  • Movement - if the hares cannot obtain enough energy to cover their daily energy budget then they will move to a new area, once sufficient energy is available again dispersal stops.
  • The body-weight of the hare is determined by it's energetic history. Hares that do not get maximal energetic inputs will grow at a reduced rate, hence the actual weight is determined throughout the growth period of the hare on a daily basis. NB, hares continue to grow slowly even after they become adult.
  • The period with the highest energetic demand for any hare life-stage is lactation. If the female hare does not have enough energy during this period she will be unable to produce enough milk and her young will either develop more slowly or in extreme situations die. Fat reserves are assumed to be needed for successful rearing of a litter, hence poor energy balance at the start of breeding will also hinder the female from attempting to breed.
  • In situations of extreme energy shortage death from starvation will result. This is quite common for young hares, but rare in adults.

3.a Basic States & Functions

The hare life-stage classes are organised following a state-transition concept such that at any time each hare object is in a specific behavioural state (denoted by st_StateName) and exhibiting behaviour associated with that state. As a result of this behaviour or external stimuli a transition may occur to another state. In the descriptions below, behavioural states are described together with some general functionality common to more that one life-stage.

There are a number of functions that are common to all or most of the hare objects, these are listed here to avoid repetition below. See also see ALMaSS brown hare Energetics ) for a detailed description of the energetic relationships and data sources used in the hare model.

Begin Step: One of three structural controls within the each time-step of one day. The BeginStep was called once for each hare object in each time-step. When all objects had completed this step, the Step function was called. The BeginStep function was responsible for generating mortality and disturbance events, ageing and checking for physiological death. (See Hare_Infant::BeginStep, Hare_Young::BeginStep, Hare_Juvenile::BeginStep, Hare_Male::BeginStep, & Hare_Female::BeginStep).

Step: This function was responsible for calling the behavioural state code for each object. Each hare object would have its Step function called at least once per time step. Hierarchical execution was used to ensure that all infants completed their Step function for the time step before Young were called, then Juveniles, Males and Females. Each object in the list for that life stage (e.g. female), would execute the Step function. This would result in a return parameter denoting the behavioural state the hare was currently in together with a Boolean value to signal whether activity had been completed for that time step. If activity was not completed then Step would be called again on the next pass through the list. When all objects had finished the Step code, then the EndStep function was called. (See Hare_Infant::Step, Hare_Young::Step, Hare_Juvenile::Step, Hare_Male::Step, & Hare_Female::Step).

End Step: Like the BeginStep this function was called only once each time step for each object. Its role was to move the home range peg (see below) for juveniles and adults, but had the role of calling stDevelopment for the young and infants. In this way it was certain that all activity and energy inputs and outputs had been completed before the young hares grew that day. (See Hare_Infant::EndStep, Hare_Young::EndStep, Hare_Juvenile::EndStep, Hare_Male::EndStep, & Hare_Female::EndStep).

Movement: Movement requires the calculation of the cost of movement in time and energy and subtraction of these from the appropriate budgets (see THare::TimeBudget & THare::EnergyBalance). Movement was used both in foraging and dispersal.

Foraging: The state is common to all but the infant hare and is assumed to use up to two thirds of the daily time budget for non-resting activities. The reamining time was used for interactions with other hares and for dispersal. Foraging functions by allowing the model hare to search its local area in grid units of 10 x 10 m, and to extract resources from these areas at a constant rate which was modified by the structure of the vegetation. At the start of each day's foraging activity the hare would search the grid units it was located in and extract food. If the food extracted was less than the maximum the hare could use, and there was still time in the time budget, the hare then searched the surrounding 8 grid units, selecting the one that had the best forage and moved there to feed. If two or more units were tied for best forage the choice was random. This process was continued until either enough food was found (i.e. RMR, growth, locomotion, reproduction, and replenishing fat reserve costs were covered), or there was no more time. It was not possible for a hare to feed from the same grid unit twice in one day. Movement between cells during searching resulted in the use of energy via locomotion. The resulting pattern of foraging is a random walk in a uniform area, but directed movement in patchy conditions. However, the observed pattern of movement of real hares does not match this closely in that real hares tend to stay in local areas for an extended period of time, i.e. have flexible home ranges. The following solution was found to simulate this. See Hare_Young::st_Foraging, Hare_Juvenile::st_Foraging, Hare_Male::st_Foraging, & Hare_Female::st_Foraging.

The centre of the hares activity range is identified (the 'peg'). The peg exerts an attractive force on the hare that increases with the square of the distance between the hare's location and the peg. At each movement choice there is a probability (p of moving in the direction of the peg rather than the optimum feeding choice of: $p = d^{2}/C$ (where C is set at a default of 500000) where d is the distance in m from the peg. This has the property of strongly reducing the 'drift' of an individual across the landscape, but still allowing almost optimal foraging. This alone would have had the undesirable effect of creating permanent home ranges for hares; hence the peg was also allowed to move at the end of each day. The peg movement was in the direction of the final daily forage location and was a constant proportion (pd) of the distance between this and the current peg location. pd was set to be 0.1. This parameter value was fitted by evaluating the behaviour of model hares and choosing values that resulted in long-term stable home ranges in homogenous areas, but the property of being able to switch forage locations under changing conditions (tested as the ability to move between crop fields of different quality as the season progresses).

Evaluation of forage quality was based on a combination of vegetation type, vegetation age, and vegetation structure. Table 3 shows the food qualities for each vegetation type. Overall forage quality was determined by calculating the digestibility, and then multiplying this by an accessibility factor. Accessibility was determined by the height and structure of the vegetation. If the vegetation was denoted as 'patchy', meaning not uniformly dense (e.g. as a modern farm crop) and allowing free access to the hare, then accessibility was 1.0 up to 0.5 m height, decreasing by 0.00125 for each 0.01 m above 0.5 m. This simulates the availability of food growing in patches between the tall vegetation. If the vegetation was not patchy then accessibility decreased by 0.0125, resulting in and accessibility of zero at 1.3 m.

Habitat Types Accessibilty Digestability
Building, Freshwater, River, Saltwater, Coastline -1NA
Coniferous Forest, Urban, Metalled Road, Excavations (e.g. Working gravel pits) 10
DeciduousForest, MixedForest, RiversidePlants, RiversideTrees, Garden/Park, Track, Stone Wall, Hedges, Marsh, Pit Disused, Roadside Verge, Railway, Scrub 0.50.5
Fields, Managed grass areas, Hedgebanks, Semi-natural grass Dependent on vegetation structure and height 0.0-1.0 Dependent on new:old growth ratio: 0.5-0.8

When a grid unit was foraged, the return in energy was given as the extraction rate (Hare_all.cpp::cfg_hare_ExtEff) multiplied by the digestibility and accessibility.

Dispersal: The hare needs to move from its current location, and since the only current cause of this is food shortage, then the best cue is food. This method tests food availability in all 8 directions at 100 random distances up to max_dispersal distance. It then picks the best one and moves there. The energy used in movement is assumed only to be for the one move - not the testing, as an approximation to simulate a perceptive range. (see Hare_Juvenile::st_Dispersal, Hare_Male::st_Dispersal & Hare_Female::st_Dispersal).

THare::st_Dying: A necessary book-keeping state used to signal to the population manager, and possibly the mother, that the hare is dying. Subsequent communication with this object is rendered impossible prior to recovery of memory resources.

3.b Infant States & Functions

  • Hare_Infant::st_Developing: Growth occurred based upon the amount of milk supplied by the mother after subtracting metabolic requirements. If during this state the infant had a negative energy balance during four consecutive days, then the infant object transitioned to st_Dying. If the age of the object was >10days then there was a transition to Hare_Infant::st_NextStage.
  • Hare_Infant::st_NextStage: This state simply replaced this infant object with a 'young' object with the same state parameters as the infant (location, age, size, mother, consecutive days of negative energy).

3.c Young States & Functions

  • Hare_Young::st_Developing: See Hare_Infant::st_Developing. Energy input comes from both the mother and foraging.
  • Hare_Young::st_NextStage: The young object is replaced with a juvenile object with the same state variable values.
  • Hare_Young::st_Foraging: The proportion of the daily maximum energetic requirement from forage is calculated by interpolation of the values given by Hacklander et al (2002). The standard forage fuction (see THare::Forage) was called each day, allowing the young hare to forage up to a maximum energetic input, should time and conditions allow. Foraging used time from the daily time budget of 1440 minutes, and added to energetic costs.
  • Hare_Young::st_Resting: This state is instantaneous and is called at the end of the day, before Hare_Young::st_Developing. It calculates the RMR and balances the daily time budget to 1440 minutes by assuming unused time was used for resting.

3.d Juvenile States & Functions

  • Hare_Juvenile::st_Developing: Energy input from foraging was converted to growth as described in section 1.3.1. Transtion to stNextStage occurred if the object reached the age of 180 days old during the breeding season, or 1yr old. This provided the possibility of early young breeding late in the autumn. Negative energy situations resulted in a transition to stDispersal. The starvation criteria was 14 consecutive days of negative energy balance (although this is an input variable if desired). If this occurred then there was a transition to THare::st_Dying.
  • Hare_Juvenile::st_NextStage: The juvenile object was replaced with a adult object with the same state parameter values. Whether the resulting adult was male or female was stochastic with a probability of 50% male.
  • Hare_Juvenile::st_Foraging: Foraging activity filled 66.6% of the daily activity period, less time spent interacting with other hares (see 2.5.3), or avoiding enemies. Foraging used time from the daily time budget of 1440 minutes, and added to energetic costs as well as inputs.
  • Hare_Juvenile::st_Resting: See young.
  • Hare_Juvenile::st_Dispersal: This state resulted in the movement of the hare a random distance between 100m and 1000m in one of 8 directions (N,NW,W etc.). All 8 locations are evaluated for forage quality and the best location chosen. The energetic and time costs of locomotion between the two locations was calculated into the daily energy budget and time budget.

3.e Male States & Functions

3.f Female States & Functions

  • Hare_Female::st_Developing: see male.
  • Hare_Female::st_Foraging: see juvenile.
  • Hare_Female::st_Resting: see young.
  • Hare_Female::st_Dispersal: see juvenile
  • Hare_Female::st_ReproBehaviour: This state acted as a structural program control and was called once each day after st_Developing and was responsible for controlling oestrous, mating, gestation, giving birth, and lactation via the following states:
  • Hare_Female::UpdateOestrous: During the breeding season, an oestrous counter starting with the value zero was incremented each day. After reaching 20 (21 days) there was a transition to Hare_Female::Mating.
  • Hare_Female::Mating: If a male hare was within 1000m of the females location it was assumed that she was mated. Hare_Female::UpdateGestation: This state was called for the 41 days following mating, after which Hare_Female::GiveBirth was called. During gestation energetic costs of development of foetal mass were added to the daily energy budget.
  • Hare_Female::GiveBirth: One infant object is created for each leveret to be born. A counter for the number of days of lactation is set to zero and the state stLactation is called. The number of Hare_Infant objects born and their size is determined by the amount of foetal mass created up to this point.
  • Hare_Female::DoLactation: The maximum growth energy required by each infant or young from milk is communicated to the female. If the female has sufficient energy in her fat reserves or free energy foraged that day, then each leveret receives its maximum growth energy requirement. If the hare does not have sufficient energy for this, then that that she does have is equally shared between all leverets. The amount of energy received by the leveret is determined by milk energy/conversion and absorption factors.

3.g Scheduling

Hare objects interact with each other and their environment during the simulation run. Since the time-step of the model is one day, this means that interactions need to be integrated into a single daily time-step. This gives rise to potential concurrency problems that were solved using a hierarchical structure to execution. This structure ensures that objects receive information and interact in a sensible order. This was particularly important in the case of lactating female hares who must first obtain enough energy to produce milk before the young are fed. Outside of the need for this kind of interaction control the order of execution of individual objects was random. Random execution order prevents the generation of bias between individuals, e.g. where the same individual would always obtain food first just by virtue of its position in a list of individuals. see Interconnections for more information.


4. Design Concepts

4.a Emergence

Emergent properties were patterns of spatial distribution of hares as a result of exploitation of available resources and social interactions; demographic parameters, (hare population age structure, age-specific survival rates, population size and fluctuations); hare reproductive output (seasonal and annual); and individual hare weights.

4.b. Adaptation

Model hares show a number of adaptive traits. The primary emergent trait was associated with maintaining a favourable energetic status and involved triggered dispersal to find better feeding locations.

Explicitly incorporated adaptations were:

  • Restriction of the onset of breeding behaviour to the period March to September inclusive, preventing unnecessary use of resources for futile reproductive attempts.
  • Restriction of breeding by females if energy depots were too low (< 3% body weight consisting of fat reserves).
  • Cessation of lactation and abandonment of young by the female if energetic requirements require the utilisation of body protein as an energy source.

4.c Fitness

Fitness is based on the survial and reproduction of the hare. It is ultimatly an energetic concept.

4.d Prediction

Prediction is not used in the hare model.

4.e Sensing

Sensing/knowing mechanisms were modelled implicitly on the basis of rules; therefore, individuals were able to sense/know each variable accurately. Variables considered by hare objects in their adaptive decisions were:

  • Day of the year.
  • Daily temperature.
  • Density of other hares within 256m.
  • Forage digestibility and structure.
  • Available fat reserves.
  • Number of days of negative energy conditions.
  • Female hares knew the number and location of their own young during lactation.
  • Infant and young hares knew their daily requirements for milk energy based upon the pre-calculated values for age and size.
  • All hares were subject to the energetic calculations determining daily energetic costs from body size, temperature, and activity.

4.f Interaction

Interactions between model hares fell into two types, these being care of young and interference:

4.f.i Care of young Care of young interactions were related to feeding of the young hares by the female during lactation. Young hares demanded their energetic requirements from the female at feeding, and the female supplied milk up to this requirement assuming she had the necessary energetic resources. If resources were limiting then the available resources were equally distributed between the young. If either the female or one of her young died they informed the others allowing them to take action accordingly (no longer waiting to be fed or not attempting to feed the dead young).

4.f.ii Interference Interference interactions occurred as a density-related effect based on the total number of hares within a 256 m diameter of the hare's precise location (256 was chosen for ease of binary operations). It was assumed that hares inside this area spent time interacting with each other, and therefore reduced the total amount of time available for other activities (feeding, resting). The amount of time taken was given by: $I = 1 - e^{d.s}$ , where I is the proportion of time used interacting, d is the number of hares within 256m and s is a constant fitted as a fitting parameter. This relationship has the property of increasingly penalising hares as the local density increases.

Interactions between hares and their environment were on the basis of information flow from the environment to the hare. The information content was of two types either (i) habitat type, vegetation structure (height and density), vegetation type, palatability, or (ii) it was information on management, e.g. if a field was cut for silage. The first type of information was used in determining movement and feeding behaviour, the second resulted in a probabilistic mortality dependent upon age and type of management. It was assumed that all juvenile and adult hares could escape from mechanical disturbance, whereas 50% of young and 100% of infants would be killed by any activity such as agricultural harvest, mowing or soil cultivation. Other operations that did not disturb the soil or vegetation (e.g. spraying, fertilizer treatment) were not considered as mortality sources. This relatively simple representation of agricultural mortality could easily be improved as more information becomes available since all activities are handled separately.

4.g Stochasticity

Stochasticity was used extensively within the model for applying probabilities:

  • Initial locations of hares at simulation start.
  • Daily chance of predation/death by other factors not modelled explicitly but controlled by two stage specific parameters for infant/young/juvenile, & adults.
  • Foraging movement within homogenous areas and the probability of returning towards the centre of the current home range.
  • Selection of a litter size from a distribution of litter sizes.
  • The probability of female sterility.
  • Determining the sex of a newborn individual.
  • The probability of having to 'escape' a threat, and therefore use energy on running.
  • Determining the daily distance dispersed, should dispersal behaviour be initiated.
  • Determining variation in physiological life-span.

4.h Collectives

All hares were managed as lists of objects by the THare_Population_Manager. This object was responsible for initiating daily activity for all hares, and for output of population information as required.

4.i Observation

Since each hare object is managed through the Hare Population Manager, it is relatively easy to extract information from a single hare, or any set of hares. Information is collected by writing C++ probes that simply sort through the list of hares and extract information from those matching given criteria, e.g. output of the weights and ages of all female hares. Hence information is easily available at the population and individual level.

5. Initialisation

The model was initiated with a starting population of 200 hares per km2 each randomly placed inside the landscape in terrestrial habitats. The hares were aged 1 year old and were given the mean expected weight of a hare of that age. The sex ratio was 1:1. The initial allocation of crops to fields varied between runs of the same simulation but always followed the farm rotation rules. Simulations were started on the 1st of January each year.

6. Inputs

Primary inputs to the model are the landscape structure, weather and farming practices as detailed in section 1.b.ii. Values for hare model parameters are either detailed in the model descriptions, or were a result of fitting during model testing.

7. Interconnections

Apart from connections to the Landscape, Farm and Crop classes, in common with all other ALMaSS models the hare classes are administered by a population manager class, in this case THare_Population_Manager. The THare_Population_Manager is descended from Population_Manager and performs the role of an auditor in the simulation.

7.a The Hare Population Manager

The population manager keeps track of individual hare objects (infant, young, juvenile, male, and female) in the model and initiates their daily behaviour via management of lists. The Population_Manager::Run method is the main daily behaviour control functions splitting each day into 5 steps as follows:

  1. At the start of each time step all hare objects within each list are randomised to avoid concurrency problems.
  2. After randomisation the BeginStep of each object in each list was called. Hierarchical execution started with the list of infant objects and ended with the execution of female objects.
  3. The Step function for each object in the same way as the BeginStep. The Step code of hares differs from BeginStep and EndStep in that it is repeatedly called by the population manager until all hares signal that they have finished Step behaviours for that day. This allows linking of behaviours and more flexibility in terms of daily activities.
  4. When all objects had completed their Step activity, the EndStep function was called for all objects. Behaviours here are those that may depend on other objects or self carrying out activities earlier in the day. The best example is development of young hares happens here after it is certain that if they are going to be, then they have been fed by the female in Step (see Hare_Infant::EndStep).
  5. Any hare objects representing hares that died were removed from the simulation and any output requests handled.

Hare that were born in the simulation during these steps were initiated by the population manager and their initial parameter values were set. The physiological life-span was set at this time using a range of 8-12.5 years, based on Pielowski (1971).

Specialist output of results is primarily done by this class in THare_Population_Manager::DoFirst & THare_Population_Manager::DoLast, calling THare_Population_Manager::POMOutputs & THare_Population_Manager::MRROutputs. Standard output is done by the Population_Manager called from main simulation loop Population_Manager::Run.

THare_Population_Manager is also responsible for precalcuation of many of the energetic or density-dependent pre-requisites for the simulation in THare_Population_Manager::Init.

8. A Note About ODdox

ODdox documentation was created by combining a modified version of the ODD protocol (Grimm et al. 2006) with documented code using doxygen (van Heesch, 1997) to create what we term ODdox documentation. The original ODD (Overview, Design, Detail) protocol divides the model documentation into defined sections covering aspects of model structure and functioning, and finally model details. The new ODdox protocol (Overview, Design, doxygen) broadly follows ODD protocol, but is completed and augmented by extracting comments from the source code. The details of the model are therefore described via descriptions of classes, methods, and variables using hyperlinks to the relevant sections in the source code. In contrast to the ODD, this means that by far the major part of the documentation is placed outside the traditional ODD sections, but linked to them via hyperlinks. The ODdox was specifically designed to facilitate documentation of large object-oriented models with many interacting components, and to provide a flexible way of building documentation as the software is developed. It is therefore structured following logical divisions of the model entities, primarily base class types. At each subdivision there is a class or set of linked classes in focus, and six of the seven ODD sections are written for these classes. The "Submodels" section of ODD becomes superfluous since any links to sub-models are covered by class descriptions for the classes in focus, and submodels per se should not exist. However, there may be important connections between the focus classes and other ODdox sections (e.g. other species, environment). A new section, "Interconnections", is used to describe these and provide html links to them. This approach permits the documentation of large models to be built as an expandable library, and rather than rewriting documentation for additions only requires judicious updating of the interconnection section, doxygen performs the rest of the tasks based on software comments in the new code. Our aim in developing ODdox was therefore to provide an easier, more complete, and more flexible method of documenting large models together with a more user friendly interface, benefitting developers and readers alike.

9. References

Hacklander, K., W. Arnold, & Ruf, T. (2002). "Postnatal development and thermoregulation in the precocial European hare (Lepus europaeus)." Journal of Comparative Physiology B-Biochemical Systemic and Environmental Physiology 172(2): 183-190.

Grimm, V., Berger, U., Bastiansen, F., Eliassen, S., Ginot, V., Giske, J., Goss-Custard, J., Grand, T., Heinz, S.K., Huse, G., Huth, A., Jepsen, J.U., Jorgensen, C., Mooij, W.M., Muller, B., Pe'er, G., Piou, C., Railsback, S.F., Robbins, A.M., Robbins, M.M., Rossmanith, E., Ruger, N., Strand, E., Souissi, S., Stillman, R.A., Vabo, R., Visser, U., & DeAngelis, D.L. (2006) A standard protocol for describing individual-based and agent-based models. Ecological Modelling, 198, 115-126.

Pielowski, Z. (1971) "Length of life of the hare." Acta Theriologica 16(1-7): 89-94.

Topping C.J., Hansen, T.S., Jensen, T.S., Jepsen, J.U., Nikolajsen, F. and Oddersaer, P. 2003. ALMaSS, an agent-based model for animals in temperate European landscapes. Ecological Modelling 167: 65-82.