Indian Ocean Skipjack
Public Member Functions | Public Attributes | List of all members
IOSKJ::Model Class Reference

#include <model.hpp>

Public Member Functions

void initialise (void)
 
void update (uint time)
 
void equilibrium (void)
 
void pristine_go (void)
 
Frame yield_curve (double step=0.01)
 
Frame yield_per_recruit (void)
 
void msy_go (void)
 
void msy_find (void)
 
void status_go (const double &status)
 
void b40_find (void)
 
void write (void)
 
Variable getting methods
double biomass_status (void) const
 
Parameter setting methods
void movement_uniform (void)
 
void spawning_uniform (void)
 
Dynamics setting methods
void exploitation_rate_set (double value)
 
double exploitation_rate_get (void) const
 
void fishing_mortality_set (double value)
 
double fishing_mortality_get (void) const
 
void catches_set (double catches_, double error=0.2)
 
void effort_set (double effort_)
 

Public Attributes

Array< double, Region, Age > numbers
 
Array< double, Region > biomass
 
Array< double, Region > biomass_spawners
 
Array< double, Region > biomass_spawners_unfished
 
double msy
 
double e_msy
 
double f_msy
 
double biomass_spawners_msy
 
int msy_trials
 
double e_40
 
double f_40
 
double biomass_spawners_40
 
Spawning and stock-recruitment
Array< double, Quarter > spawning
 
Array< double, Region, Quarter > biomass_spawning
 
Array< double, Region, Quarter > biomass_spawning_unfished
 
Array< double, Region > recruits_unfished
 
double recruits_steepness
 
bool recruits_relation_on = true
 
Array< double, Region > recruits_determ
 
bool recruits_variation_on = true
 
double recruits_sd
 
Normal recruits_distrib
 
double recruits_autocorr
 
double recruits_deviation = 0
 
double recruits_multiplier = 1
 
Array< double, Region > recruits
 
Growth
double growth_rate_1
 
double growth_rate_2
 
double growth_assymptote
 
double growth_stanza_inflection
 
double growth_stanza_steepness
 
double growth_age_0
 
double growth_cv_0
 
double growth_cv_old
 
Array< double, Size > length_size
 
Array< Normal, Age > length_age
 
Array< double, Age, Size > age_size
 
Weight
double weight_length_a
 
double weight_length_b
 
Array< double, Size > weight_size
 
Array< double, Age > weight_age
 
Maturity
double maturity_length_inflection
 
double maturity_length_steepness
 
Array< double, Size > maturity_size
 
Array< double, Age > maturity_age
 
Natural mortality
double mortality_mean
 
Array< double, Age > mortality_shape
 
Array< double, Age > mortality
 
Array< double, Age > survival
 
Movement
Array< double, RegionFrom, Region > movement_region
 
double movement_length_inflection
 
double movement_length_steepness
 
Array< double, Size > movement_size
 
Array< double, Age > movement_age
 
Data related "nuisance" parameters
Array< double, Quarter > m_pl_quarter = {0.97,0.87,0.97,1.19}
 

Selectivity and exploitation

Array< double, SelectivityKnot > selectivity_lengths = {20,30,40,50,60,70,80}
 
Array< double, Method, SelectivityKnot > selectivity_values
 
Array< double, Method, Size > selectivity_size
 
Array< double, Method, Age > selectivity_age
 
enum IOSKJ::Model::{ exploit_none = 0, exploit_rate = 1, exploit_catch = 2, exploit_effort = 3 } exploit
 
Array< double, Region, Method > biomass_vulnerable
 
Array< double, Region, Method > cpue
 
Array< GeometricMean, Region, Method > cpue_base
 
Array< double, Region, Method > catches
 
Array< double, Region, Method > effort
 
Array< double, Region, Method > catchability
 
Array< GeometricMean, Region, Method > catchability_estim
 
Array< double, Region, Method > exploitation_rate_specified
 
Array< double, Region, Method > catches_taken
 
Array< double, Region, Method > exploitation_rate
 
Array< double, Region, Age > escapement
 

Detailed Description

Model of the Indian Ocean skipjack tuna fishery. This class encapsulates the dynamics of both the fish population and fishing.

Test:
equilibrium_stable

Test that when there is no substantial change in equilibrium conditions given further simulation.

Test:
equilibrium_uniform

Test that when there is no movement and equal reruitment distribution that the equilibrium biomass is equal in all areas

Test:
recruiment_variation

Test that recruitment variation has the right mean and standard deviation.

Test:
exploitation_specified

Member Function Documentation

void IOSKJ::Model::b40_find ( void  )
inline

Calculate a status related re

double IOSKJ::Model::biomass_status ( void  ) const
inline

Get the stock status (spawning biomass as a fraction of pristine)

void IOSKJ::Model::catches_set ( double  catches_,
double  error = 0.2 
)
inline

Set the catch by region/method assuming a certain allocation, currently based on the period 2003-2012 (see data/nominal-catches-quarter.R)

Note that currently this does not allow for seasonal variation, assumes an equal split across quarters

void IOSKJ::Model::effort_set ( double  effort_)
inline

Set the number of effort units by region/method

void IOSKJ::Model::equilibrium ( void  )
inline

Move the population to a deterministic equilibrium by iterating over time until biomass in each region remains stable

double IOSKJ::Model::exploitation_rate_get ( void  ) const
inline

Get overall exploitation rate.

void IOSKJ::Model::exploitation_rate_set ( double  value)
inline

Set overall exploitation rate. Used in testing and in equilibrium exploitation e.g. MSY/BMSY calculations

Currently assumes an equal explotation rate is applied to the three main methods in each region (W/PS,M/PL,E/GN). An alternative would be to assume equal exploitation rates in each region and use current partial exploitation rates by method within each region.

double IOSKJ::Model::fishing_mortality_get ( void  ) const
inline

Get overall instantaneous rate of fishing mortality (F). Like exploitation_rate_get but gives F instead of exp. rate.

void IOSKJ::Model::fishing_mortality_set ( double  value)
inline

Set overall instantaneous rate of fishing mortality (F). Like exploitation_rate_set but uses F instead of exp. rate.

void IOSKJ::Model::initialise ( void  )
inline

Initialise various model variables based on current parameter values

void IOSKJ::Model::movement_uniform ( void  )
inline

Set movement parameters so that there is uniform movement.

All movement_regions elements set to 1/(number of regions). All sizes move. Mainly used for testing

void IOSKJ::Model::msy_find ( void  )
inline

Calculate MSY related reference points

void IOSKJ::Model::msy_go ( void  )
inline

Take this model to a equilibirum state associated with MSY

void IOSKJ::Model::spawning_uniform ( void  )
inline

Set spawning seasonality parameters so that there is uniform spawning.

All elements set to 1. Mainly used for testing.

void IOSKJ::Model::status_go ( const double &  status)
inline

Take this model to a equilibrium state associated with a proportion of B0

void IOSKJ::Model::update ( uint  time)
inline

Perform a single time step

void IOSKJ::Model::write ( void  )
inline

Write model attributes to files for examination

Frame IOSKJ::Model::yield_curve ( double  step = 0.01)
inline

Generate a yield curve

Frame IOSKJ::Model::yield_per_recruit ( void  )
inline

Generate a yield per recruit curve

This is really a biomass-per-recruit curve.

Member Data Documentation

Array<double,Age,Size> IOSKJ::Model::age_size

Proportion of fish of each age in each size bin

Array<double,Region> IOSKJ::Model::biomass

Total biomass by region

Array<double,Region> IOSKJ::Model::biomass_spawners

Total biomass of spawners

Array<double,Region> IOSKJ::Model::biomass_spawners_unfished

Unfished equlibrium spawners (biomass)

This differs from biomass_spawning_unfished in that it is not affected by the proportion spawning in a season

Array<double,Region,Quarter> IOSKJ::Model::biomass_spawning

The total spawning biomass by region

Array<double,Region,Quarter> IOSKJ::Model::biomass_spawning_unfished

Unfished spawning biomass by region and quarter. It is necessary to have this by quarter because the proportion of mature fish that spawn varies by quarter.

Array<double,Region,Method> IOSKJ::Model::biomass_vulnerable

Vulnerable biomass by region and method

Array<double,Region,Method> IOSKJ::Model::catchability

Estimated catchability by region and method

Array<double,Region,Method> IOSKJ::Model::catches

Catches by region and method

Array<double,Region,Method> IOSKJ::Model::catches_taken

Catches by region and method given maximimum exploitation rate of one. This variable is useful for penalising against impossible dynamics.

Array<double,Region,Method> IOSKJ::Model::cpue

CPUE. Simply biomass_vulnerable scaled to its geometric mean for the period 1985-2013

double IOSKJ::Model::e_40

40B0 related variables

Array<double,Region,Method> IOSKJ::Model::effort

Effort by region and method

Currently these are nominal units relative to the period 2004-2013

Array<double,Region,Age> IOSKJ::Model::escapement

Escapement (i.e. survival form exploitation)

Array<double,Region,Method> IOSKJ::Model::exploitation_rate

Exploitation rate by region and method for current time step

Array<double,Region,Method> IOSKJ::Model::exploitation_rate_specified

The exploitation rate specified, for example, when calculating MSY/Bmsy

double IOSKJ::Model::growth_rate_1

Parameters of the two-stanza vonBertallanffy

Array<Normal,Age> IOSKJ::Model::length_age

Length distribution for each age group

Array<double,Size> IOSKJ::Model::length_size

Length associated with each size

Array<double,Quarter> IOSKJ::Model::m_pl_quarter = {0.97,0.87,0.97,1.19}

Lengths at each selectivity knot

The default values below are simply the means of the observed standardised CPUE index by quarter.

double IOSKJ::Model::maturity_length_inflection

Maturity at length logistic function

Array<double,Size> IOSKJ::Model::maturity_size

Maturity at size and age

Array<double,Age> IOSKJ::Model::mortality

Instantaneous rate of natural mortality at age

double IOSKJ::Model::mortality_mean

Mean instantaneous rate of natural mortality across ages

Array<double,Age> IOSKJ::Model::mortality_shape
Initial value:
= {
1.25, 1.25, 1.25, 1.25,
1.25, 1.25, 1.25, 1.25,
0.80, 0.80, 0.80, 0.80,
0.45, 0.45, 0.45, 0.45,
1.50, 1.50, 1.50, 1.50,
1.50, 1.50, 1.50, 1.50
}

Relative morality by age. These are used to calculate a mortality at age by multiplying by mortality_mean. These are from Everson 2011 IOTC–2011–WPTT13–30

double IOSKJ::Model::movement_length_inflection

Movement proportion at size logistic function

Array<double,RegionFrom,Region> IOSKJ::Model::movement_region

Movement maximum proportion moving from one region to another

double IOSKJ::Model::msy

MSY related variables

Array<double,Region,Age> IOSKJ::Model::numbers

Fish numbers by region and age

Array<double,Region> IOSKJ::Model::recruits

Total number of recruits at time t

double IOSKJ::Model::recruits_autocorr

Autocorrelation in recruitment deviations

Array<double,Region> IOSKJ::Model::recruits_determ

Deterministic recruitment at time t

double IOSKJ::Model::recruits_deviation = 0

Recruitment deviation at time t

Normal IOSKJ::Model::recruits_distrib

Underlying distribution for generation recr deviations

double IOSKJ::Model::recruits_multiplier = 1

Recruitment multiplier at time t

bool IOSKJ::Model::recruits_relation_on = true

Flag to turn on/off recruitment relation (if off then recruits_unfished is used)

double IOSKJ::Model::recruits_sd

Standard deviation of recruitment deviations

double IOSKJ::Model::recruits_steepness

Steepness of stock-recruit relation

Array<double,Region> IOSKJ::Model::recruits_unfished

Unfished equlibrium recruitment (numbers) by region

bool IOSKJ::Model::recruits_variation_on = true

Flag to turn on/off recruitment variation

Array<double,SelectivityKnot> IOSKJ::Model::selectivity_lengths = {20,30,40,50,60,70,80}

Lengths at each selectivity knot

Array<double,Method,Size> IOSKJ::Model::selectivity_size

Selectivities by method and size

Array<double,Method,SelectivityKnot> IOSKJ::Model::selectivity_values

Proportion selected at each selectivity knot for each method

Array<double,Quarter> IOSKJ::Model::spawning

The spawning fraction by quarter

Array<double,Age> IOSKJ::Model::survival

Quarterly rate of survival from natural mortality at age

double IOSKJ::Model::weight_length_a

Weight at length power funciton

Array<double,Size> IOSKJ::Model::weight_size

Weight at size


The documentation for this class was generated from the following file: