#include <admodel.h>#include <time.h>#include <fstream.h>Functions | |
| init_adstring datfilename init_adstring ctlfilename init_int readparfile init_int rundetail init_int reportdetail init_int N_nudata init_int Turn_off_phase init_adstring version_info | adstring (version_info)+ |
| vector | func_eval (1, 12) |
| vector | func_conv (1, 12) |
| if (Turn_off_phase==0) | |
| LOCAL_CALCS | if (F_Method< 1||F_Method >3) |
| END_CALCS init_int Smry_Age init_int Do_Forecast init_int Do_MSY init_int Do_Rebuilder init_int Rebuild_Ydecl init_int Rebuild_Yinit | if (Do_Rebuilder >0 &&Do_Forecast<=0) warning<<" Rebuilder output selected without requesting forecast"<< endl |
| int prof_var_cnt LOCAL_CALCS ifstream | fin1 ("runnumber.ss2"`, ios::nocreate) |
| TAG_0003 Read runnumber.ss2. | |
| if (fin1) | |
| fin1 | close () |
| ofstream | fin2 ("runnumber.ss2", ios::out) |
| init_int styr init_int endyr init_int nseas init_vector | seasdur (1, nseas) int TimeMax int TimeMax_Fore int TimeMax_Fore_std int eq_yr |
| if (sumseas >=11.9) | |
| for (f=1;f<=Nfleet;f++) = 1 | |
| if (selparm_dev_PH > Turn_off_phase) selparm_dev_PH | |
| if (selparm_dev_PH > max_phase) max_phase | |
| if (fim!=999) abort() | |
| if (Do_Forecast==0) | |
| init_matrix | Input_ForeCatch (k1, y, 1, i)!!cout<<" done reading forecast "<< endl |
| CLASS ofstream | report2 ("SS2-report.txt", ios::app) |
| LOCAL_CALCS ifstream | fin4 ("extrainput.SS2", ios::nocreate) |
| if (fin4) | |
| END_CALCS INITIALIZATION_SECTION PARAMETER_SECTION LOCAL_CALCS | if (readparfile >=1) |
| *****************************************************// TAG_034 | |
| if (Spb_sdrep_minyr< 0||Spb_sdrep_minyr<(styr-2)) Spb_sdrep_minyr | |
| if (Spb_sdrep_maxyr< 0||Spb_sdrep_maxyr >endyr) Spb_sdrep_maxyr | |
| maximum_function_evaluations | allocate (func_eval.indexmin(), func_eval.indexmax()) |
| convergence_criteria | allocate (func_conv.indexmin(), func_conv.indexmax()) |
| END_CALCS init_bounded_number | dummy_parm (0, 2, dummy_phase) init_bounded_number_vector MGparm(1 |
| END_CALCS init_bounded_number MGparm_PH init_bounded_matrix | MGparm_dev (1, N_MGparm_dev, MGparm_dev_minyr, MGparm_dev_maxyr,-10, 10, MGparm_dev_PH)!!cout<< " MGdev OK"<< endl |
| darray | natM (styr, endyr, 1, N_GP *gender, 0, nages) vector natM1(1 |
| darray N_GP *gender vector | natM2 (1, N_GP *gender) 4darray surv1(styr |
| darray N_GP *gender vector N_GP nages darray | surv2 (styr, endyr, 1, nseas, 1, N_GP *gender, 0, nages) vector CVLmin(1 |
| darray N_GP *gender vector N_GP nages darray N_GP *gender vector | CVLmax (1, N_GP *gender) matrix mgp_yr(styr |
| matrix | Cohort_Growth (styr, endyr+N_forecast_yrs_std, 0, nages) 3darray wt_len(styr |
| matrix nlength matrix | wt_len2 (styr, endyr, 1, nlength2) matrix mat_len(styr |
| matrix nlength matrix nlength matrix | mat_len_w (styr, endyr, 1, nlength) matrix mat_age(styr |
| matrix nlength matrix nlength matrix nages darray | ALK (1, nseas, 1, gmorph, 0, nages, 1, nlength) 4darray Sd_Size_w(styr-2 *nseas |
| matrix nlength matrix nlength matrix nages darray nages darray | Ave_Size (styr-2 *nseas, TimeMax_Fore+nseas, 0, 1, 1, gmorph, 0, nages) 4darray Use_Ave_Size(styr-2 *nseas |
| matrix nlength matrix nlength matrix nages darray nages darray nages darray | Save_Ave_Size (styr-2 *nseas, TimeMax_Fore+1, 0, 1, 1, gmorph, 0, nages) matrix save_Lmin(styr |
| matrix nlength matrix nlength matrix nages darray nages darray nages darray gmorph vector | AL (1, nlength1) matrix CV_G(0 |
| darray | Wt_Age (styr, TimeMax_Fore+1, 1, gmorph, 0, nages)!!k |
| matrix | save_G_parm (1, k, 1, 16) 3darray natage_temp(1 |
| matrix nages darray | migrrate (styr, TimeMax+nseas, 1, pop, 1, pop, 0, nages) 4darray recrdist(styr |
| init_bounded_number_vector | SR_parm (1, 6, SRvec_LO, SRvec_HI, SRvec_PH)!!if(do_recr_dev |
| number spb_vir_LH vector | S1 (0, 1) |
| matrix | Spbio (0, pop, styr-2, endyr+N_forecast_yrs_std) vector Spbio_area(0 |
| matrix | Recr (1, pop, styr-2, endyr+N_forecast_yrs_std) vector exp_rec(styr-2 |
| matrix endyr N_forecast_yrs_std vector | pred_rec (styr-2, endyr+N_forecast_yrs_std) vector use_rec(styr-2 |
| matrix endyr N_forecast_yrs_std vector endyr N_forecast_yrs_std matrix | Nmid (1, gmorph, 0, nages) |
| matrix | Nsurv (1, gmorph, 0, nages) |
| number ave_age init_bounded_number_vector | init_F (1, Nfleet, init_F_LO, init_F_HI, init_F_PH) vector est_equ_catch(1 |
| number ave_age init_bounded_number_vector Nfleet vector | equ_catch (1, Nfleet) vector equ_catch_enc(1 |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector | equ_catch_ret (1, Nfleet) 4darray natage(styr-2 *nseas |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray | catage (styr-nseas, TimeMax, 1, Nfleet, 1, gmorph, 0, nages) 4darray equ_catage(1 |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray | equ_numbers (1, nseas, 1, pop, 1, gmorph, 0, 4 *nages) matrix catage_tot(1 |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray nages matrix | Hrate (1, Nfleet, styr-nseas, TimeMax_Fore_std+1) matrix tot_catch_enc(1 |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray nages matrix styr TimeMax matrix | tot_catch_dead (1, Nfleet, styr-nseas, TimeMax) matrix tot_catch_ret(1 |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray nages matrix styr TimeMax matrix styr TimeMax matrix | fec (1, gmorph, 0, nages) matrix virg_fec(1 |
| matrix | exp_AL (0, gender *nages+gender-1, 1, nlength2) |
| darray | Z_rate (styr-2 *nseas, TimeMax_Fore_std+1, 1, pop, 1, gmorph, 0, nages) matrix Zrate2(1 |
| darray nages darray | catch_seas_area (styr, TimeMax, 1, pop, 0, Nfleet) matrix totcatch_byarea(styr |
| darray nages darray pop LOCAL_CALCS catch_seas_area | initialize () |
| ========================================= TAG_090 ============================ | |
| matrix | env_data (styr-1, endyr+N_forecast_yrs_std,-2, N_envvar) number equ_Recr sdreport_number R0 sdreport_number S0 sdreport_vector spbio_std(Spb_sdrep_minyr |
| matrix Spb_sdrep_maxyr sdreport_vector | recr_std (Spb_sdrep_minyr, Spb_sdrep_maxyr)!!if(Do_Forecast >0) |
| else | if (Do_MSY >0) |
| PRELIMINARY_CALCS_SECTION random_number_generator | radm (long(time(&finish))) |
| ************************************************* TAG_040 | |
| if (F_ballpark_yr >endyr) F_ballpark_yr | |
| if (F_ballpark_yr >=styr) | |
| AL (1)=0.0 | |
| AL (nlength1) | |
| if (nobsa >0) for(f | |
| if (N_envvar >=1) | |
| if (Rebuild_Ydecl==-1) Rebuild_Ydecl | |
| if (Rebuild_Yinit==-1) Rebuild_Yinit | |
| if (Rebuild_Ydecl >endyr+N_forecast_yrs_std) Rebuild_Ydecl | |
| if (Rebuild_Yinit >endyr+N_forecast_yrs_std) Rebuild_Yinit | |
| cout<< endl<< endl<<"Estimating...please wait..."<< endl;PROCEDURE_SECTION depletion.initialize();sel_l.initialize();sel_a.initialize();retain.initialize();discmort.initialize();if(do_recr_dev==1){rec_dev=rec_dev1;}else if(do_recr_dev==2){rec_dev=rec_dev2;}if(mccounter==1||(mccounter > burn_intvl & | double (mccounter)/double(thin_intvl))-double((mccounter/thin_intvl)) |
| dvar_vector | curr_age1 (0, nages) |
| dvar_vector | curr_age2 (0, nages) |
| dvar_vector | mgp (0, 50) |
| dvar_vector | g_base (2, 5) |
| if (y >=endyr) | |
| if (y==styr) | |
| if (do_once==1||MG_active(1)>0) | |
| if (do_migration >0) | |
| =============================== TAG_080 ====================================== | |
| if (do_once==1||MG_active(2)>0||save_for_report==1) | |
| if (do_once==1) cout<<" growth OK | |
| dvar_vector | sp (1, 199) |
| if (F_Method==2) | |
| get_growth2 () | |
Variables | |
| init_int burn_intvl init_int thin_intvl init_number jitter init_number boundpush init_int Spb_sdrep_minyr init_int Spb_sdrep_maxyr int | save_for_report |
| read in burn and thinning intervals | |
| int | save_gparm |
| int | save_gparm_print |
| int | show_warning |
| save_for_report = 0 | |
| save_gparm = 0 | |
| show_warning = 1 | |
| int | mccounter |
| mccounter = 1 | |
| int | done_run |
| done_run = 0 | |
| init_number | final_conv |
| func_eval = "{100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100;}" | |
| func_conv = "{10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1;}" | |
| init_int | retro_yr |
| init_int | fishery_on_off |
| init_number F_ballpark init_int F_ballpark_yr init_int | F_Method |
| number pi | pi = 3.14159265358979 |
| number NilNumbers | NilNumbers = 0.000 |
| number dummy_datum int dummy_phase | dummy_datum = 1. |
| TAG_0002 Set up a dummy datum for use when max phase = 0. | |
| int runnumber int | N_prof_var |
| int | bio_yr |
| number | sumseas |
| LOCAL_CALCS | sumseas = sum(seasdur) |
| TAG_1002 Set up seasons. | |
| retro_yr = endyr+retro_yr | |
| END_CALCS init_int | spawn_seas |
| init_int | Nfleet |
| TAG_1004 Define fleets and surveys. | |
| init_int | Nsurve |
| int | Ntypes |
| Ntypes = Nfleet+Nsurvey | |
| cout<< styr<<" "<< endyr< < " "<< nseas<<" "<< seasdur< <" "<< spawn_seas<< endl;!!cout<<" Nfleet Nsurvey "< < Nfleet<<" "<< Nsurvey< < endl;imatrix pfleetname(1, Ntypes, 1, 2);init_adstring fleetname;LOCAL_CALCS for(f=1;f<=Ntypes;f++){pfleetname(f, 1)=1;pfleetname(f, 2)=1;}f=1;for(i=1;i<=strlen(fleetname);i++) if(adstring(fleetname(i))==adstring("%")){pfleetname(f, 2)=i-1;f+=1;pfleetname(f, 1)=i+1;}pfleetname(Ntypes, 2)=strlen(fleetname);for(f=1;f<=Ntypes;f++) cout< < f<<" "<< fleetname(pfleetname(f, 1), pfleetname(f, 2))< < endl;END_CALCS init_vector surveytime(1, Ntypes) vector catchunits(1, Nfleet) init_int gender init_int nages ivector age_vector(0, nages) vector r_ages(0, nages) ivector years(styr, endyr) LOCAL_CALCS for(a=0;a<=nages;a++) age_vector(a)=a;for(a=0;a<=nages;a++) r_ages(a)=double(a);for(y=styr;y<=endyr;y++) years(y)=y;END_CALCS!!cout<<"Nages "< < nages<< endl;init_vector obs_equ_catch(1, Nfleet) init_matrix catch_bioT(styr, TimeMax, 1, Nfleet) matrix catch_ret_obs(1, Nfleet, styr-nseas, TimeMax+nseas)!!k=Nfleet *(TimeMax-styr+1);ivector have_catch(1, k);LOCAL_CALCS catch_ret_obs.initialize();t=styr-nseas-1;for(f=1;f<=Nfleet;f++){catch_ret_obs(f, t+1)=obs_equ_catch(f);}for(t=styr;t<=TimeMax;t++) for(f=1;f<=Nfleet;f++){catch_ret_obs(f, t)=catch_bioT(t, f);}if(fishery_on_off==0) catch_ret_obs *=0.000001;cout<<"done with catchbio "<< endl<< column(catch_ret_obs, styr)<< endl< < column(catch_ret_obs, TimeMax)< < endl;END_CALCS number catch_ballpark matrix yr_cr2(1, Ntypes, styr, TimeMax) matrix yr_disc2(1, Ntypes, styr, TimeMax) 3darray yr_mnwt2(1, Ntypes, styr, TimeMax, 0, 2) 3darray yr_l2(1, 2, 1, Ntypes, styr, TimeMax) 3darray yr_a2(1, 2, 1, Ntypes, styr, TimeMax) 3darray yr_ms2(1, 2, 1, Ntypes, styr, TimeMax) matrix have_data(1, Ntypes, styr, TimeMax)!!have_data.initialize();init_int nobs!!cout<<" N survey obs: "<< nobs<< endl;init_matrix indexdata(1, nobs, 1, 5) ivector nyr_cr(1, Ntypes) LOCAL_CALCS nyr_cr=0;if(nobs >0) for(i=1;i<=nobs;i++){f=indexdata(i, 3);nyr_cr(f)+=1;}END_CALCS imatrix yr_cr(1, Ntypes, 1, nyr_cr) imatrix yr_cr_y(1, Ntypes, 1, nyr_cr) matrix obs_cr(1, Ntypes, 1, nyr_cr) matrix Ln_obs_cr(1, Ntypes, 1, nyr_cr) matrix cv_cr(1, Ntypes, 1, nyr_cr) matrix vul_bio(1, Ntypes, 1, nyr_cr);ivector N_supyr_cr(1, Ntypes) imatrix supyr_cr1(1, Ntypes, 1, 20) imatrix supyr_cr2(1, Ntypes, 1, 20) LOCAL_CALCS N_supyr_cr=0;nyr_cr=0;if(nobs >0) for(i=1;i<=nobs;i++){y=indexdata(i, 1);s=indexdata(i, 2);t=styr+(y-styr)*nseas+s-1;f=indexdata(i, 3);nyr_cr(f)+=1;j=nyr_cr(f);yr_cr(f, j)=t;yr_cr_y(f, j)=y;obs_cr(f, j)=indexdata(i, 4);if(obs_cr(f, j)>0) Ln_obs_cr(f, j)=log(obs_cr(f, j));cv_cr(f, j)=indexdata(i, 5);if(cv_cr(f, j)==-9999){N_supyr_cr(f)+=1;supyr_cr1(f, N_supyr_cr(f))=j;}if(cv_cr(f, j)==-9998){supyr_cr2(f, N_supyr_cr(f))=j;}if(y >retro_yr){obs_cr(f, j)=-fabs(obs_cr(f, j));Ln_obs_cr(f, j)=0.;}}cout<<" successful read of index data; N= "<< nobs<< endl;END_CALCS init_int disc_type init_int nobs_disc init_matrix discdata(1, nobs_disc, 1, 5) ivector nyr_disc(1, Ntypes) LOCAL_CALCS nyr_disc=0;if(nobs_disc >0){for(i=1;i<=nobs_disc;i++){f=discdata(i, 3);nyr_disc(f)+=1;}}END_CALCS imatrix yr_disc(1, Ntypes, 1, nyr_disc) imatrix yr_disc_y(1, Ntypes, 1, nyr_disc) matrix obs_disc(1, Ntypes, 1, nyr_disc) matrix cv_disc(1, Ntypes, 1, nyr_disc) matrix sd_disc(1, Ntypes, 1, nyr_disc) ivector N_supyr_disc(1, Ntypes) imatrix supyr_disc1(1, Ntypes, 1, 20) imatrix supyr_disc2(1, Ntypes, 1, 20) LOCAL_CALCS N_supyr_disc=0;if(nobs_disc >0){nyr_disc=0;for(i=1;i<=nobs_disc;i++){y=discdata(i, 1);s=discdata(i, 2);t=styr+(y-styr)*nseas+s-1;f=discdata(i, 3);nyr_disc(f)+=1;j=nyr_disc(f);yr_disc(f, j)=t;yr_disc_y(f, j)=y;obs_disc(f, j)=discdata(i, 4);cv_disc(f, j)=discdata(i, 5);if(cv_disc(f, j)==-9999){N_supyr_disc(f)+=1;supyr_disc1(f, N_supyr_disc(f))=j;}if(cv_disc(f, j)==-9998){supyr_disc2(f, N_supyr_disc(f))=j;}if(y >retro_yr) obs_disc(f, j)=-fabs(obs_disc(f, j));}}cout<<" successful read of discard data, N= "<< nobs_disc<< endl;END_CALCS init_int nobs_mnwt init_matrix mnwtdata(1, nobs_mnwt, 1, 6) LOCAL_CALCS yr_mnwt2=0;if(nobs_mnwt >0) for(i=1;i<=nobs_mnwt;i++){y=mnwtdata(i, 1);s=mnwtdata(i, 2);t=styr+(y-styr)*nseas+s-1;f=mnwtdata(i, 3);z=mnwtdata(i, 4);yr_mnwt2(f, t, z)=i;have_data(f, t)=1;if(y >retro_yr) mnwtdata(i, 5)=-fabs(mnwtdata(i, 5));}cout<<" successful read of mean-body-wt data, N= "<< nobs_mnwt<< endl;END_CALCS init_number min_tail init_number min_comp init_int nlength!!cout<< nlength<< endl;int nlength1 int nlength2!!nlength1=nlength+1;!!nlength2=gender *nlength;init_vector len_bins(1, nlength) vector len_bins2(1, nlength2) vector binwidth(1, nlength) vector len_bins_m(1, nlength) vector len_bins_m2(1, nlength2) vector len_bins_sq(1, nlength2) vector male_offset(1, nlength2) number minL number maxL number minL2 LOCAL_CALCS male_offset.initialize();for(z=1;z<=nlength;z++){len_bins2(z)=len_bins(z);if(z< nlength){len_bins_m(z)=(len_bins(z)+len_bins(z+1))*0.5;binwidth(z)=len_bins(z+1)-len_bins(z);}else{len_bins_m(z)=len_bins(z)+(len_bins(z)-len_bins(z-1))*0.5;binwidth(z)=binwidth(z-1);}len_bins_m2(z)=len_bins_m(z);len_bins_sq(z)=len_bins_m2(z)*len_bins_m2(z);}if(gender==2) for(z=1;z<=nlength;z++){male_offset(z+nlength)=1.;len_bins2(z+nlength)=len_bins2(z);len_bins_m2(z+nlength)=len_bins_m2(z);len_bins_sq(z+nlength)=len_bins_sq(z);}minL=len_bins2(1);maxL=len_bins_m(nlength);minL2=len_bins_m(1);END_CALCS init_int nobsl init_matrix lendata(1, nobsl, 1, 6+nlength2) ivector nyr_l(1, Ntypes) number temp;LOCAL_CALCS cout<< " reading len comp, N= "<< nobsl<< endl;nyr_l=0;if(nobsl >0) for(i=1;i<=nobsl;i++){f=lendata(i, 3);nyr_l(f)+=1;}END_CALCS imatrix yr_l(1, Ntypes, 1, nyr_l) imatrix yr_l_y(1, Ntypes, 1, nyr_l) 3darray obs_l(1, Ntypes, 1, nyr_l, 1, nlength2) matrix nsamp_l(1, Ntypes, 1, nyr_l) matrix nsamp_l_read(1, Ntypes, 1, nyr_l) imatrix gen_l(1, Ntypes, 1, nyr_l) imatrix mkt_l(1, Ntypes, 1, nyr_l) 3darray header_l(1, Ntypes, 1, nyr_l, 1, 3) 3darray tails_l(1, Ntypes, 1, nyr_l, 1, 4) ivector tails_w(1, 4) ivector N_supyr_l(1, Ntypes) imatrix supyr_l1(1, Ntypes, 1, 20) imatrix supyr_l2(1, Ntypes, 1, 20) int floop int tloop LOCAL_CALCS N_supyr_l=0;nyr_l=0;if(nobsl >0){for(floop=1;floop<=Ntypes;floop++) for(tloop=styr;tloop<=(styr+(endyr+1-styr)*nseas);tloop++) for(i=1;i<=nobsl;i++){y=lendata(i, 1);s=lendata(i, 2);t=styr+(y-styr)*nseas+s-1;f=lendata(i, 3);if(f==floop &&t==tloop){nyr_l(f)+=1;j=nyr_l(f);header_l(f, j, 1)=y;header_l(f, j, 2)=s;header_l(f, j, 3)=f;yr_l_y(f, j)=y;yr_l(f, j)=t;gen_l(f, j)=lendata(i, 4);mkt_l(f, j)=lendata(i, 5);nsamp_l_read(f, j)=lendata(i, 6);if(y >retro_yr) nsamp_l_read(f, j)=-fabs(nsamp_l_read(f, j));nsamp_l(f, j)=nsamp_l_read(f, j);for(z=1;z<=nlength2;z++){obs_l(f, j, z)=lendata(i, 6+z);}if(sum(obs_l(f, j))<=0.0){cout<<" zero fish in size comp "<< f<<" "<< y<< endl;exit(1);}if(gen_l(f, j)==2) obs_l(f, j)(1, nlength)=0.;if(gen_l(f, j)<=1 &&gender==2) obs_l(f, j)(nlength1, nlength2)=0.;obs_l(f, j)/=sum(obs_l(f, j));tails_l(f, j, 1)=1;tails_l(f, j, 2)=nlength;tails_l(f, j, 3)=nlength1;tails_l(f, j, 4)=nlength2;if(gen_l(f, j)!=2){k=0;temp=sum(obs_l(f, j)(1, nlength));for(z=1;z<=nlength;z++) if(obs_l(f, j, z)>0.){k++;}if(temp >0.0 &&k >1){k=0;for(z=1;z<=nlength-1;z++){if(obs_l(f, j, z)<=min_tail &&k==0){obs_l(f, j, z+1)+=obs_l(f, j, z);obs_l(f, j, z)=0.00;tails_l(f, j, 1)=z+1;}else{k=1;}}k=0;for(z=nlength;z >=tails_l(f, j, 1);z--){if(obs_l(f, j, z)<=min_tail &&k==0){obs_l(f, j, z-1)+=obs_l(f, j, z);obs_l(f, j, z)=0.00;tails_l(f, j, 2)=z-1;}else{k=1;}}}obs_l(f, j)(tails_l(f, j, 1), tails_l(f, j, 2))+=min_comp;}if(gen_l(f, j)>=2){k=0;temp=sum(obs_l(f, j)(nlength1, nlength2));for(z=nlength1;z<=nlength2;z++) if(obs_l(f, j, z)>0.){k++;}if(temp >0.0 &&k >1){k=0;for(z=nlength1;z<=nlength2-1;z++){if(obs_l(f, j, z)<=min_tail &&k==0){obs_l(f, j, z+1)+=obs_l(f, j, z);obs_l(f, j, z)=0.00;tails_l(f, j, 3)=z+1;}else{k=1;}}k=0;for(z=nlength2;z >=tails_l(f, j, 3);z--){if(obs_l(f, j, z)<=min_tail &&k==0){obs_l(f, j, z-1)+=obs_l(f, j, z);obs_l(f, j, z)=0.00;tails_l(f, j, 4)=z-1;}else{k=1;}}}obs_l(f, j)(tails_l(f, j, 3), tails_l(f, j, 4))+=min_comp;}obs_l(f, j)/=sum(obs_l(f, j));if(nsamp_l(f, j)==-9999){N_supyr_l(f)+=1;supyr_l1(f, N_supyr_l(f))=j;}if(nsamp_l(f, j)==-9998){supyr_l2(f, N_supyr_l(f))=j;}}}}cout<<" successful read of length data"<< endl;END_CALCS init_int n_abins int n_abins1;int n_abins2;LOCAL_CALCS n_abins1=n_abins+1;n_abins2=gender *n_abins;cout<< " N agebins = "<< n_abins<< endl;END_CALCS init_vector age_bins1(1, n_abins)!!if(n_abins >0) cout<< " agebins: "<< age_bins1<< endl;init_int N_ageerr!!cout<< " N ageerr vectors = "<< N_ageerr<< endl;init_3darray age_err(1, N_ageerr, 1, 2, 0, nages)!!cout<< " ageerr "<< age_err<< endl;3darray age_age(1, N_ageerr, 1, n_abins2, 0, gender *nages+gender-1) vector age_bins(1, n_abins2) init_int nobsa!!cout<< " reading age comp data "<< nobsa<< endl;!!if(nobsa >0 &&N_ageerr==0){cout<<" must define ageerror vectors because age data exist"<< endl;exit(1);}init_matrix agedata(1, nobsa, 1, 9+n_abins2) ivector nyr_a(1, Ntypes) number age LOCAL_CALCS for(b=1;b<=n_abins;b++){age_bins(b)=age_bins1(b);if(gender==2) age_bins(b+n_abins)=age_bins1(b);}nyr_a=0;if(nobsa >0) cout<< " age data years "<< column(agedata, 1)<< endl;for(i=1;i<=nobsa;i++){f=agedata(i, 3);nyr_a(f)+=1;}for(f=1;f<=Ntypes;f++){if(nyr_a(f)==0) nyr_a(f)=1;}END_CALCS imatrix yr_a(1, Ntypes, 1, nyr_a) imatrix yr_a_y(1, Ntypes, 1, nyr_a) 3darray obs_a(1, Ntypes, 1, nyr_a, 1, gender *n_abins) matrix nsamp_a(1, Ntypes, 1, nyr_a) matrix nsamp_a_read(1, Ntypes, 1, nyr_a) imatrix ageerr_type_a(1, Ntypes, 1, nyr_a) imatrix gen_a(1, Ntypes, 1, nyr_a) imatrix mkt_a(1, Ntypes, 1, nyr_a) 3darray Lbin_filter(1, Ntypes, 1, nyr_a, 1, nlength2) imatrix use_Lbin_filter(1, Ntypes, 1, nyr_a) imatrix Lbin_lo(1, Ntypes, 1, nyr_a) imatrix Lbin_hi(1, Ntypes, 1, nyr_a) 3darray tails_a(1, Ntypes, 1, nyr_a, 1, 4) 3darray header_a(1, Ntypes, 1, nyr_a, 1, 9) ivector N_supyr_a(1, Ntypes) imatrix supyr_a1(1, Ntypes, 1, 20) imatrix supyr_a2(1, Ntypes, 1, 20) LOCAL_CALCS Lbin_filter=1.;use_Lbin_filter.initialize();cout<< nyr_l<< endl<< nyr_a<< endl;N_supyr_a=0;nyr_a=0;if(nobsa >0){for(floop=1;floop<=Ntypes;floop++) for(tloop=styr;tloop<=(styr+(endyr+1-styr)*nseas);tloop++) for(i=1;i<=nobsa;i++){y=agedata(i, 1);s=agedata(i, 2);t=styr+(y-styr)*nseas+s-1;f=agedata(i, 3);if(f==floop &&t==tloop){nyr_a(f)+=1;j=nyr_a(f);header_a(f, j)=agedata(i)(1, 9);yr_a(f, j)=t;yr_a_y(f, j)=y;gen_a(f, j)=agedata(i, 4);mkt_a(f, j)=agedata(i, 5);ageerr_type_a(f, j)=agedata(i, 6);Lbin_lo(f, j)=agedata(i, 7);if(Lbin_lo(f, j)<=0) Lbin_lo(f, j)=1;Lbin_hi(f, j)=agedata(i, 8);if(Lbin_hi(f, j)<=0||Lbin_hi(f, j)>nlength) Lbin_hi(f, j)=nlength;nsamp_a_read(f, j)=agedata(i, 9);if(y >retro_yr) nsamp_a_read(f, j)=-fabs(nsamp_a_read(f, j));nsamp_a(f, j)=nsamp_a_read(f, j);if(Lbin_lo(f, j)>1||Lbin_hi(f, j)< nlength){use_Lbin_filter(f, j)=1;Lbin_filter(f, j)=0;Lbin_filter(f, j)(Lbin_lo(f, j), Lbin_hi(f, j))=1;if(gender==2){k=int(Lbin_lo(f, j))+nlength;z=int(Lbin_hi(f, j))+nlength;Lbin_filter(f, j)(k, z)=1.;}}for(b=1;b<=gender *n_abins;b++){obs_a(f, j, b)=agedata(i, 9+b);}if(sum(obs_a(f, j))<=0.0){cout<<" zero fish in age comp "<< f<<" "<< y<< endl;exit(1);}if(gen_a(f, j)==2) obs_a(f, j)(1, n_abins)=0.;if(gen_a(f, j)<=1 &&gender==2) obs_a(f, j)(n_abins1, gender *n_abins)=0.;obs_a(f, j)/=sum(obs_a(f, j));tails_a(f, j, 1)=1;tails_a(f, j, 2)=n_abins;tails_a(f, j, 3)=1+(gender-1)*n_abins;tails_a(f, j, 4)=gender *n_abins;if(gen_a(f, j)!=2){k=0;temp=sum(obs_a(f, j)(1, n_abins));for(z=1;z<=n_abins;z++) if(obs_a(f, j, z)>0.){k++;}if(temp >0.0 &&k >1){k=0;for(z=1;z<=n_abins-1;z++){if(obs_a(f, j, z)<=min_tail &&k==0){obs_a(f, j, z+1)+=obs_a(f, j, z);obs_a(f, j, z)=0.00;tails_a(f, j, 1)=z+1;}else{k=1;}}k=0;for(z=n_abins;z >=tails_a(f, j, 1);z--){if(obs_a(f, j, z)<=min_tail &&k==0){obs_a(f, j, z-1)+=obs_a(f, j, z);obs_a(f, j, z)=0.00;tails_a(f, j, 2)=z-1;}else{k=1;}}}obs_a(f, j)(tails_a(f, j, 1), tails_a(f, j, 2))+=min_comp;}if(gen_a(f, j)>=2){k=0;temp=sum(obs_a(f, j)(n_abins1, n_abins2));for(z=n_abins1;z<=n_abins2;z++) if(obs_a(f, j, z)>0.){k++;}if(temp >0.0 &&k >1){k=0;for(z=n_abins1;z<=n_abins2-1;z++){if(obs_a(f, j, z)<=min_tail &&k==0){obs_a(f, j, z+1)+=obs_a(f, j, z);obs_a(f, j, z)=0.00;tails_a(f, j, 3)=z+1;}else{k=1;}}k=0;for(z=n_abins2;z >=tails_a(f, j, 3);z--){if(obs_a(f, j, z)<=min_tail &&k==0){obs_a(f, j, z-1)+=obs_a(f, j, z);obs_a(f, j, z)=0.00;tails_a(f, j, 4)=z-1;}else{k=1;}}}obs_a(f, j)(tails_a(f, j, 3), tails_a(f, j, 4))+=min_comp;}if(sum(obs_a(f, j))>0.) obs_a(f, j)/=sum(obs_a(f, j));if(nsamp_a(f, j)==-9999){N_supyr_a(f)+=1;supyr_a1(f, N_supyr_a(f))=j;}if(nsamp_a(f, j)==-9998){supyr_a2(f, N_supyr_a(f))=j;}}}}cout<<" successful read of age data "<< endl;END_CALCS init_int nobs_ms init_matrix sizeagedata(1, nobs_ms, 1, 7+2 *n_abins2) ivector nyr_ms(1, Ntypes) LOCAL_CALCS nyr_ms=0;if(nobs_ms >0) for(i=1;i<=nobs_ms;i++){f=sizeagedata(i, 3);nyr_ms(f)+=1;}END_CALCS imatrix yr_ms(1, Ntypes, 1, nyr_ms) imatrix yr_ms_y(1, Ntypes, 1, nyr_ms) 3darray obs_ms(1, Ntypes, 1, nyr_ms, 1, n_abins2) 3darray obs_ms_n(1, Ntypes, 1, nyr_ms, 1, n_abins2) 3darray obs_ms_n_read(1, Ntypes, 1, nyr_ms, 1, n_abins2) imatrix ageerr_type_ms(1, Ntypes, 1, nyr_ms) imatrix gen_ms(1, Ntypes, 1, nyr_ms) imatrix mkt_ms(1, Ntypes, 1, nyr_ms) imatrix use_ms(1, Ntypes, 1, nyr_ms) 3darray header_ms(1, Ntypes, 1, nyr_ms, 1, 7) ivector N_supyr_ms(1, Ntypes) imatrix supyr_ms1(1, Ntypes, 1, 20) imatrix supyr_ms2(1, Ntypes, 1, 20) LOCAL_CALCS N_supyr_ms=0;nyr_ms=0;if(nobs_ms >0){for(floop=1;floop<=Ntypes;floop++) for(tloop=styr;tloop<=(styr+(endyr+1-styr)*nseas);tloop++) for(i=1;i<=nobs_ms;i++){y=sizeagedata(i, 1);s=sizeagedata(i, 2);t=styr+(y-styr)*nseas+s-1;f=sizeagedata(i, 3);if(f==floop &&t==tloop){nyr_ms(f)+=1;header_ms(f, nyr_ms(f))=sizeagedata(i)(1, 7);yr_ms(f, nyr_ms(f))=t;yr_ms_y(f, nyr_ms(f))=y;gen_ms(f, nyr_ms(f))=sizeagedata(i, 4);mkt_ms(f, nyr_ms(f))=sizeagedata(i, 5);ageerr_type_ms(f, nyr_ms(f))=sizeagedata(i, 6);use_ms(f, nyr_ms(f))=sizeagedata(i, 7);if(y >retro_yr) use_ms(f, nyr_ms(f))=-fabs(use_ms(f, nyr_ms(f)));for(b=1;b<=n_abins2;b++){obs_ms(f, nyr_ms(f), b)=sizeagedata(i, 7+b);}for(b=1;b<=n_abins2;b++){obs_ms_n(f, nyr_ms(f), b)=sizeagedata(i, 7+b+n_abins2);obs_ms_n_read(f, nyr_ms(f), b)=sizeagedata(i, 7+b+n_abins2);}if(sizeagedata(i, 7)==-9999){N_supyr_ms(f)+=1;supyr_ms1(f, N_supyr_ms(f))=nyr_ms(f);}if(sizeagedata(i, 7)==-9998){supyr_ms2(f, N_supyr_ms(f))=nyr_ms(f);}}}}cout<<" successful read of size@age data; N = "<< nobs_ms<< endl;END_CALCS init_int N_envvar init_int N_envdata!!cout<< " N_env_var_and_N_env_data:"<< N_envvar<< " "<< N_envdata<< endl;matrix env_data_RD(styr-1, endyr+100, 1, N_envvar) init_matrix env_temp(1, N_envdata, 1, 3) LOCAL_CALCS if(N_envdata >0){env_data_RD=0.;for(i=1;i<=N_envdata;i++) if(env_temp(i, 1)>=(styr-1)){env_data_RD(env_temp(i, 1), env_temp(i, 2))=env_temp(i, 3);}cout<<" successful read of environmental data "<< endl;}END_CALCS init_int fid!!cout<<"If you see 999, we got to the end of the data imput sucessfully! "<< fid<< endl;!!if(fid!=999) abort();!!ad_comm::change_datafile_name(ctlfilename);init_int N_GP init_int N_GP2 int gmorph int gp int gp2 int birthseas;!!gmorph=N_GP *N_GP2 *gender *nseas;ivector sx(1, gmorph) ivector GP(1, gmorph) ivector Bseas(1, gmorph) ivector GP2(1, gmorph) ivector use_morph(1, gmorph) imatrix recr_dist_pattern_2(1, N_GP, 1, nseas) ivector shadow(1, N_GP2) vector azero_seas(1, nseas);vector azero_G(1, gmorph);LOCAL_CALCS azero_seas(1)=0.;if(nseas >1) for(s=2;s<=nseas;s++){azero_seas(s)=sum(seasdur(1, s-1));}if(N_GP2==1){shadow(1)=0;}else if(N_GP2==3){shadow.fill_seqadd(-1, 1);}else if(N_GP2==5){shadow.fill_seqadd(-2, 1);}else{cout<<" illegal N submorphs "<< N_GP2<< endl;exit(1);}END_CALCS init_int pop init_ivector fleet_area(1, Ntypes) init_3darray recr_dist_pattern(1, N_GP, 1, nseas, 1, pop);init_int recr_dist_inx;LOCAL_CALCS g=0;recr_dist_pattern_2.initialize();use_morph.initialize();for(k=1;k<=gender;k++) for(gp=1;gp<=N_GP;gp++) for(birthseas=1;birthseas<=nseas;birthseas++) for(gp2=1;gp2<=N_GP2;gp2++){g+=1;Bseas(g)=birthseas;sx(g)=k;GP(g)=gp+(k-1)*N_GP;GP2(g)=gp2;azero_G(g)=azero_seas(birthseas);for(p=1;p<=pop;p++){if(recr_dist_pattern(gp, birthseas, p)>0.){recr_dist_pattern_2(gp, birthseas)=1;use_morph(g)=1;}}}cout<<" morph assignments "<< endl<< sx<< endl<< GP<< endl<< azero_G<< endl<< GP2<< endl;END_CALCS init_int do_migration;init_4darray move_pattern(1, nseas, 1, pop, 1, pop, 1, 3) int N_move_parms LOCAL_CALCS N_move_parms=0;for(s=1;s<=nseas;s++) for(p=1;p<=pop;p++) for(p2=1;p2<=pop;p2++){if(move_pattern(s, p, p2, 1)>0) N_move_parms+=1;}END_CALCS int k1 int k2 int k3 init_int N_Block_Designs init_ivector Nblk(1, N_Block_Designs) LOCAL_CALCS k1=N_Block_Designs;if(k1==0) k1=1;END_CALCS ivector Nblk2(1, k1) LOCAL_CALCS Nblk2=2;if(N_Block_Designs >0) Nblk2=Nblk+Nblk;END_CALCS init_imatrix Block_Design(1, N_Block_Designs, 1, Nblk2)!!if(N_Block_Designs >0) cout<<" read block info "<< endl<< Block_Design<< endl;else cout<<" no blocks"<< endl;int N_MGparm init_number fracfemale;init_number sd_ratio;init_vector submorphdist(1, N_GP2) init_number natM_amin;init_number natM_amax;init_number AFIX;init_number AFIX2;init_number SD_add_to_LAA init_int CV_depvar int CV_depvar_a;int CV_depvar_b;LOCAL_CALCS if(CV_depvar==0||CV_depvar==2){CV_depvar_a=0;}else{CV_depvar_a=1;}if(CV_depvar<=1){CV_depvar_b=0;}else{CV_depvar_b=1;}END_CALCS init_int Maturity_Option init_int First_Mature_Age init_int MGparm_def init_int MG_adjust_method init_number MGparm_dev_PH ivector time_vary_MG(0, 5) ivector MG_active(0, 5) int do_once;int doit;vector femfrac(1, N_GP *gender) number sd_withinmorph number sd_betweenmorph int MGP_CGD int CGD;LOCAL_CALCS femfrac(1, N_GP)=fracfemale;femfrac(N_GP+1, N_GP+N_GP)=1-fracfemale;if(submorphdist(1)< 0.){if(N_GP2==1){submorphdist(1)=1.;}else if(N_GP2==3){submorphdist.fill("{0.15,0.70,0.15}");}else if(N_GP2==5){submorphdist.fill("{0.031, 0.237, 0.464, 0.237, 0.031}");}}submorphdist/=sum(submorphdist);cout<< submorphdist<< endl;if(N_GP2 >1){sd_withinmorph=sd_ratio *sqrt(1./(1.+sd_ratio *sd_ratio));sd_betweenmorph=sqrt(1./(1.+sd_ratio *sd_ratio));}else{sd_withinmorph=1;sd_betweenmorph=0.000001;}cout<< sd_ratio<<" "<< sd_withinmorph<<" "<< sd_betweenmorph<< endl;N_MGparm=7 *N_GP *gender;N_MGparm+=2 *gender+2+2;N_MGparm+=N_GP+pop+nseas;if(recr_dist_inx==1) N_MGparm+=N_GP *pop *nseas;N_MGparm+=1;MGP_CGD=N_MGparm;if(do_migration >0) N_MGparm+=N_move_parms *2;END_CALCS init_matrix MGparm_1(1, N_MGparm, 1, 14)!!cout<<" Mort and Growth parameter setup"<< endl<< MGparm_1<< endl;LOCAL_CALCS if(Maturity_Option==3){k1=N_GP;First_Mature_Age=0;}else{k1=0;}END_CALCS init_matrix Age_Maturity(1, k1, 0, nages) LOCAL_CALCS if(natM_amin==-999){k1=N_GP *gender;}else{k1=0;}END_CALCS init_matrix Age_NatMort(1, k1, 0, nages) int N_MGparm_env ivector MGparm_env(1, N_MGparm) int N_MGparm_dev init_int customMGenvsetup!!cout<<" custom MG-env setup "<< customMGenvsetup<< endl;ivector mgp_type(1, N_MGparm) LOCAL_CALCS time_vary_MG=endyr+1000;CGD=0;k=1;for(f=1;f<=N_GP *gender;f++){mgp_type(k)=1;mgp_type(k+1)=1;k+=2;mgp_type(k, k+4)=2;k=k+5;}for(f=1;f<=gender;f++){mgp_type(k, k+1)=3;k=k+2;}mgp_type(k, k+3)=3;k=k+4;mgp_type(k, MGP_CGD-1)=4;mgp_type(MGP_CGD)=2;if(do_migration >0) mgp_type(MGP_CGD+1, N_MGparm)=5;cout<< mgp_type<< endl;MGparm_env=0;N_MGparm_env=0;N_MGparm_dev=0;for(f=1;f<=N_MGparm;f++){if(MGparm_1(f, 8)>=1){N_MGparm_env+=1;MGparm_env(f)=N_MGparm+N_MGparm_env;if(f==MGP_CGD) CGD=1;for(y=styr;y<=endyr;y++){if((env_data_RD(y, MGparm_1(f, 8))!=0.00||MGparm_1(f, 8)< 0)&&y<< time_vary_MG(mgp_type(f))) time_vary_MG(mgp_type(f))=y;}}if(MGparm_1(f, 9)>=1) N_MGparm_dev+=1;}k1=N_MGparm_env;if(k1 >0 &&customMGenvsetup==0) k1=1;END_CALCS init_matrix MGparm_env_1(1, k1, 1, 7)!!if(N_MGparm_env >0) cout<<" got the MGparm-env setup "<< MGparm_env_1<< endl;int N_MGparm_blk imatrix Block_Defs_MG(1, N_MGparm, styr, endyr) init_int customblocksetup_MG!!cout<<" customblocksetup_MG "<< customblocksetup_MG<< endl;LOCAL_CALCS Block_Defs_MG.initialize();N_MGparm_blk=0;for(j=1;j<=N_MGparm;j++){z=MGparm_1(j, 13);if(z >N_Block_Designs) cout<<" ERROR, Block > N Blocks "<< z<<" "<< N_Block_Designs<< endl;if(z >0){g=1;for(a=1;a<=Nblk(z);a++){N_MGparm_blk+=1;if(time_vary_MG(mgp_type(j))>Block_Design(z, g)){time_vary_MG(mgp_type(j))=Block_Design(z, g);}for(y=Block_Design(z, g);y<=Block_Design(z, g+1);y++){Block_Defs_MG(j, y)=N_MGparm+N_MGparm_env+N_MGparm_blk;}g+=2;}cout<< Block_Defs_MG(j)<< endl;if(j==MGP_CGD) CGD=1;}}k=N_MGparm_blk;if(k >0 &&customblocksetup_MG==0) k=1;cout<< k<<" "<< N_MGparm_blk<< endl;END_CALCS init_matrix MGparm_blk_1(1, k, 1, 7) int N_MGparm2!!if(k >0) cout<< MGparm_blk_1<< endl;!!N_MGparm2=N_MGparm+N_MGparm_env+N_MGparm_blk;vector MGparm_LO(1, N_MGparm2) vector MGparm_HI(1, N_MGparm2) vector MGparm_RD(1, N_MGparm2) vector MGparm_PR(1, N_MGparm2) ivector MGparm_PRtype(1, N_MGparm2) vector MGparm_CV(1, N_MGparm2) ivector MGparm_PH(1, N_MGparm2) LOCAL_CALCS MG_active=0;for(f=1;f<=N_MGparm;f++){MGparm_LO(f)=MGparm_1(f, 1);MGparm_HI(f)=MGparm_1(f, 2);MGparm_RD(f)=MGparm_1(f, 3);MGparm_PR(f)=MGparm_1(f, 4);MGparm_PRtype(f)=MGparm_1(f, 5);MGparm_CV(f)=MGparm_1(f, 6);MGparm_PH(f)=MGparm_1(f, 7);if(MGparm_PH(f)>0){MG_active(mgp_type(f))=1;}}j=N_MGparm;if(N_MGparm_env >0){for(f=1;f<=N_MGparm_env;f++){j+=1;if(customMGenvsetup==0){k=1;}else{k=f;}MGparm_LO(j)=MGparm_env_1(k, 1);MGparm_HI(j)=MGparm_env_1(k, 2);MGparm_RD(j)=MGparm_env_1(k, 3);MGparm_PR(j)=MGparm_env_1(k, 4);MGparm_PRtype(j)=MGparm_env_1(k, 5);MGparm_CV(j)=MGparm_env_1(k, 6);MGparm_PH(j)=MGparm_env_1(k, 7);}}if(N_MGparm_blk >0) for(f=1;f<=N_MGparm_blk;f++){j+=1;if(customblocksetup_MG==0) k=1;else k=f;MGparm_LO(j)=MGparm_blk_1(k, 1);MGparm_HI(j)=MGparm_blk_1(k, 2);MGparm_RD(j)=MGparm_blk_1(k, 3);MGparm_PR(j)=MGparm_blk_1(k, 4);MGparm_PRtype(j)=MGparm_blk_1(k, 5);MGparm_CV(j)=MGparm_blk_1(k, 6);MGparm_PH(j)=MGparm_blk_1(k, 7);}if(N_MGparm_dev >0) j=N_MGparm_dev;else j=1;END_CALCS ivector MGparm_dev_minyr(1, j) ivector MGparm_dev_maxyr(1, j) vector MGparm_dev_stddev(1, j) LOCAL_CALCS if(N_MGparm_dev==0){MGparm_dev_minyr(1)=styr;MGparm_dev_maxyr(1)=styr;MGparm_dev_stddev(1)=0.5;N_MGparm_dev=1;}else{j=1;for(f=1;f<=N_MGparm;f++){if(MGparm_1(f, 9)>=1){MGparm_1(f, 9)=j;MGparm_dev_minyr(j)=MGparm_1(f, 10);if(MGparm_1(f, 10)< time_vary_MG(mgp_type(f))) time_vary_MG(mgp_type(f))=MGparm_1(f, 10);MGparm_dev_maxyr(j)=MGparm_1(f, 11);MGparm_dev_stddev(j)=MGparm_1(f, 12);j+=1;if(f==MGP_CGD) CGD=1;}}}for(f=1;f<=4;f++){if(time_vary_MG(f)<=endyr) MG_active(f)=1;MG_active(0)=sum(MG_active(1, 5));cout<< f<<" "<< MG_active(f)<<" "<< time_vary_MG(f)<< endl;}time_vary_MG(0)=min(time_vary_MG(1, 4));cout<< MGparm_RD<< endl;cout<< mgp_type<< endl;cout<< time_vary_MG<< endl;cout<<" done with M and growth CTL"<< endl;END_CALCS init_int SR_fxn init_matrix SR_parm_1(1, 6, 1, 7)!!cout<<" SR parms "<< endl<< SR_parm_1<< endl;init_int SR_env_link init_int SR_env_target_RD int SR_env_target init_int do_recr_dev vector SRvec_LO(1, 6) vector SRvec_HI(1, 6) ivector SRvec_PH(1, 6) LOCAL_CALCS SRvec_LO=column(SR_parm_1, 1);SRvec_HI=column(SR_parm_1, 2);SRvec_PH=ivector(column(SR_parm_1, 7));if(SR_env_link >N_envvar){warning<<" ERROR: SR_env_link ( "<< SR_env_link<<" ) was set greater than the highest numbered environmental index ( "<< N_envvar<<" )"<< endl;exit(1);}SR_env_target=SR_env_target_RD;if(SR_env_link==0) SR_env_target=0;if(SR_env_link==0 &&SR_env_target_RD >0) warning<<" WARNING: SR_env_target was set, but no SR_env_link selected, SR_env_target set to 0"<< endl;END_CALCS init_int recdev_start;init_int recdev_end;init_number recdev_LO;init_number recdev_HI;init_int recdev_PH;!!if(recdev_end >retro_yr) recdev_end=retro_yr;!!if(recdev_start<(styr-nages)){recdev_start=styr-nages;cout<<" adjust recdev_start to: "<< recdev_start<< endl;}init_int recdev_fulladj vector biasadj(styr-nages, endyr) LOCAL_CALCS for(y=styr-nages;y<=endyr;y++){if(y<=recdev_fulladj-nages){biasadj(y)=0.;}else if(y >=recdev_fulladj){biasadj(y)=1.;}else{biasadj(y)=(y-recdev_fulladj+r_ages(nages))/(r_ages(nages));}}END_CALCS!!cout<<" RecrDev period "<< recdev_start<<" "<< recdev_end<< endl;init_matrix init_F_parm_1(1, Nfleet, 1, 7) vector init_F_LO(1, Nfleet) vector init_F_HI(1, Nfleet) vector init_F_RD(1, Nfleet) vector init_F_PR(1, Nfleet) vector init_F_PRtype(1, Nfleet) vector init_F_CV(1, Nfleet) ivector init_F_PH(1, Nfleet) LOCAL_CALCS init_F_LO=column(init_F_parm_1, 1);init_F_HI=column(init_F_parm_1, 2);init_F_RD=column(init_F_parm_1, 3);init_F_PR=column(init_F_parm_1, 4);init_F_PRtype=column(init_F_parm_1, 5);init_F_CV=column(init_F_parm_1, 6);init_F_PH=ivector(column(init_F_parm_1, 7));for(f=1;f<=Nfleet;f++){if(obs_equ_catch(f)<=0.0){init_F_RD(f)=0.0;init_F_PH(f)=-1;}if(obs_equ_catch(f)>0.0 &&init_F_RD(f)<=0.0){cout<< f<<" catch: "<< obs_equ_catch(f)<<" initF: "<< init_F_RD(f)<<" initF must be >0"<< endl;exit(1);}}cout<<" Done with init F "<< init_F_parm_1<< endl;END_CALCS init_matrix Q_setup(1, Ntypes, 1, 6) int Q_Npar imatrix Q_setup_parms(1, Ntypes, 1, 4) LOCAL_CALCS cout<<" Q setup "<< endl<< Q_setup<< endl;Q_Npar=0;for(f=1;f<=Nfleet;f++) catchunits(f)=Q_setup(f, 5);for(f=1;f<=Ntypes;f++){Q_setup_parms(f, 1)=0;if(Q_setup(f, 1)>0){Q_Npar+=1;Q_setup_parms(f, 1)=Q_Npar;}}for(f=1;f<=Ntypes;f++){Q_setup_parms(f, 2)=0;if(Q_setup(f, 2)>0){Q_Npar+=1;Q_setup_parms(f, 2)=Q_Npar;}}for(f=1;f<=Ntypes;f++){Q_setup_parms(f, 3)=0;if(Q_setup(f, 3)>0){Q_Npar+=1;Q_setup_parms(f, 3)=Q_Npar;}}for(f=1;f<=Ntypes;f++){Q_setup_parms(f, 4)=0;if(Q_setup(f, 4)>=2){Q_Npar+=1;Q_setup_parms(f, 4)=Q_Npar;if(Q_setup(f, 4)>=3){Q_Npar+=nyr_cr(f);}}}if(Q_Npar >0){k=Q_Npar;}else{k=1;}END_CALCS init_matrix Q_parm_1(1, Q_Npar, 1, 7)!!if(Q_Npar >0) cout<<" Q parms "<< endl<< Q_parm_1<< endl;vector Q_parm_LO(1, k) vector Q_parm_HI(1, k) ivector Q_parm_PH(1, k) LOCAL_CALCS if(Q_Npar >0){for(f=1;f<=Q_Npar;f++){Q_parm_LO(f)=Q_parm_1(f, 1);Q_parm_HI(f)=Q_parm_1(f, 2);Q_parm_PH(f)=Q_parm_1(f, 7);}}else{Q_parm_LO=-1.;Q_parm_HI=1.;Q_parm_PH=-4;}cout<<" done with Q parms"<< endl;END_CALCS ivector seltype_Nparam(0, 33) LOCAL_CALCS seltype_Nparam(0)=0;seltype_Nparam(1)=2;seltype_Nparam(2)=8;seltype_Nparam(3)=6;seltype_Nparam(4)=0;seltype_Nparam(5)=2;seltype_Nparam(6)=2;seltype_Nparam(7)=8;seltype_Nparam(8)=8;seltype_Nparam(9)=6;seltype_Nparam(10)=0;seltype_Nparam(11)=2;seltype_Nparam(12)=2;seltype_Nparam(13)=8;seltype_Nparam(14)=nages+1;seltype_Nparam(15)=0;seltype_Nparam(16)=2;seltype_Nparam(17)=5;seltype_Nparam(18)=8;seltype_Nparam(19)=6;seltype_Nparam(20)=6;seltype_Nparam(21)=8;seltype_Nparam(22)=4;seltype_Nparam(23)=6;seltype_Nparam(24)=6;seltype_Nparam(25)=0;seltype_Nparam(26)=0;seltype_Nparam(27)=0;seltype_Nparam(28)=0;seltype_Nparam(29)=0;seltype_Nparam(30)=0;seltype_Nparam(31)=0;seltype_Nparam(32)=0;seltype_Nparam(33)=0;END_CALCS init_imatrix seltype(1, 2 *Ntypes, 1, 4)!!cout<<" got the selex types "<< seltype<< endl;int N_selparm LOCAL_CALCS N_selparm=0;for(f=1;f<=2 *Ntypes;f++){N_selparm+=seltype_Nparam(seltype(f, 1));if(seltype(f, 1)==6) N_selparm+=seltype(f, 4);if(seltype(f, 2)>=1) N_selparm+=4 *seltype(f, 2);if(seltype(f, 3)>=1) N_selparm+=4;if(seltype(f, 1)==7) warning<<"ERROR: selectivity pattern #7 is no longer supported "<< endl;}for(f=1;f<=Nfleet;f++){if(nyr_disc(f)>0 &&seltype(f, 2)==0){warning<<" ERROR: discard data exist for fleet "<< f<<" but retention parms not setup "<< endl;exit(1);}else if(nyr_disc(f)==0 &&seltype(f, 2)>0){warning<<" WARNING: no discard amount data for fleet "<< f<<" but retention parms have been defined "<< endl;}}END_CALCS init_matrix selparm_1(1, N_selparm, 1, 14)!!cout<<" got the selex parm setup "<< endl<< selparm_1<< endl;init_int selparm_adjust_method int N_selparm_env int N_selparm_dev int N_selparm2 int parmN int blkparm ivector selparm_env(1, N_selparm) imatrix time_vary(styr, endyr+1, 1, 2 *Ntypes) init_int customenvsetup!!cout<<" custom env setup "<< customenvsetup<< endl;LOCAL_CALCS N_selparm_env=0;N_selparm_dev=0;selparm_env=0;z=0;for(f=1;f<=2 *Ntypes;f++) if(seltype_Nparam(seltype(f, 1))>0){parmN=seltype_Nparam(seltype(f, 1));if(seltype(f, 3)>0) parmN+=4;if(seltype(f, 2)>=1) parmN+=4 *seltype(f, 2);if(seltype(f, 1)==6) parmN+=seltype(f, 4);for(j=1;j<=parmN;j++){z+=1;if(selparm_1(z, 8)>=1){N_selparm_env+=1;selparm_env(z)=N_selparm+N_selparm_env;}if(selparm_1(z, 9)>=1){N_selparm_dev+=1;}}}k=N_selparm_env;if(k >0 &&customenvsetup==0) k=1;END_CALCS init_matrix selparm_env_1(1, k, 1, 7)!!if(k >0) cout<<" got the selex-env setup "<< selparm_env_1<< endl;int N_selparm_blk imatrix Block_Defs(1, N_selparm, styr, endyr) init_int customblocksetup LOCAL_CALCS Block_Defs.initialize();N_selparm_blk=0;for(j=1;j<=N_selparm;j++){z=selparm_1(j, 13);if(z >N_Block_Designs) cout<<" ERROR, Block > N Blocks "<< z<<" "<< N_Block_Designs<< endl;if(z >0){g=1;for(a=1;a<=Nblk(z);a++){N_selparm_blk+=1;for(y=Block_Design(z, g);y<=Block_Design(z, g+1);y++){Block_Defs(j, y)=N_selparm+N_selparm_env+N_selparm_blk;}g+=2;}cout<<" Selex Parm "<< j<<" Blocks:"<< Block_Defs(j)<< endl;}}k=N_selparm_blk;if(k >0 &&customblocksetup==0) k=1;END_CALCS init_matrix selparm_blk_1(1, k, 1, 7)!!if(k >0) cout<< "selex block setups "<< endl<< selparm_blk_1<< endl;!!N_selparm2=N_selparm+N_selparm_env+N_selparm_blk;vector selparm_LO(1, N_selparm2) vector selparm_HI(1, N_selparm2) vector selparm_RD(1, N_selparm2) vector selparm_PR(1, N_selparm2) vector selparm_PRtype(1, N_selparm2) vector selparm_CV(1, N_selparm2) ivector selparm_PH(1, N_selparm2) LOCAL_CALCS time_vary.initialize();time_vary(styr)=1;time_vary(endyr+1)=1;for(y=styr+1;y<=endyr;y++){z=0;for(f=1;f<=2 *Ntypes;f++){if(seltype(f, 1)==5||seltype(f, 1)==15){if(f<=Ntypes){time_vary(y, f)=time_vary(y, seltype(f, 4));}else{time_vary(y, f)=time_vary(y, seltype(f, 4)+Ntypes);}z+=seltype_Nparam(seltype(f, 1));}else{if(seltype_Nparam(seltype(f, 1))>0){parmN=seltype_Nparam(seltype(f, 1));if(seltype(f, 3)>0) parmN+=4;if(seltype(f, 2)>=1) parmN+=4 *seltype(f, 2);if(seltype(f, 1)==6) parmN+=seltype(f, 4);for(j=1;j<=parmN;j++){z+=1;if(selparm_1(z, 8)>=1){if((env_data_RD(y, selparm_1(z, 8))!=env_data_RD(y-1, selparm_1(z, 8))||selparm_1(z, 8)< 0)) time_vary(y, f)=1;}if(selparm_1(z, 9)>=1){s=selparm_1(z, 11)+1;if(s >endyr) s=endyr;if(y >=selparm_1(z, 10)&&y<=s) time_vary(y, f)=1;}if(selparm_1(z, 13)>=1){if(Block_Defs(z, y)!=Block_Defs(z, y-1)) time_vary(y, f)=1;}}}}}}for(f=1;f<=N_selparm;f++){selparm_LO(f)=selparm_1(f, 1);selparm_HI(f)=selparm_1(f, 2);selparm_RD(f)=selparm_1(f, 3);selparm_PR(f)=selparm_1(f, 4);selparm_PRtype(f)=selparm_1(f, 5);selparm_CV(f)=selparm_1(f, 6);selparm_PH(f)=selparm_1(f, 7);}j=N_selparm;if(N_selparm_env >0) for(f=1;f<=N_selparm_env;f++){j+=1;if(customenvsetup==0) k=1;else k=f;selparm_LO(j)=selparm_env_1(k, 1);selparm_HI(j)=selparm_env_1(k, 2);selparm_RD(j)=selparm_env_1(k, 3);selparm_PR(j)=selparm_env_1(k, 4);selparm_PRtype(j)=selparm_env_1(k, 5);selparm_CV(j)=selparm_env_1(k, 6);selparm_PH(j)=selparm_env_1(k, 7);}if(N_selparm_blk >0) for(f=1;f<=N_selparm_blk;f++){j+=1;if(customblocksetup==0) k=1;else k=f;selparm_LO(j)=selparm_blk_1(k, 1);selparm_HI(j)=selparm_blk_1(k, 2);selparm_RD(j)=selparm_blk_1(k, 3);selparm_PR(j)=selparm_blk_1(k, 4);selparm_PRtype(j)=selparm_blk_1(k, 5);selparm_CV(j)=selparm_blk_1(k, 6);selparm_PH(j)=selparm_blk_1(k, 7);}if(N_selparm_dev >0) j=N_selparm_dev;else j=1;cout<<" initial selex parm values "<< selparm_RD<< endl;END_CALCS ivector selparm_dev_minyr(1, j) ivector selparm_dev_maxyr(1, j) vector selparm_dev_stddev(1, j) init_number selparm_dev_PH LOCAL_CALCS cout<< selparm_dev_PH<< endl;if(N_selparm_dev==0){selparm_dev_minyr(1)=styr;selparm_dev_maxyr(1)=styr;selparm_dev_stddev(1)=0.5;N_selparm_dev=1;}else{j=1;for(f=1;f<=N_selparm;f++){if(selparm_1(f, 9)>=1){selparm_1(f, 9)=j;selparm_dev_minyr(j)=selparm_1(f, 10);selparm_dev_maxyr(j)=selparm_1(f, 11);selparm_dev_stddev(j)=selparm_1(f, 12);j+=1;}}}cout<<" got the dev setup "<< endl;END_CALCS init_matrix var_adjust(1, 6, 1, Ntypes)!!cout<<" variance adjustment matrix "<< endl<< var_adjust<< endl;init_number DF_disc init_number DF_bodywt init_number max_lambda_phase init_number sd_offset init_matrix surv_lambda(1, Ntypes, 1, max_lambda_phase)!!cout<<" survey_CPUE lambda "<< endl<< surv_lambda<< endl;init_matrix disc_lambda(1, Ntypes, 1, max_lambda_phase) init_vector mnwt_lambda(1, max_lambda_phase) init_matrix length_lambda(1, Ntypes, 1, max_lambda_phase)!!cout<<" length lambda "<< endl<< length_lambda<< endl;init_matrix age_lambda(1, Ntypes, 1, max_lambda_phase)!!cout<<" age lambda "<< endl<< age_lambda<< endl;init_matrix sizeage_lambda(1, Ntypes, 1, max_lambda_phase)!!cout<<" size-age lambda "<< endl<< sizeage_lambda<< endl;init_vector lambda_init_equ(1, max_lambda_phase)!!cout<<" init equil "<< lambda_init_equ<< endl;init_vector lambda_rec(1, max_lambda_phase) init_vector lambda_parmprior(1, max_lambda_phase) init_vector lambda_parm_dev(1, max_lambda_phase) init_vector CrashPen_lambda(1, max_lambda_phase) init_number max_harvest_rate LOCAL_CALCS cout<<" max harvest rate "<< max_harvest_rate<< endl;if(F_Method==1 &&(max_harvest_rate >0.999||max_harvest_rate< 0.31)) warning<<" max harvest rate must be >0.3 and <1.0 for equil calcs "<< max_harvest_rate<< endl;END_CALCS init_int fim number max_phase number report_phase LOCAL_CALCS cout<<" adjust the phases"<< endl;max_phase=1;if(MGparm_dev_PH >Turn_off_phase) MGparm_dev_PH=-1;if(MGparm_dev_PH >max_phase) max_phase=MGparm_dev_PH;j=MGparm_PH.indexmax();for(k=1;k<=j;k++){if(MGparm_PH(k) > Turn_off_phase) MGparm_PH(k)=-1;if(MGparm_PH(k) > max_phase) max_phase=MGparm_PH(k);if(MGparm_PH(k)==-9999){MGparm_RD(k)=prof_var(prof_var_cnt);prof_var_cnt+=1;}}for(j=1;j<=SRvec_PH.indexmax();j++){if(SRvec_PH(j) > Turn_off_phase) SRvec_PH(j)=-1;if(SRvec_PH(j) > max_phase) max_phase=SRvec_PH(j);if(SRvec_PH(j)==-9999){SR_parm_1(j, 3)=prof_var(prof_var_cnt);prof_var_cnt+=1;}}if(recdev_PH > Turn_off_phase) recdev_PH=-1;if(recdev_PH > max_phase | max_phase = recdev_PH |
| j = selparm_PH.indexmax() | |
| z = nseas | |
| i = Nfleet | |
| k1 = styr+(endyr-styr)*nseas-1 + nseas + 1 | |
| y = k1+(N_forecast_yrs)*nseas-1 | |
| int z int L1 int L2 int A2 int a1 int f int g int gg int a int b int p int p2 int i int y int s int s2 int t int j int | j1 |
| *********COUNTERS*************************// TAG_030 | |
| int | j2 |
| int k int s_off int Fishon number | lambda_catch |
| maximum_function_evaluations = func_eval | |
| convergence_criteria = func_conv | |
| END_CALCS init_bounded_number | N_MGparm2 |
| END_CALCS init_bounded_number | MGparm_LO |
| END_CALCS init_bounded_number | MGparm_HI |
| darray N_GP *gender vector | endyr |
| darray N_GP *gender vector | nseas |
| darray N_GP *gender vector N_GP * | gender |
| darray N_GP *gender vector N_GP nages darray N_GP *gender vector | endyr |
| darray N_GP *gender vector N_GP nages darray N_GP *gender vector | N_MGparm2 |
| matrix | endyr |
| matrix | gender |
| matrix nlength matrix | endyr |
| matrix nlength matrix nlength matrix | endyr |
| matrix nlength matrix nlength matrix nages darray | TimeMax_Fore |
| matrix nlength matrix nlength matrix nages darray | gmorph |
| matrix nlength matrix nlength matrix nages darray nages darray | TimeMax_Fore |
| matrix nlength matrix nlength matrix nages darray nages darray | gmorph |
| matrix nlength matrix nlength matrix nages darray nages darray nages darray | endyr |
| matrix nlength matrix nlength matrix nages darray nages darray nages darray gmorph vector | nages |
| matrix | pop |
| matrix | gmorph |
| matrix nages darray | endyr |
| matrix nages darray N_GP * | gender |
| matrix nages darray N_GP | nseas |
| matrix nages darray N_GP | pop |
| number | SpawnBio |
| matrix | pop |
| number | Recruits |
| number | R_base |
| number | S_base |
| number | steepness |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector | TimeMax_Fore_std |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector | pop |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector | gmorph |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray | nseas |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray | Nfleet |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray | gmorph |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray | gmorph |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray nages matrix | Nfleet |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray nages matrix styr | nseas |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray nages matrix styr TimeMax matrix | Nfleet |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray nages matrix styr TimeMax matrix styr | nseas |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray nages matrix styr TimeMax matrix styr TimeMax matrix | gmorph |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray *nages darray nages matrix styr TimeMax matrix styr TimeMax matrix nages number | fish_bio |
| number | fish_bio_r |
| number | fish_bio_e |
| number | fish_num |
| number | fish_num_r |
| number | vbio |
| number | vbio1 |
| number | Ave_Size_w |
| number | harvest_rate |
| darray | gmorph |
| darray nages darray | TimeMax |
| Cohort_Growth = 1.0 | |
| do_once = 1 | |
| FUNCTION get_growth2 int | Ip |
| TAG_052. | |
| int | yz |
| dvariable | natM_base |
| dvariable | grow |
| dvariable | growhalf |
| dvariable | Lmax2 |
| FUNCTION get_selectivity int | Ip |
| TAG_054. | |
| int | Ip_env |
| dvariable | t1 |
| dvariable | t2 |
| dvariable | t3 |
| dvariable | t4 |
| dvariable | t1min |
| dvariable | t1max |
| dvariable | t1power |
| dvariable | t2min |
| dvariable | t2max |
| dvariable | t2power |
| dvariable | final |
| dvariable | sel_maxL |
| dvariable | lastsel |
| dvariable | lastSelPoint |
| dvariable | SelPoint |
| dvariable | asc |
| dvariable | dsc |
| Ip = 0 | |
| y = styr | |
| Initial size-at-age distribution TAG_091. | |
| init_adstring datfilename init_adstring ctlfilename init_int readparfile init_int rundetail init_int reportdetail init_int N_nudata init_int Turn_off_phase init_adstring version_info adstring | ( | version_info | ) |
| AL | ( | nlength1 | ) |
| AL | ( | 1 | ) | [pure virtual] |
| matrix nlength matrix nlength matrix nages darray nages darray nages darray gmorph vector AL | ( | 1 | , | |
| nlength1 | ||||
| ) |
| matrix nlength matrix nlength matrix nages darray ALK | ( | 1 | , | |
| nseas | , | |||
| 1 | , | |||
| gmorph | , | |||
| 0 | , | |||
| nages | , | |||
| 1 | , | |||
| nlength | ||||
| ) |
| convergence_criteria allocate | ( | func_conv. | indexmin(), | |
| func_conv. | indexmax() | |||
| ) |
| maximum_function_evaluations allocate | ( | func_eval. | indexmin(), | |
| func_eval. | indexmax() | |||
| ) |
| matrix nlength matrix nlength matrix nages darray nages darray Ave_Size | ( | styr-2 * | nseas, | |
| TimeMax_Fore+ | nseas, | |||
| 0 | , | |||
| 1 | , | |||
| 1 | , | |||
| gmorph | , | |||
| 0 | , | |||
| nages | ||||
| ) |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray catage | ( | styr- | nseas, | |
| TimeMax | , | |||
| 1 | , | |||
| Nfleet | , | |||
| 1 | , | |||
| gmorph | , | |||
| 0 | , | |||
| nages | ||||
| ) |
| fin4 close | ( | ) |
| dvar_vector curr_age1 | ( | 0 | , | |
| nages | ||||
| ) |
| dvar_vector curr_age2 | ( | 0 | , | |
| nages | ||||
| ) |
| cout<<endl<<endl<<"Estimating...please wait..."<<endl; PROCEDURE_SECTION depletion.initialize(); sel_l.initialize(); sel_a.initialize(); retain.initialize(); discmort.initialize(); if(do_recr_dev==1) {rec_dev=rec_dev1;} else if(do_recr_dev==2) {rec_dev=rec_dev2;} if(mccounter==1 || (mccounter> burn_intvl& double | ( | mccounter | ) |
| END_CALCS init_bounded_number dummy_parm | ( | 0 | , | |
| 2 | , | |||
| dummy_phase | ||||
| ) |
| matrix env_data | ( | styr- | 1, | |
| endyr+ | N_forecast_yrs_std, | |||
| - | 2, | |||
| N_envvar | ||||
| ) |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray equ_numbers | ( | 1 | , | |
| nseas | , | |||
| 1 | , | |||
| pop | , | |||
| 1 | , | |||
| gmorph | , | |||
| 0 | , | |||
| 4 * | nages | |||
| ) |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix styr TimeMax matrix styr TimeMax matrix fec | ( | 1 | , | |
| gmorph | , | |||
| 0 | , | |||
| nages | ||||
| ) |
| int prof_var_cnt LOCAL_CALCS ifstream fin1 | ( | "runnumber.ss2"` | , | |
| ios::nocreate | ||||
| ) |
TAG_0003 Read runnumber.ss2.
| ofstream fin2 | ( | "runnumber.ss2" | , | |
| ios::out | ||||
| ) |
| LOCAL_CALCS ifstream fin4 | ( | "extrainput.SS2" | , | |
| ios::nocreate | ||||
| ) |
| for | ( | ) | = 1 |
| vector func_conv | ( | 1 | , | |
| 12 | ||||
| ) |
| vector func_eval | ( | 1 | , | |
| 12 | ||||
| ) |
| dvar_vector g_base | ( | 2 | , | |
| 5 | ||||
| ) |
| get_growth2 | ( | ) |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix Hrate | ( | 1 | , | |
| Nfleet | , | |||
| styr- | nseas, | |||
| TimeMax_Fore_std+ | 1 | |||
| ) |
| if | ( | F_Method | = =2 |
) |
| if | ( | do_once | = =1 |
) |
| if | ( | do_once | = =1 || MG_active(2), |
|
| 0|| | save_for_report = =1 | |||
| ) |
| if | ( | do_migration | , | |
| 0 | ||||
| ) |
=============================== TAG_080 ======================================
| if | ( | do_once | = =1 || MG_active(1), |
|
| 0 | ||||
| ) |
| if | ( | y | = =styr |
) |
| if | ( | y >= | endyr | ) |
| if | ( | Rebuild_Yinit | , | |
| endyr+ | N_forecast_yrs_std | |||
| ) |
| if | ( | Rebuild_Ydecl | , | |
| endyr+ | N_forecast_yrs_std | |||
| ) |
| if | ( | Rebuild_Yinit | = =-1 |
) |
| if | ( | Rebuild_Ydecl | = =-1 |
) |
| if | ( | N_envvar >= | 1 | ) |
| if | ( | nobsa | , | |
| 0 | ||||
| ) |
| if | ( | F_ballpark_yr >= | styr | ) |
| if | ( | F_ballpark_yr | , | |
| endyr | ||||
| ) |
| else if | ( | Do_MSY | , | |
| 0 | ||||
| ) |
| if | ( | Spb_sdrep_maxyr< 0||Spb_sdrep_maxyr > | endyr | ) |
| if | ( | ) |
| END_CALCS INITIALIZATION_SECTION PARAMETER_SECTION LOCAL_CALCS if | ( | readparfile >= | 1 | ) |
*****************************************************// TAG_034
| if | ( | fin4 | ) |
| if | ( | Do_Forecast | = =0 |
) |
| if | ( | fim! | = 999 |
) |
| if | ( | selparm_dev_PH | , | |
| max_phase | ||||
| ) |
| if | ( | selparm_dev_PH | , | |
| Turn_off_phase | ||||
| ) |
| if | ( | sumseas >=11. | 9 | ) |
| if | ( | fin1 | ) |
| END_CALCS init_int Smry_Age init_int Do_Forecast init_int Do_MSY init_int Do_Rebuilder init_int Rebuild_Ydecl init_int Rebuild_Yinit if | ( | Do_Rebuilder | , | |
| 0 &&Do_Forecast<= | 0 | |||
| ) |
| if | ( | Turn_off_phase | = =0 |
) |
| number ave_age init_bounded_number_vector init_F | ( | 1 | , | |
| Nfleet | , | |||
| init_F_LO | , | |||
| init_F_HI | , | |||
| init_F_PH | ||||
| ) |
| tot_catch_ret initialize | ( | ) |
========================================= TAG_090 ============================
| matrix nlength matrix nlength matrix mat_len_w | ( | styr | , | |
| endyr | , | |||
| 1 | , | |||
| nlength | ||||
| ) |
| dvar_vector mgp | ( | 0 | , | |
| 50 | ||||
| ) |
| END_CALCS init_bounded_number MGparm_PH init_bounded_matrix MGparm_dev | ( | 1 | , | |
| N_MGparm_dev | , | |||
| MGparm_dev_minyr | , | |||
| MGparm_dev_maxyr | , | |||
| - | 10, | |||
| 10 | , | |||
| MGparm_dev_PH | ||||
| ) |
| darray N_GP* gender vector natM2 | ( | 1 | , | |
| N_GP * | gender | |||
| ) |
| matrix endyr N_forecast_yrs_std vector endyr N_forecast_yrs_std matrix Nmid | ( | 1 | , | |
| gmorph | , | |||
| 0 | , | |||
| nages | ||||
| ) |
| PRELIMINARY_CALCS_SECTION random_number_generator radm | ( | long(time(&finish)) | ) |
************************************************* TAG_040
| matrix Spb_sdrep_maxyr sdreport_vector recr_std | ( | Spb_sdrep_minyr | , | |
| Spb_sdrep_maxyr | ||||
| ) |
| CLASS ofstream report2 | ( | "SS2-report.txt" | , | |
| ios::app | ||||
| ) |
| number spb_vir_LH vector S1 | ( | 0 | , | |
| 1 | ||||
| ) |
| matrix nlength matrix nlength matrix nages darray nages darray nages darray Save_Ave_Size | ( | styr-2 * | nseas, | |
| TimeMax_Fore+ | 1, | |||
| 0 | , | |||
| 1 | , | |||
| 1 | , | |||
| gmorph | , | |||
| 0 | , | |||
| nages | ||||
| ) |
| matrix save_G_parm | ( | 1 | , | |
| k | , | |||
| 1 | , | |||
| 16 | ||||
| ) |
| dvar_vector sp | ( | 1 | , | |
| 199 | ||||
| ) |
| init_bounded_number_vector SR_parm | ( | 1 | , | |
| 6 | , | |||
| SRvec_LO | , | |||
| SRvec_HI | , | |||
| SRvec_PH | ||||
| ) |
| darray N_GP* gender vector N_GP nages darray surv2 | ( | styr | , | |
| endyr | , | |||
| 1 | , | |||
| nseas | , | |||
| 1 | , | |||
| N_GP * | gender, | |||
| 0 | , | |||
| nages | ||||
| ) |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix styr TimeMax matrix tot_catch_dead | ( | 1 | , | |
| Nfleet | , | |||
| styr- | nseas, | |||
| TimeMax | ||||
| ) |
| darray Wt_Age | ( | styr | , | |
| TimeMax_Fore+ | 1, | |||
| 1 | , | |||
| gmorph | , | |||
| 0 | , | |||
| nages | ||||
| ) |
| matrix nlength matrix wt_len2 | ( | styr | , | |
| endyr | , | |||
| 1 | , | |||
| nlength2 | ||||
| ) |
| darray Z_rate | ( | styr-2 * | nseas, | |
| TimeMax_Fore_std+ | 1, | |||
| 1 | , | |||
| pop | , | |||
| 1 | , | |||
| gmorph | , | |||
| 0 | , | |||
| nages | ||||
| ) |
| dvariable asc |
| number Ave_Size_w |
| int bio_yr |
| Cohort_Growth = 1.0 |
| convergence_criteria = func_conv |
| do_once = 1 |
| done_run = 0 |
| int done_run |
| dvariable dsc |
| number dummy_datum int dummy_phase dummy_datum = 1. |
TAG_0002 Set up a dummy datum for use when max phase = 0.
| matrix nlength matrix nlength matrix endyr |
| matrix nlength matrix endyr |
| matrix endyr |
| init_number F_ballpark init_int F_ballpark_yr init_int F_Method |
| dvariable final |
| init_number final_conv |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix styr TimeMax matrix styr TimeMax matrix nages number fish_bio |
| number fish_bio_e |
| number fish_bio_r |
| number fish_num |
| number fish_num_r |
| init_int fishery_on_off |
| func_conv = "{10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1;}" |
| func_eval = "{100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100;}" |
| matrix gender |
| darray gmorph |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix styr TimeMax matrix styr TimeMax matrix gmorph |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray gmorph |
| matrix gmorph |
| dvariable grow |
| dvariable growhalf |
| number harvest_rate |
| Ip = 0 |
| FUNCTION get_selectivity int Ip |
TAG_054.
| FUNCTION get_growth2 int Ip |
TAG_052.
| int Ip_env |
| j = selparm_PH.indexmax() |
| int z int L1 int L2 int A2 int a1 int f int g int gg int a int b int p int p2 int i int y int s int s2 int t int j int j1 |
*********COUNTERS*************************// TAG_030
| int j2 |
| int k int s_off int Fishon number lambda_catch |
| dvariable lastsel |
| dvariable lastSelPoint |
| dvariable Lmax2 |
| cout<< styr<<" "<<endyr << " "<<nseas<<" "<<seasdur<<" "<<spawn_seas<<endl; !!cout<<" Nfleet Nsurvey "<<Nfleet<<" "<<Nsurvey<<endl; imatrix pfleetname(1,Ntypes,1,2); init_adstring fleetname; LOCAL_CALCS for(f=1;f<=Ntypes;f++) {pfleetname(f,1)=1; pfleetname(f,2)=1;} f=1; for(i=1;i<=strlen(fleetname);i++) if(adstring(fleetname(i))==adstring("%")) {pfleetname(f,2)=i-1; f+=1; pfleetname(f,1)=i+1;} pfleetname(Ntypes,2)=strlen(fleetname); for(f=1;f<=Ntypes;f++) cout <<f<<" "<<fleetname(pfleetname(f,1),pfleetname(f,2))<<endl; END_CALCS init_vector surveytime(1,Ntypes) vector catchunits(1,Nfleet) init_int gender init_int nages ivector age_vector(0,nages) vector r_ages(0,nages) ivector years(styr,endyr) LOCAL_CALCS for (a=0;a<=nages;a++) age_vector(a) = a; for (a=0;a<=nages;a++) r_ages(a) = double(a); for (y=styr;y<=endyr;y++) years(y)=y; END_CALCS !!cout<<"Nages "<<nages<<endl; init_vector obs_equ_catch(1,Nfleet) init_matrix catch_bioT(styr,TimeMax,1,Nfleet) matrix catch_ret_obs(1,Nfleet,styr-nseas,TimeMax+nseas) !! k=Nfleet*(TimeMax-styr+1); ivector have_catch(1,k); LOCAL_CALCS catch_ret_obs.initialize(); t=styr-nseas-1; for(f=1;f<=Nfleet;f++) {catch_ret_obs(f,t+1) = obs_equ_catch(f);} for(t=styr;t<=TimeMax;t++) for(f=1;f<=Nfleet;f++) {catch_ret_obs(f,t) = catch_bioT(t,f);} if(fishery_on_off==0) catch_ret_obs *=0.000001; cout<<"done with catchbio "<<endl<<column(catch_ret_obs,styr)<<endl<<column(catch_ret_obs,TimeMax)<<endl; END_CALCS number catch_ballpark matrix yr_cr2(1,Ntypes,styr,TimeMax) matrix yr_disc2(1,Ntypes,styr,TimeMax) 3darray yr_mnwt2(1,Ntypes,styr,TimeMax,0,2) 3darray yr_l2(1,2,1,Ntypes,styr,TimeMax) 3darray yr_a2(1,2,1,Ntypes,styr,TimeMax) 3darray yr_ms2(1,2,1,Ntypes,styr,TimeMax) matrix have_data(1,Ntypes,styr,TimeMax) !! have_data.initialize(); init_int nobs !!cout<<" N survey obs: "<<nobs<<endl; init_matrix indexdata(1,nobs,1,5) ivector nyr_cr(1,Ntypes) LOCAL_CALCS nyr_cr=0; if(nobs>0) for(i=1;i<=nobs;i++) { f=indexdata(i,3); nyr_cr(f)+=1; } END_CALCS imatrix yr_cr(1,Ntypes,1,nyr_cr) imatrix yr_cr_y(1,Ntypes,1,nyr_cr) matrix obs_cr(1,Ntypes,1,nyr_cr) matrix Ln_obs_cr(1,Ntypes,1,nyr_cr) matrix cv_cr(1,Ntypes,1,nyr_cr) matrix vul_bio(1,Ntypes,1,nyr_cr); ivector N_supyr_cr(1,Ntypes) imatrix supyr_cr1(1,Ntypes,1,20) imatrix supyr_cr2(1,Ntypes,1,20) LOCAL_CALCS N_supyr_cr=0; nyr_cr=0; if(nobs>0) for(i=1;i<=nobs;i++) { y=indexdata(i,1); s=indexdata(i,2); t=styr+(y-styr)*nseas+s-1; f=indexdata(i,3); nyr_cr(f)+=1; j=nyr_cr(f); yr_cr(f,j)=t; yr_cr_y(f,j)=y; obs_cr(f,j)=indexdata(i,4); if(obs_cr(f,j)>0) Ln_obs_cr(f,j)=log(obs_cr(f,j)); cv_cr(f,j)=indexdata(i,5); if(cv_cr(f,j)==-9999) {N_supyr_cr(f)+=1; supyr_cr1(f,N_supyr_cr(f))=j;} if(cv_cr(f,j)==-9998) {supyr_cr2(f,N_supyr_cr(f))=j;} if(y>retro_yr) {obs_cr(f,j) = -fabs(obs_cr(f,j)); Ln_obs_cr(f,j)=0.;} } cout<<" successful read of index data; N= "<<nobs << endl; END_CALCS init_int disc_type init_int nobs_disc init_matrix discdata(1,nobs_disc,1,5) ivector nyr_disc(1,Ntypes) LOCAL_CALCS nyr_disc=0; if(nobs_disc>0) { for(i=1;i<=nobs_disc;i++) { f=discdata(i,3); nyr_disc(f)+=1; } } END_CALCS imatrix yr_disc(1,Ntypes,1,nyr_disc) imatrix yr_disc_y(1,Ntypes,1,nyr_disc) matrix obs_disc(1,Ntypes,1,nyr_disc) matrix cv_disc(1,Ntypes,1,nyr_disc) matrix sd_disc(1,Ntypes,1,nyr_disc) ivector N_supyr_disc(1,Ntypes) imatrix supyr_disc1(1,Ntypes,1,20) imatrix supyr_disc2(1,Ntypes,1,20) LOCAL_CALCS N_supyr_disc=0; if(nobs_disc>0) { nyr_disc=0; for(i=1;i<=nobs_disc;i++) { y=discdata(i,1); s=discdata(i,2); t=styr+(y-styr)*nseas+s-1; f=discdata(i,3); nyr_disc(f)+=1; j=nyr_disc(f); yr_disc(f,j)=t; yr_disc_y(f,j)=y; obs_disc(f,j)=discdata(i,4); cv_disc(f,j)=discdata(i,5); if(cv_disc(f,j)==-9999) {N_supyr_disc(f)+=1; supyr_disc1(f,N_supyr_disc(f))=j;} if(cv_disc(f,j)==-9998) {supyr_disc2(f,N_supyr_disc(f))=j;} if(y>retro_yr) obs_disc(f,j) = -fabs(obs_disc(f,j)); } } cout<<" successful read of discard data, N= "<< nobs_disc << endl; END_CALCS init_int nobs_mnwt init_matrix mnwtdata(1,nobs_mnwt,1,6) LOCAL_CALCS yr_mnwt2=0; if(nobs_mnwt>0) for(i=1;i<=nobs_mnwt;i++) { y=mnwtdata(i,1); s=mnwtdata(i,2); t=styr+(y-styr)*nseas+s-1; f=mnwtdata(i,3); z=mnwtdata(i,4); yr_mnwt2(f,t,z)=i; have_data(f,t)=1; if(y>retro_yr) mnwtdata(i,5) = -fabs(mnwtdata(i,5)); } cout<<" successful read of mean-body-wt data, N= "<< nobs_mnwt <<endl; END_CALCS init_number min_tail init_number min_comp init_int nlength !!cout<< nlength<<endl; int nlength1 int nlength2 !! nlength1=nlength+1; !! nlength2=gender*nlength; init_vector len_bins(1,nlength) vector len_bins2(1,nlength2) vector binwidth(1,nlength) vector len_bins_m(1,nlength) vector len_bins_m2(1,nlength2) vector len_bins_sq(1,nlength2) vector male_offset(1,nlength2) number minL number maxL number minL2 LOCAL_CALCS male_offset.initialize(); for (z=1;z<=nlength;z++) { len_bins2(z) = len_bins(z); if(z<nlength) {len_bins_m(z) = (len_bins(z)+len_bins(z+1))*0.5; binwidth(z)=len_bins(z+1)-len_bins(z);} else {len_bins_m(z) = len_bins(z)+(len_bins(z)-len_bins(z-1))*0.5; binwidth(z)=binwidth(z-1);} len_bins_m2(z) = len_bins_m(z); len_bins_sq(z) = len_bins_m2(z)*len_bins_m2(z); } if(gender==2) for (z=1;z<=nlength;z++) { male_offset(z+nlength)=1.; len_bins2(z+nlength)=len_bins2(z); len_bins_m2(z+nlength)=len_bins_m2(z); len_bins_sq(z+nlength)=len_bins_sq(z); } minL=len_bins2(1); maxL=len_bins_m(nlength); minL2=len_bins_m(1); END_CALCS init_int nobsl init_matrix lendata(1,nobsl,1,6+nlength2) ivector nyr_l(1,Ntypes) number temp; LOCAL_CALCS cout << " reading len comp, N= " << nobsl << endl; nyr_l=0; if(nobsl>0) for(i=1;i<=nobsl;i++) { f=lendata(i,3); nyr_l(f)+=1; } END_CALCS imatrix yr_l(1,Ntypes,1,nyr_l) imatrix yr_l_y(1,Ntypes,1,nyr_l) 3darray obs_l(1,Ntypes,1,nyr_l,1,nlength2) matrix nsamp_l(1,Ntypes,1,nyr_l) matrix nsamp_l_read(1,Ntypes,1,nyr_l) imatrix gen_l(1,Ntypes,1,nyr_l) imatrix mkt_l(1,Ntypes,1,nyr_l) 3darray header_l(1,Ntypes,1,nyr_l,1,3) 3darray tails_l(1,Ntypes,1,nyr_l,1,4) ivector tails_w(1,4) ivector N_supyr_l(1,Ntypes) imatrix supyr_l1(1,Ntypes,1,20) imatrix supyr_l2(1,Ntypes,1,20) int floop int tloop LOCAL_CALCS N_supyr_l=0; nyr_l=0; if(nobsl>0) { for(floop=1;floop<=Ntypes;floop++) for(tloop=styr;tloop<=(styr+(endyr+1-styr)*nseas);tloop++) for(i=1;i<=nobsl;i++) { y=lendata(i,1); s=lendata(i,2); t=styr+(y-styr)*nseas+s-1; f=lendata(i,3); if(f==floop && t==tloop) { nyr_l(f)+=1; j=nyr_l(f); header_l(f,j,1) = y; header_l(f,j,2) = s; header_l(f,j,3) = f; yr_l_y(f,j)=y; yr_l(f,j)=t; gen_l(f,j)=lendata(i,4); mkt_l(f,j)=lendata(i,5); nsamp_l_read(f,j)=lendata(i,6); if(y>retro_yr) nsamp_l_read(f,j) = -fabs(nsamp_l_read(f,j)); nsamp_l(f,j)=nsamp_l_read(f,j); for(z=1;z<=nlength2;z++) {obs_l(f,j,z)=lendata(i,6+z);} if(sum(obs_l(f,j))<=0.0) {cout<<" zero fish in size comp "<<f<<" "<<y<<endl; exit(1);} if(gen_l(f,j)==2) obs_l(f,j)(1,nlength) = 0.; if(gen_l(f,j)<=1 && gender==2) obs_l(f,j)(nlength1,nlength2) = 0.; obs_l(f,j) /= sum(obs_l(f,j)); tails_l(f,j,1)=1; tails_l(f,j,2)=nlength; tails_l(f,j,3)=nlength1; tails_l(f,j,4)=nlength2; if(gen_l(f,j)!=2) { k=0; temp=sum(obs_l(f,j)(1,nlength)); for(z=1;z<=nlength;z++) if(obs_l(f,j,z)>0.) {k++;} if(temp>0.0 && k>1) { k=0; for(z=1;z<=nlength-1;z++) { if(obs_l(f,j,z)<=min_tail && k==0) { obs_l(f,j,z+1)+=obs_l(f,j,z); obs_l(f,j,z)=0.00; tails_l(f,j,1)=z+1; } else {k=1;} } k=0; for(z=nlength;z>=tails_l(f,j,1);z--) { if(obs_l(f,j,z)<=min_tail && k==0) { obs_l(f,j,z-1)+=obs_l(f,j,z); obs_l(f,j,z)=0.00; tails_l(f,j,2)=z-1; } else {k=1;} } } obs_l(f,j)(tails_l(f,j,1),tails_l(f,j,2)) += min_comp; } if(gen_l(f,j)>=2) { k=0; temp=sum(obs_l(f,j)(nlength1,nlength2)); for(z=nlength1;z<=nlength2;z++) if(obs_l(f,j,z)>0.) {k++;} if(temp>0.0 && k>1) { k=0; for(z=nlength1;z<=nlength2-1;z++) { if(obs_l(f,j,z)<=min_tail && k==0) { obs_l(f,j,z+1)+=obs_l(f,j,z); obs_l(f,j,z)=0.00; tails_l(f,j,3)=z+1; } else {k=1;} } k=0; for(z=nlength2;z>=tails_l(f,j,3);z--) { if(obs_l(f,j,z)<=min_tail && k==0) { obs_l(f,j,z-1)+=obs_l(f,j,z); obs_l(f,j,z)=0.00; tails_l(f,j,4)=z-1; } else {k=1;} } } obs_l(f,j)(tails_l(f,j,3),tails_l(f,j,4)) += min_comp; } obs_l(f,j) /= sum(obs_l(f,j)); if(nsamp_l(f,j)==-9999) {N_supyr_l(f)+=1; supyr_l1(f,N_supyr_l(f))=j;} if(nsamp_l(f,j)==-9998) {supyr_l2(f,N_supyr_l(f))=j;} } } } cout<<" successful read of length data"<<endl; END_CALCS init_int n_abins int n_abins1; int n_abins2; LOCAL_CALCS n_abins1=n_abins+1; n_abins2=gender*n_abins; cout << " N agebins = " << n_abins << endl; END_CALCS init_vector age_bins1(1,n_abins) !!if(n_abins>0) cout << " agebins: " << age_bins1 << endl; init_int N_ageerr !!cout << " N ageerr vectors = " << N_ageerr << endl; init_3darray age_err(1,N_ageerr,1,2,0,nages) !!cout << " ageerr " << age_err << endl; 3darray age_age(1,N_ageerr,1,n_abins2,0,gender*nages+gender-1) vector age_bins(1,n_abins2) init_int nobsa !!cout << " reading age comp data "<<nobsa<<endl; !!if(nobsa>0 && N_ageerr==0) {cout<<" must define ageerror vectors because age data exist"<<endl; exit(1);} init_matrix agedata(1,nobsa,1,9+n_abins2) ivector nyr_a(1,Ntypes) number age LOCAL_CALCS for (b=1;b<=n_abins;b++) { age_bins(b) = age_bins1(b); if(gender==2) age_bins(b+n_abins)=age_bins1(b); } nyr_a=0; if(nobsa>0) cout << " age data years "<<column(agedata,1)<<endl; for(i=1;i<=nobsa;i++) { f=agedata(i,3); nyr_a(f)+=1; } for(f=1;f<=Ntypes;f++) {if(nyr_a(f)==0) nyr_a(f)=1;} END_CALCS imatrix yr_a(1,Ntypes,1,nyr_a) imatrix yr_a_y(1,Ntypes,1,nyr_a) 3darray obs_a(1,Ntypes,1,nyr_a,1,gender*n_abins) matrix nsamp_a(1,Ntypes,1,nyr_a) matrix nsamp_a_read(1,Ntypes,1,nyr_a) imatrix ageerr_type_a(1,Ntypes,1,nyr_a) imatrix gen_a(1,Ntypes,1,nyr_a) imatrix mkt_a(1,Ntypes,1,nyr_a) 3darray Lbin_filter(1,Ntypes,1,nyr_a,1,nlength2) imatrix use_Lbin_filter(1,Ntypes,1,nyr_a) imatrix Lbin_lo(1,Ntypes,1,nyr_a) imatrix Lbin_hi(1,Ntypes,1,nyr_a) 3darray tails_a(1,Ntypes,1,nyr_a,1,4) 3darray header_a(1,Ntypes,1,nyr_a,1,9) ivector N_supyr_a(1,Ntypes) imatrix supyr_a1(1,Ntypes,1,20) imatrix supyr_a2(1,Ntypes,1,20) LOCAL_CALCS Lbin_filter=1.; use_Lbin_filter.initialize(); cout<<nyr_l<<endl<<nyr_a<<endl; N_supyr_a=0; nyr_a=0; if(nobsa>0) { for(floop=1;floop<=Ntypes;floop++) for(tloop=styr;tloop<=(styr+(endyr+1-styr)*nseas);tloop++) for(i=1;i<=nobsa;i++) { y=agedata(i,1); s=agedata(i,2); t=styr+(y-styr)*nseas+s-1; f=agedata(i,3); if(f==floop && t==tloop) { nyr_a(f)+=1; j=nyr_a(f); header_a(f,j)=agedata(i)(1,9); yr_a(f,j)=t; yr_a_y(f,j)=y; gen_a(f,j)=agedata(i,4); mkt_a(f,j)=agedata(i,5); ageerr_type_a(f,j)=agedata(i,6); Lbin_lo(f,j)=agedata(i,7); if(Lbin_lo(f,j)<=0) Lbin_lo(f,j)=1; Lbin_hi(f,j)=agedata(i,8); if(Lbin_hi(f,j)<=0 || Lbin_hi(f,j)>nlength) Lbin_hi(f,j)=nlength; nsamp_a_read(f,j)=agedata(i,9); if(y>retro_yr) nsamp_a_read(f,j) = -fabs(nsamp_a_read(f,j)); nsamp_a(f,j)=nsamp_a_read(f,j); if(Lbin_lo(f,j)>1 || Lbin_hi(f,j)<nlength) { use_Lbin_filter(f,j)=1; Lbin_filter(f,j)=0; Lbin_filter(f,j)(Lbin_lo(f,j),Lbin_hi(f,j)) = 1; if(gender==2) { k=int(Lbin_lo(f,j))+nlength; z=int(Lbin_hi(f,j))+nlength; Lbin_filter(f,j)(k,z) = 1.; } } for(b=1;b<=gender*n_abins;b++) {obs_a(f,j,b)=agedata(i,9+b);} if(sum(obs_a(f,j))<=0.0) {cout<<" zero fish in age comp "<<f<<" "<<y<<endl; exit(1);} if(gen_a(f,j)==2) obs_a(f,j)(1,n_abins) = 0.; if(gen_a(f,j)<=1&&gender==2) obs_a(f,j)(n_abins1,gender*n_abins) = 0.; obs_a(f,j) /= sum(obs_a(f,j)); tails_a(f,j,1)=1; tails_a(f,j,2)=n_abins; tails_a(f,j,3)=1+(gender-1)*n_abins; tails_a(f,j,4)=gender*n_abins; if(gen_a(f,j)!=2) { k=0; temp=sum(obs_a(f,j)(1,n_abins)); for(z=1;z<=n_abins;z++) if(obs_a(f,j,z)>0.) {k++;} if(temp>0.0 && k>1) { k=0; for(z=1;z<=n_abins-1;z++) { if(obs_a(f,j,z)<=min_tail && k==0) { obs_a(f,j,z+1)+=obs_a(f,j,z); obs_a(f,j,z)=0.00; tails_a(f,j,1)=z+1; } else {k=1;} } k=0; for(z=n_abins;z>=tails_a(f,j,1);z--) { if(obs_a(f,j,z)<=min_tail && k==0) { obs_a(f,j,z-1)+=obs_a(f,j,z); obs_a(f,j,z)=0.00; tails_a(f,j,2)=z-1; } else {k=1;} } } obs_a(f,j)(tails_a(f,j,1),tails_a(f,j,2)) += min_comp; } if(gen_a(f,j)>=2) { k=0; temp=sum(obs_a(f,j)(n_abins1,n_abins2)); for(z=n_abins1;z<=n_abins2;z++) if(obs_a(f,j,z)>0.) {k++;} if(temp>0.0 && k>1) { k=0; for(z=n_abins1;z<=n_abins2-1;z++) { if(obs_a(f,j,z)<=min_tail && k==0) { obs_a(f,j,z+1)+=obs_a(f,j,z); obs_a(f,j,z)=0.00; tails_a(f,j,3)=z+1; } else {k=1;} } k=0; for(z=n_abins2;z>=tails_a(f,j,3);z--) { if(obs_a(f,j,z)<=min_tail && k==0) { obs_a(f,j,z-1)+=obs_a(f,j,z); obs_a(f,j,z)=0.00; tails_a(f,j,4)=z-1; } else {k=1;} } } obs_a(f,j)(tails_a(f,j,3),tails_a(f,j,4)) += min_comp; } if(sum(obs_a(f,j))>0.) obs_a(f,j) /= sum(obs_a(f,j)); if(nsamp_a(f,j)==-9999) {N_supyr_a(f)+=1; supyr_a1(f,N_supyr_a(f))=j;} if(nsamp_a(f,j)==-9998) {supyr_a2(f,N_supyr_a(f))=j;} } } } cout<<" successful read of age data "<<endl; END_CALCS init_int nobs_ms init_matrix sizeagedata(1,nobs_ms,1,7+2*n_abins2) ivector nyr_ms(1,Ntypes) LOCAL_CALCS nyr_ms=0; if(nobs_ms>0) for(i=1;i<=nobs_ms;i++) { f=sizeagedata(i,3); nyr_ms(f)+=1; } END_CALCS imatrix yr_ms(1,Ntypes,1,nyr_ms) imatrix yr_ms_y(1,Ntypes,1,nyr_ms) 3darray obs_ms(1,Ntypes,1,nyr_ms,1,n_abins2) 3darray obs_ms_n(1,Ntypes,1,nyr_ms,1,n_abins2) 3darray obs_ms_n_read(1,Ntypes,1,nyr_ms,1,n_abins2) imatrix ageerr_type_ms(1,Ntypes,1,nyr_ms) imatrix gen_ms(1,Ntypes,1,nyr_ms) imatrix mkt_ms(1,Ntypes,1,nyr_ms) imatrix use_ms(1,Ntypes,1,nyr_ms) 3darray header_ms(1,Ntypes,1,nyr_ms,1,7) ivector N_supyr_ms(1,Ntypes) imatrix supyr_ms1(1,Ntypes,1,20) imatrix supyr_ms2(1,Ntypes,1,20) LOCAL_CALCS N_supyr_ms=0; nyr_ms=0; if(nobs_ms>0) { for(floop=1;floop<=Ntypes;floop++) for(tloop=styr;tloop<=(styr+(endyr+1-styr)*nseas);tloop++) for(i=1;i<=nobs_ms;i++) { y=sizeagedata(i,1); s=sizeagedata(i,2); t=styr+(y-styr)*nseas+s-1; f=sizeagedata(i,3); if(f==floop && t==tloop) { nyr_ms(f)+=1; header_ms(f,nyr_ms(f))=sizeagedata(i)(1,7); yr_ms(f,nyr_ms(f))=t; yr_ms_y(f,nyr_ms(f))=y; gen_ms(f,nyr_ms(f))=sizeagedata(i,4); mkt_ms(f,nyr_ms(f))=sizeagedata(i,5); ageerr_type_ms(f,nyr_ms(f))=sizeagedata(i,6); use_ms(f,nyr_ms(f))=sizeagedata(i,7); if(y>retro_yr) use_ms(f,nyr_ms(f)) = -fabs(use_ms(f,nyr_ms(f))); for(b=1;b<=n_abins2;b++) {obs_ms(f,nyr_ms(f),b)=sizeagedata(i,7+b);} for(b=1;b<=n_abins2;b++) {obs_ms_n(f,nyr_ms(f),b)=sizeagedata(i,7+b+n_abins2);obs_ms_n_read(f,nyr_ms(f),b)=sizeagedata(i,7+b+n_abins2);} if(sizeagedata(i,7)==-9999) {N_supyr_ms(f)+=1; supyr_ms1(f,N_supyr_ms(f))=nyr_ms(f);} if(sizeagedata(i,7)==-9998) {supyr_ms2(f,N_supyr_ms(f))=nyr_ms(f);} } } } cout<<" successful read of size@age data; N = "<<nobs_ms<<endl; END_CALCS init_int N_envvar init_int N_envdata !! cout << " N_env_var_and_N_env_data:"<<N_envvar << " " << N_envdata << endl; matrix env_data_RD(styr-1,endyr+100,1,N_envvar) init_matrix env_temp(1,N_envdata,1,3) LOCAL_CALCS if(N_envdata>0) { env_data_RD=0.; for (i=1;i<=N_envdata;i++) if(env_temp(i,1)>=(styr-1)) {env_data_RD(env_temp(i,1), env_temp(i,2) ) = env_temp(i,3);} cout<<" successful read of environmental data "<<endl; } END_CALCS init_int fid !!cout<<"If you see 999, we got to the end of the data imput sucessfully! "<<fid<<endl; !! if(fid!=999) abort(); !! ad_comm::change_datafile_name(ctlfilename); init_int N_GP init_int N_GP2 int gmorph int gp int gp2 int birthseas; !! gmorph = N_GP*N_GP2*gender*nseas; ivector sx(1,gmorph) ivector GP(1,gmorph) ivector Bseas(1,gmorph) ivector GP2(1,gmorph) ivector use_morph(1,gmorph) imatrix recr_dist_pattern_2(1,N_GP,1,nseas) ivector shadow(1,N_GP2) vector azero_seas(1,nseas); vector azero_G(1,gmorph); LOCAL_CALCS azero_seas(1)=0.; if(nseas>1) for(s=2;s<=nseas;s++) {azero_seas(s)=sum(seasdur(1,s-1));} if(N_GP2==1) {shadow(1)=0;} else if (N_GP2==3) {shadow.fill_seqadd(-1,1);} else if (N_GP2==5) {shadow.fill_seqadd(-2,1);} else {cout<<" illegal N submorphs "<<N_GP2<<endl; exit(1);} END_CALCS init_int pop init_ivector fleet_area(1,Ntypes) init_3darray recr_dist_pattern(1,N_GP,1,nseas,1,pop); init_int recr_dist_inx; LOCAL_CALCS g=0; recr_dist_pattern_2.initialize(); use_morph.initialize(); for(k=1;k<=gender;k++) for(gp=1;gp<=N_GP;gp++) for(birthseas=1;birthseas<=nseas;birthseas++) for(gp2=1;gp2<=N_GP2;gp2++) { g+=1; Bseas(g)=birthseas; sx(g)=k; GP(g)=gp+(k-1)*N_GP; GP2(g)=gp2; azero_G(g)=azero_seas(birthseas); for(p=1;p<=pop;p++) { if(recr_dist_pattern(gp,birthseas,p)>0.) {recr_dist_pattern_2(gp,birthseas)=1; use_morph(g)=1;} } } cout<<" morph assignments "<<endl<<sx<<endl<<GP<<endl<<azero_G<<endl<<GP2<<endl; END_CALCS init_int do_migration; init_4darray move_pattern(1,nseas,1,pop,1,pop,1,3) int N_move_parms LOCAL_CALCS N_move_parms=0; for(s=1;s<=nseas;s++) for(p=1;p<=pop;p++) for(p2=1;p2<=pop;p2++) { if(move_pattern(s,p,p2,1)>0) N_move_parms+=1; } END_CALCS int k1 int k2 int k3 init_int N_Block_Designs init_ivector Nblk(1,N_Block_Designs) LOCAL_CALCS k1=N_Block_Designs; if(k1==0) k1=1; END_CALCS ivector Nblk2(1,k1) LOCAL_CALCS Nblk2=2; if(N_Block_Designs>0) Nblk2=Nblk + Nblk; END_CALCS init_imatrix Block_Design(1,N_Block_Designs,1,Nblk2) !!if(N_Block_Designs>0) cout<<" read block info "<<endl<<Block_Design<<endl; else cout<<" no blocks"<<endl; int N_MGparm init_number fracfemale; init_number sd_ratio; init_vector submorphdist(1,N_GP2) init_number natM_amin; init_number natM_amax; init_number AFIX; init_number AFIX2; init_number SD_add_to_LAA init_int CV_depvar int CV_depvar_a; int CV_depvar_b; LOCAL_CALCS if(CV_depvar==0 || CV_depvar==2) {CV_depvar_a=0;} else {CV_depvar_a=1;} if(CV_depvar<=1) {CV_depvar_b=0;} else {CV_depvar_b=1;} END_CALCS init_int Maturity_Option init_int First_Mature_Age init_int MGparm_def init_int MG_adjust_method init_number MGparm_dev_PH ivector time_vary_MG(0,5) ivector MG_active(0,5) int do_once; int doit; vector femfrac(1,N_GP*gender) number sd_withinmorph number sd_betweenmorph int MGP_CGD int CGD; LOCAL_CALCS femfrac(1,N_GP)=fracfemale; femfrac(N_GP+1,N_GP+N_GP)=1-fracfemale; if(submorphdist(1)<0.) { if(N_GP2==1) {submorphdist(1)=1.;} else if (N_GP2==3) {submorphdist.fill("{0.15,0.70,0.15}");} else if (N_GP2==5) {submorphdist.fill("{0.031, 0.237, 0.464, 0.237, 0.031}");} } submorphdist/=sum(submorphdist); cout<<submorphdist<<endl; if(N_GP2>1) { sd_withinmorph = sd_ratio * sqrt(1. / (1. + sd_ratio*sd_ratio)); sd_betweenmorph = sqrt(1. / (1. + sd_ratio*sd_ratio)); } else {sd_withinmorph=1; sd_betweenmorph=0.000001;} cout<<sd_ratio<<" "<<sd_withinmorph<<" "<<sd_betweenmorph<<endl; N_MGparm=7*N_GP*gender; N_MGparm+= 2*gender+2+2; N_MGparm+=N_GP+pop+nseas; if(recr_dist_inx==1) N_MGparm+=N_GP*pop*nseas; N_MGparm+=1; MGP_CGD=N_MGparm; if(do_migration>0) N_MGparm+=N_move_parms*2; END_CALCS init_matrix MGparm_1(1,N_MGparm,1,14) !!cout<<" Mort and Growth parameter setup"<<endl<<MGparm_1<<endl; LOCAL_CALCS if(Maturity_Option==3) {k1=N_GP; First_Mature_Age=0;} else {k1=0;} END_CALCS init_matrix Age_Maturity(1,k1,0,nages) LOCAL_CALCS if(natM_amin==-999) {k1=N_GP*gender;} else {k1=0;} END_CALCS init_matrix Age_NatMort(1,k1,0,nages) int N_MGparm_env ivector MGparm_env(1,N_MGparm) int N_MGparm_dev init_int customMGenvsetup !!cout<<" custom MG-env setup "<<customMGenvsetup<<endl; ivector mgp_type(1,N_MGparm) LOCAL_CALCS time_vary_MG=endyr+1000; CGD=0; k=1; for(f=1;f<=N_GP*gender;f++) {mgp_type(k)=1; mgp_type(k+1)=1; k+=2; mgp_type(k,k+4)=2;k=k+5;} for(f=1;f<=gender;f++) {mgp_type(k,k+1)=3;k=k+2;} mgp_type(k,k+3)=3; k=k+4; mgp_type(k,MGP_CGD-1)=4; mgp_type(MGP_CGD)=2; if(do_migration>0) mgp_type(MGP_CGD+1,N_MGparm)=5; cout<<mgp_type<<endl; MGparm_env=0; N_MGparm_env=0; N_MGparm_dev=0; for (f=1;f<=N_MGparm;f++) { if(MGparm_1(f,8)>=1) { N_MGparm_env += 1; MGparm_env(f)=N_MGparm+N_MGparm_env; if(f==MGP_CGD) CGD=1; for(y=styr;y<=endyr;y++) { if((env_data_RD(y,MGparm_1(f,8))!=0.00 || MGparm_1(f,8)<0 ) && y<<time_vary_MG(mgp_type(f))) time_vary_MG(mgp_type(f))=y; } } if(MGparm_1(f,9)>=1) N_MGparm_dev += 1; } k1=N_MGparm_env; if(k1>0 && customMGenvsetup==0) k1=1; END_CALCS init_matrix MGparm_env_1(1,k1,1,7) !!if(N_MGparm_env>0) cout<<" got the MGparm-env setup "<<MGparm_env_1<<endl; int N_MGparm_blk imatrix Block_Defs_MG(1,N_MGparm,styr,endyr) init_int customblocksetup_MG !!cout<<" customblocksetup_MG "<<customblocksetup_MG <<endl; LOCAL_CALCS Block_Defs_MG.initialize(); N_MGparm_blk=0; for(j=1;j<=N_MGparm;j++) { z=MGparm_1(j,13); if(z>N_Block_Designs) cout<<" ERROR, Block > N Blocks "<<z<<" "<<N_Block_Designs<<endl; if(z>0) { g=1; for(a=1;a<=Nblk(z);a++) { N_MGparm_blk+=1; if(time_vary_MG(mgp_type(j))>Block_Design(z,g)) { time_vary_MG(mgp_type(j))=Block_Design(z,g); } for(y=Block_Design(z,g);y<=Block_Design(z,g+1);y++) { Block_Defs_MG(j,y)=N_MGparm+N_MGparm_env+N_MGparm_blk; } g+=2; } cout<<Block_Defs_MG(j)<<endl; if(j==MGP_CGD) CGD=1; } } k=N_MGparm_blk; if(k>0 && customblocksetup_MG==0) k=1; cout<<k<<" "<<N_MGparm_blk<<endl; END_CALCS init_matrix MGparm_blk_1(1,k,1,7) int N_MGparm2 !!if(k>0) cout<<MGparm_blk_1<<endl; !!N_MGparm2=N_MGparm+N_MGparm_env+N_MGparm_blk; vector MGparm_LO(1,N_MGparm2) vector MGparm_HI(1,N_MGparm2) vector MGparm_RD(1,N_MGparm2) vector MGparm_PR(1,N_MGparm2) ivector MGparm_PRtype(1,N_MGparm2) vector MGparm_CV(1,N_MGparm2) ivector MGparm_PH(1,N_MGparm2) LOCAL_CALCS MG_active=0; for (f=1;f<=N_MGparm;f++) { MGparm_LO(f)=MGparm_1(f,1); MGparm_HI(f)=MGparm_1(f,2); MGparm_RD(f)=MGparm_1(f,3); MGparm_PR(f)=MGparm_1(f,4); MGparm_PRtype(f)=MGparm_1(f,5); MGparm_CV(f)=MGparm_1(f,6); MGparm_PH(f)=MGparm_1(f,7); if(MGparm_PH(f)>0) { MG_active(mgp_type(f))=1; } } j=N_MGparm; if(N_MGparm_env>0) { for (f=1;f<=N_MGparm_env;f++) { j+=1; if(customMGenvsetup==0) {k=1;} else {k=f;} MGparm_LO(j)=MGparm_env_1(k,1); MGparm_HI(j)=MGparm_env_1(k,2); MGparm_RD(j)=MGparm_env_1(k,3); MGparm_PR(j)=MGparm_env_1(k,4); MGparm_PRtype(j)=MGparm_env_1(k,5); MGparm_CV(j)=MGparm_env_1(k,6); MGparm_PH(j)=MGparm_env_1(k,7); } } if(N_MGparm_blk>0) for (f=1;f<=N_MGparm_blk;f++) { j+=1; if(customblocksetup_MG==0) k=1; else k=f; MGparm_LO(j)=MGparm_blk_1(k,1); MGparm_HI(j)=MGparm_blk_1(k,2); MGparm_RD(j)=MGparm_blk_1(k,3); MGparm_PR(j)=MGparm_blk_1(k,4); MGparm_PRtype(j)=MGparm_blk_1(k,5); MGparm_CV(j)=MGparm_blk_1(k,6); MGparm_PH(j)=MGparm_blk_1(k,7); } if(N_MGparm_dev>0) j=N_MGparm_dev; else j=1; END_CALCS ivector MGparm_dev_minyr(1,j) ivector MGparm_dev_maxyr(1,j) vector MGparm_dev_stddev(1,j) LOCAL_CALCS if(N_MGparm_dev==0) { MGparm_dev_minyr(1)=styr; MGparm_dev_maxyr(1)=styr; MGparm_dev_stddev(1)=0.5; N_MGparm_dev=1; } else { j=1; for (f=1;f<=N_MGparm;f++) { if(MGparm_1(f,9)>=1) { MGparm_1(f,9)=j; MGparm_dev_minyr(j)=MGparm_1(f,10); if(MGparm_1(f,10)<time_vary_MG(mgp_type(f))) time_vary_MG(mgp_type(f))=MGparm_1(f,10); MGparm_dev_maxyr(j)=MGparm_1(f,11); MGparm_dev_stddev(j)=MGparm_1(f,12); j+=1; if(f==MGP_CGD) CGD=1; } } } for(f=1;f<=4;f++) { if(time_vary_MG(f)<=endyr) MG_active(f)=1; MG_active(0)=sum(MG_active(1,5)); cout<<f<<" "<<MG_active(f)<<" "<<time_vary_MG(f)<<endl; } time_vary_MG(0)=min(time_vary_MG(1,4)); cout<<MGparm_RD<<endl; cout<<mgp_type<<endl; cout<<time_vary_MG<<endl; cout<<" done with M and growth CTL"<<endl; END_CALCS init_int SR_fxn init_matrix SR_parm_1(1,6,1,7) !!cout<<" SR parms "<<endl<<SR_parm_1<<endl; init_int SR_env_link init_int SR_env_target_RD int SR_env_target init_int do_recr_dev vector SRvec_LO(1,6) vector SRvec_HI(1,6) ivector SRvec_PH(1,6) LOCAL_CALCS SRvec_LO=column(SR_parm_1,1); SRvec_HI=column(SR_parm_1,2); SRvec_PH=ivector(column(SR_parm_1,7)); if(SR_env_link>N_envvar) {warning<<" ERROR: SR_env_link ( "<<SR_env_link<<" ) was set greater than the highest numbered environmental index ( "<<N_envvar<<" )"<<endl; exit(1);} SR_env_target=SR_env_target_RD; if(SR_env_link==0) SR_env_target=0; if(SR_env_link==0 && SR_env_target_RD>0) warning<<" WARNING: SR_env_target was set, but no SR_env_link selected, SR_env_target set to 0"<<endl; END_CALCS init_int recdev_start; init_int recdev_end; init_number recdev_LO; init_number recdev_HI; init_int recdev_PH; !! if(recdev_end>retro_yr) recdev_end=retro_yr; !! if(recdev_start<(styr-nages)) {recdev_start=styr-nages; cout<<" adjust recdev_start to: "<<recdev_start<<endl;} init_int recdev_fulladj vector biasadj(styr-nages,endyr) LOCAL_CALCS for (y=styr-nages; y<=endyr; y++) { if(y<=recdev_fulladj-nages) {biasadj(y)=0.;} else if (y>=recdev_fulladj) {biasadj(y)=1.;} else {biasadj(y)=(y-recdev_fulladj+r_ages(nages)) / (r_ages(nages));} } END_CALCS !! cout<<" RecrDev period "<<recdev_start<<" "<<recdev_end<<endl; init_matrix init_F_parm_1(1,Nfleet,1,7) vector init_F_LO(1,Nfleet) vector init_F_HI(1,Nfleet) vector init_F_RD(1,Nfleet) vector init_F_PR(1,Nfleet) vector init_F_PRtype(1,Nfleet) vector init_F_CV(1,Nfleet) ivector init_F_PH(1,Nfleet) LOCAL_CALCS init_F_LO=column(init_F_parm_1,1); init_F_HI=column(init_F_parm_1,2); init_F_RD=column(init_F_parm_1,3); init_F_PR=column(init_F_parm_1,4); init_F_PRtype=column(init_F_parm_1,5); init_F_CV=column(init_F_parm_1,6); init_F_PH=ivector(column(init_F_parm_1,7)); for (f=1;f<=Nfleet;f++) { if(obs_equ_catch(f)<=0.0) {init_F_RD(f)=0.0; init_F_PH(f)=-1;} if(obs_equ_catch(f)>0.0 && init_F_RD(f)<=0.0) {cout<<f<<" catch: "<<obs_equ_catch(f)<<" initF: "<<init_F_RD(f)<<" initF must be >0"<<endl; exit(1);} } cout<<" Done with init F "<<init_F_parm_1<<endl; END_CALCS init_matrix Q_setup(1,Ntypes,1,6) int Q_Npar imatrix Q_setup_parms(1,Ntypes,1,4) LOCAL_CALCS cout<<" Q setup "<<endl<<Q_setup<<endl; Q_Npar=0; for(f=1;f<=Nfleet;f++) catchunits(f)=Q_setup(f,5); for (f=1;f<=Ntypes;f++) {Q_setup_parms(f,1)=0; if(Q_setup(f,1)>0) {Q_Npar+=1; Q_setup_parms(f,1)=Q_Npar;} } for (f=1;f<=Ntypes;f++) {Q_setup_parms(f,2)=0; if(Q_setup(f,2)>0) {Q_Npar+=1; Q_setup_parms(f,2)=Q_Npar;} } for (f=1;f<=Ntypes;f++) {Q_setup_parms(f,3)=0; if(Q_setup(f,3)>0) {Q_Npar+=1; Q_setup_parms(f,3)=Q_Npar;} } for (f=1;f<=Ntypes;f++) {Q_setup_parms(f,4)=0; if(Q_setup(f,4)>=2) { Q_Npar+=1; Q_setup_parms(f,4)=Q_Npar; if(Q_setup(f,4)>=3) {Q_Npar+=nyr_cr(f);} } } if(Q_Npar>0) {k=Q_Npar;} else {k=1;} END_CALCS init_matrix Q_parm_1(1,Q_Npar,1,7) !! if(Q_Npar>0) cout<<" Q parms "<<endl<<Q_parm_1<<endl; vector Q_parm_LO(1,k) vector Q_parm_HI(1,k) ivector Q_parm_PH(1,k) LOCAL_CALCS if(Q_Npar>0) { for(f=1;f<=Q_Npar;f++) { Q_parm_LO(f)=Q_parm_1(f,1); Q_parm_HI(f)=Q_parm_1(f,2); Q_parm_PH(f)=Q_parm_1(f,7); } } else {Q_parm_LO=-1.; Q_parm_HI=1.; Q_parm_PH=-4;} cout<<" done with Q parms"<<endl; END_CALCS ivector seltype_Nparam(0,33) LOCAL_CALCS seltype_Nparam(0)=0; seltype_Nparam(1)=2; seltype_Nparam(2)=8; seltype_Nparam(3)=6; seltype_Nparam(4)=0; seltype_Nparam(5)=2; seltype_Nparam(6)=2; seltype_Nparam(7)=8; seltype_Nparam(8)=8; seltype_Nparam(9)=6; seltype_Nparam(10)=0; seltype_Nparam(11)=2; seltype_Nparam(12)=2; seltype_Nparam(13)=8; seltype_Nparam(14)=nages+1; seltype_Nparam(15)=0; seltype_Nparam(16)=2; seltype_Nparam(17)=5; seltype_Nparam(18)=8; seltype_Nparam(19)=6; seltype_Nparam(20)=6; seltype_Nparam(21)=8; seltype_Nparam(22)=4; seltype_Nparam(23)=6; seltype_Nparam(24)=6; seltype_Nparam(25)=0; seltype_Nparam(26)=0; seltype_Nparam(27)=0; seltype_Nparam(28)=0; seltype_Nparam(29)=0; seltype_Nparam(30)=0; seltype_Nparam(31)=0; seltype_Nparam(32)=0; seltype_Nparam(33)=0; END_CALCS init_imatrix seltype(1,2*Ntypes,1,4) !!cout<<" got the selex types "<<seltype<<endl; int N_selparm LOCAL_CALCS N_selparm=0; for (f=1;f<=2*Ntypes;f++) { N_selparm += seltype_Nparam(seltype(f,1)); if(seltype(f,1)==6) N_selparm +=seltype(f,4); if(seltype(f,2)>=1) N_selparm +=4*seltype(f,2); if(seltype(f,3)>=1) N_selparm +=4; if(seltype(f,1)==7) warning<<"ERROR: selectivity pattern #7 is no longer supported "<<endl; } for(f=1;f<=Nfleet;f++) { if(nyr_disc(f)>0 && seltype(f,2)==0) {warning<<" ERROR: discard data exist for fleet "<<f<<" but retention parms not setup "<<endl; exit(1);} else if (nyr_disc(f)==0 && seltype(f,2)>0) {warning<<" WARNING: no discard amount data for fleet "<<f<<" but retention parms have been defined "<<endl;} } END_CALCS init_matrix selparm_1(1,N_selparm,1,14) !!cout<<" got the selex parm setup "<<endl<<selparm_1<<endl; init_int selparm_adjust_method int N_selparm_env int N_selparm_dev int N_selparm2 int parmN int blkparm ivector selparm_env(1,N_selparm) imatrix time_vary(styr,endyr+1,1,2*Ntypes) init_int customenvsetup !!cout<<" custom env setup "<<customenvsetup<<endl; LOCAL_CALCS N_selparm_env=0; N_selparm_dev=0; selparm_env=0; z=0; for (f=1;f<=2*Ntypes;f++) if(seltype_Nparam(seltype(f,1))>0) {parmN=seltype_Nparam(seltype(f,1)); if(seltype(f,3)>0) parmN+=4; if(seltype(f,2)>=1) parmN+=4*seltype(f,2); if(seltype(f,1)==6) parmN+=seltype(f,4); for(j=1;j<=parmN;j++) { z+=1; if(selparm_1(z,8)>=1) {N_selparm_env += 1; selparm_env(z)=N_selparm+N_selparm_env;} if(selparm_1(z,9)>=1) {N_selparm_dev += 1;} } } k=N_selparm_env; if(k>0 && customenvsetup==0) k=1; END_CALCS init_matrix selparm_env_1(1,k,1,7) !!if(k>0) cout<<" got the selex-env setup "<<selparm_env_1<<endl; int N_selparm_blk imatrix Block_Defs(1,N_selparm,styr,endyr) init_int customblocksetup LOCAL_CALCS Block_Defs.initialize(); N_selparm_blk=0; for(j=1;j<=N_selparm;j++) { z=selparm_1(j,13); if(z>N_Block_Designs) cout<<" ERROR, Block > N Blocks "<<z<<" "<<N_Block_Designs<<endl; if(z>0) { g=1; for(a=1;a<=Nblk(z);a++) { N_selparm_blk+=1; for(y=Block_Design(z,g);y<=Block_Design(z,g+1);y++) { Block_Defs(j,y)=N_selparm+N_selparm_env+N_selparm_blk; } g+=2; } cout<<" Selex Parm "<<j<<" Blocks:"<<Block_Defs(j)<<endl; } } k=N_selparm_blk; if(k>0 && customblocksetup==0) k=1; END_CALCS init_matrix selparm_blk_1(1,k,1,7) !!if(k>0) cout<< "selex block setups "<<endl<<selparm_blk_1<<endl; !!N_selparm2=N_selparm+N_selparm_env+N_selparm_blk; vector selparm_LO(1,N_selparm2) vector selparm_HI(1,N_selparm2) vector selparm_RD(1,N_selparm2) vector selparm_PR(1,N_selparm2) vector selparm_PRtype(1,N_selparm2) vector selparm_CV(1,N_selparm2) ivector selparm_PH(1,N_selparm2) LOCAL_CALCS time_vary.initialize(); time_vary(styr)=1; time_vary(endyr+1)=1; for(y=styr+1;y<=endyr;y++) {z=0; for (f=1;f<=2*Ntypes;f++) { if(seltype(f,1)==5 || seltype(f,1)==15) {if(f<=Ntypes) {time_vary(y,f)=time_vary(y,seltype(f,4));} else {time_vary(y,f)=time_vary(y,seltype(f,4)+Ntypes);} z+=seltype_Nparam(seltype(f,1));} else { if(seltype_Nparam(seltype(f,1))>0) {parmN=seltype_Nparam(seltype(f,1)); if(seltype(f,3)>0) parmN+=4; if(seltype(f,2)>=1) parmN+=4*seltype(f,2); if(seltype(f,1)==6) parmN+=seltype(f,4); for(j=1;j<=parmN;j++) { z+=1; if(selparm_1(z,8)>=1) {if( (env_data_RD(y,selparm_1(z,8))!=env_data_RD(y-1,selparm_1(z,8)) || selparm_1(z,8)<0 )) time_vary(y,f)=1;} if(selparm_1(z,9)>=1) {s=selparm_1(z,11)+1; if(s>endyr) s=endyr; if(y>=selparm_1(z,10) && y<=s) time_vary(y,f)=1;} if(selparm_1(z,13)>=1) {if(Block_Defs(z,y)!=Block_Defs(z,y-1) ) time_vary(y,f)=1;} }}}}} for (f=1;f<=N_selparm;f++) { selparm_LO(f)=selparm_1(f,1); selparm_HI(f)=selparm_1(f,2); selparm_RD(f)=selparm_1(f,3); selparm_PR(f)=selparm_1(f,4); selparm_PRtype(f)=selparm_1(f,5); selparm_CV(f)=selparm_1(f,6); selparm_PH(f)=selparm_1(f,7); } j=N_selparm; if(N_selparm_env>0) for (f=1;f<=N_selparm_env;f++) { j+=1; if(customenvsetup==0) k=1; else k=f; selparm_LO(j)=selparm_env_1(k,1); selparm_HI(j)=selparm_env_1(k,2); selparm_RD(j)=selparm_env_1(k,3); selparm_PR(j)=selparm_env_1(k,4); selparm_PRtype(j)=selparm_env_1(k,5); selparm_CV(j)=selparm_env_1(k,6); selparm_PH(j)=selparm_env_1(k,7); } if(N_selparm_blk>0) for (f=1;f<=N_selparm_blk;f++) { j+=1; if(customblocksetup==0) k=1; else k=f; selparm_LO(j)=selparm_blk_1(k,1); selparm_HI(j)=selparm_blk_1(k,2); selparm_RD(j)=selparm_blk_1(k,3); selparm_PR(j)=selparm_blk_1(k,4); selparm_PRtype(j)=selparm_blk_1(k,5); selparm_CV(j)=selparm_blk_1(k,6); selparm_PH(j)=selparm_blk_1(k,7); } if(N_selparm_dev>0) j=N_selparm_dev; else j=1; cout<<" initial selex parm values "<<selparm_RD<<endl; END_CALCS ivector selparm_dev_minyr(1,j) ivector selparm_dev_maxyr(1,j) vector selparm_dev_stddev(1,j) init_number selparm_dev_PH LOCAL_CALCS cout<<selparm_dev_PH<<endl; if(N_selparm_dev==0) { selparm_dev_minyr(1)=styr; selparm_dev_maxyr(1)=styr; selparm_dev_stddev(1)=0.5; N_selparm_dev=1; } else { j=1; for (f=1;f<=N_selparm;f++) { if(selparm_1(f,9)>=1) { selparm_1(f,9)=j; selparm_dev_minyr(j)=selparm_1(f,10); selparm_dev_maxyr(j)=selparm_1(f,11); selparm_dev_stddev(j)=selparm_1(f,12); j+=1; } } } cout<<" got the dev setup "<<endl; END_CALCS init_matrix var_adjust(1,6,1,Ntypes) !! cout<<" variance adjustment matrix "<<endl<<var_adjust<<endl; init_number DF_disc init_number DF_bodywt init_number max_lambda_phase init_number sd_offset init_matrix surv_lambda(1,Ntypes,1,max_lambda_phase) !! cout<<" survey_CPUE lambda "<<endl<<surv_lambda<<endl; init_matrix disc_lambda(1,Ntypes,1,max_lambda_phase) init_vector mnwt_lambda(1,max_lambda_phase) init_matrix length_lambda(1,Ntypes,1,max_lambda_phase) !! cout<<" length lambda "<<endl<<length_lambda<<endl; init_matrix age_lambda(1,Ntypes,1,max_lambda_phase) !! cout<<" age lambda "<<endl<<age_lambda<<endl; init_matrix sizeage_lambda(1,Ntypes,1,max_lambda_phase) !! cout<<" size-age lambda "<<endl<<sizeage_lambda<<endl; init_vector lambda_init_equ(1,max_lambda_phase) !! cout<<" init equil "<<lambda_init_equ<<endl; init_vector lambda_rec(1,max_lambda_phase) init_vector lambda_parmprior(1,max_lambda_phase) init_vector lambda_parm_dev(1,max_lambda_phase) init_vector CrashPen_lambda(1,max_lambda_phase) init_number max_harvest_rate LOCAL_CALCS cout<<" max harvest rate "<<max_harvest_rate<<endl; if(F_Method==1 && (max_harvest_rate>0.999 || max_harvest_rate<0.31)) warning<<" max harvest rate must be >0.3 and <1.0 for equil calcs "<<max_harvest_rate<<endl; END_CALCS init_int fim number max_phase number report_phase LOCAL_CALCS cout<<" adjust the phases"<<endl; max_phase=1; if(MGparm_dev_PH>Turn_off_phase) MGparm_dev_PH =-1; if(MGparm_dev_PH>max_phase) max_phase=MGparm_dev_PH; j=MGparm_PH.indexmax(); for(k=1;k<=j;k++) {if(MGparm_PH(k) > Turn_off_phase) MGparm_PH(k) =-1; if(MGparm_PH(k) > max_phase) max_phase=MGparm_PH(k); if(MGparm_PH(k)==-9999) {MGparm_RD(k)=prof_var(prof_var_cnt); prof_var_cnt+=1;} } for(j=1;j<=SRvec_PH.indexmax();j++) {if(SRvec_PH(j) > Turn_off_phase) SRvec_PH(j) =-1; if(SRvec_PH(j) > max_phase) max_phase=SRvec_PH(j); if(SRvec_PH(j)==-9999) {SR_parm_1(j,3)=prof_var(prof_var_cnt); prof_var_cnt+=1;} } if(recdev_PH > Turn_off_phase) recdev_PH =-1; if(recdev_PH > max_phase max_phase = recdev_PH |
| maximum_function_evaluations = func_eval |
| mccounter = 1 |
| int mccounter |
| END_CALCS init_bounded_number MGparm_HI |
| END_CALCS init_bounded_number MGparm_LO |
| END_CALCS init_bounded_number N_MGparm2 |
| int runnumber int N_prof_var |
| dvariable natM_base |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix styr TimeMax matrix Nfleet |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix Nfleet |
| init_int Nfleet |
TAG_1004 Define fleets and surveys.
| number NilNumbers NilNumbers = 0.000 |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix styr TimeMax matrix styr nseas |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix styr nseas |
| init_int Nsurve |
| int Ntypes |
| matrix pop |
| matrix pop |
| number R_base |
| number Recruits |
| init_int retro_yr |
| number S_base |
| save_for_report = 0 |
| init_int burn_intvl init_int thin_intvl init_number jitter init_number boundpush init_int Spb_sdrep_minyr init_int Spb_sdrep_maxyr int save_for_report |
read in burn and thinning intervals
| save_gparm = 0 |
| int save_gparm |
| int save_gparm_print |
| dvariable sel_maxL |
| dvariable SelPoint |
| show_warning = 1 |
| int show_warning |
| END_CALCS init_int spawn_seas |
| number SpawnBio |
| number steepness |
| LOCAL_CALCS sumseas = sum(seasdur) |
TAG_1002 Set up seasons.
| number sumseas |
| dvariable t1 |
| dvariable t1max |
| dvariable t1min |
| dvariable t1power |
| dvariable t2 |
| dvariable t2max |
| dvariable t2min |
| dvariable t2power |
| dvariable t3 |
| dvariable t4 |
| matrix nlength matrix nlength matrix nages darray nages darray TimeMax_Fore |
| matrix nlength matrix nlength matrix nages darray TimeMax_Fore |
| number ave_age init_bounded_number_vector Nfleet vector Nfleet vector TimeMax_Fore_std |
| number vbio |
| number vbio1 |
| y = styr |
Initial size-at-age distribution TAG_091.
| int yz |
1.4.7