Skip to content
Nicolas Barrier edited this page Jan 22, 2025 · 1 revision

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:

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.

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
Loading

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-mermaid-influx).

{{< include submodel/_static/mermaid/influx.md >}}

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

Caution

The incoming biomass should be calibrated.

Clone this wiki locally