30 const vector<int> &Ceq,
31 const vector<int> &Cindex,
32 const vector<Type> &Qc,
33 const vector<Type> &Tcm,
34 const vector<Type> &Tco,
35 const vector<Type> &Tcl,
36 const vector<Type> &CK1,
37 const vector<Type> &CK4,
38 const matrix<Type> &env_index) {
52 for(
int sp = 0; sp < nspp; sp++) {
58 bool has_env = (Cindex(sp) >= 0) && (Cindex(sp) < env_index.cols());
59 int eq = has_env ? Ceq(sp) : 4;
61 for(
int yr = 0; yr < nyrs; yr++) {
65 fT(sp, yr) = exp(Qc(sp) * env_index(yr, Cindex(sp)));
69 Yc = log(Qc(sp)) * (Tcm(sp) - Tco(sp) + 2.0);
70 Zc = log(Qc(sp)) * (Tcm(sp) - Tco(sp));
71 Vc = (Tcm(sp) - env_index(yr, Cindex(sp))) / (Tcm(sp) - Tco(sp));
72 Xc = pow(Zc, 2) * pow((1.0 + pow((1.0 + 40.0 / Yc), 0.5)), 2) / 400.0;
73 fT(sp, yr) = pow(Vc, Xc) * exp(Xc * (1.0 - Vc));
77 G2 = (1.0 / (Tcl(sp) - Tcm(sp))) * log((0.98 * (1.0 - CK4(sp))) / (CK4(sp) * 0.02));
78 L2 = exp(G2 * (Tcl(sp) - env_index(yr, Cindex(sp))));
79 Kb = (CK4(sp) * L2) / (1.0 + CK4(sp) * (L2 - 1.0));
81 G1 = (1.0 / (Tco(sp) - Qc(sp))) * log((0.98 * (1.0 - CK1(sp))) / (CK1(sp) * 0.02));
82 L1 = exp(G1 * (env_index(yr, Cindex(sp)) - Qc(sp)));
83 Ka = (CK1(sp) * L1) / (1.0 + CK1(sp) * (L1 - 1.0));
129 const vector<int> &nsex,
130 const vector<int> &nages,
131 const vector<int> &Ceq,
132 const vector<Type> &CA,
133 const vector<Type> &CB,
134 const vector<Type> &fday,
135 const vector<Type> &Pvalue,
137 array<Type> &ration_data,
138 array<Type> &weight_hat) {
140 for(
int sp = 0; sp < nspp; sp++) {
141 for(
int sex = 0; sex < nsex(sp); sex++) {
142 for(
int age = 0; age < nages(sp); age++) {
143 for(
int yr = 0; yr < nyrs; yr++) {
146 int yr_ind = (yr < nyrs_hind) ? yr : (nyrs_hind - 1);
149 int wt_idx_pop = 2 * sp;
152 consumption_at_age(sp, sex, age, yr) = CA(sp) * pow(weight_hat(wt_idx_pop, sex, age, yr) * Type(1000.0), 1.0 + CB(sp)) * fT(sp, yr) * fday(sp);
155 consumption_at_age(sp, sex, age, yr) = consumption_at_age(sp, sex, age, yr) * Pvalue(sp) * ration_data(sp, sex, age, yr_ind) / 1000.0;
160 consumption_at_age(sp, sex, age, yr) = Pvalue(sp) * ration_data(sp, sex, age, yr_ind);
void calculate_temperature_function(matrix< Type > &fT, int nspp, int nyrs, const vector< int > &Ceq, const vector< int > &Cindex, const vector< Type > &Qc, const vector< Type > &Tcm, const vector< Type > &Tco, const vector< Type > &Tcl, const vector< Type > &CK1, const vector< Type > &CK4, const matrix< Type > &env_index)
Temperature-dependent function of consumption (fT) for bioenergetics.
void calculate_ration(array< Type > &consumption_at_age, int nspp, int nyrs, int nyrs_hind, const vector< int > &nsex, const vector< int > &nages, const vector< int > &Ceq, const vector< Type > &CA, const vector< Type > &CB, const vector< Type > &fday, const vector< Type > &Pvalue, matrix< Type > &fT, array< Type > &ration_data, array< Type > &weight_hat)
Annual ration of a predator at age, in kg per predator per year.