Skip to contents

Uses the Schnute parameterization of the von Bertalanffy growth curve. Optionally reproduces Stock Synthesis (SS3) GrowthModel 3 (age-specific K), including its cumulative multipliers and plus-group approximation.

Usage

get_growth(
  n_age,
  A1,
  A2,
  L1,
  L2,
  log_k,
  min_age = 1L,
  log_k_mult = NULL,
  k_mult_ages = NULL,
  plus_group_adjust = FALSE
)

Arguments

n_age

Integer. Number of age classes.

A1

Integer. Reference age for L1 (data).

A2

Integer. Reference age for L2 (data).

L1

Numeric. Length at age A1 (may be AD).

L2

Numeric. Length at age A2 (may be AD).

log_k

Numeric. VB growth coefficient (may be AD).

min_age

Integer. Minimum age (default 1L).

log_k_mult

Numeric vector (may be AD). Log K multipliers; NULL or length zero retains the single-K curve.

k_mult_ages

Integer vector (data). Ages at which the multipliers apply, strictly increasing within the modeled ages and matching log_k_mult.

plus_group_adjust

Logical (data). Apply SS3's oldest-age length approximation, independently of the multipliers (default FALSE).

Value

Numeric vector of length n_age: mean length at each age a = min_age, ..., min_age + n_age - 1.

Details

Multipliers apply cumulatively: K at age a is the base K times the product of all multipliers at ages less than or equal to a. The final K carries forward. Linf is derived from L1, L2, A1 and A2 using the oldest-age K; growth from age a to a+1 uses K at a. Consequently, with multipliers the curve need not pass through L2 at A2. A1 must be a modeled age for this option. Below A1, opal retains base-K exponential growth toward this Linf; SS3 instead uses a linear segment.

The plus-group approximation averages a linear increase from the oldest length to Linf over a further max_age ages, with weights exp(-0.2)^j, j = 0, ..., max_age. The fixed 0.2 is not mortality; this option requires a positive integer oldest age.

log_k is the log rate per model age unit, whereas SS3 reads an annual rate and scales by season duration. For a quarterly age step, use log(K_SS3 * 3/12); multipliers are dimensionless. This reimplementation is pinned to SS3 v3.24AB beginning-of-season lengths; later SS3 versions may differ. CV interpolation is handled separately by get_sd_at_age.

References

Methot, R.D. Jr. and Wetzel, C.R. (2013). Stock synthesis: A biological and statistical framework for fish stock assessment and fishery management. Fisheries Research 142: 86–99. doi:10.1016/j.fishres.2012.10.012 .

Stock Synthesis source, sections SS_Label_Info_16.2.2–16.2.4.1.4.