ss2.tpl File Reference

#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.

Function Documentation

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 (  )  [pure virtual]

matrix nlength matrix nlength matrix nages darray nages darray nages darray gmorph vector AL ( ,
nlength1   
)

matrix nlength matrix nlength matrix nages darray ALK ( ,
nseas  ,
,
gmorph  ,
,
nages  ,
,
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,
,
,
,
gmorph  ,
,
nages   
)

number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray catage ( styr-  nseas,
TimeMax  ,
,
Nfleet  ,
,
gmorph  ,
,
nages   
)

darray nages darray catch_seas_area ( styr  ,
TimeMax  ,
,
pop  ,
,
Nfleet   
)

fin4 close (  ) 

matrix Cohort_Growth ( styr  ,
endyr N_forecast_yrs_std,
,
nages   
)

dvar_vector curr_age1 ( ,
nages   
)

dvar_vector curr_age2 ( ,
nages   
)

darray N_GP* gender vector N_GP nages darray N_GP* gender vector CVLmax ( ,
N_GP *  gender 
)

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 ( ,
,
dummy_phase   
)

matrix env_data ( styr-  1,
endyr N_forecast_yrs_std,
2,
N_envvar   
)

number ave_age init_bounded_number_vector Nfleet vector equ_catch ( ,
Nfleet   
)

number ave_age init_bounded_number_vector Nfleet vector Nfleet vector equ_catch_ret ( ,
Nfleet   
)

number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray equ_numbers ( ,
nseas  ,
,
pop  ,
,
gmorph  ,
,
4 *  nages 
)

matrix exp_AL ( ,
gender *nages+gender 1,
,
nlength2   
)

number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix styr TimeMax matrix styr TimeMax matrix fec ( ,
gmorph  ,
,
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 ( ,
12   
)

vector func_eval ( ,
12   
)

dvar_vector g_base ( ,
 
)

get_growth2 (  ) 

number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix Hrate ( ,
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  ,
 
)

=============================== TAG_080 ======================================

if ( do_once  = =1 || MG_active(1),
 
)

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  ,
 
)

if ( F_ballpark_yr >=  styr  ) 

if ( F_ballpark_yr  ,
endyr   
)

else if ( Do_MSY  ,
 
)

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 
)

LOCAL_CALCS if ( F_Method< 1||F_Method 3  ) 

if ( Turn_off_phase  = =0  ) 

number ave_age init_bounded_number_vector init_F ( ,
Nfleet  ,
init_F_LO  ,
init_F_HI  ,
init_F_PH   
)

tot_catch_ret initialize (  ) 

========================================= TAG_090 ============================

init_matrix Input_ForeCatch ( k1  ,
y  ,
,
i   
)

matrix nlength matrix nlength matrix mat_len_w ( styr  ,
endyr  ,
,
nlength   
)

dvar_vector mgp ( ,
50   
)

END_CALCS init_bounded_number MGparm_PH init_bounded_matrix MGparm_dev ( ,
N_MGparm_dev  ,
MGparm_dev_minyr  ,
MGparm_dev_maxyr  ,
10,
10  ,
MGparm_dev_PH   
)

matrix nages darray migrrate ( styr  ,
TimeMax nseas,
,
pop  ,
,
pop  ,
,
nages   
)

darray natM ( styr  ,
endyr  ,
,
N_GP *  gender,
,
nages   
)

darray N_GP* gender vector natM2 ( ,
N_GP *  gender 
)

matrix endyr N_forecast_yrs_std vector endyr N_forecast_yrs_std matrix Nmid ( ,
gmorph  ,
,
nages   
)

matrix Nsurv ( ,
gmorph  ,
,
nages   
)

matrix endyr N_forecast_yrs_std vector pred_rec ( styr-  2,
endyr N_forecast_yrs_std 
)

PRELIMINARY_CALCS_SECTION random_number_generator radm ( long(time(&finish))   ) 

************************************************* TAG_040

matrix Recr ( ,
pop  ,
styr-  2,
endyr N_forecast_yrs_std 
)

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 ( ,
 
)

matrix nlength matrix nlength matrix nages darray nages darray nages darray Save_Ave_Size ( styr-2 *  nseas,
TimeMax_Fore 1,
,
,
,
gmorph  ,
,
nages   
)

matrix save_G_parm ( ,
,
,
16   
)

init_int styr init_int endyr init_int nseas init_vector seasdur ( ,
nseas   
)

dvar_vector sp ( ,
199   
)

matrix Spbio ( ,
pop  ,
styr-  2,
endyr N_forecast_yrs_std 
)

init_bounded_number_vector SR_parm ( ,
,
SRvec_LO  ,
SRvec_HI  ,
SRvec_PH   
)

darray N_GP* gender vector N_GP nages darray surv2 ( styr  ,
endyr  ,
,
nseas  ,
,
N_GP *  gender,
,
nages   
)

number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray * nages darray nages matrix styr TimeMax matrix tot_catch_dead ( ,
Nfleet  ,
styr-  nseas,
TimeMax   
)

darray Wt_Age ( styr  ,
TimeMax_Fore 1,
,
gmorph  ,
,
nages   
)

matrix nlength matrix wt_len2 ( styr  ,
endyr  ,
,
nlength2   
)

darray Z_rate ( styr-2 *  nseas,
TimeMax_Fore_std 1,
,
pop  ,
,
gmorph  ,
,
nages   
)


Variable Documentation

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 nages darray endyr

matrix nlength matrix nlength matrix nages darray nages darray nages darray endyr

matrix nlength matrix nlength matrix endyr

matrix nlength matrix endyr

matrix endyr

darray N_GP* gender vector N_GP nages darray N_GP* gender vector endyr

darray N_GP* gender vector 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 nages darray N_GP* gender

matrix gender

darray N_GP* gender vector N_GP* 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

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 gmorph

matrix gmorph

matrix nlength matrix nlength matrix nages darray nages darray gmorph

matrix nlength matrix nlength matrix nages darray gmorph

dvariable grow

dvariable growhalf

number harvest_rate

i = Nfleet

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

k1 = styr+(endyr-styr)*nseas-1 + nseas + 1

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

darray N_GP* gender vector N_GP nages darray N_GP* gender vector N_MGparm2

END_CALCS init_bounded_number N_MGparm2

int runnumber int N_prof_var

matrix nlength matrix nlength matrix nages darray nages darray nages darray gmorph vector nages

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

number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray 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

number ave_age init_bounded_number_vector Nfleet vector Nfleet vector nages darray nseas

matrix nages darray N_GP nseas

darray N_GP* gender vector nseas

init_int Nsurve

Ntypes = Nfleet+Nsurvey

int Ntypes

number pi pi = 3.14159265358979

number ave_age init_bounded_number_vector Nfleet vector Nfleet vector pop

matrix pop

matrix nages darray N_GP pop

matrix pop

number R_base

number Recruits

retro_yr = endyr+retro_yr

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

darray nages darray TimeMax

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.

y = k1+(N_forecast_yrs)*nseas-1

int yz

z = nseas


Generated on Thu Aug 21 09:16:46 2008 for StockSythesis2 by  doxygen 1.4.7