Settlement Timing

Settlement timing in SS3 can be used simply, but there is a rich range of options to provide a high degree of flexibility to cover edge cases.

Spawning and Settlement

Spawning

There is one and only one spawning event in each year. It is assigned a real valued spawn_month and the numbers-at-age (NAA) at the time of spawning are decayed to that date according to \(exp(-(M+F))\) from the start date of the season this date occurs in.

Settlement

There can be one to many settlement events and the total recruits (\(exp(ln(R0))\)) are distributed among these events according to the recruitment distribution pattern and associated distribution parameters. Each settlement event is characterized by:

  • Growth pattern - which set of biological parameters apply to this partition of the total recruits
  • Settlement month - in real months, so 1.0 means Jan 1 and 4.5 means settlement on April 15.
  • Settlement area - in which area is this settlement occurring
  • Settlement age - SS3 expects that settlement age is 0 if in the same year as spawning and 1 if in the following year.

The settlement age entry allows this to be overridden by the user. The calendar age of the recruits is a real number which equals “settlement age” on January 1 of the spawning year (even if spawning happens later in the year).

Note

If settlement age is greater than 0, then settlement month needs to be adjusted in 12 month increments to align with that advanced age at settlement. Instructions in the SS3 manual need updating as a result of this discovery.

Example Scenarios

Below are a set of examples with a strong recruitment (recdev = 2.0) resulting from the 1977 spawning, hence named Main_RecrDev_1977.

The various examples will show how this interacts with the settlement event setup.

Example 1: December spawning, January settlement

A common setup will have spawning late in one year (for this example December 1, or month 12.0) and one settlement event at age 0 the following year (for this example January 1, or month 1.0).

#| code-overflow: wrap
12 #_spawn_month
#GPattern month  area  age (for each settlement assignment)
 1 1 1 0

In the spawn_recruitment output table, this results in 61154.1 thousand recruits from the 1977 spawning.

#| code-overflow: wrap
Yr SpawnBio exp_recr with_regime bias_adjusted pred_recr dev
1977 75541.9  9908.54 9908.54 8276.31 61154.1 2.0

In the NAA table, these recruits are split to be 30577.1 NAA 0 in 1978 for each of females and males. They appear in 1978 as age 0 fish because their settlement month (1.0) is earlier than their spawning month (12.0), so settlement must be in the year following spawning.

SS3 produces this note in warnings.sso:

#| code-overflow: wrap
Note 3 Information: settle_month is less than spawn_month, so logical age at settlement calculated to be: 1 for settle_time 1 does not match read value of 0 are you sure?

Switching settlement age to 1 resolves the warning and now the fish first appear in the NAA table as age 1 fish in 1978. Age 0 fish never appear in the NAA table with this configuration.

Example 2: January spawning, January settlement

Shift spawning to occur on January 1 and virtual recruitment at the same time, 1.0. Spawning biomass is higher on January 1 of 1977 than December 1 of 1977, as a result the recruitment is higher (note that the model was not re-estimated to allow for \(ln(R_{0})\) to come into alignment with the spawn month).

Yr SpawnBio exp_recr with_regime bias_adjusted pred_recr dev
1977 80997  9935.39 9935.39 8298.73 61319.8 2.0 

These fish appear in the NAA table in 1977, not 1978 because the settlement date (1.0) is not smaller than the spawning date (also 1.0).

Example 3: January spawning, March settlement

Spawning on January 1 and settlement on March 1 (month 3.0).

Spawn_recr table shows recruits in 1977 as 61328.1. Which will be 30664.05 per sex.

These fish appear in the NAA table in 1977 at age 0. They have elevated numbers (31179.4) because the table contains their numbers at the beginning of the season inflated by \(exp(M*deltaT)\), whereas \(ln(R_{0})\) references their numbers at the time of settlement, which is 2 months later.

Example 4: March spawning

Spawning on March 1 and settlement on March 15 at age 0.

This is an non-allowed configuration because the recruits must be backed up to the beginning of the season (January 1) where they potentially could be part of the spawning biomass of March 1 that produced them.

SS3 produces this warning:

Warning 1 Fatal Error! Cannot have spawn_time_seas after beginning of a season and settlements in the same season.  Put spawning at beginning of the season, or move settlements to next season
Spawning on Mar 1 and settlement on Feb 1  at age 0.  
Note 3 Information: settle_month is less than spawn_month, so logical age at settlement calculated to be: 1  for settle_time 1.  Does not match read value of 0 are you sure? 
Spawning on Mar 1 and settlement on Feb 1  at age 1.  No warning is produced.  The big yearclass shows up in NAA at age 1 in 1978.

Example 5: February spawning, May settlement (OK if split across seasons)

Spawning on February 1 and settlement on May 1 at age 0, with 2 seasons (January-March, April-December). This is legal because the May 1 settlement now is just backed up to April 1 which is after the spawning event that occurred in the previous season.

Example 6: February spawn, January settle of following year at age 1

In this example, the big 1977 recruitment will show up in the NAA table at age 1 in the following year, 1978.

If spawning had been set to month 1.0, then SS3 would allow the Jan 1 settlement at age 1 to occur in 1977 also. This is a year off and illogical.

However, with spawning at month 1.0, settlement at month 13.0, and settlement age at 1.0, then the big recruitment correctly shows up in 1978 at age 1. So, it is critical to think about the timing of spawning relative to settlement and to check results in the NAA table.

Example Set-ups

Example set-up 1

A single recruitment event is now split among 3 events happening in April, May and June; all with the same growth parameters. Previously, the data indicated that the CV of length-at-age for young fish was rather larger. But that conclusion was linked to the assumption that all the recruits were exactly the same age. In the revised setup, the recruits now have a spread of age since settlement, so at a point in time they will have a spread of lengths. Consequently, it is expected that the CV parameter for young fish can be less when recruits are distributed among a spread of temporal settlement events.

Example set-up 2

Spawning is in October and recruitment occurs with two settlement events. One settlement is in December and the settlement age is 0. The other settlement is in February and the settlement age is 1. The first settlement will graduate to age 1 on January 1, so by February when the second settlement occurs, they both will appear as the same integer age.

The total number of recruits is scaled by the parameter \(ln(R_{0})\). Even when this total is divided among morphs, sexes, and settlement events at different times, the total of all those settlement events will be equal to \(exp(ln(R_{0}))\). However, settlers are always added at the beginning of a season because they will experience mortality throughout the season. This means that when a settlement event happens not at the beginning of a season, its initial numbers are adjusted upwards such that after in-season mortality occurs its numbers at the assigned time of settlement will be correct. This is a benign process if only natural mortality is acting on the pre-settlement fish. However, if fishing mortality is also active, then it would be better to create more seasons such that the settlement event could then occur at the beginning of a season and have its fishing mortality more explicitly under control.

For the purpose of growth calculation, fish have a real_age of 0.0 at the time of settlement, so each settlement timing has a unique starting point for real_age, unlike calendar_age which is relative to January 1 of the spawn year. All fish graduate to the next integer age on January 1. Real_age is used as the basis for growth, and for some types of age-specific natural mortality. This means that when fish of the same growth pattern are distributed among more than one settlement timing, the early born fish have a head start in the growth process, but since they are all growing towards the same maximum size, they gradually converge in growth. Conceptually, the time between spawning and settlement is a larval phase that is post spawner-recruitment and pre-settlement. They are in a planktonic limbo until settling. Where, when, and what growth type they have upon settlement is controlled by the recruitment distribution. Then upon settling, the juvenile fish begin growing according to adult growth parameters and enter exposure to explicit natural and fishing mortality.

Growth - Fish begin growing according to the growth curve when they reach the real_age equal to the user-assigned quantity, \(A_{min}\). At the \(real\_age = Amin\), fish have the mean body length of \(L_{min}\). \(A_{min}\) is in terms of real_age post-settlement, not calendar_age post January 1 of the spawning year. \(A_{min}\) can have a value of 0.0, especially if the time of settlement is several months post-spawning. If \(A_{min}\) is >0.0, then size-at-age of fish is assigned according to a linearly interpolated fraction of \(L_{min}\). If you are using age-specific \(K\), then the integer age measured starting from the spawn year is used to select an age-specific \(K\) change.

Growth parameters - If you have growth parameters calculated externally to SS3, they probably are relative to age being measured in terms of calendar age, not real-age post settlement. The growth \(K\) and \(L_{max}\) parameters will be unaffected, but \(L_{min}\) very much depends on the shifting along the age axis.