66// Currently does not contain aged-structured species.
77// [[Rcpp::export]]
88List rk4_run (List params, List instate, List forcing, List fishing, List stanzas,
9- int StartYear, int EndYear){
9+ int StartYear, int EndYear, int spnum, int spstanza ){
1010
1111 int y, m, dd, t;
12- // Input rates are in units of years or years^-1. Integration is wri tten so
12+ // Input rates are in units of years or years^-1. Integration is written so
1313// that integration timesteps always line up with months, for data reasons.
1414// STEPS_PER_YEAR should be 12 (for months), and STEPS_PER_MONTH sets the
1515// rk4 integration timestep. So effective integration timestep with respect
@@ -221,7 +221,7 @@ List outdat = List::create(
221221// Currently does not contain aged-structured species.
222222// [[Rcpp::export]]
223223List Adams_run (List params, List instate, List forcing, List fishing, List stanzas,
224- int StartYear, int EndYear, List InitDeriv){
224+ int StartYear, int EndYear, List InitDeriv, int spnum, int spstanza ){
225225
226226int y, m, dd;
227227// std::cout << " x1 ";
@@ -265,7 +265,11 @@ int y, m, dd;
265265 NumericMatrix out_Winf (EndYear * 12 , Nsplit + 1 );
266266 NumericMatrix out_Ninf (EndYear * 12 , Nsplit + 1 );
267267 NumericMatrix out_Wrec (EndYear * 12 , Totstanzas + 1 );
268- NumericMatrix out_Nrec (EndYear * 12 , Totstanzas + 1 );
268+ NumericMatrix out_Nrec (EndYear * 12 , Totstanzas + 1 );
269+
270+ // Species diagnostic outputs
271+ NumericMatrix out_species_deriv (EndYear * 12 , 10 );
272+
269273 // std::cout << " x1b ";
270274// Parameter need to track catch by Gear
271275 const NumericVector FishFrom = as<NumericVector>(params[" FishFrom" ]);
@@ -324,6 +328,19 @@ int y, m, dd;
324328 NumericVector biomeq = as<NumericVector>(dyt[" biomeq" ]);
325329 NumericVector FishingLoss = as<NumericVector>(dyt[" FishingLoss" ]);
326330 NumericVector Qlink = as<NumericVector>(dyt[" Qlink" ]);
331+
332+ // Added for per-species diagnostics
333+ NumericVector FoodLoss = as<NumericVector>(dyt[" FoodLoss" ]);
334+ // "FoodGain",
335+ NumericVector DetritalGain = as<NumericVector>(dyt[" DetritalGain" ]);
336+ NumericVector FishingGain = as<NumericVector>(dyt[" FishingGain" ]);
337+ NumericVector UnAssimLoss = as<NumericVector>(dyt[" UnAssimLoss" ]);
338+ NumericVector ActiveRespLoss = as<NumericVector>(dyt[" ActiveRespLoss" ]);
339+ NumericVector MzeroLoss = as<NumericVector>(dyt[" MzeroLoss" ]);
340+ // "FishingLoss",
341+ NumericVector DetritalLoss = as<NumericVector>(dyt[" DetritalLoss" ]);
342+ NumericVector MigrateLoss = as<NumericVector>(dyt[" MigrateLoss" ]);
343+
327344
328345 // Now Update the new State Biomass using Adams-Basforth
329346 NumericVector new_Biomass =
@@ -434,6 +451,20 @@ int y, m, dd;
434451 out_Wrec (dd,sind) = WageS (Age1 (isp,ist), isp);
435452 }
436453 }
454+
455+ // Write diagnostic species outputs
456+ // FoodGain, DetritalGain, FishingGain, FoodLoss, UnAssimLoss, ActiveRespLoss,
457+ // MzeroLoss, FishingLoss, DetritalLoss, MigrateLoss
458+ out_species_deriv (dd, 0 ) = FoodGain[spnum];
459+ out_species_deriv (dd, 1 ) = DetritalGain[spnum];
460+ out_species_deriv (dd, 2 ) = FishingGain[spnum];
461+ out_species_deriv (dd, 3 ) = FoodLoss[spnum];
462+ out_species_deriv (dd, 4 ) = UnAssimLoss[spnum];
463+ out_species_deriv (dd, 5 ) = ActiveRespLoss[spnum];
464+ out_species_deriv (dd, 6 ) = MzeroLoss[spnum];
465+ out_species_deriv (dd, 7 ) = FishingLoss[spnum];
466+ out_species_deriv (dd, 8 ) = DetritalLoss[spnum];
467+ out_species_deriv (dd, 9 ) = MigrateLoss[spnum];
437468 // std::cout << "x4";
438469 } // End of main months loop
439470
@@ -460,6 +491,7 @@ int y, m, dd;
460491 _[" annual_Biomass" ]=annual_Biomass,
461492 _[" annual_QB" ]=annual_QB,
462493 _[" annual_Qlink" ]=annual_Qlink,
494+ _[" out_species_deriv" ]=out_species_deriv,
463495 _[" out_SSB" ]=out_SSB,
464496 _[" out_eggs" ]=out_eggs,
465497 _[" out_Winf" ]=out_Winf,
@@ -835,6 +867,7 @@ int sp, links, prey, pred, gr, egr, dest, isp, ist, ieco;
835867 _[" MzeroLoss" ]=MzeroLoss,
836868 _[" FishingLoss" ]=FishingLoss,
837869 _[" DetritalLoss" ]=DetritalLoss,
870+ _[" MigrateLoss" ]=MigrateLoss,
838871 _[" FishingThru" ]=FishingThru,
839872 // _["PredSuite"]=PredSuite,
840873 // _["HandleSuite"]=HandleSuite,
0 commit comments