6. DEFINITIONS OF FUNCTIONAL GROUPS

6.1. Introduction to functional groups

Types of functional groups

Biological components are represented as biomass pools (most non-vertebrates), age-structured biomass pools (some invertebrates) or age-structured groups (vertebrates). These three group types are assigned according to the GroupType and NumCohorts parameters given in the functional_groups.csv file (Table 8). Group types FISH, FISH_INVERT, SHARK, MAMMAL, BIRD, REPTILE are assigned to the fully age-structured groups with the number of age groups given by NumCohorts. Other groups are assigned to biomass pools. If NumCohorts for a biomass pool is >1 they will be assigned to an age-structured biomass pool. The age-structured biomass pools are similar to stanzas used in, for example, Ecosim and are used to allow for different juvenile and adult behaviour and parameters. All non-vertebrates that have NumCohorts=1 are assigned to simple biomass pools.

Caution

Can a non-vertebrate be modelled as an age-structured group?

Six GroupTypes (FISH, FISH_INVERT, MAMMAL, SHARK, BIRD and REPTILE) are currently modelled as age-structured groups. If full age-structure is needed for a non-vertebrate, it should be set as one of these groups, most likely as FISH_INVERT or FISH. FISH_INVERT currently uses the same code as FISH, but the intent is to use it to represent a size rather than age-based model, which is a more typical representation for key invertebrates (such as exploited species). Note however that setting a group as FISH_INVERT or FISH would not call typical non-vertebrate routines (see below).

Atlantis does not explicitly model sex, but represents an average individual. This means that all individuals in a biomass pool and an age cohort (or a genotype in a cohort, if multiple genotypes are modelled) are considered identical in terms of their reproductive output. This may require some caution in parameterisation, e.g. number of offspring per mammal individual.

State variables tracked

Main model

In models that are based on N only (i.e. do not explicitly track P and C) the only state variable tracked for most biomass pools is N, but both N and Si fluxes are tracked for Si limited biomass pools, such as diatoms. The Si limited groups are identified from the functional_groups.csv file parameter IsSiliconDep (see below). In age-structured groups three variables are tracked for each age cohort: reserve N (RN), structural N (SN) and numbers (Num). In addition, fluxes in the water column and sediments are tracked through eight inanimate pools: ammonia (NH), nitrate (NO), dissolved silica (Si), detrital silica (DSi), dissolved oxygen (O2), dissolved organic nitrogen (DON), labile detritus (DL), and refractory detritus (DR). An additional inanimate pool, carrion (DC), is also required, though it is only dynamically used if the fisheries submodel is active; DC is then used to represent fisheries discards. State variables tracked for each group defined with the GroupType parameter in the functional_groups.csv file are listed in Table 8.

Extended models

If the model also includes tracking of P and C (trackAtomicRatio is set to 1 in run.prm), then P and C pools are tracked for each functional group, together with N pools. Additional inanimate pools are for C and P are also required. If the model is of an estuary (FlagIsEstuary=1 in run.prm file) a sediment (SED) inanimate pool is added for the water column. If the model tracks contaminants (track_contaminants=1 in run.prm) a separate pool is added for each contaminant for each nitrogen pool tracked, so that concentration of contaminants can be tracked throughout the entire food web. If the model spans polar regions (flagIsPolar=1 in run.prm) the model allows for 24 hours of night/daylight seasonally.

Allocation of pools throughout the vertical dimension: water column, epibenthos and sediment

Atlantis models 3-5 explicit distribution types of organisms and inanimate pools through the model domain – water column, epibenthic layer and sediments are tracked in all models and ice and land may also optionally be included. The water column and sediment are modelled as three dimensional spaces (units of variables are in m3), whereas the epibenthic layer is two-dimensional (units in m2). Most organisms are restricted to one type, such as sediments (infaunal invertebrates identified with INF in GroupType name), epibenthic layer (epibenthic organisms, identified with EP in the GroupType name) or water column (fully age-structured groups). Some of the smaller groups (e.g. microflora primary producers) and the inanimate pools can exist in both the sediments and water column (Table 8).

In the Atlantis code the water column, epibenthic, sediment, ice and land distributionns are referred to as “habitatType”. However, remember that they are not the same as the ecological epibenthic habitats modelled in Atlantis (e.g. seagrass, corals, sponges etc.).

Table 1: Table 8. State variables tracked in the main Atlantis model (no ice or land included). * indicates optional Si tracking in primary producers that are limited by Si. Primary producer Si limitation is set in functional_groups.csv file parameter IsSiliconDep (see Table 9). In models that include C and P, both C and P are tracked like N (so the number of variable tracked is three times larger).
Group State variables tracked GroupType in CSV file or initial_conditions.nc
Biomass pools
pelagic bacteria N in water column PL_BACT
sediment bacteria N in sediments SED_BACT
Age-structured biomass pools
These groups can be age structured if NumCohorts set > 1
non epibenthic primary producers N in water column
N in sediments
Si in water column
Si in sediments
NOTE: Age-structure not recommended
SM_PHY
LG_PHY
MICROPHTYBENTHOS
DINOFLAG
epibenthic primary producers N in epibenthic layer for each age group defined by NumCohorts parameter. If age-structure is selected for SEAGRASS it is not really age structure, but different parts of the plant – with “age 0” assumed to be the pool representing leaves, “age 1” the roots, and “age 2” the epiphytes on the leaves, see details here PHYTOBEN
SEAGRASS
infaunal invertebrates N in sediments for each age group defined by the NumCohorts parameter.
NOTE: Not typically age-structured
SM_INF
LG_INF
epibenthic invertebrates N in epibenthic layer for each age group defined by the NumCohorts parameter SED_EP_FF
SED_EP_OTHER
MOB_EP_OTHER
CORAL
SPONGE
water column invertebrates N in water column for each age group defined by the NumCohorts parameter SM_ZOO
MED_ZOO
LG_ZOO
land plants N on land for each age group defined by the NumCohorts parameter MARSH
MANGROVE
large invertebrates N in water column for each age group defined by NumCohorts parameter CEP
PWN
Age-structured groups
vertebrates RN in water column
SN in water column
Num in water column
for each cohort defined in NumCohorts parameter
FISH
SHARK
MAMMAL
BIRD
REPTILE
size/age structured invertebrates of particular interest RN in water column
SN in water column
Num in water column
for each cohort defined in NumCohorts parameter
FISH_INVERT
Inanimate pools
Ammonia NH3 in water column
NH3 in sediments
NH
Nitrate NO3 in water column
NO3 in sediments
NO
Oxygen O2 in water column
O2 in sediments
O2
Dissolved organic nitrogen DON in water column
DON in sediments
DON
Dissolved silica Si in water column Si
Detrital silica DSi in water column DSi
Labile detritus N in water column
N in sediments
LAB_DET
Refractory detritus N in water column
N in sediments
REF_DET
Carrion (only dynamically tracked if fisheries are active) N in water column
N in sediments
CARRION
Sediment (only if flagIsEstuary=1) SED in water column SED

Timestep of the model

The timestep at which most processes are repeated is typically an adaptive daily (24h) or diurnal (12h) timestep, though tidal models with shorter timesteps (3h or 6h) also exist. This timestep is specified as dt in the run.prm file. Reproduction, recruitment and migration occur less frequently, typically once per year.

The adaptive timestep means that for most of the groups the processes are repeated once per timestep, but for small organisms, such as bacteria and phytoplankton the timestep is reduced to ensure that fluxes into and out of the component with the fastest turnover rates remain stable and numerical artifacts are not introduced into the mathematical solution scheme. The length of the adaptive timestep for such groups is determined to ensure that the relative change (flux) in any variable does not exceed a pre-specified proportion of the standing stock – this tolerance is set in the biology.prm file. The adaptive timestep changes through time, depending on the standing stock of these groups and the temperature, nutrient availability and other factors that affect the turnover rates in these “fast” variables.

Biological processes modelled

The modelled biological processes include primary production, bacterial processes, feeding, assimilation, waste production, explicit respiration (optional and not used in most models), growth, movement and migration, non-predation mortality, maturation, reproduction and recruitment. In biomass pools all processes are modelled through biomass (nitrogen) turnover. In age-structured groups, the state variables are numbers-at-age and weight-at-age (tracked as reserve and structural nitrogen) which can be converted to biomass.

6.2. Defining functional groups

The functional group input file sets all the biological groups in the model. It can be set in CSV or XML format (see examples here). The number of groups is entirely flexible, but each model must include three obligatory detritus groups: carrion (CARRION), labile detritus (LAB_DET) and refractory detritus (REF_DET).

Note

The functional_groups.csv file defines the biological groups used in the model and some of their key characteristics. These characteristics are used throughout the code to apply different appropriate routines for the group. The number of groups in the functional_groups.csv file must match the number given in the K_num_tot_sp parameter in the run.prm file. The detritus groups must be defined as the last three groups in the file.

Currently each group must have the following parameters (characteristics). For new updates, check the Atlantis wiki functional group page

Table 2: Table 9. Parameters in the functional_groups.csv file.
Parameter name Description
GroupCode 2 or 3 letter code of upper case letters used to identify each functional group. Atlantis will display an error message and quit if the group codes are not the correct format. This code is very important and applied to all functional group specific parameters
Index An index of the group. Atlantis doesn’t actually read this in but it is helpful for modellers to see as it defines the order of read-in for species vectors and the group ID number if you are trying to activate some of the debug/calibration fprintf statements using whichcheck in the run.prm file. The index must start form 0, as this is how the C programing language counts
IsTurnedOn A boolean value (either 0 (false) or 1 (true)) to indicate if the group is active in the current model run. If the group is not active it will be excluded from the model.

This option allows the user to exclude some groups from the model without having to setup new initial conditions and parameter files.
Name Name of a group. This must match the tracer names in the initial_conditions.nc file as it used to find the tracers in the initial_conditions.nc input file.
LongName The long name written to the NetCDF output files. This name can be a few words long and ideally should be informative. This is especially important when sharing the model with others.
NumCohorts The number of cohorts in a functional group. If the value is > 1 the groups is assumed to be age-structured (either an age-structured biomass pool or age-structured group).

In the earlier Atlantis versions age structured groups all had to have 10 cohorts. This is now relaxed and there is no upper limit on the number of age-groups to model (but remember, the more age groups the slower the model will run).
NumGeneTypes Number of discrete phenotypes in each age group. This option is used when simulating evolution or multiple size-at-age representations and should only be set to >1 if flag_do_evolution is set to 1 in biology.prm file. If more than one phenotype is present, initial conditions will be have to be set up for each phenotype.
NumStages This parameter describes the number of separate stages in a functional group, which are set to 1 or 2 if juvenile and adult stages have separate parameters for distribution, mortality, migration, feeding and others. In principle, more than 2 stages are possible, although this has not been tested. Typically all age-structured groups have 2 stages, but age-structured biomass pools can also have separate parameters for juvenile and adult stages and thus have 2 stages.
NumSpawns Number of spawns in the year. Typically one per year, but more than one is possible (especially for ages structured biomass pool groups). The timing of spawn is given in Time_Spawn_XXX parameter in biology.prm file (if NumSpawns is 1 it expects a single value, otherwise it expects a vector of length NumSpawns).
NumAgeClassSize Number of calendar years in one age group. This can be set to be anything between a few months to many years and allows simulation of different longevity organisms without having to setup too many age groups (which reduces simulation speed). Note, all individuals in an age group are considered identical (unless different phenotypes are set in NumGeneTypes, in which case all individuals in one phenotype of one age group are identical). However, the proportion of an age group per annual cohort is tracked so that recruitment variation is represented through time and not homogenized away (see chapter 10.9.6).
NumStocks This sets the number of geographically distinct stocks for age-structured groups and age-structured biomass pools. The stocks must occupy different boxes or layers, i.e. they do not spatially overlap.

Some biological parameters, like vulnerability to prey can be set as stock specific, which allows for better tuning. It has been applied to some groups that are known to include ecologically distinct stocks in different geographic areas. If NumStocks >1 then the corresponding number of stock specific parameters will be required in the biology.prm input file
VerticallyMigrates If true then the group can move vertically through the water column. This should be set to 1 except for debugging purposes. If this is set to 0, no vertical movement will happen even if it is specified in the biology.prm file and the vertical distribution of individuals in the initial_conditions.nc file will be retained throughout the simulation.
HorizontallyMigrates If true then the group can move horizontally throughout the model as well as migrate out of the model. No migration will happen if this is set to 0. Biomass pool groups which are marked as passive in the initial_conditions.nc will still be advected even if HorizontallyMigrates is set to 0.
NumMigrations The number of migrations per calendar year
MultiYrMigrations Whether any of the migrations are multi-year (1) or simply annual (0). While this column is always required in the groups definition file the associated code will not function unless flag_multiyr_migs is also set to 1 in the run.prm file
ExternalReproduction This is whether the group reproduces outside the model (i.e. the value for Time_Spawn_XXX parameter in biology.prm file is set during a day of the year when the species should be outside the model)
RecruitType This is where you set the recruitment typ:

0 = independent distribution (use recruit_hdistrib)
1 = at parental locations
2 = external (into Migration Array)
3 = using a forced larval dispersal matrix
4 = external reproducer who has parental care
IsFished If set to 1 the group can be fished (targeted) by commercial or recreational fisheries and the catch will be reported in the output files, and is analysed in the assessment model. Note that if set to 0, dynamic fishing will still occur if parameters are given in the harvest.prm file.
IsImpacted If true then the group can be impacted by fishing, bycatch or incidental fishing related mortality (e.g. destruction of living habitats). This parameter differentiates between targeted and accidental interactions; it is not reported in the landings. This means there must be values in the harvest files for this group. Note the group can be impacted by bycatch/incidental mortality even if no explicit targeted fishing is setup. This means the bycatch/incidental mortality parameters should be assessed carefully in the harvest.prm file.

If both this value and IsFished are set to 0 then all fisheries related impacts on the group are disabled.
isTAC If true, the group will be under total allowable catch (TAC) management. It will activate specific TAC related code in the Harvest submodel.
GroupType The type of species. This is one of the most important parameters, as it tells Atlantis what kind of organism the functional group is representing and what kind of processes should be applied to it. Six group types are allowed for age-structured groups. A lot more group types are available to define invertebrate biomass pool types and these group types are used to dictate the adaptive timestep for simulating proceses, and all of them have some specialized ecological routines applied (see some details about their characteristics here).

The main Atlantis model groups include:

AGE STRUCTURED GROUPS

1) Standard fin-fish or generic vertebrate FISH
2) Size/age-structured invertebrate FISH_INVERT
3) Chondrichthyans SHARK
4) Birds BIRD
5) Marine mammanls (potentially terrestrial mammals in the future) MAMMAL
6) Reptiles (can be present in the water and on land) REPTILE.

BIOMASS POOL GROUPS

Phytoplankton

7) Small Phytoplankton SM_PHY
8) Large Phytoplankton LG_PHY (used in combination with IsSiliconDep to define diatoms)
9) Trichodesmium and Cyanobacteria TRICHO (N fixers)

Other primary producers

10) Microphtybenthos MICROPHTYBENTHOS
11) Dinoflagellates DINOFLAG
12) Phytoben PHYTOBEN (typically used to represent macroalgae)
13) Seagrass SEAGRASS
14) Turf TURF

Zooplankton

15) Small Zooplankton SM_ZOO
16) Medium Zooplankton MED_ZOO
17) Large Zooplankton LG_ZOO
18) Jellyfish JELLIES (in the past represented as LG_ZOO)

Large pelagic invetebrates

19) Cephalopod CEP
20) Prawns PWN

Infauna

21) Small Infauna SM_INF
22) Large Infauna LG_INF

Epibenthic organisms

23) Sediment epibenthic filter feeders SED_EP_FF (often used for bivalves, sponges)
24) Benthic grazers SED_EP_OTHER
25) Mobile epibenthos MOB_EP_OTHER (often used for crabs, lobster, octopus)
26) Corals CORAL
27) Sponges SPONGE

Bacteria

28) Pelagic Bacteria PL_BACT
29) Sediment Bacteria SED_BACT

Obligatory detritus groups

30) Carrion CARRION
31) Labile detritus LAB_DET
32) Refractory detritus REF_DET
33) Additional ice and land based groups are also available.

Ice dwelling

34) ICE_BACT
35) ICE_MIXOTROPHS
36) ICE_DIATOMS
37) ICE_ZOOBIOTA

Land dwelling (vegetation only for now)

38) MARSH
39) MANGROVE
IsPredator If true then the group is assumed to eat other groups by the assessment code (for the purposes of defining network indices etc), it does not affect the ecological model.
IsCover If true the group is classified as a habitat. This means that the group becomes a unique habitat type, that can be used by other groups in the model for shelter etc, in addition to the general four geological habitat types included by default (reef, flat, soft, canyon).

For example, if IsCover is set to 1 for three functional groups (e.g. BFS, BFF, and MA), the model has a total of seven habitat types. In this case the habitat dependency parameter habitat_XXX in the biology.prm file must have 7 values for each functional group. The living habitats are always the first entries and the geological classes always the last 4 entries. So in this example, the first three entries will refer to the IsCover groups in the order they are listed in the functional_groups.csv file and the last four entries will refer to reef, flat, soft, canyon habitats.
IsSiliconDep If true, the group is assumed to be Si limited and its energy flows are tracked both through nitrogen and silicon. All Si limited groups must have separate Si tracers set in the initial_conditions.nc, in addition to the usual Nitrogen tracers. At present most models have this set to true for Diatoms and MicroPhytopbenthos.
IsAssessed If true then this group will be assessed in the Assessment submodel. This submodel will generate a number of assessment indices.
IsCatchGrazer If true, the group grazes on catch, for instance pinnipeds that eat fish from nets. If set to 1 for a functional group XXX, then availability of catch of each functional group should be given for this group in the pFCXXX parameter in the biology.prm file. The pFC parameters are not required for groups that are not catch grazers.
OverWinters If true, this group will go into hiatus over winter. The overwintering can be triggered and ended by time of the year or temperature. This is set using overwinterStartTofY_XXX, overwinterEndTofY_XXX, overwinterStartTemp_XXX, overwinterEndTemp_XXX parameters in the biology.prm file. These parameters only have to be set for overwintering groups.
isCultured This identifies aquaculture groups, and applies aquaculture processes to them. Parameters required for aquaculture groups are described here.
isHabDepend Identifies groups that are habitat dependent. Note, this value takes precedence over habitat preference parameters in the biology.prm file. If isHabDepend is set to 0 then the group is not affected by habitats, even if appropriate parameters are given in the biology.prm
numMoveEntries The number of movement time periods you would like the group to have. Historically this has been fixed at 4 to allow for seasonal movement, but currently any number of moves is allowed. See further details on parameters in biology.prm here
isBioEroder Whether the group bioerodes corals (i.e. sponges). This allows for boring sponges and bioeroder activities in reef models including corals and sponges
isSupplemented Whether the group feeds on material from outside the model. If this is set to 1, the group will be assumed to be eating insects or pellets or something from outside the model domain. The proportion of their diet gained in this way (per box) must be set using the Supp_XXX in the biology.prm file.
isExternal Flag to indicate whether the group uses the external population model option (instead of simply holding individuals in hiatus when they have migrated out of the model).
isLandActive Marks the group as able to be on land (for models with land and sea). Only required if flagAllowLand is set to 1 in the run.prm file.
isLightEffected Marks the group as susceptible to light pollution. Only required if flag_pollutant_impacts is set to 1 in the run.prm file.
isNoiseEffected Marks the group as susceptible to noise pollution. Only required if flag_pollutant_impacts is set to 1 in the run.prm file.
Note

What is the role of detritus in an ecosystem model? An excerpt from Murray and Parslow (1997) PPBIM report:

“The detrital pool acts as a store of fixed nutrient, which introduces a delay into nutrient recycling. Particulate detritus sinks and thereby transports nutrients out of the surface layer into deep water or to the sediment. Dissolved organic matter (DOM) does not sink, and very large pools of refractory DOM are found in the open ocean and in coastal waters. Horizontal transport of particulate detritus and DOM from regions of high production to more oligotrophic areas can also be important”

“Three forms of non-living organic matter are included in the model: labile particulate detritus, refractory particulate detritus and dissolved organic matter [NOTE – these same pools, plus Carrion, are included in Atlantis, which is based on the PPBIM]. These are represented by the symbols DL, DR and DON respectively. The particulate detrital pool [in nature] contains a wide variety of particles, with diverse sources, ages, sizes and chemical composition. The model includes two functional components: fresh labile detritus breaking down on time scales of a few days, and semi-refractory detritus turning over on time scales of a year. This allows the model to treat perturbations to the nutrient cycle on time scales of days to years.”

“[In nature] The pool of dissolved organic matter also contains a variety of compounds with diverse turnover rates. In oceanic waters there is a large pool of highly refractory DOM, whose average age has been estimated to be as much as 3400 years (Williams 1975). The bulk of this material is essentially irrelevant for the cycling of nutrients on the time scales of [model] interest. However the DOM pool also includes much more labile components. Highly labile sugars and amino acids released through cell lysis or messy feeding may be consumed by bacteria or break down on time scales of hours (Fuhrman 1987) to days (Holibaugh and Azam 1983). This material is not modelled explicitly, but is treated as though it was remineralised immediately to form dissolved inorganic nutrient. The model includes a single DOM pool with an assumed turnover time of the order of a hundred days. … Because it turns over on time scales, which are long compared with both phytoplankton uptake of inorganic N, and transport within the Bay, it plays a role in reducing N sequestration in coastal waters.”

6.3. Defining the GroupType correctly

The definition of a group is very important as it will determine the ecological routines and the adaptive timestep applied for the group (see timestep description in chapter 6.1). Table 10 shows routines that are called for different group types. The routines are further modified depending on whether consumers live in the water column or sediment.

Table 3: Table 10. Routines called for different non-vertebrate GroupTypes in Atlantis code. The Call_Group_Process_Function() routine in atecology.c determines the specific routine used from the atGroupProcess.c file non vertebrate groups. Note, that the greatest diversity ofroutines are called for different benthic invertebrate types (for clarity benthic invertebrates are shown in bold).
Routine name in Atlantis code GroupType for which the routine is applied
Dinoflag_Process() DINOFLAG
ICE_MIXOTROPHS
Phytoplankton_Process() LG_PHY
SM_PHY
PHYTOBEN
SEAGRASS
MICROPHTYBENTHOS
TURF
ICE_DIATOMS
Invert_Consumers_Process() SM_INF
LG_INF
SM_ZOO
MED_ZOO
LG_ZOO
CEP
PWN
ICE_ZOOBIOTA
Epibenthic_Invert_Process() SED_EP_FF
MOB_EP_OTHER
Sediment_Epi_Other_Process() SED_EP_OTHER
Coral_Process() CORAL
SPONGE
Pelagic_Bacteria_Process() PL_BACT
Ice_Bacteria_Process() ICE_BACT
Sediment_Bacterica_Process() SED_BACT
Labile_Detritus_Process() LAB_DET
Refractory_Detritus_Process() REF_DET
Carrion_Process() CARRION

6.4. Modifying functional groups in parameterised models

Details on how to add a new functional group into an existing model are given on the wiki here. This will require a significant effort and reparameterisation of the model.

Alternatively, if changes to functional groups are needed, it might be easier to use an existing group and change it into something new. You may not want to change the three letter code, as that would involve changing all the parameter names for the group.