4.18. Biotic ressources

Low trophic level (LTL hereafter) organisms such as phytoplankton and zooplankton are not explicitly modelled in Osmose but are essential to take into account are they constitute the base of the trophic chain. They are considered as an input of the model, spatially explicit and varying with time.

First one must define the LTL groups that are included in the configuration. In a second time, Osmose needs to know how the LTL data will be delivered.

4.18.1. Plankton groups

plankton.accessibility2fish.plk# is the fraction of the plankton biomass that are accessible to the fish, ranging from zero to one. This parameter accounts for many biological processes that are not explicitly represented in Osmose and basically says that only a small fraction of the plankton in the water column is effectively available to the fish for preying upon. Plankton accessibility is generally completely unknown and, just like larval mortality, it should be estimated in the calibration process.

plankton.conversion2tons.plk# is the factor for converting biomass from plankton unit (as provided in the LTL input file) to wet weight in \(ton/km^2\). (e.g. \(mmolN/m^2\) to \(tonne/km^2\))

plankton.name.plk# is the name of the plankton group.

plankton.size.max.plk# = 0.002
plankton.size.min.plk# = 0.0002

are the minimum and maximum size of the organisms in the plankton group, in centimeters.

plankton.TL.plk# is the trophic level of the plankton group

The plankton.multiplier.plk# is used for multiplying plankton biomass, in order to run different scenarios of plankton forcing in relation to a reference state (plankton.multiplier.plk0 = 1 by default for the reference state). For instance plankton.multiplier.plk0=2 means that Osmose will multiply by two the biomass of the plankton group zero of the LTL dataset.

4.18.2. Constant LTL values

LTL variables can be initialized by providing a total biomass in ton through the plankton.biomass.total.plk# parameter. Note that this value is the total biomass within the domain. The value within a cell is recovered by dividing by the total number of ocean cells

4.18.3. LTL dataset

OSMOSE expects the LTL dataset to be spatially explicit and varying with time. The plankton biomass must be provided as time series (with same time step than OSMOSE configuration) on the OSMOSE grid, in a NetCDF file. The ltl.java.classname parameter indicates which Java class in Osmose should handle the reading of the LTL dataset. LTLFastForcing is the default plugin. Do not change it, unless you know exactly what you are doing.


The user is strongly invited to pre-process the LTL dataset into a 3D (time, lat, lon) field on a regular grid.

ltl.netcdf.file is the path of the NetCDF file that stores the plankton biomass for every LTL group. Here is an example of the NetCDF header for the OSMOSE default configuration:

netcdf osm_ltlbiomass_integrated {
        ltl = 4 ;
        nx = 56 ;
        ny = 62 ;
        time = UNLIMITED ; // (24 currently)
        float time(time) ;
            time:units = "days since 1-1-1 0:0:0" ;
            time:calendar = "360_day" ;
            time:description = "time ellapsed, in days, since the beginning of the simulation" ;
        float ltl_biomass(time, ltl, ny, nx) ;
            ltl_biomass:units = "tons per cell" ;
            ltl_biomass:description = "plankton biomass in osmose cell, in tons integrated on water column, per group and per cell" ;
            ltl_biomass:_FillValue = -99.f ;
        float latitude(ny, nx) ;
            latitude:units = "degree" ;
            latitude:description = "latitude of the center of the cell" ;
        float longitude(ny, nx) ;
            longitude:units = "degree" ;
            longitude:description = "longitude of the center of the cell" ;

    // global attributes:
        :dimension_ltl = "0=Dinoflagellates 1=Diatoms 2=Ciliates 3=Copepods " ;

How to generate such a NetCDF file is beyond the scope of this document.


Write some notes on the generation of this kind of files

ltl.nstep is the number of time steps in the LTL dataset file. The parameter must be a multiple of the number of time step per year. OSMOSE will loop over the LTL data through time.


The constant LTL groups must be defined last, after the other LTL groups whose biomass is provided in the NetCDF file

LTL dataset usually comes from the output of biogeochemical models, such as NPZD, PISCES, ECO3M, BFM, etc. OSMOSE provides a few plugins to read directly the LTL data from the output of biogeochemical models. These plugins have been added on the go and might reveal some flaws under scrutiny. It is recommended to provide the LTL data in the pre-defined OSMOSE format instead (as explained above). They do exist though and we mention them briefly. ROMS-PISCES

ltl.java.classname = fr.ird.osmose.ltl.LTLFastForcingRomsPisces
ltl.netcdf.file.t# =ltl/roms_avg_5.nc
ltl.netcdf.var.plankton.plk# = SPHYTO
ltl.netcdf.grid.file = grid.nc
ltl.netcdf.var.bathy = h
ltl.netcdf.var.csr = Cs_r
ltl.netcdf.var.hc = hc
ltl.netcdf.var.lat = lat_rho
ltl.netcdf.var.lon = lon_rho
ltl.integration.depth = -100

This plugin expects as many NetCDF files as time step per year. The integration depth, metre, is the depth of the water column to be taken into account for integrating the plankton biomass. ROMS grid and OSMOSE grid can be different, though all of OSMOSE grid must be included within the ROMS grid. ECO3M

ltl.java.classname = fr.ird.osmose.ltl.LTLFastForcingECO3M
ltl.netcdf.file.t# = ltl/200305_150.nc
ltl.netcdf.var.plankton.plk# = NANON
ltl.netcdf.var.zlevel = levels_ZHL
ltl.integration.depth = -100

This plugin expects as many NetCDF files as time step per year. Same definition of the integration depth as for ROMS-PISCES plugin. For this plugin, it is assumed that the OSMOSE grid does match the ECO3M grid or is at least in line with it (for example one OSMOSE cell is the aggregation of 3x3 ECO3M cells). It implies a case-specific definition of the OSMOSE grid:

grid.java.classname = fr.ird.osmose.grid.ECO3MGrid
grid.netcdf.file = eco3m-grid.nc
grid.stride = 4
grid.var.lat = Latitude
grid.var.lon = Longitude
grid.var.mask = Mask

The parameter grid.stride controls the level of aggregation of ECO3M cells for generating one OSMOSE cell. In this case an OSMOSE cell will be a cluster of 4x4 ECO3M cells.