1.7.1. Incoming flux

Some species might not do the full life cycle within the simulated domain (reproduce outside the domain for example). For such species, one way to take them into account is to include a flux of schools with user-defined age or length at specific time of the year. This is done by setting either the flux.incoming.byDt.byAge.file.sp# or flux.incoming.byDt.bySize.file.sp# parameters, which are the paths of the CSV files containing the input flux.

It provides the biomass (in tons) for the given size or age classes and must be as follows:

Table 1.9 Example of input flux by time-step and by age class

Time step / Age

0

2

3

4

0

0

500

800

0

1

0

500

800

0

2

0

400

700

0

3

0

400

700

0

The values of the class intervals (first row) are automatically scanned by Osmose. If flux.incoming.byDt.byAge.file.sp# is provided, the corresponding length will be computed from age classes using the growth ageToLength method. Conversely, if flux.incoming.byDt.bySize.file.sp# is provided, the corresponding age will be computed using the lengthToAge method (cf. Fig. 1.3).

graph TD; id00("Loop over species") id0{"Parameter<br> <i>flux.incoming.byDt.byAge.file.sp#</i> exists?"} id1(Read input file) id2(Compute centerred age) id3("Compute centerred length<br>Growth.ageToLength(age)") id1bis(Read input file) id2bis(Compute centerred length) id3bis("Compute centerred length<br>Growth.lengthToAge(length)") id0 -->|yes| id1 id1 --> id2 id2 --> id3 id0 -->|no| id1bis id1bis --> id2bis id2bis --> id3bis id00 --> id0

Fig. 1.3 Initialization of the incoming flux process

In the above example, there are 4 age classes: [0 2[, [2 3[, [3 4[ and [4 lifespan[. Osmose will compute the incoming age at the middle of the interval (i.e. 1 year, 2.5 year, 3.5 year, etc). For the first time step, Osmose will therefore input 500 tons of 2.5 year-old school and 800 tons of 3.5 year school.

The values of the time step (leftmost column) does not matter. Osmose assumes there is one line per time step. The number of time steps in the CSV file must be a multiple of the number of time steps per year. If the time series is shorter than the duration of the simulation, Osmose will loop over it. If the time series is longer than the duration of the simulation, Osmose will ignore the exceeding steps.

The state variable that is updated is the Simulation.schoolSet variable, to which is added these newly created schools.

The number of schools created for each species and each size-class is controlled by the simulation.nschool.sp# (also used in the reproduction processes). If the abundance is less than the number of schools, one school of abundance \(A\) is created. Else, \(N_{school}\) of abundance \(\dfrac{A}{N_{school}}\) are created (cf. Fig. 1.4).

graph TD; id0(Loop over species) id1(Loop over size-classes) id2("Compute weight<br><i>W = species.computeWeight(L)</i>") id3(Compute abundance<br><i>A = B * 1e6 / W</i>) id4{<i>A < nSchool?</i>} id5(Create <i>1</i> school<br>Abundance <i>A</i>) id6(Create <i>nSchool</i> school<br>Abundance <i>A/nSchool</i>) id0 --> id1 id1 --> id2 id2 --> id3 id3 --> id4 id4 -->|yes| id5 id4 -->|no| id6

Fig. 1.4 Incomging flux process

Size-classes are handled the same way than age classes, except that the last size-class covers the [4, Linf[ interval.

Danger

The incoming biomass should be calibrated.