From b8e0294a7dd8b6a953afde18dd91a7445acc233f Mon Sep 17 00:00:00 2001 From: Richard Methot Date: Mon, 21 Jul 2025 15:27:25 -0700 Subject: [PATCH 1/8] Update SS_benchfore.tpl --- SS_benchfore.tpl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SS_benchfore.tpl b/SS_benchfore.tpl index 343733d3..02e6fc43 100644 --- a/SS_benchfore.tpl +++ b/SS_benchfore.tpl @@ -1212,9 +1212,11 @@ FUNCTION void Get_Benchmarks(const int show_MSY) } SSBpR_Calc(equ_Recr); // where equ_Recr=1.0, so returned SSB_equil is in units of SSB/R, SSBpR_temp = SSB_equil; + warning << equ_Recr << " " << SSB_equil << " " << SRparm_bench << " " << SSBpR_temp << endl; SPR_Btgt = SSBpR_temp / SSBpR_unf; // where SSBpR_unf = SSB_unf / Recr_unf so units of SSB/R; so result is SPR_Btgt = (fished SSB/R) / (unfished SSB/R) // SPAWN-RECR: calc equil spawn-recr for Btarget calcs; need to make area-specific Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + warning << SSB0_4_SRR << " " << R0_4_SRR << Equ_SpawnRecr_Result << endl; yld1(ii) = Equ_SpawnRecr_Result(1); } From e628b314ef69a0b31dce40867b2b4c98b7abba6a Mon Sep 17 00:00:00 2001 From: Richard Methot Date: Wed, 23 Jul 2025 14:52:27 -0700 Subject: [PATCH 2/8] adjust TVG compatibility for Btarget adjust conditions for compatibility in the Btarget reference point calculations --- SS_benchfore.tpl | 24 ++++++++++++------------ SS_readcontrol_330.tpl | 4 ++-- SS_readdata_330.tpl | 6 +++--- SS_write_ssnew.tpl | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/SS_benchfore.tpl b/SS_benchfore.tpl index 02e6fc43..80b25c3e 100644 --- a/SS_benchfore.tpl +++ b/SS_benchfore.tpl @@ -1042,7 +1042,7 @@ FUNCTION void Get_Benchmarks(const int show_MSY) SSBpR_Calc(equ_Recr); F01_origin = YPR_opt / Fmult; - BTGT_target = 0.1; // now relative to Bmark + BTGT_frac = 0.1; // now relative to Bmark Btgttgt = F01_origin * 0.1; if (show_MSY == 1) { @@ -1138,18 +1138,18 @@ FUNCTION void Get_Benchmarks(const int show_MSY) { // ****************************************************** - if (depletion_basis == 1) - {Btgttgt = BTGT_target * SSB_virgin;} + if (depletion_basis == 1 && timevary_bio_4SRR != 0) + {Btgttgt = BTGT_frac * SSB_virgin;} else - {Btgttgt = BTGT_target * SSB_unf;} // current SS3 approach uses benchmark biology + {Btgttgt = BTGT_frac * SSB_unf;} // current SS3 approach uses benchmark biology if (show_MSY == 1) { report5 << "#" << endl; - if (depletion_basis == 1) - {report5 << "Find_target_SSB as fraction: " << BTGT_target << " of Virgin SSB:" << SSB_virgin << endl;} + if (depletion_basis == 1 && timevary_bio_4SRR != 0) + {report5 << "Find_target_SSB as fraction: " << BTGT_frac << " of Virgin SSB:" << SSB_virgin << endl;} else - {report5 << "Find_target_SSB as fraction: " << BTGT_target << " of SSB_unf: "<< SSB_unf << endl;} + {report5 << "Find_target_SSB as fraction: " << BTGT_frac << " of SSB_unf: "<< SSB_unf << endl;} report5 << "Iter Fmult ann_F SPR Catch SSB Recruits SSB/Bzero Tot_catch"; for (p = 1; p <= pop; p++) @@ -1212,11 +1212,11 @@ FUNCTION void Get_Benchmarks(const int show_MSY) } SSBpR_Calc(equ_Recr); // where equ_Recr=1.0, so returned SSB_equil is in units of SSB/R, SSBpR_temp = SSB_equil; - warning << equ_Recr << " " << SSB_equil << " " << SRparm_bench << " " << SSBpR_temp << endl; +// warning << equ_Recr << " " << SSB_equil << " " << SRparm_bench << " " << SSBpR_temp << endl; SPR_Btgt = SSBpR_temp / SSBpR_unf; // where SSBpR_unf = SSB_unf / Recr_unf so units of SSB/R; so result is SPR_Btgt = (fished SSB/R) / (unfished SSB/R) // SPAWN-RECR: calc equil spawn-recr for Btarget calcs; need to make area-specific Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - warning << SSB0_4_SRR << " " << R0_4_SRR << Equ_SpawnRecr_Result << endl; +// warning << SSB0_4_SRR << " " << R0_4_SRR << Equ_SpawnRecr_Result << endl; yld1(ii) = Equ_SpawnRecr_Result(1); } @@ -1249,7 +1249,7 @@ FUNCTION void Get_Benchmarks(const int show_MSY) if (show_MSY == 1) { report5 << j << " " << Fmult << " " << equ_F_std << " " << SPR_Btgt << " " << YPR_dead * Equ_SpawnRecr_Result(2) << " " << Btgt << " " << Equ_SpawnRecr_Result(2) - << " " << Btgt / SSB_unf << " " << sum(equ_catch_fleet(2)) * Equ_SpawnRecr_Result(2); + << " " << Btgt / (Btgttgt / BTGT_frac) << " " << sum(equ_catch_fleet(2)) * Equ_SpawnRecr_Result(2); for (p = 1; p <= pop; p++) for (gp = 1; gp <= N_GP; gp++) { @@ -1776,7 +1776,7 @@ FUNCTION void Get_Benchmarks(const int show_MSY) Nloops = 28; } - // Btgttgt=BTGT_target*SSB_virgin; // this is relative to virgin, not to the average biology from benchmark years + // Btgttgt=BTGT_frac*SSB_virgin; // this is relative to virgin, not to the average biology from benchmark years double Blim_report; if (Blim_frac > 0.0) { @@ -1973,7 +1973,7 @@ FUNCTION void Get_Benchmarks(const int show_MSY) { report5 << "#" << endl << "Ratio_SSB/B0_as_target" << endl; - report5 << "Ratio_target " << BTGT_target << endl; + report5 << "Ratio_target " << BTGT_frac << endl; report5 << "Ratio_calc " << Btgt / SSB_unf << endl; report5 << "SPR@Btgt " << SPR_Btgt << endl; report5 << "Fmult " << Btgt_Fmult << endl; diff --git a/SS_readcontrol_330.tpl b/SS_readcontrol_330.tpl index 88992625..2b2ffe0e 100644 --- a/SS_readcontrol_330.tpl +++ b/SS_readcontrol_330.tpl @@ -7026,7 +7026,7 @@ } case 3: // compare to SPR_Btarget { - sprintf(onenum, "%d", int(100. * BTGT_target)); + sprintf(onenum, "%d", int(100. * BTGT_frac)); SPR_report_label += " (1-SPR)/(1-SPR_at_B" + onenum + "%)"; break; } @@ -7057,7 +7057,7 @@ } case 3: { - sprintf(onenum, "%d", int(100. * BTGT_target)); + sprintf(onenum, "%d", int(100. * BTGT_frac)); F_report_label = "(F)/(F_at_B" + onenum + "%)"; break; } diff --git a/SS_readdata_330.tpl b/SS_readdata_330.tpl index 0ba0045d..3cebe8ca 100644 --- a/SS_readdata_330.tpl +++ b/SS_readdata_330.tpl @@ -3808,7 +3808,7 @@ ivector Bmark_Yr(1,10); ivector Bmark_t(1,2); // for range of time values for averaging body size number SPR_target; - number BTGT_target; + number BTGT_frac; number Blim_frac; int MSY_units; // 1=dead catch, 2=retained catch, 3=retained catch profits vector CostPerF(1,Nfleet); @@ -3937,8 +3937,8 @@ echoinput << "next read SPR target and Biomass target as fractions" << endl; *(ad_comm::global_datafile) >> SPR_target; echoinput << SPR_target << " echoed SPR_target " << endl; - *(ad_comm::global_datafile) >> BTGT_target; - echoinput << BTGT_target << " echoed B_target " << endl; + *(ad_comm::global_datafile) >> BTGT_frac; + echoinput << BTGT_frac << " echoed BTGT_frac " << endl; if (Do_Benchmark == 3) { diff --git a/SS_write_ssnew.tpl b/SS_write_ssnew.tpl index 99ff2299..07c852a7 100644 --- a/SS_write_ssnew.tpl +++ b/SS_write_ssnew.tpl @@ -1594,7 +1594,7 @@ FUNCTION void write_nucontrol() } NuFore << SPR_target << " # SPR target (e.g. 0.40)" << endl; - NuFore << BTGT_target << " # Biomass target (e.g. 0.40) as fraction of SSB_virgin if depletion basis = 1, else as fraction of SSB_unfished in benchmark" << endl; + NuFore << BTGT_frac << " # Biomass target (e.g. 0.40) as fraction of SSB_virgin if depletion basis = 1 or time_vary compatibility = 0, else as fraction of SSB_unfished in benchmark" << endl; if (Do_Benchmark != 3) NuFore << "#"; NuFore << Blim_frac << " # COND: Do_Benchmark==3; Blimit as fraction of Bmsy (neg value to use as frac of SSB_virgin or SSB_unfished) (e.g. 0.50)"; NuFore << "#" << endl << "# Bmark_years: beg_bio, end_bio, beg_selex, end_selex, beg_relF, end_relF, beg_recr_dist, end_recr_dist, beg_SRparm, end_SRparm (enter actual year, or values of 0 or -integer to be rel. endyr)" << endl From c2fc719af2e22e36873b1bed71525f08ce9c182f Mon Sep 17 00:00:00 2001 From: Elizabeth Perl Date: Thu, 24 Jul 2025 10:54:49 -0400 Subject: [PATCH 3/8] try exploring nwarnings to see where action is failing --- .github/workflows/build-ss3-warnings.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-ss3-warnings.yml b/.github/workflows/build-ss3-warnings.yml index 7bd21116..2c443e95 100644 --- a/.github/workflows/build-ss3-warnings.yml +++ b/.github/workflows/build-ss3-warnings.yml @@ -64,6 +64,7 @@ jobs: - name: Use R to parse warnings output run: | txt <- readLines("warnings.txt", encoding = "UTF-8") + txt warn_line <- grep(pattern = "g++ -c -std=c++17 -O3 -Wall -Wextra -D_USE_MATH_DEFINES -DUSE_ADMB_CONTRIBS", x = txt, fixed = TRUE) end_warn_line <- grep(pattern = "*** Linking: ss3.obj ", x = txt, fixed = TRUE) if (length(warn_line) == 1 & length(end_warn_line) == 1) { @@ -71,6 +72,7 @@ jobs: rm_warn_start_lines <- grep(pattern = "/usr/local/admb/include/admodel.h: ", x = txt, fixed = TRUE, invert = TRUE) txt <- txt[rm_warn_start_lines] n_errors <- length(grep(pattern = "^ [0-9]", x = txt)) + n_errors message("There are ", n_errors, " warning messages related to SS3.") write.table(n_errors, "n_warn.txt") } @@ -105,4 +107,4 @@ jobs: uses: actions/upload-artifact@main with: name: 'warnings_ss.txt' - path: warnings_ss.txt \ No newline at end of file + path: warnings_ss.txt From 99579903ab8a2de5dad082f887436038e2fd76dc Mon Sep 17 00:00:00 2001 From: Elizabeth Perl Date: Thu, 24 Jul 2025 15:47:33 +0000 Subject: [PATCH 4/8] check that n_warn.txt exists in build warnings workflow - it does on codespaces --- .github/workflows/build-ss3-warnings.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build-ss3-warnings.yml b/.github/workflows/build-ss3-warnings.yml index 2c443e95..39743af0 100644 --- a/.github/workflows/build-ss3-warnings.yml +++ b/.github/workflows/build-ss3-warnings.yml @@ -64,7 +64,6 @@ jobs: - name: Use R to parse warnings output run: | txt <- readLines("warnings.txt", encoding = "UTF-8") - txt warn_line <- grep(pattern = "g++ -c -std=c++17 -O3 -Wall -Wextra -D_USE_MATH_DEFINES -DUSE_ADMB_CONTRIBS", x = txt, fixed = TRUE) end_warn_line <- grep(pattern = "*** Linking: ss3.obj ", x = txt, fixed = TRUE) if (length(warn_line) == 1 & length(end_warn_line) == 1) { @@ -72,11 +71,11 @@ jobs: rm_warn_start_lines <- grep(pattern = "/usr/local/admb/include/admodel.h: ", x = txt, fixed = TRUE, invert = TRUE) txt <- txt[rm_warn_start_lines] n_errors <- length(grep(pattern = "^ [0-9]", x = txt)) - n_errors message("There are ", n_errors, " warning messages related to SS3.") write.table(n_errors, "n_warn.txt") } writeLines(txt, "warnings_ss.txt") + file.exists("n_warn.txt") # warn_line <- grep(pattern = "compiling a second time to get warnings", x = txt, fixed = TRUE) # txt <- txt[(warn_line+1):length(txt)] shell: Rscript {0} From 89e9433762423090e8e42c44e234cc29bb1d9731 Mon Sep 17 00:00:00 2001 From: Elizabeth Perl Date: Thu, 24 Jul 2025 17:07:00 +0000 Subject: [PATCH 5/8] update warnings workflow and warnings ref now that warnings are 0 for awhile now. --- .github/workflows/build-ss3-warnings.yml | 29 ++++++++----------- .../reference_files/warnings_ss_ref.txt | 15 ++-------- 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build-ss3-warnings.yml b/.github/workflows/build-ss3-warnings.yml index 39743af0..192fc006 100644 --- a/.github/workflows/build-ss3-warnings.yml +++ b/.github/workflows/build-ss3-warnings.yml @@ -60,8 +60,7 @@ jobs: chmod 777 SS330 /bin/bash ./Make_SS_330_new.sh --admb docker -b SS330 -w &> warnings.txt - # Runs a set of commands using the runners shell - - name: Use R to parse warnings output + - name: Use R to parse warnings output and determine if amount of warnings has changed run: | txt <- readLines("warnings.txt", encoding = "UTF-8") warn_line <- grep(pattern = "g++ -c -std=c++17 -O3 -Wall -Wextra -D_USE_MATH_DEFINES -DUSE_ADMB_CONTRIBS", x = txt, fixed = TRUE) @@ -72,35 +71,31 @@ jobs: txt <- txt[rm_warn_start_lines] n_errors <- length(grep(pattern = "^ [0-9]", x = txt)) message("There are ", n_errors, " warning messages related to SS3.") - write.table(n_errors, "n_warn.txt") + # write.table(n_errors, "n_warn.txt") } writeLines(txt, "warnings_ss.txt") - file.exists("n_warn.txt") - # warn_line <- grep(pattern = "compiling a second time to get warnings", x = txt, fixed = TRUE) - # txt <- txt[(warn_line+1):length(txt)] - shell: Rscript {0} - - - name: Print warnings - run: cat warnings_ss.txt - - - name: Determine if fails/passes based on the number of warnings - run: | ref <- readLines(".github/workflows/reference_files/warnings_ss_ref.txt") - n_warn <- read.table("n_warn.txt") - n_warn <- as.integer(n_warn[1,1]) + ref2 <- ref[!grepl("ss3.obj", ref) & nzchar(txt)] + n_warn <- n_errors + if(n_warn != 0){ + n_warn <- as.integer(n_warn[1,1]) + } if (n_warn > length(ref)) { stop("Increased number of warnings compared to reference warning file") } else { # n_warn doesn't take into account the "In file included from ss.cpp:7:" # so add 2 to add those lines back in if (n_warn+length(ref) < length(ref)){ - stop("Number of warnings of decreased compared to reference warning file") + message("Number of warnings of decreased compared to reference warning file, if this is pushed to main, change the ref file") } else { - message("Acceptable number of warnings") + message(paste0("Acceptable number of warnings: ", n_warn)) } } shell: Rscript {0} + - name: Print warnings + run: cat warnings_ss.txt + - name: Archive warnings text file if: always() uses: actions/upload-artifact@main diff --git a/.github/workflows/reference_files/warnings_ss_ref.txt b/.github/workflows/reference_files/warnings_ss_ref.txt index d92da4e6..1a9ebdac 100644 --- a/.github/workflows/reference_files/warnings_ss_ref.txt +++ b/.github/workflows/reference_files/warnings_ss_ref.txt @@ -1,12 +1,3 @@ -/usr/local/admb/include/admodel.h:1915:38: warning: unused parameter 'gradients' [-Wunused-parameter] - 1915 | virtual void report(const dvector& gradients){;}; - | ~~~~~~~~~~~~~~~^~~~~~~~~ -/usr/local/admb/include/admodel.h:2501:43: warning: unused parameter 'ofs' [-Wunused-parameter] - 2501 | virtual void save_value(const ofstream& ofs, int prec,const dvector&, - | ~~~~~~~~~~~~~~~~^~~ -/usr/local/admb/include/admodel.h:2501:52: warning: unused parameter 'prec' [-Wunused-parameter] - 2501 | virtual void save_value(const ofstream& ofs, int prec,const dvector&, - | ~~~~^~~~ -/usr/local/admb/include/admodel.h:2502:10: warning: unused parameter 'offset' [-Wunused-parameter] - 2502 | int& offset){} - | ~~~~~^~~~~~ +g++ -std=c++17 -O3 -oss3 ss3.obj "/usr/local/admb/lib/libadmb-contrib-x86_64-linux-g++13.a" +*** Linking: ss3.obj + From cb407eeea49d08be4d7b5fd9cc721f3890a4aa45 Mon Sep 17 00:00:00 2001 From: Elizabeth Perl Date: Thu, 24 Jul 2025 17:26:25 +0000 Subject: [PATCH 6/8] try print warnings to see what's up --- SS330/ss3 | Bin 0 -> 4301144 bytes SS330/ss3.tpl | 41683 ++++++++++++++++++++++++++++++++++++++++++++++++ n_warn.txt | 2 + warnings.txt | 13 + 4 files changed, 41698 insertions(+) create mode 100755 SS330/ss3 create mode 100644 SS330/ss3.tpl create mode 100644 n_warn.txt create mode 100644 warnings.txt diff --git a/SS330/ss3 b/SS330/ss3 new file mode 100755 index 0000000000000000000000000000000000000000..710a4796d991d2ee17e8b1397b473e02b601b26c GIT binary patch literal 4301144 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ξU&!LHzF4*e;P~!OgX&K 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�p{zHLo9{st_9po_*P4?o?%nX9&VSNA^ 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

@oC`k}SP?(?qK^}tJXcXEF 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

}0y>r$T^D^}o-!yzRp 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௚ zl2foL9`S+G=P`du%X4xlo7GzkHlTdGb}s6ki@s^^E-64M)t!Tv##8+;N^2D;vITBC ztUBZyJ&mw5z_bpX&{8Now1+ae@)Vj$H78kEl4~Q#aZEMo3wo?$`l(d?!(|5T*3f(D zjjzN}i6f{fs};_!k6BrfQM7&d))jemRiY|uW1{cv1zh9* z-azmg!WnI|S>0!Gu2A(*A=@wHVBfT7MYsr&fe>(qKy_}Q^%$>l%kc<7(&_67;Vl2w ziUhQiKzXZriO$N@sb4|}q06de0u$*Qr!&~Y&^b=hKA_}BP*rpqw#lMUO04oDpky@^ zw>2J96GOqcovN*2Nax|WAn_N{rO{ets#7Q?8B_u$ECU~764zI%bpMudpjIS=oh`K* z^>FxQxV~!o)5o@#ySlR1%RPh6VMdvcgBU<9KM~<`&99!V1}7f&Rnys!6N@gc z!)EeT(_!$r_V*;5w%3v36(KU0tBWAB>jYYb`X0le>5E^=?7__VszJ)o*?NB1cTI<2 zvmm_Xw;zQEV;vC&>i~99?T`TW-6l{ahWNbZ2w?Z%%by_8@sbgQ+TE0^0}?2hkDAingGv9Qdt#bhtK`)r{mGHR82qR08{ye&ALWxH2^hq= zR1|z4;6i1Lhf4kN9x73G?Auhz#*vEm^Cyrc597uEkA43S0Xzbgzp!u9MI}m&|kae$=t_8?V?Ri_4c#JLhCU=Vk5!N=rb^p`FfeIjO!%ix0JXA|lN zuZ8X+uJ>Gm0-4~eN)yd`W8lWCU$L`3IcFx^cpT@@%=a)oY0R=jZMAz~z1B!xI$K8a z39r~od2P_;oNg$NeY2X?3@Caj?=qIl^yjp*lsAIq&I%-*R?05%C3I!ArC&O$kFJ{_ zhNRnh*POf27pc{oK`gRXZvcc@%cE8k@Tfl+`hO_3Ka`3Oh1Lu9eHhRkLe|gH@KWn@ z#du4fm+YG5=<~Da`h2UA*5`}YIr@ARsIYmLK7%bH=rgsctfG;+2N2ul+NohfpA9S7b5}P zP9S~108L~-B$)bu;Y=&ujwy5iR;JE}zmu7pIWUkA3H<=t1-*)?GO*yh;J-r=#9ae0 zRtWRCGWBC5h*t!{x+{hoF*hBP$fAFUWjxd&SzWPFf6w*Xw5Tm|?6`=z=y;<#O%(_Mh@eiM@rXx2A zy!7Dv7JzNO8<%78mTe(H5B8fUGYGhspI?)a?2&sJFGyZ-^!pMzXd+AY*K`p!?xdrL zp%1xI>yKhq>qu#U;sq#l2WXMZv(%@UlGt@mgL2f@3}*B+xOOCRU(@^Ltx85xmMnii zD0v}=t12J>bVF*GtMYg}r(=xFWI9$-#^vh@wHGzwn0s;&t68QLenXcaGQ*Z24sjkf z-C?J-(+)gc(M-9zSW?L5t9Iuk3NZ0Z3Iq;~X9_~%nemh12n#T}n9~_c=WxK`F_+_y z(90#~{?hV{D#a%X0xo@vD7jdm{{Rk+UgsruCXrPg35SEm)iSTakw&jojRIcQ=1MK) z;K1Y0){1G9IF85s$G;yQRow`OucN94mxV-CcV8{$s&2jpQPswm;OZGcXr>F$6&&Rm z3psZ!Tg*%h8dxVS-BX8s0^zu#f05Y+1F zLqO7AN@YbVzg5bQ5r06W^7<4E)0%wK_lG@UoA?cp;7>qtdI2jL_e7KIzOXmj@rI@l z&nd|pmyiJ*Ql?Tild>QI*Auuat|4;x4w}`?DYC8wToexws8zu7@@oO z6rN6Z9|c}vt=+P7h9^#2)WUtT7iP3jqPEl5_l5V;m7%>f2Yus_CEpQK!@mT1LU?&1b%Z6)cjNL!JiJr;IHeDpt9o4(9jz6p1>48 zOtRWqGQW$??SQj{Qx-k?*Tja=GC{SM+uB3M)Pt}Bk3={xDnfHF z!c_+0>ju$8nzzKmArFt_kRKHx-iuJpAUqWn;jQ;P9H!%u9Bz$@u?llOVqaw_I)5BpV9?79@ zR0JN4cO^P^;gJZX^c|755@g4F5vm!4kD?;g-3Guy?(Sx|BlsNmzECWkq8^2B6RU0v^NOTqau7V$HQR>9?79! zRD_$o2#E%vc~pdtUiENTghz7t@5*SEKJkhN;Q$_qup=r$q8H&ZgYbG(gxRw_946tB z9G-}ZP{WIGJ`p_Yb`oTis?3KuzHU|Vn`OLLi#Jx6lz8$&B;4@6^#F5Y!qphPix1*r zCcRF3@Cqoyx-p^h?g$}AF(Ax5?eMpi&FnTxsMvRk&l2quvoIO(zN#a|lNW3FXREgN%XU9uJKsRh(PN%oSRsC8A zt?Ch1Ia`41*Va0&a@pyMl&npaf?u4|Mt2%YkFee}Vw>IXxz=?26Dte$^9yD@Yb*!^ zdmPqOmK!SJD@rHwJhpxSkF@piQ4!AfBAmwLh6r7wBD}!q53_6lLs&2zk6Z@ovOp)9 zxmKtu9*}!DxHij;48dnU)Ktr%j>!JLEk6G2qS_RX6k|(NgxcPb{Q^8j2=P+-ctX4= znOr-2S{>kIdv{c}jrVxutcOP;)Q^g=^g9p2JUlX!_*>m*nXjuY1b{)mHSkCdML>wG zx;J-wI84JM5du*WF7hJ$^Q{)?fv6(o0zw)`i!=t0@2$A!Hl`RA<(x1CDhgYIfL`8V>9S_1ZJQ5)`D#Arxgnw}Sm(Jn0y^pjM@)(KNuI zxbpiTd;qfI}1}u@m6nLub0IEVD*NtWi+(4Gv zP9TkB(q*fNB-fnPbyjVL0m)p)GSe=1U4zz5$|c`d`O&B+8=kwxQcrFCCF*H{KPc*z zB2^^yWS{n^XCxkp@N2bb9e(T<55kjpBtl_Sgmarc2xWNW;4uXVkq3{F7J?o;2H}w$ zdPn7OYLkbmN@@gbKKSl7t&&C} zLZn{5;h3j}EAdDjp1CBN9Sp`*eXek;Hy(+wIV!?)-WkJCGh>()6`=|CE4nybfk$!} z5EbF!jUI&VcqGF0Q4t0$^dQ`iMYx|!}SJ1d#;6eB!{D=QI-U0o+IjCBwm_=0z`eRaOxOYk zavaUxfk!s`9QBOr5a(uRfik*4LD&K>IpY`4=zxbmY=NWBG10erOw=cAfh1>vCb~fV zumwJJQfa=X(qB>G8eP*_pu8@yGi-rpoP(%zJ&2keu0U3WCSVFsQes?urp#ca}y=#_c8f=sgl>kEDZSOGi-ZcQ*w?h@@g*j7>u z4`1V7W{o|ZHQuRfti&2?kY?7WX3v6-tdWO_(TR-0T_iqaviZ9Bo_^ zp@_Hu9H9Loyet%w=Kv(zsNXR0npB!uv3uV*uv_D5PG;T)WM4Y^af{LZr&F^R17* z{|@32DR#O+2QF7y+tr5DKlv_5ea4assY7@l2B}UaQhRT6AT|4%qSO>{rrQ5)efhnQ zMrv9RQn7ZVo^V5|j)l~N;gMR60}B+T$~ciKp^-Wb)>7xFSznypPPGG0SplRJ(;i0; zhiP_4vxa9dzhvu+x38*ZXS0S#_J#HN_s4Y&OU)WG!q;#c6uoN0tIpoOPuEbFHOMH2 z_4)S_tik@p**f7X*bc3$D#)nqXu{9`s3vR!TLpha?j7_d*-7aVi^rd|o0SjNy0B9^ zODcBq3a+l-qgK9XRD`b6meMmO>Zf07@`3Ka&kZ;HN2E)J+ z#`yV|e6OZj)w)?uvsUeHE+g#oY49|w1wv7-3?T&1u#S7mcCu16z;H~d@?@ny zGD7=jHq?#kpZ+CH{#LbYxvcu3T3G)VLNG@!Zwl!x7(_cqz6ZY?Jays^)!;9|TX~>HM8N<+)Lr}@LHaYIFdhZYa=IraHbMN_KkSiA zJ528NTii>gnxyL)jCy>L69?FMclizsH^`>7A%!Wvg%0g<%#(A8EIl+{FS$WvAgAw* zK**mFgL3AkvAEOKK>8G9ZPQGi3)rmXn0Qa_Ldn$U#Lw-pZpc@SpJ%Yn1$>0s6d4?L zYZba4P60b9(e3>#`Mw!>FiuPbSYJHzmUqjWuJiiyqkyY;#LRsdtQ}Hw3o~~*bJsU> zf9#gK9CNpC=Ife%>sD zKLQC+a=zHIrb<_wJFoCN0Jc;+_-0sa|H&nS92=WJ3S8dyL&6$x%z;n z`F(;Z8gS*F#86nP`h}E_)76dj;|`+d?guh#-nIwG!1(s%5#N|*6x7vB=$e!mJ?=}S zfVCv&&X=jJkh(_koRT}mc;eAH6>;2yWH|OQxlV542G{WpuH!}`{sYUg*`l%Jhi=HL z_^wc#iIGglVfy{!`4gvCoD|@BA|f>h+;;KgS;d51AS@vzhjUj(V7pmL0KF9_91wenYJ(U39ndVUjpLJFrY9S_p~PE&$m!Ucm8Xu*U4J-V9MJ zar4AnrfK@n!KjWBoFb%*Mg&Sw;15+O%HKASqWY{ATTiBf0zWJgcK%hQ&UxNwy35~EHTfdXJQJ!g3g9OxfiA)? zhn+0=O`){p9J(jiPQD;PYK5_-XIO>th6%sF1)qH|KtuNeI?e!l#LYV12|i-HueZTHhI#~+!sm1V7s_smcuT}m`rAD z8iWYSsV8L#|IicAPkrztaz|3nSSGPkP17WHyPxvmY7!H%(94kb41!H5|P|Z$0 zrP${Qa5nAXhT(=DTa90iuE}}a%^p^@*~8X7v^_jy+QVh0)Lo)d@kLe`7s}p00zK{b z;+KQH4+j)}+rfw`Mzcj}JbL=?NRXPnk9QBt-VIFnzr#VZ*~1q!^dW%mTOMi->C?3Y z*`3?aOlyeUXq?6&yMFcqt>H|Ei@48|b33>>#n;}D18G2OAlT!ugs%SKe)Ky#sNg=z z0Zi{k%7L_m%aMeQZi!LjcH1oBYfSA*OZcgaCG7F4!xGA&j`~C=_>B9K`43E16Ftznshy42dCq`wu8wS_M(V3f$e;mY7$SHMQEwanpkQwWqd+} zC-X;iil<;?8!Ek_Cl$|ig>0CpY@>b+Hh;A(RH%QQ=C34PhM2!GgH8L_)YbkW)v$l@ z+WyUyrcNwsY`1?4Wuk?Vc{crXUIcfh!h1$O=Ac&zTUNaSiGJf4oD6+JI(1aMj z%WlSRD-uyrjZp|z!2hZi{C&rL&CntQ`H!FnK|67OOBv0mk=L4Cdc=%o6?XxujOR7_{3dQYrf`7}m zM}ECohWle$Ah$ycWd=`+5+kgqj7UQu$T$$ z)1d|Rcz~k{k;_y$N?2pljnB$d>c)4lH3A3SH*4Eur<5Jc&v1xJ)3<7dEr3%ufm|io zHbyodJj2y|sTf<=2gBe|`qmsd)_|kxRCeu^vdaYSbc2HQ-5)lSSvF0Z%xy>v{Egmr z>AJ({(d&2J2CNcrblqwcGrR8TMpoB783%;#oq_yD*I|G*6}eTMVx`TBVPCP?f2J8@ zPd9+q_kZcXKNHX~(OLV<{yWZuuIbizPWIndOqI6H-hXRl-s|+=#T;AzJ;A|3Q2+5D z-m&Pvp$(n=*BhJV|9|_heMfu$wYj3C^=7C_ck%w%DcxE>IGw9W5wf4wsT2)!^Y$Smq_8rSZo|Q@3TG_n*@J04EN5{4P8)WL%|ss{NF% zy-2=(wdVO+ZzDUM!nH@kRolwBc(kEjJUT6Gfqds$(D(IP&>mq6v_I)+SSvgR(-VFB z50<%JzhUNfvpsrM?2%u?HEjBEN43x6(WTm(ur2WaQ0>WI6+MT9t@guT9M#UpqwL16 z51HKv+jx5v3D?>;o^@2~!y}!R8`A0es1HetS@ogfcy_J%9dt%h z>BWdg>R|6kJw)_b=-VeaSA_NL;q%vH{;JqXBRT;k6v{|Ilw7%e4Z-5->?>jIqKK22 zuTsaB1GaZg*hK_;=5xI!@*D9!rGBJTJnP(39q|U05T(h!&bk~B2>iiyr5N`PkSFoc zTraL`_xli!R8~2%!{co3b}R&7w?xmJoTx*Q4D zKmC7p^iLWdN#fdJ3k?0qQJ@bVS>XKPa5Wq}D|?g?99i*qmIYQ2}SRM-MdoCUb+l_-7pQ#dN+eCKGx zWIVFKqOb+hoIRbadwNXR0+*fK8o;ACj@;r1FF*3K9~U*AxAD*oZzAJ5yy3Zs#3>rT z-RA;JZmo~h#<|UDrX1p}! ze8I~$UN-Tv zj+f7P`Gl7bcv;HJLSEkDWezX1c**7EWnQv)nZnBiUY_P<6feVgd4iY6cTyrl4QA1^Ib!*xc}BaY6v4Uggya*Ol4oMt(cZxgosy-wrY z2#;bli>}~hIWJ3aQT<6!mwyO{N(OeX*m`Iz9>tR^Yo4#o@@vADKPnvMzr`a9ObuJ$ z_tTC7zv59`L2h%rE>7b~oKQ)a$0fLgu;A`@g1d|0ma(jfzgi~ts|+4+OVgq6NnX9b zspu7#)p~iz0sCbgBYZz0`f8wDr#=YdZWUIo#}PPo{9H%2RKG+W{qS(X|yj(+F;tDQi`)$3^9r{(`D-JN*K4zOidc@(EyPUrWkIV*P z3?9WBEc_ZSl0R8q91K^!yOT8^AZzwwy(T?beree9%MUy1pNB_L-BDhYB|4>;X5!N` zEWEWCh1lA&43A$7sNY=S2TXQ(Pi92vMWxCqJ63>PJYLX#wQQe_g+Mu znzEbOWj%hqDI)OlO{lCds~~=&tE$Js=JYagpG=#=xPz4*7zmppVp*mZFV%Ue!VB@U zZQq;vrVumX{=6TJmx?FHLx9fD7%BxQ$P@@^UjTm36wU{a#pi z@ek@|ep~t$@V$!ptueP@-%b?O$A#q9L@s(y&I#uRXFg~OV>!Dpo)lO2l4RS(@oylE z)fp|E0LbELUPkdUjF%^Pd5o97y!7OyD=!^+X~#CWe;(M)L+5ed*j(MW>iaHzU!~t4 z(a#m`R{5&vdwqRR*7rTl)cbw<-dd-BpvxBo-5cunee`{_zIW02rs(IH`u?82f2i*( z^?j$lf2r@s^gW>O)$UPvRoC~1`u@7ECrLj)7w50c&&K_zrr$+< zucGgF==(kT?$!4W`rbv~d+2+*zBkqN+}%{QM;@$?{!7x&o%NmP^0QyZ=zFHVf2QGV z(r^qqeWjl-==;+~z9tHef!BHczLaifO?_{w?_PZ$j{djwQF4#uhm*S}ckABO`@(P2 zpjZ*<_ja)&{rmAjb8ZW3R6&_rZ}#7w%zm8xm)}AC4krHQJxa!lLDmbf(KuqmfTQX& z=pTJ^GYtjC@nR5G5ZNcIY&*`r!5R%^$(w1oi~)YWTR~m^6((dN_aw$g6sVIxP^CZZ zsxR_GBn|cqKjkl%MT0QdGji*ZdOHSt_O}^;OU5kBdHGX{t7)z5jE%@5I(~wAF`FNQ<^rInJm63Tv65D=@#xfFE=3yH}M8S%2qtWKARC-6G z@;j&29}ip`mH_*(ct8>0Q8`gJjuUllo176FzECuH_e($@Oz1}dUDccc;Ca~3gl`c( zZKRE0g}%sX2)hTjZ@5{<1CjR5>!YhkVHJ}JZal#02Gn95T-j1^Steq=oveXDjG*t9 zR^WOP{RQ|>G0kdC!vD2PHR4yWNn5hgDol>(bu;)rAXZK#XIw4j$(#wiu!KU4K!QAk zEY+XS4`6$ZokJYbBaTql|yzO-0%HoHOD4P%jh%zB_IQX<;xW(s8G&%6TNNqXfw8G0hUU zd2;`U*D`c1UX8)z0oRNjQpflkI|+79`Xbf8GOisV4vQU-ic69u-*UD*y>0dpgo?=1 zyYIzRdHYz*O|;Gag>yxE$=9r>F~7hwb#yA1;=Sxt^~*{%cn; zAoE2&*ex!i09_2Qhj}cVH#_4XRzHhcSFT~b6o2wxO3Q^@%H^5fQI+}{!E+_Hv*V>& z`q7j5Srk;m1kT~}Ky6RK7<_x0dS~%=2-OQ)sIYs3Ir}E}N$#86FS&nUBBafKKc+>~ z6L)xWM`EfjIeSO;_T+jS{r4A7&Nxymanr#6J zOM9ceOI3TJ8@7WWN)?WA*qGJZloEM!C&W@N!Tzma6v!*}?05;!MJYWC7=}{11l4LP zrDS7zP$AhVX!b%*4B6X1|R<(?rQ z4vU|u3ww=fmc*!E;A?Sk7edi^OKo%*#>&NdJq}ma(`sc{f^GvJzVY=uh?LZ zUzOo>xDk3$do%Fk`$P|jmvXbk1-rkBSfyHhXMf#s44`E(6Wttn`(o;o!JKlcW} zWPrY84L#%gbI`tzNqex`nA$kiKPYwpRdN!?1^5s>^aa(;lSvinw{U`;O6Meg`{W{C z7`LRsp2s%9dr67)iWl2ql@Zl2^elCa7==Anx}YClA_R+&=J809i-1vdvn-k*9z;=n ztZ2<;RBq?QmIs-1Qmn(>!sX}tOppdHbM3f%u5tO(Yv2MzWXByFW|j;>Mk+NRvqdA5 zhq4-(-1ihR_h@7q6B*e=36^Xy-GmElK_IklxgDde8lypg3LUaIO@5V3nUs+@FrIBZ z_&^ZYXwf_r>`FV>Z5nKO1-7Fd?9CeN3&CKkiJylWR4}oX3xe4(?91&M?5Aibur2Il z!*(-zhS=UouqJn;wl*M|+~L|IgMvvHBRZSNc(2nXbtV1fF<}3^tGZ-STg4yqa5pWW z+WYCrxeo>^*a8;*qb=YajZ6!;%abz;$!KZY4xvV&_JwOj8B`;jrnhWDqFm7I$vp;* zs)X9~^Tk_RrKR|+ZK$Pq6WT~wiZc*XYc%59s4T^p&!Hpau7%RDSlUu_l<-_EMJGU0 zmSXG}o0Xsq7l|5TZ9oi+yI5q{*G-=3m0ayB_PcBxdxK$L%lQA@w0;S7Pd?bZC5+t} zjY^O~8HdO5KzW{p+>9xNn36x0^-#G38us9Du(=Atgnd*ShlFsjN7_xvKs>;6FYd{D z0JQ{K7TOHQVJzejuMi9dx@Y3lK-IV(*UvxcyYak7KOffj_4>XV_Zi0gs%^ZQ{WpfJ z2hl~@V`IJ9-C|RPC!6a)(_rfo8u#tJ3*){iYv74Jvl+Zj zud*P%nUOXSX&cy%qACOGP<)<`XtEDSHV^&2vRZ0(JErq{BSnD-jY2uw&il}k@n;c0!&S_)PVy@ zv$2CyTE29N#!SS@ z9dT_5#xLkRe|}FgwJ%Q0ORX$F28gc>=ciBLxqXjBi0!*>BF9H~kw<}z5;vZOiSlQ} zTWK+(=!{IGdza!H6E8g@Jv5LO4*8?B>zCdZAAYM5=zxtray$W#DPvnPJ&3&rsT7VR zv8N&ze8*w+B0>R^eqds{Sc60#h8e9gE*JM?E<w zE#MMOYQW8rTuMbCKxWnkKbSw8P!kb-Y@!nRW*(%4hFm9W(&Lhue&tT*WcAJTqhWRiU`@xhh`~ zk|h&EoNz|YLy4*t*j67&*7kO6?zMxl%r#^xl1?GT^> z#infqQQ@TWqtNpE-0|6HI_48VP#q1}w&SJ<-*VLlJkBK|c`dKl@qF+>z&JB$q`{xk zeH#z|4iKPCyrTVJI23U00ZDA&aJp+{P}|og%A_?K9)))LQ;S2_)GX1}EB;rRQ$g}8 zUK7i41Rj;*_ZCaZZXcD>(nl;N&F13obf^e#OX&`Ja@x=k5)^qTMl}0}#9CR6?Ca0> z;wD~Mis++Kyig+0LQ?sTeX3>L#34|+lLxse+==L6DjCo87SKdcV#$f$dU8jw-(hXr z`zsGB0KcIQsmN~qmWqt~7d*KyBMk?q{k#~`kGD!wG^n> zlYA$RmZh4~Ndu^yroclHyO9jHNbOtI+a^7kV|sy?_j#rTq-aTAHaMBy2Y*NF`82SA z)>kh?*x0!;l&)`OIL1TNbfPM6>wl%M=00ln{WVd6y(jnIa=kY67Qd14B+#zH)|e^` z+!Uua4PUBsx9up=}1)9Z)X!d=RBru>PGPJ9Ea&y7y=a1+Ui(xiC(>m=Wb+S3@{ zmRx#=3Ca+2f?R-7beDMtyrsAi9&|N8zK>txYy!3Hs@U<61DdKywpM1?zW)8yNY zpQ5#emAJq&L@ zxUkvV!PKeZ6}(7=l8Gk~`C;#KqC!(t>t7U`CX-;L888y#u{qt)Mmn;R#lr*0708&H z{g>9*xe;#8Og&jouro6dd0{w$ota_z${ERQu6lYR?$mQ*>%1$FHzWTbydn(KX0!m+gT1YEQL{81)_8cgo}5KC} zEirWhL0*IY6|?_R(#8iwz`?sK@Jq_un-eO+JsVrgY}R%h4aU{Mtr7tM$~jIf+a<9U z)lkjAp|NVN4V%|)02#pd)U|1reNN8!r?hA42Y8W^eWWOM>-fE6;NT~LCJT2Uxwke^M0pA z9;?Rx*jS(4b!_4VPfn%tbf;A8K;%IFsMn^kU7+(6+$EixKL;Ydu;n1=-rJmf`JC&b zf?EGPh$LG-R{mh?pTsZM*1s1M5h2IVi@mD#r##c&M4Hul*+HuH3wP4w>h`lEvoodx zJ9wfwMQ|%jJaoiiTL0cpD zenf+vfJsvNzsmI2ka*C}`}3<|GFPD?j+LODkM&G_yc~c;fOFP>bFiK+h(51@4JCc1 z%O9lAi}>YApLQ^Yt+Oma zQ6E={0+?X3!2#|s?%GF=!tgyDV8@ zW|$>IQWWfFIO_^^9~@%`(J7Akr0Y2dRWe_>c^P?{34?;YSfd0>0`xscWyTc zOSVf%1XKBC)K|(qFe4hNMyTrxR4Ey6v;09U*5H>Lxc-A5Ve5`alZSHkpU z{son%UYy#>7YLgk1UK@v6dl$k=Fd}g#pt>w2i4U{*HzdM#&!7tY1a1oxv3(LM^LMFPH)+Q$5&0vWqGZk8fW+R1nlD;K=xTuh<5)dgl zcwL6R2_C%eUmoiHZAO~*{x+1w;FaPK%Fp~jkL2fnuq$0MSMCM;a^+_p{3Cn+mSnT{ zZ=tdEAqFkI2icEGjSbvvG9Ust%06s{|Elc6X#}{Yfc_DpCGv4=wkK;7n3^A)$M|gJ zW!a5I;-@#!6Bw?ILWNS4>9tR*W2*5trz`Ey_D-7`Plu%ZU)1n!N0X4D`RI zIjLQ}HW?iv2g@lM`YM{{GHW(Ut5e;dm5WxmA0hQUEEG^m7iIeqbiDfb%I5dMqts;f z&$r)VWk>uRIEuet=V*T$#W1ZOKJRVrPDu4Fiad|v@(e0Zx-p;V$sE$ww(>-rUa00L zzgc1;f)7~nXg$QF-?D)J(Kjsc51z1q{|wb_PFRW@4g6^nI4DHGmuitECDvvBhQ@Hm zx|0p?6K(8(n`^+g0B|4)l4=|Oa%Ri)_Md_xl=3=A{-FKogs$YDKAy<%Z*c;q-q3S=wu>r zJJNzVRe8Eihyl=9J|2v(nN&JsqVTdb=}7bB3XWVbp9T*i9zrPctJ7XYM=?x+41+z5 zcRUl#iNwUnixn`D=T*4}W*rg})N*^{qenz(N1u9LKHVE`ZPsyIQ*a((YVsOs!5K^_!WUb`mpB3iS(De0&ym15 z0gR7|8Wf6;@LETBGX)jf!jVIWfeL(bQU!HY^Z96*wEa26xI3gzuEpEH5X%?@UC)VQ zg^DB?V9LronM6tz<#Yq*3&eaBRwr&0iO)}0l3I2e+Kh3Ot)l~tF`EpMdZBlFc4W=i zPxc$#=ltk_e7q)ZT7l8Oe|a@Lsw(6J(8>fzA#>k@dSvVb`vZU?+9jIGE|eWh53u_> zvj;O@K^^9cR`Nwjc5P<&E&zu)hP(88u)-AlMj$K|Q_#^O8hO?6TPOaca;1C9kaw0q zK@G7Gg$6*(#L;{s^IDvTiph;A6LX-9z8#NTQe;7LF-{6CqCeOlaGWhzDU~Z}T`0z* zwu}VC6M^I64iX_TNMaBr{n?$K>^_|}2FeE=jLI_-BJmcU>4T0}?d7Xdp3K8Y2S}3= zP34Ocvdj?(iF~2JRaIr=s~PQ;qgyC`xkMt!$&qQL+o>?b?G3pC=A2lKMo?exX)l#g zP}8H(Z@THx;yFe;SWl7Ye@yb1JnWvmHXpmqdTQw(l93EL99e{)9bN+b;Rs#-pM1eIwERd!> zo8!gd*>pxA%g~p><=45CUuufo{qm}3h<(b&~02!?lPekdJwAWhR@Yf)o6yi}Y#5=g-%EWGJ1@Wxy4#yR0NKL>aXaS02r zl?%K$3*PO32XDZLOFv0?kNq3G-`)ys??I&L_I`KG0k02Ykb!QvgvD>33%qF-yeucY zS0E{YY+NjOh%4CFv!oJUkiJT=;57%lKmglVjsDcD7H+2-u>5jg7_Ktsp;KYnuteyb zcvCtQ`Z#1Rmw*=n^_eQR+z(d*<5@cXY4@c>K}K5w@)1T^BK^jy)+ zm{bZ~!!ZT`RT=uTkIQ24XC>Ho0TvcB!4c<=7c1UTa{@bRLU}*;GaF@#*FCn1HV}jO z$OKx1Zm~(Wab4sL8it^8-HOWQxNhsDiV=a^!1x^OC)o%4k@tc|pAI8JA%p!|W0@Q@ z*suP}zYq4`I7%xd2mAeh0g3#fYDY3P{dL4Riy#lJN{t_a*v`IK^6q#nPCy z8N&~lY(&wX^7)9-N^^=!g)|5TjI`=kZRPR(zC)^&EXT+N;mMH3#>ZF<&M&C0G7u+b zAkH$wd}MH?&r5g_s0g_gsb^%b2hBg%MW=E8c?gfpv9G1T9G$tAq9=ZH`3s%k1VcW& zpsTUI;yilN>zf#xMsChn9BzF@Pf@oG#X$Mp*7}N%QCzzlFP$PaLv@ojRbJ%C&&q; z_STQI4jtKwL!%&lImJVkf_|i@Kl53L;FaItv0w$-<39w+8Rl9{Iit)Oa^_gSGz02~ zESf<1x(&)59PYAyDNSt0wuVso>MXUFTw=%d4{q{x?Eu#=&82_=iKwBboT>G1lIQU; z15ZvzxLiukh(a5jTdqc^WPagA^~O3Ahm^&MhIpk`H~lHz#!wWLVPjtBz`1K>2wBiV zBg{J37a9#mv{&1Lt{6d~2=Z(3r=VlZ?^R+iS3Pma|6`;a^2@bORM9}FO)K_FHL(DD z4HTZJ#aIl*S8*Z>ucS7B4i}fzV2x(sjPdiD_*Ef5gHIgvA_bI=fnB#Pj>_XuU5yjx zbNm*vxX+XG8AV>6?rK{cRUC~z!@-j8KNTck%3s8|Wj)8YTdqNvPXi$$he`z8!Tho-4b>Vd=9C#21{c+%U zscxwHuTQoKQvX$vrtNCw3sC>dVINuks!RFP7=r|tKY%n{{@dSCzW!lVJ~A$}{^c&^ z|7Vq-#qzz;T-M*+rTkEr@;$8b-B^Au&Rt^pzAokKyOghLm9Nb5K8?TMt^Lp?A?-(+ z(f;!&-w@_Ac%Zz}rQCe0+&q-C4ZMd!y5zw(X7pR`lJI0c){sGOthRYX{$TvQ6MnhI z-zPNF;qRRo0qKdF5lFM*?_3Y3r~U7G*PJin7k#o%NIN*=kTGKxXapXm$>=GfkkvkT zf7mSptmtI|H028N6_2un$~&MYXsD1IEGTS6z;z^GYc1m^7b!7?P$=WE%tFkpfO;|3 z3K?Xycvy+yXk_rMTqhfMQZ%b!h4~rd_e}NP!5J;Rx~vwg%Kv4`?=|G-l%Jn>PPS#@ zhuf6jF{G<_?*2AGz4oY3B|$Fp0tY$ss+SCL%J0-7#$*w}POk~+Cx?;h2%z`OmVGLAGK215X&~8Y z86-45d4i2st1mTA`!TInAJ&gEAfo$WGZvj2 zg_nwbB)dw3FS^M}<)nTAJB~Y1dgBLn7Cr7;$(jIf2gW_3#f|8HLxa$t#!{ zRwHB4<9TT4AodrZ%&#X^nCDNX(vSlGn=5*Bl;~mCh+4P= z34#<#(VQiJVuf6>jgXxLBtx$FT_tfC_#5*#e~eIV>Rpy%p=DmI&$CNAPsG*I&YzG= zFK+mww5Q@O{D2rF?N9c$OZzYrpxFoLi!_v_wDS(AJ#oVy84G~>;HPLtQo~85I3t;! z!KU-XxKO-TCXA$~bx}>4#tfK{;p!_X@aRSk1)@dkszFl!QW^A;&IDZ;Eo!P9@g_;+ zG2PK((ONrU1^`7(82&^PxJCefB+M|}#aNIP(}<`P`NW9@3bV7=fn-7!X%3hpQB1?+ zPrw|H8~zA$BJLsvFttjJ>}4l%X$PPw$O}4=zWfP5({RHd0ZqqU8~}kpQ4(|5IYrcN zz|2*B{+*^!zY7@*p3nLP%YMMxUgg0j_+df`-#!yR6Jbrv>QMhz8UFR_l@Ru2e);m^40H{3J13pkem@bO#f#Za0!a1 z3Z!Xse;l8l4{%YF5ibfZzs{xnQmg!8mVX)LF82JhVQnh8*9EmTy7R;%I+QR&lT-g5X@ysh4+x7aNr4@SZp?AuJR>;11|JDiH%IlL-#!&pDvK|1@eg79lP` z9b(s26ZGLH6zHiM^km#sW`=BQzo~;iBVennlwaLRG3FW{hPlMJG$@l{+=P25aCzVf?J2qa(hic+Yz%XMU>@p1APKv6qg_adVFQP1l!PH&r0Knh|85JoM-{-Q?<;$?qGP16k zaQ|9oRZWSm>hcG%$CAu;u7v9HleiQ3VflPg9FX^O;wz?Oj~*LwP?65JT&$xg#B!;>wB z-=UuDk~cy<*&FtT^<K%*su=7~zo@Iby>7G8U z!_+-FvW6ht^B!PnrYOMl61iqDs$}E)Ijc@%)z8W7s0~6;C|WscJ6qabTMXYhbWv-o zs;;`Kzp+n=fd1g#CYhOX`Pyu)i@fYMGkFq{y?!565SCnfv$4w9lf`fQhUoD@#00b* zpygoJC+hK@%LRZX?qNZqjR&)dui?$Jt);5(jIBBcAN-qFv z0{7KZUXi-hSBsz&tokK^Zx&UVm!*#d`zHo54-N+N{FRii4t!BAFC};Rf^m`@* z`z=!mB*^a>V*wdSAluQ)nD3?QGtI^INpS%YZ-Hn?5K+V*!4vy=4&_|RU7lpN`_j)2 z*C!E31e)Mt&Bq79TZgj2O<8KeTMT$MH)S~C4aUV}HOaEjKnVI3iurH_U?c4wiXNzB zm9+E0XTu%LJuO2rw`sBTtnMpU6(eNhPSJ?bp~`cj?jXvbTs??dzn^DvoE-Ap?5L}~ ztV@cZW<40$!Iw<7n}A>r*be5N9*d}{E3M2*A=vXi0;-P6mkqR6-Y2N?c_r)({qm_` zhX3uNS#vQ}vv}_x)y}tZXO;C(WuO6;g1ZyB1)L&xBF8xD?t;2)p5SdSDh<+7*LD}~ zHc6IRx)YJpu`a98jQ<0zPad{r5l2rkCm`i7r0;TQz+N z?yRHHhkzQSUh-JX-UFNzx!r-x6G6ySbs*D@Zyj3a2@8{neHA9L8k3qDlSLn(6Yhfc z3DMMf#el11d*!j58tR~P{uD`PqwmBQf1v_uXS>IJR>Zzx(huz(OqizCn=K)_Y32_v zm?ZqXk3xJX;X?`r;%>U#QWI~QW3Qrwql)IJ!by{^7U*<<4vgZs3yuer&q|)S$i?fq z&tVK~4wEZVbwn}8{Z~c-eTe#2F^pN%+MM5?H{RFVV7^b4@8vN1YrGFLB92S6M#Kke z*+;|;#;Fl;4ai~E3k3*ybjfV;f|{GPE2{OV^6 z@b_EbXK3&kYvFqh;lU5EfiHlWu-3;9*We!p_&|j%D(C z$LnHk<=$&g4+%h*GOfVW)GFV;czb7DUCmPQ-Tg<=FiGd>R#fjF!NPB_9> z+P#?N)Gat6PM?TY2OiOv8NOaED(?a=Kr^v_t7V&LPtKii(gH8yg6}hTO;66=0q4{t zfp59&lZAFT4+D;GIXe?4QAJ}Pafa;5V%aiHA((Ns*rYqqvC}~E>{H_NQ;H0#n973K zUk1KT2-2PtpJTfywoYc&#}u$n@`=i$At2l;rWhc)rW?&O)EYW1%IjNBU<68xsf5lR zHyd9l-d+c!+ee{=K>F?!e=@#79@5NpRtbDhMwQ?un|wf2v;j{n0KpCVh?h|Uwd19U z6oP|_YAODtVq%B|vQYdcBXBZM(FB|Tqr@OO{oHCkNkh}#Wq;+H$v8Vu_GTk=>dn4J zaFq3`fJnU}HyQN$6wQ)FkrSP)O7V5Htp3z7W{&h-s|%78so=qWU_nyI3P336CGZWU zQI->*vW)Vd|3)ky&C?5&+C)$8Yw+JW)s^A~Y=8wY3~I9q5J^`+4RAON740MMJ*My| zVaMakAmEc0a-ri)>KMJr7l-xk$Np4Ii>ObnC!WUy9=}2-g+k6x%z^)hDI0n01dafM z#8`R;=TMXr>1wyDED@NB++6pl0@wb0Y7Oy#+MJ5>b{W(DkNTn_lqY)KON{pr}S4yifz$1E0&ic%YE+L`z>t`^T*kPhz90U1_uc zd^i!7(n$5i*p&uXxP1C6q+VgFO@q|cQ01bCWvl2%NDXq1^K4ue zna@=wB4#3%fJugoGGJ5i0!O3*sPkuCNO!APr2$efy~T4d#{Pv=gu=F1P;cG@v~6G% zJ~;GA%m*YrtWMdes}4HxYWK&^!ZOTJBpzo;UxQdySqxQD<9Ak7LN`st!V87g2h@qG zaj&8VH#D}0Y7z|@K3TuPpg_X2punvYaF8E0AK-TYA9n-{xaW5D2%}1kq_q?jDjFoV z9cIG-u}G9f1BhksE5wr1-${hLXr)H%gt&q_ZOW57akRGMNMM2mYU2uIw5!euT5K6A z)vPSOko!)h{op!%e2Q!E@p$N+H{;&uV^5_y;v z#@3ec{L}-70-3`NrKp}uj)vxhCWt6#RcbWxgnaE=RmruXTwl_ z+`dS>JD-fy%D0k+G4KbrADQtJ8#|EbM8;r;-w#Q-XMX{RlCQoP&_dw0U1T3hHz`mH z;GmF#d2S_22XbN0MZFC=mN*(QFNjY%99WoFiiU% z=U!2p=eqicQs`J3f+<|jR0thyi(yapVzdzW9U+GqtU_EiGfR|}-!b~X`JL@`P40f@ zNzopd(eGS|DjjA+d9E}ZQ3i-H@UPAp{-x+_LyMLJT`@YwKMD%voM^7zNp#UhzVl=} z0M}N(ucFJ+?hs@jnG;{S;MrW;#Gi#cca5)jW~smvyKgJ9?1TA0h1*zx|+0nB>d;?}LvFS5c~U!&{@Dx(Qjq8;^lEOn&(Q{9+2P;V`14<}v9y zq60;iEGrdnq1dt9srNj&cVK6hQb1q{?KbY??$9yPZLA9MhVx?Ss3-v`I^8fD^|98Pk#o(ys-A_V$1O-&4oEvcohO@*4&Z`!j+#on@@&TtMF2Qj6 zxxjhIg7aVy9RF&-$-*TV&P^_Gid%4sb~xL0*CxQJk4rF|FQMpy>63>vO`p$#;F$C= zc}eWPD0M@Ex#|Pr$#o{({s$hE%j%5jNN|)~5`$qbm&D-4kOZtgm&D*n)DFnA#lX(U zDrRCw6Yq0RA}(pJ-?<9SuEFX}KkA4PK%A{10^B@;+b0MBHVxlz$9YECmFN5wic&y|t4Wyd*b?+XBZc+x69}2*aItt$kfYBN zFkN)+WRyVZ0O@Cl&HJSdRxyspYhla+`xa4fN(CzD+QhJ|8aL5{5z%X%O8v+WN>8)N z$H*b}NCyEN9&7+$mPa8_7`e3gqOd5i2wOiL7F8Vm&GLC%wUT@Fq81w|;4^RP>e zfmvpa1rI9n4?d3mff+apE@V{?LZj$Yx zPUJ~_;)`67Ayhxib{zULlir8whouiFs-zv`y-;{@4_sTzQTy1~0baje&;0_j1-@B{ zdcho928B8Of6_XcL7nG63J<|EYR{o$@Qm7Eq-mWpa0_O#s(hkq=@+h+MwmPY8mgAs z@&VsJlet~KG4R?~%&os|Gfh2+;^A_aw&(r}AK|3K@GXeWIrWh57YtJw6ej)U!%4A3 z=63lePiZK96YszBqq%KzVGF6D69;`6xK}9EwQ^6&vVL@Ypl!ysCd1QyPM{u=ZF&E5TDi zOl{&guj;^3ss*`)b>2JFX)aq>kH!HoUaZk7eg*DwQ|B(c2y};0_BEfssj-e-SAjwZ z(IO)srMlfhG{9jOz>j&Ys7SoejHYOEMAU&aTI#mJdje%K_W>wn=M89c-%#0 zbOh_Qk)Iai-h(t!){a}T?jaOrg0!*$0FxD}FV|aQP2td(m_b&A} zhVeLG_HET0Ea$MR-Rmk9=0B`@g*ZC4+BQQ5*M6*l7l9?vYT{$CN>G!;QwKsgYFR@? zjy0?TZJ5nAM4D}I=cp`joaU&97KGubSME?KO2BY7OpY3l7l9H~y#AGPyApQ(j#$Eh zeG=M)g<7O9z9%c|kc0G3hal3FpM)VG+;;bEft)g015PmJfn4@0#g_(AueV>REHXLv zD?P^{tTHSk@Dp2O!6e*>3;uvjl*dy)y#k&I))eZ4dgMxU9`wvjxGfMg)1<0}NmY!% zf)3aBVd-+*TSzE--gXCWz74NNG^m(Tld-W>hN=F&|oq z35>I1Jw~9i^Zpc{7(cIxcR4OaKVo*&Wl!~cAF?wIHy-{UHo;=<17?ohIaCJbAiXC= znq%Cl_f+4e`;rIRng`84?dZ#a^U#;m7ovNI$^+YR24V)!B$CRI2ZZCRVxr9$U=h!T z@IxM=a!(#oG?GJfac~)o#xEGQvAKVLz-UQH9Ju7kEQ6ET)G<2HI6OLvVwCrZ3NY?E zqHNSItk?+L@~K*t+^Hn0ZA1lXea+^*-q6cIgVEQJrj6;V`7nx)d_ixDXEuN|@NSF5 z!nWj@pdHB9_L)xEjrT(6N3BrRK7>eFaJ5Zcs=d{!wg#)cvQ(At>{9+huTZpqMw&+Z z$2^o@2&F>}l5WrmWCQYKWe`1D~?WcKtDz~Qc}5O1k2cJi72Pj&Sm z#)r%O2KLdLx&7)vJQOZ>d3){%a|?bcxaDfl6oHafV63U0Zcy*O?E`Aq2UN7aUp>MC z#+Io~%bmliSN5pk6uIg(7Pk+lSbT54jjy4T~6 zJzi9l-M*ZvSu#1j@;ayvQ$dKr$?+hh72`y7hMYuPyu+LcDH3rAM`mv`r^#?W@Oy#1 z+ zxh_?%JakPgdJO7&Xl$V3D$pTlO`GTuDhb~rO-sVp*hFkw)AlBeN#HeHg2BA)0>*EF zdD#gj38EcHz$F+=FBdQmSYX;nFjj1J7IMt(f?$iy~Te=r>8UA+t@Q z^}~XB8_`BQs))7;!!d%#`tdAU0-l|{6bhJ(;6sXZR?mt732>l5<2D?DD(K9FVtoesv8%^UWkLr^L_sJzmjrdN@JKV^CQP)_5_o+goX;pEk z;9by8`rtQ66D@;8hzhD9tCI`aOQ6}>ElKZlQ$%3M$DyP@+&z>LzCfC0gdM9J!&0_Y zr;hiY3A)$B1#$*G&Y(Lg=lYe?rPQ zsNKtfVxJ%sf5WZ;*I`sf4cNb7KtQe9>VhzrnmKCG4Z|2%(IoYF8eT6vOMT)%JAHhD z{04kg1pW2Lc`-F^oHtOtlM160?}E;*KvVvhwbtjSt_t`75@ber(D2(d=u>4Z&>K1` z(C>Ceghs#vr7e5|AYE-?`&}}F8r`?X1Dp^_6 zQ?SJ45781wFD$1cK0||}4dI9xng9Z;PKxB(ha6^B+5nAbIvbzx9-AkX!}A#Mh0=iz zpY|~eMH%GgLp&*S=2e@PuppkmfSzrmn=7#vl~Hrx*T2EvIu4M3z8q@D#;y?%oIi1N zF1D*0N`=KxC%&J`bg52Oao1`zjsb^OlbB|p3f(prgdqu7#6u9hWo$u?(vpB|;1`U$ z$tGjKGp=mn!{GsD-%U~vqHVa`mvADKnOopN$s}9eGp{tbT~wEC3sx%Gaz%z%Kbic1 z2nxRM!_^*MsFE3oId~B@=bdqM+!%$x=4J%O=i#TA`ZYfSdu}5;Z?0yR5_|3X;Bmmk zr*S1r-1BEkvjC3AS9}10A$H#NCus34AA*esSaSrUrfbW`*r9ryP?t-n#2CttpjQBj zBs_GUg3izJ;#)n0z7Gg;&@vvGkqPdP=)anbUML>?N+~72azqi%-lQbq4rXxOVSDID zsmg6ibm>M@iIR^*p2`uj!}k73l0^9=JHH}qBhg0SOA_%85?w_j*2V5%Bg&%@n2pzS zB9k9i=uQ37PNe{LcZZ?$)hq%I6j8CprGLpT1b}URj zqzT;ER#fsEZXyN{gXH0=wBV-wpI`tqR1mx6JjxO(?|^z4H%URc+58^@-p*+&rzmv$ zM0HauVC>pWM|rFOs9l2@Tt(sQgTbQk=6a_ne57*3nS_Qv#MKD*nC&3`#8wlAKhcCJ z+}H#VhU=C^Y2a^3!Lxb~(hFbMiGB1rgEoX2jba)me*$JT-0(-3HE|a!(Jn0jv*C)E zD2g{6fMSrB><{|#CjiCahCc#ofV+570+PI6v_cW}BtL27#``&y6j8S!Ltq4FQq+=Y zV~|)j5yQjp5SR}g9+uefFT=x^@@&Jy8(s+=9=-sWjOD@~%HA&y%wvp%XL`dbR~rBa zC-ePCIN3NRJXy*iJH9Dks^E#iZ1mfWI7*=yP1CKMlpa19x*ryCeY!m48>>aZkrY-g z9t^CNA*|#zh^@FB^1TbMHJtg==?z@}knchnV%6(!e|Q-k&*PQPiK4k`MLLd=&Z-S` zRF!O&*9X@sJHU4JLVa9Ebzz^1|KtIA^Q>h#Nak`}F_U$uCAd8?v3Gg`KZS==)R&W9 z$!pj|$zW$w5Tz^SY$7)9noAq06Hl%&o45|OnKG`L3bOKxj`mZ`Z$jmWyHGp-oelIb z=<1C4SRSIR5d{Yk+E*iYPdg0K$Hc0KS5x8d(gP?MW%;{jyd1{MnGnDlfh-s!d9z*f?m=D(&A%{C+vmAWCBm7E2dT%35Q1zGW77e##mMzBU}8 zVDLY6`giah2>w0Jz)D?BjY?22t-@l#PFM>Hct=2}?EO$wJNlwczrC)FYpyhS0vjc-rumRxTK> z8rHW$6-24=MuU{{Ji8;pRz|0mWdq~Xw=VVfTiKxjP^QT~7?ZSi>ioZ_2n0>W#?&IQ zpEg6zs(1~9cfuxtsZ`pPxBy1kx2ZE}my|ejSKc}CILD##gh*90<~9;HPnxgKN%CZs zLTv^%IDD}1OoS3e0s5f!z zq-BA50F6m6|8k?DnYyk4tmh1^hrOXT%VgA7&#Lb&G|So0iK<$kFBNPBH<%6GWozgy zsLg2TPS3Oo#AYMuJiy;AN;dULI|^(nP%x_g@RZrq+fcP`YLvZB8D;Y(?m$yN#ypXs zQPAM?y};k)W=a0mQ|NEO4oe{Ten-VnKAfET@6vTH3VhfewZIIN{UXQ=yo$({Q9A=t z8Uf!-I|8>@2;2_@l)b>U(c}pBi-k zYq82#r0=uzd*hy`pFh#}?4bJ_`uSCT|DV1u)%OB@|6bpp)c2G6{+qsE)%RxaDtwIl zVU1T4oo?Lk*3ZU0RX>-}aC+(Ik@|i`r$42iC+YiYeK+v?+<4aaJYD}u{d`g1-_hx} zzNhegRX<gONyy|U(y z7XR`7jjsPbU4E~A_UZe*`hKhKhsOGD@Y^>1{*b;GzN6ZARl}>G+p$x>|3TmH)bH!) zdv$%Ur0)hE#r5-F8tw&sKc(-p!rXW1^v(KSO2hd?Kj&yXjQbl%pV8f$eLT5G^21(# z+ZD;(le=~GzVKTV$DZ>qm!N4_zXmZ|Z+6yF+~}15&=NzH0VgKl)%LtQE{=*2y;5)* zmv1#QY#4AHTTc?}GGRRv#2)Z)Rjha{-g)s3 z<6PFfP3&y}!e+sGMefJsIuAJZ`qv~OhbJ@d9NdXN#o5-#p{kNd<#{prEOxXB!sy*Q zER0%86utop6*UTp@W&MjlW!vmcxR%}!9=0!S_=i_!0C?&7XgK#K!KmOjM#AG7=RvX z1rWrM4afz&0-9L)4mw?|$7^r)VZI#Am!Prra)I@-J6?k7D@c5v?d(^-Kmp&pVlu#l z&dB`cBxXe>@Z9A&_~rSuO&bt{IXwmE#XHT(mfOY42|#coaO1;IG5-bb1QTw>P`D3i zxJ?0fL(h|Fvp3N}g6~_B1fUUHIlWFW3G(n-lVAj2I!N%Q^|A|IUY`VePZ%V)8^3}` zFu$21!Bq5g9;T!s3QDaQMLMu69s|}J1`z)pvPFv6*w~r5?>PByyEwvh-)c#E_St69 z2xTllvY$nD6V4O~=X3dK-C-KWJel^hW{J(>H&9KT>OGX}B*-b^ph?NrHV9D~La!hQ z%aGgaYkm}aF1)^bzr{^_hAai+40zr(krV%T^4CYc_FnLM8tg!fFEWRj3j^Nlz259y z-c5hq=iPL@Zkx(ALR5iKc3aM_1N6XwC}UPM8Tm1mvG z^Bs0#Fi&~rxq*4+79WK!JmG-c?z+>!aKL9YNhEQnrRH6ks6h^7|@zut^BQAwzAY!ncg za{fL@ks_uylFJ_@r)N#0DI9$t#}u+JQ+zWLB%yI?z1RHnlJxUnMD9Pn{oc~W88`v$~ufaq&Jd6prMm&ni8wJ&4L%5Df1m-}^f zcd|M;uRq(Yu9U@85Fy@&$GQ7SCm+u?yy(#u)Uvt$yCDf2Ag|&8nvA`kRrfjozGg5Qy;Lm)w_7)=Zwl zd8xLrD7mM1o5{X4$P$6oz_|y$uo72*3nK9O!Q9VxS&7rS)koq^Pv&r2;*1?wK7vKI zng8swa!#3d2NGer-nAzlgED2}CturgE(K>Wv8Q#HqyeYn=%^-1% z$7S}lCofoo{WpxCWtOs%eX}KE&;=iVWdkvL1<<8N$?RoMo-q*z#_-#hnI)`b-;~*L zh?Pl^%@8H9Am{0phIcpkXE=6W-3fnz!SW4BM`1Td-Ua2WJWrbIO*Q$b{Lb$9uCv(> z)2g8iyC?JEFKwtziIU9#EsFM-$-Xt`qd}mean72%v*t!-&3__HY^(V}Tg^Yp-;uE& zhstj3&jw@nLxp5)Q%PQ`uh{x0u$P(+ID+W_r9J3>h*eZS*VSN~e==&=4UP*EomX@n z&$150=pzcEpXGLOx***p_{iZaLa`oh!t`pGCf4_9h;<3EH6f;%5KAbCHC-UqG$C$- z2sr3)=1xV2?;08|C3{-;Tvh5M?i>`5v>7<2_k80jqV*pw-n$@#&n>|RIx4IhVHYd zHw4{psaHbL^`oFh_x}Hc?#3StbX!3-gV4>br>Of(1E5>m693x)n`y`$7){p?f4wp}PZYriKY2%us^prlVGq8EUwp`!xE;g}RL`bdOc} zFX%q@gF)R%&?G_VHqq$bOmyX_F9cntinWbw=ng}@ARKc4Y>piZXU|*H?Byx0*Y;UpF+-eF?>`&kQ9^bT@`-uW#;9 z=;nim3pkbw6*Z=c-l)}Nh6--z4x!cx6}37Rx(9CjFX(oM)mNI~7p=x@)Q#2XmLs~{ ztPqMWQ^orYZ0Pn!y&=qyM;#N2?idu*%n2Hd zS(|S#n~LYUzQL0341&H0cQQzKjnj4XMI8mPt^{SOxLVKN|Iu#!uaJ==Wt-jIf`Uf> zqu77w|8EU+=@JK_yRD8Q$%kNDevZXOx|k|D+R-iMhHf8fL6`ow(B0+vFX(zrbdT)} zLAR<#w+MVt;BiHlsbYSdjk;Y>Z-_GZKyr`@2-v7Q7zH(TYy2m4=X_&O_q9-T(`zg0 zrV-tGuIMsVoM$N2h;=Tk;DYWos+Caceujb?-C-zpeP%d?VU1F?cYPc}-L)|a-M7KR z1ssTms#>OsWIMVS%e$c4$sOG&3*Gf7c71ePn&@VJ8iH;ajqU|7MFGY;F6c5>w@n6?&$uF zX$p<*3KY9Ox{XY9Pp%9>_v$SQ-Q!@2g4c%tZmNZDvHyhb zWccBVx>2F%cGT$JO>}Q}MVF~!KPOTQbhFF2Q1=*hOenf<%6ShtKhg!ou20>)@WU0l z^*#xq?);jHx>Lc!1qfxhh#FHxT|2rz+~9(4b9Z#l$~g*&?m`s1KDxC{bRP;;Wan!r zbPs}uaSE3kx=a=0QL9Pa`fljHL>&`K-TN$bFGl?rbVp;@pr|`^MF@41HM;ePZbesg znJRYHwxK%_^@dor1Jp60=*~bvEoyE5A8qd)Uq$i#4~KFEM7&h#z4suXKtK}-7^N6g zAV>>6AY$-CS0G5DiI)^QC{O-Sy`C zd%d1NAiI0doPN%nDLb1lc5_fEGP|=j*w~#@iM2ZgKI|{)$SytADw)~cU&Mjk2F~oB z5^HP185W>faAzp1v%7A+jos4~ncaQxVSfilcIm11BB<)lP|b5Qrog>J@y0&ESHKi51yUwH;U9M`{JLN6Im~e)zEeAxC!UsWt#q zb?ugNVs|uULA!SA8tndDFhA_Zg8|RDN5BDf`=d8A|JE<&dHx@qZuk6S!J=H?Y>~1RH!0v<2?B-U|*?kSo zf;+>lFBQ9+KCrR-RT*Y?BYfCj#gScls`UU>-5Clyu{)4bqFuWc40iX23Cgm7AyCcz1IzzR5vAblq((d2y+1P!tG;8-c z_^`i{BfIoeyM{#vUArILt6*ohfHS+t({XC0W?d(K|nUF?_Cuo_lM5oYNQZP;2z9?xt2O9nwjtZrx+BK{*81}#8 zpwI%$OkkOiEfz*ZnfNlA1y|_Bok}6SR@xN$g_l+G9^BTCPo+4dT6(HQn%Vv5wgbD* zQWkWuzrpSfGz-q|V>-JNSJ>DsA=&*Ke&8?a$SytA=3{+B*KU*(yQ_o;*{Yg;VqrvR zw^Y8^P2ZukyJ)$M-2o4>b~_Wh#T?nCr`kEJGwAFt{?|dfe^FYoYj>Sk7!m9aMzi4B zJ-J=6yJeY;-3=v}-G%UBe``l}>8bXpncd%SIk4Nwnccf$r9rT}3C)7D+d^me=cP7w zLnONzIfc)2Wwt#TT=6S$N6GejGT8M13%eGrvui*se~l@YY4I79Yl0?&be+Ocd*3xc z(&!8t{+5mkrKj3CEG-!Jzv-aRzbLIZ*k7!Lu>H|2xI#~EQwq6h?+i8+XO%33+xj1N zWS5?5kDA&2{e}a(ot)XdE7n5T{%97Q-4;5#mF(<>NOm>&fw8SaYKa&7n-IInpsH&( z%!%Cv!h>wd;2DG6!uewN^)Hlm!|Z)mkNa7>ZHe7Rj@qTC+D}+#(Ak~!kArs4Q(Cb* z!wRu5BDC8R&4O$9@K(icKYK^^ZZT%}E%>m%xg)#uRBL2r_xN=OcH20!dqu1?2zEa} zv*7I3(b=79@5rtdWp!|wQOrQKyK zY`H5^vfG5%rBcK`#G$9!H(1}$*_{r$wyO4L$}x6!=Zb|9q1~u_vAbuBVt2c}Bb#4@ zwL29)>@VTSEr(-0?F(ufBQf0&~}>8Vx{D=@l3b1pmCpP309;`}JqLfHOjmJj>u z?9N_3$S*Fz-|4H zII>GmwL)fgKfC0>ZYgJWzZPpDg5Bw87Tg)`e4^MLZjY{SLYUo8$%lQOZAtd%+NQU^ z9vEF|vh@VC&Zg;ee+qVwo3_$)qtqBQy87xAhT5a6k)%-?H2iHG6-rOFPq64>*#Dw~ zLU&Lmaj?HwtzrA4S#X7ZjHO0SS4sBhdiCD5d$fCc2;A1+){$L$sueP```I53?3Qw7 z_iM2h!uChA;OySXRP27R$d(Mgxy$T+3b*yQb7YsEYR`kJuH7O|><$(lWJ?B>4R#M+ z$Pc^Sb#`+X+Ssis+4T^+?H$>rr`r2i($LwB0bN@%*hFc??hK>FT8PkY&3v)D94n*j z3=QngFy;;7H|T^YY5<7zJ`GF z$!5^)%p2{et$<3p&akVbtIlvI=>fV*s!Db}BFcj8H7}$iTH4j-N{9Ys$+O{7{K6@T zq`fHCKXSFxT7{5=HhsKFbqhj$lL~}*lPcp1EH6&5v%Gkn((!N61;y^Vyj!^N?>jw? z(xEntCL_!*^$sQHk}p@>5Z5wt@NTbf5xpy{MSuf;h0P+Lru^JuhZYZx`EB11a7AzX z9zajDJ(FI(ohP5Xi6;^-zri~YZ*FP#Q5Pr4htoU7XMZ=yPd3Q=5{UB58^ye7YsMAC z#Sm}WbzF2fkH_A$TwLnNfhPOoPk{VG>X6LHi&Bj$Wvc?@+Xcy2&g07RK5{q(vv?o5 z^K_|F^*(YYdIY=-Jb;oYwHEI@Yt6wmOVyX&N0THP+UT2vTOzK7ZcV~91$rS|2ri^> zyO7oG!hJ)XgIT!7RMASxj{~_7F0WM1J<}d_t)5sn$<>yflTP#_Dr$D3{kRHOV>lk*-qlrrK=?|-cK0sBaDZ2jOQpVF#nvXJdl7t&-lSsOF{C5fRu^D z^}W`wv1H6jo;lYh+Twp$v>CUEsBo>BS?{%=^O(|xMd9s3!Q2lYDsi7;l9URii9)0W%W<(Qmz0B z?Fe)P*612ZnE$}*0$z7N|5hO><>4+eX1xyupSS*wUUW3>6jtgugUiE@wgS z6Y_YfJ8)E8ag7)MbiXPGj4?}=!g7$;&LIJqAXvdJ^VMbyA^Kb zFS2K>I-?+0TWr`>^b5J+b%-5bLSj{V)o)q^^Hh-fjf2SVf>}!Pu|`8*cpV&^%_2)> zq{P<=%On)jwnMqkPq8cac`T)~a+gN3J#=pCN^VPl+w9V$oC;u>8Obv%TzE^@)D__v zak87yaXd#}gp2W;_uR&_0S^>=_$ifaV{?${e<}z0r6V&0cO*#grOo+^6*vXq!0)Rz z21_!b^tA9qZcPV33Afjt63j^NW|#ME6F%y>{1Tav-Y+F8+Q5T!_SWV}#2XA7x)JU! zJcHCODP5qn;M*+t2h5T#bj*@y&Idh+9|App1XZjPzy26v6qf;r%FpIwjqk*3Aed&Iv0G zXz{=o-%qP*j$^Lo!}}Sfd_=#n8H9G)CMamec)NOMU>$|kJ2f^yLC;=h^|m9%y_C{M z=!`#Pup&}$RO+Gx)JT*B_QjRqyho>@Jhrxs-X z9br1J{P3Slek)uGpBVu8i8}d(WHS`|g5V2gg8M%VMlgM)B3RB!aIhr!G!ZOI1XFZ^ z^^}u{{%eFu!hS&sR?`WN96&18CA@NpCHx5AUH=#eTdVkS5xD8cqR!BSR&UPSV)3)6^^9gGFvSAzuB|>Y52IS}iiVsN>uZ zAL>O!UnNi7(U(KT6y zd$lbL&+NFCz`0nKVRj1G*;()h>tPyv+IYQDYcAGOa<$bz$ze|k1Q8E=3gHSlqW@TX zj_9vbN-W74KW_;xeBu2>3B`PhB$g82FD#P|alnVgS{1Zai6<$e_&hh`?KEyKRnin6 z!8DKtIPHCXfo1sw&XoNS=_@o>uVYdLO70L-PT*Vz{H_(H4k2jPenTf2H(c+?NEpi6 zJtff&MD#%-`Xq=lLlq60(w^-*fa)AXP;jaxb*j(Wsh;?qMa_jb@%aKV3Cev}QF^j? zQ7C!}txCSAzP&`Lw`CiftRp4W9-wNx)UOp3OGCNZlplq&jBiDbGQJrM*yd%s0o&*l zrv8Ju7@YNxHy;o=&E{|2+50PSQ%+g9oCXDeq=}r1xaK(MB zrxW<~EpAm4!zRHl9TitF9s?spc8GtkZncY)7pzvR0jmwC42*G9h<}6O%R3EN)_$C)xJHY}O^+?&4O)j~M)c1<`| zoh~#Cz#ATGs^wzCgsXYeXCUw;ASxwad>!qL4mg`z&gQ}+Y4!pG;ZI=v#-jccZjXBG z5~VY=HhpY5M|+BLosCyzQPLpzo(swYBQ zq_3U6@Msh9=&%`d$UJ)B)07vvYm}~$P^FHU(HV3bHlqUm_omIUgNKKk@P>!Ym{gkp zqXeL*r30@mbzbXVU|#j$DSU>N{>M3ZpqPMbvR8Gedxaqcr@lo*BsZK6n+riwO^Y*p z9mlm1tGPl7`du8{R?Q5ML89k|NAs_ktojaMa=uL9kMt!+0fY`mO52%NAS72LMFN-K zsg)Xw^u(2qBeCqX++{JZ06Zu(Ynt1e00m zgs`-+hS>~*`m)Ht^yT1&#?QV?lTmSGR~mK6_?TrP{!rAg-(-+kX?n61J_xjx49efT z)HyKhsT82=#W3z0XJAuNa)(91#LZz>GVy#-7N%zi&zEKvrXy1;GsEK2)D`YXQ!f;L zAsC#QQ=si4;?bKr@;?pS`2S|$AM}Jl@wN7J)4Rm5)|b0B4@rrS^`;j`=gGBp2c!l| zho!wkiG+zx?T!{QA>8_NOL8 z?EcgwL;2HXsLtX~caF35&yrus&<&3b97l$=KKnGgLfYSV(1#X>X~ce0?WHr^ho1d9 za8R;pu$_@r>57pvyP1)^+qf_`)oE2FzWEYgWicQrr&v>G{H4!_6B_$SwR5MLjRDTh zlEv|aI397@=V(S@!`yF>&FXVAe5L_8lPiGRg~>NP#|PP^IG(1Yxc6CrI@kZg>Rf=J zVmhjrjufOsF@5u^{1np@bt=8zwha+GOFGR!C%X^i@kh^81JnCYktsd39XPM8<2<~W zaq2zCU&om9Uw#F~l7w-Ko>;OB=a2*J_po}WwJ;)It>+~U2HxyZ)cmr}&}7lvGbh%r z$~mb@l{Xg!Ff>Fm)P)!tK^S8bEz>f!m@BS2U8iM2bqeuPWYa9sy`Nd=^N0dI-1Tc+ z=o~WPNm@!52NXu`&5zM`VWo~IfeuM|Ow?veYLkgtRg&meomx-I!W@56#b3Y`wF9C* z7pdq!j^XaAQ~knDwX&pIh$5XS%*<*4 z?ZN3SQjRp-lNwQQ=D7m6E1h(GT#?j>Lbxn4b4NjZ`tYW#mUAPhz7I)>h&7Ihf;~C8 z765+i@G(t1ZSQAS^!5~GytWfr(Rn>^p~`XgK)Fbq(x!p^NI_;G6B2 z912Udjf(RoR-J>OK|zF$WQD4&7f`a2kR`Tt#J-d$lubj^0f~8<5I=3IU@MLmke;Nz zcFo1iEhv-6D`;rxrh6S>7k!MJpXo@2`pR_%IbV33X=oUSuLh>ge4UgoozJ01FN0=O z+@;kdK-cljnHkuXMawzfQ)l#%V{|(?7FGcI}WMNu2_RI&|4BR)xv1!|b}4rt*as6|2ipOft$>L8~|vRHM9Oa;|z~_;V2Wk?7;g1tHqML&R52 zJ;!3}<1>*l_(yYJ99QwNggX?te*hG(4;pxP;+c-u+zbUaKAdIlJHS1Q;Y}|u3Qzv% zgPaU&Q;irGB-N~2YF0@S$$ttTxtGi&pKL}MD%LxzI1O1-7m?63J-4_H%Z&r#-{;K) zBCA4}8meu0Ecg>YhRq-}-n1lAoc#6#vymE&?@3i9RN`AJgn4>Bx)oow`pXIo0D_X#><6Orqx?k$7dZ=AZs1^(hSiU{ zZf32zZR%Zq>qpi_<^W#%SDwf<$*d#(LP_71ynVN5iex?Ft)=i3laq?K-FwVR~) zXN8htiUQ-(0Bf*NdOLR2JD>tCrXAD1#m`YG6;y&1IeaUgAqvfWQb{DEO zr@*HK5f~;1fPhcxhZTkw@Ut17`0Py2OhClv1@PH`_`IOi$Iry42qw<;S{a>6bIM$HH8r!s)AY&5f6!F?sCC*;L#7<<_yX1(KK|3G#SZ_$MFa6TN#rD7 zm!kOo&McbmG13#T7XT7yyTMK^p&}(zPsJW~-|mIFln1Jte_#*OX99lT$F=660~ih= za`9~{xhpyW3ngN=;R&tv7VL_C06+S#e632`*$4IFRMfh@%nD7>N8SHD25MA6`tJf% zWSbmqm;p;8!^|D%bhML)0g1$if_|S48D@cu@)Vs&S&p_mibU5n8QpQv5#``5O56qC zv$&>l`OU9c;8Xh{Fu4Q_LAu|$4>m}RFG@Yo**CFYuPCur!(eU2w?+ePE< zh@2W^p5zgoWLZ1OAHQM^ZU2V;=Ew{k<+W>Vkwaypm!8++#2W);*T9Up+ z{=@Ra(J@&M!m081v_pH@-Fck)S0a>9mN?0EaP4nnjLA>4GYLZ6iTGL@d5|9*&%QDqPvd{UkOv0qYrJbM$SJB}x22{qZcmE{nvDhuY+s zRE6n9_FDx zO4NyLOBT0#w5~st3(4+8+=PQ0_LW7#qdXh2Mi4md_QfVey`7}4_cO0c+M__5SD?Ru z85v_|U^I8J+W20qWB$23qQR!+(xx_|1d5Pt$S!B$61Em6$+#Q|ikKK#crH&O11H6k zb^qbe1Zhgj!&oC{K-OiX^JmLMWJ)p$)D%WkF=QY!mQG!~ZrYnZNzQma@7? z9$SJ(pQmTD<{`Y%;Q;jkyyrvkH&ZK!X>9E_Wf_j~C{G3K%mw)dU@+-7m96wGGecREOz%f*E-Li@m9 z%1M-OpjLzJHH6ud%w(d?5{Y*o3F$kGR6qjh7q3A-SX~P7d(=+Kqzp9F{>O;v8fM}@ zP;H>;*D2G#m#v$gfRSCa=3^`99vlB+wE|{Q*vy7u&)gqi*h0j3 zU>^5VDwE#B>oa7;Lx8D^Feb# z0ViCsLqXaltaT4ipp}f&qpN7zg+3>@03rn#lfCdFvWL%89WA0#m(~!|h%y13p!v-M zMae4!cTp+7YJX0)>7LPiAkZ9bDA0rg%@#40pubi}xCYa-rh#jf9aoMvfRb5iQaCe0 zNn(qbicCog$F0b4Eds3XhcA=iY zMmL1*J;p}2gzd`-4ys5XYfZrRS$)h#~Y>FRhf3p^?UGaw-$B9OT@X3o_dIJ#FcoskJ- z+Cx=ojO5wgfpkKN()bebA?- zV@Gf$wdYI7#EdrWsM{$XdOAB0UOPw;j>nZ{`M7)*41o#yd)cUH1#vZ{w+>4gGFAtJ z1z3UP`;WaD59m}5#WEGdAGM(ldc)^TXCdfhkA{%`(50#({ofbl44zr-?J7$ECY~|r zEOF{%iT)B}C&DNu5xak<#u7CJM&S)2>-#cEOWNC_N(d&$_X8Epw{azVB_+rC&sdIc zw}9#(l4FG~$46U*9J|BpazyDkACx$CIp#}@Qwd`O!dP^f(o7%5_=*EYzwS(lxU$%^ zqr})47^RyCw>3_qLEa3nh4e3-XL_%^w{p;PS5E->K#Bj}%n~0bPmzu$~g zmctxcCR59rpnq?h0-fb^D)EcMDyK||!|*Yq4cRiO7Qc*O23PwO~KN}PJO93e42 zLm0zIVJq}(*_bg#I$+$fTygmZt}GrZ`lFLw%kH%S}jtmZ*kTrNJxg1l}Z)r;r3^;teXWMepjhjYm_hC32MiUvpReNr#*iXB|g{$E8-x*`ST2- z&z4^vH;n1aq;^rBgY-WF=C1~{gqd`iW|8SEoYc+YG9|Zb%KJBXYFSh&O)GU=E$)sk*y#}vYep(b}AtK_1u%N?to{sIrjCE1`rcD$Y&}Xcp zs0>e$Gb&Jx^T8EImr83TiFaMVT&&>3Ap^aNGtw?g1N5!_7+C0sh#+! zA(2yfthg3iG>lz<9D3wV+90MYs$iufPze}!7hR^DxV?Dn{`Z8#rN+-Oplm2WY(_^s@MeL-Qi9NAW1DIK+ z9UYyLu%#mbwTyi1%cA`ncyl9tQ+?xMW*h94!COM<=dgsKAjJj^+TK#p^e`iaW>LXG zlez|Ef=vAB1MA>rUa{c($U0@X8kF;7u_9^ktx?K*E>+OVPd`{>Pzyvpx&J|0R5OaonU-zo7vv{n9cU`1_b?s z6pf>GZ|q{wkMd+f8l9GOKXLSrtfdBkFJek+0fo{@lJcKhCMg@?RZ3gPpQSve9NLWW z0h6Se1(lR ziDwty(tU9|r5EWXo|8euKh%!W4EGYg3VO3i`hJZlN_u}x7g;ikcI4!6GEAW7kvFKT z*~6XT#NiHFdf3E_MN54^SOfvOggc^t4yL7E9aK(DM9vBDhu_z*KO7?0^_iw5PmR+9 z&6m&sg(xM!7ttTH+FE|9ye1i*q|1LJh}zz1OKOulGD$aEGRbSkT{n5nh+z);sAZyJ z(Z^GSQ6{U4Eq|stdCvr9zMfGo2rJc%Y-L+KF3si;5^9ZeH2cu zGUL?CyJU$mo-iUiVlX^SVeD%7CQS@-987Ez7+D#V=1Q7%)N!bTj_wK@1|;)_z^3%G zUv!|s{N+N7lI4#|HvMFO!1{UjLr4QrL;QF2a~7u=^i_(>BF+~K0kee&);Mla)CAqQ zL6DlDug*^sJ3oyiKc$HuQR*2l$Xucf;PVt|Y`0et9p@U%qEJle_B#4LOSl7(;jg%R zEO*3Ig)S5Lgnq^3L!@s7z0o310PK`>Mjig=fu600{|zyks+VI}YJp9EIYu1**PG_+ z1LoO!_f|H+n^{(V8%TajQY3TwQZJ~bkw&shlIH6{5KcEop(z!ws;pZr>^pdmVA8fpxFkG1|ZqJ{gV zN5Qd3nK@cr3(Hiq8i&$V6uio6fzJy}-6j@0J#;1}m!`tonkP`g*(^@%17{(F971TT zP$F+x1k7j@P{9+*9x1msv86o!#3WeCDi&-kIja3ox+yPHn&r|pjkGL>RN)UzQkF;4Se_P`>cQ#@sJe zJQo#?B?CY>5~f0Sf5Dd}cG>--JmDB;vSScI?SHS4SvF_r5>Zf{N8Gy4bG>R)lCm<+QAa%#FOI zt;XbKa3>ztLuLE{7j0~{l5AB0TkH?}b;>t{K`j1|@*5Ni>a5UEQs|rlV1l>Zu}hT7 z7grTqDrGJD!^YLJWvr|>D8!^otOZ)Jt%z5n8jEF@Ty2$4&VcU6He;Rv&A}CV>pr#Z zyft05DaJC>S4Ooxu8=wi%Z~#0r6geXILYw(5J3hF@~1$`=KJf>V09yHSY_T=}mzca@#IL$!&Sql^WkhI~HG( zMng&TBc3M^Oz(3Ddpb#RYF0#QzdCqBpkzt4*_t*O#t~4#IEr5pC49Vb%A#4QlTwbh z-RDhz3s_M7I>%V@e9;fv$L41}=?D2}Uo`3;>Bz?-M8ZJ3kbEwS7pP zw&|;Sl*E`0aM1c7B3&zaSwteL)CEqBt{{IzV!sG}pWyWSclcf3!J|Fr1hO6=N(qD~ zjgnj7bb1QqDfMoh@Dj-?EG~2(4URK2BEj*1GZdJc=_#R`-qWEAZ^!8P6+Gbx20GF^ zLJ;Wo5;`xVqo;%})Ct{%CA#XsPZS|Q65G6w3Ink(@vT1{nAmKzl2Lbfpf&1-jJD*R z3?SA{oYJwr_q+qvfi|pD8S5I7fMR)SEskY#HcJ6kGC~C*CeEKfPE>NWQ=N5ck2q1g z@(vr1ypq)O9h}H!yl)t29lLIfa8ueSH{9DyyyUeAjlFNKm|ciovBHxcI|$VqPN-%8 z6@DaE*`o)D6ruHT0)AdHM?Oy&TiJoQbz{ORlZ`rt9zGOM@ZZW%RY|93ZC!KG1;kjc zc6kw@GR<(^8$?}zY17>$@qiO$!5$(xQqIz@N9zeu9Xm^kk&bCPc6Rm+{i!dLUdyBd z!@`%}yO%4nJcSM~8UChMYfrx|1k3_HQHRL{nS(IkV;BAcD6wA?fd2Te#`0+lT(gxh z8uM-l{uTk=hQ5KBttd}}Fsk{I5)5X22{dDov}5{|y!XM4iY>fll0p3tPT9bu#v)v4 z-(?B~P+MOp9U+%cLY|Tg6NhN8!^Q1tm-k8?bh0<+&nh<9hja6uK(x?|4F!k;J~c# zXGtE6u0s4u;h6^D%q&t4PS5kue2Rb~ORy1=4LC<5toWas5xnV1K%2K=34*M80xq5G zp+(Wh81$Walq-BCwK69V{pRxh;pl*jqg`H@FMD{?n}fd1CWr970=7w6TTw~ zd(#JG)9FE){%@s?YAihh)yN=Cb4lk`Sw9tK$kmDkX@!lsA1w|xhrpKPbgP^lzeUnw^IY*9b^VZ^mJF1F011sn1=|qM-7^q=k zAk7oNz_zITFz~~hih<3T<)%S!-hNzg;{H{i{jA}{Kv4?=B?1{}pDzXm=nR~CUNUeK z7tFvaoq^?Z%o?Czf(9VPy#SMN{o&|m$ZVA4R z8+_&S7WfBnOYjZd;KR;Y;G5u<;BRKQ@c;Q)3;Y_~68u+g@c*2#z-zcA_{DDU|DLwM z|AAYAAL#}^(Fz}j+w9`##r&!I0)17{mXm-do{PH`BB`syKzDK(F|-Q#qIs#c!6fv- z#eOPf>Z8FBzmQTVV1UB83& z3-rwM!(E<|G7P~5$*@!)aFAjA35yKFaZB(oxxx4S)dJrYw*=q84LRhtIF7&sb;H-GBbk)0?;jeElk^ZPoGw?6?gPuF74pZfZ}d>Cped( zbn!j`>00Z>q=M*u{_83y#h}s`IVm0&y!~LP&UY~r-=2~|VxkHyOj%;$Al4bQzke{r zgcj)#6RT#KwPT8juPYcaF^1eSXiUsP!e)Q!*h$LO7Z+@g4tlJ&uu!zvLloOJ@4DMV z6x-oL0_@=>!JO=|$CsZtXf{LHqXlMPggu_Z1uxb%*ZH2z$Y?+->jXJgNX?{0DQ)B( zcfM)SM@trm^P84>dUtf;`@wwiot~ihuHI4d{U|P2-zPuT{r@eqg)RD~GE3Wd+nw*C z#P>lldtl;w`4cXD_hM2({QuACitiFnNWSahg7tk^=ew9Y-&CDxH~)3#yA2J>Dg^R< zKEj3XWhwdblV^0kXJC64`3d}hWTn;DR}(2j@crvI36*J>_e!)e%zNW;4D;q4L5?ax z{a-2Fx2iG&PQFEjpjP6)WE}~BCb0oA@o%_`te+(3N7f@#l#RmrN*g_g3qCvN@*3q^ z!x)(p-&8+pJ#V?&D1`VPH!y(jj&6M45{eDhr?u4iZuo-aI|3Jc4op#9-|HBe6W>&J zYD;gr^Svkz0AGl~yD27okGtsmiG1-rce2uV`96~G=D47~uarRG&=+q#Z0Y+x#%*?M z@~fiD)i$gz-ymaqe!b5=%k)G8MX@NZ$eZ=G#SJsqmlwjP{k4ISmpG%6X*Drd+c8Ei zamE!x!WW;29)K&*nczU@>?B2}L<~!&(|J2j_zP(M;72 zIBg-!vjg{d@qYS8kv>nR_)QSZ4Ht(B(|+-^IX#J~8ep2&WqBZ&*ASg>fD(pGXWe&s zT~`9;;V;5EBny^F<6?dBaeSUz?~=TDc9>3$R1(FN+(_urx}LjYjE>E+fcn zl)4y=!~%0Gt*zc*yHkToMgy=W3Nf%&Sa0-}Q=_wnR>jhGEA8<2N|ruO4L&s*Ah(e4 z4?BUS27twC#ht*02Y|(CXAn*{T|5pjEHYCv8`_TNMa5L};4jC8XtfL+zH;4uZ-zsV zV^g2Li#6iJ4OsJ-`8$rf7RS$c6VKv4%u^RI*szOh{~!7bO21Glk<;(Kr4-Hdreahp z-=;*wk1v6uu29G5lwI1KdgyV~4&`Cr6Fb48{K0W5%D=?kl>i5S{WW&*QRL{%0pey- z9tjd>55~C2wtFx$4ephLmxuu@V&aU93A|aIg7wozzct(&;oY!<-2QZdy|TDZjlAz( z$_$c8YlvkFvDA!c0Wyw+=Y94_h(>y~+2kWiPD){VB+Nggyr;5LqY0))o}!$xC>{(% zDmuFAhz`N8ZPc3@h_JsS6PVzNh!d@>-tKLuc7Gd6j`Aeb6FHGW#b7`M&c5%IBt4uE zeQY4YK9e}bz&&lQ-maokyKzQ489!Iyzc%^01%SnB`<%e)1%SnA?>T|pn`YQ5rdKz-%zor4ob#il-Sx9v`E;uLJjNqvHka-#d0xDPAwBVfGg zEpTm$rZfW!O~yV6^B|O>qkWm=d33Zx*V?8is{UPmqG*4-jH0BUZt|%9Q9;I`viSl4 zrfKPQxXpeTl>ImKF92ScN;>frzDs=hA|8hhS93GdwGBv#|8fI4jZMCcNQ-Rdc*_XHhPhxHVsL>+cNs0B}zN0pHi z--@!O%HERB<(NHksK#pAtFa%(vnsYt(p7<;2Z~qK*d$er{i}V2RTt`Ca4>L; z+U$f<%~XvY)83abmTK%^qP-9L27zJAlJ(&SM&?%4SgCJR=3eO3=&E5wu&w%=U-qd+ zgPj^}GaAWi>?6HF3#SINj0T{hI+Y1}quX#-n>@XZMzR{~q&L{-)S#ZxK=vl@If30X ztR=u=wW&^EM+3m(v|dhN8v!P(u_K|T{zFt_^9&rma@%o|r%{c4fw?7fHFg#EVV;G6 z@upA0wW`HQnHg zS>bODV)!fnbK$=c08CY6WeLC24ZcgP1-?CQiJ#eS@S_J>;QQm2;0L+Erw*{dPs1(2 zw{U}B-`@hi9Jd5tzzx2N6~2Uo|Bh0llYKw#XTiS|w}gMC8~pyh7I;5y34W{_{G}Hx z@F#Ff@DXnCUMqZvgfHa=AKJ%)zb0-8|EaMq^7e?az(0Xog5T%{|4MHQ{1Ds{{0ukv zxxFm#iMS>B9&YfT_O!sik6VJT=?4G9^A`9$xFz^2@hbW zek5)Qex)1yVrzbTOXjz+Zt&UNEciddE#Z%FgFn{Q0{;ze3BHsY{Ov9l_=~tD_)}wC zSYvBg}o3;Ns zEc>qlZt#Vy@PEnv>$}k|`l(~>@5)K|m2U8zto_|1vcDVa20z@|-}RRLU4$F_o7Vno zlI*`qxxufo_Fs!-|8?p`7kR(3_Fvhu|JvvV|GTw6Iwt$08E){!t?;*Hf7HVbz6v%V zo9dGixE22I2H#h5wIok#~SKzMhfswbKoLx;4JyWqi$cgTH8vmtSSP403~? zYK0#o;aj-DFSEv1x{R*^Zt&Z!@s%m#>${OI`dMbxf4bEFN;mjzR{gJ+`XB2C-`EOY zMZ!n8!Ed$N>tkuJQf~0Ec&WhTKRs|u{%|VJMcxlzw7|cOTY}%{24B|-|B!^A;RgTW zC=336xW(KFZ8-4{|CPQEGpK_3joF(cF`>vi{b};?>F4NHfNQ_vI`7%m)ZSA|v(IJL zDyL?6ixvu)%e*!i(gWSGVHj`XP4f`{#GPX?hd`gOp@muPlM$pIx#Z*ez2O~r0iNfO zCt#^6U_von(wGPu{_r!e5_;|HZuyxXjnna-D{sU5sKi?xc=H}>CB(0N-Y$M^9Z8D{ z0pkBPh{gY9D8w&G;t#iqziD`W#NSy)iND;=W`?9O2{in%Qv7{g^CSL99dCI%-Zm0% z4dBgd)KZ9F2g?(I^ZRvlByR`4AMaCHOPY zo#SBd*li2^H@GGEPu<{=Y|Y69V+{eH=mvl6t_A)Z+!Frh-Qb_H!neb%_)ag{ko_HH zsEUvi2R>wipG7VO_#JNW<*o2VC47b(d=iXg!asp*W=?n``XS-9 zgr#}irYNnT7zwXWce>?-cM;clJ6i;_uTSlp>FxIpwY0BjYQK)!j|yymzAxI>(%UCn z+y6ufOVWRd+HVUDpud{h*VNlbS=%o*wQox8hX=MFLG5v{mXhDvzK^N>MO^231KZc9 z_ITeF3wNMQTb)V`A5KFZpDv8jDi zYX3lB`w`S08CuD2ZQsY#{-U^+`+BnYyp?<2q*cuVBq~Q3E9w|O8*I@?5fjFDaGf_K zu>B8x&>o$q%Xq6uGdCw%Jz z@wFy==ouuwBd8cm5mVoUZ!50z#ss$i8%L4&DerT{EwHvf|Fj|BtJJe-0~uw^K$i@3%9^nb$&B@w8+<`4{56?@9(04RZOvF^CH$`gT=oG zm#HKM|9AVj$Xmk-UrNFsaD(suh($k-<5sOK@yi4*I}%QwL_2Jnk#W{+00Ij&@CT7{ zN5TPA-n=t(H?B~{_xr_O#|<5b654=IZ6|gh z1}8gJCtJx*w!0+z2*^qjz6{fb1RS56=0o-V|Fj<=JQQ!ix6Z4D_Wzgt2v@yiDBh2d z_A%`bZPO{~9_aZQ5b5B-(vlv|u zSb{wUHst2e7_}YYnAYxGX|WyQ8nz>-H|?$45w2+uNf^s^govT`#n=uAINNIEBEuTs zKy62O{Uf!8TGXl05KAMq9if}v=rBUhMyZ+6NNz`{qBnTgslgpXL10a7M>xM$vG$Tv zqrFBWxgFs%y+M1Y1`CY_$TGA!w44)Id;nOib_t7o&Va7kk(&qM@YmAjo#1n?FcVD%Z}ZX9God5UWRP{&+Q0zfJ0@25*-1H zSWp|K)pms6jqL~*oVFvBJ5OpX3~ zJHn$nqHPEO8}$kXBI|a9d#e=#Nlxuf8cGhb9pN(_QF|vu3k^ip?FiHKc7>hV4K&)x zxH%5LwaM2e04!Gf%n7Vi09c%s?gaMx^M<;L~yzsJ~8K;SYzga0@_8mUf!ij0%D^h#6E&} zOF$HgDiovn{#OIGrnVdDmuB<}Dzl+(+^nl;;bs|b3BHvZ{GkdK_#E64d|@~Er>*c| zxYZ^CSO{2Hdw`f+Ql61)r|jgUvKv(`MDuV9m901wSi6mTkLO08C>&6?jqe7`sN4ES z!~ezf|QqD-IG3?rpzgmWlD= zm8Za3a7$O_eI@YbO|QnPn%BccRiOYdjVx+P_@Qp_30BpPCDoGs-Qa(=dhb5+Ub4R% z{P%D`6F*<#me1slne<9X-c0G9U&1bqmTzQjURlD=cY~j4b?0%?ork%>-?HMrAn~_$ zgYRgCZ-raA;|iVP4xC-4-M^ren3JfD`FZv1$b9iEu~TJ8k4%QyAGja)=GibS>I}X) zUIcIJ;r+T0e*)A4kCnco%>xvAK=L(xK!Hw~b|Wq+a2XAva6E3}ySJ4eHMXw~jD4E@ zs1N)!Z>tovtHA4!rS6=!*zFQ-$<9^W;J?u<@Y`@p@PBl7F>It2zO{t^!VUftD?h6w zKeOE6w?Y*rzxx=s#7{pr_?A}qIugE#8~jRIKEm`9j6`Q1&B5*VDEc<&TTek^nw0XC zCR=%K?YAfP!dh9xOWx^Hc6ay)*3sSJfCuh?MU@bLU2D2ZqFfWy9p>I*cNiBPFuWWd z#jeo33%KZghgB0Ha5}g`76445ekkEZzO!fRaSILD3qIsWvCua8H}v;^c0w{#XK0;; zuEso04|uBib!5uC;@wGS+$3fPntT!1Bn(Y1>{Bqk31(3sOnHJ?Eqj=?@YuX3yODVg zgXD!LrFn+aHWr_!@7IQT@Vjg@o*G30f^GVlYE+#Y)%(V1q&n-uS~xYj(*^JDQRiJ) z3#I!GC20YHLRmWrZRC!D5o zq35iJ{`P_k%F8Po3J-o&pifv^$$ z*|;V6dldRk@U^V)WhDH!Zt$}%TJTTBZNPbT|2Ye`9sK+2>w0NG)6>w)3arW|wCOXx z73pMrGw5T$SJID7`e@rp>7)DOQXj){;cuYhJ4(~dz!%Nj)vBo-3V57}JRhA>vC)obAfuFp<1R z=QHM9N-qv#Cv~@C-tYutUKoh^g9owSTISJg9QToTbsl4W$qn-_?JYd_l$bjNV(x0f z97~wjNz7&3Fpsoi{x^boJ{^fFgqKRcm9vZ2SQlTU5EZgdy-(#yKHA^*yh& zP*CE-oW9f#u89^@WnK|x&<{$9!7(;kc$WL&3Jt~pU?9B|Vm=eU+1--P2fUmWdJJ|b zL_--8<2uOxS-H@ja8}xSawW41ZF|6w`#YSykry?W4V@?m+B)xXYmGE@VHtUGUuQsX zQgSbA=mKlw7K31$G|W9e1Ub6UhZG|)dmpDx7D z+UvJrE9zp*@40j^Z~+u4C7~$MeTbYpMVb#LcmBd)t1Gg+su5tmB9F8A{)GGHJtlSc zo3N$bLb)ajZ6ynBaR&4z?Zu}<5al!hOnGMIV@xFlR9H!qcI!$SDv+3c-S~h@%w`8a zC)bPe&>13P6@w209#cs;JiQA@oIU=pg9>j68|$Bd_y|KCsE(Kv?@OifRlq>y%A=|? zxNHn~m0){2uwa?wMfMMdY$;~M!2TN~3ZJOH6W4r*Vg29M0k+ZnAc87%@v`RKs8I_1-px>OM(l1MRj810r^< zO@?a~bC67ZU*ygwuC7JL>X=-sOa+T;ow?!QTFZq4=<#H$Sd5N&kjQPrHU*3S$lR zq}Z{$)_@|0YrS&aaIN9EX4l%T8@Qlg&PZ8st-V;`C)auu)3U*1;O{?_YrSS{=2E8I z-HsXk7%s-HbwH<_EX-?-ZMarerXYV;Yp^uHwN`(SAAZ{DpJn+1SyHAn#ZN2APZe@` z>003sGcRcoyH+8=l-;!wX-Ail;_|l1f%Rcw0SEYN$Q&m4GcxzAa)ZBZ#eY%a|DPLt zed`7?%twmc*3k`q1Ue5BKQXwaTv)~pKFvB>o-Rkrr-kC|@+Pf)*b;jC+OXj_k*7*U zpT7q8L*5ASU(%gmrod-)0u_Z5H#kJ0m^$*bu|{EPSrLU9P%{Zs}srqRhl;RVDO;Sk|Se+qo(~ zUOqifMcr7BjjisItw+EXM_n=fINs6*WoZ{Abez?g1@hYF#Q`DLDqqYj4OKe&-p2bX#jXwgE&?j(sQ)`V!@73h{WB>5Zb5{3$V&MsAF zox4l@&yv{Nl@4&JV%Hp8O5``=YZ&8G^W##_HCO5yFDLj-QqF13>Y73UWOk{P0)|U1 zy$rF%{C`_r?6$%OEr~oDJ9){a#;nYbOEtk;B#R%GTy4||V4!#v9 zXzA&yqAx$b^+OY-uAl7cdZZ;Au^L5^*|(bB!^)!6U&JL9QWJEsj|;U}eCs5(Ig)Rc zrUEc%p?vU+@~zT#ww6E4Y`qEBmzA$hd5A$-GDzvlvlrA^p`qkkcjg87)@#f1!_}(B zN?Bd)rAsl%)fI9Lshe^THg9AbMPl6G@3+E}x@aP+fq*ww%me4GOKk(3_1geksLNUH}f9(9RH8(84rF{Te-c+4?Mwo|OXv+r0I(C34>SnJt(&yqqQH ztw-RoF>ig)n|=hp{NLxTSD+Qy`vzqTCwqqgz~moSK4I!Y^`z&-u&( z|0!;XpEwuzq>l9p@i>{L6P|6x$)sHi;@;Dd=JEp$u|eLED3 z-`JlKvR!SAT-%Cfi%%fwXag(LrQt}<8zYaOP*hTkltx6<~wSnWC@zy{XC0HbegMb{z7eo>U~ zPvC2W6pywxRgE^>0H-X)k43@z-Wuxo1fw#?=XP2|vujZ)oid_QJ7xH06Z5coO3x+Q zXB$OLNGpNlkZ;ZuJ+c^)xNneMQJXuNaZTjlLHWR%#_R(b~7VFNMJ-5JoE_^UM&ek(I)H8=PdtnghV{H5l^p^Xu5;_lm)NZpLv;e75I zxXN;CRc*bcm6vXfBs&((@-k?l#CX=9o_(EZ&!v&{!w>)mCfUaH!y>dWCE4=yEYbR` z5Iw5}1hynwaiL7I{njGM{)^Qau{c-|k1a{|6n^=?C)tnWYR_C@d~sfwFN#Gw*+6v1wQG88lqrUQ~MVhu=5@!CpMRozx`#DlGm|Y zGH?47#{3~AC(vXGW{|fVLiFtA$=42D*C4~7kiTN2f%oD7bAC;J^2V!n!!u$kb zZYweW-Nc#a#KEg9+Ix;}8zNEgdok0R@yg=$vT_Bt-{%G7%Hp%QLURB3V|#MXs-~*Z zX}F?fp(ppL^;z4)8lhVfbX2!gMvxNw_4k5W@NTJ+PUU1(rXp(|>Xyn$I(Hf(i8hBk z{7Viy^l^uyseDf`rze`77 z!>jli6z7>#1UzwmmUHvmUwC3$Q9eS^&z9z@4aX%L?zb5BR-@BPCA!Zk}JFk@q znc1e`^gViiCpUrD(SE~E;_Se+inHj@+;DMhbkd<|^Z6A5#Zm_K4BVq)A~PHX#D#jQ znfpQ@=jl62eluw)b;ST~6$a7} z_`J4#3e=_!)K2+{suFRKtMXdo>Y;e>Zd09dS6 z$q8(H09c%M4H-{GP;{)%<4bQAf?&X|oW!mbV6<`*@PMtD{w>zFOqOe4Amg$WR@2Hr z92rw&r;UlQzi;+Ym^J06LM65D_n9oVdUAd&mI5~9Xae*DEVjEQTkPXHx)|bJkviI2 zlMIVJ2qA428)+C>TI@Xh+6MN70VZQDRA45HeMSxFbxVIa!(ye32GU~bPI!N(EWw^2 zz+$yHC$O9VusAIOU}lT`l&V{7(?evj-FP4^_ER~F#U>cY42un#_@5T5^)*>c4#q@; z8%^t>sbgSX{ECW{`P?yxDQOzl)#qtBD(^W5elRgV4v-3|*a3bnYjc2{>g)g?)grC% z?DxG@G>j0uB9pJ1#c!=d}=Z zX=x267#{X9V!`G*MGU8u9+u<;c9OD=B_|vhPngNWo~H)F!wwnQe1p+IdRS8@yvYGz zvD$r3V1oj{;=fp~TF*{4Afpu(aF`HS1C0PUt+@Bo!TFrfo14e%c_SCY_e;3P-Je74?57=i~ zo{-cU5jE1A|5u&beawG#2mW^zS2{|TQ^UF?E>~v$k5jmGN=t zklG~A3GKjG^?eg>`XQ(^8zv6%zpQ`Rc)dX2$z5*ui(&VxaQQ>da?BRM4&m~xb((mG zgdgMv-`5J?Rl>J$ga6Sw*|8V5n7p8Z020v{L+r3(rT=2sNu;z`Y?C-S6}rud=PpKW zjX9@%GE6Aj=tRCdf+?L#l9~4e9tUBkSZ7jR#4TxhoE!XlEBtcY()ljF)}!9g{SlrR z<*5*gH_lpjrKc%L8R*)kb<5j`Wk;T;u{dSa>;<+DAV)tbh$SBarV)#%iHmb>H>G z)1}#WTN+J#nP)JBO}Y*ro>n$2a|v!T*M9GyfMJxp6nZg0q{+_oHKjx7Tk7N>EroXr27Dz(C8DyT?elG; zkb~|)M1ROPDz#QLq`bMW@i>*^LfU&$Dlhx~y-(@xcqPmdzDC3J)TB`SA!jhWK)8ES9Q2^g z8w)+ACY2N;dWI1GkdhQDv?V=d8{Lu8h7!DQGqr^Z=&API0QQc_yG-6O>yU$YJPEGs z-ZAzA!#m0$8hB>(5@eBKS<>80IRbSK#LzYJP1#q#ie;VXeoJ{md8Kj#6~0=gyt zJp7#l<7s9DDkGq`iXq#NWdzEP<^Vxn0ZO0v{@G%?`JXSSI_i<$fI{QRvfvX7f6dE7 z3v^DA|3O3pTPuT9eIN5d*BBG>A4ngt$@5|XMd1!?DF=82OfzPu%P@_7520{@FB@gq zoz5^jomVBDA)q65FCxR2S)nPE_6=N~m(CkmMXX&xzy}dA zL?=yMd4Px^lC)MXkn|)X-GfMrAwXLz=`~P0SPeotAw+4{YbTvl8Yp1Fmq41km(rOk zCZ7`MJ%edJK45{bzK+uuxJ=ekVysLU>0JCmQW%a(i~tw#n4iJ8Lx> zX5$}bL_bqnX$khtTl+V`#cdt)gN74H*c#_w4Jnklo9wx>yzaLX?v^)ILNa}P2hDLS z%r|H`rOG1V#TTVmKfm80*55UOpV#J%P$S1mMh;+X7>Q{_e=LE}3}~^LLZgMJjbtI8 zEk0gW8{L5u>0rcsyXkA)m4-?BP}P3|*r7L=1pw13kA&x2xdfx0K-t6!UMDbX$j_OmA*V8L>|z=)j% zc)+4g2?fjPNRjL#-`$|t9OV7d?du*PxYEP+62Qh5NTLp2*CgZZ&7ROXbzN} zoZm)a76J;0yEl|@$t7&UwUdNvfpEkZl;NvrLHd2TEQ}o%gkU(eeTt4l^>^o1x_QN7!fYZ0XpVeLm&aX?IbU#u! z?~fh>Bd`cpDaUYb5f5O6@T`@uhUT0Pk!4*90UoB*(~nu^Ro4GSmjF zrv$J%yBM=N8Qz#pr(^o3>CE*EU=B5NCYaM++5^szNig2au;hz6+#ra@ZoRJf`4bBv z0sIt@{N#}XsiaFq=gb>Ly@_Rzqi5c@-1{SwcZkiWm#&)r1}JsT12E~f)sz1d$DeXZ($j+ z;!6e4uA*E3vG<%2L;7H@I{YuC?B>`6fym%xp7s&^FQ?sISJ7s1Z{a=W7`;b?@$}w6WBxjL> zq;4jIvoe0np%H8_WfagE$h~G`An`s{#%M5*O~WhyYTXP`hC^aw0E{IJDadK{ z&wvm9LituhllP0(Vh=V2ZsUCMS`{2}jyZkR#_LfJ^SYxbcoj3vIXbUPDF1NqM0r+N zdCmC5#Oo@I`gz3O`Q5QBQI0l1wAOi@E@lRT>9s95WM1!GvGLkO@>&+W=GDtA2udfk zB7%%VCHv}iOJz42w*>#A@Cpa`DVHtqFXEQqSG&PK-pK+Vid%x8=muZ5qXpiBTY`Vm z4Sq5v&rOx-D4LuPGLf@yAQHp>VIt=pg11iO6zwK*iaGIDyea8@l3_`DLx3Q7&iU&>CD;kfIs_!Wk_9=AZxkjG zO-ZlF0VF-~Ldb8rEICL}e#+7$%V!16vK;k0gz{W7{2K&slI2{wMV5s?5L}kUx-0{6 z6(CDw0hXmnpe$k7n!;}oUDRdy2T1{)W4ZF_^&rll=(TsD*Pc(sgSPc)a%QzZ3X>R= zaB1^Pttk2-N4l@xx29%MmeUeNGtre#?#bb>a-At0KHZid5vO4xlv7zGEs4SpO(TOr zAuQrkh5kR<-UZIa>iZu*E+>;qheA@hHKc@5l4+=!8X84S7bR3vD$|XTQOacoGtBuM zGo}khMbky8$fVRzrg6z2l~fYtQqew1i4qC__gZ^Ddq20sd|$8s@AG{A$}%4|Gh=V8qFh!H8Au4uXiKxPp>F0_#SUn9B^YF?x~!@ z8drzE{OMTgiU-h^Uhj(QCkjQXrO&{I*vK=F?*P?@i?I<<{u1 z=35J|e?S@-JQGvqi?ygWBkJ|y?wxza|Ij^o%`EhXYbqPf=EU?vazaciM5BzwTKy&! zeYI|bZ5SL@*e)Pi!)-y0!A5u>K`kc*%P+yg0L05cAuX$vH3b{ubI7uS5>XfgB+a)` zdeAV1qvON^01(XuVM%i@8x5PqJvZCvp}GB%r2-COR*PDvA^zg*;#F{bQYkk;)9|&_ zZ~4Qp536HE@w!aB8<{iqX2o3R5u?vp`{{y)QKkwJo3Ex)1FNg&{ zXupGgUpx~1ak1bR;jRYTO!f*M3BF$}_!dt1kb*xq7X1I5Gxr!ZbMGZL;@96pbafHA zL~wz7o}zT+5%^ga3qIQke;*!~;wV?3qPHHiBN#XMzX{&dP@C6eNR!>0w5JR5cm22j zc=Q6*^i{E%eiRd>jnyG|Bvw!NhtGb=!0wq|Opt;cjh_&HN_0^E8jl2D9t-|%C;Uwc zz91I-+RGgDm(n9mpIBXOK$1}8OqGFxm>i@(22^6WX3@AjMLLDxt@(1;%}BvGrO8TR z(pbGpArr@&K9cwQ&Fl`fbSJe`PDM;nwhZ?=Y&pLFxUBOBbh3FhenTEMCljhFyrUA{ zsvJnLg*(bt_o~EQe)y#DfLAfZB2BI%nDBCN#)X~46=|WXSES`{Obeyr#|B;Ty358c z2h%QC(uC`;T`yF1BSHJRbcK zVxdl?Fr?2|exs{HjL+eb;2Xt)KXQo!{x>`l{7$s#YX(1G?129Uj|BftEcixF_?ilS zLM-^(x;W^k;gRUy7z=)Wf&+dw9tpm6EcnBn9q_;6Q6@)5YtQ@5(fuZJTXPuE3f7%c zLBB3Wovsi#B7G(A$cr)cUCeL2Q(trWd(5eCplZ!K^)wTtaYf zg$wfr&7`styc@p+qIvKMblX+;ee4A*<oL@bjwto6D`B6N)_I{2PCy`4iYt<(!>R$Y3RtEI84Ud1tOkQ zM(u^BwE<}*ti1^LMEl>t`%gpE-Ap zv&OoF9@PL#z~5rkBsoU*hXw~rbK3>(?-LsK-~P~@hw#Vv|DvzAMPDMp@sE3TeXYer zUPJul(De=brFJg+oBx$1sqS+g4TvU2`&G$}S{ddDowK+nTp4yK>`Q!+gfh8hXJ zdS@pL0c(UMT{;!d*vT)nO!tS7o9R_rXL3_}0F(16MV0~)*dsrQ2)YoMzZnJxYVrqG|?H)xLK|m=6 zdao{(%Kt^A)6 z(8Tqsv2JKgmeA%~rxVz>i3a4qPkQh4KhIh%EW=;af^De%x>t5+<36;}8uF{y0T098 zTek6rGy`_W*0+OIc<8hyG-dfyH4)_B zSc#vWQZFv&gJFy520}tzRfqVFz85G zLMuR?Pmp9r6+6DwkP}^yT?z6iIWBC12~=$S!V>!J0L1ynTRX{VqcH2J*hFCG5m*3R zO5a2J6CEW{`WvH1{^RvM{}x%gnxW)?k*W0`mD<`5JCGZ0gqFnT5fs`^>4y4kOCJ)@72U$2>qK0q zvk`7yQ!Gg1ZucNR*DHT*s3?qGNr;g4Bqm+D?Uqh~?B0p1Lxu4M#cCkAha8yP&mKt= zh)!tQy#T~nKp+;TA5Gkp9hY?J3wRi{XeqW+U_+I*>ziPiPHDyq8jnWm$^B>qbMRn%a9Vuy}DXf$2Ud-Uj=7Dy|?3~<^1$tmS zdbi)SN8huNJ-Uo0Vor(wXi?OQ*P^f%2i;XWtbKK|B^x|^dq$ZIKSeWTag2sOetnSvS?@{xOioHZ)kN1!Ls5{(5k}pS7 z?3)q2l|Uw<-)u76ldb#5=w>sJ4N?QmvaT&ZN~x?ME0Y6F-QJNFBzLRFF+2U#2zzAq z!PqVd*SF{fn-89i2Y(;@3V;>))JU$w2UmuQMxzu(KG<__6?`r+>h!t2xZy;!C4KJD zq)Xf5A^WbROV6QyZ%bS~_I=funi=7$#J;1a2O`~(AG*x*&N?o~x?DqW3Hb+eLJE!? z&k$PFvO7GgwUR?VN{UPd7PwdA2u#!C(r-0@$_an%2iDmI)-lTPXUp@3rb{w5$TNs)Re)W8 zk+gUmMM{mN#id4)dx*+H*J3tjw$8NaNj1)<;JBm-#KZWf5u;vxpV$AqoiB$^b_<86 zXtqOIZ~y}++J~ZgOhE_8eRy4X_FA(%*t4v#H*!C?4vk`kP|+P&EojS-K}B-BjlKA! z2^5Wlis~3Zo_h3np<8Y+UP?H8lR=X27%Ct-2tIPUM6Yhg`5?>ElH)zuM|1PdnSh0~ ziM*)QP2GGG2`2Q_BM@URDcB6p=vK~K7SUqcaHHUdSPxO;2NorV zCYx2%hH5a|@L1sjixp!6c}t8{>T}b zRyeEl0i4Y(Hhq)hWU!&&9Vf|g;-ec~V`R{CCmkcybWebrBQ z>FceM>g#KGhF4$j=UDn0fjQsd*OIqNeYM|a>8qvIS8ckgZhv|>f*H$RoIT~*F z1AET})na128ky&udlE4B^vd5mez<2m z)i+pP{it~-ZHh}rb!MJaM|$4*6d88+m})TI($VZ@E*-t_ozzht#+Ee34q8VU(3{8q z!IC{Xy37Dt{?8Arp$iQD&krp6gKpOHe;UlDqZKYN_&FKX;rJlauqJ=|IUA@B; zEv%#qBA=lkzGgUh| zXotdxKt-`$SPdd4W(xwaa@maIQ{tK8>a1L5jj=R3#vIAAnr)?;jiWIro3J7=TmY+= zMQYtrPB9nmLaD@Q1QdxwMYkf*wa{{@Jk5cx3LMmR()3fLxIQsFaRwMx7eSm7roWl6 zy2LLMoO4wtDn}0Hk)ZdJDkvI=2#&ezB{Kg)c0^L5jhSyy@<9@dBxe@Vby70%$MnPL znUUaCpq;p4{380EE7I*G05z%(gf6T+5E@u1-bF!HQR%YL(cIw!)SN06SBbjMaX)A` zmpF}-p!!sk|CT|kN~y6_Owx<51DI*Je64ev{&F*_&Qnj!)`2 zIi*veMoMT-6^eeO0i_`-h_WJZL*x|1A_^rnvFEKoNDYt93{5@riJGYIm+@_ko`qqi z4$PB+=K&?0k{OzIwxPsj&v^0ug>>Uhdzws^sW!0Jl`cSBfj1F#^ImWA-lS`L;p3&v z+N?;PS(&1xAJ~&Fuy}C@ChwtkvjJ1Ar7#0DnyU!m6l%T~)|P7GZetL5k%8SBWV*b@ z%A`FTt@l%sjmrkT3!z6T5P8f{T8QhI;WeYJ!SoE0iLNxjR~x0T`0yLuYbB^z7Z^dE z>({l>0D4$mZ2v=0Bv6 z#PNMvLh;xwd2$K0dfbxGOGq)eB=pXgQbM!7*6mFyrGeK89aqS5W3RsUE-R!L5l0aue7+7L8UQ+GEP_zEB8p~e8ZxW&|E*TfD0^MjQ0ck z&ge@SR8>1mLj4EFk6>|GQN-!O2g2L zoZIqS~j~;e82NXiB`wyJ+VbPSKwG2^@xyvv--E zy=NQcMRIrGOVE=J)d&^cKr^YFBf|Oo6^p{fJBS~-S*a>t;DKk;3Cr6z1#DP;g)dx4 zP-1ihqO)&um{L$3S!R#4Wci|3mW@A`viy&%PHpT;FtfC)@E$7ae*73doLFp^)y3i%{}#8gE!XH^C^tjGXUC=Gj@2? zSN*__lSi_F#fx!%V4Dq?Vr}(#)&S^B2=1xpb%UU%9;newJ+JN2WEu~$JIYhEU_Pa%co~N75!6vuw+ve3)HB8pY?BKtUfkjbw$OknLCtPs z3Fs?gEP!ZT-M<4VV(wFlK<<*k7<<&(w2+L2!wye^iU>$-L@_Yrt?zTo-$1 z>N@MBxc(r+av0QSt&D_jBo^J1^L!&=C7}!b!17&S@uHR=*qsJUNvJO~KoZ)BLFSoy zIvNC*gf0u=LbZ`5B3;`cqGFEO?)(hkBe5 z3tk*@OjY0Ek>C?z!Oy@d+cvdLQH$5tUMON9r*r^4dHq`TGNk=2FS>BX_Z$C zi^CNn=f~4A17fvZ8Jf0t8v%1wMGr|ka3n=uSV=2N(Hn?VsS8beA8674wjV$4EY);k zYL3M!m1?}p(ak@&dE_ClR-uyFzJ+g;;`W=qg)dRP6IXj(8ZDz6jA;M3;*~bvc^2mJ z5}hu4&INp7*P2+CErmM@i2R-CKwSRX?2jYCr!J;U75ALWGf&`|$}_K8wB6;IpAbw_ zF%;#Qet?x5QikA1r?63Cv-MbSNNG;k!E=D9%QN-xU~Nd5tkaXrVI+zo+Z-*5dtwNA zd}4_Kggt>X(Uicjh745LHl&Pjf%OpNe?4H=y1+8T8UkZSY)em`=K_ltFA*4*EvOG_ zmHZz$GU?*=hLjx`7Q|)cBgikx1@iQ>$$Oq`U)|Z6*2o%VB22O=3^1{1r5sz&tp*z$ z2u#(Ye9Um6MY$iN$Ro;r22hFeQv!2~vYiX8hj`Tw>^Kc~*?C26oNm-6%FQmYcyTL% z={_h?zGJ|&DB~WMq8#C_>x%g zMZy7}gGYkTj0JzsPY(E-@rW#;v&=xHIvfuO6@BzGW=S2c$yxH)Ds4b&(P!I*fa>a< zU0oH1qhqUAVVDu^hvsm`$jJ=VcsX~R^P`uU5hr2h%S&9$WL2A)hG-5GU{bK>MLc(e zidtjtjaFe^47JRKA2w5i{QeDgyVTr@DG0L}wkX=?Y3sdX$IGTI7HoH-yLC5m1t^I$ z`Md+BuJB4#6~RF4j~4&$1F7=c5Zd99;5)~HfA=c~{Hu5*_~YbP z{OEUa!naZIU&Ml6u+c$(4jzgAi?QIlf8&6^0FMMeJQjREXMeB2qoqfnb&rKM%o#V{ z#l@@bA}$tu*m<$zlXzq+`sV^=MNcAfj-G}8crASwnYd!yVbyL` zigxw=>1HFzO(fV1G$Zfu_0R`%PKgBTQycOn9q9e8Hy<~q6uI0hEQVeL^AASbYcPD> z;|n|?TgywlUJf3w`dzByJSnLkp?9o5gCz@8o528 zDuq8hl@i|H>w{DjI}Ur6r>?iXE=T~IiD{XkJX9GhBy7C1m0&n5e-oQsqR#-) zHASylilKy~&GVOO4@<#)T37lEqx|N^-S?6|lh*>EjCFAVKk^~y!cpa-<~q6~$94

96MRYw#RDB+HaI{y6aBy7d{Ou2FN*S6nAxspe@@tm-~FjBeu3sA0{KiCp3HwfLN zJ>TOl_f2qE${octlUpZ=Q?->)L2LC_l#|YK1eIZ^oDV9c+=NKP&R)coL~P4y=Y|m* z8pK2AuzL*X%_Z0}xp+I4#7p9_N1M9`S8&S#z88zEV+;wbO&ZC~4wEZ^_OUjLLC*e$ zw0ik|R)Bkvduuwg-E_9i0i8=or$W=gGOQXe%8l=RfR1G)lZ_Ajd0&dii&wkRpCo!Z z(c@b>TWGo&^p-$(+OGlux;4KyX<>W(n>d$)Dk(Ru!KBrnv~t6=6m<{MtY`znngbf< zjO~xEDd~-X;c=5i5N~KlCzKPIgg>(jig%{TF2v-}S7WQI=VBZF{TY-`acePNwUG78 zNRuN>X{mzbFM1WAdaK;&Zg)2dg;>MWvV(_hwNu%5gg-asG|a6(H1O%}X4?Vz>>!Qy z93bnB`t3oJEX0xAc#y;VD|8<~S(XGKgRS>Yq7e;7%jXTkAp?B{PX5K!?0Kry9_ZLW ztDbh~&IMThJnk2hhXAUU9b~8Bi9{2|REF}m?j&X1pAh)uB=sY7FZ5L`Dm#EOPos;m zwftUV4l?6EA_0Ki(6MX4Bk?Z4fo{N#1pN440A`Wm5;tIi8?Y_`uLYp6$DKPYn7?86 zE+%_7CxKWS5}WS!#9yG@LihZQcenu$n##3c-wksgVYJ%0 zVaB>)E+lGhD>%mdv{VaBBZFDP3>{C`pgF=%}kRo9hM~Pr$(iAlm_CRidy{l7ek@awb|W zUQy%LsD9LEiS;W;RG_cnolz zYD^@2OICGd_~U~WP$3q!8t`i#;LBVRv$f!LzP2-u66PGj>~zBvxM9Yz+yKkvp8fPW z(9MG4p>8&=e_nU-0{|IH0DvX;|6v7QE^d1h^i{8x_Qh??$_^MXnQbK~-=n;=D?#sn zA>%vdlU#Vq%n;lV;n^}nzp)qk;@&dzY8&p8kyenD2;Ku+smVoh(x&SYA19l={ zR{~-q6dVe_?rJwd8&)KC$Se+cmSqi*8vs&cQ<29WvlD%)S3#L-e5&`WTOzpK179~V zUocLM-Sv==b$zOL-dSMn`q^OZGO{+?U5AH6UCrv|Z3KMaQ2;(ez;VZ1b-2zAm!scB@gS5)E($wxiKrC>SW>m#=t%3*20#0 z4tOs;#Az+Nb^~D6`o!Pde;uhmFUnu3f+)x;UgWmxW`w_);w%fp-(%pfCcNVo&Z7ps zM9?IBFV874lfZWI?SY|h6smB;B)DPfvbr_gOZC&*z3hnxzBsERZv358%t7e#YH*(e z!_qek*Qc&(9V-Sf)o3ATg(h+#`k-4viNraL)z}kusM8G2tt=nA%kh!MusCjH>F+TF z$mE+PjL+-}4A(_y#q5^;_BwoN(dBv7)uEq}sE+~3ef#Qt{Gm#jyvyWGCM%h| z%H$;`irZOlZIAW+tPUT*G7plc7uoF(JPyok?#d zJ(yg;q!W`QCT*FV&7?V#Gnn|1m~$+uE*~6+6{(|4{$x_gWG|BNePZf+KKq)S!sJpW{h6dONo8^oldeoU zGHK7`944)p#4|aaNn<7rn4H9<`b;E$Gx>|j0VeyH>}K*4lOLFT!{l=&TbXQO@;;MN zChszNlgUaZuQGXw$s#5TnLN(q5hin(%wjT=$rL7&n2cv~H*2#H1~gvzat!at0GWlZH%UnfRC-Ylh@7lY>ltW3q?I&rG&6 z*~a7xCZ90*fXPNC>zJ%z@)na-OqMZunaT4^o@Vj{lX*-En9ODpU^11-f0#^QGM35h zOm1P4%j8-nS27vKB%8@4O!_hD!z6{tg-kj#>A)nBNoyu8m^5V)$K(_yCo_p*@=sGF zRZI>s`JIVk@(Yt6nS9ISOD3N(`H;ybCS^=Ykf6&7O?;id?}sMKZ+U2y`F+PcFEziP zo8Ob)(D27izP`!tH~EGp?>E2A&F|Ufx1aev%ly7=@Xj;&uI9Iq`As&zJDYHoupc=fg}s)8xCE z{1D{lhWn%RE7M1$Uom2MR^Yefz&g&*;ikkhFvXA+Jf>sW_i^lDUE13?w=?c^21*+N zqw@#Q;O-szt~q}*vzPwHUs<0%sIOMQa7&E`|5^EE2u=SphY{)|<p@5h57Y}sK-P7h!6mI{F_N{VH3YL@;mWi!m5D`Vw6yB) zW^<6>PvBr(?jHPgiO6&l*zxD3kq5~4CV94BK(m4yR5AIrVn4RXEEji{Bv(KRT-#}l z;`MzTFJdK%_fqHr7M-dkIor>6PwT^WXTe9#05cpPxNkum4*FJc3V;}8eg%*ym3{rJ zaAmom6|QWuDK8%7>3PhwR^v^Xe?kCYzflDCb3stE{|?SqIqdT?$-WrWes_wl#RdpO zb4}K{Nq&0XDbS3{veEv|z6Vamfjpcp#Bn~>p*&-xR8T+*77xWExzC{-6H;>SNK0Zr z6xJTVLtW}p&{~%Oy+OHmHEE&+OqEW6hU%%* z_P|3`$nJw0QEEw{4GM5fQpp?R)sWM?t?atY|0AfOxs3fuu!2U`7y4&6)UDACiVc4B z!Y}5aeSzaK{-Vy1cW4;0qwV{5UDY~>2Gk3_QaN1Tlqz!Y7kvXX7vL5G>bkDY4cB!> zoU5+gs!&&HV%KNOikuSAItAmK)#&F^XH%{QZ~->%nVDa9j(u0 z{4Pm7AMZ%2Js5H%bxs2Fj#25rtqA-;=J{%C8Q=1oDHlm{lE^Psk51p{17!pccr zY!l$bJ~{#ZG`IsZR;tbRgJ|O&szL5Q^85Vqf8{s0@=&$a^d^+mwX76Hz~Fv)kSiXK zmIVVp;54<`(@0NwjQTUqH$CO*iE+~>#rP&REDt20EM4pl_4Cyr6Q}@ue%aK<7)#4v z{=5gsdte(*ZKEbZUYw1S@X(yT?KMDCte}K!^&0*^h;}!$n8*v+qU8ecc||l(lxs9$K%y&&Lzxr2d0`X zz>1BJP@_8>7FOVNd$>lwouq5@Wjz?nS}22=pK#gHQcw;30Nb+dXbB!fvZHKFEy2#T z9bL?&m2C2N05d&W;-fTwlWw;~v>;g|j>GLA;bIAWxcz3RqQ7)JVhTz;oBRbfCSQy0 z#hio=C4pCXR+S*+B3w4r@d)Pfu(eW_uv+VkIs_qevqvo-axo^b9q0>?p~u+>=!hQY z@xv~U6Vw^?cr@sRf4QIwbw-Ve2Hjp4uK8}E*;2it@x7XhUv@2*>5Mux8g!}~y0c_< zs2?dwt8OikOotPM1#3peBcm^u93kGB&GMKa#=bVjZpkIOCE*ETFe|8)y&115km!&o zGwZO`%GK>qdN(;5!T?Qf6n7z+VAHmpH{fnGxmz5?CCY_{+*u$eQ~XO?S}FbOW%9wi(DRyc63^6947 zQ5PeEEQ;-x7(79Lkne-p!i9XrRThjPp}62DR7IaMBCp3{UJIs zEA}~8wEcteeTUF$y8XIi^rqE;DB}$e*MbMTbDD}Sj2#^Ru>+}m=^yyT?m17g>pASt zAI_qo55Ce2M-xxcMJJ99tB&{-XyW}&(Z6^!@ksSP(ZrolAvZay)qC_esDELYoUMsT z4!HvkIif5zEL%N&CkX0(zj==C?_YoMU+j#Kju>}=^go5& zGD8XsMB=Z701EC*tdHAk)KvRcZ!7jnP$?LCJhf?m{1KGkaoS}vzQ_*l*JIFQ7~NX) z7oha);BM%R+KUG=T4iQMCf@4L7|7+?G5G3NYSSuo7@FGDcd+Wp-A1x^MZGqH-xa~m znO1N{R_r%`lj1i!2>zlv^iwWg!TzL?PCxQ4;t6nKnCp8@4dw>BnTw0a+%-;FQ{Mf^+lciwP z-!NsXm~VCd0T>9x6S%1okGa!}jg#%!^u}ar3B+K<9=Q# zEdON()a3xqwqj3VFc7>mF)ph-GZ8}@pKo(!Vgk0VAk6N{9X?je4-f3HMHN94vaBl-`0|!}G?~Fkt zyA~#AJIJLFjO`$IsIQM{B`7_PUkg(^Sv@N!G|sZX8Meg6sEbI{id}hwtykedrVfbe zK;{ikAQLbo?*K`?E2C5d_dff?0YVQOHN}O8Iebg@?&xW;?j8=i8FDQ_&Wi1aez+g~cc?LcYiSRq=|zzC7PbOoKobDsBAh*{ElP?Qp!Jr~ocSt57oAam zfkZ^;Rc`3T$gtljXMqvIq6_qU9Tv5dOr?5CfFs0}%a4(oi9(-4Mt|9NjAN-ofvHVW z+f)TC0$O$TsM=b!944=|>QV7lCOj5XR!K*-{NnzRHhz~~p{I>un_;7RAA<{&5&)E| znI|(Fv6*{`ZraUE@hlJ*8L^Saf=}C|e(^MN;D~1O4k~VhM*aoN>oLy~M?hUr5M0-h zYvH;Y-FS=mslpse61Jdc6Gd|A@6qKbAHc2dy#S}5uBGQu4}gFDHHW2PPxTc_>-xF$ zknmF{1Er4t8RMdk+>G2nfA(K$C7`UPzar25hC^5|>f|eZgJvbpwtx`b-v@-wH)3G| z<8q5*Okw-QDLw|^7{?#ZVs4;+$e*eophEjNYQoSQ`!XPf(56GkB8)>_Ijb&3wg4Pv z(_$MwWfyt`dZafu{S>}(=nu%58yY!{&7S`Y06~_MudBo^<`BqYu<0vh!dbeP#)hXh z{SUX_hrwQc8>D&_f3`EN`i!(*?AsG<6%Ee{H^AUgcc_aY0NtT-_V?k#y5aAImWIlC z8r+%FP-k=M9RBa|U!+&{=YNm)>@WTKpW(0YghprsvU*45V~$UY)68@j8D_=~{U(D2 z&CCVPh@1ZD-@i07zd{?`cgDhz2uPmHu>zY>d-AR>fE6wU@U3}9Qj3fsJBqYIkq_;%?W+#2-^&e zHAqEtL=pVvQ1OIjIGG_C+5S?Y4f?e|T+q)W;~hdQfAXK|(2IX+ zDOS=4MVbPbseQSY;zZ-v*GGeX-93~>5Kpan@m^|;9xy@cWxy1pN}-{lw|4_Vukx62 z)GK`41dp`}c5&3DuM`=3mF!{Ci!Qbbz6w3o>cTzL;du4@KeR@l4l@glfytKoN-^}3 z^{9)XN}+vbj^a>N6s6b;5kqTq!b9x9oUlRK_Wd+uprx_Nkp@v(9n#W>Ma|vh zXjnhd5m~W+PY;u`g*(_Gm*tQn$|nakxwrp>Aj|jSQnQjH2(Ga5Fa`Xw7TLT1s1A*j zOr1-ldM4C7U6TDogGiqftXhTldZ#QVGM6!VjO^$}L&|RTIV{(^8gFf30-2@r+ zK0s9|lXr=PmH+qWBYeVdiTN!yzst<;V)MJu{JwRM!P(6% zpH_|*3S+P)t)G_h>9_K|vRboES+1D9p~9+*&ReEmKR6a)Wd119$+iB^eM8xG7UVRW_mxMu>+>qHak5THp`Fwa(q~@23}wiZ$w?z1@eD8jW?od#549&DazG92N0lHyhyXg z#fD=rPRsvbT4JaL*bVP*a9w3cB!AH{I0W{oi!)LGxctwjZeNWjJQ$LU`K)~>TN$#* zmN8P_DxHopCjm6GXUgPaYq)+|rTU|dvaKXMfMm0P2xzc35YXr0l?{k5YnCW5rbgha z3>F9Ci!hy%j3?%j#8%{jgS^@6g^6XjOWDE3_f&7O!?-R!zpMt?lyRR2-pML#kRlPz zP+C0jM-TK*-K1W?`)u6CI6TpO#H?gGR%Dcg$2Jj+Ad}PsEMuVm?oEgMIede&B4F;2 zzll$c;wxDoNAWX%hM78;Dg*COe5ZvEw8n3fq|p0(&6~I@)g>96WR0?8$o&4#JvtBM{b< z0YrBq34AXK`83``A>Vo+qC&>3wiR-3#~KP5*ryfp4k#w=8YDq`~FHBNI^VCGUC!IuuGM3X*-7W*)(X}409dgdmV z00Xfst6*6gkW5QGLyA@kPhHPmOUrjO{3c*J#VBARN#G(?Z`3$wN=2h96_v?+KU48mYf|v1kN%24QyQ}f5)F%DD zdn>$$_9cft;cKmZAEZ(H{`Kc|;jVC}Li2!vQbU(|o=(P7Xwg^qYc0YeoH^z>&QX#7 z(Dhic^Cm@9kuTq}RpbdAq44;u+>ln0tl#!w+It~C3IcH*z>kb~%^njtKdi7$J1aCF ztuq(y2UEDg;UiP$6CQyHp33K|xZ?fE4I-BM#wNDhSAqK3Z!xzla$YJx9plXNJ!%0S z5Dq$uc7f;ZFPa~wOYuRt;xfswW;+m)ON8H%owl~Xh;Gz zWS44=w>;+Jeiye)p>`;3#Wr?EhjWcDyY5g!JiR)fPl(V^pY1ii8aL?8%X1 z1M8z1!F+b(p)Rm6)KgS{k9uvC$dOJTR<{UCD_sveLViTQgs|cYL|6$tgJt7VGMm+1 zfUzGX)3&k9tb+!@D8wffxPFi~M|+Z0V9o}|{T|;oWIs9vIQrqcG=DT7Vx!e;=5?Q8 zxj+h(I#5e8{T)-(D|n8xATY!N!es{6-ic9IcEOanSp{$9^3NbT{{sFM%pZePHC@ce zssF0%;Bn2K(4Y2XnEOig`ZlMuFds|EM~{enB&pV6J_wf?TrpYrSTPiO09M8cD_FWK z;9tS~No3{W7s7?^Q5~;`jsg-0?3}Suf?BGFR?^G7MJAa&bD52T#>r<h*O)A2bJ>f1ts(<}6~4i@y2%D>L}k68xwkPRlVO zJ$P*-)fvQ5h85fL9(*nv27$B2Fa{l9FPaz02=*58S`V!veP`H}uc>HxD2xhfE1JO& zW!v@)m91J;$ZwU}BEOZY48LAQn~HBTK+*h#td*^7`SV#>j~{?ufnt>^-D-=>tRsp8 zNK!95&t0NSR+V3hD7i5rEXq~Pi75FOMEM?m)Jf0Tyit@dUlU1`zU3my&&Jjk<%ma! za0~qj@Uw$2iG@8^0EY&0Rnu(Z6eG3X)~-G%$QC1?16oA*7*1|cgaz_jrSj#sQcb~c zXgmOGe&43BHOAz6zP!xoYN~>|oq5#IEM<6?Rv%woQ$$X7^6r)qL^`dO`W}5R4JZ zrjOs5krR}W7Q!8GMQESUnef|l5gzVD;A%ptsXff_q^OD!V8OC6bOAcdy3u(z6P+yH z9l<6m^KJm%Wm?HxFuTb!qmw@I=;?F)>3YsJI`D8-iWv5UY0#%cb- z8`v3R@QEErj)b=F5(yo?JEDXxS#C?HNy{1%+PFhYX!*~WSQ4U1ZE=8&L%7Xq7O2Xd zvT16t_2S6~Q08E6l{*FW?A4IMv$()$zI099zSmH^1{BSZa+#XMVe}l}qw47xocK?PG4_HIj&Rkm ztF*4eL=T`|>V^v%`u05=C|LlmVkVrwCLO<}xsak>*XT#xD<=OszhSqG#1>wH#UHy` zG?89XoT9qNT;Wia z+JVPM9vLOhF-fy!a1HGQ3*l z3XO)N*>!ad^Xju`ph*NBKhlO<8V$}zIA{EF8Y`1*BTa~g^bzGGNN6W%w&6ifA??IDYUk7!xow0gH!wO?`zoEe- zr?0v%|R#b>8l0?H`#rY@|Qc^mFdBByjrzc$Eyfb=Sbfqf$DVW zm{9E%{41D0oBh(A3nKN=Ul*b+bt9QZImrno?9#!ADl`QF_FcmPM5J3l-D6&&z`4SO z9c)N0SQ*S;fX9|dC7Ay-x%u%4yIgi_(}zduCBJ(SPc7*H;nuLEs>V2BiY;+yp#)cb zLBZSo>2US&$JqTciLz676Z2rgWZGY-el*(HjOm^MZvh z+kRZ3kMWGL|M^zChh0BFsqw86Tt)z*#*eRq?}+5bdxD4P@D&f&>FgM zd&DI%vqhJNRzUq2JYS1xLviKtSPelH#@~vW1RY*$cfLl6J6G7i;rKnTJ5TwGZVK+) z7ccI76+n$UKmEV(<46Aly6wl)wOZNQqOvzObjI@cyf?#&dFZKzX#WcZiR=}QQS_(A2PGM;X83D-(y2Y1ebEf3${x+fT6L+r7ZnQ>*yoU z)mkp)PEd{HQmUU1yOg^?(c@CCG88YS_W%DbrG7`_QeNRYw-uXkQw^7L>n?FAb2-ss zhf-db^6LTPQkDP)rkH~t<5J>ff9ZeWSDq)0Xny6-bzwVn`4vtPsHDMOzmk&V@+;Wj zD1qWo$FDSp!*vIWPr^RnSMKdo!>=?kb&|@|4ipc4p_}cyuR$)FYuQ?9T+5lYT}vBR zmHe|_(XOQof{WlnnY02PWk`pn02qTGT%Wa?yUf1$mG|vcn6zW=Ag^o5jfQ%agG$%Zp$1w98sZ59 z$KKN&*K)3LEoXpa#K5tk+qdA8XKu$LT)%p$<{FMgH{J;x%Tx^;b}R#GIF=jeSg`(! z`%N6javKy3Ryi{_qGLJujO|!1!u*-Xu?+o8YiP=sXo8w!&eK6Pl4E%q^z2xr82yFE zu^g|^6n9hi|9{7_vb}LE7jV0P6FjAO|K3>*s=pp0WV zlk4sOgNDel#oQeK)XeBAn{%Y(ts9k zM<&AcZKik_f^M}FIFLRXHtaw=BTqyo|A7PHSSwT5iS!kru7EHjVP4XG4zd`&sM7@@ z!gq~UaJ!LN)&l&q$g+T6;9R&zu=Y^M7%kf74>v7W2%k9S;Q$_}nA zLyuvWmgLVM=a4_f!(jdvq-xDRRhcoiUzvtt+jYYoow( z$oe4Il08L_0o@*`Qz|fPfM9=7z8rMIy_ zYrLabSK_>YSyxJHW5=;r%EVd@$WRUB7FtzTbHsHej$@pfI*#z?e!{Xbt*g;=do++R zzEQtrm<4aM2zrOdIudK(ENz%|&Xg-_t#jrBJv&I}3Vj+US}QZZ1qoo;ipPSyKkst1 z0s!a%@55uRbL9QYn&@XY$}_C3g~HD+!?VzD@F;rRP`{l$80r2AdJ`-5GH2_fXMSVD zqjtMz})$S+9yS zEFKDp)rcNozj5tO9wE^~0(Ac+vCtJ4i_u614--(D9t~$AoQc?LFN7L+qlf0vK*td@ z96cO_PDdn}ML2QYPOUb*?j40RjfQ(_7}svaU=7@Fq4g2Vt)R?JmroeR_95;*C-lLAeAw=%yThh1cz<_~7BV-v!d?*MJ z`uPRkKq83jXzV{ql&h~3Q)N$^zpxwjA?s^LXFJ~PRyrjscKYy$BcO!&wl^zBN6isX zXb1jakkU6Q^V6^y+r|7iWXXJ^Xv`nOkrxBcuRH#REDP8U=N4HySMG8UD4k1?WdX|t zA%b*1|HXl40q-Nr@r|utdsM&P(qgeQhtUSH0pT;;L91We8xW-HZ2>qNOEw@t7CLGX zi%s3(-GCs$jW!+z5R5ivzh)EmZa^64JVzJEcu8+Sco(M(u>s*!s<5*G!6ypM4G8=T zkw$&|s83u`%^o!_HByZ6;T(nru?vURUNvuhFGHo8yKrv1JG=p5ZLVE;cq30lQWu4} zBN7vR0L-VZn!?^0`y=GHN?jtqmFi;rYEjzm_TTMh0|J9wX9L3R$iV1aqO>Pk`>b$8 z$=xjsgJjc2JLkDel*#JuH${{jGK57L=ZKPjL6j{i%D_~cH|k-#UXesO%@R=#9a3AA zUydU}%?$`=-=#Mo+&9W5PBBt%AOO*>_j-oK$mb|rM0mzzEy7dfw@RHPzm@8r2eATk zDUXm8)CjR>qO-)}H{|OIu_+{%vL0XNh>sFAt)Lghe#SdSw^$VWO`=;_6x+!^gZS?) z{uRtuNTq#ihuG`K+m)o!|ABr`x3w&Y=@45i=08!HNLJSwCa@-UK$x&YY{^N8&8g^M z{t@!=DTHF1CcgKO5~3Q9lixk+e)+}y zjQ9<$mBUQs>YR-xn5+3g`g4Euc%n0rrRO^IeiV4?8xQ>zCP9`@A9HYlu29#?07jo1_M`OB~2LaxpLEj_{mZF>HHgLG2gXGiR$ zuEtumK5Fn&T#aeErE7Hv_edGyjE*Fllt7|9k93z1?Q`D<5G^R?`3QB*{5Tw#;Gg;` zkAwEJ%ELSQUKAcy|W2T=X~8^pp_?IcVIQSJMR6U&04cCYji4chOr~- z_Tg0A5)3=|FSHwpnP()_-uE>7p99J`Rdw>DQ_RiV@Tws*JwMuiMQp*Pt$k)^FB+v| zSui74eIV~U;uiMAz>(wryv_(xXFQnOxIKy~e4PQQ-pOc5<*+R>ftD6r%b)W6B&53I zstV?Jq?O(FA9}q$ueOKGQu{2!k3Vl1$pjCpMtm2DEx877N@f7Iu z#w-gWNmDhOe(NmL^!ewbPoY(v3MG_j;hJ8-wZ_Kyq#7k%m+#_8~}EMziVIZ14!4X9kn(rY>pjrD$D!PcGq>i&m{@mk;Ykwc@BaaTMv6(n?KAuTLe zzUD4yb?IEdsH3Ga44apLBODWmj!iti(rVkx5St8X2h}=1HjO{H8veF2-dB(N0fTa) z2~jk*pvld7i-4(?f}T~(vrf86I-tbpO>*%=wl(IUT$i2Ad{^7q?XWk!anI)*a~gmm zFfT))>oW4&oqB?1-J7xS#Z(zN}2GC`+Ibj(yoHCNV zWvp4P>+wPfehUIa2l8eT&hH(^K0&AeWV6XX=Q9*;#l8#)2LpNdJ2kKfslVt&KF>%l z&*(pvTnQ3Koqb1&U z3(vX5Ufz#;;;Qr}iogElryQ~}3$kJ|gM+d%Q!P@T`YuppxY8{(BYCQ232V~QE*=X< za^rB#ag7`fk#lZ6#d%LX*_?NioSAAf>R(kbw4S;VW{jKls5dyd!CG}KlP!#mQS(si zlOPR_55y|i@R`;fxvEcN*i>qgKW_)(B`YI07}yDXb4sa4sK(G12EM$gEfGU%4S>OE9Bb>hLj>TVeeZ~URUF&LDlKnIhCCpw7aU*-8(NJ&k=vk4vxaM^2*`?wL|a`154 zJ^Zay4e@KYBhFLm2#o@NB*W?Z5T@zAZ>zkQzR!wXeNKB{&y3tDbF0@WOwu0yBu#rSU4@Z^F4F_2`>4gNXTfz#k;9o82Ns1x`prssyq zE%QH^P_JM>UHsW3I~bDnv$8rpH%vJ?Fu2v24sb(>K-6c<#Lr_YHFZ8M6sLn&4AqL8 zl2S#v{6%B%5aB&7IVe45>U?Spw)xJ00tu+q^m{Y`PMt6)F(q}V@UM(rjmI$+bu-3@ z`=k}&Fv_HxyOtGL~GL6?_kY<}OY*WlQd_Lf*8|t$UkWmZclk@)8 zrmV{r>&?pSxn=6JV%R;!u&4O<-ER94VbK(+%c|iq_NX2xLchwi24!hIuo=qersDA$ z``D-yQ;tgEy3|xL|EW)Fk)&qi>iEK+_sS^f)`l35@CrYGRK>NpMg1=f9nBGXRGQoF z5Y>Q&FncRO?$_Lo#tX#|Za#e$4?W=f4VN{j;bk#B$_De#nM|vS?VV7=(-sWD^Gxen z+tqT4x{%j=+Hw-=j=%lfKf42568!DHmg1LcIZuC41=`IRszpD%J1jFA&QGJn4}aL( zwKsV%{BVBRgxA+x2;9XLq9iQwk;`tZEb0nZ< z)uZ~t^2?@vXZ3lhReQLIF{lOaC;Ncvd-4nQ9hs=B0c~+!UmT9u`M%yxdklgPWRqIs z$J7-CQ4OwvUh#uf*pG?}$94PEjqQtK^s0c4Fic;#M;+zyRx|%UWu?=z$YiRV*QivZ zKLwrGe_Fx~cdr9FmXuo18!?a1*Wn1}bjVxG=DOp@sE4m+@#XLmYSiO&43(;0H+qFJ zu+^^O&Ocb|ga9)Ii##0@lOM&JP<(T!`*EG@f&>srD z`GpNo>ne5dHuO`i@bOw5w|M)i&Cml+U)2EqB9~B%#&99L$OapfXh~;TkdA&h zv1f(9h->u0uRClmNUsyv9n-U7+G+WR(GREB#h>+9v5KijO+X8bkiM&;T+NVTBTN++ zV+O}HA);@mDObay!MFCp$C(MBHqqcM+=AnxKUr?bDOU&4o)L$JTPr>ArN~ljZ2ySx zb-eI@@Q$K_k~nO8!uNw3`$9+G(*&kRA&@^h2P$XZ)NuQ9t!|e?mvPKBC7vM!j_F4ki>lfJ=BLoL!r&j^MQ^r<@%B|=QL z24%zHYfQ}Z>CHLE9~X4-aXjk?GU$3bAMww+;wr|}!^&jpAGkmyIu`pr1P+#(LpO>) zVYD2Imp^MPv>c}+Ndya}tDJ?FpHM%cOn zU1rG^EFa>SSK*IvDcH(^lS|SQV6>Og5?;SN5Z4Oj;vY7VVsNPcDgzP)ZF&{lt33SEuL(M-5zNuH(S5}C;7A6fqCQV0!cM))P-Nn!3V z<_#R?u=`k;%Q#j2sGrLq098Li25^2PBTj9UH>heH8p|qPVB>UC4_A{Gr`*P)nt<5p zVtbEDZNu5T;isA{Gznk^8p0p+Ef~geapjidHWkedPmy z;vMdjx={}pzs0XT7r9lQ;rm4RwVA+p!?4bwsW3|s@GtP3MV{}w*&)Gc>OI%Ev5&Ua z6$kcE!RD$Q{{nUnu~UGp3j-Unk+Ok zAK111LvCfLRQu!?`^V(BT78dSZQQ}O0LLURJOU$(KcOOlBQgH`Q}Gz4SWKq@*=FGf zvpqCmb=kj|V+baP-AHH$R+aUJ?`@7(OIjvgExmh0uh#!w+p7(P{&~Eb|7Gpfs+P!I zh!#08WAQEiS>xe?tzvc}yj!|AkoA4~3GMAAftB=%R_vB;5ewdXk6rL5!*#)--S~rR z70+HMYrNtoQRU=tl_7`&khQ!~L;i79pT0A+Q*PQSSN&0P#J=}Z0J!@0RAe1%RMp31 zb#ua*;YYv8Bi!J8CRl@eWs};93IBSLGxuS*n z{LvQ3sRXrzDq-x_vB1UMBU#`xcavo7-6+52Y4t-mD^}Yl^d1^sES}p>J7XH9+ipiH zaJ@oow-ZW5gGdGgt|Vipc%P)&V3AbfTluY0P2{&yHNdaeoc46nVk+-y#MEp678`BP zWQ#}*ZRwbqcs%+fE_UM@?h&iiJT7euj%}rLHCZqrmp(iK_XAnnh(g?__V->+HhIik zT|7jVckScmbJK;bx1|1>vTe*G4=}L!Q*}ZS_)Fj060W>YCGy@01otiFw@RHMzm@7# z{Dy|eU2^4W-78VF@F_^#rG*x<`oiIDdvHyuET@eJF5Z#!085W&@us4q1X5hGw*o_vK}8Dd0npZ+GhR5AiXGq=&#}iU zyI@Rxydpf*vHx7v?E+{U_FiGHBd~eT*g4LV)$(Mss;IJI#>tb7>UdZCNe-T%n-L>Y z&QqnI%AkK9u<;c*e7|Kq%ycdS*z^(ERsk`xf8u7l&yNU|XBA9btyV7M&2UpzV@-F}+-+FOx&BU!({aNQrycMy9ty%=coaTH ze?a1ZqiwNhdvO*8%P3SR8)@oAU`BmkwdEN0uvX0lRVPxzu|^I3d0Vb@6oPuT{yD7< zOQCOOIf7Bc-$Gg}__?2WpI*thKIGuAT7`a@5UbIhLjh-Wj;MftW93RK;7D{xp8jiy zDX|Ai)CxE$tbnIMhaxH9OQ2^f;J2uOM*;tRR@dQIDk64PUm8sTCv|oy;N(uV6>$D@ zCsx4XF19LVffU=|dFM&4JSkU0{<2}><;g}h#ewl@21EgGb)L@EPelQn06V$@+WMy# ziHAb{u7Uz??^;U%KYTWF2-%X29OzTW`38n1qB z8<*yt{nv>!Z}%OxCak=|(FAJVCC}(q>$1qBdDDfoXkNP=qIt88=3OLVXqD=l0}4OSvx_upQ3kXw(<<48EU$GdI(dY|XGxOB{f)!UV}4l~BrnTXL)s%y z!sao2fyt@;LsTanTxb*9g!>SpuaO?P-LB{~EGHP1XGO1nT32)c6rWdKVb+*)0YyKi zl7~QjY-pCxA)J>Yp&Mo#cw@-6?#RtA>xLX)+XBc6Oh(8BpII~$F2f33alX!-jY{D( z!gQ`I=I@$_k1{NrEq{OSFS-K(63QHTkuI}vHAZrf-Sj(c*)4!)Q*-{P2U~8mwgYxG z!%aIcbMcZ(kL%Umm)I16CC;lH;#~ne%w~|fxlTnc?HVqHSO*{wna#lQfuR5o&4zsS zr}aKsY^zusv_3{-TEH(ZhD&J7R@jABK;zQFsv)*WE+K#(&~^!i3u`u<3knzpumh!Ncb#@cn$#Rf`5GqMsB6mm(fgIf?mNvw}Q^{rMYaMjRv5G(9y-pQLEX6Sp?_lG(cPW zWT=&|blmw)P%sq`K*=Xb7JEJH!n5_5t#q{kB25DI1WJ0EE9=6;8`{bRPwIAS zL7OQEl+h%xm@M6%_{W2lkUPTa;sbc4uYUvFHe}E-PDkMcx7PA6wTZ9=tMF&f`grW0 z(;H?%=9UW)9S8uszD%UZNYTve2n}&7GlWKk(D2WxM6jX@5N2+63OK)huwW5@>~$#F z5@O}^QJA6h4&~SvxCGDCdBBu2bB}0>`hsq{e`R@QLGL(q=yw!+KF&)f_7Cn%$8un{?h4_j z7oao-|3k3hhvH!snP2xq17CVzQ%tzJYB{O&O!5~jL(~;mL6OIVF2UdSy+INp#)SUF zO<84z=6fdKR19sn7EqoAAXO&-9cpY8|(YlVAjf4`iIkD zeFdin4zw@LfkDc=U8z50d}+BVCIkzR{`IAwq!$h*9n=fZf(|MxS)H1 z8QR|t!V!n|iKv!qP}LM!NJaIE3_oFU7ZISG5OjSZ9}oByEKZqB1Ky)PDu*PC zS7Ww?mofjsAw+>S`y7e;AQNm#85sO@UsLDoNos(w{(=^STwvyX&qzc3+SO+~@wRpx zcXq_LgEq%t3&XJLU`B4wiplS##=eI9v^U|xN6KoParH;4&qbl=GM+PtvKK{9h7#6* zeP)AA0+>-4djWs9H9QxWu~G^Cu52Jf+D*(f`i`|*fO@cLs&VjCj$IAx0p}x+IRHXs z)h_cY|8&l!+pm)Ns=*11v)sis-qpYt`i$cbOquygn?YT)3gs_=6SiWX#g-1wBCXz` z`R5I`51-Cn)qPL(o%6L9zv6NE#bklHdjE+OY_UV@q%bWu^f`u7Lr@Boj7;$Ps<{b~ ze|(C0-#|&OJn~zyr=lTcX9AyCu}2~Io&v``O@vPk@XZwD_zSl`X&^fd4yfoV)U3Vr z@U$caYtQQZJQy#g9WZ!SMLGD}T04#~0sZ$F{(V3H#yLz5#Py}u{Xqdr>Of{!S`4AgGj?Q64&Jn(mh0C{1Fd_;zB}HE|+Hl>1-fb z7B4R57s&Du1|kBL(SBlTvEH$SrFKz~wn7a%44Sj&C@9HA(61VshxisZ${-sb|0ulk z7F@%|-ra_cWUTMG*_hTY)R^*hPJr!Pc8aeY0wEW&OHC@OFT~Qsu-K@cB0aOcz(418 z&c8Smo&^O|If%~#RQ>4BI-u?XaKI-Ws$uzBVJE+A;=+CTVZ>YhtD;+biVoj)L{HeZ zX3>X!ty%O=Jkf_$CqB6^5H4K3`rp+11z?Bkolhw_^?n%?JoTPftMHqMUO)c>srR5< ztLe;R=lW!gJ(qjknjvOzt+8*I9B;3&ZX^*I@y? zpx><^zwaVrT#o34k(Svag8kg)u?Kd&1AD6*_Er0FVN>v^m2VPERy~3jIDtMP6)L_6 zgHOD&*C*9uOZl$ugx2=Mx}wf(s0Z{be?GTN=;20#miL-{P<`g3Uvu*0$xND&ZH$#g>#*L<p+mQuQV*2ghyP$S^Ox3b1eambasSue6CA42Y-FP8VD}0d)HR8BLcShhvH1S;hN>uUm z)vx^dBS5aEcw$g_6rnfNw>6|9pw=)9l*XE%=uOIpi z2X>wPxNsuG;A*ay@giDtz4}tr<|@*!{Q2jCT+QaXywKHLUqQ9k~ zTkTw8hCwuYG;EpQQ@Ou`dLczW1Oz5#?o_(S%=LU^bqe3W|7B7$>T zl*dl`%P3o#z9pP^GyZfy814F*x4tydAMN$gofsIJ{Z?u2vkYbo}6SE>&4ZJ-7H0QC1*F8T_kE@4U&97+`g8WE<{Fbp(A z1F0T(YjtmaNZLe&;wmw1R?J~XmI1A{U3)(Sk=4=|< z5ko-ELs=P^5s-N&*yttdM8Lz zf?)XKD}6T%GL9O7meXfjq+*ro+E1wsXwE%qdRhY?d_gF*A2SkZPw$?)Lk(*QJRM*)%{Xu_=v8vLf0w#GxxQZRrye!=M6ZAIf+R~?LPdbdPHlq7OYkTWzp!}@0L;Xk`Jy6^d4|6)rd4wtg)FL>4MN_=f8aE&+xmS=c-S@V zDb&?=V6aJ@NhIoKrFxq0z3s9|Rlz0M?NX`!LlAGfY*Jqm#Iy_Ury__~eK)Ds0RoxH z`5ZlcE4t{&^n>3i(<&9}mX9wsymtT<1Giv6%N=#WWW0Ly(3S84Od;-oHuuJ&!slOo7Nfhb8 z)-~s=uWF778~w5)Ucy5_F6#NyS??-!_3hXUlrcf`msya86NecS(y?*8@Bx{=(dPt; ze&d|Z7=K|uPT!!!3tq33-`m$$y8Dg(PQUR}yd&3U1$LK^g!gLCZBCc)UKr@$92;m6 zfi{GJo(Kbd>;P>c&@*A6Lofs}5zN2MwkahI0MKmZ6t^`DbdCd*L!g_&Kuf|v|IQLh zsz2VYIRi~q`ZZNw{L8R_^tiV-irC}6l5KbAM;g`WaZ{%1UL#=!e|M-!x1l8i$#93- zx9md^2toqg@I;D&+!1W}R|cp-b>%tU9~kYwaWf;332O69VP(gu5m`CYVdc}BtgM)# zS$S-_W~I>rG-koFMFXL)dYbWA%bMEM;7n>$E>-PEyfoT0youJPQ^w#55o`X_=jvtX zqVrHBOs+mA<7CD7N+>*Hw#-v-7?HYP9ykfF^j~vm3-~`P82AUmM&~&$gL^MF?HhwA zEeDZ{8ab6a*9eFwt6)}Gc~n*P3>&-Ewa%{`~T;6bev)1jvbs1#(yfT}3v95!Vj z4V|v+Vt64zn)0^#;R1dPf86p3r+`ZV=M=CVyY+jR0$TqcYi|NqRkgm49|x2yJ5*LQ zXjo=cn%H2NT99T~SY%dIX50p&x+#@)Y0&Tj1|3n#ThYwT21-jBEW$)86`E9 zX1SOw`_VTMqpZ+F`a43o?C1O2HP-LJq;m54bVq zx`GlT^cDzpzWY6JmVWp9@oUU?zdwae^t<2n_@!&Xm#2IQ2}@Blwe~s=6Kh?gp^J%2^PP}*88W3NOA^RXR??+}V%G8%m(f~dI4jy0TS;seUyC;7m{JSQKA zjVkn>j)j(5p|hf6nrVcl*qByWp@*u_lR6eU%nF?oEwq~vx(QaGyR@zRwr7dm zgY^ZK+ympPXcS`9%WS-n9&#Fl@1y4Qt?ZwDqpa+af2l_D5l(16zlDodNzuW0B!4NL zGd6{6#LH-C`^Fw&V{=N=#xcIO^T4yl#?o|}k$sd{a%a(d3IhD-?FA7Lg<$8c8oeK3 z4ceMc4i~HCP+rYk9AEr4 z+MW0@2B%G1LuZfFSB3H-VkBQg{0mo6iNW%U06>EtU-_ z(9CE)oLgm~gHV7h>Ud+h!mphk!l%u*;u6Mi6{j(|%X`&dZ%FZt;Z*#JFoxrA(VRRO zhOLuB14rAT!{3n^9p&VGkmB3MQcP)%$jPSZDzP4BmcNt}{$Q*zqc~(UHNOd$I4=lb z3LW0u#+}0!#FAFL3pYJd%u44K8dWRMs48sZ9W-&y{u7n0?7)PI9N)LWmjxYh3ssza z{}9cU1_TDF0oL5|8A$$u#Fdm7i{D=QP!5@3HvD$)Jg(_s`+Eq_?cRBEZt<>dL;Gqz z;~UDSczhfcA-;{wowo%xgkahv4KJiXpc&6VPmqzVS-j z-*YQ(CEzq&#d#u-9H2uuKm_;;o7f; zYe#N-!$IwE!qlcM){}Bet8a11?%+Y6utWWVPHMyYqs`ufdr&_zxcb2iZSX&JNv}Zj zQ(HBJFX8w)451GQ;b~UQF}U>3GJf~T&K~+ca;wqLa0#E1k2xJ3IQU;i`VM{#MsXq> z{CU&V9S^?=`b(w$GLEtO>*I$Wwfv+E@_Yw>2_!~1`1YwPal?(sp8NtdT`=FdCtYHw zXevijCZU0X5+-IMMFEAb7IUdex~G(M&p-#7)2emi78j%(2)Y?c^YW)*s>#ihWE2S% zV0uZ8b)VuGz0)_K=Ltf01OWniTwGp82 zAIDoXR_C?S`Fh(|poB#(O}Q| zT-~o(pu&l0!MV+xAclD`ftr`?gu|tt^kR zw!+57Q8#G526MuJz~N+xX!f7In8mU_APv*)IdpXZ)&ddkmxzMr&yJt_eS=u)SD2X5 zfu(L9?uX7L`Vp4;>_0X9d9c{(6eheZY^m45*g9&8JOp{Zr7k%z%2F>d5=TLzM$j0i zZBrZ&wtk!Ma(m(H#c3FY(9OqTPgzh3 z3=@@o_^TTC|0oOh!(Y{q5f2$Z=gZNrPcM4M;)8&tTob@X$8-(CAZh#Ix|Mz|jpsp|g2}ml78p{VB zjK?i0%Yc#q;kVR+-ra9Sls7bfRJm9XrWItmHgVYQQCZS7;$;Tp@XXLMyi<2=3CG%R z4V5g5!%c6(aP}K+sX{+OuD@R#)f5^!3}sRBX-r8L24NT2oWlJ7T4qy1u;go$P5F*H z($m`3p`mBMzi4;28NIg%L$A434gDFIr@G|Wu%XX_ckRf~cMJ;~`V>fvaLNBP5+~B& z(T>FXY1dkyX};sYokaC|^71WT*1Ev#_i`L?*XyDdWMy$hAo=Ql5C7A5plyf{7b3)2 zBo4yqkazvzdf$5RjQ9NsH((VUGn9u{dY@S&MPnvSvKh-GECFrW)QRx7yf?nMnd<^0 zO@Pa?GQ2Z)BHJNd-^$3cz!R?xd)=~|qrC2!Cq{T(Y6BY<(d)`vya%n<-3+aUy)Kn& zyza_Pj@K9mg^|hD1k1U0{FGut`YC>WDNk<7gclG$Q1B^G6hvy#^WVdZ+`lyHHR)<}MBY}%DH^WHOm6&HNu zICFdpg*0#J0*L)qy_AZ zQooeB9+shGc;B{ZQInqLcJITh!^Lc9PE;{#!rNr0USg_)a}S4@YSc}Enpw7(-3=!e zE@o7VDQ1&BrK_ua79rH!3+m8$-D6gfW-Xg6O(OHoUFMv7XzDQd%y z*2YchVJK=p)=_6MF`QPi`|!${Hqf8KfvOFCcBKZp6t+~23K}DuVH z&=t|HewLAVEhL7PaxEils0ybjhfkM{NTA)^QQ`M~wyNZlRmUq`g4RHP-%mI;K&w zkcu<*xArH;{{H*M-`U?_jNs7zBHa8(|4<`%4L0c5UeEOuE4H_2f!JQa*xs^%YI`fO z6-4tTD_Lyoyj)~>hi?AhuotG&+tYaAw9fdQxcPYDcjV^(9S(qA_+}Hp26(d$BeW~h z&9@jg|GMxy3SdpRqGA9anTl$5X8~Ls<}=0I%|zD$qKy6nb2K_Aqw_HNOdZ23(PeZ< zmS)d^C|T9W0eqY%Tt>Gd&pIljr$Cs)d>Mq0u$ZUI|fe}?mWpttB zm8@$xXa%Rwy%|_a@63uQrRgQo3L{&K=cBED32TFF7SDSu5{F>e3QK+sofv6s)iZoE z&E*Qqt5j4gAV)X;}@Qih18fSJ1O5grL!A84c2)hEDv2OH3HVIPD5!fFd z-%){hHL}D#ZA#oNodv*MjGX}b8~z!c@ncZ^I{a<$hIBFecgA1$ZUnypm*oEhb#<8F zDC8{bpowUS1_u%iU5Be~mFFcOw5q2;B}3 zevNWkeI5y!;o-rPz|gKfy1kY zT=Ictc#V!*#f_2Q{CU@W^QTH4=%7`6WtdNIHj(^L%tLR5{n+c_m&jF#z6n3k&6=>z z&AsMQHR5w&%+(20MeYf9r0*C%^r(@(D;-q{bL_WVjOB3e&7zJl$1e9H&0rgumKnQ{ex2iR_UEpXW|=tjgGWd+S#+I$Zsq1bPo z)LF4-m1)#Xt9b*LOu}38KnKNsOqkC?a+2ZS+Zq41NOQT)n9DypT52G9Vf(P5rl5t)GVO#;e08@lo9!q zJ@a*4%)JlhL8$ksx&+Jhul$;CC12rKuG{o8L$GG(S?0~pmlCzXo5euUiT|6i=eYyW zpmN8abJ1!=oH6j4jP{{!-gwYQGWIMN0F$j@YuS(_%Gh%p0_=S3S>HgsZ<}G?UyMqo zba}{N&E~9rTC1M-VkmhF{hEOhtsW(6i`kl#V!mK(H{Q9F-A< zcmg&1Z}(@TzLQDo$x_vfMbVL+RBMKOVOIqFR~XqWS_64s1nh+^$Ph>9(VHdrF)Mq6 z*Ms*_9|mep4L|=6xu3%O>tU*Tf8X%)sl5LRKdC{=JETavsi4sY(N9ERNBj-m0^Z+~ zK^zzsu?vYu!;1IwdEZvJCW>o$AA6n8FB6+>(JlDBXLt7W=iKpCoZsVU*dGp7-x(Jd zPWlU(fj7lG>DW|VVJ0rX#{(tAy~`W8LNzxvx(FFa3UJD)|PB)@3TZvLV^h26SU z{yu&)k$qUN`@Qr7p(bo=;f|#Qt=$v-|)H9v3kCuqg((@a-b{Hq8+P#d)rniGw-tuP1n-%an@Xb?~6YRU4Yot zoWQY^o1sZd1j$Z1&L$g@v5%Oh^2P7mRA!y$q;kQf5vimwq*4ZUM%Yvy2NN)z4Ftl# z%?>g#ZVKz4{ks(IgRMF=g`XY}k-{zKY6`!iy%{?j47u?7O&AP?T2PxVIcoM=-tJvf&tztq%)BkbN#>iEFqv8MYA|br2%cGoWm3A`+AqO*qp}37{PfX5rDW6zKgu8PR9+4M`w-5e+u{S zj2#hEy>wt;<^$Cu5N1spx6YMyEz@B(bf`$1a26ldAU@wo?z#c|H(a)RY*fiZLCKWU9+i*`%W_W7+pR^(y+@2t3 zcwT0No=a0(J2bzGNqp6c0(+v72>ykI=!`8~n$kv+k7Z%-rfS6DmW z`syCYLt=J(jaLuWTF{>1mr2q~mU1ie;J<%-hHgIQ3y|=lTlW{~55I(+nh`4hY*XAT zUch$Grnr2$*G0E?msjQ7<5_vBY-h*}EAJA}@hbMtQMwtfDManw71pg6u>AH(LqWpmTSFxmA-4UhMQlM*Y zKJRV*Ms?3e?t}I17H~=U5q){ z4a-#O&8Gk|nl$kqhDfA^r3Xqu<@CP z`e1%La-(_e0&U2=4x8w>h5I0APS>#rmux!BmIqK$Bby_^g8jn$cC>K28~%lz@k_Z| zMK8n(E(`owxTO4no$-GSkFS&eV|aWWPqo4oblAT;T;j|IS~eQS94k6!#3LiGAFi=nPPEKc{!1gS#Vp3%R&7(@If>A4Oe<)=%7c*0xJ> zU__jSDJO2mpNn7K6(6F}6`tsv-@vx8dD6^po^R$i=gE`Xv41~*K|m1&+}NEX(=y@m z*1dF)dS+LiF&|RSE#BPs*$ifELiy!57N4Jm*_{8=)aD=VV`Dz1`|5uG%hcv9ObM)% zME`%D+I-X3TTtK1%WZ7l=1=Ac&)%IN5eiRj-WTILY3|hKf9#9IqUn@@D#aw$o!TsU zqBCQm15Rx&6}3LilRve&OrRETB@`!b9ooH(AK8pCof|w_E<)=;tJSUQUt#+dY2*teyASZ((@ye0eU3T)BnTgL$$z|6% z)5N#0qp=-yhWFu@c;ThdFf$^Sj*-^8%(g%5+^Bb69|d8OQcE}uWp);VbKio&==7t* z?2yYeWP<6wpn*lLn>Sx$>zoeS9*_K8_vIUO%e4LZXk-WN_|a-R2agR0g6z9qM9Z76 zIIO;b7RyI5+-+X}ST*6JcVX&tFE;St55GOL6Mwi3Vg4L0_=W}gv?#HkeGxEmP5?&kn-LEFRYD6!S zRn+*;Ob2s2yV32ZJ3X({$47K9DcA2tPqoqckjlf%aDUKZySH$qlQmNx`n#-o8HG=? zrWnyCvo?d{axZ3_VN?=Mr6OIIzJ4v^epbk$)B+U?6+$VgMnIxYM zk;z;%@TDo%hVVVHv!G@jPy3-kge8VT1<*2vUCJh-SeX~0=MR8Gl#fEugJz;YqiHFx zLwKECi1(n}Y7m8yOIW<^m{^51-t5$KU$(t~r=1IY9dJ_~rXLubyI-q3!lhQ;3fyY$ zsz524A>Jzlw(wJJ`1BfqCkec4zTFlB%j>YIcL~PnoML@8E~^ix+0@#v-n=0h8}sRh z9oA;AAn#K1W+vmK?1vzq@z!zdXge78_^E0evsnO2@|%X)BJ7)Y>vd9g(ZfRf4?B3t zVA$Os8$*}Du;HiK99ZeyIWEG``IK+yPg+Coi5Q26i5P?#CR+QJWAFdH|L^Smi#>dM zKReRi-y5ZAdYN`_?7hd^u=n}0$2_*2_!Igw%PB%!P7(FKfJ-Z60Yw@bRa{MhohZf? zf8;Ntm^s{zBOUgdtB0YdI(nF%7NH0B!e`d$a9NGjLp#(S)&s*edibK&(ZfUk`8z$_ z4xg+}ji2*!oZ8zXRS(af7S_Wq$c3fHY<>@|%95oXLiFA{vv;6*&ckdXZ}(;(MjhJW zyODNSjZ2g%n!2`(ew+VyksM$nIVjTe_BD}=K_r`B#5Pzg(rw7O4kK|)xOc@m?hsst z=4aE3Ay>KGIBYlrmtwp+^Z}4Pfm)zwnXu0eh4W+v$+ml!yy~}Zm`VPQknmbwO5`1= zmkllqrg;O+9jqWlivn#2{ziP5m_Ex3Ttp{|Etyd6s?xO&tz+M2QBJ$}7>c)k zau<%#Tg;^r#dRE(Ugd2)0~RP7CtLP3vc(@l8V8?^Tjajk+()h58~=dL2SI(-?qy-0 zu;!8QgQ5M4pB)(3-l$0{p3j6JMcgu_4{ysrlC-d>!V#}9OR&a+Ei8Bx>|kbnRc|rI zn1Szh76!s>%i%F zT<1ls^fP+q=)n`XL?_c<1g*tl}Lk&>XuA{x>`} za1Gq1BhIX;j#>m=E6<`!TF75q&`OE*`0bsE`MYMMAblr)Zucf`LxHFS5*^XhI^E8q2#IzL|lqR zJIznOtp?ohl+FzJ=-LPaJ{XsD6u%7b#PvPB-11o!K7dQ|mvzP;9{CO6V@$iVq%;1R zk=?^&TzUb--rIpEylp&e;o)Z-*l%RuDfr!ipS~sDeE2QtL~W78pNz`>)rbH#ed|3* zagXs(#>0Fb=JHU?LjezW@o+m2xA2g|!}UB&;o%=VOyc1p9wy*0rPOi0e|(2DjO4A8 zc{rYj!8|1La0CzicsPiMK0E|@=*2?}4*?!_B;&A+hb=t(%)D>!Gto!GbH?9`I&Rel8C;^Dvc%Yk9behs$}mgog`w$l&2@9>(&J%EL$=PUhiw9tQJ}$iopl z^yA?m9{TVQFxwrPhI^)xjt{>E-fpGY?aFxR!^jc(|O0OL(|| zhYTLh=3y)ksXUD2f${Z@=V34pi98&^Lq8r4;-L=@K^}VX5W_=&haHHOw~dD_Jp7CU z?ccGp{pTU0J~z1cK3S`9NGpD)`M1yYyw7SqA7##i%{keelgzoNIcGL1|E4eXJi?qe z74| z7<`w}N2VbIT{1&JE`LWz_j&b6sc7%gx!( zm&N9~-kfXA`9X88H0Qg`xx0zyzUDmD#KX6nLk%8l&gYo>(e|>3xj)3nJ<6O9Gv{P; z?rL~JbN&;0)pa+i7mX|4UNa7JAF&kog4Br@oS#;_BW>2tY3%)m3I^oyTzuz%Sm^m5FU}FYkkx(Rr^a1fiGKiD{NykM>dU5)IIKr9U)kCS^wc3rUSdX`}#qXGj zhiRcj-C8NJ@RwjgZwzGS&EVh?7KUMx)h(mx&CeXfr?LKZ2v!C32A3_}ee*HyA41Fo zLBDp)fD^q@c(uScyZEwuAb5}T!wQG96DCBA8eslF1Z50{eS(G9uoC@>>5zpVkiOmf z?M)Sg(G83r;*Id^yD==37D5`)h?5wEVoNUW!Xy^Qdxihr6AK*lSzNw`r_CiMT?~r% zuI7E}4YG0n0o*4(yl+9-K=k361arIH8xF3 z`0zgmB!uEO9f0kEu@6ykOa41uydQ9*PF4ZfM;icz_$8p>jWfQKF^=VVKim<>kJWCowyF|Wv}++I7I1tF8xEF zXTm_vyWOmla90oGMN4|gQv;e1aqq}Oc)iZ+i!*v+I?)j_5%>%Ve8495XEu0?*6>aK zm;v$fX^&*QW$XGH$C{=O$f3OAs|MtxhXx<;Hv0cCfLw17_76d*>~!^C8)TT?@SiAx zh60m9{x3z|@YmKc!9n<8lmfl+^?*xSlv=Ev*{ z5M{B&I~`kCxS4wN1I*M#L!3{gEaH9 zaF(1yPD)7mF}3$IkZYQm3G2KTnTEm4V`}FmKqJ8dy!MqemTMZ*iXR=opG;!~&fayB zU8ByPFKJB2DOhkJW_&S?dutkx11M>n`~$Y_WU;Hc57Afe@+Va67g6t*nc-}^F$pbA z=4Z{Ll2%OGUFm&5HYG5VmkXQubq2XXa-R!x%O&$--g;FtsTQ{-linPlKMMxb1M>cO z3`I~)ux38zv2|!Ey9QfJX~dYZwUkSbQcD?q49_jz_5Y!?b>7XGFv^O576|Vg)lquu8Rlx-t{B|>3i4afe2~V3VQrY;bkxL_vLG@rO}2a84t@ytbH9e z1wTk_vG^p7DV{zc-Mf2+#Ia^?+!<4xU8lgso|Q07bPr7EjfbfXmdQ zw%8&XT!(LhdbjdE-EYlRavzgr-|;@deTYb7!Y%-z6Q$jLtgo~(gy1Xf)g$>po%d*> z3gLUN2Ql89Dg~kWLJmuFUl*TWVEF%3{vaka&fB{Hio-8>>*BRu%AI=#mY4r@hw;;1 z*1mCp;;(Dsm&p9@p|##T2+_R1+gFLVr=}uN6;U#{({#LijGvBdDB6$L&jU0apTq3n zmlDMrorcNf&R?rKB%U`0)&P5 z>VU3K0#N+`B8|eus^WfB9cd+VOu_jY<0EOsAEy<+?;V-|_hV{_>eRkBK_F_ANduB; z`?`?C333(8t96DriCyFIv3k`|!NZdlF{~eVEtC zgJiE%kQT2<8R1IFdjP(a&-D9}{@2t-!FfmR13eXV*_U=Z>fyQKupYrFSa8gK^bKph z%bLU~&j1LAwa$BCEk;|X4@lDN52Ef4C6-*)Wq9A|rFg7l7m6k2r{pL13>L(}-f)qY ziqATx4qp|VHw>F(j4tUuOecd+^KAesPs0Az`7x(M2u`Q*1aOeI8MzAkSKGJ|MWz!Q ze<0D=MqxU~yrHEPbVH#tv{ix`r%7p}0uM|=%7!SRy#a$T&D`x?+mSW8hgZ9I$8CF> zVtc{Q#wCZ){((4&1$5F3i`Bw-H5e#FY4F2iK#^o5G!fL8o z%zFL)C^}H&8zOa~%zCYvJ^;dS1wGZrg2bL_x!ZqdZ z=o%~>1cRJ3I z`csVB^WETmFZMH&8@T6pCO=j<^BwP1+~u_5U)kJY!xHfXTdY4}O0W-RXBP-QCAc1~ z`7a6v#De5K_5j+^_(8f?d9Rp>msWyR8>4>XgcGE3yBCXm$GD+1s9n>&S@ve#uBJOh zc9;=4jr4&X*?QiuQW*4sn{hFvl;Ku%#(%NR;r|yGQ%V`1T<|-JPj4`AU&RM-f%sD$ zrJ6ow8-J#UP8#+)-|H( z&yLAtfplD_7blu_`gU(5?`sQ1?hn%Y%}~DE z?67NpJRFR6?Wgyp_mr-^?=ZZp4prZoeprO>oL)@dx&3fTZK*CYzVo7^d2M{>?dn*q z?|g4BiH++!j}a-KNV!?(UHq~2o&C7s?7Z92g9;XG#1X!8!LxtwJKt}ly^dNmTYTpW zI0XxyMuO-&r{P}na?ZIv&L6L5zT_r!k}r24`#{iqnaaE@mDV6C$rEq#yX&?+P}s^n zvb21)d;5XFZygtY4HOw>T9j|1>KqeF7&H8b;G9}!JKFCFC~sqm*VBuyxzQIp1|J2- z*T#phobhAxgCP3f^S*OHVz*#nrXQ4y2-v3H)c(6Q^)6K?+|)Y@fZNo2{wU-}M@_w< z2RKc=UD7TOH}$5=Q@c0ycJ5DUyEpZIB<`EUH8S+j;w=|zT<5)xGkwisUQ1K&X+c`N z$CME^7H=V4DKvG$hmK1P&U>mWZDc0e8OZ#_1(NxdIH7R?Z^NeEO{w7r{he$ox*F;Taq9xUZOG_y$z#N!80}Q`Fg{b za)a}(5u;00qdVo_qPGz^1q<#qM)%ie(Ay(unOJ`lirHf^8VjMpUq8vUTPXFm{l~r; z`cbA4*cDAki5ETB@9$|tqBo|T>NL`rP5yw&bBEA1o3Y!UF%6RSR|wChco7ZqbKwR3 z2Ki5@ug$04U`lr%pw4~TL3D(EGv!2Sro4b=gKehFd{!F`w=VD-4RdijSjcrXrl0YM z*!nszAJp{FKQTC=9I4Qvog00V=yaRA64Xp;~7dmS3 zdPF_C?HPUa7d)ygUmUbo>&TrUsp)r?-=y-WYiZ+s(OsG(9ID$n-?o%|_R5#y+ifb1HQ#L;vrK-K^Z* zZq5dk(O0|i_QIvUFc=aD=06T~MjF-6PemHlx45QJA$unWyi*Y|Kl3$j-^6|2JZM>q zqMm;=;`v=D7}{}C^TK>r=XsjfKlwZ@92YdNN#W-s&Fh3GeDfNvB6O3+N`H{R`<_bl zv*SqCZXFln+nm*;r((=3oE^3MYIao6%tE7{n<3`)JWj#FX;J1i025)Gdtp|HzyA)t zcY>+f@JpvZ{`dBE9WCFtugg}cecgiiM%&juZh|I$&}o7e#D~kv4Aey71hwp=3Hp+D z7G+<@YO(EXf-@UoS(O}p4Hw= z+;XjFYSg2X&7*7ZXuNAUYrN6Uqcofo_^4wzN0>)<^Gkm|>Kjf#Md+;JRn~Bx6R+a? zf7VbP8_uu;!+L%i16g4`-yNrVp0=MDPR<=-I5*-HEd1hUwt>TbY173poKFB+zciea zT0?_-A)bF%pB*m^HshC$T%mR|3JsBHyZK7Iib>C*ou}s_tWEX(?9&+D3a97wpr+>u z7KkXjIoNMGGZS7cSG#$JIu^gQgAK&O-`UoecH%N-5&QjgNpPrl;t39huEP{eZyGN0 zS9ZaI;QYU0Z~2x%NjLef$5h>hYkH2uaZTIO9X{51 z`{EjswF9``=JrzNk?$sUVPk_%a{EN=8Q^Q@u830g(B7(@Su9Oo3ha2-F_EFi&p-^Akn{;$ZXUqv6NNf)7T}B`9YI3crNkh zuyq>n{2kqcg}=c(rH{<+uOF5Cn7Z59Sv^Y{(=F9|$biZ!@A-qBM&gI^>a4|YWO{vf z(M}@<`eulf0a9PC^A^?G&T0?&XxuW6%@+)oifZt-GVQFELusa=$Dj6HT0dz|j%xpx zWI-SoSy1o;-mb9fe*0bIZGO!6xF-XB`*IVD@TldV$geKm3~Ax6s!o!`w0LVI{-&o8 z(8PF|e@P;18(+UIw) zQ)vm{eR{y_`k0p0m+$w>Y8Ju@7G8p*7>{{5{vEW~#k&e4v^q|rHlUp?=j}L$PEG@< z`ZUCqMG&JSPsFoJ;J+Xr+S4(NR}bVxi?`QK(WTcNXE)UACDhIPAXGE#!j+V3ab0~; zIDk_l0%+*r1aQ6yVBro8U;)l<0KFuDlBfV?Fo3Dy0M7cIKOzQm#4Tdm18@o!tVLeId3ozs;a+}B4}g5_!hsI&_?5jV2F3Sgt}%$| zMN2~mBB3O+eMH~iZpHKSR

vJCif-o(Nzf5c>X-;Y6>@l*3+uzY{T9$py?sl)Nn z06JzM==jdBoI{TB;0<1OXZ&o`9hQG7E|j0#8NZRkqrUw2aiRR!&iMQ;yyc&O3*|TV z?j-&xGC*zOe}Wm$-r!Yq#?N)rdp#~xer{*{XE7FR@$0?z68+qd=&1jzD6iq`D$J!?LH)>Fs&6rZ zzyVi%t3MA1FexH{&Fze=X^z~e0hkKto!>MaOL0a8^Z}F_ zRRQ&p0GG1xp#mEHx|^l*2BGEbS3oDDENTT*gaU0Vpf30GiBV5Zm14U9r(nU?c#IX$ z)ijX&m_mTI0(uGW&%zZ@^X=k)8FVHcRjAu;uh+)IQgL6aj}%<^?NT#@Q=5)hKKOzZex}mS8dnCs>WZrEOMn!r3tZs?Q4E#3IW^(LH$UiwS3DD#xK{ z5T_S!gbve6-qdM^d$5g+V#+y(`oigMI&X6u{Uh(ot(w;#<4i|ThjV_+iHy$h!TaJA zESZQpzqu#kO-Z$gI8?$Hto)fCI&$?xEbxnT0+)xJkOIHKTeF0cTfE;f1v53&qp)`R zaZ=EaM`dLTdi{N>#oD=k!QGE9ISYG}w7+?;`WZ;gJ6K_d2A@`<6~b;WdXF4$;vp}3 zv%>MXz{KN*sCcxalC|+jG4V*Y@o2(rydfgVkH^`J$6G)UkJsmDJa*T|$}&eEjcl9I z0dDXvtL%VJ^ltDe*h&|P=Z&dQoNqV539aw=c)Ssf!tB` z&BpCu!R0tM-+_bMSO4G~_{1@i*l-8_b%OC2>vow>5R z>++}o&Sd~jWxW_u!mWW+H-HuL4$SW@9$NQ>%tQ9M{S=XRdpLqcyBA#y4I`4E+MF@zXoWl>K;&;=Jkni%*r{ICXIG)E0Q z56M;o=l7g~1xGXNGjI^IHFo#@7}y$=7Kj33f)=f-$^eRX94A_s{py{|&@fZV0= zy^Cv^a)S%*!t;jSZ*Ia^U#herq{T4?V@{9b7UuaR#A99!gPIF!^9fiHTa#dN_D&$$pkXh=8)Yw932+aCV}Wo3gIyRh z$MONb_@Nq@lwIE5xXJh^&PNbDtFNm~wy?BV>A;80qT{vvxVG9pG^RR)3?|E3mLn96t?PuTcggu;hO2a$H)Gad zra3P*_*8Sf$Xvf<&KDZ|MRPsYT>Ex0%v|?0@upo+KZDG5sd;X1!&~>b#!KyNWpk^+ z|1Hn0Z1!+{L0a)o{N(w#;$5j1j4NK9Ix)5QxAVEc3@c^4nb=ZxTwRZb#+w7gN~jML8Z9B0gw|h0 z53ONBnX4lY+GQS3zxC9?cD4CsL z(S&b+?yG3BMJpNbn<^pGqPdjt3{Y594p5`0JWHtJV}(j63ll0Wp_YWJRBnSs8;G8x zD7V2@tp`2_icd)}G){9jp~cCt1QS%x#|~6NVwjL*39YL^SarE*C(WYu)K1eD%`A&H zQrLTn24v`+LDW(^zhP@2=qx^rQo`fPO|fX)I-r>vTBb$In}EKo5^^kBMG2EsLWM;G z%+1-#t+i;;TA*=R5{E{M<`KO_xvdsWVrXL&jm3DQYO;xG+uW)twrCZLe_40YPOe3p zDB-@zf|gmdo@u*N(MpTv61`9*)LXQQPAo&YO%|6if%Z`eTq2_J&7hs_ zt=vS5CNs3`mqiaL7R}|(72jVb@y)boCDS%ixj7cCWgG@7%Hb~!t(9@8oGfz7EgFlC zllQQqRTga^TA*lyMbjAH$r=aGq7{ronxe5X1Wt=eMBmFhUQsS0)HsweZF63dI3!!N zit)Ww(F}`L5^bF%DdzGgl~6(SEahU)7lW2F4l9(4EfNiyOWS!-(OQd^Q$o>pi9>@$ z^O)kBx=LuCMbl^{gW9l#RLN`{jof;2r(7ly;`xqLcF4^oT8XLn;3io#k@o@ zNV(lLG+4ZmP{x?;`bi|@Skz;_wM`PV$f7w6?Q{*T!lF&&4pJ1unMQ6UE%lj8HEkA6 zWGT$+B4_|_s5KRpEV0j{Pe)H+(O7EoDwU9A(FEr4If|xPG=)}@tSI(}H*#y4^M@;n zb-4zuV9fSXwA`W@3~k#b60<6cmQp(nh$&*$V9_F?)rxu+EvMY46b<0rgr+T-F?;b+ z%{PmdiGNTu$)b6b`)@_lELuwLKNZDSBaPfLhBiz?%e81OB_t?XYSA2`y%epmXc6W1 zQMt7it)f@ne6ggs(V~?^8x?J}Xd`p}<#tJ19Nr>nirc95Lthj$(W05Oz8;FEShRw2 zTVD`vrbXk4eyu1zHf-d^Q^G`zLy<*2`roOWq$a}`9Q~TC(h|}boxb{5y+uo@zMhIU zS(IOt^0s73;@d2mK%;$smnKuD8qnEP&}e_(C`OxT(IU!StP)Zz+CW7;q-dr^vzaZw zE)uyp7Ay_#;!$c#G!IV17_E$)dTG`@&zsO|xhkB|NBTmPJ#D&QdhjqPdhCQn{rTZDq#Z z-z*th0hE6zg;kc2!+^(NuR@khi)Ir&PEpj#CP9fzW}*g>8Rw&I%);X}h#a6Mh+Ip^ z;bZ45l(dyvw49Ia@FeFeEb1|BM=H10qGjZMtlUP6CNgbr07dhw6{ra~4l_|S0}^Po zxfe;mi586|dWE7X7EK~LXs2*9Em}`gK0whNi`EhiC|YFEMoQSYLnM@2w2Iu{E)=xZ zqVe>+s6U9<9ESf?I1&U^eQEGjvqInigVv5uL6uD&axP#S=7UnHG&@4vkba+oA#LY@njK7R_dSGtL)HmRdB4a*xr_DlD2v zw2z{-7R{oBewvCn%uUp^l`-eDF}okWB+;U!L?L#9O&=qg@QG{>TC zM9UQ|vS=l>bC06s7L6zON6h(09O^9^%iNr-+$M`AFl}jywplcpa*tOu4zp5CzA=a9 zsN6)0RuR2b(G-goF~wPmW?Hn3=)=E=MP*wwlbZZ|g2Xq^qVcqy$F-$fX3;pJru|!K z(F~^Tbd_6cQIF`HqeO0lMPn&piiYM{w2C&Fp=bc}iZ#Unau3!x#9K6zDekUll11Ct z6W+W{LQAt~9P^^$XGw9UMPrG+t=t@owo&Vg6fLr7BJKA9MawN(L2ic1t+Z$*V|I$7 zwHA$M9uH8o!J-+|`sDK@zMe(n$W7GH0+`3HdWa>uucGl5O6SQ2>B8#?CsSo`wku0~UM>Jp2DvP##0d&+RQFXmVTZtZ} zXro0vqWdW7S+t3Ak5#z=tV+B>#BXgr&@JI9OMEQ{umdw_CtEgDB| z3g-VKv{H-alDl!8Hi*I~{p3?Bx7MOLKX=7oF8w zw2di#Te*!E^%#domD_6392T5}G=p64Tj3^I zG=a8r#d>us7L8-^e-m6Z{xgA^;-6~?c$bO&Q8WllxH8FXV#iAZ1R4JNi(IS?M zCl$@HXe+H`j-o{tt!HRoJSuX_Et*Z!i2G42s?wrOM9)$Q^%kvUZuZ$M5}GWUM(ynS zMbI{jCa`zlDH?aUpW-aaouF|@v}i43Hd4_Pi#C!wP|-|_dbG3hGeu`P7R@4hkD^5u zEuto;D_U;RJff2ot+J@cRHP}|V9_RO{dh$^i&indhbkI4!cSWz(H@E>S~Q7v);d<= zn_|&qnrE-Cw8R4CAB-T&5bK}}TZ8D|PN&7zsimcvwTmPIS5zJrvTXVF;7{q+nq6aFPXVFqRg)JK;4rLZCV$3#;5j|8|G?NlmD_U>SJfh1L zZL(+ui{3*jx6Pu7w32*9;|BUEP9S=NqKOvGrra;fBxWfVZKWpnX_DffVbN@+V#hi` zvn*Ol?oW#5STv95$BJUTw_mpq{bRJG7^^4^TFzAbI!5A9YteYx&KgAo#W2VBk~@;pY^ zVaiDsZD2C{JSb?IMeB(^K3dQ`i^ekQ6`xDg%Yd4wH(EjwwR4dM+!{ui7hFHUGIX>b zon$8HQV0W@7)Ghd{Z&GWMU%)KqTEc2Hqj>kI9=rCSTvE`ZptmPXdI*d%V!c=g+=3u zehCzLQ47>hkR>FL@R|}@!-O_VXk;92(Ky5%s1i!Ugepr&CSk{?lD390q16&lji-cx%B{3$J&hnv(Rzz! zkbB*KM1p70EL!!C*y9oL4Gi*A5zAEU`b1M<(Im>PPZ0^p77dX5sd6(dn$1dW=X~Mj zSTu|1dPR#YTFcVXplG>8Gs&%1w929xL{HTCHdr)`=v?J`7Hwj|i8W~(?58b-8GAV5 z3!{w(YD^=+64FTMqJ-oyA;l6hNNB>_2)6CRge*%)VRYu5DoV|>sK*Q_K25XGqHP}o zoeyEifCh^uQ^I(a;8`?@=*fx(j`I^#M1#5aK9L)5(LADeD4Jx^DysTwMbj*rOYXUf zW?3|c=)0pN6}cA8CVGT&OD$SXRX?WO3X5h^QLlfj{sE{_b-g9Tvg&w13H&^bA$XRM z%=q4-1b$t`5MuFDtAjX7n5cw=Fd@kjvKWUGl#muCWLQEy-O7Y}MSa;8ZDqFX{7AAT z&!Qen;XviqTQq^5AWqRhk{`1))*|-niCL{hYZb9W4X9d1J1E%994a` zMzYAFSyc6r--!hM>>7s`YMG#*qK%eYN%ifa5?U>q%sBkeBog9|_u~-94ESY)potc3 zWa77fAc;@0Xf~DFUsI83(JZ2SD$37xYT6nY+V68kZjnVZ$z7*txkWRGzN=`JMbn7B zqG*FfQyAaDr$`oh7A>bHdurMOC-`xwpdPv?H{PO2jM+EqBxV^FZK8yqP7yTQq7BqT z%lldwESgAf^xSZXLzzVrh~}%@N{hx5{iQ_Y)>|}==$DG}JFcp;a>n;9McXWzMZdF9 z(YOXf`eC2Ssx%nnR0Prfu3Hi`G*Q8?ZYT z?6=&aN#6lA?caKf)>CdsdCAlXknr6{5 zR^xpY&9Z0)xjhxlwP+djyX9ojL#ah8$bEl}YO<8B=_qqH!nt+(b&~qG+N; z6NqlQM`D&@(G-@qtB0vghEbOJa}~|8XfECBwe{j&i+~#UT51W6@;=~X%|eS-F|&@x zV=!8Na8whNL-X7@Ot_5}Eu|Ta)kwBlG>O@gq-boiFQJr)fBqzidZI<^nce?UG{vGt zM_Oi;AcqIpC|Dq3ODWGZT)qO}&yB{xpdMvLYU{qsbLZ>vSK ziT~KGAWsKQJiY8bziJ?^~nrzWTqE9NCVbLOLa*m?e7EK`cRz>qHT1wN%IZ2Jy zqHWC0+p*;pYST)fCcCRFA&>TOF$l=m#xTl&k5FN)7R_QZdn+1yil59(qT5fDfD{gUYS2Xc6=6zu1!s8Cwg~WNd>aRM9D9950sYS+s%naEhXVk$!?I zS-K}e7>pp(qKPcsdn-4`q7~#OD!0g@S+w=|%A%#@zNXv;ippiwF;$D#rH^#=Jhy_(FTh)5j{;&&!UY)k5)8rsxP;J=zfaETeP0&Uj-7g zB#YJ(-JociMXQK@qG*;yD~Vn@R3zkDw1Vgvik4b5o^EA`q7@b`C-)#lYb_dJx#*^- zXVEfp*9;LO2%P4pt(0gT(6o|eS=imq+w>NemR_+Kdl;20tNjZ=buE@QmfX+ZH35(N zUoETL0sM*@;!F73fA)!&3F++#009*xW{JN+-^Is3VTh))NSN8 zF_Vw+w?Qe(dBg15KeaYSwuzbEBlz0r(VO~n9pU;_q<2dTWh7Pgf~2%rf6CVl3de)Y zubGR`hPS}NM%`5_HnuNs>WcMB$MHE;3>HRt%U?vAidVgX5&VFBeuT1nJp~Z5i~HtX ztg+cPrdvV`mU|zHD94_Jm5fG{Im@Y%B~;1sCTy4BEk;Mmzu67CtND9A+1p=gZ8w!knwjx!#-`&Dq1bE@t4MfdND~;2pFqY*sngpw7!gH_p$V zMT?o4;e>db-i%@&^L_Tgmj;jsS^%`SJ? zzoDqr9O$r5h-Tm9uvd}oW_^sq<~Po~F%G+o?17H#FPDaO(nR(F4*NQ?k8#+~MYBD0 zlYE_wB>OmreTTy?r|fEny*Jq>I_&Y$>^Tm*=>@P)aoC4NvnM<3m&s0X*jw;*CExu> zOp+XS0oh|6_B+w+t`7S`veO;*{n6~t(Hrq~l1TQ4KZFbBH7*;U_3@@Gvh1ZSP~PtV zQtQS};)Q%7$s7F~D8+U1b)@32@o}V^-o!$2xi1;~&fC2Ib`3uhA}(Au99$TCOGOG%YCOz#ItBLg^qx)7DAm<)`p8+yu(f*`yz+EknC$5*&8wQ zK0@}<4tqwl>^B{@$lk#ndQDQ!B|G8durZ*LD(GL4TvhR0ff8k`9$ll*!UmGpE!eNW-4J*Ss8A0}Qj_lhV zw#a_NVfT)fo$jzjcF19`Lm8+^bM)QMVTvVTE`#!qExwCp^GE%9FNu=f+$j!q^xY>|Dh z!~W^nD4h&&*dqH%hy6O)e>m~p_G&nlBKstVT^udD-eHUEo(}s`viE8Ud!L6Lw#fd9 z9?^J+!O^n+>99riLWkY{3}heS$UfC!i|iQ=`xCNV`;K$iBKus2y@2c!9NFJX2SqCf zk=@^6-x4kRRfjFIe?>pZPvx0pk8@`hNY_GCx)F%DZ~ zU+b`!k?rbar*z3Ql_GnD!=6X>O^)o39Ja{r?Xdq5ExX)di|lpMRn%(k1hVgOWZ&el zMfOV$J0@E87>6yg^Bwk=PeJz6j_d;*w#dG~VLwN|U*5e{z~9I_vCWFPLZ zMYi@QmA!;)S0}%r58|g%WNUv?*>{uuk|TSS!xq`vpH%k6(Xz`Nw#e50q_U4C`y)s8 zbq-r(YkyMNe?1Wu?~x8$WNUv?*&ma=-jThx!xq`vpH%jLqh&Wqugj?$v_Glro5^l> zWWVgNMYi@Qm3>CE>;i`^@z(yNvJWIXeoMH_U+Az!w)Q8L-TZizP7)oq$kzU(vX_#5 zq9glHbUXZ<7umz5_o?iXXxSe)Y>~aE!@ivC3`h3k4qIfek*=7^9vUq>$6<@?#SXh0 z*;hKUPj}cNdzQmq{aBPv`Z#QneZIqfmh9Ud+3V5mh|tNA4*Rxf*;Ni(WN(+wm8SA+ zvgbRp?{U}??{^(`-)PyB9Ja`Q#9_BQ3fWIPvX67vBKro1{TA77nGZN@k$sxOo=^5$ zj_gm-Nr}+OJ`VfpXxUFWY?1wgbj4IBCzJiPBl}i|E%9FBu=j|To#wDb_T3Kqn@1pf zn8mVKwgmUu69*g>+#II_=i*dn{cVSo2flui;Hw#dHRVZTCl zwxg4+=yv$26xl-^c44&a6%JcucXQYmk$s61?*|;V$X+d7G1bY@(Xz80w#a_gVecq| z?3*3gr#NhpeVfDnkZjk!_j1@G`)r5(1lc8y?6v52MChci!@e*)7r)(^QTo z`$#t#dvaiDy+2=Xzr^$A8@*}z(5jr`-VgHNlLmb(!Ic$;ryL7HJmE)pi7ddQ+cb&sN z1nlZ$$WAYoH=vuA?HNcdmX}V2wYi5>=U_CrrU>O$Ki+WY^Bddo>4U<(H@8=x7Jh1p z`&6)~Ik79=LGFLo$bo@zSBk8m+px#!+p*Pr+v(lCaASKlrrDu`I2?lcrC$WeS6<$m z&uwf^4ZX(S`qlUmFYqO3VG(A9rSYSWCHgDHOA9^Pr4=&d)9Bq7n3t^mE zO?t|`p#Psq?{U2*Jy?+0w`+jOchXR@K+|x`Gf2ap4DBK$WO>SKh|PK7(0KW2>HiYi zW7qkiRUf)rXos25dNQ;tt;X-GUEP+p| zI)=h({%>`3u@P)OWVZ;;d{Wghv zRr-yjPjKnM!mIa^m%;ucd{cz4a;FxLos>F!MQ~nbJElXd8*r0vUukuPoCyKpCMXB<BVox@QgeBlo0QX>o&vlE}{xxE_#cMxaZ}0ib}>$ZzX+2 z$r53hSRT$o5DO80w(zF+Gxbqen-(gRfcVL<5)Cw1a12V+&~4rx%=o(5eEZHn{N#&v z{%ty%8iM+$2}+v`+ogu6(fiP>N#o|;cTac~PlaBifWmFlKhT$wGQs0GwnmCqX?gl? z4r?rsWby~+lLYlPo#YDMs5YS-;CF|N)hH$=NXB^C8qyZ4ZO$-8f^qQ)ld&3YV#9}$g+A& zU99;Jo!kps;Cw<$2&hq}!vv~(Gy3=8J}ktj+gm_G37J@!MgSg-Y6l!^V^MP8ZmQ3F zR8;O|YbW08V&EXQcP~bXxylifMKM=8 zVz$#LPb|MNP{Uik@bjd*tF5_{?q&gARUJo=dex|pIS?EvbC0KNk9Aq4$s*fUbw{JfSO=db57l-QPaNi%$ z5^c%iJJ7}9R>MK}^pD_B&*spefx`hc_;e(k5VUlyi^E6bc=j}W1mmmX@EXSG0ka@b zoui-S+6UbPq=K&Wg!|#hU7qkY@+)`rx9ew(y9Xm@$>Fbp1ZLm+G5!)mIb@o7q+&3u zIpjr%8iT07L?Ec~E>z=R;V~r%E>_B7aw}4(lujQHQq4IMOngpQI_wNiIC%hHfti75)6*esU-EUxCgf9HX3&Vk#B|6~ zTt_hjbciPf@+%e}^7&cH)S~l2ZEpnbrw+>Yirc5Ueu{B)E0i!M~TXnu|}=t zMZM33`afKIxV9!LmSqO@J7iB?8o1Pjx|pbLd;S;8nJ~i~&2@?w^-p%PQQmWYt_4ID z|0culUN7p$F4P1+Y6ekj+guxZQJ-?52K=a7LHH6IHPef_`2|N!X@1oAiF&Dxn&d@&&4t?1 zkNOx<@g^B#h}FHQ_q$LJ;M&vHHbiA^P22EBq)T0Dy3B>T#E*IiiHNB*_Imv~W!xKPjXqjn}Lp1wDze;{e(+ADWiky`Jn5i6vx^K|sFa1u$aNTw7|Q;G$T zixdgA6tyWu4KyYElvj#J&Pa-LZ7F6}iIAd;k>W}%MGB=DLn&HnDN=1ICcI)vG1@D| zZXNFfw*-XnDQSwCyfHlpg`wof%xqsZ6d>7woK%0uRvdmM$1cUmS!BtfF2d@;%qu+vNa_XihnL1O7Nr~eRG_Ph#MXlxaQ1R`SW`6%OLZ;%eS~K%#)u9!$ zDa_r}%-n&ZnWeTAH7Esx-tdE7%{+WYQgpSYXcZ~NO-71lkbR;~wl+7@WZZxI6ZF#?IbhgK9)iWQXNg*%K96x(u~gsm0~p>a+1 zj{1M;M#`0A|E-o{PVI`2V`HXPOaY9UZaAN8Y0ccB&UqI%{C6POV%@=DvsH5;;L0|pF8T6N@7Je`NWa=4d!$lQb>GS z74@$9d<8vMxl*j{W@)449}!Z#{({!V7}_!R+Ng~SDa8v9h!p(lqLyMO21@~#(&6^# zXO|S$o{G&*E|> zpQFgxUHgJt>pfYsn4^@)Ze zCHjh1Hq5uhX4n*|@fwCq2ve2gxLkkoRu@Y@_eOf&lyt411lTaP45S_D7ZyCo7R+M{ z=B+@-)&^gkgxmJ(-ctn+u&VC$ma{x8eI2M-J+_oJI$BI9P@yWn z#=eivejM7yf4H27OC;&>J?5O*xMUzR3BR}H&6fbN2)QH{TKd%DoJtHEnu29JQy7yodPMcfCXN}QR3f1fezIoo0Zbp z(&uNFfi4cA+0CkAnsoqHS8zS)$8@w5wVqxg6!^1hB*m&W#SVUoOGjx%O((^nq?lk+ z9Hl9~5`|*8lO^NBjeIf=Fcf=$qMl;IOD&QzLa0QHj_>d_`qi2LRSe#|0p5z;Qg9pi z;~VY8RBb-HLLEi_VG?AmHtmrTQJ5i%K8k*Xv5_s_6w_e13+pW6n&)(r=fE`ej5^-x zB$W$(6jBU9a~uHMEPoIzx!F?4KbY-(aoL@QV>~%_r;_7tu)6JhZK18JM0Q)6O_Q(X z_ZUK~p;$tL2zA_58;3*l7Eh(h4)rp|$~$zxIs`APf@5pJIwg!5dp53gvfxd--ILK- z(rzN@c0VCAaCw?ucazob$3WKC?t7orn!XuQ7Tm;kkF(p|032bi?JGyN`&pZ2lA&o2 zfXasA|7c{Pj(^qC1GIwGW@~`fJNsgc%K_~CZ21I0C{P1Mk%PYAUW&EB7Hb^+RVXkc zE>bL&Xf^e5e|HRdMmMyNh!uG0EUpnccGuEj$S-8a+;^wXiwp%AgyaCq=6nBL&I6ak z;Xl2wTaV+2x?lc~E)Se?oguWQ&RcB>JNc*14I{OLOT}=?>(#SuLSOwHF|TJEQjddF zV(2aAeG2}A8(m6i2Lzi2da?O9;&G!MCsO+-5gRx1baevZ8J- zfda)@9Kzwl_fikbslzn87s6K4m(mi3RX56D1F#Uy%{ihm zgwNZ_?}ohSSmQ5 zfTc27@pS!eI-pSC#7~VO0S_%swNFvsdA;SMpZUSHcp%pLr-6lYI*VzJT5$Dcs%(W# zhx_7Tk!eFA!6A-HG=PP)vH`h^M&rmg1}TnS8(YLZOmZrIj7g5fB^wSqBn<74zaTT) zSg6=x9~uu{qNl3}VeF91#14yLDC{>vfFFugV<4F~(*0tP)&KOEf)f%p#tL~I%zE;B zvBDZKUl9`r-n=MO#Qm@uz(K=FGsR^$+^+ejy(Q2an<512Z3If> z;0txU4q+8M5@{g#ryxw`rmSgje5psO@q*lzb zA)KnFkSTlsP1m@;w`kkB8&;_Xu^YZSqMrsCjQ96eiOH>NLDKX?^kZ;8*{o%-@cyEnmb; zd|ub9t|$)9T^(DT*Qo+`Q^r9|^}sfny$F!|h04TTD6k4h%>yg(SJaYOcy(}Y;9a4# zg33w^&J}S$V-jh+d9rd$X2&rAh)rT*4SLGY!e2b|ltxoo%0F14QW2O@>DBq*omL5+ zBf^aYgt>Vv&&^(rzp6b3qotNnRja^whNnUCAGkf2;RTyKrltduWmy{P(&Lb z_fS33h9<^~YSXjqwlp_w3FhB{wS}<^?I_wdfx~JJnZx_Nj^ZnNn{pl2ZEY=w^>A^7 zqnQ1ub`+DIAgM((In8usV=(1`r*OkWk9WHJjF|p>wZ*h>Z3NS+4buz3w19_i!pY#F z`5va{3I%HZ=L9>}axdSeIdG$YNGHr*ZHMaVkV zP<|4WGdqs@5!N5f8U{F++|KXdQo3UjQ8U^j@0=N?Q$_Wl#sQr_Ylzdm^e+D$G~T7D z6f`YH)~9+q_zl?4{rTcZm;$N^gB^0Eq=mxmJ6Un!@6eLuDu}G}hpRF9B6N)3B%$N- zLv%ngW@IG8H?;<++Vfv!*yUngqguR4sIK|}r6f0n++fGmABS+T(f^|P5KZFFchfvJzQD`(Kgb_$nzkbY+FdtV`2_{*V7z2t~u41K}RPl z;)9M1I;QYCcf;W=!KBsbr6k;CZw!uW3Z{U6MZH)ds7!XFEtQD+ z)$QO}zVG>~mDR$~HxVstF;KVgT(nRx#K&7aiqt;%2y_jlqCy8tKvUjG9&NMR^K}Hf z6$3Q8_a33-9p5@BYD!?U$6PP58LxG-W9?>7vqaL(PNC~6*X5qL(rR|wNIBXWIqGXU z&eL+FP>%oNrMqnPV>vu-0IIm}dArD#pyp5BBGRO22)nkZ*0B@swU+VNtC9y$k0g=eVHT z`k|k8L9ZqBLKpN|e(26F=+_9{o*Ozwk}VJVBst#&{V1UeT(m#*LzfJ8{?!G2-~nGN+qj^!2|eyxM<<{A zp)0ze?;-S`F4|N4(BD7l=;R7Q?{z_^`Jvx;K_5c~SZ`Gy1&SV7=hJp*Bl>n^4-hZc zQ7&n2ji;*$BdqfG2enmx1M5tbfX-Pb!1r;CVES9S38pyy8Agv*(N4@MdPQ*6k5bO@ z571&PlaSS{?-XLWK{9QSutWVwW&m#VkXrhqMe5HV+$@T}x5~fO+%OY@P)Qi-B2D1e6}8wOK1vL3ZlB^ zfj3cN#6*MlLqsea9$SNWVky^h(G(o_GuqKjKtLxd$OeKmA&A`vNp@2|`Cb-1vmvv7 zs)^CNnyO0$^W!au=5U%CC~ErLDzf;BDV5lV5~|0(1Ld_jlb~Y$Gd-z>0o3ZXl61Ki zo&St$fWPd3vlmqtfEU~Y{BRl^sJ7Av>G(o{=k`SgrI%b`ndZP1+BEH;w0o*H%(neG zm5Bvm_0fp!l3u~mWa28^l~lyjJi!K*z%ac7i>t(BVwt6F5o?QNwZl`?<`7odjntPY z4AnG^1K!r>%o>^|Of-RdSD<)nsbRhaM_r<#ks1w{wK`!RT0uLLQpV3*;`S*)h#0&Q zyEiXle;}AW0e=YqdK^URCJNU+HvIxqNCQ?a$(HM{iRb7AQX{R*_b}}jFoh6~S!_~c zMJnbY>PRSxAr=0}$X(tT(5@aj#1FqgbUM7z%ISRI_C=(34RqJ;XW~!>UvBl^av}vlkkRU_Y@^O+iU!`wGM25WI7!#JcHlWvqHRbl9u{ zy{@mTu17f+zFaIE8xZUjh{xbF*fbd|e2;L!drS@a+m?hCSo^AePLYS`pWmCc@$g2{ z$wrszTa>c}hCW>!UTvSOeq3N0Bvf?139Xv0!MQlM?1)|td+tW09eW)jKR3wF9)+pGyRnbZ+Dh0DQ3x>EE)X~LoQ0m7( z>3dYb;>O8>gpgX3iaqm9Q|Yca;-|1!hV=hNxT@?5Gu}5_mG(H^wTGUw`b)pV6m#QB z5+M?U>S=UPQ9dP;wGRNUM>}`omd8Mf;0A)@&%xq4m|Y!z3-Cc6EDWr(D{!W>p<40V zt%Y=;+h36$^XO&P*!vx0%CpUX!M%FqRge)_UbMf+CiIvg1O;;y2@kBk?W0L8xlf!g zSEzJFKfsvbizz2=vtnT1CF6K{%pJZ6<{!tdhaP{IAnXar zidF8pnNow15TD=qMa}FPjL9k-`k6imIj@VglE1JYmU0?PjsZ+ z2yGXGLX}o01;K15fIm9uxUp6g0kSJdEqA* z`0-`IKMgx^(SL~E9#H}{@$}oA|_W8i&7}9rb zG3@kt$a;VEr&5y#0EE}i9${C z6WOLkhG{_Xi7f+ygNt@z)Axs*k1>!`bK$X=*E;m!cr1Ul^XJ7@_iTj#zTo8WUAlvI zq+rv1Z4M6r@n6YhG#S&DgMa9-ZRQRuY`Yz2GlJRO@K>LcY-OuzEIQgzRb>bmp{j=r zh(-QoO&*%uq1w};p{hF|L%1%6vbsiF&fBmYabrfNen7$$l<=FLg2MmmUakx1sJ&bn z?#g8q|DDwEs&^Ui*PZadH^;4X(f|t9`o^aj>dV>%_tF_ige_zz<$xj*O}y5f6p$vB zH~Dm}Z*|fFJWk~6q&s@)PPz`G$;>vczQV+leI7E=UDPRvFTb_M?R4I5PLx1WuD2v`PFNjW z9FwUo8&)Z}7}?ug*(6`ac|`(8#-PBnQYf!)f-h(fWKO>yQN zpNvU{Vrx=7k1}T16su{9jiXRJ+opJlpW>lp-RfWN1Vs$JnD7*vVga3FD6k2~Fszd@ z*5*+`Jxh-h{S@Cd6eoaU=TMjihT%rzWoXoy=Z&~Z#A&rJf36=>+FKt7d949XD9W7K z30xf)`UM;_Jt7}v52qx-BQ`=kCXc*j^oT-Nb^+xI8-e5(ocJO*z#+sbW~H&9+1FUF z@UWoSrbj8BPQg@%70oYPWNlM(itUvPE4WD-s$cvk7ND7^!8qH1Xx0pBOgg;lp8MVw z{HWE{JS)!y6`kR|whA*#_99XZoTXPj*=NBaODn}1cEVzHn#T3=nRs-vfXJf!1Tvx~ zGM$h7y3X*=L|>U1xVnMHv?A%9Z`N{!CQJUCDnq_F+R2%P$9vxA%z$%O;xTf5>xYfI1J?sJ2 zTW}XqN!lw+U3Mlt)%859r`CQF;c6S-rhBS7hoPN)-8YljBP?yX0fNOZzEsI=DEtEq z7ZaFYxGAEBuaZ=#Y!uJE5=_Cnui+I78F8t z=1ciJT|S%TErf_{)Z=8tc+}`w7e_~sq{NxPV};DptQh%=u`8Wx{T-#9L!ao4n=VNd zxy`oD*?UJaT}H{VLac?>$$@|*{mH(h#Q3*}kiH!r!h?ATZ&JRBHUwlg4yN>jn2@Ue zvoV-1Nz5h~yxieQ9ll6kZ=jL2{bRccY(tBPZ_V~;aSj0 z{dbl&j)|{76@QU?NzLHffvGVxAo(5LfZ?f-jY)B846+@fYzNg-V5(0%q@scG_3tty z(pNyvrm#=*{MOj)1>A#_C$vC>npAgv#=a9Rm?F_@Udk!8bw-t#_`1RT+JYtETIZ`! z(J9oBuiYK@?|gYo-xvf*%7d%Kf8F4JQzZNMcAa_w6`{J>+k)ffvnq2>94wEgUOFS^ zzbQ8d}1F5DO4v`(=7(w#Cz3`bEF?Bn))nR?2#PRsey7$ zDE0IzlFBDDB%o9EthO$FfMI1Nr8_h7T6&*}3gJ*vjbOrE?QJWD)bX}W*uW3gYA@N) zWQ3DWt9fgWh;#{(JlCjf|*RUYe!irVA9A5fKPao4Zn(3puypq{UemTtdlX-5o{9q5? z!}SQcb|BYK$E^z?U3|xF_z7n3gWpZcJ!!sEy>kC@1j?UIJu9ZQ%;tec_z~}qCxI(IQuxt_AAXoO82)%M{0HW%+YuSa zQv?gGxn4)*^@W*PSC#n|)=O$yQ^nzTBBqM}y6CB5S2v!CII@5z;7;PN^gl+d+3RZx z)n2g*XScbdm6%(o=6}dzVZ{Q!J`#Ql2A>E1!TZDo2{{Z|H~|nRG1&4{j5HY#$rwJ| z&I`4B4kXo;H&%)1eZSNgV7vZa)B{s-lj?F2r5i=5bE7UFjL`uFs^xLyYBgdfptW;* z*Hb>v-fA3$v%Mh8)~ZP>#0{_|s?tL;yteb?FaDYFr|KVNyf}rOgito)yZZ9Ja{ItE zPJ~QsjsaEj9+RnNJw{-h<-^Gno~sUKy?`h+)Gjoi`-SPLd0kF*SR0)1BdX#%4nbjX z;#ata6KLD99@0KT;j^3DS4F=5NXFr$wjNN5+z6Y0m7&*vFNp2o@|%pbXW0K`uf&W(upD;owRCZb~TJ* zWFEr+ZmVkfDj1q_WUC{a>6%*b2CXvvFsyPY@Z-G3>`AO|q#3zgQn|3nt_z={ABbLI z2YEx2=oPfkd5dbg8kU^U=1APmG_eJlu zZq@_+XlMKyO|`^H(2}$hR#3XpmiP0nZh0Gef_XTmo0TD+fHJI0 z*UZ@qXS(DQv5)w`hq!?Cqy{IBh7EQKwVccXbD9=mY%sqk$~%W<(K|Y!1HO0A30tA! zu}bS3{}H)edJ-ap>fAz-2o+%0;(IqBzHWxH*bRvlyQJX|E}oE;AzvAem>bIrBL}tG z+ZTaXYrO>Ti3veJAe@5cnFZ#@=n#ow&2$! znQI-j*Rb6L!0m6u8`oZDVs7A_2Rvwbr}#iKU7Q-s zA5D9}f(Xt-&0B&Qto~W7GhLxyIg5}rzpeDgTkiglZs?r7E#th>he6r5Yn{;(WM$(% zcZ#g;Gq&L{b6O}c|6}&c@J7u8Z{P|*Y)xLTnx|C4QcfQ9lyW|sGSN+5fnvDH(rNm= z7?(gZdQ7$MB)U)2ck^M<`azVd9ox05(bUlhZcZWU&_8=w^);*)%qHQnunU!nPG z6+X!U>^I;qHHa8+4+7A=gk3uRfW9fTNaji7M!)!o^6B}`6y3Sl)_n2dGtvB{vyA4m zOO4M;7DiEg+MvoaQW) zav2Vje`Y{e5%>m+%g!POQHQ@_1L}qXe|*4R%$ZJ=;Gcmb$Yy{bGZKfDYax#|53d;t zECnU zqd1{F=!;1sG;=qa`T6j<9NIvZkv|d0IMI;tI=CQ`9l%oubh&!o?iR{PgC6kUXE3W8 zM2b(T6r6yZY)mLQuEVC_#2A!y3r#^t6_eDzNbhMUA?!)YyMA@2++C{YJ=Sp|k}s3= zQ;1uH^f1sfq#s6ES)|)+REO`jD4UkBQEJs>nJ0o-`+@Cl=4?}ut$l2Sr%qcSehnh( z5uu}Wy0#vuv13X`kR^}7NO?|xP11|pWQ2q4XFvryI}q< z1S}lI#{SejU)jBaGZn4Y4nH5u1lk-{-&jS`g0u}1DZbrBpcc$3f_hjbqoy*7#3=J0 z1#K+Lb{BIP=m$fsboapumTxS1*O!uC)Iod3H?N1okQct)YB^=SP#a3GR_^x66r006 zh69>74tB}Y7d;J+4&dSQKZo=wJ}z%e6sB(GGd@;4{0}=M%z>d-b>_re_Nk17l4I!I z0apeaWN}1`$G5jvcC^>6S{pC^K4Rb$0#$p`#&Fhp+bE?PzIntW8%1h#M{&0H@EAOi z!3F32LkUqFZ%+fR&tRN$qn+t4M%rGleg|4gEmD`ch;t2i=Q<}mIDDg*@!@=0GTx{E zge))uXRnRy+=j81`#nm(2_e4|Jx6iB+X3Kmzu(}NAp_?ky{)z3YHVYSUWy#U^Rx$f z)lTcSR@oyclLI2B>I`_JaZE{ngtWvDM#1kG1^)^MzX|b+vAGY!#&8qwsB;*}9X13f zt_0=W@2*(I9LBG)9X4dt&0aUOI&&BsGO7=dc#@fn4U)-_Gn5zu$tB}}7RC2Xo=YpT zM;*uWFU-YTYeX5(n<0#ThgFQ-;E^yNzY-oonNh+6)380GePf%A;vKtzNJ(N8N>@gq zbb&+Z{0K_#{s&5L;12{x^l-sUPmX8%zn&b=s!?{1XVoal@vM5DIUY+hX(b;4fu^ze zIu1cG4fosozr$Gomtm~NE%=K4(?sX#-2+Y@8{wu_2Xh9)*%VxkVHZAPuOMy#Z3~N; zhwCOdA$b@^ug?~JJ`JI78}U_ohQCv9X>7xpvbw?XmqB^K?D|w;ACjMHlP`rALFk-C z{1Z?NeBF_v$l-9_$x7xiniWVRFhsMx!n(HFD|~t_y7f*{Z+MI6sfclOROR}*WhX2S z%?$^auY1_=xD7lKmkq|Sm(W0aFFT#n^d~5IDg1bhT3DMeDYNoCalfD=7%`}iXS?%1 z4Yyn6FMG-pu=k?jN1eL&Wr{nA^|XeJig zg)X#xZ#ihRI*Z)<8jV(Dq3y=zhpEa9# zj#JsC_Nj1+s?JAYs3v0IT)v*cI1i~gF_z#bpP#J{AU%(Pq!;(Qp*T0-W&m0X{}ha0 z{l1KsocVTvg#h<=EdYpYpVJ(0tvy*^crh=_>)fqJtjcC%iC zxB3p24(CIVMowNTu)IhUI(YT7Qi#S7!Y)k*ljM*HoOt^{q@dw9;}dh4E>* zYEZ5TkSprW%V3@m&J481ByI1!EdNWwGQNUE&BHa4p|i0B;EA4nXjrSiCcim5FV}&q_&S)Uh*7UlBB#J5%gWh# zNg(swZ21WVUMz5PO(NHorQjOsn1E>*J1>d&iP(ABz@3+CGtABloXR-_ZXT$FAMpsY=vXE)^LKMY*b!d7`LaXKqV0e2Pk9r1AYuQ-PsHkKQP zr9edB(U%0;6qY{ZGsLb&;5TmLS7@wwa2U$b`7&5BXo6lS-!z>2%|>t=D2_tEvT z=IN_fT79w7BFA9fws;C!Cj&&1rs{4GGHq9@s(+$S%N@`44jBz+_e2tvCihYs_Dq!M zxh(*~R1ToUq%>kRd`km+jsFS#_TXeJCeNLr;2Fy6ZynT9@>F7!I-05N3Q=kzqaiB|Z z5{=hXoP1Dso*rg2X7n0 z_oCf)6fNCm4U=jZT*qqd^Qauc*K${9u&)~U2T(gntaed8ZsR#5mo1*U0*COq@ zt^!ZiYOg*x68L#BoF@)=u}nc$6esSMn;R0olK!LK-TT5DH#17x}-k;B(fb5BYzpdF!Hls;m9}Bf=)T9SUjT+ z2ZBUiDQYtdufpbHYKPV79~bcJIpM+Gtx0$)+!2-(u`hDZqX@8MH)^u+OwC9-Z&5NQ z4;^Odq*kTXa4S+83S7KUwvtjfi9E{}dxWytxj;+RX!3#N+-$iE1@kYzrpvI<$xeVkA-D;N2!DVsBd*f4y8K=G3D0VBbBIr(YM7M|7MW zpcHTs(*b>I5#OEwRKEWQy+?7?K7<2__ZmX?szOk*7=6C0GCsZDrLTO-779Q2WopG} z`c-87bygA2e=XwkU->+c#J+NUTy<6w1R_{`{g=QonAcG5B~>8)qqD%q zF@2rY&xY+!*!*j89}3)yYZ+&)jOeQ;Lv$qM9DOE0bazfZIQESU9^;Z7r%^H!LB~8L zr5>*7C@?s72EI0h8V(d4(;QmFrbgmX4b6zEpI*GO{j+D`W07ygGM|H}l1&^X8J+V% z5r@ns1o?}+_r$ZvqJL4+s-2a(Rm{QJTJ&#GQYax#z~96RY&wM!D)IEx#7Vdbjf~4a z^~}}&^xDN&Sc_FBy;cQf5}lu_b9OFlBoxoLW2$o!tlozkL}LE_QFd0Ik_y`galV*R z_Tew3?1_uArQCZB1d~HI@kvPK&tShGl`rpk2~PYOwMqRYOyzt3&P`x6lz06GoYM+) z6MGN>UB_Pv)JBMwCD1o*Jpv_rb+iJtMn@3>JqUq1g&JysKB3FOBuGVh`mJ;B03<$* zl{E!9%GQv-lUzThOuJ*|GxK~*-QESVFlVf%VaxZ30M+leOlrHLL4sRJ6sp=CH z+b)JRZ8l=)r>ZG-xwtT7q3Qf;=DS?jOY@x(==C=Y*@9zdUj-M|!=_Wx>IedqW*`(! z;6yA3$b(I|gjvi;K^Np>ER-L-Kk%2eJeof#VtKT!p{N_eyHpG?OR#@-Ot>h)iu4;kjI{ z0MdV;kJYW7+7zNPKNJ4O`H1VmMy}j|TGYf&3=FD{-39v1@OlS&je$l73!6p5nI7S~ zCZ5DOdxgJtz^6Fi5+df<;ME8&apYGH_&^6-BEVN+)|~%^{^dYmJnKGGagBo@A>jZQ zLKPxNYmfhIpP>ji2(kiM^C~A$c@E$@9JDOoChox}I&?PkJ_eG=|3VekPSo0qwN1>u zMC%k)l5LteOm{|bT<4Q|(nF23a1r(n26PKPu^oBuy1_9`P+icQjck9L6-C}5=3qTv zxEZF5m~zfoBv_6h`oiIFx1orEAR11!qv5?7bxZpUkoBVXbpjbJA%v_8_YXC;vX!=i zQt8^QQkobmv`SaP$&e_*>u30V1&cw!C6sn5rIn%f?xix+Sgi{#gTUphHSnjU);}ji z47I`awOUg+K(J}bH=(UVzC+z}qAI2bE4iJ77*0>i-(n-yDW3#Cq05(e%9F5Y(dBQW zyx>(fq|k22HuNFJ@IN?0;UB~I{b31P#RzNf0j#-5i#n%)s9`#CGg=K7!6oS2;Sb(S z&C|li8JPom_E>HQz4g|q#I^sQDp5Q63 zX_q%eIRME}wHPFeLo!hf^)(5o&)17f2rQf}3q>g#%#n*Xj!L%&%Rv&Q>oj@u2zYe}&VDK5d= zPPE~jqbatCLh%EeVg*0N6ZN!=ztglri)bfie0PS*%1wLqvMIkFnOK}*Xy<}9LMm!l z>;hdx)1r^(vlaPkaDm<-Z*lx8tsVUoCUSzAH-%^u#$r(2f?DIhXhDd;>kc+c4Iv>` zu5s1H4lFGUuzQ{~u)HT3wG|~?I~kfZYi>~DBUb!u)dnsqH>rO=;H1H$yOc@4XoFXH zWeeLC%#S|>a?u_?coe5rBWSUk>#*A zTbgqO-URU+TFPwc2;5>MhBHCDd0;Mn#9aMJ^N-OdYBENIK3sX+>x$KdH1_gb@$);a zaX2$8!WFMMPmh~9u<_2Jx5y7CBZK*`q1T*DR7B!B-=GZ#npw7%j`1h1bKhrIFmXKs z?UPeEc`wn{Jn1X44Cb|mXo#d|frvkGea8m$L%AdP4IB=WILA(0Z>5tt!^E{|!{uy) zXX(9WmX7H7MxRG$Bia|ES^E=nG3XwC%+5NZ0-FH`^O>2!Az*x($t&LYu8bsPaIXM~(`0aeIA5ae8%HsN8*A9v8Qdh2 z#+#?<`64p7QW^^MeG5jOo4u4CaOtGq^cFvPf@F zj_2W1vp=8CYi|a(sxb3paGPfQe`j!8X6-%I+i<>Lok~Xs8rBuTS{Cmz&O>#sPInF0 zAKr0>`?GJKQ3Chi^JOJ)b3shzT3MrT@TqIkWE302l4<)g6h%+qR`%3jUbPdr`|$iC z0}FQomm}Yuz%9k#mAoZ~y9<;_7Pa20WYSQ^t(6s2mmQCDc`O(nhk=tpTsVW{J$eRF z9RsSBK@5)ncoe3a>{c+-WMn{ImDu&=x38d{1y&Cr+1i^h@PMK}Weg)X;7Zv2 zkGD<^@k88}kwd)MBg<)1cE5oNMcT$+inLM4mX#LUgJgnBq@Mxo5@|bX?X;LLhd386 zp2t3ePT8F%saYFFNr9^HmjdDJiqJI%c=PH7qI<^A<2~c**W4N z1QXH`^IbP)SL{qMpJawFgOJ^?+piVm{L84mNUhA4Nmv4TW<+G%%k=!7)QAJ((vwUN zylH$KM(S6p?Q8ZbgaDe}w*Yau3>Uq-9C}=;lHNNWdYh-(^a!BoWdH<3-0fUG(xst( zsCS~I=MZ}m6xx^qC~rX4)&=So5eZy`2*I)ML5*tP<<|Iy@8W7%Jnb?}-D1_E4ms#Q zi$yr--x#E_=wNj|Ngfdxl;sjCv+^@`=oU+%n0T;5x3}MLK)pgSZV8U9gchkjwooM} z4r4C3MeecOI#u!r{^&R!3DEZb&5_uek&bO|&~|KpJ&Ci!{g7JoAJ<(67{5bYzigT|9O*_gd;U9|FYf3SxNR!ePn8k|1n&v-l%Pwf7W%%V83I~$H@?=eHim7+3Y5VU62)1mBVuFtz1r+QoO8B}wXm9`MXT5cFx%BM zT_XWp5M;23b>gp*kAP}vFqnS;`u1z_vl@}wcpqhEdU*E>%|u2+&Wb znL{!@_N#&7Xa9*q<|B|P+3jw4gaM8w1>em2m_y+aQn>hNWCN0-;I(z|+ISnV0ZZbN zV*K$pAeLl&`rBL0*27|F8kk2_S>VdA44)e_D?uu z9wqzT7|?$9w?tuoje~c!VJ{n&{efT7h(vsy7l^|Ae^u?a|NSVK7s2)srZYxE_`Sgu z-Q&eZybA?#UX-YQ3&ZqXMNS0AKon>y|7aYe{+${+h0u6Agr;Nyens3_!1aarGx5xh z72>~-cWGF0_B33VRD@{ygAj$cTS>^PAU;I8mB&eZn@!ulwNe!cLwqU2i_X%Cib|Ey z8@I8eo$afgRfOVE9>wrcoM=-_deTSn%YddhKaQ#IC{KvC*^OsJ8GiwLy2bwNtcJ~fe8;C0)@+PQ*RqY+D*#~Mw?qF3k&=#YE z_re>>4%Ray&Va+cgS8p@F|Jb9tDoE8w-6jLU`&`hSUNj8%Yl~6^bfCS7q4qa()iFu z&lc9x4vHkJXBrgld37a%G}pC-b(4c2AxVYjIU&dv)`&1KO#%z5jQ#=N4c}N+(FotX z_ibTSs-$~y5A4IVTUt^LVmTXCIUOLyzoRUb&lTN_o)Av-pzDm{*ksvw}D z@BQ4k8So!AZr=LMy>T=6M{8%`JRA?hgwN~;;M45#li1Bf-gkD;+D`cfMqh9{`KN%t zJXa;nR*fJ;`8m9eUt21;_<{%(#8%WQD1kv^PFx74{0D(3sCu!dWG^V3%E2`rzNB38 zsO1yrEaW)n;$SJhilR`giniC#-{;|-wu8YiK|LAH_6k4n>@yMm0$cc(AB{*rcB-I- zZvo*88bj>x7Iu*A&BY1%z$G{k;~&>wePt=6rlDzXR~(4d6t}`M^dl89JuQlh=|w_; zZzn}kOt&fK5Au16>4xGsQtU+;TiX;L(iESMLa~iav6`P^4@2=9Qp8Jz@J$MvVr@;a zc@&DfzqDH2wXQY;yVb{IbgOs67?6G9J7)MMlQ|QxTyWC)`q4fPY0G85EH2x6A<%v} zdAyzDh|B}^r%r{M>{LAK)O#!F;r073G2o{xbW-sje&$QX=S~)95|}(bYAPP9%Q$_0 zIgX#0oH!X$=`{CH3^{E9XVIiX!{hYbIE)p&!|!@I{%>>u=HsT2s1Xi3mhV!gud@_6 z1KB#COZoIv33dk7s@G_m_GU%QZ}17Z+42(#+!f*!X}u&V4s~k$a&QiH{0dVt_6xqo zPcUl)`oXA6HDi5d;6qf{PZ119o97RAj||4$5#WGbImjC?40YuNBoP$At3B5 zb`PU5X2q2YP#8;18k#XJ*+!59wo)1jtQaSOTwNMmJ({|mo^7bnOtdCDl}z_MS>HR@_IWf{?}fA+WX= zn6P*DJHGW%=dm;@$K=CX<>@emE6+{2r%TiBwa(eL06qqk5?vcQT%eY!T@%nUZiz}- zK&H%zcSxqdmIM6v40Q3I3lxq}(~ZT$&oS6C$@bLPuw(m7uIh*~C(FyA%{q*G8EaZI zr7C$?V9D$5a)*ynQ~z+MVpGqNapI(6uYeR~rDE?RDiS=K@EB>$;P@m4PT4o%uRj%g zqe*jKYo$4_JZ+luD+G|8LL+gY6XTgV&rYEAsC9{SBX1p%j=-bY8Ae|^wjpFXlXUE0(4atR{G~wsglJhQ&&A%9 zXQ?;k`K~+V=@V$;x&P;MY%P$ZY?b*-*?4rPY-Qbp$-$*899wcLt21tGW%<*w2hMTQ zvCuKBtWK+kT!Z((IC1Ru8IGy+Fft&!#2HU~s=o_Epz-H^$plrPnCe-yl19K5c;bER6^fkH`3lJR9b&Lbs zCWh?!E%{C%Ih&0oOk@)_{TJDUl_)b!Sl$OT8i9tt3DctBjdk#{fahw$4|ugg$$I?p zH=!5F_?nR5km*SFj{vVzNM1h7d_hFMt!5Najvuv~aI`mQY+$0%*9%(!<9E5AJ9w*r z=W4>`;pT3BTs?BB>o#1t;V#JfoM2 zU`@kdu1ji33J}Qo0f)2ur6Ru-diZX}EupV=pqI+|uowP|nbH?)$6Hr<;IGFm`cIBJ zx59f05I@S3gpmjDhkp)4N)`Ro{XM7#AvxbZt1H7&>(sqfI*Fy$h6~|xH>^?(VmEwu z#GJ&)Qd;se*z7UWs_N_CQX24r6UbLd$I?bO z&^}&u7MLLNkw6?X9O~=L1QB~7&;s?lDl$cU?Ye%mRw~~PKI$EhlP~M-;MSX?QcG?HLU_+XWX#N9$t+|XoB5Ku#c0Ct0pymo~RD8@2;;EHTg;MtMav? zW?OLmfBRa|pP=T9d7-j3ly5{1kQ4w-aAMgqV=@L?s*@y9Pqaug!hJ48BoW$CpR zWV+*zpG@T_Wd7Z2H|fA_o+drTCOv{b3@UyBSk&NW&F?Tc2{Ysv`eNJ?{*$uc-}uu5 zpNCr=mQJ_B)(3&h0Lr|NXg~Ua!H4^?w;MHxyo$9b8ojDYl}RrX&lO`VM9hFfms;X|n?(b<9DGDZoIWa$^q!D!cY@2DRqm z)~+lpUeLq4P~gU=WiD>dbm}x5jkF}P=HjkfWiC$8(6tDiw@B{nxj2cq{ebI?OG&@> z#ng_mDA%bxIBMKWFI<;&g=i)wMn;F(2!_YYK0+(4#KK^v&(AKd%47g5<%#R`KJv8> zM%zG7pi=Qq;_W@tIf>&{imPz}f~;J?iyjG9`!mTQDCE3;3f4?_Z&#dVyZ@JKBp0#B82vYhs5U%_KB(Mc@UWs&GQ*Oi-K{!?C3t6=6hd^42 zp&TUgHLguopX-g)ul_m{Ddx?!q`0(qgcP%X*HTPUC3rYO9&klZH{4;4%(gkCKbZ7X zH%Y;mP2f0x^&Ot-*8b{qj=Qmo5p7Ez*dqSVF?V&LzxsPm^%g(z#h&V=e(WVlv|+1Z zb@2)^H}6hJldGYi0NYtwOWTfVzv|c*CK_77)~HV_$Obb-SMTX-%8C6mDW^~>PhZal z3-to7`H0RVLohz@DjC9l(@W@41oZ&wu`p#HgY$B5K81gXRwi!0TkJUrDQeVILk+|H z*g`Bz8WK7*g=L^w6Ng%4WT-4WRe>gw7#~W;u@clTVmh#)dqWrP zupZRC*ib$Tlud_WyGx=Hakklo85fj}Fz?@Oq~EJ;eRw9LpXn$(B>2NgY9pUo>JXQ{ zso+*Nd&51}dgj$X#g&^+gVw`1hI72M8$Zoi72q&(?+7{FJp+zA}a{ z0lDT*8FHdJ94nBSoqsTxCN{%GNmUF%yr0Mr%={u&O$G@B1aYQ_Y4UVZ#dcH?dPM3D z1bYWc9+B}+WiY>8q*4GSS@13vE)weMrbu$F47qIwf_=GhM{w$zWVWeV4gzU|qB@Bj zyMd#QDN?Dg2vA#mMSxnvv4Fh zl8OsX`~w=ZR6fMvLc5_X{hT891SRf{A|Cx#3wFtvWD{wAT2oh|Rx~x-<}u;flO(3Q zwT8xqZbX&T4PNe!7yC-mS?$9{0*SL1`loSxq{yUcsmSh;FZ7OsmyDW+QkT}*f;UlA zqF+=WcuLN7dc9`)Y|FcSe!I_W-t>$1n$3R2Ox~CdsbPvIo`|LMD>t6F#OAQtaDXx_ z|M|<$n#UJA#WQOquT_U%r5a77f)0v){_N}bE!o>gQqD4z9|L7fTEG z8u+MMIqhK+>QSfGb_Y`1l(n~+T38pyaRsSqjjN%}9XG;mwNrDsU#PkUNr2-3j45o- zp!x_2!~1d9EjK3_KiIm>xU8f%k{+BdI1v{E1~@5FEy#q!MT^C}u#9Ti_O{1^_Xv*zPM74QzN4}hSXtyaN-U}Flh7( zB5MD_nTxa*cxerNp7j{$Y-?~rQ$#Az4`s>xJ67cY7#e0SReTiM28~JPNex1szuBi$ zFO-^Q_Z8OG*fdnl_y<%;CGc_)R`oPN08&TycZi*nw6Oy<0~qus8sKL5tB3{Q4I0ag4zf~@ z8Z0iug1|wfG45tY8lp*yc4rOM-YX|`C_`H{F+?n@3+7})T)hTtz-UfhE?Wo>q3wVqJ0C@AyvB0Nyu@Hp=6ity$bzOs8wvfW-awFagKE%`Uxp8)@yv=Z ze9W3@Ig_D1e2%cgPufXcvK`ViAlcboM|gz3rd&sOxy@nMZ4pbF@3&|kE4Go8j)M`R z{*9MAmhT8RzGKN={aYBj_gym28Or@Z87`_J9EU6>B>utb$%Hs*^o%!NPt#u^*9ULs z0_PJtC}#2z*Vn{B7yhHGY=~=loy7@+890r>-mpB1SQ+2EF!3V>A{PL{`ThaO)68;z zP!%50U5!tNw-S0o;*h~26FlIyn7{l$l+eJK;XQrg@%}hg6fZ+4H~|l+&>d=V43ahE zv+$}V%SVV|znJFY*A(Q2G%>D?)pTux3Bjn9t%K>t1T#;;7<^E-7&otU z|1^*l1d)S1%U4F7jAXP&d@`aXFp(xApr=D(4;%>Izu(Y1sD`08B(M-DY|#z9!39d; z?*s%D^wL9&8%XeOd=FIgXb5V_np>0*4as+Y;3Osf%^2#_V0N;OT*Msy=|R(|-VW50 za^p%1L6gpkoI4EEiY<9c!;2GZWD2EwsO^$#QR|Xfy#tD+A6sEsFzc^dV`)hZVJ?Z8 z#}OYthXRb&0v;0ajn?1awk*C0fIN%6(D!;IJq^3p`(MT0(R$0)Ga0SpYz{Bq5;0mY zH#~yifiYz=4EwPP)2oVCyK$v#l_$XK>+%e5`7c)aKq;5CGW1G1nT2OzVZ?-y8g!W~ z*GWa)Z?1u`MH8Aq5b8C)03@h*|yappDml?hC; z{Wpm$?W4-2W1YnJseDJ8%Z6Z-1e+G?ZNw{!pRGUaLY?A_>upVX8PGrGCw2W^tzb*S z_a73AY&rKnIpN&&S?{+_Ida`6oWF;}`YTj@>`X%=>00ZA^DH>eh!f7Sy7$>hjvgk7 z9;QayV6`k7(sFH_9mmBP!c*C-I9$WJH_*XY-o6n$KngrznkTt#MNH<-i zn;jt?%X44(n9|)#=|UYx-GEUS-|>0;1hWfHpc9>QOM`iCY15@Rx3owqcBr#{e&BIFkYV-84&Ko0B32 z@PO~M!g_4x01lHM4^Ey7NH{^>VkFJO5nvuv<9^)V_{E5_UKq}xxUch)Zz2TqxZ{qE z@asCFalRKtoQLz%NOs_rE0xe@o=Os_SOT`&L8ItD8UY8MHk_#5W2BYyeMnB9m-5#RbpAe zaVIz@(3vg5lcN%5XlYo6Q^C+#??9j4cC*uXz+pT<l#R=l@1{pREs%(u!gu3Mq8Tg!(qQNvJOcR086OR6F zIKlO|ybU=A7lhkms!vv}KZ=7XNbJQjEHB%vlgG+5qS!@lrACAJU3bz;?i32d#Uquw z7LPF+u`OXUKW``;Kxi=D>!Rn!x$RCXdP9mHIz3Dw50weC>t6QzX?exaDo^c( zFVx>s7GX^r1_ewj^t1?7aBi;sq1{M)d)ZOn+DeVMIb=0Fv?31a0k!)BKnsuqX~+YC zZpT50;n-XN1Sl&F%1RNweMI%DIo^XD%_L}lfNxFFu0=ae1Jjf+=ad0sOe>Wy-wC$m z+#n+sN$VMSSt{-bfV-D)2d8PhdBb+Je1xI#TT?QH+}uk=_Mf-z&i)iP(xx%xD*ELt80GlZJj z&ugbHZ;HF*=2-K1%6;vlKc1pJ{n@~WcTT=G($lxV28@0@q3UZ`~&tO>b+K<=#e?PIZJ>K(5_&K0t@%}W6R`1MiJsZmGW=xhf z>IM|?@sB#$?To$=bu+;7%&#eZtO?n9a)jNmA1c&a7v(t*2Q78J&yl$VCkYr8=CY8*Ags*HSD(4htHCsg)*Ky!6%wU6yh z%|!0nGmrKeQJGoSPpIr{kKieLEB^YQP#K23IX*e?IDh%%z(cqw`^ka8hkPg{8BeI- zbwNiUQKwK6-@hLDgvtkBTa&8u((zYNW{!-!*aF6Fo=|z~x60+dFz6LLNk}>K_)9sn za8b6L%Rccu;ZQKo^Mu1ks4e3OmD(Oz;9eL%vZHjUVbmulRKBdHMOw{YinI(DWsCIY z9FIsFc#o?lCfi6X@>nV`CcU{*&f-}qt;fI{|S|33K#j( z@eU}C_R{f7?DA0HlB>jlr=`d1&kd&9etz3JhHS(8>Xhew-^k>oAGF+#nNEF%ddvfj zuH0)K$35EG1pRi@{^MQl0RI4N5V11$dxzs4S>iq7-srTnNX2j4G6K1a~T{^s0xZ90{5Dc+Fx2`(=GiNZ-zBwpBdKpEoZb{Du& zN6ZQj$LimHNzyDVq2-B*2W2fS`E@H1E?a7N7AiS!@L3X2gzD6H6OEB3^gx={tvar? zDAH9Q8_TnkRS5N%zE7VQiJ%_Bw9S)Qd+rxO*Fn(YVCJ8gbiKf$hs!%StqEq<`p5$$ zzJwjYRmU7G`H=R#p$8Lb`}WfE>1IBWEi5gz0Yz3=oC7VUR1E_j5H?EAdUzulB1D{` z&!I?r4I&XXsZJWPMK{;5{~s%yO5xiTQJraMJ9?pGb z6kYiKXDM0_Ok#JZ*-L3I4%cpXQyQ%)ne_f?R8o|tcKM0jfIW!*?U)gCH&wcU@5`1CUf&$O{w#x^AO4@vm*HYEOLiyiOReetyqH!F$-jdyse!VZizE5~JX?bnu!H@8u|RR*r)A?+Uwp z2kHZ_5OP{i^F%&{yB5&?CwUe)6y}ja0bAOV!^e4Z-oz+)&pCJ_f#-UV_%To@c?f@a zp2+HZvC2g8J(dmqgwyeMHRF3vHT}&JLS%;N6=E?#FBKrTGyVqi$KfwNcAteGPC?pj zb;?W7pS`oVJniNpW5(;#?nFI@K`BDdrlcYp7n~YgzKUj8s+s~+;skeOMB&n3Ff$-? zlInpPd>aDBCXPhDhok6liD~dt@qwX@FmjQC3FhB+obI_xBkkjuOVhrqKFSLkp*i8! z_gZ=V+RMdvHSZGXyVhn|zN;?+4bOJ;@x|JA?Ow*;^88Y!P3X6eH6f_a@=Ko@Qm=s& zCJai7+Nn6wB%P|-JVWv_s!5b@}>)P-$IMdql#9?C6@XvVQ8zT9v%OCKRx3}qcWBJ;gJ@owehc=TIO5*5b@UI)b z25c%(y4;lF@*h*GnpBchHF>EE^fl?L8v2@TR2B3!+ocXw#D{!ZgLF8>>Hh-V|D7WH z|LhE_|BoZ!_V)im)Bj6|-SOw{@%Z-be2`gW`h4W)N4@XXvj3g(H8ouCZ>X9)n$Shw7a#i1XT4F;QMu3 zcYbkN8IN!#S$=w$rVLc30!I2$3unaAJvyk8N4(jjIXeXDq}Zu54a43s-JaD&p%wF} zs1g5DAD$E@o-p$P!_dWTDRB1c zE>Lw#L@$x&N_{L7gW&s4KTEmI`k7L!4q*k0vSxgqj=eR!nX!AMk&M>W)Pv3rH5J+! z7h%^~^z&lqXRWhaP_Kr3*CKW%a*cY!LzX_i&&&(wE(>}36iDWnW&4t#bhTGfRdfaD38p&xQpDSV+8c{>n;=ereSfpBN+)N#GuE#2 z1tctgWgO2g8^@2c>ny1u-`w`H0T2%u^+y)F)!KDV(8Y|GN8Uod;Tk-V;H3oj?mDl< zaT?3VvwpZdi^KmNK6`hayGdo9&)5u2{Qur{9^UXkx%D0Lu7g#3V6yy6DX815LMVP} zM-^+=nXk-I8<8Zt&cB~?l3nK?Q)E=2A>Li*M>;s&pe7kq(YwxfdUEVt=bn;`QOkMV z(8;;Sz3ZF~eI)KwPB<=5*>%3u%1lRdL_=6R$!f}6ar%}>==Ahoa8(6p?+-AoE^DJf z7OWIRE|GAB*_}nP`orml%ai>xo505N2O8iva@V;(uyUs|gMYbGc^#{%@N&OB4e6`t zk6q^-{=#qMB?G(8TcdZK+q@CICU1;1@rZ*{}riEsAWTs-)i zaKLPJkHO&KL7X!QBwO8^kq@qP^xIqAztxW1>fV2)YinxyN02hJbG9C!Q2(hhXBSBg z`Tl7wvr9Usizn_7!^5TK#1!g0A9g}8kU=yd-v$=QUny_)_Hus~zZu0NW}6#v%E+2+ zZpn0Jn;v*JL^jeyX2v8^QbWF{lZD7E*7DoXNFv4jdJ>=0;--lv@*WnzhKfdNCddga zz8u9Ph+KwKH5QR8;7_)urI+w5yRftZVMUBhAUjP|@I&n!rn^1p`=|i zffWWIEDaWtT5gI~x0{yK?V$e9IzqU0m^A+O=}p z?xw{YowB&q30w4VeC|zN`5FM(YO-yr(6uv9yG|s zFx%m1N5sLnEHBxz+AKh^Py#Pc`)W>PyJV?(KLNy-Qy3edCjii=JkQrL-d}i66qM9+ zksE4q+ZdFbCJ=6}uzqykzISV2($BuSs0YP!!cc1pe(NQQr@MeCfLV{T*EVR0-8G;_ z943$>@tjuOphDDRz$}}#nb->O=F2j2H1aL8&0SbBZ?+20L2R$Lu=pCW-^8t{SpjFp)cW zEF-$o8UmUlrdW=uVhuZNZXmSBY~g(em#an~!5nL-FD(R?E6IZhMU~!mS%jk2&N)!{ zbHA!-6KhryGSI%A%__>&(9Ry+K_u&~!MIYx(B#Mc64!VD0V6D5w}$`RvD>9x!=>K80ZeNUe3L)e%R00CTSBGWwFOUU0o`P>>fq48t7 z#FJWx;bHB+$&w3HDXPAQ-gRS2(3q^1wqQ!MF*P8je!vuASmeMHU>O#--YUBFp)speTrlg zPa*fCntns|!pXgPY`-_2BHb{DQ_45*d&3`~Y5^~CLM(40A<_{~!OlQD#XL7c4k7GO zx)J6@AY?HMi{5KY?`XwS)CTSDc#82^+7H$G#Tbi>{O85QmQ_e?0&rnp{GSsJai0LV znu=yhq``x0I4b4yPV*7+SovP$^>i_&wclV2k|nz68?^g;J0}R*@RaP zeskzCKaCo^880RM6&6hJqf1Kj)2inDSf%5-iFE>7$5ziztA@wwIVDv)uA6k!iU?wv z@ER1rj@3y4q#mAzg=;3)< ziiTnUgnSQGbHbLozDNGk5q|qw)OZs8fEMVJo%D|**_uh{zErgi$kfL04C-EnXBa(7 zEWg6^S7)r$)Bhc^5OQfEYX+4mY0ujNrDxDvJ4H-fb_9yRcEF&r)i)J{Cz}fV975!X z_2dpvNhh$sU^;(K5}zWKe1TzLSHiYMsPwmxPip@{d zZj?RT<(vZS_>>8Z{aUvVyiC^p-W{Ve%A>Rp9R^91>p7dn0+_4;WYAY50GEix-9NX3 zEVIE(+`~}$p#R`5OTxavsyAZbpF2lOSUDuk%$w4}T{!S(weU_1 zzo-@#Lt|Jiye1aF0u3N7ynq1G!Vdr0Eu1I-riEtmkp9g1pRLxG^g5Lm?zJb6GA!02 zTG;Lh-NJ^_!pL*X{(|pxAd!wQsvBp;7rlz)a5any?mMAx_|IiiqBq1oSsbA3S(aXj zcJ!G2bG~6y8^09F;M`B>_*vBlEiwoFk0rZ8|E$E7Xfh7AQ|Pph-U>b~&+Zz7fDM!M zZLL^W9ESH`18z>r(O3O5jx;|VDiC4nDH4N`y%vs!gaQdP^#4w0|HknQM`rtQU&~7c zY@*ms3_()$o01audW%i&8A?)b=1QwAV@vy#tPm+#`>4x7m#eUQ2_?(qvxM%Jn0|E( z1wOM1_5>GvhhN)R&X=^nHZpD!gq@$C{J>(=erPG{c}h=2G(LfdKUbCLA~Dw6zD^4k z-$6K2@}+$YrBcWD@=@B%?sUK5#U={ zUG7F)^US@KeUX4OUSZK1SdRqkEEoK7JOVeV> zSbC5vQ1OJ^xm3?&?jm#}XaU4|1kyB;|K%bztcIqzTe5&}!~J)BINbkrUGN*pcwUZod?|H9({p~D+-iE-4|c3yZK>K>bWh{0?-#(c87 z0BLI}Ipy_2e>TGT@ zq4QVDo4qB~fo0dBY=l#$Sla<~<*3r`&M;kt=kPip=fdZnLar&~avt}0ZyNpMStj}M zO6Zi>&}ZTMWzGsLT>dv|OnTMPzirb|V~0aXZBbvxEe!YH>f3oP{G0Uqh1a45MSVG( zO6>i@k^NYmus&=UzU#AgW0MTpP!PPyw? z?%5dPb5V@?>Nw^6DCZi0GbupR@MHD}68~-%aqZ4I?(KxUpP{wPEZqS!j`e+(H+Nx1 z689A(Ljs)Ez9d^LPRvsHH54_q{O?d?Ei2B`^QgpM$qHY3u?8*bTu9TC?bJXFg zgS%phvPyGTOnn<}rLkp&YF&xe=|yoC*1eZ_7Q}uy;{r>6t%eXJYc*_rq66zhALCup zBhLMNWFN(ukfY6RJEp2+x;DC(%tS9Xq3mqLb^&I5vs_V=XHl{%i=w^XuHlzyQHK3s zQ%5({0oEjKftX*7<%PQTZn@Du8QWNTiS_~pM$rYN;-Hs`qoGrwBL7xv0rlCGC@Q|r z(=9Cyay?{)@UMXTK!?tx9T&5JQDq=94ncD|{c=zGCA>ugy&4qGpNlW4#)+W^DkOFKlJ^9;y%}9&F zeu#90ZP##!UoMnOJe3ROaI;NZaRx+5i_aI*wbq4lx8y^Z=r}BPeKLE6?tL#GGK3HP zqxit|;M~Dvz!KrPeWBc%tI%j`9R)FneFU!REtWiT#S*dHP0Q8tcsWOhv1RYLIz}&L z3Uygg)G<9c_dZg0hHQ^?+4nniW=fa+_!D)ZTrw||oA#y8TquWo0tkGmZ#n)5_aeWP z-5ElwYGd?k<$jmt4-i$LvSyshfIR(XivhJJMKPdzj%L7R7?=pzVSN&-`476RD57VN zf=Sp|Cyegu2~Y@8o%@AA|66bH~@x3M78d&!%@du^F9N+;8AsM&6^8wZ=~v5 z0-QkRPGBbKWYp>n7_vZ8LWiu(oL1<>G!)>{QD)2Or$1tE@poi#aV1%xw|YR=KTI_y zi)>M_N8u5}#2RiSE9>WU=&$ynikb`TnA{;e8|3gDUeVQfD4tB(U>6XrRW)lH4sOaOc7Nqlo4m>^z4heM`-bH|?PkB!7Wg$4R+ z!~+DC0e9My&T|YMeinySRKHQS&;`4}A$4d@>=qlCZG_nj7$Y`NhSPqNHz|G5Gx97@ z=j&$~mjxdaYcYij_m37N*QAiG(i+6RO3!tUfLD<|Lw9nhfZ7v=+F+;?ITrWAgVrg6 zMPVpQTvQWzia_hzt56&|@@5sSZ%5SK7_1P{B6#7PK0wG5uoeDcj0Q7tRzjZ;Q2dqkJ<*-; zA*0Q&FB7PRLgz~%j2xH0kLnIZCt?LDh|hsmlW<1rI2Wj#7&wYSE}8Upm|?CxAgcE; z_$ci;_%Nyi4K{IV*BNAkhLwWIB@%kd&t_4c7srW#=Kh%nFm(KZz4(nhG4KQgo>Ar@ z{$-T;G>(7@PYisC+-{)>I5B_=f$^C&ykz0Tz=7x!168syD@8ac4@|P162E>AK{h7_ z4ns3op=W7WcgMOEt|{pQo%Q*bbk@N`#dNMlt}8tM4!%0!`L9S>F^5|ncEx_T+Nwr) zXgTSL0o;x#B;k0ACdrS7ib;AA{pTX77hfHc9%Jv`8T-V**H4Ii(*imvLAPS>kvxLi zOA~~Z<4FkW=OrlQC8*m;2~+kbPt{r9cYf8BWT zcHLB(_xYVScMJZgmOL)^)P;OYe-cg4TjwsJhMr<;=wXk_#;OU$-wR2F+r$-$-yQid zJKxx~-*P8i`=jXH6*2X$q$0k)is;?dRHSX%$b{%t3Y?_B%Mxd13DF?Fo&}(7HBzIM zH?sJl*3@=-&1y91ABY05wCdm3)U=dg7|+J%_1q6aa zR68vh69Ke3MNsdW~H|FK{c1KR0+kNhJN=FEWt3__KDh`-p2Fr`@=O)-1Sf-d& z1j9BsCE@k3eV^Px>@TjA&jt-crI=<2W!)!t6X{^QCbuR%_sPYVHz2TFBaY^AwZ&Sj z`{Zh$XaKU@_sQLQyWM0Rupg@T!7lc!IghaSw8(CwMJYSJ%L?s~YEDz&*i3iH*P}|( z&Xkg4oRTJzKEqw|L6p=~^FqFxYn=_Lh>WPejDu{2J;>rF$ikl?_c}g#vL03azq3cx zft~11sm^NKnNbwdrWOh}7uao+KinoYE||>&Yu?7zN#9lvV*3w z>ZlBMLQf1MgWQE@gd0zOOgvlzk?6I94TsXq(E?$J94YV@422aJe(ezLn~Ea3h9OsP zT_}56zn&a@{ zX3!;n5Sw?*O>8{!)F)%`9pXo0l)Kw0cNfd8VmVRX&Rts9vRs7qeuY!6CCYJ&Pj-mg zp?vrd0)HZroEROAXl^H(Tk+E^^fG5z+&Q29dgNB;(ikY8bWqL# z%5W35=TeGShAmzX0tS1q!NDj z0s#=0;{E^Xni_kngL)&xhUTaA+y}h$cms-IEZn{oJHI^3$`fb2)z8*0464#9i1U^c*cA zweMz`)58s+<7lM9#@kb|O}?8p`A=$;-#2AWlF_@Vd0mcb{Il*z zwR=jIzV_N{Ja841DNm{U#V+LZr)S~2F^sgkyu>>T7X$JXHn3AHTVPGUs9E@#EE!xX z=U$@fG7+(-xQ^-r)U7hF;&oJce5QSMS|%pwVBSW&VrJzZP2DC+G!Bc$6@TxgF6or0 z`?G^Z-GjGBQTN~7n!2AykR|h2spGtb#W@@EI#kjMUJJA+nYQ#X_7=jsZd9n5>Drl*BbBaS3;Mf)`4q!z#1Do@;M$_s$_v#63S;b9eeZ4tJAX z#3kY?a5b|BIVar?Yo5e0Srb>V6~xINc&eAU3r~r-({17oM{};KA?{ZQsMW1qT*M`i zxC3dC#4%YD_eW!kxCvh3W}q)BA2lPdv^aOp+9=Kq8>Tte%SBvI7jY99+MAIcNgR_k zaW}&&s!v$=M=@7S%0Bc(<-~p6&LZyB;wa)a-ld6K0ogM>=U?tC#>{U?-4cwKU@7in zwMPsW>IeW80Clb>{h*y*zReAv3}>~5--~o0AfP(_KY3=R`W?>*S)~Fg_vik57le4= z6=N)WS|!~<%UOIlYj^(wBlPxBjw$`t&1c0GU)Iur{&Q#qbSoEhfY8gxNfT}GfeX5X zxU0FKZzc3{7xcVH=&v4dD7l2tU(Lov9R_z+B=lkz^zpuce#?csQzZ1mF6d7IZMq1X zF&s%;1FgW?oQr;H-QV!n(r}HZN>gcn(%K?C+>J_g26PCY zbX~4b>W9X+1+gMt>s69qf>Tx>Yv@9J*e}R_2Q4N!`jTQk;nF-d%3p957RmBms^ZV9 zk2CYjw^Rfn-=7k5>HUn;m#wW~@W35<7}#6Q>xb$=uoQzq9~o?9pOTs`7+o{KhEE~1 zm9DApwQFk$QI1$s_cisUpuVnaiXZ^aL}k<$_HxL6Fer;7WopWqjCNqdkT9(yPb6VWsXdftJAo>VcR@gBH?E zjnuG>Z)Jfj8|i&Snh&HAY@6A{VOv3>!?tO7cG$K7`bZz;c^Ior9ICJ+LJ0fiD-I2w z@QcX7jU;LlGHpjWBXs8fLjSmpgi8z_LlGH&7Qj}ma;d_ZkR;;eNgf>EaVjQHRsLH% z%;TSRoj_SM=}7@+eMTaidr&=~hP}kGviuBuZw~cgkD!B#9+1LD!S^q5U#dpMjVo9C zzqA`S*!Jq1&?k!=5wf3PJ5b09QjbD^^n%0`#|^Ur2sS_snU-mPMR#ajI0PDf2#0_l z1zh)u+kCTFb`MBE6Oz2F!KP|Fnjnr9H5`>Ql-i<*t*^3OU7<_L76)LH!%v(5Z7oP! z25FPPq82XNB;i$R;Yuf$rY$XXeg`hziI`jt57Y{M=WW(xwu2T1BbnE$HMiT$Koey& zjsF7jr4Q@xs|yjWwD#97wQ7Hx^RV~i`vg;aCTpi%Qv8Ecdy1!ak;x-l?b`1@rP^EB zwVxhc`>_GK?LQ7?Gb=P4j>*I`fqGx9!$`zh8VVm%2mgRC3e%9bRy%%1MPa3nLO_I0 zzrd5e5wna=ui;5AvD5#+)YM&1FT5VG;3H}^$B45g7p(MJM75v8ga0^;9a2c zL_+fiRaZYERl*+h=oC@3N^C%$0Vn-5+ujmzFo-*eErdog9?fWQvx;AY9K;oa=YztV;I;SGu+nZbUR5kSgCG8-Xi|VOc zbxl)IQxPn0+|*F+S(5dKWPJ+u;<9>>rE1oYbdspz@N6mq))Lgme=fU_ zpMEIlhTEWI40jF28c`|B^o&{#*ESA46H67@`-Cds8E5S4H10-4w2E0EgPqQ4{zp({ zW>J&FE|HDg>Z3XIIRWdv&-k1pzU=qCDCABNwLp+qsM&$shun*RMA^%f4B7WG6|4JD zfZNoJS{{GCZ1|Fg*kAWO^&|G#`3)E*IF*qq{i)zlqc|nwmYpUwV*~UNfGWbRY;4&H zn3y=8wpUlbd=lAqiULXh1UW)_MHbA*I3?OKanfRA^k9LD(?>3HMW)6JmNM1oPid{W zt8Kg&kZY9p_c-kE=hX86NW&TarXG5LW~jpw))6fIXS=^gDZ|25byMB)KiDk0HvlEJ zn%es@8)dG0dhH(p;`D${5ieGIP~j~{R=nvhm3uf6L_MbSRmTcy9qlgPR@ds1G+EZD zXGhY~3Hg?+bw_O0*B`G~Xd7I&K!3r$Dt?z?=2ipAAjSLkVPA}*Egkax{k`m+$eXpw z2~40R{lrGVc^4oV@f?eG=p`|r49;o;-xQ7SW#WVNLJU>>fWv>o`mk#4PkGcWQ0Zp@8{D2cNh%ly zr2n5$n*R^Bs%@6)!x(5VDKWvsQ~~p!HGH9 z@evLpf5Ed@YpZ&?W-U5J2yCP5vvK(i;#8tVDHFuNG;M;p!(pQSxtC3W+S+QZ#a;S@ zK{oRU#5Z)f2v3b$OzH=G7qDALxkRkZv6OX1PEss2BgNlLe3zm zKbb|f&G1z9+-|)K>F}6lA;`)Fgy>4yBWjP*!fG0aHtqPtaw98)vlu2hlF3aZbs<`0 zUzE$;3(N$Fh7}`E#UnEmAJ{Z5#gz)$WS3*#2vsruB;MNv5=EOROf%TeJ* zom}c}dRqn2f$mdA%Esy#-V;k zW>*+5n*#FjS!aIL8C$7wq15<5Np!62S2w{ni`Z>nhcvS%So}ZQmil(>kM6M;gbB2Q zSlLU^>7?-j{w0lxc&M1he2S0kzow+0=AYFSd~*e+PC{-4w`*VJq2;8ZsY49g`dMu2 zbyBuvVd%L?x|^>~tZWm9q^M6Qzm|nr{1m?FJQq_Rd6dt;gcWhdS(v9cH@o{O%BA=w_k%xT5DPcl_6ce;#Dsz_^eUO{A`Bzk*iV75ZK zwOR{5kB}AvhPtGrm>&NQ*Sg<5=gJh2UTP`&Zvi6ON9!hm3^m;GPO~`m+@fg3q=HD) zw1*$XGEhB?_lT;gpfTnr19SKetgQ9nsVTNOkk&_*F|HXy{dE^6GV7w%@o;y-Tqt}C z?wF;AQC>nf&c?DzyK7F5F8`Lh{FSZOG) zzKN}D*vboQ7NaOGq3H!jQ7p_e1T*T03;%os#LM3Hr8egz$H!I1kLa4Q^E0ZeJtZ>L&_8K%CZO9m(R_rQ zs1<;L;kr?6dQPtZ!bcI)g7WTee;s)tx zG6?IUp3&1)9i*AA^e+R8f@Ce6wj<4y`(`Q1tpsbG+E>!y5`kq& z3@mdTERPY(4HVpna-(9D8|;)Dz;dsk9BlUf>?}lE8Jk_)@&S1Z`Tp3VqpfJO_mUuA zZ?x6X4(#B-LT%x%Cp4n1G$!qf4=iEX+9(^bVmRwev6jUIuT#aboKMGd_(4SI*o-M$ zMAz(PWUmvmS9pCidmlxbVef?3XhmEbZ^G^9cn){KkAw817)U$CKzfmbw5b>AKq!>( zP1Gt8wEfj1nzmg?Gqip8s)x2IXlr-^!!9GxEQ^6=zJq42K_l^mA3?K*LsZWZNbZh- zq_2Y{!%NHCY|=9P81HNhhvIv#Sx;ZVPxXF5ieVTQ64QnJxSh0>=ePZTE%N+3D2T;)9=? z9xi94;@i+kV<6dFTAqA2bZK|XbND=K^E$?FzgBzNu1n)|IFGGBD_7X=uU!bTN3AXA zv8l*eV&|-U$D6az&Upqojw@}xo&E%HVc|iq7@f@pG{$sYssnrj2D_U07)C|ted1H2 z^fPg&x`2VR+8i!7fd=}Jxj3({0zNo$&0Z;0Di=ZG)BU3xR1DwtVXdkC@3=SL+%1+O zMf`=oKnrqZgSw@cyA7eKgM)9IvOmHMz$@OZ#g75e8&qx8`G5>2?t96Z2^{O^#BHuw z9Oal3Vg2j?2%{=A^aCoxT@4{S?7Ddr8KXaQnu2ETl;`by0PX9Qe8!!!ak&BU_d?5r6nkZKx|B3T3iZX5FuYB+9)a!@PSJ&r(I{ z3G5{2G(PiN1a<8ZwV&|tRhp!sAV~-NjY1=3^HH>?>TpVRJYd)HdU{kH^-LZArSiU% zJT^?eyS(%|P7DwDd=N9Z`{x)2fEUkNk8oJ$;u)ec1Aj1>N1>zjVD7{CGdq3ZHY>e7 z)7Pv9r<@%Jz!43~r_)yhDFL6aI`>R3#$IzM&in^JBE&)cZ{J`o#VpN3_#J2uo&|{F zE%x+t&Nb`>-xZ%kZ-L!*mc{zp(;{Rcu8U^8f=uWGnn%2hUn@dlrZ96&4+x7mgcE1i z@M-rb#y{Ix*O5!P3$0|^Ih==;ij7v;{_VY)16)kkk@9~JZhR|hO0+YgxEeW#1%AwBe`f3W$&d<)-COPWEA4A@8y;KwRR z1lB=AfcZ)`HHecCFqjGW?1i8-Rl>X|speZQBz6!A^1n|IFM5KE?L*{Pg9M*&$m!3ocUCp$2n0!-LOSE^o>sl zeIsl91^>Xd?7C)sq)^UACh(?;P{NB6r(UfqVWphP&D|Grnv&Abtu;&fGf*mNCp6fa zbGg(iU@iRz@(alODWOR~Rowh;OIwYV{+DX>*lDA0c-HFWl|!c@4vWsT#9=;esfnB+Q=8x*0rPd$mg$fIfq8U){?p*DJ0cj*a0M2gpgSEQ8i+NGpg_{nCMY8K+0QRfB9>LU4AeK zoyXC`(TDF?^uaEgG#tz6poG-41bM|vC?E3asc)c445M{IKTH$wFI}++#?l=eHx-Vm zT!;eNmaql7e>cXKS_+j8T>K8C7OpdZOHZ8#knft-hEjo5I(4p!w}k%M&QVf#ReLRU z7eV;-rSmf3hz$g)lr>hB?-_`aY#Vz3j=;01hvS~7DXXuLY`PBvol@8?-+~gE7c-H} ze~{oT^VlPpHwuriAzpaEwg%M+C1G+TH2Eb{I# zIPH$Q-e7EfO2j>FBRUA36ftL%x6$p~3u!7|47$utX?mHQe?_Mtnl!Nbxc)Z0+T2P` z2#62KY~6l;0}MFxJhT~PUwp1_*}XGK`rbG1DW{3=JQ|md6?U%ArtGTrF3Dk^-figW zLn+5bF06lbEt=h`getbx;o-r+Y`VlkzJ{}bSa0?EYX{~dv1jPQ1SH~ZiT0WaxwP5P zC?FcO81lu8>ry+b>3W3XMZhEx|N*y5mXdhU>^7xbRnv^H14tP|9*bUfs zCxjt&HHQ%GTbrlIRMXg)KnXOSO;P@PQnx?1<(0S`>acpAvh4a2L0R4&(ujZiE@2(? z@|bKv#2O4U~-i1R|aBJyuR<;9aY^1=uh}>OojLuGHx| zb@kUsh3#TsMuI=k^=|p)SdrMDcE>;;ma!{Bj{oCk7rSL4LGODB@g91mFhAL9SrZ%Q zRR*U$sK*(Mw^8y#UHWa5mVL>Vbvj*I#%JBKH54y7^!S6fWeKO$vPD%a{?5R}5up(d zT%lX`RclCMPBAM*WI{6T7lYJL1ULZI-UHe>QT9HZ6QTDh0_qE-L3Yy{qXamDWJdzd zMDVHLKCny?q`7cUDdycXYGAhai1Bb7@(8h5&LHwdWZke z!Mn{P?4MNhwR#4U0>HNs`w=Pcd&{fEO?k9KoIkg2Uc^WaT&Cshe#(8Q%kU3H-jj*& z5sYMUCG$;7{KXJ#Z99`=4|VwtHV%xr4y5ED zMxIc@H%-X`XdeCP=^0*1=1?_Ns#Uh1usHGpmMsxuZ?vIg04Tv|p(;ZxV0!=-jRfzD zQ}4I5=fzT)FZJDMo=>uC_$()a=d}&~qnD!%J&AFJjqxk#2j6c+(HN6$j6EYUuDw+A zZZR;T@tkWQUsIG!Q*xFh)G$Qr2JvQ04Eg@USFgD#fH(C6w1PDr;9R}qms*s684G#y z?P&_r;8%O4h5pX9&EZ+5~yS+dY3v?^Y%#*Z*gA zPpfHB-LtiYZfp@m7qO>!F6JD50tWyTrH-7GKEt!8s?+@E4Y&uvPyLQ)vuZhV+%?tPI*{(7whgfR82>|e;;Afa1k^C46sd1OMktGa2 zzJi47>(CB4{76QDP`e>ONq+oK8v}YY##IGB5|9smyjmE+kCrH*{+f&}%zaqPqWNT# zwq?FYYN(zc03qF($fX%{$!47B-9HyM={HDFs{tedAX1LAn|fKweFFfLGxMEY?rl?U ziYd2}<+Oml5C3KnCZ@RJvq7;-lif^(SgHPa zG{)Z?`yt<12wI8M(zn|*ZXNVeUP|RwX^$k^H4HH|fKk>u^7)H2|E8l3Bqx)9*N}gCrwji!Tl|9u zY8#%_PDpUkIV9#ruXwaOC1REwvDmoiktjCSF~l6BnBXH5ICM~y$g0G}HAlf8h!dK- zkP3&ZNgesL*27#xIH~=0>Jq}zW2!OS1Psoy;K;Yu5bLDVQ|V5{(6iHI;29;UGPqt5xjOJMvizN+9FGf!B__4LWB)?3;8aGHvnG- zCQMNK3qrorC7#v0X*k)g{4_IoY(4l*6U~CP7ovIaLgL!62RvGC9+gR@x}u3)!IqSlgfGyo z-9q6C`L?g%H3fMcY+?4Y?N%FA7lX=X+d_kA1`rjEA={EhdDwQlh*V|LdF(HX*rg9e z5!>0+(TsIqlPs=yzPFC!!q3X;c*d^d+~_*CC259~Kmv>IW*xh|bv$`Wb#%7t$Qd8i zjPXjw2AYqCsrOY;PT(OOIE^s~o$ILD6+A zYpi)ShvE!%kC{VsB0dQ-6~>3UZ#-rceR6i_-!S-HASwfSQ#+J>j$?zlnd>;I2Us3! zgxQ`YMF(0jZ~^Ki#mr^0q?peoMZsLplES~;SyHr_#i?v15$Yk-I%Jt*E4)K!6BSLR zgL%y#7N_^juO>P({4XBd2JMt_UUNB7jYLX#_#qmhR*2tbd=|?rd(b9%gPr!8v}qgi z)QBCNSG^&A=hVi877XlW*^qDdtANg5DR0_6h&;uzm!qt;#4?VoECPul&PPqn#3=>d;M;RpQ@4QYsNRSr^U}W z@z@SeL#;cu@LySzp%G8Ci6nO?bZU?~=)p8r0 zDPHg=9Po{>aR@%e24{*F{4VApE^9+)=13dkfm8Lg%ka$+I;*bQL&F!pqZ0a!T5&dYny8CX+Y7{E?o8uDS`(ffodSzNw}xu!is(VENm zcjnGvo*P8IhdEC`k}yYSUlSwyA!Ng`h!Fo(WFYB6f5AhSz)*oN)I-bk-sWG3VN4#M z>;+Q;kQ1 zkM=m7hv*MtK&a#q|IE=aqWyt;@hhwCv@BTk%cQJ5U!)M1Ub1Dhii33!x@X z-Bv?+8=&3Nrb}aSjV%qgb6UE?+tO|RncJ~-?hky4--wo`NK3QP(%xw4Cab0Cc1uS$ zirLcZYr0yx02eEurK_ezwv=KdExiHMLGG(RjI(XBbuVnzmHP|Yp1`%8n$`ZmX1s)F z;YY8?VtvH)`-aiVZ4=Ura@#No+UV+=qP5Y>G0HvWlq*0vSETbFH-eBbew>ey`U~hL zkBkuS9RqDA2W@+j(-3$}r%L~N1fm1=+>tY+YdP|v{FCwJMrVTI8*aqGFJu*8XzPq8 zRh>7A7}whktKdQBDPZ)Jf*{Aw9! zK!U50U~KMKG**Mov7W1w-ieso)qz*6j=j~l=tbPQ4E?-5{3t}S=oYZ7c*a0WujQOC z6UY8+OdP*uApb(<@3!;rL_TK`-Pi&1pE^+8rCd^R4FqruAdaQPA&$87d2^`Db(_zNR8Wb;@v0lgzn=+?dc+ZY z5IAJRyQ+<2Rum3V=fm7MR%;wvCILqha762LH4JApL-cVMbc34k0?3TY?->vvyGe}9 zi;;)#0@!3hy5SS5}sZLy>=SOX~R5U-9WItfdj|X1zj1weV^W$4UCBrd+D(FMN zai)}0!e*xQ&uoky_6N?xZ^YbTX33`z`0>;L^3W&pF@Z%K% z@Hp9q472ag;o3*OMZB6(1L;$b#myUx9lRE=Vj(9f!CmEB!}akRQ!6jK z%cHDRz0q^90$!X zb$){OjBcZ8_wBgVK`3i~c}8K98j`22L-V4(Xx z*gL-CI)8pGz{Y6b)?<`_AmC{&uiD|m2%>#AGH1KGknbXF zm&SMP_=&%;g!DK|0g{Fru|eGqT*M$_PpE`YZgVl)$l?yw9poA1c13glw0lJYV(~!L z2c+pXEYv(>YbO{ace|;)OT687WuCX&{L_5sDtLBv*C8JBZ}KIkK2Wb7Ice9Gs~G?| zm9EPqB2U+qi>>Gq2!0UO?z$s-oL<6W7^h2wL|GSeS#8eCs7LNZTM>{V8O>=>%xEsN zE_wqW3*x`fq~(cc2sn5ZT6x4>Jvu_Y5*CpR_>rMPfC!M17}VuWA?^oId0 z-vgJgqF}(yx_BI9AH|T25 z4A&E{oDn~+2)=fI4}4X;68@Qr;0N65fxjNFMF_%06vpi^V&xQNA1Uk0az#s8v14D< zw4$~;F3M;PrZG7hY=j$| ze0_C-8=Gjbga~X`YHZ;P^Dt--EsXm>?JqQ+UsG0wIis+e+8)phItOVn&Dg7_d)S?f zS2FaMGb@090TsGL_6fWaepN;AeZ2Tn4gS1};LFfZ7yi|F#r(2jmmGZC{Sdb-tdDnZ z#apYAaDqYErXrMIPxGKG!z)RyRuO!?$sYLA@v2XEceU^He&-Cb$G3S7-4EXFzrObI zj0dueUYd>v*7%r|im{ehf2F6!xA98&p%uY5^}^RR@U1F>-`vB4e;r78PgfjX2kZ3Jj)X zz+xRCLG8f+-{4=gF?A-U#k~5%j(jDg`VtNTQ%Wr9rHA11{$M*!{Z90 z?NDLx1;7_`3Bg=0A>sgV5<8S&vV_=nAkq%q5qk--1WK9~JMGXNY7vXU4wZwBt|dfQ zy{M5!CLuHiYMtCM%hVnHYs6ie*ip`F`wL$ot70t^_Czidb{mdDC`blL_(?Sa32dQk z)cB{(d4RP=E)#@VhxQBev9fbBUoYxrJnm(_e_E$4b9i zC;(2S6Z#U7XECrf_F}+vf?3BkU@>$;=?SROi^0v}@iEN{DuAR|CF*OW%?R*30pJbrd;;v)X{=T6ABz|Pe>#Wp=zY=!qN_iw zj(R=!C9Fp=I7G@seQ zKm+`$e%P0{6clRxW{nd!aQt3Q!YheV8|lYz1)!cFAGB`i7FUCMtQxsfS@guyah4&! zbBJl|VLY(0nSvn3ggNLlPh)%HmGH?G!N2^e2Yw!22_IJx`~_b4ItG4o)e5@%-cLOE z2ji9a7ghwHUF?B>0IwYP?!{?ZvyL#a6OmK-%GBP_a2?Qpwq=dN@XMM7CV~1Z@L+2 z_u_$VIb5z{E3$>_J#BvsuY})F5&W?d5Bxs75`JDq@HcqjJLA(b)(1~A-KC%?UA0r1czJ_<8(_`YYM_9eVwf_?SC#1rJSZ|;m}wO?Q# zEE$G9E=HZ&k%PmJq7)AL_5N4E3;0IF-4+sQGJPF5Plev~J#I^AiFpoVAZi=&=zoe# zcAW=Pzw{CRBYNsSjv8$Wo#dN6$`&PFz#kDHyXJ@{cF}QF-fG9bGr+S?K#~4N0H2)7 zd3l7o2bF_ovldI|&+|egp}SRk%*^OrdhX~3bEYwR!|;Yfs`zE&gLB{G{FS!Sv7l$p z6YJcCw$&zDXZ)mzV1M{0F;Ohve~Y)G;VsbK0OdU)+&9qohcy<{%T08vO%`+#ph32) zW|PA$n>&AXx2eR_Ccc#gHrj3agl!u0w%$)$ZxOl$XZWq>ak&3Mz7E3C)*Mn|%#v=w z-S(E%fD@jvc|BeUeGJ_c(}>B2o#0xFKY&-le^e3tIYl1$>Ubsm(-pzzuJOQ+!zwU7GkV}bf7UvTh> z2(<%A5K!WiF$C-1zWN9Ebs*UfGZx`Yy#GXX!En}>?>y|i%wf(kajOqnX8e)qfQv&WP+?EL<2jgGvu_zQ@5gG z-#eK&8&&Uh{DL(bx69U|x*Wkp;4x$O!Q;YDucJNgTRj;~f!F~z`GF;WCjP{Mmn)J4 z;Q6TnFpH`9hm2&LM&ac=SlDDjdRerq5HzAHs>_0!l{Z6~nzvDu578lscmTB$?njOtzCHHIlNDb>DJ{S!EldTf)ebH-1&tau0=fx~JHmXM!03y4(#Wm;f+tB^ zNScB+7tGMFLb1M;rE5xBroXVKPr#`2!GLCD1i=sBn2F429HW|UyLD>$_oANb`6u!+ zN6yx1&0s5Z4Pv#IBGX6qMpVsm`qD@~vAXQJVYxM2_l&yrW!Mb7GIB~1CC=#jX&bLW z-4~%qacZ8mMX~HK$GPvrDbe$}vX3|1j)I=~eBK`@h50=DkkZ#gvLf({a-p7D9v@d! zi`DGFK+qF;cd2G2^L0Wl!WAo@r$^W%EbAIIPuDg?9Q_OSKu&RgkbtjS+zdd9B&<&G zJ8*`1g@j_SkC!Us{nDu#gWsqacvL6%8N8#!Li9||?&ETGe;1t;k3O_Y9qlMkZBYxZ z9pX^-7tTzTy7-dfn|E8YxXJM;zQ^%*QX_rzdf^O9MRogI>8LOD+5iT$TAB zo2$?^yO7^5G)@=lhC--46@UDN;j5)~zNGjP4Wha(L>WP=_6_K#wN>JvMOr$DQhYxR z)+F!3UyI}!cA>}YLjUw9$ zpE{b1ff6WX9;gj8Q z?aqF-%0aYMZY7y&BWf6Z>(1xDX;kk(l0v?(20_Dh`53?Xqgtyw5#NXNzf7z5mgKyN z-%B?7mzP%AnBT2xInV7wYvE2IQ=%11w0i?T<9M+0OZyVYU6PQVy1{0SJtamN`%6=};K*spu|D+o=GJJWDhyVlJ9GKF!rz=aR# z`KP7kkHKvV4c4hq!>E(+jkulat2a5Z5nkp4;SKnrZUcyp8`bGDe+JVs3CsL05&7&# z^2Ew-sPhp?k(Qa_yK?|JHojSQ%@ki>Jo^h)5MJX##$a4w#zy<|n;f$gX9$BPYDx6V zL92Q7mfniy1$VJs>G^F-RsB~^MbVyq(42k=ylc$r7lAT{5x&rCgg-`T@Q5qjq1RxG z5MLlHOp$IE4`miIWfHxsx)n2kv!Lh!GQcob&SqyIt;%K`Y{)7)4LpF>wfkLj_NP19 zBmJ70;pCn?xf~h$wJd@lC1Uz?#1x#L`n#y?x52@jBT)2@x0RcZ55vWNkSnOav>R1W z=^$clYN(4fvhWzR4gxm;1Yy9f0cS(L<^1jPGJX+lCc~^Fj35p(#yxcl)yiX*JO21Ss1Ci zDjlg>z%$WmX&s0D7i3*%-U{q>qj{MaY}zLKS07U_=_RlSbow4o`ZgQ>6HmILUs~p| zmvD`-3%{K{%acB1n*~4ClRm{xAB=QEpi0u`c}bM2tDi}TiZ|zcQHkn_6DWk|bE`n?P7QyH8Z zJu%$I0gSYLuniOLh}@7b=Vs2JeCEbwd3z2s4;3OR@&)tli)0tdAwDmt-Ch&NA?!cI^P6j&ycv$fKzs-Az&A&0aPZFt0?jjNPivZ7YL@{ix2=&+Ir=jw2u1`!L!v3SnQ`%fhm}#HMHv z{vkEVJgQ@1asSaa*Gq|q4{(mJ%n+OuHZxrAzn5UVcrT{kut%E-Z|ue7S`!r(Pq7G6 zGj)B}tsEM#@% z44iui@5myOw zpRLwSH&+I_n0dabt}4e6zEb)PFq>GEvH>DF0vpYvs&VuT$cFF72cktJWLNZC zP4(dV?ydHyGSn+>p>Dxp z3+e0hz1*2sY<6FQ+csaoqjAe4Wi^C@OqIa}{sM`r^MsIv!g$<`Km6yuY?DRQ^xc{xzv21aZFrW;HuInW;maTboa`O@G5D9vOLdTJ zuEe>bugqf|w!o_V3q7R@u)jcC0LoF%MF$}6dW-X4ue5Yy11j~WcmB!h+2SjrhV=zI zfdWpq8W;dL8O%y~0vN_l;~O|{A{2ey6F}gMk2Zj+KI#3AVj|AGTwi^ig*DUC+y|nSoEla!ju?dLkWP zQtmIz-sCSla3Mr1rPqpE_VBWx0kvDDa+0&l>WFu+polPLj_%Mb_<{1GDbbZCU?;H%6KY)Xt=>u(OP5vF z`)Avg=A#`EmFAjC?~_X3cNiGDPY3d2yD@G&4makJbqx8-{j6ya%K$D%o0lNjg}LwtTzN6v-`v;u9=)fsg7oHo z)C4X_1j@w~PeAi^(AMiBCaXx3PH4$-iohv>%LkmA2@vf&J$UVY_Gu8d26pV?o1wSw zUm?3~eAYbP4-qb!#!50mp8H;|rDm?QW8cPwpxS0R&@zh0N!xYD#&e{Fx>V70)Fd50 zFBdxatm(LmblgWewt4AzS30P&zHVjH(Jq>f`QK_frf{rozf4w`n%UMiIQY zxD#lWhqrr$A(gf1W4lcYlA?I~!8YBdWsqZ=bO`AkpcmtvMBwd86qF5u)=UnqBAuGH zLl{E(>cSViW9x=fqOGk>+lz3rM~toJhPDLK=G;@JSAC&*qzxlwH(e43QbdiJr2e)W zWn53FJ;xm#QFO`oDEdDXg}NXbbi_-rmXv>1EfX5Ik|RdWv^=Uiea>*lF0szEjQ!3M z-Z!xO;xV{~eWTgi3nHxVx!USwQ!_zZSr?vb*U-S!fQDOEb`?`c7~-itq(jaerzg4f z>I3R0(>mCpD+farafXiV!(Z#R4kaCZD2)iZ`9nODfyY$@ZUhH&{QSN7@R1@o`0Yw&2(%1e% zdLhGzqy}{uEyBW(LyUmp5;g$(E(=VZ zYKs81G=a|;w5$uu%v^C~dMv?NXeOKLFZdXLq>=lQP=e{CN0)`$iwPY!_zUL(%(PF~ zqwX>k$;KAB^GM0KVvxrI79c&eDg}VFt-&RcBHSkv_sE=akDI0d)^LU;)nz#E3hp`) z+Tr0?BMX7F!D*nL@nJ3ZrPcLI#dekJrW>!r^Qm82eGu5b12!&~@Qexs%eU(VBa_tq zA2`_8mAJ7xmsUT}0J_h)w0hGabaYPMZZyZfv^tZQR+a$$G7GkJkj z7v`5C143Je`N~$D*FZgidJ?8J={lLtjj93G*c+H?=Fi5lfDGL4C!~(*pt2u>Px4e`-IHG20p>YQ;vfW4*n(BG}G|k zbR+&exl$EDFx}<*R1+ZipknryCiX=@Gq90Fv}zB|$5Qe^%fJC@RU=uLk^(g_N9S-$ z?m3;#mZ-<|Gx4e6xD2KU{)o8Z%tC8wdO`Zv_wJDBsp+yWEUw;CPjl7Yji2?o=IK~S zV$sdSI3E~YE6W=MZDkYc=B-u@>tT6E^jmXNM*`{qn>c6Co4D?5^j4Y7DIEL4pYE*= zgoAkDN6u$uV1)9U>RnJJ*Ng)Vj4l(k=L_`ta9ybEMg=PB2`P$n3kX zW53BWve}>9a(wf4jsQ%J6-{gPUDFyVRE>d$yT`yK(;8-Db|U9J?8l_4@-$CAvSh9Z zre&zpE~KN^DtMZ^V4l#p9%UUGDO+;U(I?H!)Jq^-Es%lj!&L3f#E0VJxPIl7`HaQ0 zd3Z29`xcKC^Xy0USlHqjl{e7GL>(9nR}a6yS_*WL_hVg7sevWuzKigDq{(`#yxzI3 zaX(gfDL=V)q`r&CVDI&!@?O7jhv7qY_nfI+bYxpEBOxfW>iVScC`pF+l;!7o7e}W8Npv6|DH6%6B<}!-& zG#IQfeP@V2XRz!$Sil?`CVpPMenE}6lth2-9Mr7uSU*UGDAz|l2DO7KXs79f1k4+H zRbQorEIA>9dUb5cMMxp&>5KONO`vOCepP98pGpU&)PR3lC?E z{03FkTNV!T&Sa~d13jW5GcUShu<1!$hfo+2_qUBCt;>+F|VB(j<~PZ>5u9cXN^@xfRnKKs;7m`sny2k0h}u;*bA z$l9Vf#c9mbo-)!|)9qSnp_a<6km{dUv)RZqqh_;#8}*EN&Bt!qq&1CM4-~+-b2$bI zI-n!%=*{VUfyyXay@VpWv4o;I;4k>>xF{5J<3=8h2dxVbUPcHAO9mwfuXJ`{x=9X} zsv+3FMT`OWb2E`EB~%Y5G2KpV>m;VyiH)7aQFh`Pk~ohPI1y|xTSyw}nY|0$cF|6% z97!TYHnqr~0s91$eUM^P*55|G+)12bCq6BS@-f@)p|oVDP9R&t_}w+%OJ$6K!D!gq zrdeF8O%`v`l0jKdO<8mJ%~A7A5BTZ|!IL!jAORN^X4y2I!wc+R}H>=AQ4OM4#wkio7}b?b_SDjhQ8C$Ui3 z67}Be67uZp*%x;nBm9bKGrl1YL@Fp96dcXLvb0n^LuTKcp9ZB>Kv701$_yc8C@fzW zEDdg4ry5t;xa9}}HLF~*F$n)peQgJ&rRw#*d!S&;J+}Bv}zTX$RvMjAFNk=Ot zVC3*$Kn5U2P)X3djU4xKrZ36lgDL=WA_Y37P1hJiH$0D5~g|bvI+`!(?}6Xzg>`~ zwM7q7rw~72M7fP`tLmKZo#bdStN+fUS{TnFR12`e_aQ~*LQ!wXf)(0XeI=;~p6G0# zsmT~rXtWIi4O1Z%Z&-z?z6goJ-PC+5HPcB=Rnx3g5p;olPH4Kv%197!G40iyzEnCw zDAj^xQ4Pz8vZzJ?5<5(?_`{XItqy=k8RQW@YKW4WTbm}|7QO(Fvt?nk7`bAkPrk!3 z(7OeHu~sztnmct6swt-f+}34)2QM-Z>7-46sQ(N^je&zA}!@dD0C4v`*5TgyZg?IU@6myHC*mLjI@_K$0*(0DSaVId#(1|bAT&+7JdYu z;i>49gXdatP~k?g@;4(N?H_k3lnI4UHXzcf$)2Tm*>b$--DL$1(N|1snlt-#He_(Xqfkalk3#>OC9$npofqBEa)CxY?6i zn<2K7Z~FC+V*dazWtSR6Jr~)KehwNAJe6kG`U%0gxnI1=Y4^nrI2D09*9KoeaIuU_ z9q=PiR&F^^^(+>Qj77{Q2b@Du9qr>-fD0gcmD_X2AR5{~_9-ZjP{uQhwdx$Rj#Q;} z(}9`YFuW*p{(|$hWyW!(BMoJQrRd43;Jaf~JZY)AR4PhQ$NCFi(dnIadS|3lC;JN? zLV8gz@^6N%@>Qv*{3^YoRsIW*U`_eRA)4}V9v+5YZpBlv3s+0|7)SLu^js$>tK*e} zrK&&h)xRXWAGK>LbTN%OD2=vi(zo&S)UJ~3Vy#QWLe0O9L6%H_dwtd!#1xuGbszlW zl6CplRn7UKN=|8&jvFQ>1~!d7BmcT;`t1x{Uzbx_wd00KhjE6D@YW1su!YxRQI6#c z7d_!>f6zC%OYKEh#5@u@?vSTJ{BlFlKr(X_7HfKu_l%VFHEUrrb78Uhl4&=@G-_sE zR8upPv%ahq1Mg`exPPtuE$U6An}Jl_0DM@?y?r6>-ROe)^eKdTA6$$;T!_{GW9&-c zY^>h!3~nY%R|}@BMY1K7%ou8>#u!DkkR+x}lS*V4L(RgtW=4xr3ax)hQX(eCzO;~~ zq!5+zT_Y*kxBv6J=X~qE-*1}VkNchPd(L~__dVyl=RG?HJtzdz2X?x0^X~DL=3(&as7a^=$F%!cG`(>r8DYrJiGQgjbFMr zlCnWNzzGvGR^q#A$9e_c?2I{Ii&-vhM)qe2toJ3TjS1L8F*xf24+br6dwiAVIzx3k zDK4WL4a{f<@?3fV4ABA-EnFTxcT$_?n05{34#UE)@SR-!g&aRhy@#R{;R)ygIEwH{ z1c_hkhu{Cb3%>(FBVh$Ib&oN{FVgv=u1JRwBtF9rU%%9azZgN{Tl(P(54iB-5F|dv z507JGoI;<(RVu`9rlpFeq)Y%DO1e+uXZhiO-tWSHiy-L_^26We#wTffvLC)Y?mBVs z^Y5>Uelx$mUXvobAG~VD*rfEP8#{} zIXsl~|9LQs=rWleo$*;!98wSB%aeb@4Cl?uI77N#&!-ww-nS=G8~zVSXVixowU!mN zf;(ytN7OK$T~Qk|Dwc)lRKHy6O7#jy)Op^he=a~&cEuILh3=?(-m@7V;*I(#qhfKf zj(WE{>bs7p35beel+WO&b>!&vF0866?t_>my_f~kK&BR(tEhgeg+jgr5N3J@ypCFE zn`1e&qmb0mtD~#>;aj8WciTAx88%)gfZobIMTzOgY?+I;K4km0!Q z$8=EyFjoN*?AP>MtRedX^%;IcU+K-#L$IMjVSt8UxIU1UQadJ?w*tJ|AlZ)95g_{& z~&Z6EYP#IC_C~dQ0ij%&ZIpgpOClu)CY%@;YDl&0Ri^JIhXL4qq@ss*2v+;0_ z;^D~$+nD5RzH@>kq-D7C7;*V&HK-xWvn@RB1=TgH)I+?{ru)~-0R!K|Le z*?U%u2kjU!t{Af2>`!bfRsHWFtW9NZ)7bElu2{LhoKZFYi-kTGVhsQe3$ak+Lw@+) zZv5>CV*HC)*~>4=vLmh}<{^lscTLh|StO6dFgi@a8k*@VU_26-P1UT;`TxQU$cT&4 z`*PURf0vt(4D0lOEf%CLA$J3U@tyB5bi*ON-0K*H_PwN~6=epZptI7p24C z6s`a$?1g#E$D1XH*`6^E^Bf7W?~kaM8{?7ESbV448F&}fxVHtsq1wh8-_j4Cv&@Ab zhM-z&kZGM`v5%$=_mOvqG^Rg(Xd2V)U34G#5FW^3iNuQ1ZJ4vgmEv>+i7)iS|GU|R z{~bZ%`}*OpcH?UxsLz0V0);$$!?!AaUBCF1H@VU~qfhud^r?@=C%8`p9I5doe)yyA z69NCwCju7w;dx}BBS*Vxd|yBOJapt7_?ZY&UoHIb$F{og`w^5WGOqkapR{__B%YSj zcqI%r{`Fdg_GU9I^j3tw!YMjmp#>=9DsWkEe)GX{cnAb@4>4QS?f_*t&z*<0`*N^M zNmO0Zj-y=F0&m?Yo+kGS7*F9_m|GhVO}4Pj?ci=8gL!9g9v>=8ZKQ_LkqiK3|EjEJ z<4Ys4yqbzIx5X8O5hE1nc{!#YWY^qbq!ccXm+Um;o`kHh3YVtZi=~f02fr=UAx6F8 zB4lG9URmpu3)dn}G0He*p|Mh0)zDS*rEWK?jvD$NzH1&M`FpJ#`3v`^ixvue*ebIe0yS#JBgu=jOQZ!x1FDiXZ++whO-xLE?9P z?8DC!ZhRk&pX-PJ{COAs*$9&U7(e{=ZhS+H@8XA_ILSqS6oRB*+YkS5z6<|5g2W%3 z=Ob^18-J(9FZIKJGtotV8G@ug*$2&RMoEBx^7Qe60E2oir_j*q;Lc68x;B1n9(AAWbL z3%?0L;wSmxM~*n>Y||e{5FOOXD6?n>dAn=^hMSFAb!B3d;n}(ymwBV=Ua+V2wK1oa zO!1lk>0=ok0dW$OA!MQVbsdXdyrviLqIa83j{rsQXdCIJg_n;5llrh0_MKa1oKq*w zh1z^|F_%rrDK#T^^UNlm{B*da0^})3jWy3*GCl+)wcfuPPOlq|>#dpwvL)&(IeWm<*pB)${lp*xCIA0%^Z6Ni`Q1u%@jF)WX-;tTPC0O_{ zT$FHrzjKlo=Vtrl^}#-_yx5H(^KO$Le$`zr`~n1tpW%m3cH>)V{6If^g9I1-%Mc{} zoBZ%uZC&`M5hVU1Km0vzemZJ?e*T}2e#YG5qW=_vq(9FO|H;iR{M!f;pXG-yZSTVG zLXh}7{O~inyYNK_5?|L3U)znZs_}>3_mTJYZZ7&E1WCWd4`0KLuc+~be)yjCT=Y93 zNcw&K@H6VV@I?p`-@*@H^-351Tz!Q<_nwcu`2aZj7o#3jxay`9VS(b zuixQV=OR8Uujw|{sWJzOc1}0DI5U&91NAu`$W%TkM(yJ4ywoMcHwY4cpC7*Voi2P; z1mVuLyEf9Dd(`5l1_oqYlr|v@uo^FkBKESvCT+K^)DYnS{OU}`U3PXOJGm+c*b<37@pWv=RYt} zRX3oCOBMGcDEaS)&qOQesNeS?Nc^FeA$-Ih z=!%5Tu=+=v_5JvI7vr-KB>o#e{PETj?}O0iMhkBz@ty4c=}pc)#Ul42UBFKM(wfx9lS z*sxag)U?=mLZ8kP&c*`;e@9|P=_Xfb;Y#u7wTiv(h zw}-#qp-TWqV6G3e;}1-0uy8f3VDYWAva^#-Va`A+u(FTF!pgp*t>g*3i&_SPja^B{ zAXtn8m10V!q?`2SDtf<{mqUs5O8AjK!&;Juf?ns0Nrz-f*QPGgo%15{H*=-+<}D{M zqm>~@^mwfJMpwKtUvP;7ChgiOdP_l%dQS3V{)ee9<~JZnd}Tj;4>vwd<9E_JM5`d% zUUt!6gCOaD=!fs-#wTn1vwryLQ(W{XBS`wU`{55g?85Iskoa1D_($CM9vWZzx{tiS zKIEdm4M8<0H}sTtnT(l;3twqIrs|ZhR2S7wO*P)5hQ-9AHLm#E_^ctiGS1&zZe4y4r}lMg2cD+#rJdL5hOm~hi~M@*VOp$ zr}^mTodOsAmk}(+F;W<2>}HyXe8lBUhH~>*{~~6Y`zuH$Sv!CN8v*F30CKC@mjvM4 zK-aBi4FwS8R#Xjojxk`3%SKn9x)}IZEo8GqL+ZKJlB9yS(Rom)>nep;uGNYwLF#2bws!* ztx)o_u6%2SAe4~42fSW>iW>^#x&U;7X5*|1jBv>X1UN1%Sh#KsVp4=stboA%0&+kp z?iX0Zs|tce|HEfeqK1l$IGku4*D?3YtnZwf8-e$>et@)E0VK!)zk=E^#$5n$Yvp)^ z)u}z>ts-^fE0QfUPeIfX+IMe_cTubGOM_gZ<{-#&R?ZLKd4vn!4nYU=W*#rtFU{J? zbE@a?*;Jp@e;neX_7#FmJ;x7!<{20MPXvj-#}9wdO@Fth-_Q@=>S-7Ks}Lmpe_!_D z|CeDd{8j{sU*m`G=f-!}_?P|gyN9~yZ$hy67G!xzf|c9ph>L>#2@7^$G`_1<2fa-L z(-_~8L)yU1L6MKJ9|1|;QOR$pZ&&giC&FIVBxX3;88^_7;@hDMn&Kd zbsR|d%8Ro}tD*EcK*)lpv^Y6&wr^ZY(hL&LS{(ksCMG7w7)x-d>hM~!95Xxz-!Tte zV{5(bqKl~vI2>0KWOt~8cL?*f_zDWHB>SOzWw$_yn!I`pZMV$xbc^1{BwTzmG8Uge~KUuP8o#R4<*h-9Mw>aNqcM!gox6N zsjY$agrYoK$H8cc9j7ohwnUD@5i=rkeLPTvLsNW29`%}wr2z;MU*d;fJI#e(grHt! z2)1Lw&%dkUXZgiXc+VBT34%=T4nKUK$6VtxT@fU{t{?s@>@ahYZ!}AWDiQ~LnHIFY6R|Y3n`R3ez zxL;M>m;wXKXyF}SlcsB47Ddc>39TMpGbb?KG-V$ulp1eBkz;6m?lk<*5|Tgl4Llid z%aUC8b>az_>NG~Z@1!(KQPS6mGqgT;wnb?!DfME()<-z2i^q-J#(X80kQ?`5C8_4c z=!)m?=`T^c9IcyiO}u+{7@N_dR5}0V;M?NnB|L%U6W4?Jk`30-$0s3a$q)Qf%3|Xj z*kDV@p^qYLpv6k4i`%Q(JOvS=X8x()&N{6{DS|948GiUCZu}J*-_j2s`qf2$41&dp z6lQi8(}&tO$>~G&M}>*-h*m0ybkaIT1I$tYahVzdK*vW`?JhYvIL3G$U*Y(a9)jcZ zr|!09;ayaXj6C4t_;CcOkvshGtHLh)0tAV#>xZx6#-BA5{!qRTKRp3(*z-;rU*dm*ijdLKZ3;1@WUs&@vSs|pdWtHzb^XEBB-|aqZY@s+6tF=!NCSG zotJ(%NBxDfS-s8uLmc&QFdh>D4}?z&$lmy5(+BZ zrIIVCy_URUtLo*(2&P*NXOGvxD%4Y@CP%S*j0f-~JE48Bkj*|m?sk4mmXB+K1r6Bc z4|Q1K{MbM~z8Rd{6Cc%FZY$2^%D~D6dC2GTb&9MA5dNPZz(h;+eK_k4td)$mq$8T~ zU9MQGr}o2IRRG132_M;$DnDe2E|Z<)-cjUaU)N(3TzXtQ2#fIHmPnBZfpAolx9g-U zi#H;utI#x*>Tn;J937s>@Bx?z9UjT>NIRU#@C69NQJ9UHF8-A!=@!zs;!iY(*?~z1 z8pOn#x!Z{EbaTn?a26O57x?79W%32P^fSKql zCYqlsKcPTvS8B7F+6zoA)Zy(gifmGcckmO;JubO$F1=tXnOHu*7`yQDw^oP=|AP;% zJU%i8+t-+)+WGc!t}9D_A84~a>S-XI#bYs}(g#pc?{i0;K9=iJTR zGi>f~ztnz|oMwUh_+wjJ+PTM9(9p`2P-}t{2Mb*H3OY0eT$?=Z%-3cQw(YrXv~6!l zah8j7!9VTaA10pmPcYLhj1>9ub+%g=RGUP>yl!Dw($Y<9EL@}{!blE))e3J%LtNbP z$Y5NwaVRx^zwyz_SR9$3cLV5R#ykJS_Os{1D}GRo)!*ZzYbQ5hba^mpos<3Jvtlfb zm02(|W9P6pfSU$Gg>?PZt#5tUx7dq5dzm-C+5JWwDbpuBSNHS#`>`^0l#7)+G%GiP z6%1KR2XcKLyFOGLhO5W*2tN**_IVYa1u0cEfumy~lWyvo$XZdMl3I`v+cE!r66~1t zzVtGSE+>yT#S@(#9GPR3R#pRvs$*Gz5~e#}z_8oPt$Oz!ksb|ut}uUte#2YKFfz10 zcO?EN%lT8s;K|5q>oSzD-hg14t8Shesk@!IHQ7F*q|_T1Jx6m+(c1A|5}?j+4VUV+ z=`W};THBO+ZiGwiKa5f(VEGu7fZtwJy_-+{B7cC$*6~(v=%_h}TKp(DDA{ngIZT%! z6au5-B8TaEf`-~L(nNQuEsD2kimgep2Pw9^$E0|XqIgXdisy%$6#s`Q85RqR;)#(; zyuBzK800*RY{MzPJE5=Qk)%KIe)AN`t?4T{f` z;w+2D#n3dQ-eNC^ur|R@wJ4%JcT4@YrZ|ZdpCQHZ7LWZE#c@$6-egh4mD+BK-8IDo zQj{Uz6BfnG6vb z_V-ept0}$=iWnYYS;{_zBegCrk0BX{d)CP1N+lI6||pJ zOH7676m_R<3Ds$Ik$7S%6qr)p>528Cfw}s6mw~C#)NbONB30dfDK;*wNDJ3oxis1V zgtcyH9KL`K7Mw^k^$ez-pDRD1z~!!FGnwqX){N2N={;yslR6B-4-OZDG^THQ2ft?r z?!X7jH+{V&ry~b8#ImiWXklVgo;&+DwwB>E3|K9m|2}aBC~!%9=|8E#=4U(RpGnP^ z#;RlD{$Nozd{pPzXoa-{*BB#fs1I?*-Kl%1vv_0WpK=APtkBnD8dbgEI1PSTgXyc8 z;JpD4<(2@;DAM~=I1nV>nF(It1#kFSgGVVaN|Hr6&kJ5*g1aa%&y+AJ-{%GIFxjZ5 zz$ix+xVaa+7?i1v1qUmdT|5lLrY62O5k7UW5Ce)R$7v1K*lWYoL?c*;IsfzFPVlGG z^DWQ18a?ZNYv5VmfUl|f1`h1!1aZnzx+@)9oj;BPd(%|>u8dz1@%0#`Io*uzN6|jO z!|UPJ2J4MSM9Dd{tjq=sdR_!3nV0&FDz;$$SgGqh1OWIK_e=56De0H?duEt`QHOr5 zgd0r$EJT6KU&qFDRXVT8k+cW{!Oi&Scq6HU-V(f){Ur)Ugz=sSN+keVXhNC!xRP4P z*U4ncL-0wboNlMAa7Is?9N(BJ-yBKKXy$?HlrJ-(EJ;?%hb~0QCkw2UH+8aPRybo9 zK5Ciy#!PuFUW?2&IpY%#RHyv931zXgQXa~b$KjKf`5rrEg)<(q$?=Vu^6io2jJ6)A zPPx7bWf`|pJ_YB%SQ}>Dmwc{tyCt*28ME7Jj z7Drp`_hQvpNs#&hI10u>eAD_k)!9m2*Scx=h%HMyapFdN@c9AgqN@XQrt~yNlV2Gs zqsa}`=t?}i6Lm~-{k7Ifh(iQoRb5o46p+Q-GSb~+bW}~dT9CdNbd6hq$MEs4?=c{A z{4{0TW892)(frk%u_vGu+rJ%%An`#z{ORK^{6PeX-!sIA{wOzofX099hd+MIMc+V> z^vC((hq>|nHNKl4{s@*SJLKKR70jSt&ksM?jeiKi;w+e?l8KhA*c<1Cl#IYsgHC=@$tibJzp)SlMV?gh2*_>_4UW z0V<^>YlhZs0W=;MWate?|#fILvNxHWEnz3Bc5EzVWZjrRfIj=xw}ON0HL)q#XUYe21L8?q zE-ID>$jZdR18k_;QoqxfgjByjVPP;{Lq;6+u}rm&=x?g^f=IP4$y926>k0mrl|$E9 zq(V@ECx-@VQawp3)S+99oZ-Q7DC7E@*eoyNv*P?y6mfMo>lw3rN!rGRw4!Am82(ye|n}K6(A4t0vZ5ehN^3-A5+e&8x`yc)ATTi+0s}Usqi~R7_V9Xu# zV-Y0&XVH6}=sIpDLQh0a}4Fi^uJtsRrO?Mwa;Xk1F;)MsY13%QQyb z;z}d$Kc(^OLuMM4Bhz?Tr*S*e7{WA8xYM}mKcz9sN@GN1bvyrvl4C!LdvQOeG3Zv8 z93@a<*}AG`rSThRc&gHLoklj(c#LUmcBj$%Kc(@%2bHdd_V&J zQ%onOqeNE`>QPGc(yv@4`XdC1-$e@)StExQ*rmVpIRY0%2L^Lu+*RvuT~)IE@K3s{ z)&m-Uw;z6oyJ~%@t5yR)e5xDYM&pmr#6=1k%)KJRRTXzWq{_%@l*e!e5~uKs{35UI zr>defHnVipi7d*Y4$qy!jD5kPWSq=tOl_~PcxFi1^IK4!)onr3V_kP`CrVXG&jk4Pf(nmFx3x<_^R+<4bcy}T znE4OAj^+@iO)4;=hc2;)Fi@0Xyi|)`Ls_k9Yp|-ME{v?+^)>5pU_BIQ1U}`wtinqH z?U!@d3+x8G={n|k^;xU3?$)ckK@uH!2iC%lpRczFn!=}_PNb7 z6*pj&F2@GG!&`K};p8wDoSdYhGtIYvBti$aq3xz<#Lnxr0e(bmRn}wwU8a3Kc zYYOOSUqx{@icE1TMT~pV^cj~tOc?@O|BR$K(xUkM3=hS3G{q1LAx^yKn#uENbd%*G zALEF6&fJ6d`|-@Xh%gY!nOZd*kE3zN)eY}wSFm0(N?h6v`lgeVq~R@tMVs&ew8sB} z_%#=D-%WkE!?DA*huYlmHHxo!NX@aVH5g{)6+(D5l+-cIT9}5|srkQxY9_Ln*Q4;3 z5-ffVe!MbvGb-RnW7TJHy^*fmErijt^=avd%zD9#q;kI;)jzzj0taaCNQa|0Qj_5& zMMlletRm{YzTH%R7I9CcLk;Um3`fvqrI!yDP6J=yC0$9Fj?G0}UKuR92MK_;X;jiP zhe&jICc-U|2rFGbyy8T_X&m8~fcQhzk*j~L&^T_E#U_NNau*VW!&y5UuzNu|MD__g zmuo6GnN_ijLjal54WO#+k7S?PzK}%bS<$Tv(vS#Fq)#_qSRfmiCLcgqj`H~#`D~`4 z^}%8h%()e|#rU<8$j7|MM5a={ahP<_^7Vmy&J@YaX`?P^@-QKSaFDIZep6u|gqRz+ zm~S)D+l=v&g3cC-pst&tav#MfjKx(y8m^`C1Zt`lEQ04r6QFN6Nk-L*=&(-D5Gx_8 zMC(NZj8=f5Y&XxLDn(GZPXR^}usa$cK>$j6U|1g`h+O8t=qvMLKQ+7W6QafV6-ETI zr8C+7(Euw2pwy*xC8awNwbdNAET9FFD!bXfZ)9R*MCP**8)&5lLyeKm!Pw2%wj zZj4N5+W}QpkD$CcZd&Ahcr1NKjAtB4o%S!QCsfJ)F4bW|++}qMK4Gxow*4~L5MH7O zhp(c+jpEMaeCcj#ilt1a4b@h$KnCZBCVmwxJcM2&EuysEf32ktkd_%NT!z=-G5C*m zSXV0J1~3thN77JGW~k~)pw(KKOs<8w1L(5X!YFghM8b6>>5?3@uDFuD@Fv>B^?BnF zWZ{B+wb}-(aj74E3FAur_5DU^H>gJUhLof==+03&d;7%MC?S z5Q*spjHbv-kZ9Q+1yR#*p~N&rpvB?fq!#dGg1L?HKSajmS|%;I2JX%w*7(5%f)M?P z@bZL#AL=hyxDh!Vs@`Hv1NVi3yeJ1MnYA4?UZb+XsGg-DE#W8Pq82-Wl3LL5@%msh#?q$hIH|}p}WNwfFt9V>ncI*)-BP3 z24Xz!LrAfsb{`PSOQNZqQ1w%*8pIfvXULe2R@aUnkz?6w>WlMkJn$8~az(><3-_jK zzED)u(7h^A^ zbewKzw3Cf+S=MvqohIGfS0cJZ5<_C)H^zG}2JDIJ$YADLQC z?oyj7qpC%h(JDSHoTPF#{IX=)pn~?B;awRs2f;7PZ>&27bZ%5O;=Xw%gqw|urZc|E zHfcwUW*b>g<<4hf#3?uP6_&!N?D>vDY7&4YNj6HqamR-T<@ny+_?q9bZlXRcT{0%= znFzW--IX?Rm)c^MMzxw}~7L$u?`32Uy#&*1`8SfET1GQs(w&k=}00zaa&aaWh?Y(Yhv6ulyUB&ItU8=Zk zN8t#+iY8U}0z-kl%N;&7WV{A??-(j!C4pz0%reuFmiq(>4YW$bg7F`;;Z6r0G?2cRJy7RaXD)d9UgG%tyHIs+rTF(RhaF#x3pXYlj$uj zr;wMrlpSA)(n5Ct2ij*PcrPm40-(2uF0&&SGx7>1dM%4+%nev5CPnnMDDiUbc+VqV zdg#_T?Al;9Vt@Sk@KaHEzl&r%CH*FwOcImFUgzk%SC7I&tR4B>XNWv63h%q`iIn+E zyweI>hj`>&ILFZ-xIhd4(Q+uC!@hqm4#R4e@3dg4={x<%I;6%#V8qz;qDHZ)Fs@(E zKJWX^3M9r>t`A+tqKzv>(DoSZ-e_wH~I0U z`Ba7Kv_ch&C`_>MR;f6BEssrD2B%ksA4Ao))-`$h^S9%h$#W;+0|sS9)(=jeufuyx zlWK0SR9rdkHVxuUQv9%YLLFLt;V@U{vtEFM;2HwJxgG&jFmVHzZD#LYMgUgDZr}(& zX&@y#4F}0a>EPd(h(?4rw$pKfM;SBXJ9u-*X-mKCc4wt4Uw-7fV7nSVvhObLSK2z= ziKZJaoT(FQhw{YQCq;kS4bLn#i&7$9hu5O`nfH3aG!|0h%I{95-#r?o@IUz7VwTxj zhC55Kr3Zh0iOYlUgM|JAB^gi=55AdH3~^Y&7adXIOFYxW4Z)%(u;$`F5R`I_IzmS~ z+!k@zJ?(TS8?z{b_}^inh+`COErMqG5+BfZ^Ppx{J7hq{9{Rr@(2S-dHi4W_5QUPaE4;3C*nzB>h4n zdpeQZjJZHMQ1DvJTsK}&M2?w5cRI-nG$9$XbEJC2$WXMxoIK_H$1l>6qRB9(Hqi4Q z4C(m~6moTeQ8)Jm*ok+r^q19@`mCer)s4avy}ED#9$0rpK2 z8rdq(#yj0WzV{It*5xoFQ9X)rjEqZhumH&N7M`#pXEO34MD}_Voub6M-j3H2@z^S- z<{yxTc>qX+AHsiZjl2yr?;)av$NQwf6>uVGt%8LU@LDY{A7ypXHg^%9IlP_Zla2Jy zG;5uItyELHxVz2mGZ%MKKJ(kRG4?{57k1II(N8J6i&k>0N%xV75nZ$lO*vgCFWbBe zEYom^c`~+sfqJ%>VX<;%#frgzlLGwx0Q;&PD(#VCmq4fEP;KeI^H~+Tr@A4BU{zvD zvfYJl&F%lC(4D%)WPjL%2=?DfQ;Ny&EImvnN+Y%w{dZIoN@LW;z&*?#Kj~MB^<%j5 z7;ck#UqC2U%+Ct*M=ln`kq8J-b}Zm*@-y-)zkr|fbLZlJW5QBMj(wMhnH4Diu~<5! zA{xyxVvJlONu_~i7$q&nIS(-VTb7U^k`RWqaCmxsvdp{Yt%5i%W}k~iV}nUZMWBJlSs-d5U}QG!Y1(4Z(!Nr7=!V;oef zmi_&X>ZT^YH`)=C5i!(e0PbO8DP9E#=02bJSXQ5TbP}p_D_}+o5M*Q6)03D{9Urg; zEfi=77@S-zK`VHUQnU3c*=tF?5hlkabr&+moN+GF`=3IYQa1($CQn&<149r-9suBV z`8?s(!%V2o%#XqA^L;h19#M?P@gY(KbUM1@LsIC)Q8`Xs`_v4r)}9j zSJ{@5DAG*=X_v+?j3(V93T0~icNF2`DrEAs&1AA*qDhxVE@Zv%Tt<}UE3TqmHM82N zh=`#!t-vG=M?N4dU_!nQP{#gSMa1s2qvmF~H$^=DAw?AbA~l%0*Brx@YuU)P77SQ5d<58e+l2AP# zOiyA`6z23vxJ5G9-W0N_M*RW^Xy$<|Mao5$QiY(st){)VSSa1r83kxW^@8I|=I~Ls z|0v$k7aSi-G~546*p#>z9M9|^nl~mSGa+ejRd0tD0^=oYhq0XuyEQuI>>FCExR3>4 zJnEaW9?9SjCGp31N-gi&R=*a(mA+xAMH&u=!)FL@Zr7qfq)eTHS3KckIbTCWlqT*zm|&)2izUkxQJ z+0D;G|B0V3+nD-YFeZYZn>9bzfFEcj9*No<8J}RnRlhaXPGXxP3#0L>`%Y~**$7Vp z3=SEVH8>`e^o$U&vtVS6_wN!?n=u}z?3DN_8RsxE5b1$$07|*BMKd`UQ7tg@OROpg zz49`WfZMeTdBwj_AcX4}aogew9QL*sFLCK&-XKg$W}k@7s>0ioun;9rK46bOCoA!1 zay0Zla@674ZQ|Tl!B^wri`5EgJS){tK`l@wbEsM9CHsy2qOY=wLgyPy)n79%LiKCf zsiH6!MH~}}WZ;6}gj5U*K+O!DZ@9McHWonK{~*al>3?oH15Mf6mR2E%QL^O7ajhiu zOdW$q8^&FdyLD*Ag0%998^%@4UQsS_L)J-iphU*CDj@=suIiU`2LK#Nx6t_AH?br| zVYQKavrSEIwo#_fQ6O%{tZtM7VRy;;cE@pS?I9+z?wKu;bs5l=E)-Izp1o9$4Df@> z$Hu5B#kguZreudZAL|LXW#!|^)@D8~$CJlIok>vnxG#xQzC-y&TgJiWiRjU*`rL1>m;t^phG26H8%1!1 z>|=|_KRj;68~$aVhzsUC00WtQ0{cDgk%z#z8XCd8*70aVVI4?f$<+|Zw5JnyBbg^f zc%ct?eQq(sANtWn&yFew}m05U(S;46eBYBrAj(4a5 z*@eZbct8y%+xWh;d3n6PVAz!)Nt2io{8;A3k$4OcsNWpPWGX5LT7Y3yHeN)&p(P?p zy||clugnItBN9|ASnq*Ap3>R(MwJ_BiTYli*`SVL#4j;&S8WD`;t-y!(1R*)gKeK} z{{$b{z?*GhS65N;`6|W=EU?%y`VtNt?nn=&2HLN|Mjxyi+W|SrGLGk@T?V;}XRKg2 zKd%CQkp1J?x$aoEVvM?4;_y^+UF2IdfuTV08g`Z4!$nUtGlk00LRl*3*r0dAl zsiCVIzl{+uy%tiYmfnDy0t4%s4Z(uQxA9smS!o}cUoh^j&tY%Z>Mv@73%{VGzIjv< zwYl180wjk_)l$ZfkvN!+TwYXESyHwZTyia$Ot-9LGO?@R9gZ}1*E1(pNFEa_9u^oW zIH4Z~2aHb%1vmXuf-R(c2Pbi`0T%${e@`^Y!{-nI>!vPQrI+|&r&h4&PLSfXjViKz z;ZQ_$M3zWSsfBVKq5-BUfGh#59Stx-0b~i_X;hPlBzh`WH`j1v!GH)sYcJi%E`%MbRQol87=9CWdl!zS&oa0fS{5 zgr<$ny7MxMlE)x)ZLMlg8`PrkR1Wzn+so1X@aNK7uv3m<$`}o?)t0+cSLk6+7|+y^ z;;`)ty=PAr$zp;0&|q#W8B4YZ$?Dbx6QxH|1D~ku&uE#VISSoSpd5}xGK*?OB!ygR zGXZH~>0!(8X7P0NpmgpGb5Qyb^*UXRVPhGvoU$4$yaDgS|5%Id?m+}|vE7Don;eeO z$}yH>v~r9%Mk~kCF|wxVN@t;^VJotvgQKNM*aarbT~-M*%rp2A^U7I+)Li^+mVN(} zhAXs?SXEj6egmyxnfAR$BQrZc7#d;Uvs$X`?0-E==__nj;CYK3Tk;T6ZuKSdYcKCU z7vCsYi7YA@=CcQ>(^fMq7K4gKMo=uCTlilF;Xk_CWN{4*h`SHB^E$=iYL+}4gGIOG z8Kh{GJ9i;1A?ARgF_qjn6n(|hARru$$?zK(xhzMmzQxDJNIve?d?YD8;>pMJgS(CV@e?CK4Z*tl`fu@uK!b5-RPoPJp_=)BPk@3A7Q zL>-kd=oPcGd?|!OXL-!4rRPiEVhz1Sq>bXr*TZz2qlQ*P&^|8>LQ#_y!18AN@-H}H z0{#cb{D5vvhVIsUA~_Ky0UR>zOkf#;Wav3RJT7~5;wuu5dku@xPAM)}_&ew4Z9w|a zM15v`A+!GGs*?4G@m>|c8K?kiEM&4f>yIM8%Fg=luQap%y6zEmb!&5#^~ETNsH;r0 z;FhzJ$CJCkg;Z-O!SO6`%RlWWW}m7M%;`NDiNbj6`V4R@b$y3b*Be{_*_M2W z5B6*ZqRm2VmNi< zLw5^XWtoU378k=>MVP9Vnu~aF0Z*KX<{le%6Uq@3unEbjVWqHSpnO&@GFekFKuE{2 zWF!=2tOEpru~C>g|!@JlIqz zwez)NYnW&ttGSY<@`a`}wUji%l1$vZj%o(phrC4IJ5*UE9olJ#j4si9{O}J&@m>9h zw{Pf2<6F!|K|F$0eYyj*ijxqbWCPUVFzD||MwgXagX@~&y?R|lZav>bi8lcC3Jy6F z#m=OhX0Vdr`<|7;_iVg1GRy0ZI75oD>a5RYw!H`InCW-x8c}A;>GThv)UX{ZBz3My z$Lia^;d)~Y)S_8<70eq6GU`Lqb?9PY3(bcqCqL5t3xPN;$7r)a~l&OzLEiO{gH}>dbRU@U3 zIVeXk{v3fucMf9<*jdq%Suh`2pbX3iq=qWFw}@4;&4VwY!<^LSA^fZl%) zdOihnc3e>&lfr2gcnlgULw?{ofMEM&JYs!Xd$u54C3O=OKlHGnzbCGS)=7x(cvBqbNO9X`c8crqY^S&chd;VxoXyi9 zA>*%(6mz1cSXhrl9obpck>Z1n6nnT*?Bq@HMxElHjubD6nqqBliqo$XxugL7g|T8& ztH0qnJ8;jG2Jl^#t7=J1AFZ$x7F5zXFB)DO7HeS>j}G3&3+kX(CA$cYr*IKkpH!EL zI&^TMgQEu=9Nmd$iwEOYZ;GvTijO!_yeMjl@!k|)Z6R`t4oWdfZR%hTo~;zK1D%Q* z#FR6>YU~kp30_dtCmjh-r3?|G&a6Y)4pHkm5`M;!aDQjQMlWxQopg%B94R)4n&P$I z6z5(m;)$p+juijBnA!bkAtc1WTYHS$wm`mO;4N8g=)-bsSyhS)%4Ad|t-TslXpcb! z+RM8@~(WwL&`+E{}Z%=A{3 z?eaYfx-EV{UZ}NV+E~R==TaD`b`-Ahw9qfs0=kDn^99~#@cmD04Ad?Xloh_hmt=m) zKn%R%voijBXxjA0>#NDLkhn%Yk7uM>>UkEQgX(z&pUdMJ*{hbz4$s8wF|{8od;z`1 zP~d^dIHBPYTQ-${dy%*KffRf*E>i`Iq!cfAD_(^5|AJM~gPOr5yKZU254ad-ljS*?h-MTKzrWb$09T$wr#zdj(hg?nWc^UFC3gAS;9d zl#)NZmvOeCBeOf_uQ3j)7plQFbN>hRGSkZab$G$tf5z63@wT)x-d1ex<;dl1mCMWn zGxz_c#kO*Jy!w*Cj2X=s^VjpX3|H>2LX0l?zv==2I`xU}0yJLnS>?mmG=utMy^G{I znZQfcvm{YbJ&))6(^UmCi_d?l=M{YZ4bP}ry+r2h!0nS*=QhEKz)Mv(sIFz|gWEIzML&nx)+8J_6`q2SpI&{3&a2ZDt`4gkYpf<27Qx|Dq% z%rab;Hw)q5gcsnRVifWqR^4z{&B#z-&qRHtfuqu>8h98Wog+&CiZ$9_1)ibW4;`wF zmm(l0NR^4tuMxq7(aO;n%|2H#Yc>)yz&-|;;Z-l|4*%A;gU6AXN6=(d3k5nNQN;U%q`gL}i~yY-xU=761;Z?nf}z_!-`!OR9}@A0gEkhg2U(Q|PV93&eYMNYz^L zCQ{{HX!AK5&n~H!sGOk?s;6>-)>b?FT^KXe=BZqfY9M}`Qq@fINYxPlhg7);#u{;6 zsgBbjgj5q9Qf(u<5qY&+{85KgeH3pZ)%-Y{&v)_clIk~=%eGWkIiwoSn4vbW=7?0& z@Z*%KSv!wZPXpkP>SF|Bjn)vtl~-44sa|qO#r7^zs)}Bz@@TMi75b^7E!8GGyQHe> zm8y%1NimICj2UXPGFzltg&(I>Hz#_edJO;=$!c&CaSG)df4geg*Z3G~+ySq{C1VG= zA;`H|4jC_xDq{n2b{#qQHZ7-?@z@2nj0f=SlCg;@$#%|Vs+c0#xD5sWoP$}S3r?RX3?DAgQ?RJTeS>aAs6;kLs9%(AT5H!?t=j9-0+ zRF`?Bx?APBE!B&N87}>cT9>5@jRZd9Cvwnxiy`zGy{U-xe(F))#x&x$Ud=X1stS^aQI5-9k z$qM7ZWgH*ULn=ml_{5G9AtR{9HFT{>q~u;(gB)l%2N|O^6aA^R2oL=*+*rHu7!Ua& zNd`;yc79RrnQA7u zHY3MNAsdAsMH5nP1%7EBE=dPUE$K!YU3>3N0hXO zZ9N%3O3URfX}^ij=qPCq$w-1KX^YBJAF|8Dn1g4RXkqDfI9jR3h#7wFPZxist)U|c z#W}~ZW=Z4dRoonLsvU}J;$UoSIa_gq@oeRo@vt|=yL5`qajX_mQ%vxt__=h}lqxDa zQaq2kWvBQzya|_#d+A<4#(2jt!%}HfyfUs6PuL-2M@NdUu?FkHQ6MSGy0h%S@v#kJ z%5#AcJB1u+eFFlL@c z)r7OwER4nEXEAAnTh@Sn8BKb zA0-aQzk)eat~JGx@v!{B2mowxQoy~-FtpU-IOiRzL=~roSDdM|nYx;WPut?`#5{LFZnDb|IQyhjdjWip8?7-jnzkGPwerLh!4{yjN zS`WHMo`Tm(8bohSC5hAP$f;uKPAUs@kwdg{c(#@KuMCGeeDL4s6(Ggy9j(Z6X<57} zehHV=<%6d?Qhei-t;{KSwo`oGo8n-dqBHxtMosZvZ;IP#E_L=bb);C=m0~q-is$LZ zLdHagj60=u@yhtS_^uAEK7tg(YkqfT+9#mq%CuRUywgV-6P0|Pmwdn>(0wOu6?Vn5 zt-_nVDYnolIvc7=QB%Cko8n8-%TvW<{|P(Aop`oW+z2nzCF4@Molv3EN17&$msf>v zix28h;gyaQhdEMwTvF6N(zc1e1Dq^qeKs>#Piwc}|n#;a$sp+nWPn2}68tA^_PA$|>& zT!(kF8l$$`rxx^lksCc7VpWPN)@6!Grmb9~m!wy!^Z%G5|MBd|e;GY>n2DwIe39Zq zjufX!E9q6_+u{a0^B*aOb9t@b2rt$Cnrf

Mc>JcJWgES~`+Sj(QF`E_KNf@TT}L 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

pz{IRQKwc!{Eaz8|Z-9 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

-*U`s>h^YA`IxDNCml_$50q=4kMcSlv6- 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 z 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 w4KKFf|cAjj&C>#{^Qh|c@YTT)S?=~F9cm# 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�Q>hgoL~Vo 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%0DAF4 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

_>puF)LBl95)L%PY%MQl+mf%dO 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%0DmIy303ho8yrkf$M<0-B|CV&5ZvOoO&c z-wY4VBo{j?tmEE+XSw$MyYziixwC${mD zI-8NV?>Vl{TfUH|Q}*qIrfZd3t{;bHDV>z-f?uw|(`Jl7tbHet`9@+Vrrliq#aR0~ z7c$;{o}1U}p*gW$#cLSJS91M3qw!$7aqU}=yecnt@`^9z3qGi@i;V@&905-PC{?c9|mg^TBUP! zhBY77Esc$T_?0{xOJ@d}@mIJyN1<6NuS@9cLEdGoaT}eV{c4_0_45-K5ift`RJNaQ z>D#0CLc;rHs&$e*G*+VoSBoCr)t60Wzs;w!ANln4x%(AHb>E3)X`HwNdad7^c}RzOlLfbExwvup*5uG)t|f*1%8MBTp-VAq=Zt=I zh2Qj2U1)%&@ikM~LFs$~G)wDD$5;E>BI(?Zyx&v*jLxUU>l}q<|Ldl*FLcoPoRiYo zdLo^vOKhDtI$xBpQ?_obr+>O)DyuTpPjz8CuwB4DCII<%$MVE2Ij61%@Th0>zve8L zWb{Hm2mKn+^Al_USm_(4a%W~`(-B~+fjtYG+PcoVoLkq|dw1T=M(R3eoWG!;Ys_AW z@=K}DZ=A|**CfQ$eKQwi-jjU1b{7I-W_7;VzfucrWAl_*Z?N+k#fQvR3NwFc2Hy|f zpI4f>7d?bF=D4DW{K!swp)GrJye!%80Qe^GMwYQ3GdAy>w10_$iEpK#pM-u0`Zw}z z)5d;a_Pbo^uB1q3;bqwKEmPT@Ihw=;5ScNM<|V7Zw}bcALPaK^ER5d(o|Xzhp1;XVS-* zc71{Bpl#P{;U5Gyj;yar)}^+-cj_E`?!BaH-EE;ge7446G1+1sz8`zB@GGoLZw{FO zzxI{v*LkaztFxach?!~M@H%?Q^?BoJ{+ZXK^FN0*2tD(EA)EJs^XlBvX$=}YGpfT^35Z}~| z9qa8pwft4A*S1dO;xUS~q=9V%c7p_&x|xfia9yqqo2c$>gKiKyzm4KMb|>v!tqryo zZ_%6>c3b&uAKC@qy^Mv;JYNnma5uqza0|!`#x4ed%>(OEdVF7M_ID&c5|%v;ZR;Yk z3t!E6=p9pbKOdsf{3{2x1DNl#mX3vG;5mE>JQ}0yf@keJr*iLn27QPZ)7G<0q4+4C zNxpCp-eGvz${8+?v?8i*ffz4l`;A%AUpeiA!(#io)qf~+0yp31&&F&kK0*G!x(SGTVU4?mQbeem_bH|+8)VVBRG z$S#w}s@O4={bg8IWS!Vs<4NpaOqTll^y`?fA*<81abA8DH)Jd6DrSUu3oOS-j)jx& z*p7z^XhG^1)Ni#TZ~i@gK7(rz+FE)!{@uFBjU|P3a?S3ah;4y?5dMz$PGz?_{NdF- z_dJ2W?$6L6c^$>ANqMmQTUV64I|jU=h!{z77lG{p)(h-xLuGxzK4AU8j1O_|e@S0%m#(<~C9V5k zBySM9dFak?c?BB-HWz@UfQ?|M#v7;18n)9XDa)C^g0tcUD(v8k!>>QQoC?wb8@usnoCbR zG^5CwB%0D3jRv?mnqfCR9imC)Xs-5X%7GVNPCWdEDYIwO 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�Wu<97`tidrmf+4 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

7@6v8n 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�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 z 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 || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase==0)) + int write_bodywt; + int write_bodywt_save; + int save_gparm; + int save_gparm_print; +!! save_for_report = 0; +!! bigsaver = 0; +!! write_bodywt = 0; +!! write_bodywt_save = 0; +!! special_flag = 0; + + int Nparm_on_bound; + int on; + int SDmode; + int maxI; + + LOCAL_CALCS + // clang-format on + maxI = 999; + on = 0; + No_Report = 0; + Ncycle = 3; + z = 0; + z1 = 0; + z2 = 0; + L1 = 0; + L2 = 0; + A2 = 0; + a1 = 0; + f = 0; + f1 = 0; + fs = 0; + gmorph = 0; + g = 0; + GPat = 0; + gg = 0; + gp = 0; + gp2 = 0; + a = 0; + b = 0; + p = 0; + p1 = 0; + p2 = 0; + i = 0; + y = 0; + yz = 0; + s = 0; + s2 = 0; + mid_subseas = 0; + subseas = 0; + ALK_idx = 0; + ALK_time = 0; + ALK_idx_mid = 0; + t = 0; + mo = 0; + j = 0; + j1 = 0; + j2 = 0; + k = 0; + k1 = 0; + k2 = 0; + k3 = 0; + s_off = 0; + Fishon = 0; + NP = 0; + Ip = 0; + firstseas = 0; + t_base = 0; + niter = 0; + loop = 0; + TG_t = 0; + Fcast_catch_start = 0; + retParCount = 0; + N_SC = 0; + N_DC = 0; + N_CC = 0; + N_FC = 0; + catch_mult_pointer = 0; + frac_female_pointer = 0; + icycle = 0; + No_Report = 0; + mcmcFlag = 0; + noest_flag = 0; + temp = 0; + temp1 = 0; + save_gparm_print = 0; + finished_minimize = 0; + // SS_Label_Info_1.1.2 #arrays for parameter labels are created in GLOBAL + // adstring_array NumLbl; + // adstring_array GenderLbl; // gender label + // adstring_array CRLF; // blank to terminate lines + + MessageIntro += " Information: "; // information that could be useful + MessageIntro += " Suggestion: "; // a possible better way + MessageIntro += " Performance: "; // can help performance + MessageIntro += " : "; // might be a problem, execution continues anyway + MessageIntro += " Adjustment: "; // adjustment has been made, execution continues + MessageIntro += " Fatal Error! "; // major problem, program will exit + + CRLF += ""; + GenderLbl += "Fem"; + GenderLbl += "Mal"; + GP_Lbl += "_GP_1"; + GP_Lbl += "_GP_2"; + GP_Lbl += "_GP_3"; + GP_Lbl += "_GP_4"; + GP_Lbl += "_GP_5"; + GP_Lbl += "_GP_6"; + onenum = " "; + for (i = 1; i <= 199; i++) /* SS_loop: fill string NumLbl with numbers (start at 1) */ + { + sprintf(onenum, "%d", i); + NumLbl += onenum + CRLF(1); + } + for (i = 0; i <= 198; i++) /* SS_loop: fill string NumLbl0 with numbers (start at 0) */ + { + sprintf(onenum, "%d", i); + NumLbl0 += onenum + CRLF(1); + } + pick_report_name += "DEFINITIONS report:1"; + pick_report_use += "N"; + pick_report_name += "LIKELIHOOD report:2"; + pick_report_use += "N"; + pick_report_name += "Input_Variance_Adjustment report:3"; + pick_report_use += "N"; + pick_report_name += "Parm_devs_detail report:4"; + pick_report_use += "N"; + pick_report_name += "PARAMETERS report:5"; + pick_report_use += "N"; + pick_report_name += "DERIVED_QUANTITIES report:6"; + pick_report_use += "N"; + pick_report_name += "MGparm_By_Year_after_adjustments report:7"; + pick_report_use += "N"; + pick_report_name += "selparm(Size)_By_Year_after_adjustments report:8"; + pick_report_use += "N"; + pick_report_name += "selparm(Age)_By_Year_after_adjustments report:9"; + pick_report_use += "N"; + pick_report_name += "RECRUITMENT_DIST report:10"; + pick_report_use += "N"; + pick_report_name += "MORPH_INDEXING report:11"; + pick_report_use += "N"; + pick_report_name += "SIZEFREQ_TRANSLATION report:12"; + pick_report_use += "N"; + pick_report_name += "MOVEMENT report:13"; + pick_report_use += "N"; + pick_report_name += "EXPLOITATION report:14"; + pick_report_use += "N"; + pick_report_name += "CATCH report:15"; + pick_report_use += "N"; + pick_report_name += "TIME_SERIES report:16"; + pick_report_use += "N"; + pick_report_name += "SPR_SERIES report:17"; + pick_report_use += "N"; + pick_report_name += "Kobe_Plot report:18"; + pick_report_use += "N"; + pick_report_name += "SPAWN_RECRUIT report:19"; + pick_report_use += "N"; + pick_report_name += "SPAWN_RECR_CURVE report:20"; + pick_report_use += "N"; + pick_report_name += "INDEX_1 report:21 summary"; + pick_report_use += "N"; + pick_report_name += "INDEX_2 report:22 annual"; + pick_report_use += "N"; + pick_report_name += "INDEX_3 report:23 Qparms"; + pick_report_use += "N"; + pick_report_name += "DISCARD_SPECIFICATION report:24"; + pick_report_use += "N"; + pick_report_name += "DISCARD_OUTPUT report:25"; + pick_report_use += "N"; + pick_report_name += "MEAN_BODY_WT_OUTPUT report:26"; + pick_report_use += "N"; + pick_report_name += "FIT_LEN_COMPS report:27"; + pick_report_use += "N"; + pick_report_name += "FIT_AGE_COMPS report:28"; + pick_report_use += "N"; + pick_report_name += "FIT_SIZE_COMPS report:29"; + pick_report_use += "N"; + pick_report_name += "OVERALL_COMPS report:30"; + pick_report_use += "N"; + pick_report_name += "LEN_SELEX report:31"; + pick_report_use += "N"; + pick_report_name += "AGE_SELEX report:32"; + pick_report_use += "N"; + pick_report_name += "ENVIRONMENTAL_DATA report:33"; + pick_report_use += "N"; + pick_report_name += "TAG_Recapture report:34"; + pick_report_use += "N"; + pick_report_name += "NUMBERS_AT_AGE report:35"; + pick_report_use += "N"; + pick_report_name += "BIOMASS_AT_AGE report:36"; + pick_report_use += "N"; + pick_report_name += "NUMBERS_AT_LENGTH report:37"; + pick_report_use += "N"; + pick_report_name += "BIOMASS_AT_LENGTH report:38"; + pick_report_use += "N"; + pick_report_name += "F_AT_AGE report:39"; + pick_report_use += "N"; + pick_report_name += "CATCH_AT_AGE report:40"; + pick_report_use += "N"; + pick_report_name += "DISCARD_AT_AGE report:41"; + pick_report_use += "N"; + pick_report_name += "BIOLOGY report:42"; + pick_report_use += "N"; + pick_report_name += "Natural_Mortality report:43"; + pick_report_use += "N"; + pick_report_name += "AGE_SPECIFIC_K report:44"; + pick_report_use += "N"; + pick_report_name += "Growth_Parameters report:45"; + pick_report_use += "N"; + pick_report_name += "Seas_Effects report:46"; + pick_report_use += "N"; + pick_report_name += "Biology_at_age_in_endyr report:47"; + pick_report_use += "N"; + pick_report_name += "MEAN_BODY_WT(Begin) report:48"; + pick_report_use += "N"; + pick_report_name += "MEAN_SIZE_TIMESERIES report:49"; + pick_report_use += "N"; + pick_report_name += "AGE_LENGTH_KEY report:50"; + pick_report_use += "N"; + pick_report_name += "AGE_AGE_KEY report:51"; + pick_report_use += "N"; + pick_report_name += "COMPOSITION_DATABASE report:52"; + pick_report_use += "N"; + pick_report_name += "SELEX_database report:53"; + pick_report_use += "N"; + pick_report_name += "SPR/YPR_Profile report:54"; + pick_report_use += "N"; + pick_report_name += "GLOBAL_MSY report:55"; + pick_report_use += "N"; + pick_report_name += "SS_summary.sso report:56"; + pick_report_use += "N"; + pick_report_name += "rebuilder.sso report:57"; + pick_report_use += "N"; + pick_report_name += "SIStable.sso report:58"; + pick_report_use += "N"; + pick_report_name += "Dynamic_Bzero report:59"; + pick_report_use += "N"; + pick_report_name += "wtatage.ss_new report:60"; + pick_report_use += "N"; + pick_report_name += "ANNUAL_TIME_SERIES report:61"; + pick_report_use += "N"; + + // check command line inputs + + if ((on = option_match(argc, argv, "-noest")) > -1) + { + warnstream << "SS3 is not configured to work with -noest; use -stopph instead which overrides maxphase in starter.ss"; + write_message(FATAL, 0); + } + + if ((on = option_match(argc, argv, "-maxI")) > -1 || (on = option_match(argc, argv, "-stopph")) > -1) + { + // if maxI > 999, maxphase will reset to maxI + maxI = atoi(ad_comm::argv[on + 1]); + echoinput << "read max phase to override starter file's maxphase " << maxI << endl; + } + + if ((on = option_match(argc, argv, "modelname")) > -1 ) + { + base_modelname = ad_comm::argv[on + 1]; + echoinput << "read basemodel name to use instead of ss3 " << base_modelname << endl; + cout << " base name " << base_modelname << endl; + } + + SDmode = 1; + if ((on = option_match(argc, argv, "-nohess")) > -1) + { + SDmode = 0; + } + echoinput << " -nohess flag (1 means do Hessian): " << SDmode << endl; + adstring sw; // used for reading of ADMB switches from command line + mcmcFlag = 0; + noest_flag = 0; + for (i = 0; i < argc; i++) /* SS_loop: check command line arguments for mcmc commands */ + { + sw = argv[i]; + j = strcmp(sw, "-mcmc"); + if (j == 0) + { + mcmcFlag = 1; + } + j = strcmp(sw, "-mceval"); + if (j == 0) + { + mcmcFlag = 1; + } + } + // clang-format off + + // SS_Label_Info_1.2 #Read the starter.ss file + // SS_Label_Flow read starter.ss + ad_comm::change_datafile_name("starter.ss"); // get filenames + cout << " reading from starter.ss" << endl; + adstring checkchar; + line_adstring readline; + checkchar = ""; + ifstream Starter_Stream("starter.ss"); + // this opens a different logical file with a separate pointer from the pointer that ADMB uses when reading using init command to read from global_datafile + k = 0; + N_SC = 0; + while (k == 0) + { + Starter_Stream >> readline; // reads a single line from input stream + if (length(readline) > 2) + { + checkchar = readline(1); + k = strcmp(checkchar, "#"); + checkchar = readline(1, 2); + j = strcmp(checkchar, "#C"); + if (j == 0) + { + N_SC++; + Starter_Comments += readline; + } + } + } + echoinput << version_info(1) << version_info(2) << version_info(3) << endl + << version_info2 << endl; + warning << version_info(1) << version_info(2) << version_info(3) << endl + << version_info2 << endl; + warning << "This file contains warnings, suggestions and notes generated as files are read and processed" << endl + << endl; + END_CALCS + + + init_adstring datfilename +!!echoinput << datfilename << " datfilename" << endl; + init_adstring ctlfilename +!!echoinput << ctlfilename << " ctlfilename" << endl; + init_int readparfile +!!echoinput << readparfile << " readparfile" << endl; + init_int rundetail +!!echoinput << rundetail << " rundetail" << endl; + init_int reportdetail + int rd_background + + LOCAL_CALCS + // clang-format on + struct stat pathinfo; + if (stat("./ssnew", &pathinfo) != 0) + { + ssnew_pathname = ""; + } + else + { + ssnew_pathname = "./ssnew/"; + } + + if (stat("./sso", &pathinfo) != 0) + { + sso_pathname = ""; + } + else + { + sso_pathname = "./sso/"; + } + + warning.open(sso_pathname + "warning.sso"); + echoinput.open(sso_pathname + "echoinput.sso"); + ParmTrace.open(sso_pathname + "ParmTrace.sso"); + report5.open(sso_pathname + "Forecast-report.sso"); + report2.open(sso_pathname + "CumReport.sso", ios::app); + bodywtout.open(ssnew_pathname + "wtatage.ss_new"); + // clang-format off + END_CALCS + + + LOCAL_CALCS + // clang-format on + if (reportdetail < 0 || reportdetail > 3) + reportdetail = 0; + echoinput << reportdetail << " reportdetail 0=minimal for data-limited, 1=all, 2=no growth, 3=custom" << endl; + if (reportdetail == 3) + { + // -101 means to select all + // -100 means to select data-limited + // -102 means to select no growth or length + // positive integer means to add that item to selected list + // negative integer means to remove selected item from list + // -999 means to stop reading items for the list + ender = 0; + do + { + ivector tempin(1, 1); + *(ad_comm::global_datafile) >> tempin(1, 1); + if (tempin(1) == -999) + ender = 1; + reportdetail_list.push_back(tempin(1, 1)); + } while (ender == 0); + int Nrec = reportdetail_list.size() - 2; + for (int j = 0; j <= Nrec; j++) + { + if (reportdetail_list[j](1) == -100) rd_background = 0; + if (reportdetail_list[j](1) == -101) rd_background = 1; + if (reportdetail_list[j](1) == -102) rd_background = 2; + } + } + else + { + rd_background = reportdetail; // 0=limited; 2=brief; 1=all + } + + // set background set of picked reports; then set custom if reportdetail==3 + for (k = 1; k <= 60; k++) + { + pick_report_use(k) = "N"; // all off + } + if (rd_background == 0) // limited + { + pick_report_use(1) = "Y"; + pick_report_use(2) = "Y"; + pick_report_use(5) = "Y"; + pick_report_use(6) = "Y"; + pick_report_use(14) = "Y"; + pick_report_use(15) = "Y"; + pick_report_use(16) = "Y"; + pick_report_use(61) = "Y"; + } + else if (rd_background == 2) // brief, no growth or length + { + for (k = 1; k <= 61; k++) + { + pick_report_use(k) = "Y"; // start with all on + } + pick_report_use(7) = "N"; + pick_report_use(8) = "N"; + pick_report_use(11) = "N"; + pick_report_use(12) = "N"; + pick_report_use(13) = "Y"; + pick_report_use(17) = "N"; + pick_report_use(18) = "N"; + pick_report_use(24) = "N"; + pick_report_use(25) = "N"; + pick_report_use(26) = "N"; + pick_report_use(27) = "N"; + pick_report_use(29) = "N"; + pick_report_use(31) = "N"; + pick_report_use(33) = "N"; + pick_report_use(34) = "N"; + pick_report_use(37) = "N"; + pick_report_use(38) = "N"; + pick_report_use(44) = "N"; + pick_report_use(45) = "N"; + pick_report_use(46) = "N"; + pick_report_use(47) = "N"; + pick_report_use(48) = "N"; + pick_report_use(49) = "N"; + pick_report_use(50) = "N"; + pick_report_use(53) = "N"; + pick_report_use(55) = "N"; + pick_report_use(57) = "N"; + pick_report_use(58) = "N"; + pick_report_use(59) = "N"; + } + else // all on + { + for (k = 1; k <= 61; k++) + { + pick_report_use(k) = "Y"; + } + } + if (reportdetail == 3) + { + for (unsigned j = 0; j <= reportdetail_list.size() - 2; j++) + { + if (reportdetail_list[j](1) > 0 && reportdetail_list[j](1) <= 60) + { + pick_report_use(reportdetail_list[j](1)) = "Y"; + } + else if (reportdetail_list[j](1) >= -60) + { + pick_report_use(-reportdetail_list[j](1)) = "N"; + } + else if (reportdetail_list[j](1) > -100) + { + warnstream << "custom report number: " << reportdetail_list[j](1) << " is out of range and ignored"; + write_message(WARN, 0); + } + } + } + + for (k = 1; k <= 60; k++) + echoinput << k << " " << pick_report_use(k) << " " << pick_report_name(k) << endl; + // clang-format off + END_CALCS + + init_int docheckup; // flag for ending dump to "checkup.SS" +!!echoinput<0) echoinput<=11 invoke multiyr with 10's digit; append .1 to invoke log(ratio) with hundreds digit + LOCAL_CALCS + // clang-format on + echoinput << depletion_basis_rd << " depletion_basis as read; this is also known as Bratio and is a std quantity; has multi-yr and log(ratio) options" << endl; + depletion_multi = 0; + depletion_log = 0; + depletion_basis = int( depletion_basis_rd ); // discard decimal + k = depletion_basis; + + if (depletion_basis_rd > float( depletion_basis) ) // invokes log(ratio) if decimal value exists + { + depletion_log = 1; + } + + if (k > 10) // invokes multiyr + { + depletion_multi = int(k / 10); + depletion_basis = k - 10 * depletion_multi; + } + + echoinput << "Parse into: depletion_log(ratio): " << depletion_log << " depletion_multi-yr: " << depletion_multi << " depletion_basis: " << depletion_basis << endl; + // clang-format off + END_CALCS + + init_number depletion_level; +!!echoinput << depletion_level << " depletion_level" << endl; + init_int SPR_reporting; // 0=skip; 1=SPR; 2=SPR_MSY; 3=SPR_Btarget; 4=(1-SPR); 5=SPR +!!echoinput << SPR_reporting << " SPR_reporting" << endl; + init_int F_reporting; // 0=skip; 1=exploit(Bio); 2=exploit(Num); 3=sum(frates); 4=true F for range of ages; 5=unweighted avg F for range of ages + LOCAL_CALCS + // clang-format on + echoinput << F_reporting << " F_reporting quantity, e.g. 3=sum(apical Fs)" << endl; + if (F_reporting == 4 || F_reporting == 5) { + k = 2; + } + else + { + k = 0; + } + // clang-format off + END_CALCS + init_ivector F_reporting_ages_R(1,k); + // convert to F_reporting_ages later after nages is read. + LOCAL_CALCS + // clang-format on + if (k > 0) + { + echoinput << F_reporting_ages_R << " F_reporting_ages_R" << endl; + echoinput << "Will be checked against maxage later " << endl; + } + // clang-format off + END_CALCS + + init_number F_std_basis_rd; // 0=raw; 1=rel Fspr; 2=rel Fmsy ; 3=rel Fbtgt; values >=11 invoke multiyr with 10's digit; >=100 invoke log(ratio) with hundreds digit + number finish_starter; + int mcmc_output_detail; + number MCMC_bump; // value read and added to ln(R0) when starting into MCMC + number ALK_tolerance; + number tempin; + int ender; + int irand_seed; + int irand_seed_rd; + int timevary_bio_4SRR; // flag in 3.30.24 for impact of timevary biology on benchmark SRR calculations + int timevary_bio_4SRR_rd; // flag in 3.30.24 for impact of timevary biology on benchmark SRR calculations + int F_std_multi; // for multi-year averaging of F_std + int F_std_log; // for log(ratio) of F_std + int F_std_basis; + + LOCAL_CALCS + // clang-format on + { + F_std_multi = 0; + F_std_log = 0; + echoinput << F_std_basis_rd << " F_std basis as read" << endl; + F_std_basis = int(F_std_basis_rd); // discards the decimal + k = F_std_basis; // temp value + + if (F_std_basis_rd > float( F_std_basis) ) // invokes log(ratio) if decimal value exists + { + F_std_log = 1; + } + + if (k > 10) // invokes multiyr + { + F_std_multi = int(k / 10); + F_std_basis = k - 10 * F_std_multi; + } + + echoinput << "Parse into: F_std_log(ratio): " << F_std_log << " F_std_multi: " << F_std_multi << " F_std_basis: " << F_std_basis << endl; + if (F_std_multi > 1) + { + warnstream << "new feature for multiyr F_std reporting, be sure STD reporting covers all years from styr to endyr"; + write_message(NOTE, 0); + } + echoinput << "For Kobe plot, set depletion_basis=2; depletion_level=1.0; F_reporting=your choice; F_std_basis=2" << endl; + + mcmc_output_detail = 0; + MCMC_bump = 0.; + ALK_tolerance = 0.0; + irand_seed_rd = -1; + irand_seed = -1; + ender = 0; + //embed following reads in a do-while such that additional reads can be added while retaining backward compatibility with files that do not have the added elements + // element list: + // 1. MCMC_output_detail.MCMC_bump + // 2. ALK_tolerance + // 3. irand_seed; added for 3.30.15 + // xx. finish_starter + do + { + *(ad_comm::global_datafile) >> tempin; + finish_starter = tempin; + if (tempin == 3.30 || tempin == 999) + ender = 1; + + if (tempin == 999.) // finish read in 3.24 format for ss_trans + { + echoinput << "SS read 999 from starter.ss, so will read files in 3.24 format" << endl + << endl; + if (readparfile > 0) + { + warnstream << " ss_trans does not read the PAR file; readparfile set to 0" << endl; + write_message(WARN, 0); + readparfile = 0; + } + } + else // reading in 3.30 format + { + finish_starter = 3.30; + echoinput << "Read files in 3.30 format" << endl; + echoinput << "SS will continue reading from starter.ss until it reads 3.30" << endl; + + echoinput << "read MCMC_output_detail.MCMC_bump as a single real number; separate values will be parsed from integer and fraction" << endl; + mcmc_output_detail = int(tempin); + MCMC_bump = tempin - mcmc_output_detail; + if (mcmc_output_detail < 0 || mcmc_output_detail > 2) + mcmc_output_detail = 0; + echoinput << "MCMC output detail(1=more_detail_to_posts; 2=write_report_for_each_mceval): " << mcmc_output_detail << endl; + echoinput << "MCMC bump to R0: " << MCMC_bump << endl; + + echoinput << "Now read ALK tolerance which is deprecated. If not 0, it will be reset to 0." << endl; + *(ad_comm::global_datafile) >> ALK_tolerance; + if (ALK_tolerance > 0.0 || ALK_tolerance < 0.0) + { + warnstream << "ALK tolerance is now deprecated and is set to 0" ; + write_message(ADJUST, 1); + ALK_tolerance = 0; + } + echoinput << "ALK tolerance: " << ALK_tolerance << endl; + + echoinput << "Now get random number seed; enter -1 to use long(time) as the seed" << endl; + *(ad_comm::global_datafile) >> tempin; + if (tempin == 3.30) + { + ender = 1; + irand_seed_rd = -1; + irand_seed = -1; + } + else + { + irand_seed_rd = int(tempin); + irand_seed = irand_seed_rd; + echoinput << "random number seed: " << irand_seed << endl; + tempin = 0; + } + + echoinput << "now read flag for dealing with impact of time-varying biology on benchmark SRR calculations" << endl; + timevary_bio_4SRR = 0; + timevary_bio_4SRR_rd = -1; + *(ad_comm::global_datafile) >> tempin; + if (tempin == 3.30) // starter file does not contain the new line for timevary_bio_4SRR, so assign default + { + ender = 1; + timevary_bio_4SRR = 0; + } + else // new input line beginning 3.30.24 + { + timevary_bio_4SRR = int(tempin); + timevary_bio_4SRR_rd = 0; // indicates that line was read + echoinput << "Compatibility flag for legacy (0) vs improved (1) impact of timevary biology on benchmark SRR calcs: " << timevary_bio_4SRR << endl; + tempin = 0; + } + + if (ender == 0) + { + *(ad_comm::global_datafile) >> tempin; + if (tempin == 3.30) + { + ender = 1; + } + else + { + echoinput << endl + << "starter.ss should have read 3.30 here; it read: " << tempin << endl; + warnstream << "starter.ss has extra input lines; check echoinput to verify read"; + write_message(FATAL, 0); + } + } + } + } while (ender == 0); + echoinput << " finish reading starter.ss" << endl + << endl; + } + // clang-format off + END_CALCS + + // end reading from Starter file + + number pi +!! pi = 3.14159265358979; + + number neglog19 +!! neglog19 = -log(19.); + + number NilNumbers // used as the minimum for posfun and similar checks +!! NilNumbers = 0.0000001; +// !! NilNumbers = 0.000; + +!!// SS_Label_Info_1.2.1 #Set up a dummy datum for use when max phase = 0 + number dummy_datum; + int dummy_phase; +!! dummy_datum = 1.; +!! if (Turn_off_phase <= 0) {dummy_phase = 0;} else {dummy_phase = -6;} + + int runnumber; + int N_prof_var; + int prof_var_cnt; + int prof_junk; + + LOCAL_CALCS + // clang-format on + // SS_Label_Info_1.3 #Read runnumber.ss + ifstream fin1("runnumber.ss", ios::in); + if (fin1) + { + fin1 >> runnumber; + runnumber++; + fin1.close(); + } + else + { + runnumber = 1; + } + // SS_Label_Info_1.3.1 #Increment runnumber and write to file + ofstream fin2("runnumber.ss", ios::out); + fin2 << runnumber; + fin2.close(); + + // SS_Label_Info_1.4 #Read Profilevalues.ss file + N_prof_var = 998; + ifstream fin3("profilevalues.ss", ios::in); + fin3 >> N_prof_var; // if file is null this will not return anything + if (N_prof_var == 998) + { + N_prof_var = 0; + prof_junk = 0; + } + else + { + prof_junk = 1; + } + fin3.close(); + if (N_prof_var > 0) + { + ad_comm::change_datafile_name("profilevalues.ss"); + } + else // just to have something in scope + { + ad_comm::change_datafile_name("runnumber.ss"); + } + prof_var_cnt = (runnumber - 1) * N_prof_var + 2; + // clang-format off + END_CALCS + init_vector prof_var(1,prof_junk+runnumber*N_prof_var); +// SS_Label_file #3. **SS_readdata.tpl** +// SS_Label_file # * read *data_file* named in starter.ss +// SS_Label_file # * create arrays for data with dimensioning defined dynamically +// SS_Label_file # * creates link from each data element to area/time/fleet that datum occur, and other arrays with specification of which data types occur in each area/time +// SS_Label_file # * uses function found in SS_global: get_data_timing() +// SS_Label_file # * read *forecast.ss* +// SS_Label_file # * note that this extends the time dimension of some arrays, so is read before readcontrol + +// SS_Label_Flow read data file named in starter.ss file +// SS_Label_Info_2.0 #READ DATA FILE +// SS_Label_Info_2.1 #Read comments and dimension info +// SS_Label_Info_2.1.1 #Read and save comments at top of data file + number fif // end of file marker + + LOCAL_CALCS + // clang-format on + // + ad_comm::change_datafile_name(datfilename); + + if (finish_starter == 999) + { + warnstream << "finish_starter=999, so probably used a 3.24 starter.ss; please update"; + write_message(WARN, 0); + finish_starter = 3.30; + } + cout << " reading from data file" << endl; + ifstream Data_Stream(datfilename); // even if the global_datafile name is used, there still is a different logical device created + k = 0; + N_DC = 0; + while (k == 0) + { + Data_Stream >> readline; // reads the line from input stream + if (length(readline) > 2) + { + checkchar = readline(1); + k = strcmp(checkchar, "#"); + checkchar = readline(1, 2); + j = strcmp(checkchar, "#C"); + if (j == 0) + { + N_DC++; + Data_Comments += readline; + } + } + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_2.1.2 #Read model time dimensions + int read_seas_mo; // 1=read integer season; 2=read real months + LOCAL_CALCS + // clang-format on + read_seas_mo = 2; + // clang-format off + END_CALCS + + + int N_subseas; // number of subseasons within season; must be even number to get one to be mid_season + ivector timing_constants(1,6); + LOCAL_CALCS + // clang-format on + *(ad_comm::global_datafile) >> styr; //start year of the model + echoinput << styr << " start year " << endl; + + *(ad_comm::global_datafile) >> endyr; // end year of the model + echoinput << endyr << " end year " << endl; + + *(ad_comm::global_datafile) >> nseas; // number of seasons + echoinput << nseas << " N seasons " << endl; + // clang-format off + END_CALCS + init_vector seasdur(1,nseas); // season duration; enter in units of months, fractions OK; will be rescaled to sum to 1.0 if total is greater than 11.9 + + LOCAL_CALCS + // clang-format on + echoinput << seasdur << " months/seas (fractions OK) " << endl; + *(ad_comm::global_datafile) >> N_subseas; + echoinput << N_subseas << " Number of subseasons (even number only; min 2) for calculation of ALK " << endl; + mid_subseas = N_subseas / 2 + 1; + timing_constants(1) = read_seas_mo; + timing_constants(2) = nseas; + timing_constants(3) = N_subseas; + timing_constants(4) = mid_subseas; + timing_constants(5) = styr; + timing_constants(6) = endyr; + // clang-format off + END_CALCS + + int TimeMax; + int TimeMax_Fcast_std; + int ALK_time_max; + int eq_yr; + int bio_yr; + number sumseas; + + // SS_Label_Info_2.1.3 #Set up seasons + vector seasdur_half(1,nseas); // half a season + matrix subseasdur(1,nseas,1,N_subseas); // cumulative time, within season, for each subseas + vector subseasdur_delta(1,nseas); // length of each subseason + vector azero_seas(1,nseas); // cumulative time, within year, up until begin of this season + + LOCAL_CALCS + // clang-format on + sumseas = sum(seasdur); + if (sumseas >= 11.9) + { + seasdur /= sumseas; + seas_as_year = 0; + sumseas = 12.0; // to be sure it is exactly 12. + } + else + { + seasdur /= 12.; + seas_as_year = 1; + // sumseas will now be used as the duration of the pseudo-year, rather than assuming year has 12 months; + if (nseas > 1) + { + warnstream << "Error. Can only have 1 season when during seasons as psuedo-years."; + write_message (FATAL, 0); + } + } + seasdur_half = seasdur * 0.5; // half a season + subseasdur_delta = seasdur / double(N_subseas); + TimeMax = styr + (endyr + 50 - styr) * nseas + nseas - 1; + retro_yr = endyr + retro_yr; + ALK_time_max = (endyr - styr + 51) * nseas * N_subseas; // sets maximum size for data array indexing 50 years into forecast + // ALK_time_max will be redefined after reading forecast's YrMax to accomodate forecasts longer than the 50 year data limit + + azero_seas(1) = 0.; + if (nseas > 1) + { + for (s = 2; s <= nseas; s++) /* SS_loop: calculate azero_seas from cumulative sum of seasdur(s) */ + { + azero_seas(s) = sum(seasdur(1, s - 1)); + } + } + subseasdur.initialize(); + for (s = 1; s <= nseas; s++) /* SS_loop: for each season */ + { + for (subseas = 2; subseas <= N_subseas; subseas++) /* SS_loop: calculate cumulative time within season to start of each subseas */ + { + subseasdur(s, subseas) = subseasdur(s, subseas - 1) + seasdur(s) / double(N_subseas); + } + } + echoinput << seasdur << " processed season duration (frac. of year) " << endl; + echoinput << subseasdur_delta << " processed subseason duration (frac. of year) " << endl; + echoinput << " processed subseason cumulative annual time within season " << endl + << subseasdur << endl; + if (seas_as_year == 1) + { + warnstream << "Season durations sum to <11.9, so SS3 assumes you are doing years as pseudo-seasons." << endl + << "There can be only 1 season in this timestep and SS3 will ignore month input and assume all observation occur at middle of this pseudo-year" << endl + << "mortality, growth and movement rates are per annum, so will get multiplied by the duration of this timestep as they are used." << endl + << "What gets reported as age is now age in timesteps; and input of age-specific M or K requires one entry per timestep" << endl + << "Similarly, output of age-specific quantities is in terms of number of timesteps, not real years" << endl + << "spawn_month and settlement_month in control file are best set to 1.0 when doing years as pseudo-seasons" << endl; + write_message(WARN, 1); + } + // clang-format off + END_CALCS + +// SPAWN-RECR: define spawning season + init_number spawn_rd; + number spawn_month; // month that spawning occurs + int spawn_seas; // spawning occurs in this season + int spawn_subseas; // + number spawn_time_seas; // real time within season for mortality calculation + LOCAL_CALCS + // clang-format on + if (read_seas_mo == 1) // so reading values of integer season + { + spawn_seas = spawn_rd; + spawn_month = 1.0 + azero_seas(spawn_seas) / sumseas; + spawn_subseas = 1; + spawn_time_seas = 0.0; + } + else // reading values of month + { + spawn_month = spawn_rd; + temp1 = (spawn_month - 1.0) / sumseas; // spawn_month as fraction of year + if (spawn_month >= 13.0) + { + warnstream << "Fatal error. spawn_month must be <13.0, end of year is 12.99, value read is: " << spawn_month; + write_message (FATAL, 0); + } + spawn_seas = 1; // earlist possible spawn_seas; + spawn_subseas = 1; // earliest possible subseas in spawn_seas + temp = azero_seas(spawn_seas) + subseasdur_delta(spawn_seas); // starting value + while (temp <= temp1 + 1.0e-9) + { + if (spawn_subseas == N_subseas) + { + spawn_seas++; + spawn_subseas = 1; + } + else + { + spawn_subseas++; + } + temp += subseasdur_delta(spawn_seas); + } +// spawn_time_seas = (temp1 - azero_seas(spawn_seas)) / seasdur(spawn_seas); // incorrect: remaining fraction of year converted to fraction of season + spawn_time_seas = (temp1 - azero_seas(spawn_seas)); // timing in units of fraction of year such that exp(-Z*spawn_time_seas) will be correct + } + echoinput << "SPAWN month: " << spawn_month << "; seas: " << spawn_seas << "; subseas_for_ALK: " << spawn_subseas << "; spawntiming as frac. of year: " << spawn_time_seas << endl; + if (spawn_seas > nseas) + { + warnstream << " spawn_seas index must be <= nseas "; + write_message(WARN, 0); + } + // clang-format off + END_CALCS + int pop; // number of areas + int gender_rd; + int gender; // number of sexes + int nages; // maxage as accumulator + int nages2; // doubled vector to store males after females = gender*nages+gender-1 + int Nsurvey; + int Nfleet; + int Nfleet1; // used with 3.24 for number of fishing fleets + + LOCAL_CALCS + // clang-format on + { + *(ad_comm::global_datafile) >> gender_rd; + gender = abs(gender_rd); + if (gender_rd < 0) + echoinput << "gender read is negative, so total spawnbiomass will be multiplied by frac_female parameter" << endl; + *(ad_comm::global_datafile) >> nages; + echoinput << gender << " N sexes " << endl + << "Accumulator age " << nages << endl; + *(ad_comm::global_datafile) >> pop; + echoinput << pop << " N_areas " << endl; + *(ad_comm::global_datafile) >> Nfleet; + Nfleet1 = 0; + Nsurvey = 0; + nages2 = gender * nages + gender - 1; + echoinput << Nfleet << " total number of fishing fleets and surveys " << endl; + + // define some useful labels + MGtype_Lbl += "natmort"; + MGtype_Lbl += "growth"; + MGtype_Lbl += "wtlen"; + MGtype_Lbl += "recr_dist"; + MGtype_Lbl += "migration"; + MGtype_Lbl += "ageerror"; + MGtype_Lbl += "catchmult"; + MGtype_Lbl += "hermaphro"; + MGtype_Lbl += "null9"; + MGtype_Lbl += "selectivity"; + MGtype_Lbl += "rel_F"; + MGtype_Lbl += "recruitment"; + echoinput << "MGtype labels: "<< MGtype_Lbl << endl; + } + // clang-format off + END_CALCS + +// SS_Label_Info_2.1.5 #Define fleets, surveys, predators and areas + imatrix pfleetname(1,Nfleet,1,2); + ivector fleet_type(1,Nfleet); // 1=fleet with catch; 2=discard only fleet with F; 3=survey(ignore catch); 4=M2=predator + int N_bycatch; // number of bycatch only fleets + int N_pred; // number of predator fleets + ivector N_catchfleets(0,pop); // number of bycatch plus landed catch fleets by area + imatrix fish_fleet_area(0,pop,0,Nfleet); // list of catch_fleets that are type 1 or 2, so have a F + ivector predator(1,Nfleet); // list of "fleets" that are type 4 + ivector predator_rev(1,Nfleet); // predator ID given f + imatrix predator_area(0,pop,0,Nfleet); // list of predators by area + ivector need_catch_mult(1,Nfleet); // 0=no, 1=need catch_multiplier parameter + vector surveytime(1,Nfleet); // (-1, 1) code for fisheries to indicate use of season-wide observations, or specifically timed observations + ivector fleet_area(1,Nfleet); // areas in which each fleet/survey/predator operates + vector catchunits1(1,Nfleet); // 1=biomass; 2=numbers +// vector catch_se_rd1(1,Nfleet) // units are se of log(catch); use -1 to ignore input catch values for discard only fleets + vector catchunits(1,Nfleet); +// vector catch_se_rd(1,Nfleet) + matrix catch_se(styr-nseas,TimeMax,1,Nfleet); + matrix fleet_setup(1,Nfleet,1,5); // type, timing, area, units, need_catch_mult + matrix bycatch_setup(1,Nfleet,1,6); + // 1: fleet number; must match fleet definitions"<> fleet_setup(f)(1, 5); + *(ad_comm::global_datafile) >> anystring; + fleetname += anystring; + fleet_type(f) = int(fleet_setup(f, 1)); + if (fleet_type(f) == 2) + N_bycatch++; + surveytime(f) = fleet_setup(f, 2) / fabs(fleet_setup(f, 2)); + fleet_setup(f, 2) = surveytime(f); + p = int(fleet_setup(f, 3)); //area + fleet_area(f) = p; + catchunits(f) = int(fleet_setup(f, 4)); + need_catch_mult(f) = int(fleet_setup(f, 5)); + if (fleet_type(f) <= 2) + { + N_catchfleets(0)++; // overall N + N_catchfleets(p)++; // count by area + fish_fleet_area(0, N_catchfleets(0)) = f; // to find the "f" index for a catchfleet when not within an area loop + fish_fleet_area(p, N_catchfleets(p)) = f; // to find the index when in an area loop + + YPR_mask(f) = 1; + if (surveytime(f) != -1.) + { + warnstream << "fishing fleet: " << f << " surveytime read as: " << surveytime(f) << " normally is -1 for fishing fleet; can override for indiv. obs. using 1000+month"; + write_message(WARN, 0); + } + } + else if (fleet_type(f) == 3) + { + if (surveytime(f) == -1.) + { + warnstream << "survey fleet: " << f << " surveytime read as: " << surveytime(f) << " SS3 resets to 1 for all survey fleets, and always overridden by indiv. obs. month"; + write_message (FATAL, 0); + surveytime(f) = 1.; + } + } + else if (fleet_type(f) == 4) // predator, e.g. red tide + { + N_pred++; + predator(N_pred) = f; + predator_rev(f) = N_pred; + predator_area(0, N_pred) = f; // to find the "f" index for a predator when not within an area loop + predator_area(p, N_pred) = f; // to find the index when in an area loop + surveytime(f) = -1.; + } + if (fleet_type(f) > 1 && need_catch_mult(f) > 0) + { + warnstream << "Need_catch_mult can be used only for fleet_type=1 fleet= " << f; + write_message (FATAL, 0); + } + echoinput << f << " # " << fleet_setup(f) << " # " << fleetname(f) << endl; + if (f > 1) { // check for duplicate fleet names, which will break r4ss + for (int f1 = 1; f1 < f; f1++) + { + if (fleetname(f1) == fleetname(f)) + { + warnstream << "duplicate fleet names for fleets: " << f1 << " and " << f << "; " << fleetname(f) << "; SS3 will exit"; + write_message (FATAL, 0); + } + } + } + } + + if (N_bycatch > 0) + { + echoinput << "Now read bycatch fleet characteristics for " << N_bycatch << " fleets" << endl; + echoinput << "1: fleet number; must match fleet definitions" << endl; + echoinput << "2: 1=include dead bycatch in total dead catch for F0.1 and MSY optimizations and forecast ABC; 2=omit from total catch for these purposes (but still include the mortality)" << endl; + echoinput << "3: 1=Fmult scales with other fleets; 2=bycatch F constant at input value; 3=mean bycatch F from range of years" << endl; + echoinput << "4: F or first year of range" << endl; + echoinput << "5: last year of range" << endl; + echoinput << "6: not used" << endl; + for (j = 1; j <= N_bycatch; j++) + { + *(ad_comm::global_datafile) >> f; + bycatch_setup(f, 1) = f; + *(ad_comm::global_datafile) >> bycatch_setup(f)(2, 6); + if (fleet_type(f) == 2) + { + echoinput << f << " " << fleetname(f) << " bycatch_setup: " << bycatch_setup(f) << endl; + if (bycatch_setup(f, 2) == 2) // omit bycatch fleet catch from YPR optimize + { + YPR_mask(f) = 0; + } + if (bycatch_setup(f, 3) == 3) // check year range + { + if (bycatch_setup(f, 4) < styr) + bycatch_setup(f, 4) = styr; + if (bycatch_setup(f, 5) > retro_yr) + bycatch_setup(f, 5) = retro_yr; + } + } + else + { + warnstream << "fleet " << f << " is in bycatch list but not designated as bycatch fleet"; + write_message (FATAL, 0); + } + } + } + echoinput << "YPR_optimize_mask: " << YPR_mask << endl; + Nfleet1 = N_catchfleets(0); + N_retParm = 0; + } + // clang-format off + END_CALCS + +// ProgLabel_2.1.5 define genders and max age + + ivector age_vector(0,nages); + vector r_ages(0,nages); + vector frac_ages(0,nages); + ivector years(styr,endyr); // vector of the years of the model + vector r_years(styr,endyr); + ivector ALK_subseas_update(1,nseas*N_subseas); // 0 means ALK is OK for this subseas, 1 means that recalc is needed + + ivector F_reporting_ages(1,2); + + LOCAL_CALCS + // clang-format on + for (a = 0; a <= nages; a++) // SS_loop: fill ivector age vector + age_vector(a) = a; + for (a = 0; a <= nages; a++) // SS_loop: fill real vector r_ages + r_ages(a) = double(a); + frac_ages = r_ages / r_ages(nages); + for (y = styr; y <= endyr; y++) + { //year vector + years(y) = y; + r_years(y) = y; + } + if (F_reporting == 4 || F_reporting == 5) + { + F_reporting_ages = F_reporting_ages_R; + if (F_reporting_ages(1) > (nages - 2) || F_reporting_ages(1) < 0) + { + warnstream << "reset lower end of F_reporting_ages to be nages-2 "; + write_message(ADJUST, 0); + F_reporting_ages(1) = nages - 2; + } + if (F_reporting_ages(2) > (nages - 2) || F_reporting_ages(2) < 0) + { + warnstream << "reset upper end of F_reporting_ages to be nages-2 "; + write_message(ADJUST, 0); + F_reporting_ages(2) = nages - 2; + } + } + else + { + F_reporting_ages(1) = nages / 2; + F_reporting_ages(2) = F_reporting_ages(1); + } + // clang-format off + END_CALCS + +// SS_Label_Info_2.1.6 #Indexes for data timing. "have_data" and "data_time" hold pointers for data occurrence, timing, and ALK need + int data_type; + number data_timing; + 4iarray have_data(1,ALK_time_max,0,Nfleet,0,9,0,150); + imatrix have_data_yr(styr,endyr+50,0,Nfleet); + +// have_data stores the data index of each datum occurring at time ALK_time, for fleet f of observation type k. Up to 150 data are allowed due to CAAL data +// have_data(ALK_idx,0,0,0) is overall indicator that some datum requires ALK update in this ALK_time +// have_data() 3rd element: 0=any; 1=survey/CPUE/effort; 2=discard; 3=mnwt; 4=length; 5=age; 6=SizeFreq; 7=sizeage; 8=morphcomp; 9=tags +// have_data() 4th element; zero'th element contains N obs for this subseas; allows for 150 observations per datatype per fleet per subseason + + 3darray data_time(1,ALK_time_max,1,Nfleet,1,3); +// data_time(): first value will hold real month; 2nd is timing within season; 3rd is year.fraction +// for a given fleet x subseas, all observations must have the same specific timing (month.fraction) +// a warning will be given if subsequent observations have a different month.fraction +// an observation's real_month is used to assign it to a season and a subseas within that seas, and it is used to calculate the data_timing within the season for mortality + +// where ALK_idx=(y-styr)*nseas*N_subseas+(s-1)*N_subseas+subseas This is index to subseas and used to indicate which ALK is being referenced + +// ProgLabel_2.2 Read CATCH amount by fleet + matrix obs_equ_catch(1,nseas,1,Nfleet); // initial, equilibrium catch. now seasonal + LOCAL_CALCS + // clang-format on + have_data.initialize(); + have_data_yr.initialize(); + obs_equ_catch.initialize(); + + for (y = 1; y <= ALK_time_max; y++) + for (f = 1; f <= Nfleet; f++) + { + data_time(y, f, 1) = -1.0; // set to illegal value since 0.0 is valid + } + // clang-format off + END_CALCS +!!// SS_Label_Info_2.2 #Read CATCH amount by fleet + + int N_ReadCatch; +// int Catch_read; + vector tempvec(1,6); // vector used for temporary reads + LOCAL_CALCS + // clang-format on + ender = 0; + do + { + dvector tempvec(1, 5); + *(ad_comm::global_datafile) >> tempvec(1, 5); + if (tempvec(1) == -9999.) + ender = 1; + catch_read.push_back(tempvec(1, 5)); + } while (ender == 0); + N_ReadCatch = catch_read.size() - 1; + echoinput << N_ReadCatch << " records" << endl; + // clang-format off + END_CALCS + + matrix catch_ret_obs(1,Nfleet,styr-nseas,TimeMax+nseas); + imatrix catch_record_count(1,Nfleet,styr-nseas,TimeMax+nseas); + 3iarray catch_seas_area(styr,TimeMax,1,pop,0,Nfleet); + matrix totcatch_byarea(styr,TimeMax,1,pop); + vector totcat(styr-1,endyr); // by year, not by t + int first_catch_yr; + vector catch_by_fleet(1,Nfleet); + + ivector disc_fleet_list(1,Nfleet); + int N_retain_fleets; + int catch_warn; + + LOCAL_CALCS + // clang-format on + catch_ret_obs.initialize(); + catch_record_count.initialize(); + catch_warn = 0; + tempvec.initialize(); + for (k = 0; k <= N_ReadCatch - 1; k++) + { + // do read in list format y, s, f, catch, catch_se + tempvec(1, 5) = catch_read[k]; + g = tempvec(1); + s = tempvec(2); + f = tempvec(3); + if (g == -999) + { // designates initial equilibrium + y = styr - 1; + } + else + { + y = g; + } + if (k == 0) + echoinput << "first catch record: " << tempvec(1, 5) << endl; + if (k == (N_ReadCatch - 1)) + echoinput << "last catch record: " << tempvec(1, 5) << endl; + if (y >= (styr - 1) && y <= endyr && (g == -999 || g >= styr)) // observation is in date range + { + if (s > nseas) + { + catch_warn++; + s = nseas; + // allows for collapsing multiple season catch data down into fewer seasons + // typically to collapse to annual because accumulation will all be in the index "nseas" + } + if (s > 0) + { + t = styr + (y - styr) * nseas + s - 1; + { + catch_ret_obs(f, t) += tempvec(4); + catch_record_count(f, t)++; + catch_se(t, f) = tempvec(5); + } + } + else // distribute catch equally across seasons + { + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + { + catch_ret_obs(f, t) += tempvec(4) / nseas; + catch_record_count(f, t)++; + } + } + } + } + } + if (catch_warn > 0) { + if (catch_warn > 1) + warnstream << catch_warn << " catch records have "; + else + warnstream << "one catch record has "; + warnstream << "seas>nseas; perhaps erroneous entry of month rather than season; changed to nseas"; + write_message(ADJUST, 0); + } + // warn on duplicate catch records + for (y = styr - 1; y <= endyr; y++) + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) { + t = styr + (y - styr) * nseas + s - 1; + if (catch_record_count(f, t) > 1) + { + warnstream << catch_record_count(f, t) << " catch records have been accumulated into year, seas, fleet " << y << " " << s << " " << f << "; total catch= " << catch_ret_obs(f, t); + write_message(WARN, 0); + } + } + + obs_equ_catch.initialize(); + for (s = 1; s <= nseas; s++) + { + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + obs_equ_catch(s, f) = catch_ret_obs(f, styr - nseas - 1 + s); + } + echoinput << " equ, seas: -1 " << s << " catches: " << obs_equ_catch(s) << endl; + } + for (y = styr; y <= endyr; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + echoinput << "year, seas: " << y << " " << s << " catches: " << trans(catch_ret_obs)(t) << endl; + } + + // calc total catch by year so can calculate the first year with catch and to omit zero catch years from sdreport + totcat.initialize(); + catch_seas_area.initialize(); + totcatch_byarea.initialize(); + totcat(styr - 1) = sum(obs_equ_catch); // sums over all seasons and fleets + first_catch_yr = 0; + if (totcat(styr - 1) > 0.0) + first_catch_yr = styr - 1; + + for (y = styr; y <= endyr; y++) + { + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + for (p = 1; p <= pop; p++) + for (f = 1; f <= Nfleet; f++) + if (fleet_area(f) == p && catch_ret_obs(f, t) > 0.0 && fleet_type(f) <= 2) // excludes survey and predator fleets + { + catch_seas_area(t, p, f) = 1; + catch_seas_area(t, p, 0) = 1; + if (fleet_type(f) == 1) + totcat(y) += catch_ret_obs(f, t); + if (fleet_type(f) == 1) + totcatch_byarea(t, p) += catch_ret_obs(f, t); + } + } + if (totcat(y) > 0.0 && first_catch_yr == 0) + first_catch_yr = y; + if (y == endyr && totcat(y) == 0.0) + { + warnstream << "catch is 0.0 in endyr; this can cause problem in the benchmark and forecast calculations. "; + write_message(WARN, 0); + } + } + echoinput << endl + << "#_show_total_catch_by_fleet" << endl; + catch_by_fleet = rowsum(catch_ret_obs); + for (f = 1; f <= Nfleet; f++) + { + echoinput << f << " type: " << fleet_type(f) << " " << fleetname(f) << " catch: " << catch_by_fleet(f); + if (fleet_type(f) == 3 && catch_by_fleet(f) > 0.0) + { + warnstream << " Catch by survey fleet will be ignored " << fleet_type(f); + write_message(WARN, 1); + } + echoinput << endl; + } + // clang-format off + END_CALCS + + // SS_Label_Info_2.3 #Read fishery CPUE, effort, and Survey index or abundance +!!echoinput<=30 for special patterns + ivector Svy_errtype(1,Nfleet); // -2=gamma(Cole); -1=normal; 0=lognormal ; 1=lognormal w/ biascorr; >1=T-dist + ivector Svy_sdreport(1,Nfleet); // 0=no sdreport; 1=enable sdreport + int Svy_N_sdreport; + + LOCAL_CALCS + // clang-format on + + data_type = 1; // for surveys + echoinput << "Units: 0=numbers; 1=biomass; 2=F; >=30 for special patterns" << endl; + echoinput << "Errtype: -2=gamma(future); -1=normal; 0=lognormal ; 1=lognormal w/ biascorr; >1=T-dist with DF=XXX" << endl; + echoinput << "SD_Report: 0=no sdreport; 1=enable sdreport" << endl; + echoinput << "Fleet Units Err_Type SD_Report" << endl; + echoinput << Svy_units_rd << endl; + Svy_units = column(Svy_units_rd, 2); + Svy_errtype = column(Svy_units_rd, 3); + Svy_sdreport = column(Svy_units_rd, 4); + + for (f = 1; f<=Nfleet; f++) + { + if (Svy_units(f) >= 35 && Svy_errtype(f) >= 0) + { + warnstream << " survey error type must not be lognormal for surveys of deviations for fleet: " << f << fleetname(f) << endl; + write_message(FATAL, 1); + } + + if (Svy_errtype(f) < -2 ) + { + warnstream << " survey error type = " << Svy_errtype(f) << " is illegal for fleet: " << f << fleetname(f) << endl; + write_message(FATAL, 1); + } + } + + // read survey data + ender = 0; + do + { + dvector tempvec(1, 5); + *(ad_comm::global_datafile) >> tempvec(1, 5); + if (tempvec(1) == -9999.) + ender = 1; + Svy_data.push_back(tempvec(1, 5)); + } while (ender == 0); + Svy_N_rd = Svy_data.size() - 1; + echoinput << Svy_N_rd << " nobs_survey " << endl; + // clang-format off + END_CALCS + +// init_matrix Svy_data(1,Svy_N_rd,1,5) +// !!if(Svy_N_rd>0) echoinput<<" Svy_data "< 0) + { + for (i = 0; i <= Svy_N_rd - 1; i++) + { + echoinput << Svy_data[i] << endl; + y = Svy_data[i](1); + if (y >= styr) + { + f = abs(Svy_data[i](3)); // negative f turns off observation + Svy_N_fleet(f)++; + if (Svy_data[i](5) < 0) + { + warnstream << "cannot use negative se to indicate superperiods in survey data"; + write_message (FATAL, 0); + } + if (Svy_data[i](2) < 0) + Svy_super_N(f)++; // count the super-periods if seas<0 + } + } + Svy_N = sum(Svy_N_fleet); + for (f = 1; f <= Nfleet; f++) + if (Svy_super_N(f) > 0) + { + j = Svy_super_N(f) / 2; // because we counted the begin and end + if (2 * j != Svy_super_N(f)) + { + warnstream << "unequal number of starts and ends of survey superperiods "; + write_message (FATAL, 0); + } + else + { + Svy_super_N(f) = j; + } + } + } + + // check if there are observations for the index before enabling sdreport + for (f = 1; f <= Nfleet; ++f) + { + if (Svy_N_fleet(f) == 0) Svy_sdreport(f) = 0; + } + // clang-format off + END_CALCS + + imatrix Svy_time_t(1,Nfleet,1,Svy_N_fleet); // stores the continuous season index (t) for each obs + imatrix Svy_ALK_time(1,Nfleet,1,Svy_N_fleet); // stores the continuous subseas index (ALK_time) for each obs + imatrix Svy_use(1,Nfleet,1,Svy_N_fleet); + matrix Svy_obs(1,Nfleet,1,Svy_N_fleet); + matrix Svy_obs_log(1,Nfleet,1,Svy_N_fleet); + matrix Svy_se_rd(1,Nfleet,1,Svy_N_fleet); + matrix Svy_se(1,Nfleet,1,Svy_N_fleet); +// arrays for Super-years + imatrix Svy_super(1,Nfleet,1,Svy_N_fleet); // indicator used to display start/stop in reports + imatrix Svy_super_start(1,Nfleet,1,Svy_super_N); // where Svy_super_N is a vector + imatrix Svy_super_end(1,Nfleet,1,Svy_super_N); + matrix Svy_super_weight(1,Nfleet,1,Svy_N_fleet); + ivector Svy_styr(1,Nfleet); + ivector Svy_endyr(1,Nfleet); + imatrix Svy_yr(1,Nfleet,1,Svy_N_fleet); + number real_month; + vector timing_input(1,3); + vector timing_r_result(1,3); + vector Svy_minval(1,Nfleet); + vector Svy_maxval(1,Nfleet); + ivector timing_i_result(1,6); + // r_result(1,3) will contain: real_month, data_timing_seas, data_timing_yr, + // i_result(1,6) will contain y, t, s, f, ALK_time, use_midseas + + LOCAL_CALCS + // clang-format on + // SS_Label_Info_2.3.1 #Process survey observations, move info into working arrays,create super-periods as needed + Svy_super_N.initialize(); + Svy_N_fleet.initialize(); + Svy_styr.initialize(); + Svy_endyr.initialize(); + Svy_yr.initialize(); + Svy_minval.initialize(); + Svy_minval = 999999999.; + Svy_maxval.initialize(); + Svy_maxval = -999999999.; + in_superperiod = 0; + if (Svy_N > 0) + { + for (i = 0; i <= Svy_N_rd - 1; i++) // loop all, including those out of yr range + { + y = Svy_data[i](1); + if (y > endyr + 50) + { + warnstream << "forecast observations cannot be beyond endyr +50"; + write_message (FATAL, 0); + } + if (y >= styr) + { + // call a global function to calculate data timing and create various indexes + // function will return: data_timing, ALK_time, real_month, use_midseas + timing_input(1, 3) = Svy_data[i](1, 3); + get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); + f = abs(Svy_data[i](3)); + if (y > retro_yr) + Svy_data[i](3) = -f; + Svy_N_fleet(f)++; // count obs by fleet again + j = Svy_N_fleet(f); // index of observation as stored in working array + t = timing_i_result(2); + ALK_time = timing_i_result(5); + // some fleet specific indexes and working versions of the data and se + Svy_time_t(f, j) = t; + Svy_ALK_time(f, j) = ALK_time; // continuous subseas counter in which jth obs from fleet f occurs + Svy_se_rd(f, j) = Svy_data[i](5); // later adjust with varadjust, copy to se_cr_use, then adjust with extra se parameter + if (Svy_data[i](3) < 0) + { + Svy_use(f, j) = -1; + } + else + { + Svy_use(f, j) = 1; + Svy_N_fleet_use(f)++; + } + Svy_obs(f, j) = Svy_data[i](4); + Svy_yr(f, j) = y; + if (Svy_styr(f) == 0 || (y >= styr && y < Svy_styr(f))) + Svy_styr(f) = y; // for dimensioning survey q devs + if (Svy_endyr(f) == 0 || (y <= endyr && y > Svy_endyr(f))) + Svy_endyr(f) = y; // for dimensioning survey q devs + + // Svy_styr and Svy_endyr for recruitment surveys will be checked against recdev start and end in readcontrol + if (y >= styr && Svy_data[i](3) > 0) + { + Svy_minval(f) = min(Svy_minval(f), Svy_obs(f, j)); + Svy_maxval(f) = max(Svy_maxval(f), Svy_obs(f, j)); + } + // some all fleet indexes + if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f + { // real_month,fraction of season, year.fraction + data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); + } + else if (timing_r_result(1) == data_time(ALK_time, f, 1)) + { + warnstream << "SURVEY: duplicate survey obs for this time-fleet: y,s,f: " << y << " " << s << " " << f << " SS3 will exit "; + write_message (FATAL, 0); + } + + have_data(ALK_time, 0, 0, 0) = 1; + have_data(ALK_time, f, 0, 0) = 1; // so have data of some type in this subseas, for this fleet + have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas + p = have_data(ALK_time, f, data_type, 0); // current number of observations + have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas + have_data_yr(y, f) = 1; // survey or comp data exist this year + have_data_yr(y, 0) = 1; + // create super_year indexes + if (Svy_data[i](2) < 0) // start or stop a super-period; ALL observations must be continguous in the file + { + Svy_super(f, j) = -1; + if (in_superperiod == 0) // start superperiod + { + Svy_super_N(f)++; + Svy_super_start(f, Svy_super_N(f)) = j; + in_superperiod = 1; + } + else + { + if (in_superperiod == 1) // end superperiod + { + Svy_super_end(f, Svy_super_N(f)) = j; + in_superperiod = 0; + } + else + { + } + } + } + else + { + Svy_super(f, j) = 1; + } + } + } + + echoinput << "Successful read of survey data; total N: " << Svy_N << endl; + echoinput << "Index Survey_name N Super_Per Min_val max_val // Observations:" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (Svy_N_fleet(f) > 0) + { + echoinput << f << " " << fleetname(f) << " " << Svy_N_fleet(f) << " " << Svy_super_N(f) << " " << Svy_minval(f) << " " << Svy_maxval(f) << " // " << Svy_obs(f) << endl; + if (Svy_errtype(f) >= 0 && Svy_minval(f) <= 0.) + { + warnstream << "error, SS3 has exited. A fleet uses lognormal error and has an observation <=0.0; fleet: " << f; + write_message (FATAL, 0); + } + } + } + } + Svy_N_sdreport = 0; + for (f = 1; f <= Nfleet; ++f) + { + if (Svy_sdreport(f) > 0) + { + Svy_N_sdreport += Svy_N_fleet(f); + } + } + if (Svy_N_sdreport < 0) + Svy_N_sdreport = 0; + echoinput << "Number of sdreport index values: " << Svy_N_sdreport << endl; + // clang-format off + END_CALCS + + init_int Ndisc_fleets; + int nobs_disc; // number of discard records kept in active array + int disc_N_read; // number of records read + ivector disc_N_fleet(1,Nfleet); // kept obs per fleet + ivector disc_N_fleet_use(1,Nfleet); // kept obs per fleet + ivector N_suprper_disc(1,Nfleet); // N super_yrs per obs + + LOCAL_CALCS + // clang-format on + // SS_Label_Info_2.4 #read Discard data + echoinput << " note order of discard read is now: N fleets with disc, then if Ndisc_fleets>0 read: fleet, disc_units, disc_error(for 1,Ndisc_fleets), then read obs " << endl; + echoinput << Ndisc_fleets << " N fleets with discard " << endl; + + if (Ndisc_fleets > 0) + { + j = Nfleet; + } + else + { + j = 0; + } + data_type = 2; // for discard + // clang-format off + END_CALCS + init_imatrix disc_units_rd(1,Ndisc_fleets,1,3); + ivector disc_units(1,j); // formerly scalar disc_type + ivector disc_errtype(1,j); // formerly scalar DF_disc + vector disc_errtype_r(1,j); // real version for T-dist + vector disc_minval(1,j); + vector disc_maxval(1,j); + + LOCAL_CALCS + // clang-format on + disc_units.initialize(); + disc_errtype.initialize(); + disc_minval.initialize(); + disc_minval = 999999999.; + disc_maxval.initialize(); + disc_maxval = -999999999.; + nobs_disc = 0; + disc_N_fleet = 0; + disc_N_fleet_use = 0; + N_suprper_disc = 0; + if (Ndisc_fleets > 0) + { + echoinput << "#_discard_units (1=same_as_catchunits(bio/num);2=fraction; 3=numbers)" << endl; + echoinput << "#_discard_error: >0 for DF of T-dist(read CV below); 0 for normal with CV; -1 for normal with se; -2 for lognormal; -3 for trunc normal with CV" << endl; + echoinput << "#_fleet units errtype" << endl; + echoinput << disc_units_rd << endl; + for (j = 1; j <= Ndisc_fleets; j++) + { + f = disc_units_rd(j, 1); + disc_units(f) = disc_units_rd(j, 2); + disc_errtype(f) = disc_units_rd(j, 3); + disc_errtype_r(f) = float(disc_errtype(f)); + } + + ender = 0; + do + { + dvector tempvec(1, 5); + *(ad_comm::global_datafile) >> tempvec(1, 5); + if (tempvec(1) == -9999.) + ender = 1; + discdata.push_back(tempvec(1, 5)); + } while (ender == 0); + disc_N_read = discdata.size() - 1; + echoinput << disc_N_read << " N discard obs " << endl; + + if (disc_N_read > 0) + { + for (i = 0; i <= disc_N_read - 1; i++) // get count of observations in date range + { + echoinput << discdata[i] << endl; + y = discdata[i](1); + if (y >= styr) + { + f = abs(discdata[i](3)); + disc_N_fleet(f)++; + if (discdata[i](5) < 0) + { + warnstream << "Cannot use negative se as indicator of superperiod in discard data"; + write_message (FATAL, 0); + } + if (discdata[i](2) < 0) + N_suprper_disc(f)++; // count the super-periods if seas<0 or se<0 + } + } + nobs_disc = sum(disc_N_fleet); // sum of obs in the date range + for (f = 1; f <= Nfleet; f++) + if (N_suprper_disc(f) > 0) + { + j = N_suprper_disc(f) / 2; // because we counted the begin and end + if (2 * j != N_suprper_disc(f)) + { + warnstream << "unequal number of starts and ends of discard superperiods "; + write_message (FATAL, 0); + } + else + { + N_suprper_disc(f) = j; + } + } + } + } + // clang-format off + END_CALCS + + imatrix disc_time_t(1,Nfleet,1,disc_N_fleet); + imatrix disc_time_ALK(1,Nfleet,1,disc_N_fleet); // stores the continuous subseas index (ALK_time) for each obs + imatrix yr_disc_use(1,Nfleet,1,disc_N_fleet); + matrix obs_disc(1,Nfleet,1,disc_N_fleet); + matrix cv_disc(1,Nfleet,1,disc_N_fleet); + matrix sd_disc(1,Nfleet,1,disc_N_fleet); +// arrays for Super-years + imatrix yr_disc_super(1,Nfleet,1,disc_N_fleet); + imatrix suprper_disc1(1,Nfleet,1,N_suprper_disc); + imatrix suprper_disc2(1,Nfleet,1,N_suprper_disc); + matrix suprper_disc_sampwt(1,Nfleet,1,disc_N_fleet); + LOCAL_CALCS + // clang-format on + // SS_Label_Info_2.4.1 #Process discard data and create super periods as needed + disc_N_fleet.initialize(); // redo the counter to provide pointer for below + N_suprper_disc.initialize(); + in_superperiod = 0; + if (nobs_disc > 0) + { + for (i = 0; i <= disc_N_read - 1; i++) + { + y = discdata[i](1); + if (y > endyr + 50) + { + warnstream << "forecast observations cannot be beyond endyr +50"; + write_message (FATAL, 0); + } + if (y >= styr) + { + timing_input(1, 3) = discdata[i](1, 3); + get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); + + f = abs(discdata[i](3)); + if (y > retro_yr) + discdata[i](3) = -f; + disc_N_fleet(f)++; + j = disc_N_fleet(f); // index number for data that are in date range + t = timing_i_result(2); + ALK_time = timing_i_result(5); + disc_time_t(f, j) = t; + disc_time_ALK(f, j) = ALK_time; // subseas that this observation is in + + if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f + { // real_month,fraction of season, year.fraction + data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); + } + else if (timing_r_result(1) != data_time(ALK_time, f, 1)) + { + warnstream << "DISCARD: data_month already set for y,s,f: " << y << " " << s << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " but read value is: " << timing_r_result(1); + write_message(WARN, 0); + } + + have_data(ALK_time, 0, 0, 0) = 1; + have_data(ALK_time, f, 0, 0) = 1; // so have data of some type + have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas + p = have_data(ALK_time, f, data_type, 0); + have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas + + cv_disc(f, j) = discdata[i](5); + obs_disc(f, j) = fabs(discdata[i](4)); + disc_minval(f) = min(disc_minval(f), obs_disc(f, j)); + disc_maxval(f) = max(disc_maxval(f), obs_disc(f, j)); + if (discdata[i](4) < 0.0) + discdata[i](3) = -fabs(discdata[i](3)); // convert to new format using negative fleet + if (discdata[i](3) < 0) + { + yr_disc_use(f, j) = -1; + } + else + { + yr_disc_use(f, j) = 1; + disc_N_fleet_use(f)++; + } + if (fleet_type(f) < 3 && catch_ret_obs(f, t) <= 0.0) + { + warnstream << "discard observation: " << i << " has no corresponding catch " << discdata[i]; + write_message(WARN, 0); + } + + // create super_year indexes + if (discdata[i](2) < 0) // start/stop a super-year ALL observations must be continguous in the file + { + yr_disc_super(f, j) = -1; + if (in_superperiod == 0) // start a super-year + { + N_suprper_disc(f)++; + suprper_disc1(f, N_suprper_disc(f)) = j; + in_superperiod = 1; + } + else if (in_superperiod == 1) // end a super-year + { + suprper_disc2(f, N_suprper_disc(f)) = j; + in_superperiod = 0; + } + } + else + { + yr_disc_super(f, j) = 1; + } + } + } + } + echoinput << "Successful read of discard data " << endl; + echoinput << "Index Survey_name N Super_Per Min_val max_val // Observations:" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (disc_N_fleet(f) > 0) + { + echoinput << f << " " << fleetname(f) << " " << disc_N_fleet(f) << " " << N_suprper_disc(f); + echoinput << " " << disc_minval(f) << " " << disc_maxval(f) << " // " << obs_disc(f) << endl; + if (disc_minval(f) < 0.) + { + warnstream << "error, SS3 has exited. A discard observation is <0.0; fleet: " << f; + write_message (FATAL, 0); + } + } + } + // clang-format off + END_CALCS + + +!!// SS_Label_Info_2.5 #Read Mean Body Weight data +// note that syntax for storing this info internally is done differently than for surveys and discard + init_int do_meanbodywt; + int nobs_mnwt_rd; + int nobs_mnwt; + ivector mnwt_N_fleet(1,Nfleet); + ivector mnwt_N_fleet_use(1,Nfleet); + number DF_bodywt; // DF For meanbodywt T-distribution +!!echoinput< 0) + { + *(ad_comm::global_datafile) >> DF_bodywt; + echoinput << DF_bodywt << " degrees of freedom for bodywt T-distribution " << endl; + echoinput << "#_yr month fleet part type obs stderr" << endl; + echoinput << "# type is a required new input with 3.30.12" << endl; + echoinput << "# type makes explicit the infor previously contained in the sign of partition, e.g. " << endl; + echoinput << "# type=1 is for mean length, type=2 is for mean weight, (future, type=3 is for mean true age)" << endl; + ender = 0; + z = 0; + do + { + dvector tempvec(1, 7); + *(ad_comm::global_datafile) >> tempvec(1, 7); + if (tempvec(1) == -9999.) + ender = 1; + z++; + if (z <= 2) + { + echoinput << "meansize_obs_#:" << z << " # " << tempvec << endl; + } + mnwtdata1.push_back(tempvec(1, 7)); + if (tempvec(1) >= styr) + { + nobs_mnwt++; + } + } while (ender == 0); + nobs_mnwt_rd = mnwtdata1.size() - 1; + echoinput << nobs_mnwt_rd << " nobs for mean body size" << endl; + if (nobs_mnwt_rd > 0) + { + echoinput << "meansize_obs_#:" << nobs_mnwt_rd << " # " << mnwtdata1[nobs_mnwt_rd - 1] << endl; + } + } + // clang-format off + END_CALCS + matrix mnwtdata(1,11,1,nobs_mnwt); // working matrix for the mean size data +// 10 items are: 1yr, 2seas, 3fleet, 4part, 5type, 6obs, 7se, then three intermediate variance quantities, then ALKtime + + LOCAL_CALCS + // clang-format on + mnwtdata.initialize(); + j = 0; + data_type = 3; + if (nobs_mnwt > 0) + for (i = 0; i <= nobs_mnwt_rd - 1; i++) // loop all obs + { + y = mnwtdata1[i](1); + if (y > endyr + 50) + { + warnstream << "mnwt forecast observations cannot be beyond endyr +50"; + write_message (FATAL, 0); + } + if (y >= styr) + { + if (mnwtdata1[i](2) < 0.0) + { + warnstream << "negative season not allowed for mnwtdata because superperiods not implemented "; + write_message(WARN, 0); + } + timing_input(1, 3) = mnwtdata1[i](1, 3); + get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); + j++; + f = abs(mnwtdata1[i](3)); + if (y > retro_yr) + { + mnwtdata1[i](3) = -f; + } + mnwt_N_fleet(f)++; + if (mnwtdata1[i](3) > 0) + { + mnwt_N_fleet_use(f)++; + } + t = timing_i_result(2); + ALK_time = timing_i_result(5); + // disc_time_ALK(f,j) = ALK_time; // subseas that this observation is in + + if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f + { // real_month,fraction of season, year.fraction + data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); + } + else if (timing_r_result(1) != data_time(ALK_time, f, 1)) + { + warnstream << "MEAN_WEIGHT: data_month already set for y,s,f: " << y << " " << s << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " but read value is: " << timing_r_result(1); + write_message(WARN, 0); + } + have_data(ALK_time, 0, 0, 0) = 1; + have_data(ALK_time, f, 0, 0) = 1; // so have data of some type + have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas + p = have_data(ALK_time, f, data_type, 0); + have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas + + z = mnwtdata1[i](4); // z is partition (0, 1, 2) + + for (k = 1; k <= 7; k++) + { + mnwtdata(k, j) = mnwtdata1[i](k); + } + mnwtdata(1, j) = t; // note: saving t, not y so have direct access to t later + mnwtdata(11, j) = ALK_time; + } + } + echoinput << "Successful pre-processing of mean-bodysize data" << endl; + // clang-format off + END_CALCS + +!!// SS_Label_Info_2.6 #Setup population Length bins + number binwidth2; // width of length bins in population + number minLread; // input minimum size in population; this is used as the mean size at age 0.00 + number maxLread; // input maximum size to be considered; should be divisible by binwidth2 + int nlen_bin2; //number of length bins in length comp data doubled for males + int nlen_binP; //number of length bins in length comp data +1 as needed + number minL; // minL and maxL store ends of the sizevector and are used as bounds later + number minL_m; // mean size in first pop bin + number maxL; // set to the midsize of last population bin for selex calc + int nlength; // N pop lenbins + int nlength1; // +1 as needed + int nlength2; // doubled for males + number startbin; // population length bin that matches first data length bin + + init_int LenBin_option; // 1=set to data bins; 2 generate uniform; 3 = read custom +!!echoinput<0) echoinput<0) echoinput< 0) + { + echoinput << "#_now read controls for processing the length comps:" << endl; + echoinput << "Use_length_data == 1: invokes original input format starting with mintailcomp, one row for each fleet" << endl; + echoinput << "Use_length_data == 2: invokes list format with fleet and partition preceding controls" << endl; + if (use_length_data == 2) + { + echoinput << "#_fleet: fleet number, or -9999 for terminator row, or negative fleet to use input row as filler for all fleets and partitions" << endl; + echoinput << "#_partition: 0=all, 1=discard, 2=retained" << endl; + } + echoinput << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; + echoinput << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; + echoinput << "#_males and females treated as combined gender below this bin number " << endl; + echoinput << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; + echoinput << "#_Comp_Error: 0=multinomial, 1=dirichlet using theta * n, 2=dirichlet using beta, 3=MV_Tweedie with phi and power"<> min_tail_L(0, f); + min_tail_L(1, f) = min_tail_L(0, f); + min_tail_L(2, f) = min_tail_L(0, f); + *(ad_comm::global_datafile) >> min_comp_L(0, f); + if (min_comp_L(0, f) <= 0) { + warnstream << "addtocomp input for length comps fleet " << f << + " is " << min_comp_L(0, f) << " but should be > 0 to avoid log(0) in likelihood"; + write_message(WARN, 0); + } + min_comp_L(1, f) = min_comp_L(0, f); + min_comp_L(2, f) = min_comp_L(0, f); + *(ad_comm::global_datafile) >> CombGender_L(0, f); + CombGender_L(1, f) = CombGender_L(0, f); + CombGender_L(2, f) = CombGender_L(0, f); + *(ad_comm::global_datafile) >> AccumBin_L(0, f); + AccumBin_L(1, f) = AccumBin_L(0, f); + AccumBin_L(2, f) = AccumBin_L(0, f); + *(ad_comm::global_datafile) >> Comp_Err_L(0, f); + Comp_Err_L(1, f) = Comp_Err_L(0, f); + Comp_Err_L(2, f) = Comp_Err_L(0, f); + *(ad_comm::global_datafile) >> Comp_Err_L2(0, f); + Comp_Err_L2(1, f) = Comp_Err_L2(0, f); + Comp_Err_L2(2, f) = Comp_Err_L2(0, f); + *(ad_comm::global_datafile) >> min_sample_size_L(0, f); + min_sample_size_L(1, f) = min_sample_size_L(0, f); + min_sample_size_L(2, f) = min_sample_size_L(0, f); + } + } + else + { + ender = 0; + int parti; + int parti_lo; + int parti_hi; + int f_lo; + int f_hi; + do + { + dvector tempvec(1,9); + *(ad_comm::global_datafile) >> tempvec(1,9); // read vector + f = int(tempvec(1)); + parti = int(tempvec(2)); + comp_control_L.push_back(tempvec(1,9)); // save for write back in ss_new + comp_control_L_count++; + if (f == -9999.) + { + ender = 1; + } + else + { + if (f < 0) // fill all higher fleets to create default that is overwritten by later reads + { + f_lo = abs(f); + f_hi = Nfleet; + parti_lo = 0; + parti_hi = 2; + } + else // specific input + { + f_lo = f; + f_hi = f; + parti_lo = parti; + parti_hi = parti; + } + // else other codes could do other types of specialized fills + + for (f = f_lo; f <= f_hi; f++) + for (parti = parti_lo; parti <= parti_hi; parti++) + { + min_tail_L(parti, f) = tempvec(3); + min_comp_L(parti, f) = tempvec(4); + CombGender_L(parti, f) = int(tempvec(5)); + AccumBin_L(parti, f) = int(tempvec(6)); + Comp_Err_L(parti, f) = int(tempvec(7)); + Comp_Err_L2(parti, f) = int(tempvec(8)); + min_sample_size_L(parti, f) = tempvec(9); + } + } + } while (ender == 0); + } + echoinput << "fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (f = 1; f <= Nfleet; f++) + for (int parti = 0; parti <= 2; parti++) + { + echoinput << f << " " << parti << " " << min_tail_L(parti, f) << " " << min_comp_L(parti, f) << " " << CombGender_L(parti, f) << " " << AccumBin_L(parti, f) << " " << Comp_Err_L(parti, f) << " " << Comp_Err_L2(parti, f) << " " << min_sample_size_L(parti, f) << " #_fleet: " << f << " " << fleetname(f) << endl; + + if (min_sample_size_L(parti, f) < 0.001) + { + warnstream << " minimum sample size for length comps must be > 0; minimum sample size set to 0.001 "; + write_message(WARN, 1); + min_sample_size_L(parti, f) = 0.001; + } + + if (Comp_Err_L2(parti, f) > Comp_Err_ParmCount + 1) + { + warnstream << "; length D-M must refer to existing Comp_err definition, or increment by 1: " << Comp_Err_L2(parti, f); + write_message(FATAL, 1); + } + else if (Comp_Err_L2(parti, f) > Comp_Err_ParmCount) + { + Comp_Err_ParmCount++; + DM_parmlist(parti, f) = 1; // flag for creating new definition because Comp_Err_L2 can point to existing definition + } + // else OK because refers to existing definition + } + // the count for age data will be added after reading the age data setup + echoinput << "number of D-M definitions needed for length comp data: " << Comp_Err_ParmCount << endl + << endl; + + *(ad_comm::global_datafile) >> nlen_bin; + echoinput << nlen_bin << " nlen_bin_for_data " << endl; + } + else + { + nlen_bin = 2; + nlen_bin2 = 2 * gender; + } + // clang-format off + END_CALCS + vector len_bins_dat(1,nlen_bin); // length bin lower boundaries + LOCAL_CALCS + // clang-format on + if (use_length_data > 0) + { + *(ad_comm::global_datafile) >> len_bins_dat; + echoinput << " len_bins_dat " << endl + << len_bins_dat << endl; + + for (f = 1; f <= Nfleet; f++) + { + if (CombGender_L(0, f) > nlen_bin) + { + warnstream << "Combgender_L(part,f) cannot be greater than nlen_bin; resetting for fleet: " << f; + write_message(WARN, 0); + CombGender_L(0, f) = nlen_bin; + } + } + nlen_binP = nlen_bin + 1; + nlen_bin2 = gender * nlen_bin; + } + else + { + } + // clang-format off + END_CALCS + + vector len_bins_dat2(1,nlen_bin2); // doubled for males; for output only + vector len_bins_dat_m(1,nlen_bin); // midbin; for output only + vector len_bins_dat_m2(1,nlen_bin2); // doubled for males; for output only + + LOCAL_CALCS + // clang-format on + // SS_Label_Info_2.7.2 #Process population length bins, create mean length per bin, etc. + // note this is after reading the len_bin_for data in case population is mirrored to data + if (LenBin_option == 1) + { + nlength = nlen_bin; // set N pop bins same as data bins + } + else if (LenBin_option == 2) + { + nlength = (maxLread - minLread) / binwidth2 + 1; // number of population length bins + } + else if (LenBin_option == 3) + { + // nlength was read + } + nlength1 = nlength + 1; // +1 when needed + nlength2 = gender * nlength; // doubled for males + // clang-format off + END_CALCS + + vector len_bins(1,nlength); //vector with lower edge of population length bins + vector log_len_bins(1,nlength); //vector with log of lower edge of population length bins + vector len_bins2(1,nlength2); //vector with lower edge of population length bins + vector binwidth(1,nlength2); //ve + vector len_bins_m(1,nlength); //vector with mean size in bin + vector len_bins_m2(1,nlength2); //vector with all length bins; doubled for males + vector len_bins_sq(1,nlength2); //vector with all length bins; doubled for males + vector male_offset(1,nlength2); // used to calculate retained@length as population quantity + + LOCAL_CALCS + // clang-format on + male_offset.initialize(); // initialize + if (LenBin_option == 1) + { + len_bins = len_bins_dat; + } + else if (LenBin_option == 2) + { + len_bins(1) = minLread; + for (z = 2; z <= nlength; z++) + { + len_bins(z) = len_bins(z - 1) + binwidth2; + } + } + else + { + len_bins = len_bins_rd; + } + + if (len_bins(1) == 0.0) + { + len_bins(1) = 0.001; + } + for (z = 1; z <= nlength; z++) + { + len_bins2(z) = len_bins(z); + log_len_bins(z) = log(len_bins(z)); + if (z < nlength) + { + len_bins_m(z) = (len_bins(z + 1) + len_bins(z)) / 2.; + binwidth(z) = len_bins(z + 1) - len_bins(z); + } + else + { + len_bins_m(z) = len_bins(z) + binwidth(z - 1) / 2.; + binwidth(z) = binwidth(z - 1); + } + + len_bins_m2(z) = len_bins_m(z); // for use in calc mean size at binned age + len_bins_sq(z) = len_bins_m2(z) * len_bins_m2(z); // for use in calc std dev of size at binned age + if (gender == 2) + { + len_bins2(z + nlength) = len_bins(z); + male_offset(z + nlength) = 1.; + binwidth(z + nlength) = binwidth(z); + len_bins_m2(z + nlength) = len_bins_m2(z); + len_bins_sq(z + nlength) = len_bins_sq(z); + } + } + echoinput << endl + << "Processed Population length bin info " << endl + << len_bins << endl; + + maxL = len_bins_m(nlength); + minL = len_bins(1); + minL_m = len_bins_m(1); + if (LenBin_option != 2) + { + binwidth2 = binwidth(nlength / 2); // set a reasonable value in case LenBin_option !=2 + } + startbin = 1; + + if (use_length_data > 0) + { + while (len_bins(startbin) < len_bins_dat(1)) + { + startbin++; + } + + for (z = 1; z <= nlen_bin; z++) + { + len_bins_dat2(z) = len_bins_dat(z); + if (gender == 2) + { + len_bins_dat2(z + nlen_bin) = len_bins_dat(z); + } + if (z < nlen_bin) + { + len_bins_dat_m(z) = 0.5 * (len_bins_dat(z) + len_bins_dat(z + 1)); // this is not gender specific + } + else + { + len_bins_dat_m(z) = len_bins_dat_m(z - 1) + (len_bins_dat(z) - len_bins_dat(z - 1)); + } + len_bins_dat_m2(z) = len_bins_dat_m(z); + if (gender == 2) + { + len_bins_dat_m2(z + nlen_bin) = len_bins_dat_m(z); + } + } + if (len_bins_dat(nlen_bin) > len_bins(nlength)) + { + warnstream << "Data length bins extend beyond pop len bins " << len_bins_dat(nlen_bin) << " " << len_bins(nlength); + write_message(FATAL, 0); + } + if (len_bins_dat(nlen_bin) < len_bins(nlength)) + { + warnstream << "Max data length bin: " << len_bins_dat(nlen_bin) << " < max pop len bins: " << len_bins(nlength) << "; so will accumulate larger pop len bins"; + write_message(NOTE, 1); + } + echoinput << endl + << "Processed Data length bin info " << endl + << len_bins_dat << endl; + } + // clang-format off + END_CALCS + + matrix make_len_bin(1,nlen_bin2,1,nlength2); + + int ibin; + int ibinsave; + int fini; + number topbin; + number botbin; + + LOCAL_CALCS + // clang-format on + // SS_Label_Info_2.7.3 #Create conversion of pop length bins to data length bins + make_len_bin.initialize(); + ibin = 0; + topbin = 0.; + botbin = 0.; + if (use_length_data > 0) + { + for (z = 1; z <= nlength; z++) + { + if (ibin == nlen_bin) + { //checkup<<" got to last ibin, so put rest of popbins here"<= topbin) + { //checkup<<" incr ibin "; + ibin++; + } + + if (ibin > 1) + { + botbin = len_bins_dat(ibin); + } + if (ibin < nlen_bin) + { + topbin = len_bins_dat(ibin + 1); + } + else + { + topbin = 99999.; + } + + if (ibin == nlen_bin) // checkup<<" got to last ibin, so put rest of popbins here"<= botbin && len_bins(z + 1) <= topbin) //checkup<<" pop inside dat, put here"< 0) + { + ender = 0; + z = 0; + do + { + dvector tempvec(1, k); + *(ad_comm::global_datafile) >> tempvec(1, k); + if (sum(tempvec) == 0.0) + { + warnstream << "reading past end of file for length data; exit "; + write_message(FATAL, 0); + } + if (tempvec(1) == -9999.) + ender = 1; + z++; + if (z <= 2) + { + echoinput << "len_obs_#:" << z << " # " << tempvec(1, k) << endl; + } + lendata.push_back(tempvec(1, k)); + } while (ender == 0); + nobsl_rd = lendata.size() - 1; + echoinput << nobsl_rd << " N length comp observations " << endl; + if (nobsl_rd > 0) + echoinput << "len_obs_#:" << nobsl_rd << " # " << lendata[nobsl_rd - 1] << endl; + + data_type = 4; + if (nobsl_rd > 0) + for (i = 0; i <= nobsl_rd - 1; i++) + { + y = lendata[i](1); + if (y >= styr) + { + f = abs(lendata[i](3)); + if (lendata[i](6) < 0) + { + warnstream << "Error in length data: negative sample size no longer valid as indicator of skip data or superperiods "; + write_message(FATAL, 0); + } + if (lendata[i](2) < 0) + N_suprper_l(f)++; // count the number of starts and ends of super-periods if seas<0 + Nobs_l(f)++; + } + } + Nobs_l_tot = sum(Nobs_l); + for (f = 1; f <= Nfleet; f++) + { + s = N_suprper_l(f) / 2.; + if (s * 2 != N_suprper_l(f)) + { + warnstream << "Error: unequal number of length superperiod starts and stops "; + write_message(FATAL, 0); + } + else + { // to get the number of superperiods + N_suprper_l(f) = s; + } + } + + echoinput << "Lendata Nobs by fleet " << Nobs_l << endl; + echoinput << "Lendata superperiods by fleet " << N_suprper_l << endl; + } + else + { + nobsl_rd = 0; + Nobs_l = 0; + Nobs_l_tot = 0; + N_suprper_l = 0; + } + // clang-format off + END_CALCS + + imatrix Len_time_t(1,Nfleet,1,Nobs_l); + imatrix Len_time_ALK(1,Nfleet,1,Nobs_l); + 3darray obs_l(1,Nfleet,1,Nobs_l,1,nlen_bin2); + 4darray obs_l_all(1,4,0,nseas,1,Nfleet,1,nlen_bin); // for the sum of all length comp data + matrix offset_l(1,Nfleet,1,Nobs_l); // Compute OFFSET for multinomial (i.e, value for the multinonial function + matrix nsamp_l(1,Nfleet,1,Nobs_l); + matrix nsamp_l_read(1,Nfleet,1,Nobs_l); + imatrix gen_l(1,Nfleet,1,Nobs_l); + imatrix mkt_l(1,Nfleet,1,Nobs_l); + 3darray header_l_rd(1,Nfleet,1,Nobs_l,0,5); + 3darray header_l(1,Nfleet,1,Nobs_l,0,3); + 3darray tails_l(1,Nfleet,1,Nobs_l,1,4); // min-max bin for females; min-max bin for males + ivector tails_w(1,4); + +// arrays for Super-years + imatrix suprper_l1(1,Nfleet,1,N_suprper_l); + imatrix suprper_l2(1,Nfleet,1,N_suprper_l); + matrix suprper_l_sampwt(1,Nfleet,1,Nobs_l); // will contain calculated weights for obs within super periods + int floop; + int tloop; + + LOCAL_CALCS + // clang-format on + // SS_Label_Info_2.7.5 #Process length comps, compress tails, add constant, scale to 1.0 + N_suprper_l = 0; + Nobs_l = 0; + in_superperiod = 0; + suprper_l1.initialize(); + suprper_l2.initialize(); + obs_l_all.initialize(); + + if (Nobs_l_tot > 0) + { + echoinput << "process length comps " << endl; + for (floop = 1; floop <= Nfleet; floop++) // loop fleets + for (i = 0; i <= nobsl_rd - 1; i++) // loop all observations to find those for this fleet/time + { + y = lendata[i](1); + if (y > endyr + 50) + { + warnstream << "forecast length obs cannot be beyond endyr +50;"; + write_message(FATAL, 0); + } + if (y >= styr) + { + f = abs(lendata[i](3)); + if (f == floop) + { + timing_input(1, 3) = lendata[i](1, 3); + get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); + + Nobs_l(f)++; + j = Nobs_l(f); + f = abs(lendata[i](3)); + t = timing_i_result(2); + s = timing_i_result(3); + ALK_time = timing_i_result(5); + + Len_time_t(f, j) = t; // sequential time = year+season + Len_time_ALK(f, j) = ALK_time; + if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f + { // real_month,fraction of season, year.fraction + data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); + } + else if (timing_r_result(1) != data_time(ALK_time, f, 1)) + { + warnstream << "LENGTH: data_month already set for y,m,f: " << y << " " << timing_r_result(1) << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " so treat as replicate"; + write_message(WARN, 0); + } + + have_data(ALK_time, 0, 0, 0) = 1; + have_data(ALK_time, f, 0, 0) = 1; // so have data of some type + have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas + p = have_data(ALK_time, f, data_type, 0); + have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas + have_data_yr(y, f) = 1; // survey or comp data exist this year + have_data_yr(y, 0) = 1; + + if (s > nseas) + { + warnstream << " Critical error, season for length obs " << i << " is > nseas"; + write_message(FATAL, 0); + } + + if (lendata[i](6) < 0.0) + { + warnstream << "negative values not allowed for lengthcomp sample size, use -fleet to omit from -logL"; + write_message(FATAL, 0); + } + header_l(f, j, 1) = y; + if (lendata[i](2) < 0) + { + header_l(f, j, 2) = -timing_r_result(1); // month with sign to indicate super period + } + else + { + header_l(f, j, 2) = timing_r_result(1); // month + } + + header_l_rd(f, j)(1, 5) = lendata[i](1, 5); // values as in input file + header_l(f, j, 3) = lendata[i](3); +// header_l(f, j)(3, 5) = lendata[i](3, 5); + if (y > retro_yr) + header_l(f, j, 3) = -f; + if (header_l(f, j, 3) > 0) + Nobs_l_use(f)++; + // note that following storage is redundant with Show_Time(t,3) calculated later + header_l(f, j, 0) = float(y) + 0.01 * int(100. * (azero_seas(s) + seasdur_half(s))); // + gen_l(f, j) = lendata[i](4); // gender 0=combined, 1=female, 2=male, 3=both + mkt_l(f, j) = lendata[i](5); // partition: 0=all, 1=discard, 2=retained + nsamp_l_read(f, j) = lendata[i](6); // assigned sample size for observation + nsamp_l(f, j) = nsamp_l_read(f, j); + // SS_Label_Info_2.7.6 #Create super-periods for length compositions + if (lendata[i](2) < 0) // start/stop a super-period ALL observations must be continguous in the file + { + if (in_superperiod == 0) // start a super-period ALL observations must be continguous in the file + { + N_suprper_l(f)++; + suprper_l1(f, N_suprper_l(f)) = j; + in_superperiod = 1; + } + else if (in_superperiod == 1) // end a super-year + { + suprper_l2(f, N_suprper_l(f)) = j; + in_superperiod = 0; + } + } + + for (z = 1; z <= nlen_bin2; z++) // get the composition vector + { + obs_l(f, j, z) = lendata[i](6 + z); + } + + if (sum(obs_l(f, j)) <= 0.0) + { + warnstream << "zero fish in size comp (fleet, year) " << f << " " << y; + write_message(FATAL, 0); + } + if (nsamp_l_read(f, j) <= 0.0) + { + warnstream << "Input N is <=0.0 in length comp " << header_l_rd(f, j); + write_message(FATAL, 0); + } + tails_l(f, j, 1) = 1; + tails_l(f, j, 2) = nlen_bin; + tails_l(f, j, 3) = nlen_binP; + tails_l(f, j, 4) = nlen_bin2; + if (gen_l(f, j) == 3 && gender == 2 && CombGender_L(mkt_l(f, j), f) > 0) + { + for (z = 1; z <= CombGender_L(mkt_l(f, j), f); z++) + { + obs_l(f, j, z) += obs_l(f, j, z + nlen_bin); + obs_l(f, j, z + nlen_bin) = 0.0; + } + tails_l(f, j, 3) = nlen_binP + CombGender_L(mkt_l(f, j), f); + } + if (gen_l(f, j) == 2) // zero out females for male-only obs + obs_l(f, j)(1, nlen_bin) = 0.; + if (gen_l(f, j) <= 1 && gender == 2) // zero out males for female-only or combined gender obs + obs_l(f, j)(nlen_binP, nlen_bin2) = 0.; + obs_l(f, j) /= sum(obs_l(f, j)); // make sum to 1.00 + + if (gen_l(f, j) != 2) // do females, unless Male-only observation + { + k = 0; + temp = sum(obs_l(f, j)(1, nlen_bin)); // sum of females proportions + for (z = 1; z <= nlen_bin; z++) + if (obs_l(f, j, z) > 0.) // find Number of bins with data + { + k++; + } + if (temp > 0.0 && k > 1) // only compress tail if obs exist for this gender and there is more than 1 bin with data + { + k = 0; + for (z = 1; z <= nlen_bin - 1; z++) // compress Female lower tail until exceeds min_tail + { + if (obs_l(f, j, z) <= min_tail_L(mkt_l(f, j), f) && 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 = nlen_bin; z >= tails_l(f, j, 1); z--) // compress Female upper tail until exceeds min_tail + { + if ((obs_l(f, j, z) <= min_tail_L(mkt_l(f, j), f) && k == 0) || z > (nlen_bin - AccumBin_L(mkt_l(f, j), f))) + { + 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_L(mkt_l(f, j), f); // add min_comp to bins in range + } + + if (gen_l(f, j) >= 2 && gender == 2) // process males + { + k = 0; + temp = sum(obs_l(f, j)(nlen_binP, nlen_bin2)); + for (z = nlen_binP; z <= nlen_bin2; z++) + if (obs_l(f, j, z) > 0.) + { + k++; + } + if (temp > 0.0 && k > 1) // only compress tail if obs exist for this gender and there is more than 1 bin with data + { + k = 0; + k1 = tails_l(f, j, 3); + for (z = k1; z <= nlen_bin2 - 1; z++) + { + if (obs_l(f, j, z) <= min_tail_L(mkt_l(f, j), f) && 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 = nlen_bin2; z >= tails_l(f, j, 3); z--) // compress Male upper tail until exceeds min_tail + { + if ((obs_l(f, j, z) <= min_tail_L(mkt_l(f, j), f) && k == 0) || z > (nlen_bin2 - AccumBin_L(mkt_l(f, j), f))) + { + 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_L(mkt_l(f, j), f); // add min_comp to bins in range + } // end doing males + obs_l(f, j) /= sum(obs_l(f, j)); // make sum to 1.00 again after adding min_comp + if (gender == 1 || gen_l(f, j) != 2) + { // females or combined + obs_l_all(1, s, f)(1, nlen_bin) += obs_l(f, j)(1, nlen_bin); + } + if (gender == 2) + { + if (gen_l(f, j) == 1 || gen_l(f, j) == 3) // put females into female only + { + obs_l_all(3, s, f)(1, nlen_bin) += obs_l(f, j)(1, nlen_bin); + } + if (gen_l(f, j) >= 2) // put males into combined and into male only + { + for (z = 1; z <= nlen_bin; z++) + { + obs_l_all(1, s, f, z) += obs_l(f, j, nlen_bin + z); + obs_l_all(4, s, f, z) += obs_l(f, j, nlen_bin + z); + } + } + } + } + } + } + } + + echoinput << "Overall_Compositions" << endl + << "seas fleet len_bins " << len_bins_dat << endl; + for (f = 1; f <= Nfleet; f++) + { + for (s = 1; s <= nseas; s++) + { + for (j = 1; j <= 4; j++) + { + if (j != 2) + { + temp = sum(obs_l_all(j, s, f)); + if (temp > 0.0) + { + obs_l_all(j, s, f) /= temp; + } + else + { + obs_l_all(j, s, f) = float(1. / nlen_bin); + } + } + } + obs_l_all(2, s, f, 1) = obs_l_all(1, s, f, 1); // first bin + for (z = 2; z <= nlen_bin; z++) + { + obs_l_all(2, s, f, z) = obs_l_all(2, s, f, z - 1) + obs_l_all(1, s, f, z); + } + if (Nobs_l(f) > 0) + { + echoinput << s << " " << f << " freq" << obs_l_all(1, s, f) << endl; + echoinput << s << " " << f << " cuml" << obs_l_all(2, s, f) << endl; + echoinput << s << " " << f << " female" << obs_l_all(3, s, f) << endl; + echoinput << s << " " << f << " male" << obs_l_all(4, s, f) << endl; + } + } + } + echoinput << "Successful processing of length data" << endl + << endl; + // clang-format off + END_CALCS + + +!!// SS_Label_Info_2.8 #Start age composition data section +!!// SS_Label_Info_2.8.1 #Read Age bin and ageing error vectors + int n_abins; // age classes for data + int n_abins1; + int n_abins2; + int Use_AgeKeyZero; // set to ageerr_type for the age data that use parameter approach + int AgeKeyParm; // holds starting parm number for age error parameters + int store_agekey_add; // when parameter based key uses blocks, this stores dimension + int save_agekey_count; // counter for storing those keys + int AgeKey_StartAge; + int AgeKey_Linear1; + int AgeKey_Linear2; + int N_ageerr ; // number of ageing error matrices to be calculated + vector min_tail_A(1,Nfleet); //min_proportion_for_compressing_tails_of_observed_composition + vector min_comp_A(1,Nfleet); // small value added to each composition bins + ivector CombGender_A(1,Nfleet); // combine genders through this age bin (0 or -1 for no combine) + ivector AccumBin_A(1,Nfleet); // collapse bins down to this bin number (0 for no collapse; positive value for N to accumulate) + ivector Comp_Err_A(1,Nfleet); // composition error type + ivector Comp_Err_A2(1,Nfleet); // composition error definition used + vector min_sample_size_A(1,Nfleet); // minimum sample size + int Nobs_a_tot; + int nobsa_rd; + int Lbin_method; //#_Lbin_method: 1=poplenbins; 2=datalenbins; 3=lengths + int CombGender_a; // combine genders through this age bin + ivector Nobs_a(1,Nfleet); + ivector Nobs_a_use(1,Nfleet); + ivector N_suprper_a(1,Nfleet); // N super_yrs per obs + + LOCAL_CALCS + // clang-format o + Use_AgeKeyZero = 0; + N_ageerr = 0; + n_abins1 = 0; + n_abins2 = 0; + nobsa_rd = 0; + store_agekey_add = 0; + Nobs_a.initialize(); + Nobs_a_use.initialize(); + N_suprper_a.initialize(); + Comp_Err_A.initialize(); + Comp_Err_A2.initialize(); + echoinput << "Enter the number of agebins, or 0 if no age data" << endl; + *(ad_comm::global_datafile) >> n_abins; + echoinput << n_abins << " N age bins " << endl; + n_abins1 = n_abins + 1; + n_abins2 = gender * n_abins; + // clang-format off + END_CALCS + + vector age_bins1(1,n_abins); // age classes for data + vector age_bins(1,n_abins2); // age classes for data female then male end-to-end + vector age_bins_mean(1,n_abins2); // holds mean age for each data age bin + 3darray age_err_rd(1,1,1,1,0,0); + + LOCAL_CALCS + // clang-format on + age_bins1.initialize(); + age_bins.initialize(); + age_bins_mean.initialize(); + + if (n_abins > 0) + { + *(ad_comm::global_datafile) >> age_bins1; + echoinput << age_bins1 << " agebins " << endl; + + *(ad_comm::global_datafile) >> N_ageerr; // number of ageing error matrices to be calculated + echoinput << N_ageerr << " N age error defs " << endl; + + age_err_rd.deallocate(); + age_err_rd.allocate(1, N_ageerr, 1, 2, 0, nages); + age_err_rd.initialize(); + for (j = 1; j <= N_ageerr; j++) + { + *(ad_comm::global_datafile) >> age_err_rd(j, 1)(0, nages); + *(ad_comm::global_datafile) >> age_err_rd(j, 2)(0, nages); + } + Nobs_a = 0; + N_suprper_a = 0; + if (n_abins > 0) + { + echoinput << "ageerror_definitions_as_read" << endl + << age_err_rd << endl; + Use_AgeKeyZero = 0; + if (N_ageerr > 0) + { + for (i = 1; i <= N_ageerr; i++) + { + if (age_err_rd(i, 2, 0) < 0.) + { // set flag for setup of age error parameters + if (Use_AgeKeyZero > 0) + { + warnstream << "Error: There are > 1 negative sd values for age 0 in age error definitions." << endl; + warnstream << " but SS3 can only create 1 age error definition from parameters, "; + write_message(FATAL, 1); + } + Use_AgeKeyZero = i; + } + } + } + + echoinput << "#_now read for each fleet info for processing the age comps:" << endl; + echoinput << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; + echoinput << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; + echoinput << "#_males and females treated as combined gender below this bin number " << endl; + echoinput << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; + echoinput << "#_Comp_Error: 0=multinomial, 1=dirichlet using theta * n, 2=dirichlet using beta, 3=MV_Tweedie with phi and power"<> min_tail_A(f); + *(ad_comm::global_datafile) >> min_comp_A(f); + if (min_comp_A(f) <= 0) { + warnstream << "addtocomp input for age comps fleet " << f << + " is " << min_comp_A(f) << " but should be > 0 to avoid log(0) in likelihood"; + write_message(WARN, 0); + } + *(ad_comm::global_datafile) >> CombGender_A(f); + *(ad_comm::global_datafile) >> AccumBin_A(f); + *(ad_comm::global_datafile) >> Comp_Err_A(f); + *(ad_comm::global_datafile) >> Comp_Err_A2(f); + *(ad_comm::global_datafile) >> min_sample_size_A(f); + echoinput << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_fleet: " << f << " " << fleetname(f) << endl; + + if (min_sample_size_A(f) < 0.001) + { + warnstream << "minimum sample size for age comps must be > 0; minimum sample size set to 0.001 "; + write_message(WARN, 0); + min_sample_size_A(f) = 0.001; + } + if (Comp_Err_A2(f) > Comp_Err_ParmCount + 1) + { + warnstream << "Age D-M must refer to existing comp_err definition, or increment by 1: " << Comp_Err_A2(f); + write_message(FATAL, 0); + } + else if (Comp_Err_A2(f) > Comp_Err_ParmCount) + { + Comp_Err_ParmCount++; + int parti = 0; + DM_parmlist(parti, f + Nfleet) = 1; // flag for creating new definition because Comp_Err_L2 can point to existing parameter + } + // else OK because refers to existing definition + } + echoinput << "number of D-M definitions needed for both length and age comp data: " << Comp_Err_ParmCount << endl; + + *(ad_comm::global_datafile) >> Lbin_method; + echoinput << Lbin_method << " Lbin method for defined size ranges " << endl; + + if (nobsa_rd > 0 && N_ageerr == 0) + { + warnstream << "must define ageerror vectors because age data exist"; + write_message(FATAL, 0); + } + for (f = 1; f <= Nfleet; f++) + { + if (CombGender_A(f) > n_abins2) + { + warnstream << "Combgender_A(f) cannot be greater than n_abins for fleet:_" << f << "; resetting"; + write_message(WARN, 0); + CombGender_A(f) = n_abins2; + } + } + for (b = 1; b <= n_abins; b++) + { + age_bins(b) = age_bins1(b); + + if (b < n_abins) + { + age_bins_mean(b) = (age_bins1(b) + age_bins1(b + 1)) * 0.5; + } + else if (b > 1) + { + age_bins_mean(b) = age_bins1(b) + 0.5 * (age_bins1(b) - age_bins1(b - 1)); + } + else + { + age_bins_mean(b) = age_bins1(b) + 0.5; + } + + if (gender == 2) + { + age_bins(b + n_abins) = age_bins1(b); + age_bins_mean(b + n_abins) = age_bins_mean(b); + } + } + // SS_Label_Info_2.8.2 #Read Age data + k = 9 + n_abins2; + ender = 0; + z = 0; + do + { + dvector tempvec(1, k); + *(ad_comm::global_datafile) >> tempvec(1, k); + if (sum(tempvec) == 0.0) + { + warnstream << "reading past end of file for age data; exit "; + write_message(FATAL, 0); + } + if (tempvec(1) == -9999.) + ender = 1; + z++; + if (z <= 2) + echoinput << "age_obs_#:" << z << " # " << tempvec(1, k) << endl; + Age_Data.push_back(tempvec(1, k)); + } while (ender == 0); + nobsa_rd = Age_Data.size() - 1; + echoinput << nobsa_rd << " N age comp observations " << endl; + if (nobsa_rd > 0) + echoinput << "age_obs_#:" << nobsa_rd << " # " << Age_Data[nobsa_rd - 1] << endl; + + data_type = 5; // for age data + + for (i = 0; i <= nobsa_rd - 1; i++) + { + y = Age_Data[i](1); + if (y >= styr) + { + f = abs(Age_Data[i](3)); + if (Age_Data[i](9) < 0) + { + warnstream << "Error: negative sample size in age data no longer valid as indicator of skip data or superperiods "; + write_message(FATAL, 0); + } + if (Age_Data[i](6) == 0 || Age_Data[i](6) > N_ageerr) + { + warnstream << "Error: undefined age_error type: " << Age_Data[i](6) << " in obs: " << i; + write_message(FATAL, 0); + } + if (Age_Data[i](2) < 0) + N_suprper_a(f)++; // count the number of starts and ends of super-periods if seas<0 or sampsize<0 + + Nobs_a(f)++; + } + } + for (f = 1; f <= Nfleet; f++) + { + s = N_suprper_a(f) / 2.; + if (s * 2 != N_suprper_a(f)) + { + warnstream << "Error: unequal number of age superperiod starts and stops "; + write_message(FATAL, 0); + } + else + { + N_suprper_a(f) /= 2; + } + } + echoinput << endl + << "Age_Data Nobs by fleet " << Nobs_a << endl; + echoinput << "Age_Data superperiods by fleet " << N_suprper_a << endl; + Nobs_a_tot = sum(Nobs_a); + } + } + else + { + echoinput << "N bins set to zero, so no more reading of age data inputs" << endl; + } + // clang-format off + END_CALCS + + matrix offset_a(1,Nfleet,1,Nobs_a); // Compute OFFSET for multinomial (i.e, value for the multinonial function + imatrix Age_time_t(1,Nfleet,1,Nobs_a); + imatrix Age_time_ALK(1,Nfleet,1,Nobs_a); + 3darray obs_a(1,Nfleet,1,Nobs_a,1,gender*n_abins); + 4darray obs_a_all(1,4,0,nseas,1,Nfleet,1,n_abins); // for the sum of all age comp data + matrix nsamp_a(1,Nfleet,1,Nobs_a); + matrix nsamp_a_read(1,Nfleet,1,Nobs_a); + imatrix ageerr_type_a(1,Nfleet,1,Nobs_a); + imatrix gen_a(1,Nfleet,1,Nobs_a); + imatrix mkt_a(1,Nfleet,1,Nobs_a); + 3darray Lbin_filter(1,Nfleet,1,Nobs_a,1,nlength2); + imatrix use_Lbin_filter(1,Nfleet,1,Nobs_a); + imatrix Lbin_lo(1,Nfleet,1,Nobs_a); + imatrix Lbin_hi(1,Nfleet,1,Nobs_a); + 3darray tails_a(1,Nfleet,1,Nobs_a,1,4); // min-max bin for females; min-max bin for males + 3darray header_a(1,Nfleet,1,Nobs_a,1,9); + 3darray header_a_rd(1,Nfleet,1,Nobs_a,2,3); + +// arrays for Super-years + matrix suprper_a_sampwt(1,Nfleet,1,Nobs_a); // will contain calculated weights for obs within super periods + imatrix suprper_a1(1,Nfleet,1,N_suprper_a); + imatrix suprper_a2(1,Nfleet,1,N_suprper_a); + + // SS_Label_Info_2.8.3 #Pre-process age comps, compress tails, define length bin filters + LOCAL_CALCS + // clang-format on + Lbin_filter = 1.; + use_Lbin_filter.initialize(); // have to use initialize; imatrix cannot be set to a constant + suprper_a1.initialize(); + suprper_a2.initialize(); + obs_a_all.initialize(); + N_suprper_a = 0; + Nobs_a = 0; + in_superperiod = 0; + + if (Nobs_a_tot > 0) + { + echoinput << "process age comps " << endl; + for (floop = 1; floop <= Nfleet; floop++) + for (i = 0; i <= nobsa_rd - 1; i++) + { + y = Age_Data[i](1); + if (y > endyr + 50) + { + warnstream << "forecast age obs cannot be beyond endyr +50; SS3 will exit"; + write_message(FATAL, 0); + } + if (y >= styr) + { + f = abs(Age_Data[i](3)); + if (f == floop) + { + timing_input(1, 3) = Age_Data[i](1, 3); + get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); + Nobs_a(f)++; // redoing this pointer just to create index j used below + j = Nobs_a(f); + + f = abs(Age_Data[i](3)); + t = timing_i_result(2); + s = timing_i_result(3); + ALK_time = timing_i_result(5); + Age_time_t(f, j) = t; // sequential time = year+season + Age_time_ALK(f, j) = ALK_time; + if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f + { // real_month,fraction of season, year.fraction + data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); + } + else if (timing_r_result(1) != data_time(ALK_time, f, 1)) + { + warnstream << "AGE: data_month already set for y,m,f: " << y << " " << timing_r_result(1) << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " so treat as replicate"; + write_message(WARN, 0); + } + have_data(ALK_time, 0, 0, 0) = 1; + have_data(ALK_time, f, 0, 0) = 1; // so have data of some type + have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas + p = have_data(ALK_time, f, data_type, 0); + if (p > 150) + { + warnstream << "fatal: max agecomp obs per fleet*time is 150; you requested " << p << " for fleet x year " << f << " " << y; + write_message(FATAL, 0); + } + have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas + have_data_yr(y, f) = 1; + have_data_yr(y, 0) = 1; // survey or comp data exist this year + + if (s > nseas) + { + warnstream << "Critical error, season for age obs " << i << " is > nseas"; + write_message(FATAL, 0); + } + + if (Age_Data[i](6) < 0.0) + { + warnstream << "negative values not allowed for age comp sample size, use -fleet to omit from -logL"; + write_message(WARN, 0); + } + header_a(f, j)(1, 9) = Age_Data[i](1, 9); + header_a_rd(f, j)(2, 3) = Age_Data[i](2, 3); + if (Age_Data[i](2) < 0) + { + header_a(f, j, 2) = -timing_r_result(1); // month with sign for super periods + } + else + { + header_a(f, j, 2) = timing_r_result(1); // month + } + if (y > retro_yr) + header_a(f, j, 3) = -f; + if (header_a(f, j, 3) > 0) + Nobs_a_use(f)++; + gen_a(f, j) = Age_Data[i](4); // gender 0=combined, 1=female, 2=male, 3=both + mkt_a(f, j) = Age_Data[i](5); // partition: 0=all, 1=discard, 2=retained + nsamp_a_read(f, j) = Age_Data[i](9); // assigned sample size for observation + nsamp_a(f, j) = nsamp_a_read(f, j); + + if (Age_Data[i](6) > N_ageerr) + { + warnstream << " ageerror type must be <= " << N_ageerr; + write_message(FATAL, 0); + } + ageerr_type_a(f, j) = Age_Data[i](6); + + // SS_Label_Info_2.8.4 #Create super-periods for age compositions + if (in_superperiod == 0 && Age_Data[i](2) < 0) // start a super-year ALL observations must be continguous in the file + { + N_suprper_a(f)++; + suprper_a1(f, N_suprper_a(f)) = j; + in_superperiod = 1; + } + else if (in_superperiod == 1 && Age_Data[i](2) < 0) // end a super-year + { + suprper_a2(f, N_suprper_a(f)) = j; + in_superperiod = 0; + } + + for (b = 1; b <= gender * n_abins; b++) // get the composition vector + { + obs_a(f, j, b) = Age_Data[i](9 + b); + } + if (sum(obs_a(f, j)) <= 0.0) + { + warnstream << " zero fish in age comp " << header_a(f, j); + write_message(FATAL, 0); + } + if (nsamp_a_read(f, j) <= 0.0) + { + warnstream << "Input N is <=0.0 in age comp " << header_a_rd(f, j); + write_message(FATAL, 0); + } + + Lbin_lo(f, j) = Age_Data[i](7); + Lbin_hi(f, j) = Age_Data[i](8); + switch (Lbin_method) // here all 3 methods are converted to poplenbins for use internally + { + case 1: // values are population length bin numbers + { + if (Lbin_lo(f, j) <= 0) + Lbin_lo(f, j) = 1; + if (Lbin_hi(f, j) <= 0 || Lbin_hi(f, j) > nlength) + Lbin_hi(f, j) = nlength; + break; + } + case 2: // values are data length bin numbers + { + if (Lbin_lo(f, j) <= 0) + Lbin_lo(f, j) = 1; + if (Lbin_hi(f, j) <= 0 || Lbin_hi(f, j) > nlen_bin) + Lbin_hi(f, j) = nlen_bin; + s = 0; + for (k = 1; k <= nlength; k++) + { // find poplen bin that matches data len bin + if (len_bins(k) == len_bins_dat(Lbin_lo(f, j))) + s = k; + } + if (s == 0) + { + warnstream << "L_bin_lo no match to poplenbins in age comp " << header_a(f, j); + write_message(FATAL, 0); + } + Lbin_lo(f, j) = s; + + s = 0; + for (k = 1; k <= nlength; k++) + { + if (len_bins(k) == len_bins_dat(Lbin_hi(f, j))) + s = k; // find poplen bin that matches data len bin + } + if (s == 0) + { + warnstream << "L_bin_hi no match to poplenbins in age comp " << header_a(f, j); + write_message(FATAL, 0); + } + Lbin_hi(f, j) = s; + break; + } + case 3: // values are lengths + { + if (Lbin_lo(f, j) <= 0) + Lbin_lo(f, j) = len_bins(1); + if (Lbin_hi(f, j) <= 0 || Lbin_hi(f, j) > len_bins(nlength)) + Lbin_hi(f, j) = len_bins(nlength); + s = 0; + for (k = 1; k <= nlength; k++) + { + if (len_bins(k) == Lbin_lo(f, j)) + s = k; // find poplen bin that matches input length for lbin_lo + } + if (s == 0) + { + warnstream << "L_bin_lo no match to poplenbins in age comp " << header_a(f, j); + write_message(FATAL, 0); + } + Lbin_lo(f, j) = s; + + s = 0; + for (k = 1; k <= nlength; k++) + { + if (len_bins(k) == Lbin_hi(f, j)) + s = k; + } + if (s == 0) + { + warnstream << "L_bin_hi no match to poplenbins in age comp " << header_a(f, j); + write_message(FATAL, 0); + } + Lbin_hi(f, j) = s; + break; + } + } + + // lbin_lo and lbin_hi are now in terms of poplenbins; their original values are retained in header_a + if (Lbin_lo(f, j) > nlength || Lbin_lo(f, j) > Lbin_hi(f, j)) + { + warnstream << "L_bin_lo is too high in age comp. Are you using lengths or bin numbers? " << header_a(f, j); + write_message(FATAL, 0); + } + if (Lbin_lo(f, j) == 1 && Lbin_hi(f, j) == nlength) + { + use_Lbin_filter(f, j) = 0; + } + else + { + use_Lbin_filter(f, j) = 1; + } + + if (use_Lbin_filter(f, j) == 1) + { // use Lbin_filter for this obs + 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.; + } + } + + if (gen_a(f, j) == 2) + obs_a(f, j)(1, n_abins) = 0.; // zero out females for male-only obs + if (gen_a(f, j) <= 1 && gender == 2) + obs_a(f, j)(n_abins1, gender * n_abins) = 0.; // zero out males for female-only or combined gender obs + 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 (gender == 2) + { + if (gen_a(f, j) == 3 && CombGender_A(f) > 0) + { + for (z = 1; z <= CombGender_A(f); z++) + { + obs_a(f, j, z) += obs_a(f, j, z + n_abins); + obs_a(f, j, z + n_abins) = 0.0; + } + tails_a(f, j, 3) = n_abins + 1 + CombGender_A(f); + } + } + + obs_a(f, j) /= sum(obs_a(f, j)); + + if (gen_a(f, j) != 2) // do females, unless Male-only observation + { + 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) // only compress tail if obs exist for this gender and there is more than 1 bin with data + { + k = 0; + for (z = 1; z <= n_abins - 1; z++) // compress Female lower tail until exceeds min_tail + { + if (obs_a(f, j, z) <= min_tail_A(f) && 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--) // compress Female upper tail until exceeds min_tail + { + if ((obs_a(f, j, z) <= min_tail_A(f) && k == 0) || (z > (n_abins - AccumBin_A(f)))) + { + 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_A(f); // add min_comp to bins in range + } // done with females + + if (gen_a(f, j) >= 2 && gender == 2) // compress Male tails until exceeds min_tail + { + 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) // only compress tail if obs exist for this gender and there is more than 1 bin with data + { + k = 0; + + for (z = n_abins1; z <= n_abins2 - 1; z++) + { + if (obs_a(f, j, z) <= min_tail_A(f) && 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--) // compress Male upper tail until exceeds min_tail + { + if ((obs_a(f, j, z) <= min_tail_A(f) && k == 0) || (z > (n_abins2 - AccumBin_A(f)))) + { + 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_A(f); // add min_comp to bins in range + } + if (sum(obs_a(f, j)) > 0.) + obs_a(f, j) /= sum(obs_a(f, j)); // make sum to 1.00 again after adding min_comp + s = timing_i_result(3); + if (gender == 1 || gen_a(f, j) != 2) + obs_a_all(1, s, f)(1, n_abins) += obs_a(f, j)(1, n_abins); // females or combined + if (gender == 2) + { + if (gen_a(f, j) == 1 || gen_a(f, j) == 3) // put females into female only + { + obs_a_all(3, s, f)(1, n_abins) += obs_a(f, j)(1, n_abins); + } + if (gen_a(f, j) >= 2) // put males into combined and into male only + { + for (a = 1; a <= n_abins; a++) + { + obs_a_all(1, s, f, a) += obs_a(f, j, n_abins + a); // males into combined + obs_a_all(4, s, f, a) += obs_a(f, j, n_abins + a); // males + } + } + } + } + } + } + + echoinput << "area seas fleet age_bins " << age_bins << endl; + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) + { + if (Nobs_a(f) > 0) + { + obs_a_all(1, s, f) /= sum(obs_a_all(1, s, f)); + } + else + { + obs_a_all(1, s, f) = 0.0; + } + obs_a_all(2, s, f, 1) = obs_a_all(1, s, f, 1); // first bin + for (a = 2; a <= n_abins; a++) + { + obs_a_all(2, s, f, a) = obs_a_all(2, s, f, a - 1) + obs_a_all(1, s, f, a); + } + echoinput << fleet_area(f) << " " << s << " " << f << " freq " << obs_a_all(1, s, f) << endl; + echoinput << fleet_area(f) << " " << s << " " << f << " cuml " << obs_a_all(2, s, f) << endl; + } + echoinput << endl + << "Successful processing of age data " << endl; + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_2.9 #Read mean Size_at_Age data + init_int use_meansizedata; + int nobs_ms_tot; + int nobs_ms_rd; +!!echoinput< 0) + { + k = 7 + 2 * n_abins2; + ender = 0; + z = 0; + do + { + dvector tempvec(1, k); + *(ad_comm::global_datafile) >> tempvec(1, k); + if (sum(tempvec) == 0.0) + { + warnstream << "reading past end of file for size-at-age data; exit "; + write_message(FATAL, 0); + } + if (tempvec(1) == -9999.) + ender = 1; + z++; + if (z <= 2) + echoinput << "meansize@age_obs_#:" << z << " # " << tempvec(1, k) << endl; + sizeAge_Data.push_back(tempvec(1, k)); + } while (ender == 0); + nobs_ms_rd = sizeAge_Data.size() - 1; + echoinput << nobs_ms_rd << " N size@age obs read " << endl; + if (nobs_ms_rd > 0) + echoinput << "meansize@age_obs_#:" << nobs_ms_rd << " # " << sizeAge_Data[nobs_ms_rd - 1] << endl; + + data_type = 7; // for size (length or weight)-at-age data + Nobs_ms = 0; + N_suprper_ms = 0; + if (nobs_ms_rd > 0) + for (i = 0; i <= nobs_ms_rd - 1; i++) + { + y = sizeAge_Data[i](1); + if (y >= styr) + { + f = abs(sizeAge_Data[i](3)); + if (sizeAge_Data[i](7) < 0) + { + warnstream << "error. cannot use negative sampsize for meansize data "; + write_message(FATAL, 0); + } + if (sizeAge_Data[i](2) < 0) + { + N_suprper_ms(f)++; // count the number of starts and ends of super-periods if seas<0 or sampsize<0 + } + Nobs_ms(f)++; + } + } + for (f = 1; f <= Nfleet; f++) + { + s = N_suprper_ms(f) / 2.; + if (s * 2 != N_suprper_ms(f)) + { + warnstream << "Error: unequal number of meansize superperiod starts and stops "; + write_message(FATAL, 0); + } + else + { + N_suprper_ms(f) /= 2; + } + } + echoinput << endl + << "meansize data Nobs by fleet " << Nobs_ms << endl; + echoinput << "meansize superperiods by fleet " << N_suprper_ms << endl; + + nobs_ms_tot = sum(Nobs_ms); + } + else + { + Nobs_ms = 0; + N_suprper_ms = 0; + nobs_ms_tot = 0; + } + // clang-format off + END_CALCS + + imatrix msz_time_t(1,Nfleet,1,Nobs_ms); + imatrix msz_time_ALK(1,Nfleet,1,Nobs_ms); + 3darray obs_ms(1,Nfleet,1,Nobs_ms,1,n_abins2); + 3darray obs_ms_n(1,Nfleet,1,Nobs_ms,1,n_abins2); + 3darray obs_ms_n_read(1,Nfleet,1,Nobs_ms,1,n_abins2); + imatrix ageerr_type_ms(1,Nfleet,1,Nobs_ms); + imatrix gen_ms(1,Nfleet,1,Nobs_ms); + imatrix mkt_ms(1,Nfleet,1,Nobs_ms); + 3darray header_ms(1,Nfleet,1,Nobs_ms,0,7); + 3darray header_ms_rd(1,Nfleet,1,Nobs_ms,2,3); + matrix suprper_ms_sampwt(1,Nfleet,1,Nobs_ms); + imatrix suprper_ms1(1,Nfleet,1,N_suprper_ms); + imatrix suprper_ms2(1,Nfleet,1,N_suprper_ms); + +// note: sizeAge_Data[i](6) has age error method used; sign is positive to indicate mean length-at-age; negative for mean weight-at-age + LOCAL_CALCS + // clang-format on + Nobs_ms = 0; + suprper_ms1.initialize(); + suprper_ms2.initialize(); + N_suprper_ms.initialize(); + if (nobs_ms_tot > 0) + { + in_superperiod = 0; + for (floop = 1; floop <= Nfleet; floop++) + for (i = 0; i <= nobs_ms_rd - 1; i++) + { + y = sizeAge_Data[i](1); + if (y > endyr + 50) + { + warnstream << "forecast meansize obs cannot be beyond endyr +50"; + write_message(FATAL, 0); + } + if (y >= styr) + { + f = abs(sizeAge_Data[i](3)); + if (f == floop) + { + timing_input(1, 3) = sizeAge_Data[i](1, 3); + get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); + Nobs_ms(f)++; + j = Nobs_ms(f); // observation counter + t = timing_i_result(2); + s = timing_i_result(3); + real_month = timing_r_result(1); + ALK_time = timing_i_result(5); + msz_time_t(f, j) = t; + msz_time_ALK(f, j) = ALK_time; + if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f + { // real_month,fraction of season, year.fraction + data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); + } + else if (timing_r_result(1) != data_time(ALK_time, f, 1)) + { + warnstream << "LEN@AGE: data_month already set for y,m,f: " << y << " " << timing_r_result(1) << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " so treat as replicate"; + write_message(WARN, 0); + } + have_data(ALK_time, 0, 0, 0) = 1; + have_data(ALK_time, f, 0, 0) = 1; // so have data of some type + have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas + p = have_data(ALK_time, f, data_type, 0); + have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas + + if (s > nseas) + { + warnstream << " Critical error, season for size-age obs " << i << " is > nseas"; + write_message(FATAL, 0); + } + + header_ms(f, j)(1, 7) = sizeAge_Data[i](1, 7); + header_ms_rd(f, j)(2, 3) = sizeAge_Data[i](2, 3); + + // note that following storage is redundant with Show_Time(t,3) calculated later + if (y > retro_yr) + header_ms(f, j, 3) = -f; + if (sizeAge_Data[i](3) < 0) + header_ms(f, j, 3) = -f; + if (header_ms(f, j, 3) > 0) + Nobs_ms_use(f)++; + header_ms(f, j, 0) = float(y) + 0.01 * int(100. * (azero_seas(s) + seasdur_half(s))); // + + gen_ms(f, j) = sizeAge_Data[i](4); + mkt_ms(f, j) = sizeAge_Data[i](5); + if (abs(sizeAge_Data[i](6)) > N_ageerr) + { + warnstream << "in meansize-at-age, ageerror type must be <= " << N_ageerr; + write_message(FATAL, 0); + } + ageerr_type_ms(f, j) = sizeAge_Data[i](6); + + // SS_Label_Info_2.9.1 #Create super-periods for meansize data + if (sizeAge_Data[i](2) < 0) // start/stop a super-period ALL observations must be continguous in the file + { + header_ms(f, j, 2) = -real_month; //month + if (in_superperiod == 0) // start superperiod + { + N_suprper_ms(f)++; + suprper_ms1(f, N_suprper_ms(f)) = j; + in_superperiod = 1; + } + else if (in_superperiod == 1) // end a super-period + { + suprper_ms2(f, N_suprper_ms(f)) = j; + in_superperiod = 0; + } + } + else + { + header_ms(f, j, 2) = real_month; //month + } + + for (b = 1; b <= n_abins2; b++) + { + obs_ms(f, j, b) = sizeAge_Data[i](7 + b); + } + for (b = 1; b <= n_abins2; b++) + { + obs_ms_n(f, j, b) = sizeAge_Data[i](7 + b + n_abins2); + obs_ms_n_read(f, j, b) = sizeAge_Data[i](7 + b + n_abins2); + } + } + } + } + echoinput << "Successful read of size-at-age data; N kept = " << Nobs_ms << endl; + } + // clang-format off + END_CALCS + + +// SS_Label_Info_2.10 #Read environmental data that will be used to modify processes and expected values + init_int N_envvar; + int N_envdata; + LOCAL_CALCS + // clang-format on + echoinput << N_envvar << " N_envvar " << endl; + + ender = 0; + N_envdata = 0; + if (N_envvar > 0) + { + do + { + dvector tempvec(1, 3); + *(ad_comm::global_datafile) >> tempvec(1, 3); + if (tempvec(1) == -9999.) + ender = 1; + if (sum(tempvec) == 0.0) + { + warnstream << "reading past end of file for env data; exit "; + write_message(FATAL, 0); + } + env_temp.push_back(tempvec(1, 3)); + } while (ender == 0); + N_envdata = env_temp.size() - 1; + echoinput << " successful read of " << N_envdata << " environmental observations " << endl; + } + // clang-format off + END_CALCS + +// SS_Label_Info_2.11 #Start generalized size composition section +// SS_Label_Info_2.11.1 #Read generalized size frequency data (aka wt frequency) + int SzFreqMethod; + int iobs; + int SzFreq_Nmeth_rd; // number of sizefreq methods to be read + int SzFreq_Nmeth; + LOCAL_CALCS + *(ad_comm::global_datafile) >> SzFreq_Nmeth_rd; + if (SzFreq_Nmeth_rd > 0) + { + SzFreq_Nmeth = SzFreq_Nmeth_rd; + } + else if (SzFreq_Nmeth_rd < 0) + { + *(ad_comm::global_datafile) >> SzFreq_Nmeth; + } + echoinput << SzFreq_Nmeth << " N sizefreq methods to read " << endl; + END_CALCS + + imatrix SzFreq_HaveObs2(1,SzFreq_Nmeth,1,ALK_time_max); + init_ivector SzFreq_Nbins(1,SzFreq_Nmeth); // number of bins for each method +!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_Nbins << " Sizefreq N bins per method" << endl; + init_ivector SzFreq_units(1,SzFreq_Nmeth); // units for proportions (1 = biomass; 2=numbers ) for each method +!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_units << " Sizetfreq units(1=bio/2=num) per method" << endl; + init_ivector SzFreq_scale(1,SzFreq_Nmeth); // bin scale (1=kg; 2=lbs; 3=cm; 4=in) for each method +!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_scale << " Sizefreq scale(1=kg/2=lbs/3=cm/4=inches) per method" << endl; + init_vector SzFreq_mincomp(1,SzFreq_Nmeth); // mincomp to add for each method +!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_mincomp << " Sizefreq: add small constant to comps, per method " << endl; + init_ivector SzFreq_nobs(1,SzFreq_Nmeth); +!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_nobs << " Sizefreq N obs per method" << endl; + ivector SzFreq_Nbins_seas_g(1,SzFreq_Nmeth*nseas); // array dimensioner used only for the SzFreqTrans array + ivector SzFreq_Nbins3(1,SzFreq_Nmeth); // doubles the Nbins if gender==2 + int SzFreqMethod_seas; + ivector Comp_Err_Sz(1,SzFreq_Nmeth); + ivector Comp_Err_Sz2(1,SzFreq_Nmeth); + + LOCAL_CALCS + // clang-format on + Comp_Err_Sz.initialize(); + Comp_Err_Sz2.initialize(); + if (SzFreq_Nmeth_rd == -1) + { + *(ad_comm::global_datafile) >> Comp_Err_Sz(1,SzFreq_Nmeth); + echoinput << Comp_Err_Sz << " Sizefreq: Comp_Err_method " << endl; + *(ad_comm::global_datafile) >> Comp_Err_Sz2(1,SzFreq_Nmeth); + echoinput << Comp_Err_Sz2 << " Sizefreq: Comp_Err_index " << endl; + for (f = 1; f <= SzFreq_Nmeth; f ++) + { + if (Comp_Err_Sz2(f) > Comp_Err_ParmCount + 1) + { + warnstream << "Sz D-M must refer to existing index, or increment by 1 to add new definition: " << Comp_Err_Sz2(f); + write_message(FATAL, 0); + } + else if (Comp_Err_Sz2(f) > Comp_Err_ParmCount) + { + Comp_Err_ParmCount++; + int parti = 0; + DM_parmlist(parti, f + 2*Nfleet) = 1; // flag for creating new definition because Comp_Err_Sz2 can point to existing parameter + } + // else OK because refers to existing definition + } + } + + SzFreq_units_label += "bio"; + SzFreq_units_label += "numbers"; + SzFreq_scale_label += "kg"; + SzFreq_scale_label += "lbs"; + SzFreq_scale_label += "cm"; + SzFreq_scale_label += "inches"; + g = 0; + data_type = 6; // for generalized size composition data + + if (SzFreq_Nmeth > 0) + { + SzFreq_HaveObs2.initialize(); + for (k = 1; k <= SzFreq_Nmeth; k++) + { + if (SzFreq_units(k) == 1 && SzFreq_scale(k) > 2) + { + warnstream << "error: cannot accumulate biomass into length-based szfreq scale for method: " << k; + write_message(FATAL, 0); + } + SzFreq_Nbins3(k) = gender * SzFreq_Nbins(k); + for (s = 1; s <= nseas; s++) + { + g++; + SzFreq_Nbins_seas_g(g) = SzFreq_Nbins(k) * gender; + } + } + } + // clang-format off + echoinput<<"here"<0) echoinput << " SizeFreq bins-raw " << endl << SzFreq_bins1 << endl; + matrix SzFreq_bins(1,SzFreq_Nmeth,1,SzFreq_Nbins3); // szfreq bins as processed and doubled for the males if necessary + matrix SzFreq_bins2(1,SzFreq_Nmeth,0,SzFreq_Nbins3+1); // as above, but one more bin to aid in the search for bin boundaries + ivector SzFreq_Omit_Small(1,SzFreq_Nmeth); + int SzFreq_totobs; + int SzFreq_N_Like; + matrix SzFreq_means(1,SzFreq_Nmeth,1,SzFreq_Nbins3); // szfreq mean size in bins as processed and doubled for the males if necessary + + LOCAL_CALCS + // clang-format on + SzFreq_totobs = 0; + // SS_Label_Info_2.11.1 #Size comp bins according to scaling method + if (SzFreq_Nmeth > 0) + { + for (k = 1; k <= SzFreq_Nmeth; k++) + { + // set flag for accumulating, or not, fish from small pop len bins up into first SzFreq data bin + // if first bin is positive, then fish smaller than that bin are ignored (omitsmall set =1) + // if first bin is negative, then smaller fish are accumulated up into that first bin + + SzFreq_Omit_Small(k) = 1; + if (SzFreq_bins1(k, 1) < 0) + { + SzFreq_Omit_Small(k) = -1; + SzFreq_bins1(k, 1) *= -1; // make this positive for use in model, then write out as negative in data_echo.ss_new + } + + SzFreq_bins(k)(1, SzFreq_Nbins(k)) = SzFreq_bins1(k)(1, SzFreq_Nbins(k)); + if (gender == 2) + { + for (j = 1; j <= SzFreq_Nbins(k); j++) + { + SzFreq_bins(k, j + SzFreq_Nbins(k)) = SzFreq_bins1(k, j); + } + } + if (SzFreq_scale(k) == 2) // convert from lbs to kg + { + SzFreq_bins(k) *= 0.4536; + } + else if (SzFreq_scale(k) == 4) // convert from inches to cm + { + SzFreq_bins(k) *= 2.54; + } + SzFreq_bins2(k, 0) = 0.; + SzFreq_bins2(k)(1, SzFreq_Nbins(k)) = SzFreq_bins(k)(1, SzFreq_Nbins(k)); + if (gender == 2) + { + SzFreq_bins2(k, SzFreq_Nbins(k) + 1) = 0.; + for (j = 1; j <= SzFreq_Nbins(k); j++) + { + SzFreq_bins2(k, j + SzFreq_Nbins(k) + 1) = SzFreq_bins2(k, j); + } + } + + for (z = 1; z <= SzFreq_Nbins(k); z++) + { + if (z < SzFreq_Nbins(k)) + { + SzFreq_means(k, z) = 0.5 * (SzFreq_bins2(k, z) + SzFreq_bins2(k, z + 1)); // this is not gender specific + } + else + { + SzFreq_means(k, z) = SzFreq_means(k, z - 1) + (SzFreq_bins2(k, z) - SzFreq_bins2(k, z - 1)); + } + if (gender == 2) + SzFreq_means(k, z + SzFreq_Nbins(k)) = SzFreq_means(k, z); + } + echoinput << "Processed_SizeFreqMethod_bins for method: " << k << endl + << "low: " << SzFreq_bins(k) << endl + << "mean: " << SzFreq_means(k) << endl; + } + SzFreq_totobs = sum(SzFreq_nobs); + } + // clang-format off + END_CALCS + +// NOTE: for the szfreq data, which are stored in one list and not by fleet, it is not possible to exclude from the working array on basis of before styr or after retroyr + ivector SzFreq_Setup(1,SzFreq_totobs); // stores the number of bins plus header info to read into ragged array + ivector SzFreq_Setup2(1,SzFreq_totobs); // stores the number of bins for each obs to create the ragged array + ivector SzFreq_time_t(1,SzFreq_totobs); + ivector SzFreq_time_ALK(1,SzFreq_totobs); + + LOCAL_CALCS + // clang-format on + if (SzFreq_Nmeth > 0) + { + g = 0; + for (k = 1; k <= SzFreq_Nmeth; k++) + for (j = 1; j <= SzFreq_nobs(k); j++) + { + g++; + SzFreq_Setup(g) = 7 + gender * SzFreq_Nbins(k); + SzFreq_Setup2(g) = gender * SzFreq_Nbins(k); + } + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_2.11.2 #Read size comp observations into a ragged array +!!// , with the number of elements for each obs stored in sizefreq_setup +!!// unlike the size and agecomp, obs from all fleets are in one dimension, rather than having a dimension for fleet +!!// to do super-period, obs must be sorted by fleet and time within each method + init_matrix SzFreq_obs1(1,SzFreq_totobs,1,SzFreq_Setup); +!!if(SzFreq_totobs>0) echoinput<<" first sizefreq obs "< + // SzFreq_obs_hdr: 1=y; 2=month; 3=f; 4=gender; 5=partition; 6=method&skip flag; 7=first bin to use; 8=last bin(e.g. to include males or not); 9=flag to indicate transition matrix needs calculation + vector SzFreq_sampleN(1,SzFreq_totobs); + vector SzFreq_effN(1,SzFreq_totobs); + vector SzFreq_eachlike(1,SzFreq_totobs); + vector SzFreq_each_offset(1,SzFreq_totobs); + matrix SzFreq_obs(1,SzFreq_totobs,1,SzFreq_Setup2); + imatrix SzFreq_LikeComponent(1,Nfleet,1,SzFreq_Nmeth); + number N_suprper_SzFreq; // no real need to keep track of these by method, so just use a number + LOCAL_CALCS + // clang-format on + SzFreq_N_Like = 0; + N_suprper_SzFreq = 0; + if (SzFreq_Nmeth > 0) + { + SzFreq_LikeComponent.initialize(); + SzFreq_obs.initialize(); + SzFreq_eachlike.initialize(); + SzFreq_each_offset.initialize(); + iobs = 0; + for (k = 1; k <= SzFreq_Nmeth; k++) + { + for (j = 1; j <= SzFreq_nobs(k); j++) + { + // if(y>=styr && y<=retro_yr) // not used because all obs in one list + iobs++; + for (z = 1; z <= 5; z++) + { + SzFreq_obs_hdr(iobs, z) = SzFreq_obs1(iobs, z + 1); + } + SzFreq_sampleN(iobs) = SzFreq_obs1(iobs, 7); + if (SzFreq_obs1(iobs, 3) < 0) + N_suprper_SzFreq++; // count the number of superperiod start/stops + if (SzFreq_obs_hdr(iobs, 4) == 3) // both genders + { + for (z = 1; z <= SzFreq_Setup2(iobs); z++) + { + SzFreq_obs(iobs, z) = SzFreq_obs1(iobs, 7 + z); + } + } + else if (SzFreq_obs_hdr(iobs, 4) <= 1) // combined gender or female only + { + for (z = 1; z <= SzFreq_Nbins(k); z++) + { + SzFreq_obs(iobs, z) = SzFreq_obs1(iobs, 7 + z); + } + } + else // male only + { + for (z = SzFreq_Nbins(k) + 1; z <= SzFreq_Setup2(iobs); z++) + { + SzFreq_obs(iobs, z) = SzFreq_obs1(iobs, 7 + z); + } + } + if (gender == 1) + SzFreq_obs_hdr(iobs, 4) = 1; // just in case + if (sum(SzFreq_obs(iobs)) <= 0.0) + { + warnstream << "zero fish in size comp " << SzFreq_obs_hdr(iobs); + write_message(FATAL, 0); + } + if (SzFreq_sampleN(iobs) <= 0.0) + { + warnstream << " Input N is <=0.0 in size comp " << SzFreq_obs_hdr(iobs); + write_message(FATAL, 0); + } + + f = abs(SzFreq_obs_hdr(iobs, 3)); + SzFreq_obs(iobs) /= sum(SzFreq_obs(iobs)); + SzFreq_obs(iobs) += SzFreq_mincomp(k); + SzFreq_obs(iobs) /= sum(SzFreq_obs(iobs)); + y = SzFreq_obs_hdr(iobs, 1); + if (y > endyr + 50) + { + warnstream << "forecast sizefreq obs cannot be beyond endyr +50"; + write_message(FATAL, 0); + } + + timing_input(1, 3) = SzFreq_obs_hdr(iobs)(1, 3); + timing_input(2) = SzFreq_obs1(iobs, 3); + get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); + + f = abs(SzFreq_obs_hdr(iobs, 3)); + if (y > retro_yr) + SzFreq_obs_hdr(iobs, 3) = -f; + t = timing_i_result(2); + if (gender == 1) + { + SzFreq_obs_hdr(iobs, 4) = 0; + } + z = SzFreq_obs_hdr(iobs, 4); // gender + // get min and max index according to use of 0, 1, 2, 3 gender index + if (z != 2) + { + SzFreq_obs_hdr(iobs, 7) = 1; + } + else + { + SzFreq_obs_hdr(iobs, 7) = SzFreq_Nbins(k) + 1; + } + if (z <= 1) + { + SzFreq_obs_hdr(iobs, 8) = SzFreq_Nbins(k); + } + else + { + SzFreq_obs_hdr(iobs, 8) = 2 * SzFreq_Nbins(k); + } + // SzFreq_obs_hdr(iobs,5); // partition + SzFreq_obs_hdr(iobs, 6) = k; + if (k != SzFreq_obs1(iobs, 1)) + { // save method code for later use + warnstream << "sizefreq ID # doesn't match "; + write_message(WARN, 0); + } + if (y >= styr) + { + ALK_time = timing_i_result(5); + real_month = timing_r_result(1); + + SzFreq_time_t(iobs) = t; + SzFreq_time_ALK(iobs) = ALK_time; + SzFreq_LikeComponent(f, k) = 1; // indicates that this combination is being used + if (SzFreq_HaveObs2(k, ALK_time) == 0) // transition matrix needs calculation + { + SzFreq_HaveObs2(k, ALK_time) = 1; // flad showing condition met + SzFreq_obs_hdr(iobs, 9) = 1; // flag that will be ehecked in ss_expval + } + + if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f + { // real_month,fraction of season, year.fraction + data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); + } + else if (timing_r_result(1) != data_time(ALK_time, f, 1)) + { + warnstream << "SIZE: data_month already set for y,m,f: " << y << " " << timing_r_result(1) << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " so treat as replicate"; + write_message(WARN, 0); + } + have_data(ALK_time, 0, 0, 0) = 1; + have_data(ALK_time, f, 0, 0) = 1; // so have data of some type + have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas + p = have_data(ALK_time, f, data_type, 0); + have_data(ALK_time, f, data_type, p) = iobs; // store data index for the p'th observation in this subseas + have_data_yr(y, f) = 1; + have_data_yr(y, 0) = 1; // survey or comp data exist this year + + if (SzFreq_obs_hdr(iobs, 7) < 0) + SzFreq_obs_hdr(iobs, 3) = -abs(SzFreq_obs_hdr(iobs, 3)); // old method for excluding from logL + } + else + { + SzFreq_obs_hdr(iobs, 3) = -abs(SzFreq_obs_hdr(iobs, 3)); // flag for skipping this obs + SzFreq_time_t(iobs) = styr; + SzFreq_time_ALK(iobs) = 1; + } + } + } + SzFreq_N_Like = sum(SzFreq_LikeComponent); + if (N_suprper_SzFreq > 0) + { + j = N_suprper_SzFreq / 2; // because we counted the begin and end + if (2 * j != N_suprper_SzFreq) + { + warnstream << "unequal number of starts and ends of sizefreq superperiods "; + write_message(FATAL, 0); + } + else + { + N_suprper_SzFreq = j; + } + echoinput << "N superperiods for sizecomp " << N_suprper_SzFreq << endl; + } + } + // clang-format off + END_CALCS + +// SS_Label_Info_2.11.3 #Calc logL for a perfect fit to the sizefreq data as an offset + vector offset_Sz_tot(1,SzFreq_N_Like); // this is a constant offset, so can be declared in data section + ivector suprper_SzFreq_start(1,N_suprper_SzFreq); + ivector suprper_SzFreq_end(1,N_suprper_SzFreq); + vector suprper_SzFreq_sampwt(1,SzFreq_totobs); // will contain calculated weights for obs within super periods + + LOCAL_CALCS + // clang-format on + if (SzFreq_Nmeth > 0) + { + offset_Sz_tot.initialize(); + suprper_SzFreq_start.initialize(); + suprper_SzFreq_end.initialize(); + suprper_SzFreq_sampwt.initialize(); + // N_suprper_SzFreq=0; // redo this counter so can use the counter + // count the number of type x methods being used to create vector length for the likelihoods + g = 0; + for (f = 1; f <= Nfleet; f++) + for (k = 1; k <= SzFreq_Nmeth; k++) + { + if (SzFreq_LikeComponent(f, k) > 0) + { // so stored value g gives index in list of logL elements + g++; + SzFreq_LikeComponent(f, k) = g; + } + } + // in_superperiod=0; + // for (iobs=1;iobs<=SzFreq_totobs;iobs++) + // { + // k=SzFreq_obs_hdr(iobs,6); // get the method + // f=abs(SzFreq_obs_hdr(iobs,3)); + // s=SzFreq_obs_hdr(iobs,2); // sign used to indicate start/stop of super period + // if(SzFreq_obs_hdr(iobs,3)>0) // negative for out of range or skip + // { + // z1=SzFreq_obs_hdr(iobs,7); + // z2=SzFreq_obs_hdr(iobs,8); + // g=SzFreq_LikeComponent(f,k); + // offset_Sz_tot(g)-=SzFreq_sampleN(iobs)*SzFreq_obs(iobs)(z1,z2)*log(SzFreq_obs(iobs)(z1,z2)); + // } + + // identify super-period starts and stops + // if(s<0) // start/stop a super-period ALL observations must be continguous in the file + // { + // if(in_superperiod==0) + // { + // N_suprper_SzFreq++; + // suprper_SzFreq_start(N_suprper_SzFreq)=iobs; + // in_superperiod=1; + // } + // else if(in_superperiod==1) // end a super-period + // { + // suprper_SzFreq_end(N_suprper_SzFreq)=iobs; + // in_superperiod=0; + // } + // } + // } + } + echoinput << " finished processing sizefreq data " << endl; + // if(N_suprper_SzFreq>0) echoinput<<"sizefreq superperiod start obs: "<> Do_TG_rd; + echoinput << Do_TG_rd << " Do_TagData(0/1/2) " << endl + << "# where 2 indicates additional read of TG_min_recap" << endl; + if (Do_TG_rd > 0) + { + Do_TG = 1; + *(ad_comm::global_datafile) >> N_TG; + *(ad_comm::global_datafile) >> N_TG_recap; + *(ad_comm::global_datafile) >> TG_mixperiod; + *(ad_comm::global_datafile) >> TG_maxperiods; + TG_min_recap = 0; + N_TG2 = N_TG; + TG_timestart = 9999; + echoinput << N_TG << " N tag groups " << endl + << N_TG_recap << " N recapture events" << endl + << TG_mixperiod << " Latency period for mixing" << endl + << TG_maxperiods << " N periods to track recoveries" << endl; + if (Do_TG_rd == 2) + { + *(ad_comm::global_datafile) >> TG_min_recap; + echoinput << TG_min_recap << " min recaps >= mixperiod for inclusion in logL" << endl; + } + } + else + { + N_TG = 0; + N_TG_recap = 0; + TG_mixperiod = 0; + TG_maxperiods = 0; + TG_min_recap = 0; + N_TG2 = 1; + TG_timestart = 1; + } + // clang-format off + END_CALCS + + ivector TG_endtime(1,N_TG2) + ivector TG_use(1,N_TG2) // 0/1 flag to indicate N recaptures >= TG_min_recap + init_matrix TG_release(1,N_TG,1,8) + // TG area year seas tfill sex age Nrelease + LOCAL_CALCS + // clang-format on + TG_endtime(1) = 0; + TG_use = 0; // initialize + if (N_TG > 0) + { + echoinput << " Tag Releases " << endl + << "TG area year seas tfill sex age Nrelease " << endl + << TG_release << endl; + for (TG = 1; TG <= N_TG; TG++) + { + t = styr + int((TG_release(TG, 3) - styr) * nseas + TG_release(TG, 4) - 1); + TG_release(TG, 5) = t; + if (t < TG_timestart) + TG_timestart = t; + k = TG_maxperiods; + if ((t + TG_maxperiods) > TimeMax) + k -= (t + TG_maxperiods - TimeMax); + TG_endtime(TG) = k; + } + } + // clang-format off + END_CALCS + +// SS_Label_Info_2.12.1 #Store recapture info by TG group and time to follow it as a cohort + init_matrix TG_recap_data(1,N_TG_recap,1,5) + // TG, year, seas, fleet, sex, Nrecap + 3darray TG_recap_obs(1,N_TG2,0,TG_endtime,0,Nfleet); // no area index because each fleet is in just one area + LOCAL_CALCS + // clang-format on + if (N_TG > 0) + { + echoinput << "First row of tag-recapture data " << TG_recap_data(1) << endl; + echoinput << "Last row of tag-recapture data " << TG_recap_data(N_TG_recap) << endl; + TG_recap_obs.initialize(); + for (j = 1; j <= N_TG_recap; j++) + { + TG = TG_recap_data(j, 1); // TG is the tag group + t = styr + int((TG_recap_data(j, 2) - styr) * nseas + TG_recap_data(j, 3) - 1) - TG_release(TG, 5); // find elapsed time in terms of number of seasons + if (t > TG_maxperiods) + t = TG_maxperiods; + if (t < 0) + { + warnstream << " recapture is before tag release for recap: " << j; + write_message(FATAL, 0); + } + TG_recap_obs(TG, t, TG_recap_data(j, 4)) += TG_recap_data(j, 5); // save N recaptures by TG, fleet of recapture, elapsed time + if (t >= TG_mixperiod) + TG_use(TG) += TG_recap_data(j, 5); // count total recaptures from this TG + } + echoinput << "# total recaptures >= mixperiod by tag group" << endl; + for (TG = 1; TG <= N_TG; TG++) + { + echoinput << TG << " " << TG_use(TG) << endl; + for (TG_t = 0; TG_t <= TG_endtime(TG); TG_t++) + { + TG_recap_obs(TG, TG_t, 0) = sum(TG_recap_obs(TG, TG_t)(1, Nfleet)); + if (TG_recap_obs(TG, TG_t, 0) > 0.) TG_recap_obs(TG, TG_t)(1, Nfleet) /= TG_recap_obs(TG, TG_t, 0); + } + } + } + // clang-format off + END_CALCS + +// SS_Label_Info_2.13 #Morph composition data + init_int Do_Morphcomp; +!!echoinput << Do_Morphcomp << " Do_Morphcomp(0/1) " << endl; + int Morphcomp_nobs; + int Morphcomp_nobs_rd; + int Morphcomp_nmorph; + number Morphcomp_mincomp; + matrix Morphcomp_obs_rd(1,1,1,1); // reallocate if needed + matrix Morphcomp_obs(1,1,1,1); // reallocate if needed + LOCAL_CALCS + // clang-format on + if (Do_Morphcomp == 0) + { + Morphcomp_nobs = 0; + Morphcomp_nobs_rd = 0; + Morphcomp_nmorph = 0; + Morphcomp_mincomp = 0.00001; + } + else + { + *(ad_comm::global_datafile) >> Morphcomp_nobs_rd; + *(ad_comm::global_datafile) >> Morphcomp_nmorph; // later compare this value to the n morphs in the control file and exit if different + *(ad_comm::global_datafile) >> Morphcomp_mincomp; + echoinput << Morphcomp_nobs_rd << " Morphcomp_nobs " << endl; + echoinput << Morphcomp_nmorph << " Morphcomp_nmorph " << endl; + echoinput << Morphcomp_mincomp << " Morphcomp_mincomp " << endl; + + Morphcomp_obs.deallocate(); + Morphcomp_obs.allocate(1, Morphcomp_nobs_rd, 1, 5 + Morphcomp_nmorph + 1); // terminal +1 will contain computed value of ALK_time + Morphcomp_obs.initialize(); + Morphcomp_obs_rd.deallocate(); + Morphcomp_obs_rd.allocate(1, Morphcomp_nobs_rd, 1, 5 + Morphcomp_nmorph); // but will only get filled with the used obs + Morphcomp_obs_rd.initialize(); + // yr, seas, fleet, partition, Nsamp, datavector + data_type = 8; // for morphcomp + + echoinput << " morph composition data" << endl + << "year month fleet null Nsamp datavector" << endl; + Morphcomp_nobs = 0; + for (i = 1; i <= Morphcomp_nobs_rd; i++) + { + *(ad_comm::global_datafile) >> Morphcomp_obs_rd(i); + echoinput << Morphcomp_obs_rd(i) << endl; + timing_input(1, 3) = Morphcomp_obs_rd(i)(1, 3); + y = timing_input(1); + if (y >= styr && y <= endyr + 50) // obs is in year range + { + if (timing_input(2) < 0.0) + { + warnstream << "negative month not allowed for morphcomp because superperiods not implemented "; + write_message(FATAL, 0); + } + get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); + + s = timing_input(2); + f = abs(timing_input(3)); + t = timing_i_result(2); + ALK_time = timing_i_result(5); + + Morphcomp_nobs++; + Morphcomp_obs(Morphcomp_nobs)(1, 5 + Morphcomp_nmorph) = Morphcomp_obs_rd(i)(1, 5 + Morphcomp_nmorph); // save observations to be used + Morphcomp_obs(Morphcomp_nobs, 5 + Morphcomp_nmorph + 1) = ALK_time; // for reporting + if (y > retro_yr) + Morphcomp_obs(Morphcomp_nobs, 3) = -f; // set to dummy observation + if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f + { // real_month,fraction of season, year.fraction + data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); + } + else if (timing_r_result(1) != data_time(ALK_time, f, 1)) + { + warnstream << "morph_comp: data_month already set for y,s,f: " << y << " " << s << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " but read value is: " << timing_r_result(1); + write_message(WARN, 0); + } + have_data(ALK_time, 0, 0, 0) = 1; + have_data(ALK_time, f, 0, 0) = 1; // so have data of some type + have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas + p = have_data(ALK_time, f, data_type, 0); + have_data(ALK_time, f, data_type, p) = Morphcomp_nobs; // store data index for the p'th observation in this subseas + + Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph) /= sum(Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph)); + Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph) += Morphcomp_mincomp; + Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph) /= sum(Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph)); + } + } + echoinput << "processed morphcomp: Nread:" << Morphcomp_nobs_rd << " N save: " << Morphcomp_nobs << endl + << Morphcomp_obs << endl; + } + // clang-format off + END_CALCS + + int Do_SelexData; + LOCAL_CALCS + // clang-format on + *(ad_comm::global_datafile) >> Do_SelexData; + echoinput << "Do dataread for selectivity priors(0/1): " << Do_SelexData << endl; + echoinput << "year seas fleet age/size bin selex_prior prior_sd" << endl; + echoinput << "feature not yet implemented" << endl; + // clang-format off + END_CALCS + +// SS_Label_Info_2.14 #End of datafile indicator + init_int fid; + + LOCAL_CALCS + // clang-format on + if (fid != 999) + { + warnstream << " final value in data file is an error " << fid; + write_message(FATAL, 0); + } + cout << "Data read successful " << fid << endl + << endl; + echoinput << " data read successful" << endl + << endl; + + // SS_Label_Info_3.0 #Read forecast.ss + // SS_Label_Flow #read forecast.ss + // note that forecast.ss is read before control file in order to st up length of some time dimension arrays + ad_comm::change_datafile_name("forecast.ss"); + cout << " reading forecast file " << endl; + ifstream Forecast_Stream("forecast.ss"); // even if the global_datafile name is used, there still is a different logical device created + k = 0; + N_FC = 0; + while (k == 0) + { + Forecast_Stream >> readline; // reads the line from input stream + if (length(readline) > 2) + { + checkchar = readline(1); + k = strcmp(checkchar, "#"); + checkchar = readline(1, 2); + j = strcmp(checkchar, "#C"); + if (j == 0) + { + N_FC++; + Forecast_Comments += readline; + } + } + } + // clang-format off + END_CALCS + int Do_Benchmark; // 0=skip; 1= do Fspr, Fbtgt, Fmsy; 2=do Fspr, F0.1, Fmsy + int Do_MSY; // 1= set to F(SPR); 2=calc F(MSY); 3=set to F(Btgt) or F0.1; 4=set to F(endyr) + int did_MSY; + int show_MSY; + int wrote_bigreport; + ivector Bmark_Yr_rd(1,10); + ivector Bmark_Yr(1,10); + ivector Bmark_t(1,2); // for range of time values for averaging body size + number SPR_target; + number BTGT_frac; + number Blim_frac; + int MSY_units; // 1=dead catch, 2=retained catch, 3=retained catch profits + vector CostPerF(1,Nfleet); + vector PricePerF(1,Nfleet); + ivector AdjustBenchF(1,Nfleet); + + LOCAL_CALCS + // clang-format on + echoinput << "read Do_Benchmark(0=skip; 1= do Fspr, Fbtgt, Fmsy; 2=do Fspr, F0.1, Fmsy; 3=Fspr, Fbtgt, Fmsy, F_Blimit)" << endl; + *(ad_comm::global_datafile) >> Do_Benchmark; + echoinput << Do_Benchmark << " echoed Do_Benchmark " << endl; + echoinput << "read Do_MSY basis (1=F_SPR,2=calcMSY,3=F_Btarget,4=mult*F_endyr (disabled);5=calcMEY with MSY_unit options" << endl; + *(ad_comm::global_datafile) >> Do_MSY; + echoinput << Do_MSY << " echoed Do_MSY basis" << endl; + if (Do_MSY == 2) + { + echoinput << "Note that Do_MSY=5 is more flexible than Do_MSY=2 by providing control of MSY_units" << endl; + } + + CostPerF = 0.0; + PricePerF = 1.0; // default value per mt + MSY_units = 2; // default to YPR_opt = dead catch without excluded bycatch fleets, but with size/age discard included + AdjustBenchF = 1; + if (Do_MSY == 5) // doing advanced MSY options, including MEY + { + warnstream << "F(mey) is a research feature in 3.30.19; use cautiously and report any issues"; + write_message(WARN, 0); + echoinput << "enter quantity to be maximized: (1) dead catch biomass; (2) dead catch biomass w/o excluded bycatch fleet " + << "(3) retained catch; (4) retained catch profits" << endl; + *(ad_comm::global_datafile) >> MSY_units; + echoinput << MSY_units << " # MSY_units as entered" << endl; + + CostPerF.initialize(); + PricePerF.initialize(); + echoinput << "enter fleet ID and cost per fleet, price per fleet, and 1 to indicate FMEY applies to this fleet (0) otherwise; negative fleet ID fills for all higher fleet IDs, -9999 exits list" << endl; + int fleet_ID = 100; + double tempcost; + double tempprice; + int tempAdjust; + while (fleet_ID > -9999) + { + *(ad_comm::global_datafile) >> fleet_ID; + *(ad_comm::global_datafile) >> tempcost; + *(ad_comm::global_datafile) >> tempprice; + *(ad_comm::global_datafile) >> tempAdjust; + echoinput << fleet_ID << " " << tempcost << " " << tempprice << " " << tempAdjust << endl; + if (fleet_ID > Nfleet) + { + warnstream << "fleetID > Nfleet"; + write_message(WARN, 0); + } + else if (fleet_ID > 0) + { + CostPerF(fleet_ID) = tempcost; + PricePerF(fleet_ID) = tempprice; + AdjustBenchF(fleet_ID) = tempAdjust; + } + else if (fleet_ID > -999) + { + for (f = -fleet_ID; f <= Nfleet; f++) + { + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + CostPerF(f) = tempcost; + PricePerF(f) = tempprice; + AdjustBenchF(f) = tempAdjust; + } + } + } + } + echoinput << "# Cost-per-unit fishing mortality: " << CostPerF << endl + << "Price per kg: " << PricePerF << endl; + } + + switch (Do_MSY) + { + case 1: // set Fmsy=Fspr + { + MSY_name = "set_Fmsy=Fspr"; + break; + } + case 3: // set Fmsy=Fbtgt or F0.1 + { + if (Do_Benchmark == 1) MSY_name = "set_Fmsy=Fbtgt"; + if (Do_Benchmark == 2) MSY_name = "set_Fmsy=F0.1"; + break; + } + case 4: // set fmult for Fmsy to 1 + { + MSY_name = "set_Fmsy_using_input_Fmult"; + break; + } + case 2: // calc Fmsy + { + MSY_name = "find_Fmsy_to_maximize_dead_catch"; + break; + } + case 5: // calc Fmey + { + switch (MSY_units) + { + case 1: + { + MSY_name = "find_Fmsy_to_maximize_dead_catch"; + break; + } + case 2: + { + MSY_name = "find_Fmsy_to_maximize_retained_catch"; + break; + } + case 3: + { + MSY_name = "find_Fmey_to_maximize_profits_(retained_catch_revenue_-_fleet_cost"; + break; + } + } + break; + } + } + + show_MSY = 0; + did_MSY = 0; + wrote_bigreport = 0; + Blim_frac = 0.5; // default + echoinput << "next read SPR target and Biomass target as fractions" << endl; + *(ad_comm::global_datafile) >> SPR_target; + echoinput << SPR_target << " echoed SPR_target " << endl; + *(ad_comm::global_datafile) >> BTGT_frac; + echoinput << BTGT_frac << " echoed BTGT_frac " << endl; + + if (Do_Benchmark == 3) + { + echoinput << "if Do_Benchmark==3, read Blimit as fraction of Bmsy (neg value to use as frac of Bzero)" << endl; + *(ad_comm::global_datafile) >> Blim_frac; + echoinput << Blim_frac << " echoed Blim_frac " << endl; + } + + echoinput << "next read 10 Benchmark years for: beg-end bio; beg-end selex; beg-end relF; beg-end recr_dist; beg-end SRparm" << endl; + echoinput << "codes: -999 means start year; >0 is an actual year; <=0 is relative to endyr" << endl; + *(ad_comm::global_datafile) >> Bmark_Yr_rd(1, 10); + + Bmark_Yr = 0; + if (Do_Benchmark == 2 && N_bycatch > 0) + { + warnstream << "F0.1 does not work well with bycatch fleets; check output carefully"; + write_message(WARN, 0); + } + echoinput << Bmark_Yr_rd << " echoed Benchmark years" << endl; + for (i = 1; i <= 10; i++) // beg-end bio; beg-end selex; beg-end relF + { + if (Bmark_Yr_rd(i) == -999) + { + Bmark_Yr(i) = styr; + } + else if (Bmark_Yr_rd(i) <= 0) + { + Bmark_Yr(i) = Bmark_Yr_rd(i) + endyr; + } + else if (Bmark_Yr_rd(i) < styr) + { + warnstream << "benchmark year (" << Bmark_Yr_rd(i) << ") < styr (" << styr << "); change to styr"; + write_message(WARN, 0); + Bmark_Yr(i) = styr; + } + else if (Bmark_Yr_rd(i) > endyr) + { + warnstream << "benchmark year (" << Bmark_Yr_rd(i) << ") > endyr (" << endyr << "); change to endyr"; + write_message(WARN, 0); + Bmark_Yr(i) = endyr; + } + else + { + Bmark_Yr(i) = Bmark_Yr_rd(i); + } + } + Bmark_t(1) = styr + (Bmark_Yr(1) - styr) * nseas; + Bmark_t(2) = styr + (Bmark_Yr(2) - styr) * nseas; + + echoinput << Bmark_Yr << " Benchmark years as processed" << endl; + echoinput << "next read: 1=use range of years as read for relF; 2 = set same as forecast relF below" << endl; + // clang-format off + END_CALCS + init_int Bmark_RelF_Basis; + + LOCAL_CALCS + // clang-format on + echoinput << Bmark_RelF_Basis << " echoed Bmark_RelF_year basis" << endl; + if (Do_MSY == 5 && Bmark_RelF_Basis == 2) + { + warnstream << "Do_MSY=5, so must use Bmark_RelF_Basis=1"; + write_message(FATAL, 0); + } + echoinput << endl + << "next read forecast basis: 0=none; 1=F(SPR); 2=F(MSY) 3=F(Btgt); 4=Ave F (enter yrs); 5=read Fmult" << endl; + // clang-format off + END_CALCS + init_int Do_Forecast_rd; + int Do_Forecast; +!! Do_Forecast = Do_Forecast_rd; +!!echoinput << Do_Forecast << " echoed Forecast basis" << endl; + + vector Fcast_Input(1,24); + + int N_Fcast_Yrs; + ivector Fcast_yr(1,6); // yr range for selex, then yr range for either allocation or for mean F + ivector Fcast_yr_rd(1,6); + int Fcast_Sel_yr1; + int Fcast_Sel_yr2; + int Fcast_RelF_yr1; + int Fcast_RelF_yr2; + int Fcast_Rec_yr1; + int Fcast_Rec_yr2; + int Fcast_RelF_Basis; // 1=use year range; 2=read below + number Fcast_Flevel; + int Do_Rebuilder; + int Rebuild_Ydecl; + int Rebuild_Yinit; + int HarvestPolicy; // 0=none; 1=west coast adjust catch; 2=AK to adjust F + number H4010_top_rd; + number H4010_bot; + number H4010_scale; + number H4010_scale_rd; + int Do_Impl_Error; + number Impl_Error_Std; + vector Fcast_Loop_Control(1,5); + int N_Fcast_Input_Catches; + int Fcast_InputCatch_Basis; // 2=dead catch; 3=retained catch; 99=F; -1=read fleet/time specific (biomass vs numbers will match catchunits(fleet) + int Fcast_Catch_Basis; // 2=dead catch bio, 3=retained catch bio, 5= dead catch numbers 6=retained catch numbers; Same for all fleets + + int Fcast_Catch_Allocation_Groups; + int Fcast_Do_Fleet_Cap; + int Fcast_Do_Area_Cap; + int Fcast_Cap_FirstYear; + vector Fcast_MaxFleetCatch(1,Nfleet); + vector Fcast_MaxAreaCatch(1,pop); + ivector Allocation_Fleet_Assignments(1,Nfleet); + matrix Fcast_RelF_Input(1,nseas,1,Nfleet); + int Fcast_timevary_Selex_rd; // old logic: 0 = fcast selectivity is mean over range of years; 1=use time-varying parameters to control selectivity in forecast + int Fcast_timevary_Selex; // new logic: 1 = fcast selectivity is mean over range of years; 0=use time-varying parameters to control selectivity in forecast + int N_Fcast_parm_aves; + + LOCAL_CALCS + // clang-format on + Fcast_MaxFleetCatch.initialize(); + Fcast_MaxAreaCatch.initialize(); + Allocation_Fleet_Assignments.initialize(); + Fcast_Catch_Allocation.initialize(); + Fcast_RelF_Input.initialize(); + Fcast_yr.initialize(); + Do_Impl_Error = 0; + Do_Rebuilder = 0; + // clang-format off + END_CALCS + matrix Fcast_MGparm_ave_rd(1,12,1,4) // for the 8 MGtypes plus, method, st_year, end_year + matrix Fcast_MGparm_ave(1,12,1,4) // for the 8 MGtypes plus, method, st_year, end_year (real years) + // lables for the MGtypes found in string array: MGtype_Lbl + + LOCAL_CALCS + // clang-format on + Fcast_timevary_Selex_rd = 0; // default; do mean + Fcast_MGparm_ave.initialize(); + Fcast_MGparm_ave_rd.initialize(); + if (Do_Forecast_rd > 0) + { + // Fcast_Input(1,k)=Fcast_Input_rd(1,k); + // k=0; + // k++; + echoinput << endl + << "#next read N forecast years" << endl; + *(ad_comm::global_datafile) >> N_Fcast_Yrs; + echoinput << N_Fcast_Yrs << " #echoed N_Fcast_Yrs " << endl; + if (Do_Forecast_rd > 0 && N_Fcast_Yrs <= 0) + { + warnstream << "ERROR: cannot do a forecast of zero years: " << N_Fcast_Yrs; + write_message(FATAL, 0); + } + if (Do_Forecast_rd > 0 && STD_Yr_max == -1) + { + warnstream << "Std_yrmax=-1 in starter, so no variance output for forecast quantities after endyr+1 "; + write_message(NOTE, 0); + } + + YrMax = endyr + N_Fcast_Yrs; + + echoinput << endl + << "# next read Fmult value to be used only if Forecast basis==5" << endl; + // k++; Fcast_Flevel=Fcast_Input(k); + *(ad_comm::global_datafile) >> Fcast_Flevel; + echoinput << Fcast_Flevel << " # echoed Fmult value" << endl; + + N_Fcast_parm_aves = 0; + echoinput << endl + << "# next enter year ranges for averaging forecast quantities that otherwise will follow time-vary parameter controls" << endl + << "# enter single value of -12345 to invoke recommended generic approach" << endl + << "# or enter six Fcast_year values: beg_selex, end_selex, beg_relF, end_relF, beg_recruits, end_recruits" << endl + << "# year values are actual year, or values <= 0 to be relative to endyr" << endl + << "# use of some of these year ranges is conditional on settings later in the forecast.ss file" << endl; + *(ad_comm::global_datafile) >> Fcast_yr_rd(1); + + if(Fcast_yr_rd(1) != -12345) // continue with old approach + { + *(ad_comm::global_datafile) >> Fcast_yr_rd(2,6); + echoinput << Fcast_yr_rd << " # echoed Fcast years as read" << endl; + Fcast_yr = Fcast_yr_rd; + for (i = 1; i <= 6; i++) // tagcode + { + if (Fcast_yr(i) == -999) + { + Fcast_yr(i) = styr; + } + else if (Fcast_yr(i) <= 0) + { + Fcast_yr(i) += endyr; + } + else if (Fcast_yr(i) < styr) + { + Fcast_yr(i) = styr; + } + else if (Fcast_yr(i) > endyr) + { + Fcast_yr(i) = endyr; + } + else + { + } // OK in range + } + Fcast_Sel_yr1 = Fcast_yr(1); + Fcast_Sel_yr2 = Fcast_yr(2); + Fcast_RelF_yr1 = Fcast_yr(3); + Fcast_RelF_yr2 = Fcast_yr(4); + Fcast_Rec_yr1 = Fcast_yr(5); + Fcast_Rec_yr2 = Fcast_yr(6); + echoinput << Fcast_yr << " # After Transformation" << endl; + + echoinput << endl + << "# read flag for selectivity used in forecasts; 0 creates mean to use for all years; 1 implements time-varying selectivity per parameters" << endl; + *(ad_comm::global_datafile) >> Fcast_timevary_Selex_rd; + // change polarity to match new code logic + if(Fcast_timevary_Selex_rd == 0) + {Fcast_timevary_Selex = 1;} // do means + else + {Fcast_timevary_Selex = 0;} + + echoinput << Fcast_timevary_Selex_rd << " # echoed Fcast_timevary_Selex value" << endl; + // set equivalent values using new approach + Fcast_MGparm_ave(10,1) = 10; + Fcast_MGparm_ave(10,2) = 1; + Fcast_MGparm_ave(10,3) = Fcast_yr_rd(1); // for selectivity + Fcast_MGparm_ave(10,4) = Fcast_yr_rd(2); + Fcast_MGparm_ave(11,1) = 11; + Fcast_MGparm_ave(11,2) = 1; + Fcast_MGparm_ave(11,3) = Fcast_yr_rd(3); // for rel F + Fcast_MGparm_ave(11,4) = Fcast_yr_rd(4); + Fcast_MGparm_ave(12,1) = 12; + Fcast_MGparm_ave(12,2) = 1; + Fcast_MGparm_ave(12,3) = Fcast_yr_rd(5); // for recruitment + Fcast_MGparm_ave(12,4) = Fcast_yr_rd(6); + Fcast_MGparm_ave_rd = Fcast_MGparm_ave; + } // end old approach for Fcast years + else + + { // read fcast year ranges in new list-based format +// set defaults, but each can be overridden + Fcast_yr(1,6) = endyr; + Fcast_Sel_yr1 = Fcast_yr(1); + Fcast_Sel_yr2 = Fcast_yr(2); + Fcast_RelF_yr1 = Fcast_yr(3); + Fcast_RelF_yr2 = Fcast_yr(4); + Fcast_Rec_yr1 = Fcast_yr(5); + Fcast_Rec_yr2 = Fcast_yr(6); + Fcast_timevary_Selex = 0; + + echoinput << " #_Read year ranges for forecast factors that will use means" << endl + << "#_ range will be endyr to endyr unless explicitly set below" << endl; + // Fcast_MGparm_ave_rd: read MGtype, method, start year, end year + // terminate with Factor = -9999 + echoinput << "read list of factor, method (0,1), start year, end year" << endl + << "Terminate with -9999 for factor" << endl + << "Factors: 1=M, 2=growth, 3=wtlen, 4=recr_dist&femfrac, 5=migration, 6=ageerror, 7=catchmult, 8=hermaphroditism" << endl + << "10=selectivity, 11=rel.F, 12=recruitment" + << "Method = 0 to use parameters (with time_vary); 1 to use mean of derived factor over year range"<> tempvec(1, 4); + echoinput << tempvec << endl; + if (tempvec(1) == -9999. || tempvec(1) > 12) + ender = 1; + else + { + int f1 = tempvec(1); + Fcast_MGparm_ave_rd(f1) = tempvec; + Fcast_MGparm_ave(f1) = tempvec; + } + } while (ender == 0); + + // Adjusting Fcast_MGparm_ave_rd minyear and maxyear values + // for Fcast_MGparm_ave + for (i = 1; i <= 12; i++) + { + if (Fcast_MGparm_ave_rd(i,1) > 0) + { + echoinput< endyr) + { + Fcast_MGparm_ave(i,3) = endyr; + } + // Adjust end year + if (Fcast_MGparm_ave(i,4) == -999) + { + Fcast_MGparm_ave(i,4) = endyr; + } + else if (Fcast_MGparm_ave(i,4) <= 0) + { + Fcast_MGparm_ave(i,4) += endyr; + } + if (Fcast_MGparm_ave(i,4) < Fcast_MGparm_ave(i,3)) + { + Fcast_MGparm_ave(i,4) = Fcast_MGparm_ave(i,3); + warnstream << "Fcast_MGparm_ave maxyear before minyear, setting to: " << Fcast_MGparm_ave(i,4); + write_message(ADJUST, 0); + } + if (Fcast_MGparm_ave(i,4) > endyr) + { + Fcast_MGparm_ave(i,4) = endyr; + } + switch (i) + { + case 10: // 10=selectivity + Fcast_Sel_yr1 = Fcast_MGparm_ave(i,3); + Fcast_Sel_yr2 = Fcast_MGparm_ave(i,4); + Fcast_timevary_Selex = Fcast_MGparm_ave(i,2); // tells SS3 to use mean (1) vs. time-vary parms (0) + break; + case 11: // 11=relative F + Fcast_RelF_yr1 = Fcast_MGparm_ave(i,3); + Fcast_RelF_yr2 = Fcast_MGparm_ave(i,4); + // only year range read here; invocation will be read later: Fcast_RelF_Basis; // tells SS3 to use mean, not time-vary parms + break; + case 12: // 12=recruitment + Fcast_Rec_yr1 = Fcast_MGparm_ave(i,3); + Fcast_Rec_yr2 = Fcast_MGparm_ave(i,4); + // only year range read here; invocation will be read later + break; + } + } + } + echoinput << "Forecast factor averaging: " << endl << Fcast_MGparm_ave << endl; + echoinput << "operational values may be calculated or assigned in benchmark_forecast setup" << endl; + } + + echoinput << endl + << "next read 4 values for: control rule shape(0, 1, 2, 3 or 4), inflection (like 0.40), cutoff(like 0.10), scale(like 0.75)" << endl; + *(ad_comm::global_datafile) >> HarvestPolicy; + if (HarvestPolicy == 0) + echoinput << "HarvestPolicy=0, so values for top, bottom, buffer will be ignored" << endl; + + echoinput << HarvestPolicy << " # echoed HarvestPolicy " << endl; + *(ad_comm::global_datafile) >> H4010_top_rd; // as fraction of HCR_anchor; use -1 as legacy approach to set H4010_top to Bmsy/SSB_unf + echoinput << H4010_top_rd << " # echoed control rule inflection" << endl; + *(ad_comm::global_datafile) >> H4010_bot; + echoinput << H4010_bot << " # echoed control rule cutoff " << endl; + *(ad_comm::global_datafile) >> H4010_scale_rd; + H4010_scale = H4010_scale_rd; + echoinput << H4010_scale << " # echoed control rule scalar " << endl; + if (H4010_top_rd > 0.0 && H4010_top_rd <= H4010_bot) + { + warnstream << "control rule inflection: " << H4010_top_rd << " must be > control rule cutoff " << H4010_bot; + write_message(FATAL, 0); + } + if (H4010_scale > 1.0) + { + warnstream << "Sure you want control rule scalar > 1.0? " << H4010_scale; + write_message(WARN, 0); + } + + if (H4010_scale < 0.0) + { + echoinput << "# now read pairs of year,H4010scale; each read fills from that year to YrMax; end with year<0.0 " << endl; + ender = 0; + do + { + dvector tempvec(1, 2); + *(ad_comm::global_datafile) >> tempvec(1, 2); + if (tempvec(1) < 0.0) + ender = 1; + H4010_scale_vec_rd.push_back(tempvec(1, 2)); + echoinput << " H4010 read: " << tempvec(1, 2) << endl; + } while (ender == 0); + } + + echoinput << endl + << "# next enter 2 values that control looping through the forecast (see manual), then 3 additional controls" << endl; + echoinput << "# first does F_msy or proxy; 2nd applies control rule; 3rd applies caps and allocations" << endl; + *(ad_comm::global_datafile) >> Fcast_Loop_Control(1, 5); + echoinput << Fcast_Loop_Control(1) << " #echo: N forecast loops (1-3) (recommend 3 to get full variance for short-term forecasts)" << endl; + echoinput << Fcast_Loop_Control(2) << " #echo: First forecast loop with stochastic recruitment (recommend 3)" << endl; + echoinput << Fcast_Loop_Control(3) << " #echo: Forecast base recruitment: 0=spawn_recr; 1=mult*spawn_recr; 2=mult*VirginRecr; 3=deprecated; 4=mult*mean from yr range" << endl; + if (Fcast_Loop_Control(3) == 3) + { + echoinput << "Option 3 deprecated, converting to option 4 for mean recruitment. Use mean over year range controls for recrdist" << endl; + warnstream << "Option 3 for mean forecast recruitment is deprecated. Changing to option 4. User can do recrdist with new fcast year controls"; + write_message(ADJUST, 0); + Fcast_Loop_Control(3) = 4; + Fcast_Loop_Control(4) = 1.0; // safeguard in case user had value here + } + if (Fcast_Loop_Control(3) == 4) + { + echoinput << "Forecast base recruitment is mean from years: " << Fcast_Rec_yr1 << " to " << Fcast_Rec_yr2 << " recrdist from parameters, or mean fcast year controls" << endl; + } + else if (Fcast_Loop_Control(3) < 0) // input probably was a -1 from pre 3.30.15, so convert to 0 + { + Fcast_Loop_Control(3) = 0; + Fcast_Loop_Control(4) = 1.0; + } + if (Fcast_Loop_Control(3) > 0) + { + echoinput << Fcast_Loop_Control(4) << "#echo: multiplier on forecast base recruitment" << endl; + echoinput << "forecast devs will be applied after the multiplier," << endl << + "even when the base is set to the mean of earlier recruitments" << endl; + } + + if (Fcast_Loop_Control(5) <= 0) // default before 3.30.24 + { + echoinput << "basis for HCR anchor was not set; setting to 2 to match default before 3.30.24" << endl; + warnstream << "basis for HCR anchor was not set; setting to 2 to match default before 3.30.24"; + write_message(ADJUST, 0); + Fcast_Loop_Control(5) = 2; + } + if (H4010_top_rd < 0) // convert old legacy approach to new approach for using Bmsy + { + Fcast_Loop_Control(5) = 3; + H4010_top_rd = 1.0; + } + echoinput << Fcast_Loop_Control(5) << " #control rule anchor: 1=virgin_SSB; 2=unfished_benchmark_SSB(old_approach); 3=Bmsy" << endl; + if (depletion_basis == 1 && Fcast_Loop_Control(5) == 2) + { + warnstream << "depletion_basis is using virgin but HCR anchor is using SSB_unf from benchmark. Are you sure?"; + write_message(WARN, 0); + } + + echoinput << "#next enter year in which Fcast loop 3 caps and allocations begin to be applied" << endl; + *(ad_comm::global_datafile) >> Fcast_Cap_FirstYear; + echoinput << Fcast_Cap_FirstYear << " # echoed value" << endl; + + echoinput << endl + << "#next enter 0, or stddev of implementation error" << endl; + *(ad_comm::global_datafile) >> Impl_Error_Std; + echoinput << Impl_Error_Std << " # echoed value" << endl; + if (Impl_Error_Std > 0.0) { + if (Do_Forecast_rd > 0) { + Do_Impl_Error = 1; // OK to do impl error because forecast occurs + } + else + { + warnstream << "changing Imple_Error to 0 because no forecast "; + write_message(WARN, 1); + Impl_Error_Std = 0.0; + Do_Impl_Error = 0; + } + } + + echoinput << endl + << "#next select rebuilding program output: 0=no; 1=yes" << endl; + *(ad_comm::global_datafile) >> Do_Rebuilder; + echoinput << Do_Rebuilder << " # echoed value" << endl; + + echoinput << endl + << "#next select rebuilding program: year declared overfished" << endl; + *(ad_comm::global_datafile) >> Rebuild_Ydecl; + echoinput << Rebuild_Ydecl << " # echoed value" << endl; + + echoinput << endl + << "#next select rebuilding program: year rebuilding plan started" << endl; + *(ad_comm::global_datafile) >> Rebuild_Yinit; + echoinput << Rebuild_Yinit << " # echoed value" << endl; + + echoinput << endl + << "#next select fleet relative F: 1=mean over year range read above; 2=read list of seas, fleet, relF below" << endl; + echoinput << "# Note that fleet allocation is used directly as F if Do_Forecast=4 " << endl; + *(ad_comm::global_datafile) >> Fcast_RelF_Basis; + echoinput << Fcast_RelF_Basis << " # echoed value" << endl; + if (Fcast_RelF_Basis < 1 || Fcast_RelF_Basis > 2) { + warnstream << "Fcast_relF_Basis value must be 1 or 2" << endl; + write_message(FATAL, 1); + } + if (Fcast_RelF_Basis == 1 && Fcast_MGparm_ave(11,2) == 0) { + echoinput << "Fcast_relF_Basis = 1 requires that year range is set above" << endl; + warnstream << "Fcast_relF_Basis = 1 requires that year range is set above" << endl; + write_message(FATAL, 1); + + } + + if (Do_Forecast_rd == 4 && Fcast_RelF_Basis == 2) { + warnstream << "Cannot specify forecast fleet relative F because Do_Forecast==4 specifies relative F directly as F;" << endl + << " need to align choice of forecast basis and forecast relative F basis"; + write_message(FATAL, 1); + } + + echoinput << endl + << "#next read Catch Basis for caps and allocations; Same for all fleets" << endl; + echoinput << "2=dead catch bio, 3=retained catch bio, 5= dead catch numbers 6=retained catch numbers" << endl; + *(ad_comm::global_datafile) >> Fcast_Catch_Basis; + echoinput << Fcast_Catch_Basis << " # echoed value" << endl; + if (Fcast_Catch_Basis < 2 || Fcast_Catch_Basis > 6) { + warnstream << "illegal value for Fcast_Catch_Basis"; + write_message(FATAL, 1); + } + + if (Fcast_RelF_Basis == 2) + { + ivector checkfleet(1, Nfleet); + checkfleet.initialize(); + echoinput << endl + << "Fcast_RelF_Basis==2, so now read list of seas, fleet#, relF_value" << endl + << "Terminate with -9999 for season" << endl + << "Will be re-scaled to sum to 1.0" << endl; + ender = 0; + do + { + dvector tempvec(1, 3); + *(ad_comm::global_datafile) >> tempvec(1, 3); + echoinput << tempvec << endl; + if (tempvec(1) == -9999.) + { + ender = 1; + } + else + { + s = int(tempvec(1)); + f = int(tempvec(2)); + if (fleet_type(f) <= 2) + { + Fcast_RelF_Input(s, f) = tempvec(3); + checkfleet(f) = 1; + } + else + { + warnstream << "forecast exit for fleet " << f << " ;cannot set fcast relF for survey fleets"; + write_message(FATAL, 0); + } + } + } while (ender == 0); + echoinput << " fleet relative F by season and fleet as read" << endl + << Fcast_RelF_Input << endl; + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 1 && checkfleet(f) == 0) + { + warnstream << "fleet: " << f << " " << fleetname(f) << " is a fishing fleet but forecast relF not read"; + write_message(WARN, 0); + } + } + } + else + { + } + } + + else // set forecast defaults + { + warnstream << "Forecast=0 or -1, so rest of forecast file will not be read and can be omitted;"; + write_message(WARN, 0); + if (Bmark_RelF_Basis == 2) + { + warnstream << "Fatal stop: no forecast, but bmark set to use fcast"; + write_message(FATAL, 0); + } + if (Do_Forecast == 0) + { + warnstream << "A one year forecast using recent F will be done automatically"; + write_message(WARN, 0); + Do_Forecast = 4; // sets simple forecast; else Do_Forecast==-1 causes no forecast + N_Fcast_Yrs = 1; + YrMax = endyr + 1; + } + else + { + Do_Forecast = -1; // no forecast + N_Fcast_Yrs = 0; + YrMax = endyr; + } + + Fcast_Flevel = 1.; + Fcast_yr = 0; + Fcast_yr_rd = 0; + Fcast_RelF_Basis = 1; + Fcast_Sel_yr1 = endyr; + Fcast_Sel_yr2 = endyr; + Fcast_RelF_yr1 = endyr; + Fcast_RelF_yr2 = endyr; + Fcast_Rec_yr1 = styr; + Fcast_Rec_yr2 = endyr; + HarvestPolicy = 0; + H4010_top_rd = 0.001; + H4010_bot = 0.0001; + H4010_scale_rd = 1.0; + H4010_scale = 1.0; + Fcast_Loop_Control.fill("{2,1,0,0,0}"); + Fcast_Cap_FirstYear = endyr + 1; + Impl_Error_Std = 0.0; + Do_Impl_Error = 0; + Do_Rebuilder = 0; + Rebuild_Ydecl = endyr; + Rebuild_Yinit = endyr; + Fcast_RelF_Basis = 1; + Fcast_Catch_Basis = 2; + } // end of defaults for do_forecast = 0 + // clang-format off + END_CALCS + + matrix Fcast_Catch_Allocation(1,N_Fcast_Yrs,1,Nfleet); // dimension to Nfleet but use only to N alloc groups + vector H4010_scale_vec(endyr+1,YrMax); + + LOCAL_CALCS + // clang-format on + if (Do_Forecast_rd > 0) + { + echoinput << endl + << "# next read list of fleet ID and max annual catch; end with fleet=-9999" << endl; + for (f = 1; f <= Nfleet; f++) + Fcast_MaxFleetCatch(f) = -1; + Fcast_Do_Fleet_Cap = 0; + ender = 0; + do + { + dvector tempvec(1, 2); + *(ad_comm::global_datafile) >> tempvec(1, 2); + echoinput << tempvec << endl; + if (tempvec(1) == -9999.) + { + ender = 1; + } + else + { + f = int(tempvec(1)); + if (fleet_type(f) <= 2) + { + Fcast_MaxFleetCatch(f) = tempvec(2); + } + else + { + warnstream << "exit for fleet " << f << " ; can only set max catch for retained or discard catch fleets"; + write_message(FATAL, 0); + // cout<<" EXIT - see warning "<> tempvec(1, 2); + echoinput << tempvec << endl; + if (tempvec(1) == -9999.) + { + ender = 1; + } + else + { + p = int(tempvec(1)); + Fcast_MaxAreaCatch(p) = tempvec(2); + Fcast_Do_Area_Cap = 1; + } + } while (ender == 0); + echoinput << " processed Max totalcatch by area " << endl + << Fcast_MaxAreaCatch << endl; + + echoinput << endl + << "Read list of fleet ID and assignment to allocation group; end with fleet ID=-9999" << endl; + echoinput << "fishing fleets not assigned to allocation group are processed normally" << endl; + Allocation_Fleet_Assignments.initialize(); + Fcast_Catch_Allocation_Groups = 0; + ender = 0; + do + { + dvector tempvec(1, 2); + *(ad_comm::global_datafile) >> tempvec(1, 2); + echoinput << tempvec << endl; + if (tempvec(1) == -9999.) + { + ender = 1; + } + else + { + f = int(tempvec(1)); + if (fleet_type(f) == 1) + { + Allocation_Fleet_Assignments(f) = tempvec(2); + } + else + { + warnstream << "exit for fleet " << f << " ; can only put retained catch fleets in allocation groups"; + write_message(FATAL, 0); + } + } + } while (ender == 0); + + Fcast_Catch_Allocation_Groups = max(Allocation_Fleet_Assignments); + echoinput << " Processed Fleet allocation group assignments " << endl + << Allocation_Fleet_Assignments << endl; + + Fcast_Catch_Allocation.initialize(); + if (Fcast_Catch_Allocation_Groups > 0) + { + echoinput << "# now read fraction of catch for each identified allocation group " << endl; + ender = 0; + k = Fcast_Catch_Allocation_Groups + 1; + do + { + dvector tempvec(1, k); + *(ad_comm::global_datafile) >> tempvec(1, k); + if (tempvec(1) == -9999.) + ender = 1; + Fcast_Catch_Allocation_list.push_back(tempvec(1, k)); + echoinput << " allocation assignment: " << tempvec(1, k) << endl; + } while (ender == 0); + j = Fcast_Catch_Allocation_list.size() - 1; + + if (j == 0) + { + warnstream << "Error: there are no allocation fractions specified and there are " << Fcast_Catch_Allocation_Groups << " allocation groups"; + write_message(FATAL, 1); + } + + for (k = 0; k <= j - 1; k++) + { + for (y = Fcast_Catch_Allocation_list[k](1) - endyr; y <= N_Fcast_Yrs; y++) // assign input from the input year through last forecast year + { + for (a = 1; a <= Fcast_Catch_Allocation_Groups; a++) + { + Fcast_Catch_Allocation(y, a) = Fcast_Catch_Allocation_list[k](a + 1); + } + } + } + echoinput << "processed allocation groups by year" << endl; + for (y = 1; y <= N_Fcast_Yrs; y++) + { + if (sum(Fcast_Catch_Allocation(y)) == 0.0) + { + warnstream << "Fcast_Catch_allocation is blank for year: " << y + endyr << "; SS3 assigning uniform; can override with input catches"; + write_message(WARN, 0); + } + else + { + Fcast_Catch_Allocation(y) /= sum(Fcast_Catch_Allocation(y)(1, Fcast_Catch_Allocation_Groups)); + } + echoinput << y + endyr << " " << Fcast_Catch_Allocation(y)(1, Fcast_Catch_Allocation_Groups) << endl; + } + } + + *(ad_comm::global_datafile) >> Fcast_InputCatch_Basis; + echoinput << Fcast_InputCatch_Basis << " # basis for input Fcast catch: -1= read with each obs; 2=dead catch; 3=retained catch; 99=input Hrate(F); -1=read fleet/time specific (bio/num units are from fleetunits; note new codes in SSV3.20)" << endl; + k1 = styr + (endyr - styr) * nseas - 1 + nseas + 1; + y = k1 + (N_Fcast_Yrs)*nseas - 1; + if (Fcast_InputCatch_Basis == -1) + { + j = 5; + echoinput << "# year seas fleet catch basis" << endl; + } + else + { + j = 4; + echoinput << "# year seas fleet catch" << endl; + } + + ender = 0; + do + { + dvector tempvec(1, j); + *(ad_comm::global_datafile) >> tempvec(1, j); + if (tempvec(1) == -9999.) + ender = 1; + Fcast_InputCatch_list.push_back(tempvec(1, j)); + echoinput << tempvec << endl; + } while (ender == 0); + N_Fcast_Input_Catches = Fcast_InputCatch_list.size() - 1; + } + else + { + N_Fcast_Input_Catches = 0; + Fcast_InputCatch_Basis = 2; + k1 = 1; + y = 0; + j = 0; + fif = 999; + } + // clang-format off + END_CALCS + + 3darray Fcast_InputCatch(k1,y,1,Nfleet,1,2); // values and basis to be used + matrix Fcast_InputCatch_rd(1,N_Fcast_Input_Catches,1,j); + imatrix Fcast_RelF_special(1,nseas,1,Nfleet); // records whether an input catch or F occurs + + LOCAL_CALCS + // clang-format on + Fcast_InputCatch.initialize(); + Fcast_InputCatch_rd.initialize(); + Fcast_RelF_special.initialize(); + if (Do_Forecast_rd > 0) + { + if (N_Fcast_Input_Catches > 0) + { + for (t = k1; t <= y; t++) + for (f = 1; f <= Nfleet; f++) + { + Fcast_InputCatch(t, f, 1) = -1; + } + + for (i = 0; i <= N_Fcast_Input_Catches - 1; i++) + { + echoinput << i << " " << Fcast_InputCatch_list[i] << endl; + Fcast_InputCatch_rd(i + 1) = Fcast_InputCatch_list[i]; + y = Fcast_InputCatch_rd(i + 1, 1); + s = Fcast_InputCatch_rd(i + 1, 2); + f = Fcast_InputCatch_rd(i + 1, 3); + if (y > endyr && y <= YrMax && fleet_type(f) <= 2) + { + Fcast_RelF_special(s, f) = 1; + t = styr + (y - styr) * nseas + s - 1; + Fcast_InputCatch(t, f, 1) = Fcast_InputCatch_rd(i + 1, 4); + if (y >= Fcast_Cap_FirstYear) + { + warnstream << "Input catches in " << y << " can be overridden by caps or allocations"; + write_message(WARN, 0); + } + if (Fcast_InputCatch_Basis == -1) + { + Fcast_InputCatch(t, f, 2) = Fcast_InputCatch_rd(i + 1, 5); // new method + } + else + { + Fcast_InputCatch(t, f, 2) = Fcast_InputCatch_Basis; // method before 3.24P + } + } + } + } + } + + H4010_scale_vec.initialize(); + if (H4010_scale_rd >= 0.0) + { + echoinput << "fill H4010_scale_vec with single input" << endl; + H4010_scale_vec = H4010_scale_rd; + } + else + { + echoinput << "fill H4010_scale_vec from input list; filling from read year to YrMax for each input" << endl; + j = H4010_scale_vec_rd.size() - 1; + int last_rd_yr; + last_rd_yr = endyr; + for (int s = 0; s <= j - 1; s++) // loop input + { + y = H4010_scale_vec_rd[s](1); + echoinput << H4010_scale_vec_rd[s] << endl; + if (y <= endyr) + { + warnstream << "; " << y << " is <= endyr; set to endyr+1 "; + write_message(WARN, 1); + y = endyr + 1; + } + if (y <= last_rd_yr) + { + warnstream << "; " << y << " is <= last_rd_yr; overwrite will occur "; + write_message(WARN, 1); + } + last_rd_yr = y; + if (y > YrMax) + { + warnstream << "; " << y << " is > YrMax; set to YrMax "; + write_message(WARN, 0); + y = YrMax; + } + for (k = y; k <= YrMax; k++) + { + H4010_scale_vec(k) = H4010_scale_vec_rd[s](2); + } + } + } + echoinput << "H4010_scale: " << H4010_scale_vec << endl; + + if (Do_Rebuilder == 1 && Do_Forecast_rd <= 0) + { + warnstream << "Error: Rebuilder output selected without requesting forecast"; + write_message(FATAL, 0); + } + if (Do_Benchmark == 0) + { + if (Do_Forecast_rd >= 1 && Do_Forecast_rd <= 3) { + Do_Benchmark = 1; + warnstream << "Turn Benchmark on because Forecast needs it"; + write_message(WARN, 0); + } + if (Do_Forecast == 0 && F_std_basis > 0) + { + F_std_basis = 0; + warnstream << "Set F_std_basis=0 because no benchmark or forecast"; + write_message(WARN, 0); + } + if (depletion_basis == 2 || depletion_basis == 6 ) + { + depletion_basis = 1; + warnstream << "Change depletion basis to 1 because benchmarks were not requested"; + write_message(WARN, 0); + } + if (SPR_reporting >= 1 && SPR_reporting <= 3) + { + SPR_reporting = 5; + warnstream << "Change SPR_reporting to 5 (raw %SPR) because benchmarks were not requested"; + write_message(WARN, 0); + } + } + else + { + if (Do_MSY == 0) + { + warnstream << "Setting Do_MSY=1 because benchmarks are on"; + write_message(WARN, 0); + Do_MSY = 1; + } + } + + if (Fcast_Sel_yr1 > Fcast_Sel_yr2) // tagcode these checks seem unnecessary because of checks already done upon reading values + { + warnstream << " Error, Fcast_Sel_Yr1 must be at or before Fcast_Sel_Yr2"; + write_message(FATAL, 1); + } + if (Fcast_Sel_yr1 > endyr || Fcast_Sel_yr1 < styr) + { + warnstream << " Error, Fcast_Sel_Yr1 must be between styr and endyr"; + write_message(FATAL, 1); + } + if (Fcast_Sel_yr2 > endyr || Fcast_Sel_yr2 < styr) + { + warnstream << " Error, Fcast_Sel_Yr2 must be between styr and endyr"; + write_message(FATAL, 1); + } + if (Fcast_Rec_yr1 > Fcast_Rec_yr2) + { + warnstream << " Error, Fcast_Rec_Yr1 must be at or before Fcast_Rec_Yr2"; + write_message(FATAL, 1); + } + if (Fcast_Rec_yr1 > endyr || Fcast_Rec_yr1 < styr) + { + warnstream << " Error, Fcast_Rec_Yr1 must be between styr and endyr"; + write_message(FATAL, 1); + } + if (Fcast_Rec_yr2 > endyr || Fcast_Rec_yr2 < styr) + { + warnstream << " Error, Fcast_Rec_Yr2 must be between styr and endyr"; + write_message(FATAL, 1); + } + + did_MSY = 0; + if (Do_Forecast > 0) + *(ad_comm::global_datafile) >> fif; + + if (Do_Forecast_rd > 0 && fif != 999) + { + warnstream << " Error, must have 999 to verify end of forecast inputs. value: " << fif; + write_message(FATAL, 1); + } + echoinput << " done reading forecast " << endl + << endl; + // if (Do_Forecast == 0) Do_Forecast = 4; + TimeMax_Fcast_std = styr + (max(YrMax, endyr + 50) - styr) * nseas + nseas - 1; + + // redefine ALK_time_max for forecast years longer than 50, but no data past 50 years + j = max(YrMax, endyr + 50); + ALK_time_max = (j - styr + 1) * nseas * N_subseas; // sets maximum size for data array indexing 50 years into forecast + // clang-format off + END_CALCS + + imatrix Show_Time(styr,TimeMax_Fcast_std,1,2) // for each t: shows year, season + imatrix Show_Time2(1,ALK_time_max,1,3) // for each ALK_time: shows year, season, subseas + LOCAL_CALCS + // clang-format on + t = styr - 1; + for (y = styr; y <= max(YrMax, endyr + 50); y++) /* SS_loop: fill Show_Time(t,1) with year value */ + for (s = 1; s <= nseas; s++) /* SS_loop: fill Show_Time(t,2) with season value */ + { + t++; + Show_Time(t, 1) = y; + Show_Time(t, 2) = s; + } + ALK_idx = 0; + for (y = styr; y <= max(YrMax, endyr + 50); y++) + for (s = 1; s <= nseas; s++) + for (subseas = 1; subseas <= N_subseas; subseas++) + { + ALK_idx++; + Show_Time2(ALK_idx, 1) = y; + Show_Time2(ALK_idx, 2) = s; + Show_Time2(ALK_idx, 3) = subseas; + } + // clang-format off + END_CALCS + +// matrix env_data_RD(styr-1,YrMax,1,N_envvar) + vector env_data_mean(1,N_envvar); + vector env_data_stdev(1,N_envvar); + vector env_data_N(1,N_envvar); + ivector env_data_minyr(1,N_envvar); + ivector env_data_maxyr(1,N_envvar); + ivector env_data_do_mean(1,N_envvar); + ivector env_data_do_stdev(1,N_envvar); + + LOCAL_CALCS + // clang-format on + { + env_data_mean.initialize(); + env_data_stdev.initialize(); + env_data_N.initialize(); + env_data_minyr.initialize(); + env_data_maxyr.initialize(); + env_data_do_mean.initialize(); + env_data_do_stdev.initialize(); + + if (N_envdata > 0) + { + env_data_minyr = 9876; + for (i = 0; i <= N_envdata - 1; i++) + { + y = env_temp[i](1); + k = env_temp[i](2); + if (y <= -1) // flag to do_mean so use -2 to get mean but not stdev + { + env_data_do_mean(k) = 1; + } + if (y == -1) // flag to do_stdev + { + env_data_do_stdev(k) = 1; + } + if (y >= (styr - 1) && y <= YrMax) + { + env_data_mean(k) += env_temp[i](3); + env_data_stdev(k) += env_temp[i](3) * env_temp[i](3); + env_data_N(k)++; + env_data_minyr(k) = min(env_data_minyr(k), y); + env_data_maxyr(k) = max(env_data_maxyr(k), y); + } + } + echoinput << " process environmental input data" << endl; + for (k = 1; k <= N_envvar; k++) + { + if (env_data_N(k) > 0) + { + env_data_mean(k) /= env_data_N(k); + } + else + { // no data + } + if (env_data_N(k) > 1) + { + temp = env_data_stdev(k) / (env_data_N(k) - 1.); + env_data_stdev(k) = sqrt(temp - env_data_mean(k) * env_data_mean(k)); + } + else + { // no data + } + echoinput << k << " N " << env_data_N(k) << " min-max year " << env_data_minyr(k) << " " << env_data_maxyr(k) << " mean " << env_data_mean(k) << " stdev " << env_data_stdev(k) << " subtract mean " << env_data_do_mean(k) << " divide stddev " << env_data_do_stdev(k) << endl; + } + } + } + // clang-format off + END_CALCS + + +!!// SS_Label_Info_3.2 #Create complete list of years for STD reporting + ivector STD_Yr_Reverse(styr-2,YrMax); // contains 0/1 for each year to indicate std reporting + ivector STD_Yr_Reverse_Dep(styr-2,YrMax); // contains index number to i'th depletion (e.g. Bratio) std + ivector STD_Yr_Reverse_Ofish(styr-2,YrMax); // ditto + ivector STD_Yr_Reverse_F(styr-2,YrMax); // ditto + int N_STD_Yr_Dep; + int N_STD_Yr_Ofish; + int N_STD_Yr_F; + int N_STD_Mgmt_Quant; + + LOCAL_CALCS + // clang-format on + if (STD_Yr_min < 0 || STD_Yr_min < (styr - 2)) + STD_Yr_min = styr - 2; + if (STD_Yr_max == -1) + STD_Yr_max = endyr + 1; + if (STD_Yr_max == -2) + STD_Yr_max = YrMax; + if (STD_Yr_max > YrMax) + STD_Yr_max = YrMax; + STD_Yr_Reverse.initialize(); + for (y = STD_Yr_min; y <= STD_Yr_max; y++) + { + STD_Yr_Reverse(y) = 1; + } + STD_Yr_Reverse(styr - 2) = 1; + STD_Yr_Reverse(styr - 1) = 1; + STD_Yr_Reverse(styr) = 1; + for (i = 1; i <= N_STD_Yr_RD; i++) + { + if (STD_Yr_RD(i) >= styr && STD_Yr_RD(i) <= YrMax) + { + STD_Yr_Reverse(STD_Yr_RD(i)) = 1; + } + } + N_STD_Yr = sum(STD_Yr_Reverse); // count number of years for which std is requested + + STD_Yr_Reverse_Dep.initialize(); + STD_Yr_Reverse_Ofish.initialize(); + STD_Yr_Reverse_F.initialize(); + j = 0; + N_STD_Yr_Dep = 0; + N_STD_Yr_Ofish = 0; + N_STD_Yr_F = 0; + + echoinput << "SPR_reporting " << SPR_reporting << endl; + echoinput << "F_reporting " << F_reporting << endl; + for (y = styr - 2; y <= YrMax; y++) + { + if (STD_Yr_Reverse(y) > 0) + { + j++; + STD_Yr_Reverse(y) = j; // use for SSB and recruitment + if (y >= styr) + { + // depletion must start in year AFTER first catch. It could vary earlier if recdevs happened enough earlier to change SSBio, but this is not included + if ((depletion_basis > 0 && y > first_catch_yr) || y == endyr) + { + N_STD_Yr_Dep++; + STD_Yr_Reverse_Dep(y) = N_STD_Yr_Dep; + } + if (y <= endyr) + { + if ((SPR_reporting > 0 && totcat(y) > 0.0) || y == endyr) + { + N_STD_Yr_Ofish++; + STD_Yr_Reverse_Ofish(y) = N_STD_Yr_Ofish; + } + if ((F_reporting > 0 && totcat(y) > 0.0) || y == endyr) + { + N_STD_Yr_F++; + STD_Yr_Reverse_F(y) = N_STD_Yr_F; + } + } + else + { + if (SPR_reporting > 0) + { + N_STD_Yr_Ofish++; + STD_Yr_Reverse_Ofish(y) = N_STD_Yr_Ofish; + } + if (F_reporting > 0) + { + N_STD_Yr_F++; + STD_Yr_Reverse_F(y) = N_STD_Yr_F; + } + } + } + } + } + echoinput << "Finished creating STD containers and indexes " << endl + << " STD_SSB_Recr " << STD_Yr_Reverse << endl + << " STD_deplet " << STD_Yr_Reverse_Dep << endl + << " STD_SPR " << STD_Yr_Reverse_Ofish << endl + << " STD_F " << STD_Yr_Reverse_F << endl; + // clang-format off + END_CALCS +// SS_Label_file #4. **SS_readcontrol.tpl** +// SS_Label_file # * read *control_file* named in starter.ss +// SS_Label_file # * define and read needed parameters from model options selected +// SS_Label_file # * creates labels for those parameters +// SS_Label_file # * uses a function found in SS_global, create_timevary(), to create, index and label time-varying parameters; including autogeneration option +// SS_Label_file # * creates and labels derived quantities +// SS_Label_file # * creates covariance matrix +// SS_Label_file # * reads *wt_at_age.ss* if requested +// SS_Label_file # * finish DATA_SECTION + + LOCAL_CALCS + // clang-format on + //********CONTROLS******************************** + // SS_Label_Info_4.0 #Begin Reading from Control File + // /* SS_Label_Flow begin reading from control file */ + ad_comm::change_datafile_name(ctlfilename); + echoinput << endl + << " Begin reading control file " << endl; + cout << " reading from control file" << endl; + ifstream Control_Stream(ctlfilename); // even if the global_datafile name is used, there still is a different logical device created + + // SS_Label_Info_4.1 #Read and store comments at top of control file + k = 0; + N_CC = 0; + while (k == 0) + { + Control_Stream >> readline; // reads the line from input stream + if (length(readline) > 2) + { + checkchar = readline(1); + k = strcmp(checkchar, "#"); + checkchar = readline(1, 2); + j = strcmp(checkchar, "#C"); + if (j == 0) { + N_CC++; + Control_Comments += readline; + } + } + } + // clang-format off + END_CALCS + +// when a parameter is defined and its label (hence usage) is created, +// the value of its min, max, init, prior have not yet been read +// so when it gets created, need to pushback a code to indicate what special conditions affect it +// also may want to save indicator of whether the parameter is multiplier, logit, etc. +// so push_back a code to the ivector Parm_minmax +// and add a string to the adstring_array Parm_info + ivector minmax_types(1,10) // set of canned min-max types + +!!// SS_Label_Info_4.2 #Read info for growth patterns, gender, settlement events, platoons + init_int WTage_rd // 0 means do not read wtatage.ss; 1 means read and use wtatage.ss and also read and use growth parameters + // future option 2 will suppress reading and use of growth +!!echoinput< 0) timevary_MG_firstyr = styr; + init_int N_GP // number of growth patterns (morphs) +!!echoinput< 0) + { + // Remove unnecessary or confusing reports (issue #383) + pick_report_use(8) = "N"; + pick_report_use(27) = "N"; + pick_report_use(31) = "N"; + pick_report_use(38) = "N"; + pick_report_use(42) = "N"; + // Incompatible option, fatal condition + if (nobs_mnwt > 0) + { + warnstream << "expected value for mean body-wt will be from the growth curve, not from empirical wtatage.ss"; + write_message (WARN, 1); + } + } + + if (N_platoon > 1) + { + *(ad_comm::global_datafile) >> sd_ratio_rd; + *(ad_comm::global_datafile) >> platoon_distr; + echoinput << sd_ratio_rd << " sd_ratio_rd" << endl; + echoinput << platoon_distr << " platoon_distr" << endl; + } + else + { + sd_ratio_rd = 1.; + platoon_distr(1) = 1.; + echoinput << " do not read sd_ratio or platoon_distr" << endl; + } + // SS_Label_Info_4.2.1 #Assign distribution among growth platoons if needed + if (platoon_distr(1) < 0.) + { + if (N_platoon == 1) + { + platoon_distr(1) = 1.; + } + else if (N_platoon == 3) + { + platoon_distr.fill("{0.15,0.70,0.15}"); + } + else if (N_platoon == 5) + { + platoon_distr.fill("{0.031, 0.237, 0.464, 0.237, 0.031}"); + } + } + platoon_distr /= sum(platoon_distr); + // calculate stdev values + if (sd_ratio_rd < 0) + { + platoon_sd_ratio = -sd_ratio_rd; + warnstream << "sd_ratio read is < 0, so expecting sd parameter after movement params."; + write_message (NOTE, 1); + } + else + { + platoon_sd_ratio = sd_ratio_rd; + } + if (N_platoon > 1) + { + sd_between_platoon = sqrt(1. / (1. + platoon_sd_ratio * platoon_sd_ratio)); + sd_within_platoon = platoon_sd_ratio * sd_between_platoon; + } + else + { + sd_between_platoon = 0.000001; + sd_within_platoon = 1; + } + + if (N_platoon == 1) + { + ishadow(1) = 0; + shadow(1) = 0.; + } + else if (N_platoon == 3) + { + ishadow.fill_seqadd(-1, 1); + shadow.fill_seqadd(-1., 1.); + } + else if (N_platoon == 5) + { + ishadow.fill_seqadd(-2, 1); + shadow.fill_seqadd(-2., 1.); + } + else + { + warnstream << "illegal N platoons: " << N_platoon << "; must be 1, 3 or 5 " ; + write_message (FATAL, 1); // EXIT! + } + // clang-format off + + END_CALCS + +!!// SS_Label_Info_4.2.2 #Define distribution of recruitment(settlement) among growth patterns, areas, months + + int recr_dist_method // 1=like 3.24 (not used); 2=main effects for GP, Settle timing, Area; 3=each Settle entity; 4=no parms (only if GPXsettleXarea=1) + int recr_dist_area // 1=global SRR; 2=area-specific SRR + int N_settle_assignments // number of assigned settlements for GP, Settle_month, Area (>=0) + int N_settle_assignments_rd // number read, needed to distinguish between ss3.24 and SS3.30 setup + int N_settle_timings // number of recruitment settlement timings per spawning (>=1) - important for number of morphs calculation + // will be calculated from the number of unique settle_months among the settle_assignments + int settle // index to settle_assignments + int settle_time // index to setting timings + int Comp_Err_Parm_Start + int recr_dist_inx + LOCAL_CALCS + // clang-format on + * (ad_comm::global_datafile) >> recr_dist_method; + echoinput << recr_dist_method << " # Recruitment distribution method; where: 2=parms for main effects for GP, Area, Settle timing; 3=one parm for each Settle event" << endl; + *(ad_comm::global_datafile) >> recr_dist_area; + echoinput << recr_dist_area << " # future option for recr_dist_area: 1 is hardwired to do global SRR; 2 in future will do area-specific SRR" << endl; + recr_dist_area = 1; //hardwire for testing + N_settle_assignments_rd = 0; + N_settle_assignments = 1; // default + + switch (recr_dist_method) + { + case 1: + { + *(ad_comm::global_datafile) >> N_settle_assignments_rd; + *(ad_comm::global_datafile) >> recr_dist_inx; + N_settle_assignments = N_settle_assignments_rd; + break; + } + case 2: + { + *(ad_comm::global_datafile) >> N_settle_assignments; + *(ad_comm::global_datafile) >> recr_dist_inx; + break; + } + case 3: + { + *(ad_comm::global_datafile) >> N_settle_assignments; + *(ad_comm::global_datafile) >> recr_dist_inx; + break; + } + case 4: + { + *(ad_comm::global_datafile) >> N_settle_assignments; + *(ad_comm::global_datafile) >> recr_dist_inx; + if (N_settle_assignments > 1) + { + warnstream << "Need to change to recr_dist_method=3 because >1 settle assignments requested"; + write_message (FATAL, 0); // EXIT! + } + break; + } + } + echoinput << N_settle_assignments << " Number of settlement events: GP/area/month to read (>=0) " << endl; + if (recr_dist_method == 1) + { + warnstream << "recr_dist_method cannot be 1 in SS3.30 "; + write_message (FATAL, 0); // EXIT! + } + else if (N_settle_assignments == 1 && recr_dist_method != 4) + { + warnstream << "This model has just one settlement event. Changing to recr_dist_method 4 and removing the recruitment distribution parameters at the end of the MG parms section (below growth parameters) will produce identical results and simplify the model."; + write_message (SUGGEST, 0); + } + else if (recr_dist_method == 2) + { + warnstream << " recr_dist_method 3 is simpler and takes 1 parm for each settlement"; + write_message (SUGGEST, 0); + } + echoinput << recr_dist_inx << " # unused option " << endl; + // clang-format off + END_CALCS + + int birthseas; // is this still needed?? + + matrix settlement_pattern_rd(1,N_settle_assignments,1,4); // for each settlement event: GPat, Month, area, age + ivector settle_assignments_timing(1,N_settle_assignments); // stores the settle_timing index for each assignment + matrix settle_timings_tempvec(1,N_settle_assignments,1,2) // temporary storage for real_month and age of each settlement_timing + // dimensioned by assignments, but only uses N_settle_timings of these + LOCAL_CALCS + // clang-format on + *(ad_comm::global_datafile) >> + settlement_pattern_rd; + echoinput << " settlement pattern as read " << endl + << "GPat Month Area Age" << endl + << "*" << settlement_pattern_rd << "*" << endl; + echoinput << "Now calculate the number of unique settle timings, which will dictate the number of recr_dist_timing parameters " << endl; + N_settle_timings = 0; + settle_timings_tempvec.initialize(); + if (N_settle_assignments == 0) + { + N_settle_timings = 1; + settle_timings_tempvec(1, 1) = 1.0; + settle_timings_tempvec(1, 2) = 0; + } + else + { + for (settle = 1; settle <= N_settle_assignments; settle++) + { + real_month = settlement_pattern_rd(settle, 2); + int settle_age_here = settlement_pattern_rd(settle, 4); + if (N_settle_timings == 0) + { + N_settle_timings++; + settle_timings_tempvec(N_settle_timings, 1) = real_month; + settle_timings_tempvec(N_settle_timings, 2) = settle_age_here; + settle_assignments_timing(settle) = N_settle_timings; + } + else + { + k = 0; + for (j = 1; j <= N_settle_timings; j++) + { + if (settle_timings_tempvec(j, 1) == real_month && settle_timings_tempvec(j, 2) == settle_age_here) // found matching settle_time + { + settle_assignments_timing(settle) = j; + k = 1; + } + } + if (k == 0) + { + N_settle_timings++; + settle_timings_tempvec(N_settle_timings, 1) = real_month; + settle_timings_tempvec(N_settle_timings, 2) = settle_age_here; + settle_assignments_timing(settle) = N_settle_timings; + } + } + } + } + echoinput << "N settle timings: " << N_settle_timings << endl + << " unique_settle_times: " << endl + << settle_timings_tempvec << endl; + echoinput << "settle events use these settle_times: " << settle_assignments_timing << endl; + + if (recr_dist_method == 2) + { + echoinput << " Need to read N_GP * Narea * N_settletimings=" << N_GP * pop * N_settle_timings << " recruitment distribution parameters " << endl; + } + else if (recr_dist_method == 3) + { + echoinput << " Need to read N_settle_assignments=" << N_settle_assignments << " recruitment distribution parameters " << endl; + } + + // SS_Label_Info_4.2.3 #Set-up arrays and indexing for growth patterns, gender, settlements, platoons + // clang-format off + END_CALCS + int g3i; +// SPAWN-RECR: define settlement timings + ivector Settle_seas(1,N_settle_timings) // calculated season in which settlement occurs + ivector Settle_seas_offset(1,N_settle_timings) // calculated number of seasons between spawning and the season in which settlement occurs + vector Settle_timing_seas(1,N_settle_timings) // calculated elapsed time (frac of year) between settlement and the begin of season in which it occurs + vector Settle_month(1,N_settle_timings) // month (real)in which settlement occurs + ivector Settle_age(1,N_settle_timings) // calculated age at which settlement occurs, with age 0 being the year in which spawning occurs + 3iarray recr_dist_pattern(1,N_GP,1,N_settle_timings,0,pop); // has flag to indicate each settlement events + + LOCAL_CALCS + // clang-format on + Settle_seas_offset.initialize(); + Settle_timing_seas.initialize(); + Settle_age.initialize(); + Settle_seas.initialize(); + recr_dist_pattern.initialize(); + + echoinput << "Calculated assignments in which settlement occurs " << endl + << "Settle_event / Month / Seas / Seas_from_spawn / time_from_seas_start / age_at_settle" << endl; + if (N_settle_assignments > 0) + { + for (settle = 1; settle <= N_settle_assignments; settle++) + { + gp = settlement_pattern_rd(settle, 1); // growth patterns + p = settlement_pattern_rd(settle, 3); // settlement area + settle_time = settle_assignments_timing(settle); + Settle_age(settle_time) = settlement_pattern_rd(settle, 4); // settlement age as read + recr_dist_pattern(gp, settle_time, p) = 1; // indicates that settlement will occur here + recr_dist_pattern(gp, settle_time, 0) = 1; // for growth updating + Settle_month(settle_time) = settle_timings_tempvec(settle_time, 1); + } + for (settle_time = 1; settle_time <= N_settle_timings; settle_time++) + { + j = 0; // temp value for calculated settlement age + if (spawn_month > Settle_month(settle_time)) + { + k = 1; + j++; // so sets season 1 as earliest possible settlement at age 1 + } + else + { + k = spawn_seas; // earliest possible season for settlement at age 0 + } + temp = azero_seas(k); // annual elapsed time fraction at begin of this season + Settle_timing_seas(settle_time) = (Settle_month(settle_time) - 1.0) / sumseas; // fraction of year at settlement month + + while ((temp + seasdur(k)) <= Settle_timing_seas(settle_time)) + { + temp += seasdur(k); + if (k == nseas) + { + k = 1; + j++; + } + else + { + k++; + } + } + if (j != Settle_age(settle_time)) + { + warnstream << "settle_month is less than spawn_month, so logical age at settlement calculated to be: " << j + << " for settle_time " << settle_time << ". Does not match read value of " << Settle_age(settle_time) << " are you sure? "; + write_message (NOTE, 0); + } + Settle_seas(settle_time) = k; + Settle_seas_offset(settle_time) = Settle_seas(settle_time) - spawn_seas + j * nseas; // number of seasons between spawning and the season in which settlement occurs + Settle_timing_seas(settle_time) -= temp; // timing from beginning of this season; needed for mortality calculation + echoinput << settle_time << " / " << Settle_month(settle_time); + echoinput << " / " << Settle_seas(settle_time) << " / " << Settle_seas_offset(settle_time) << " / " + << Settle_timing_seas(settle_time) << " / " << Settle_age(settle_time) << endl; + if (Settle_seas_offset(settle_time) == 0 && spawn_time_seas > 0.0) + { + warnstream << "Cannot have spawn_time_seas after beginning of a season and settlements in the same season" << endl + << "++ put spawning at beginning of the season, or move settlements to next season"; + write_message (FATAL, 0); // EXIT! + } + } + } + else + { + recr_dist_pattern(1, 1, 1) = 1; + recr_dist_pattern(1, 1, 0) = 1; + Settle_month(1) = 1.; + Settle_timing_seas(1) = 0.0; + Settle_seas(1) = 1; + Settle_seas_offset(1) = 0; + Settle_age(1) = 0; + } + + gmorph = gender * N_GP * N_settle_timings * N_platoon; // total potential number of biological entities, some may not get used so see use_morph(g) + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.2.1.1 #Define indexing vectors to keep track of characteristics of each morph + ivector sx(1,gmorph) // define sex for each growth morph + ivector GP4(1,gmorph) // index to GPat + ivector GP(1,gmorph) // index for gender*GPat; note that gp is nested inside gender + ivector GP3(1,gmorph) // index for main gender*GPat*settlement + ivector GP2(1,gmorph) // reverse pointer for platoon + imatrix g_finder(1,N_GP,1,gender) // reverse pointer to middle "g" for each main morph (used only with Growth_Std + ivector g_Start(1,N_GP*gender) // base "g" for this growth pattern + ivector Bseas(1,gmorph) // birth season +// following two containers are used to track which morphs are being used + ivector use_morph(1,gmorph) + imatrix TG_use_morph(1,N_TG2,1,gmorph) + imatrix ALK_range_g_lo(1,N_subseas*nseas*gmorph,0,nages) + imatrix ALK_range_g_hi(1,N_subseas*nseas*gmorph,0,nages) + + vector azero_G(1,gmorph); // time since Jan 1 at beginning of settlement in which "g" was born + 3darray real_age(1,gmorph,1,nseas*N_subseas,0,nages); // real age since settlement + 3darray keep_age(1,gmorph,1,nseas*N_subseas,0,nages); // set to 0.0 if real_age<0. this allows omitting virtual young fish to be excluded from expected values + 3darray calen_age(1,gmorph,1,nseas*N_subseas,0,nages); // real age since Jan 1 of spawn year + + 3darray lin_grow(1,gmorph,1,nseas*N_subseas,0,nages) // during linear phase has fraction of Size at Afix + ivector settle_g(1,gmorph) // settlement pattern for each platoon + int ALK_count; + + LOCAL_CALCS + // clang-format on + ALK_count = 0; + + use_morph.initialize(); + TG_use_morph.initialize(); + keep_age.initialize(); + keep_age = 1.0; + + for (gp = 1; gp <= N_GP * gender; gp++) + { + g_Start(gp) = (gp - 1) * N_settle_timings * N_platoon + int(N_platoon / 2) + 1 - N_platoon; // find the mid-morph being processed + } + + g = 0; + g3i = 0; + echoinput << endl + << "MORPH_INDEXING" << endl; + echoinput << "g Sex GP Settlement Birth_Seas Platoon Platoon% Sex*GP Sex*GP*settle_time Used(0/1) SettleTime_frac_yr" << endl; + for (gg = 1; gg <= gender; gg++) + for (gp = 1; gp <= N_GP; gp++) + for (settle = 1; settle <= N_settle_timings; settle++) + { + g3i++; + { + for (gp2 = 1; gp2 <= N_platoon; gp2++) + { + g++; + GP3(g) = g3i; // track counter for main morphs (gender x pattern x settlement) + Bseas(g) = Settle_seas(settle); + sx(g) = gg; + GP(g) = gp + (gg - 1) * N_GP; // counter for pattern x gender so gp is nested inside gender + GP2(g) = gp2; // reverse pointer to platoon counter + GP4(g) = gp; // counter for growth pattern + settle_g(g) = settle; // to find the settlement timing for this platoon + azero_G(g) = (Settle_month(settle) - 1.0) / sumseas; // settlement month converted to fraction of year; could be > one year + for (p = 1; p <= pop; p++) + { + if (recr_dist_pattern(gp, settle, p) == 1) + { + use_morph(g) = 1; + } + } + if (use_morph(g) == 1) + { + if ((N_platoon == 1) || (N_platoon == 3 && gp2 == 2) || (N_platoon == 5 && gp2 == 3)) g_finder(gp, gg) = g; // finds g for a given GP and gender and last birstseason + } + echoinput << g << " " << sx(g) << " " << GP4(g) << " " << settle << " " << Bseas(g) << " " + << GP2(g) << " " << 100. * platoon_distr(GP2(g)) << " " << GP(g) << " " << GP3(g) << " " << use_morph(g) << " " << azero_G(g) << endl; + } + } + } + echoinput << "calen_age is elapsed years since beginning of year in which spawning occurred" << endl; + echoinput << "real_age is elapsed years since settlement" << endl; + echoinput << "g s subseas ALK_idx settle_time age@settle age real_age calen_age" << endl; + calen_age.initialize(); + real_age.initialize(); + keep_age.initialize(); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) == 1) + for (s = 1; s <= nseas; s++) + for (subseas = 1; subseas <= N_subseas; subseas++) + { + ALK_idx = (s - 1) * N_subseas + subseas; + settle_time = settle_g(g); + // real_age is real age since settlement and is used in growth calculations + // calen_age is real age since the beginning of the year in which spawning occurred + for (a = 0; a <= nages; a++) + { + calen_age(g, ALK_idx, a) = r_ages(a) + azero_seas(s) + double(subseas - 1) / double(N_subseas) * seasdur(s); + if (a < Settle_age(settle_time)) + { + real_age(g, ALK_idx, a) = 0.; + keep_age(g, ALK_idx, a) = 0.; + } + else if (a == Settle_age(settle_time)) + { + if (calen_age(g, ALK_idx, a) >= (azero_G(g) + Settle_age(settle_time))) + { + real_age(g, ALK_idx, a) = calen_age(g, ALK_idx, a) - azero_G(g) - Settle_age(settle_time); + keep_age(g, ALK_idx, a) = 1.; + } + else + { + real_age(g, ALK_idx, a) = 0.; + keep_age(g, ALK_idx, a) = 0.; + } + } + else + { + real_age(g, ALK_idx, a) = calen_age(g, ALK_idx, a) - azero_G(g) - Settle_age(settle_time); + keep_age(g, ALK_idx, a) = 1.; + } + if (a < 4) echoinput << g << " " << s << " " << subseas << " " << ALK_idx << " " << settle_time << " " << Settle_age(settle_time) + << " " << a << " " << real_age(g, ALK_idx, a) << " " << calen_age(g, ALK_idx, a) << endl; + } + } + + if (N_TG > 0) + { + for (TG = 1; TG <= N_TG; TG++) + { + for (g = 1; g <= gmorph; g++) + { + if (TG_release(TG, 6) > 2) + { + warnstream << "Gender for tag groups must be 0, 1 or 2 "; + write_message (WARN, 0); + } + if (use_morph(g) > 0 && (TG_release(TG, 6) == 0 || TG_release(TG, 6) == sx(g))) TG_use_morph(TG, g) = 1; + } + } + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.3 #Define movement between areas + int do_migration // number of explicit movements to define + number migr_firstage + matrix migr_start(1,nseas,1,N_GP) + LOCAL_CALCS + // clang-format on + migr_firstage = 0.0; + do_migration = 0; + if (pop > 1) + { + *(ad_comm::global_datafile) >> do_migration; + echoinput << do_migration << " N_migration definitions to read" << endl; + if (do_migration > 0) + { + *(ad_comm::global_datafile) >> migr_firstage; + echoinput << migr_firstage << " migr_firstage" << endl; + } + } + else + { + echoinput << " only 1 area, so no read of do_migration or migr_firstage " << endl; + } + // clang-format off + END_CALCS + init_matrix move_def(1,do_migration,1,6) // seas morph source dest minage maxage +// ivector GP3(1,gmorph) // index for main gender*GPat*settlement in that order +// plan to revise such that movement is by GP3, not GP + 4iarray move_pattern(1,nseas,1,N_GP,1,pop,1,pop) + int do_migr2 + ivector firstBseas(1,N_GP) + + LOCAL_CALCS + // clang-format on + move_pattern.initialize(); + do_migr2 = 0; + if (do_migration > 0) + { + echoinput << " migration setup " << endl + << move_def << endl; + for (k = 1; k <= do_migration; k++) + { + s = move_def(k, 1); + gp = move_def(k, 2); + p = move_def(k, 3); + p2 = move_def(k, 4); + move_pattern(s, gp, p, p2) = k; // save index for definition of this pattern to find the right parameters + } + k = do_migration; + for (s = 1; s <= nseas; s++) + for (gp = 1; gp <= N_GP; gp++) + for (p = 1; p <= pop; p++) + { + if (move_pattern(s, gp, p, p) == 0) { + k++; + move_pattern(s, gp, p, p) = k; + } // no explicit migration for staying in this area, so create implicit + } + + do_migr2 = k; // number of explicit plus implicit movement rates + migr_start.initialize(); + // need to modify so it only does the calc for the first settlement used for each GP??? + for (gp = 1; gp <= N_GP; gp++) + { + // use firstBseas so that the start age of migration is calculated only for the first birthseason used for each GP + firstBseas(gp) = 0; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (GP4(g) == gp && firstBseas(gp) == 0) firstBseas(gp) = Bseas(g); + } + } + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0 && firstBseas(GP4(g)) == Bseas(g)) + { + for (s = 1; s <= nseas; s++) + for (subseas = 1; subseas <= N_subseas; subseas++) + { + a = 0; + ALK_idx = (s - 1) * N_subseas + subseas; + while (real_age(g, ALK_idx, a) < migr_firstage) { + a++; + } + migr_start(s, GP4(g)) = a; + } + } + } + // clang-format off + END_CALCS + matrix move_def2(1,do_migr2,1,6) // movement definitions. First Do_Migration of these are explicit; rest are implicit + + LOCAL_CALCS + // clang-format on + if (do_migration > 0) + { + for (k = 1; k <= do_migration; k++) { + move_def2(k) = move_def(k); + } + k = do_migration; + for (s = 1; s <= nseas; s++) + for (gp = 1; gp <= N_GP; gp++) + for (p = 1; p <= pop; p++) + { + if (move_pattern(s, gp, p, p) > do_migration) + { + k++; + move_def2(k, 1) = s; + move_def2(k, 2) = gp; + move_def2(k, 3) = p; + move_def2(k, 4) = p; + move_def2(k, 5) = 0; + move_def2(k, 6) = nages; + } + } + echoinput << "move_def " << endl + << move_def2 << endl; + } + // clang-format off + END_CALCS + + +!!// SS_Label_Info_4.4 #Define the time blocks for time-varying parameters + int N_Block_Designs // read N block designs + ivector Nblk(1,1) + imatrix Block_Design(1,1,1,1) + LOCAL_CALCS + // clang-format on + * (ad_comm::global_datafile) >> + N_Block_Designs; + echoinput << N_Block_Designs << " N_Block_Designs" << endl; + if (N_Block_Designs > 0) + { + Nblk.deallocate(); + Nblk.allocate(1, N_Block_Designs); + *(ad_comm::global_datafile) >> Nblk(1, N_Block_Designs); + echoinput << Nblk << " N_Blocks_per design" << endl; + + ivector Nblk2; // temporary vector to create ragged array of dimensions for block matrix + Nblk2.allocate(1, N_Block_Designs); + Nblk2 = Nblk + Nblk; + Block_Design.deallocate(); + Block_Design.allocate(1, N_Block_Designs, 1, Nblk2); + bool endyrChk = false; + for (j = 1; j <= N_Block_Designs; j++) + { + *(ad_comm::global_datafile) >> Block_Design(j)(1, Nblk2(j)); + a = -1; + for (k = 1; k <= Nblk(j); k++) + { + a += 2; + b = a + 1; + if (Block_Design(j, b) == -1) + { + Block_Design(j, b) = endyr; + } + else if (Block_Design(j, b) == -2) + { + Block_Design(j, b) = YrMax; + } + // check block year values + if (Block_Design(j, b) > YrMax) + { + if (Block_Design(j, b) < 999) // manual suggests use of 9999, so 999 is safe choice here + { + warnstream << "Block_design:" << j << ", block: " << k << ", ends in: " << Block_Design(j, a + 1) << " reset to YrMax: " << YrMax; + write_message (ADJUST, 0); + } + Block_Design(j, b) = YrMax; + } + if (Block_Design(j, a) < styr - 1) + { + warnstream << "Block:" << j << " " << k << " starts before styr; resetting"; + write_message (ADJUST, 0); + Block_Design(j, a) = styr; + } + if (Block_Design(j, b) < Block_Design(j, a)) + { + warnstream << "Block:" << j << " " << k << " ends before it starts; fatal error"; + write_message (FATAL, 0); // EXIT! + } + if (Block_Design(j, b) < styr - 1) + { + warnstream << "Block:" << j << " " << k << " ends before styr; fatal error"; + write_message (FATAL, 1); // EXIT! + } + if (Block_Design(j, a) > retro_yr + 1) + { + warnstream << "Block:" << j << " " << k << " starts after retroyr+1; should not estimate "; + write_message (WARN, 0); + } + if (Block_Design(j, b) > retro_yr + 1) + { + warnstream << "Block:" << j << " " << k << " ends in: " << Block_Design(j, a + 1) << " after retroyr+1: " << retro_yr + 1; + write_message (WARN, 0); + } + if (Block_Design(j, a) > YrMax) + { + warnstream << "Block:" << j << " " << k << " starts in: " << Block_Design(j, a + 1) << " which is > YrMax: " << YrMax << " fatal error"; + write_message (FATAL, 0); // EXIT! + } + if (Block_Design(j, b) == endyr) + { + endyrChk = true; + } + } + echoinput << " block design #: " << j << " read year pairs: " << Block_Design(j) << endl; + } + if (endyrChk == true) + { + warnstream << "At least one block pattern ends in endyr. Check the output parameter value time series to see if the values in forecast years are as intended."; + write_message (WARN, 0); + } + } + else + { + Nblk.allocate(1, 1); + Block_Design.allocate(1, 1, 1, 1); + } + // clang-format off + END_CALCS + + init_int parm_adjust_method +!! echoinput< 1) N_predparms += N_pred * nseas; + natM_5_opt = 0; + MGparm_point.initialize(); + // 0=1Parm; 1=segmented; 2=Lorenzen; 3=agespecific; 4=agespec with seas interpolate; 5=Maunder_M; 6=Lorenzen range + *(ad_comm::global_datafile) >> natM_type; + echoinput << natM_type << " natM_type" << endl; + switch (natM_type) + { + case 0: + { + N_natMparms = 1; + break; + } + case 1: + { + *(ad_comm::global_datafile) >> N_natMparms; + echoinput << N_natMparms << " N breakpoints " << endl; + NatM_break.deallocate(); + NatM_break.allocate(1, N_natMparms); + *(ad_comm::global_datafile) >> NatM_break(1, N_natMparms); + echoinput << NatM_break << " NatM_age_segment_breaks " << endl; + break; + } + case 2: + { + N_natMparms = 1; + *(ad_comm::global_datafile) >> natM_amin; + echoinput << natM_amin << " natM_A for Lorenzen" << endl; + break; + } + case 3: + { + // same as 4 + } + case 4: + { + N_natMparms = 0; + Age_NatMort.deallocate(); + Age_NatMort.allocate(1, N_GP * gender, 0, nages); + for (gp = 1; gp <= N_GP * gender; gp++) + { + *(ad_comm::global_datafile) >> Age_NatMort(gp)(0, nages); + } + echoinput << " Age_NatMort empirical input: " << endl + << Age_NatMort << endl; + break; + } + case 5: + { + // Maunder et al. age and sex specific M + // A) read in an integer for the method to do maturity Maunder_MatType = 1,2,3 + *(ad_comm::global_datafile) >> natM_5_opt; + echoinput << " Maunder_NatMort option: " << natM_5_opt << endl; + N_natMparms = 4; + if (natM_5_opt == 3) N_natMparms = 6; + // Maunder_Mjuv = natMparms(1,gp); + // Maunder_lambda = natMparms(2,gp); + // Maunder_lmat = natMparms(3,gp); + // Maunder_Mmat = natMparms(4,gp); + // if(natM_5_opt==3){ //use two parameters mat50% and mat_slope. + // Maunder_L50 = natMparms(5,gp); + // Maunder_beta = natMparms(6,gp); + break; + } + case 6: + { + N_natMparms = 1; + *(ad_comm::global_datafile) >> natM_amin; + echoinput << natM_amin << " natM_minage for Lorenzen" << endl; + *(ad_comm::global_datafile) >> natM_amax; + echoinput << natM_amax << " natM_maxage for Lorenzen" << endl; + break; + } + } + // clang-format off + END_CALCS + +// read growth setup + init_int Grow_type // 1=vonbert; 2=Richards; 3=age-specific K ascend; 4=age-specific K descend; 5=age-specific K; 6=read vector(not implemented); 8=growth cessation +!!echoinput<=3 && Grow_type<=5) {do_ageK=1; k=5;} // number of ages for age-specific K + init_vector tempvec5(1,k) + int Age_K_count; + + LOCAL_CALCS + // clang-format on + Age_K_count = 0; + if (k > 0) echoinput << tempvec5 << " # growth specifications: AFIX1 AFIX2 LINF_decay placeholder age-specific_K_ages" << endl; + k1 = 0; + AFIX = 0.; + AFIX2 = 999.; // this value invokes setting Linf equal to the L2 parameter + Linf_decay = 0.0; // initialize + if (Grow_type == 1) + { + N_growparms = 5; + AFIX = tempvec5(1); + AFIX2 = tempvec5(2); + Linf_decay = tempvec5(3); + // tempvec(4) is a placeholder + } + else if (Grow_type == 2 || Grow_type == 8) + { + N_growparms = 6; + AFIX = tempvec5(1); + AFIX2 = tempvec5(2); + Linf_decay = tempvec5(3); + if (Grow_type == 8 && AFIX2 != 999) + { + warnstream << "AFIX2 set to 999 for grow_type==8 because only Linfinity allowed for growth cessation "; + write_message (ADJUST, 0); + AFIX2 = 999.; + } + if (Grow_type == 8 && AFIX != 0.0) + { + warnstream << "AFIX set to 0.0 for grow_type==8; growth cessation "; + write_message (ADJUST, 0); + AFIX2 = 0.0; + } + // tempvec(4) is a placeholder + } + else if (do_ageK == 1) + { + AFIX = tempvec5(1); + AFIX2 = tempvec5(2); + Linf_decay = tempvec5(3); + // tempvec(4) is a placeholder + Age_K_count = tempvec5(5); + echoinput << " read this number of ages for age-specific K " << Age_K_count << endl; + N_growparms = 5 + Age_K_count; + } + else if (Grow_type == 6) // not implemented + { + N_growparms = 2; // for the two CV parameters + k1 = N_GP * gender; // for reading empirical length_at_age + } + + echoinput << " N_growparms " << N_growparms << endl; + AFIX2_forCV = AFIX2; + if (AFIX2_forCV > nages) AFIX2_forCV = nages; + + AFIX_delta = AFIX2 - AFIX; + if (AFIX != 0.0) + { + AFIX_plus = AFIX; + } + else + { + AFIX_plus = 1.0e-06; + } + N_M_Grow_parms = N_natMparms + N_growparms; + lin_grow.initialize(); + + echoinput << "g a seas subseas ALK_idx real_age calen_age lin_grow first_grow_age" << endl; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (a = 0; a <= nages; a++) + { + for (s = 1; s <= nseas; s++) + for (subseas = 1; subseas <= N_subseas; subseas++) + { + ALK_idx = (s - 1) * N_subseas + subseas; + // if(a==0 && s0) echoinput<<"Age-specific_K_points"<0) echoinput<<" Len_At_Age_rd"< 1) + { + if (Grow_type == 3) + { + for (j = 2; j <= Age_K_count; j++) + { + if (Age_K_points(j) <= Age_K_points(j - 1)) + { + warnstream << "Age K points must be unique and ascending order "; + write_message (FATAL, 0); // EXIT! + } + } + } + else if (Grow_type == 4 || Grow_type == 5) + { + for (j = 2; j <= Age_K_count; j++) + { + if (Age_K_points(j) >= Age_K_points(j - 1)) + { + warnstream << "Age K points must be unique and decending order "; + write_message (FATAL, 0); // EXIT! + } + } + } + } + Grow_logN = 0; + switch (CV_depvar) + { + case 0: + { + CV_depvar_a = 0; + CV_depvar_b = 0; + break; + } + case 1: + { + CV_depvar_a = 1; + CV_depvar_b = 0; + break; + } + case 2: + { + CV_depvar_a = 0; + CV_depvar_b = 1; + break; + } + case 3: + { + CV_depvar_a = 1; + CV_depvar_b = 1; + break; + } + case 4: + { + CV_depvar_a = 1; + CV_depvar_b = 1; + Grow_logN = 1; + break; + } + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.5.2 #Process biology + int do_fec_len // switch based on maturity option to trigger fecundity calcs + init_int Maturity_Option // 1=length logistic; 2=age logistic; 3=read age-maturity + // 4=read age-fecundity; 5=read age-fec from wtatage.ss; 6=read length-maturity + // options 1, 2, 3, 6 can be used with fecundity options to create fecundity-at-age: fec(g) + // options 4 and 5 read fecundity directly, so the concept of maturity is not defined + LOCAL_CALCS + // clang-format on + echoinput << Maturity_Option << " Maturity_Option" << endl; + if (Maturity_Option == 3 || Maturity_Option == 4) + { + k1 = N_GP; + } + else + { + k1 = 0; + } + if (Maturity_Option == 6) + { + k2 = N_GP; + } + else + { + k2 = 0; + } + if (Maturity_Option == 4 || Maturity_Option == 5) { + do_fec_len = 0; + } + else { + do_fec_len = 1; + } + + if (Maturity_Option == 5) + { + echoinput << " fecundity and weight at age to be read from file: wtatage.ss" << endl; + if (WTage_rd == 0) + { + warnstream << "Must set WTage_rd to 1 to use wtatage.ss"; + write_message (FATAL, 0); // EXIT! + } + } + // clang-format off + END_CALCS + init_matrix Age_Maturity(1,k1,0,nages) // for maturity option 3 or 4 + init_matrix Length_Maturity(1,k2,1,nlength) // for maturity option 6 +!!if(k1>0) echoinput<<" read Age_Maturity(3) or Age_Fecundity(4) for each GP"<0) echoinput<<" read Length_Maturity for each GP"<5) {warnstream<<"Illegal fecundity option: "<> Hermaphro_Option; + echoinput << Hermaphro_Option << " Hermaphro_Option: 0 means No; 1 for F to M; -1 for M to F" << endl; + if (Hermaphro_Option != 0) + { + *(ad_comm::global_datafile) >> Hermaphro_seas_rd; // -1 for all seasons, or integer for particular season <=nseas + echoinput << Hermaphro_seas_rd << endl; + Hermaphro_seas = int(Hermaphro_seas_rd); + + // fractional part of Hermaphro_seas will be converted to the first age that switches + if (Hermaphro_seas_rd > 0) { + Hermaphro_firstage = int((Hermaphro_seas_rd - Hermaphro_seas) * 10.0 + 1.0e-6); + } + else + { + Hermaphro_firstage = int((abs(Hermaphro_seas_rd) - 1) * 10.0 + 1.0e-6); + } + // so 2.3 will do switch in season 2 beginning with age 3. + echoinput << Hermaphro_seas << " Hermaphro_season (-1 means all seasons)" << endl; + echoinput << Hermaphro_firstage << " Hermaphro_firstage (from decimal part of seas input; note that firstage can only be a single digit, so 9 is max" << endl; + *(ad_comm::global_datafile) >> Hermaphro_maleSSB; // read as a fraction (0.0 to 1.0) of the male SSB added into the total SSB + echoinput << Hermaphro_maleSSB << " Hermaphro_maleSSB " << endl; + } + // clang-format off + END_CALCS +// if Hermaphro_Option=1, then read 3 parameters for switch from female to male by age +// if Hermaphro_Option=-1, then read 3 parameters for switch from male to female by age +// FUTURE if Hermaphro_Option=2, then read 3 parameters for switch from female to male by age for each GrowPattern +// FUTURE if Hermaphro_Option=3, then read 3 parameters for switch from female to male by length +// FUTURE if Hermaphro_Option=4, then read 3 parameters for switch from female to male by length for each GrowPattern + + init_int MGparm_def // offset approach (1=none, 2= M, G, CV_G as offset from female-GP1, 3=like SS2 V1.x) +!! echoinput< 3) + { + warnstream << "Illegal parm_adjust_method; must be 1 or 2 or 3 "; + write_message (FATAL, 0); // EXIT! + } + + ParCount = 0; + Parm_minmax.push_back(0); // to start real info at index "1" to align with ParCount + + // retParCount=-1; // for 3.24 -> 3.30 dome-shaped retention replace with ivector N_retparm() + + // SS_Label_Info_4.5.3 #Set up indexing and parameter names for MG parameters + for (gg = 1; gg <= gender; gg++) + { + for (gp = 1; gp <= N_GP; gp++) + { + MGparm_point(gg, gp) = ParCount + 1; // starting pointer + switch (natM_type) + { + case 0: + { + ParCount++; + ParmLabel += "NatM_uniform_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + break; + } + case 1: + { + for (k = 1; k <= N_natMparms; k++) + { + ParCount++; + onenum = " "; + sprintf(onenum, "%d", k); + ParmLabel += "NatM_break_" + onenum + "_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + } + break; + } + case 2: + { + ParCount++; + ParmLabel += "NatM_Lorenzen_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + break; + } + case 5: // new age and maturity specific by Mark Maunder + { + ParCount++; + ParmLabel += "NatM_juv_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + ParCount++; + ParmLabel += "NatM_power_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + ParCount++; + ParmLabel += "NatM_infl_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + ParCount++; + ParmLabel += "NatM_mature_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + if (natM_5_opt == 3) + { + ParCount++; + ParmLabel += "NatM_L50_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + ParCount++; + ParmLabel += "NatM_slope_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + } + break; + } + case 6: + { + ParCount++; + ParmLabel += "NatM_Lorenzen_average" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + break; + } + default: + { + break; + } + } + + switch (Grow_type) + { + case 1: + { + ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(3); + ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(2); + ParmLabel += "VonBert_K_" + GenderLbl(gg) + GP_Lbl(gp); + Parm_info += "val"; + Parm_minmax.push_back(1); + ParCount += 3; + break; + } + case 2: + { + ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "VonBert_K_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "Richards_" + GenderLbl(gg) + GP_Lbl(gp); + ParCount += 4; + break; + } + case 3: + { + ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "VonBert_K_young_" + GenderLbl(gg) + GP_Lbl(gp); + ParCount += 3; + for (a = 1; a <= Age_K_count; a++) + { + ParmLabel += "Age_K_mult_" + GenderLbl(gg) + GP_Lbl(gp) + "_a_" + NumLbl0(Age_K_points(a) + 1); + ParCount++; + } + break; + } + case 4: + { + ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "VonBert_K_old_" + GenderLbl(gg) + GP_Lbl(gp); + ParCount += 3; + for (a = 1; a <= Age_K_count; a++) + { + ParmLabel += "Age_K_mult_" + GenderLbl(gg) + GP_Lbl(gp) + "_a_" + NumLbl0(Age_K_points(a) + 1); + ParCount++; + } + break; + } + case 5: + { + ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "VonBert_K_old_" + GenderLbl(gg) + GP_Lbl(gp); + ParCount += 3; + for (a = 1; a <= Age_K_count; a++) + { + ParmLabel += "Age_K_each_" + GenderLbl(gg) + GP_Lbl(gp) + "_a_" + NumLbl0(Age_K_points(a) + 1); + ParCount++; + } + break; + } + case 8: + { + ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "Linf_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "VonBert_K_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "Cessation_" + GenderLbl(gg) + GP_Lbl(gp); + ParCount += 4; + break; + } + } + // init_int CV_depvar // select CV_growth pattern; 0 CV=f(LAA); 1 CV=F(A); 2 SD=F(LAA); 3 SD=F(A); 4 logSD=f(A) + if (CV_depvar <= 1) + { + ParmLabel += "CV_young_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "CV_old_" + GenderLbl(gg) + GP_Lbl(gp); + } + else if (CV_depvar <= 3) + { + ParmLabel += "SD_young_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "SD_old_" + GenderLbl(gg) + GP_Lbl(gp); + } + else + { + ParmLabel += "lnSD_young_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "LnSD_old_" + GenderLbl(gg) + GP_Lbl(gp); + } + + ParCount += 2; + ParmLabel += "Wtlen_1_" + GenderLbl(gg) + GP_Lbl(gp); + ParmLabel += "Wtlen_2_" + GenderLbl(gg) + GP_Lbl(gp); + ParCount += 2; + if (gg == 1) // add parms for maturity and fecundity for females only + { + ParmLabel += "Mat50%_" + GenderLbl(1) + GP_Lbl(gp); + ParmLabel += "Mat_slope_" + GenderLbl(1) + GP_Lbl(gp); + ParCount += 2; + if (Fecund_Option == 1) + { + ParmLabel += "Eggs/kg_inter_" + GenderLbl(1) + GP_Lbl(gp); + ParmLabel += "Eggs/kg_slope_wt_" + GenderLbl(1) + GP_Lbl(gp); + ParCount += 2; + } + else if (Fecund_Option == 2) + { + ParmLabel += "Eggs_scalar_" + GenderLbl(1) + GP_Lbl(gp); + ParmLabel += "Eggs_exp_len_" + GenderLbl(1) + GP_Lbl(gp); + ParCount += 2; + } + else if (Fecund_Option == 3) + { + ParmLabel += "Eggs_scalar_" + GenderLbl(1) + GP_Lbl(gp); + ParmLabel += "Eggs_exp_wt_" + GenderLbl(1) + GP_Lbl(gp); + ParCount += 2; + } + else if (Fecund_Option == 4) + { + ParmLabel += "Eggs_intercept_" + GenderLbl(1) + GP_Lbl(gp); + ParmLabel += "Eggs_slope_len_" + GenderLbl(1) + GP_Lbl(gp); + ParCount += 2; + } + else if (Fecund_Option == 5) + { + ParmLabel += "Eggs_intercept_" + GenderLbl(1) + GP_Lbl(gp); + ParmLabel += "Eggs_slope_Wt_" + GenderLbl(1) + GP_Lbl(gp); + ParCount += 2; + } + } + } + } + + if (Hermaphro_Option == 1 || Hermaphro_Option == -1) + { + MGparm_Hermaphro = ParCount + 1; // pointer to first hermaphroditism parameter + ParmLabel += "Herm_Infl_age"; + ParmLabel += "Herm_stdev"; + ParmLabel += "Herm_asymptote"; + ParCount += 3; + } + recr_dist_parms = ParCount + 1; // pointer to first recruitment distribution parameter + switch (recr_dist_method) + { + case 2: // new method with main effects only + { + for (k = 1; k <= N_GP; k++) { + ParCount++; + ParmLabel += "RecrDist_GP_" + NumLbl(k); + } + for (k = 1; k <= pop; k++) { + ParCount++; + ParmLabel += "RecrDist_Area_" + NumLbl(k); + } + for (k = 1; k <= N_settle_timings; k++) { + ParCount++; + ParmLabel += "RecrDist_month_" + NumLbl(Settle_month(k)); + } + break; + } + case 3: // new method with parm for each settlement + { + for (s = 1; s <= N_settle_assignments; s++) + { + ParCount++; + gp = settlement_pattern_rd(s, 1); // growth patterns + p = settlement_pattern_rd(s, 3); // settlement area + settle_time = settle_assignments_timing(s); + ParmLabel += "RecrDist_GP_" + NumLbl(gp) + "_area_" + NumLbl(p) + "_month_" + NumLbl(Settle_month(settle_time)); + } + break; + } + case 4: // no distribution of recruitments + { + break; + } + } + + MGP_CGD = ParCount + 1; // pointer to cohort growth deviation base parameter + ParCount++; + ParmLabel += "CohortGrowDev"; + + if (do_migration > 0) + { + for (k = 1; k <= do_migration; k++) + { + s = move_def(k, 1); + gp = move_def(k, 2); + p = move_def(k, 3); + p2 = move_def(k, 4); + ParCount++; + ParmLabel += "MoveParm_A_seas_" + NumLbl(s) + GP_Lbl(gp) + "from_" + NumLbl(p) + "to_" + NumLbl(p2); + ParCount++; + ParmLabel += "MoveParm_B_seas_" + NumLbl(s) + GP_Lbl(gp) + "from_" + NumLbl(p) + "to_" + NumLbl(p2); + } + } + + if (N_platoon > 1 && sd_ratio_rd < 0) + { + ParCount ++; + sd_ratio_param_ptr = ParCount; + ParmLabel += "Platoon_SD_Ratio"; + } + + if (Use_AgeKeyZero > 0) + { + AgeKeyParm = ParCount + 1; + for (k = 1; k <= 7; k++) + { + ParCount++; + ParmLabel += "AgeKeyParm" + NumLbl(k); + } + } + + catch_mult_pointer = -1; + j = sum(need_catch_mult); // number of fleets needing a catch multiplier parameter + if (j > 0) { + catch_mult_pointer = ParCount + 1; + } + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + j = fish_fleet_area(0, ff); + if (need_catch_mult(j) == 1) + { + ParCount++; + ParmLabel += "Catch_Mult:_" + NumLbl(j) + "_" + fleetname(j); + } + } + + frac_female_pointer = ParCount + 1; + for (gp = 1; gp <= N_GP; gp++) + { + ParCount++; + ParmLabel += "FracFemale_GP_" + NumLbl(gp); + } + predparm_pointer = -1; + for (int pc = 1; pc <= N_pred; pc++) + { + ParCount++; + predparm_pointer(pc) = ParCount; // first parm for this predator + onenum = " "; + sprintf(onenum, "%d", pc); + ParmLabel += "M2_pred" + onenum; + Parm_info += "val"; + Parm_minmax.push_back(3); + if (nseas > 1) + { + for (s = 1; s <= nseas; s++) + { + ParCount++; + onenum2 = " "; + sprintf(onenum2, "%d", s); + ParmLabel += "M2_pred" + onenum + "_s" + onenum2; + Parm_info += "val"; + Parm_minmax.push_back(3); + } + } + } + predparm_pointer(Nfleet + 1) = ParCount; + echoinput << " predparm pointer" << predparm_pointer << endl; + N_MGparm = ParCount; + // clang-format off + END_CALCS + + init_matrix MGparm_1(1,N_MGparm,1,14) // matrix with natmort and growth parms controls + ivector MGparm_offset(1,N_MGparm) + + LOCAL_CALCS + // clang-format on + //set base parm for cohort growth dev to permissable values + if (MGparm_1(MGP_CGD, 3) == 0 || (MGparm_1(MGP_CGD, 1) == MGparm_1(MGP_CGD, 2))) + { + MGparm_1(MGP_CGD, 1) = 0.1; //min + MGparm_1(MGP_CGD, 2) = 10.; //max + MGparm_1(MGP_CGD, 3) = 1.; //init + MGparm_1(MGP_CGD, 4) = 1.; //prior + MGparm_1(MGP_CGD, 5) = 1.; // prior_sd + MGparm_1(MGP_CGD, 6) = 0.; // prior type + MGparm_1(MGP_CGD, 7) = -1.; // phase + } + + echoinput << " Biology base parameter setup " << N_MGparm << endl; + for (i = 1; i <= N_MGparm; i++) + echoinput << i << " " << MGparm_1(i) << " " << ParmLabel(ParCount - N_MGparm + i) << endl; + + // find MGparms for which the male parameter value is set equal to the female value + // only applies for MGparm_def==1 which is direct estimation (no offsets) + // only for the natmort and growth parameters (not wtlen, fecundity, movement, recr distribution) + MGparm_offset.initialize(); + if (MGparm_def == 1 && gender == 2) + { + gg = 2; // males + for (gp = 1; gp <= N_GP; gp++) + { + Ip = MGparm_point(gg, gp) - 1; + for (j = 1; j <= N_M_Grow_parms; j++) + { + if (MGparm_1(Ip + j, 3) == 0.0 && MGparm_1(Ip + j, 7) < 0) MGparm_offset(Ip + j) = MGparm_point(1, gp) - 1 + j; // save reference to female parm if male value is zero and not estimated + } + } + } + // clang-format off + END_CALCS + + ivector mgp_type(1,N_MGparm) // contains category to parameter (1=natmort; 2=growth; 3=wtlen & fec; 4=recr_dist&femfrac; 5=movement; 6=ageerrorkey; 7=catchmult) + // labels for the types are found in: MGtype_Lbl + LOCAL_CALCS + // clang-format on + gp = 0; + for (gg = 1; gg <= gender; gg++) + for (GPat = 1; GPat <= N_GP; GPat++) + { + gp++; + Ip = MGparm_point(gg, GPat); + mgp_type(Ip, Ip + N_natMparms - 1) = 1; // natmort parms + Ip += N_natMparms; + mgp_type(Ip, Ip + N_growparms - 1) = 2; // growth parms + + // check on estimation of variance parameters for CV_young and CV_old + for (int kk = Ip + N_growparms - 2; kk <= Ip + N_growparms - 1; kk++) + { + if (MGparm_1(kk, 7) > 0) varparm_estimated(1) = 1; + if (MGparm_1(kk, 8) != 0 || MGparm_1(kk, 9) != 0 || MGparm_1(kk, 13) != 0) + { + warnstream << "CV of growth parameters cannot be time-varying"; + write_message (FATAL, 0); // EXIT! + } + } + // if(MGparm_1(Ip+N_growparms-2,7)>0) varparm_estimated(1)=1; // for CV_young + // if(MGparm_1(Ip+N_growparms-1,7)>0) varparm_estimated(1)=1; // for CV_old + + Ip = Ip + N_growparms; + mgp_type(Ip, Ip + 1) = 3; // wtlen + Ip += 2; + if (gg == 1) { + mgp_type(Ip, Ip + 3) = 3; + Ip += 4; + } // maturity and fecundity + } + if (Hermaphro_Option != 0) { + mgp_type(MGparm_Hermaphro, MGparm_Hermaphro + 2) = 3; + } // herma parameters done with wtlen and fecundity + if (recr_dist_method < 4) mgp_type(Ip, MGP_CGD - 1) = 4; // recruit apportionments + mgp_type(MGP_CGD) = 2; // cohort growth dev + if (do_migration > 0) mgp_type(MGP_CGD + 1, N_MGparm) = 5; // note that it fills until end of MGparm list, but some get overwritten + if (N_platoon > 1 && sd_ratio_rd < 0) mgp_type(sd_ratio_param_ptr) = 2; + if (Use_AgeKeyZero > 0) mgp_type(AgeKeyParm, N_MGparm) = 6; + if (catch_mult_pointer > 0) mgp_type(catch_mult_pointer, N_MGparm) = 7; + for (f = frac_female_pointer; f <= frac_female_pointer + N_GP - 1; f++) mgp_type(f) = 4; + if (N_pred > 0) mgp_type(predparm_pointer(1), predparm_pointer(1) + N_predparms - 1) = 1; + echoinput << "mgparm_type for each parm:"< 0) // env variable used + { + timevary_setup(7) = int(abs(MGparm_1(j, 8))) - k * 100; + k = timevary_setup(7); + // for(y=styr-1;y<=YrMax;y++) env_data_pass(y)=env_data_RD(y,k); + env_data_pass(1) = env_data_minyr(k); + env_data_pass(2) = env_data_maxyr(k); + } + else if (abs(MGparm_1(j, 8) > 0)) // density-dependence + { + timevary_setup(7) = -int(abs(MGparm_1(j, 8)) - k * 100); + do_densitydependent = 1; + echoinput << "Density-dependent flag for MGparms " << do_densitydependent << " MGparm: " << j << endl; + k = 0; + env_data_pass.initialize(); + } + + if (z > 0) // doing blocks + { + if (z > N_Block_Designs) + { + warnstream << "MG block request exceeds N_block patterns"; + write_message (FATAL, 0); // EXIT! + } + create_timevary(MGparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), mgp_type(j), Block_Design(z), env_data_pass, N_parm_dev, finish_starter); + } + else + { + create_timevary(MGparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), mgp_type(j), block_design_null, env_data_pass, N_parm_dev, finish_starter); + } + timevary_def.push_back(timevary_setup(1, 14)); + for (y = styr - 3; y <= YrMax + 1; y++) { + timevary_MG(y, mgp_type(j)) = timevary_pass(y); + } // year vector for this category of MGparm + if (j == MGP_CGD) CGD_onoff = 1; + if (mgp_type(j) == 6) // doing time-vary age-age' key; can only use blocks + { + store_agekey_add = Nblk(z) + 2; // additional storage space for block-based Age error keys + } + } + } + if (timevary_used == 1) autogen_timevary(1) = 1; // indicate that some parameter is time-varying + timevary_parm_cnt_MG = timevary_parm_cnt; + + // SS_Label_Info_4.5.9 #Set up random deviations for MG parms + // NOTE: the parms for the se of the devs are part of the MGparm2 list above, not the dev list below + + // SS_Label_Info_4.5.95 #Populate time_bio_category array defining when biology changes + k = YrMax + 1; + echoinput << "Display timevary_MG flag" << endl; + for (y = styr + 1; y <= YrMax; y++) + { + if (timevary_MG(y, 2) > 0 && y < k) k = y; + } + if (k < YrMax + 1) + { + for (y = k; y <= YrMax + 1; y++) + { + timevary_MG(y, 2) = 1; + } + } + for (y = styr - 1; y <= YrMax; y++) + { + for (f = 1; f <= 7; f++) + { + if (timevary_MG(y, f) > 0) + { + MG_active(f) = 1; + timevary_MG(y, 0) = 1; // tracks active status for all MG types + if(timevary_MG_firstyr == YrMax) timevary_MG_firstyr = y; // save for reporting in MSY and spawn_recruit output + } + } + + // timevary growth or maturity and Maunder M refers to that maturity + if ((timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0) && natM_type == 5 && natM_5_opt < 3) timevary_MG(y, 1) = 1; + + echoinput << y << " timevary_MG: " << timevary_MG(y) << endl; + } + + if( timevary_MG_firstyr < YrMax || WTage_rd == 1) // time-varying biology + { + if( timevary_bio_4SRR == 0) // legacy approach; this switch is read from starter.ss + { + warnstream << "There is timevary biology and the legacy approach to benchmark calculations is being used; user should be aware of possible impacts to benchmark results"; + write_message(WARN, 0); + if( timevary_bio_4SRR_rd == -1) // older starter file did not contain necessary flag + { + warnstream << "There is timevary biology, so the flag for timevary_bio_4SRR must be set to 0 (old default) or 1 (new improved) in starter.ss"; +// make this a WARN while testing, then change to FATAL for operational code + write_message(WARN, 0); + } + } + } + + for (y = endyr + 1; y <= YrMax; y++) + { + for (f = 1; f <= 7; f++) + { + if (timevary_MG(y, f) > 0 && Fcast_MGparm_ave(f,2) > 0) + { + warnstream << "mean MGparm for forecast is incompatible with timevary parm in forecast yr: " << y << "; for type: " << f << " " << MGtype_Lbl(f) << "; SS3 will disable time-vary"; + write_message(WARN, 0); + timevary_MG(y, f) = 0; + } + } + } + + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.5.7 #Set up seasonal effects for MG parms + init_ivector MGparm_seas_effects(1,10) // femwtlen1, femwtlen2, mat1, mat2, fec1 fec2 Malewtlen1, malewtlen2 L1 K + int MGparm_doseas + int N_MGparm_seas // number of MGparms that use seasonal effects + LOCAL_CALCS + // clang-format on + echoinput + << "seasonal effects as read: " << MGparm_seas_effects << endl; + adstring_array MGseasLbl; + MGseasLbl += "F-WL1" + CRLF(1); + MGseasLbl += "F-WL2" + CRLF(1); + MGseasLbl += "F-Mat1" + CRLF(1); + MGseasLbl += "F-Mat1" + CRLF(1); + MGseasLbl += "F-Fec1" + CRLF(1); + MGseasLbl += "F-Fec1" + CRLF(1); + MGseasLbl += "M-WL1" + CRLF(1); + MGseasLbl += "M-WL2" + CRLF(1); + MGseasLbl += "L1" + CRLF(1); + MGseasLbl += "VBK" + CRLF(1); + MGparm_doseas = sum(MGparm_seas_effects); + N_MGparm_seas = 0; // counter for assigned parms + if (MGparm_doseas > 0) + { + for (j = 1; j <= 10; j++) + { + if (MGparm_seas_effects(j) > 0) + { + MGparm_seas_effects(j) = N_MGparm + timevary_parm_cnt_MG + N_MGparm_seas; // store base parameter count + for (s = 1; s <= nseas; s++) + { + N_MGparm_seas++; + ParCount++; + ParmLabel += MGseasLbl(j) + "_seas_" + NumLbl(s); + } + } + } + echoinput << MGparm_seas_effects << " MGparm_seas_effects" << endl; + } + // clang-format off + END_CALCS + init_matrix MGparm_seas_1(1,N_MGparm_seas,1,7) // read matrix that defines the seasonal parms +!!if(N_MGparm_seas>0) echoinput<<" MGparm_seas"< 0) + { + MG_active(mgp_type(f)) = 1; + } + } + if ((natM_type == 2 || natM_type == 6) && MG_active(2) > 0) + { + MG_active(1) = 1; // lorenzen M depends on growth + } + + j = N_MGparm; + if (timevary_parm_cnt_MG > 0) + for (f = timevary_parm_start_MG; f <= timevary_parm_cnt_MG; f++) + { + j++; + MGparm_LO(j) = timevary_parm_rd[f](1); + MGparm_HI(j) = timevary_parm_rd[f](2); + MGparm_RD(j) = timevary_parm_rd[f](3); + MGparm_PR(j) = timevary_parm_rd[f](4); + MGparm_CV(j) = timevary_parm_rd[f](5); + MGparm_PRtype(j) = timevary_parm_rd[f](6); + MGparm_PH(j) = timevary_parm_rd[f](7); + } + + if (N_MGparm_seas > 0) + for (f = 1; f <= N_MGparm_seas; f++) + { + j++; + MGparm_LO(j) = MGparm_seas_1(f, 1); + MGparm_HI(j) = MGparm_seas_1(f, 2); + MGparm_RD(j) = MGparm_seas_1(f, 3); + MGparm_PR(j) = MGparm_seas_1(f, 4); + MGparm_CV(j) = MGparm_seas_1(f, 5); + MGparm_PRtype(j) = MGparm_seas_1(f, 6); + MGparm_PH(j) = MGparm_seas_1(f, 7); + } + MG_active(0) = sum(MG_active(1, 7)); + echoinput << "MG_active " << MG_active << endl; + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.6 #Read setup for Spawner-Recruitment parameters + // SPAWN-RECR: read setup for SR parameters: LO, HI, INIT, PRIOR, PRtype, CV, PHASE + init_int SR_fxn +!!echoinput< 0) varparm_estimated(2) = 1; // sigmaR is estimated so need sd_offset=1 + + if (SRparm_1(N_SRparm2, 3) != 0.0 || SRparm_1(N_SRparm2, 7) > 0) + { + SR_autocorr = 1; + } + else + { + SR_autocorr = 0; + } + // flag for recruitment autocorrelation + echoinput << " Do recruitment_autocorr: " << SR_autocorr << endl; + + // note that the regime parameter seems to bypass use of timevary_SRparm, but timevary_SRparm is used for R0, h beginning 3.30.24 + timevary_used = 0; + for (j = 1; j <= N_SRparm2 - 1; j++) // so omits autocorr + if (j != N_SRparm2 - 2) // because sigmaR cannot be time-varying + { + if (SRparm_1(j, 13) == 0 && SRparm_1(j, 8) == 0 && SRparm_1(j, 9) == 0) + { + // no time-vary parameter effects + } + else // set up a timevary parameter definition + { + timevary_used = 1; + ivector timevary_setup(1, 14); // temporary vector for timevary specs + timevary_setup.initialize(); + if (timevary_SRparm_first == 0) timevary_SRparm_first = timevary_parm_cnt + 1; // cumulative index for first timevary SRparm + echoinput << " timevary for SR parm: " << j << endl; + timevary_cnt++; // count parameters with time-vary effect + SRparm_timevary(j) = timevary_cnt; // base SR parameter will use this timevary specification + timevary_setup(1) = 2; // indicates a SR parm + if (autogen_timevary(2) == 0) + { + echoinput << " timevary SR parms will be autogenerated " << endl; + } + else + { + echoinput << " timevary SR parms will be read, not autogenerated " << endl; + } + timevary_setup(2) = j; // index of base parm within that type of parameter + timevary_setup(13) = firstSRparm + j; // index of base parm relative to ParCount which is continuous across all types of parameters + timevary_setup(3) = timevary_parm_cnt + 1; // first parameter within total list of all timevary parms + timevary_pass = 0; // placeholder; not used for SR parms + // set up env link info + echoinput << " check for env " << SRparm_1(j, 8) << endl; + k = int(abs(SRparm_1(j, 8)) / 100); // find the env link code + timevary_setup(6) = k; // link code for env + if (SRparm_1(j, 8) > 0) // env variable used + { + timevary_setup(7) = int(abs(SRparm_1(j, 8))) - k * 100; + k = timevary_setup(7); + // for(y=styr-1;y<=YrMax;y++) env_data_pass(y)=env_data_RD(y,k); + env_data_pass(1) = env_data_minyr(k); + env_data_pass(2) = env_data_maxyr(k); + } + else if (abs(SRparm_1(j, 8) > 0)) // density-dependence + { + timevary_setup(7) = -int(abs(SRparm_1(j, 8)) - k * 100); + do_densitydependent = 1; + k = 0; + env_data_pass.initialize(); + } + + if (SRparm_1(j, 13) > 0) // doing blocks + { + if (SRparm_1(j, 13) > N_Block_Designs) + { + warnstream << "SR block request exceeds N_block patterns"; + write_message (FATAL, 0); // EXIT! + } + create_timevary(SRparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), f, Block_Design(SRparm_1(j, 13)), env_data_pass, N_parm_dev, finish_starter); + } + else + { + create_timevary(SRparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), f, block_design_null, env_data_pass, N_parm_dev, finish_starter); + } + timevary_def.push_back(timevary_setup(1, 14)); + int SRflag; + SRflag = 0; + for (y = styr - 3; y <= YrMax + 1; y++) + { + if (timevary_pass(y) > 0 && j != N_SRparm2 - 1) + { + timevary_SRparm(y) = timevary_pass(y); // set timevary flag, except for regime parameter + timevary_SRparm_first_yr = y; + SRflag = 1; // first change point + } + else if(SRflag == 1) + { + timevary_SRparm(y) = 2; // flag to carry forward current SRR info + } + } + } + } + + N_SRparm3 = N_SRparm2; + if (timevary_SRparm_first > 0) + { + timevary_parm_SR_last = timevary_parm_cnt; + if (timevary_used == 1) autogen_timevary(2) = 1; // indicate that some parameter is time-varying + N_SRparm3 += (timevary_parm_SR_last - timevary_SRparm_first + 1); + echoinput << " SR timevary_parm_cnt start and end " << timevary_SRparm_first << " " << timevary_parm_SR_last << endl; + echoinput << "link to timevary parms: " << SRparm_timevary << endl; + } + echoinput << "SR_Npar and N_SRparm2 and N_SRparm3: " << N_SRparm(SR_fxn) << " " << N_SRparm2 << " " << N_SRparm3 << endl; + // clang-format off + END_CALCS + + vector SRparm_LO(1,N_SRparm3) + vector SRparm_HI(1,N_SRparm3) + vector SRparm_RD(1,N_SRparm3) + vector SRparm_PR(1,N_SRparm3) + ivector SRparm_PRtype(1,N_SRparm3) + vector SRparm_CV(1,N_SRparm3) + ivector SRparm_PH(1,N_SRparm3) + + LOCAL_CALCS + // clang-format on + for (i = 1; i <= N_SRparm2; i++) + { + SRparm_LO(i) = SRparm_1(i, 1); + SRparm_HI(i) = SRparm_1(i, 2); + SRparm_RD(i) = SRparm_1(i, 3); + SRparm_PR(i) = SRparm_1(i, 4); + SRparm_CV(i) = SRparm_1(i, 5); + SRparm_PRtype(i) = SRparm_1(i, 6); + SRparm_PH(i) = SRparm_1(i, 7); + } + if (timevary_SRparm_first > 0) + { + j = N_SRparm2; + for (f = timevary_SRparm_first; f <= timevary_parm_SR_last; f++) + { + j++; + echoinput << f << " " << j << " " << timevary_parm_rd[f] << endl; + SRparm_LO(j) = timevary_parm_rd[f](1); + SRparm_HI(j) = timevary_parm_rd[f](2); + SRparm_RD(j) = timevary_parm_rd[f](3); + SRparm_PR(j) = timevary_parm_rd[f](4); + SRparm_PRtype(j) = timevary_parm_rd[f](6); + SRparm_CV(j) = timevary_parm_rd[f](5); + SRparm_PH(j) = timevary_parm_rd[f](7); + } + } + echoinput << "SRparm_RD: " << SRparm_RD << endl; + // clang-format off + END_CALCS + + init_int do_recdev // 0=none; 1=devvector; 2=simple deviations; 3=dev from R0 +!!echoinput< 0) + { + recdev_options(1, 13) = recdev_options_rd(1, 13); + recdev_early_start_rd = recdev_options(1); + recdev_early_PH_rd = recdev_options(2); + Fcast_recr_PH_rd = recdev_options(3); + Fcast_recr_lambda = recdev_options(4); + recdev_adj(1) = recdev_options(5); + recdev_adj(2) = recdev_options(6); + recdev_adj(3) = recdev_options(7); + recdev_adj(4) = recdev_options(8); + if (recdev_adj(4) > endyr + 1 && do_recdev > 0) + { + warnstream << "bias adjustment ramp extends into forecast; biasadj set to 0.0 internally for forecast years"; + write_message (WARN, 0); + } + recdev_adj(5) = recdev_options(9); // maxbias adj + + recdev_cycle = recdev_options(10); + recdev_LO = recdev_options(11); + recdev_HI = recdev_options(12); + recdev_read = recdev_options(13); + } + else + { + recdev_early_start_rd = 0; // 0 means no early + recdev_early_end = -1; + recdev_early_PH_rd = -4; + recdev_options(2) = recdev_early_PH_rd; + Fcast_recr_PH_rd = 0; // so will be reset to maxphase+1 + recdev_options(3) = Fcast_recr_PH_rd; + Fcast_recr_lambda = 1.; + recdev_adj(1) = double(styr) - 1000.; + recdev_adj(2) = styr - nages; + recdev_adj(3) = recdev_end; + recdev_adj(4) = double(endyr) + 1.; + recdev_adj(5) = 1.0; + recdev_cycle = 0; + recdev_LO = -5; + recdev_HI = 5; + recdev_read = 0; + } + + recdev_early_start = recdev_early_start_rd; + + if (do_recdev == 0) + { + recdev_PH_rd = -3; + recdev_early_PH_rd = -4; + Fcast_recr_PH_rd = -4; + } + if (recdev_adv > 0) + { + echoinput << "#_start of advanced SR options" << endl; + } + else + { + echoinput << "# advanced options not read; defaults displayed below" << endl; + } + + echoinput << recdev_early_start_rd << " #_recdev_early_start (0=none; neg value makes relative to recdev_start)" << endl; + echoinput << recdev_early_PH_rd << " #_recdev_early_phase" << endl; + echoinput << Fcast_recr_PH_rd << " #_forecast_recruitment phase (incl. late recr) (0 value resets to maxphase+1)" << endl; + echoinput << Fcast_recr_lambda << " #_lambda for Fcast_recr_like occurring before endyr+1" << endl; + if (Fcast_Loop_Control(3) >= 3 && Fcast_recr_PH_rd >= 0) + { + warnstream << "Forecast devs will be applied to mean base recruitment over range of historical years in forecast.ss"; + write_message (NOTE, 0); + } + if (Do_Impl_Error > 0 && Fcast_recr_PH_rd < 0) + { + warnstream << "Implementation error has null effect unless Fcast_recr_PH is >=0"; + write_message (WARN, 0); + } + echoinput << recdev_adj(1) << " #_last_early_yr_nobias_adj_in_MPD" << endl; + echoinput << recdev_adj(2) << " #_first_yr_fullbias_adj_in_MPD" << endl; + echoinput << recdev_adj(3) << " #_last_yr_fullbias_adj_in_MPD" << endl; + echoinput << recdev_adj(4) << " #_first_recent_yr_nobias_adj_in_MPD" << endl; + echoinput << recdev_adj(5) << " #_max_bias_adj_in_MPD" << endl; + echoinput << " #_NOTE: biasadjustment forced to 0.0 after year recdev_end" << endl; + echoinput << recdev_cycle << " # period of cycle in recruitment " << endl; + echoinput << recdev_LO << " #min rec_dev" << endl; + echoinput << recdev_HI << " #max rec_dev" << endl; + echoinput << recdev_read << " #_read_recdevs" << endl; + echoinput << "#_end of advanced SR options" << endl; + + // SS_Label_Info_4.6.3 #Create parm labels for recruitment cycle parameters + if (recdev_cycle > 0) + { + for (y = 1; y <= recdev_cycle; y++) + { + ParCount++; + sprintf(onenum, "%d", y); + ParmLabel += "RecrDev_Cycle_" + onenum + CRLF(1); + } + } + + // SS_Label_Info_4.6.4 #Setup recruitment deviations and create parm labels for each year + if (recdev_end > retro_yr) + { + warnstream << " recdev_end: " << recdev_end << " > retro_yr: " << retro_yr << " reset "; + write_message (ADJUST, 0); + recdev_end = retro_yr; + } + if (recdev_end < endyr && (Fcast_Loop_Control(3) == 3 || Fcast_Loop_Control(3) == 4)) + { + warnstream << "Fcast recr option is 3 or 4 and recdev_end: " << recdev_end << " < endyr: " << endyr << " reset "; + write_message (ADJUST, 0); + recdev_end = endyr; + } + if (recdev_start < (styr - nages)) + { + warnstream << " recdev_start: " << recdev_start << " < styr-nages: " << styr - nages << " reset "; + write_message (ADJUST, 0); + recdev_start = styr - nages; + } + recdev_first = recdev_start; // stores first recdev, whether from the early period or the standard dev period + + if (recdev_early_start >= recdev_start) + { + warnstream << "Cannot set recdev_early_start: " << recdev_early_start << " after main recdev start: " << recdev_start; + write_message (FATAL, 0); // EXIT! + } + else if (recdev_early_start == 0) // do not do early rec devs + { + recdev_do_early = 0; + recdev_early_end = -1; + if (recdev_early_PH_rd > 0) recdev_early_PH_rd = -recdev_early_PH_rd; + } + else + { + if (recdev_early_start < 0) recdev_early_start += recdev_start; // do relative to start of recdevs + recdev_do_early = 1; + if (recdev_early_start < (styr - nages)) + { + recdev_early_start = styr - nages; + warnstream << "Adjusting recdev_early to: " << recdev_early_start; + write_message (ADJUST, 0); + } + if (recdev_start - recdev_early_start < 6) + { + warnstream << "Are you sure you want so few early recrdevs? Better to include in range of main recdevs " << recdev_start - recdev_early_start; + write_message (SUGGEST, 0); + } + + recdev_first = recdev_early_start; // because this is before recdev_start + recdev_early_end = recdev_start - 1; + for (y = recdev_early_start; y <= recdev_early_end; y++) + { + ParCount++; + recdev_doit(y) = 1; + if (y >= styr) + { + sprintf(onenum, "%d", y); + ParmLabel += "Early_RecrDev_" + onenum + CRLF(1); + } + else + { + onenum = " "; + sprintf(onenum, "%d", styr - y); + ParmLabel += "Early_InitAge_" + onenum + CRLF(1); + } + } + } + + if (do_recdev > 0) + { + for (y = recdev_start; y <= recdev_end; y++) + { + ParCount++; + recdev_doit(y) = 1; + + if (y >= styr) + { + sprintf(onenum, "%d", y); + ParmLabel += "Main_RecrDev_" + onenum + CRLF(1); + } + else + { + onenum = " "; + sprintf(onenum, "%d", styr - y); + ParmLabel += "Main_InitAge_" + onenum + CRLF(1); + } + } + } + + if (Do_Forecast > 0) + { + if (do_recdev != 0) { + for (y = recdev_end + 1; y <= YrMax; y++) + { + recdev_doit(y) = 1; + sprintf(onenum, "%d", y); + ParCount++; + if (y > endyr) + { + ParmLabel += "ForeRecr_" + onenum + CRLF(1); + } + else + { + ParmLabel += "Late_RecrDev_" + onenum + CRLF(1); + } + } + } + + if (Do_Impl_Error > 0) { + for (y = endyr + 1; y <= YrMax; y++) + { + sprintf(onenum, "%d", y); + ParCount++; + ParmLabel += "Impl_err_" + onenum + CRLF(1); + } + } + + // check recdev start and end against survey year start and end + for (f = 1; f <=Nfleet; f++) { + if (Svy_units(f) == 31 || Svy_units(f) == 32 || Svy_units(f) == 33 || Svy_units(f) == 36) { // select just recruitment surveys + if (Svy_styr(f) < recdev_first) { + warnstream << "Recruitment survey: " << f << " has data in: " << Svy_styr(f) << ", which is before first early recdev: " << recdev_first << ". Suggest start recdevs earlier"; + write_message (SUGGEST, 0); + } + if (Svy_endyr(f) > recdev_end && Fcast_recr_PH_rd <=0 ) { + warnstream << "Recruitment survey: " << f << " has data in: " << Svy_endyr(f) << ", which is after last main recdev: " << recdev_end << ". Suggest extend recdev_end, or use pos. phase for fore_recruitments: " << Fcast_recr_PH_rd; + write_message (SUGGEST, 0); + } + } + } + + } + + biasadj_full.initialize(); + if (recdev_adj(5) == -1) // all years with estimated recruitments + { + biasadj_full = recdev_doit; + } + else if (recdev_adj(5) == -2) // no ramp + { + biasadj_full(recdev_first, endyr) = recdev_doit(recdev_first, endyr); + } + else if (recdev_adj(5) == -3) // all to 0.0 + { + biasadj_full = 0.0; + } + else + { // do ramp + for (y = styr - nages; y <= YrMax; y++) + { + if (y < recdev_first) // before start of recrdevs + { + biasadj_full(y) = 0.; + } + else if (y <= recdev_adj(1)) + { + biasadj_full(y) = 0.; + } + else if (y <= recdev_adj(2)) + { + biasadj_full(y) = (y - recdev_adj(1)) / (recdev_adj(2) - recdev_adj(1)) * recdev_adj(5); + } + else if (y <= recdev_adj(3)) + { + biasadj_full(y) = recdev_adj(5); + } // max bias adjustment + else if (y <= recdev_adj(4)) + { + biasadj_full(y) = recdev_adj(5) - (y - recdev_adj(3)) / (recdev_adj(4) - recdev_adj(3)) * recdev_adj(5); + } + else + { + biasadj_full(y) = 0.; + } + if (y > endyr) { + biasadj_full(y) = 0.0; + } + } + } + echoinput << "#_recruitment bias adjustment" << endl + << biasadj_full << endl; + ; + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.6.5 #Read recdev_cycle parameters and input recruitment deviations if needed + init_matrix recdev_cycle_parm_RD(1,recdev_cycle,1,14); +!!k=1; +!!if(recdev_cycle>0) k=recdev_cycle; + vector recdev_cycle_LO(1,k); + vector recdev_cycle_HI(1,k); + ivector recdev_cycle_PH(1,k); +!!if(recdev_cycle>0) echoinput<<"recruitment cycle input "<0) echoinput<<"recruitment deviation input "<Fparm_loc[] in global: holds f,t for each element of F_rate vector + ivector Fparm_PH_dim(1,1); // will be redimensioned in param section to (1,N_Fparm) + // the ivector Fparm_PH_dim is populated from the std::vector Fparm_PH defined in global; + // then used to set phase to each F_rate in the parameter vector + // defining F_rate as number_vector allows for phase of elements in F_rate parameter vector to be element specific + // in ss_param: init_bounded_number_vector F_rate(1,k,0.,max_harvest_rate,Fparm_PH_dim) + + + LOCAL_CALCS + // clang-format on + Equ_F_joiner = 10; // defaults + F_detail = -1; + F_Tune = 3; + F_parm_intval = 0.05; // fill vector + + F_Method_PH = 99; // default is to stay in hybrid + F_PH_time.initialize(); + F_PH_time = 99; // so hybrid unless changed + + *(ad_comm::global_datafile) >> F_Method; + echoinput << F_Method << " F_Method as read" << endl; + if (F_Method < 1 || F_Method > 5) + { + warnstream << "F_Method must be 1 or 2 or 3 or 4, value is: " << F_Method; + write_message (FATAL, 0); // EXIT! + } + + *(ad_comm::global_datafile) >> max_harvest_rate; + echoinput << max_harvest_rate << " max_harvest_rate " << endl; + if (F_Method == 1) // Pope's + { + if (max_harvest_rate > 0.999) + { + warnstream << "Max harvest rate must be <1.0 for F_method 1 " << max_harvest_rate; + write_message (FATAL, 0); // EXIT! + } + if (max_harvest_rate <= 0.30) + { + warnstream << "Unexpectedly small value for max harvest rate for F_method 1: " << max_harvest_rate; + write_message (NOTE, 0); + } + Equ_F_joiner = (log(1. / max_harvest_rate - 1.)) / (max_harvest_rate - 0.2); // used to spline the harvest rate + } + else // exponential F + { + if (max_harvest_rate < 1.0) + { + + warnstream << "Max harvest rate typically is >1.0 for F_method 2, 3 or 4 " << max_harvest_rate; + write_message (NOTE, 0); + } + switch (F_Method) + { + case 2: // F as parameter for all fleets + { + *(ad_comm::global_datafile) >> F_parm_intval(1); + *(ad_comm ::global_datafile) >> F_Method_PH(1); // phase to switch from hybrid to parameters + *(ad_comm::global_datafile) >> F_detail; + F_parm_intval = F_parm_intval(1); // copy to rest of fleets + F_Method_PH = F_Method_PH(1); // copy to rest of fleets + F_Tune = 4; + echoinput << F_parm_intval << " starting F value when not starting from hybrid " << endl; + echoinput << F_Method_PH(1) << " Phase to switch from hybrid to parameter " << endl; + echoinput << F_detail << " N_detailed Fsetups to read (later -1 in yr field fills remaining years for that fleet)" << endl; + if (F_detail > 0) { + F_setup2.deallocate(); + F_setup2.allocate(1, F_detail, 1, 6); // fleet, yr, seas, Fvalue, se, phase + *(ad_comm::global_datafile) >> F_setup2; // reads whole table; will be processed later + echoinput << " detailed F_setups " << endl + << F_setup2 << endl; + // add some checks to be sure that a -year record has been read for each fleet with fleet_type<=2 + } + break; + } + case 3: // hybrid for all fleets + { + F_Method_PH = 99; // never switch to parameters + *(ad_comm::global_datafile) >> F_Tune; + echoinput << F_Tune << " N iterations for tuning hybrid F (typically 3-5)" << endl; + break; + } + case 4: // fleet-specific choice for hybrid vs parameters + { + echoinput << "read list of fleet ID, starting F, and phase to transition to parameters" << endl; + // each fleet starts with hybrid then switches to parameter in specified phase + // enter PH = 99 to not create any F parms for the listed fleet (stays in hybrid) + // fishing fleets not listed will use hybrid for all phases + // except bycatch fleets always start with parm in phase 1 + // PH = -1 will keep starting parameter value throughout run + F_Method_PH = 99; // default is to stay in hybrid + ender = 0.; + F_detail = 0; + int byc_count; + byc_count = 0; + dvector tempvec(1, 3); + tempvec.initialize(); + F_Method_4_input.push_back(tempvec(1, 3)); + while (ender >= 0.) + { + dvector tempvec(1, 3); + *(ad_comm::global_datafile) >> tempvec(1, 3); + echoinput << tempvec << endl; + F_Method_4_input.push_back(tempvec(1, 3)); + ender = tempvec(1); + f = int(tempvec(1)); // fleet ID + if (f <= Nfleet && ender > 0) + { + if (fleet_type(f) <= 2) + { + F_parm_intval(f) = tempvec(2); + F_Method_PH(f) = tempvec(3); + if (fleet_type(f) == 2) { + byc_count++; + } // count bycatch fleets listed here to check against number in data file + } + else + { + warnstream << "cannot set FMethod for survey or predator fleet: " << f << " " << fleetname(f); + write_message (FATAL, 0); // EXIT! + } + } + } + if (byc_count != N_bycatch) + { + warnstream << "Not all bycatch fleets have been included in Fparm list"; + write_message (FATAL, 0); // EXIT! + } + echoinput << "now read N tuning loops while in hybrid phases (2 is OK if switching to parm later, 3 OK, 4 more precise with many fleets)" << endl; + *(ad_comm::global_datafile) >> F_Tune; + echoinput << "hybrid tuning loops as read: " << F_Tune << endl; + if (ender == -9998) // flag to trigger reading F_detail for f x t specific F values + { + echoinput << "# now read List of fleet-time specific F related values to read; enter -Yr to fill remaining years&seasons; -999 for phase or catch_se keeps base value for the run; end that list with -1 for fleet" << endl; + echoinput << "#Fleet Yr Seas F_value catch_se phase" << endl; + + dvector tempvec(1, 6); + tempvec.initialize(); + F_detail_input.push_back(tempvec(1, 6)); // fill the nasty zero row + ender = 0.; + F_detail = -1; + while (ender >= 0.) + { + dvector tempvec(1, 6); + *(ad_comm::global_datafile) >> tempvec(1, 6); + echoinput << tempvec << endl; + F_detail_input.push_back(tempvec(1, 6)); + ender = tempvec(1); + F_detail++; + } + F_setup2.deallocate(); + F_setup2.allocate(1, F_detail, 1, 6); // fleet, yr, seas, Fvalue, se, phase + for (j = 1; j <= F_detail; j++) + { + F_setup2(j) = F_detail_input[j]; + } + echoinput << " detailed F_setups " << endl << F_setup2 << endl; + } + break; + } + } + } + // note that the F_setup2 table will be processed to fill F_PH_time after reading init_F inputs + // code flow would be cleaner if F_setup was processed before reading and processing the init_F + // however, for backward compatibility it is necessary to create the init_F parameters before the F parameters + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.7.1 #Read setup for init_F parameters and create init_F parameter labels +// NEW only read for catch fleets with positive initial equ catch + imatrix init_F_loc(1,nseas,1,Nfleet); // pointer to init_F parameter for each fleet + int N_init_F; + int N_init_F2; // for conversion of 3.24 to 3.30 + LOCAL_CALCS + { + // clang-format on + init_F_loc.initialize(); + N_init_F = 0; + N_init_F2 = 0; + + for (s = 1; s <= nseas; s++) + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (obs_equ_catch(s, f) != 0.0) + { + N_init_F++; + init_F_loc(s, f) = N_init_F; + } + N_init_F2 = N_init_F; + } + } + // clang-format off + END_CALCS +!! echoinput<<" ready to read init_F setup for: "< 0) + { + 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_CV = column(init_F_parm_1, 5); + init_F_PRtype = column(init_F_parm_1, 6); + init_F_PH = ivector(column(init_F_parm_1, 7)); + + k = nseas; + + for (s = 1; s <= k; s++) + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (init_F_loc(s, f) > 0) + { + ParCount++; + ParmLabel += "InitF_seas_" + NumLbl(s) + "_flt_" + NumLbl(f) + fleetname(f); + j = init_F_loc(s, f); + if (obs_equ_catch(s, f) <= 0.0) + { + if (init_F_RD(j) > 0.0) + { + warnstream << f << " catch: " << obs_equ_catch(s, f) << " initF: " << init_F_RD(j) << " initF is reset to be 0.0"; + write_message (ADJUST, 0); + } + init_F_RD(j) = 0.0; + init_F_PH(j) = -1; + } + if (obs_equ_catch(s, f) > 0.0 && init_F_RD(j) <= 0.0) + { + warnstream << f << " catch: " << obs_equ_catch(s, f) << " initF: " << init_F_RD(j) << " initF must be >0"; + write_message (FATAL, 0); // EXIT! + } + } + } + } // end processing init_F parameters + + { // begin processing F_setup to create the F parameters + do_Fparm_loc.initialize(); // location in Fparm vector of this fleet x time F; location defined even for hybrid + + Fparm_start = ParCount; // beginning of Fparms in total parameter list for tracking of parameter labels + N_Fparm = 0; + + ivector tempin(1, 2); + tempin.initialize(); + Fparm_loc.push_back(tempin(1, 2)); + Fparm_PH.push_back(0); + + if (F_Method == 1 || F_Method == 3) // no F parameters + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 2) // bycatch + { + warnstream << " cannot use Fmethod 1 or 3 for bycatch fleet: " << f << " " << fleetname(f); + write_message (FATAL, 0); // EXIT! + } + else if (fleet_type(f) >= 3) // survey fleet or predator + { + // F_PH_time(f) not used; + } + else // fleet_type = 1 + { + for(t = styr; t<= TimeMax+nseas; t++) + { + if(catch_ret_obs(f,t) > 0) + { + F_PH_time(f,t) = 99; // so never (e.g. PH 99) switch to parameters because Fmethod == 3 + } + else + { + F_PH_time(f,t) = -1; // no catch, so no F needed + } + } + } + } + } + else // need F parameters for Fmethod 2 and 4 + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) >= 3) // survey fleet or predator + { + // bypass because F not used for survey or predators + } + else // fleet_type is 1 or 2 + { + echoinput << " creating parms for fleet " << f << " "< 0.) + { + if (F_Method_PH(f) < 0) F_PH_time(f, t) = -1; // parameter will be fixed F + if (fleet_type(f) == 2) + { + F_PH_time(f, t) = 1; // begin in phase 1 for a bycatch fleet + // note: catch_ret_obs for bycatch fleet is needed as a trigger to create an F, it is not used as an observation + } + else + { + if (F_Method_PH(f) > 0 && F_Method_PH(f) <= 99) F_PH_time(f, t) = F_Method_PH(f); // for later phases + } + N_Fparm++; + ivector tempin(1, 2); + tempin(1) = f; + tempin(2) = t; + Fparm_loc.push_back(tempin(1, 2)); // stores the f, t for each Fparm + Fparm_PH.push_back(F_PH_time(f, t)); // stores PH in vector for dimensioning Fparm later + do_Fparm_loc(f, t) = N_Fparm; // stores parameter count for this f, t location + sprintf(onenum, "%d", y); + ParCount++; + ParmLabel += "F_fleet_" + NumLbl(f) + "_YR_" + onenum + "_s_" + NumLbl(s) + CRLF(1); + } + else + { + F_PH_time(f, t) = -1; + } + + } + } + } + echoinput << "N F parameters " << N_Fparm << endl; + echoinput << "Phase for each f, t: " << endl << F_PH_time << endl; + } + + if (F_detail > 0) + { + for (k = 1; k <= F_detail; k++) + { + f = F_setup2(k, 1); + y = F_setup2(k, 2); + s = F_setup2(k, 3); + if (y > 0) + { + y1 = y; + y2 = y; + } + else + { + y1 = -y; + y2 = endyr; + } + echoinput << "detailed F setup #: " << k << ": " << F_setup2(k) << endl; + for (y = y1; y <= y2; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + j = do_Fparm_loc(f, t); // get index in the Fparm vector + if (j > 0 && F_setup2(k, 6) != -999) { + Fparm_PH[j] = F_setup2(k,6); // phase for each F_rate parameter + F_PH_time(f,t) = F_setup2(k,6); + } + if (j > 0 && F_setup2(k, 5) != -999) catch_se(t, f) = F_setup2(k, 5); // reset the se for this observation + } + // setup of F_rate values occurs later in the prelim calc section + } + echoinput << "After F_detail: Phase for each f, t: " << endl << F_PH_time << endl; + } + + // all fleets that use parm approach will do so in PH=1 + // find whether any fleet is hybrid for each phases + for (y = styr; y <= endyr; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (F_PH_time(f, t) < 99 && readparfile == 1) // fleet ends up using parm approach + { + F_PH_time(f,t) = 1; // so start with parm in phase 1 because using parm + } + if (F_PH_time(f, t) == 99) F_PH_time(0, t) = 99; // if one fleet is hybrid in phase, then set flag for hybrid + } + } + echoinput << f << " Overall F_PH_time: " << F_PH_time(0) << endl; + } + // clang-format off + END_CALCS + +// SS_Label_Info_4.8 #Read catchability (Q) setup + imatrix Q_setup(1,Nfleet,1,5) + ivector Q_setup_check(1,Nfleet) + imatrix Q_setup_parms(1,Nfleet,1,5) // index of first parameter for: 1=base q with link; 2=extrastd; 3=env; 4=block/trend; 5=dev; + int parm330_cnt + int Q_Npar2 + int Q_Npar + int firstQparm; + int timevary_parm_cnt_Q; + int timevary_parm_start_Q; + int depletion_fleet; // stores fleet(survey) number for the fleet that is defined as "depletion" by survey type=34 + int depletion_type; // entered by Q_setup(f,2) and stores additional controls for depletion fleet + + LOCAL_CALCS + // clang-format on + firstQparm = 0; + timevary_parm_cnt_Q = 0; + timevary_parm_start_Q = 0; + + depletion_fleet = 0; + depletion_type = 0; + + //Q_setup for 3.30 + // 1: link type + // 2: extra input for link, i.e. mirror fleet or dev_vector index associated with survey + // 3: 0/1 to select extra sd parameter + // 4: 0/1 for biasadj or not + // 5: 0/1 to float + + // read setup and get the parameter count + echoinput << "# read Q setup only for fleets with survey/CPUE/effort observations, end with fleet_ID<0 " << endl + << "# fleet_ID link_type link_info extra_se(0/1) biasadj(0/1) float(0/1)" << endl; + firstQparm = ParCount; // base index before adding Q parms + Q_setup.initialize(); + Q_setup_parms.initialize(); + Q_Npar = 0; + Q_setup_check.initialize(); + j = 1; + do + { + *(ad_comm::global_datafile) >> j; + if (j > 0) + { + *(ad_comm::global_datafile) >> Q_setup(j); + Q_setup_check(j) = 1; + } + else + { + *(ad_comm::global_datafile) >> tempvec(1, 5); + } + } while (j > 0); + echoinput << "Q setup " << endl + << "Note: control file should only contain rows for fleets with index observations" << endl + << " but setup is reported here as one row for each fleet (with no fleet column)" << endl + << Q_setup << endl; + + // get base parameter count + for (f = 1; f <= Nfleet; f++) + { + if (Svy_N_fleet(f) > 0) + { + if (Q_setup_check(f) == 0) + { + warnstream << "Q setup; survey obs exist for fleet " << f << " but no Q setup was read "; + write_message (FATAL, 0); // EXIT! + } + Q_Npar++; + ParCount++; + Q_setup_parms(f, 1) = Q_Npar; // first parameter index for this fleet that has obs so needs a Q + if (Svy_errtype(f) == -1) + { + ParmLabel += "Q_base_" + fleetname(f) + "(" + NumLbl(f) + ")"; + if (Q_setup(f, 5) == 1) // float + { + warnstream << "Q setup: can't use float option with normal error distribution, fleet: " << f; + write_message (FATAL, 0); // EXIT! + } + } + else if (Svy_errtype(f) >= 0) // lognormal or T-dist + { + ParmLabel += "LnQ_base_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + if (Svy_units(f) == 35) + { + echoinput << "fleet: " << f << " is a survey of dev vector: " << Q_setup(f, 2) << endl; + if (Q_setup(f, 2) == 0) + { + warnstream << "Q setup: must enter index of dev_vector surveyed by fleet: " << f; + write_message (FATAL, 0); // EXIT! + } + } + + switch (Q_setup(f, 1)) + { + case 1: // simple Q + { + break; + } + case 2: // mirror + { + int fmirror; + fmirror = Q_setup(f, 2); + if (fmirror == 0 || fmirror >= f) + { + warnstream << "Illegal mirror for q for fleet: " << f << " trying to mirror fleet: " << Q_setup(f, 2); + write_message (FATAL, 0); // EXIT! + } + if (Q_setup(fmirror, 5) == 1) + { + warnstream << "Fleet: " << f << " cannot mirror fleet that has float q: " << fmirror; + write_message (FATAL, 0); // EXIT! + } + break; + } + case 3: // add power + { + Q_Npar++; + ParCount++; + ParmLabel += "Q_power_" + fleetname(f) + "(" + NumLbl(f) + ")"; + break; + } + case 4: // mirror with offset, where offset typically is ln(area_base/area_dependent) ln(Q2) = ln(Q1) + ln (area1 / area2) + { + if (Q_setup(f, 2) == 0 || Q_setup(f, 2) >= f) + { + warnstream << "Illegal mirror for q for fleet: " << f << " trying to mirror fleet: " << Q_setup(f, 2); + write_message (FATAL, 0); // EXIT! + } + Q_Npar++; + ParCount++; + ParmLabel += "Q_mirror_scale_" + fleetname(f) + "(" + NumLbl(f) + ")"; + break; + } + case 5: // add offset + { + Q_Npar++; + ParCount++; + ParmLabel += "Q_offset_" + fleetname(f) + "(" + NumLbl(f) + ")"; + break; + } + case 6: // add offset and power + { + Q_Npar++; + ParCount++; + ParmLabel += "Q_offset_" + fleetname(f) + "(" + NumLbl(f) + ")"; + Q_Npar++; + ParCount++; + ParmLabel += "Q_power_" + fleetname(f) + "(" + NumLbl(f) + ")"; + break; + } + } + if (Q_setup(f, 3) > 0) + { + Q_Npar++; + ParCount++; + Q_setup_parms(f, 2) = Q_Npar; + ParmLabel += "Q_extraSD_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + if (Svy_units(f) == 35 || Svy_units(f) == 36) // env index of recdev or parm dev vector + { + if (Q_setup(f, 1) < 5) // so OK for 5 and 6 + { + warnstream << "Suggest using Q option 5 to include offset parameter for an index of deviations (type 35 or 36)"; + write_message (WARN, 0); + } + if (Q_setup(f, 1) == 3 || Q_setup(f,1) == 6) + { + warnstream << "Power function cannot be used for an index of deviations (type 35 or 36) because of negative values"; + write_message (FATAL, 0); + } + } + if (Svy_units(f) == 34) // special code for depletion, so prepare to adjust phases and lambdas + { + echoinput << "# survey: " << f << " " << fleetname(f) << " is a depletion fleet" << endl; + depletion_fleet = f; + depletion_type = Q_setup(f, 2); + if (depletion_type == 0) + echoinput << "link_info=0; add 1 to phases of all parms; only R0 active in new phase 1 (same as 3.24 logic)" << endl; + if (depletion_type == 1) + echoinput << "link_info=1 only R0 active in phase 1; then exit; useful for data-limited draws of other fixed parameter" << endl; + if (depletion_type == 2) + echoinput << "link_info=2 no phase adjustments, can be used when profiling on fixed R0" << endl; + if (Q_setup(f, 5) == 1) + { + warnstream << "Change to no_float for depletion fleet # " << f << endl; + warnstream << "++ and you must set phase to negative so not estimated"; + write_message (ADJUST, 1); + Q_setup(f, 5) = 0; + } + } + } + else + { + if (Q_setup_check(f) > 0) + { + warnstream << " Q setup error; no survey obs for fleet " << f << " but Q setup was read "; + write_message (FATAL, 0); // EXIT! + } + } + } + + echoinput << "Q_Npar (number of long parameter lines): " << Q_Npar << endl + << endl << "Q setup parameter index " << endl + << "column have index of first parameter for: 1=base q with link; 2=extrastd; 3=env; 4=block/trend; 5=dev;" + << Q_setup_parms << endl; + // clang-format off + END_CALCS + + init_matrix Q_parm_1(1,Q_Npar,1,14) + ivector Qparm_timevary(1,Q_Npar) // holds index in timevary_def used by each base parameter + // dimensioned to hold the extra_sd parms, but these cannot be time-varying + imatrix timevary_Qparm(styr-3,YrMax+1,0,Nfleet) // goes to yrmax+1 to allow referencing in forecast, but only endyr+1 is checked + // stores years to calc non-constant sel parms by fleet + + LOCAL_CALCS + // clang-format on + // now create time_vary parameters + parm330_cnt = 0; // restart the index + Qparm_timevary.initialize(); + timevary_Qparm.initialize(); + timevary_parm_start_Q = 0; + timevary_parm_cnt_Q = 0; + timevary_used = 0; + for (f = 1; f <= Nfleet; f++) + if (Svy_N_fleet(f) > 0) + { + j = Q_setup_parms(f, 1); + echoinput << "fleet " << f << " base index " << j << endl; + if (Q_setup(f, 5) == 1) // float + { + if (Q_parm_1(j, 7) >= 0) + { + warnstream << "Fleet: " << f << " SS3 changed Q to not estimate because it is set to float"; + write_message (ADJUST, 0); + Q_parm_1(j, 7) = -1; + } + } + + // depletion fleet check + if (Svy_units(f) == 34) // special code for depletion + { + if (Q_parm_1(j, 7) >= 0) + { + warnstream << "Fleet: " << f << " SS3 changed Q to not estimate because it is depletion fleet"; + write_message (ADJUST, 0); + Q_parm_1(j, 7) = -1; + } + } + + // check for extraSD estimation + if (Q_setup(f, 3) > 0) + { + if (Q_parm_1(Q_setup_parms(f, 2), 7) > 0) varparm_estimated(3) = 1; // extraSD is estimated, so need sd_offset=1 + } + + if (Q_parm_1(j, 13) == 0 && Q_parm_1(j, 8) == 0 && Q_parm_1(j, 9) == 0) + { + // no time-vary parameter effects + } + else // set up a timevary parameter definition + { + timevary_used = 1; + ivector timevary_setup(1, 14); // temporary vector for timevary specs + timevary_setup.initialize(); + if (timevary_parm_start_Q == 0) timevary_parm_start_Q = timevary_parm_cnt + 1; + echoinput << endl + << " timevary Q for fleet: " << f << endl; + timevary_cnt++; // count parameters with time-vary effect + Qparm_timevary(j) = timevary_cnt; // base Q parameter will use this timevary specification + timevary_setup(1) = 3; // indicates a Q parm + timevary_setup(2) = j; // index of base parm within that type of parameter + timevary_setup(13) = firstQparm + j; // index of base parm relative to ParCount which is continuous across all types of parameters + timevary_setup(3) = timevary_parm_cnt + 1; // first parameter within total list of all timevary parms + timevary_pass = column(timevary_Qparm, f); // year vector for this fleet + // set up env link info + echoinput << " check for env " << Q_parm_1(j, 8) << endl; + + k = int(abs(Q_parm_1(j, 8)) / 100); // find the env link code + timevary_setup(6) = k; // link code for env + if (Q_parm_1(j, 8) > 0) // env variable used + { + timevary_setup(7) = int(abs(Q_parm_1(j, 8))) - k * 100; + k = timevary_setup(7); + // for(y=styr-1;y<=YrMax;y++) env_data_pass(y)=env_data_RD(y,k); + env_data_pass(1) = env_data_minyr(k); + env_data_pass(2) = env_data_maxyr(k); + } + else if (abs(Q_parm_1(j, 8) > 0)) // density-dependence + { + timevary_setup(7) = -int(abs(Q_parm_1(j, 8)) - k * 100); + do_densitydependent = 1; + k = 0; + env_data_pass.initialize(); + } + + if (Q_parm_1(j, 13) > 0) // doing blocks + { + if (Q_parm_1(j, 13) > N_Block_Designs) + { + warnstream << "Q block request exceeds N_block patterns" ; + write_message (FATAL, 0); // EXIT! + } + create_timevary(Q_parm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), f, Block_Design(Q_parm_1(j, 13)), env_data_pass, N_parm_dev, finish_starter); + } + else + { + create_timevary(Q_parm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), f, block_design_null, env_data_pass, N_parm_dev, finish_starter); + } + timevary_def.push_back(timevary_setup(1, 14)); + for (y = styr - 3; y <= YrMax + 1; y++) { + timevary_Qparm(y, f) = timevary_pass(y); + } // year vector for this category og MGparm + } + } + + Q_Npar2 = Q_Npar; + if (timevary_parm_start_Q > 0) + { + if (timevary_used == 1) autogen_timevary(3) = 1; // indicate that some parameter is time-varying + timevary_parm_cnt_Q = timevary_parm_cnt; + Q_Npar2 += (timevary_parm_cnt_Q - timevary_parm_start_Q + 1); + echoinput << "Q uses timevary parms: " << Qparm_timevary << endl; + echoinput << " Q timevary_parm_cnt start and end " << timevary_parm_start_Q << " " << timevary_parm_cnt_Q << endl; + } + echoinput << "Q_Npar (long lines) and Q_Npar2 (long + short lines): " << Q_Npar << " " << Q_Npar2 << endl; + // clang-format off + END_CALCS + + vector Q_parm_LO(1,Q_Npar2) + vector Q_parm_HI(1,Q_Npar2) + vector Q_parm_RD(1,Q_Npar2) + vector Q_parm_PR(1,Q_Npar2) + ivector Q_parm_PRtype(1,Q_Npar2) + vector Q_parm_CV(1,Q_Npar2) + ivector Q_parm_PH(1,Q_Npar2) + + LOCAL_CALCS + // clang-format on + if (Q_Npar2 == 0) + { + Q_parm_LO = -1.; + Q_parm_HI = 1.; + Q_parm_PH = -4; + } + else + { + for (i = 1; i <= Q_Npar; i++) + { + Q_parm_LO(i) = Q_parm_1(i, 1); + Q_parm_HI(i) = Q_parm_1(i, 2); + Q_parm_RD(i) = Q_parm_1(i, 3); + Q_parm_PR(i) = Q_parm_1(i, 4); + Q_parm_CV(i) = Q_parm_1(i, 5); + Q_parm_PRtype(i) = Q_parm_1(i, 6); + Q_parm_PH(i) = Q_parm_1(i, 7); + } + if (timevary_parm_start_Q > 0) + { + j = Q_Npar; + for (f = timevary_parm_start_Q; f <= timevary_parm_cnt_Q; f++) + { + j++; + echoinput << f << " " << j << " " << timevary_parm_rd[f] << endl; + Q_parm_LO(j) = timevary_parm_rd[f](1); + Q_parm_HI(j) = timevary_parm_rd[f](2); + Q_parm_RD(j) = timevary_parm_rd[f](3); + Q_parm_PR(j) = timevary_parm_rd[f](4); + Q_parm_PRtype(j) = timevary_parm_rd[f](6); + Q_parm_CV(j) = timevary_parm_rd[f](5); + Q_parm_PH(j) = timevary_parm_rd[f](7); + } + } + } + echoinput << "Q_parm_RD: " << endl; + for (z = 1; z <= Q_Npar2; z++) + echoinput << z << " " << Q_parm_RD(z) << " " << ParmLabel(ParCount - Q_Npar2 + z) << endl; + echoinput << "#" << endl; + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.9 #Define Selectivity patterns and N parameters needed per pattern + ivector seltype_Nparam(0,50) + LOCAL_CALCS + // clang-format on + seltype_Nparam(0) = 0; // selex=1.0 for all sizes + seltype_Nparam(1) = 2; // logistic; with 95% width specification + seltype_Nparam(2) = 6; // test version of double normal (24) + seltype_Nparam(3) = 6; // flat middle, power up, power down + seltype_Nparam(4) = 0; // set size selex=female maturity + seltype_Nparam(5) = 2; // mirror another selex; PARMS pick the min-max bin to mirror + seltype_Nparam(6) = 2; // non-parm len selex, additional parm count is in seltype(f,4) + seltype_Nparam(7) = 8; // New doublelogistic with smooth transitions and constant above Linf option + seltype_Nparam(8) = 8; // New doublelogistic with smooth transitions and constant above Linf option + seltype_Nparam(9) = 6; // simple 4-parm double logistic with starting length; parm 5 is first length; parm 6=1 does desc as offset + + seltype_Nparam(10) = 0; // First age-selex selex=1.0 for all ages + seltype_Nparam(11) = 2; // pick min-max age + seltype_Nparam(12) = 2; // logistic + seltype_Nparam(13) = 8; // double logistic + seltype_Nparam(14) = nages + 1; // empirical + seltype_Nparam(15) = 0; // mirror another selex + seltype_Nparam(16) = 2; // Coleraine - Gaussian + seltype_Nparam(17) = nages + 1; // empirical as random walk N parameters to read can be overridden by setting special to non-zero + seltype_Nparam(18) = 8; // double logistic - smooth transition + seltype_Nparam(19) = 6; // simple 4-parm double logistic with starting age + seltype_Nparam(20) = 6; // double_normal,using joiners + + seltype_Nparam(21) = 2; // non-parm len selex, additional parm count is in seltype(f,4), read as pairs of size, then selex + seltype_Nparam(22) = 4; // double_normal as in CASAL + seltype_Nparam(23) = 6; // double_normal where final value is directly equal to sp(6) so can be >1.0 + seltype_Nparam(24) = 6; // double_normal with sel(minL) and sel(maxL), using joiners + seltype_Nparam(25) = 3; // exponential-logistic in size + seltype_Nparam(26) = 3; // exponential-logistic in age + seltype_Nparam(27) = 3; // cubic spline for selex at length, additional parm count is in seltype(f,4) + // seltype_Nparam(28)=3; // cubic spline for selex at age, additional parm count is in seltype(f,4) + seltype_Nparam(29) = 0; // undefined + + seltype_Nparam(41) = 2 + seltype_Nparam(17); // like 17, with 2 additional parameters for scaling (average over bin range) + seltype_Nparam(42) = 2 + seltype_Nparam(27); // like 27, with 2 additional parameters for scaling (average over bin range) + seltype_Nparam(43) = seltype_Nparam(6); // like 6, with 2 additional parameters for scaling (average over bin range) + seltype_Nparam(44) = 4; // like 17 for two sexes with male selectivity as separate parameters + seltype_Nparam(45) = 4; // like 14 for two sexes with male selectivity as separate parameters + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.9.1 #Read selectivity definitions +// do 2*Nfleet to create options for size-selex (first), then age-selex + init_imatrix seltype_rd(1,2*Nfleet,1,4) // read selex type for each fleet/survey, retention option, male_offset_option, special + imatrix seltype(1,2*Nfleet,1,4) // read selex type for each fleet/survey, retention option, male_offset_option, special + + int N_selparm // figure out the Total number of selex parameters + int N_selparm3 // N selparms plus timevary parms + int N_selparm2 // N selparms plus timevary parms and 2D_AR1 parms + ivector N_selparmvec(1,2*Nfleet) // N selparms by type, including extra parms for male selex, retention, etc. + ivector Maleselparm(1,2*Nfleet) + ivector RetainParm(1,Nfleet) // can only have length or age retention, not both for a fleet + ivector dolen(1,Nfleet) + int blkparm + int firstselparm + ivector N_ret_parm(0,6) // 6 possible retention functions allowed + ivector N_disc_mort_parm(0,6) // 6 possible discard mortality functions allowed + ivector Do_Retain(1,Nfleet) // indicates 0=none, 1=length based, 2=age based + ivector Min_selage(1,Nfleet) // minimum selected age + imatrix Comp_Err_parmloc(1,Comp_Err_ParmCount,1,2); // for each comp_err_index, locate starting parameter in parcount (2) and in Selparm (1). + + LOCAL_CALCS + // clang-format on + echoinput + << " selex types " << endl + << seltype_rd << endl; + + // identify fleets with adjusted first_selected age + seltype = seltype_rd; // set matrices to be same + Min_selage.initialize(); + for (f = 1; f <= 2 * Nfleet; f++) + { + echoinput << f << " " << seltype_rd(f, 1) << endl; + if (seltype_rd(f, 1) >= 100) + { + if (f <= Nfleet) + { + warnstream << "Fleet: " << f << " cannot use >100 code for length selectivity; SS3 will correct"; + write_message (ADJUST, 0); + j = int(seltype(f, 1) / 100); + k = seltype(f, 1) - 100 * j; + seltype_rd(f, 1) = k; // change input value so will be written correctly in ss_new + seltype(f, 1) = seltype_rd(f, 1); + } + else + { + Min_selage(f - Nfleet) = int(seltype(f, 1) / 100); + k = seltype(f, 1) - 100 * Min_selage(f - Nfleet); + echoinput << seltype(f, 1) << " " << k << " " << Min_selage(f - Nfleet) << endl; + if (k == 12 || k == 13 || k == 14 || k == 16 || k == 18 || k == 26 || k == 27) + { + echoinput << "OK to use min_selage for selex pattern: " << k << " for fleet: " << f - Nfleet << endl; + } + else if (k == 17 || k == 44 || k == 45) + { + warnstream << "Don't use min_selage for age selectivity: " << k << " for fleet: " << f - Nfleet << " because separate control exists; SS3 will correct"; + write_message (ADJUST, 0); + seltype_rd(f, 1) = k; + } // change input value so will be written correctly in ss_new + else if (k == 19) + { + warnstream << "Can't use min_selage for age selectivity: " << k << " for fleet: " << f - Nfleet << " because separate control sets sel = 1.0e-06 below a specified age SS3 will correct"; + write_message (ADJUST, 0); + seltype_rd(f, 1) = k; + } + else if (k == 20) + { + warnstream << "OK to use min_selage for age selectivity: " << k << " for fleet: " << f - Nfleet << " but be aware that a separate control for parm 5 can set sel = 1.0e-06 below a specified age"; + write_message (WARN, 0); + } + else + { + echoinput << "Min_selage not implemented and not relevant for selex pattern: " << k << " for fleet: " << f - Nfleet << endl; + seltype_rd(f, 1) = k; + } + seltype(f, 1) = k; + } + } + } + + RetainParm.initialize(); + // define number of parameters for each retention type + N_ret_parm(0) = 0; + N_ret_parm(1) = 4; // for asymptotic retention + N_ret_parm(2) = 4; // for asymptotic retention and 4 param discard mort + N_ret_parm(3) = 0; // all dead + N_ret_parm(4) = 7; // for dome-shaped retention and 4 param discard mort + + // define number of discard mortality parameters for each retention type + N_disc_mort_parm(0) = 0; + N_disc_mort_parm(1) = 0; // for asymptotic retention + N_disc_mort_parm(2) = 4; // for asymptotic retention and 4 param discard mort + N_disc_mort_parm(3) = 0; // all dead + N_disc_mort_parm(4) = 4; // for dome-shaped retention and 4 param discard mort + + // SS_Label_Info_4.9.2 #Process selectivity parameter count and create parameter labels + firstselparm = ParCount; + N_selparm = 0; + // N_ret_parm=7; // to allow for dome-shaped retention + Do_Retain.initialize(); + for (f = 1; f <= Nfleet; f++) + { + if (WTage_rd > 0 && seltype(f, 1) > 0) + { + warnstream << "Use of size selectivity not advised when reading empirical wt-at-age "; + write_message (WARN, 0); + } + N_selparmvec(f) = seltype_Nparam(seltype(f, 1)); // N Length selex parms + if (seltype(f, 1) == 6 || seltype(f, 1) == 43) N_selparmvec(f) += seltype(f, 4); // special setup of N parms + if (seltype(f, 1) == 21) N_selparmvec(f) += 2 * (seltype(f, 4) - 1); // special setup of N parms + if (seltype(f, 1) == 27) N_selparmvec(f) += 2 * seltype(f, 4); // special setup of N parms for cubic spline + if (seltype(f, 1) == 42) N_selparmvec(f) += 2 * seltype(f, 4); // special setup of N parms for cubic spline + if (seltype(f, 1) > 0 && Svy_units(f) < 30) { + dolen(f) = 1; + } + else + { + dolen(f) = 0; + } + if (seltype(f, 1) == 15 || seltype(f, 1) == 5) // mirror + { + if (seltype(f, 4) == 0 || seltype(f, 4) >= f) + { + warnstream << "Illegal mirror for len selex fleet " << f << "trying to mirror fleet: " << seltype(f, 4); + write_message (FATAL, 1); // EXIT! + } + } + if (seltype(f, 1) == 43) + { + ParCount++; + ParmLabel += "SizeSel_ScaleBinLo_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "SizeSel_ScaleBinHi_" + fleetname(f) + "(" + NumLbl(f) + ")"; + echoinput << "N parm " << N_selparmvec(f) << endl; + } + + if (seltype(f, 1) == 27 || seltype(f, 1) == 42) + { + if (seltype(f, 1) == 42) + { + ParCount++; + ParmLabel += "SizeSpline_ScaleBinLo_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "SizeSpline_ScaleBinHi_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + ParCount++; + ParmLabel += "SizeSpline_Code_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "SizeSpline_GradLo_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "SizeSpline_GradHi_" + fleetname(f) + "(" + NumLbl(f) + ")"; + for (s = 1; s <= seltype(f, 4); s++) + { + ParCount++; + ParmLabel += "SizeSpline_Knot_" + NumLbl(s) + "_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + for (s = 1; s <= seltype(f, 4); s++) + { + ParCount++; + ParmLabel += "SizeSpline_Val_" + NumLbl(s) + "_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + } + else if (seltype(f, 1) == 24 || seltype(f, 1) == 2) // double_normal + { + ParCount++; + ParmLabel += "Size_DblN_peak_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "Size_DblN_top_logit_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "Size_DblN_ascend_se_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "Size_DblN_descend_se_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "Size_DblN_start_logit_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "Size_DblN_end_logit_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + else if (seltype(f, 1) == 1) // logistic + { + ParCount++; + ParmLabel += "Size_inflection_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "Size_95%width_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + else if (seltype(f, 1) == 11) + { + ParCount++; + ParmLabel += "SizeSel=1_BinLo_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + ParmLabel += "SizeSel=1_BinHi_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + + else + { + for (j = 1; j <= N_selparmvec(f); j++) + { + ParCount++; + ParmLabel += "SizeSel_P" + NumLbl(j) + "_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + } + + // account for the low and high bin parameters + if (seltype(f, 1) == 43) N_selparmvec(f) += 2; + + if (seltype(f, 2) >= 1) + { + if (WTage_rd > 0) + { + warnstream << "Length-based retention will use the same empirical wtatage for discard and retained fish for fleet: " << f; + write_message (NOTE, 0); + } + Do_Retain(f) = 1; + if (fleet_type(f) == 2 && seltype(f, 2) != 3) + { + warnstream << "Fleet: " << f << " is a bycatch fleet, so consider using retention option =3 so no parameters needed"; + write_message (SUGGEST, 0); + } + if (seltype(f, 2) == 3) + { + RetainParm(f) = 0; + } // no parameters needed + else + { + RetainParm(f) = N_selparmvec(f) + 1; + // N_selparmvec(f) +=N_ret_parm*seltype(f,2); // N retention parms first [N_ret_parm] for retention; next [N_ret_parm] for discard mortality + if (N_ret_parm(seltype(f, 2)) > 0) + { + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_L_infl_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_L_width_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_L_asymptote_logit_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_L_maleoffset_" + fleetname(f) + "(" + NumLbl(f) + ")"; + if (N_ret_parm(seltype(f, 2)) == 7) // doing dome + { + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_L_dome_infl_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_L_dome_width_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_L_dome_maleoffset_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + } + if (seltype(f, 2) == 2 || seltype(f, 2) == 4) + { + ParCount++; + N_selparmvec(f)++; + ParmLabel += "DiscMort_L_infl_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "DiscMort_L_width_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "DiscMort_L_level_old_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "DiscMort_L_male_offset_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + } + } + else if (seltype(f, 2) < 0) // mirror retention + { + Do_Retain(f) = 1; + RetainParm(f) = 0; + } + if (seltype(f, 3) >= 1) + { + if (gender == 1) + { + warnstream << "Male selex cannot be used in one sex model; fleet: " << f ; + write_message (FATAL, 1); // EXIT! + } + Maleselparm(f) = N_selparmvec(f) + 1; + if (seltype(f, 3) == 1 || seltype(f, 3) == 2) + { + N_selparmvec(f) += 4; // add male parms + ParCount += 4; + ParmLabel += "SzSel_MaleDogleg_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParmLabel += "SzSel_MaleatZero_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParmLabel += "SzSel_MaleatDogleg_" + fleetname(f) + "(" + NumLbl(f) + ")"; + ParmLabel += "SzSel_MaleatMaxage_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + else if (seltype(f, 3) >= 3) + { + if (seltype(f, 3) == 3) { + anystring = "Male_"; + } + else + { + anystring = "Fem_"; + } + if (seltype(f, 1) == 1) + { + N_selparmvec(f)++; + ParCount++; + ParmLabel += "SzSel_" + anystring + "Infl_" + fleetname(f) + "(" + NumLbl(f) + ")"; + N_selparmvec(f)++; + ParCount++; + ParmLabel += "SzSel_" + anystring + "Slope_" + fleetname(f) + "(" + NumLbl(f) + ")"; + N_selparmvec(f)++; + ParCount++; + ParmLabel += "SzSel_" + anystring + "Scale_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + else if (seltype(f, 1) == 24 || seltype(f, 1) == 2) + { + N_selparmvec(f)++; + ParCount++; + ParmLabel += "SzSel_" + anystring + "Peak_" + fleetname(f) + "(" + NumLbl(f) + ")"; + N_selparmvec(f)++; + ParCount++; + ParmLabel += "SzSel_" + anystring + "Ascend_" + fleetname(f) + "(" + NumLbl(f) + ")"; + N_selparmvec(f)++; + ParCount++; + ParmLabel += "SzSel_" + anystring + "Descend_" + fleetname(f) + "(" + NumLbl(f) + ")"; + N_selparmvec(f)++; + ParCount++; + ParmLabel += "SzSel_" + anystring + "Final_" + fleetname(f) + "(" + NumLbl(f) + ")"; + N_selparmvec(f)++; + ParCount++; + ParmLabel += "SzSel_" + anystring + "Scale_" + fleetname(f) + "(" + NumLbl(f) + ")"; + } + else + { + warnstream << "Illegal male selex option selected for fleet " << f ; + write_message (FATAL, 1); // EXIT! + } + } + } + + if (seltype(f, 1) == 7) + { + warnstream << "Selectivity pattern #7 is no longer supported "; + write_message (WARN, 0); + } + if (seltype(f, 1) == 23 && F_Method == 1) + { + warnstream << "Do not use F_Method = Pope's with selex pattern #23 "; + write_message (WARN, 0); + } + N_selparm += N_selparmvec(f); + } + for (f = Nfleet + 1; f <= 2 * Nfleet; f++) + { + int f1 = f - Nfleet; // actual fleet number + if (seltype(f, 1) == 15) // mirror + { + if (seltype(f, 4) == 0 || seltype(f, 4) >= f1) + { + warnstream << "Illegal mirror for age selex fleet " << f - Nfleet; + write_message (FATAL, 0); // EXIT! + } + N_selparmvec(f) = 0; // Nunber of Age selex parms + } + else if (seltype(f, 1) != 17 && seltype(f, 1) != 41) + { + N_selparmvec(f) = seltype_Nparam(seltype(f, 1)); // Nunber of Age selex parms + } + else if (seltype(f, 4) == 0) + { + N_selparmvec(f) = seltype_Nparam(seltype(f, 1)); // this is nages+1 + } + else + { + N_selparmvec(f) = abs(seltype(f, 4)) + 1; // so reads value for age 0 through this age + if (seltype(f, 1) == 41) N_selparmvec(f) +=2; // for the scaling parameters + } + + if (seltype(f, 1) == 41) + { + ParCount++; + ParmLabel += "AgeSel_ScaleAgeLo_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "AgeSel_ScaleAgeHi_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + + if (seltype(f, 1) == 27 || seltype(f, 1) == 42) + { + if (seltype(f, 1) == 42) + { + ParCount++; + ParmLabel += "AgeSpline_ScaleAgeLo_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "AgeSpline_ScaleAgeHi_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + N_selparmvec(f) += 2 * seltype(f, 4); // special setup of N parms for cubic spline + ParCount++; + ParmLabel += "AgeSpline_Code_" + fleetname(f1) + "_" + NumLbl(f1); + ParCount++; + ParmLabel += "AgeSpline_GradLo_" + fleetname(f1) + "_" + NumLbl(f1); + ParCount++; + ParmLabel += "AgeSpline_GradHi_" + fleetname(f1) + "_" + NumLbl(f1); + for (s = 1; s <= seltype(f, 4); s++) + { + ParCount++; + ParmLabel += "AgeSpline_Knot_" + NumLbl(s) + "_" + fleetname(f1) + "_" + NumLbl(f1); + } + for (s = 1; s <= seltype(f, 4); s++) + { + ParCount++; + ParmLabel += "AgeSpline_Val_" + NumLbl(s) + "_" + fleetname(f1) + "_" + NumLbl(f1); + } + } + else if (seltype(f, 1) == 44) + { + N_selparmvec(f) = 2 + gender + gender * seltype(f, 4); + ParCount++; + ParmLabel += "first_selage_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "first_age_mean_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "last_age_mean_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + if (gender == 2) + { + ParCount++; + ParmLabel += "Male_ln(ratio)_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + for (int gg = 1; gg <= seltype(f, 4); gg++) + { + ParCount++; + ParmLabel += "female_ln(selchange)_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + for (int gg = 1; gg <= seltype(f, 4); gg++) + { + ParCount++; + ParmLabel += "male_ln(selchange)_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + } + else + { + for (int gg = 1; gg <= seltype(f, 4); gg++) + { + ParCount++; + ParmLabel += "ln(selchange)_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + } + } + else if (seltype(f, 1) == 45) + { + N_selparmvec(f) = 2 + gender + gender * seltype(f, 4); + ParCount++; + ParmLabel += "first_selage_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "first_age_mean_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "last_age_mean_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + if (gender == 2) + { + ParCount++; + ParmLabel += "Male_ln(ratio)_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + for (int gg = 1; gg <= seltype(f, 4); gg++) + { + ParCount++; + ParmLabel += "female_sel_logit_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + for (int gg = 1; gg <= seltype(f, 4); gg++) + { + ParCount++; + ParmLabel += "male_sel_logit_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + } + else + { + for (int gg = 1; gg <= seltype(f, 4); gg++) + { + ParCount++; + ParmLabel += "ln(selchange)_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + } + } + + else if (seltype(f, 1) == 20) + { + ParCount++; + ParmLabel += "Age_DblN_peak_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "Age_DblN_top_logit_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "Age_DblN_ascend_se_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "Age_DblN_descend_se_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "Age_DblN_start_logit_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "Age_DblN_end_logit_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + else if (seltype(f, 1) == 12) + { + ParCount++; + ParmLabel += "Age_inflection_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "Age_95%width_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + else if (seltype(f, 1) == 11) + { + ParCount++; + ParmLabel += "minage@sel=1_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + ParmLabel += "maxage@sel=1_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + else + { + + k = 0; + if (seltype(f, 1) == 41) k = 2; // reduce count for the scaling parameters + for (j = 1; j <= N_selparmvec(f) - k; j++) + { + ParCount++; + ParmLabel += "AgeSel_P" + NumLbl(j) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + } + + // age-specific retention function + if (seltype(f, 2) >= 1) + { + Do_Retain(f1) = 2; + if (WTage_rd > 0) + { + warnstream << "Age-based retention will use the same empirical wtatage for discarded and retained fish for fleet: " << f; + write_message (NOTE, 0); + } + if (seltype(f1, 2) > 0) + { + warnstream << "cannot have both age and size retention functions " << f << " but retention parms not setup "; + write_message (FATAL, 0); // EXIT! + } + if (seltype(f, 2) == 3) + { + RetainParm(f1) = 0; + } // no parameters needed + else + { + RetainParm(f1) = N_selparmvec(f) + 1; + // N_selparmvec(f) +=N_ret_parm*seltype(f,2); // N retention parms first [N_ret_parm] for retention; next [N_ret_parm] for discard mortality + // for (j=1;j<=N_ret_parm(seltype(f,2));j++) + // { + // ParCount++; N_selparmvec(f)++; ParmLabel+="Retain_age_P"+NumLbl(j)+"_"+fleetname(f1)+"("+NumLbl(f1)+")"; + // } + if (N_ret_parm(seltype(f, 2)) > 0) + { + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_A_infl_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_A_width_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_A_asymptote_logit_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_A_maleoffset_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + if (N_ret_parm(seltype(f, 2)) == 7) // doing dome + { + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_A_dome_infl_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_A_dome_width_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "Retain_A_dome_maleoffset_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + } + + if (seltype(f, 2) == 2 || seltype(f, 2) == 4) + { + ParCount++; + N_selparmvec(f)++; + ParmLabel += "DiscMort_A_infl_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "DiscMort_A_width_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "DiscMort_A_level_old_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + ParCount++; + N_selparmvec(f)++; + ParmLabel += "DiscMort_A_male_offset_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; + } + } + } + else if (seltype(f, 2) < 0) // mirror retention + { + Do_Retain(f1) = 2; + RetainParm(f1) = 0; + } + + if (seltype(f, 3) >= 1) + { + if (gender == 1) + { + warnstream << "Male selex cannot be used in one sex model; fleet: " << f; + write_message (FATAL, 0); // EXIT! + } + Maleselparm(f) = N_selparmvec(f) + 1; + if (seltype(f, 3) == 1 || seltype(f, 3) == 2) + { + N_selparmvec(f)++; + ParCount++; + ParmLabel += "AgeSel_" + NumLbl(f1) + "MaleDogleg_" + fleetname(f1); + N_selparmvec(f)++; + ParCount++; + ParmLabel += "AgeSel_" + NumLbl(f1) + "MaleatZero_" + fleetname(f1); + N_selparmvec(f)++; + ParCount++; + ParmLabel += "AgeSel_" + NumLbl(f1) + "MaleatDogleg_" + fleetname(f1); + N_selparmvec(f)++; + ParCount++; + ParmLabel += "AgeSel_" + NumLbl(f1) + "MaleatMaxage_" + fleetname(f1); + } + else if (seltype(f, 3) >= 3 && seltype(f, 1) == 20) + { + if (seltype(f, 3) == 3) { + anystring = "Male_"; + } + else + { + anystring = "Fem_"; + } + N_selparmvec(f)++; + ParCount++; + ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Peak_" + fleetname(f1); + N_selparmvec(f)++; + ParCount++; + ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Ascend_" + fleetname(f1); + N_selparmvec(f)++; + ParCount++; + ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Descend_" + fleetname(f1); + N_selparmvec(f)++; + ParCount++; + ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Final_" + fleetname(f1); + N_selparmvec(f)++; + ParCount++; + ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Scale_" + fleetname(f1); + } + else + { + warnstream << "Illegal male selex option selected for fleet " << f; + write_message (FATAL, 1); // EXIT! + } + } + N_selparm += N_selparmvec(f); + } + + // create index to fleets with discard + disc_fleet_list.initialize(); + N_retain_fleets = 0; + for (f = 1; f <= Nfleet; f++) + { + if (Do_Retain(f) > 0) + { + N_retain_fleets++; + disc_fleet_list(f) = N_retain_fleets; // for compact storage of disc_age(t,f,g) + } + } + + // SS_Label_Info_4.097 #Read parameters needed for estimating variance of composition data + { + echoinput << "#Now create parameters for D-M variance of composition data; CANNOT be time-varying" << endl; + Comp_Err_Parm_Start = 0; + if (Comp_Err_ParmCount > 0) + { + echoinput << Comp_Err_ParmCount << " #_definitions are needed: " << endl; + Comp_Err_Parm_Start = N_selparm; + // create a D-M parameter or tweedie parameter pair only for the first fleet that references that parm number + for (f = 1; f <= Nfleet; f++) + for (int parti = 0; parti <= 2; parti++) + { + if (DM_parmlist(parti, f) > 0) // create DM parameter labels for definitions first referenced for lencomp + { + N_selparm ++; + ParCount ++; + Comp_Err_parmloc(Comp_Err_L2(parti, f),1) = N_selparm; // first parameter used by this method + Comp_Err_parmloc(Comp_Err_L2(parti, f),2) = ParCount; // use this index in write_report to display the correct parameter label + switch (Comp_Err_L(parti, f)) + { + case 1: + { + ParmLabel += "ln(DM_theta)_Len_P" + NumLbl(Comp_Err_L2(parti, f)); + break; + } + case 2: + { + ParmLabel += "ln(DM_beta)_Len_P" + NumLbl(Comp_Err_L2(parti, f)); + break; + } + case 3: + { + ParmLabel += "ln(tweedie_Phi)_Len_P" + NumLbl(Comp_Err_L2(parti, f)); + N_selparm ++; + ParCount ++; + ParmLabel += "ln(tweedie_Power)_Len_P" + NumLbl(Comp_Err_L2(parti, f)); + break; + } + } + } + } + + for (f = 1; f <= Nfleet; f++) + { + if (DM_parmlist(0, f + Nfleet) > 0) // create DM parameter labels for definitions first referenced for agecomp + { + N_selparm ++; + ParCount ++; + Comp_Err_parmloc(Comp_Err_A2(f),1) = N_selparm; // first parameter used by this method + Comp_Err_parmloc(Comp_Err_A2(f),2) = ParCount; // use this index in write_report to display the correct parameter label + switch (Comp_Err_A(f)) + { + case 1: + { + ParmLabel += "ln(DM_theta)_Age_P" + NumLbl(Comp_Err_A2(f)); + break; + } + case 2: + { + ParmLabel += "ln(DM_beta)_Age_P" + NumLbl(Comp_Err_A2(f)); + break; + } + case 3: + { + ParmLabel += "ln(tweedie_Phi)_Age_P" + NumLbl(Comp_Err_A2(f)); + N_selparm ++; + ParCount ++; + ParmLabel += "ln(tweedie_Power)_Age_P" + NumLbl(Comp_Err_A2(f)); + break; + } + } + } + } + + for (int f = 1; f <= SzFreq_Nmeth; f++) + { + if (DM_parmlist(0, f + 2 * Nfleet) > 0) // create DM parameter labels for definitions first referenced for sizefreq. note that sizefreq comps are by method, not fleet + { + N_selparm ++; + ParCount ++; + Comp_Err_parmloc(Comp_Err_Sz2(f),1) = N_selparm; // first parameter used by this method + Comp_Err_parmloc(Comp_Err_Sz2(f),2) = ParCount; // use this index in write_report to display the correct parameter label + switch (Comp_Err_Sz(f)) + { + case 1: + { + ParmLabel += "ln(DM_theta)_Sz_P" + NumLbl(Comp_Err_Sz2(f)); + break; + } + case 2: + { + ParmLabel += "ln(DM_Beta)_Sz_P" + NumLbl(Comp_Err_Sz2(f)); + break; + } + case 3: + { + ParmLabel += "ln(tweedie_Phi)_Sz_P" + NumLbl(Comp_Err_Sz2(f)); + N_selparm ++; + ParCount ++; + ParmLabel += "ln(tweedie_Power)_Sz_P" + NumLbl(Comp_Err_Sz2(f)); + break; + } + } + } + } + // note that it would take a lot more code to append labels for parameters that are used by more than one fleet or type + } + } + + for (f = 1; f <= Nfleet; f++) + { + if (disc_N_fleet(f) > 0 && seltype(f, 2) == 0 && seltype(f + Nfleet, 2) == 0) + { + warnstream << "discard data exists for fleet " << f << " but retention parms not setup " ; + write_message (FATAL, 0); // EXIT! + } + else if (disc_N_fleet(f) == 0 && seltype(f, 2) > 0) + { + warnstream << "no discard amount data for fleet " << f << " but retention parms have been defined "; + write_message (WARN, 0); + } + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.9.3 #Read selex parameters + init_matrix selparm_1(1,N_selparm,1,14) + ivector selparm_fleet(1,N_selparm) // holds the fleet ID for each selparm + // equivalent to the mgp_type() for MGparms + matrix mirror_mask(1,Nfleet,1,nlength) + matrix mirror_mask_a(1,Nfleet,0,nages) + LOCAL_CALCS + // clang-format on + mirror_mask.initialize(); + mirror_mask_a.initialize(); + selparm_fleet.initialize(); + echoinput << " selex and composition base parameters " << endl; + for (g = 1; g <= N_selparm; g++) + { + echoinput << g << " ## " << selparm_1(g) << " ## " << ParmLabel(ParCount - N_selparm + g) << endl; + } + + // now identify the fleet associated with each parameter + echoinput << "identify the fleet associated with each parameter" << endl; + j = 0; + for (f = 1; f <= 2 * Nfleet; f++) + { + if (N_selparmvec(f) > 0) + { + for (g = 1; g <= N_selparmvec(f); g++) + { + j++; + selparm_fleet(j) = f; + } + } + } + if (Comp_Err_ParmCount > 0) + { + echoinput << "comp_error parameter selection by partition (row) and fleet" << endl + << "L_type: " << Comp_Err_L << endl + << "L_parm: " << Comp_Err_L2 << endl + << "A_type: " << Comp_Err_A << endl + << "A_parm: " << Comp_Err_A2 << endl + << "Sz_type: " << Comp_Err_Sz << endl + << "Sz_parm: " << Comp_Err_Sz2 << endl; + + for (f = 1; f <= Nfleet; f++) + for (int parti = 0; parti <= 2; parti++) + { + // if Dirichlet was indicated, set fleet for this parameter + if (Comp_Err_L2(parti, f) > 0) + { + j = Comp_Err_parmloc(Comp_Err_L2(parti, f),1); + selparm_fleet(j) = f; + } + if (Comp_Err_A2(f) > 0) + { + j = Comp_Err_parmloc(Comp_Err_A2(f),1); + selparm_fleet(j) = f; + } + } + } + echoinput<<"selparm_fleet:"< 0) // could point to length or age retention + { + k = parmcount + RetainParm(f) + 2; + if (selparm_1(k, 1) >= 0.0) // check to see if user has bounds relevant for 3.24 format + { + warnstream << "Converting asymptotic retention parameter to 1/(1+e(-x)) format for fleet: " << f << " parm: " << k << endl; + warnstream << "++ because parm min was >=0.0" << endl; + warnstream << "++ old min, max, init, prior: " << selparm_1(k)(1, 4); + write_message (WARN, 1); + new_lower_bound = -10.; + new_upper_bound = 10.; + + // check initial value against lower and upper bounds first + if (selparm_1(k, 3) <= selparm_1(k, 1)) + { + selparm_1(k, 3) = new_lower_bound; + } + else if (selparm_1(k, 3) >= selparm_1(k, 2)) + { + selparm_1(k, 3) = new_upper_bound; + } + else if (selparm_1(k, 3) > 0.) + { + if (selparm_1(k, 3) < 1.0) + { + selparm_1(k, 3) = -log(1.0 / selparm_1(k, 3) - 1.0); + } + else + { + selparm_1(k, 3) = 999.; + } // hardwire to force to be 1.0 + } + else + { + selparm_1(k, 3) = -999.; + } // hardwire to force to 0.0 + + // check prior value against lower and upper bounds first + if (selparm_1(k, 4) <= selparm_1(k, 1)) + { + selparm_1(k, 4) = new_lower_bound; + } + else if (selparm_1(k, 4) >= selparm_1(k, 2)) + { + selparm_1(k, 4) = new_upper_bound; + } + else if (selparm_1(k, 4) > 0.) + { + if (selparm_1(k, 4) < 1.0) + { + selparm_1(k, 4) = -log(1.0 / selparm_1(k, 4) - 1.0); + } + else + { + selparm_1(k, 4) = 999.; + } // hardwire to force to be 1.0 + } + else + { + selparm_1(k, 4) = -999.; + } // hardwire to force to 0.0 + + selparm_1(k, 1) = new_lower_bound; + selparm_1(k, 2) = new_upper_bound; + + warnstream << "new min, max, init, prior: " << selparm_1(k)(1, 4); + write_message (WARN, 0); + } + } + parmcount += N_selparmvec(f); + } + + echoinput << "check on mirror bounds" << endl; + parmcount = 0; + for (f = 1; f <= Nfleet; f++) + { + if (seltype(f, 1) == 5) // uses mirror + { + i = int(selparm_1(parmcount + 1, 3)); + j = int(selparm_1(parmcount + 2, 3)); + echoinput << "check on size selex mirror bounds for fleet: " << f << " " << endl; + if (i <= -1) { + i = 1; + } // legit input, use to set mirror_mask + else if (i == 0) + { + echoinput << " size selex mirror, length range min bin read is (" << i << ") reset to 1 for fleet: " << f << endl; + selparm_1(parmcount + 1, 3) = 1; + i = 1; + } + if (j <= -1) { + j = nlength; + } // legit input, use to set mirror_mask + else if (j == 0) + { + warnstream << "size selex mirror, length range max bin read is (" << j << ") reset to nlength for fleet: " << f; + write_message (ADJUST, 1); + selparm_1(parmcount + 2, 3) = -1; + j = nlength; + } + if (j > nlength) + { + warnstream << "size selex mirror length is > nlength for fleet: " << f << " reset to nlength"; + write_message (ADJUST, 0); + selparm_1(parmcount + 2, 3) = -1; + j = nlength; + } + if (i > j) + { + warnstream << "size selex mirror length range min (" << i << ") greater than max (" << j << ") for fleet: " << f; + write_message (FATAL, 0); // EXIT! + } + if (j > nlength) + { + warnstream << "size selex mirror length is > nlength for fleet: " << f << " reset to nlength"; + write_message (ADJUST, 0); + selparm_1(parmcount + 2, 3) = nlength; + j = nlength; + } + if (i > j) + { + warnstream << "size selex mirror length range min (" << i << ") greater than max (" << j << ") for fleet: " << f; + write_message (FATAL, 0); // EXIT! + } + mirror_mask(f) = 1.0e-10; + mirror_mask(f)(i, j) = 1.; + echoinput << "fleet: " << f << " set mirror for bins: " << i << " through " << j << endl; + echoinput << "set to no prior and not estimated, just in case " << endl; + selparm_1(parmcount + 1, 6) = 0; + selparm_1(parmcount + 2, 6) = 0; + selparm_1(parmcount + 1, 7) = -99; + selparm_1(parmcount + 2, 7) = -99; + echoinput << "end check on mirror mask: " << endl; + } + else if (seltype(f, 1) == 11) // setting min-max len range + { + echoinput << "check on size selex min-max for fleet: " << f << " " << selparm_1(parmcount + 1, 3) << " " << selparm_1(parmcount + 2, 3) << " nsize bins: " << nlength << endl; + i = int(selparm_1(parmcount + 1, 3)); + j = int(selparm_1(parmcount + 2, 3)); + if ((selparm_1(parmcount + 1, 3) - i) > 0.) + { + warnstream << "fleet: " << f << " age selex range min read is: " << selparm_1(parmcount + 1, 3) << "; SS3 expected an integer and will convert "; + write_message (ADJUST, 0); + selparm_1(parmcount + 1, 3) = i; + } + if ((selparm_1(parmcount + 2, 3) - j) > 0.) + { + warnstream << "fleet: " << f << " age selex range max read is: " << selparm_1(parmcount + 2, 3) << "; SS3 expected an integer and will convert "; + write_message (ADJUST, 0); + selparm_1(parmcount + 2, 3) = j; + } + if (selparm_1(parmcount + 2, 3) > nlength) + { + warnstream << "fleet: " << f << " age selex range max read is: " << selparm_1(parmcount + 2, 3) << "; is >nsizes; SS3 will convert "; + write_message (ADJUST, 0); + selparm_1(parmcount + 2, 3) = nlength; + } + echoinput << " accepted range: " << selparm_1(parmcount + 1, 3) << " " << selparm_1(parmcount + 2, 3) << endl; + echoinput << "set to no prior and not estimated, just in case " << endl; + selparm_1(parmcount + 1, 6) = 0; + selparm_1(parmcount + 2, 6) = 0; + selparm_1(parmcount + 1, 7) = -99; + selparm_1(parmcount + 2, 7) = -99; + mirror_mask(f) = 1.0e-10; + mirror_mask(f)(selparm_1(parmcount + 1, 3), selparm_1(parmcount + 2, 3)) = 1.0; + echoinput << "create mirror_mask: " << mirror_mask(f) << endl; + echoinput << "end check on min-max ranges for size selex=11" << endl; + } + + parmcount += N_selparmvec(f); + } + for (f = 1; f <= Nfleet; f++) + { + if (seltype(f + Nfleet, 1) == 11) // setting min-max age range + { + echoinput << "check on age selex min-max for fleet: " << f << " " << selparm_1(parmcount + 1, 3) << " " << selparm_1(parmcount + 2, 3) << " nages: " << nages << endl; + i = int(selparm_1(parmcount + 1, 3)); + j = int(selparm_1(parmcount + 2, 3)); + echoinput << "set to no prior and not estimated, just in case " << endl; + selparm_1(parmcount + 1, 6) = 0; + selparm_1(parmcount + 2, 6) = 0; + selparm_1(parmcount + 1, 7) = -99; + selparm_1(parmcount + 2, 7) = -99; + if ((selparm_1(parmcount + 1, 3) - i) > 0.) + { + warnstream << "fleet: " << f << " age selex range min read is: " << selparm_1(parmcount + 1, 3) << "; SS3 expected an integer and will convert "; + write_message (ADJUST, 0); + selparm_1(parmcount + 1, 3) = i; + } + if ((selparm_1(parmcount + 2, 3) - j) > 0.) + { + warnstream << "fleet: " << f << " age selex range max read is: " << selparm_1(parmcount + 2, 3) << "; SS3 expected an integer and will convert "; + write_message (ADJUST, 0); + selparm_1(parmcount + 2, 3) = j; + } + if (selparm_1(parmcount + 2, 3) > nages) + { + warnstream << "fleet: " << f << " age selex range max read is: " << selparm_1(parmcount + 2, 3) << "; is >nages; SS3 will convert "; + write_message (ADJUST, 0); + selparm_1(parmcount + 2, 3) = nages; + } + echoinput << " accepted range: " << selparm_1(parmcount + 1, 3) << " " << selparm_1(parmcount + 2, 3) << endl; + mirror_mask_a(f) = 0; + mirror_mask_a(f)(selparm_1(parmcount + 1, 3), selparm_1(parmcount + 2, 3)) = 1.0; + echoinput << "create mirror_mask: " << mirror_mask_a(f) << endl; + echoinput << "end check on min-max ranges for age selex=11" << endl; + } + // seltype 41 check on the min-max age range could go here, rather than in selex calcs + parmcount += N_selparmvec(f + Nfleet); + } + // clang-format off + END_CALCS + + int timevary_parm_cnt_sel; + int timevary_parm_start_sel; + ivector selparm_timevary(1,N_selparm) // holds index of timevary used by this base parameter + imatrix timevary_sel(styr-3,YrMax+1,1,2*Nfleet) + int TwoD_AR_do; + int TwoD_AR_cnt + int makefishsel_yr + ivector TwoD_AR_use(1,2*Nfleet); + + LOCAL_CALCS + // clang-format on + timevary_parm_start_sel = 0; + timevary_parm_cnt_sel = 0; + timevary_sel.initialize(); + selparm_timevary.initialize(); + TwoD_AR_use.initialize(); + timevary_used = 0; + for (j = 1; j <= N_selparm; j++) + { + echoinput << j << " sel " << selparm_1(j) << endl; + k = selparm_fleet(j); + if (selparm_1(j, 13) == 0 && selparm_1(j, 8) == 0 && selparm_1(j, 9) == 0) + { + // no time-vary parameter effects + } + else if (k == 0) + { + warnstream << "Comp_err parameters cannot have timevary effects "; + write_message (WARN, 0); + } + else // set up a timevary parameter defintion + { + timevary_pass = column(timevary_sel, k); // year vector for this category of selparm + timevary_used = 1; + ivector timevary_setup(1, 14); // temporary vector for timevary specs + timevary_setup.initialize(); + if (timevary_parm_start_sel == 0) timevary_parm_start_sel = timevary_parm_cnt + 1; + echoinput << endl + << " timevary for sel parameter: " << j << endl; + timevary_cnt++; // count parameters with time-vary effect + selparm_timevary(j) = timevary_cnt; // base parameter will use this timevary specification + timevary_setup(1) = 5; // indicates a sel parm + timevary_setup(2) = j; // index of base parm within that type of parameter + timevary_setup(13) = firstselparm + j; // index of base parm relative to ParCount which is continuous across all types of parameters + timevary_setup(3) = timevary_parm_cnt + 1; // first TV parameter within total list of all timevary parms + z = selparm_1(j, 13); // specified block or trend definition + + k = int(abs(selparm_1(j, 8)) / 100); // find the env link code + timevary_setup(6) = k; // link code for env + if (selparm_1(j, 8) > 0) // env variable used + { + timevary_setup(7) = int(abs(selparm_1(j, 8))) - k * 100; + k = timevary_setup(7); + // for(y=styr-1;y<=YrMax;y++) env_data_pass(y)=env_data_RD(y,k); + env_data_pass(1) = env_data_minyr(k); + env_data_pass(2) = env_data_maxyr(k); + } + else if (abs(selparm_1(j, 8) > 0)) // density-dependence + { + timevary_setup(7) = -int(abs(selparm_1(j, 8)) - k * 100); + do_densitydependent = 1; + k = 0; + env_data_pass.initialize(); + } + if (z > 0) // doing blocks + { + if (z > N_Block_Designs) + { + warnstream << "selex block request exceeds N_block patterns"; + write_message (FATAL, 0); // EXIT! + } + create_timevary(selparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), selparm_fleet(j), Block_Design(z), env_data_pass, N_parm_dev, finish_starter); + } + else + { + create_timevary(selparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), selparm_fleet(j), block_design_null, env_data_pass, N_parm_dev, finish_starter); + } + timevary_def.push_back(timevary_setup(1, 14)); + for (y = styr - 3; y <= YrMax + 1; y++) { + timevary_sel(y, selparm_fleet(j)) = timevary_pass(y); + } // year vector for this category + } + } + if (do_densitydependent == 1 && Fcast_timevary_Selex == 1) { + warnstream << "Fcast_timevary_Selex is 1 (do averages); user should change to 0 (timevary) because density dependence affects a selectivity parameter or growth "< 0) + { + if (timevary_used == 1) autogen_timevary(5) = 1; // indicate that some parameter is time-varying + timevary_parm_cnt_sel = timevary_parm_cnt; // last timevary_selparm + N_selparm3 = N_selparm + timevary_parm_cnt_sel - timevary_parm_start_sel + 1; + } + N_selparm2 = N_selparm3; // for distinguishing the 2D_AR parms + + // now add parameters for the 2D_AR1 approach + // Input in first parameter line several setup factors: rho_y, rho_a, ymin, ymax, amin, amax, use_rho, sigma_amax, null9, null10, null11, null12, null13,null14 + // then one to several parameter lines containing age-specific sigma for ages amin to sigma_amax + // note that parm_dev_minyr and parm_dev_maxyr need to map onto the matrix defined by ymin, ymax, amin, amax, + TwoD_AR_cnt = 0; + echoinput << " now read 0/1 for 2D_AR" << endl; + *(ad_comm::global_datafile) >> TwoD_AR_do; + echoinput << TwoD_AR_do << " #_ 0/1 to request experimental 2D_AR selectivity deviations " << endl; + + if (TwoD_AR_do > 0) + { + // elements 1-11 are read from control.ss; 12 and 13 are calculated internally + // 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase + // 10-before yr range, 11=after yr range, 12-N_parm_dev, 13-selparm_location + // rho is used only to calculate the cor matrix in prelim_calcs; it can never be estimated + // sigma_sel is generally best fixed to a value of 1.0, estimation should not be undertaken without thorough investigation + ivector tempvec(1, 13); + tempvec.initialize(); + TwoD_AR_def.push_back(tempvec); // bypass that pesky zeroth row + TwoD_AR_def_rd.push_back(tempvec); // bypass that pesky zeroth row + echoinput << "read specification for first 2D_AR1: fleet, ymin, ymax, amin, amax, sigma_amax, use_rho, len1/age2, phase, before, after" << endl; + ender = 0; + do + { + ivector tempvec(1, 13); + ivector tempvec2(1, 13); + tempvec.initialize(); + tempvec2.initialize(); + *(ad_comm::global_datafile) >> tempvec(1, 11); + tempvec2 = tempvec; + echoinput << tempvec(1, 11) << endl; + f = tempvec(1); + if (f < 0) + { + ender = 1; + } + else + { + N_parm_dev++; + TwoD_AR_cnt++; + if (tempvec(8) == 1) + { + anystring = "LEN"; + fs = f; + TwoD_AR_use(fs) = TwoD_AR_cnt; + } + else + { + anystring = "AGE"; + fs = f + Nfleet; + TwoD_AR_use(fs) = TwoD_AR_cnt; + } + + // save_sigmaval=tempvec(6); // to restore into TwoD_AR_def_rd later + if (tempvec(6) < tempvec(4)) tempvec(6) = tempvec(4); + if (tempvec(6) > tempvec(5)) tempvec(6) = tempvec(5); + int sigma_amax = tempvec(6); + int use_rho = tempvec(7); + int amin = tempvec(4); + + TwoD_AR_def_rd.push_back(tempvec2); // saves the values as read for writing to control.ss_new + + tempvec(12) = N_parm_dev; + // apply two lines below later when the timevary_setup is created + // tempvec(12)=1; // used for dimensioning the dev vectors in SS_param parm_dev_minyr(k) + // tempvec(13)=(tempvec(3)-tempvec(2)+1)*(tempvec(5)-amin+1); //parm_dev_maxyr(k) + tempvec(13) = N_selparm2 + 1; + z = f; + if (tempvec(8) == 2) z = f + Nfleet; + for (y = tempvec(2); y <= tempvec(3) + 1; y++) { + timevary_sel(y, z) = 1; + } + TwoD_AR_def.push_back(tempvec); + echoinput << "now read a parameter line with the sigma for each age from: " << amin << " to sigma_amax: " << sigma_amax << endl; + for (j = amin; j <= sigma_amax; j++) + { + dvector dtempvec(1, 7); // Lo, Hi, init, prior, prior_sd, prior_type, phase; + dtempvec.initialize(); + *(ad_comm::global_datafile) >> dtempvec(1, 7); + timevary_parm_rd.push_back(dtempvec); + echoinput << " sigmasel for " << anystring << " " << j << " " << dtempvec(3) << endl; + if (timevary_parm_start_sel == 0) { + timevary_parm_start_sel = timevary_parm_cnt + 1; + timevary_parm_cnt_sel = timevary_parm_cnt; + } + ParCount++; + timevary_parm_cnt++; + timevary_parm_cnt_sel++; + N_selparm2++; + ParmLabel += "sigmasel_" + fleetname(f) + "(" + NumLbl(f) + ")_" + anystring + "(" + NumLbl(max(1, j)) + ")"; + if (dtempvec(7) > 0) + { + warnstream << "2DAR Sigmasel parameter is not normally estimable; adequate performance usually obtained by fixing to value of 1.0"; + write_message (WARN, 0); + } + } + if (use_rho == 1) + { + warnstream << "2DAR rho is incompletely implemented; it should only be used experimentally and never estimated"; + write_message (WARN, 0); + echoinput << "read one parameter line for rho_yr, then one for rho_age (or length)" << endl; + { + dvector dtempvec(1, 7); // Lo, Hi, init, prior, prior_sd, prior_type, phase; + dtempvec.initialize(); + *(ad_comm::global_datafile) >> dtempvec(1, 7); + dtempvec(7) = -1; // force no estimation + timevary_parm_rd.push_back(dtempvec); + echoinput << " rho year: " << dtempvec(3) << endl; + ParCount++; + timevary_parm_cnt++; + timevary_parm_cnt_sel++; + N_selparm2++; + ParmLabel += "rho_yr_" + fleetname(f) + "(" + NumLbl(f) + ")_" + anystring; + } + { + dvector dtempvec(1, 7); // Lo, Hi, init, prior, prior_sd, prior_type, phase; + dtempvec.initialize(); + *(ad_comm::global_datafile) >> dtempvec(1, 7); + dtempvec(7) = -1; // force no estimation + timevary_parm_rd.push_back(dtempvec); + echoinput << " rho " << anystring << ": " << dtempvec(3) << endl; + ParCount++; + timevary_parm_cnt++; + timevary_parm_cnt_sel++; + N_selparm2++; + ParmLabel += "rho_" + fleetname(f) + "(" + NumLbl(f) + ")" + anystring; + } + } + echoinput << "ready to read next fleet's 2DAR specs, or terminate by reading line starting with negative fleet" << endl; + } + } while (ender == 0); + } + echoinput << "N_selparm: " << N_selparm << " with timevary: " << N_selparm3 << " with TV and 2D_AR: " << N_selparm2 << " timevary parm range for sel: " << timevary_parm_start_sel << " " << timevary_parm_cnt_sel << " " << timevary_parm_cnt << endl; + + if (timevary_parm_cnt > 0) + { + echoinput << "list all parms used for timevary implementation" << endl; + for (y = 1; y <= timevary_parm_cnt; y++) + { + echoinput << y << " parm " << timevary_parm_rd[y](1, 7) << endl; + } + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.9.xx #Create arrays needed for timevary_parameters + vector baseparm_min(1,timevary_parm_cnt) + vector baseparm_max(1,timevary_parm_cnt) + +!!// SS_Label_Info_4.9.9 #Create arrays for the total set of selex parameters + 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) + ivector selparm_PH_soft(1,N_selparm2) + + LOCAL_CALCS + // clang-format on + // SS_Label_Info_4.9.12 #Create vectors, e.g. selparm_PH(), that will be used to create actual array of estimted parameters + 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, 6); + selparm_CV(f) = selparm_1(f, 5); + selparm_PH(f) = selparm_1(f, 7); + } + j = N_selparm; + if (timevary_parm_start_sel > 0) + { + for (f = timevary_parm_start_sel; f <= timevary_parm_cnt_sel; f++) + { + j++; + selparm_LO(j) = timevary_parm_rd[f](1); + selparm_HI(j) = timevary_parm_rd[f](2); + selparm_RD(j) = timevary_parm_rd[f](3); + selparm_PR(j) = timevary_parm_rd[f](4); + selparm_PRtype(j) = timevary_parm_rd[f](6); + selparm_CV(j) = timevary_parm_rd[f](5); + selparm_PH(j) = timevary_parm_rd[f](7); + } + } + + // SS_Label_Info_4.9.10 #Special bound checking for size selex parameters + z = 0; // parameter counter within this section + for (f = 1; f <= Nfleet; f++) + { + if (seltype(f, 1) == 8 || seltype(f, 1) == 22 || seltype(f, 1) == 23 || seltype(f, 1) == 24 || seltype(f, 1) == 2) + { + if (selparm_1(z + 1, 1) < len_bins_m(2)) + { + warnstream << "Fleet:_" << f << "min bound on parameter for size at peak is " << selparm_1(z + 1, 1) << "; should be >= midsize bin 2 (" << len_bins_m(2) << ")"; + write_message (WARN, 0); + } + if (selparm_1(z + 1, 1) < len_bins_dat(1) && (seltype(f, 1) == 24 || seltype(f, 1) == 2)) + { + warnstream << "Fleet:_" << f << "min bound on parameter for size at peak is " << selparm_1(z + 1, 1) << "; which is < min databin (" << len_bins_dat(1) << "), so illogical."; + write_message (WARN, 0); + } + if (selparm_1(z + 1, 2) > len_bins_m(nlength - 1)) + { + warnstream << "Fleet:_" << f << "max bound on parameter for size at peak is " << selparm_1(z + 1, 2) << "; should be <= midsize bin N-1 (" << len_bins_m(nlength - 1) << ")"; + write_message (WARN, 0); + } + } + z += N_selparmvec(f); + } + // end special bound checking + + // SS_Label_Info_4.9.11 #Create time/fleet array indicating when changes in selex occcur + timevary_sel(styr - 3) = 1; + timevary_sel(styr) = 1; + timevary_sel(endyr + 1) = 1; + + for (y = styr + 1; y <= endyr; y++) + { + z = 0; // parameter counter within this section + for (f = 1; f <= 2 * Nfleet; f++) + { + if (seltype(f, 1) == 5 || seltype(f, 1) == 15) // mirror + { + if (f <= Nfleet) { + timevary_sel(y, f) = timevary_sel(y, seltype(f, 4)); + } + else + { + timevary_sel(y, f) = timevary_sel(y, seltype(f, 4) + Nfleet); + } + z += seltype_Nparam(seltype(f, 1)); + } + if (f <= Nfleet && seltype(f, 2) < 0) // retention is being mirrored + { + k = -seltype(f, 2); + if (timevary_sel(y, k) > 0) timevary_sel(y, f) = 1; + } + if (f <= Nfleet) + { + // CHECK: why is below needed for WTage_rd>0 + if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || WTage_rd > 0) + { + timevary_sel(y, f) = 1; + } + } + } // end type + + } // end years + echoinput << "Recalc_flag_for_length_selex_recalc_by_year" << endl; + for (f = 1; f <= Nfleet; f++) + { + echoinput << f << " " << fleetname(f) << " " << column(timevary_sel, f) << endl; + } + echoinput << "Recalc_flag_for_age_selex_recalc_by_year" << endl; + for (f = 1; f <= Nfleet; f++) + { + int f2 = f + Nfleet; + echoinput << f << " " << fleetname(f) << " " << column(timevary_sel, f2) << endl; + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.10 #Read tag recapture parameter setup +// if Tags are used, the read parameters for initial tag loss, chronic tag loss, andd +// fleet-specific tag reporting. Of these, only reporting rate will be allowed to be time-varying + init_int TG_custom; // 1=read; 0=create default parameters +!! echoinput<0) echoinput<<" Tag parameters as read "<0) {k1=k;} else {k1=1;} + vector TG_parm_LO(1,k1); + vector TG_parm_HI(1,k1); + ivector TG_parm_PH(1,k1); + int firsttagparm; + LOCAL_CALCS + // clang-format on + if (Do_TG > 0) + { + if (TG_custom == 1) + { + TG_parm2 = TG_parm1; // assign to the read values + } + else + { + TG_parm2.initialize(); + onenum = " "; + for (j = 1; j <= N_TG; j++) + { + TG_parm2(j, 1) = -10; // min + TG_parm2(j, 2) = 10; // max + TG_parm2(j, 3) = -7.; // init + TG_parm2(j, 4) = -7.; // prior + TG_parm2(j, 5) = 0.001; // prior is quite diffuse + TG_parm2(j, 6) = 1.; // default prior type is symmetric beta + if (j == 1) + { + TG_parm2(j, 7) = -4; + } // phase + else + { + TG_parm2(j, 7) = -1000; + } // phase + } + + for (j = 1; j <= N_TG; j++) + { + TG_parm2(j + N_TG) = TG_parm2(1); // set chronic tag retention equal to initial tag_retention + } + for (j = 1; j <= N_TG; j++) // set overdispersion + { + TG_parm2(j + 2 * N_TG, 1) = 1; // min + TG_parm2(j + 2 * N_TG, 2) = 10; // max + TG_parm2(j + 2 * N_TG, 3) = 2.; // init + TG_parm2(j + 2 * N_TG, 4) = 2.; // prior + TG_parm2(j + 2 * N_TG, 5) = 0.001; // prior is quite diffuse + TG_parm2(j + 2 * N_TG, 6) = 1.; // default prior type is symmetric beta + if (j == 1) + { + TG_parm2(j + 2 * N_TG, 7) = -4; + } // phase + else + { + TG_parm2(j + 2 * N_TG, 7) = -1000; + } // phase + } + for (j = 1; j <= Nfleet1; j++) + { + TG_parm2(j + 3 * N_TG, 1) = -10; // min + TG_parm2(j + 3 * N_TG, 2) = 10; // max + TG_parm2(j + 3 * N_TG, 3) = 7.; // init + TG_parm2(j + 3 * N_TG, 4) = 7.; // prior + TG_parm2(j + 3 * N_TG, 5) = 0.001; // prior is quite diffuse + TG_parm2(j + 3 * N_TG, 6) = 1.; // default prior type is symmetric beta + if (j == 1) + { + TG_parm2(j + 3 * N_TG, 7) = -4; + } // phase + else + { + TG_parm2(j + 3 * N_TG, 7) = -1000; + } // phase + } + // set tag reporting decay to nil decay rate + for (j = 1; j <= Nfleet1; j++) + { + k = j + 3 * N_TG + Nfleet1; + TG_parm2(k, 1) = -4.; + TG_parm2(k, 2) = 0.; + TG_parm2(k, 3) = 0.; + TG_parm2(k, 4) = 0.; // prior of zero + TG_parm2(k, 5) = 2.; // sd dev of prior + TG_parm2(k, 6) = 6.; // default prior type is squared dev + if (j == 1) + { + TG_parm2(k, 7) = -4; + } // phase + else + { + TG_parm2(k, 7) = -1000; + } // phase + } + } + + TG_parm_LO = column(TG_parm2, 1); + TG_parm_HI = column(TG_parm2, 2); + k = 3 * N_TG + 2 * Nfleet1; + for (j = 1; j <= k; j++) TG_parm_PH(j) = TG_parm2(j, 7); // write it out due to no typecast available + + echoinput << "create tag labels " << endl; + // SS_Label_Info_4.10.1 #Create parameter count and parameter names for tag parameters + onenum = " "; + firsttagparm = ParCount; + for (j = 1; j <= N_TG; j++) + { + sprintf(onenum, "%d", j); + ParCount++; + ParmLabel += "TG_loss_init_" + onenum + CRLF(1); + } + for (j = 1; j <= N_TG; j++) + { + sprintf(onenum, "%d", j); + ParCount++; + ParmLabel += "TG_loss_chronic_" + onenum + CRLF(1); + } + for (j = 1; j <= N_TG; j++) + { + sprintf(onenum, "%d", j); + ParCount++; + ParmLabel += "TG_overdispersion_" + onenum + CRLF(1); + if (TG_parm_LO(2 * N_TG + j) < 1.0) + { + warnstream << "Overdispersion par_min is <1.0 for TG= " << j << "; value = " << TG_parm_LO(2 * N_TG + j) << "; changed to 1.001 for run"; + write_message (ADJUST, 0); + TG_parm_LO(2 * N_TG + j) = 1.001; + } + if (TG_parm2(2 * N_TG + j, 3) < 1.0) + { + warnstream << "Overdispersion parameter is <1.0 for TG= " << j << "; value = " << TG_parm2(2 * N_TG + j, 3) << "; changed to 1.001 for run"; + write_message (ADJUST, 0); + TG_parm2(2 * N_TG + j, 3) = 1.001; + } + } + for (j = 1; j <= Nfleet; j++) + { + if (fleet_type(j) <= 2) + { + sprintf(onenum, "%d", j); + ParCount++; + ParmLabel += "TG_report_fleet:_" + onenum + CRLF(1); + } + } + for (j = 1; j <= Nfleet; j++) + { + if (fleet_type(j) <= 2) + { + sprintf(onenum, "%d", j); + ParCount++; + ParmLabel += "TG_rpt_decay_fleet:_" + onenum + CRLF(1); + } + } + + echoinput << " Processed/generated Tag parameters " << endl + << TG_parm2 << endl; + } + else + { + TG_parm_LO.initialize(); + TG_parm_HI.initialize(); + TG_parm_PH.initialize(); + } + // clang-format off + END_CALCS + + ivector parm_dev_minyr(1,N_parm_dev); + ivector parm_dev_maxyr(1,N_parm_dev); + ivector parm_dev_PH(1,N_parm_dev); + int Do_Var_adjust + + ivector parm_dev_type(1,N_parm_dev); // distinguish parameter dev vectors from 2DAR devs + ivector parm_dev_use_rho(1,N_parm_dev); // uses rho parameter, or not + ivector parm_dev_info(1,N_parm_dev); // pointer from list of devvectors to 2DAR list + ivector TwoD_AR_ymin(1,TwoD_AR_cnt) + ivector TwoD_AR_ymax(1,TwoD_AR_cnt) + ivector TwoD_AR_amin(1,TwoD_AR_cnt) + ivector TwoD_AR_amax(1,TwoD_AR_cnt) + ivector TwoD_AR_before(1,TwoD_AR_cnt) // what to do in years before the year range + ivector TwoD_AR_after(1,TwoD_AR_cnt) // what to do in years after the year range + ivector TwoD_AR_degfree(1,TwoD_AR_cnt) // N years with observations * nages in the 2D_AR range + ivector TwoD_AR_cor_dim(1,TwoD_AR_cnt) + + LOCAL_CALCS + // clang-format on + parm_dev_use_rho.initialize(); + if (timevary_cnt > 0) + { + for (j = 1; j <= timevary_cnt; j++) // loop all timevary to set up devs; note that 2D_AR1 is counted in N_parm_dev, but not in timevary_cnt + { + ivector timevary_setup(1, 14); + timevary_setup(1, 14) = timevary_def[j](1, 14); + if (timevary_setup(8) > 0) + { + k = timevary_setup(8); // dev vector used + parm_dev_minyr(k) = timevary_setup(10); // used for dimensioning the dev vectors in SS_param + parm_dev_maxyr(k) = timevary_setup(11); + parm_dev_PH(k) = timevary_setup(12); + echoinput << " dev vector #: " << k << " setup: " << timevary_setup << " phase: " << parm_dev_PH(k) << endl; + f = timevary_setup(13); // index of base parameter + int picker = timevary_setup(9); + parm_dev_type(k) = 1; // so P'=P+dev*se with objfun using -log(1); so expects se of devs to be approx unit normal + // parm_dev_type is used in SS_objfunc.tpl + if (picker > 20) + { + picker -= 20; + timevary_setup(14) = 1; // flag to continue last dev through to YrMax + timevary_def[j](14) = 1; // save in array also + echoinput << j << " setting flag to continue last dev " << Fcast_timevary_Selex << " " << firstselparm << " " << f << " " << firstselparm + N_selparm << " " << endl; + if (Fcast_timevary_Selex == 1 && f >= firstselparm && f <= (firstselparm + N_selparm)) + { + warnstream << "for selectivity parmdevs, must change Fcast_timevary_Selex to 0 when using continue last dev"; + write_message (WARN, 1); + } + } + if (picker > 10) + { + parm_dev_type(k) = 3; // P'=P+dev; objfun using -log(se) to match 3.30.12 and earlier + picker -= 10; + } + if (picker == 6) parm_dev_type(k) = 4; // add penalty to keep rmse near 1. Needs to estimate stddev factor + // this works, but slow final convergence because getting stddev exactly to 1.0 causes high correlation among devs + timevary_setup(9) = picker; // set to its core function because parm_dev_type has been setup + timevary_def[j](9) = picker; // save in array also + + parm_dev_use_rho(k) = 0; + // require rho to be used for some dev approaches + if (picker == 4 || picker == 5 || picker == 6) parm_dev_use_rho(k) = 1; + for (y = parm_dev_minyr(k); y <= parm_dev_maxyr(k); y++) + { + sprintf(onenum, "%d", y); + ParCount++; + if (picker == 1) + { + ParmLabel += ParmLabel(f) + "_DEVmult_" + onenum + CRLF(1); + } + else if (picker == 2) + { + ParmLabel += ParmLabel(f) + "_DEVadd_" + onenum + CRLF(1); + } + else if (picker == 3) + { + ParmLabel += ParmLabel(f) + "_DEVrwalk_" + onenum + CRLF(1); + } + else if (picker == 4) + { + ParmLabel += ParmLabel(f) + "_DEV_MR_rwalk_" + onenum + CRLF(1); + } + else if (picker == 5) + { + ParmLabel += ParmLabel(f) + "_DEV_MR_rwalk_bnd_" + onenum + CRLF(1); + } // for bounding result on base parm min-max + else if (picker == 6) + { + ParmLabel += ParmLabel(f) + "_DEV_MR_rwalk_pen_" + onenum + CRLF(1); + } // like 3.24 + else + { + warnstream << "illegal parmdevtype for parm " << f; + write_message (FATAL, 0); // EXIT! + } + } + } + } + } + + // now add dev vectors for the 2D_AR1 + TwoD_AR_degfree.initialize(); + for (f = 1; f <= TwoD_AR_cnt; f++) + { + ivector TwoD_AR_setup(1, 13); + // 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase + // 10-mindimension, 11=maxdim, 12-N_parm_dev, 13-selparm_location + // note that elements 10 and 11 have different usages when used for time-varying parameters + TwoD_AR_setup(1, 13) = TwoD_AR_def[f](1, 13); + echoinput << f << " 2D_AR1 setup " << TwoD_AR_setup << endl; + k = TwoD_AR_setup(12); // dev vector used + parm_dev_minyr(k) = 1; // used for dimensioning the dev vectors in SS_param parm_dev_minyr(k) + parm_dev_maxyr(k) = (TwoD_AR_setup(3) - TwoD_AR_setup(2) + 1) * (TwoD_AR_setup(5) - TwoD_AR_setup(4) + 1); //parm_dev_maxyr(k) + parm_dev_PH(k) = TwoD_AR_setup(9); + parm_dev_type(k) = 2; // distinguish 2D_AR devs from parameter devs + parm_dev_use_rho(k) = 0; // need to update when implemented + parm_dev_info(k) = f; // pointer from parmdev list to the 2D_AR list + TwoD_AR_ymin(f) = TwoD_AR_setup(2); + TwoD_AR_ymax(f) = TwoD_AR_setup(3); + TwoD_AR_amin(f) = TwoD_AR_setup(4); + TwoD_AR_amax(f) = TwoD_AR_setup(5); + TwoD_AR_before(f) = TwoD_AR_setup(10); + TwoD_AR_after(f) = TwoD_AR_setup(11); + TwoD_AR_cor_dim(f) = (TwoD_AR_ymax(f) - TwoD_AR_ymin(f) + 1) * (TwoD_AR_amax(f) - TwoD_AR_amin(f) + 1); + for (y = TwoD_AR_ymin(f); y <= TwoD_AR_ymax(f); y++) + { + TwoD_AR_degfree(f) += have_data_yr(y, timevary_setup(1)); + for (a = TwoD_AR_amin(f); a <= TwoD_AR_amax(f); a++) + { + sprintf(onenum, "%d", y); + sprintf(anystring, "%d", a); + ParCount++; + if (TwoD_AR_setup(8) == 1) + { + ParmLabel += fleetname(TwoD_AR_setup(1)) + "_ARDEV_y" + onenum + "_Lbin" + anystring + CRLF(1); + } + else + { + ParmLabel += fleetname(TwoD_AR_setup(1)) + "_ARDEV_y" + onenum + "_A" + anystring + CRLF(1); + } + } + } + echoinput << " total years, and with data " << TwoD_AR_ymax(f) - TwoD_AR_ymin(f) + 1 << " " << TwoD_AR_degfree(f) << " times nages: "; + TwoD_AR_degfree(f) *= (TwoD_AR_amax(f) - TwoD_AR_amin(f) + 1); + echoinput << TwoD_AR_degfree(f) << endl; + } + + echoinput << " read var_adjust list until -9999" << endl; + ender = 0; + do + { + dvector tempvec(1, 3); + *(ad_comm::global_datafile) >> tempvec(1, 3); + echoinput << tempvec << endl; + if (tempvec(1) == -9999.) ender = 1; + var_adjust_data.push_back(tempvec(1, 3)); + } while (ender == 0); + Do_Var_adjust = var_adjust_data.size() - 1; + echoinput << " number of variance adjustment records = " << Do_Var_adjust << endl; + // clang-format off + END_CALCS + matrix var_adjust(1,7,1,Nfleet) + // init_matrix var_adjust_list(1,Do_Var_adjust+1,1,3) + + LOCAL_CALCS + // clang-format on + var_adjust.initialize(); + for (j = 4; j <= 7; j++) + { + var_adjust(j) = 1.0; // null value + } + if (Do_Var_adjust > 0) + { + for (j = 1; j <= Do_Var_adjust; j++) + { + var_adjust(var_adjust_data[j - 1](1), var_adjust_data[j - 1](2)) = var_adjust_data[j - 1](3); + } + echoinput << " Var_adjustments as read " << endl + << var_adjust << endl; + } + else + { + var_adjust(1) = 0.; + var_adjust(2) = 0.; + var_adjust(3) = 0.; + var_adjust(4) = 1.; + var_adjust(5) = 1.; + var_adjust(6) = 1.; + var_adjust(7) = 1.; + } + // clang-format off + END_CALCS + + init_int max_lambda_phase + init_number sd_offset + + LOCAL_CALCS + // clang-format on + echoinput + << max_lambda_phase << " max_lambda_phase " << endl; + if (max_lambda_phase < 1) max_lambda_phase = 1; + echoinput << sd_offset << " sd_offset (adds log(s)); needed if variance parameters are estimated " << endl; + if (sd_offset == 0) + { + if (varparm_estimated(1) == 1) + { + warnstream << "growth variance is estimated parameter, so change sd_offset to 1"; + write_message (FATAL, 0); // EXIT! + } + if (varparm_estimated(2) == 1) + { + warnstream << "recruitment sigmaR is estimated parameter, so change sd_offset to 1"; + write_message (FATAL, 0); // EXIT! + } + if (varparm_estimated(3) == 1) + { + warnstream << "survey extraSD is estimated parameter, so change sd_offset to 1"; + write_message (FATAL, 0); // EXIT! + } + } + if (depletion_fleet > 0 && depletion_type < 2 && max_lambda_phase < 2) + { + max_lambda_phase = 2; + warnstream << "Increase max_lambda_phase to 2 because depletion fleet is being used"; + write_message (ADJUST, 0); + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.11.1 #Define type_phase arrays for lambdas + matrix surv_lambda(1,Nfleet,1,max_lambda_phase) + matrix disc_lambda(1,Nfleet,1,max_lambda_phase) + matrix mnwt_lambda(1,Nfleet,1,max_lambda_phase) + matrix length_lambda(1,Nfleet,1,max_lambda_phase) + matrix age_lambda(1,Nfleet,1,max_lambda_phase) + matrix sizeage_lambda(1,Nfleet,1,max_lambda_phase) + matrix init_equ_lambda(1,Nfleet,1,max_lambda_phase) + matrix catch_lambda(1,Nfleet,1,max_lambda_phase) + vector recrdev_lambda(1,max_lambda_phase) + vector regime_lambda(1,max_lambda_phase) + vector parm_prior_lambda(1,max_lambda_phase) + vector parm_dev_lambda(1,max_lambda_phase) + vector CrashPen_lambda(1,max_lambda_phase) + vector Morphcomp_lambda(1,max_lambda_phase) + matrix SzFreq_lambda(1,SzFreq_N_Like,1,max_lambda_phase) + matrix TG_lambda1(1,N_TG2,1,max_lambda_phase) + matrix TG_lambda2(1,N_TG2,1,max_lambda_phase) + vector F_ballpark_lambda(1,max_lambda_phase) + +!!// SS_Label_Info_4.11.2 #Read and process any lambda adjustments + int N_lambda_changes + int N_changed_lambdas + LOCAL_CALCS + // clang-format on + echoinput << endl << "LAMBDA" << endl + << " each line has 5 values: like_code, fleet, beginning_phase, value, code_for_sizefreq "<< endl + << " terminate reading with like_code = -9999" << endl + << " like_code options are: 1=surv; 2=disc; 3=mnwt; 4=length; 5=age; 6=SizeFreq; 7=sizeage; 8=catch; 9=init_equ_catch; " << endl + << " 10=recrdev; 11=parm_prior; 12=parm_dev; 13=CrashPen; 14=Morphcomp; 15=Tag-comp; 16=Tag-negbin; 17=F_ballpark; 18=initEQregime." << endl + << " 2nd value (fleet) only used for like_codes 1 - 9, which are fleet-specific, except" << endl + << " 2nd value is used for Tag-Group, instead of fleet, for like_codes 15 & 16." << endl + << " 5th value is used only for like_code=6 and specifies the SizeFreq method used, which is in addition to fleet designation." << endl; + + ender = 0; // begin reading lambda changes + do + { + dvector tempvec(1, 5); + *(ad_comm::global_datafile) >> tempvec(1, 5); + if (tempvec(1) == -9999.) ender = 1; + lambda_change_data.push_back(tempvec(1, 5)); + } while (ender == 0); + N_lambda_changes = lambda_change_data.size() - 1; + // clang-format off + END_CALCS + + matrix Lambda_changes(1,N_lambda_changes,1,5) + LOCAL_CALCS + // clang-format on + for (f = 1; f <= N_lambda_changes; f++) Lambda_changes(f) = lambda_change_data[f - 1]; + if (N_lambda_changes > 0) echoinput << N_lambda_changes << " lambda changes: " << endl + << Lambda_changes << endl; + surv_lambda = 1.; // 1 + disc_lambda = 1.; // 2 + mnwt_lambda = 1.; // 3 + length_lambda = 1.; // 4 + age_lambda = 1.; // 5 + SzFreq_lambda = 1.; // 6 + sizeage_lambda = 1.; // 7 + catch_lambda = 1.; // 8 + init_equ_lambda = 1.; // 9 + recrdev_lambda = 1.; // 10 + parm_prior_lambda = 1.; // 11 + parm_dev_lambda = 1.; // 12 + CrashPen_lambda = 1.; // 13 + Morphcomp_lambda = 1.; // 14 + TG_lambda1 = 1.; // 15 + TG_lambda2 = 1.; //16 + F_ballpark_lambda = 1.; // 17 + regime_lambda = 1.; // 18 + + if (depletion_fleet > 0 && depletion_type < 2) + { + for (f = 1; f <= Nfleet; f++) + { + surv_lambda(f, 1) = 0.0; + init_equ_lambda(f, 1) = 0.0; + disc_lambda(f, 1) = 0.0; + mnwt_lambda(f, 1) = 0.0; + length_lambda(f, 1) = 0.0; + age_lambda(f, 1) = 0.0; + sizeage_lambda(f, 1) = 0.0; + // catch_lambda(f,1)=0.0; // keep this positive to prevent crashes from bad fit to catch + } + if (SzFreq_Nmeth > 0) + { + for (z = 1; z <= SzFreq_N_Like; z++) + { + SzFreq_lambda(z, 1) = 0.0; + } + } + if (N_TG2 > 0) + { + for (z = 1; z <= N_TG2; z++) + { + TG_lambda1(z, 1) = 0.0; + TG_lambda2(z, 1) = 0.0; + } + } + recrdev_lambda(1) = 0.0; + Morphcomp_lambda(1) = 0.0; + F_ballpark_lambda(1) = 0.0; + + surv_lambda(depletion_fleet, 1) = 1.0; + } + + N_changed_lambdas = 0; + for (j = 1; j <= N_lambda_changes; j++) + { + k = Lambda_changes(j, 1); // like component + f = Lambda_changes(j, 2); // fleet + s = Lambda_changes(j, 3); // phase + if (k <= 9) // only check those codes that are fleet-specific + { + if (f > Nfleet) + { + k = 0; + warnstream << "Illegal fleet/survey for lambda change at row: " << j << " fleet: " << f << " > Nfleet"; + write_message (ADJUST, 0); + } + } + else if (k == 15 || k == 16) // tag data + { + if (f > N_TG2) + { + k = 0; + warnstream << "Illegal tag group for lambda change at row: " << j << " Tag: " << f << " > N_taggroups"; + write_message (ADJUST, 0); + } + } + else if (k > 18) + { + k = 0; + warnstream << "Illegal lambda_type for lambda change at row: " << j << " Method: " << k << " > 17"; + write_message (ADJUST, 0); + } + if (s > max_lambda_phase) + { + k = 0; + warnstream << "Illegal request for lambda change at row: " << j << " phase: " << s << " > max_lambda_phase: " << max_lambda_phase; + write_message (ADJUST, 0); + } + // if(s>Turn_off_phase) s=max(1,Turn_off_phase); + temp = Lambda_changes(j, 4); // value + if (temp != 0.0 && temp != 1.0) N_changed_lambdas++; + z = Lambda_changes(j, 5); // special for sizefreq + switch (k) + { + case 0: // do nothing + { + break; + } + case 1: // survey + { + surv_lambda(f)(s, max_lambda_phase) = temp; + break; + } + case 2: // discard + { + disc_lambda(f)(s, max_lambda_phase) = temp; + break; + } + case 3: // meanbodywt + { + mnwt_lambda(f)(s, max_lambda_phase) = temp; + break; + } + case 4: // lengthcomp + { + length_lambda(f)(s, max_lambda_phase) = temp; + break; + } + case 5: // agecomp + { + age_lambda(f)(s, max_lambda_phase) = temp; + break; + } + case 6: // sizefreq comp + { + z = Lambda_changes(j, 5); // sizefreq method + if (z > SzFreq_Nmeth) + { + warnstream << "reading sizefreq lambda change for method > Nmeth " << Lambda_changes(j, 5); + write_message (FATAL, 0); // EXIT! + } + SzFreq_lambda(SzFreq_LikeComponent(f, z))(s, max_lambda_phase) = temp; + break; + } + case 7: // size-at-age + { + sizeage_lambda(f)(s, max_lambda_phase) = temp; + break; + } + case 8: // catch + { + catch_lambda(f)(s, max_lambda_phase) = temp; + break; + } + case 9: // init_equ_catch + { + init_equ_lambda(f)(s, max_lambda_phase) = temp; + break; + } + case 10: // recr_dev + { + recrdev_lambda(s, max_lambda_phase) = temp; + break; + } + case 11: // parm_prior + { + parm_prior_lambda(s, max_lambda_phase) = temp; + break; + } + case 12: // parm_dev + { + parm_dev_lambda(s, max_lambda_phase) = temp; + break; + } + case 13: // crash_penalty + { + CrashPen_lambda(s, max_lambda_phase) = temp; + break; + } + case 14: // morphcomp + { + Morphcomp_lambda(s, max_lambda_phase) = temp; + break; + } + case 15: // Tag - multinomial by fleet where f is now tag group + { + TG_lambda1(f)(s, max_lambda_phase) = temp; + break; + } + case 16: // Tag - total by time where f is now tag group + { + TG_lambda2(f)(s, max_lambda_phase) = temp; + break; + } + case 17: // F ballpark + { + F_ballpark_lambda(s, max_lambda_phase) = temp; + break; + } + case 18: // regime lambda - only for initial equilibrium + { + regime_lambda(s, max_lambda_phase) = temp; + break; + } + } + } + for (f = 1; f <= Nfleet; f++) + { + if (Svy_N_fleet(f) == 0) surv_lambda(f) = 0.; + if (disc_N_fleet(f) == 0) disc_lambda(f) = 0.; + if (Nobs_l(f) == 0) length_lambda(f) = 0.; + if (Nobs_a(f) == 0) age_lambda(f) = 0.; + if (Nobs_ms(f) == 0) sizeage_lambda(f) = 0.; + } + if (nobs_mnwt == 0) mnwt_lambda = 0.; // more complicated to turn off for each fleet + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.12 #Read setup for more derived quantities to include in the STD report + init_int Do_More_Std // option (currently 0, 1, or 2) + int More_Std_N_Inputs; // count of inputs (depends on option above) + LOCAL_CALCS + // clang-format on + More_Std_N_Inputs = 0; + if (Do_More_Std == 1) { + More_Std_N_Inputs = 9; + } + if (Do_More_Std == 2) { + More_Std_N_Inputs = 13; + } + // clang-format off + END_CALCS + ivector More_Std_Input(1,13); // read dimensions + init_ivector temp_std_input(1,More_Std_N_Inputs) + LOCAL_CALCS + // clang-format on + echoinput + << Do_More_Std << " # extra stdev reporting: 0 = skip, 1 = read specs for reporting stdev for selectivity, size, and numbers, 2 = add option for M, dyn. Bzero & Smrybio " << endl; + More_Std_Input.initialize(); + if (Do_More_Std > 0) + { + echoinput << "inpt_as_read: " << temp_std_input << endl; + More_Std_Input(1, More_Std_N_Inputs) = temp_std_input(1, More_Std_N_Inputs); + echoinput << More_Std_Input(1, 4) << " # Selectivity: (1) 0 to skip or fleet, (2) 1=len/2=age/3=combined, (3) year, (4) N selex bins; NOTE: combined reports in age bins" << endl; + echoinput << More_Std_Input(5, 6) << " # Growth: (1) 0 to skip or growth pattern, (2) growth ages; NOTE: does each sex" << endl; + echoinput << More_Std_Input(7, 9) << " # Numbers-at-age: (1) 0 to skip or area(-1 for all), (2) year, (3) N ages; NOTE: sums across morphs" << endl; + } + if (Do_More_Std >= 2) + { + echoinput << More_Std_Input(10, 11) << " # Mortality: (1) 0 to skip or growth pattern, (2) N ages for mortality; NOTE: does each sex" << endl; + echoinput << More_Std_Input(12) << " # Dyn_Bzero: 0 to skip, 1 to do, 2 w/ recr" << endl; + echoinput << More_Std_Input(13) << " # SmryBio: 0 to skip, 1 to do" << endl; + } + // clang-format off + END_CALCS + + int Do_Selex_Std; + int Selex_Std_AL; + int Selex_Std_Year; + int Selex_Std_Cnt; + int Do_Growth_Std; + int Growth_Std_Cnt; + int Do_NatAge_Std; + int NatAge_Std_Year; + int NatAge_Std_Cnt; + int Do_NatM_Std; + int NatM_Std_Cnt; + int Do_Dyn_Bzero; + int Do_se_smrybio; + int Do_se_LnSSB; + int Extra_Std_N; // dimension for the sdreport vector Selex_Std which also contains the Growth_Std + + LOCAL_CALCS + // clang-format on + Extra_Std_N = 0; + + // don't read any extra std inputs + if (Do_More_Std == 0) + { + Do_Selex_Std = 0; + Selex_Std_AL = 1; + Selex_Std_Year = endyr; + Selex_Std_Cnt = 0; + Do_Growth_Std = 0; + Growth_Std_Cnt = 0; + Do_NatAge_Std = 0; + NatAge_Std_Cnt = 0; + NatAge_Std_Year = endyr; + Do_NatM_Std = 0; + NatM_Std_Cnt = 0; + Do_Dyn_Bzero = 0; + Do_se_smrybio = 0; + Do_se_LnSSB = 0; + } + + // read standard extra std inputs (only option prior to 3.30.15) + if (Do_More_Std > 0) + { + Do_Selex_Std = More_Std_Input(1); + Selex_Std_AL = More_Std_Input(2); + Selex_Std_Year = More_Std_Input(3); + if (Selex_Std_Year < 0) Selex_Std_Year = endyr; + Selex_Std_Cnt = More_Std_Input(4); + Do_Growth_Std = More_Std_Input(5); + Growth_Std_Cnt = More_Std_Input(6); + Do_NatAge_Std = More_Std_Input(7); + NatAge_Std_Year = More_Std_Input(8); + if (NatAge_Std_Year < 0) NatAge_Std_Year = endyr + 1; + NatAge_Std_Cnt = More_Std_Input(9); + if (Do_Selex_Std <= 0) Selex_Std_Cnt = 0; + if (Do_Growth_Std <= 0) Growth_Std_Cnt = 0; + if (Do_NatAge_Std == 0) NatAge_Std_Cnt = 0; + Do_NatM_Std = 0; // value replaced below if Do_More_Std==2 + NatM_Std_Cnt = 0; // value replaced below if Do_More_Std==2 + } + + // read additional extra std inputs for NatM (added in 3.30.15) + if (Do_More_Std == 2) + { + Do_NatM_Std = More_Std_Input(10); + NatM_Std_Cnt = More_Std_Input(11); + if (Do_NatM_Std <= 0) { + NatM_Std_Cnt = 0; + } + Do_Dyn_Bzero = More_Std_Input(12); + Do_se_smrybio = More_Std_Input(13); + } + // clang-format off + END_CALCS + + // get vector of length bins or ages for selex std (either input or autogenerate) + init_ivector Selex_Std_Pick(1,Selex_Std_Cnt); + LOCAL_CALCS + // clang-format on + if (Do_Selex_Std > 0) + { + echoinput << Selex_Std_Pick << " # vector with selex std bins (-1 in first bin to self-generate)" << endl; + if (Selex_Std_Pick(1) < 0) // then self-generate even bin selection + { + if (Selex_Std_AL == 1) // length-based selex + { + if (Selex_Std_Cnt == 1) + { + Selex_Std_Pick(1) = nlength / 2; + } + else if (Selex_Std_Cnt == 2) + { + Selex_Std_Pick(1) = nlength / 2; + Selex_Std_Pick(2) = nlength; + } + else + { + j = nlength / (Selex_Std_Cnt - 1); + Selex_Std_Pick(1) = j / 2; + for (i = 2; i <= Selex_Std_Cnt - 1; i++) Selex_Std_Pick(i) = Selex_Std_Pick(i - 1) + j; + Selex_Std_Pick(Selex_Std_Cnt) = nlength; + } + echoinput << "generate length selex std for fleet: " << Do_Selex_Std << " in year: " << Selex_Std_Year << " at bins: " << Selex_Std_Pick << endl; + } + else // age-based or age-length-combined selex + { + if (Selex_Std_Cnt == 1) + { + Selex_Std_Pick(1) = nages / 2; + } + else if (Selex_Std_Cnt == 2) + { + Selex_Std_Pick(1) = nages / 2; + Selex_Std_Pick(2) = nages; + } + else + { + j = nages / (Selex_Std_Cnt - 1); + Selex_Std_Pick(1) = j / 2; + for (i = 2; i <= Selex_Std_Cnt - 1; i++) Selex_Std_Pick(i) = Selex_Std_Pick(i - 1) + j; + Selex_Std_Pick(Selex_Std_Cnt) = nages; + } + echoinput << "generate age selex std for fleet: " << Do_Selex_Std << " in year: " << Selex_Std_Year << " at ages: " << Selex_Std_Pick << endl; + } + } + // adjust values to keep in range + for (i = 1; i <= Selex_Std_Cnt; i++) + { + if (Selex_Std_AL == 1) // length-based selex + { + if (Selex_Std_Pick(i) <= 0) Selex_Std_Pick(i) = 1; + if (Selex_Std_Pick(i) > nlength) + { + warnstream << "Selex_std requested output past nlength, resets to nlength, may produce duplicates"; + write_message (ADJUST, 0); + Selex_Std_Pick(i) = nlength; + } + } + else // age-based or age-length-combined selex + { + if (Selex_Std_Pick(i) < 0) Selex_Std_Pick(i) = 0; + if (Selex_Std_Pick(i) > nages) + { + warnstream << "Selex_std requested output past nages, resets to nages, may produce duplicates"; + write_message (ADJUST, 0); + Selex_Std_Pick(i) = nages; + } + } + } + // increment count + Extra_Std_N = gender * Selex_Std_Cnt; + } + // clang-format off + END_CALCS + + // get vector of bins for growth std (either input or autogenerate) + init_ivector Growth_Std_Pick(1,Growth_Std_Cnt); + LOCAL_CALCS + // clang-format on + if (Do_Growth_Std > 0) + { + echoinput << Growth_Std_Pick << " # vector with growth std ages (-1 in first bin to self-generate)" << endl; + // turn off growth extra stderr for growth if no estimated growth parameters + if (MG_active(2) == 0) + { + warnstream << "Growth output stderr requested but no growth parameters are estimated, changing growth stddev reporting specifications to 0"; + write_message (ADJUST, 0); + Do_Growth_Std = 0; + // More_Std_Input(5)=0; + // More_Std_Input(6)=0; + Growth_Std_Cnt = 0; + } + else + { + // there are active growth parameters so proceed with processing stderr + if (Growth_Std_Pick(1) < 0) + { + Growth_Std_Pick(1) = AFIX; + Growth_Std_Pick(Growth_Std_Cnt) = nages; + if (Growth_Std_Cnt > 2) + { + k = Growth_Std_Cnt / 2; + for (i = 2; i <= k; i++) Growth_Std_Pick(i) = Growth_Std_Pick(i - 1) + 1; + j = (nages - Growth_Std_Pick(k)) / (Growth_Std_Cnt - k); + for (i = k + 1; i <= Growth_Std_Cnt - 1; i++) Growth_Std_Pick(i) = Growth_Std_Pick(i - 1) + j; + } + } + for (i = 1; i <= Growth_Std_Cnt; i++) + { + if (Growth_Std_Pick(i) < 0) Growth_Std_Pick(i) = 0; + if (Growth_Std_Pick(i) > nages) Growth_Std_Pick(i) = nages; + } + } + Extra_Std_N += gender * Growth_Std_Cnt; + } + // clang-format off + END_CALCS + + // get vector of bins for N-at-age std (either input or autogenerate) + init_ivector NatAge_Std_Pick(1,NatAge_Std_Cnt); + LOCAL_CALCS + // clang-format on + if (Do_NatAge_Std != 0) + { + echoinput << NatAge_Std_Pick << " # vector with NatAge std bins (-1 in first bin to self-generate)" << endl; + if (NatAge_Std_Pick(1) < 0) + { + NatAge_Std_Pick(1) = 1; + NatAge_Std_Pick(NatAge_Std_Cnt) = nages; + if (NatAge_Std_Cnt > 2) + { + k = NatAge_Std_Cnt / 2; + for (i = 2; i <= k; i++) NatAge_Std_Pick(i) = NatAge_Std_Pick(i - 1) + 1; + j = (nages - NatAge_Std_Pick(k)) / (NatAge_Std_Cnt - k); + for (i = k + 1; i <= NatAge_Std_Cnt - 1; i++) NatAge_Std_Pick(i) = NatAge_Std_Pick(i - 1) + j; + } + } + for (i = 1; i <= NatAge_Std_Cnt; i++) + { + if (NatAge_Std_Pick(i) <= 0) NatAge_Std_Pick(i) = 0; + if (NatAge_Std_Pick(i) > nages) NatAge_Std_Pick(i) = nages; + } + Extra_Std_N += gender * NatAge_Std_Cnt; + } + + // clang-format off + END_CALCS + + // get vector of bins for NatM std (either input or autogenerate) + init_ivector NatM_Std_Pick(1,NatM_Std_Cnt); + LOCAL_CALCS + // clang-format on + if (Do_NatM_Std > 0) + { + echoinput << NatM_Std_Pick << " # vector with NatM std ages (-1 in first bin to self-generate)" << endl; + // autogenerate the ages + if (NatM_Std_Pick(1) < 0) + { + // set first and last to reference ages + NatM_Std_Pick(1) = AFIX; + NatM_Std_Pick(NatM_Std_Cnt) = nages; + // if there is more than 2, fill in the middle + if (NatM_Std_Cnt > 2) + { + // first half of values increment by 1 + k = NatM_Std_Cnt / 2; + for (i = 2; i <= k; i++) { + NatM_Std_Pick(i) = NatM_Std_Pick(i - 1) + 1; + } + // remainder are evently distributed across range + j = (nages - NatM_Std_Pick(k)) / (NatM_Std_Cnt - k); + for (i = k + 1; i <= NatM_Std_Cnt - 1; i++) { + NatM_Std_Pick(i) = NatM_Std_Pick(i - 1) + j; + } + } + } + // shift any negative values to 0 and any that are too large down to nages + for (i = 1; i <= NatM_Std_Cnt; i++) + { + if (NatM_Std_Pick(i) < 0) NatM_Std_Pick(i) = 0; + if (NatM_Std_Pick(i) > nages) NatM_Std_Pick(i) = nages; + } + // increment counter + Extra_Std_N += gender * NatM_Std_Cnt; + } + + if (Do_Dyn_Bzero > 0) + { + Do_Dyn_Bzero = Extra_Std_N + 1; // start spot for Dynamic Bzero + Extra_Std_N += YrMax - (styr - 2) + 1; + if (More_Std_Input(12) == 2) Extra_Std_N += YrMax - (styr - 2) + 1; // for recruitment + } + // add 3 values for ln(SSBio) + // (years are automatically generated as startyr, mid-point, and endyr) + Do_se_LnSSB = Extra_Std_N + 1; + Extra_Std_N += 3; + + if (Do_se_smrybio > 0) + { + Do_se_smrybio = Extra_Std_N + 1; // start spot + Extra_Std_N += YrMax - (styr - 2) + 1; + } + // else smrybio will be written anyway, but without se + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.13 #End of reading from control file + init_int fim // end of file indicator + + LOCAL_CALCS + // clang-format on + if (fim == 999) + { + cout << "End of control file successful! " << fim << endl; + echoinput << "End of control file successful! " << fim << endl; + } + else + { + cout << " Unsuccessful end of control file. Check echoinput for clues. Last read is: " << fim << endl; + exit(1); + } + // clang-format off + END_CALCS + +!!// SS_Label_Info_4.14 #Create count of active parameters and derived quantities + int CoVar_Count; + int active_count; // count the active parameters + int active_parms; // count the active parameters + int deriv_start; // start index for derived quantities + int deriv_covar_start + + LOCAL_CALCS + // clang-format on + if (Do_Benchmark > 0) + { + N_STD_Mgmt_Quant = 22; + if (Do_Benchmark == 3) N_STD_Mgmt_Quant += 3; // for Blimit + } + else + { + N_STD_Mgmt_Quant = 4; + } + Fcast_catch_start = N_STD_Mgmt_Quant; + if (max(Do_Retain) > 0) { + j = 1; + } + else + { + j = 0; + } + if (Do_Forecast > 0) { + N_STD_Mgmt_Quant += N_Fcast_Yrs * (1 + j) + N_Fcast_Yrs; + } + k = ParCount + 2 * N_STD_Yr + N_STD_Yr_Dep + N_STD_Yr_Ofish + N_STD_Yr_F + N_STD_Mgmt_Quant + gender * Selex_Std_Cnt + gender * Growth_Std_Cnt + gender * NatAge_Std_Cnt + gender * NatM_Std_Cnt; + if (Do_More_Std >= 2) + { + k += Do_Dyn_Bzero * (YrMax - (styr - 2) - 1); + if (More_Std_Input(12) == 2) k += (YrMax - (styr - 2) - 1); // for recruits + k += Do_se_smrybio * (YrMax - (styr - 2) - 1); + } + k += 3 + Svy_N_sdreport; + echoinput << "N parameters: " << ParCount << endl + << "Parameters plus derived quant: " << k << endl; + // clang-format off + END_CALCS + ivector active_parm(1,k) // pointer from active list to the element of the full parameter list to get label later + +//*********************************************** +!!// SS_Label_Info_4.14.1 #Adjust the phases to negative if beyond turn_off_phase and find resultant max_phase + int max_phase; + int Turn_off_phase2 + + LOCAL_CALCS + // clang-format on + echoinput + << "Adjust the phases " << endl; + Turn_off_phase2 = Turn_off_phase; + echoinput << " requested turn_off phase: " << Turn_off_phase << endl; + if (depletion_fleet > 0 && depletion_type == 1) + { + Turn_off_phase2 = 1; + echoinput << "depletion fleet and type are: " << depletion_fleet << " " << depletion_type << " so set turn-off to phase 1 " << endl; + } + max_phase = 1; + active_count = 0; + active_parm(1, ParCount) = 0; + ParCount = 0; + + j = MGparm_PH.indexmax(); + + for (k = 1; k <= j; k++) + { + ParCount++; + if (MGparm_PH(k) == -9999) { + MGparm_RD(k) = prof_var(prof_var_cnt); + prof_var_cnt += 1; + } + if (depletion_fleet > 0 && depletion_type < 2 && MGparm_PH(k) > 0) MGparm_PH(k)++; // add 1 to phase if using depletion fleet + if (MGparm_PH(k) > Turn_off_phase2) MGparm_PH(k) = -1; + if (MGparm_PH(k) > max_phase) max_phase = MGparm_PH(k); + if (MGparm_PH(k) >= 0) + { + active_count++; + active_parm(active_count) = ParCount; + } + } + + for (j = 1; j <= SRparm_PH.indexmax(); j++) + { + ParCount++; + if (SRparm_PH(j) == -9999) { + SRparm_1(j, 3) = prof_var(prof_var_cnt); + SRparm_RD(j, 3) = SRparm_1(j, 3); + prof_var_cnt += 1; + } + if (depletion_fleet > 0 && depletion_type < 2 && SRparm_PH(j) > 0) SRparm_PH(j)++; // add 1 to phase if using depletion fleet + if (depletion_fleet > 0 && depletion_type < 2 && j == 1) SRparm_PH(1) = 1; // R0 active in phase 1, unless type==2 + if (SRparm_PH(j) > Turn_off_phase2) SRparm_PH(j) = -1; + if (SRparm_PH(j) > max_phase) max_phase = SRparm_PH(j); + if (SRparm_PH(j) >= 0) + { + active_count++; + active_parm(active_count) = ParCount; + } + } + + if (recdev_cycle > 0) + { + for (y = 1; y <= recdev_cycle; y++) + { + ParCount++; + recdev_cycle_LO(y) = recdev_cycle_parm_RD(y, 1); + recdev_cycle_HI(y) = recdev_cycle_parm_RD(y, 2); + recdev_cycle_PH(y) = recdev_cycle_parm_RD(y, 7); + if (depletion_fleet > 0 && depletion_type < 2 && recdev_cycle_PH(y) > 0) recdev_cycle_PH(y)++; // add 1 to phase if using depletion fleet + if (recdev_cycle_PH(y) > Turn_off_phase2) recdev_cycle_PH(y) = -1; + if (recdev_cycle_PH(y) > max_phase) max_phase = recdev_cycle_PH(y); + if (recdev_cycle_PH(y) >= 0) { + active_count++; + active_parm(active_count) = ParCount; + } + } + } + + if (depletion_fleet > 0 && depletion_type < 2 && recdev_early_PH_rd > 0) recdev_early_PH_rd++; // add 1 to phase if using depletion fleet + if (recdev_early_PH_rd > Turn_off_phase2) + { + recdev_early_PH = -1; + } + else + { + recdev_early_PH = recdev_early_PH_rd; + } + + if (recdev_early_PH > max_phase) max_phase = recdev_early_PH; + + if (recdev_do_early > 0) + { + for (y = recdev_early_start; y <= recdev_early_end; y++) + { + ParCount++; + if (recdev_early_PH >= 0) { + active_count++; + active_parm(active_count) = ParCount; + } + } + } + + if (depletion_fleet > 0 && depletion_type < 2 && recdev_PH > 0) recdev_PH++; // add 1 to phase if using depletion fleet + if (recdev_PH > Turn_off_phase2) recdev_PH = -1; + if (recdev_PH > max_phase) max_phase = recdev_PH; + if (do_recdev > 0) + { + for (y = recdev_start; y <= recdev_end; y++) + { + ParCount++; + if (recdev_PH >= 0) { + active_count++; + active_parm(active_count) = ParCount; + } + } + } + + Fcast_recr_PH2 = max_phase + 1; + Fcast_recr_PH = Fcast_recr_PH_rd; + if (Do_Forecast > 0) + { + if (Turn_off_phase > 0) + { + if (Fcast_recr_PH_rd != 0) // read value for forecast_PH + { + Fcast_recr_PH2 = Fcast_recr_PH; + if (depletion_fleet > 0 && depletion_type < 2 && Fcast_recr_PH2 > 0) Fcast_recr_PH2++; + if (Fcast_recr_PH2 > Turn_off_phase2) Fcast_recr_PH2 = -1; + if (Fcast_recr_PH2 > max_phase) max_phase = Fcast_recr_PH2; + } + if (depletion_fleet > 0 && depletion_type == 1) + { + max_phase = 1; + Fcast_recr_PH2 = -1; + } + } + else + { + Fcast_recr_PH2 = -1; + } + + if (do_recdev != 0) { + for (y = recdev_end + 1; y <= YrMax; y++) + { + ParCount++; + if (Fcast_recr_PH2 > -1) { + active_count++; + active_parm(active_count) = ParCount; + } + } + } + if (Do_Impl_Error > 0) { + for (y = endyr + 1; y <= YrMax; y++) + { + ParCount++; + if (Fcast_recr_PH2 > -1) + { + active_count++; + active_parm(active_count) = ParCount; + } + } + } + } + else + { + Fcast_recr_PH2 = -1; + } + + echoinput << "Fcast_dev_phase (read and adjusted): " << Fcast_recr_PH_rd << " " << Fcast_recr_PH2 << endl; + + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) + { + if (init_F_loc(s, f) > 0) + { + j = init_F_loc(s, f); + ParCount++; + if (init_F_PH(j) == -9999) { + init_F_parm_1(j, 3) = prof_var(prof_var_cnt); + init_F_RD(j) = init_F_parm_1(j, 3); + prof_var_cnt++; + } + if (depletion_fleet > 0 && depletion_type < 2 && init_F_PH(j) > 0) init_F_PH(j)++; + if (init_F_PH(j) > Turn_off_phase2) init_F_PH(j) = -1; + if (init_F_PH(j) > max_phase) max_phase = init_F_PH(j); + if (init_F_PH(j) >= 0) + { + active_count++; + active_parm(active_count) = ParCount; + } + } + } + + if (N_Fparm > 0) + { + Fparm_PH_dim.deallocate(); + Fparm_PH_dim.allocate(1, N_Fparm); + for (g = 1; g <= N_Fparm; g++) + { + ParCount++; + if (depletion_fleet > 0 && depletion_type < 2 && Fparm_PH[g] > 0) Fparm_PH[g]++; // increase phase by 1 + if (Fparm_PH[g] > Turn_off_phase2) Fparm_PH[g] = -1; + if (Fparm_PH[g] > max_phase) max_phase = Fparm_PH[g]; + Fparm_PH_dim(g) = Fparm_PH[g]; // move values into ivector + if (Fparm_PH[g] > 0) + { + active_count++; + active_parm(active_count) = ParCount; + } + echoinput< 0 && depletion_type < 2 && Q_parm_PH(f) > 0) Q_parm_PH(f)++; + if (Q_parm_PH(f) > Turn_off_phase2) Q_parm_PH(f) = -1; + if (Q_parm_PH(f) > max_phase) max_phase = Q_parm_PH(f); + if (Q_parm_PH(f) >= 0) + { + active_count++; + active_parm(active_count) = ParCount; + } + } + + // SS_Label_Info_4.14.2 #Auto-generate cubic spline setup while inside this parameter counting loop + Ip = 0; + int N_knots; + for (f = 1; f <= 2 * Nfleet; f++) // check for cubic spline setup + { + if (f <= Nfleet) + { + fs = f; + } + else + { + fs = f - Nfleet; + } + if (seltype(f, 1) == 27 || seltype(f, 1) == 42) // reset the cubic spline knots for size or age comp + { + // TODO - may need adjustments below for selex pattern 42 + + k = int(selparm_RD(Ip + 1)); // setup method + N_knots = seltype(f, 4); // number of knots + + if (k == 0 || k == 10) + { + } // do nothing + else if (k == 1 || k == 2 || k == 11 || k == 12) // get new knots according to cumulative distribution of data + { + echoinput << "Adjust the "; + if (f <= Nfleet) + { + echoinput << "size-based "; + } + else + { + echoinput << "age-based "; + } + echoinput << "cubic spline setup for fleet: " << fs << endl; + + j = 4; // counter for which knot is being set (first knot is 4th spline parameter line) + z = 1; // counter for bins in cumulative distribution + if (N_knots >= 3) + { + temp = 0.025; + temp1 = 0.950 / float(N_knots - 1); // increment + } + else + { + warnstream << "There must be at least 3 knots in spline "; + write_message (FATAL, 0); // EXIT! + } + if (f <= Nfleet) // doing size Selex + { + // exit if no length data available on which to base the knots + if (Nobs_l(fs) == 0) + { + warnstream << "No length data for fleet " << fs << ": can't autogenerate cubic spline knots "; + write_message (FATAL, 0); // EXIT! + } + // calculate cumulative length distribution + dvector templen(1, nlen_bin); + templen.initialize(); + for (s = 1; s <= nseas; s++) + { + templen += obs_l_all(2, s, f); + } + templen /= double(nseas); + while (temp <= 0.975001) + { + while (templen(z) < temp) + { + z++; + } + // intermediate knots are calculated from data_length_bins + if (z > 1) + { + selparm_RD(Ip + j) = len_bins_dat(z - 1) + (temp - templen(z - 1)) / (templen(z) - templen(z - 1)) * (len_bins_dat(z) - len_bins_dat(z - 1)); + } + else + { + selparm_RD(Ip + j) = len_bins_dat(z); + } + j++; + temp += temp1; + } + echoinput << "len_bins_dat: " << len_bins_dat << endl; + echoinput << "Cum_comp: " << templen << endl; + echoinput << "Knots: " << selparm_RD(Ip + 3 + 1, Ip + 3 + N_knots) << endl; + } + else // age selex + { + // exit if no age data available on which to base the knots + if (Nobs_a(fs) == 0) + { + warnstream << "no age data for fleet " << fs << ": can't autogenerate cubic spline knots "; + write_message (FATAL, 0); // EXIT! + } + // calculate cumulative age distribution + dvector tempage(1, n_abins); + tempage.initialize(); + for (s = 1; s <= nseas; s++) + { + tempage += obs_a_all(2, s, fs); + } + tempage /= double(nseas); + while (temp <= 0.975001) + { + while (tempage(z) < temp) + { + z++; + } + // intermediate knots are calculated from age_bins + if (z > 1) + { + selparm_RD(Ip + j) = age_bins(z - 1) + (temp - tempage(z - 1)) / (tempage(z) - tempage(z - 1)) * (age_bins(z) - age_bins(z - 1)); + } + else + { + selparm_RD(Ip + j) = age_bins(z); + } + j++; + temp += temp1; + } + echoinput << "age_bins: " << age_bins << endl; + echoinput << "Cum_comp: " << tempage(1, n_abins) << endl; + echoinput << "Knots: " << selparm_RD(Ip + 3 + 1, Ip + 3 + N_knots) << endl; + } + if (k == 2 || k == 12) // create default bounds, priors, etc. + { + echoinput << "Do complete setup of lo, hi, prior, etc. for cubic spline" << endl; + for (z = Ip + 4; z <= Ip + 3 + N_knots; z++) + { + // set bounds at outer limits of data bins + if (f <= Nfleet) + { + selparm_LO(z) = len_bins_dat(1); + selparm_HI(z) = len_bins_dat(nlen_bin); + } + else + { + selparm_LO(z) = age_bins(1); + selparm_HI(z) = age_bins(n_abins); + } + // set prior at mid-point + selparm_PR(z) = int((selparm_LO(z) + selparm_HI(z)) / 2.); + // set prior type to 0 and SD to 1.0 + selparm_PRtype(z) = 0; + selparm_CV(z) = 1.0; + // set phase for knots to negative + selparm_PH(z) = -99; + } + + if (N_knots == 3) + { + p = 8; + } + else if (N_knots == 4) + { + p = 10; + } + else + { + p = 3 + N_knots + 1 + 0.5 * N_knots; + } + // loop over parameters for splines value at each knot + for (z = N_knots + 1 + 3; z <= 3 + 2 * N_knots; z++) + { + a = Ip + z; + // set initial value for each parameter + if (z <= p) + { + selparm_RD(a) = -5. + float(z - (N_knots + 4)) / float(p - (N_knots + 4)) * 4.; + } + else + { + selparm_RD(a) = 0.0; + } + // set bounds and symmetric beta prior + selparm_LO(a) = -9.; + selparm_HI(a) = 7.; + selparm_PR(a) = 0.; + selparm_PRtype(a) = 1; // symmetric beta + selparm_CV(a) = 0.001; + selparm_PH(a) = 2; + } + // fix one of the parameters at 0 (because rescaling removes a degree of freedom) + selparm_PH(Ip + p) = -99; + selparm_PRtype(Ip + p) = 0; + selparm_CV(Ip + p) = 1.0; + // set values for gradient parameters + p = Ip + 1; + selparm_LO(p) = 0.; + selparm_HI(p) = 2.; + selparm_PR(p) = 0.; + selparm_PRtype(p) = 0; + selparm_CV(p) = 1.0; + selparm_PH(p) = -99; + p++; + selparm_LO(p) = -0.001; + selparm_HI(p) = 1.; + selparm_RD(p) = 0.1; // moderate positive gradient at bottom + selparm_PR(p) = 0.; + selparm_PRtype(p) = 1; // SYMMETRIC BETA + selparm_CV(p) = 0.001; + selparm_PH(p) = 3; + p++; + selparm_LO(p) = -1.; + selparm_HI(p) = 0.001; + if (N_knots >= 3) + { + selparm_RD(p) = -0.001; // small negative gradient at top + selparm_PR(p) = 0.; + selparm_PRtype(p) = 1; + selparm_CV(p) = 0.001; + selparm_PH(p) = 3; + } + else + { + selparm_RD(p) = 0.00; + selparm_PR(p) = 0.; + selparm_PRtype(p) = 0; + selparm_CV(p) = 1.0; + selparm_PH(p) = -99; + } + + for (z = Ip + 1; z <= Ip + 3 + 2 * N_knots; z++) + { + selparm_1(z, 1) = selparm_LO(z); + selparm_1(z, 2) = selparm_HI(z); + selparm_1(z, 3) = selparm_RD(z); + selparm_1(z, 4) = selparm_PR(z); + selparm_1(z, 6) = selparm_PRtype(z); + selparm_1(z, 5) = selparm_CV(z); + selparm_1(z, 7) = selparm_PH(z); + } + } + } + } + Ip += N_selparmvec(f); + } + selparm_PH_soft = selparm_PH; + for (k = 1; k <= selparm_PH.indexmax(); k++) + { + ParCount++; + if (selparm_PH(k) == -9999) { + selparm_RD(k) = prof_var(prof_var_cnt); + selparm_1(k) = prof_var(prof_var_cnt); + prof_var_cnt++; + } + if (depletion_fleet > 0 && depletion_type < 2 && selparm_PH(k) > 0) selparm_PH(k)++; + if (selparm_PH(k) > Turn_off_phase2) selparm_PH(k) = -1; + if (selparm_PH(k) > max_phase) max_phase = selparm_PH(k); + if (selparm_PH(k) >= 0) + { + active_count++; + active_parm(active_count) = ParCount; + } + } + + if (Do_TG > 0) + { + for (k = 1; k <= 3 * N_TG + 2 * Nfleet1; k++) + { + ParCount++; + if (depletion_fleet > 0 && depletion_type < 2 && TG_parm_PH(k) > 0) TG_parm_PH(k)++; + if (TG_parm_PH(k) > Turn_off_phase2) TG_parm_PH(k) = -1; + if (TG_parm_PH(k) > max_phase) max_phase = TG_parm_PH(k); + if (TG_parm_PH(k) >= 0) + { + active_count++; + active_parm(active_count) = ParCount; + } + } + } + + if (timevary_cnt > 0) + { + for (j = 1; j <= timevary_cnt; j++) // loop all timevary to set up devs; note that 2D_AR1 is counted in N_parm_dev, but not in timevary_cnt + { + ivector timevary_setup(1, 14); + timevary_setup(1, 14) = timevary_def[j](1, 14); + if (timevary_setup(8) > 0) + { + k = timevary_setup(8); // dev vector used + if (depletion_fleet > 0 && depletion_type < 2 && parm_dev_PH(k) > 0) parm_dev_PH(k)++; // add 1 to phase if using depletion fleet + if (parm_dev_PH(k) > Turn_off_phase2) parm_dev_PH(k) = -1; + if (parm_dev_PH(k) > max_phase) max_phase = parm_dev_PH(k); + } + } + } + + if (TwoD_AR_cnt > 0) + { + for (j = 1; j <= TwoD_AR_cnt; j++) // loop all timevary to set up devs; note that 2D_AR1 is counted in N_parm_dev, but not in timevary_cnt + { + ivector TwoD_AR_setup(1, 13); + TwoD_AR_setup(1, 13) = TwoD_AR_def[j](1, 13); + if (TwoD_AR_setup(12) > 0) + { + k = TwoD_AR_setup(12); // dev vector used + if (depletion_fleet > 0 && depletion_type < 2 && parm_dev_PH(k) > 0) parm_dev_PH(k)++; // add 1 to phase if using depletion fleet + if (parm_dev_PH(k) > Turn_off_phase2) parm_dev_PH(k) = -1; + if (parm_dev_PH(k) > max_phase) max_phase = parm_dev_PH(k); + } + } + } + + if (N_parm_dev > 0) + { + for (k = 1; k <= N_parm_dev; k++) + { + for (y = parm_dev_minyr(k); y <= parm_dev_maxyr(k); y++) + { + ParCount++; + if (parm_dev_PH(k) >= 0) + { + active_count++; + active_parm(active_count) = ParCount; + } + } + } + } + + if (Do_Forecast > 0 && Turn_off_phase > 0) + { + if (Fcast_recr_PH == 0) // read value for forecast_PH. This code is repeats earlier code in case other parameters have changed maxphase + { + if (depletion_fleet > 0 && depletion_type == 1) + { + } + else + { + Fcast_recr_PH2 = max_phase + 1; + } + } + } + + echoinput << "ParCount " << ParCount << " Active parameters: " << active_count << endl + << "Turn_off_phase " << Turn_off_phase << endl + << " max_phase " << max_phase << endl; + echoinput << active_parm.indexmax() << endl; + + if (Turn_off_phase <= 0) + { + func_eval(1) = 1; + } + else + { + func_conv(max_phase) = final_conv; + func_eval(max_phase) = 10000; + func_conv(max_phase + 1) = final_conv; + func_eval(max_phase + 1) = 10000; + } + + // SS_Label_Info_4.14.3 #Add count of derived quantities and create labels for these quantities + j = ParCount; + active_parms = active_count; + CoVar_Count = active_count; + deriv_start = ParCount; + deriv_covar_start = active_count; + echoinput << "parm " << j << " covar " << CoVar_Count << endl; + echoinput << "deriv_start " << deriv_start << " " << deriv_covar_start << endl; + onenum = " "; + for (y = styr - 2; y <= YrMax; y++) + { + if (STD_Yr_Reverse(y) > 0) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + if (y == styr - 2) + { + ParmLabel += "SSB_Virgin"; + } + else if (y == styr - 1) + { + ParmLabel += "SSB_Initial"; + } + else + { + // _itoa(y,onenum,10); + sprintf(onenum, "%d", y); + ParmLabel += "SSB_" + onenum + CRLF(1); + } + } + } + + echoinput << "parm " << j << " covar " << CoVar_Count << endl; + for (y = styr - 2; y <= YrMax; y++) + { + if (STD_Yr_Reverse(y) > 0) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + if (y == styr - 2) + { + ParmLabel += "Recr_Virgin"; + } + else if (y == styr - 1) + { + ParmLabel += "Recr_Initial"; + } + else + { + // _itoa(y,onenum,10); + sprintf(onenum, "%d", y); + ParmLabel += "Recr_" + onenum + CRLF(1); + } + } + } + + echoinput << "parm " << j << " covar " << CoVar_Count << endl; + for (y = styr; y <= YrMax; y++) + { + if (STD_Yr_Reverse_Ofish(y) > 0) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + // _itoa(y,onenum,10); + sprintf(onenum, "%d", y); + ParmLabel += "SPRratio_" + onenum + CRLF(1); + } + } + + //F_std + echoinput << "parm " << j << " covar " << CoVar_Count << endl; + for (y = styr; y <= YrMax; y++) + { + if (STD_Yr_Reverse_F(y) > 0) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + // _itoa(y,onenum,10); + sprintf(onenum, "%d", y); + ParmLabel += "F_" + onenum + CRLF(1); + } + } + + echoinput << "parm " << j << " covar " << CoVar_Count << endl; + for (y = styr; y <= YrMax; y++) + { + if (STD_Yr_Reverse_Dep(y) > 0) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + // _itoa(y,onenum,10); + sprintf(onenum, "%d", y); + ParmLabel += "Bratio_" + onenum + CRLF(1); + } + } + echoinput << "parm " << j << " covar " << CoVar_Count << endl; + // create labels for Mgmt_Quant + if (Do_Benchmark > 0) + { + ParmLabel += "SSB_unfished" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Totbio_unfished" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "SmryBio_unfished" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Recr_unfished" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + if (Do_Benchmark == 1 || Do_Benchmark == 3) + { + ParmLabel += "SSB_Btgt" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "SPR_Btgt" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "annF_Btgt" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Dead_Catch_Btgt" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + } + else if (Do_Benchmark == 2) + { + ParmLabel += "SSB_F01" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "SPR_F01" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "annF_F01" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Dead_Catch_F01" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + } + ParmLabel += "SSB_SPR" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "annF_SPR" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Dead_Catch_SPR" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "SSB_MSY" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "SPR_MSY" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "annF_MSY" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Dead_Catch_MSY" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Ret_Catch_MSY" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "B_MSY/SSB_unfished" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; +// add quantities needed when time-vary life history is used; but report here for all cases; elements 18-21 of mgmt_quant + ParmLabel += "Recr_MSY_bmarkbio" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Depletion_denom" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "HCR_inflect" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "R0_for_SRR_bench" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "SSB_for_SRR_bench" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + + if (Do_Benchmark == 3) + { + ParmLabel += "SSB_Blim" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "annF_Blim" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Dead_Catch_Blim" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + } + } + else + { + ParmLabel += "Bzero_again" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Totbio_unfished" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "SmryBio_unfished" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Recr_unfished" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + } + + echoinput << "parm " << j << " covar " << CoVar_Count << " after benchmark " << endl; + if (Do_Forecast > 0) + { + for (y = endyr + 1; y <= YrMax; y++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", y); + ParmLabel += "ForeCatch_" + onenum + CRLF(1); + } + for (y = endyr + 1; y <= YrMax; y++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", y); + ParmLabel += "OFLCatch_" + onenum + CRLF(1); + } + if (max(Do_Retain) > 0) + { + for (y = endyr + 1; y <= YrMax; y++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", y); + ParmLabel += "ForeCatchret_" + onenum + CRLF(1); + } + } + } + echoinput << "parm " << j << " covar " << CoVar_Count << " after forecast " << endl; + + // do labels for Selex_Std + if (Do_Selex_Std > 0) + { + echoinput << " do selex std labels " << Selex_Std_Cnt << " " << Selex_Std_AL << endl; + for (g = 1; g <= gender; g++) + for (i = 1; i <= Selex_Std_Cnt; i++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + if (Selex_Std_AL == 1) + { + if (Selex_Std_Pick(i) > nlength) + { + warnstream << "cannot select stdev for length bin greater than nlength " << Selex_Std_Pick(i) << " > " << nlength; + write_message (FATAL, 0); // EXIT! + } + ParmLabel += "LenSelex_std_" + NumLbl(Do_Selex_Std) + "_" + GenderLbl(g) + "_L_" + NumLbl(len_bins(Selex_Std_Pick(i))) + CRLF(1); + } + else if (Selex_Std_AL == 2) + { + if (Selex_Std_Pick(i) > nages) + { + warnstream << "cannot select stdev for age bin greater than maxage " << Selex_Std_Pick(i) << " > " << nages; + write_message (FATAL, 0); // EXIT! + } + ParmLabel += "AgeSelex_std_" + NumLbl(Do_Selex_Std) + "_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(Selex_Std_Pick(i)) + 1) + CRLF(1); + } + else if (Selex_Std_AL == 3) + { + if (Selex_Std_Pick(i) > nages) + { + warnstream << "cannot select stdev for age bin greater than maxage " << Selex_Std_Pick(i) << " > " << nages; + write_message (FATAL, 0); // EXIT! + } + ParmLabel += "AgeLenSelex_std_" + NumLbl(Do_Selex_Std) + "_GP1_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(Selex_Std_Pick(i)) + 1) + CRLF(1); + } + } + } + if (Do_Growth_Std > 0) + { + echoinput << " do growth std labels " << Growth_Std_Cnt << endl; + for (g = 1; g <= gender; g++) + for (i = 1; i <= Growth_Std_Cnt; i++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Grow_std_GP:_" + NumLbl(Do_Growth_Std) + "_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(Growth_Std_Pick(i)) + 1) + CRLF(1); + } + } + + if (Do_NatAge_Std != 0) + { + echoinput << " do natage std labels " << NatAge_Std_Cnt << endl; + for (g = 1; g <= gender; g++) + for (i = 1; i <= NatAge_Std_Cnt; i++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + if (Do_NatAge_Std > 0) + { + ParmLabel += "NatAge_std_" + NumLbl(Do_NatAge_Std) + "_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(NatAge_Std_Pick(i)) + 1) + CRLF(1); + } + else + { + ParmLabel += "NatAge_std_All_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(NatAge_Std_Pick(i)) + 1) + CRLF(1); + } + } + } + + if (Do_NatM_Std > 0) + { + echoinput << " do NatM std labels " << NatM_Std_Cnt << endl; + for (g = 1; g <= gender; g++) + for (i = 1; i <= NatM_Std_Cnt; i++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + // cout<<"i: "< 0) + { + echoinput << " do Dyn Bzero std labels " << endl; + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Dyn_Bzero_Virg" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Dyn_Bzero_InitEq" + CRLF(1); + for (y = styr; y <= YrMax; y++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", y); + ParmLabel += "Dyn_Bzero_" + onenum + CRLF(1); + } + } + else if (depletion_basis_rd == 5) + { + warnstream << "must select dyn_bzero in control file extra_std for it to be used as depletion denominator "; + write_message (FATAL, 0); // EXIT! + } + if (More_Std_Input(12) == 2) + { + echoinput << " do Dyn Bzero Recruits std labels " << endl; + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Dyn_Recr_Virg" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "Dyn_Recr_InitEq" + CRLF(1); + for (y = styr; y <= YrMax; y++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", y); + ParmLabel += "Dyn_Recr_" + onenum + CRLF(1); + } + } + + // output ln(SSB) std for selected years + echoinput << " do ln(SSB) std labels for 3 years" << endl; + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", styr); + ParmLabel += "ln(SSB)_" + onenum + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", int((endyr + styr) / 2)); + ParmLabel += "ln(SSB)_" + onenum + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", endyr); + ParmLabel += "ln(SSB)_" + onenum + CRLF(1); + + if (Do_se_smrybio > 0) + { + echoinput << " do SmryBio std labels " << endl; + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "SmryBio_Virg" + CRLF(1); + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + ParmLabel += "SmryBio_InitEq" + CRLF(1); + for (y = styr; y <= YrMax; y++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", y); + ParmLabel += "SmryBio_" + onenum + CRLF(1); + } + } + + // output Svy_sdreport value std for selected years + echoinput << " do Svy_sdreport labels " << Svy_N_sdreport << endl; + if (Svy_N_sdreport > 0) + { + k = 0; + for (f = 1; f <= Nfleet; ++f) + { + if (Svy_sdreport(f) > 0) + { + for (i = 1; i <= Svy_N_fleet(f); i++) + { + CoVar_Count++; + j++; + active_parm(CoVar_Count) = j; + sprintf(onenum, "%d", Svy_yr(f, i)); + ParmLabel += fleetname(f) + "_" + onenum + CRLF(1); + } + } + } + } + + // additional labels + echoinput << "parm " << j << " covar " << CoVar_Count << " after all derived quantities " << endl; + sprintf(onenum, "%d", int(100 * depletion_level)); + switch (depletion_basis) + { + case 0: + { + depletion_basis_label += "no_depletion_basis"; + break; + } + case 1: + { + depletion_basis_label += " " + onenum + "%*Virgin_Biomass"; + break; + } + case 2: + { + depletion_basis_label += " " + onenum + "%*B_MSY"; + break; + } + case 3: + { + depletion_basis_label += " " + onenum + "%*StartYr_Biomass"; + break; + } + case 4: + { + depletion_basis_label += " " + onenum + "%*EndYr_Biomass"; + break; + } + case 5: + { + depletion_basis_label += " " + onenum + "%*Dyn_Bzero"; + break; + } + case 6: + { + depletion_basis_label += " " + onenum + "%*Bmark_Biomass"; + break; + } + } + if (depletion_log == 1) depletion_basis_label += ";log"; + if (depletion_multi > 1) + { + sprintf(onenum, "%d", depletion_multi); + depletion_basis_label += ";multi:" + onenum; + } + + switch (SPR_reporting) + { + case 0: // skip SPR reporting + { + SPR_report_label += " raw_SPR"; + break; + } + case 5: // keep as raw %SPR value + { + SPR_report_label += " raw_SPR"; + break; + } + case 1: // compare to SPR + { + sprintf(onenum, "%d", int(100. * SPR_target)); + SPR_report_label += " (1-SPR)/(1-SPR_" + onenum + "%)"; + break; + } + case 2: // compare to SPR_MSY + { + SPR_report_label += " (1-SPR)/(1-SPR_MSY)"; + break; + } + case 3: // compare to SPR_Btarget + { + sprintf(onenum, "%d", int(100. * BTGT_frac)); + SPR_report_label += " (1-SPR)/(1-SPR_at_B" + onenum + "%)"; + break; + } + case 4: + { + SPR_report_label += " 1-SPR"; + break; + } + } + + switch (F_std_basis) + { + case 0: // raw + { + F_report_label = "_abs_F"; + break; + } + case 1: + { + sprintf(onenum, "%d", int(100. * SPR_target)); + F_report_label = "(F)/(F" + onenum + "%SPR)"; + break; + } + case 2: + { + F_report_label = "(F)/(Fmsy)"; + break; + } + case 3: + { + sprintf(onenum, "%d", int(100. * BTGT_frac)); + F_report_label = "(F)/(F_at_B" + onenum + "%)"; + break; + } + } + + switch (F_reporting) + { + case 0: // keep as raw value + { + F_report_label += ";_no_F_report"; + break; + } + case 1: // exploitation rate in biomass + { + F_report_label += ";_with_F=Exploit(bio)"; + break; + } + case 2: // exploitation rate in numbers + { + F_report_label += ";_with_F=Exploit(num)"; + break; + } + case 3: // sum of F mults + { + F_report_label += ";_with_F=sum(full_Fs)"; + break; + } + case 4: // F=Z-M for specified ages + { + F_report_label += ";_with_F=Z-M;_for_ages_"; + sprintf(onenum, "%d", int(F_reporting_ages(1))); + F_report_label += onenum; + sprintf(onenum, "%d", int(F_reporting_ages(2))); + F_report_label += "_" + onenum; + break; + } + case 5: // F=Z-M for specified ages (unweighted) + { + F_report_label += ";_with_F=Z-M;_for_ages_unweighted_"; + sprintf(onenum, "%d", int(F_reporting_ages(1))); + F_report_label += onenum; + sprintf(onenum, "%d", int(F_reporting_ages(2))); + F_report_label += "_" + onenum; + break; + } + } + if (F_std_log == 1) F_report_label += ";log"; + if (F_std_multi > 1) + { + sprintf(onenum, "%d", F_std_multi); + F_report_label += ";multi:" + onenum; + } + + echoinput << "Active parameters plus derived quantities: " << CoVar_Count << endl; + // clang-format off + END_CALCS + +// containers for parameter values after jitter + vector MGparm_use(1,N_MGparm2) + vector SRparm_use(1,N_SRparm3); + vector recdev_cycle_use(1,recdev_cycle); + vector recdev_use(recdev_first,YrMax); + vector recdev_RD(recdev_first,YrMax); + vector Q_parm_use(1,Q_Npar2); + vector init_F_use(1,N_init_F); + vector Fparm_use(1,N_Fparm); + vector selparm_use(1,N_selparm2); +!!k=Do_TG*(3*N_TG+2*Nfleet1); + vector TG_parm_use(1,k); + matrix parm_dev_RD(1,N_parm_dev,parm_dev_minyr,parm_dev_maxyr); + matrix parm_dev_use(1,N_parm_dev,parm_dev_minyr,parm_dev_maxyr); + +!!k=gmorph*(YrMax-styr+1); +!!// SS_Label_Info_4.14.4 #Create matrix CoVar and set it to receive the covariance output + matrix save_G_parm(1,k,1,22); + matrix save_seas_parm(1,nseas,1,10); + matrix CoVar(1,CoVar_Count,1,CoVar_Count+1); +!!save_G_parm.initialize(); +!!CoVar.initialize(); +!!set_covariance_matrix(CoVar); + + // SS_Label_Info_4.15 #Prepare for read empirical wt-at-age, which happens in prelim + int N_WTage_rd + int N_WTage_maxage + int y2 + ivector last_yr_read(-2,Nfleet) + ivector filled_once(-2,Nfleet) + int f2 +// SS_Label_file #5. **SS_param.tpl** +// SS_Label_file # -

INITIALIZE_SECTION
+// SS_Label_file # +// SS_Label_file # - not used in SS3 +// SS_Label_file # -
PARAMETER_SECTION
+// SS_Label_file # +// SS_Label_file # - create needed parameters and derived quantities as dvar arrays + +// SS_Label_Section_4.99 #INITIALIZE_SECTION (not used in SS3) +INITIALIZATION_SECTION + +// SS_Label_Section_5.0 #PARAMETER_SECTION +PARAMETER_SECTION +// { +// SS_Label_Info_5.0.1 #Setup convergence critera and max func evaluations + LOCAL_CALCS + // clang-format on + // set the filename to all ADMB output files to "base_modelname.[ext]" + // where base_modelname can be read from command line with command modelname followed by text + // e.g. ss3_win.exe -nohess -stopph 3 modelname ss4you + // if requested modelname.par is not found, then will attempt to read from ss3.par then ss.par + // whatever name is read, the write will be to modelname.par. Which has default of ss3.par + ad_comm::adprogram_name = base_modelname; + echoinput << "Begin setting up parameters" << endl; + cout << "Begin setting up parameters ... "; + if (readparfile >= 1) + { + anystring = base_modelname + ".par"; + cout << " read parm file: " << anystring << endl; + + ifstream fin(anystring); + if(fin.fail() ) { + cout << " no find, try ss3.par" << endl; + anystring = "ss3.par"; + ifstream fin(anystring); + if(fin.fail() ) { + cout << " no find, try ss.par" << endl; + anystring = "ss.par"; + ifstream fin(anystring); + if(fin.fail() ) { + warnstream << "could not find ss3.par, ss.par, or requested parfile " << base_modelname << ".par"; + write_message(FATAL, 0); + } + }} + cout << " found "< where first value is for age 0! +// if yr=-yr, then fill remaining years for that seas, growpattern, gender, fleet +// fleet 0 contains begin season pop WT +// fleet -1 contains mid season pop WT +// fleet -2 contains maturity*fecundity + + 3darray migrrate(styr-3,YrMax,1,do_migr2,0,nages) + 4darray recr_dist(styr-3,YrMax,1,N_GP*gender,1,N_settle_timings,1,pop); + 3darray recr_dist_unf(1,N_GP*gender,1,N_settle_timings,1,pop); + 3darray recr_dist_endyr(1,N_GP*gender,1,N_settle_timings,1,pop); +!!// SS_Label_Info_5.1.2 #Create SRparm vector, recruitment vectors + init_bounded_number_vector SRparm(1,N_SRparm3,SRparm_LO,SRparm_HI,SRparm_PH) + matrix SRparm_byyr(styr-3,YrMax,1,N_SRparm2+1) // R0, steepness, parm3, sigmar, rec_dev_offset, R1, rho, SSB Time_vary implementation of spawner-recruitment + vector SRparm_virg(1,N_SRparm2+1) + vector SRparm_work(1,N_SRparm2+1) + vector SRparm_bench(1,N_SRparm2+1) + number two_sigmaRsq; + number half_sigmaRsq; + number sigmaR; + number SSBpR_virgin; + number SSBpR_bench; + number SSB0_4_SRR; + number R0_4_SRR; + number regime_change; + number rho; + number dirichlet_Parm; + LOCAL_CALCS + // clang-format on + Ave_Size.initialize(); + // if(SRparm(N_SRparm2)!=0.0 || SRparm_PH(N_SRparm2)>0) {SR_autocorr=1;} else {SR_autocorr=0;} // flag for recruitment autocorrelation + if (do_recdev == 1) + { + k = recdev_start; + j = recdev_end; + s = 1; + p = -1; + } + else if (do_recdev >= 2) + { + s = recdev_start; + p = recdev_end; + k = 1; + j = -1; + } + else + { + s = 1; + p = -1; + k = 1; + j = -1; + } + // clang-format off + END_CALCS + +// vector biasadj(styr-nages,YrMax) // biasadj as used; depends on whether a recdev is estimated or not +// vector biasadj_full(styr-nages,YrMax) // full time series of biasadj values, only used in defined conditions + number sd_offset_rec + + init_bounded_number_vector recdev_cycle_parm(1,recdev_cycle,recdev_cycle_LO,recdev_cycle_HI,recdev_cycle_PH) + +// init_bounded_dev_vector recdev_early(recdev_early_start,recdev_early_end,recdev_LO,recdev_HI,recdev_early_PH) + init_bounded_vector recdev_early(recdev_early_start,recdev_early_end,recdev_LO,recdev_HI,recdev_early_PH) + init_bounded_dev_vector recdev1(k,j,recdev_LO,recdev_HI,recdev_PH) + init_bounded_vector recdev2(s,p,recdev_LO,recdev_HI,recdev_PH) + vector recdev(recdev_first,YrMax); + + LOCAL_CALCS + // clang-format on + if (do_recdev == 0) + { + s = -1; + } + else + { + s = YrMax; + } + if (Do_Impl_Error > 0) + { + k = Fcast_recr_PH2; + j = YrMax; + } + else + { + k = -1; + j = -1; + } + // clang-format off + END_CALCS + init_bounded_vector Fcast_recruitments(recdev_end+1,s,recdev_LO,recdev_HI,Fcast_recr_PH2) + init_bounded_vector Fcast_impl_error(endyr+1,j,-1,1,k) + vector ABC_buffer(endyr+1,YrMax); + number HCR_anchor // basis (denominator) for inflection in control rule. Select virgin SSB or benchmark SSB + +// SPAWN-RECR: define some spawning biomass and recruitment entities + number SSB_virgin + number Recr_virgin + number SSB_vir_LH + + number SSB_unf // SSB unfished, based on benchmark biology + number Recr_unf + number SSB_use + number R0_use + + number SSB_deplete // SSB that will be used as denominator for depletion calculations and as basis for control rule inflection + number SSB_current; // Spawning biomass + number SSB_equil; + + number SPR_trial + number SPR_actual; + number SSBpR_temp; // SSB per Recruit; used to pass quantity into Equil_SpawnRecr + number Recruits; // Age0 Recruits + number equ_mat_bio + number equ_mat_num + + number YPR // variable still used in SPR series + number YPR_Btgt_enc; + number YPR_Btgt_dead; + number YPR_Btgt_N_dead; + number YPR_Btgt_ret; + number YPR_Btgt_cost; + number YPR_Btgt_revenue; + number YPR_Btgt_profit; + number YPR_Btgt; + + number YPR_spr_enc; + number YPR_spr_dead; + number YPR_spr_N_dead; + number YPR_spr_ret; + number YPR_spr_cost; + number YPR_spr_revenue; + number YPR_spr_profit; + + number Vbio_spr; + number Vbio1_spr; + number Vbio_Btgt; + number Vbio1_Btgt; + + number Btgt; + number Btgttgt; + number SPR_Btgt; + number Btgt_Rec; + number Bspr; + number Bspr_rec; + + number MSY + number Bmsy + number Recr_msy + number YPR_msy_enc; + number YPR_msy_dead; + number YPR_msy_N_dead; + number YPR_msy_ret; + number YPR_msy_cost; + number YPR_msy_revenue; + number YPR_msy_profit; + + number YPR_enc; + number YPR_dead; + number YPR_opt; // used to find F0.1 and Fmsy contains all dead catch + vector YPR_val_vec(1,Nfleet); // used to calculate value, so is multipled by price per unit + number YPR_N_dead; + number YPR_ret; + number Cost; // total fishery cost across all fleets + number Profit; // total revenues - Cost + number MSY_Fmult; + number SPR_Fmult; + number Btgt_Fmult; + number MSY_SPR; + + number Btgt2; + number Btgttgt2; + number SPR_Btgt2; + number Btgt_Rec2; + number Btgt_Fmult2; + number H4010_top; + + 3darray SSB_pop_gp(styr-3,YrMax,1,pop,1,N_GP) //Spawning biomass + vector SSB_yr(styr-3,YrMax) + vector SSB_B_yr(styr-3,YrMax) // mature biomass (no fecundity) + vector SSB_N_yr(styr-3,YrMax) // mature numbers +!!k=0; +!!if(Hermaphro_Option!=0) k=1; + + 3darray MaleSSB(styr-3,YrMax*k,1,pop,1,N_GP) //Male Spawning biomass + + matrix SSB_equil_pop_gp(1,pop,1,N_GP); + matrix MaleSSB_equil_pop_gp(1,pop,1,N_GP); + matrix Recr(1,pop,styr-2*nseas,TimeMax_Fcast_std+nseas) //Recruitment + matrix exp_rec(styr-2,YrMax,1,4) //expected value for recruitment: 1=spawner-recr only; 2=with environ and cycle; 3=with bias_adj; 4=with dev + matrix Nmid(1,gmorph,0,nages); + matrix Nsurv(1,gmorph,0,nages); + 3darray natage_temp(1,pop,1,gmorph,0,nages) + number ave_age // average age of fish in unfished population; used to weight R1 + +!!// SS_Label_Info_5.1.3 #Create M, F, and Z parameters and associated arrays and constants + init_bounded_number_vector init_F(1,N_init_F,init_F_LO,init_F_HI,init_F_PH) +// matrix est_equ_catch(1,nseas,1,Nfleet) + +// natural, predation and fishing mortality + matrix natMparms(1,N_natMparms,1,N_GP*gender) // will be derived from the MGparms +!!if(Do_Forecast>0) {k=TimeMax_Fcast_std+nseas;} else {k=TimeMax+nseas;} + 4darray natM(styr-3*nseas,k,0,pop,1,N_GP*gender*N_settle_timings,0,nages) // M1 + pred_M2, see desc. in biofxn.tpl +// 3darray natM_M1(1,nseas,1,N_GP*gender*N_settle_timings,0,nages) // base M, biology only + matrix pred_M2(1,N_pred,styr-3*nseas,TimeMax_Fcast_std+nseas); // predator M2 + + // add area (pop) dimension to same dimension as season; use s1=(p-1)*pop + s + 3darray surv1(1,nseas*pop,1,N_GP*gender*N_settle_timings,0,nages) + 3darray surv2(1,nseas*pop,1,N_GP*gender*N_settle_timings,0,nages) + 4darray Z_rate(styr-3*nseas,k,1,pop,1,gmorph,0,nages) + 3darray Zrate2(1,pop,1,gmorph,0,nages) + matrix Hrate(1,Nfleet,styr-3*nseas,k) //Harvest Rate for each fleet; this is F + 4darray natage(styr-3*nseas,k,1,pop,1,gmorph,0,nages) // add +1 year + 4darray catage(styr-3*nseas,k,1,Nfleet,1,gmorph,0,nages) + 4darray disc_age(styr-3*nseas,TimeMax_Fcast_std+nseas,1,2*N_retain_fleets,1,gmorph,0,nages); + 4darray equ_catage(1,nseas,1,Nfleet,1,gmorph,0,nages) + 4darray equ_numbers(1,nseas,1,pop,1,gmorph,0,3*nages) + 4darray equ_Z(1,nseas,1,pop,1,gmorph,0,nages) + matrix catage_tot(1,gmorph,0,nages)//sum the catches for all fleets, reuse matrix each year + matrix bycatch_F(1,Nfleet,1,nseas) + 3darray catch_fleet(styr-3*nseas,k,1,Nfleet,1,6) // 1=sel_bio, 2=kill_bio; 3=ret_bio; 4=sel_num; 5=kill_num; 6=ret_num + matrix annual_catch(styr-1,YrMax,1,6) // same six as above + matrix annual_F(styr-1,YrMax,1,3) // 1=sum of hrate (if Pope fmethod) or sum hrate*seasdur if F; 2=Z-M for selected ages; 3=M + 3darray equ_catch_fleet(1,6,1,nseas,1,Nfleet) + matrix vuln_bio(styr-3*nseas,k,1,Nfleet) // biomass selected by each fleet + matrix vuln_num(styr-3*nseas,k,1,Nfleet) // numbers selected by each fleet + + matrix fec(1,gmorph,0,nages) //relative fecundity at age, is the maturity times the weight-at-age times eggs/kg for females + matrix make_mature_bio(1,gmorph,0,nages) // mature female weight at age + matrix make_mature_numbers(1,gmorph,0,nages) // mature females at age + matrix virg_fec(1,gmorph,0,nages) + vector Equ_SpawnRecr_Result(1,2); + number fish_bio; + number fish_bio_r; + number fish_bio_e; + number fish_num_e; + number fish_num; + number fish_num_r; + number vbio; + number totbio; + number smrybio; + number smrynum; + number smryage; // mean age of the summary numbers (not accounting for settlement timing) + number catch_mnage; // mean age of the catch (not accounting for settlement timing or season of the catch) + number catch_mnage_d; // total catch numbers for calc of mean age + number harvest_rate; // Harvest rate + number maxpossF; + + + LOCAL_CALCS + // clang-format on + if (N_Fparm > 0) // continuous F + { + k = N_Fparm; + } + else + { + k = -1; + } + // clang-format off + END_CALCS + // defining F_rate as number_vector allows for Fparm_PH to be element specific + init_bounded_number_vector F_rate(1,k,0.,max_harvest_rate,Fparm_PH_dim) + + vector Nmigr(1,pop); + number Nsurvive; + + number caa; + number Fmult; + number Fcast_Fmult; + number Fcurr_Fmult; + number Fchange; + number last_calc; + matrix Fcast_RelF_Use(1,nseas,1,Nfleet); + matrix Bmark_RelF_Use(1,nseas,1,Nfleet); // relative F among all catch fleets + matrix Bmark_HistF(1,nseas,1,Nfleet); // save F to use for non-optimized fleets + // note that bycatch_F(1,Nfleet,1,nseas) has similar role + number alpha; + number beta; + number steepness; + number GenTime; + number Yield; + number Adj4010; + +// !!k1 = styr+(endyr-styr)*nseas-1 + nseas + 1; +// !!y=k1+N_Fcast_Yrs*nseas-1; + +!!// SS_Label_Info_5.1.4 #Create Q_parm and associated arrays + init_bounded_number_vector Q_parm(1,Q_Npar2,Q_parm_LO,Q_parm_HI,Q_parm_PH) + + matrix Svy_log_q(1,Nfleet,1,Svy_N_fleet); + matrix Svy_q(1,Nfleet,1,Svy_N_fleet); + matrix Svy_se_use(1,Nfleet,1,Svy_N_fleet) + matrix Svy_est(1,Nfleet,1,Svy_N_fleet) // will store expected survey in normal or lognormal units as needed + matrix Svy_selec_abund(1,Nfleet,1,Svy_N_fleet); // Vulnerable biomass + matrix Svy_like_I(1,Nfleet,1,Svy_N_fleet) + vector surv_like(1,Nfleet) // likelihood of the indices + matrix Q_dev_like(1,Nfleet,1,2) // likelihood of the Q deviations + + vector disc_like(1,Nfleet) // likelihood of the discard biomass + vector mnwt_like(1,Nfleet) // likelihood of the mean body wt + + matrix exp_disc(1,Nfleet,1,disc_N_fleet) + 3darray retain(styr-3,YrMax,1,Nfleet,1,nlength2) + vector retain_M(1,nlength) + 3darray discmort(styr-3,YrMax,1,Nfleet,1,nlength2) + vector discmort_M(1,nlength) + vector exp_mnwt(1,nobs_mnwt) + + matrix Morphcomp_exp(1,Morphcomp_nobs,6,5+Morphcomp_nmorph) // expected value for catch by growthpattern + + 3darray SzFreqTrans(1,SzFreq_Nmeth*nseas,1,nlength2,1,SzFreq_Nbins_seas_g); + +!!// SS_Label_Info_5.1.5 #Selectivity-related parameters +!! echoinput<<" now dimension the selectivity arrays "< 0) + k = TimeMax_Fcast_std + nseas; + else + k = TimeMax + nseas; + // clang-format off + END_CALCS + +!!// SS_Label_Info_5.1.7 #Create arrays for storing derived selectivity quantities for use in mortality calculations +// 4darray fish_body_wt(styr-3*nseas,k,1,Nfleet,1,gmorph,0,nages); // wt (adjusted for size selex) + 4darray sel_bio(1,nseas,1,Nfleet,1,gmorph,0,nages); // selected * wt + 4darray sel_ret_bio(1,nseas,1,Nfleet,1,gmorph,0,nages); // selected * retained * wt + 4darray sel_num(1,nseas,1,Nfleet,1,gmorph,0,nages); // selected numbers + 4darray sel_ret_num(1,nseas,1,Nfleet,1,gmorph,0,nages); // selected * retained numbers + 4darray sel_dead_num(1,nseas,1,Nfleet,1,gmorph,0,nages); // sel * (retain + (1-retain)*discmort) + 4darray sel_dead_bio(1,nseas,1,Nfleet,1,gmorph,0,nages); // sel * (retain + (1-retain)*discmort) * wt + + 4darray save_sel_num(styr-3*nseas,TimeMax_Fcast_std+nseas,1,Nfleet,1,gmorph,0,nages) // save sel_num (Asel_2) and save fecundity for output; +nseas covers no forecast setups + + 4darray Sel_for_tag(TG_timestart*Do_TG,TimeMax*Do_TG,1,Nfleet,1,gmorph*Do_TG,0,nages) + vector TG_report(1,Nfleet*Do_TG); + vector TG_rep_decay(1,Nfleet*Do_TG); + + 3darray save_sp_len(styr,YrMax,1,2*Nfleet,1,50); // use to output selex parm values after adjustment + + 3darray exp_l(1,Nfleet,1,Nobs_l,1,nlen_bin2) + matrix neff_l(1,Nfleet,1,Nobs_l) + vector tempvec_l(1,nlength); + vector exp_l_temp(1,nlength2); + vector exp_truea_ret(0,nages2); + vector exp_l_temp_ret(1,nlength2); // retained lengthcomp + vector exp_l_temp_dat(1,nlen_bin2); +// vector offset_l(1,Nfleet) // Compute OFFSET for multinomial (i.e, value for the multinonial function + matrix length_like(1,Nfleet,1,Nobs_l) // likelihood of the length-frequency data + vector length_like_tot(1,Nfleet) // likelihood of the length-frequency data + matrix SzFreq_exp(1,SzFreq_totobs,1,SzFreq_Setup2); + vector SzFreq_like(1,SzFreq_N_Like) + 3darray exp_a(1,Nfleet,1,Nobs_a,1,n_abins2) + vector exp_a_temp(1,n_abins2) + vector tempvec_a(0,nages) + vector agetemp(0,nages2) + matrix neff_a(1,Nfleet,1,Nobs_a) + matrix age_like(1,Nfleet,1,Nobs_a) // likelihood of the age-frequency data + vector age_like_tot(1,Nfleet) // likelihood of the age-frequency data + vector sizeage_like(1,Nfleet) // likelihood of the age-frequency data + 3darray exp_ms(1,Nfleet,1,Nobs_ms,1,n_abins2) + 3darray exp_ms_sq(1,Nfleet,1,Nobs_ms,1,n_abins2) + + number Morphcomp_like + vector equ_catch_like(1,Nfleet) + vector catch_like(1,Nfleet) + number recr_like + number noBias_recr_like + number JT_obj_fun + number regime_like + number sum_recdev + number Fcast_recr_like + number parm_like + matrix parm_dev_like(1,N_parm_dev,1,2) +// vector selparm_dev_like(1,N_selparm_dev) + number CrashPen + number SoftBoundPen + number Equ_penalty + number F_ballpark_like + + number R1 + number R1_exp + number t1 + number t2 + number temp + number temp1 + number temp2 + number temp3 + number temp4 + number join1 + number join2 + number join3 + number upselex + number downselex + number peak + number peak2 + number point1 + number point2 + number point3 + number point4 + number timing + number equ_Recr + number equ_F_std + number equ_M_std + +!!// SS_Label_Info_5.1.8 #Create matrix called smry to store derived quantities of interest + matrix Smry_Table(styr-3,YrMax,1,17); + // 1=totbio, 2=smrybio, 3=smrynum, 4=enc_catch, 5=dead_catch, 6=ret_catch, 7=spbio, 8=recruit, + // 9=equ_totbio, 10=equ_smrybio, 11=equ_SSB_virgin, 12=equ_S1, 13=Gentime, 14=YPR, 15=meanage_spawners, 16=meanage_smrynums, 17=meanage_catch + + + matrix env_data(styr-1,YrMax,-4,N_envvar) + matrix TG_save(1,N_TG,1,3+TG_endtime) + + // save gradients for all active parameters +!! int parm_grad_active_count = max(1,active_count); // the dummy parameter is still in there even if no other params are estimated + vector parm_gradients(1,parm_grad_active_count); + +!!// SS_Label_Info_5.2 #Create sdreport vectors + sdreport_vector SSB_std(1,N_STD_Yr); + sdreport_vector recr_std(1,N_STD_Yr); + sdreport_vector SPR_std(1,N_STD_Yr_Ofish); + sdreport_vector F_std(1,N_STD_Yr_F); + sdreport_vector depletion(1,N_STD_Yr_Dep); + sdreport_vector Mgmt_quant(1,N_STD_Mgmt_Quant) + sdreport_vector Extra_Std(1,Extra_Std_N) // includes many subvectors created in SS_readcontrol + + sdreport_vector Svy_sdreport_est(1,Svy_N_sdreport) + +!!// SS_Label_Info_5.3 #Create log-Likelihood vectors + vector MGparm_Like(1,N_MGparm2) + vector init_F_Like(1,N_init_F) + vector Q_parm_Like(1,Q_Npar2) + vector selparm_Like(1,N_selparm2) + vector SRparm_Like(1,N_SRparm3) + vector recdev_cycle_Like(1,recdev_cycle) +!! k=Do_TG*(3*N_TG+2*Nfleet1); + vector TG_parm_Like(1,k); + +!!// SS_Label_Info_5.4 #Define objective function + objective_function_value obj_fun + number last_objfun + vector phase_output(1,max_phase+1) +!!cout<<" end of parameter section "<PRELIMINARY_CALCS_SECTION +// SS_Label_file # +// SS_Label_file # - preprocessing of the comp logL +// SS_Label_file # - get initial parameter values from *ss.par* or from values in control file +// SS_Label_file # - check parameter initial values and ranges and apply jitter using function check_parm() found in SS_objfun.tpl +// SS_Label_file # - set y=styr and do_once flag=1; then call all biology functions once to check for problems +// SS_Label_file # - exit if turn_off_phase<0, else continue to the PROCEDURE_SECTION found in SS_proced.tpl + +//****************************************************************************************** +// SS_Label_Section_6.0 #PRELIMINARY_CALCS_SECTION + PRELIMINARY_CALCS_SECTION + { + // SS_Label_Info_6.1 #Some initial housekeeping + // SS_Label_Info_6.1.1 #Create and initialize random number generator + random_number_generator radm(long(time(&start))); + if (F_ballpark_yr > retro_yr) + F_ballpark_yr = retro_yr; + if (F_ballpark_yr < styr) + { + F_ballpark_lambda = 0.; + } + sel_l.initialize(); + sel_a.initialize(); + offset_l.initialize(); + offset_a.initialize(); + save_sp_len.initialize(); + save_sel_num.initialize(); + catch_mult = 1.0; + + // SS_Label_Info_4.15 #read empirical wt-at-age + last_yr_read.initialize(); + filled_once.initialize(); + if (WTage_rd > 0) + { + ad_comm::change_datafile_name("wtatage.ss"); + echoinput << "Begin reading the empirical weight at age file" << endl; + cout << "Reading the empirical weight at age file ..."; + *(ad_comm::global_datafile) >> N_WTage_maxage; + k = 7 + N_WTage_maxage; + echoinput << " N_WTage_max " << N_WTage_maxage << endl; + ender = 0; + do + { + dvector tempvec(1, k); + *(ad_comm::global_datafile) >> tempvec(1, k); + if (tempvec(1) == -9999.) + ender = 1; + echoinput << tempvec(1, k) << endl; + y = abs(tempvec(1)); + f = tempvec(6); + if (f == -2) + { + if (tempvec(7) > 0.0) + { + warnstream << "WTATAGE.SS has positive fecundity at age 0 for year = " << y << " Are you sure? fecundity is for the time of spawning and age 0 fish normally do not exist at time of spawning"; + write_message(WARN, 0); + } + } + if (y < 9999) + last_yr_read(f) = max(y, last_yr_read(f)); + if (y < 9999 && tempvec(1) < 0) + filled_once(f) = y; // record latest fill event for this input category + WTage_in.push_back(tempvec(1, k)); + } while (ender == 0); + N_WTage_rd = WTage_in.size() - 1; + k2 = TimeMax_Fcast_std + 1; + echoinput << " N_WTage_rd " << N_WTage_rd << endl; + echoinput << " last year read for -2 through Nfleet: " << last_yr_read << endl; + echoinput << " latest fill year for -2 through Nfleet: " << filled_once << endl; + + for (f = -2; f <= Nfleet; f++) + for (t = styr; t <= k2; t++) + for (g = 1; g <= gmorph; g++) + for (a = 0; a <= nages; a++) + { + Wt_Age_t(t, f, g, a) = -9999.; + } + if (N_WTage_maxage > nages) + N_WTage_maxage = nages; // so extra ages being read will be ignored + dvector tempvec(1, 7 + N_WTage_maxage); + for (i = 0; i <= N_WTage_rd - 1; i++) + { + tempvec(1, 7 + N_WTage_maxage) = WTage_in[i](1, 7 + N_WTage_maxage); + y = abs(tempvec(1)); + f = tempvec(6); + if (y < styr) + y = styr; + if (tempvec(1) < 0 || (y == last_yr_read(f) && filled_once(f) == 0)) + { + y2 = max(YrMax, endyr + 50); + } + else + { + y2 = y; + } // allows filling to end of time series + s = abs(tempvec(2)); + if (tempvec(2) < 0) + { + f2 = Nfleet; + } + else + { + f2 = f; + } // allows filling all fleets + gg = tempvec(3); + gp = tempvec(4); + birthseas = tempvec(5); + g = (gg - 1) * N_GP * nseas + (gp - 1) * nseas + birthseas; // note cannot handle platoons + if (s <= nseas && gg <= gender && gp <= N_GP && birthseas <= nseas && f <= Nfleet) + { + for (j = y; j <= y2; j++) // loop years + { + for (k = f; k <= f2; k++) + { + t = styr + (j - styr) * nseas + s - 1; + for (a = 0; a <= N_WTage_maxage; a++) + Wt_Age_t(t, k, g, a) = tempvec(7 + a); + for (a = N_WTage_maxage; a <= nages; a++) + Wt_Age_t(t, k, g, a) = Wt_Age_t(t, k, g, N_WTage_maxage); // fills out remaining ages, if any + if (j == y && k == f) + echoinput << "year " << y << " s " << s << " sex " << gg << " gp " << gp << " bs " << birthseas << " morph " << g << " pop/fleet " << f << " " << Wt_Age_t(t, k, g)(0, min(6, nages)) << endl; + } + } + } + } + dvar_vector junkvec2(0, nages); + for (f = -2; f <= Nfleet; f++) + for (t = styr; t <= k2 - 1; t++) + for (g = 1; g <= gmorph; g++) + for (a = 0; a <= nages; a++) + if (Wt_Age_t(t, f, g, a) == -9999.) + { + warnstream << "wtatage not assigned for: time, morph, fleet, age: " << t << " " << g << " " << f << " " << a; + write_message (WARN, 0); + } + temp = float(Bmark_Yr(2) - Bmark_Yr(1) + 1.); // get denominator + echoinput << " fill benchmark years with mean " << endl; + for (f = -2; f <= Nfleet; f++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (s = 0; s <= nseas - 1; s++) + { + junkvec2.initialize(); + for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) + { + junkvec2 += Wt_Age_t(t + s, f, g); + } + Wt_Age_t(styr - 3 * nseas + s, f, g) = junkvec2 / temp; + } + } + echoinput << "Finished reading the empirical weight at age file" << endl; + cout << "done" << endl; // Done reading the empirical weight at age file + } + else + { + N_WTage_rd = 0; + N_WTage_maxage = nages; + } + + // SS_Label_Info_6.1.2 #Initialize the dummy parameter as needed + if (Turn_off_phase <= 0) + { + dummy_parm = 0.99999999999999; + } + else + { + dummy_parm = 1.0; + } + + Cohort_Growth = 1.0; // base value for cohort growth deviations + + // SS_Label_Info_6.2 #Apply input variance adjustments to each data type + // SS_Label_Info_6.2.1 #Do variance adjustment for surveys + + echoinput << " do variance adjustment for surveys " << endl; + for (f = 1; f <= Nfleet; f++) + if (Svy_N_fleet(f) > 0) + { + for (i = 1; i <= Svy_N_fleet(f); i++) + { + Svy_se(f, i) = Svy_se_rd(f, i); // don't overwrite the input values + + if (Svy_use(f, i) > 0) + { + if (Svy_errtype(f) >= 0) // lognormal or lognormal T-dist + { + if (Svy_obs(f, i) <= 0.0) + { + warnstream << "Survey obs must be positive for lognormal error"; + write_message (FATAL, 0); // EXIT! + } + Svy_obs_log(f, i) = log(Svy_obs(f, i)); + Svy_se(f, i) += var_adjust(1, f); + if (Svy_se(f, i) <= 0.0) + Svy_se(f, i) = 0.001; + } + else if ( Svy_errtype(f) == -1 ) // normal distribution + { + Svy_se(f, i) += var_adjust(1, f); + if (Svy_se(f, i) <= 0.0) + Svy_se(f, i) = 0.001; + } + else + { + // gamma will go here + } + + } + } + } + echoinput << " survey stderr has been set-up " << endl; + + // SS_Label_Info_6.2.2 #Set up variance for discard observations + for (f = 1; f <= Nfleet; f++) + if (disc_N_fleet(f) > 0) + { + for (i = 1; i <= disc_N_fleet(f); i++) + { + if (yr_disc_use(f, i) >= 0.) + { + if (cv_disc(f, i) <= 0.0) + cv_disc(f, i) = 0.001; + if (disc_errtype(f) >= 0 || disc_errtype(f) == -3) + { + // input is CV + sd_disc(f, i) = cv_disc(f, i) * obs_disc(f, i); + } + else + { + // input is SD + sd_disc(f, i) = cv_disc(f, i); + } + + sd_disc(f, i) += var_adjust(2, f); // note that adjustment is to the sd, not the CV + if (sd_disc(f, i) < 0.001) + sd_disc(f, i) = 0.001; + } + } + } + echoinput << " discard stderr has been set-up " << endl; + + // SS_Label_Info_6.2.3 #Set up variance for mean body wt data, note different reference to array that was read + // 10 items are: 1yr, 2seas, 3fleet, 4part, 5type, 6obs, 7se, then three intermediate variance quantities + for (i = 1; i <= nobs_mnwt; i++) + { + if (mnwtdata(3, i) > 0.) // used observation + { + mnwtdata(7, i) += var_adjust(3, mnwtdata(3, i)); + if (mnwtdata(7, i) <= 0.0) + mnwtdata(7, i) = 0.001; + mnwtdata(8, i) = mnwtdata(6, i) * mnwtdata(7, i); // se = cv*obs + mnwtdata(9, i) = DF_bodywt * square(mnwtdata(8, i)); + mnwtdata(10, i) = sd_offset * log(mnwtdata(8, i)); + } + } + echoinput << " mean bodywt stderr has been set-up " << endl; + + // SS_Label_Info_6.2.4 #Do variance adjustment and compute OFFSET for length comp + if (Nobs_l_tot > 0) + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= Nobs_l(f); i++) + // if(header_l(f,i,3)>0) + { + nsamp_l(f, i) *= var_adjust(4, f); + // {if(nsamp_l(f,i)<=1.0) nsamp_l(f,i)=1.;} // adjust sample size + // calculate lencomp offsets + if (Comp_Err_L(0, f) == 0) + { + // multinomial + nsamp_l(f, i) = max(min_sample_size_L(0, f), nsamp_l(f, i)); + if (gen_l(f, i) != 2) + { + offset_l(f, i) -= nsamp_l(f, i) * + obs_l(f, i)(tails_l(f, i, 1), tails_l(f, i, 2)) * log(obs_l(f, i)(tails_l(f, i, 1), tails_l(f, i, 2))); + } + if (gen_l(f, i) >= 2 && gender == 2) + { + offset_l(f, i) -= nsamp_l(f, i) * + obs_l(f, i)(tails_l(f, i, 3), tails_l(f, i, 4)) * log(obs_l(f, i)(tails_l(f, i, 3), tails_l(f, i, 4))); + } + } + else if( (Comp_Err_L(0, f)==1) || (Comp_Err_L(0, f)==2) ) // dirichlet + { + // Dirichlet-Multinomial (either 1 = linear, 2 = saturating) + // cannot use fxn Comp_Err_Dirichlet for this calc because only need the first part here + offset_l(f, i) = gammln(nsamp_l(f, i) + 1.); + if (gen_l(f, i) != 2) + { + int z1 = tails_l(f, i, 1); + int z2 = tails_l(f, i, 2); + offset_l(f, i) -= sum(gammln(1. + nsamp_l(f, i) * obs_l(f, i)(z1, z2))); + // sum(gammln(1. + nsamp_l(f,i)*obs_l(f,i)(tails_l(f,i,3),tails_l(f,i,4)))); + } + if (gen_l(f, i) >= 2 && gender == 2) + { + int z1 = tails_l(f, i, 3); + int z2 = tails_l(f, i, 4); + offset_l(f, i) -= sum(gammln(1. + nsamp_l(f, i) * obs_l(f, i)(z1, z2))); + } + } + else if( (Comp_Err_L(0, f)==3)) // MV Tweedie + { + // no MV Tweedie offset + } + } + // echoinput<<" length_comp offset: "< 0) + { + echoinput << "Create superperiod sample weights for survey obs" << endl + << "Flt_num SuperP Obs_num Flt_code SE_input samp_wt" << endl; + for (j = 1; j <= Svy_super_N(f); j++) // do each super period + { + temp = 1.0; // relative sample weight for time period the accumulator observation + k = 0; // count of samples with real information + for (i = Svy_super_start(f, j); i <= Svy_super_end(f, j); i++) // loop obs of this super period + { + if (Svy_use(f, i) < 0) // so one of the obs to be combined + { + temp += Svy_se(f, i); + } // add in its weight relative to 1.0 for the observation with real info + else + { + k++; + } + } + if (k != 1) + { + warnstream << "There must only be 1 sample with real info in survey superperiod " << j; + write_message (FATAL, 0); // EXIT! + } + for (i = Svy_super_start(f, j); i <= Svy_super_end(f, j); i++) + { + if (Svy_use(f, i) < 0) // so one of the obs to be combined + { + Svy_super_weight(f, i) = Svy_se(f, i) / value(temp); + } + else + { + Svy_super_weight(f, i) = 1.0 / value(temp); + } + echoinput << f << " " << j << " " << i << " " << Svy_use(f, i) << " " << Svy_se(f, i) << " " << Svy_super_weight(f, i) << endl; + } + } + } + + if (N_suprper_disc(f) > 0) + { + echoinput << "Create superperiod sample weights for discard obs" << endl + << "Flt_num SuperP Obs_num Flt_code SE_input samp_wt" << endl; + for (j = 1; j <= N_suprper_disc(f); j++) // do each super period + { + temp = 1.0; // relative sample weight for time period the accumulator observation + k = 0; // count of samples with real information + for (i = suprper_disc1(f, j); i <= suprper_disc2(f, j); i++) // loop obs of this super period + { + if (yr_disc_use(f, i) < 0) // so one of the obs to be combined + { + temp += cv_disc(f, i); + } // add in its weight relative to 1.0 for the observation with real info + else + { + k++; + } + } + if (k != 1) + { + warnstream << "There must only be 1 sample with real info in survey superperiod " << j; + write_message (FATAL, 0); // EXIT! + } + for (i = suprper_disc1(f, j); i <= suprper_disc2(f, j); i++) + { + if (yr_disc_use(f, i) < 0) // so one of the obs to be combined + { + suprper_disc_sampwt(f, i) = cv_disc(f, i) / value(temp); + } + else + { + suprper_disc_sampwt(f, i) = 1.0 / value(temp); + } + echoinput << f << " " << j << " " << i << " " << yr_disc_use(f, i) << " " << cv_disc(f, i) << " " << suprper_disc_sampwt(f, i) << endl; + } + } + } + + if (N_suprper_l(f) > 0) + { + echoinput << "Create superperiod sample weights for length obs" << endl + << "Flt_num SuperP Obs_num Flt_code effN_input samp_wt" << endl; + for (j = 1; j <= N_suprper_l(f); j++) // do each super period + { + temp = 1.0; // relative sample weight for time period the accumulator observation + k = 0; // count of samples with real information + for (i = suprper_l1(f, j); i <= suprper_l2(f, j); i++) // loop obs of this super period + { + if (header_l(f, i, 3) < 0) // so one of the obs to be combined + { + temp += nsamp_l(f, i); + } + else + { + k++; + } + } + if (k > 1) + { + warnstream << "There must only be 1 sample with real info in length superperiod " << j; + write_message (FATAL, 0); // EXIT! + } + for (i = suprper_l1(f, j); i <= suprper_l2(f, j); i++) + { + if (header_l(f, i, 3) < 0) // so one of the obs to be combined + { + suprper_l_sampwt(f, i) = nsamp_l(f, i) / value(temp); + } + else + { + suprper_l_sampwt(f, i) = 1.0 / value(temp); + } + echoinput << f << " " << j << " " << i << " " << header_l(f, i, 3) << " " << nsamp_l(f, i) << " " << suprper_l_sampwt(f, i) << endl; + } + } + } + + if (N_suprper_a(f) > 0) + { + echoinput << "Create superperiod sample weights for age obs" << endl + << "Flt_num SuperP Obs_num Flt_code effN_input samp_wt" << endl; + for (j = 1; j <= N_suprper_a(f); j++) // do each super period + { + temp = 1.0; // relative sample weight for time period the accumulator observation + k = 0; // count of samples with real information + for (i = suprper_a1(f, j); i <= suprper_a2(f, j); i++) // loop obs of this super period + { + if (header_a(f, i, 3) < 0) // so one of the obs to be combined + { + temp += nsamp_a(f, i); + } + else + { + k++; + } + } + if (k != 1) + { + warnstream << "There must only be 1 sample with real info in age superperiod " << j; + write_message (FATAL, 0); // EXIT! + } + for (i = suprper_a1(f, j); i <= suprper_a2(f, j); i++) + { + if (header_a(f, i, 3) < 0) // so one of the obs to be combined + { + suprper_a_sampwt(f, i) = nsamp_a(f, i) / value(temp); + } + else + { + suprper_a_sampwt(f, i) = 1.0 / value(temp); + } // for the element holding the combined observation + echoinput << f << " " << j << " " << i << " " << header_a(f, i, 3) << " " << nsamp_a(f, i) << " " << suprper_a_sampwt(f, i) << endl; + } + } + } + if (N_suprper_ms(f) > 0) + { + echoinput << "Create superperiod sample weights for meansize obs" << endl + << "Flt_num SuperP Obs_num Flt_code effN_input samp_wt" << endl; + for (j = 1; j <= N_suprper_ms(f); j++) // do each super period + { + temp = 1.0; // relative sample weight for time period the accumulator observation + k = 0; // count of samples with real information + for (i = suprper_ms1(f, j); i <= suprper_ms2(f, j); i++) // loop obs of this super period + { + if (header_ms(f, i, 3) < 0) // so one of the obs to be combined + { + temp += header_ms(f, i, 7); + } + else + { + k++; + } + } + if (k != 1) + { + warnstream << "There must only be 1 sample with real info in meansize superperiod " << j; + write_message (FATAL, 0); // EXIT! + } + for (i = suprper_ms1(f, j); i <= suprper_ms2(f, j); i++) + { + if (header_ms(f, i, 3) < 0) // so one of the obs to be combined + { + suprper_ms_sampwt(f, i) = header_ms(f, i, 7) / value(temp); + } + else + { + suprper_ms_sampwt(f, i) = 1.0 / value(temp); + } // for the element holding the combined observation + echoinput << f << " " << j << " " << i << " " << header_ms(f, i, 3) << " " << header_ms(f, i, 7) << " " << suprper_ms_sampwt(f, i) << endl; + } + } + } + } + + // SS_Label_Info_6.2.5 #Do variance adjustment and compute OFFSET for age comp + if (Nobs_a_tot > 0) + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= Nobs_a(f); i++) + // if(header_a(f,i,3)>0) + { + nsamp_a(f, i) *= var_adjust(5, f); + // {if(nsamp_a(f,i)<=1.0) nsamp_a(f,i)=1.;} // adjust sample size + nsamp_a(f, i) = max(min_sample_size_A(f), nsamp_a(f, i)); + // calculate agecomp offsets + // multinomial + if (Comp_Err_A(f) == 0) + { + if (gen_a(f, i) != 2) + { + offset_a(f, i) -= nsamp_a(f, i) * + obs_a(f, i)(tails_a(f, i, 1), tails_a(f, i, 2)) * log(obs_a(f, i)(tails_a(f, i, 1), tails_a(f, i, 2))); + } + if (gen_a(f, i) >= 2 && gender == 2) + { + offset_a(f, i) -= nsamp_a(f, i) * + obs_a(f, i)(tails_a(f, i, 3), tails_a(f, i, 4)) * log(obs_a(f, i)(tails_a(f, i, 3), tails_a(f, i, 4))); + } + } + else if( (Comp_Err_A(f)==1) || (Comp_Err_A(f)==2) ) // dirichlet + { + // Dirichlet-Multinomial (either 1 = linear, 2 = saturating) + offset_a(f, i) = gammln(nsamp_a(f, i) + 1.); + if (gen_a(f, i) != 2) + { + int z1 = tails_a(f, i, 1); + int z2 = tails_a(f, i, 2); + offset_a(f, i) -= sum(gammln(1. + nsamp_a(f, i) * obs_a(f, i)(z1, z2))); + } + if (gen_a(f, i) >= 2 && gender == 2) + { + int z1 = tails_a(f, i, 3); + int z2 = tails_a(f, i, 4); + offset_a(f, i) -= sum(gammln(1. + nsamp_a(f, i) * obs_a(f, i)(z1, z2))); + } + } + else if( (Comp_Err_A(f)==3) ) // MV Tweedie + { + // MV Tweedie has no offset, at least yet + } + + } + // echoinput<<" agecomp offset "< 0) + { + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= Nobs_ms(f); i++) + for (b = 1; b <= n_abins2; b++) + { + if (obs_ms_n(f, i, b) > 0) + { + obs_ms_n(f, i, b) = sqrt(var_adjust(6, f) * obs_ms_n(f, i, b)); + // if(obs_ms_n(f,i,b)<=1.0) obs_ms_n(f,i,b)=1.; // adjust sample size + } + } + } + echoinput << " setup stderr for mean size-at-age: " << endl; + + // SS_Label_Info_6.2.7 #Input variance adjustment for generalized size comp + if (SzFreq_Nmeth > 0) + { + N_suprper_SzFreq = 0; // redo this counter so can use the counter + + in_superperiod = 0; + for (iobs = 1; iobs <= SzFreq_totobs; iobs++) + { + f = abs(SzFreq_obs1(iobs, 4)); + y = abs(SzFreq_obs1(iobs, 2)); + if (var_adjust(7, f) != 1.0) + { + SzFreq_sampleN(iobs) *= var_adjust(7, f); + // if (SzFreq_sampleN(iobs) < 1.0) SzFreq_sampleN(iobs) = 1.; + } + k = SzFreq_obs_hdr(iobs, 6); // get the method + f = abs(SzFreq_obs_hdr(iobs, 3)); + s = SzFreq_obs_hdr(iobs, 2); // sign used to indicate start/stop of super period + if (SzFreq_sampleN(iobs) > 0 && SzFreq_obs_hdr(iobs, 3) > 0) + { + z1 = SzFreq_obs_hdr(iobs, 7); + z2 = SzFreq_obs_hdr(iobs, 8); + g = SzFreq_LikeComponent(f, k); + if (Comp_Err_Sz(k) == 0) // Multinomial + { + offset_Sz_tot(g) -= SzFreq_sampleN(iobs) * SzFreq_obs(iobs)(z1, z2) * log(SzFreq_obs(iobs)(z1, z2)); + SzFreq_each_offset(iobs) -= SzFreq_sampleN(iobs) * SzFreq_obs(iobs)(z1, z2) * log(SzFreq_obs(iobs)(z1, z2)); + } + else if (Comp_Err_Sz(k) == 1 || Comp_Err_Sz(k) == 2 ) // Dirichlet + { + offset_Sz_tot(g) += gammln(SzFreq_sampleN(iobs) + 1.) - sum(gammln(1. + SzFreq_sampleN(iobs) * SzFreq_obs(iobs)(z1, z2))); + SzFreq_each_offset(iobs) += gammln(SzFreq_sampleN(iobs) + 1.) - sum(gammln(1. + SzFreq_sampleN(iobs) * SzFreq_obs(iobs)(z1, z2))); + } + else if (Comp_Err_Sz(k) == 3) // MV Tweedie + { + // MV Tweedie not available + } + } + // identify super-period starts and stops + if (s < 0) // start/stop a super-period ALL observations must be continguous in the file + { + if (in_superperiod == 0) + { + N_suprper_SzFreq++; + suprper_SzFreq_start(N_suprper_SzFreq) = iobs; + in_superperiod = 1; + } + else if (in_superperiod == 1) // end a super-period + { + suprper_SzFreq_end(N_suprper_SzFreq) = iobs; + in_superperiod = 0; + } + } + } + echoinput << " Sizefreq comp var adjust has been applied and offset calculated " << endl; + + if (N_suprper_SzFreq > 0) + { + echoinput << "sizefreq superperiod start obs: " << suprper_SzFreq_start << endl + << "sizefreq superperiod end obs: " << suprper_SzFreq_end << endl; + + echoinput << "Create superperiod sample weights for sizecomp obs " << endl + << "Flt_num SuperP Obs_num Sample_N_read samp_wt" << endl; + for (j = 1; j <= N_suprper_SzFreq; j++) // do each super period + { + temp = 1.0; // relative sample weight for time period the accumulator observation + k = 0; // count of samples with real information + for (iobs = suprper_SzFreq_start(j); iobs <= suprper_SzFreq_end(j); iobs++) // loop obs of this super period + { + if (SzFreq_obs_hdr(iobs, 3) < 0) // so one of the obs to be combined + { + temp += SzFreq_sampleN(iobs); + } + else + { + k++; + } // so counts the obs that are not just placeholders + } + if (k != 1) + { + warnstream << "There must only be 1 sample with real info in sizecomp superperiod " << j; + write_message (FATAL, 0); // EXIT! + } + for (iobs = suprper_SzFreq_start(j); iobs <= suprper_SzFreq_end(j); iobs++) + { + if (SzFreq_obs_hdr(iobs, 3) < 0) // so one of the obs to be combined + { + suprper_SzFreq_sampwt(iobs) = SzFreq_sampleN(iobs) / value(temp); + } + else + { + suprper_SzFreq_sampwt(iobs) = 1.0 / value(temp); + } // for the element holding the combined observation + echoinput << SzFreq_obs_hdr(iobs, 3) << " " << j << " " << iobs << " " << SzFreq_sampleN(iobs) << " " << suprper_SzFreq_sampwt(iobs) << endl; + } + } + } + } + + // SS_Label_Info_6.4 #Conditionally copy the initial parameter values read from the "CTL" file into the parameter arrays + // skip this assignment if the parameters are being read from a "SS2.PAR" file + + if (readparfile == 0) + { + echoinput << " set parms to init values in CTL file " << endl; + for (i = 1; i <= N_MGparm2; i++) + { + MGparm(i) = MGparm_RD(i); + } // set vector of initial natmort and growth parms + echoinput << " MGparms read from ctl " << MGparm << endl; + + for (i = 1; i <= N_SRparm3; i++) + { + SRparm(i) = SRparm_RD(i); + } + echoinput << " SRR_parms read from ctl " << SRparm << endl; + + if (recdev_cycle > 0) + { + for (y = 1; y <= recdev_cycle; y++) + { + recdev_cycle_parm(y) = recdev_cycle_parm_RD(y, 3); + } + } + + if (recdev_do_early > 0) recdev_early.initialize(); + if (Do_Forecast > 0 && do_recdev != 0) Fcast_recruitments.initialize(); + if (Do_Impl_Error > 0) Fcast_impl_error.initialize(); + + if (do_recdev == 1) + { + recdev1.initialize(); + } // set devs to zero + else if (do_recdev >= 2) + { + recdev2.initialize(); + } // set devs to zero + + if (recdev_read > 0) + { + for (j = 1; j <= recdev_read; j++) + { + y = recdev_input(j, 1); + if (y >= recdev_first && y <= YrMax) + { + if (y < recdev_start) + { + recdev_early(y) = recdev_input(j, 2); + } + else if (y <= recdev_end) + { + if (do_recdev == 1) + { + recdev1(y) = recdev_input(j, 2); + } + else if (do_recdev >= 2) + { + recdev2(y) = recdev_input(j, 2); + } + } + else + { + Fcast_recruitments(y) = recdev_input(j, 2); + } + } + else + { + warnstream << "Trying to specify a recdev out of allowable range of years " << y; + write_message (WARN, 0); + } + } + } + echoinput << " rec_devs read from ctl "; + if (do_recdev == 1) + echoinput << recdev1 << endl; + if (do_recdev >= 2) + echoinput << recdev2 << endl; + + // ************************************************** + if (Q_Npar2 > 0) + { + for (i = 1; i <= Q_Npar2; i++) + { + Q_parm(i) = Q_parm_RD(i); + } // set vector of initial index Q parms + echoinput << " Q_parms read from ctl " << Q_parm << endl; + } + + if (N_init_F > 0) + { + for (i = 1; i <= N_init_F; i++) + init_F(i) = init_F_RD(i); // set vector of initial parms + echoinput << " initF_parms read from ctl " << init_F << endl; + } + + //SS_Label_Info_xxx setup F as parameters + if (N_Fparm > 0) + { + if (readparfile == 0) + { + for (g = 1; g <= N_Fparm; g++) + { + f = Fparm_loc[g](1); + t = Fparm_loc[g](2); + if(catch_ret_obs(f,t) > 0.0) { + F_rate(g) = F_parm_intval(f); + Hrate(f, t) = F_parm_intval(f); + } + } + + if (F_detail > 0) + { + // note that detailed phase and catch_se have already been set in readcontrol + for (k = 1; k <= F_detail; k++) + { + f = F_setup2(k, 1); + y = F_setup2(k, 2); + s = F_setup2(k, 3); + if (y > 0) + { + y1 = y; + y2 = y; + } + else + { + y1 = -y; + y2 = endyr; + } + for (y = y1; y <= y2; y++) + { + t = styr + (y - styr) * nseas + s - 1; + g = do_Fparm_loc(f, t); + if (g > 0) + { + F_rate(g) = F_setup2(k, 4); + Hrate(f, t) = F_setup2(k, 4); + } + } + } + } + echoinput << " Fmort_parms have been set according to F_detail input" << endl; + } + else + { + echoinput << " Fmort_parms obtained from ss.par " << endl; + } + } + + for (i = 1; i <= N_selparm2; i++) + selparm(i) = selparm_RD(i); // set vector of initial selex parms + echoinput << " selex_parms read from ctl " << selparm << endl; + + if (Do_TG > 0) + { + k = Do_TG * (3 * N_TG + 2 * Nfleet1); + for (i = 1; i <= k; i++) + { + TG_parm(i) = TG_parm2(i, 3); + } + echoinput << " Tag_parms read from ctl " << TG_parm << endl; + } + checksum999 = 999.; + } + else + { + echoinput << "checksum from par file "< 0) + { + echoinput << endl + << " now check recdev_cycle bounds and priors and do jitter if requested " << endl; + for (j = 1; j <= recdev_cycle; j++) + { + recdev_cycle_parm(j) = Check_Parm(j, recdev_cycle_PH(j), recdev_cycle_LO(j), recdev_cycle_HI(j), recdev_cycle_parm_RD(j, 6), recdev_cycle_parm_RD(j, 4), recdev_cycle_parm_RD(j, 5), jitter, recdev_cycle_parm(j)); + } + echoinput << " recdev_cycle after check " << recdev_cycle_parm << endl; + recdev_cycle_use = value(recdev_cycle_parm); + } + + if (recdev_do_early > 0) + { + recdev_RD(recdev_early_start, recdev_early_end) = value(recdev_early(recdev_early_start, recdev_early_end)); + + for (y = recdev_early_start; y <= recdev_early_end; y++) + { + recdev_early(y) = Check_Parm(y, recdev_early_PH, recdev_LO, recdev_HI, 0, 0., 1., jitter, recdev_early(y)); + } + // recdev_early -=sum(recdev_early)/(recdev_early_end-recdev_early_start+1); + + recdev_use(recdev_early_start, recdev_early_end) = value(recdev_early(recdev_early_start, recdev_early_end)); + } + + if (recdev_PH > 0 && do_recdev > 0) + { + echoinput << endl + << " now check recdev bounds and priors and do jitter if requested " << endl; + if (do_recdev == 1) + { + recdev_RD(recdev_start, recdev_end) = value(recdev1(recdev_start, recdev_end)); + for (i = recdev_start; i <= recdev_end; i++) + { + recdev1(i) = Check_Parm(i, recdev_PH, recdev_LO, recdev_HI, 0, 0., 1., jitter, recdev1(i)); + } + recdev1 -= sum(recdev1) / (recdev_end - recdev_start + 1); + recdev_use(recdev_start, recdev_end) = value(recdev1(recdev_start, recdev_end)); + } + else + { + recdev_RD(recdev_start, recdev_end) = value(recdev2(recdev_start, recdev_end)); + for (i = recdev_start; i <= recdev_end; i++) + { + recdev2(i) = Check_Parm(i, recdev_PH, recdev_LO, recdev_HI, 0, 0., 1., jitter, recdev2(i)); + } + // recdev2 -=sum(recdev2)/(recdev_end-recdev_start+1); + recdev_use(recdev_start, recdev_end) = value(recdev2(recdev_start, recdev_end)); + } + } + + if (Do_Forecast >= 0 && do_recdev > 0) + { + recdev_RD(recdev_end + 1, YrMax) = value(Fcast_recruitments(recdev_end + 1, YrMax)); + recdev_use(recdev_end + 1, YrMax) = value(Fcast_recruitments(recdev_end + 1, YrMax)); + } + + echoinput << " rec_devs after check " << recdev_use << endl; + + if (Q_Npar2 > 0) + { + echoinput << endl + << " now check Qparm bounds and priors and do jitter if requested " << endl; + for (i = 1; i <= Q_Npar2; i++) + { + Q_parm(i) = Check_Parm(i, Q_parm_PH(i), Q_parm_LO(i), Q_parm_HI(i), Q_parm_PRtype(i), Q_parm_PR(i), Q_parm_CV(i), jitter, Q_parm(i)); + } + echoinput << " Q_parms after check " << Q_parm << endl; + Q_parm_use = value(Q_parm); + } + + if (N_init_F > 0) + { + echoinput << endl + << " now check init_F parm bounds and priors and do jitter if requested " << endl; + for (i = 1; i <= N_init_F; i++) + { + init_F(i) = Check_Parm(i, init_F_PH(i), init_F_LO(i), init_F_HI(i), init_F_PRtype(i), init_F_PR(i), init_F_CV(i), jitter, init_F(i)); + } + echoinput << " initF_parms after check " << init_F << endl; + init_F_use = value(init_F); + } + + if (N_Fparm > 0) + { + echoinput << endl + << " now check F parm bounds and priors and do jitter if requested " << endl; + for (i = 1; i <= N_Fparm; i++) + { + { + F_rate(i) = Check_Parm(i, Fparm_PH[i], 0., max_harvest_rate, 0, 0.05, 1., jitter, F_rate(i)); + } + } + echoinput << " F_parms after check " << F_rate << endl; + Fparm_use = value(F_rate); + } + + if (N_selparm2 > 0) + { + echoinput << endl + << " now check sel_parm bounds and priors and do jitter if requested " << endl; + for (i = 1; i <= N_selparm2; i++) + { + selparm(i) = Check_Parm(i, selparm_PH(i), selparm_LO(i), selparm_HI(i), selparm_PRtype(i), selparm_PR(i), selparm_CV(i), jitter, selparm(i)); + } + echoinput << " selex_parms after check " << selparm << endl; + selparm_use = value(selparm); + } + + if (Do_TG > 0) + { + echoinput << endl + << " now check TAG parm bounds and priors and do jitter if requested " << endl; + k = Do_TG * (3 * N_TG + 2 * Nfleet1); + for (i = 1; i <= k; i++) + { + { + TG_parm(i) = Check_Parm(i, TG_parm_PH(i), TG_parm_LO(i), TG_parm_HI(i), TG_parm2(i, 6), TG_parm2(i, 4), TG_parm2(i, 5), jitter, TG_parm(i)); + } + } + echoinput << " Tag_parms after check " << TG_parm << endl; + TG_parm_use = value(TG_parm); + } + + if (N_parm_dev > 0) + { + echoinput << endl + << " now check parmdev bounds and priors and do jitter if requested " << endl; + for (i = 1; i <= N_parm_dev; i++) + for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) + { + parm_dev_RD(i, j) = value(parm_dev(i, j)); + } + + for (i = 1; i <= N_parm_dev; i++) + if (parm_dev_PH(i) > 0) + for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) + { + parm_dev(i, j) = Check_Parm(j, parm_dev_PH(i), -10, 10, 0, 0., 1., jitter, parm_dev(i, j)); + } + for (i = 1; i <= N_parm_dev; i++) + for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) + { + parm_dev_use(i, j) = value(parm_dev(i, j)); + } + echoinput << " parm_devs after check " << parm_dev_use << endl; + } + // end bound check and jitter + if (Do_all_priors == 0 && prior_ignore_warning > 0) + { + warnstream << "Setting in starter does not request all priors, and " << prior_ignore_warning << " parameters have priors and are not estimated, so their prior not included in obj_fun."; + write_message (WARN, 0); + } + if (TwoD_AR_cnt > 0) + { + // create correlation matrix for 2D_AR approaches + // TwoD_AR_def: 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase + // 10-mindimension, 11=maxdim, 12-N_parm_dev, 13-selparm_location + cor.initialize(); + det_cor = 1.0; + inv_cor.initialize(); + + for (f = 1; f <= TwoD_AR_cnt; f++) + { + double rho_a; + double rho_y; + // location in selparm of rho + if (TwoD_AR_def[f](7) == 0) + { + echoinput << "fleet: " << f << " no 2D_AR rho " << endl; + } + else + { + if (TwoD_AR_def[f](6) < 0) + { + j = TwoD_AR_def[f](13) + 1; + } + else + { + j = TwoD_AR_def[f](13) + TwoD_AR_def[f](6) - TwoD_AR_def[f](4) + 1; + } // first sigmalocation + other sigmasels, then the rho's + rho_y = value(selparm(j)); + rho_a = value(selparm(j + 1)); + echoinput << "fleet: " << f << " 2D_AR rho in prelim for time and age/size " << rho_y << " " << rho_a << endl; + for (int i = TwoD_AR_ymin(f); i <= TwoD_AR_ymax(f); i++) + { + for (int j = TwoD_AR_amin(f); j <= TwoD_AR_amax(f); j++) + { + for (int m = TwoD_AR_ymin(f); m <= TwoD_AR_ymax(f); m++) + { + for (int n = TwoD_AR_amin(f); n <= TwoD_AR_amax(f); n++) + { + cor(f, (TwoD_AR_amax(f) - TwoD_AR_amin(f) + 1) * (i - TwoD_AR_ymin(f)) + j - TwoD_AR_amin(f) + 1, + (TwoD_AR_amax(f) - TwoD_AR_amin(f) + 1) * (m - TwoD_AR_ymin(f)) + n - TwoD_AR_amin(f) + 1) = pow(rho_a, abs(j - n)) * pow(rho_y, abs(i - m)); + } + } + } + } + inv_cor(f) = inv(cor(f)); + det_cor(f) = det(cor(f)); + echoinput << "determinant for 2D_AR cor: " << f << " is: " << det_cor(f) << endl; + } + } + } + // SS_Label_Info_6.6 #Copy the environmental data as read into the dmatrix environmental data array + // this will allow dynamic derived quantities like biomass and recruitment to be mapped into this same dmatrix + + env_data.initialize(); + + if (N_envdata > 0) + { + // raw input is in vector vector env_temp + // the fields are yr, envvar, value + // yr=-2 instructs SS3 to subtract mean before storing + // yr=-1 instructs SS3 to subtract mean and divide by stddev + + // first pass to calculate means and other summary data + for (i = 0; i <= N_envdata - 1; i++) + { + y = env_temp[i](1); + if (y >= (styr - 1) && y <= YrMax) + { + k = env_temp[i](2); + double val = env_temp[i](3); + env_data(y, k) = val; + if (env_data_do_mean(k) == 1) + env_data(y, k) -= env_data_mean(k); + if (env_data_do_stdev(k) == 1) + env_data(y, k) /= env_data_stdev(k); + } + } + echoinput << " env matrix after processing" << endl + << env_data << endl; + } + + // SS_Label_Info_6.7 #Initialize several rebuilding items + if (Rebuild_Ydecl == -1) + Rebuild_Ydecl = 1999; + if (Rebuild_Yinit == -1) + Rebuild_Yinit = endyr + 1; + + if (Rebuild_Ydecl > YrMax) + Rebuild_Ydecl = YrMax; + if (Rebuild_Yinit > YrMax) + Rebuild_Yinit = YrMax; + + migrrate.initialize(); + depletion.initialize(); + natage.initialize(); + sel_l.initialize(); + sel_a.initialize(); + retain.initialize(); + discmort.initialize(); + discmort2.initialize(); + discmort2_a.initialize(); + + for (f = 1; f <= Nfleet; f++) + for (y = styr; y <= YrMax; y++) + for (gg = 1; gg <= gender; gg++) + { + discmort2(y, f, gg) = 1.0; + discmort(y, f) = 1.0; + discmort_a(y, f) = 1.0; + retain(y, f) = 1.0; + } + Richards = 1.0; + + // check data against settings for inconsistencies + // check for composition obs with partition =1 or =2; use a new summary of obs by partition type for this test + ivector parti_cnt(0, 2); + for (f = 1; f <= Nfleet; f++) + { + // check for discard obs + if (disc_N_fleet(f) > 0 && Do_Retain(f) == 0) + { + warnstream << "Fleet: " << f << " discard data exist but retention fxn not defined"; + write_message (FATAL, 0); // EXIT! + } + + parti_cnt.initialize(); + if (Nobs_l(f) > 0) + { + for (i = 1; i <= Nobs_l(f); i++) + { + parti_cnt(abs(mkt_l(f, i)))++; + if (Do_Retain(f) == 0) mkt_l(f,i) = 0; // force to partition 0 if retention not defined + } + if (parti_cnt(1) > 0 && Do_Retain(f) == 0) + { + warnstream << "Fleet: " << f << " lencomp contains N obs with partition==1 and retention fxn not defined; N= " << parti_cnt(1); + write_message (FATAL, 0); // EXIT! + } + if (parti_cnt(2) > 0 && Do_Retain(f) == 0) + { + warnstream << "fleet: " << f << " lencomp has N obs with partition==2 (retained); changed to partition=0 because retention not defined; N= " << parti_cnt(2); + write_message (WARN, 0); + } + if (parti_cnt(2) > 0 && (fleet_type(f) == 2 || seltype(f, 2) == 3 || seltype(Nfleet + f, 2) == 3)) // error if retained catch obs are with no retention fleets + { + warnstream << "Fleet: " << f << " lencomp has obs with partition==2; but fleet does not retain any catch; N= " << parti_cnt(2); + write_message (FATAL, 0); // EXIT! + } + } + + parti_cnt.initialize(); + if (Nobs_a(f) > 0) + { + for (i = 1; i <= Nobs_a(f); i++) + { + parti_cnt(abs(mkt_a(f, i)))++; + if (Do_Retain(f) == 0) mkt_a(f,i) = 0; // force to partition 0 if retention not defined + } + if (parti_cnt(1) > 0 && Do_Retain(f) == 0) + { + warnstream << "Fleet: " << f << " agecomp contains N obs with partition==1 and retention fxn not defined; N= " << parti_cnt(1); + write_message (FATAL, 0); // EXIT! + } + if (parti_cnt(2) > 0 && Do_Retain(f) == 0) + { + warnstream << "Fleet: " << f << " agecomp has N obs with partition==2 (retained); changed to partition=0 because retention not defined; N= " << parti_cnt(2); + write_message (ADJUST, 0); + } + if (parti_cnt(2) > 0 && (fleet_type(f) == 2 || seltype(f, 2) == 3 || seltype(Nfleet + f, 2) == 3)) // error if retained catch obs are with no retention fleets + { + warnstream << "Fleet: " << f << " agecomp has obs with partition==2; but fleet does not retain any catch; N= " << parti_cnt(2); + write_message (FATAL, 0); // EXIT! + } + } + + parti_cnt.initialize(); + if (Nobs_ms(f) > 0) + { + for (i = 1; i <= Nobs_ms(f); i++) + { + parti_cnt(abs(mkt_ms(f, i)))++; + if (Do_Retain(f) == 0) mkt_ms(f, i) = 0; // force to partition 0 if retention not defined + } + if (parti_cnt(1) > 0 && Do_Retain(f) == 0) + { + warnstream << "Fleet: " << f << " size-at-age data contains obs with partition==1 and retention fxn not defined; N= " << parti_cnt(1); + write_message (FATAL, 0); // EXIT! + } + if (parti_cnt(2) > 0 && Do_Retain(f) == 0) + { + warnstream << "Fleet: " << f << " size-at-age data has N obs with partition==2 (retained); changed to partition=0 because retention not defined; N= " << parti_cnt(2); + write_message (ADJUST, 0); + } + if (parti_cnt(2) > 0 && (fleet_type(f) == 2 || seltype(f, 2) == 3 || seltype(Nfleet + f, 2) == 3)) // error if retained catch obs are with no retention fleets + { + warnstream << "Fleet: " << f << " EXIT; size-at-age data has obs with partition==2; but fleet does not retain any catch; N= " << parti_cnt(2); + write_message (FATAL, 0); // EXIT! + } + } + + parti_cnt.initialize(); + if (nobs_mnwt > 0) + { + for (i = 1; i <= nobs_mnwt; i++) + { + int f1 = mnwtdata(3, i); + if (f1 == f) + { + int parti = abs(mnwtdata(4, i)); // partition: 0=all, 1=discard, 2=retained + parti_cnt(parti)++; + if (Do_Retain(f) == 0) mnwtdata(4, i) = 0; // force to partition 0 if retention not defined + } + } + if (parti_cnt(1) > 0 && Do_Retain(f) == 0) + { + warnstream << "Fleet: " << f << " meansize data contains obs with partition==1 and retention fxn not defined; N= " << parti_cnt(1); + write_message (FATAL, 0); // EXIT! + } + if (parti_cnt(2) > 0 && Do_Retain(f) == 0) + { + warnstream << "Fleet: " << f << " meansize data has N obs with partition==2 (retained); changed to partition=0 because retention not defined; N= " << parti_cnt(2); + write_message (ADJUST, 0); + } + if (parti_cnt(2) > 0 && (fleet_type(f) == 2 || seltype(f, 2) == 3 || seltype(Nfleet + f, 2) == 3)) // error if retained catch obs are with no retention fleets + { + warnstream << "Fleet: " << f << " EXIT; meansize data has obs with partition==2; but fleet does not retain any catch; N= " << parti_cnt(2); + write_message (FATAL, 0); // EXIT! + } + } + } + + // SS_Label_Info_6.8 #Go thru biological calculations once, with do_once flag=1 to produce extra output to echoinput.sso + cout << "Evaluating biology calculations once ... "; + echoinput << "Begin evaluating biology calculations once" << endl; + ALK_subseas_update = 1; // vector to indicate if ALK needs recalculating + do_once = 1; + niter = 0; + y = styr; + yz = styr; + t_base = styr + (y - styr) * nseas - 1; + + make_timevaryparm(); + + // SS_Label_Info_6.8.1 #Call fxn get_MGsetup() to copy MGparms to working array and applies time-varying factors + get_MGsetup(styr); + echoinput << "Finished MGsetup" << endl; + + // SS_Label_Info_6.8.2 #Call fxn get_growth1() to calculate quantities that are not time-varying + get_growth1(); + echoinput << "Finished growth1" << endl; + VBK_seas = value(VBK_seas); + wtlen_seas = value(wtlen_seas); + CVLmin = value(CVLmin); + CVLmax = value(CVLmax); + + // SS_Label_Info_6.8.3 #Call fxn get_growth2() to calculate size-at-age + get_growth2(styr); // in preliminary calcs + gp = 0; + for (gg = 1; gg <= gender; gg++) + for (int GPat = 1; GPat <= N_GP; GPat++) + { + gp++; + g = g_Start(gp); // base platoon + for (settle = 1; settle <= N_settle_timings; settle++) + { + g += N_platoon; + echoinput << "sex: " << gg << "; Gpat: " << GPat << " settle: " << settle << "; L-at-Amin: " << Lmin(gp) << "; L at max age: " << Ave_Size(styr, 1, g, nages) << endl; + if (len_bins(1) > Lmin(gp)) + { + warnstream << "Minimum pop size bin:_" << len_bins(1) << "; is > L at Amin for sex: " << gg + << "; Gpat: " << GPat << "; L= " << Lmin(gp); + write_message (WARN, 0); + } + if (Ave_Size(styr, 1, g, nages) > 0.95 * len_bins(nlength)) + { + warnstream << "Maximum pop size bin:_" << len_bins(nlength) << "; is within 5% of L at maxage for sex: " << gg + << "; Gpat: " << GPat << " settle: " << settle << "; L= " << Ave_Size(styr, 1, g, nages); + write_message (WARN, 0); + } + } + } + + for (s = 1; s <= nseas; s++) // get growth here in case needed for Lorenzen + { + t = t_base + s; + for (subseas = 1; subseas <= N_subseas; subseas++) + { + ALK_idx = (s - 1) * N_subseas + subseas; + get_growth3(styr, t, s, subseas); // this will calculate the growth for all subseasons of first year + Make_AgeLength_Key(s, subseas); // ALK_idx calculated within Make_AgeLength_Key + ALK(ALK_idx) = value(ALK(ALK_idx)); + } + } + + // SS_Label_Info_6.8.5 #Call fxn get_wtlen() and get_mat_fec() to calculate weight-at-length and maturity and fecundity vectors + get_wtlen(); + get_mat_fec(); + wt_len = value(wt_len); + wt_len2 = value(wt_len2); + wt_len_fd = value(wt_len_fd); + mat_len = value(mat_len); + mat_fec_len = value(mat_fec_len); + mat_age = value(mat_age); + + // SS_Label_Info_6.8.4 #Call fxn get_natmort() + echoinput << "ready to do natmort " << endl; + get_natmort(); + + s = spawn_seas; + subseas = spawn_subseas; + ALK_idx = (s - 1) * N_subseas + subseas; + + // SS_Label_Info_6.8.6 #Call fxn get_recr_distribution() for distribution of recruitment among areas and seasons, which can be time-varying + echoinput << "do recrdist: " << endl; + get_recr_distribution(); + recr_dist(y) = value(recr_dist(y)); // so the just calculated constant values will be used unless its parms are active + + // SS_Label_Info_6.8.7 #Call fxn get_migration() + if (do_migration > 0) // set up migration rates + { + get_migration(); + migrrate = value(migrrate); + } + + // SS_Label_Info_6.8.8 #Call fxn get_age_age() transition matrix from real age to observed age' + if (N_ageerr > 0) + { + AgeKey_StartAge = 0; + AgeKey_Linear1 = 1; + AgeKey_Linear2 = 1; + for (j = 1; j <= N_ageerr; j++) + { + if (j != Use_AgeKeyZero) + { + age_err(j) = age_err_rd(j); // this is an age err definition that has been read + } + else + { + AgeKey_StartAge = int(value(mgp_adj(AgeKeyParm))); + if (mgp_adj(AgeKeyParm + 3) == 0.0000) + { + AgeKey_Linear1 = 1; + } + else + { + AgeKey_Linear1 = 0; + } + if (mgp_adj(AgeKeyParm + 6) == 0.0000) + { + AgeKey_Linear2 = 1; + } + else + { + AgeKey_Linear2 = 0; + } + } + get_age_age(j, AgeKey_StartAge, AgeKey_Linear1, AgeKey_Linear2); // call function to get the age_age key + } + age_age = value(age_age); // because these are not based on parameters + } + echoinput << " made the age_age' key " << endl; + + if (catch_mult_pointer > 0) + { + get_catch_mult(y, catch_mult_pointer); + for (j = styr; j <= YrMax; j++) // so get this value for all years, but can be overwritten by time-varying + { + catch_mult(j) = catch_mult(y); + } + } + + // SS_Label_Info_6.8.9 #Calculated values have been set equal to value() to remove derivative info and save space if their parameters are held constant + + // SS_Label_Info_6.9 #Set up headers for ParmTrace + if (Do_ParmTrace > 0) + ParmTrace << "Phase Iter ObjFun Change SSB_start SSB_end BiasAdj_st BiasAdj_max BiasAdj_end "; + if (Do_ParmTrace == 1 || Do_ParmTrace == 4) + { + for (i = 1; i <= active_count; i++) + { + ParmTrace << " " << ParmLabel(active_parm(i)); + } + ParmTrace << " Component_like_starts_here "; + } + else if (Do_ParmTrace >= 2) + { + for (i = 1; i <= ParCount; i++) + { + ParmTrace << " " << ParmLabel(i); + } + } + ParmTrace << endl; + + // SS_Label_Info_6.10 #Preliminary calcs done; Ready for estimation + cout << "done" << endl; // evaluating biology calculations once + echoinput << "Finished evaluating biology calculations once" << endl; + + if (pick_report_use(60) == "Y") + { + bodywtout << nages << " # maxage" << endl; + bodywtout << "# if Yr is negative, then fill remaining years for that Seas, growpattern, Bio_Pattern, Fleet" << endl; + bodywtout << "# if season is negative, then fill remaining fleets for that Seas, Bio_Pattern, Sex, Fleet" << endl; + bodywtout << "# will fill through forecast years, so be careful" << endl; + bodywtout << "# fleet 0 contains begin season pop WT" << endl; + bodywtout << "# fleet -1 contains mid season pop WT" << endl; + bodywtout << "# fleet -2 contains maturity*fecundity" << endl; + bodywtout << "#_year seas sex bio_pattern birthseas fleet " << age_vector << endl; + } + + if (Turn_off_phase < 0) + { + cout << "Exit requested after read with phase < 0 " << endl; + N_nudata = 1; + write_nudata(); + cout << "Finished writing data_echo.ss_new" << endl; + write_nucontrol(); + cout << "Finished writing control.ss_new" << endl; + exit(1); + } + + if (noest_flag == 1) + { + cout << endl + << "skip to final section for -noest" << endl; + N_nudata = 1; + } + else + { + echoinput << endl << endl << "Begin estimating" << endl; + } + last_objfun = 1.0e30; + } // end PRELIMINARY_CALCS_SECTION +// SS_Label_file #7. **SS_global.tpl** +// SS_Label_file # -
RUNTIME_SECTION
+// SS_Label_file # +// SS_Label_file # - not used by SS3 +// SS_Label_file # -
TOP_OF_MAIN_SECTION
+// SS_Label_file # +// SS_Label_file # - revise some memory and array constraints +// SS_Label_file # -
GLOBALS_SECTION
+// SS_Label_file # +// SS_Label_file # - open some output files +// SS_Label_file # - create needed adstring_arrays for labels +// SS_Label_file # - create vector_vector arrays that are appended to in readdata +// SS_Label_file # - two functions included here in GLOBALS because need to be used in the DATA_SECTION: +// SS_Label_file # - get_data_timing() and create_timevary() +// SS_Label_file # -
BETWEEN_PHASES_SECTION
+// SS_Label_file # +// SS_Label_file # - for F_method 2, convert F as scaling factors to F as parameters in designated phase +// SS_Label_file # -
FINAL_SECTION
+// SS_Label_file # +// SS_Label_file # - output *covar.sso* +// SS_Label_file # - set save_for_report to 1, then call: setup_recdevs(), get_initial_conditions(), get_time_series(), evaluate_the_objective_function() +// SS_Label_file # +// SS_Label_file # - call benchmark and forecast if not already done in sdphase +// SS_Label_file # - call Process_STDquant() and get_posteriors() +// SS_Label_file # - write other reports using function calls: *cumreport.sso*, *ss_summary.sso*, *ss_rebuild.sso*, *SIS_table.sso* +// SS_Label_file # - call write_big_output() to produce *report.sso* and *compreport.sso* +// SS_Label_file # -
REPORT_SECTION
+// SS_Label_file # +// SS_Label_file # - produces *ss.rep*, but see write_big_output for the more complete *report.sso* +// SS_Label_file # + +// SS_Label_Section_8 #RUNTIME_SECTION (not used in SS3) +RUNTIME_SECTION +// { +// maximum_function_evaluations 200, 200, 200, 200, 200, 200, 200, 2000; +// convergence_criteria 100, 10, 1, 0.1, 1e-4, 1e-4, 1e-4, 1e-4; +// } + +// SS_Label_Section_9 #TOP_OF_MAIN_SECTION +TOP_OF_MAIN_SECTION +// { +// SS_Label_Info_9.1 #Set array and gradient structure space + arrmblsize = 200000000; // 2e8 = about 0.2 GB. +// gradient_structure::set_GRADSTACK_BUFFER_SIZE(672647168); + gradient_structure::set_GRADSTACK_BUFFER_SIZE(20000000); // 2e7 gets multiplied by the gradstack size (usually 48), to reach about 0.9 GB. +// gradstack is not allocated unless needed by the model, but arrmblsize and cmpdif are allocated immediately +// gradient_structure::set_CMPDIF_BUFFER_SIZE(500000000); + gradient_structure::set_CMPDIF_BUFFER_SIZE(200000000); // 2e8 = about 0.2GB + gradient_structure::set_MAX_NVAR_OFFSET(5000); + gradient_structure::set_NUM_DEPENDENT_VARIABLES(10000); + gradient_structure::set_MAX_DLINKS(10000000); + +// SS_Label_Info_9.2 #Set clock start time + time(&start); //this is to see how long it takes to run +// } + +// SS_Label_Section_10. #GLOBALS_SECTION +GLOBALS_SECTION +// { + #include + #include + #include + #include + #include + #include + #define NOTE 1 // information that could be useful + #define SUGGEST 2 // a possible better way + #define PERFORM 3 // can help performance + #define WARN 4 // might be a problem, execution continues anyway + #define ADJUST 5 // adjustment has been made, execution continues + #define FATAL 6 // major problem, program will exit + adstring_array MessageIntro; + #include + #include + + + time_t start, finish; + long hour, minute, second; + double elapsed_time; + +// SS_Label_Info_10.2 #Define some adstring variables + adstring_array ParmLabel; // extendable array to hold the parameter labels + adstring_array Parm_info; // extendable array to hold the parameter labels + adstring_array SzFreq_units_label; + adstring_array SzFreq_scale_label; + adstring_array fleetname; + adstring ssnew_pathname; + adstring sso_pathname; + adstring base_modelname = "ss3"; + adstring fleetnameread; + adstring depletion_basis_label; + adstring F_report_label; + adstring SPR_report_label; + adstring onenum(4); + adstring onenum2(4); + adstring anystring; + adstring anystring2; + adstring report_sso_filename; + adstring MSY_name; // label describing what Do_MSY and MSY_units are being used + + adstring_array version_info; + adstring_array version_info2; + adstring_array Starter_Comments; + adstring_array Data_Comments; + adstring_array Control_Comments; + adstring_array Forecast_Comments; + adstring_array NumLbl; // label for numbers 1 to 199 + adstring_array NumLbl0; // label for numbers 0 to 198 (needed for ages) + adstring_array GenderLbl; // gender label + adstring_array MGtype_Lbl; // label for MGtypes, i.e. Natmort, Growth + adstring_array GP_Lbl; // gender label + adstring_array CRLF; // blank to terminate lines + adstring_array pick_report_name; // name of report + adstring_array pick_report_use; // X if used; 0 if not + +// SS_Label_Info_10.1 #Open output files using ofstream + ofstream warning; // warning.sso - where warnings, notes, etc. are put + ofstream echoinput; // echoes input (for debugging) and includes some comments + ofstream ParmTrace; + ofstream report5; // forecast-report + ofstream report2; // control.ss_new + ofstream bodywtout; + ofstream SS2out; // this is just a create + ofstream SS_compout; // this is just a create + ofstream report1; // for data output files + ofstream covarout; + ofstream rebuilder; + ofstream rebuild_dat; + ofstream posts; + ofstream der_posts; + ofstream post_vecs; + ofstream post_obj_func; + ofstream SS_smry; + ofstream SIS_table; +// declare some entities that need global access + std::stringstream warnstream; + std::string usermsg; + int ParCount; + int timevary_parm_cnt; + int N_warn = 0; // track the number of warnings and adjustments + int N_note = 0; // track the number of suggestions and notes + int styr; + int endyr; + int YrMax; + int nseas; + int Ncycle; + int seas_as_year; + int special_flag = 0; // for whenever a flag is needed + +// SS_Label_Info_10.3 #start random number generator with seed based on time + random_number_generator radm(long(time(&start))); + + std::vector Parm_minmax; + std::vector catch_read; + std::vector Svy_data; + std::vector discdata; + std::vector mnwtdata1; + std::vector lendata; + std::vector Age_Data; + std::vector sizeAge_Data; + std::vector H4010_scale_vec_rd; + std::vector Fcast_InputCatch_list; + std::vector Fcast_Catch_Allocation_list; + std::vector env_temp; + std::vector WTage_in; + std::vector var_adjust_data; + std::vector lambda_change_data; + std::vector timevary_parm_rd; + std::vector timevary_def; + std::vector TwoD_AR_def; + std::vector TwoD_AR_def_rd; + std::vector reportdetail_list; + std::vector Fparm_loc; + std::vector F_Method_4_input; + std::vector F_detail_input; + std::vector Fparm_PH; + std::vector comp_control_L; + std::vector comp_control_A; + std::vector comp_control_Sz; + std::vector fcast_mgparm_ave_rd; + +// function in GLOBALS to do the timing setup in the data section + +// SS_Label_Function_xxxa write_msg(string,int,int,int); output a message. +// options are output the string to echoinput.sso and warning.sso with an option to exit +// SS_Label_Function_xxxa # ### write_msg (string, echoflag, warnflag, exitflag) +// SS_Label_Function_xxxa # +// SS_Label_Function_xxxa # Writes a string to either echoinput.sso or warning.sso +// SS_Label_Function_xxxa # or both. The last option tells it to exit the program +// SS_Label_Function_xxxa # with appropriate output to warning.sso and cout. +// SS_Label_Function_xxxa # + void write_msg(std::string msg, int echo, int warn, int exitflag) + { + std::string totmsg; + if (msg.length() == 0) + { + msg = "unknown message"; + } + + if (echo == 1) + { + echoinput << msg << endl; + } + if (warn > 0) + { + size_t b = msg.find ("parameter", 0); + warning << msg; + if (echo == 1 && (b > 0 && b < msg.size())) + { + warning << "; search for in echoinput.sso for parm_type"; + } + warning << endl; + } + if (exitflag == 1) + { + warning.close(); + echoinput.close(); + cout << msg << endl; + cout << "Also see warning.sso" << endl; + cout << "Exiting SS3! " << endl; + exit(1); + } + } +// SS_Label_Function_xxxb write_message(int,int,int); increment warning count and output a warning with an option to exit (when fatal) +// SS_Label_Function_xxxb # ### write_message (type, echo) +// SS_Label_Function_xxxb # +// SS_Label_Function_xxxb # type is one of the following: +// SS_Label_Function_xxxb # - NOTE : information that could be useful +// SS_Label_Function_xxxb # - SUGGEST : a possible better way +// SS_Label_Function_xxxb # - PERFORM : can help performance +// SS_Label_Function_xxxb # - WARN : might be a problem, execution continues anyway +// SS_Label_Function_xxxb # - ADJUST : adjustment has been made, execution continues +// SS_Label_Function_xxxb # - FATAL : major problem, program will exit +// SS_Label_Function_xxxb # +// SS_Label_Function_xxxb # and echo is either 1 to write to echoinput.sso or 0. +// SS_Label_Function_xxxb # +// SS_Label_Function_xxxb # This writes the text in warnstream and resets it. +// SS_Label_Function_xxxb # + void write_message(int type, int echo) + { + int exitflag = 0; + int warn = 0; + std::string msg(warnstream.str()); + warnstream.str(""); + if (msg.length() == 0) + msg = "unknown condition."; + + switch (type) + { + case NOTE: + case SUGGEST: + case PERFORM: + N_note++; + warn = N_note; + warnstream << "Note " << N_note; + break; + case FATAL: + exitflag = 1; + [[fallthrough]]; + case ADJUST: + case WARN: + N_warn++; + warn = N_warn; + warnstream << "Warning " << N_warn; + break; + } + warnstream << MessageIntro(type) << msg; + write_msg(warnstream.str(), echo, warn, exitflag); + warnstream.str(""); + } + +// SS_Label_Function_xxxx #get_data_timing() called by readdata + void get_data_timing(const dvector& to_process, const ivector& timing_constants, ivector i_result, dvector r_result, const dvector& seasdur, const dvector& subseasdur_delta, const dvector& azero_seas, const dvector& surveytime) + { + // r_result(1,3) will contain: real_month, data_timing_seas, data_timing_yr, + // i_result(1,6) will contain y, t, s, f, ALK_time, use_midseas + int f, s, subseas, y; + double temp, temp1, month, data_timing_seas; + // timing_constants(1)=read_seas_mo; + // timing_constants(2)=nseas; + // timing_constants(3)=N_subseas; + // timing_constants(4)=mid_subseas; + // timing_constants(5)=styr; + // timing_constants(6)-endyr; + + y = int(to_process(1)); + month = fabs(to_process(2)); + f = abs(int(to_process(3))); + if (timing_constants(1) == 1) // reading season + { + s = int(month); + subseas = timing_constants(4); // mid subseas + if (surveytime(f) >= 0.) + { // fraction of season + data_timing_seas = surveytime(f); + i_result(6) = 1; + } + else + { // for fishing fleets; use midseason and fishery catch + data_timing_seas = 0.5; + i_result(6) = -1; // flag to use season-long fishery catch as the sample + } + month = 1.0 + azero_seas(s) * 12. + 12. * data_timing_seas * seasdur(s); + } + else // reading month.fraction + { + if (surveytime(f) < 0) // so a fishing fleet + { + if (month > 999) + { // override to allow a fishing fleet to have explicit timing + month -= 1000.; + i_result(6) = 1; + } + else + { + i_result(6) = -1; // flag to use season-long fishery catch as the sample + } + } + else + { + i_result(6) = 1; // explicit timing for all survey fleet obs + if (month > 999) + { // override to allow a fishing fleet to have explicit timing + month -= 1000.; + } + } + + if (seas_as_year == 0) + { + if (month >= 13.0) + { + warnstream << "month must be <13.0, end of year is 12.99, value read is: " << month; + write_message(FATAL, 0); + } + temp1 = max(0.00001, (month - 1.0) / 12.); // month as fraction of year + s = 1; // earlist possible seas; + subseas = 1; // earliest possible subseas in seas + temp = subseasdur_delta(s); // starting value + while (temp <= temp1 + 1.0e-9) + { + if (subseas == timing_constants(3)) + { + s++; + subseas = 1; + } + else + { + subseas++; + } + temp += subseasdur_delta(s); + } + data_timing_seas = (temp1 - azero_seas(s)) / seasdur(s); // remainder converted to fraction of season (and multiplied by seasdur when used) + } + else + { + temp1 = 0.5; + month = 0.5 * seasdur(1) * 12.; + s = 1; + subseas = timing_constants(4); + data_timing_seas = 0.5; + } + } + + // i_result(1,6) will contain y, t, s, f, ALK_time, use_midseas + // r_result(1,3) will contain: real_month, data_timing_seas*use_midseas, data_timing_yr, + // t=styr+(y-styr)*nseas+s-1; + // ALK_time=(yr-styr)*nseas*N_subseas+(s-1)*N_subseas+subseas; + i_result(1) = y; + i_result(2) = timing_constants(5) + (y - timing_constants(5)) * timing_constants(2) + s - 1; // t + i_result(3) = s; + i_result(4) = f; + + if (seas_as_year == 0) + { + if (i_result(6) >= 0) + { + i_result(5) = (y - timing_constants(5)) * timing_constants(2) * timing_constants(3) + (s - 1) * timing_constants(3) + subseas; // ALK_time + // r_result(1,3) : real_month, data_timing_seas, data_timing_yr, + r_result(1) = month; + r_result(2) = data_timing_seas * i_result(6); + r_result(3) = float(y) + (month - 1.) / 12.; // year.fraction + } + else // assign to midseason + { + i_result(5) = (y - timing_constants(5)) * timing_constants(2) * timing_constants(3) + (s - 1) * timing_constants(3) + timing_constants(4); // ALK_time + data_timing_seas = 0.5; + month = 1.0 + azero_seas(s) * 12. + 12. * data_timing_seas * seasdur(s); + r_result(1) = month; + r_result(2) = data_timing_seas * i_result(6); + r_result(3) = float(y) + (month - 1.) / 12.; // year.fraction + } + } + else + { + i_result(5) = (y - timing_constants(5)) * timing_constants(2) * timing_constants(3) + (s - 1) * timing_constants(3) + timing_constants(4); // ALK_time + r_result(1) = month; + r_result(2) = data_timing_seas * i_result(6); + r_result(3) = float(y) + 0.5; // year.fraction + } + return; + } + +// SS_Label_Function_xxxx #create_timevary() called by readdata to create timevary parameters + /* + where: + baseparm_list: vector with the base parameter which has some type of timevary characteristic + timevary_setup: vector which contains specs of all types of timevary for this base parameter + will be pushed to timevary_def cumulative across all types of base parameters + timevary_byyear: vector containing column(timevary_MG,mgp_type(j)), will be modified in create_timevary + autogen_timevary: switch to autogenerate or not + targettype: integer with type of MGparm being worked on; analogous to 2*fleet in the selectivity section + block_design_pass: block design, if any, being used + env_data_pass: matrix containing entire set of environmental data as read + N_parm_dev: integer that is incremented in create_timevary as dev vectors are created; cumulative across all types of parameters + finish_starter: End of starter file value + */ + void create_timevary(dvector& baseparm_list, ivector& timevary_setup, + ivector& timevary_byyear, int& autogen_timevary, const int& targettype, + const ivector& block_design_pass, const dvector& env_data_pass, + int& N_parm_dev, const double& finish_starter) + { + // where timevary_byyear is a selected column of a year x type matrix (e.g. timevary_MG) in read_control + // timevary_setup(1)=baseparm type; + // timevary_setup(2)=baseparm index; + // timevary_setup(3)=first timevary parm + // timevary_setup(4)=block or trend type + // timevary_setup(5)=block pattern + // timevary_setup(6)=env link type + // timevary_setup(7)=env variable + // timevary_setup(8)=dev vector used + // timevary_setup(9)=dev link type + // timevary_setup(10)=dev min year + // timevary_setup(11)=dev maxyear + // timevary_setup(12)=dev phase + // timevary_setup(13)=all parm index of baseparm + // timevary_setup(14)=continue_last dev + echoinput << "baseparm: " << baseparm_list << endl; + int j; + int g; + int y; + int a; // int f; + int k; + int z; + int Nblocks; + j = timevary_setup(13); // index of base in all parameters to get correct baseparm label + if (baseparm_list(13) != 0) // blocks or trends + { + z = baseparm_list(13); // specified block or trend definition + timevary_setup(4) = z; // block or trend type + timevary_setup(5) = baseparm_list(14); // block pattern + if (z > 0) // blocks with z as the block pattern + { + Nblocks = 0.5 * (block_design_pass.size()); + k = int(baseparm_list(14)); // block method + echoinput << "block pattern: " << z << " method " << k << " Nblocks: " << Nblocks << endl; + + g = 1; // index to list of years in block design; will increment by 2 for begin-end of block + for (a = 1; a <= Nblocks; a++) // loop blocks for block pattern z + { + timevary_parm_cnt++; + ParCount++; + echoinput << " create parm for block " << a << endl; + y = block_design_pass(g); + timevary_byyear(y) = 1; + sprintf(onenum, "%d", y); + + echoinput << " block method " << k << endl; + switch (k) + { + case 0: + { + ParmLabel += ParmLabel(j) + "_BLK" + NumLbl(z) + "mult_" + onenum + CRLF(1); + dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + echoinput << "read timevary block parameter: " << tempvec << endl; + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + tempvec.fill("{-10,10,0.,0.,5,6,4}"); + if (baseparm_list(1) <= 0.0) + { + warnstream << "cannot use multiplicative blocks for parameter with a negative lower bound; exit " << endl + << baseparm_list(1) << " " << baseparm_list(2) << " " << baseparm_list(3) << endl; + write_message(FATAL, 0); + } + tempvec(1) = log(baseparm_list(1) / baseparm_list(3)); // max negative change + tempvec(2) = log(baseparm_list(2) / baseparm_list(3)); // max positive change + // tempvec(5)=0.5*fmin(fabs(tempvec(1)),tempvec(2)); // sd of normal prior + tempvec(5) = (tempvec(2) - tempvec(1)) / 4.; // range/4 to approx sd of normal prior + echoinput << " autogen mult block: " << tempvec << endl; + } + timevary_parm_rd.push_back(tempvec); + break; + } + case 1: + { + ParmLabel += ParmLabel(j) + "_BLK" + NumLbl(z) + "add_" + onenum + CRLF(1); + dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + echoinput << "read timevary block parameter: " << tempvec << endl; + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + tempvec.fill("{-10,10,0.,0.,5,6,4}"); + tempvec(1) = baseparm_list(1) - baseparm_list(3); // max negative change + tempvec(2) = baseparm_list(2) - baseparm_list(3); // max positive change + tempvec(5) = (tempvec(2) - tempvec(1)) / 4.; // range/4 to approx sd of normal prior + echoinput << " autogen additive block: " << tempvec << endl; + } + timevary_parm_rd.push_back(tempvec); + break; + } + case 2: + { + ParmLabel += ParmLabel(j) + "_BLK" + NumLbl(z) + "repl_" + onenum + CRLF(1); + dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + echoinput << "read timevary block parameter: " << tempvec << endl; + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + for (int s = 1; s <= 7; s++) + tempvec(s) = baseparm_list(s); + if (finish_starter == 999) + { + double temp; + temp = tempvec(5); + tempvec(5) = tempvec(6); + tempvec(6) = temp; + } + echoinput << "autogen block replace: " << tempvec << endl; + } + timevary_parm_rd.push_back(tempvec); + break; + } + case 3: + { + ParmLabel += ParmLabel(j) + "_BLK" + NumLbl(z) + "delta_" + onenum + CRLF(1); + dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + echoinput << " read timevary block parm: " << tempvec << endl; + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + tempvec.fill("{-10,10,0.,0.,5,6,4}"); + tempvec(1) = baseparm_list(1) - baseparm_list(3); // max negative change + tempvec(2) = baseparm_list(2) - baseparm_list(3); // max positive change + tempvec(5) = (tempvec(2) - tempvec(1)) / 4.; // range/4 to approx sd of normal prior + echoinput << " autogen block delta: " << tempvec << endl; + } + timevary_parm_rd.push_back(tempvec); + break; + } + } + y = block_design_pass(g + 1) + 1; // first year after block + if (y <= YrMax) + timevary_byyear(y) = 1; + if (targettype == 7 && timevary_setup(1) == 1) // so doing catch_mult which needs annual values calculated for each year of the block + { + for (int z = block_design_pass(g); z <= y; z++) // where y has end year of block + 1 + { + timevary_byyear(z) = 1; + } + } + g += 2; + } + } + else // (z<0) so invoke a trend + { + echoinput << "trend " << endl; + if (baseparm_list(13) == -1) + { + ParCount++; + ParmLabel += ParmLabel(j) + "_TrendFinal_LogstOffset" + CRLF(1); + ParCount++; + ParmLabel += ParmLabel(j) + "_TrendInfl_LogstOffset" + CRLF(1); + ParCount++; + ParmLabel += ParmLabel(j) + "_TrendWidth_yrs_" + CRLF(1); + for (k = 1; k <= 3; k++) // for the 3 trend parameters + { + timevary_parm_cnt++; + dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + if (k == 1) + { + tempvec.fill("{-4.0,4.0,0.,0.,0.5,6,4}"); + } + if (k == 2) + { + tempvec.fill("{-4.0,4.0,0.,0.,0.5,6,4}"); + } + if (k == 3) + { + tempvec.fill("{1.0,20.0,3.,3.,3.0,6,4}"); + } + } + timevary_parm_rd.push_back(tempvec); + } + } + else if (baseparm_list(13) == -2) + { + ParCount++; + ParmLabel += ParmLabel(j) + "_TrendFinal_direct_" + CRLF(1); + ParCount++; + ParmLabel += ParmLabel(j) + "_TrendInfl_yr_" + CRLF(1); + ParCount++; + ParmLabel += ParmLabel(j) + "_TrendWidth_yr_" + CRLF(1); + for (k = 1; k <= 3; k++) // for the 3 trend parameters + { + timevary_parm_cnt++; + dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + if (k == 1) + { + for (a = 1; a <= 7; a++) + tempvec(a) = baseparm_list(a); + } + if (k == 2) + { + tempvec.fill("{-2.0,2.0,0.,0.,0.5,6,4}"); + tempvec(1) = styr; + tempvec(2) = endyr; + tempvec(3) = (styr + endyr) * 0.5; + tempvec(4) = tempvec(3); + } + if (k == 3) + { + tempvec.fill("{1.0,20.0,3.,3.,3.0,6,4}"); + } + } + timevary_parm_rd.push_back(tempvec); + } + } + else if (baseparm_list(13) == -3) + { + ParCount++; + ParmLabel += ParmLabel(j) + "_TrendFinal_frac_" + CRLF(1); + ParCount++; + ParmLabel += ParmLabel(j) + "_TrendInfl_frac_" + CRLF(1); + ParCount++; + ParmLabel += ParmLabel(j) + "_TrendWidth_yr_" + CRLF(1); + for (k = 1; k <= 3; k++) // for the 3 trend parameters + { + timevary_parm_cnt++; + dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + if (k == 1) + { + tempvec.fill("{0.0001,0.999,0.,0.,0.5,6,4}"); + tempvec(3) = (baseparm_list(3) - baseparm_list(1)) / (baseparm_list(2) - baseparm_list(1)); + tempvec(4) = tempvec(3); + } + if (k == 2) + { + tempvec.fill("{0.0001,0.999,0.5,0.5,0.5,6,4}"); + } + if (k == 3) + { + tempvec.fill("{1.0,20.0,3.,3.,3.,6,4}"); + } + } + timevary_parm_rd.push_back(tempvec); + } + } + else + { + for (int icycle = 1; icycle <= Ncycle; icycle++) + { + ParCount++; + ParmLabel += ParmLabel(j) + "_Cycle_" + NumLbl(icycle) + CRLF(1); + timevary_parm_cnt += 1; // count the cycle parameters + } + } + for (y = styr - 1; y <= YrMax; y++) + { + timevary_byyear(y) = 1; + } // all years need calculation for trends + } + } + + if (baseparm_list(8) != 0) // env effect is used + { + k = timevary_setup(6); + // if(timevary_setup(7)==99) timevary_setup(7)=-1; // for linking to rel_spawn biomass + // if(timevary_setup(7)==98) timevary_setup(7)=-2; // for linking to exp(recdev) + // if(timevary_setup(7)==97) timevary_setup(7)=-3; // for linking to rel_smrybio + // if(timevary_setup(7)==96) timevary_setup(7)=-4; // for linking to rel_smry_num + echoinput << "env link_type: " << k << " env_var: " << timevary_setup(7) << endl; + switch (k) + { + case 1: // multiplicative + { + echoinput << " do env mult for parm: " << j << " " << ParmLabel(j) << endl; + ParCount++; + ParmLabel += ParmLabel(j) + "_ENV_mult"; + timevary_parm_cnt++; + dvector tempvec(1, 7); + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + tempvec.fill("{-10.,10.0,1.0,1.0,0.5,6,4}"); + } + timevary_parm_rd.push_back(tempvec(1, 7)); + break; + } + case 2: // additive + { + echoinput << " do env additive " << endl; + ParCount++; + ParmLabel += ParmLabel(j) + "_ENV_add"; + timevary_parm_cnt++; + dvector tempvec(1, 7); + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + tempvec.fill("{-10.,10.0,1.0,1.0,0.5,6,4}"); + } + timevary_parm_rd.push_back(tempvec(1, 7)); + break; + } + case 3: // additive in logistic space to stay in min-max bounds + { + echoinput << " do env constrained " << endl; + ParCount++; + ParmLabel += ParmLabel(j) + "_ENV_add_constr"; + timevary_parm_cnt++; + dvector tempvec(1, 7); + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + tempvec.fill("{-1.8,1.8,1.0,1.0,0.5,6,4}"); + } + timevary_parm_rd.push_back(tempvec(1, 7)); + break; + } + case 4: // logistic with offset + { + ParCount++; + ParmLabel += ParmLabel(j) + "_ENV_offset"; + timevary_parm_cnt++; + dvector tempvec(1, 7); + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + tempvec.fill("{-0.9,0.9,0.0,0.0,0.5,6,4}"); + } + timevary_parm_rd.push_back(tempvec(1, 7)); + ParCount++; + ParmLabel += ParmLabel(j) + "_ENV_lgst_slope"; + timevary_parm_cnt++; + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + } + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + tempvec.fill("{-0.9,0.9,0.0,0.0,0.5,6,4}"); + } + timevary_parm_rd.push_back(tempvec(1, 7)); + break; + } + } + { + if (timevary_setup(7) > 0) + { + timevary_byyear(env_data_pass(1), env_data_pass(2) + 1) = 1; + } + else if (timevary_setup(7) < 0) // density-dependence being used + { + timevary_byyear(styr, YrMax) = 1; + } + } + } + + if (baseparm_list(9) > 0) // devs are used + { + N_parm_dev++; // count of dev vectors that are used + timevary_setup(8) = N_parm_dev; // specifies which dev vector will be used by a parameter + timevary_setup(9) = baseparm_list(9); // code for dev link type + y = baseparm_list(10); + if (y < styr) + { + warnstream << "reset parm_dev start year to styr for parm: " << j << " " << y; + write_message(ADJUST, 0); + y = styr; + } + timevary_setup(10) = y; + + y = baseparm_list(11); + if (y > YrMax) + { + warnstream << "reset parm_dev end year to YrMax for parm: " << j << " " << y; + write_message(ADJUST, 0); + y = YrMax; + } + timevary_setup(11) = y; + for (y = timevary_setup(10); y <= timevary_setup(11) + 1; y++) + { + timevary_byyear(y) = 1; + } + + ParCount++; + ParmLabel += ParmLabel(j) + "_dev_se" + CRLF(1); + timevary_parm_cnt++; + dvector tempvec(1, 7); + tempvec.initialize(); + if (autogen_timevary >= 1) // read + { + *(ad_comm::global_datafile) >> tempvec(1, 7); + } + timevary_setup(12) = baseparm_list(12); // dev phase + echoinput << "parameter dev vector created with phase set to: " << timevary_setup(12) << endl; + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite + { + tempvec.fill("{0.0001,2.0,0.5,0.5,0.5,6,-5}"); + if (finish_starter == 999) + { + tempvec(3) = baseparm_list(12); // set init to value on the 3.24 format base parameter line + tempvec(4) = baseparm_list(12); // set prior + } + // timevary_setup(12)=-5; // set reasonable phase for devs; + // baseparm_list(12)=-5; + } + timevary_parm_rd.push_back(dvector(tempvec(1, 7))); + + ParCount++; + ParmLabel += ParmLabel(j) + "_dev_autocorr" + CRLF(1); + timevary_parm_cnt++; + dvector tempvec2(1, 7); + tempvec2.initialize(); + if (autogen_timevary >= 1) + { + *(ad_comm::global_datafile) >> tempvec2(1, 7); + } // read + if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec2(1) == -12345)) // create or overwrite + { + tempvec2.fill("{-0.99,0.99,0.0,0.0,0.5,6,-6}"); + } + timevary_parm_rd.push_back(dvector(tempvec2(1, 7))); + echoinput << "dev vec: " << timevary_setup(8) << " with link: " << timevary_setup(9) << " min, max year " << timevary_setup(10, 11) << endl; + } + echoinput << "timevary_setup" << timevary_setup << endl; + return; + } + +// } // end GLOBALS_SECTION + +// SS_Label_Section_11. #BETWEEN_PHASES_SECTION +BETWEEN_PHASES_SECTION + { + int j_phase = current_phase(); // this is the phase to come + + // SS_Label_Info_11.1 #Save last value of objective function + if (j_phase > 1) + { + last_objfun = obj_fun; + } + + // SS_Label_Info_11.2 #For Fmethod=2 & 4, set parameter values (F_rate) equal to Hrate calculated using hybrid method in previous phase + if (N_Fparm > 0 && j_phase > 1) + { + for (g = 1; g <= N_Fparm; g++) + { + f = Fparm_loc[g](1); + t = Fparm_loc[g](2); + if (j_phase == F_PH_time(f, t)) + { + F_rate(g) = Hrate(f, t); + } + } + + if (F_detail > 0) + { + for (k = 1; k <= F_detail; k++) + { + f = F_setup2(k, 1); + y = F_setup2(k, 2); + s = F_setup2(k, 3); + if (y > 0) + { + y1 = y; + y2 = y; + } + else + { + y1 = -y; + y2 = endyr; + } + for (y = y1; y <= y2; y++) + { + t = styr + (y - styr) * nseas + s - 1; + g = do_Fparm_loc(f, t); + if (j_phase == F_setup2(k, 6)) // so code will be bypassed if phase is set negative + { + F_rate(g) = F_setup2(k, 4); + Hrate(f, t) = F_setup2(k, 4); + } + } + } + } + } + + } // end BETWEEN_PHASES_SECTION + +// SS_Label_Section_12. #FINAL_SECTION +FINAL_SECTION + { + // SS_Label_Info_12.1 #Get run ending time + + if (No_Report == 1) + { + cout << "MCMC finished; *.ss_new files and most .sso not written after MCMC or MCEVAL" << endl; + } + + else + { + cout << "Iterations: " << niter << endl; + echoinput << "Iterations: " << niter << endl; + if (objective_function_value::pobjfun->gmax > final_conv) + { + warnstream << "Final gradient: " << objective_function_value::pobjfun->gmax << " is larger than final_conv: " << final_conv; + write_message(WARN, 0); + } + + // SS_Label_Info_12.2 #Output the covariance matrix to covar.sso + anystring = sso_pathname + "covar.sso"; + covarout.open(anystring); + covarout << version_info << endl; + covarout << "start_time: " << ctime(&start) << endl; + covarout << active_parms << " " << CoVar_Count << endl; + covarout << "active-i active-j all-i all-j Par?-i Par?-j label-i label-j corr" << endl; + if (CoVar(1, 1) == 0.00 && CoVar(2, 2) == 0.0) + { + covarout << "Variances are 0.0 for first two elements, so do not write " << endl; + } + else + { + for (i = 1; i <= CoVar_Count; i++) + { + covarout << i << " " << 0 << " " << active_parm(i) << " " << active_parm(i); + if (i <= active_parms) + { + covarout << " Par "; + } + else + { + covarout << " Der "; + } + covarout << " Std " << ParmLabel(active_parm(i)) << " _ " << CoVar(i, 1) << endl; + for (j = 2; j <= i; j++) + { + covarout << i << " " << j - 1 << " " << active_parm(i) << " " << active_parm(j - 1); + if (i <= active_parms) + { + covarout << " Par "; + } + else + { + covarout << " Der "; + } + if ((j - 1) <= active_parms) + { + covarout << " Par "; + } + else + { + covarout << " Der "; + } + covarout << ParmLabel(active_parm(i)) << " " << ParmLabel(active_parm(j - 1)) << " " << CoVar(i, j) << endl; + } + } + if (mceval_phase() == 0) + echoinput << " finished COVAR.SSO" << endl; + } + + // SS_Label_Info_12.3 #Go thru time series calculations again to get extra output quantities + // SS_Label_Info_12.3.2 #Set save_for_report=1 then call initial_conditions and time_series to get other output quantities + if (Do_Dyn_Bzero > 0) // do dynamic Bzero + { + fishery_on_off = 0; + setup_recdevs(); + y = styr; + get_initial_conditions(); + get_time_series(); + if (Do_Forecast > 0) + { + show_MSY = 0; + Get_Forecast(); // First call to forecast + } + k = Do_Dyn_Bzero; + for (j = styr - 2; j <= YrMax; j++) + { + Extra_Std(k) = SSB_yr(j); + k++; + } + if (More_Std_Input(12) == 2) + { + for (j = styr - 2; j <= YrMax; j++) + { + Extra_Std(k) = exp_rec(j, 4); + k++; + } + } + } // end dynamic Bzero + + fishery_on_off = 1; + save_for_report = 1; + bigsaver = 1; + if (SDmode == 0 && pick_report_use(60) == "Y") + write_bodywt = 1; // turn on conditional on SDMode because SDMode=1 situation already written + y = styr; + setup_recdevs(); + get_initial_conditions(); + get_time_series(); // in final_section with save_for_report on + evaluate_the_objective_function(); + // SS_Label_Info_12.3.3 #Do benchmarks and forecast and stdquantities with save_for_report=1 + if (mceval_phase() == 0) + { + show_MSY = 1; + } + else + { + show_MSY = 0; + } // turn on reporting if not in mceval + if (pick_report_use(60) == "Y") + { + write_bodywt = 1; + } // turn on bodywt after time series + setup_Benchmark(); // calculates biology and selectivity to be used + if (Do_Benchmark > 0) + { + if (did_MSY == 0) + { + Get_Benchmarks(show_MSY); + if (mceval_phase() == 0) + { + cout << "Finished calculating benchmarks" << endl; + echoinput << "Finished calculating benchmarks" << endl; + } + } + } + if (Do_Forecast >= 0) + { + report5 << "THIS FORECAST IS FOR PURPOSES OF GETTING DISPLAY QUANTITIES" << endl; + if (did_MSY > 0) + show_MSY = 0; // so to not repeat forecast_report.sso + Get_Forecast(); + if (mceval_phase() == 0) { + cout << "Finished forecast" << endl; + echoinput << "Finished forecast" << endl; + } + } + + if (write_bodywt > 0) + { + cout << "Writing wtatage.ss_new" << endl; + echoinput << "Writing wtatage.ss_new" << endl; + bodywtout << -9999 << " " << 1 << " " << 1 << " " << 1 << " " << 1 << " " << 0 << " " << Wt_Age_mid(1, 1) << " #terminator " << endl; + bodywtout.close(); + } + write_bodywt = 0; + + // SS_Label_Info_12.3.4 #call fxn STDquant() + Process_STDquant(); + if (mceval_phase() == 0) + echoinput << "Finished StdDev quantities" << endl; + get_posteriors(); + if (mceval_phase() == 0) + { + cout << "Finished posteriors" << endl; + echoinput << "Finished posteriors" << endl; + } + + // SS_Label_Info_12.4.2 #Call fxn write_summaryoutput() + if (Do_CumReport > 0) + write_summaryoutput(); + + if (pick_report_use(56) == "Y") + { + write_SS_summary(); + } + + // SS_Label_Info_12.4.3 #Call fxn write_rebuilder_output to produce rebuilder.sso + { + if (pick_report_use(57) == "Y" && Do_Rebuilder == 1 && mceval_counter <= 1) + { + write_rebuilder_output(); + } + + if (pick_report_use(58) == "Y") + { + write_SIStable(); //note: SIStable is deprecated, but file with warning written for now + } + + // SS_Label_Info_12.4 #Do Outputs + // SS_Label_Info_12.4.1 #Call fxn write_bigoutput() + write_bigoutput(); + cout << "Finished final writing of report.sso" << endl; + echoinput << "Finished final writing of report.sso" << endl; + } + // SS_Label_Info_12.4.4 #Call fxn write_nudata() to create bootstrap data + if (N_nudata > 0) + { + cout << "Begin writing *.ss_new output files ... "; + write_nudata(); + // SS_Label_Info_12.4.5 #Call fxn write_nucontrol() to produce control.ss_new + write_nucontrol(); + cout << "Finished writing *.ss_new output files" << endl; + } + else + { + { + warnstream << "No *.ss_new and fewer *.sso files written after mceval"; + write_message(NOTE, 0); + } + } + + echoinput << "Begin final output calculations and warnings" << endl; + // SS_Label_Info_12.4.6 #Call fxn write_Bzero_output() appended to report.sso + if (pick_report_use(59) == "Y") + { + write_Bzero_output(); + } + + if (pick_report_use(54) == "Y" && Do_Benchmark > 0) + { + setup_Benchmark(); + SPR_profile(); + } + + if (pick_report_use(55) == "Y" && Do_Benchmark > 0) + { + Global_MSY(); + } + + if (parm_adjust_method == 3) + { + warnstream << "Time-vary parms not bound checked"; + write_message(WARN, 0); + } + + // SS_Label_Info_12.4.7 #Finish up with final writes to warning.sso + if (N_changed_lambdas > 0) + { + warnstream << "Reminder: Number of lambdas !=0.0 and !=1.0: " << N_changed_lambdas; + write_message(WARN, 0); + } + + if (Nparm_on_bound > 0) + { + warnstream << " N parameters that are on or within 1% of min-max bound: " << Nparm_on_bound; + cout << endl << warnstream.str() << endl; + warnstream << "; check results, variance may be suspect"; + write_message (NOTE, 0); + } + if (N_warn > 0) + { + warnstream << " " << N_warn << " warning" << (N_warn > 1? "s ": " "); + if (N_note > 0) + { + warnstream << " and " << N_note << " note" << (N_note > 1? "s ": " "); + } + } + else if (N_note > 0) + { + warnstream << " " << N_note << " note" << (N_note > 1? "s ": " "); + } + warning << warnstream.str() << endl; + + cout << endl + << "!! Run has completed !! " << endl; + if (N_warn + N_note > 0) + { + cout << "!! See warning.sso for" << warnstream.str() << endl; + } + else + { + cout << "-- No warnings or notes :) --" << endl; + } + } + } // end final section + +// SS_Label_Section_13. #REPORT_SECTION produces SS3.rep,which is less extensive than report.sso produced in final section +REPORT_SECTION + { + int k = gradients.size(); + int k1 = parm_gradients.size(); + if (k1 < k) + k = k1; + for (int i = 1; i <= k; i++) + parm_gradients(i) = gradients(i); + if (current_phase() >= max_phase && finished_minimize == 0) + finished_minimize = 1; // because REPORT occurs after minimize finished + // SS_Label_Info_13.1 #Write limited output to SS.rep + if (reportdetail > 0) + { + if (Svy_N > 0) + report << " CPUE " << surv_like << endl; + if (nobs_disc > 0) + report << " Disc " << disc_like << endl; + if (nobs_mnwt > 0) + report << " MnWt " << mnwt_like << endl; + if (Nobs_l_tot > 0) + report << " LEN " << length_like_tot << endl; + if (Nobs_a_tot > 0) + report << " AGE " << age_like_tot << endl; + if (nobs_ms_tot > 0) + report << " L-at-A " << sizeage_like << endl; + report << " EQUL " << equ_catch_like << endl; + report << " Recr " << recr_like << endl; + report << " Parm " << parm_like << endl; + report << " F_ballpark " << F_ballpark_like << endl; + if (F_Method > 1) + { + report << "Catch " << catch_like << endl; + } + else + { + report << " crash " << CrashPen << endl; + } + if (SzFreq_Nmeth > 0) + report << " sizefreq " << SzFreq_like << endl; + if (Do_TG > 0) + report << " TG-fleetcomp " << TG_like1 << endl + << " TG-negbin " << TG_like2 << endl; + report << " -log(L): " << obj_fun << " SSBio: " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)) << endl; + + report << endl + << "Year SSBio Recruitment" << endl; + report << "Virg " << SSB_yr(styr - 2) << " " << exp_rec(styr - 2, 4) << endl; + report << "Init " << SSB_yr(styr - 1) << " " << exp_rec(styr - 1, 4) << endl; + for (y = styr; y <= endyr; y++) + report << y << " " << SSB_yr(y) << " " << exp_rec(y, 4) << endl; + + report << endl + << "EXPLOITATION F_Method: "; + if (F_Method == 1) + { + report << " Pope's_approx "; + } + else + { + report << " instantaneous_annual_F "; + } + report << endl + << "X Catch_Units "; + for (f = 1; f <= Nfleet; f++) + if (catchunits(f) == 1) + { + report << " Bio "; + } + else + { + report << " Num "; + } + report << endl + << "Yr Seas"; + for (f = 1; f <= Nfleet; f++) + report << " " << f; + report << endl + << "init_yr 1 "; + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) + { + if (init_F_loc(s, f) > 0) + { + report << " " << init_F(init_F_loc(s, f)); + } + else + { + report << " NA "; + } + } + report << endl; + for (y = styr; y <= endyr; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + report << y << " " << s << " " << column(Hrate, t) << endl; + } + + report << endl + << "LEN_SELEX" << endl; + report << "Fleet Sex " << len_bins_m << endl; + for (f = 1; f <= Nfleet; f++) + { + if (seltype(f, 1) > 0) + { + for (gg = 1; gg <= gender; gg++) + report << f << "-" << fleetname(f) << gg << " " << sel_l(endyr, f, gg) << endl; + } + } + + report << endl + << "AGE_SELEX" << endl; + report << "Fleet Sex " << age_vector << endl; + for (f = 1; f <= Nfleet; f++) + { + if (seltype(f + Nfleet, 1) > 10) + { + for (gg = 1; gg <= gender; gg++) + report << f << "-" << fleetname(f) << " " << gg << " " << sel_a(endyr, f, gg) << endl; + } + } + } + + // SS_Label_Info_13.2 #Call fxn write_bigoutput() as last_phase finishes and before doing Hessian + if (last_phase() && SDmode == 1) + { + if (pick_report_use(60) == "Y") + { + write_bodywt = 1; + } + save_for_report = 1; + y = styr; + setup_recdevs(); + get_initial_conditions(); + get_time_series(); // in ADMB's report_section + evaluate_the_objective_function(); + write_bigoutput(); + echoinput << "Wrote first version of output files (before hessian, benchmark, and forecast)" << endl; + cout << "Wrote first version of output files (before hessian, benchmark, and forecast)" << endl; + save_for_report = 0; + write_bodywt = 0; + // SS2out.close(); + } + } // end standard report section +// SS_Label_file #8. **SS_proced.tpl** +// SS_Label_file # -
PROCEDURE_SECTION
+// SS_Label_file # +// SS_Label_file # - do iterations under control of ADMB, in each iteration, call: setup_recdevs(), get_initial_conditions(), get_time_series(), evaluate_the_objective_function() +// SS_Label_file # - writes to *parmtrace.sso* +// SS_Label_file # - calls get_posteriors() // to write to *posteriors.sso* +// SS_Label_file # - upon reaching convergence, or if in mceval, do Dynamic_Bzero by calling those functions again with fishery_on_off=0 +// SS_Label_file # +// SS_Label_file # - call setup_Benchmark(), Get_Benchmark(), Get_Forecast() + +// **************************************************************************************************************** +// SS_Label_Section_7.0 #PROCEDURE_SECTION +PROCEDURE_SECTION + { + Mgmt_quant.initialize(); + Extra_Std.initialize(); + CrashPen.initialize(); + Smry_Table.initialize(); + niter++; + if (mceval_phase()) + mceval_counter++; // increment the counter + + if (initial_params::mc_phase == 1) // in MCMC phase + { + if (mcmc_counter == 0) + { + SRparm(1) += MCMC_bump; + cout << mcmc_counter << " adjusted SRparm in first mcmc call " << SRparm(1) << " by " << MCMC_bump << endl; + } + + mcmc_counter++; + } + + if (mcmcFlag == 1) // so will do mcmc this run or is in mceval + { + if (Do_ParmTrace == 1) + Do_ParmTrace = 4; // to get all iterations + if (Do_ParmTrace == 2) + Do_ParmTrace = 3; // to get all iterations + if (mcmc_counter > 10 || mceval_counter > 10) + Do_ParmTrace = 0; + } + + // SS_Label_Info_7.3 #get Hrate from the parameter vector F_rate + // note that in SS_global BETWEEN_PHASES is where F_rate, which is the parameter, gets assigned a starting value Hrate from Hrate calculated by hybrid in previous PH + // be careful about phases for when this mapping occurs for a whole fleet, versus estimation phase which can be value specific + if (N_Fparm > 0) + { + for (g = 1; g <= N_Fparm; g++) + { + f = Fparm_loc[g](1); + t = Fparm_loc[g](2); + if (current_phase() >= F_PH_time(f, t)) + { + Hrate(f, t) = F_rate(g); + } + } + } + + // SS_Label_Info_7.4 #Do the time series calculations + if (mceval_counter == 0 || (mceval_counter > burn_intvl && ((double(mceval_counter) / double(thin_intvl)) - double((mceval_counter / thin_intvl)) == 0))) // check to see if burn in period is over + { + + // create bigsaver to simplfy some condition statements later + if ((save_for_report > 0) || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase == 0))) // (SAVE || ( (SD || EVAL) && (!MCMC) ) ) + { + bigsaver = 1; + } + else + { + bigsaver = 0; + } + setup_recdevs(); + y = styr; + // SS_Label_Info_7.4.1 #Call fxn get_initial_conditions() to get the virgin and initial equilibrium population + get_initial_conditions(); + if (do_once == 1) + echoinput << "Finished initial_conditions" << endl; + // SS_Label_Info_7.4.2 #Call fxn get_time_series() to do population calculations for each year and get expected values for observations + get_time_series(); // in procedure_section + if (do_once == 1) + { + echoinput << "Finished time_series" << endl; + } + + // SS_Label_Info_7.4.3 #Call fxn evaluate_the_objective_function() + evaluate_the_objective_function(); + + // SS_Label_Info_7.6 #If sdphase or mcevalphase, do benchmarks and forecast and derived quantities + if ((sd_phase() || mceval_phase()) && (initial_params::mc_phase == 0)) + { + + // SS_Label_Info_7.6.1 #Call fxn Get_Benchmarks() + if (Do_Benchmark > 0) + { + did_MSY = 0; // so that benchmarks will get calculated here + setup_Benchmark(); + Get_Benchmarks(show_MSY); + } + did_MSY = 1; // set flag to not calculate the benchmarks again in final section + + if (Do_Dyn_Bzero > 0) // do dynamic Bzero + { + fishery_on_off = 0; + setup_recdevs(); + y = styr; + get_initial_conditions(); + get_time_series(); + if (Do_Forecast > 0) + { + show_MSY = 0; + Get_Forecast(); + } + k = Do_Dyn_Bzero; + for (j = styr - 2; j <= YrMax; j++) + { + Extra_Std(k) = SSB_yr(j); + k++; + } + if (More_Std_Input(12) == 2) + { + for (j = styr - 2; j <= YrMax; j++) + { + Extra_Std(k) = exp_rec(j, 4); + k++; + } + } + } // end dynamic Bzero calculations, will write after big report + + fishery_on_off = 1; + if (mceval_phase() > 0) + save_for_report = 1; + if (mceval_phase() == 0) + { + show_MSY = 1; + } // so only show details if not in mceval + if (show_MSY == 1) + { + echoinput << "Start benchmark and forecast, if requested" << endl; + } + setup_recdevs(); + y = styr; + get_initial_conditions(); + get_time_series(); // in write_big_report + evaluate_the_objective_function(); + if (Do_Benchmark > 0) + { + setup_Benchmark(); + Get_Benchmarks(show_MSY); + } + + // SS_Label_Info_7.6.2 #Call fxn Get_Forecast() + if (Do_Forecast > 0) + { + if (show_MSY == 1) + report5 << "THIS FORECAST FOR PURPOSES OF STD REPORTING" << endl; // controls writing to forecast-report.sso + Get_Forecast(); + } + + // SS_Label_Info_7.7 #Call fxn Process_STDquant() to move calculated values into sd_containers + Process_STDquant(); + if (mceval_phase() == 0) + { + echoinput << "Finished benchmark, forecast, and sdreporting" << endl; + } + } // end of things to do in std_phase + + // SS_Label_Info_7.9 #Do screen output of procedure results from this iteration + if (current_phase() <= max_phase + 1) + phase_output(current_phase()) = value(obj_fun); + if (rundetail > 1) + { + if (Svy_N > 0) + cout << " CPUE " << surv_like << endl; + if (nobs_disc > 0) + cout << " Disc " << disc_like << endl; + if (nobs_mnwt > 0) + cout << " MnWt " << mnwt_like << endl; + if (Nobs_l_tot > 0) + cout << " Length " << length_like_tot << endl; + if (Nobs_a_tot > 0) + cout << " AGE " << age_like_tot << endl; + if (nobs_ms_tot > 0) + cout << " L-at-A " << sizeage_like << endl; + if (SzFreq_Nmeth > 0) + cout << " sizefreq " << SzFreq_like << endl; + if (Do_TG > 0) + cout << " TG-fleetcomp " << TG_like1 << endl + << " TG-negbin " << TG_like2 << endl; + cout << " Recr " << recr_like << " sum_recdev: " << sum_recdev << endl; + cout << " InitEQ_Regime " << regime_like << endl; + cout << " Parm_Priors " << parm_like << endl; + cout << " Parm_devs " << parm_dev_like << endl; + cout << " SoftBound " << SoftBoundPen << endl; + cout << " F_ballpark " << F_ballpark_like << endl; + if (F_Method > 1) + { + cout << "Catch " << sum(catch_like) << endl; + } + cout << " EQUL_catch " << sum(equ_catch_like) << endl; + cout << " crash " << CrashPen << endl; + } + if (rundetail > 0) + { + temp = norm2(recdev(recdev_start, recdev_end)); + temp = sqrt((temp + 0.0000001) / (double(recdev_end - recdev_start + 1))); + if (mcmc_counter == 0 && mceval_counter == 0) + { + cout << current_phase() << " " << niter << " -log(L): " << obj_fun << " SSBio: " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)); + } + else if (mcmc_counter > 0) + { + cout << " MCMC: " << mcmc_counter << " -log(L): " << obj_fun << " SSBio: " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)); + } + else if (mceval_counter > 0) + { + cout << " MCeval: " << mceval_counter << " -log(L): " << obj_fun << " SSBio: " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)); + } + if (F_Method > 1 && sum(catch_like) > 0.01) + { + cout << " cat " << sum(catch_like); + } + else if (CrashPen > 0.01) + { + cout << " crash " << CrashPen; + } + cout << endl; + } + // SS_Label_Info_7.10 #Write parameter values to ParmTrace + if ((Do_ParmTrace == 1 && obj_fun <= last_objfun) || Do_ParmTrace == 4) // only report active parameters + { + ParmTrace << current_phase(); + if (sd_phase()) + { + ParmTrace << "_sd"; + finished_minimize = 3; + } // so flag is no longer==2 + if (finished_minimize == 2) + ParmTrace << "_hs"; // each Hessian calculation takes 4 calls, all will get this flag, so output processor needs to create a 1-4 counter + if (finished_minimize == 1) + finished_minimize = 2; // this prevents _hs flag for the one iteration that occurs after minimizer ends and before first tweak of Hessian + if (mceval_phase()) + ParmTrace << "_mc"; + + ParmTrace << " " << niter << " "; + ParmTrace.precision(10); + ParmTrace << obj_fun << " " << obj_fun - last_objfun << " " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)); + ParmTrace.precision(2); + ParmTrace << " " << biasadj(styr) << " " << max(biasadj) << " " << biasadj(endyr); + ParmTrace.precision(7); + for (j = 1; j <= MGparm_PH.indexmax(); j++) + { + if (MGparm_PH(j) >= 0) + { + ParmTrace << " " << MGparm(j); + } + } + for (j = 1; j <= SRparm_PH.indexmax(); j++) + { + if (SRparm_PH(j) >= 0) + { + ParmTrace << " " << SRparm(j); + } + } + if (recdev_cycle > 0) + { + for (j = 1; j <= recdev_cycle; j++) + { + if (recdev_cycle_PH(j) >= 0) + { + ParmTrace << " " << recdev_cycle_parm(j); + } + } + } + if (recdev_early_PH > 0) + { + ParmTrace << " " << recdev_early; + } + if (recdev_PH > 0) + { + if (do_recdev == 1) + { + ParmTrace << " " << recdev1; + } + if (do_recdev >= 2) + { + ParmTrace << " " << recdev2; + } + } + if (Fcast_recr_PH2 > 0 && Do_Forecast > 0) + { + ParmTrace << Fcast_recruitments << " "; + if (Do_Impl_Error > 0) + ParmTrace << Fcast_impl_error << " "; + } + + for (f = 1; f <= N_init_F; f++) + { + if (init_F_PH(f) > 0) + { + ParmTrace << " " << init_F(f); + } + } + if (N_Fparm > 0) // continuous F + { + for (k = 1; k <= N_Fparm; k++) + { + if (Fparm_PH[k] > 0) + { + ParmTrace << " " << F_rate(k); + } + } + } + + for (f = 1; f <= Q_Npar2; f++) + { + if (Q_parm_PH(f) > 0) + { + ParmTrace << " " << Q_parm(f); + } + } + for (k = 1; k <= selparm_PH.indexmax(); k++) + { + if (selparm_PH(k) > 0) + { + ParmTrace << " " << selparm(k); + } + } + for (k = 1; k <= TG_parm_PH.indexmax(); k++) + { + if (TG_parm_PH(k) > 0) + { + ParmTrace << " " << TG_parm(k); + } + } + if (N_parm_dev > 0) + { + for (j = 1; j <= N_parm_dev; j++) + { + if (parm_dev_PH(j) > 0) + ParmTrace << parm_dev(j) << " "; + } + } + ParmTrace.precision(10); + k = min(current_phase(), max_lambda_phase); + if (F_Method > 1) + ParmTrace << " Catch " << catch_like * column(catch_lambda, k); + if (N_init_F > 0) + ParmTrace << " Equil_catch " << equ_catch_like * column(init_equ_lambda, k); + if (Svy_N > 0) + ParmTrace << " Survey " << k << " " << surv_like * column(surv_lambda, k) << " " << elem_prod(surv_like, column(surv_lambda, k)); + if (nobs_disc > 0) + ParmTrace << " Discard " << disc_like * column(disc_lambda, k) << " " << elem_prod(disc_like, column(disc_lambda, k)); + if (nobs_mnwt > 0) + ParmTrace << " Mean_body_wt " << mnwt_like * column(mnwt_lambda, k) << " " << elem_prod(mnwt_like, column(mnwt_lambda, k)); + if (Nobs_l_tot > 0) + ParmTrace << " Length " << length_like_tot * column(length_lambda, k) << " " << elem_prod(length_like_tot, column(length_lambda, k)); + if (Nobs_a_tot > 0) + ParmTrace << " Age " << age_like_tot * column(age_lambda, k) << " " << elem_prod(age_like_tot, column(age_lambda, k)); + if (nobs_ms_tot > 0) + ParmTrace << " Size_at_age " << sizeage_like * column(sizeage_lambda, k) << " " << elem_prod(sizeage_like, column(sizeage_lambda, k)); + if (SzFreq_Nmeth > 0) + ParmTrace << " SizeFreq " << SzFreq_like * column(SzFreq_lambda, k) << " " << elem_prod(SzFreq_like, column(SzFreq_lambda, k)); + if (Do_Morphcomp > 0) + ParmTrace << " Morph " << Morphcomp_lambda(k) * Morphcomp_like; + if (Do_TG > 0) + ParmTrace << " Tag_comp " << TG_like1 * column(TG_lambda1, k) << " " << elem_prod(TG_like1, column(TG_lambda1, k)); + if (Do_TG > 0) + ParmTrace << " Tag_negbin " << TG_like2 * column(TG_lambda2, k) << " " << elem_prod(TG_like2, column(TG_lambda2, k)); + ParmTrace << " Recr_dev " << recr_like * recrdev_lambda(k); + ParmTrace << " Regime " << regime_like * regime_lambda(k); + ParmTrace << " Fore_Recdev " << Fcast_recr_like; + ParmTrace << " Parm_priors " << parm_like * parm_prior_lambda(k); + if (SoftBound > 0) + ParmTrace << " Softbounds " << SoftBoundPen; + if (N_parm_dev > 0) + ParmTrace << " Parm_devs " << (sum(parm_dev_like)) * parm_dev_lambda(k); + if (F_ballpark_yr > 0) + ParmTrace << " F_Ballpark " << F_ballpark_lambda(k) * F_ballpark_like; + ParmTrace << endl; + } + else if ((Do_ParmTrace == 2 && obj_fun <= last_objfun) || Do_ParmTrace == 3) // report active and inactive parameters + { + ParmTrace << current_phase() << " " << niter << " " << obj_fun << " " << obj_fun - last_objfun + << " " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)) << " " << biasadj(styr) << " " << max(biasadj) << " " << biasadj(endyr); + ParmTrace << " " << MGparm << " "; + ParmTrace << SRparm << " "; + if (recdev_cycle > 0) + ParmTrace << recdev_cycle_parm; + if (recdev_do_early > 0) + ParmTrace << recdev_early << " "; + if (do_recdev == 1) + { + ParmTrace << recdev1 << " "; + } + if (do_recdev >= 2) + { + ParmTrace << recdev2 << " "; + } + if (Do_Forecast > 0) + ParmTrace << Fcast_recruitments << " "; + if (Do_Impl_Error > 0) + ParmTrace << Fcast_impl_error << " "; + if (N_init_F > 0) + ParmTrace << init_F << " "; + if (N_Fparm > 0) + ParmTrace << F_rate << " "; + if (Q_Npar > 0) + ParmTrace << Q_parm << " "; + ParmTrace << selparm << " "; + if (Do_TG > 0) + ParmTrace << TG_parm << " "; + if (N_parm_dev > 0) + { + for (j = 1; j <= N_parm_dev; j++) + { + ParmTrace << parm_dev(j); + } + } + ParmTrace << endl; + } + if (obj_fun <= last_objfun) + last_objfun = obj_fun; + docheckup = 0; // turn off reporting to checkup.sso + // SS_Label_Info_7.11 #Call fxn get_posteriors if in mceval_phase + if (mceval_phase()) + { + get_posteriors(); + + //SS_Label_Info_7.12 #write report_mce_XXXX.sso and compreport_mce_XXXX.sso for each MCEVAL + // warning<= 2) + { + write_bodywt = 0; + pick_report_use(54) = 0; + pick_report_use(55) = 0; + save_for_report = 1; + write_bigoutput(); + if (Do_Dyn_Bzero > 0) + write_Bzero_output(); + save_for_report = 0; + write_bodywt = 0; + } + } + } // end doing of the calculations + if (mceval_phase() || initial_params::mc_phase == 1) + { + No_Report = 1; // flag to skip output reports after MCMC and McEVAL + } + } +// SS_Label_Info_7.13 #End of PROCEDURE_SECTION + +// SS_Label_file #9. **SS_biofxn.tpl** +// SS_Label_file # * get_MGsetup() // get parameter values for this year +// SS_Label_file # * get_growth1() // prep growth quantities +// SS_Label_file # * get_growth2() // growth to beginning of each season of upcoming year +// SS_Label_file # * get_growth3() // growth to particular time point in a season +// SS_Label_file # * get_natmort() +// SS_Label_file # * get_recr_distribution() +// SS_Label_file # * get_wtlen() +// SS_Label_file # * get_mat_fec() +// SS_Label_file # * get_Hermaphro() +// SS_Label_file # * get_migration() +// SS_Label_file # * get_saveGparm() +// SS_Label_file # * + +//********************************************************************* + /* SS_Label_Function_14 #Get_MGsetup: apply time-varying factors this year to the MG parameters to create mgp_adj vector */ +FUNCTION void get_MGsetup(const int yz) + { + mgp_adj = MGparm; // set all to base parm value + // int y1; + + for (f = 1; f <= N_MGparm; f++) + { + if (MGparm_timevary(f) > 0) // timevary + { + mgp_adj(f) = parm_timevary(MGparm_timevary(f), yz); + if (parm_adjust_method == 1 && (save_for_report > 0 || do_once == 1)) + { + if (mgp_adj(f) < MGparm_1(f, 1) || mgp_adj(f) > MGparm_1(f, 2)) + { + warnstream << "adjusted MGparm out of base parm bounds. Phase: " << current_phase() + << "; Inter: " << niter << "; parm#: " << f << "; y: " << yz << "; min: " + << MGparm_1(f, 1) << "; max: " << MGparm_1(f, 2) << "; base: " << MGparm(f) + << " timevary_val: " << mgp_adj(f) << " " << ParmLabel(f); + write_message (WARN, 0); + } + } + } + } // end parm loop + + // SS_Label_Info_14.5 #if MGparm method =1 (no offsets), then do direct assignment if parm value is 0.0. (only for natMort and growth parms) + if (MGparm_def == 1) + { + for (j = 1; j <= N_MGparm; j++) + { + if (MGparm_offset(j) > 0) + mgp_adj(j) = mgp_adj(MGparm_offset(j)); + } + } + // SS_Label_Info_19.1 #set wtlen and maturity/fecundity factors equal to annual values from mgp_adj + gp = 0; + for (gg = 1; gg <= gender; gg++) + for (GPat = 1; GPat <= N_GP; GPat++) + { + gp++; + if (gg == 1) + { + for (f = 1; f <= 6; f++) + { + wtlen_p(GPat, f) = mgp_adj(MGparm_point(gg, GPat) + N_M_Grow_parms + f - 1); + } + } + else + { + for (f = 7; f <= 8; f++) + { + wtlen_p(GPat, f) = mgp_adj(MGparm_point(gg, GPat) + N_M_Grow_parms + (f - 6) - 1); + } + } + if (do_once == 1) + echoinput << "get wtlen parms sex: " << gg << " Gpat: " << GPat << " sex*Gpat: " << gp << " " << wtlen_p(GPat) << endl; + } + if (save_for_report > 0) + mgp_save(yz) = value(mgp_adj); + } + +//******************************************************************** + /* SS_Label_FUNCTION 15 get_growth1; calc some seasonal and CV_growth biology factors that cannot be time-varying */ +FUNCTION void get_growth1() + { + // SS_Label_Info_15.1 #create seasonal effects for growth K, and for wt_len parameters + if (MGparm_doseas > 0) + { + if (MGparm_seas_effects(10) > 0) // for seasonal K + { + VBK_seas(0) = 0.0; + for (s = 1; s <= nseas; s++) + { + VBK_seas(s) = mfexp(MGparm(MGparm_seas_effects(10) + s)); + VBK_seas(0) += VBK_seas(s) * seasdur(s); + } + } + else + { + VBK_seas = sum(seasdur); // set vector to null effect + } + for (gp = 1; gp <= N_GP; gp++) + for (j = 1; j <= 8; j++) + { + #ifdef DO_ONCE + { + if (do_once == 1) + echoinput << j << " wt_len seas " << MGparm_seas_effects(j) << endl; + } + #endif + if (MGparm_seas_effects(j) > 0) + { + wtlen_seas(0, gp, j) = 0.0; + for (s = 1; s <= nseas; s++) + { + wtlen_seas(s, gp, j) = mfexp(MGparm(MGparm_seas_effects(j) + s)); + wtlen_seas(0, gp, j) += wtlen_seas(s, gp, j) * seasdur(s); // this seems not to be used + } + } + else + { + for (s = 0; s <= nseas; s++) + { + wtlen_seas(s, gp, j) = 1.0; + } + } + } + } + else + { + VBK_seas = sum(seasdur); // set vector to null effect + for (s = 1; s <= nseas; s++) + wtlen_seas(s) = 1.0; // set vector to null effect + } + + // SS_Label_Info_15.2 #create variability of size-at-age factors using direct assignment or offset approaches + gp = 0; + for (gg = 1; gg <= gender; gg++) + for (g = 1; g <= N_GP; g++) + { + gp++; + Ip = MGparm_point(gg, g); + j = Ip + N_M_Grow_parms - 2; // index for CVmin + k = j + 1; // index for CVmax + switch (MGparm_def) // for CV of size-at-age + { + case 1: // direct + { + if (MGparm(j) > 0) + { + CVLmin(gp) = MGparm(j); + } + else + { + CVLmin(gp) = MGparm(N_M_Grow_parms - 1); + } + if (MGparm(k) > 0) + { + CVLmax(gp) = MGparm(k); + } + else + { + CVLmax(gp) = MGparm(N_M_Grow_parms); + } + break; + } + case 2: // offset + { + if (gp == 1) + { + CVLmin(gp) = MGparm(j); + CVLmax(gp) = MGparm(k); + } + else + { + CVLmin(gp) = CVLmin(1) * mfexp(MGparm(j)); + CVLmax(gp) = CVLmax(1) * mfexp(MGparm(k)); + } + break; + } + case 3: // offset like SS2 V1.23 + { + if (gp == 1) + { + CVLmin(gp) = MGparm(j); + CVLmax(gp) = CVLmin(1) * mfexp(MGparm(k)); + } + else + { + CVLmin(gp) = CVLmin(1) * mfexp(MGparm(j)); + CVLmax(gp) = CVLmin(gp) * mfexp(MGparm(k)); + } + break; + } + } // end switch + if ((CVLmin(gp) != CVLmax(gp)) || active(MGparm(N_M_Grow_parms)) || active(MGparm(k))) + { + CV_const(gp) = 1; + } + else + { + CV_const(gp) = 0; + } + } + } + +//******************************************************************** + /* SS_Label_Function_ 16 #get_growth2; (do seasonal growth calculations for a selected year) */ +FUNCTION void get_growth2(const int y) + { + // called at beginning of each year, so y is known + // if y=styr, then does equilibrium size-at-age according to start year growth parameters + // for any year, calculates for each season the size at the beginning of the next season, with growth increment calculated according to that year's parameters + + //Growth Cessation Model code added by Mark Maunder October 2018 + //The growth cessation model is described in + //Maunder, M.N., Deriso, R.B., Schaefer, K.M., Fuller, D.W., Aires-da-Silva, A.M., Minte‑Vera, C.V., Campana, S.E. 2018. The growth cessation model: a growth model for species showing a near cessation in growth with application to bigeye tuna (Thunnus obesus). Marine Biology (2018) 165:76. + //Ian Taylor derived the formula for Linf + + int k2; + int add_age; + int ALK_idx2; // beginning of first subseas of next season + dvariable plusgroupsize; + dvariable current_size; + dvariable VBK_temp; + dvariable VBK_temp2; // with VBKseas(s) multiplied + dvariable LminR; + dvariable LmaxR; + dvariable LinfR; + dvariable inv_Richards; + dvariable t50; + // SS_Label_Info_16.1 #Create Cohort_Growth offset for the cohort borne (age 0) this year + if (CGD_onoff > 0) // cohort specific growth multiplier + { + temp = mgp_adj(MGP_CGD); + k = min(nages, (YrMax - y)); + for (a = 0; a <= k; a++) + { + Cohort_Growth(y + a, a) = temp; + } // so this multiplier on growth_increment is stored on a diagonal into the future + } + + // SS_Label_Info_16.2 #Loop growth patterns (sex*N_GP) + gp = 0; + #ifdef DO_ONCE + { + if (do_once == 1) + echoinput << "GROWTH, yr= " << y << endl; + } + #endif + for (gg = 1; gg <= gender; gg++) + for (GPat = 1; GPat <= N_GP; GPat++) + { + gp++; + Ip = MGparm_point(gg, GPat) + N_natMparms; + switch (Grow_type) // create specific growth parameters from the mgp_adj list of current MGparms + { + case 7: // empirical length + { + break; + } + + default: // process parameters for all other grow_type + { + // SS_Label_Info_16.2.1 #set Lmin, Lmax, VBK, Richards to this year's values for mgp_adj + if (MGparm_def > 1 && gp > 1) // do offset approach + { + Lmin(gp) = Lmin(1) * mfexp(mgp_adj(Ip)); + Lmax_temp(gp) = Lmax_temp(1) * mfexp(mgp_adj(Ip + 1)); + VBK(gp) = VBK(1) * mfexp(mgp_adj(Ip + 2)); // assigns to all ages for which VBK is defined + } + else + { + Lmin(gp) = mgp_adj(Ip); + Lmax_temp(gp) = mgp_adj(Ip + 1); // size at A2; could be 999 to indicate Linf + VBK(gp) = -mgp_adj(Ip + 2); // because always used as negative; assigns to all ages for which VBK is defined + } + VBK_temp = VBK(gp, 0); // will be reset to VBK(gp,nages) if using age-specific K + + // SS_Label_Info_16.2.2 #Set up age specific k + if (Grow_type == 3) // age specific k + { + j = 1; + for (a = 1; a <= nages; a++) + { + if (a == Age_K_points(j)) + { + VBK(gp, a) = VBK(gp, a - 1) * mgp_adj(Ip + 2 + j); + if (j < Age_K_count) + j++; + } + else + { + VBK(gp, a) = VBK(gp, a - 1); + } + } + VBK_temp = VBK(gp, nages); + } + else if (Grow_type == 4) // age specific k reverse order, so age_k_points need to be descending + { + j = 1; + VBK(gp, nages) = VBK_temp; + for (a = nages - 1; a >= 0; a--) + { + if (a == Age_K_points(j)) + { + VBK(gp, a) = VBK(gp, a + 1) * mgp_adj(Ip + 2 + j); + if (j < Age_K_count) + j++; + } + else + { + VBK(gp, a) = VBK(gp, a + 1); + } + } + } + else if (Grow_type == 5) // age specific k replacement, so age_k_points need to be descending + { + j = 1; + for (a = nages; a >= 0; a--) + { + if (a == Age_K_points(j)) + { + VBK(gp, a) = mgp_adj(Ip + 2 + j) * VBK_temp; + if (j < Age_K_count) + j++; + } + else + { + VBK(gp, a) = VBK_temp; + } + } + VBK_temp = VBK(gp, nages); + } + + // get Linf from Lmax + // get Richards or growth cessation parameter if appropriate + if (Grow_type == 2) // Richards + { + if (MGparm_def > 1 && gp > 1) + { + Richards(gp) = Richards(1) * mfexp(mgp_adj(Ip + 3)); + } + else + { + Richards(gp) = mgp_adj(Ip + 3); + } + LminR = pow(Lmin(gp), Richards(gp)); + inv_Richards = 1.0 / Richards(gp); + if (AFIX2 == 999) + { + L_inf(gp) = Lmax_temp(gp); + LinfR = pow(L_inf(gp), Richards(gp)); + } + else + { + LmaxR = pow(Lmax_temp(gp), Richards(gp)); + LinfR = LminR + (LmaxR - LminR) / (1. - mfexp(VBK_temp * VBK_seas(0) * (AFIX_delta))); + L_inf(gp) = pow(LinfR, inv_Richards); + } + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " linf " << L_inf(gp) << " VBK: " << VBK_temp << endl; + #endif + } + else if (Grow_type == 8) + { + if (MGparm_def > 1 && gp > 1) + { + Richards(gp) = Richards(1) * mfexp(mgp_adj(Ip + 3)); + } + else + { + Richards(gp) = mgp_adj(Ip + 3); + } + L_inf(gp) = Lmax_temp(gp); + VBK_temp = -VBK(gp, 0) * VBK_seas(0); + // t50 is the calculated inflection age for the decline in K + t50 = log(exp((L_inf(gp) - Lmin(gp)) * Richards(gp) / VBK_temp) - 1.0) / Richards(gp); + } + else + { + if (AFIX2 == 999) + { + L_inf(gp) = Lmax_temp(gp); + } + else + { + L_inf(gp) = Lmin(gp) + (Lmax_temp(gp) - Lmin(gp)) / (1. - mfexp(VBK_temp * VBK_seas(0) * (AFIX_delta))); + #ifdef DO_ONCE + if (do_once == 1) + echoinput << VBK_temp << " " << VBK_seas(0) << " " << VBK_temp * VBK_seas(0) << " " << Lmax_temp(gp) << " " << L_inf(gp) << endl; + #endif + } + } + + // SS_Label_Info_16.2.3 #Set up Lmin and Lmax in Start Year + if (y == styr) + { + Cohort_Lmin(gp) = Lmin(gp); // sets for all years and ages + } + else if (timevary_MG(y, 2) > 0) // using time-vary growth + { + k = min(nages, (YrMax - y)); + for (a = 0; a <= k; a++) + { + Cohort_Lmin(gp, y + a, a) = Lmin(gp); + } // sets for future years so cohort remembers its size at birth; with Lmin(gp) being size at birth this year + } + } // end setup of parametric growth parameters + } // end switch between parametric and non-parametric growth + #ifdef DO_ONCE + if (do_once == 1) + { + echoinput << "sex: " << gg << " GP: " << gp << " Lmin: " << Lmin(gp) << " Linf: " << L_inf(gp) << " VBK_temp: " << VBK_temp << " VBK@age: " << -VBK(gp) << endl; + if (Grow_type == 2) + echoinput << " Richards: " << Richards(gp) << endl; + if (Grow_type == 8) + echoinput << " Cessation_decay: " << Richards(gp) << endl; + } + #endif + // SS_Label_Info_16.2.4 #Loop settlement events because growth starts at time of settlement + g = g_Start(gp); // base platoon + for (settle = 1; settle <= N_settle_timings; settle++) + { + g += N_platoon; // increment by N_platoon because only middle platoon has growth modeled + if (use_morph(g) > 0) + { + if (y == styr) + { + switch (Grow_type) + { + case 7: // non-parametric + { + break; + } + default: + { + // SS_Label_Info_16.2.4.1 #set up the delta in growth variability across ages if needed + if (CV_const(gp) > 0) + { + if (CV_depvar_a == 0) + { + CV_delta(gp) = (CVLmax(gp) - CVLmin(gp)) / (Lmax_temp(gp) - Lmin(gp)); + } + else + { + CV_delta(gp) = (CVLmax(gp) - CVLmin(gp)) / (AFIX2_forCV - AFIX); + } + } + else + { + CV_delta(gp) = 0.0; + CV_G(gp) = CVLmin(gp); // sets all seasons and whole age range + } + } + } + + // SS_Label_Info_16.2.4.1.1 #if y=styr, get size-at-age in first subseason of first season of this first year + switch (Grow_type) + { + case 1: + { + VBK_temp2 = VBK_temp * VBK_seas(0); + for (a = 0; a <= nages; a++) + { + // Ave_Size(styr,1,g,a) = Lmin(gp) + (Lmin(gp)-L_inf(gp))* (mfexp(VBK_temp2*(real_age(g,1,a)-AFIX))-1.0); + Ave_Size(styr, 1, g, a) = L_inf(gp) + (Lmin(gp) - L_inf(gp)) * mfexp(VBK_temp2 * (real_age(g, 1, a) - AFIX)); + } // done ageloop + break; + } + case 2: // Richards + { + Ave_Size(styr, 1, g)(0, first_grow_age(g)) = Lmin(gp); + VBK_temp2 = VBK_temp * VBK_seas(0); + for (a = first_grow_age(g); a <= nages; a++) + { + temp = LinfR + (LminR - LinfR) * mfexp(VBK_temp2 * (real_age(g, 1, a) - AFIX)); + Ave_Size(styr, 1, g, a) = pow(temp, inv_Richards); + } // done ageloop + break; + } + case 5: + { + } + case 4: + { + } + case 3: // age-specific K, so need age-by-age calculations + { + ALK_idx = 1; + //VBK_seas(0) accounts for season duration + for (a = 0; a <= nages; a++) + { + k2 = a - 1; + if (lin_grow(g, ALK_idx, a) >= -1.0) // linear segment, or first time point beyond AFIX; + { + Ave_Size(styr, 1, g, a) = Lmin(gp) + (Lmin(gp) - L_inf(gp)) * (mfexp(VBK(gp, 0) * VBK_seas(0) * (real_age(g, 1, a) - AFIX)) - 1.0); + } + else + { + Ave_Size(styr, 1, g, a) = Ave_Size(styr, 1, g, k2) + (mfexp(VBK(gp, k2) * VBK_seas(0)) - 1.0) * (Ave_Size(styr, 1, g, k2) - L_inf(gp)); + } + // echoinput< -997.) // decay rate has been read; uses same code for Richards and standard + { + temp1 = 1.0; + temp4 = 1.0; + temp = current_size; + temp2 = mfexp(-Linf_decay); // cannot use natM or Z because growth is calculated first + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " L_inf " << L_inf(gp) << " size@exactly maxage " << current_size << endl; + #endif + if (Grow_type < 3) + { + VBK_temp2 = VBK(gp, 0); + } + else + { + VBK_temp2 = VBK(gp, nages); + } + VBK_temp2 = (1.0 - mfexp(VBK_temp2 * VBK_seas(0))); + for (a = nages + 1; a <= 3 * nages; a++) + { + temp4 *= temp2; // decay numbers at age by exp(-0.xxx) + current_size += (L_inf(gp) - current_size) * VBK_temp2; + temp += temp4 * current_size; + temp1 += temp4; // accumulate numbers to create denominator for mean size calculation + } + Ave_Size(styr, 1, g, nages) = temp / temp1; // this is weighted mean size at nages + } + else if (Linf_decay == -999.) // mimic SS3.24 + { + temp = 0.0; + temp1 = 0.0; + temp2 = mfexp(-0.2); // cannot use natM or Z because growth is calculated first + temp3 = L_inf(gp) - current_size; // delta between linf and the size at nages + // frac_ages = age/nages, so is fraction of a lifetime + temp4 = 1.0; + for (a = 0; a <= nages; a++) + { + temp += temp4 * (current_size + frac_ages(a) * temp3); // so grows linearly from size at nages to size at nages+nages + temp1 += temp4; // accumulate numbers to create denominator for mean size calculation + temp4 *= temp2; // decay numbers at age by exp(-0.2) + } + Ave_Size(styr, 1, g, nages) = temp / temp1; // this is weighted mean size at nages + } + else + { + // no adjustment + } + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " adjusted size at maxage " << Ave_Size(styr, 1, g, nages) << " using decay of: " << Linf_decay << endl; + #endif + } // end initial year calcs + + // SS_Label_Info_16.2.4.2 #loop seasons for growth calculation + for (s = 1; s <= nseas; s++) + { + t = t_base + s; + ALK_idx = s * N_subseas; // last subseas of season; so checks to see if still in linear phase at end of this season + if (s == nseas) + { + ALK_idx2 = 1; // first subseas of next year + } + else + { + ALK_idx2 = s * N_subseas + 1; // for the beginning of first subseas of next season + } + if (s == nseas) + add_age = 1; + else + add_age = 0; // advance age or not + // growth to next season + VBK_temp2 = (mfexp(VBK_temp * seasdur(s) * VBK_seas(s)) - 1.0); + // warning< 0 && t2 > -1.) + { + join1 = 1.0 / (1.0 + mfexp(-(50. * t2 / (1.0 + fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function + t2 *= (1. - join1); // trap to prevent decrease in size-at-age + } + + // SS_Label_info_16.2.4.2.1.1 #calc size at end of the season, which will be size at begin of next season using current seasons growth parms + // with k2 adding an age if at the end of the year + if ((a < nages || s < nseas)) + Ave_Size(t + 1, 1, g, k2) = Ave_Size(t, 1, g, a) + VBK_temp2 * t2 * Cohort_Growth(y, a); + if (a == nages && s == nseas) + { + plusgroupsize = Ave_Size(t, 1, g, nages) + VBK_temp2 * t2 * Cohort_Growth(y, nages); + } + } + else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season + { + Ave_Size(t + 1, 1, g, k2) = Cohort_Lmin(gp, y, a) + (Cohort_Lmin(gp, y, a) - L_inf(gp)) * (mfexp(VBK_temp * (real_age(g, ALK_idx2, k2) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); + } + else // in linear phase + { + Ave_Size(t + 1, 1, g, k2) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); + } + // if(y==1990 && g==1) warning< 0 && t2 > -1.) + { + join1 = 1.0 / (1.0 + mfexp(-(50. * t2 / (1.0 + fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function + t2 *= (1. - join1); // trap to prevent decrease in size-at-age + } + + // SS_Label_info_16.2.4.2.1.1 #calc size at end of the season, which will be size at begin of next season using current seasons growth parms + // with k2 adding an age if at the end of the year + if ((a < nages || s < nseas)) + Ave_Size(t + 1, 1, g, k2) = Ave_Size(t, 1, g, a) + (mfexp(VBK(gp, a) * seasdur(s) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, a); + if (a == nages && s == nseas) + plusgroupsize = Ave_Size(t, 1, g, nages) + (mfexp(VBK(gp, nages) * seasdur(s) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, nages); + } + else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season + { + Ave_Size(t + 1, 1, g, k2) = Cohort_Lmin(gp, y, a) + (Cohort_Lmin(gp, y, a) - L_inf(gp)) * (mfexp(VBK(gp, a) * (real_age(g, ALK_idx2, k2) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); + } + else // in linear phase + { + Ave_Size(t + 1, 1, g, a) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); + } + } // done ageloop + break; + } + } + + // SS_Label_Info_16.2.4.2.1.2 #after age loop, if(s=nseas) get weighted average for size_at_maxage from carryover fish and fish newly moving into this age + // this code needs to execute every year, so need to move to ss_popdyn. Positioned here, it is only updated in years in which growth changes + if (s == nseas) + { + if (y > styr && Linf_decay != -998.) + { + +// 3.24 code + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " plus group calc: " + << " N _entering: " << natage(t, 1, g, nages - 1) << " N_inplus: " << natage(t, 1, g, nages) << " size in: " << Ave_Size(t + 1, 1, g, nages) << " old size: " << plusgroupsize << " "; + #endif + temp = ((natage(t, 1, g, nages - 1) + 0.01) * Ave_Size(t + 1, 1, g, nages) + (natage(t, 1, g, nages) + 0.01) * plusgroupsize) / (natage(t, 1, g, nages - 1) + natage(t, 1, g, nages) + 0.02); + Ave_Size(t + 1, 1, g, nages) = temp; + #ifdef DO_ONCE + if (do_once == 1 && g == 1) + echoinput << " final_val " << Ave_Size(t + 1, 1, g, nages) << endl; + #endif + // early 3.30 code + // temp4= square(natage(t,1,g,nages-1)+0.00000001)/(natage(t-1,1,g,nages-2)+0.00000001); + // temp=temp4*Ave_Size(t+1,1,g,nages)+(natage(t,1,g,nages)-temp4+0.00000001)*plusgroupsize; + // if(do_once==1&&g==1) echoinput<0) + } // end loop of settlements + Ip += N_M_Grow_parms; + } // end loop of growth patterns, gp + } // end do growth + +// ******************************************************************************************************* +// SS_Label_Function_16.5 #get_growth3 which calculates mean size-at-age for selected subseason +FUNCTION void get_growth3(const int y, const int t, const int s, const int subseas) + { + // progress mean growth through time series, accounting for seasonality and possible change in parameters + // get mean size at the beginning and end of the season + dvariable LinfR; + dvariable LminR; + dvariable inv_Richards; + dvariable t50; + dvariable VBK_temp2; + + ALK_idx = (s - 1) * N_subseas + subseas; // note that this changes a global value + for (g = g_Start(1) + N_platoon; g <= gmorph; g += N_platoon) // looping the middle platoons for each sex*gp + { + if (use_morph(g) > 0) + { + gp = GP(g); + switch (Grow_type) + { + case 1: // regular von B + { + for (a = 0; a <= nages; a++) + { + // SS_Label_Info_16.5.1 #calc subseas size-at-age from begin season size-at-age, accounting for transition from linear to von Bert as necessary + // subseasdur is cumulative time to start of this subseas + if (lin_grow(g, ALK_idx, a) == -2.0) // so doing growth curve + { + t2 = Ave_Size(t, 1, g, a) - L_inf(gp); // remaining growth potential from first subseas + // the constant in join needs to be at least 30 to get rapid transition + // the consequence of (t2>-1.) should be investigated for effect on gradient + if (timevary_MG(y, 2) > 0 && t2 > -1.) + { + join1 = 1.0 / (1.0 + mfexp(-(50. * t2 / (1.0 + fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function + t2 *= (1. - join1); // trap to prevent decrease in size-at-age + } + Ave_Size(t, subseas, g, a) = Ave_Size(t, 1, g, a) + (mfexp(VBK(gp, 0) * subseasdur(s, subseas) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, a); + } + else if (lin_grow(g, ALK_idx, a) >= 0.0) // in linear phase for subseas + { + Ave_Size(t, subseas, g, a) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); + } + // NOTE: there is no seasonal interpolation, age-specific K uses calendar age, not real age. Maybe someday.... + else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season + { + Ave_Size(t, subseas, g, a) = Cohort_Lmin(gp, y, a) + (Cohort_Lmin(gp, y, a) - L_inf(gp)) * (mfexp(VBK(gp, 0) * (real_age(g, ALK_idx, a) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); + } + } + break; + } + case 2: // Richards + { + LinfR = pow(L_inf(gp), Richards(gp)); + LminR = pow(Lmin(gp), Richards(gp)); + inv_Richards = 1.0 / Richards(gp); + // uses VBK(nages) because age-specific K not allowed + // and Cohort_Lmin has already had the power function applied + for (a = 0; a <= nages; a++) + { + if (lin_grow(g, ALK_idx, a) == -2.0) // so doing growth curve + { + temp = pow(Ave_Size(t, 1, g, a), Richards(gp)); + t2 = temp - LinfR; // remaining growth potential + // disable the shrinkage trap because Richard's parameter could be negative + // join1=1.0/(1.0+mfexp(-(50.*t2/(1.0+fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function + // t2*=(1.-join1); // trap to prevent decrease in size-at-age + temp += (mfexp(VBK(gp, 0) * subseasdur(s, subseas) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, a); + Ave_Size(t, subseas, g, a) = pow(temp, inv_Richards); + } + else if (lin_grow(g, ALK_idx, a) >= 0.0) // in linear phase for subseas + { + Ave_Size(t, subseas, g, a) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); + } + else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season + { + // temp=Cohort_Lmin(gp,y,a) + (Cohort_Lmin(gp,y,a)-LinfR)* + temp = LminR + (LminR - LinfR) * (mfexp(VBK(gp, 0) * (real_age(g, ALK_idx, a) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); + Ave_Size(t, subseas, g, a) = pow(temp, inv_Richards); + } + } // done ageloop + break; + } // done Richards + case 8: // Cessation + { + // VBK_temp2=-VBK_temp*seasdur(s); // negative to restore positive + // t50 is the calculated inflection age for the decline in K + dvariable VBK_temp = -VBK(gp, 0); + t50 = log(exp((L_inf(gp) - Lmin(gp)) * Richards(gp) / (VBK_temp)) - 1.0) / Richards(gp); + for (a = 0; a <= nages; a++) + { + // calculate a full year's growth increment, then multiple by seasdur(s) + Ave_Size(t, subseas, g, a) = Ave_Size(t, 1, g, a) + + (VBK_temp - (VBK_temp / Richards(gp)) * (log(exp(Richards(gp) * (real_age(g, ALK_idx, a) + 1 - t50)) + 1) - log(exp(Richards(gp) * (real_age(g, ALK_idx, a) - t50)) + 1))) * subseasdur(s, subseas); + } // done ageloop + break; + } + case 5: // von B with age-specific K + { + } + case 4: // von B with age-specific K + { + } + case 3: // von B with age-specific K + { + for (a = 0; a <= nages; a++) + { + // SS_Label_Info_16.5.1 #calc subseas size-at-age from begin season size-at-age, accounting for transition from linear to von Bert as necessary + // subseasdur is cumulative time to start of this subseas + if (lin_grow(g, ALK_idx, a) == -2.0) // so doing growth curve + { + t2 = Ave_Size(t, 1, g, a) - L_inf(gp); // remaining growth potential from first subseas + // the constant in join needs to be at least 30 to get rapid transition + // the consequence of (t2>-1.) should be investigated for effect on gradient + if (timevary_MG(y, 2) > 0 && t2 > -1.) + { + join1 = 1.0 / (1.0 + mfexp(-(50. * t2 / (1.0 + fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function + t2 *= (1. - join1); // trap to prevent decrease in size-at-age + } + Ave_Size(t, subseas, g, a) = Ave_Size(t, 1, g, a) + (mfexp(VBK(gp, a) * subseasdur(s, subseas) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, a); + } + else if (lin_grow(g, ALK_idx, a) >= 0.0) // in linear phase for subseas + { + Ave_Size(t, subseas, g, a) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); + } + // NOTE: there is no seasonal interpolation, age-specific K uses calendar age, not real age. Maybe someday.... + else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season + { + Ave_Size(t, subseas, g, a) = Cohort_Lmin(gp, y, a) + (Cohort_Lmin(gp, y, a) - L_inf(gp)) * (mfexp(VBK(gp, a) * (real_age(g, ALK_idx, a) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); + } + } + break; + } + } // done switch + } // end need this platoon + } // done platoon + } // end calc size-at-age at a particular subseason + +FUNCTION void get_natmort() + { + // SS_Label_Function #17 get_natmort for all seasons given this year's parameters + dvariable Loren_M1; + dvariable Loren_temp; + dvariable Loren_temp2; + dvariable Maunder_Mjuv; + dvariable Maunder_lambda; + dvariable Maunder_Lmat; + dvariable Maunder_Mmat; + dvariable Maunder_beta; + dvariable Maunder_L50; + dvar_vector XX_mature(0, nages); + dvariable t_age; + int gpi; + int Do_AveAge; + int K_index; + K_index = VBK(1).indexmax(); + Do_AveAge = 0; + t_base = styr + (yz - styr) * nseas - 1; // so looping s=1 to nseas; t=t_base + s + Ip = -N_M_Grow_parms; // start counter for MGparms + // SS_Label_Info_17.1 #loop growth patterns in each gender + gp = 0; + for (gg = 1; gg <= gender; gg++) + for (GPat = 1; GPat <= N_GP; GPat++) + { + gp++; + Ip = MGparm_point(gg, GPat) - 1; + if (N_natMparms > 0) + { + // SS_Label_Info_17.1.1 #Copy parameter values from mgp_adj to natMparms(gp), doing direct or offset for gp>1 + for (j = 1; j <= N_natMparms; j++) + { + natMparms(j, gp) = mgp_adj(Ip + j); + } + switch (MGparm_def) // switch for natmort parms + { + case 1: // direct + { + for (j = 1; j <= N_natMparms; j++) + { + if (natMparms(j, gp) < 0) + natMparms(j, gp) = natMparms(j, 1); + } + break; + } + case 2: // offset + { + if (gp > 1) + { + for (j = 1; j <= N_natMparms; j++) + { + natMparms(j, gp) = natMparms(j, 1) * mfexp(natMparms(j, gp)); + } + } + break; + } + case 3: // offset like SS2 V1.23 + { + if (gp > 1) + natMparms(1, gp) = natMparms(1, 1) * mfexp(natMparms(1, gp)); + if (N_natMparms > 1) + { + for (j = 2; j <= N_natMparms; j++) + { + natMparms(j, gp) = natMparms(j - 1, gp) * mfexp(natMparms(j, gp)); + } + } + break; + } + } // end switch + } // end have natmort parms + + g = g_Start(gp); // base platoon + for (settle = 1; settle <= N_settle_timings; settle++) + { + // SS_Label_Info_17.1.2 #loop settlements + g += N_platoon; + gpi = GP3(g); // GP*gender*settlement + if (use_morph(g) > 0) + { + switch (natM_type) + { + // SS_Label_Info_17.1.2.0 #case 0: constant M + case 0: // constant M + { + for (s = 1; s <= nseas; s++) + { + natM(t_base + s, 0, gpi) = natMparms(1, gp); + } + break; + } + + // SS_Label_Info_17.1.2.1 #case 1: N breakpoints + case 1: // breakpoints + { + dvariable natM_A; + dvariable natM_B; + for (s = 1; s <= nseas; s++) + { + if (s >= Bseas(g)) + { + a = 0; + t_age = azero_seas(s) - azero_G(g); + } + else + { + a = 1; + t_age = 1.0 + azero_seas(s) - azero_G(g); + } + natM_amax = NatM_break(1); + natM_B = natMparms(1, gp); + k = a; + + for (loop = 1; loop <= N_natMparms + 1; loop++) + { + natM_amin = natM_amax; + natM_A = natM_B; + if (loop <= N_natMparms) + { + natM_amax = NatM_break(loop); + natM_B = natMparms(loop, gp); + } + else + { + natM_amax = r_ages(nages) + 1.; + } + if (natM_amax > natM_amin) + { + temp = (natM_B - natM_A) / (natM_amax - natM_amin); + } // calc the slope + else + { + temp = 0.0; + } + while (t_age < natM_amax && a <= nages) + { + natM(t_base + s, 0, gpi, a) = natM_A + (t_age - natM_amin) * temp; + t_age += 1.0; + a++; + } + } + if (k == 1) + natM(t_base + s, 0, gpi, 0) = natM(t_base + s, 0, gpi, 1); + } // end season + break; + } // end natM_type==1 + + // SS_Label_Info_17.1.2.2 #case 2: lorenzen M + case 2: // Lorenzen M + { + Loren_temp2 = L_inf(gp) * (mfexp(-VBK(gp, K_index) * VBK_seas(0)) - 1.); // need to verify use of VBK_seas here + Loren_temp = Ave_Size(styr, mid_subseas, g, int(natM_amin)); // uses mean size in middle of season 1 for the reference age + Loren_M1 = natMparms(1, gp) / log(Loren_temp / (Loren_temp + Loren_temp2)); + for (s = nseas; s >= 1; s--) + { + int Loren_t = styr + (yz - styr) * nseas + s - 1; + natM(t_base + s, 0, gpi)(0, nages) = log( + elem_div(Ave_Size(Loren_t, mid_subseas, g)(0, nages), (Ave_Size(Loren_t, mid_subseas, g)(0, nages) + Loren_temp2))) * + Loren_M1; + if (s < Bseas(g)) + {natM(t_base + s, 0, gpi, 0) = natM(t_base + s + 1, 0, gpi, 0);} + } + break; + } + + // SS_Label_Info_17.1.2.3 #case 3: set to empirical M as read from file, no seasonal interpolation + case (3): // read age_natmort as constant + { + for (s = 1; s <= nseas; s++) + { + natM(t_base + s, 0, gpi) = Age_NatMort(gp); + } + break; + } + + // SS_Label_Info_17.1.2.4 #case 4: read age_natmort as constant and interpolate to seasonal real age + case (4): + { + for (s = 1; s <= nseas; s++) + { + if (s >= Bseas(g)) + { + k = 0; + t_age = azero_seas(s) - azero_G(g); + for (a = k; a <= nages - 1; a++) + { + natM(t_base + s, 0, gpi, a) = Age_NatMort(gp, a) + t_age * (Age_NatMort(gp, a + 1) - Age_NatMort(gp, a)); + } // end age + } + else + { + k = 1; + t_age = azero_seas(s) + (1. - azero_G(g)); + for (a = k; a <= nages - 1; a++) + { + natM(t_base + s, 0, gpi, a) = Age_NatMort(gp, a) + t_age * (Age_NatMort(gp, a + 1) - Age_NatMort(gp, a)); + } // end age + natM(t_base + s, 0, gpi, 0) = natM(t_base + s, 0, gpi, 1); + } + natM(t_base + s, 0, gpi, nages) = Age_NatMort(gp, nages); + } // end season + break; + } + // SS_Label_Info_17.1.2.5 #case 5: age and gender specific M linked to maturity (developed by Mark Maunder and contributed to the SS project in Feb 2021). + case 5: + { + Maunder_Mjuv = natMparms(1, gp); // + Maunder_lambda = natMparms(2, gp); // + Maunder_Lmat = natMparms(3, gp); // constant for juvenile mort + Maunder_Mmat = natMparms(4, gp); // + if (natM_5_opt <= 2) + { //use the SS mat50% and mat_slope parameters + Maunder_L50 = wtlen_p(GPat, 3); //mat50% + Maunder_beta = wtlen_p(GPat, 4); //slope + // XX_mature=make_mature_numbers(gpi); // will be same for all seasons THIS LINE SEEMS UNNECESSARY + } + else if (natM_5_opt == 3) + { //use two new parameters mat50% and mat_slope, which can be Gpat and sex specific. + Maunder_L50 = natMparms(5, gp); + Maunder_beta = natMparms(6, gp); + } + for (s = 1; s <= nseas; s++) + { + t = t_base + s; + // using the most recent spawn season's age-maturity for females, unless doing option 3 here + // this code uses the length maturity parameters for females, and the ave_size for the current sex in the current season + XX_mature.initialize(); + XX_mature(First_Mature_Age, nages) = 1. / (1. + mfexp(Maunder_beta * (Ave_Size(t, mid_subseas, g)(First_Mature_Age, nages) - Maunder_L50))); + { + // original equation had: + // natM(t_base + s,gpi,a) = Maunder_Mjuv*pow(Ave_Size(t,ALK_idx,g,a)/Maunder_Lmat,Maunder_lambda) + + // (Maunder_Mmat-Maunder_Mjuv*pow(Ave_Size(t,ALK_idx,g,a)/Maunder_Lmat,Maunder_lambda))*XXmaturity_Fem(a)XX; + natM(t_base + s, 0, gpi) = Maunder_Mjuv * pow((Ave_Size(t, mid_subseas, g) / Maunder_Lmat), Maunder_lambda); + natM(t_base + s, 0, gpi) += elem_prod((Maunder_Mmat - natM(t_base + s, 0, gpi)), XX_mature); + } + if (do_once == 1) + { + echoinput << " seas " << s << " sex*GP " << gpi << endl + << "M_juv: " << Maunder_Mjuv << "; M_mat: " << Maunder_Mmat << "; lambda: " << Maunder_lambda << endl; + echoinput << " L50 " << Maunder_L50 << " beta " << Maunder_beta << " Len_mat " << Maunder_Lmat << endl; + echoinput << "Age_mature_for_Maunder_M: " << XX_mature << endl; + echoinput << "avesize " << Ave_Size(t, mid_subseas, g) << endl; + echoinput << "avesize/Lmat " << Ave_Size(t, mid_subseas, g) / Maunder_Lmat << endl; + echoinput << " natM_juv: " << Maunder_Mjuv * pow((Ave_Size(t, mid_subseas, g) / Maunder_Lmat), Maunder_lambda) << endl; + echoinput << " natM_mat: " << (Maunder_Mmat)*XX_mature << endl; + echoinput << " natM_combined: " << natM(t_base + s, 0, gpi) << endl; + } + } + break; + } + // SS_Label_Info_17.1.2.6 #case 6: Calculate lorenzen M from survivorship over fixed age range + case 6: // Survivorship based Lorenzen M + { + Loren_temp2 = L_inf(gp) * (mfexp(-VBK(gp, K_index) * VBK_seas(0)) - 1.); // need to verify use of VBK_seas here + Loren_M1 = (natMparms(1, gp)); //This is the user specified average M over the input range of ages. + for (s = nseas ; s >= 1; s--) + { + int Loren_t = styr + (yz - styr) * nseas + s - 1; + dvariable loren_scale_extra = 0; //start with no extra scaler. This will be used if the maximum reference age is greater than nages. + int ref_age = int(natM_amax); //start with reference age equal to the input maximum age. This will be adjusted below to equal nages if the maximum age is greater than nages. + if (ref_age > nages)//if reference age is greater than accumulator age need math to approximate the unknown size/age bins + { + int extra_years = ref_age - nages;//determine how many extra ages will be included between accumulator age and reference age + + //The following code is a simple difference approach to approximate the first and second rate of change in relative M to estimate approximate M for ages older than nages + //calculate proportional change in lorenzen M between second to last and last age group + dvariable d1 = 1 + (log((Ave_Size(Loren_t, mid_subseas, g)(nages)) / (Ave_Size(Loren_t, mid_subseas, g)(nages) + Loren_temp2)) - + log((Ave_Size(Loren_t, mid_subseas, g)(nages - 1)) / (Ave_Size(Loren_t, mid_subseas, g)(nages-1) + Loren_temp2))) / + log((Ave_Size(Loren_t, mid_subseas, g)(nages)) / (Ave_Size(Loren_t, mid_subseas, g)(nages) + Loren_temp2)); + + //calculate proportional change in lorenzen M between third to last and second to last age group + dvariable d2 = 1 + (log((Ave_Size(Loren_t, mid_subseas, g)(nages - 1))/(Ave_Size(Loren_t, mid_subseas, g)(nages - 1) + Loren_temp2)) - + log((Ave_Size(Loren_t, mid_subseas, g)(nages - 2)) / (Ave_Size(Loren_t, mid_subseas, g)(nages - 2) + Loren_temp2))) / + log((Ave_Size(Loren_t, mid_subseas, g)(nages - 1)) / (Ave_Size(Loren_t, mid_subseas, g)(nages - 1) + Loren_temp2)); + + //calculate the second order proportional change in proportional changes during the last two age pairs + dvariable d3 = 1 + (d1 - d2) / d1; + + //project total proportion of last years M that will occur in all ages older than nages + for (int ey = 1; ey <= extra_years; ey++) + { + d1 = d1 * d3;//each year adjust the first order proportion by the second order proportion + loren_scale_extra += d1;//add that proportion to a scaler that will be multiplied by the nages M value + } + ref_age = nages; //set reference age to nages to use all available Ave_Size values + } + + //Calculate loren_temp multiplier that achieves target average M + Loren_temp = (Loren_M1 * (natM_amax - natM_amin + 1)) / (sum(log( + elem_div(Ave_Size(Loren_t, mid_subseas, g)(natM_amin, ref_age), (Ave_Size(Loren_t, mid_subseas, g)(natM_amin, ref_age) + Loren_temp2)) + )) + loren_scale_extra * log((Ave_Size(Loren_t, mid_subseas, g)(ref_age)) / (Ave_Size(Loren_t, mid_subseas, g)(ref_age) + Loren_temp2))); + + natM(t_base + s, 0, gpi)(0, nages) = log( + elem_div(Ave_Size(Loren_t, mid_subseas, g)(0, nages), + (Ave_Size(Loren_t, mid_subseas, g)(0, nages) + Loren_temp2))) + * Loren_temp; + if (s < Bseas(g)) + { + natM(t_base + s, 0, gpi, 0) = natM(t_base + s + 1, 0, gpi, 0); + } + } + break; + } + } // end natM_type switch + + // SS_Label_Info_17.2 #calc an ave_age for the first gp as a scaling factor in logL for initial recruitment (R1) deviation + if (Do_AveAge == 0) + { + Do_AveAge = 1; + ave_age = 1.0 / natM(t_base+1, 0, gpi, nages / 2) - 0.5; + } + + #ifdef DO_ONCE + if (do_once == 1) + { + for (s = 1; s <= nseas; s++) + echoinput << "Natmort seas:" << s << " sex:" << gg << " Gpat:" << GPat << " sex*Gpat:" << gp << " settlement:" << settle << " gpi:" << gpi << endl + << " M: " << natM(t_base + s, 0, gpi) << endl; + } + #endif + } // end use of this morph + } // end settlement + } // end growth pattern x gender loop + for (s = 1; s <= nseas; s++) + for (p = 1; p <= pop; p++) + { + natM(t_base + s, p) = natM(t_base + s, 0); // copy M1 to eack area's M; + // p=0 holds that M1 as the base M with no predators + // pred_M2 will be added later on area-specific basis + } + } // end nat mort + +FUNCTION void get_recr_distribution() + { + /* SS_Label_Function_18 #get_recr_distribution among areas and morphs */ + + // SS_Label_Info_18.15 #get fraction female + // fracfemale_mult is not used to distribute recruits; it is a multiplier used in the SSB calc and has default value of 1, and value of femfrac if requested in 1 sex setup + if (frac_female_pointer > 0) + { + Ip = frac_female_pointer - 1; + for (gp = 1; gp <= N_GP; gp++) + { + femfrac(gp) = mgp_adj(Ip + gp); + if (gender == 2) + femfrac(N_GP + gp) = 1.0 - femfrac(gp); + } + } + else + { + femfrac(1, N_GP) = fracfemale; + if (gender == 2) + femfrac(N_GP, 2 * N_GP) = 1.0 - fracfemale; + } + if (gender_rd == -1) + { + fracfemale_mult = value(femfrac(1)); + } + + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " femfrac " << femfrac << endl; + #endif + if (finish_starter == 999) + { + k = MGP_CGD - recr_dist_parms + nseas; + } + else + { + k = MGP_CGD - recr_dist_parms; + } + dvar_vector recr_dist_parm(1, k); + + // recr_dist.initialize(); + // SS_Label_Info_18.1 #set rec_dist_parms = exp(mgp_adj) for this year + Ip = recr_dist_parms - 1; + for (f = 1; f <= MGP_CGD - recr_dist_parms; f++) + { + recr_dist_parm(f) = mfexp(mgp_adj(Ip + f)); + } + // SS_Label_Info_18.2 #loop gp * settlements * area and multiply together the recr_dist_parm values + switch (recr_dist_method) + { + + case 2: + { + for (gp = 1; gp <= N_GP; gp++) + for (settle = 1; settle <= N_settle_timings; settle++) + for (p = 1; p <= pop; p++) + if (recr_dist_pattern(gp, settle, p) > 0) + { + recr_dist(y, gp, settle, p) = femfrac(gp) * recr_dist_parm(gp) * recr_dist_parm(N_GP + p) * recr_dist_parm(N_GP + pop + settle); + if (gender == 2) + recr_dist(y, gp + N_GP, settle, p) = femfrac(gp + N_GP) * recr_dist_parm(gp) * recr_dist_parm(N_GP + p) * recr_dist_parm(N_GP + pop + settle); //males + } + // SS_Label_Info_18.3 #if recr_dist_interaction is chosen, then multiply these in also + if (recr_dist_inx == 1) + { + f = N_GP + pop + N_settle_timings; + for (gp = 1; gp <= N_GP; gp++) + for (settle = 1; settle <= N_settle_timings; settle++) + for (p = 1; p <= pop; p++) + { + f++; + if (recr_dist_pattern(gp, settle, p) > 0) + { + recr_dist(y, gp, settle, p) *= recr_dist_parm(f); + if (gender == 2) + recr_dist(y, gp + N_GP, settle, p) *= recr_dist_parm(f); + } + } + } + break; + } + case 3: + { + for (settle = 1; settle <= N_settle_assignments; settle++) + { + gp = settlement_pattern_rd(settle, 1); + settle_time = settle_assignments_timing(settle); + p = settlement_pattern_rd(settle, 3); + recr_dist(y, gp, settle_time, p) = femfrac(gp) * recr_dist_parm(settle); + if (gender == 2) + recr_dist(y, gp + N_GP, settle_time, p) = femfrac(gp + N_GP) * recr_dist_parm(settle); //males + } + break; + } + case 4: + { + recr_dist(y, 1, 1, 1) = femfrac(1); + if (gender == 2) + recr_dist(y, 2, 1, 1) = femfrac(2); + break; + } + case 1: // only used for sstrans + { + for (gp = 1; gp <= N_GP; gp++) + for (p = 1; p <= pop; p++) + for (s = 1; s <= N_settle_timings; s++) + { + if (recr_dist_pattern(gp, s, p) > 0) + { + recr_dist(y, gp, s, p) = femfrac(gp) * recr_dist_parm(gp) * recr_dist_parm(N_GP + p) * recr_dist_parm(N_GP + pop + s); + if (gender == 2) + recr_dist(y, gp + N_GP, s, p) = femfrac(gp + N_GP) * recr_dist_parm(gp) * recr_dist_parm(N_GP + p) * recr_dist_parm(N_GP + pop + s); //males + } + } + // SS_Label_Info_18.3 #if recr_dist_interaction is chosen, then multiply these in also + if (recr_dist_inx == 1) + { + f = N_GP + nseas + pop; + for (gp = 1; gp <= N_GP; gp++) + for (p = 1; p <= pop; p++) + for (s = 1; s <= N_settle_timings; s++) + { + f++; + if (recr_dist_pattern(gp, s, p) > 0) + { + recr_dist(y, gp, s, p) *= recr_dist_parm(f); + if (gender == 2) + recr_dist(y, gp + N_GP, s, p) *= recr_dist_parm(f); + } + } + } + break; + } + } + // SS_Label_Info_18.4 #scale the recr_dist matrix to sum to 1.0 + recr_dist(y) /= sum(recr_dist(y)); + if (y < YrMax) + { + k = y + 1; + while (timevary_MG(k, 4) == 0 && k <= YrMax) + { + recr_dist(k) = recr_dist(k - 1); + k++; + } + } +// if(y==styr) +// {for(int yz=styr+1; yz<=YrMax;yz++) recr_dist(yz)=recr_dist(styr);} + + #ifdef DO_ONCE + if (do_once == 1) + { + echoinput << "recruitment distribution in year: " << y << endl + << "GP Seas Area Use? female_recr_dist" << endl; + for (gp = 1; gp <= N_GP; gp++) + for (s = 1; s <= N_settle_timings; s++) + for (p = 1; p <= pop; p++) + { + echoinput << gp << " " << s << " " << p << " " << recr_dist_pattern(gp, s, p) << " " << recr_dist(y, gp, s, p); + echoinput << endl; + } + } + #endif + } + +//******************************************************************* + /* SS_Label_Function 19 get_wtlen, maturity, fecundity, hermaphroditism */ +FUNCTION void get_wtlen() + { + // SS_Label_Info_19.1 #set wtlen and maturity/fecundity factors equal to annual values from mgp_adj + gp = 0; + for (gg = 1; gg <= gender; gg++) + for (GPat = 1; GPat <= N_GP; GPat++) + { + gp++; + + for (s = 1; s <= nseas; s++) + { + // SS_Label_Info_19.2 #loop seasons for wt-len calc + t = styr + (y - styr) * nseas + s - 1; + // SS_Label_Info_19.2.1 #calc wt_at_length for each season to include seasonal effects on wtlen + + // NOTES wt_len is by gp, but wt_len2 and wt_len_low have males stacked after females + // so referenced by GPat + + if (gg == 1) + { + if (MGparm_seas_effects(1) > 0 || MGparm_seas_effects(2) > 0) // get seasonal effect on FEMALE wtlen parameters + { + wt_len(s, gp) = (wtlen_p(GPat, 1) * wtlen_seas(s, GPat, 1)) * pow(len_bins_m(1, nlength), (wtlen_p(GPat, 2) * wtlen_seas(s, GPat, 2))); + wt_len_low(s, GPat)(1, nlength) = (wtlen_p(GPat, 1) * wtlen_seas(s, GPat, 1)) * pow(len_bins2(1, nlength), (wtlen_p(GPat, 2) * wtlen_seas(s, GPat, 2))); + } + else + { + wt_len(s, gp) = wtlen_p(GPat, 1) * pow(len_bins_m(1, nlength), wtlen_p(GPat, 2)); + wt_len_low(s, GPat)(1, nlength) = wtlen_p(GPat, 1) * pow(len_bins2(1, nlength), wtlen_p(GPat, 2)); + } + wt_len2(s, GPat)(1, nlength) = wt_len(s, gp)(1, nlength); + } + // SS_Label_Info_19.2.2 #calculate male weight_at_length + else + { + if (MGparm_seas_effects(7) > 0 || MGparm_seas_effects(8) > 0) // get seasonal effect on male wt-len parameters + { + wt_len(s, gp) = (wtlen_p(GPat, 7) * wtlen_seas(s, GPat, 7)) * pow(len_bins_m(1, nlength), (wtlen_p(GPat, 8) * wtlen_seas(s, GPat, 8))); + wt_len_low(s, GPat)(nlength1, nlength2) = (wtlen_p(GPat, 7) * wtlen_seas(s, GPat, 7)) * pow(len_bins2(nlength1, nlength2), (wtlen_p(GPat, 8) * wtlen_seas(s, GPat, 8))); + } + else + { + wt_len(s, gp) = wtlen_p(GPat, 7) * pow(len_bins_m(1, nlength), wtlen_p(GPat, 8)); + wt_len_low(s, GPat)(nlength1, nlength2) = wtlen_p(GPat, 7) * pow(len_bins2(nlength1, nlength2), wtlen_p(GPat, 8)); + } + wt_len2(s, GPat)(nlength1, nlength2) = wt_len(s, gp).shift(nlength1); + wt_len(s, gp).shift(1); + } + + // SS_Label_Info_19.2.3 #calculate first diff of wt_len for use in generalized sizp comp bin calculations + if (gg == gender) + { + wt_len2_sq(s, GPat) = elem_prod(wt_len2(s, GPat), wt_len2(s, GPat)); + wt_len_fd(s, GPat) = first_difference(wt_len_low(s, GPat)); + if (gender == 2) + wt_len_fd(s, GPat, nlength) = wt_len_fd(s, GPat, nlength - 1); + #ifdef DO_ONCE + if (do_once == 1) + echoinput << "wtlen2 " << endl + << wt_len2 << endl + << "wtlen2^2 " << wt_len2_sq << endl + << "wtlen2:firstdiff " << wt_len_fd << endl; + #endif + } + } + } + } +FUNCTION void get_mat_fec(); + { + // SS_Label_Info_19.2.4 #calculate maturity and fecundity if seas = spawn_seas + // these calculations are done in spawn_seas, but are not affected by spawn_time within that season + // so age-specific inputs will assume to be at correct timing already; size-specific will later be adjusted to use size-at-age at the exact correct spawn_time_seas + // SPAWN-RECR: calculate maturity and fecundity vectors + + make_mature_numbers.initialize(); + int s = spawn_seas; // makes a local version of "s" as this gets called inside a "s" loop + int ALK_idx = (spawn_seas - 1) * N_subseas + spawn_subseas; + + for (g = 1; g <= gmorph; g++) + if (sx(g) == 1 && use_morph(g) > 0) + { + GPat = GP4(g); + gg = sx(g); + gp = GPat; // + if (WTage_rd == 1) + { + fec(g) = Wt_Age_t(t, -2, g); + make_mature_numbers(g)(First_Mature_Age, nages) = 1.0; + // all other vectors set to contant value of 0.5 + } + else + { + if (do_fec_len == 1) + { + // make fecundity from biology + + if (do_once == 1) + echoinput << "fecundity option: " << Fecund_Option << " parms: " << wtlen_p(GPat)(5, 6) << endl; + // fec_len should only get calculated in maturity option = 1, 2, 3, or 6 + // maturity option 4 and 5 bypass maturity and read empirical fecundity-at-age + + switch (Fecund_Option) + { + case 1: // as eggs/kg (SS original configuration) + { + fec_len(gp) = wtlen_p(GPat, 5) + wtlen_p(GPat, 6) * wt_len(s, gp); + fec_len(gp) = elem_prod(wt_len(s, gp), fec_len(gp)); + break; + } + case 2: + { // as eggs = f(length) + fec_len(gp) = wtlen_p(GPat, 5) * pow(len_bins_m, wtlen_p(GPat, 6)); + break; + } + case 3: + { // as eggs = f(body weight) + fec_len(gp) = wtlen_p(GPat, 5) * pow(wt_len(s, gp), wtlen_p(GPat, 6)); + break; + } + case 4: + { // as eggs = a + b*Len + fec_len(gp) = wtlen_p(GPat, 5) + wtlen_p(GPat, 6) * len_bins_m; + if (wtlen_p(GPat, 5) < 0.0) + { + z = 1; + while (fec_len(gp, z) < 0.0) + { + fec_len(gp, z) = 0.0; + z++; + } + } + break; + } + case 5: + { // as eggs = a + b*Wt + fec_len(gp) = wtlen_p(GPat, 5) + wtlen_p(GPat, 6) * wt_len(s, gp); + if (wtlen_p(GPat, 5) < 0.0) + { + z = 1; + while (fec_len(gp, z) < 0.0) + { + fec_len(gp, z) = 0.0; + z++; + } + } + break; + } + } + } + if (do_once == 1) + echoinput << "maturity option: " << Maturity_Option << " parms: " << wtlen_p(GPat)(3, 4) << endl; + + switch (Maturity_Option) + { + case 1: // Maturity_Option=1 length logistic + { + mat_len(GPat) = 1. / (1. + mfexp(wtlen_p(GPat, 4) * (len_bins_m(1, nlength) - wtlen_p(GPat, 3)))); + mat_fec_len(gp) = elem_prod(mat_len(gp), fec_len(gp)); + make_mature_numbers(g)(First_Mature_Age, nages) = 1.0; + make_mature_numbers(g) = elem_prod(make_mature_numbers(g), ALK(ALK_idx, g) * mat_len(GPat)); // covers both age and length dimension + break; + } + case 2: // Maturity_Option=2 age logistic + { + mat_age(GPat)(0, First_Mature_Age) = 0.0; + mat_age(GPat)(First_Mature_Age, nages) = 1. / (1. + mfexp(wtlen_p(GPat, 4) * (r_ages(First_Mature_Age, nages) - wtlen_p(GPat, 3)))); + mat_fec_len(gp) = elem_prod(mat_len(gp), fec_len(gp)); + make_mature_numbers(g) = mat_age(GPat); + break; + } + case 3: // Maturity_Option=3 read age-maturity + { + mat_age(GPat) = Age_Maturity(GPat); + mat_fec_len(gp) = elem_prod(mat_len(gp), fec_len(gp)); + make_mature_numbers(g) = mat_age(GPat); + break; + } + case 4: // Maturity_Option=4 read age-fecundity, so no age-maturity + { + if (do_once == 1) + echoinput << "age-fecundity as read from control file" << endl + << Age_Maturity(gp) << endl; + break; + } + case 6: // Maturity_Option=6 read length-maturity + { + mat_len(GPat) = Length_Maturity(GPat); + mat_fec_len(gp) = elem_prod(mat_len(gp), fec_len(gp)); + make_mature_numbers(g)(First_Mature_Age, nages) = 1.0; + make_mature_numbers(g) = elem_prod(make_mature_numbers(g), ALK(ALK_idx, g) * mat_len(GPat)); // covers both age and length dimension + break; + } + case 5: // Maturity_Option=5 read age-fecundity from wtatage.ss disabled different flag now used + { + break; + } + } + switch (Maturity_Option) + { + case 4: // Maturity_Option=4 read age-fecundity into age-maturity + { + fec(g) = Age_Maturity(GPat); + make_mature_numbers(g) = fec(g); // not defined + make_mature_bio(g) = fec(g); // not defined + break; + } + case 5: // Maturity_Option=5 read age-fecundity from wtatage.ss + { + fec(g) = Wt_Age_t(t, -2, GP3(g)); + make_mature_numbers(g) = fec(g); // not defined + make_mature_bio(g) = fec(g); // not defined + break; + } + default: + { + for (a = First_Mature_Age; a <= nages; a++) + { + tempvec_a(a) = ALK(ALK_idx, g, a)(1, nlength) * mat_fec_len(GPat)(1, nlength); + } + fec(g)(First_Mature_Age, nages) = elem_prod(tempvec_a(First_Mature_Age, nages), mat_age(GPat)(First_Mature_Age, nages)); // reproductive output at age + make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age + make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age + } + } + if (t >= styr && WTage_rd == 0) + Wt_Age_t(t, -2, g) = fec(g); // save sel_num and save fecundity for output + if (y == endyr && WTage_rd == 0) + Wt_Age_t(t + nseas, -2, g) = fec(g); + #ifdef DO_ONCE + if (do_once == 1) + { + echoinput << "gp: " << GPat << " g " << g << endl + << "mat_len: " << mat_len(GPat) << endl + << " fec_len: " << fec_len(GPat) << endl + << " mat_fec_len: " << mat_fec_len(GPat) << endl + << " mat_age: " << mat_age(GPat) << endl + << " mat_len_age: " << make_mature_numbers(g) << endl + << " fecundity_age: " << fec(g) << endl; + } + #endif + } + } // end g loop + // end maturity and fecundity in spawn_seas + } + +FUNCTION void get_Hermaphro() + { + // SS_Label_Info_19.2.5 #Do Hermaphroditism (no seasonality and no gp differences) + // should build seasonally component here + // only one hermaphroditism definition is allowed (3 parameters), but it is stored by Gpat, so referenced by GP4(g) + dvariable infl; // inflection + dvariable stdev; // standard deviation + dvariable maxval; // max value + + infl = mgp_adj(MGparm_Hermaphro); // inflection + stdev = mgp_adj(MGparm_Hermaphro + 1); // standard deviation + maxval = mgp_adj(MGparm_Hermaphro + 2); // max value + Hermaphro_val.initialize(); + // minval is 0.0; + temp2 = cumd_norm((0.0 - infl) / stdev); // cum_norm at age 0 // could change to Hermaphro_firstage + temp = maxval / (cumd_norm((r_ages(nages) - infl) / stdev) - temp2); // delta in cum_norm between styr and endyr + for (a = Hermaphro_firstage; a <= nages; a++) + { + Hermaphro_val(1, a) = 0.0 + temp * (cumd_norm((r_ages(a) - infl) / stdev) - temp2); + } + if (N_GP > 1) + { + for (gp = 2; gp <= N_GP; gp++) + { + Hermaphro_val(gp) = Hermaphro_val(1); + } + } + return; + } + +FUNCTION void get_migration() + { + //******************************************************************* + // SS_Label_FUNCTION 20 #get_migration + Ip = MGP_CGD; // base counter for movement parms + // SS_Label_20.1 loop the needed movement rates + for (k = 1; k <= do_migr2; k++) // loop all movement rates for this year (includes seas, morphs) + { + t = styr + (yz - styr) * nseas + move_def2(k, 1) - 1; + if (k <= do_migration) // so an explicit movement rate + { + // set some movement rates same as the first movement rate + if (mgp_adj(Ip + 1) == -9999.) + mgp_adj(Ip + 1) = mgp_adj(MGP_CGD + 1); + if (mgp_adj(Ip + 2) == -9999.) + mgp_adj(Ip + 2) = mgp_adj(MGP_CGD + 2); + // set movement rate same for all ages + if (mgp_adj(Ip + 2) == -9998.) + mgp_adj(Ip + 2) = mgp_adj(Ip + 1); + + // SS_Label_Info_20.1.1 #age-specific movement strength based on parameters for selected area pairs + temp = 1. / (move_def2(k, 6) - move_def2(k, 5)); + temp1 = temp * (mgp_adj(Ip + 2) - mgp_adj(Ip + 1)); + for (a = 0; a <= nages; a++) + { + if (a <= move_def2(k, 5)) + { + migrrate(yz, k, a) = mgp_adj(Ip + 1); + } + else if (a >= move_def2(k, 6)) + { + migrrate(yz, k, a) = mgp_adj(Ip + 2); + } + else + { + migrrate(yz, k, a) = mgp_adj(Ip + 1) + (r_ages(a) - move_def2(k, 5)) * temp1; + } + } // end age loop + migrrate(yz, k) = mfexp(migrrate(yz, k)); + Ip += 2; + } + else + // SS_Label_Info_20.1.2 #default movement strength =1.0 for other area pairs + { + migrrate(yz, k) = 1.; + } + } + + // SS_Label_Info_20.2 #loop seasons, GP, source areas + for (s = 1; s <= nseas; s++) + { + t = styr + (yz - styr) * nseas + s - 1; + for (gp = 1; gp <= N_GP; gp++) + { + for (p = 1; p <= pop; p++) + { + tempvec_a.initialize(); // zero out the summation vector + for (p2 = 1; p2 <= pop; p2++) + { + // SS_Label_Info_20.2.1 #for each destination area, adjust movement rate by season duration and sum across all destination areas + k = move_pattern(s, gp, p, p2); + if (k > 0) + { + if (p2 != p && nseas > 1) + migrrate(yz, k) *= seasdur(move_def2(k, 1)); // fraction leaving an area is reduced if the season is short + tempvec_a += migrrate(yz, k); // sum of all movement weights for the p2 fish + } + } //end destination area + // SS_Label_Info_20.2.2 #now normalize for all movement from source area p + for (p2 = 1; p2 <= pop; p2++) + { + k = move_pattern(s, gp, p, p2); + if (k > 0) + { + migrrate(yz, k) = elem_div(migrrate(yz, k), tempvec_a); + // SS_Label_Info_20.2.3 #Set rate to 0.0 (or 1.0 for stay rates) below the start age for migration + if (migr_start(s, gp) > 0) + { + if (p != p2) + { + migrrate(yz, k)(0, migr_start(s, gp) - 1) = 0.0; + } + else + { + migrrate(yz, k)(0, migr_start(s, gp) - 1) = 1.0; + } + } + } + } + } // end source areas loop + } // end growth pattern + } // end season + + // SS_Label_Info_20.2.4 #Copy annual migration rates forward until first year with time-varying migration rates + if (yz < YrMax) + { + k = yz + 1; + while (timevary_MG(k, 5) == 0 && k <= YrMax) + { + migrrate(k) = migrrate(k - 1); + k++; + } + } + // end migration + return; + } + +FUNCTION void get_migration2() + { + //******************************************************************* + // SS_Label_FUNCTION 20 #get_migration + // for use with new movement approach + // each defined movedef rate (1 to do_migr2) has a min age, max age, functional form + // each move_pattern(GP, sex, settlement, seas, source, sink) selects rate it uses + // so all could point to just 1 rate definition, or a complex setup could be created + // to ease creation of setups of moderate complexity, use 0 to select all of that dimension + // for example, 0 in the sex field would assign the specified rate to both sexes + // for example, 0 in all fields would assign the same rate to everything + + Ip = MGP_CGD; // base counter for movement parms + dvariable move1; // movement rate for young fish + dvariable move2; // movement rate for old fish + + // SS_Label_20.1 loop the needed movement rates + for (k = 1; k <= do_migr2; k++) // loop all movement rates for this year (includes seas, morphs) + { + // seems not used t=styr+(yz-styr)*nseas+move_def2(k,1)-1; + if (k <= do_migration) // so an explicit movement rate + { + // set some movement rates same as the first movement rate + move1 = mgp_adj(Ip + 1); + if (mgp_adj(Ip + 1) == -9999.) + move1 = mgp_adj(MGP_CGD + 1); + move2 = mgp_adj(Ip + 1); + if (mgp_adj(Ip + 2) == -9999.) + move2 = mgp_adj(MGP_CGD + 2); + // set movement rate same for all ages + if (mgp_adj(Ip + 2) == -9998.) + move2 = move1; + + // SS_Label_Info_20.1.1 #age-specific movement strength based on parameters for selected area pairs + temp = 1. / (move_def2(k, 6) - move_def2(k, 5)); + temp1 = temp * (move2 - move1); + migrrate(yz, k) = move1 + (r_ages - move_def2(k, 5)) * temp1; + migrrate(yz, k)(0, move_def2(k, 5)) = move1; + migrrate(yz, k)(move_def2(k, 5), nages) = move2; + migrrate(yz, k) = mfexp(migrrate(yz, k)); + Ip += 2; + } + else + // SS_Label_Info_20.1.2 #default movement strength =1.0 for other area pairs + { + migrrate(yz, k) = 1.; + } + } + + // SS_Label_Info_20.2 #loop seasons, GP, source areas + for (s = 1; s <= nseas; s++) + { + t = styr + (yz - styr) * nseas + s - 1; + for (gp = 1; gp <= N_GP; gp++) + { + for (p = 1; p <= pop; p++) + { + tempvec_a.initialize(); // zero out the summation vector + for (p2 = 1; p2 <= pop; p2++) + { + // SS_Label_Info_20.2.1 #for each destination area, adjust movement rate by season duration and sum across all destination areas + k = move_pattern(s, gp, p, p2); + if (k > 0) + { + if (p2 != p && nseas > 1) + migrrate(yz, k) *= seasdur(move_def2(k, 1)); // fraction leaving an area is reduced if the season is short + tempvec_a += migrrate(yz, k); // sum of all movement weights for the p2 fish + } + } //end destination area + // SS_Label_Info_20.2.2 #now normalize for all movement from source area p + for (p2 = 1; p2 <= pop; p2++) + { + k = move_pattern(s, gp, p, p2); + if (k > 0) + { + migrrate(yz, k) = elem_div(migrrate(yz, k), tempvec_a); + // SS_Label_Info_20.2.3 #Set rate to 0.0 (or 1.0 for stay rates) below the start age for migration + if (migr_start(s, gp) > 0) + { + if (p != p2) + { + migrrate(yz, k)(0, migr_start(s, gp) - 1) = 0.0; + } + else + { + migrrate(yz, k)(0, migr_start(s, gp) - 1) = 1.0; + } + } + } + } + } // end source areas loop + } // end growth pattern + } // end season + + // SS_Label_Info_20.2.4 #Copy annual migration rates forward until first year with time-varying migration rates + if (yz < endyr) + { + k = yz + 1; + while (timevary_MG(k, 5) == 0 && k <= endyr) + { + migrrate(k) = migrrate(k - 1); + k++; + } + } + // end migration + return; + } + +FUNCTION void get_saveGparm() + { + //********************************************************************* + /* SS_Label_Function_21 #get_saveGparm */ + gp = 0; + for (gg = 1; gg <= gender; gg++) + for (GPat = 1; GPat <= N_GP; GPat++) + { + gp++; + g = g_Start(gp); // base platoon + for (settle = 1; settle <= N_settle_timings; settle++) + { + g += N_platoon; + save_gparm++; + save_G_parm(save_gparm, 1) = save_gparm; + save_G_parm(save_gparm, 2) = y; + save_G_parm(save_gparm, 3) = g; + save_G_parm(save_gparm, 4) = AFIX; + save_G_parm(save_gparm, 5) = AFIX2; + save_G_parm(save_gparm, 6) = value(Lmin(gp)); + save_G_parm(save_gparm, 7) = value(Lmax_temp(gp)); + if (do_ageK == 1) + { + save_G_parm(save_gparm, 8) = value(-VBK(gp, nages) * VBK_seas(0)); + save_G_parm(save_gparm, 9) = value(-log(L_inf(gp) / (L_inf(gp) - Lmin(gp))) / (-VBK(gp, nages) * VBK_seas(0)) + AFIX + azero_G(g)); + } + else + { + save_G_parm(save_gparm, 8) = value(-VBK(gp, 0) * VBK_seas(0)); + save_G_parm(save_gparm, 9) = value(-log(L_inf(gp) / (L_inf(gp) - Lmin(gp))) / (-VBK(gp, 0) * VBK_seas(0)) + AFIX + azero_G(g)); + } + + save_G_parm(save_gparm, 10) = value(L_inf(gp)); + save_G_parm(save_gparm, 11) = value(CVLmin(gp)); + save_G_parm(save_gparm, 12) = value(CVLmax(gp)); + save_G_parm(save_gparm, 13) = natM_amin; + save_G_parm(save_gparm, 14) = natM_amax; + save_G_parm(save_gparm, 15) = value(natM(t_base+1, 0, GP3(g), 0)); + save_G_parm(save_gparm, 16) = value(natM(t_base+1, 0, GP3(g), nages)); + if (gg == 1) + { + for (k = 1; k <= 6; k++) + save_G_parm(save_gparm, 16 + k) = value(wtlen_p(GPat, k)); + } + else + { + for (k = 1; k <= 2; k++) + save_G_parm(save_gparm, 16 + k) = value(wtlen_p(GPat, k + 6)); + } + save_gparm_print = save_gparm; + } + if (MGparm_doseas > 0) + { + for (s = 1; s <= nseas; s++) + { + for (k = 1; k <= 8; k++) + { + save_seas_parm(s, k) = value(wtlen_p(GPat, k) * wtlen_seas(s, GPat, k)); + } + save_seas_parm(s, 9) = value(Lmin(1)); + if (Grow_type <= 2 || Grow_type == 8) + save_seas_parm(s, 10) = value(VBK(1, 0) * VBK_seas(s)); + if (Grow_type >= 3 && Grow_type <= 5) + save_seas_parm(s, 10) = value(VBK(1, nages) * VBK_seas(s)); + } + } + } + } // end save_gparm + +// this function is no longer used. It has been moved into get_mat_fec() + +FUNCTION void Make_Fecundity() + { + //******************************************************************** + // this Make_Fecundity function does the dot product of the distribution of length-at-age (ALK) with maturity and fecundity vectors + // to calculate the mean fecundity at each age + // SS_Label_31.1 FUNCTION Make_Fecundity + // SPAWN-RECR: here is the make_Fecundity function + fec.initialize(); + ALK_idx = (spawn_seas - 1) * N_subseas + spawn_subseas; + for (g = 1; g <= gmorph; g++) + if (sx(g) == 1 && use_morph(g) > 0) + { + GPat = GP4(g); + gg = sx(g); + switch (Maturity_Option) + { + case 4: // Maturity_Option=4 read age-fecundity into age-maturity + { + fec(g) = Age_Maturity(GPat); + break; + } + case 5: // Maturity_Option=5 read age-fecundity from wtatage.ss + { + fec(g) = Wt_Age_t(t, -2, GP3(g)); + break; + } + default: + { + for (a = First_Mature_Age; a <= nages; a++) + { + tempvec_a(a) = ALK(ALK_idx, g, a)(1, nlength) * mat_fec_len(GPat)(1, nlength); + } + fec(g)(First_Mature_Age, nages) = elem_prod(tempvec_a(First_Mature_Age, nages), mat_age(GPat)(First_Mature_Age, nages)); // reproductive output at age + } + } + if (t >= styr) + Wt_Age_t(t, -2, g) = fec(g); // save sel_num and save fecundity for output + if (y == endyr) + Wt_Age_t(t + nseas, -2, g) = fec(g); + + if (bigsaver == 1) + { + switch (Maturity_Option) + { + case 1: // Maturity_Option=1 length logistic + { + make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age + make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age + + break; + } + case 2: // Maturity_Option=2 age logistic + { + make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age + make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age + break; + } + case 3: // Maturity_Option=3 read age-maturity + { + make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age (Age_Maturity already copied to mat_age) + make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age + break; + } + case 4: // Maturity_Option=4 read age-fecundity, so no age-maturity + { + make_mature_numbers(g) = fec(g); // not defined + make_mature_bio(g) = fec(g); // not defined + break; + } + case 5: // Maturity_Option=5 read age-fecundity from wtatage.ss + { + make_mature_numbers(g) = fec(g); // not defined + make_mature_bio(g) = fec(g); // not defined + break; + } + case 6: // Maturity_Option=6 read length-maturity + { + make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age (Length_Maturity already copied to mat_len) + make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age + break; + } + } + } + } + } +// SS_Label_file #10. **SS_miscfxn.tpl** +// SS_Label_file # * Join_Fxn() // joins line segments in differentiable way +// SS_Label_file # * get_age_age() // for ageing error +// SS_Label_file # * get_catch_mult() +// SS_Label_file # + +//******************************************************************** + /* SS_Label_FUNCTION 42 Join_Fxn */ +FUNCTION dvariable Join_Fxn(const prevariable& MinPoss, const prevariable& MaxPoss, const prevariable& Inflec, const prevariable& Xvar, const prevariable& Y1, const prevariable& Y2) + { + RETURN_ARRAYS_INCREMENT(); + dvariable Yresult; + dvariable join; + join = 1.000 / (1.000 + mfexp(1000.0 * (Xvar - Inflec) / (MaxPoss - MinPoss))); // steep joiner at the inflection + Yresult = Y1 * (join) + Y2 * (1.000 - join); + RETURN_ARRAYS_DECREMENT(); + return Yresult; + } + +//******************************************************************** + /* SS_Label_FUNCTION 45 get_age_age */ +FUNCTION void get_age_age(const int Keynum, const int AgeKey_StartAge, const int AgeKey_Linear1, const int AgeKey_Linear2) + { + // FUTURE: calculate adjustment to oldest age based on continued ageing of old fish + age_age(Keynum).initialize(); + dvariable age; + dvar_vector age_err_parm(1, 7); + dvariable temp; + + if (Keynum == Use_AgeKeyZero) + { + // SS_Label_45.1 set age_err_parm to mgp_adj, so can be time-varying according to MGparm options + for (a = 1; a <= 7; a++) + { + age_err_parm(a) = mgp_adj(AgeKeyParm - 1 + a); + } + age_err(Use_AgeKeyZero, 1)(0, AgeKey_StartAge) = r_ages(0, AgeKey_StartAge) + 0.5; + age_err(Use_AgeKeyZero, 2)(0, AgeKey_StartAge) = age_err_parm(5) * (r_ages(0, AgeKey_StartAge) + 0.5) / (age_err_parm(1) + 0.5); + // SS_Label_45.3 calc ageing bias + if (AgeKey_Linear1 == 0) + { + age_err(Use_AgeKeyZero, 1)(AgeKey_StartAge, nages) = 0.5 + r_ages(AgeKey_StartAge, nages) + age_err_parm(2) + (age_err_parm(3) - age_err_parm(2)) * (1.0 - mfexp(-age_err_parm(4) * (r_ages(AgeKey_StartAge, nages) - age_err_parm(1)))) / (1.0 - mfexp(-age_err_parm(4) * (r_ages(nages) - age_err_parm(1)))); + } + else + { + age_err(Use_AgeKeyZero, 1)(AgeKey_StartAge, nages) = 0.5 + r_ages(AgeKey_StartAge, nages) + age_err_parm(2) + (age_err_parm(3) - age_err_parm(2)) * (r_ages(AgeKey_StartAge, nages) - age_err_parm(1)) / (r_ages(nages) - age_err_parm(1)); + } + // SS_Label_45.4 calc ageing variance + if (AgeKey_Linear2 == 0) + { + age_err(Use_AgeKeyZero, 2)(AgeKey_StartAge, nages) = age_err_parm(5) + (age_err_parm(6) - age_err_parm(5)) * (1.0 - mfexp(-age_err_parm(7) * (r_ages(AgeKey_StartAge, nages) - age_err_parm(1)))) / (1.0 - mfexp(-age_err_parm(7) * (r_ages(nages) - age_err_parm(1)))); + } + else + { + age_err(Use_AgeKeyZero, 2)(AgeKey_StartAge, nages) = age_err_parm(5) + (age_err_parm(6) - age_err_parm(5)) * (r_ages(AgeKey_StartAge, nages) - age_err_parm(1)) / (r_ages(nages) - age_err_parm(1)); + } + } + + // SS_Label_45.5 calc distribution of age' for each age + for (a = 0; a <= nages; a++) + { + if (age_err(Keynum, 1, a) <= -1) + { + age_err(Keynum, 1, a) = r_ages(a) + 0.5; + } + age = age_err(Keynum, 1, a); + + for (b = 2; b <= n_abins; b++) // so the lower tail is accumulated into the first age' bin + age_age(Keynum, b, a) = cumd_norm((age_bins(b) - age) / age_err(Keynum, 2, a)); + + for (b = 1; b <= n_abins - 1; b++) + age_age(Keynum, b, a) = age_age(Keynum, b + 1, a) - age_age(Keynum, b, a); + + age_age(Keynum, n_abins, a) = 1. - age_age(Keynum, n_abins, a); // so remainder is accumulated into the last age' bin + } + + if (gender == 2) // copy ageing error matrix into male location also + { + L2 = n_abins; + A2 = nages + 1; + for (b = 1; b <= n_abins; b++) + for (a = 0; a <= nages; a++) + { + age_age(Keynum, b + L2, a + A2) = age_age(Keynum, b, a); + } + } + return; + } // end age_age key + +FUNCTION void get_catch_mult(int y, int catch_mult_pointer) + { + /* SS_Label_FUNCTION 47 catch_multiplier */ + int j; + j = 0; + for (f = 1; f <= Nfleet; f++) + { + if (need_catch_mult(f) == 1) + { + catch_mult(y, f) = mgp_adj(catch_mult_pointer + j); + j++; + } + } + return; + } + +//******************************************************************** + /* SS_Label_FUNCTION 4XX Comp_logL */ +FUNCTION dvariable Comp_logL_multinomial(const double& Nsamp, const dvector& obs_comp, const dvar_vector& exp_comp) + { + dvariable logL; +// logL = - Nsamp * obs_comp(tail_L, tail_H) * log(exp_comp(tail_L, tail_H)); +// the call to this function does the subsetting to tail_L and tail_H, so this function can operate cleanly on the entirety of the passed vector + logL = - Nsamp * obs_comp * log(exp_comp); + return (logL); + } + +FUNCTION dvariable Comp_logL_Dirichlet(const double& Nsamp, const dvariable& dirichlet_Parm, const dvector& obs_comp, const dvar_vector& exp_comp) + { + dvariable logL; + logL = sum(gammln(Nsamp * obs_comp + dirichlet_Parm * exp_comp)) - sum(gammln(dirichlet_Parm * exp_comp)); + return (logL); + } +// SS_Label_file #11. **SS_selex.tpl** +// SS_Label_file # * get_selectivity() // does length and age selectivity and retention for all fleets +// SS_Label_file # * make_fish_selex() // for all fleets in a particular season, does the dot product of length distribution with length selectivity and retention vectors to calculate equivalent mean quantities at age for each platoon + +FUNCTION void get_selectivity() + { + //******************************************************************* + /* SS_Label_Function_22 #get_selectivity */ + // SS_Label_Info_22.01 #define local variables for selectivity + int fs; // = f-Nfleet to allow reference of actual fleet when looping to 2*Nfleet for the age selectivity calculations + int scaling_offset = 0; + dvariable t1; + dvariable t2; + dvariable t3; + dvariable t4; + dvariable Apical_Selex; + dvariable t1min; + dvariable t1max; + dvariable t1power; + dvariable t2min; + dvariable t2max; + dvariable t2power; + dvariable final; + dvariable sel_maxL; + dvariable lastsel; + dvariable lastSelPoint; + dvariable SelPoint; + dvariable finalSelPoint; + dvariable asc; + dvariable dsc; + + dvar_vector sp(1, 199); // temporary vector for selex parms + + Ip = 0; + // SS_Label_Info_22.2 #Loop all fisheries and surveys twice; first for size selectivity, then for age selectivity + for (f = 1; f <= 2 * Nfleet; f++) + { + fs = f - Nfleet; //index for saving age selex in the fleet arrays + // SS_Label_Info_22.2.1 #recalculate selectivity for any fleets or surveys with time-vary flag set for this year + if (timevary_sel(y, f) == 1 || save_for_report > 0) + { // recalculate the selex in this year x type + if (N_selparmvec(f) > 0) // type has parms, so look for adjustments + { + for (j = 1; j <= N_selparmvec(f); j++) + { + if (selparm_timevary(Ip + j) == 0) + { + sp(j) = selparm(Ip + j); + } + else // time-varying + { + sp(j) = parm_timevary(selparm_timevary(Ip + j), y); + + if (parm_adjust_method == 1 && (save_for_report > 0 || do_once == 1)) + { + if (sp(j) > -999 && (sp(j) < selparm_1(Ip + j, 1) || sp(j) > selparm_1(Ip + j, 2))) + { + warnstream << "Adjusted selparm out of base parm bounds. Phase: " << current_phase() << "; Inter: " << niter << "; fleet: " << f << "; base_parm#: " << Ip + j << "; y: " << y << "; min: " << selparm_1(Ip + j, 1) << "; max: " << selparm_1(Ip + j, 2) << "; base: " << selparm(Ip + j) << " timevary_val: " << sp(j) << " " << ParmLabel(firstselparm + Ip + j); + write_message (ADJUST, 0); + } + } + } + } // end j parm loop + if (docheckup == 1 && f <= Nfleet) + echoinput << " len selex parms for fleet: " << f << " " << endl + << sp(1, N_selparmvec(f)) << endl; + if (docheckup == 1 && f > Nfleet) + echoinput << " age selex parms for fleet: " << f - Nfleet << " " << endl + << sp(1, N_selparmvec(f)) << endl; + if (save_for_report > 0 || do_once == 1) + { + for (j = 1; j <= N_selparmvec(f); j++) + save_sp_len(y, f, j) = sp(j); + } + } + + if (f <= Nfleet) // do size selectivity, retention, discard mort + { + for (gg = 1; gg <= gender; gg++) + { + if (gg == 1 || (gg == 2 && seltype(f, 3) >= 3)) + { + // SS_Label_Info_22.3 #Switch on size selectivity type + switch (seltype(f, 1)) // select the selectivity pattern + { + // SS_Label_Info_22.3.0 #case 0 constant size selectivity + case 0: // *********** constant + { + sel = 1.; + break; + } + // SS_Label_Info_22.3.1 #case 1 logistic size selectivity + case 1: + { + if (seltype(f, 3) < 3 || (gg == 1 && seltype(f, 3) == 3) || (gg == 2 && seltype(f, 3) == 4)) // do the primary gender + { + sel = 1. / (1. + mfexp(neglog19 * (len_bins_m - sp(1)) / sp(2))); + } + else // do the offset gender + { + temp = sp(1) + sp(Maleselparm(f)); + temp1 = sp(2) + sp(Maleselparm(f) + 1); + sel = sp(Maleselparm(f) + 2) / (1. + mfexp(neglog19 * (len_bins_m - temp) / temp1)); + } + break; + } + + // SS_Label_Info_22.3.2 #case 2 size selectivity using double_normal_plateau and lots of bells and whistles; old version of 24 available for back compatibility + case 2: + // SS_Label_Info_22.3.24 #case 24 size selectivity using double_normal_plateau and lots of bells and whistles + case 24: + { + if (seltype(f, 3) < 3 || (gg == 1 && seltype(f, 3) == 3) || (gg == 2 && seltype(f, 3) == 4)) + { + peak = sp(1); + upselex = mfexp(sp(3)); + downselex = mfexp(sp(4)); + final = sp(6); + Apical_Selex = 1.; + } + else + { // offset male parameters if seltype(f,3)==3, female parameters if seltype(f,3)==4 + peak = sp(1) + sp(Maleselparm(f)); + upselex = mfexp(sp(3) + sp(Maleselparm(f) + 1)); + downselex = mfexp(sp(4) + sp(Maleselparm(f) + 2)); + if (sp(6) > -999.) + final = sp(6) + sp(Maleselparm(f) + 3); + Apical_Selex = sp(Maleselparm(f) + 4); + } + + if (sp(5) < -1000.) + { + j1 = -1001 - int(value(sp(5))); // selex is nil thru bin j1, so set sp(5) equal to first bin with selex (e.g. -1002 to start selex at bin 2) + sel(1, j1) = 1.0e-06; + } + else + { + j1 = startbin - 1; // start selex at bin equal to min sizecomp databin (=j1+1) + if (sp(5) > -999) + { + point1 = 1.0 / (1.0 + mfexp(-sp(5))); + t1min = mfexp(-(square(len_bins_m(startbin) - peak) / upselex)); // fxn at first bin + } + } + if (sp(6) < -1000.) + { + j2 = -1000 - int(value(sp(6))); // selex is constant beyond this sizebin, so set sp(6) equal to last bin with estimated selex + } + else + { + j2 = nlength; + } + peak2 = peak + binwidth2 + (0.99 * len_bins_m(j2) - peak - binwidth2) / (1. + mfexp(-sp(2))); + if (sp(6) > -999) + { + if (seltype(f, 1) == 24) + { + point2 = Apical_Selex / (1.0 + mfexp(-final)); // The newer way of doing this + } + else + { + point2 = 1.0 / (1.0 + mfexp(-final)); // For back compatibility (old (3.30.18 and earlier) version of pattern 24, now available as 2) + #ifdef DO_ONCE + if (do_once == 1) + { + warnstream << "Selectivity 2 is a back-compatible (SS 3.30.18 and earlier) version of selectivity 24. Recommend using 24."; + write_message (SUGGEST, 0); + } + #endif + } + t2min = mfexp(-(square(len_bins_m(j2) - peak2) / downselex)); // fxn at last bin + } + for (j = j1 + 1; j <= j2; j++) + { + t1 = len_bins_m(j) - peak; + t2 = len_bins_m(j) - peak2; + join1 = 1.0 / (1.0 + mfexp(-(20. * t1 / (1.0 + fabs(t1))))); // note the logit transform on t1 causes range of mfexp to be over -20 to 20 + join2 = 1.0 / (1.0 + mfexp(-(20. * t2 / (1.0 + fabs(t2))))); + if (sp(5) > -999) + { + asc = point1 + (Apical_Selex - point1) * (mfexp(-square(t1) / upselex) - t1min) / (1.0 - t1min); + } + else + { + asc = Apical_Selex * mfexp(-square(t1) / upselex); + } + if (sp(6) > -999) + { + dsc = Apical_Selex + (point2 - Apical_Selex) * (mfexp(-square(t2) / downselex) - 1.0) / (t2min - 1.0); + } + else + { + dsc = Apical_Selex * mfexp(-square(t2) / downselex); + } + sel(j) = asc * (1.0 - join1) + join1 * (Apical_Selex * (1.0 - join2) + dsc * join2); + } + if (startbin > 1 && sp(5) >= -1000.) + { + for (j = 1; j <= startbin - 1; j++) + { + sel(j) = square(len_bins_m(j) / len_bins_m(startbin)) * sel(startbin); + } + } + + if (j2 < nlength) + { + sel(j2 + 1, nlength) = sel(j2); + } + break; + } + + // SS_Label_Info_22.3.3 #case 3 discontinued + case 3: + { + warnstream << "Selectivity pattern 3 discontinued. Use a different pattern."; + write_message (FATAL, 0); // EXIT! + break; + } + + // SS_Label_Info_22.3.4 #case 4 discontinued; use pattern 30 to get spawning biomass + case 4: + { + warnstream << "Selectivity pattern 4 discontinued; use pattern 0 and special survey units 30 in data file instead."; + write_message (FATAL, 0); // EXIT! + break; + } + + // SS_Label_Info_22.3.5 #case 5 mirror another fleets size selectivity for specified bin range + // use only the specified bin range using mirror_mask created upon read + // must refer to a lower numbered type (f) + case 5: + { + sel = elem_prod(mirror_mask(f), sel_l(y, seltype(f, 4), 1)); + break; + } + + // SS_Label_Info_22.3.15 #case 15 mirror another fleets size selectivity for all size bins + case 15: + { + sel = sel_l(y, seltype(f, 4), 1); + break; + } + + // SS_Label_Info_22.3.6 #case 6 non-parametric size selex pattern + // #43 non-parametric size selex scaled by average of values at low bin through high bin + case 43: + scaling_offset = 2; + [[fallthrough]]; + case 6: + { + lastsel = -10.0; // log(selex) for first bin; + lastSelPoint = len_bins_m(1); // first size + finalSelPoint = value(sp(2 + scaling_offset)); // size beyond which selex is constant + SelPoint = value(sp(1 + scaling_offset)); // first size that will get a parameter. Value will get incremented by step interval (temp1) + z = 3 + scaling_offset; // parameter counter + temp1 = (finalSelPoint - SelPoint) / (seltype(f, 4) - 1.0); // step interval + + for (j = 1; j <= nlength; j++) + { + if (len_bins_m(j) < SelPoint) + { + tempvec_l(j) = lastsel + (len_bins_m(j) - lastSelPoint) / (SelPoint - lastSelPoint) * (sp(z) - lastsel); + } + else if (len_bins_m(j) == SelPoint) + { + tempvec_l(j) = sp(z); + lastsel = sp(z); + lastSelPoint = SelPoint; + SelPoint += temp1; + if (SelPoint <= finalSelPoint) + { + z++; + } + else + { + SelPoint = finalSelPoint; + } + } + else if (len_bins_m(j) <= finalSelPoint) + { + lastsel = sp(z); + lastSelPoint = SelPoint; + SelPoint += temp1; + if (SelPoint <= finalSelPoint) + { + z++; + } + else + { + SelPoint = finalSelPoint; + } + tempvec_l(j) = lastsel + (len_bins_m(j) - lastSelPoint) / (SelPoint - lastSelPoint) * (sp(z) - lastsel); + } + else + { + tempvec_l(j) = sp(z); + } + #ifdef DO_ONCE + if (do_once == 1) + echoinput << "selex42 " << j << " " << len_bins_m(j) << " " << SelPoint << " " << tempvec_l(j) << endl; + #endif + } + if (scaling_offset == 0) + { + temp = max(tempvec_l); + } + else + { + int low_bin = int(value(sp(1))); + int high_bin = int(value(sp(2))); + if (low_bin < 1) + { + low_bin = 1; + warnstream << "Selex pattern 43; value for low bin is less than 1, so set to 1 "; + write_message (ADJUST, 0); + } + if (high_bin > nlength) + { + high_bin = nlength; + warnstream << " selex pattern 43; value for high bin is greater than " << nlength << ", so set to " << nlength; + write_message (ADJUST, 0); + } + if (high_bin < low_bin) + high_bin = low_bin; + if (low_bin > high_bin) + low_bin = high_bin; + sp(1) = low_bin; + sp(2) = high_bin; + temp = mean(tempvec_l(low_bin, high_bin)); + scaling_offset = 0; // reset scaling offset + } + sel = mfexp(tempvec_l - temp); + break; + } + + // SS_Label_Info_22.3.7 #case 7 discontinued; use pattern 8 for double logistic + case 7: + { + warnstream << "Selectivity pattern 7 discontinued; use pattern 8 instead for double logistic, but recommend pattern 24. "; + write_message (FATAL, 0); // EXIT! + break; + } + + // SS_Label_Info_22.3.8 #case 8 double logistic with eight parameters + case 8: + + // 1=peak, 2=init, 3=infl, 4=slope, 5=final, 6=infl2, 7=slope2 8=binwidth; Mirror=1===const_above_Linf + { + + #ifdef DO_ONCE + if (do_once == 1) + { + warnstream << "Selectivity pattern 24 is recommended over pattern 8 because it has fewer parameters."; + write_message (SUGGEST, 0); + } + #endif + + t1 = minL + (1. / (1. + mfexp(-sp(3)))) * (sp(1) - minL); // INFL + t1min = 1. / (1. + mfexp(-mfexp(sp(4)) * (minL - t1))) * 0.9999; // asc value at minsize + t1max = 1. / (1. + mfexp(-mfexp(sp(4)) * (sp(1) - t1))) * 1.0001; // asc value at peak + t1power = log(0.5) / log((0.5 - t1min) / (t1max - t1min)); // so the parameter will actual correspond to 50% point + + if (seltype(f, 4) == 0) + { + sel_maxL = maxL; + } + else + { + sel_maxL = Ave_Size(styr, 1, 1, nages); + } + t2 = (sp(1) + sp(8)) + (1. / (1. + mfexp(-sp(6)))) * (sel_maxL - (sp(1) + sp(8))); // INFL + t2min = 1. / (1. + mfexp(-mfexp(sp(7)) * (sp(1) + sp(8) - t2))) * 0.9999; // asc value at peak+ + t2max = 1. / (1. + mfexp(-mfexp(sp(7)) * (sel_maxL - t2))) * 1.0001; // asc value at maxL + t2power = log(0.5) / log((0.5 - t2min) / (t2max - t2min)); + final = 1. / (1. + mfexp(-sp(5))); + for (j = 1; j <= nlength; j++) //calculate the value over length bins + { + join1 = 1. / (1. + mfexp(10. * (len_bins_m(j) - sp(1)))); + join2 = 1. / (1. + mfexp(10. * (len_bins_m(j) - (sp(1) + sp(8))))); + join3 = 1. / (1. + mfexp(10. * (len_bins_m(j) - sel_maxL))); + upselex = sp(2) + (1. - sp(2)) * pow(((1. / (1. + mfexp(-mfexp(sp(4)) * (len_bins_m(j) - t1))) - t1min) / (t1max - t1min)), t1power); + downselex = (1. + (final - 1.) * pow(fabs((((1. / (1. + mfexp(-mfexp(sp(7)) * (len_bins_m(j) - t2))) - t2min) / (t2max - t2min)))), t2power)); + sel(j) = ((((upselex * join1) + 1.0 * (1.0 - join1)) * join2) + downselex * (1 - join2)) * join3 + final * (1 - join3); + } // end size bin loop + break; + } // end New double logistic + + // SS_Label_Info_22.3.9 #case 9 old double logistic with 4 parameters + case 9: + { + k1 = int(value(sp(5))); + if (k1 > 1) + sel(1, k1 - 1) = 0.0; + sel(k1, nlength) = elem_prod((1 / (1 + mfexp(-sp(2) * (len_bins_m(k1, nlength) - sp(1))))), + (1 - 1 / (1 + mfexp(-sp(4) * (len_bins_m(k1, nlength) - (sp(1) * sp(6) + sp(3))))))); + sel += 1.0e-6; + sel /= max(sel); + break; + } + + // SS_Label_Info_22.3.11 #case 11 selex=1.0 within a range of lengths + case 11: + { + sel = mirror_mask(f); // (y,f,1) + break; + } + // SS_Label_Info_22.3.21 #case 21 non-parametric size selectivity + /* N points; where the first N parameters is vector of sizes for the line segment ends + and second N parameters is selectivity at that size (no transformations) */ + case 21: // *******New non-parametric + { + j = 1; + z = 1; + k = seltype(f, 4); // N points + lastsel = 0.0; + lastSelPoint = 0.0; + + #ifdef DO_ONCE + if (do_once == 1) + { + if (sp(k) > len_bins(nlength)) + { + warnstream << "Selex21: cannot have max selpoint > max_pop_lenbin"; + write_message (FATAL, 0); // EXIT! + } + if (sp(k - 1) > len_bins(nlength - 1)) + { + warnstream << "Selex21: should not have selpoint(n-1) > pop_lenbin(nlength-1)"; + write_message (WARN, 0); + } + } + #endif + + while (j <= nlength) + { + if (len_bins(j) <= sp(z)) + { + sel(j) = lastsel + (len_bins(j) - lastSelPoint) / (sp(z) - lastSelPoint) * (sp(z + k) - lastsel); + j++; + } + else if (z <= k) + { + lastSelPoint = sp(z); + lastsel = sp(z + k); + z++; + } + else // for sizes beyond last point + { + sel(j) = sp(k + k); + j++; + } + } + break; + } + + // SS_Label_Info_22.3.22 #case 22 size selectivity using double_normal_plateau (similar to CASAL) + case 22: + { + peak2 = sp(1) + (0.99 * len_bins(nlength) - sp(1)) / (1. + mfexp(-sp(2))); + upselex = mfexp(sp(3)); + downselex = mfexp(sp(4)); + for (j = 1; j <= nlength; j++) + { + t1 = len_bins_m(j); + if (t1 < sp(1)) + { + sel(j) = mfexp(-square(t1 - sp(1)) / upselex); + } + else if (t1 <= peak2) + { + sel(j) = 1.0; + } + else + { + sel(j) = mfexp(-square(t1 - peak2) / downselex); + } + } + break; + } + + // SS_Label_Info_22.3.23 #case 23 size selectivity double_normal_plateau where final value can be greater than 1.0 + /* cannot be used with Pope's because can cause selex to be >1.0 */ + case 23: + { + if (seltype(f, 3) < 3 || (gg == 1 && seltype(f, 3) == 3) || (gg == 2 && seltype(f, 3) == 4)) + { + peak = sp(1); + upselex = mfexp(sp(3)); + downselex = mfexp(sp(4)); + final = sp(6); + } + else + { // offset male parameters if seltype(f,3)==3 + peak = sp(1) + sp(Maleselparm(f)); + upselex = mfexp(sp(3) + sp(Maleselparm(f) + 1)); + downselex = mfexp(sp(4) + sp(Maleselparm(f) + 2)); + if (sp(6) > -999.) + final = sp(6) + sp(Maleselparm(f) + 3); + } + + if (sp(5) < -1000.) + { + j1 = -1001 - int(value(sp(5))); // selex is nil thru bin j1, so set sp(5) equal to first bin with selex (e.g. -1002 to start selex at bin 2) + sel(1, j1) = 1.0e-06; + } + else + { + j1 = startbin - 1; // start selex at bin equal to min sizecomp databin (=j1+1) + if (sp(5) > -999) + { + point1 = 1.0 / (1.0 + mfexp(-sp(5))); + t1min = mfexp(-(square(len_bins_m(startbin) - peak) / upselex)); // fxn at first bin + } + } + if (sp(6) < -1000.) + { + j2 = -1000 - int(value(sp(6))); // selex is constant beyond this sizebin, so set sp(6) equal to last bin with estimated selex + } + else + { + j2 = nlength; + } + peak2 = peak + binwidth2 + (0.99 * len_bins_m(j2) - peak - binwidth2) / (1. + mfexp(-sp(2))); + if (sp(6) > -999) + { + point2 = final; + t2min = mfexp(-(square(len_bins_m(j2) - peak2) / downselex)); // fxn at last bin + } + for (j = j1 + 1; j <= j2; j++) + { + t1 = len_bins_m(j) - peak; + t2 = len_bins_m(j) - peak2; + join1 = 1.0 / (1.0 + mfexp(-(20. * t1 / (1.0 + fabs(t1))))); // note the logit transform on t1 causes range of mfexp to be over -20 to 20 + join2 = 1.0 / (1.0 + mfexp(-(20. * t2 / (1.0 + fabs(t2))))); + if (sp(5) > -999) + { + asc = point1 + (1.0 - point1) * (mfexp(-square(t1) / upselex) - t1min) / (1.0 - t1min); + } + else + { + asc = mfexp(-square(t1) / upselex); + } + if (sp(6) > -999) + { + dsc = 1.0 + (point2 - 1.0) * (mfexp(-square(t2) / downselex) - 1.0) / (t2min - 1.0); + } + else + { + dsc = mfexp(-square(t2) / downselex); + } + sel(j) = asc * (1.0 - join1) + join1 * (1.0 - join2 + dsc * join2); + } + if (startbin > 1 && sp(5) >= -1000.) + { + for (j = 1; j <= startbin - 1; j++) + { + sel(j) = square(len_bins_m(j) / len_bins_m(startbin)) * sel(startbin); + } + } + + if (j2 < nlength) + { + sel(j2 + 1, nlength) = sel(j2); + } + break; + } + + // SS_Label_Info_22.3.25 #case 25 size selectivity using exponential-logistic + case 25: + { + peak = len_bins_m(1) + sp(2) * (len_bins_m(nlength) - len_bins_m(1)); + for (j = 1; j <= nlength; j++) + { + sel(j) = mfexp(sp(3) * sp(1) * (peak - len_bins_m(j))) / (1.0 - sp(3) * (1.0 - mfexp(sp(1) * (peak - len_bins_m(j))))); + } + break; + } + + // SS_Label_Info_22.3.27 #case 27 size selectivity using cubic spline + // #42 size selectivity using cubic spline scaled by average of values at low bin through high bin + /* first N parameters are the spline knots; second N parameters are ln(selex) at the knot */ + /* uses max(raw vector) to achieve scale to 1.0 */ + case 42: + scaling_offset = 2; + [[fallthrough]]; + case 27: + { + int j2; + // define vectors which form the basis for cubic spline selectivity + // IMPORTANT: these vectors might need to be expanded to fit values for multiple fleets + dvector splineX(1, 200); + dvar_vector splineY(1, 200); + splineX.initialize(); + splineY.initialize(); + k = seltype(f, 4); // n points to include in cubic spline + for (i = 1; i <= k; i++) + { + splineX(i) = value(sp(i + 3 + scaling_offset)); // "value" required to avoid error, but values should be always fixed anyway + splineY(i) = sp(i + 3 + k + scaling_offset); + } + // calculate last size bin before first knot + z = 1; + while (len_bins_m(z) < splineX(1)) + { + z++; + } + j1 = z - 1; // last size bin before first knot + // calculate first size bin beyond last knot + z = nlength; + while (len_bins_m(z) > splineX(k)) + { + z--; + } + j2 = z + 1; // first size bin beyond last knot + + vcubic_spline_function splinefn = vcubic_spline_function(splineX(1, k), splineY(1, k), sp(2 + scaling_offset), sp(3 + scaling_offset)); + tempvec_l = splinefn(len_bins_m); // interpolate selectivity at the mid-point of each population size bin + if (scaling_offset == 0) + { + temp = max(tempvec_l(1, j2)); + // if spline code on first parameter line is 10, 11, or 12, then + // scale only based on interval between knots (unless first knot is at first bin) + if ((sp(1) >= 10) & (j1 >= 1)) + { + temp = max(tempvec_l(j1, j2)); + } + } + else + { + int low_bin = int(value(sp(1))); + int high_bin = int(value(sp(2))); + if (low_bin < 1) + { + low_bin = 1; + warnstream << "Selex pattern 42; value for low bin is less than 1, so set to 1 "; + write_message (ADJUST, 0); + } + if (high_bin > nlength) + { + high_bin = nlength; + warnstream << "Selex pattern 42; value for high bin is greater than " << nlength << ", so set to " << nlength; + write_message (ADJUST, 0); + } + if (high_bin < low_bin) + high_bin = low_bin; + if (low_bin > high_bin) + low_bin = high_bin; + sp(1) = low_bin; + sp(2) = high_bin; + temp = mean(tempvec_l(low_bin, high_bin)); + } + tempvec_l -= temp; // rescale to get max of 0.0 + tempvec_l(j2 + 1, nlength) = tempvec_l(j2); // set constant above last knot + sel = mfexp(tempvec_l); + // if spline code on third parameter line is 10, 11, or 12, then + // set to zero before the first knot (unless first knot is at first bin) + if ((sp(1 + scaling_offset) >= 10) & (j1 >= 1)) + { + sel(1, j1) = 0; // set to 0 before first knot + } + scaling_offset = 0; // reset scaling offset + break; + } // end length-based cubic spline (type 42 or 27) + case 30: + { + warnstream << "Selectivity pattern 30 not valid. Please set up in survey units instead and use pattern 0 for selectivity."; + write_message (FATAL, 0); // EXIT! + break; + } + default: // Selectivity pattern not found + { + warnstream << "Length Selectivity Pattern " << seltype(f, 1) << " not valid."; + write_message (FATAL, 0); // EXIT! + break; + } + } // end select the selectivity pattern + sel_l(y, f, gg) = sel; // Store size-selex in year*type array + } // end direct calc of selex from parameters + + // SS_Label_Info_22.4 #Do male relative to female selex + if (gg == 2) // males exist and am now in the male loop + { + if (seltype(f, 1) == 4) + { + sel_l(y, f, 2) = 0.; + } // set males to zero for spawning biomass + else if (seltype(f, 1) == 5) // set males equal to mirrored males + { + // i=int(value(sp(1))); if(i<=0) i=1; + // j=int(value(sp(2))); if(j<=0) j=nlength; + sel_l(y, f, 2) = elem_prod(mirror_mask(f), sel_l(y, seltype(f, 4), 2)); + } + else if (seltype(f, 1) == 15) // set males equal to mirrored males + { + sel_l(y, f, 2) = sel_l(y, seltype(f, 4), 2); + } + else if (seltype(f, 3) == 1 || seltype(f, 3) == 2) // do gender selex as offset + { + // k=seltype_Nparam(seltype(f,1)) + 1; + // if(seltype(f,2)>0) k+=seltype(f,2)*4; // first gender offset parm (skip over the retention parameters + // if(seltype(f,1)==6) k += seltype(f,4); // for non-parametric in which N parm is stored in special column + k = Maleselparm(f); + temp = sp(k); + temp1 = 1.; + switch (seltype(f, 3)) + { + case 1: + { // do males relative to females + for (j = 1; j <= nlength; j++) + { + if (len_bins_m(j) <= temp) + { + sel(j) *= mfexp(sp(k + 1) + (len_bins_m(j) - minL_m) / (temp - minL_m) * (sp(k + 2) - sp(k + 1))); + } + else + { + sel(j) *= mfexp(sp(k + 2) + (len_bins_m(j) - temp) / (maxL - temp) * (sp(k + 3) - sp(k + 2))); + } + // if(sel(j)>temp1) temp1=sel(j); + } + sel_l(y, f, 2) = sel; + tempvec_a(1) = max(sel_l(y, f, 1)); + tempvec_a(2) = max(sel_l(y, f, 2)); + temp1 = max(tempvec_a(1, 2)); + sel_l(y, f) /= temp1; + break; + } + case 2: + { // do females relative to males + sel_l(y, f, 2) = sel; + for (j = 1; j <= nlength; j++) + { + if (len_bins_m(j) <= temp) + { + sel(j) *= mfexp(sp(k + 1) + (len_bins_m(j) - minL_m) / (temp - minL_m) * (sp(k + 2) - sp(k + 1))); + } + else + { + sel(j) *= mfexp(sp(k + 2) + (len_bins_m(j) - temp) / (maxL - temp) * (sp(k + 3) - sp(k + 2))); + } + // if(sel(j)>temp1) temp1=sel(j); + } + sel_l(y, f, 1) = sel; + tempvec_a(1) = max(sel_l(y, f, 1)); + tempvec_a(2) = max(sel_l(y, f, 2)); + temp1 = max(tempvec_a(1, 2)); + sel_l(y, f) /= temp1; + break; + } + } // end switch + } // end do gender selex as offset from other gender + // SS_Label_Info_22.5 #Calculate size-specific retention and discard mortality + else if (seltype(f, 3) != 3 && seltype(f, 3) != 4) // where the "3" and "4" option do the male offset as direct parameters, rathen than do selex as offset + { + sel_l(y, f, 2) = sel; + } + } // end doing males + if (docheckup == 1) + echoinput << gg << " sel-len" << sel_l(y, f, gg) << endl; + + } // end loop of genders + + // apply 2D_AR adjustment to sex-specific length selectivity + // TwoD_AR_def: read: 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase; 10-before_yrs, 11=after_yrs, + // calc quantities: 12-N_parm_dev, 13-selparm_location + + if (TwoD_AR_use(f) > 0) + { + j = TwoD_AR_use(f); // get index for this fleet's effect + if (TwoD_AR_def[j](8) == 1) // age vs length flag + { + z = TwoD_AR_def[j](12); // index of dev vector used + if (docheckup == 1) + echoinput << "2dar for fleet: " << f << " 2DAR: " << j << " dev: " << z << endl; + + if (y == styr && (TwoD_AR_before(j) == 3 || TwoD_AR_after(j) == 3)) // if needed, calculate average dev for each length over the range of years + { + TwoD_AR_ave(j).initialize(); + for (int yyy = TwoD_AR_ymin(j); yyy <= TwoD_AR_ymax(j); yyy++) + { + k = (yyy - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); // index of 1st dev in vector created from year and length index + for (int ll = TwoD_AR_amin(j); ll <= TwoD_AR_amax(j); ll++) + { + k++; + TwoD_AR_ave(j, ll) += parm_dev(z, k); // sum devs for each length + } + } + TwoD_AR_ave(j) /= (TwoD_AR_ymax(j) - TwoD_AR_ymin(j) + 1.0); + #ifdef DO_ONCE + if (do_once == 1) + echoinput << "mean 2D AR dev for fleet: " << f << " means: " << TwoD_AR_ave(j) << endl; + #endif + } + + if (y < TwoD_AR_ymin(j)) // early years + { + if (TwoD_AR_before(j) == 0) // apply no devs + { + k = -2; + } + else if (TwoD_AR_before(j) == 1) // use first year devs + { + // k=(TwoD_AR_ymin(j)-TwoD_AR_ymin(j))*(TwoD_AR_amax(j)-TwoD_AR_amin(j)+1); // index of 1st dev in vector created from year and length index + k = 0; + } + else if (TwoD_AR_before(j) == 3) // use mean length-specific devs + { + k = -1; + } + } + else if (y <= TwoD_AR_ymax(j)) // in year range for annual devs + { + k = (y - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); // index of 1st dev in vector created from year and length index + } + else // later years + { + if (TwoD_AR_after(j) == 0) // apply no devs + { + k = -2; + } + else if (TwoD_AR_after(j) == 1) // use last year devs + { + k = (TwoD_AR_ymax(j) - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); + } // index of 1st dev in vector created from year and length index + else if (TwoD_AR_after(j) == 3) // use mean length-specific devs + { + k = -1; + } + } + + if (docheckup == 1) + echoinput << "K value for first dev to use: " << k << endl; + if (k > -2) + { + a1 = TwoD_AR_def[j](13) - 1; // parameter number-1 for sigmasel + dvariable sigmasel; + for (a = TwoD_AR_amin(j); a <= TwoD_AR_amax(j); a++) // loop lengths, using "a" as index + { + if (a <= TwoD_AR_def[j](6)) // so get sigmasel for this length bin + { + a1++; + sigmasel = selparm(a1); + } + if (k >= 0) + { + k++; + if (docheckup == 1) + echoinput << a << " sigmasel: " << sigmasel << endl; + sel_l(y, f, 1, a) *= mfexp(sigmasel * parm_dev(z, k)); + if (gender == 2) + sel_l(y, f, 2, a) *= mfexp(sigmasel * parm_dev(z, k)); + } + else // use mean devs + { + sel_l(y, f, 1, a) *= mfexp(sigmasel * TwoD_AR_ave(j, a)); + if (gender == 2) + sel_l(y, f, 2, a) *= mfexp(sigmasel * TwoD_AR_ave(j, a)); + } + } + } + if (docheckup == 1) + echoinput << "len selex after 2D_AR" << endl + << sel_l(y, f) << endl; + } + } + + // SS_Label_Info_22.5.1 #Calculate discmort + // discmort is the size-specific fraction of discarded fish that die + // discmort2 is size-specific fraction that die from being retained or are dead discard + // = elem_prod(sel,(retain + (1-retain)*discmort)) */ + + if (seltype(f, 2) == 0) // no discard, all retained + { + retain(y, f) = 1.0; + sel_l_r(y, f) = sel_l(y, f); + discmort(y, f) = 1.0; + discmort2(y, f) = sel_l(y, f); + if (gender == 2) + { + discmort_M = 1.0; + retain_M = 1.0; + } + } + else if (seltype(f, 2) == 3) // none retained; all dead + { + retain(y, f) = 0.0; + discmort(y, f) = 1.0; + sel_l_r(y, f) = 0.0; + discmort2(y, f) = sel_l(y, f); + if (gender == 2) + { + discmort_M = 1.0; + retain_M = 0.0; + } + } + else + { + if (seltype(f, 2) < 0) // mirror + { + k = -seltype(f, 2); + retain(y, f) = retain(y, k); + discmort(y, f) = discmort(y, k); + if (seltype(k, 2) == 1) + { + discmort2(y, f) = sel_l(y, f); // all selected fish are dead; this statement does both genders implicitly + } + else + { + discmort2(y, f, 1) = elem_prod(sel_l(y, f, 1), retain(y, f)(1, nlength) + elem_prod((1. - retain(y, f)(1, nlength)), discmort(y, f)(1, nlength))); + } + } + else + { + k = RetainParm(f); + if (sp(k + 2) == -999.) + { + temp1 = 0.0; + } + else if (sp(k + 2) == 999.) + { + temp1 = 1.0; + } + else + { + temp1 = 1.0 / (1.0 + mfexp(-sp(k + 2))); + } + // where maleoffset is a vector of 2*nbins with 0 in length bins for females and 1 for male bins + retain(y, f) = temp1 / (1. + mfexp(-(len_bins_m2 - (sp(k) + male_offset * sp(k + 3))) / sp(k + 1))); // males are at end of vector, so automatically get done + if (seltype(f, 2) == 4) + { + // allow for dome-shaped retention in 3.30 only + retain(y, f) = elem_prod(retain(y, f), (1. - (1. / (1. + mfexp(-(len_bins_m2 - (sp(k + 4) + male_offset * sp(k + 6))) / sp(k + 5)))))); + } + if (docheckup == 1 && y == styr) + { + echoinput << "retention parms start at #: " << k << " infl: " << sp(k) << " slope: " << sp(k + 1) << " male_offset " << sp(k + 3) << " asymptote: " << temp1; + if (seltype(f, 2) == 4) + { + // additional dome-shaped retention parameters + echoinput << " " << sp(k + 4) << " " << sp(k + 5) << " " << sp(k + 6); + } + echoinput << "retention " << retain(y, f) << endl; + } + + if (seltype(f, 2) == 1) // all discards are dead + { + discmort(y, f) = 1.0; + discmort2(y, f) = sel_l(y, f); // all selected fish are dead; this statement does both genders implicitly + } + else + { + k += N_ret_parm(seltype(f, 2)); // first discard mortality parm + temp = 1. - sp(k + 2); + temp1 = posfun(temp, 0.0, CrashPen); + discmort(y, f) = (1. - temp1 / (1 + mfexp(-(len_bins_m2 - (sp(k) + male_offset * sp(k + 3))) / sp(k + 1)))); // males are at end of vector, so automatically get done + if (docheckup == 1 && y == styr) + echoinput << "discmort " << discmort(y, f) << endl; + discmort2(y, f, 1) = elem_prod(sel_l(y, f, 1), retain(y, f)(1, nlength) + elem_prod((1. - retain(y, f)(1, nlength)), discmort(y, f)(1, nlength))); + } + } + + sel_l_r(y, f, 1) = elem_prod(sel_l(y, f, 1), retain(y, f)(1, nlength)); + if (gender == 2) + { + discmort_M.shift(nlength1) = discmort(y, f)(nlength1, nlength2); + retain_M.shift(nlength1) = retain(y, f)(nlength1, nlength2); + sel_l_r(y, f, 2) = elem_prod(sel_l(y, f, 2), retain_M.shift(1)); + discmort2(y, f, 2) = elem_prod(sel_l(y, f, 2), retain_M.shift(1) + elem_prod((1. - retain_M.shift(1)), discmort_M.shift(1))); // V3.21f + } + } + if (docheckup == 1 && y == styr) + echoinput << "sel-len-r " << sel_l_r(y, f) << endl; + if (docheckup == 1 && y == styr) + echoinput << " dead " << discmort2(y, f) << endl; + + } // end loop of fleets for size selex and retention and discard mortality + + // SS_Label_Info_22.6 #Do age-selectivity + else + { + for (gg = 1; gg <= gender; gg++) + { + if (gg == 1 || (gg == 2 && seltype(f, 3) >= 3) || (gg == 2 && (seltype(f, 1) == 44 || seltype(f, 1) == 45))) // in age selex + { + // SS_Label_Logic_22.7 #Switch depending on the age-selectivity pattern selected + switch (seltype(f, 1)) + { + + // SS_Label_Info_22.7.0 #Constant age-specific selex for ages 0 to nages + case 0: + { + sel_a(y, fs, 1)(0, nages) = 1.00; + break; + } + + // SS_Label_Info_22.7.10 #Constant age-specific selex for ages 1 to nages + case 10: + { + sel_a(y, fs, 1)(1, nages) = 1.00; + break; + } + + // SS_Label_Info_22.7.11 #Constant age-specific selex for specified age range + case 11: // selex=1.0 within a range of ages + { + // echoinput<nages) {a=nages;} + // sel_a(y,fs,1)(int(value(sp(1))),a)=1.; + sel_a(y, fs, 1) = mirror_mask_a(fs); + break; + } + + // SS_Label_Info_22.7.12 #age selectivity - logistic + case 12: + { + sel_a(y, fs, 1).initialize(); + sel_a(y, fs, 1)(Min_selage(fs), nages) = 1. / (1. + mfexp(neglog19 * (r_ages(Min_selage(fs), nages) - sp(1)) / sp(2))); + break; + } + + // SS_Label_Info_22.7.13 #age selectivity - double logistic + case 13: + // 1=peak, 2=init, 3=infl, 4=slope, 5=final, 6=infl2, 7=slope2, 8=plateau + { + #ifdef DO_ONCE + if (do_once == 1) + { + warnstream << "Age selectivity pattern 13 used; suggest using pattern 18 instead. "; + write_message (SUGGEST, 0); + } + #endif + sel_a(y, fs, 1).initialize(); + t1 = 0. + (1. / (1. + mfexp(-sp(3)))) * (sp(1) - 0.); // INFL + t1min = 1. / (1. + mfexp(-sp(4) * (0. - t1))) * 0.9999999; // asc value at minage + t1max = 1. / (1. + mfexp(-sp(4) * (sp(1) - t1))) * 1.00001; // asc value at peak + t1power = log(0.5) / log((0.5 - t1min) / (t1max - t1min)); + + t2 = (sp(1) + sp(8)) + (1. / (1. + mfexp(-sp(6)))) * (r_ages(nages) - (sp(1) + sp(8))); // INFL + t2min = 1. / (1. + mfexp(-sp(7) * (sp(1) + sp(8) - t2))) * 0.9999; // asc value at peak+ + t2max = 1. / (1. + mfexp(-sp(7) * (r_ages(nages) - t2))) * 1.00001; // asc value at maxage + t2power = log(0.5) / log((0.5 - t2min) / (t2max - t2min)); + final = 1. / (1. + mfexp(-sp(5))); + k1 = int(value(sp(1))); + k2 = int(value(sp(1) + sp(8))); + + for (a = Min_selage(fs); a <= nages; a++) //calculate the value over ages + { + if (a < k1) // ascending limb + { + sel_a(y, fs, 1, a) = sp(2) + (1. - sp(2)) * pow(((1. / (1. + mfexp(-sp(4) * (r_ages(a) - t1))) - t1min) / (t1max - t1min)), t1power); + } + else if (a > k2) // descending limb + { + sel_a(y, fs, 1, a) = 1. + (final - 1.) * pow(((1. / (1. + mfexp(-sp(7) * (r_ages(a) - t2))) - t2min) / (t2max - t2min)), t2power); + } + else // at the peak + { + sel_a(y, fs, 1, a) = 1.0; + } + } // end age loop + break; + } // end double logistic + + // SS_Label_Info_22.7.14 #age selectivity - separate parm for each age + case 14: + { + temp = 9. - max(sp(1, nages + 1)); // this forces at least one age to have selex weight equal to 9 + sel_a(y, fs, 1).initialize(); + for (a = Min_selage(fs); a <= nages; a++) + { + if (sp(a + 1) > -999) + { + sel_a(y, fs, 1, a) = 1. / (1. + mfexp(-(sp(a + 1) + temp))); + } + else + { + sel_a(y, fs, 1, a) = sel_a(y, fs, 1, a - 1); + } + } + break; + } + + // SS_Label_Info_22.7.15 #age selectivity - mirror selex for lower numbered fleet + // must refer to a lower numbered type (f) + case 15: + { + sel_a(y, fs) = sel_a(y, seltype(f, 4)); + break; + } + + // SS_Label_Info_22.7.16 #age selectivity: Coleraine - Gaussian + case 16: + { + t1 = 1 / (1 + mfexp(-sp(1))) * nages; + sel_a(y, fs, 1).initialize(); + for (a = Min_selage(fs); a <= nages; a++) + { + if (a < t1) + { + sel_a(y, fs, 1, a) = mfexp(-square(r_ages(a) - t1) / mfexp(sp(2))); + } + else + { + sel_a(y, fs, 1, a) = 1.0; + } + } + break; + } + + // SS_Label_Info_22.7.17 #age selectivity: each age has parameter as random walk + // #41 each age has parameter as random walk scaled by average of values at low age through high age + // transformation as selex=exp(parm); some special codes */ + case 41: + scaling_offset = 2; + [[fallthrough]]; + case 17: // + { + lastsel = 0.0; // value is the change in log(selex); this is the reference value for age 0 + tempvec_a = -999.; + tempvec_a(0) = 0.0; // so do not try to estimate the first value + int lastage; + if (seltype(f, 4) == 0) + { + lastage = nages; + } + else + { + lastage = abs(seltype(f, 4)); + } + for (a = 1; a <= lastage; a++) + { + // with use of -999, lastsel stays constant until changed, so could create a linear change in ln(selex) + // use of (a+1) is because the first element, sp(1), is for age zero + if (sp(a + 1 + scaling_offset) > -999.) + { + lastsel = sp(a + 1 + scaling_offset); + } + tempvec_a(a) = tempvec_a(a - 1) + lastsel; // cumulative log(selex) +// warning << a << "SP: " << sp(a + 1 + scaling_offset) << " cumul: " << tempvec_a(a) << endl; + } + if (scaling_offset == 0) + { + temp = max(tempvec_a); // find max so at least one age will have selex=1. + } + else + { + int low_bin = int(value(sp(1))); + int high_bin = int(value(sp(2))); + // checks and adjustments below should happen in readcontrol + if (low_bin < 0) + { + low_bin = 0; + warnstream << "Selex pattern 41; value for low bin is less than 0, so set to 0 "; + write_message (ADJUST, 0); + } + if (high_bin > nages) + { + high_bin = nages; + warnstream << "Selex pattern 41; value for high bin is greater than " << nages << ", so set to " << nages; + write_message (ADJUST, 0); + } + if (high_bin < low_bin) + high_bin = low_bin; + if (low_bin > high_bin) + low_bin = high_bin; + sp(1) = low_bin; + sp(2) = high_bin; + temp = mean(tempvec_a(low_bin, high_bin)); +// warning << tempvec_a(low_bin, high_bin) << endl; +// warning << low_bin << " " << high_bin << " mean " << temp << endl; + } + sel_a(y, fs, 1) = mfexp(tempvec_a - temp); + a = 0; + while (sp(a + 1 + scaling_offset) == -1000) // reset range of young ages to selex=0.0 + { + sel_a(y, fs, 1, a) = 0.0; + a++; + } + scaling_offset = 0; // reset scaling offset + if (lastage < nages) + { + for (a = lastage + 1; a <= nages; a++) + { + if (seltype(f, 4) > 0) + { + sel_a(y, fs, 1, a) = sel_a(y, fs, 1, a - 1); + } + else + { + sel_a(y, fs, 1, a) = 0.0; + } + } + } + break; + } + + case 44: // like age selex 17 but with separate parameters for males and with revised controls + { + // sp(1) is first age with non-zero selectivity; can be age 0 + // seltype(f,4) is number of selectivity change parameters beginning at age=first_age+1 + // sp(2) is first age for which mean selex=1 + // sp(3) is last age for which mean selex=1 + // sp(4) is male mean selex relative to female mean. + // -999 code means to keep the change unchanged from previous age (so keeps same rate of change) + // -1000 code is only for males and sets the male change to be same as female change + // gg is the index for sex, where 1=female, 2=male + sel_a(y, fs, gg).initialize(); + dvariable seldelta = 0.0; // value is the change in log(selex) + tempvec_a.initialize(); // null value for vector + // echoinput<<" sp "< -999.) + { + seldelta = sp(j); + } // so allows for seldelta to remain unchanged + else if (gg == 2 && sp(j) == -1000.) // more options for male selectivity + { + seldelta = sp(j - seltype(f, 4)); + } // use female delta for the male delta at this age + tempvec_a(a) = tempvec_a(a - 1) + seldelta; // cumulative log(selex) + } + int low_bin = int(value(sp(2))); + int high_bin = int(value(sp(3))); + #ifdef DO_ONCE + if (do_once == 1) // this should move to readcontrol! + { + if (low_bin < 0) + { + low_bin = 0; + warnstream << "Selex pattern 44; value for low bin is less than 0, so set to 0 "; + write_message (ADJUST, 0); + } + if (high_bin > nages) + { + high_bin = nages; + warnstream << "Selex pattern 44; value for high bin is greater than " << nages << ", so set to " << nages; + write_message (ADJUST, 0); + } + if (high_bin < low_bin) + high_bin = low_bin; + if (low_bin > high_bin) + low_bin = high_bin; + sp(2) = low_bin; + sp(3) = high_bin; + } + #endif + temp = mean(tempvec_a(low_bin, high_bin)); + sel_a(y, fs, gg)(first_age, last_age) = mfexp(tempvec_a(first_age, last_age) - temp); + if (gg == 2) + sel_a(y, fs, gg)(first_age, last_age) *= mfexp(sp(4)); // apply male ratio + if (last_age < nages) + { + sel_a(y, fs, gg)(last_age + 1, nages) = sel_a(y, fs, gg, last_age); + } + scaling_offset = 0; + break; + } + + case 45: // like age selex 14 but with separate parameters for males and with revised controls + { + // parameter value is logit(selectivity) + // peak selex in logit space is penalized towards value of 8.0, which gives selex near 1.0 + // sp(1) is first age with non-zero selectivity; can be age 0 + // seltype(f,4) is number of selectivity parameters beginning at age=first_age + // sp(2) is first age in mean for peak selex + // sp(3) is last age in mean for peak selex + // sp(4) is male mean selex relative to female mean. + // -999 code means to keep the selex same as previous age + // -1000 code is only for males and sets the male selex to be same as female selex + // gg is the index for sex, where 1=female, 2=male + sel_a(y, fs, gg).initialize(); + tempvec_a.initialize(); // null value for vector + int first_age = int(value(sp(1))); + int last_age = first_age + seltype(f, 4) - 1; // because seltype(f,4) contains the number of ages with selex parameter + if (gg == 1) + { + scaling_offset = 2 + gender; + } + else + { + scaling_offset = 2 + gender + seltype(f, 4); + } // to get male vs female starting point for parameters + j = scaling_offset; + for (a = first_age; a <= last_age; a++) + { + j++; + if (sp(j) > -999) + { + tempvec_a(a) = sp(j); + } + else if (gg == 2 && sp(j) == -1000.) // set male selectivity raw value same as female + { + tempvec_a(a) = sp(j - seltype(f, 4)); + } // use female parameter for males + else // so value is -999 so set to next younger age + { + tempvec_a(a) = tempvec_a(a - 1); + } + } + int low_bin = int(value(sp(2))); + int high_bin = int(value(sp(3))); + #ifdef DO_ONCE + if (do_once == 1) // this should move to readcontrol! + { + if (low_bin < 0) + { + low_bin = 0; + warnstream << "Selex pattern 44; value for low bin is less than 0, so set to 0 "; + write_message (ADJUST, 0); + } + if (high_bin > nages) + { + high_bin = nages; + warnstream << "Selex pattern 44; value for high bin is greater than " << nages << ", so set to " << nages; + write_message (ADJUST, 0); + } + if (high_bin < low_bin) + high_bin = low_bin; + if (low_bin > high_bin) + low_bin = high_bin; + } + #endif + temp = 8. - mean(tempvec_a(low_bin, high_bin)); + // CrashPen+=temp*temp; + sel_a(y, fs, gg)(first_age, last_age) = 1. / (1. + mfexp(-(tempvec_a(first_age, last_age) + temp))); + if (gg == 2) + { + sel_a(y, fs, gg)(first_age, last_age) *= mfexp(sp(4)); + } // apply male ratio + if (last_age < nages) + { + sel_a(y, fs, gg)(last_age + 1, nages) = sel_a(y, fs, gg, last_age); + } + scaling_offset = 0; + break; + } + + // SS_Label_Info_22.7.18 #age selectivity: double logistic with smooth transition + case 18: + // 1=peak, 2=init, 3=infl, 4=slope, 5=final, 6=infl2, 7=slope2 + { + + #ifdef DO_ONCE + if (do_once == 1) + { + warnstream << "Selectivity pattern 20 is recommended over pattern 18 because it has fewer parameters."; + write_message (SUGGEST, 0); + } + #endif + + sel_a(y, fs, 1).initialize(); + t1 = 0. + (1. / (1. + mfexp(-sp(3)))) * (sp(1) - 0.); // INFL + t1min = 1. / (1. + mfexp(-sp(4) * (0. - t1))) * 0.9999; // asc value at minsize + t1max = 1. / (1. + mfexp(-sp(4) * (sp(1) - t1))) * 1.00001; // asc value at peak + t1power = log(0.5) / log((0.5 - t1min) / (t1max - t1min)); + + t2 = (sp(1) + sp(8)) + (1. / (1. + mfexp(-sp(6)))) * (r_ages(nages) - (sp(1) + sp(8))); // INFL + t2min = 1. / (1. + mfexp(-sp(7) * (sp(1) + sp(8) - t2))) * 0.9999; // asc value at peak+ + t2max = 1. / (1. + mfexp(-sp(7) * (r_ages(nages) - t2))) * 1.00001; // asc value at maxage + t2power = log(0.5) / log((0.5 - t2min) / (t2max - t2min)); + final = 1. / (1. + mfexp(-sp(5))); + for (a = Min_selage(fs); a <= nages; a++) //calculate the value over ages + { + sel_a(y, fs, 1, a) = + (( + (sp(2) + (1. - sp(2)) * pow(((1. / (1. + mfexp(-sp(4) * (r_ages(a) - t1))) - t1min) / (t1max - t1min)), t1power)) / (1.0 + mfexp(30. * (r_ages(a) - sp(1)))) // scale ascending side + + + 1. / (1. + mfexp(-30. * (r_ages(a) - sp(1)))) // flattop, with scaling + ) / + (1. + mfexp(30. * (r_ages(a) - (sp(1) + sp(8))))) // scale combo of ascending and flattop + + + (1. + (final - 1.) * pow(fabs(((1. / (1. + mfexp(-sp(7) * (r_ages(a) - t2))) - t2min) / (t2max - t2min))), t2power)) / (1. + mfexp(-30. * (r_ages(a) - (sp(1) + sp(8))))) // scale descending + ); + } // end age loop + break; + } // end double logistic with smooth transition + + // SS_Label_Info_22.7.19 #age selectivity: old double logistic + case 19: + { + k1 = int(value(sp(5))); + sel_a(y, fs, 1)(k1, nages) = elem_prod((1. / (1. + mfexp(-sp(2) * (r_ages(k1, nages) - sp(1))))), + (1. - 1. / (1. + mfexp(-sp(4) * (r_ages(k1, nages) - (sp(1) * sp(6) + sp(3))))))); + sel_a(y, fs, 1)(k1, nages) /= max(sel_a(y, fs, 1)(k1, nages)); + if (k1 > 0) + sel_a(y, fs, 1)(0, k1 - 1) = 1.0e-6; + break; + } + + // SS_Label_Info_22.7.20 #age selectivity: double normal with plateau + case 20: // *******double_normal_plateau + { + if (seltype(f, 3) < 3 || (gg == 1 && seltype(f, 3) == 3) || (gg == 2 && seltype(f, 3) == 4)) + { + peak = sp(1); + upselex = mfexp(sp(3)); + downselex = mfexp(sp(4)); + final = sp(6); + Apical_Selex = 1.0; + } + else + { // offset male parameters if seltype(f,3)==3 + peak = sp(1) + sp(Maleselparm(f)); + upselex = mfexp(sp(3) + sp(Maleselparm(f) + 1)); + downselex = mfexp(sp(4) + sp(Maleselparm(f) + 2)); + if (sp(6) > -999.) + final = sp(6) + sp(Maleselparm(f) + 3); + Apical_Selex = sp(Maleselparm(f) + 4); + } + if (sp(5) < -1000.) + { + j = -1001 - int(value(sp(5))); // selex is nil thru age j, so set sp(5) equal to first age with selex (e.g. -1002 to start selex at age 2) + sel_a(y, fs, gg)(0, j) = 1.0e-06; + } + else + { + j = Min_selage(fs) - 1; // start selex at Min_selage + if (sp(5) > -999) + { + point1 = 1. / (1. + mfexp(-sp(5))); + t1min = mfexp(-(square(0. - peak) / upselex)); // fxn at first bin + } + } + if (sp(6) < -1000.) + { + j2 = -1000 - int(value(sp(6))); // selex is constant beyond this age, so set sp(6) equal to last age with estimated selex + // (e.g. -1008 to be constant beyond age 8) + } + else + { + j2 = nages; + } + + peak2 = peak + 1. + (0.99 * r_ages(j2) - peak - 1.) / (1. + mfexp(-sp(2))); // note, this uses age=j2 as constraint on range of "peak2" + // peak2=peak+.1+(0.99*r_ages(j2)-peak-.1)/(1.+mfexp(-sp(2))); // note, this uses age=j2 as constraint on range of "peak2" + if (sp(6) > -999) + { + point2 = 1. / (1. + mfexp(-final)); + t2min = mfexp(-(square(r_ages(nages) - peak2) / downselex)); // fxn at last bin + } + + for (a = j + 1; a <= j2; a++) + { + t1 = r_ages(a) - peak; + t2 = r_ages(a) - peak2; + join1 = 1. / (1. + mfexp(-(20. / (1. + fabs(t1))) * t1)); + join2 = 1. / (1. + mfexp(-(20. / (1. + fabs(t2))) * t2)); + if (sp(5) > -999) + { + asc = point1 + (Apical_Selex - point1) * (mfexp(-square(t1) / upselex) - t1min) / (1. - t1min); + } + else + { + asc = Apical_Selex * mfexp(-square(t1) / upselex); + } + if (sp(6) > -999) + { + dsc = Apical_Selex + (point2 - Apical_Selex) * (mfexp(-square(t2) / downselex) - 1.) / (t2min - 1.); + } + else + { + dsc = Apical_Selex * mfexp(-square(t2) / downselex); + } + sel_a(y, fs, gg, a) = asc * (1. - join1) + join1 * (Apical_Selex * (1. - join2) + dsc * join2); + } + if (j2 < nages) + { + sel_a(y, fs, gg)(j2 + 1, nages) = sel_a(y, fs, gg, j2); + } + break; + } + + // SS_Label_Info_22.7.26 #age selectivity: exponential logistic + case 26: + { + // peak = r_ages(0) + sp(2)*(r_ages(nages)-r_ages(0)); + sel_a(y, fs, 1).initialize(); + peak = sp(2) * r_ages(nages); + for (a = Min_selage(fs); a <= nages; a++) + { + sel_a(y, fs, 1, a) = mfexp(sp(3) * sp(1) * (peak - r_ages(a))) / (1.0 - sp(3) * (1.0 - mfexp(sp(1) * (peak - r_ages(a))))); + } + break; + } + + // SS_Label_Info_22.7.27 #age selectivity: cubic spline + // #42 cubic spline scaled by average of values at low age through high age + case 42: + scaling_offset = 2; + [[fallthrough]]; + case 27: + { + // define vectors which form the basis for cubic spline selectivity + // IMPORTANT: these vectors might need to be expanded to fit values for multiple fleets + dvector splineX(1, 200); + dvar_vector splineY(1, 200); + splineX.initialize(); + splineY.initialize(); + sel_a(y, fs, 1).initialize(); + k = seltype(f, 4); // n points to include in cubic spline + for (i = 1; i <= k; i++) + { + splineX(i) = value(sp(i + 3 + scaling_offset)); // "value" required to avoid error, but values should be always fixed anyway + splineY(i) = sp(i + 3 + k + scaling_offset); + } + // calculate last age before first knot + z = 0; + while (r_ages(z) < splineX(1)) + { + z++; + } + j1 = z - 1; // last age before first knot + + // calculate first age beyond last knot + z = nages; + while (r_ages(z) > splineX(k)) + { + z--; + } + j2 = z + 1; // first age beyond last knot + + vcubic_spline_function splinefn = vcubic_spline_function(splineX(1, k), splineY(1, k), sp(2 + scaling_offset), sp(3 + scaling_offset)); + tempvec_a = splinefn(r_ages); // interpolate selectivity at each age + if (scaling_offset == 0) + { + temp = max(tempvec_a(0, j2)); + // if spline code on first parameter line is 10, 11, or 12, then + // scale only based on interval between knots (unless first knot is at age 0) + if ((sp(1) >= 10) & (j1 >= 0)) + { + temp = max(tempvec_a(j1, j2)); + } + } + else + { + int low_bin = int(value(sp(1))); + int high_bin = int(value(sp(2))); + if (low_bin < Min_selage(fs)) + { + low_bin = Min_selage(fs); + warnstream << "Selex pattern 42; value for low bin is less than min_selage, so set to " << Min_selage(fs); + write_message (ADJUST, 0); + } + if (high_bin > nages) + { + high_bin = nages; + warnstream << "Selex pattern 42; value for high bin is greater than " << nages << ", so set to " << nages; + write_message (ADJUST, 0); + } + if (high_bin < low_bin) + high_bin = low_bin; + if (low_bin > high_bin) + low_bin = high_bin; + sp(1) = low_bin; + sp(2) = high_bin; + temp = mean(tempvec_a(low_bin, high_bin)); + } + tempvec_a -= temp; // rescale to get max of 0.0 + tempvec_a(j2 + 1, nages) = tempvec_a(j2); // set constant above last knot + sel_a(y, fs, 1)(Min_selage(fs), nages) = mfexp(tempvec_a)(Min_selage(fs), nages); + // if spline code on third parameter line is 10, 11, or 12, then + // set to zero before the first knot (unless first knot is at age 0) + if ((sp(1 + scaling_offset) >= 10) & (j1 >= 0)) + { + sel_a(y, fs, 1)(0, j1) = 0; // set to 0 before first knot (unless first knot is at 0) + } + scaling_offset = 0; // reset scaling offset + break; + } // end age-based cubic spline (type 42 or 27) + + default: // seltype not found. But really need this check earlier when the N selex parameters are being processed. + { + warnstream << "Age selectivity option " << seltype(f, 1) << " not valid."; + write_message (FATAL, 0); // EXIT! + break; + } + + } // end last age selex pattern + } // end direct calc of selex from parameters + + // SS_Label_Info_22.8 #age selectivity: one sex selex as offset from other sex + if (gg == 2) // males exist + { + if (seltype(f, 3) == 1 || seltype(f, 3) == 2) // do gender selex as offset + { + k = Maleselparm(f); // first male parm + temp = sp(k) - 0.00001; + temp1 = 1.; + switch (seltype(f, 3)) + { + case 1: + { // do males relative to females + for (a = Min_selage(fs); a <= nages; a++) // + { + if (r_ages(a) <= temp) + { + sel_a(y, fs, 2, a) = sel_a(y, fs, 1, a) * mfexp(sp(k + 1) + (r_ages(a) - 0.) / (temp - 0.) * (sp(k + 2) - sp(k + 1))); + } + else + { + sel_a(y, fs, 2, a) = sel_a(y, fs, 1, a) * mfexp(sp(k + 2) + (r_ages(a) - temp) / (double(nages) - temp) * (sp(k + 3) - sp(k + 2))); + } + // if(sel_a(y,fs,2,a)>temp1) temp1=sel_a(y,fs,2,a); + } + tempvec_a(1) = max(sel_a(y, fs, 1)); + tempvec_a(2) = max(sel_a(y, fs, 2)); + temp1 = max(tempvec_a(1, 2)); + sel_a(y, fs) /= temp1; + break; + } + case 2: + { // do females relative to males + sel_a(y, fs, 2) = sel_a(y, fs, 1); + for (a = Min_selage(fs); a <= nages; a++) // + { + if (r_ages(a) <= temp) + { + sel_a(y, fs, 1, a) = sel_a(y, fs, 2, a) * mfexp(sp(k + 1) + (r_ages(a) - 0.) / (temp - 0.) * (sp(k + 2) - sp(k + 1))); + } + else + { + sel_a(y, fs, 1, a) = sel_a(y, fs, 2, a) * mfexp(sp(k + 2) + (r_ages(a) - temp) / (double(nages) - temp) * (sp(k + 3) - sp(k + 2))); + } + // if(sel_a(y,fs,1,a)>temp1) temp1=sel_a(y,fs,1,a); + } + // sel_a(y,fs)/=temp1; + tempvec_a(1) = max(sel_a(y, fs, 1)); + tempvec_a(2) = max(sel_a(y, fs, 2)); + temp1 = max(tempvec_a(1, 2)); + sel_a(y, fs) /= temp1; + + break; + } + } + } + else if (seltype(f, 3) != 3 && seltype(f, 3) != 4 && seltype(f, 1) != 15 && seltype(f, 1) != 44 && seltype(f, 1) != 45) + { + sel_a(y, fs, 2) = sel_a(y, fs, 1); + } // set males = females + if (docheckup == 1) + echoinput << " sel-age " << sel_a(y, fs) << endl; + } + } // end gender loop + + // apply 2D_AR adjustment to sex-specific age selectivity + // TwoD_AR_def: read: 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase; 10-before_yrs, 11=after_yrs, + // calc quantities: 12-N_parm_dev, 13-selparm_location + + if (TwoD_AR_use(f) > 0) + { + j = TwoD_AR_use(f); // get index for this fleet's effect + if (TwoD_AR_def[j](8) == 2) // age (2) vs length (1) flag + { + z = TwoD_AR_def[j](12); // index of dev vector used + if (docheckup == 1) + echoinput << "age-based 2DAR for fleet: " << f << " 2DAR: " << j << " using dev_vector: " << z << endl; + + if (y == styr && (TwoD_AR_before(j) == 3 || TwoD_AR_after(j) == 3)) // if needed, calculate average dev for each age over the range of years + { + TwoD_AR_ave(j).initialize(); + for (int yyy = TwoD_AR_ymin(j); yyy <= TwoD_AR_ymax(j); yyy++) + { + k = (yyy - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); // index of 1st dev in vector created from year and age index + for (int ll = TwoD_AR_amin(j); ll <= TwoD_AR_amax(j); ll++) + { + k++; + TwoD_AR_ave(j, ll) += parm_dev(z, k); // sum devs for each age + } + } + TwoD_AR_ave(j) /= (TwoD_AR_ymax(j) - TwoD_AR_ymin(j) + 1.0); + #ifdef DO_ONCE + if (do_once == 1) + echoinput << "mean 2D AR dev for fleet: " << f << " means: " << TwoD_AR_ave(j) << endl; + #endif + } + + if (y < TwoD_AR_ymin(j)) // early years + { + if (TwoD_AR_before(j) == 0) // apply no devs + { + k = -2; + } + else if (TwoD_AR_before(j) == 1) // use first year devs + { + // k=(TwoD_AR_ymin(j)-TwoD_AR_ymin(j))*(TwoD_AR_amax(j)-TwoD_AR_amin(j)+1); // index of 1st dev in vector created from year and age index + k = 0; + } + else if (TwoD_AR_before(j) == 3) // use mean age-specific devs + { + k = -1; + } + } + else if (y <= TwoD_AR_ymax(j)) // in year range for annual devs + { + k = (y - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); // index of 1st dev in vector created from year and age index + } + else // later years + { + if (TwoD_AR_after(j) == 0) // apply no devs + { + k = -2; + } + else if (TwoD_AR_after(j) == 1) // use last year devs + { + k = (TwoD_AR_ymax(j) - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); + } // index of 1st dev in vector created from year and age index + else if (TwoD_AR_after(j) == 3) // use mean length-specific devs + { + k = -1; + } + } + + if (docheckup == 1) + echoinput << "K value for first dev to use: " << k << endl; + if (k > -2) + { + a1 = TwoD_AR_def[j](13) - 1; // parameter number-1 for sigmasel + dvariable sigmasel; + for (a = TwoD_AR_amin(j); a <= TwoD_AR_amax(j); a++) // loop lengths, using "a" as index + { + if (a <= TwoD_AR_def[j](6)) // so get sigmasel for this length bin + { + a1++; + sigmasel = selparm(a1); + } + if (k >= 0) + { + k++; +// if (docheckup == 1) + temp = sel_a(y, fs, 1, a); + sel_a(y, fs, 1, a) *= mfexp(sigmasel * parm_dev(z, k)); + if (gender == 2) + sel_a(y, fs, 2, a) *= mfexp(sigmasel * parm_dev(z, k)); + } + else // use mean devs + { + sel_a(y, fs, 1, a) *= mfexp(sigmasel * TwoD_AR_ave(j, a)); + if (gender == 2) + sel_a(y, fs, 2, a) *= mfexp(sigmasel * TwoD_AR_ave(j, a)); + } + } + } + if (docheckup == 1) + echoinput << "age selex after 2D_AR" << endl + << sel_a(y, fs) << endl; + } + } + + { // calculation of age retention and discard mortality here + // SS_Label_Info_22.5.1 #Calculate age-specific retention and discmort + // discmort_a is the fraction of discarded fish that die + // discmort2_a is fraction that die from being retained or are dead discard + // = elem_prod(sel_a,(retain_a + (1-retain_a)*discmort_a)) */ + if (seltype(f, 2) == 0) // no discard, all retained + { + retain_a(y, fs) = 1.0; + sel_a_r(y, fs) = sel_a(y, fs); + discmort_a(y, fs) = 1.0; + discmort2_a(y, fs) = sel_a(y, fs); + } + else if (seltype(f, 2) == 3) // none retained; all dead + { + retain_a(y, fs) = 0.0; + discmort_a(y, fs) = 1.0; + sel_a_r(y, fs) = 0.0; + discmort2_a(y, fs) = sel_a(y, fs); + } + else + { + if (seltype(f, 2) < 0) // mirror + { + k = -seltype(f, 2); + retain_a(y, fs) = retain_a(y, k); + discmort_a(y, fs) = discmort_a(y, k); + if (seltype(k, 2) == 1) + { + discmort2_a(y, fs) = sel_a(y, fs); // all selected fish are dead; this statement does both genders implicitly + } + else + { + discmort2_a(y, fs, 1) = elem_prod(sel_a(y, fs, 1), retain_a(y, fs, 1) + elem_prod((1. - retain_a(y, fs, 1)), discmort_a(y, fs, 1))); + if (gender == 2) + discmort2_a(y, fs, 2) = elem_prod(sel_a(y, fs, 2), retain_a(y, fs, 2) + elem_prod((1. - retain_a(y, fs, 2)), discmort_a(y, fs, 2))); + } + } + else + { + k = RetainParm(fs); + if (sp(k + 2) == -999.) + { + temp1 = 0.0; + } + else if (sp(k + 2) == 999.) + { + temp1 = 1.0; + } + else + { + temp1 = 1.0 / (1.0 + mfexp(-sp(k + 2))); + } + + // temp=1.-sp(k+2); + // temp1=1.-posfun(temp,0.0,CrashPen); + + retain_a(y, fs, 1) = temp1 / (1. + mfexp(-(r_ages - (sp(k))) / sp(k + 1))); + if (seltype(f, 2) == 4) + { + // allow for dome-shaped retention in 3.30 only + retain_a(y, fs, 1) = elem_prod(retain_a(y, fs, 1), (1. - (1. / (1. + mfexp(-(r_ages - (sp(k + 4))) / sp(k + 5)))))); + } + if (gender == 2) + { + // males + retain_a(y, fs, 2) = temp1 / (1. + mfexp(-(r_ages - (sp(k) + sp(k + 3))) / sp(k + 1))); + if (seltype(f, 2) == 4) + { + retain_a(y, fs, 2) = elem_prod(retain_a(y, fs, 2), (1. - (1. / (1. + mfexp(-(r_ages - (sp(k + 4) + sp(k + 6))) / sp(k + 5)))))); + } + } + if (docheckup == 1 && y == styr) + { + echoinput << "age_retention parms: inflec: " << sp(k) << " width: " << sp(k + 1) << " male_offset: " << sp(k + 3) << " asymptote: " << temp1; + if (seltype(f, 2) == 4) + { + echoinput << " " << sp(k + 4) << " " << sp(k + 5) << " " << sp(k + 6); + } + echoinput << endl + << "ages " << r_ages << endl; + echoinput << "retention " << retain_a(y, fs) << endl; + } + + if (seltype(f, 2) == 1) // all discards are dead + { + discmort_a(y, fs) = 1.0; + discmort2_a(y, fs) = sel_a(y, fs); // all selected fish are dead; + } + else + { + k += N_ret_parm(seltype(f, 2)); // first discard mortality parm + temp = 1. - sp(k + 2); + temp1 = posfun(temp, 0.0, CrashPen); + discmort_a(y, fs, 1) = (1. - temp1 / (1 + mfexp(-(r_ages - (sp(k))) / sp(k + 1)))); + if (gender == 2) + { + // males + discmort_a(y, fs, 2) = (1. - temp1 / (1 + mfexp(-(r_ages - (sp(k) + sp(k + 3))) / sp(k + 1)))); + } + if (docheckup == 1 && y == styr) + echoinput << "discmort " << discmort_a(y, fs) << endl; + discmort2_a(y, fs, 1) = elem_prod(sel_a(y, fs, 1), retain_a(y, fs, 1) + elem_prod((1. - retain_a(y, fs, 1)), discmort_a(y, fs, 1))); + if (gender == 2) + discmort2_a(y, fs, 2) = elem_prod(sel_a(y, fs, 2), retain_a(y, fs, 2) + elem_prod((1. - retain_a(y, fs, 2)), discmort_a(y, fs, 2))); + } + } + + sel_a_r(y, fs, 1) = elem_prod(sel_a(y, fs, 1), retain_a(y, fs, 1)); + if (gender == 2) + { + sel_a_r(y, fs, 2) = elem_prod(sel_a(y, fs, 2), retain_a(y, fs, 2)); + } + } + if (docheckup == 1 && y == styr) + echoinput << "sel-age-ret " << sel_a_r(y, fs) << endl; + if (docheckup == 1 && y == styr) + echoinput << " dead " << discmort2_a(y, fs) << endl; + // end age discard + } + } // end calc of age selex + } // end recalc of selex + + else + // SS_Label_Info_22.9 #Carryover selex from last year because not time-varying + { + if (f <= Nfleet) + { + sel_l(y, f) = sel_l(y - 1, f); // this does both genders + sel_l_r(y, f) = sel_l_r(y - 1, f); + retain(y, f) = retain(y - 1, f); + discmort(y, f) = discmort(y - 1, f); + discmort2(y, f) = discmort2(y - 1, f); + } + else // age + { + sel_a(y, fs) = sel_a(y - 1, fs); // does both genders + retain_a(y, fs) = retain_a(y - 1, fs); + } + } + + Ip += N_selparmvec(f); + + } // end fleet loop for selectivity + } // end selectivity FUNCTION + +FUNCTION void Make_FishSelex() + { + // Similar to Make_Fecundity, this function does the dot product of length distribution with length selectivity and retention vectors + // to calculate equivalent mean quantities at age for each platoon (g) + //******************************************************************** + /* SS_Label_FUNCTION 32 Make_FishSelex */ + // where: + // 4darray sel_bio(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected * wt + // 4darray sel_ret_bio(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected * retained * wt + // 4darray sel_num(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected numbers + // 4darray sel_ret_num(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected * retained numbers + // 4darray sel_dead_num(1,nseas,1,gmorph,1,Nfleet,0,nages); // sel * (retain + (1-retain)*discmort) + // 4darray sel_dead_bio(1,nseas,1,gmorph,1,Nfleet,0,nages); // sel * (retain + (1-retain)*discmort) * wt + + ALK_idx = (s - 1) * N_subseas + mid_subseas; //for midseason + dvar_matrix ALK_w = ALK(ALK_idx, g); // shallow copy + dvar_vector sel_l_r_w(1, nlength); // temp vector for retained contribution to weight-at-age + dvar_vector disc_wt(1, nlength); + int yf; + int tz; + gg = sx(g); + // if(y>endyr) {yz=endyr; } else {yz=y;} // not used + if (y > endyr + 1 && Fcast_timevary_Selex == 1) // do means + { + yf = endyr + 1; + } + else + { + yf = y; + } // yf stores in endyr+1 the average selex from a range of years if Fcast_timevary_Selex==1 + tz = styr + (y - styr) * nseas + s - 1; // can use y, not yf, because Wt_Age_t values are read in and can extend into forecast + for (f = 1; f <= Nfleet; f++) + { + if (timevary_sel(yf, f) > 0 || timevary_sel(yf, f + Nfleet) > 0 || WTage_rd == 1 || save_for_report > 0) + { + makefishsel_yr = yf; + if (WTage_rd == 1 || (seltype(f, 1) == 0 && seltype(f, 2) == 0)) // empirical wt-at-age or no size-selectivity; so no size-based calculations + { + if (WTage_rd == 1) + { + sel_bio(s, f, g) = elem_prod(sel_a(yf, f, gg), Wt_Age_t(tz, f, g)); // selected wt-at-age + } + else + { + sel_bio(s, f, g) = elem_prod(sel_a(yf, f, gg), Wt_Age_mid(s, g)); // selected wt-at-age + Wt_Age_t(tz, f, g) = Wt_Age_mid(s, g); + } + sel_num(s, f, g) = sel_a(yf, f, gg); // selected numbers + int j = seltype(f + Nfleet, 2); + int k = j; + if (j < 0) // invokes mirror + { + j = -j; // fleet number being mirrored for retention + k = seltype(j + Nfleet, 2); // discard approach for fleet j + // note that retain_a and discmort2_a have already been mirrored earlier in this fxn + } + switch (k) // age-retention function + { + case 0: // no discarding, so just copy the selected quantities + { + sel_ret_bio(s, f, g) = sel_bio(s, f, g); // retained wt-at-age + sel_ret_num(s, f, g) = sel_num(s, f, g); // retained numbers + sel_dead_bio(s, f, g) = sel_bio(s, f, g); // dead wt + sel_dead_num(s, f, g) = sel_num(s, f, g); // dead numbers + break; + } + case 1: // age-based retention function is used; all discarded fish assumed dead and have same bodywt as retained fish + { + sel_ret_bio(s, f, g) = elem_prod(sel_bio(s, f, g), retain_a(y, f, gg)); // retained wt-at-age + sel_ret_num(s, f, g) = elem_prod(sel_num(s, f, g), retain_a(y, f, gg)); // retained numbers + sel_dead_bio(s, f, g) = sel_ret_bio(s, f, g); // dead wt + sel_dead_num(s, f, g) = sel_ret_num(s, f, g); // dead numbers + break; + } + case 2: // age-based retention and discard mortality, same body wt as retained fish + { + // details of retention and mortality already taken into account with calc of discmort2_a + sel_ret_bio(s, f, g) = elem_prod(sel_bio(s, f, g), retain_a(y, f, gg)); // retained wt-at-age + sel_ret_num(s, f, g) = elem_prod(sel_num(s, f, g), retain_a(y, f, gg)); // retained numbers + sel_dead_bio(s, f, g) = elem_prod(Wt_Age_t(tz, f, g), discmort2_a(y, f, gg)); // dead wt + sel_dead_num(s, f, g) = discmort2_a(y, f, gg); // dead numbers +// if (y == styr) warning << f << " sel_ret " << sel_ret_bio(s, f, g) << endl << " sel_dead " << sel_dead_bio(s, f, g) << endl; + break; + } + case 3: // all selected fish are dead; use this for a discard only fleet + { + sel_ret_bio(s, f, g) = 0.0; // retained wt-at-age + sel_ret_num(s, f, g) = 0.0; // retained numbers + sel_dead_bio(s, f, g) = sel_bio(s, f, g); // dead wt + sel_dead_num(s, f, g) = sel_num(s, f, g); // dead numbers + break; + } + } + if (docheckup == 1 && y == styr && do_once == 1) + { + echoinput << f << " sel_ret_bio " << sel_ret_bio(s, f, g) << endl + << f << "retain_a " << retain_a(y, f, gg) << endl + << f << " sel_dead_bio " << sel_dead_bio(s, f, g) << endl; + } + } + + else // size_selectivity and possible size retention + { + tempvec_l = elem_prod(sel_l(yf, f, gg), wt_len(s, GP(g))); // combine size selex and wt_at_len to get selected contribution to weight-at-age + if (seltype(f, 2) != 0) + sel_l_r_w = elem_prod(sel_l_r(yf, f, gg), wt_len(s, GP(g))); + if (seltype(f, 2) >= 2) + disc_wt = elem_prod(discmort2(yf, f, gg), wt_len(s, GP(g))); + for (a = 0; a <= nages; a++) + { + int llo = 1; + int lhi = nlength; + sel_bio(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * tempvec_l(llo, lhi)); + sel_num(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * sel_l(yf, f, gg)(llo, lhi)); + Wt_Age_t(tz, f, g, a) = (ALK_w(a)(llo, lhi) * tempvec_l(llo, lhi)) / (ALK_w(a)(llo, lhi) * sel_l(yf, f, gg)(llo, lhi)); + if (seltype(f, 2) != 0) // size discard, so need retention function + { + sel_ret_bio(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * sel_l_r_w(llo, lhi)); + sel_ret_num(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * sel_l_r(yf, f, gg)(llo, lhi)); + } + else if (a == nages) + { + sel_ret_bio(s, f, g) = sel_bio(s, f, g); + sel_ret_num(s, f, g) = sel_num(s, f, g); + } + + if (seltype(f, 2) >= 2) // calc discard mortality + { + sel_dead_num(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * discmort2(yf, f, gg)(llo, lhi)); // selected dead by numbers + sel_dead_bio(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * disc_wt(llo, lhi)); // selected dead by weight + } + else if (a == nages) + { + sel_dead_bio(s, f, g) = sel_bio(s, f, g); + sel_dead_num(s, f, g) = sel_num(s, f, g); + } + + } // end age loop + } + if (write_bodywt > 0 && ishadow(GP2(g)) == 0) + { + bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) + << " " << f << " " << Wt_Age_t(tz, f, g) << " #wt_flt_" << f << endl; + } + } // end need to do it + save_sel_num(t, f, g) = sel_num(s, f, g); // save sel_num in save_fecundity array for output + + } // end fleet loop for mortality, retention + } // end Make_FishSelex +// SS_Label_file #12. **SS_popdyn.tpl** +// SS_Label_file # * setup_recdevs() +// SS_Label_file # * get_initial_conditions() // does virgin and initial year by calling SSBpR_Calc() with F=0, then F=init_F +// SS_Label_file # * get_time_series() // loops the years, calling biology, selectivity and spawn-recr functions as needed +// SS_Label_file # * SSBpR_Calc() // does per-recruit calculations and returns SSB/R and Y/R +// SS_Label_file # + +FUNCTION void setup_recdevs() + { + // SS_Label_Info_7.1 #Set up recruitment bias_adjustment vector + sigmaR = SRparm(N_SRparm(SR_fxn) + 1); + two_sigmaRsq = 2.0 * sigmaR * sigmaR; + half_sigmaRsq = 0.5 * sigmaR * sigmaR; + + biasadj.initialize(); + + if (SR_fxn == 4 || do_recdev == 0) + { + // keep all at 0.0 if not using SR fxn + } + // else if (mceval_phase() || initial_params::mc_phase==1 || recdev_adj(5)<0.0) + else if (mceval_phase() || initial_params::mc_phase == 1) + { + // biasadj=1.0; + biasadj = recdev_doit; // sets to 1.0 for the years or initial ages with estimated recruitments + } + else + { + if (recdev_do_early > 0 && recdev_options(2) >= 0) // do logic on basis of recdev_options(2), which is read, not recdev_PH which can be reset to a neg. value + { + for (i = recdev_early_start; i <= recdev_early_end; i++) + { + if (i >= styr - nages) + biasadj(i) = biasadj_full(i); + } + } + if (do_recdev > 0 && recdev_PH_rd >= 0) + { + for (i = recdev_start; i <= recdev_end; i++) + { + if (i >= styr - nages) + biasadj(i) = biasadj_full(i); + } + } + if (Do_Forecast > 0 && recdev_options(3) >= 0) + { + for (i = recdev_end + 1; i <= YrMax; i++) + { + biasadj(i) = biasadj_full(i); + } + } + if (recdev_read > 0) + { + for (j = 1; j <= recdev_read; j++) + { + y = recdev_input(j, 1); + if (y >= recdev_first && y <= YrMax) + biasadj(y) = biasadj_full(y); + } + } + } + sd_offset_rec = sum(biasadj) * sd_offset; + // SS_Label_Info_7.2 #Copy recdev parm vectors into full time series vector + if (recdev_do_early > 0) + { + recdev(recdev_early_start, recdev_early_end) = recdev_early(recdev_early_start, recdev_early_end); + } + if (do_recdev == 1) + { + recdev(recdev_start, recdev_end) = recdev1(recdev_start, recdev_end); + } + else if (do_recdev >= 2) + { + recdev(recdev_start, recdev_end) = recdev2(recdev_start, recdev_end); + } + if (Do_Forecast > 0 && do_recdev > 0) + recdev(recdev_end + 1, YrMax) = Fcast_recruitments(recdev_end + 1, YrMax); // only needed here for reporting + } // end setup for recdevs + +FUNCTION void get_initial_conditions() + { + //********************************************************************* + /* SS_Label_Function_23 #get_initial_conditions */ + natage.initialize(); + catch_fleet.initialize(); + annual_catch.initialize(); + annual_F.initialize(); + Recr.initialize(); + save_gparm = 0; // index for saving time-varying changes to biology quantities + + if (SzFreq_Nmeth > 0) + SzFreq_exp.initialize(); + + // SS_Label_Info_23.1 #call biology and selectivity functions for the initial year + // SS_Label_Info_23.1.1 #These rate are calculated once in PRELIMINARY_CALCS_SECTION, so only recalculate if active according to MG_active + y = styr; + yz = styr; + t_base = styr - 1; + recr_dist_unf.initialize(); + + // Create time varying parameters + // following call is to routine that does this for all timevary parameters + // that are then copied over to replace the base parameter for MG, SRR, Q, Selex, or Tag as needed + make_timevaryparm(); // this fills array parm_timevary for all years; densitydependence must be done year-by-year later + if (MG_active(0) > 0 || save_for_report > 0) + { + get_MGsetup(y); + } + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " MGsetup OK " << endl; + #endif + if (MG_active(2) > 0) + get_growth1(); // seasonal effects and CV + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " growth1 OK" << endl; + #endif + if (MG_active(2) > 0 || do_once == 1) + { + ALK_subseas_update = 1; // to indicate that all ALKs need calculation + get_growth2(y); + t = styr - 1; + for (s = 1; s <= nseas; s++) + { + t++; + for (subseas = 1; subseas <= N_subseas; subseas++) // do all subseasons in first year + { + get_growth3(y, t, s, subseas); // in case needed for Lorenzen M + Make_AgeLength_Key(s, subseas); + } + } + + // SS_Label_Info_16.2.4.3 #propagate Ave_Size from early years forward until first year that has time-vary growth + k = styr + 1; + do + { + for (s = 1; s <= nseas; s++) + { + t = styr + (k - styr) * nseas + s - 1; + Ave_Size(t, 1) = Ave_Size(t - nseas, 1); + } // end season loop + k++; + } while (timevary_MG(k, 2) == 0 && k <= YrMax); + if (k <= YrMax) + { + t = styr + (k - styr) * nseas; + Ave_Size(t, 1) = Ave_Size(t - nseas, 1); // prep for time-vary next yr + } + } + if (MG_active(3) > 0) + get_wtlen(); // stores values for all seasons + get_mat_fec(); // does just spawn season and subseason using ALK calculated just above + if (Hermaphro_Option != 0) + get_Hermaphro(); + + if (do_once>0 || MG_active(1) > 0) + { + get_natmort(); // gets base M (e.g. M1) by season and stores it in natM(t,0). Later, pred_M2 is added by area + for (s = 1; s <= nseas; s++) + { + natM(t_base - 2 * nseas + s) = natM(t_base + s); // copy to virgin + natM(t_base - nseas + s) = natM(t_base + s); // then to init_conditions year + } + } + + #ifdef DO_ONCE + if (do_once == 1) + echoinput << "natmort OK" << endl; + #endif + + if (MG_active(4) > 0) + get_recr_distribution(); + if (y >= Bmark_Yr(7) && y <= Bmark_Yr(8)) + { + for (gp = 1; gp <= N_GP; gp++) + for (p = 1; p <= pop; p++) + for (settle = 1; settle <= N_settle_timings; settle++) + if (recr_dist_pattern(gp, settle, p) > 0) + { + recr_dist_unf(gp, settle, p) += recr_dist(y, gp, settle, p); + if (gender == 2) + recr_dist_unf(gp + N_GP, settle, p) += recr_dist(y, gp + N_GP, settle, p); + } + } + + if (MG_active(5) > 0) + get_migration(); + #ifdef DO_ONCE + if (do_once == 1) + { + echoinput << "migr OK" << endl; + } + #endif + if (MG_active(7) > 0) + { + get_catch_mult(y, catch_mult_pointer); + for (j = styr + 1; j <= YrMax; j++) + { + catch_mult(j) = catch_mult(y); + } + } + + if (Use_AgeKeyZero > 0) + { + if (MG_active(6) > 0) + get_age_age(Use_AgeKeyZero, AgeKey_StartAge, AgeKey_Linear1, AgeKey_Linear2); // call function to get the age_age key + if (save_for_report == 1 && store_agekey_add > 0) + { + save_agekey_count = N_ageerr + 1; // first blank key after the used keys + age_age(save_agekey_count) = age_age(Use_AgeKeyZero); + age_err(save_agekey_count) = age_err(Use_AgeKeyZero); + } + #ifdef DO_ONCE + if (do_once == 1) + { + echoinput << "age_err key recalc in " << y << endl; + } + #endif + } + + if (save_for_report > 0) + { + get_saveGparm(); + } + + // SS_Label_Info_23.2 #Calculate selectivity in the initial year + get_selectivity(); + #ifdef DO_ONCE + if (do_once == 1) + { + echoinput << "selectivity OK" << endl; + echoinput << "Calculate ALK" << endl; + } + #endif + + // SS_Label_Info_23.3 #Loop seasons and subseasons + t = styr - 1; + for (s = 1; s <= nseas; s++) + { + t++; + + if (WTage_rd > 0) + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Wt_Age_beg(s, g) = Wt_Age_t(t, 0, g); + Wt_Age_mid(s, g) = Wt_Age_t(t, -1, g); + if (s == spawn_seas) + fec(g) = Wt_Age_t(t, -2, g); + } + } + else if (MG_active(2) > 0 || MG_active(3) > 0 || save_for_report > 0 || do_once == 1) + { + // Make_Fecundity(); + if (s == spawn_seas && spawn_seas == 1) + get_mat_fec(); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + subseas = 1; + ALK_idx = (s - 1) * N_subseas + subseas; + Wt_Age_beg(s, g) = (ALK(ALK_idx, g) * wt_len(s, GP(g))); // wt-at-age at beginning of period + subseas = mid_subseas; + ALK_idx = (s - 1) * N_subseas + subseas; + Wt_Age_mid(s, g) = ALK(ALK_idx, g) * wt_len(s, GP(g)); // use for fisheries with no size selectivity + } + } + + Wt_Age_t(t, 0) = Wt_Age_beg(s); + Wt_Age_t(t, -1) = Wt_Age_mid(s); + + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + // SS_Label_Info_23.3.3 #for each platoon, combine size_at_age distribution with length selectivity and weight-at-length to get combined selectivity vectors + Make_FishSelex(); + } + + // SS_Label_Info_23.3.4 #add predator M2 to M1 to update seasonal, areal natM in styr and calc surv for use in Pope's + + if(N_pred>0) + { +// rebase natM to M1, which is stored in the p=0 section of array + for(p = 1; p <= pop; p++) + { + natM(t, p) = natM(t,0); + } +// calc M2 + for (f1 = 1; f1 <= N_pred; f1++) + { + f = predator(f1); + pred_M2(f1, t) = mgp_adj(predparm_pointer(f1)); // base with no seasonal effect + if (nseas > 1) + pred_M2(f1, t) *= mgp_adj(predparm_pointer(f1) + s); + pred_M2(f1, t-nseas) = pred_M2(f1, t); + pred_M2(f1, t-nseas-nseas) = pred_M2(f1, t); + p = fleet_area(f); // area this predator occurs in + + // a new array for indexing g and gpi could simplify below + // for (gp = 1; gp <= N_GP * gender * N_settle_timings; gp++) + // add each M2 to get total M + for (gp = 1; gp <= N_GP * gender; gp++) + { + g = g_Start(gp); // base platoon + for (settle = 1; settle <= N_settle_timings; settle++) + { + g += N_platoon; + int gpi = GP3(g); // GP*gender*settlement + natM(t, p,gpi) += pred_M2(f1, t) * sel_num(s, f, g); + if (do_once == 1 && p == 1) + echoinput << "init " << y << " s " << s << " t " << t << " area " << 0 << " gp " << gpi << " M1: " << natM(t,0, gpi) << endl; + if (do_once == 1) + echoinput << "init " << y << " s " << s << " t " << t << " area " << p << " gp " << gpi << " M1+M2: " << natM(t, p, gpi) << endl; + } + } + } + natM(t-nseas) = natM(t); //for initial equilibrium + natM(t-nseas-nseas) = natM(t); // for virgin + } + + for(p = 1; p <= pop; p++) + { + int s1 = (p - 1) * nseas + s; + surv1(s1) = mfexp( - natM(t,p) * seasdur_half(s)); + surv2(s1) = square(surv1(s1)); + } + } // end season (s) loop in biology, mortality and selectivity calcs in initial year + + #ifdef DO_ONCE + if (do_once == 1) + echoinput << "Begin calculating virgin age struc " << endl; + #endif + // SS_Label_Info_23.4 #calculate unfished (virgin) numbers-at-age + eq_yr = styr - 2; + bio_yr = styr; + Fishon = 0; + virg_fec = fec; + Recr.initialize(); // will store recruitment by area + + // SPAWN-RECR: get expected recruitment globally or by area + if (recr_dist_area == 1 || pop == 1) // do global spawn_recruitment calculations + { + equ_Recr = 1.0; + SSBpR_Calc(equ_Recr); // call function to do per recruit calculation. Returns SPR because R = 1.0 + SSBpR_virgin = SSB_equil; // spawners per recruit. Needed for Sr_fxn = 10 + if(SR_fxn == 10) // B-H with a,b + { + // WHAM based on R = A*S/(1+B*S) + // log_SR_a = log(4 * SR_h/(exp(log_SPR0)*(1 - SR_h))); + // log_SR_b = log((5*SR_h - 1)/((1-SR_h)*SR_R0*exp(log_SPR0))); + // h = a * SPR0 / (4. + a * SPR0) + // R0 = 1/b * (a-1/SPR0) + + alpha = mfexp(SRparm(3)); + beta = mfexp(SRparm(4)); + steepness = alpha * SSBpR_virgin / (4. + alpha * SSBpR_virgin); + Recr_virgin = 1. / beta * (alpha - (1. / SSBpR_virgin)); + SRparm(1) = log(Recr_virgin); + SRparm(2) = steepness; + } + else + { + Recr_virgin = mfexp(SRparm(1)); + } + + for (int i = 1; i <= N_SRparm2; i++) + { + SRparm_byyr(eq_yr, i) = SRparm(i); + SRparm_virg(i) = SRparm(i); + SRparm_work(i) = SRparm(i); + } +// if (SR_fxn == 3) warning << "tester_A: " << SRparm_work(1) << " base: " << SRparm(1) << endl; +// if (SR_fxn == 10) warning << "tester_A: " << SRparm_work(4) << " base: " << SRparm(4) << endl; + equ_Recr = Recr_virgin; + exp_rec(eq_yr, 1) = Recr_virgin; // expected Recr from s-r parms + exp_rec(eq_yr, 2) = Recr_virgin; + exp_rec(eq_yr, 3) = Recr_virgin; + exp_rec(eq_yr, 4) = Recr_virgin; + SSBpR_Calc(equ_Recr); // call function to do per recruit calculation + SSB_virgin = SSB_equil; + if(Do_Benchmark==0) // assign values that would be created in benchmark section + { + SSB_unf = SSB_virgin; + Mgmt_quant(1) = SSB_unf; // will be overwritten in benchmark + Recr_unf = Recr_virgin; // will be overwritten in benchmark + Mgmt_quant(2) = totbio; // from Do_Equil_Calc + Mgmt_quant(3) = smrybio; // from Do_Equil_Calc + Mgmt_quant(4) = Recr_virgin; + } + Smry_Table(styr - 2, 1) = totbio; // from equil calcs + Smry_Table(styr - 2, 2) = smrybio; // from equil calcs + Smry_Table(styr - 2, 3) = smrynum; // from equil calcs + SSB_pop_gp(eq_yr) = SSB_equil_pop_gp; // dimensions of pop x N_GP + if (Hermaphro_Option != 0) + MaleSSB(eq_yr) = MaleSSB_equil_pop_gp; + SSB_yr(eq_yr) = SSB_equil; + SRparm_byyr(eq_yr, N_SRparm2 + 1) = SSB_equil; + SRparm_virg(N_SRparm2 + 1) = SSB_equil; + SRparm_work(N_SRparm2 + 1) = SSB_equil; + t = styr - 2 * nseas - 1; + for (s = 1; s <= nseas; s++) + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + { + if (use_morph(g) > 0) + { + natage(t + s, p, g)(0, nages) = equ_numbers(s, p, g)(0, nages); + Z_rate(t + s, p, g)(0, nages) = equ_Z(s, p, g)(0, nages); + } + } + } + if (save_for_report > 0) + { + SSB_B_yr(eq_yr).initialize(); + SSB_N_yr(eq_yr).initialize(); + for (s = 1; s <= nseas; s++) + { + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (s == spawn_seas && sx(g) == 1) + { + SSB_B_yr(eq_yr) += make_mature_bio(GP4(g)) * natage(t + s, p, g); + SSB_N_yr(eq_yr) += make_mature_numbers(GP4(g)) * natage(t + s, p, g); + } + Save_PopAge(t + s, p, g) = natage(t + s, p, g); + Save_PopAge(t + s, p + pop, g) = elem_prod(natage(t + s, p, g), mfexp(-Z_rate(t + s, p, g) * 0.5 * seasdur(s))); + if (Settle_seas(settle_g(g)) == s) + Recr(p, t + 1 + Settle_seas_offset(settle_g(g))) += equ_Recr * recr_dist(y, GP(g), settle_g(g), p) * platoon_distr(GP2(g)); + Save_PopBio(t + s, p, g) = elem_prod(natage(t + s, p, g), Wt_Age_beg(s, g)); + Save_PopBio(t + s, p + pop, g) = elem_prod(Save_PopAge(t + s, p + pop, g), Wt_Age_mid(s, g)); + } + for (int ff = 1; ff <= N_pred; ff++) + { + f = predator(ff); + for (g = 1; g <= 6; g++) + { + catch_fleet(t + s, f, g) = equ_catch_fleet(g, s, f); + } + for (g = 1; g <= gmorph; g++) + { + catage(t + s, f, g) = equ_catage(s, f, g); + } + } + } + } + } + else // area-specific spawn-recruitment + { + } + +// SS_Label_Info_23.5 #Calculate equilibrium using initial F + #ifdef DO_ONCE + if (do_once == 1) + echoinput << "Begin calculating initial age structure" << endl; + #endif + eq_yr = styr - 1; + bio_yr = styr; + if (fishery_on_off == 1) + { + Fishon = 1; + } + else + { + Fishon = 0; + } + + for (f = 1; f <= N_SRparm2; f++) + { + if (SRparm_timevary(f) == 0) + { + // no change to SRparm_work + } + else + { + SRparm_work(f) = parm_timevary(SRparm_timevary(f), eq_yr); +// warning << "tester_B: " << SRparm_work(f) << " timevary " << " base " << SRparm(f) < 0) + { + Hrate(f, t) = init_F(init_F_loc(s, f)); + } + } + } + // for the initial equilibrium, R0 and steepness will remain same as for virgin, but a regime shift is allowed + // change with 3.30.12 to allow R0 to change according to a timevary effect + // exp_rec(eq_yr,1)=Recr_virgin; + // R1_exp=Recr_virgin; + R1_exp = mfexp(SRparm_work(1)); + exp_rec(eq_yr, 1) = R1_exp; + // SS_Label_Info_23.5.1 #Apply adjustments to the recruitment level + // SPAWN-RECR: adjust recruitment for the initial equilibrium + regime_change = 1.0; + if (SRparm_timevary(N_SRparm2 - 1) > 0) // timevary regime exists + { + regime_change = mfexp(SRparm_work(N_SRparm2 - 1)); + } + + if (init_equ_steepness == 0) // Adjustments do not include spawner-recruitment steepness + { + // R1=Recr_virgin*regime_change; + R1 = R1_exp * regime_change; + exp_rec(eq_yr, 2) = R1; + exp_rec(eq_yr, 3) = R1; + exp_rec(eq_yr, 4) = R1; + equ_Recr = R1; // equ_Recr is used inside of SSBpR_Calc + SSBpR_Calc(equ_Recr); + CrashPen += Equ_penalty; + } + else + { + // SS_Label_Info_23.5.1.2 #Adjustments include spawner-recruitment function + // do initial equilibrium with R1 based on offset from spawner-recruitment curve, using same approach as the benchmark calculations + // first get SPR for this init_F + // SPAWN-RECR: calc initial equilibrium pop, SSB, Recruitment + // equ_Recr=Recr_virgin; +// equ_Recr = R1_exp * regime_change; // NOTE: seems wrong to apply regime here + equ_Recr = R1_exp; + SSBpR_Calc(equ_Recr); + CrashPen += Equ_penalty; + SSBpR_temp = SSB_equil / equ_Recr; // spawners per recruit at initial F + // get equilibrium SSB and recruitment from SSBpR_temp, Recr_virgin and virgin steepness + // this is the initial year, so no time-vary effects available, so uses _virgin quantities for spawner-recruitment + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_work, SSB_virgin, Recr_virgin, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + R1_exp = Equ_SpawnRecr_Result(2); // set the expected recruitment equal to this equilibrium + exp_rec(eq_yr, 1) = R1_exp; + + equ_Recr = R1_exp * regime_change; + exp_rec(eq_yr, 2) = equ_Recr; + exp_rec(eq_yr, 3) = equ_Recr; + exp_rec(eq_yr, 4) = equ_Recr; + R1 = equ_Recr; + SSBpR_Calc(equ_Recr); // calculated SSB_equil + CrashPen += Equ_penalty; + } + Smry_Table(styr - 1, 1) = totbio; // from equil calcs + Smry_Table(styr - 1, 2) = smrybio; // from equil calcs + Smry_Table(styr - 1, 3) = smrynum; // from equil calcs + + SSB_pop_gp(eq_yr) = SSB_equil_pop_gp; // dimensions of pop x N_GP + if (Hermaphro_Option != 0) + MaleSSB(eq_yr) = MaleSSB_equil_pop_gp; + SSB_yr(eq_yr) = SSB_equil; + SRparm_byyr(eq_yr, N_SRparm2 + 1) = SSB_equil; + SRparm_work(N_SRparm2 + 1) = SSB_equil; + SSB_yr(styr) = SSB_equil; + env_data(styr - 1, -1) = 0.0; + env_data(styr - 1, -2) = 0.0; + env_data(styr - 1, -3) = 0.0; + env_data(styr - 1, -4) = 0.0; + + /* + // save est_equ_catch which has units (biomass vs numbers) according to that fleet; used in objfun + for (s = 1; s <= nseas; s++) + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (catchunits(f) == 1) + { + est_equ_catch(s, f) = equ_catch_fleet(2, s, f); + } + else + { + est_equ_catch(s, f) = equ_catch_fleet(5, s, f); + } + } + */ +// if (save_for_report > 0) + { + for (s = 1; s <= nseas; s++) + { + t = styr - nseas - 1 + s; + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + for (g = 1; g <= 6; g++) + { + catch_fleet(t, f, g) = equ_catch_fleet(g, s, f); + annual_catch(styr - 1, g) += equ_catch_fleet(g, s, f); + } + for (g = 1; g <= gmorph; g++) + { + catage(t, f, g) = equ_catage(s, f, g); + } + } + for (int ff = 1; ff <= N_pred; ff++) + { + f = predator(ff); + for (g = 1; g <= 6; g++) + { + catch_fleet(t, f, g) = equ_catch_fleet(g, s, f); + } + for (g = 1; g <= gmorph; g++) + { + catage(t, f, g) = equ_catage(s, f, g); + } + } + } + for (k = 1; k <= 3; k++) + { + Smry_Table(styr - 1, k + 3) = annual_catch(styr - 1, k); + } + } + + for (s = 1; s <= nseas; s++) + { + t = styr - nseas - 1 + s; + a = styr - 1 + s; + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + { + natage(t, p, g)(0, nages) = equ_numbers(s, p, g)(0, nages); + natage(a, p, g)(0, nages) = equ_numbers(s, p, g)(0, nages); + Z_rate(t, p, g) = equ_Z(s, p, g); + } + } + + if (save_for_report > 0) + { + t = styr - nseas - 1; + SSB_B_yr(eq_yr).initialize(); + SSB_N_yr(eq_yr).initialize(); + for (s = 1; s <= nseas; s++) + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (s == spawn_seas && sx(g) == 1) + { + SSB_B_yr(eq_yr) += make_mature_bio(GP4(g)) * natage(t + s, p, g); + SSB_N_yr(eq_yr) += make_mature_numbers(GP4(g)) * natage(t + s, p, g); + } + Save_PopAge(t + s, p, g) = natage(t + s, p, g); + Save_PopAge(t + s, p + pop, g) = elem_prod(natage(t + s, p, g), mfexp(-Z_rate(t + s, p, g) * 0.5 * seasdur(s))); + Save_PopBio(t + s, p, g) = elem_prod(natage(t + s, p, g), Wt_Age_beg(s, g)); + Save_PopBio(t + s, p + pop, g) = elem_prod(Save_PopAge(t + s, p + pop, g), Wt_Age_mid(s, g)); + if (Settle_seas(settle_g(g)) == s) + Recr(p, t + 1 + Settle_seas_offset(settle_g(g))) += equ_Recr * recr_dist(y, GP(g), settle_g(g), p) * platoon_distr(GP2(g)); + } + } + + if (docheckup == 1) + echoinput << " init equil age comp for styr " << styr << endl + << natage(styr) << endl + << endl; + + // if recrdevs start before styr, then use them to adjust the initial agecomp + // apply a fraction of the bias adjustment, so bias adjustment gets less linearly as proceed back in time + if (recdev_first < styr) + { + if (do_recdev <= 2 && SR_fxn != 4) + { + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + for (a = styr - recdev_first; a >= 1; a--) + { + j = styr - a; + natage(styr, p, g, a) *= mfexp(recdev(j) - biasadj(j) * half_sigmaRsq); + } + } + else + { + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + for (a = styr - recdev_first; a >= 1; a--) + { + j = styr - a; + natage(styr, p, g, a) *= mfexp(recdev(j)); + } + } + } + SSB_pop_gp(styr) = SSB_pop_gp(styr - 1); // placeholder in case not calculated early in styr + + // note: the above keeps SSB_pop_gp(styr) = SSB_equil. It does not adjust for initial agecomp, but probably should + } // end initial_conditions + +//********************************************************************* +FUNCTION void get_time_series() + { + /* SS_Label_Function_24 get_time_series */ + dvariable crashtemp; + dvariable crashtemp1; + dvariable interim_tot_catch; + dvariable Z_adjuster; + + if (Do_Morphcomp > 0) + Morphcomp_exp.initialize(); + + // SS_Label_Info_24.0 #Retrieve spawning biomass and recruitment from the initial equilibrium + // SPAWN-RECR: begin of time series, retrieve last SSBio and recruitment + SSB_current = SSB_yr(styr); // need these initial assignments in case recruitment distribution occurs before spawnbio&recruits + if (recdev_doit(styr - 1) > 0) + { + Recruits = R1 * mfexp(recdev(styr - 1) - biasadj(styr - 1) * half_sigmaRsq); + } + else + { + Recruits = R1; + } + + // SS_Label_Info_24.1 #Loop the years + for (y = styr; y <= endyr; y++) + { + yz = y; + if (STD_Yr_Reverse_F(y) > 0) + F_std(STD_Yr_Reverse_F(y)) = 0.0; + t_base = styr + (y - styr) * nseas - 1; + + for (f = 1; f <= N_SRparm2; f++) + { + if (SRparm_timevary(f) == 0) + { + // no change to SRparm_work + } + else + { + SRparm_work(f) = parm_timevary(SRparm_timevary(f), y); +// warning << "tester_C: " << SRparm_work(f) << " timevary_year " << endl; + } + SRparm_byyr(y, f) = SRparm_work(f); + } + + // SS_Label_Info_24.1.1 #store begin of year quantities for use in density-dependent processes + { + env_data(y, -1) = log(SSB_current / SSB_yr(styr - 1)); + if (recdev_doit(y) > 0) + { + env_data(y, -2) = recdev(y); + } // store so can do density-dependence + else + { // should be 0.0 + } + t = t_base + 1; // first season + s = 1; + if (WTage_rd > 0) + { + Wt_Age_beg(s) = Wt_Age_t(t, 0); + Wt_Age_mid(s) = Wt_Age_t(t, -1); + } + else if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || save_for_report == 1) + { + get_growth3(y, t, 1, 1); // before season loop, used for summary biomass + ALK_subseas_update(1) = 1; // do 1st subseas of 1st season; ADD THIS LINE for 3.30.17 + Make_AgeLength_Key(s, 1); // this will give wt_age_beg before any time-varying parameter changes for this year + ALK_idx = (s - 1) * N_subseas + 1; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Wt_Age_beg(s, g) = (ALK(ALK_idx, g) * wt_len(s, GP(g))); // wt-at-age at beginning of period + } + } + smrybio = 0.0; + smrynum = 0.0; + // do not do totbio here because new recruits have not yet occurred + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + { + smrybio += natage(t, p, g)(Smry_Age, nages) * Wt_Age_beg(1, g)(Smry_Age, nages); // calc before recruitment and time-vary biology applied + smrynum += sum(natage(t, p, g)(Smry_Age, nages)); //sums to accumulate across platoons and settlements + } + } + env_data(y, -3) = log(smrybio / Smry_Table(styr - 1, 2)); + env_data(y, -4) = log(smrynum / Smry_Table(styr - 1, 3)); + + Smry_Table(y, 2) = smrybio; // gets used as demoninator for some F_std options + Smry_Table(y, 3) = smrynum; + } + + // SS_Label_Info_24.1.1 #skip biology updating if y=styr because already done + if (y > styr) + { + if (do_densitydependent == 1) + make_densitydependent_parm(y); // call to adjust for density dependence + + // SS_Label_Info_24.1.1 #Update the time varying biology factors if necessary + if (timevary_MG(y, 0) > 0 || save_for_report > 0) + get_MGsetup(y); + if (timevary_MG(y, 2) > 0) + { + ALK_subseas_update = 1; // indicate that all ALKs will need re-estimation + get_growth2(y); // propagates growth to each season this year and to begin next year + get_growth3(y, t, 1, 1); // cleans up the linear growth range for begin of this year + } + if (timevary_MG(y, 3) > 0) + { + get_wtlen(); // stores values for all seasons + // note that get_mat_fec() will get called in the season loop because it may need the ALK for a later season + // but Maunder's M in get_natmort() may use the fecundity vector, so would be using the most recently calculated Problem?? + if (Hermaphro_Option != 0) + get_Hermaphro(); + } + if (timevary_MG(y, 1) > 0) + { + get_natmort(); + } + else + { + for (s = 1; s <= nseas; s++) + { + natM(t_base + s) = natM(t_base - nseas + s); + } // set M equal to last year's; + // does all areas (p), but if there are predators, then add of pred_M2 occurs in season loop below + } + + if (timevary_MG(y, 4) > 0) + get_recr_distribution(); + if (y >= Bmark_Yr(7) && y <= Bmark_Yr(8)) + { + for (gp = 1; gp <= N_GP; gp++) + for (p = 1; p <= pop; p++) + for (settle = 1; settle <= N_settle_timings; settle++) + if (recr_dist_pattern(gp, settle, p) > 0) + { + recr_dist_unf(gp, settle, p) += recr_dist(y, gp, settle, p); + if (gender == 2) + recr_dist_unf(gp + N_GP, settle, p) += recr_dist(y, gp + N_GP, settle, p); + } + } + if (timevary_MG(y, 5) > 0) + get_migration(); + if (timevary_MG(y, 7) > 0) + { + get_catch_mult(y, catch_mult_pointer); + } + + if (Use_AgeKeyZero > 0) + { + if (timevary_MG(y, 6) > 0) + { + get_age_age(Use_AgeKeyZero, AgeKey_StartAge, AgeKey_Linear1, AgeKey_Linear2); // call function to get the age_age key + if (save_for_report == 1 && store_agekey_add > 0) + { + save_agekey_count++; // next blank key after the used keys + age_age(save_agekey_count) = age_age(Use_AgeKeyZero); + age_err(save_agekey_count) = age_err(Use_AgeKeyZero); + } + + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " ageerr_key recalc in " << y << endl; + #endif + } + } + + if (save_for_report > 0) + { + if (timevary_MG(y, 1) > 0 || timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0) + { + get_saveGparm(); + } + } + } + + // SS_Label_Info_24.2 #Loop the seasons + for (s = 1; s <= nseas; s++) + { + if (docheckup == 1) + echoinput << endl + << "************************************" << endl + << " year, seas " << y << " " << s << endl; + // SS_Label_Info_24.1.2 #Call selectivity, which does its own internal check for time-varying changes + // note that Make_Fish_selex is called later after the ALK's have been updated + if (s == 1 && y > styr) + get_selectivity(); + t = t_base + s; + + // SS_Label_Info_24.2.1 #Update the age-length key and the fishery selectivity for this season + + // if(timevary_MG(y,2)>0 || timevary_MG(y,3)>0 || save_for_report==1 || WTage_rd>0) + if (timevary_MG(y, 2) > 0 || save_for_report == 1) + { + get_growth3(y, t, s, 1); // first subseas of season=s + Make_AgeLength_Key(s, 1); + + get_growth3(y, t, s, mid_subseas); // for midseason + Make_AgeLength_Key(s, mid_subseas); + // SPAWN-RECR: call Make_Fecundity in time series + if (s == spawn_seas) + { + if (spawn_subseas != 1 && spawn_subseas != mid_subseas) + { + subseas = spawn_subseas; + get_growth3(y, t, s, subseas); + Make_AgeLength_Key(s, subseas); // spawn subseas + } + } + } + if (WTage_rd > 0) + { + Wt_Age_beg(s) = Wt_Age_t(t, 0); + Wt_Age_mid(s) = Wt_Age_t(t, -1); + if (s == spawn_seas) + { + fec = Wt_Age_t(t, -2); + } + } + else if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || save_for_report > 0 || do_once == 1) + { + if (s == spawn_seas) + get_mat_fec(); + // Make_Fecundity(); + ALK_idx = (s - 1) * N_subseas + 1; // subseas=1 + int ALK_idx2 = (s - 1) * N_subseas + mid_subseas; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Wt_Age_beg(s, g) = (ALK(ALK_idx, g) * wt_len(s, GP(g))); // wt-at-age at beginning of period + Wt_Age_mid(s, g) = ALK(ALK_idx2, g) * wt_len(s, GP(g)); // use for fisheries with no size selectivity + } + } + + Wt_Age_t(t, 0) = Wt_Age_beg(s); + Wt_Age_t(t, -1) = Wt_Age_mid(s); + + if (y > styr) // because styr is done as part of initial conditions + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Make_FishSelex(); + } + +// rebase natM to M1 + for(p = 1; p <= pop; p++) + { + natM(t, p) = natM(t,0); + } + // SS_Label_Info_24.x.x #add predator M2 inside the yr,seas loop + if(N_pred>0) + { + // add pred_M2 by area + for (f1 = 1; f1 <= N_pred; f1++) + { + f = predator(f1); + pred_M2(f1, t) = mgp_adj(predparm_pointer(f1)); // base with no seasonal effect + if (nseas > 1) + pred_M2(f1, t) *= mgp_adj(predparm_pointer(f1) + s); + p = fleet_area(f); // area this predator occurs in + + // a new array for indexing g and gpi could simplify below + // for (gp = 1; gp <= N_GP * gender * N_settle_timings; gp++) + + for (gp = 1; gp <= N_GP * gender; gp++) + { + g = g_Start(gp); // base platoon + for (settle = 1; settle <= N_settle_timings; settle++) + { + g += N_platoon; + int gpi = GP3(g); // GP*gender*settlement + natM(t, p,gpi) += pred_M2(f1, t) * sel_num(s, f, g); + if (do_once == 1 && p == 1) + echoinput << y << " s " << s << " t " << t << " area " << 0 << " gp " << gpi << " M1: " << natM(t,0, gpi) << endl; + if (do_once == 1) + echoinput << y << " s " << s << " t " << t << " area " << p << " gp " << gpi << " M1+M2: " << natM(t, p, gpi) << endl; + } + } + } + } + + for(p = 1; p <= pop; p++) + { + int s1 = (p - 1) * nseas + s; + surv1(s1) = mfexp(-natM(t,p) * seasdur_half(s)); + surv2(s1) = square(surv1(s1)); + } + } + // SS_Label_Info_24.2.2 #Compute spawning biomass if this is spawning season so recruits could occur later this season + // SPAWN-RECR: calc SSB in time series if spawning is at beginning of the season + if (s == spawn_seas && spawn_time_seas < 0.0001) // compute spawning biomass if spawning at beginning of season so recruits could occur later this season + { + SSB_pop_gp(y).initialize(); + SSB_B_yr(y).initialize(); + SSB_N_yr(y).initialize(); + Smry_Table(y, 15) = 0.0; + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 1 && use_morph(g) > 0) // female + { + SSB_pop_gp(y, p, GP4(g)) += fracfemale_mult * fec(g) * natage(t, p, g); // accumulates SSB by area and by growthpattern + SSB_B_yr(y) += fracfemale_mult * make_mature_bio(GP4(g)) * natage(t, p, g); + SSB_N_yr(y) += fracfemale_mult * make_mature_numbers(GP4(g)) * natage(t, p, g); + Smry_Table(y, 15) += fracfemale_mult * natage(t, p, g) * elem_prod(fec(g), r_ages); // for mean age of female spawners = GenTime + // SSB_pop_gp(y,p,GP4(g)) += fec(g)*natage(t,p,g); // accumulates SSB by area and by growthpattern + // SSB_B_yr(y) += make_mature_bio(GP4(g))*natage(t,p,g); + // SSB_N_yr(y) += make_mature_numbers(GP4(g))*natage(t,p,g); + } + } + SSB_current = sum(SSB_pop_gp(y)); + SSB_yr(y) = SSB_current; + + if (Hermaphro_Option != 0) // get male biomass + { + MaleSSB(y).initialize(); + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 2 && use_morph(g) > 0) // male; all assumed to be mature + { + MaleSSB(y, p, GP4(g)) += Wt_Age_t(t, 0, g) * natage(t, p, g); // accumulates SSB by area and by growthpattern + } + } + if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB + { + SSB_current += Hermaphro_maleSSB * sum(MaleSSB(y)); + SSB_yr(y) = SSB_current; + } + } + + // SS_Label_Info_24.2.3 #Get the total recruitment produced by this spawning biomass at the beginning of the season + // SPAWN-RECR: calc recruitment in time series + if (timevary_SRparm(y) == 0) // SRparm use virgin values (but regime still could be) + { + R0_use = Recr_virgin; + SSB_use = SSB_virgin; +// warning << y << " virgin_SRR; SSB_use: "< 0) + { + settle = settle_g(g); + for (p = 1; p <= pop; p++) + { + if (y == styr) + natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) = 0.0; // to negate the additive code + natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) += + Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * + mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); + Recr(p, t + Settle_seas_offset(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)); + // the adjustment for mortality increases recruit value for elapsed time since begin of season because M will then be applied from beginning of season + if (docheckup == 1) + echoinput << y << " Recruits, dist, surv, result " << Recruits << " " << recr_dist(y, GP(g), settle, p) << " " << mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)) << " " << natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) << " M "< 0) + { + // SS_Label_Info_24.3.1 #Get middle of season numbers-at-age from M only; + int s1 = (p - 1) * nseas + s; + Nmid(g) = elem_prod(natage(t, p, g), surv1(s1, GP3(g))); // get numbers-at-age(g,a) surviving to middle of time period + if (docheckup == 1) + echoinput << p << " " << g << " " << GP3(g) << " area & morph " << endl + << "N-at-age " << natage(t, p, g)(0, min(6, nages)) << endl + << "survival " << surv1(s, GP3(g))(0, min(6, nages)) << endl; + if (save_for_report == 1) + { + // SS_Label_Info_24.3.2 #Store some beginning of season quantities + Save_PopLen(t, p, g) = 0.0; + Save_PopLen(t, p + pop, g) = 0.0; // later put midseason here + Save_PopWt(t, p, g) = 0.0; + Save_PopWt(t, p + pop, g) = 0.0; // later put midseason here + Save_PopAge(t, p, g) = 0.0; + Save_PopAge(t, p + pop, g) = 0.0; // later put midseason here + Save_PopBio(t, p, g) = 0.0; + Save_PopBio(t, p + pop, g) = 0.0; // later put midseason here + ALK_idx = (s - 1) * N_subseas + 1; + for (a = 0; a <= nages; a++) + { + Save_PopLen(t, p, g) += value(natage(t, p, g, a)) * value(ALK(ALK_idx, g, a)); + Save_PopWt(t, p, g) += value(natage(t, p, g, a)) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); + Save_PopAge(t, p, g, a) = value(natage(t, p, g, a)); + Save_PopBio(t, p, g, a) = value(natage(t, p, g, a)) * value(Wt_Age_beg(s, g, a)); + } // close age loop + if (s == 1) + { + totbio += natage(t, p, g)(0, nages) * Wt_Age_beg(s, g)(0, nages); + smrybio += natage(t, p, g)(Smry_Age, nages) * Wt_Age_beg(s, g)(Smry_Age, nages); + smrynum += sum(natage(t, p, g)(Smry_Age, nages)); //sums to accumulate across platoons and settlements + } + } + } + + // SS_Label_Info_24.3.3 #Do fishing mortality + catage_tot.initialize(); + + if ((catch_seas_area(t, p, 0) == 1 && fishery_on_off == 1)) + { + if (F_Method > 1) // not Pope's + { + // SS_Label_Info_24.3.3.3 #use the hybrid F method by selected fleets + // hybrid F_method + k = current_phase(); + if (k < F_PH_time(0, t)) // some fleet needs hybrid this phase + { + // SS_Label_Info_24.3.3.3.1 #Start by doing a Pope's approximation + for (int ff = 1; ff <= N_catchfleets(p); ff++) // loop fleets in this area (p) + { + f = fish_fleet_area(p, ff); + if (k < F_PH_time(f, t)) // do hybrid F for this fleet + { + vbio.initialize(); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (catchunits(f) == 1) + { + vbio += Nmid(g) * sel_ret_bio(s, f, g); + } // retained catch bio + else + { + vbio += Nmid(g) * sel_ret_num(s, f, g); + } // retained catch numbers + } //close gmorph loop + // SS_Label_Info_24.3.3.3.2 #Apply constraint so that no fleet's initial calculation of harvest rate would exceed 95% + temp = catch_ret_obs(f, t) / (vbio + 0.1 * catch_ret_obs(f, t)); // Pope's rate robust + join1 = 1. / (1. + mfexp(30. * (temp - 0.95))); // steep logistic joiner at harvest rate of 0.95 + temp1 = join1 * temp + (1. - join1) * 0.95; + // SS_Label_Info_24.3.3.3.3 #Convert the harvest rate to a starting value for F + Hrate(f, t) = -log(1. - temp1) / seasdur(s); // initial estimate of F (even though labelled as Hrate) + } + } + + // SS_Label_Info_24.3.3.3.4 #Do a specified number of loops to tune up these F values to more closely match the observed catch + for (int tune_F = 1; tune_F <= F_Tune - 1; tune_F++) + { + // SS_Label_Info_24.3.3.3.5 #add F+M to get Z + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Z_rate(t, p, g) = natM(t, p, GP3(g)); // already includes predators + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + Z_rate(t, p, g) += sel_dead_num(s, f, g) * Hrate(f, t); + } + + Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); + } + + // SS_Label_Info_24.3.3.3.6 #Now calc adjustment to Z based on changes to be made to Hrate + { + interim_tot_catch = 0.0; // this is the expected total catch that would occur with the current Hrates and Z + // totcatch_byarea(t,p) is now recalculated here just for the fleets doing hybrid in this phase + double target_catch = 0.0; + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + + if (current_phase() < F_PH_time(f, t)) // so still doing hybrid; skips bycatch fleets + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (catchunits(f) == 1) + { + interim_tot_catch += catch_mult(y, f) * Hrate(f, t) * elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); // biomass basis + } + else + { + interim_tot_catch += catch_mult(y, f) * Hrate(f, t) * elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); // numbers basis + } + } //close gmorph loop + target_catch += catch_ret_obs(f, t); + } + } // close fishery + Z_adjuster = target_catch / (interim_tot_catch + 0.0001); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Z_rate(t, p, g) = natM(t, p, GP3(g)) + Z_adjuster * (Z_rate(t, p, g) - natM(t, p, GP3(g))); // find adjusted Z + Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); + } + + for (int ff = 1; ff <= N_catchfleets(p); ff++) //loop over fishing fleets with input catch + { + f = fish_fleet_area(p, ff); +// if (fleet_type(f) == 1) + { + if (current_phase() < F_PH_time(f, t)) // skips bycatch fleets and fixed F values + { + vbio = 0.; // now use this to calc the selected vulnerable biomass (numbers) to each fishery with the adjusted Zrate2 + // since catch = N * F*sel * (1-e(-Z))/Z + // so F = catch / (N*sel * (1-e(-Z)) /Z ) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (catchunits(f) == 1) + { + vbio += elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); + } + else + { + vbio += elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); + } + } //close gmorph loop + temp = catch_ret_obs(f, t) / (catch_mult(y, f) * vbio + 0.0001); // prototype new F + join1 = 1. / (1. + mfexp(30. * (temp - 0.95 * max_harvest_rate))); + Hrate(f, t) = join1 * temp + (1. - join1) * max_harvest_rate; // new F value for this fleet + } // close fishery + } + } + } + } + } // end hybrid F_Method + + // SS_Label_Info_24.3.3.2 #Use a parameter for continuoous F + // continuous F_method + { + // SS_Label_Info_24.3.3.2.1 #For each platoon, loop fleets to calculate Z = M+sum(F) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Z_rate(t, p, g) = natM(t, p, GP3(g)); // already includes predators M2 + + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + if (catch_seas_area(t, p, f) == 1) + { + Z_rate(t, p, g) += sel_dead_num(s, f, g) * Hrate(f, t); + } + } + Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); + } + + // SS_Label_Info_24.3.3.2.2 #For each fleet, loop platoons and accumulate catch + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (catch_seas_area(t, p, f) == 1) + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + catch_fleet(t, f, 1) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_bio(s, f, g)) * Zrate2(p, g); + catch_fleet(t, f, 2) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)) * Zrate2(p, g); + catch_fleet(t, f, 3) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); // retained bio + catch_fleet(t, f, 4) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_num(s, f, g)) * Zrate2(p, g); + catch_fleet(t, f, 5) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_dead_num(s, f, g)) * Zrate2(p, g); + catch_fleet(t, f, 6) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); // retained numbers + catage(t, f, g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_dead_num(s, f, g)), Zrate2(p, g)); + if (Do_Retain(f) > 0) + { + disc_age(t, disc_fleet_list(f), g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_num(s, f, g)), Zrate2(p, g)); // selected numbers + disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_ret_num(s, f, g)), Zrate2(p, g)); // selected numbers + } + } //close gmorph loop + } + } // close fishery + } // end continuous F method + } + else // doing F with Pope's approximation. Predators cannot be used + { + // SS_Label_Info_24.3.3.1 #Use F_Method=1 for Pope's approximation + // SS_Label_Info_24.3.3.1.1 #note that pred_M2 not implemented for Pope's + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + if (catch_seas_area(t, p, f) == 1) + { + dvar_matrix catage_w = catage(t, f); // do shallow copy + + // SS_Label_Info_24.3.3.1.2 #loop over platoons and calculate the vulnerable biomass for each fleet + vbio.initialize(); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + // use sel_l to get total catch and use sel_l_r to get retained vbio + // note that vbio in numbers can be used for both survey abund and fishery available "biomass" + // vbio is for retained catch only; harvest rate = retainedcatch/vbio; + // then harvestrate*catage_w = total kill by this fishery for this morph + + if (catchunits(f) == 1) + { + vbio += Nmid(g) * sel_ret_bio(s, f, g); + } // retained catch bio + else + { + vbio += Nmid(g) * sel_ret_num(s, f, g); + } // retained catch numbers + + } //close gmorph loop + if (docheckup == 1) + echoinput << "fleet vbio obs_catch catch_mult vbio*catchmult" << f << " " << vbio << " " << catch_ret_obs(f, t) << " " << catch_mult(y, f) << " " << catch_mult(y, f) * vbio << endl; + // SS_Label_Info_24.3.3.1.3 #Calculate harvest rate for each fleet from catch/vulnerable biomass + crashtemp1 = 0.; + crashtemp = max_harvest_rate - catch_ret_obs(f, t) / (catch_mult(y, f) * vbio + NilNumbers); + crashtemp1 = posfun(crashtemp, 0.000001, CrashPen); + harvest_rate = max_harvest_rate - crashtemp1; + if (crashtemp < 0. && rundetail >= 2) + { + cout << y << " " << f << " crash vbio*catchmult " << catch_ret_obs(f, t) / (catch_mult(y, f) * (vbio + NilNumbers)) << " " << crashtemp << " " << crashtemp1 << " " << CrashPen << " " << harvest_rate << endl; + } + Hrate(f, t) = harvest_rate; + + // SS_Label_Info_24.3.3.1.4 #Store various catch quantities in catch_fleet + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + catage_w(g) = harvest_rate * elem_prod(Nmid(g), sel_dead_num(s, f, g)); // total kill numbers at age + if (docheckup == 1) + echoinput << "killrate " << sel_dead_num(s, f, g)(0, min(6, nages)) << endl; + catage_tot(g) += catage_w(g); //catch at age for all fleets + catch_fleet(t, f, 2) += Hrate(f, t) * Nmid(g) * sel_dead_bio(s, f, g); // total fishery kill in biomass + catch_fleet(t, f, 5) += Hrate(f, t) * Nmid(g) * sel_dead_num(s, f, g); // total fishery kill in numbers + catch_fleet(t, f, 1) += Hrate(f, t) * Nmid(g) * sel_bio(s, f, g); // total fishery encounter in biomass + catch_fleet(t, f, 3) += Hrate(f, t) * Nmid(g) * sel_ret_bio(s, f, g); // retained fishery kill in biomass + catch_fleet(t, f, 4) += Hrate(f, t) * Nmid(g) * sel_num(s, f, g); // encountered numbers + catch_fleet(t, f, 6) += Hrate(f, t) * Nmid(g) * sel_ret_num(s, f, g); // retained fishery kill in numbers + } // end g loop + } + } // close fishery + + // SS_Label_Info_24.3.3.1.5 #Check for catch_total across fleets being greater than population numbers + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (a = 0; a <= nages; a++) // check for negative abundance, starting at age 1 + { + if (natage(t, p, g, a) > 0.0) + { + crashtemp = max_harvest_rate - catage_tot(g, a) / (Nmid(g, a) + 0.0000001); + crashtemp1 = posfun(crashtemp, 0.000001, CrashPen); + if (crashtemp < 0. && rundetail >= 2) + { + cout << " crash age " << catage_tot(g, a) / (Nmid(g, a) + 0.0000001) << " " << crashtemp << " " << crashtemp1 << " " << CrashPen << " " << (max_harvest_rate - crashtemp1) * Nmid(g, a) << endl; + } + if (crashtemp < 0. && docheckup == 1) + { + echoinput << " crash age " << catage_tot(g, a) / (Nmid(g, a) + 0.0000001) << " " << crashtemp << " " << crashtemp1 << " " << CrashPen << " " << (max_harvest_rate - crashtemp1) * Nmid(g, a) << endl; + } + catage_tot(g, a) = (max_harvest_rate - crashtemp1) * Nmid(g, a); + + temp = natage(t, p, g, a) * surv2(s, GP3(g), a) - catage_tot(g, a) * surv1(s, GP3(g), a); + Z_rate(t, p, g, a) = -log(temp / natage(t, p, g, a)) / seasdur(s); + } + else + { + Z_rate(t, p, g, a) = -log(surv2(s, GP3(g), a)) / seasdur(s); + } + } + if (docheckup == 1) + echoinput << y << " " << s << "total catch-at-age for morph " << g << " " << catage_tot(g)(0, min(6, nages)) << " Z: " << Z_rate(t, p, g)(0, min(6, nages)) << endl; + } + } // end Pope's approx + } // end have some catch in this seas x area + else + { + // SS_Label_Info_24.3.3.4 #No catch or fishery turned off, so set Z=M + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Z_rate(t, p, g) = natM(t, p, GP3(g)); // includes predators + Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); + } + } + + // SS_Label_Info_24.3.3.4 #save vulnerable biomass and numbers. Use middle of season + if (bigsaver == 1) + { + vuln_bio(t) = 0.0; + vuln_num(t) = 0.0; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (f = 1; f<= Nfleet; f++) + { + vuln_bio(t, f) += sel_bio(s, f, g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * 0.5 * seasdur(s))); + vuln_num(t, f) += sel_num(s, f, g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * 0.5 * seasdur(s))); + } + } + } + for (f1 = 1; f1 <= N_pred; f1++) + { + f = predator(f1); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + catch_fleet(t, f, 1) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_bio(s, f, g)) * Zrate2(p, g); + catch_fleet(t, f, 2) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)) * Zrate2(p, g); + catch_fleet(t, f, 3) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); // retained bio + catch_fleet(t, f, 4) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_num(s, f, g)) * Zrate2(p, g); + catch_fleet(t, f, 5) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_dead_num(s, f, g)) * Zrate2(p, g); + catch_fleet(t, f, 6) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); // retained numbers + catage(t, f, g) = pred_M2(f1, t) * elem_prod(elem_prod(natage(t, p, g), sel_dead_num(s, f, g)), Zrate2(p, g)); + } //close gmorph loop + } + } //close area loop + if (s == 1 && save_for_report == 1) + { + Smry_Table(y, 1) = totbio; + Smry_Table(y, 2) = smrybio; + Smry_Table(y, 3) = smrynum; + } + // SS_Label_Info_24.3.4 #Compute spawning biomass if occurs after start of current season + // SPAWN-RECR: calc spawn biomass in time series if after beginning of the season + if (s == spawn_seas && spawn_time_seas >= 0.0001) // compute spawning biomass + { + SSB_pop_gp(y).initialize(); + SSB_B_yr(y).initialize(); + SSB_N_yr(y).initialize(); + Smry_Table(y, 15) = 0.0; + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 1 && use_morph(g) > 0) // female + { + SSB_pop_gp(y, p, GP4(g)) += fracfemale_mult * fec(g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); // accumulates SSB by area and by growthpattern + SSB_B_yr(y) += fracfemale_mult * make_mature_bio(GP4(g)) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); + SSB_N_yr(y) += fracfemale_mult * make_mature_numbers(GP4(g)) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); + Smry_Table(y, 15) += fracfemale_mult * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)) * elem_prod(fec(g), r_ages); // for mean age of female spawners = GenTime + } + } + SSB_current = sum(SSB_pop_gp(y)); + SSB_yr(y) = SSB_current; + if (Hermaphro_Option != 0) // get male biomass + { + MaleSSB(y).initialize(); + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 2 && use_morph(g) > 0) // male; all assumed to be mature + { + MaleSSB(y, p, GP4(g)) += Wt_Age_t(t, 0, g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); // accumulates SSB by area and by growthpattern + } + } + if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB + { + SSB_current += Hermaphro_maleSSB * sum(MaleSSB(y)); + SSB_yr(y) = SSB_current; + } + } + // SS_Label_Info_24.3.4.1 #Get recruitment from this spawning biomass at some time during the season + // SPAWN-RECR: calc recruitment in time series; need to make this area-specific + // SR_fxn + if (timevary_SRparm(y) == 0) // SRparm use virgin values (but regime still could be) + { + R0_use = Recr_virgin; + SSB_use = SSB_virgin; +// warning << y << " virgin_SRR; SSB_use: "< 0) + { + settle = settle_g(g); + for (p = 1; p <= pop; p++) + { + if (y == styr) + natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) = 0.0; // to negate the additive code + + natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * + mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); + Recr(p, t + Settle_seas_offset(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)); + if (docheckup == 1) + echoinput << y << " Recruits, dist, surv, result" << Recruits << " " << recr_dist(y, GP(g), settle, p) << " " << mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)) << " " << natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) << endl; + } + } + } + + // SS_Label_Info_24.6 #Survival to next season and saving midseason numbers and biomass + for (p = 1; p <= pop; p++) + { + if (s == nseas) + { + k = 1; + } + else + { + k = 0; + } // advance age or not + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + settle = settle_g(g); + + { + j = Settle_age(settle); + if (s < nseas && Settle_seas(settle) <= s) + { + natage(t + 1, p, g, j) = natage(t, p, g, j) * mfexp(-Z_rate(t, p, g, j) * seasdur(s)); // advance new recruits within year + } + for (a = j + 1; a < nages; a++) + { + natage(t + 1, p, g, a) = natage(t, p, g, a - k) * mfexp(-Z_rate(t, p, g, a - k) * seasdur(s)); + } + natage(t + 1, p, g, nages) = natage(t, p, g, nages) * mfexp(-Z_rate(t, p, g, nages) * seasdur(s)); // plus group + if (s == nseas) + natage(t + 1, p, g, nages) += natage(t, p, g, nages - 1) * mfexp(-Z_rate(t, p, g, nages - 1) * seasdur(s)); + if (save_for_report == 1) + { + j = p + pop; + ALK_idx = (s - 1) * N_subseas + mid_subseas; + for (a = 0; a <= nages; a++) + { + Save_PopLen(t, j, g) += value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(ALK(ALK_idx, g, a)); + Save_PopWt(t, j, g) += value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); + Save_PopAge(t, j, g, a) = value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))); + Save_PopBio(t, j, g, a) = value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(Wt_Age_mid(s, g, a)); + } // close age loop + } + } + if (docheckup == 1) + { + echoinput << g << " natM: " << natM(t, p, GP3(g))(0, min(6, nages)) << endl; + echoinput << g << " Z: " << Z_rate(t, p, g)(0, min(6, nages)) << endl; + echoinput << g << " N_surv: " << natage(t + 1, p, g)(0, min(6, nages)) << endl; + } + } // close gmorph loop + } + + // SS_Label_Info_24.7 #call to Get_expected_values + Get_expected_values(y, t); + // SS_Label_Info_24.8 #hermaphroditism + if (Hermaphro_Option != 0) + { + if (Hermaphro_seas == -1 || Hermaphro_seas == s) + { + k = gmorph / 2; // because first half of the "g" are females + for (p = 1; p <= pop; p++) // area + for (g = 1; g <= k; g++) // loop females + if (use_morph(g) > 0) + { + if (Hermaphro_Option == 1) + { + for (a = 1; a < nages; a++) + { + natage(t + 1, p, g + k, a) += natage(t + 1, p, g, a) * Hermaphro_val(GP4(g), a - 1); // increment males with females + natage(t + 1, p, g, a) *= (1. - Hermaphro_val(GP4(g), a - 1)); // decrement females + } + } + else if (Hermaphro_Option == -1) + { + for (a = 1; a < nages; a++) + { + natage(t + 1, p, g, a) += natage(t + 1, p, g + k, a) * Hermaphro_val(GP4(g + k), a - 1); // increment females with males + natage(t + 1, p, g + k, a) *= (1. - Hermaphro_val(GP4(g + k), a - 1)); // decrement males + } + } + } + } + } + + // SS_Label_Info_24.9 #migration + //do migration between populations, for each gmorph and age PROBLEM need new container so future recruits not wiped out! + if (do_migration > 0) // movement between areas in time series + { + natage_temp = natage(t + 1); + natage(t + 1) = 0.0; + for (p = 1; p <= pop; p++) // source population + for (p2 = 1; p2 <= pop; p2++) // destination population + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + k = move_pattern(s, GP4(g), p, p2); + if (k > 0) + natage(t + 1, p2, g) += elem_prod(natage_temp(p, g), migrrate(y, k)); + } + } // end migration + + // SS_Label_Info_24.10 #save selectivity*Hrate for tag-recapture + if (Do_TG > 0 && t >= TG_timestart) + { + for (g = 1; g <= gmorph; g++) + for (f = 1; f <= Nfleet; f++) + { + Sel_for_tag(t, f, g) = sel_ret_num(s, f, g) * Hrate(f, t); + } + } + + // SS_Label_Info_24.11 #calc annual F quantities + double countN; + dvariable tempbase; + dvariable tempM; + dvariable tempZ; + if (fishery_on_off == 1 && (bigsaver == 1 || (F_ballpark_yr >= styr))) + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + for (k = 1; k <= 6; k++) + { + annual_catch(y, k) += catch_fleet(t, f, k); + if (k <= 3) + Smry_Table(y, k + 3) = annual_catch(y, k); + } + if (F_Method == 1) + { + annual_F(y, 1) += Hrate(f, t); + } + else + { + annual_F(y, 1) += Hrate(f, t) * seasdur(s); + } + } + + if (s == nseas) + { + // sum across p and g the number of survivors to end of the year + // also project from the initial numbers and M, the number of survivors without F + // then F = ln(n+1/n)(M+F) - ln(n+1/n)(M only), but ln(n) cancels out, so only need the ln of the ratio of the two ending quantities + + // calculated average F weighted by numbers (option 5 is unweighted) + if (F_reporting != 5) + { + tempbase = 0.0; + tempM = 0.0; + tempZ = 0.0; + annual_F(y, 2) = 0.; + annual_F(y, 3) = 0.; + // accumulate numbers across ages, morphs, sexes, areas + for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + { + tempbase += natage(t - nseas + 1, p, g, a); // sum of numbers at beginning of year + tempZ += natage(t + 1, p, g, a + 1); // numbers at beginning of next year + temp3 = natage(t - nseas + 1, p, g, a); // numbers at begin of year + for (j = 1; j <= nseas; j++) + { + temp3 *= mfexp(-seasdur(j) * natM(t - nseas + j, p, GP3(g), a)); + } + tempM += temp3; // survivors if just M operating + } + } + } + annual_F(y, 2) = log(tempM) - log(tempZ); // F=Z-M + annual_F(y, 3) = log(tempbase) - log(tempM); // M + } // end if F_reporting!=5 + + else + { // F_reporting==5 (ICES-style arithmetic mean across ages) + // like option 4 above, but F is calculated 1 age at a time to get a + // unweighted average across ages within each year + countN = 0.0; // used for count of Fs included in average + for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator + { + tempbase = 0.0; + tempM = 0.0; + tempZ = 0.0; + // accumulate numbers across all morphs, sexes, and areas + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + { + tempbase += natage(t - nseas + 1, p, g, a); // sum of numbers at beginning of year + tempZ += natage(t + 1, p, g, a + 1); // numbers at beginning of next year + temp3 = natage(t - nseas + 1, p, g, a); // numbers at begin of year + for (j = 1; j <= nseas; j++) + { + temp3 *= mfexp(-seasdur(j) * natM(t - nseas + j, p, GP3(g), a)); + } + tempM += temp3; // survivors if just M operating + } + } + // calc F and M for this age and add to the total + countN += 1; // increment count of values included in average + annual_F(y, 2) += log(tempM) - log(tempZ); // F=Z-M + annual_F(y, 3) += log(tempbase) - log(tempM); // M + } + annual_F(y, 3) /= countN; // M + annual_F(y, 2) /= countN; // F + } // end F_reporting==5 + + if (STD_Yr_Reverse_F(y) > 0) // save selected std quantity + { + if (F_reporting <= 1) + { + F_std(STD_Yr_Reverse_F(y)) = annual_catch(y, 2) / Smry_Table(y, 2); // dead catch biomass/summary biomass + // does not exactly correspond to F, which is for total catch + } + else if (F_reporting == 2) + { + F_std(STD_Yr_Reverse_F(y)) = annual_catch(y, 5) / Smry_Table(y, 3); // dead catch numbers/summary numbers + } + else if (F_reporting == 3) + { + F_std(STD_Yr_Reverse_F(y)) = annual_F(y, 1); + } + else if (F_reporting == 4 || F_reporting == 5) + { + F_std(STD_Yr_Reverse_F(y)) = annual_F(y, 2); + } + } + } // end s==nseas + } + if (write_bodywt > 0) + { + for (g = 1; g <= gmorph; g++) + { + gg = sx(g); + + if (ishadow(GP2(g)) == 0) + { + if (s == spawn_seas) + bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << -2 << " " << fec(g) << " #fecundity " << endl; + bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << 0 << " " << Wt_Age_beg(s, g) << " #popwt_beg " << endl; + bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << -1 << " " << Wt_Age_mid(s, g) << " #popwt_mid " << endl; + } + } + } + } //close season loop + // SS_Label_Info_24.12 #End loop of seasons + + // SS_Label_Info_24.13 #Use current F intensity to calculate the equilibrium SPR for this year + // if( (save_for_report>0) || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase==0)) ) + if (bigsaver == 1) + { + eq_yr = y; + equ_Recr = Recr_virgin; + bio_yr = y; + Fishon = 0; + SSBpR_Calc(equ_Recr); // call function to do per recruit calculation with current year's biology + Smry_Table(y, 11) = SSB_equil; + Smry_Table(y, 13) = GenTime; + if( SR_fxn == 10 ) + { + temp = SSB_equil / Recr_virgin; // current year's SSB/R with current biology at age + alpha = mfexp(SRparm_work(3)); + beta = mfexp(SRparm_work(4)); + SRparm_byyr(y, 2) = alpha * temp / (4. + alpha * temp); // implied steepness + SRparm_byyr(y, 1) = log( 1. / beta * (alpha - (1. / temp))); // implied ln_R0 + } + Fishon = 1; + SSBpR_Calc(equ_Recr); // call function to do per recruit calculation with current year's biology and F + if (STD_Yr_Reverse_Ofish(y) > 0) + { + SPR_std(STD_Yr_Reverse_Ofish(y)) = SSB_equil / Smry_Table(y, 11); + } + Smry_Table(y, 9) = (totbio); + Smry_Table(y, 10) = (smrybio); + Smry_Table(y, 12) = (SSB_equil); + Smry_Table(y, 14) = (YPR_dead); + } + } //close year loop + + // average quantities accumulated during the time series + if (Do_Benchmark > 0) + { + recr_dist(styr - 3) = recr_dist_unf / float(Bmark_Yr(8) - Bmark_Yr(7) + 1); + } + + if (Do_TG > 0) + Tag_Recapture(); + + } // end time_series + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " finished time series " << endl; + #endif + +// SS_Label_Info_24.16 # end of time series function + +//******************************************************************** + /* SS_Label_FUNCTION 30 Do_Equil_Calc */ + // This function does per recruit calculations, so produces an age composition that is in equilibrium with M+F +FUNCTION void SSBpR_Calc(const prevariable& equ_Recr) + { + int t_base; + int t; + int s; + dvariable N_mid; + dvariable N_beg; + dvariable tempM, countN, tempZ, tempbase, temp3; + dvariable Fishery_Survival; + dvariable crashtemp; + dvariable crashtemp1; + dvar_matrix Survivors(1, pop, 1, gmorph); + dvar_matrix Survivors2(1, pop, 1, gmorph); + + t_base = styr + (eq_yr - styr) * nseas - 1; + GenTime.initialize(); + Equ_penalty.initialize(); + SSB_equil_pop_gp.initialize(); + if (Hermaphro_Option != 0) + MaleSSB_equil_pop_gp.initialize(); + equ_mat_bio = 0.0; + equ_mat_num = 0.0; + equ_catch_fleet.initialize(); + equ_numbers.initialize(); + equ_catage.initialize(); + equ_F_std = 0.0; + equ_M_std = 0.0; + totbio = 0.0; + smrybio = 0.0; + smryage = 0.0; + smrynum = 0.0; + GenTime = 0.0; + + // first seed the recruits; seems redundant + for (g = 1; g <= gmorph; g++) + { + if (use_morph(g) > 0) + { + settle = settle_g(g); + + for (p = 1; p <= pop; p++) + { + equ_numbers(Settle_seas(settle), p, g, Settle_age(settle)) = equ_Recr * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * + mfexp(natM(t_base + Settle_seas(settle), p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); + } + } + } + + for (a = 0; a <= 3 * nages; a++) // go to 3x nages to approximate the infinite tail, then add the infinite tail + { + if (a <= nages) + { + a1 = a; + } + else + { + a1 = nages; + } // because selex and biology max out at nages + + for (s = 1; s <= nseas; s++) + { + t = t_base + s; + + for (g = 1; g <= gmorph; g++) // need to loop g inside of a because of hermaphroditism + if (use_morph(g) > 0) + { + gg = sx(g); // gender + settle = settle_g(g); + + for (p = 1; p <= pop; p++) + { + if (s == Settle_seas(settle) && a == Settle_age(settle)) + { + equ_numbers(Settle_seas(settle), p, g, Settle_age(settle)) = equ_Recr * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * + mfexp(natM(t_base + Settle_seas(settle), p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); + } + + if (equ_numbers(s, p, g, a) > 0.0) // will only be zero if not yet settled + { + N_beg = equ_numbers(s, p, g, a); + if (F_Method == 1) // Pope's approx + { + N_mid = N_beg * surv1(s, GP3(g), a1); // numbers at middle of season + Nsurvive = N_mid; // initial number of fishery survivors + if (Fishon == 1) + { // remove catch this round + // check to see if total harves would exceed max_harvest_rate + crashtemp = 0.; + harvest_rate = 1.0; + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + crashtemp += Hrate(f, t) * sel_dead_num(s, f, g, a1); + } + + if (crashtemp > 0.20) // only worry about this if the exploit rate is at all high + { + join1 = 1. / (1. + mfexp(40.0 * (crashtemp - max_harvest_rate))); // steep joiner logistic curve at limit + upselex = 1. / (1. + mfexp(Equ_F_joiner * (crashtemp - 0.2))); // value of a shallow logistic curve that goes through the limit + harvest_rate = join1 + (1. - join1) * upselex / (crashtemp); // ratio by which all Hrates will be adjusted + } + + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + temp = N_mid * Hrate(f, t) * harvest_rate; // numbers that would be caught if fully selected + Nsurvive -= temp * sel_dead_num(s, f, g, a1); // survival from fishery kill + equ_catch_fleet(2, s, f) += temp * sel_dead_bio(s, f, g, a1); + equ_catch_fleet(5, s, f) += temp * sel_dead_num(s, f, g, a1); + equ_catch_fleet(3, s, f) += temp * sel_ret_bio(s, f, g, a1); // retained fishery kill in biomass + + equ_catch_fleet(1, s, f) += temp * sel_bio(s, f, g, a1); // total fishery encounter in biomass + equ_catch_fleet(4, s, f) += temp * sel_num(s, f, g, a1); // total fishery encounter in numbers + equ_catch_fleet(6, s, f) += temp * sel_ret_num(s, f, g, a1); // retained fishery kill in numbers + equ_catage(s, f, g, a1) += temp * sel_dead_num(s, f, g, a1); // dead catch numbers per recruit (later accumulate N in a1) + } + } // end removing catch + + Nsurvive *= surv1(s, GP3(g), a1); // decay to end of season + + if (a <= a1) + { + equ_Z(s, p, g, a1) = -(log((Nsurvive + 1.0e-13) / (N_beg + 1.0e-10))) / seasdur(s); + Fishery_Survival = equ_Z(s, p, g, a1) - natM(t, p, GP3(g), a1); + } + + } // end Pope's approx + + else // Continuous F for method 2 or 3 + { + equ_Z(s, p, g, a1) = natM(t, p, GP3(g), a1); + if (Fishon == 1) + { + if (a1 <= nages) + { + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + equ_Z(s, p, g, a1) += sel_dead_num(s, f, g, a1) * Hrate(f, t); + } + } + } + Nsurvive = N_beg * mfexp(-seasdur(s) * equ_Z(s, p, g, a1)); + } // end F method + Survivors(p, g) = Nsurvive; + } + else + { + equ_Z(s, p, g, a1) = natM(t, p, GP3(g), a1); + } + } // end pop + } // end morph + + if (Hermaphro_Option != 0) + { + if (Hermaphro_seas == -1 || Hermaphro_seas == s) + { + for (p = 1; p <= pop; p++) + { + k = gmorph / 2; + for (g = 1; g <= k; g++) + if (use_morph(g) > 0) + { + if (Hermaphro_Option == 1) + { + Survivors(p, g + k) += Survivors(p, g) * Hermaphro_val(GP4(g), a1); // increment males with females + Survivors(p, g) *= (1. - Hermaphro_val(GP4(g), a1)); // decrement females + } + else if (Hermaphro_Option == -1) + { + Survivors(p, g) += Survivors(p, g + k) * Hermaphro_val(GP4(g + k), a1); // increment females with males + Survivors(p, g + k) *= (1. - Hermaphro_val(GP4(g + k), a1)); // decrement males + } + } + } + } + } + if (do_migration > 0) // movement between areas in equil calcs + { + Survivors2.initialize(); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + for (p2 = 1; p2 <= pop; p2++) + { + k = move_pattern(s, GP4(g), p, p2); + if (k > 0) + Survivors2(p2, g) += Survivors(p, g) * migrrate(bio_yr, k, a1); + } // end destination pop + } + Survivors = Survivors2; + } // end do migration + + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + { + if (s == nseas) // into next age at season 1 + { + if (a == 3 * nages) + { + // end of the cohort + } + else if (a == (3 * nages - 1)) // do infinite tail; note that it uses Z from nseas as if it applies annually + { + if (F_Method == 1) + { + equ_numbers(1, p, g, a + 1) = Survivors(p, g) / (1. - exp(-equ_Z(nseas, p, g, nages))); + } + else + { + equ_numbers(1, p, g, a + 1) = Survivors(p, g) / (1. - exp(-equ_Z(nseas, p, g, nages))); + } + } + else + { + equ_numbers(1, p, g, a + 1) = Survivors(p, g); + } + } + else + { + equ_numbers(s + 1, p, g, a) = Survivors(p, g); // same age, next season + } + } + } + } // end season + } // end age + + // now calc contribution to catch and ssb + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + gg = sx(g); + for (s = 1; s <= nseas; s++) + for (p = 1; p <= pop; p++) + { + t = t_base + s; + Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * equ_Z(s, p, g))), equ_Z(s, p, g)); + equ_numbers(s, p, g, nages) += sum(equ_numbers(s, p, g)(nages + 1, 3 * nages)); + if (Fishon == 1) + { + if (F_Method >= 2) + { + if (s < Bseas(g)) + Zrate2(p, g, 0) = 0.0; + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + equ_catch_fleet(2, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_bio(s, f, g)) * Zrate2(p, g); // dead catch bio + equ_catch_fleet(5, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_num(s, f, g)) * Zrate2(p, g); // deadfish catch numbers + equ_catch_fleet(3, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_ret_bio(s, f, g)) * Zrate2(p, g); // retained catch bio + equ_catch_fleet(1, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_bio(s, f, g)) * Zrate2(p, g); // encountered catch bio + equ_catch_fleet(4, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_num(s, f, g)) * Zrate2(p, g); // encountered catch bio + equ_catch_fleet(6, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_ret_num(s, f, g)) * Zrate2(p, g); // retained catch numbers + equ_catage(s, f, g) = Hrate(f, t) * elem_prod(elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_num(s, f, g)), Zrate2(p, g)); + } + } + else // F_method=1 + { + // already done in the age loop + } + } + + for (f1 = 1; f1 <= N_pred; f1++) + { + f = predator(f1); + equ_catch_fleet(2, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_bio(s, f, g)) * Zrate2(p, g); // dead catch bio + equ_catch_fleet(5, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_num(s, f, g)) * Zrate2(p, g); // deadfish catch numbers + equ_catch_fleet(3, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_ret_bio(s, f, g)) * Zrate2(p, g); // retained catch bio + equ_catch_fleet(1, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_bio(s, f, g)) * Zrate2(p, g); // encountered catch bio + equ_catch_fleet(4, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_num(s, f, g)) * Zrate2(p, g); // encountered catch bio + equ_catch_fleet(6, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_ret_num(s, f, g)) * Zrate2(p, g); // retained catch numbers + equ_catage(s, f, g) = pred_M2(f1, t) * elem_prod(elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_num(s, f, g)), Zrate2(p, g)); + } + + if (s == 1) + { + totbio += equ_numbers(s, p, g)(0, nages) * Wt_Age_beg(s, g)(0, nages); + smrybio += equ_numbers(s, p, g)(Smry_Age, nages) * Wt_Age_beg(s, g)(Smry_Age, nages); + smrynum += sum(equ_numbers(s, p, g)(Smry_Age, nages)); + smryage += equ_numbers(s, p, g)(Smry_Age, nages) * r_ages(Smry_Age, nages); + } + // SPAWN-RECR: calc generation time, etc. + if (s == spawn_seas) + { + if (gg == 1) // compute equilibrium spawning biomass for females + { + tempvec_a = elem_prod(equ_numbers(s, p, g)(0, nages), mfexp(-spawn_time_seas * equ_Z(s, p, g)(0, nages))); + SSB_equil_pop_gp(p, GP4(g)) += fracfemale_mult * tempvec_a * fec(g); + equ_mat_bio += fracfemale_mult * elem_prod(equ_numbers(s, p, g)(0, nages), mfexp(-spawn_time_seas * equ_Z(s, p, g)(0, nages))) * make_mature_bio(GP4(g)); + equ_mat_num += fracfemale_mult * elem_prod(equ_numbers(s, p, g)(0, nages), mfexp(-spawn_time_seas * equ_Z(s, p, g)(0, nages))) * make_mature_numbers(GP4(g)); + GenTime += fracfemale_mult * tempvec_a * elem_prod(fec(g), r_ages); + // SSB_equil_pop_gp(p,GP4(g))+=tempvec_a*fec(g); + // equ_mat_bio+=elem_prod(equ_numbers(s,p,g)(0,nages),mfexp(-spawn_time_seas*equ_Z(s,p,g)(0,nages)))*make_mature_bio(GP4(g)); + // equ_mat_num+=elem_prod(equ_numbers(s,p,g)(0,nages),mfexp(-spawn_time_seas*equ_Z(s,p,g)(0,nages)))*make_mature_numbers(GP4(g)); + // GenTime+=tempvec_a*elem_prod(fec(g),r_ages); + } + else if (Hermaphro_Option != 0 && gg == 2) + { + tempvec_a = elem_prod(equ_numbers(s, p, g)(0, nages), mfexp(-spawn_time_seas * equ_Z(s, p, g)(0, nages))); + MaleSSB_equil_pop_gp(p, GP4(g)) += tempvec_a * Wt_Age_beg(s, g)(0, nages); + } + } + } + } + + // MSY_units: quantity to be maximized: (1) dead catch biomass (status quo); (2) retained catch biomass; or (3) retained catch profits"< 0) + { + for (p = 1; p <= pop; p++) + { + tempbase += equ_numbers(1, p, g, a); // sum of numbers at beginning of year + tempZ += equ_numbers(1, p, g, a + 1); // numbers at beginning of next year + temp3 = equ_numbers(1, p, g, a); // numbers at begin of year + for (int kkk = 1; kkk <= nseas; kkk++) + { + temp3 *= mfexp(-seasdur(kkk) * natM(t_base+kkk, p, GP3(g), a)); + } + tempM += temp3; // survivors if just M operating + } + } + } + equ_F_std = log(tempM) - log(tempZ); // F=Z-M + equ_M_std = log(tempbase) - log(tempM); // M + } + else if (F_reporting == 5) + { + // F_reporting==5 (ICES-style arithmetic mean across ages) + // like option 4 above, but F is calculated 1 age at a time to get a + // unweighted average across ages within each year + // Need to put area loop within age loop + countN = 0.0; // used for count of Fs included in average + for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator + { + tempbase = 0.0; + tempM = 0.0; + tempZ = 0.0; + // accumulate numbers across all morphs, sexes, and areas + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + { + tempbase += equ_numbers(1, p, g, a); // sum of numbers at beginning of year + tempZ += equ_numbers(1, p, g, a + 1); // numbers at beginning of next year + temp3 = equ_numbers(1, p, g, a); // numbers at begin of year + for (int kkk = 1; kkk <= nseas; kkk++) + { + temp3 *= mfexp(-seasdur(kkk) * natM(t_base+kkk, p, GP3(g), a)); + } + tempM += temp3; // survivors if just M operating + } + } + // add F-at-age to tally + countN += 1.; // increment count of values included in average + equ_F_std += log(tempM) - log(tempZ); // F=Z-M + equ_M_std += log(tempbase) - log(tempM); // M + } + equ_F_std /= countN; + equ_M_std /= countN; + } // end F_reporting==5 + } + + Cost = 0; + for (f = 1; f <= Nfleet; f++) + { + if (YPR_mask(f) == 1) + { + for (s = 1; s <= nseas; s++) + { + Cost += CostPerF(f) * Hrate(f, t_base + s); + } + } + } + + SSB_equil = sum(SSB_equil_pop_gp); + GenTime /= SSB_equil; + smryage /= smrynum; + if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB + { + SSB_equil += Hermaphro_maleSSB * sum(MaleSSB_equil_pop_gp); + } + } // end equil calcs + +// SS_Label_file #13. **SS_recruit.tpl** +// SS_Label_file # * Spawn_Recr() // gets expected mean recruits from input spawning biomass +// SS_Label_file # * apply_recdev() // applies recdev to the expected mean recruits +// SS_Label_file # * Equil_Spawn_Recr_Fxn() // gets equilibrium recruitment and spawning biomass from an input SPR + +//******************************************************************** + /* SS_Label_FUNCTION 43 Spawner-recruitment function */ +// SPAWN-RECR: function: to calc R from S +FUNCTION dvariable Spawn_Recr(const dvar_vector& SRparm_work, const prevariable& SSB_virgin_use, const prevariable& Recr_virgin_use, const prevariable& SSB_current) + { + RETURN_ARRAYS_INCREMENT(); + dvariable NewRecruits; + dvariable SSB_BH1; + dvariable recdev_offset; + dvariable steepness; + dvariable Shepherd_c; + dvariable Shepherd_c2; + dvariable Hupper; + dvariable steep2; + dvariable SSB_curr_adj; + dvariable join; + dvariable SRZ_0; + dvariable srz_min; + dvariable SRZ_surv; +// warning << y << " Tester_R0 " << Recr_virgin_use << " SSB0 " << SSB_virgin_use << " SSB_curr: " << SSB_current << endl; + + // SS_Label_43.1 add 0.1 to input spawning biomass value to make calculation more rebust + SSB_curr_adj = SSB_current + 0.100; // robust + + regime_change = SRparm_work(N_SRparm2 - 1); // this is a persistent deviation off the S/R curve + + // SS_Label_43.3 calculate expected recruitment from the input spawning biomass and the SR curve + // functions below use Recr_virgin_use,SSB_virgin_use which could have been adjusted adjusted above from R0,SSB_virgin + switch (SR_fxn) + { + case 1: // previous placement for B-H constrained + { + warnstream << "B-H constrained curve is now Spawn-Recr option #6"; + write_message (FATAL, 0); // EXIT! + break; + } + // SS_Label_43.3.2 Ricker + case 2: // ricker + { + steepness = SRparm_work(2); + NewRecruits = Recr_virgin_use * SSB_curr_adj / SSB_virgin_use * mfexp(steepness * (1. - SSB_curr_adj / SSB_virgin_use)); + break; + } + // SS_Label_43.3.3 Beverton-Holt + case 3: // Beverton-Holt + { + steepness = SRparm_work(2); + NewRecruits = (4. * steepness * Recr_virgin_use * SSB_curr_adj) / + (SSB_virgin_use * (1. - steepness) + (5. * steepness - 1.) * SSB_curr_adj); + break; + } + + case 10: // Beverton-Holt with alpha beta per WHAM: R = A*S/(1+B*S) + { + dvariable alpha = mfexp(SRparm_work(3)); + dvariable beta = mfexp(SRparm_work(4)); + NewRecruits = (alpha * SSB_curr_adj) / (1.0 + beta * SSB_curr_adj); + break; + } + + // SS_Label_43.3.4 constant expected recruitment + case 4: // none + { + NewRecruits = Recr_virgin_use; + break; + } + // SS_Label_43.3.5 Hockey stick + case 5: // hockey stick where "steepness" is now the fraction of B0 below which recruitment declines linearly + // the 3rd parameter allows for a minimum recruitment level + { + steepness = SRparm_work(2); + temp = SRparm_work(3) * Recr_virgin_use + SSB_curr_adj / (steepness * SSB_virgin_use) * (Recr_virgin_use - SRparm_work(3) * Recr_virgin_use); // linear decrease below steepness*SSB_virgin_use + NewRecruits = Join_Fxn(0.0 * SSB_virgin_use, SSB_virgin_use, steepness * SSB_virgin_use, SSB_curr_adj, temp, Recr_virgin_use); + break; + } + + // SS_Label_43.3.6 Beverton-Holt, with constraint to have constant R about Bzero + case 6: //Beverton-Holt constrained + { + steepness = SRparm_work(2); +// dvariable SPR = SSB_virgin_use / Recr_virgin; +// alpha = ((4.0 * steepness) / (1. - steepness)) / SPR ; +// beta = (1.0 / Recr_virgin) * (alpha - (1.0 / SPR)); + if (SSB_curr_adj > SSB_virgin_use) + { + SSB_BH1 = SSB_virgin_use; + } + else + { + SSB_BH1 = SSB_curr_adj; + } + NewRecruits = (4. * steepness * Recr_virgin_use * SSB_BH1) / (SSB_virgin_use * (1. - steepness) + (5. * steepness - 1.) * SSB_BH1); + break; + } + + // SS_Label_43.3.7 survival based + case 7: // survival based, so constrained such that recruits cannot exceed fecundity + { + // PPR_0=SSB_virgin_use/Recr_virgin_use; // pups per recruit at virgin + // Surv_0=1./PPR_0; // recruits per pup at virgin + // Pups_0=SSB_virgin_use; // total population fecundity is the number of pups produced + // Sfrac=SRparm(2); + SRZ_0 = log(1.0 / (SSB_virgin_use / Recr_virgin_use)); + steepness = SRparm_work(2); + srz_min = SRZ_0 * (1.0 - steepness); + SRZ_surv = mfexp((1. - pow((SSB_curr_adj / SSB_virgin_use), SRparm_work(3))) * (srz_min - SRZ_0) + SRZ_0); // survival + NewRecruits = SSB_curr_adj * SRZ_surv; + exp_rec(y, 1) = NewRecruits; // expected arithmetic mean recruitment + // SS_Label_43.3.7.1 Do variation in recruitment by adjusting survival + // if(SR_env_target==1) SRZ_surv*=mfexp(SRparm(N_SRparm2-2)* env_data(y,SR_env_link)); // environ effect on survival + if (recdev_cycle > 0) + { + gg = y - (styr + (int((y - styr) / recdev_cycle)) * recdev_cycle) + 1; + SRZ_surv *= mfexp(recdev_cycle_parm(gg)); + } + exp_rec(y, 2) = SSB_curr_adj * SRZ_surv; + exp_rec(y, 2) *= mfexp(regime_change); // adjust for regime which includes env and block effects; and forecast adjustments + SRZ_surv *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment + exp_rec(y, 3) = SSB_curr_adj * SRZ_surv; + if (y <= recdev_end) + { + if (recdev_doit(y) > 0) + SRZ_surv *= mfexp(recdev(y)); // recruitment deviation + } + else if (Do_Forecast > 0) + { + SRZ_surv *= mfexp(Fcast_recruitments(y)); + } + join = 1. / (1. + mfexp(100 * (SRZ_surv - 1.))); + SRZ_surv = SRZ_surv * join + (1. - join) * 1.0; + NewRecruits = SSB_curr_adj * SRZ_surv; + exp_rec(y, 4) = NewRecruits; + break; + } + + // SS_Label_43.3.8 Shepherd + case 8: // Shepherd 3-parameter SRR. per Punt & Cope 2017 + { + Shepherd_c = SRparm_work(3); + Shepherd_c2 = pow(0.2, SRparm_work(3)); + Hupper = 1.0 / (5.0 * Shepherd_c2); + steepness = 0.2 + (SRparm_work(2) - 0.2) / (0.8) * (Hupper - 0.2); + temp = (SSB_curr_adj) / (SSB_virgin_use); + NewRecruits = (5. * steepness * Recr_virgin_use * (1. - Shepherd_c2) * temp) / + (1.0 - 5.0 * steepness * Shepherd_c2 + (5. * steepness - 1.) * pow(temp, Shepherd_c)); + break; + } + + // SS_Label_43.3.8 Ricker-power + case 9: // Ricker power 3-parameter SRR. per Punt & Cope 2017 + { + steepness = SRparm_work(2); + dvariable RkrPower = SRparm_work(3); + temp = SSB_curr_adj / SSB_virgin_use; + temp2 = posfun(1.0 - temp, 0.0000001, temp3); + temp = 1.0 - temp2; // Rick's new line to stabilize recruitment at R0 if B>B0 + dvariable RkrTop = log(5.0 * steepness) * pow(temp2, RkrPower) / pow(0.8, RkrPower); + NewRecruits = Recr_virgin_use * temp * mfexp(RkrTop); + break; + } + + } + RETURN_ARRAYS_DECREMENT(); + return NewRecruits; + } // end spawner_recruitment + +FUNCTION void apply_recdev(prevariable& NewRecruits, const prevariable& Recr_virgin_use) + { + RETURN_ARRAYS_INCREMENT(); + // SS_Label_43.4 For non-survival based SRR, get recruitment deviations by adjusting recruitment itself + exp_rec(y, 1) = NewRecruits; // expected arithmetic mean recruitment + // exp_rec(y,2) is with regime shift or other env effect; + // exp_rec(y,3) is with bias adjustment + // exp_rec(y,4) is with dev + regime_change = SRparm_work(N_SRparm2 - 1); // this is a persistent deviation off the S/R curve + + if (recdev_cycle > 0) + { + gg = y - (styr + (int((y - styr) / recdev_cycle)) * recdev_cycle) + 1; + NewRecruits *= mfexp(recdev_cycle_parm(gg)); + } + NewRecruits *= mfexp(regime_change); // adjust for regime which includes env and block effects; and forecast adjustments + exp_rec(y, 2) = NewRecruits; // adjusted for env and special forecast conditions + if (SR_fxn != 4) + NewRecruits *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment + exp_rec(y, 3) = NewRecruits; + + if (y <= recdev_end) + { + if (recdev_doit(y) > 0) + { + if (do_recdev >= 3) + { + NewRecruits = Recr_virgin_use * mfexp(recdev(y)); // recruitment deviation + } + else if (SR_fxn != 7) + { + NewRecruits *= mfexp(recdev(y)); // recruitment deviation + } + } + } + + else if (Do_Forecast > 0) + { + switch (int(Fcast_Loop_Control(3))) + { + case 0: + { + NewRecruits = exp_rec(y, 2); + if (SR_fxn != 4) + NewRecruits *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment + exp_rec(y, 3) = NewRecruits; + break; + } + case 1: + { + exp_rec(y, 2) *= Fcast_Loop_Control(4); // apply fcast multiplier to the regime-adjusted expected value + NewRecruits = exp_rec(y, 2); + if (SR_fxn != 4) + NewRecruits *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment + exp_rec(y, 3) = NewRecruits; + break; + } + case 2: // use multiplier of R0 + { + exp_rec(y, 2) = Recr_virgin_use * Fcast_Loop_Control(4); // apply fcast multiplier to the virgin recruitment + NewRecruits = exp_rec(y, 2); + if (SR_fxn != 4) + NewRecruits *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment + exp_rec(y, 3) = NewRecruits; + break; + } + case 4: + { + // fall through to case 3 + // case 3 also will do averaging of recr_dist in another section of code + } + case 3: // use recent mean + { + // values going into the mean have already been bias adjusted and had dev applied, so take straight mean + NewRecruits = 0.0; + for (j = Fcast_Rec_yr1; j <= Fcast_Rec_yr2; j++) + { + NewRecruits += exp_rec(j, 4); + } + NewRecruits /= (Fcast_Rec_yr2 - Fcast_Rec_yr1 + 1); + if(Fcast_Loop_Control(3) == 4) NewRecruits *= Fcast_Loop_Control(4); // apply multiplier + exp_rec(y, 2) = NewRecruits; + exp_rec(y, 3) = NewRecruits; // store in the bias-adjusted field + break; + } + } + // note that if user requests "mean" as base forecast recr, then devs are still applied + // so, phase for forecast recdevs must be <0 to assure that forecast recr do not get added variability + if (do_recdev > 0) + NewRecruits *= mfexp(Fcast_recruitments(y)); // recruitment deviation + } + exp_rec(y, 4) = NewRecruits; + RETURN_ARRAYS_DECREMENT(); + } // end spawner_recruitment + +//******************************************************************** + /* SS_Label_FUNCTION 44 Equil_Spawn_Recr_Fxn */ +// SPAWN-RECR: function Equil_Spawn_Recr_Fxn +FUNCTION dvar_vector Equil_Spawn_Recr_Fxn(const dvar_vector& SRparm, + const prevariable& SSB_virgin_use, const prevariable& Recr_virgin_use, const prevariable& SSBpR_current) + { + RETURN_ARRAYS_INCREMENT(); + dvar_vector Equil_Spawn_Recr_Calc(1, 2); // values to return 1 is B_equil, 2 is R_equil + dvariable B_equil; + dvariable R_equil; + dvariable temp; + dvariable steepness; + dvariable join; + dvariable Shepherd_c; + dvariable Shepherd_c2; + dvariable SRZ_0; + dvariable srz_min; + dvariable SRZ_surv; + dvariable SSBpR_virgin_use; + + SSBpR_virgin_use = SSB_virgin_use / Recr_virgin_use; + steepness = SRparm(2); // common usage but some different + // SS_Label_44.1 calc equilibrium SpawnBio and Recruitment from input SSBpR_current, which is spawning biomass per recruit at some given F level + switch (SR_fxn) + { + case 1: // previous placement for B-H constrained + { + warnstream << "B-H constrained curve is now Spawn-Recr option #6"; + write_message (FATAL, 0); // EXIT! + break; + } + + // SS_Label_44.1.2 Ricker + case 2: // Ricker + { + B_equil = SSB_virgin_use * (1. + (log(Recr_virgin_use / SSB_virgin_use) + log(SSBpR_current)) / steepness); + R_equil = Recr_virgin_use * B_equil / SSB_virgin_use * mfexp(steepness * (1. - B_equil / SSB_virgin_use)); + + break; + } + // SS_Label_44.1.1 Beverton-Holt + case 6: //Beverton-Holt with flattop beyond Bzero, but no flattop in equil calcs + { + } + // SS_Label_44.1.3 Beverton-Holt + case 3: // same as case 6 + { + // from WHAM per Tim Miller: + // WHAM based on R = A*S/(1+B*S) + // log_SR_a = log(4 * SR_h/(exp(log_SPR0)*(1 - SR_h))); + // log_SR_b = log((5*SR_h - 1)/((1-SR_h)*SR_R0*exp(log_SPR0))); + + // SS3 previously used alternative formulation: R = A*S/(B+S) + // converting SS3 to align with WHAM + alpha = 4.0 * steepness / (SSBpR_virgin_use * (1. - steepness)); + beta = (5.0 * steepness - 1.0) / ((1 - steepness) * SSB_virgin_use); + // " h " << steepness << " derive " << alpha * SSBpR_virgin / (4. + alpha * SSBpR_virgin) << " " << endl; + // " R0 " << Recr_virgin_use << " derive " << 1. / beta * (alpha - 1./SSBpR_virgin) << endl; +// report5 <<" SSB_unf "<setup_Benchmark()
// calculates average biology and selectivity over specified range of years for use in benchmark +// SS_Label_file # * get_benchmark() // searches for Fspr, Fmsy, etc. conditioned on average biology and selectivity conditions +// SS_Label_file # * get_forecast() // calculates forecast quantities, includes all popdy characteristics of the time series, writes forecast-report.sso +// SS_Label_file # + +// Terminology +// SSB refers to spawning stock biomass, calculated from reproductive output at age (fec()) and numbers-at-age at spawn_month in spawn_seas +// SSBpR refers to SSB per recruit calculated with equilibrium age composition in equil_calc +// SPR refers to spawner potential ratio which is the ratio of SSBpR at some level of F to SSBpR with F = 0 + +// SSBpR_virgin is calculated in popdyn using the start year biology +// SSBpR_virgin used to get alpha in equil_spawn_recr B-H + +FUNCTION void setup_Benchmark() // and forecast + { + // SS_Label_Info_7.5 #Get averages from selected years to use in forecasts + + if (Do_Forecast > 0) + { + if (Fcast_timevary_Selex == 1) + { + // SS_Label_Info_7.5.1 #Calc average selectivity to use in forecast; store in endyr+1 + temp = float(Fcast_Sel_yr2 - Fcast_Sel_yr1 + 1.); + for (gg = 1; gg <= gender; gg++) + for (f = 1; f <= Nfleet; f++) + { + tempvec_l.initialize(); + for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) + { + tempvec_l += sel_l(y, f, gg); + } + for (y = endyr + 1; y <= YrMax; y++) + { + sel_l(y, f, gg) = tempvec_l / temp; + } + + tempvec_l.initialize(); + for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) + { + tempvec_l += sel_l_r(y, f, gg); + } + for (y = endyr + 1; y <= YrMax; y++) + { + sel_l_r(y, f, gg) = tempvec_l / temp; + } + + tempvec_l.initialize(); + for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) + { + tempvec_l += discmort2(y, f, gg); + } + for (y = endyr + 1; y <= YrMax; y++) + { + discmort2(y, f, gg) = tempvec_l / temp; + } + + if (gg == gender) // vectors processed here have males stacked after females in same row + { + exp_l_temp.initialize(); + for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) + { + exp_l_temp += retain(y, f); + } + for (y = endyr + 1; y <= YrMax; y++) + { + retain(y, f) = exp_l_temp / temp; + } + + exp_l_temp.initialize(); + for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) + { + exp_l_temp += discmort(y, f); + } + for (y = endyr + 1; y <= YrMax; y++) + { + discmort(y, f) = exp_l_temp / temp; + } + } + + tempvec_a.initialize(); + for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) + { + tempvec_a += sel_a(y, f, gg); + } + for (y = endyr + 1; y <= YrMax; y++) + { + sel_a(y, f, gg) = tempvec_a / temp; + } + + tempvec_a.initialize(); + for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) + { + tempvec_a += discmort2_a(y, f, gg); + } + for (y = endyr + 1; y <= YrMax; y++) + { + discmort2_a(y, f, gg) = tempvec_a / temp; + } + if (seltype(f + Nfleet, 2) != 0) // using age retention + { + tempvec_a.initialize(); + for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) + { + tempvec_a += retain_a(y, f, gg); + } + for (y = endyr + 1; y <= YrMax; y++) + { + retain_a(y, f, gg) = tempvec_a / temp; + } + tempvec_a.initialize(); + for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) + { + tempvec_a += discmort_a(y, f, gg); + } + for (y = endyr + 1; y <= YrMax; y++) + { + discmort_a(y, f, gg) = tempvec_a / temp; + } + } + } + } + t = styr + (endyr + 1 - styr) * nseas + spawn_seas - 1; +// fec = Wt_Age_t(t, -2); this will always be overwritten, so deleting + + if (Fcast_Loop_Control(3) == 3) // using mean recr_dist from range of years + { + warnstream << "This option (mean recruitment) may be deprecated; same as forecast option(5), averaging parameters, type 4."; + write_message(WARN, 0); + //get average and store in each fcast years + recr_dist_endyr.initialize(); + for (y = Fcast_Rec_yr1; y <= Fcast_Rec_yr2; y++) + for (gp = 1; gp <= N_GP * gender; gp++) + { + recr_dist_endyr(gp) += recr_dist(y, gp); + } + recr_dist_endyr /= float(Fcast_Rec_yr2 - Fcast_Rec_yr1 + 1); + for (y = endyr + 1; y <= YrMax; y++) + { + if (timevary_MG(y, 4) > 0) + { + warnstream << "mean recr_dist for forecast is incompatible with timevary recr_dist in forecast yr: " << y << "; user must adjust manually"; + write_message(WARN, 0); + } + recr_dist(y) = recr_dist_endyr; + } + } + else // provide placeholder + { + recr_dist_endyr = recr_dist(endyr); + } + + // create average of selected MGparms for use in forecast + for (int parm_type = 1; parm_type <= 12; parm_type++) + { + if(Fcast_MGparm_ave(parm_type, 2) == 1) // do averaging of derived factor + { + double ave_styr = Fcast_MGparm_ave(parm_type,3); + double ave_endyr = Fcast_MGparm_ave(parm_type,4); + double N_ave_yrs = ave_endyr - ave_styr + 1.; // get denominator + switch (parm_type) + { + case 1: // 1=Natural mortality (M), + for (int s = 1; s <= nseas; s++) + for (int g = 1; g <= gmorph; g++) + { + int gpi = GP3(g); + for (int p = 0; p <= pop; p++) // question. Perhaps only do this for area 0 as others filled in later in code + { + tempvec_a.initialize(); + for (y = ave_styr; y <= ave_endyr; y++) + { + t = styr + (y - styr) * nseas - 1 + s; + tempvec_a += natM(t, p, gpi); + } + tempvec_a /= N_ave_yrs; + for (int y = endyr + 1; y <= YrMax; y++) + { + t = styr + (y - styr) * nseas - 1 + s; + natM(t, p, gpi) = tempvec_a; + } + } + } + break; + + case 2: // 2=growth, + tempvec_a.initialize(); + warnstream << "Growth params averaging is not implemented, execution continues. " ; + write_message (WARN, 1); + break; + + case 3: // 3=wtlen, + tempvec_a.initialize(); + warnstream << "Weight/Length params averaging is not implemented, execution continues. " ; + write_message (WARN, 1); + break; + + case 4: // 4=recr_dist&femfrac, + //get average and store in each fcast years + recr_dist_endyr.initialize(); + for (y = ave_styr; y <= ave_endyr; y++) + for (gp = 1; gp <= N_GP * gender; gp++) + { + recr_dist_endyr(gp) += recr_dist(y, gp); + } + recr_dist_endyr /= N_ave_yrs; + for (y = endyr + 1; y <= YrMax; y++) + { + if (timevary_MG(y, 4) > 0) + { + warnstream << "mean recr_dist for forecast is incompatible with timevary recr_dist in forecast yr: " << y << "; user must adjust manually"; + write_message(WARN, 0); + } + recr_dist(y) = recr_dist_endyr; + } + break; + + case 5: // 5=migration, + for (j = 1; j <= do_migr2; j++) + { + tempvec_a.initialize(); + for (y = ave_styr; y <= ave_endyr; y++) + { + tempvec_a += migrrate(y, j); + } + tempvec_a /= N_ave_yrs; + for (y = endyr + 1; y <= YrMax; y++) + migrrate(y, j) = tempvec_a; + } + break; + + case 6: // 6=ageerror, + tempvec_a.initialize(); + warnstream << "Age Error params averaging is not implemented, execution continues. " ; + write_message (WARN, 1); + break; + + case 7: // 7=catchmult, + tempvec_a.initialize(); + warnstream << "Catch mult params averaging is not implemented, execution continues. " ; + write_message (WARN, 1); + break; + + case 8: // 8=hermaphroditism, and + tempvec_a.initialize(); + warnstream << "Hermaphroditism params averaging is not implemented, execution continues. " ; + write_message (WARN, 1); + break; + + case 9: // 9=maturity&fecundity + tempvec_a.initialize(); + warnstream << "Maturity & fecundity params averaging is not implemented, execution continues. " ; + write_message (WARN, 1); + break; + + case 10: // 9=selectivity + tempvec_a.initialize(); + break; + + } + } + } + + // SS_Label_Info_7.5.2 #Set-up relative F among fleets and seasons for forecast + if (Fcast_RelF_Basis == 1) // set allocation according to range of years + { + temp = 0.0; + Fcast_RelF_Use.initialize(); + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + for (y = Fcast_RelF_yr1; y <= Fcast_RelF_yr2; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + Fcast_RelF_Use(s, f) += Hrate(f, t); + } + } + } + temp = sum(Fcast_RelF_Use); + if (temp > 0.0) + { + Fcast_RelF_Use /= temp; + Fcurr_Fmult = temp / float(Fcast_RelF_yr2 - Fcast_RelF_yr1 + 1); + } + else + { + Fcast_RelF_Use(1, 1) = 1.0; + Fcurr_Fmult = 0.0; + } + } + else // Fcast_RelF_Basis==2 so set to values that were read + { + temp = 0.0; + for (f = 1; f <= Nfleet; f++) + for (s = 1; s <= nseas; s++) + { + temp += Fcast_RelF_Input(s, f); + Fcast_RelF_Use(s, f) = Fcast_RelF_Input(s, f); + } + // Fcast_RelF_Use=Fcast_RelF_Input/temp; + Fcast_RelF_Use /= temp; + Fcurr_Fmult = temp; + } + if (N_bycatch > 0) + { + for (f = 1; f <= Nfleet; f++) + for (s = 1; s <= nseas; s++) + { + if (Fcast_RelF_Use(s, f) == 0. && bycatch_setup(f, 3) > 0) + { + Fcast_RelF_Use(s, f) = 1.0e-6; + warnstream << "setting positive forecast relF for bycatch fleet: " << f; + write_message(ADJUST, 0); + } + } + } + if (N_Fcast_Input_Catches > 0) + { + for (f = 1; f <= Nfleet; f++) + for (s = 1; s <= nseas; s++) + { + if (Fcast_RelF_special(s, f) == 1 && Fcast_RelF_Use(s, f) == 0.0) + { + Fcast_RelF_Use(s, f) = 1.0e-6; + warnstream << "setting positive forecast relF for forecast only fleet: " << f; + write_message(ADJUST, 0); + } + } + } + } // end getting quantities for forecasts + + // SS_Label_Info_7.5.3 #Calc average selectivity to use in benchmarks; store in styr-3 + // Bmark_Yr(1,6)<<" Benchmark years: beg-end bio; beg-end selex; beg-end alloc"< 0) + { + // if(save_for_report>0 || last_phase() || current_phase()==max_phase || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase==0))) + { + // calc average biology to use in equil; store in styr-3 + temp = float(Bmark_Yr(2) - Bmark_Yr(1) + 1.); // get denominator + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (s = 0; s <= nseas - 1; s++) // note -1 baked into the loop index + { + tempvec_a.initialize(); + for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) + { + tempvec_a += Ave_Size(t + s, 1, g); + } + Ave_Size(styr - 3 * nseas + s, 1, g) = tempvec_a / temp; + tempvec_a.initialize(); + for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) + { + tempvec_a += Ave_Size(t + s, mid_subseas, g); + } + Ave_Size(styr - 3 * nseas + s, mid_subseas, g) = tempvec_a / temp; + + // get mean natM + int gpi=GP3(g); + for (int p = 0; p <= pop; p++) + { + tempvec_a.initialize(); + for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) + { + tempvec_a += natM(t + s, p, gpi); + } + natM(styr - 3 * nseas + s, p, gpi) = tempvec_a / temp; + if(p>0) + { + int s1 = (p - 1)*nseas + s + 1; + surv1(s1, gpi) = mfexp(-natM(styr - 3 * nseas + s, p, gpi) * seasdur_half(s + 1)); // does all the gpi and ages + surv2(s1, gpi) = square(surv1(s1, gpi)); + } + } + + for (int kk = -2; kk <= 0; kk++) // get mean fecundity and pop body wt + { + tempvec_a.initialize(); + for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) + { + tempvec_a += Wt_Age_t(t + s, kk, g); + } + Wt_Age_t(styr - 3 * nseas + s, kk, g) = tempvec_a / temp; + } + for (f = 1; f <= Nfleet; f++) + { + tempvec_a.initialize(); + for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) + { + tempvec_a += save_sel_num(t + s, f, g); + } + save_sel_num(styr - 3 * nseas + s, f, g) = tempvec_a / temp; + } + } + } + + if (pop > 0) + { + if (do_migration > 0) + { + temp = float(Bmark_Yr(8) - Bmark_Yr(7) + 1.); // get denominator + for (j = 1; j <= do_migr2; j++) + { + tempvec_a.initialize(); + for (y = Bmark_Yr(7); y <= Bmark_Yr(8); y++) + { + tempvec_a += migrrate(y, j); + } + migrrate(styr - 3, j) = tempvec_a / temp; + } + } + // recr_dist_unf is accumulated while doing the time_series + // then its mean is calculated in Get_Benchmarks and assigned to recr_dist + // the SRparm_bench is calculated from Bmark_yrs 9-10 in benchmark code using values stored in SRparm_byyr + } + + // calc average selectivity to use in equil; store in styr-3 + temp = float(Bmark_Yr(4) - Bmark_Yr(3) + 1.); // get denominator + for (gg = 1; gg <= gender; gg++) + for (f = 1; f <= Nfleet; f++) + { + tempvec_l.initialize(); + for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) + { + tempvec_l += sel_l(y, f, gg); + } + sel_l(styr - 3, f, gg) = tempvec_l / temp; + + tempvec_l.initialize(); + for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) + { + tempvec_l += sel_l_r(y, f, gg); + } + sel_l_r(styr - 3, f, gg) = tempvec_l / temp; + + if (gg == gender) + { + exp_l_temp.initialize(); // use because dimensioned to nlength2 + for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) + { + exp_l_temp += retain(y, f); + } + retain(styr - 3, f) = exp_l_temp / temp; + exp_l_temp.initialize(); + for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) + { + exp_l_temp += discmort(y, f); + } + discmort(styr - 3, f) = exp_l_temp / temp; + } + + tempvec_l.initialize(); + for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) + { + tempvec_l += discmort2(y, f, gg); + } + discmort2(styr - 3, f, gg) = tempvec_l / temp; + + tempvec_a.initialize(); + for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) + { + tempvec_a += sel_a(y, f, gg); + } + sel_a(styr - 3, f, gg) = tempvec_a / temp; + + tempvec_a.initialize(); + for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) + { + tempvec_a += discmort2_a(y, f, gg); + } + discmort2_a(styr - 3, f, gg) = tempvec_a / temp; + if (seltype(f + Nfleet, 2) != 0) // using age retention + { + tempvec_a.initialize(); + for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) + { + tempvec_a += retain_a(y, f, gg); + } + retain_a(styr - 3, f, gg) = tempvec_a / temp; + tempvec_a.initialize(); + for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) + { + tempvec_a += discmort_a(y, f, gg); + } + discmort_a(styr - 3, f, gg) = tempvec_a / temp; + } + } + + // set-up relative F among fleets and seasons + if (Bmark_RelF_Basis == 1) // set allocation according to range of years + { + temp = 0.0; + Bmark_RelF_Use.initialize(); + Bmark_HistF.initialize(); + for (y = Bmark_Yr(5); y <= Bmark_Yr(6); y++) + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + Bmark_HistF(s, f) += Hrate(f, t); + Bmark_RelF_Use(s, f) += Hrate(f, t); + } + Bmark_HistF /= float(Bmark_Yr(6) - Bmark_Yr(5) + 1.); // average F(s,f) across benchmark years + temp = sum(Bmark_RelF_Use); + + // note that the relF calculation below is not conditional on whether a fleet is not bycatch and not non-optimized + // Fmult later calculated as multiplier times Bmark_relF_use and will compensate automatically + if (temp > 0.0) + { + Bmark_RelF_Use /= temp; + } + else + { + Bmark_RelF_Use(1, 1) = 1.0; + } + } + else // Bmark_RelF_Basis==2 so set same as forecast + { + Bmark_RelF_Use = Fcast_RelF_Use; + } + } // end being in a phase for these calcs + } // end getting quantities for benchmarks + } + +FUNCTION void Get_Benchmarks(const int show_MSY) + { + //******************************************************************** + /* SS_Label_FUNCTION 34 Get_Benchmarks(Find Fspr, MSY) */ + int jj; + int Nloops; + int Nloops2; + // int bio_t; + int bio_t_base; + dvariable last_F1; + dvariable Closer; + dvariable Vbio1_unfished; + dvariable SSBpR_unf; + dvariable Vbio_MSY; + dvariable Vbio1_MSY; + dvariable junk; + dvariable Nmid_c; + + dvariable df; + dvariable BestYield; + dvariable BestF1; + dvariable FF; + dvariable dyld; + dvariable dyldp; + dvariable Fmax; + dvariable bestF1; + dvariable bestF2; + dvariable F01_origin; + dvariable F01_second; + dvariable F01_actual; + dvar_vector F1(1, 3); + dvar_vector F2(1, 3); + dvar_vector yld1(1, 3); + dvar_vector Fmult_save(1, 3); + write_bodywt_save = write_bodywt; + write_bodywt = 0; + + Nloops2 = 0; + + y = styr - 3; // the average biology from specified benchmark years is stored here + yz = y; + bio_yr = y; + eq_yr = y; + t_base = y + (y - styr) * nseas - 1; + bio_t_base = styr + (bio_yr - styr) * nseas - 1; + // set the Hrate for bycatch fleets so not scaled with other fleets + // bycatch_F(f,s) is created here for use in forecast + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 2 && bycatch_setup(f, 3) == 2) // set rate to input value + { + for (s = 1; s <= nseas; s++) + { + t = bio_t_base + s; + Hrate(f, t) = bycatch_setup(f, 4); + bycatch_F(f, s) = bycatch_setup(f, 4); + } + } + else if (fleet_type(f) == 2 && bycatch_setup(f, 3) == 3) // set rate to historical mean + { + for (s = 1; s <= nseas; s++) + { + t = bio_t_base + s; + Hrate(f, t) = 0.0; + for (int yy = bycatch_setup(f, 4); yy <= bycatch_setup(f, 5); yy++) + { + Hrate(f, t) += Hrate(f, styr + (yy - styr) * nseas + s - 1); + } + Hrate(f, t) /= (bycatch_setup(f, 5) - bycatch_setup(f, 4) + 1.); + bycatch_F(f, s) = Hrate(f, t); + } + } + else + { + for (s = 1; s <= nseas; s++) + { + t = bio_t_base + s; + Hrate(f, t) = 0.0; + } + } + } + + if (show_MSY == 1) + { + report5 << version_info << endl + << ctime(&start); + report5 << "Bmark_relF(by_fleet_&seas) (excluding non-scaled bycatch fleets)" << endl + << Bmark_RelF_Use << endl + << "#" << endl; + report5 << "Bmark_histF(by_fleet_&seas)" << endl + << Bmark_HistF << endl + << "#" << endl; + report5 << "Bycatch_F" << endl + << trans(bycatch_F) << endl + << "#" << endl; + report5 << "YPR_mask for including catch: " << endl + << YPR_mask << endl; + } + if (show_MSY == 2) + { + // do not recalc the age-specific vectors + } + else // recalc age specific biology and selectivity. NOTE: not density-dependent!! + { + for (s = 1; s <= nseas; s++) + { + t = styr - 3 * nseas + s - 1; + subseas = 1; // for begin of season + ALK_idx = (s - 1) * N_subseas + subseas; + ALK_subseas_update(ALK_idx) = 1; // new in 3.30.12 force updating + Make_AgeLength_Key(s, subseas); // begin season + + subseas = mid_subseas; + ALK_idx = (s - 1) * N_subseas + subseas; + ALK_subseas_update(ALK_idx) = 1; // new in 3.30.12 force updating + Make_AgeLength_Key(s, subseas); + + // SPAWN-RECR: call make_fecundity for benchmarks + // this means that any calculation of SSB in benchmark will use the updated fec + if (s == spawn_seas) + { + { + fec = Wt_Age_t(styr - 3 * nseas + s - 1, -2); + } + } + Wt_Age_beg(s) = Wt_Age_t(styr - 3 * nseas + s - 1, 0); + } + // following uses the values of sel_l, sel_a, etc. stored in yr=styr-3 + for (s = 1; s <= nseas; s++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + ALK_idx = (s - 1) * N_subseas + mid_subseas; // for midseason + Make_FishSelex(); // including sel_dead_num + } + if (show_MSY == 1) + { + report5 << version_info << endl + << ctime(&start); + report5 << "Bmark_relF(by_fleet_&seas) (excluding non-scaled bycatch fleets)" << endl + << Bmark_RelF_Use << endl + << "#" << endl; + report5 << "Bmark_histF(by_fleet_&seas)" << endl + << Bmark_HistF << endl + << "#" << endl; + report5 << "Bycatch_F" << endl + << trans(bycatch_F) << endl + << "#" << endl; + report5 << "YPR_mask for including catch: " << endl + << YPR_mask << endl; + report5 << "Fecundity: " << fec(1) << endl; + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + { + for (s = 1; s <= nseas; s++) + { + report5 << f << " " << s << " sel_bio: " << sel_bio(s, f, 1) << endl; + report5 << f << " " << s << " sel_dead_bio: " << sel_dead_bio(s, f, 1) << endl; + } + } + } + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + { + for (s = 1; s <= nseas; s++) + report5 << f << " " << s << " sel_num: " << sel_num(s, f, 1) << endl; + } + } + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + { + for (s = 1; s <= nseas; s++) + report5 << f << " " << s << " sel_dead_num: " << sel_dead_num(s, f, 1) << endl; + } + } + } + } + + maxpossF.initialize(); + for (g = 1; g <= gmorph; g++) + { + for (s = 1; s <= nseas; s++) + { + tempvec_a.initialize(); + for (f = 1; f <= Nfleet; f++) + { + tempvec_a += Bmark_RelF_Use(s, f) * sel_dead_num(s, f, g); + } + temp = max(tempvec_a); + if (temp > maxpossF) + maxpossF = temp; + } + } + maxpossF = max_harvest_rate / maxpossF; // applies to any F_method + + // SPAWN-RECR: notes regarding virgin vs. benchmark biology usage in spawn-recr + // the spawner-recruitment function has Bzero based on virgin biology, not benchmark biology + // need to deal with possibility that with time-varying biology, the SSB_virgin calculated from virgin conditions will differ from the SSB_virgin used for benchmark conditions + + // note that recr_dist(styr-3), updated at end of ss_popdyn. + + for (j = 1; j <= N_SRparm2; j++) + { + if (SRparm_timevary(j) == 0) + { + SRparm_bench(j) = SRparm(j); + } + else + { + temp = 0.; + for (int y = Bmark_Yr(9); y <= Bmark_Yr(10); y++) + { + temp += SRparm_byyr(y, j); + } + SRparm_bench(j) = temp / (Bmark_Yr(10) - Bmark_Yr(9) + 1.); + } + } + SRparm_bench = SRparm_work; + + /* + Flags: + timevary_MG_firstyr == YrMax // means that no biology is time-varying + timevary_SRparm_first > 0 // means that R0 or h (i.e. any except regime, sigmaR, autocorr) is time-varying, so SSBpR0 gets updated for time series and for bench + timevary_bio_4SRR is new user selected flag: 0 for legacy, vs 1 for improved use of timevary biology in SRR calcs + + Legacy approach: + SSBpR0 set at start year using start year biology + SSBpR0 is not itself saved; instead R0_4_SRR and SSB0_4_SRR are saved and passed to the spawn_recruit functions + SSBpR0 updated during time series if there is time-varying R0, but does not call equil_spawn_recr_calc + SSBpR with benchmark biology used in benchmark calculations + SSBpR0 for benchmark always uses bench biology, which is incorrect + SSB_bench (aka SSB_unf) does not call equil_spawn_recr_calc, it is just R * SSBpR, so is incomplete accounting for effect of timevary bio + Btgttgt is a fraction of SSB_bench (no options) + Btgttgt2 can be fraction of SSB_MSY or fraction of SSB_virgin, but not SSB_bench + HCR inflection is a fraction of SSB_bench (no options) + depletion basis is user-selected as SSB_virgin or SSB_msy + SSB_msy uses equil_spawn_recr_calc in its creation, but SSB_bench does not. So they are inconsistent + none of the above is an issue if there is no timevarying biology + ------- + Improved approach + SSBpR0 set at start year using start year biology + SSBpR0 updated during time series if there is time-varying R0; PLUS NEW: equil_spawn_recr_calc called to get new equilibrium R0, SSB0 + SSBpR0 for benchmark stays at virgin unless timevary_bio_4SRR == 0, or if timevary_SRparm_first > 0 + Btgttgt can now use either frac*SSB_bench or frac*SSB_virgin by using the existing flag for depletion basis + Btgttgt2 can be fraction of SSB_MSY, of SSB_virgin, or of SSB_bench + HCR inflection adds option to use SSB_virgin or SSB_bench + depletion adds option to use SSB_bench + */ + Recr_unf = Recr_virgin; // default + SSB0_4_SRR = SSB_virgin; // default + R0_4_SRR = Recr_virgin; + Fishon = 0; + SSBpR_Calc(Recr_unf); // this returns SSB_equil using benchmark biology + // provides basis for values needed below + SSB_unf = SSB_equil; + SSBpR_bench = SSB_equil / Recr_unf; + + if(timevary_SRparm_first == 0) // no timevary SRR parms + { + if( timevary_MG_firstyr == YrMax && WTage_rd == 0) // no time-varying biology + { + R0_4_SRR = Recr_virgin; + SSB0_4_SRR = SSB_virgin; + SSB_unf = SSB_virgin; + } + else // there is time-varying biology + { + R0_4_SRR = Recr_virgin; // same as Recr_virgin because no timevary SRparms + if( timevary_bio_4SRR == 0) // legacy approach; this switch is read from starter.ss + { + SSB_unf = SSB_equil; + SSB0_4_SRR = SSB_equil; // this is inaccurate legacy, as it moves equil off the SRR, rather than along the SRR + } + else + { + // get new equilibrium point using original SRR and SSBpR_bench + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB_virgin, Recr_virgin, SSBpR_bench); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + SSB_unf = Equ_SpawnRecr_Result(1); + Recr_unf = Equ_SpawnRecr_Result(2); + if (show_MSY == 1) report5 << " use virgin SSBpR0 in SRR - SSB: " << SSB_virgin << " Recr: " << Recr_virgin << " SPR: " << SSB_virgin / Recr_virgin << " bench SPR: " << SSBpR_bench << " new equil: " << Equ_SpawnRecr_Result << endl; + } + SSBpR_bench = SSB_unf / Recr_unf; + } + } + else // there are timevary SRR parms; use same code regardless of timevary biology. Legacy approach does not include new equilibrium + { + Recr_unf = mfexp(SRparm_bench(1)); // R0 to be used + // note that steepness will get updated when SRparm_bench is used in Equ_SpawnRecr_Result + SSBpR_Calc(Recr_unf); // this returns SSB_equil using benchmark biology + SSB_unf = SSB_equil; + SSBpR_bench = SSB_equil / Recr_unf; + if( timevary_bio_4SRR == 0) // legacy approach; this switch is read from starter.ss + { + R0_4_SRR = Recr_unf; + SSB0_4_SRR = SSB_equil; // this is legacy, but incorrect, as it moves equil off the SRR, rather than along the SRR + } + else // use improved approach with updated SRparms and benchmark biology + { + // get new equilibrium point for the benchmark SRR + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB_equil, Recr_unf, SSBpR_bench); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + SSB_unf = Equ_SpawnRecr_Result(1); + SSB0_4_SRR = Equ_SpawnRecr_Result(1); + Recr_unf = Equ_SpawnRecr_Result(2); + R0_4_SRR = Equ_SpawnRecr_Result(2); + + if (show_MSY == 1) report5 << " use bench SSBpR0 in SRR - SSB: " << SSB_unf << " Recr: " << Recr_unf << " SPR: " << SSBpR_bench << " new equil: " << Equ_SpawnRecr_Result << endl; + } + } + + if (show_MSY == 1) + { + SRparm_bench(N_SRparm2 + 1) = SSB_unf; + Mgmt_quant(1) = SSB_unf; + Mgmt_quant(2) = totbio; // this is calculated in Do_Equil_Calc + Mgmt_quant(3) = smrybio; + Mgmt_quant(4) = Recr_unf; + report5 << "SRparms for benchmark: " << SRparm_bench << endl + << "Benchmark biology averaged over years: " << Bmark_Yr(1) << " " << Bmark_Yr(2) << endl << endl; + Mgmt_quant(19) = SSB_unf; // placeholder for depletion denominator + Mgmt_quant(20) = SSB_unf; // placeholder to be replaced by SSB_HCR_infl + Mgmt_quant(21) = R0_4_SRR; + Mgmt_quant(22) = SSB0_4_SRR; + } + + // find Fspr SS_Label_710 + { + if (show_MSY == 1) + { + report5 << "#" << endl + << "find_target_SPR" << endl; + report5 << "SPR_is_spawner_potential_ratio=(fishedSSB/R)/(unfishedSSB/R))" << endl; + report5 << "Iter Fmult ann_F SPR tot_catch"; + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " SSB_Area:" << p << "_GP:" << gp; + } + report5 << endl; + } + Fmult = 0.; + Nloops = 18; + Closer = 1.; + F1(1) = log(1.0e-3); + last_calc = 0.; + Fchange = -4.0; + + equ_Recr = 1.0; // so calls to Do_Equil_Calc will return values of SSBpR + Fishon = 0; + dvariable SPR_target100; + SPR_target100 = SPR_target * 100.; + + SSBpR_Calc(equ_Recr); // where equ_Recr has been set to 1.0 + SSBpR_unf = SSB_equil / equ_Recr; // this corresponds to the biology for benchmark average years, not the virgin SSB_virgin + Vbio1_unfished = smrybio; // gets value from equil_calc + if (show_MSY == 1) + { + report5 << "0 0 0 1 0"; + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " " << SSB_equil_pop_gp(p, gp); + } + report5 << endl; + } + + df = 1.e-5; + Fishon = 1; + for (j = 1; j <= Nloops; j++) // loop find Fspr + { + if (fabs(Fchange) <= 0.25) + { + jj = 3; + F1(2) = F1(1) + df * .5; + F1(3) = F1(2) - df; + } + else + { + jj = 1; + } + + for (int ii = jj; ii >= 1; ii--) + { + Fmult = 40.00 / (1.0 + mfexp(-F1(ii))); + + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + for (int s = 1; s <= nseas; s++) + { + Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); + } + } + // else Hrate for bycatch fleets already set + } + + Fishon = 1; + SSBpR_Calc(equ_Recr); + yld1(ii) = 100. * SSB_equil / SSBpR_unf; // spawning potential ratio + } + SPR_actual = yld1(1); // spawning potential ratio + + if (jj == 3) + { + Closer *= 0.5; + dyld = (yld1(2) - yld1(3)) / df; // First derivative (to find the root of this) + if (dyld != 0.) + { + last_F1 = F1(1); + F1(1) += (SPR_target100 - SPR_actual) / (dyld + 0.001); + F1(1) = (1. - Closer) * F1(1) + Closer * last_F1; + } // averages with last good value to keep from changing too fast + else + { + F1(1) = (F1(1) + last_F1) * 0.5; + } // go halfway back towards previous value + } + else + { + // if((last_calc-SPR_target)*(SPR_actual-SPR_target)<0.0) {Fchange*=-0.5;} // changed sign, so reverse search direction + temp = (last_calc - SPR_target100) * (SPR_actual - SPR_target100) / (sfabs(last_calc - SPR_target100) * sfabs(SPR_actual - SPR_target100)); // values of -1 or 1 + temp1 = temp - 1.; // values of -2 or 0 + Fchange *= exp(temp1 / 4.) * temp; + F1(1) += Fchange; + last_calc = SPR_actual; + } + + if (show_MSY == 1) + { + report5 << j << " " << Fmult << " " << equ_F_std << " " << SPR_actual / 100. << " " << sum(equ_catch_fleet(2)); + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " " << SSB_equil_pop_gp(p, gp); + } + report5 << endl; + } + } // end search loop + + if (show_MSY == 1) + { + if (fabs(SPR_actual - SPR_target100) >= 0.1) + { + warnstream << "poor convergence in Fspr search " << SPR_target << " " << SPR_actual / 100.; + write_message(WARN, 0); + } + if (SPR_actual / SPR_target100 >= 1.01) + { + warnstream << "Fmult = " << Fmult << " cannot get high enough to achieve low SPR target: " << SPR_target << "; SPR achieved is: " << SPR_actual / 100.; + write_message(WARN, 0); + } + + report5 << "seas fleet Hrate encB deadB retB encN deadN retN: " << endl; + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); + for (g = 1; g <= 6; g++) + { + report5 << " " << equ_catch_fleet(g, s, f); + } + report5 << endl; + } + } + + // SPAWN-RECR: calc equil spawn-recr in YPR; need to make this area-specific + SSBpR_temp = SSB_equil; // based on most recent call to Do_Equil_Calc + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + + Bspr = Equ_SpawnRecr_Result(1); + Bspr_rec = Equ_SpawnRecr_Result(2); + YPR_spr_enc = YPR_enc; // total encountered yield per recruit + YPR_spr_dead = YPR_dead; // total dead yield per recruit + YPR_spr_N_dead = YPR_N_dead; + YPR_spr_ret = YPR_ret; + YPR_spr_cost = Cost; + YPR_spr_revenue = (PricePerF * YPR_val_vec) * Equ_SpawnRecr_Result(2); // vector*vector*scalar + YPR_spr_profit = YPR_spr_revenue - Cost; + SPR_Fmult = Fmult; + if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) + { + echoinput << "Calculated Fspr " << SPR_Fmult << " " << SPR_actual / 100. << endl; + } + Vbio_spr = totbio; + Vbio1_spr = smrybio; + Mgmt_quant(10) = equ_F_std; + Mgmt_quant(9) = Equ_SpawnRecr_Result(1); + Mgmt_quant(11) = YPR_dead * Equ_SpawnRecr_Result(2); + } // end finding Fspr + + if (Do_Benchmark == 2) // Find F0.1 + { + equ_Recr = 1.0; + Fishon = 1; + // get slope at origin + // Fmult=0.000001; + Fmult = 0.001; + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + for (int s = 1; s <= nseas; s++) + { + Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); + } + } + // else Hrate for bycatch fleets already set + } + SSBpR_Calc(equ_Recr); + F01_origin = YPR_opt / Fmult; + + BTGT_frac = 0.1; // now relative to Bmark + Btgttgt = F01_origin * 0.1; + if (show_MSY == 1) + { + report5 << "#" << endl + << "#Find_F0.1; slope_at_origin_wrt_Fmult: " << F01_origin << " " << YPR_opt << " " << Hrate(1, bio_t_base + 3) << endl; + report5 << "Iter Fmult ann_F SPR YPR YPR_slope YPR_curvature" << endl; + } + + Nloops = 20; + Closer = 0.75; + F1(1) = SPR_Fmult * 0.1; + for (j = 1; j <= Nloops; j++) // loop to find F0.1 + { + df = 0.01 * F1(1); + F1(2) = F1(1) + df * .5; + F1(3) = F1(2) - df; + for (int ii = 3; ii >= 1; ii--) + { + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + for (int s = 1; s <= nseas; s++) + { + Hrate(f, bio_t_base + s) = F1(ii) * Bmark_RelF_Use(s, f); + } + } // else Hrate for bycatch fleets set above + } + SSBpR_Calc(equ_Recr); + yld1(ii) = YPR_opt; + } + + F01_actual = (yld1(2) - yld1(3)) / (F1(2) - F1(3)); + F01_second = ((yld1(2) - yld1(1)) / (F1(2) - F1(1)) - (yld1(1) - yld1(3)) / (F1(1) - F1(3))) / (F1(2) - F1(3)); + + last_F1 = F1(1); + if (show_MSY == 1) + { + report5 << j << " " << F1(1) << " " << equ_F_std << " " << SSB_equil / SSBpR_unf << " " << YPR_opt << " " << F01_actual << " " << F01_second << " last F1 " << last_F1 << " Closer " << Closer << " delta " << (F01_origin * 0.1 - F01_actual) / (F01_second) << endl; + } + F1(1) += (F01_origin * 0.1 - F01_actual) / (F01_second); + F1(1) = (1. - Closer) * F1(1) + Closer * last_F1; + Closer *= 0.75; + } // end search loop + + if (show_MSY == 1) + { + if (sfabs(F01_origin * 0.1 - F01_actual) >= 0.001) + { + warnstream << "poor convergence in F0.1 search target= " << F01_origin * 0.1 << " actual= " << F01_actual; + write_message(WARN, 0); + } + report5 << "seas fleet Hrate encB deadB retB encN deadN retN): " << endl; + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); + for (g = 1; g <= 6; g++) + { + report5 << " " << equ_catch_fleet(g, s, f); + } + report5 << endl; + } + } + + Btgt_Fmult = F1(1); + if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) + echoinput << "Calculated F0.1: " << Btgt_Fmult << endl; + SSBpR_temp = SSB_equil; + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + Btgt = Equ_SpawnRecr_Result(1); + Btgt_Rec = Equ_SpawnRecr_Result(2); + YPR_Btgt_enc = YPR_enc; // total encountered yield per recruit + YPR_Btgt_dead = YPR_dead; // total dead yield per recruit + YPR_Btgt_N_dead = YPR_N_dead; // total dead yield per recruit + YPR_Btgt_ret = YPR_ret; + YPR_Btgt_cost = Cost; + YPR_Btgt_revenue = (PricePerF * YPR_val_vec) * Btgt_Rec; // vector*vector*scalar + // YPR_Btgt_revenue = Price*YPR_ret*Btgt_Rec; + YPR_Btgt_profit = YPR_Btgt_revenue - Cost; + SPR_Btgt = SSB_equil / SSBpR_unf; + Vbio_Btgt = totbio; + Vbio1_Btgt = smrybio; + Mgmt_quant(7) = equ_F_std; + Mgmt_quant(5) = SSB_equil / SSB_unf * Btgt_Rec; + Mgmt_quant(6) = SSB_equil / SSB_unf; + Mgmt_quant(8) = YPR_dead * Btgt_Rec; + + } // end F0.1 + + else // find F giving Btarget SS_Label_720 + { + // ****************************************************** + + if (depletion_basis == 1 && timevary_bio_4SRR != 0) + {Btgttgt = BTGT_frac * SSB_virgin;} + else + {Btgttgt = BTGT_frac * SSB_unf;} // current SS3 approach uses benchmark biology + + if (show_MSY == 1) + { + report5 << "#" << endl; + if (depletion_basis == 1 && timevary_bio_4SRR != 0) + {report5 << "Find_target_SSB as fraction: " << BTGT_frac << " of Virgin SSB:" << SSB_virgin << endl;} + else + {report5 << "Find_target_SSB as fraction: " << BTGT_frac << " of SSB_unf: "<< SSB_unf << endl;} + report5 << "Iter Fmult ann_F SPR Catch SSB Recruits SSB/Bzero Tot_catch"; + + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " SSB_Area:" << p << "_GP:" << gp; + } + report5 << endl; + } + + F1(1) = log(1.0e-3); + last_calc = 0.; + Fchange = -4.0; + df = 1.e-5; + Closer = 1.; + dvariable Closer2; + if (SR_fxn == 5) + { + Closer2 = 0.001; + Nloops = 40; + } + else + { + Closer2 = 0.10; + Nloops = 28; + } + + for (j = 0; j <= Nloops; j++) // loop find Btarget + { + if (fabs(Fchange) <= Closer2) + { + jj = 3; + F1(2) = F1(1) + df * .5; + F1(3) = F1(2) - df; + } + else + { + jj = 1; + } + for (int ii = jj; ii >= 1; ii--) + { + if (j == 0) + { + Fmult = 0.0; + } + else + { + Fmult = 40.00 / (1.00 + mfexp(-F1(ii))); + } + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + for (int s = 1; s <= nseas; s++) + { + Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); + } + } + // else Hrate for bycatch fleets already set + } + SSBpR_Calc(equ_Recr); // where equ_Recr=1.0, so returned SSB_equil is in units of SSB/R, + SSBpR_temp = SSB_equil; +// warning << equ_Recr << " " << SSB_equil << " " << SRparm_bench << " " << SSBpR_temp << endl; + SPR_Btgt = SSBpR_temp / SSBpR_unf; // where SSBpR_unf = SSB_unf / Recr_unf so units of SSB/R; so result is SPR_Btgt = (fished SSB/R) / (unfished SSB/R) + // SPAWN-RECR: calc equil spawn-recr for Btarget calcs; need to make area-specific + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR +// warning << SSB0_4_SRR << " " << R0_4_SRR << Equ_SpawnRecr_Result << endl; + yld1(ii) = Equ_SpawnRecr_Result(1); + } + + Btgt = Equ_SpawnRecr_Result(1); // so uses benchmark average years + + if (jj == 3) + { + Closer *= 0.5; + dyld = (yld1(2) - yld1(3)) / df; // First derivative + if (dyld != 0.) + { + last_F1 = F1(1); + F1(1) -= (Btgt - Btgttgt) / (dyld + 0.001); + F1(1) = (1. - Closer) * F1(1) + (Closer)*last_F1; + } // weighted average with last good value to keep from changing too fast + else + { + F1(1) = (F1(1) + last_F1) * 0.5; + } // go halfway back towards previous value + } + else + { + temp = (last_calc - Btgttgt) * (Btgt - Btgttgt) / (sfabs(last_calc - Btgttgt) * sfabs(Btgt - Btgttgt)); // values of -1 or 1 + temp1 = temp - 1.; // values of -2 or 0 + Fchange *= exp(temp1 / 4.) * temp; + F1(1) += Fchange; + last_calc = Btgt; + } + + if (show_MSY == 1) + { + report5 << j << " " << Fmult << " " << equ_F_std << " " << SPR_Btgt << " " << YPR_dead * Equ_SpawnRecr_Result(2) << " " << Btgt << " " << Equ_SpawnRecr_Result(2) + << " " << Btgt / (Btgttgt / BTGT_frac) << " " << sum(equ_catch_fleet(2)) * Equ_SpawnRecr_Result(2); + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " " << SSB_equil_pop_gp(p, gp) * Equ_SpawnRecr_Result(2); + } + report5 << endl; + } + } // end search loop + + Btgt_Rec = Equ_SpawnRecr_Result(2); + + if (show_MSY == 1) + { + if (fabs(log(Btgt / Btgttgt)) >= 0.001) + { + warnstream << "poor convergence in Btarget search " << Btgttgt << " " << Btgt; + write_message (WARN, 0); + } + report5 << "seas fleet Hrate encB deadB retB encN deadN retN): " << endl; + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); + for (g = 1; g <= 6; g++) + { + report5 << " " << Btgt_Rec * equ_catch_fleet(g, s, f); + } + report5 << endl; + } + } + + Btgt_Fmult = Fmult; + if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) + { + echoinput << "Calculated Btgt: " << Btgt_Fmult << " " << Btgt / SSB_unf << endl; + } + YPR_Btgt_enc = YPR_enc; // total encountered yield per recruit + YPR_Btgt_dead = YPR_dead; // total dead yield per recruit + YPR_Btgt_N_dead = YPR_N_dead; // total dead yield per recruit + YPR_Btgt_ret = YPR_ret; + YPR_Btgt_cost = Cost; + // YPR_Btgt_revenue = Price*YPR_ret*Btgt_Rec; + YPR_Btgt_revenue = (PricePerF * YPR_val_vec) * Btgt_Rec; + YPR_Btgt_profit = YPR_Btgt_revenue - Cost; + Vbio_Btgt = totbio; + Vbio1_Btgt = smrybio; + Mgmt_quant(7) = equ_F_std; + Mgmt_quant(5) = Btgt; + Mgmt_quant(6) = SPR_Btgt; + Mgmt_quant(8) = YPR_dead * Btgt_Rec; + } // end finding F for Btarget + + // ****************************************************** + // start finding Fmsy SS_Label_730 + if (Do_MSY == 0) + { + Fmax = 1.; + MSY = -1; + Bmsy = -1; + Recr_msy = -1; + MSY_SPR = -1; + Yield = -1; + totbio = 1; + smrybio = 1.; + MSY_Fmult = -1.; // use these values if MSY is not calculated + if (show_MSY == 1) + report5 << "MSY_not_calculated;_ignore_values" << endl; + } + else + { + if (F_Method >= 2) + { + Fmax = 3.00 * Btgt_Fmult; + } + + switch (Do_MSY) // set conditions for the MSY search loops + { + case 1: // set Fmsy=Fspr + { + Fmult = SPR_Fmult; + if (F_Method == 1) + { + Fmax = SPR_Fmult * 1.1; + } + F1(1) = -log(Fmax / SPR_Fmult - 1.); + last_calc = 0.; + Fchange = 1.0; + Closer = 1.; + Nloops = 0; + Nloops2 = 0; + F2(1) = -log(Fmax / SPR_Fmult - 1.); + break; + } + case 3: // set Fmsy=Fbtgt + { + Fmult = Btgt_Fmult; + if (F_Method == 1) + { + Fmax = Btgt_Fmult * 1.1; + } + F1(1) = -log(Fmax / Btgt_Fmult - 1.); + last_calc = 0.; + Fchange = 1.0; + Closer = 1.0; + Nloops = 0; + Nloops2 = 0; + F2(1) = -log(Fmax / SPR_Fmult - 1.); + break; + } + case 4: // set fmult for Fmsy to 1 + { + Fmult = 1; + Fmax = 1.1; + F1(1) = -log(Fmax / Fmult - 1.); + last_calc = 0.; + Fchange = 1.0; + Closer = 1.0; + Nloops = 0; + Nloops2 = 0; + F2(1) = -log(Fmax / SPR_Fmult - 1.); + break; + } + case 2: // calc Fmsy + { + // proceed to case 5 + } + case 5: // calc Fmey + { + last_calc = 0.; + Fchange = 0.51; + Closer = 1.0; + if (SR_fxn == 5) + { + Nloops2 = 40; + } + else + { + Nloops2 = 19; + } + if (F_Method == 1) + { + Fmax = (Btgt_Fmult + SPR_Fmult) * 0.5 * SRparm_bench(2) / 0.05; + } // previously /0.18 + F1(1) = -log(Fmax / Btgt_Fmult - 1.); + F2(1) = -log(Fmax / Btgt_Fmult - 1.); + break; + } + } + + // Compute stats for saving (a bit of a trick) + if (Do_MSY == 1 || Do_MSY == 3 || Do_MSY == 4) // Fmsy set to existing quantity, so not estimated + { + if (show_MSY == 1) // report some headers + { + report5 << "#" << endl + << MSY_name << endl + << "Iter Fmult ann_F SPR Catch SSB Recruits SSB/Bzero Gradient Curvature Tot_Ret_Catch"; + for (f = 1; f <= Nfleet; f++) + report5 << " Ret_Catch:" << f << " "; + report5 << "Cost Revenue Profit "; + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " Area:" << p << "_GP:" << gp; + } + report5 << endl; + } + // Fmult=Fmax/(1.00+mfexp(-F1(1))); // using the F1 calculated in previous section + for (f = 1; f <= Nfleet; f++) + { + // if(YPR_mask(f)==1) // incorrect usage, should use bycatch_setup(f,3) per replacement line below + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + for (int s = 1; s <= nseas; s++) + { + Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); + } + } + // else Hrate for bycatch fleets already set + } + + SSBpR_Calc(equ_Recr); + // SPAWN-RECR: calc spawn-recr for MSY calcs; need to make area-specific + MSY_SPR = SSB_equil / SSBpR_unf; + SSBpR_temp = SSB_equil; + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + Bmsy = Equ_SpawnRecr_Result(1); // with MSY set to SPR, not directly estimated + Recr_msy = Equ_SpawnRecr_Result(2); + yld1(1) = YPR_opt * Recr_msy; + YPR_msy_enc = YPR_enc; + YPR_msy_dead = YPR_dead; // total dead yield + YPR_msy_N_dead = YPR_N_dead; // total dead yield + YPR_msy_ret = YPR_ret; // total retained yield + YPR_msy_cost = Cost; + YPR_msy_revenue = (PricePerF * YPR_val_vec) * Recr_msy; // vector*vector*scalar + YPR_msy_profit = YPR_msy_revenue - Cost; + MSY = yld1(1); + MSY_Fmult = Fmult; + if (show_MSY == 1) + { + report5 << 1 << " " << Fmult << " " << equ_F_std << " " << MSY_SPR << " " << yld1(1) << " " << Bmsy << " " << Recr_msy << " " << Bmsy / SSB_unf << " " + << " na " + << " na " << YPR_msy_ret * Recr_msy; + report5 << value(equ_catch_fleet(3) * Recr_msy) << " " << Cost << " " << YPR_msy_revenue << " " << Profit << " "; + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " " << SSB_equil_pop_gp(p, gp) * Recr_msy; + } + report5 << endl; + } + + Mgmt_quant(12) = Bmsy; + Mgmt_quant(13) = MSY_SPR; + Mgmt_quant(14) = equ_F_std; + Mgmt_quant(15) = yld1(1); + Mgmt_quant(16) = YPR_ret * Recr_msy; + Mgmt_quant(17) = Bmsy / SSB_unf; + Mgmt_quant(18) = Recr_msy; + Vbio1_MSY = smrybio; + Vbio_MSY = totbio; + } + + else // (Do_MSY==2 || Do_MSY==5) // search for FMSY, then optionally for FMEY; FMEY embedded inside this section + { + if (show_MSY == 1) // report some headers + { + report5 << endl + << MSY_name << endl; + report5 << "Iter Fmult ann_F SPR Opt_Catch_Profit SSB Recruits SSB/Bzero Gradient Curvature Tot_Ret_Catch"; + for (f = 1; f <= Nfleet; f++) + report5 << " Ret_Catch:" << f << " "; + report5 << "Cost Revenue Profit "; + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " Area:" << p << "_GP:" << gp; + } + report5 << endl; + } + bestF1.initialize(); + bestF2.initialize(); + df = 0.050; + jj = 3; + Fishon = 1; + Closer = 1.0; + for (j = 0; j <= Nloops2; j++) // loop to find Fmsy + { + df *= .95; + Closer *= 0.8; + F2(2) = F2(1) + df * .5; + F2(3) = F2(2) - df; + for (int ii = jj; ii >= 1; ii--) + { + Fmult = Fmax / (1.00 + mfexp(-F2(ii))); + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + if (AdjustBenchF(f) == 1) + { + for (int s = 1; s <= nseas; s++) + { + Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); + } + } + else + { + for (int s = 1; s <= nseas; s++) + { + Hrate(f, bio_t_base + s) = Bmark_HistF(s, f); + } + } + } // else Hrate for bycatch fleets set above + } + SSBpR_Calc(equ_Recr); + // SPAWN-RECR: calc spawn-recr for MSY calcs; need to make area-specific + MSY_SPR = SSB_equil / SSBpR_unf; + SSBpR_temp = SSB_equil; + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + Bmsy = Equ_SpawnRecr_Result(1); // MSY is directly estimated + Recr_msy = Equ_SpawnRecr_Result(2); + Profit = (PricePerF * YPR_val_vec) * Recr_msy - Cost; + if (Do_MSY == 2) // dead catch without excluded bycatch fleets + { + yld1(ii) = YPR_opt * Recr_msy; + } + + // else using the bioecon options that depend on MSY_units + else if (MSY_units == 2) // retained catch without excluded bycatch fleets, but still with size/age discard + { + yld1(ii) = YPR_opt * Recr_msy; + } + else if (MSY_units == 1) // dead catch + { + yld1(ii) = YPR_dead * Recr_msy; + } + else if (MSY_units == 3) // retained catch + { + yld1(ii) = YPR_ret * Recr_msy; + } + else // profit + { + yld1(ii) = (PricePerF * YPR_val_vec) * Recr_msy - Cost; + } + + bestF1 += F2(ii) * (pow(mfexp(yld1(ii) / 1.0e08), 5) - 1.); + bestF2 += pow(mfexp(yld1(ii) / 1.0e08), 5) - 1.; + } // end gradient calc + dyld = (yld1(2) - yld1(3)) / df; // First derivative (to find the root of this) + temp = (yld1(2) + yld1(3) - 2. * yld1(1)) / (.25 * df * df); // Second derivative (for Newton Raphson) + dyldp = -sqrt(temp * temp + 1.); // add 1 to keep curvature reasonably large + last_F1 = F2(1); + temp = F2(1) - dyld * (1. - Closer) / (dyldp); + if (show_MSY == 1) + { + report5 << j << " " << Fmult << " " << equ_F_std << " " << MSY_SPR << " " << yld1(1) << " " << Bmsy << " " << Recr_msy << " " << Bmsy / SSB_unf << " " + << dyld << " " << dyldp << " " << value(sum(equ_catch_fleet(3)) * Recr_msy) << " "; + report5 << " " << value(colsum(equ_catch_fleet(3)) * Recr_msy) << " " << Cost << " " << PricePerF * YPR_val_vec * Recr_msy << " " << Profit << " "; + // colsum above sums across seasons so reports annual catch for each fleet, including survey fleets + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " " << SSB_equil_pop_gp(p, gp) * Recr_msy; + } + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + report5 << " " << Hrate(f, bio_t_base + 1) << " "; + } + report5 << endl; + } + if (j <= 9) + { + F2(1) = (1. - Closer) * temp + Closer * (bestF1 / bestF2); + } // averages with best value to keep from changing too fast + else + { + F2(1) = temp; + } + } // end search loop + + YPR_msy_enc = YPR_enc; + YPR_msy_dead = YPR_dead; // total dead yield + YPR_msy_N_dead = YPR_N_dead; // total dead yield + YPR_msy_ret = YPR_ret; // total retained yield + YPR_msy_cost = Cost; + YPR_msy_revenue = (PricePerF * YPR_val_vec) * Recr_msy; // vector*vector*scalar + YPR_msy_profit = YPR_msy_revenue - Cost; + MSY = yld1(1); + MSY_Fmult = Fmult; + Mgmt_quant(12) = Bmsy; + Mgmt_quant(13) = MSY_SPR; + Mgmt_quant(14) = equ_F_std; + Mgmt_quant(15) = yld1(1); + Mgmt_quant(16) = YPR_ret * Recr_msy; + Mgmt_quant(17) = Bmsy / SSB_unf; + Mgmt_quant(18) = Recr_msy; + + Vbio1_MSY = smrybio; + Vbio_MSY = totbio; + + if (show_MSY == 1) + { + if (fabs(dyld / dyldp) >= 0.001) + { + warnstream << "poor convergence in Fmsy, final dy/dy2= " << dyld / dyldp; + write_message (WARN, 0); + } + report5 << "seas fleet Hrate encB deadB retB encN deadN retN): " << endl; + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); + for (g = 1; g <= 6; g++) + { + report5 << " " << Recr_msy * equ_catch_fleet(g, s, f); + } + report5 << endl; + } + report5 << "Equil_N_at_age_at_MSY_each" << endl + << "Seas Area GP Sex subM" << age_vector << endl; + for (s = 1; s <= nseas; s++) + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + { + if (use_morph(g) > 0) + report5 << s << " " << p << " " << GP4(g) << " " << sx(g) << " " << GP2(g) << " " << Recr_msy * equ_numbers(s, p, g)(0, nages) << endl; + } + + report5 << "Equil_N_at_age_at_MSY_sum" << endl + << "GP Sex N/Z" << age_vector << endl; + for (gg = 1; gg <= gender; gg++) + for (gp = 1; gp <= N_GP; gp++) + { + tempvec_a.initialize(); + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (GP4(g) == gp && sx(g) == gg) + tempvec_a += value(Recr_msy * equ_numbers(1, p, g)(0, nages)); + } + if (nseas > 1) + { + tempvec_a(0) = 0.; + for (s = 1; s <= nseas; s++) + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0 && Bseas(g) == s) + { + if (GP4(g) == gp && sx(g) == gg) + tempvec_a(0) += value(Recr_msy * equ_numbers(1, p, g, 0)); + } + } + report5 << gp << " " << gg << " N " << tempvec_a << endl; + report5 << gp << " " << gg << " Z "; + for (a = 0; a <= nages - 2; a++) + { + report5 << -log(tempvec_a(a + 1) / tempvec_a(a)) << " "; + } + report5 << " NA NA" << endl; + } + + Fishon = 0; + SSBpR_Calc(equ_Recr); + report5 << "Equil_N_at_age_M_only_Recr_MSY" << endl + << "Seas Area GP Sex subM" << age_vector << endl; + for (s = 1; s <= nseas; s++) + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + { + if (use_morph(g) > 0) + report5 << s << " " << p << " " << GP4(g) << " " << sx(g) << " " << GP2(g) << " " << Recr_msy * equ_numbers(s, p, g)(0, nages) << endl; + } + + report5 << "Equil_N_at_age_M_only_sum" << endl + << "GP Sex N/Z " << age_vector << endl; + for (gg = 1; gg <= gender; gg++) + for (gp = 1; gp <= N_GP; gp++) + { + tempvec_a.initialize(); + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (GP4(g) == gp && sx(g) == gg) + tempvec_a += value(Recr_msy * equ_numbers(1, p, g)(0, nages)); + } + if (nseas > 1) + { + tempvec_a(0) = 0.; + for (s = 1; s <= nseas; s++) + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0 && Bseas(g) == s) + { + if (GP4(g) == gp && sx(g) == gg) + tempvec_a(0) += value(Recr_msy * equ_numbers(1, p, g, 0)); + } + } + report5 << gp << " " << gg << " N " << tempvec_a << endl; + report5 << gp << " " << gg << " Z "; + for (a = 0; a <= nages - 2; a++) + { + report5 << -log(tempvec_a(a + 1) / tempvec_a(a)) << " "; + } + report5 << " NA NA" << endl; + } + + Fishon = 1; + + if (Fmult * 3.0 <= SPR_Fmult) + { + warnstream << "Fmsy/mey is <1/3 of Fspr are you sure? check for convergence "; + write_message (WARN, 0); + } + if (Fmult / 3.0 >= SPR_Fmult) + { + warnstream << "Fmsy/mey is >3x of Fspr are you sure? check for convergence "; + write_message (WARN, 0); + } + if (Fmult / 0.98 >= Fmax) + { + warnstream << "Fmsy.mey is close to max allowed; check for convergence "; + write_message (WARN, 0); + } + report5 << "end Seach for MSY" << endl; + } // end Do_MSY = 2 + } + } + + if (Do_Benchmark == 3) // find F giving B as fraction of Bmsy + { + if (show_MSY == 1) + { + report5 << "#" << endl + << "Find_target_SSB/Blimit; where Blimit is a fraction of Bmsy" << Blim_frac << endl + << "Iter Fmult ann_F SPR Catch SSB Recruits SSB/Bzero Tot_catch"; + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " SSB_Area:" << p << "_GP:" << gp; + } + report5 << endl; + } + + F1(1) = log(1.0e-3); + last_calc = 0.; + Fchange = -4.0; + df = 1.e-5; + Closer = 1.; + dvariable Closer2; + if (SR_fxn == 5) + { + Closer2 = 0.001; + Nloops = 40; + } + else + { + Closer2 = 0.10; + Nloops = 28; + } + + // Btgttgt=BTGT_frac*SSB_virgin; // this is relative to virgin, not to the average biology from benchmark years + double Blim_report; + if (Blim_frac > 0.0) + { + Btgttgt2 = Blim_frac * Bmsy; + Blim_report = value(Bmsy); + } + else if (depletion_basis == 1) + { + Btgttgt2 = -Blim_frac * SSB_virgin; + Blim_report = value(SSB_virgin); + } + else + { + Btgttgt2 = -Blim_frac * SSB_unf; + Blim_report = value(SSB_unf); + } + + for (j = 0; j <= Nloops; j++) // loop find Btarget + { + if (fabs(Fchange) <= Closer2) + { + jj = 3; + F1(2) = F1(1) + df * .5; + F1(3) = F1(2) - df; + } + else + { + jj = 1; + } + for (int ii = jj; ii >= 1; ii--) + { + if (j == 0) + { + Fmult = 0.0; + } + else + { + Fmult = 40.00 / (1.00 + mfexp(-F1(ii))); + } + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + for (int s = 1; s <= nseas; s++) + { + Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); + } + } + // else Hrate for bycatch fleets already set + } + SSBpR_Calc(equ_Recr); + SPR_Btgt2 = SSB_equil / SSBpR_unf; + // SPAWN-RECR: calc equil spawn-recr for Btarget calcs; need to make area-specific + SSBpR_temp = SSB_equil; + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + yld1(ii) = Equ_SpawnRecr_Result(1); + } + + Btgt2 = Equ_SpawnRecr_Result(1); // so uses benchmark average years + + if (jj == 3) + { + Closer *= 0.5; + dyld = (yld1(2) - yld1(3)) / df; // First derivative + if (dyld != 0.) + { + last_F1 = F1(1); + F1(1) -= (Btgt2 - Btgttgt2) / (dyld + 0.001); + F1(1) = (1. - Closer) * F1(1) + (Closer)*last_F1; + } // weighted average with last good value to keep from changing too fast + else + { + F1(1) = (F1(1) + last_F1) * 0.5; + } // go halfway back towards previous value + } + else + { + temp = (last_calc - Btgttgt2) * (Btgt2 - Btgttgt2) / (sfabs(last_calc - Btgttgt2) * sfabs(Btgt2 - Btgttgt2)); // values of -1 or 1 + temp1 = temp - 1.; // values of -2 or 0 + Fchange *= exp(temp1 / 4.) * temp; + F1(1) += Fchange; + last_calc = Btgt2; + } + + if (show_MSY == 1) + { + report5 << j << " " << Fmult << " " << equ_F_std << " " << SPR_Btgt2 << " " << YPR_dead * Equ_SpawnRecr_Result(2) << " " << Btgt2 << " " << Equ_SpawnRecr_Result(2) + << " " << Btgt2 / Blim_report << " " << sum(equ_catch_fleet(2)) * Equ_SpawnRecr_Result(2); + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + report5 << " " << SSB_equil_pop_gp(p, gp) * Equ_SpawnRecr_Result(2); + } + report5 << endl; + } + } // end search loop + + Btgt_Rec2 = Equ_SpawnRecr_Result(2); + + if (show_MSY == 1) + { + if (fabs(log(Btgt2 / Btgttgt2)) >= 0.001) + { + warnstream << "poor convergence in Blimit search " << Btgttgt2 << " " << Btgt2 ; + write_message (WARN, 0); + } + report5 << "seas fleet Hrate encB deadB retB encN deadN retN): " << endl; + for (s = 1; s <= nseas; s++) + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); + for (g = 1; g <= 6; g++) + { + report5 << " " << Btgt_Rec2 * equ_catch_fleet(g, s, f); + } + report5 << endl; + } + } + + Btgt_Fmult2 = Fmult; + if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) + echoinput << "Calculated F_Blimit " << Btgt_Fmult2 << " " << Btgt2 / Blim_report << endl; + Mgmt_quant(N_STD_Mgmt_Quant - 2) = Btgt2; + Mgmt_quant(N_STD_Mgmt_Quant - 1) = equ_F_std; + Mgmt_quant(N_STD_Mgmt_Quant) = sum(equ_catch_fleet(2)) * Equ_SpawnRecr_Result(2); + } // end finding F for Blimit + + if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) + echoinput << "Calculated Fmsy " << MSY_Fmult << " " << MSY << endl; + + // ***************** show management report SS_Label_740 + if (show_MSY == 1) + { + report5 << "#" << endl + << "Management_report" << endl; + report5 << "Virgin: Steepness_Recr_SSB " << SRparm(2) << " " << Recr_virgin << " " << SSB_virgin << endl; + report5 << "Bench: Steepness_Recr_SSB " << SRparm_bench(2) << " " << R0_4_SRR << " " << SSB0_4_SRR << endl; + report5 << "unf : Steepness_Recr_SSB " << SRparm_bench(2) << " " << Recr_unf << " " << SSB_unf << endl; + report5 << "#" << endl + << "Summary_age: " << Smry_Age << endl; + report5 << "#_Bmark_years: beg_bio, end_bio, beg_selex, end_selex, beg_relF, end_relF, beg_recr_dist, end_recr_dist, beg_SRparm, end_SRparm" << endl + << Bmark_Yr << endl; + if (N_bycatch > 0) + { + report5 << "Bycatch_Fleets: " << column(bycatch_setup, 1) << endl; + report5 << "Fleets_in_optimized_catch: " << YPR_mask << endl; + report5 << "Bycatch_Fleets_F_scaling: " << column(bycatch_setup, 3) << endl; + } + report5 << "#" << endl + << "Element Value Value/Recr" << endl; + report5 << "Recr_unfished(Bmark) " << Recr_unf << endl; + report5 << "SSB_unfished(Bmark) " << SSB_unf << " " << SSB_unf / Recr_unf << endl; + report5 << "BIO_Smry_unfished(Bmark) " << Vbio1_unfished * Recr_unf << " " << Vbio1_unfished << endl; + report5 << "#" << endl + << "Spawner_Potential_Ratio_as_target" << endl; + + report5 << "SPR_target " << SPR_target << endl; + report5 << "SPR_calc " << SPR_actual / 100. << endl; + report5 << "Fmult " << SPR_Fmult << endl; + report5 << "ann_F " << Mgmt_quant(10) << endl; + report5 << "Exploit(Catch_dead/B_smry) " << YPR_spr_dead / Vbio1_spr << endl; + report5 << "Recruits " << Bspr_rec << endl; + report5 << "SSBio " << Bspr << " " << Bspr / Bspr_rec << endl; + report5 << "Catch_encountered " << YPR_spr_enc * Bspr_rec << " " << YPR_spr_enc << endl; + report5 << "Catch_dead " << YPR_spr_dead * Bspr_rec << " " << YPR_spr_dead << endl; + report5 << "Catch_retain " << YPR_spr_ret * Bspr_rec << " " << YPR_spr_ret << endl; + report5 << "Revenue " << YPR_spr_revenue << endl; + report5 << "Cost " << YPR_spr_cost << endl; + report5 << "Profit " << YPR_spr_profit << endl; + report5 << "Biomass_Smry " << Vbio1_spr * Bspr_rec << " " << Vbio1_spr << endl; + + if (Do_Benchmark == 2) // F0.1 + { + report5 << "#" << endl + << "F0.1_as_target" << endl; + report5 << "slope_target: " << F01_origin * 0.1 << endl; + report5 << "slope_calc: " << F01_actual << endl; + report5 << "SPR@F0.1 " << SPR_Btgt << endl; + report5 << "Fmult " << Btgt_Fmult << endl; + report5 << "ann_F " << Mgmt_quant(7) << endl; + report5 << "Exploit(Catch_dead/B_smry) " << YPR_Btgt_dead / Vbio1_Btgt << endl; + report5 << "Recruits@F0.1 " << Btgt_Rec << endl; + report5 << "SSBio " << Btgt << " " << Btgt / Btgt_Rec << endl; + report5 << "Catch_encountered " << YPR_Btgt_enc * Btgt_Rec << " " << YPR_Btgt_enc << endl; + report5 << "Catch_dead " << YPR_Btgt_dead * Btgt_Rec << " " << YPR_Btgt_dead << endl; + report5 << "Catch_retain " << YPR_Btgt_ret * Btgt_Rec << " " << YPR_Btgt_ret << endl; + report5 << "Revenue " << YPR_Btgt_revenue << endl; + report5 << "Cost " << YPR_Btgt_cost << endl; + report5 << "Profit " << YPR_Btgt_profit << endl; + report5 << "Biomass_Smry " << Vbio1_Btgt * Btgt_Rec << " " << Vbio1_Btgt << endl; + } + else + { + report5 << "#" << endl + << "Ratio_SSB/B0_as_target" << endl; + report5 << "Ratio_target " << BTGT_frac << endl; + report5 << "Ratio_calc " << Btgt / SSB_unf << endl; + report5 << "SPR@Btgt " << SPR_Btgt << endl; + report5 << "Fmult " << Btgt_Fmult << endl; + report5 << "ann_F " << Mgmt_quant(7) << endl; + report5 << "Exploit(Catch_dead/B_smry) " << YPR_Btgt_dead / Vbio1_Btgt << endl; + report5 << "Recruits " << Btgt_Rec << endl; + report5 << "SSBio " << Btgt << " " << Btgt / Btgt_Rec << endl; + report5 << "Catch_encountered " << YPR_Btgt_enc * Btgt_Rec << " " << YPR_Btgt_enc << endl; + report5 << "Catch_dead " << YPR_Btgt_dead * Btgt_Rec << " " << YPR_Btgt_dead << endl; + report5 << "Catch_retain " << YPR_Btgt_ret * Btgt_Rec << " " << YPR_Btgt_ret << endl; + report5 << "Revenue " << YPR_Btgt_revenue << endl; + report5 << "Cost " << YPR_Btgt_cost << endl; + report5 << "Profit " << YPR_Btgt_profit << endl; + report5 << "Biomass_Smry " << Vbio1_Btgt * Btgt_Rec << " " << Vbio1_Btgt << endl; + } + + report5 << "#" << endl + << MSY_name << endl; + report5 << "SPR@MSY " << MSY_SPR << endl; + report5 << "Fmult " << MSY_Fmult << endl; + report5 << "ann_F " << Mgmt_quant(14) << endl; + report5 << "Exploit(Catch/Bsmry) " << MSY / (Vbio1_MSY * Recr_msy) << endl; + report5 << "Recruits@MSY " << Recr_msy << endl; + report5 << "SSBmsy " << Bmsy << " " << Bmsy / Recr_msy << endl; + report5 << "SSBmsy/SSB_virgin " << Bmsy / SSB_virgin << endl; + report5 << "SSBmsy/SSB_unfished " << Bmsy / SSB_unf << endl; + report5 << "MSY_for_optimize " << MSY << " " << MSY / Recr_msy << endl; + report5 << "MSY_encountered " << YPR_msy_enc * Recr_msy << " " << YPR_msy_enc << endl; + report5 << "MSY_dead " << YPR_msy_dead * Recr_msy << " " << YPR_msy_dead << endl; + report5 << "MSY_retain " << YPR_msy_ret * Recr_msy << " " << YPR_msy_ret << endl; + report5 << "MSY_revenue " << YPR_msy_revenue << endl; + report5 << "MSY_cost " << YPR_msy_cost << endl; + report5 << "MSY_profit " << YPR_msy_profit << endl; + report5 << "Biomass_Smry " << Vbio1_MSY * Recr_msy << " " << Vbio1_MSY << endl + << "#" << endl; + } + else if (show_MSY == 2) // do brief output + { + SS2out << SPR_actual / 100. << " " << SPR_Fmult << " " << Mgmt_quant(10) << " " << YPR_spr_dead / Vbio1_spr << " " << Bspr_rec << " " + << Bspr << " " << YPR_spr_dead * Bspr_rec << " " << YPR_spr_ret * Bspr_rec + << " " << Vbio1_spr * Bspr_rec << " # "; + + SS2out << SPR_Btgt << " " << Btgt / SSB_unf << " " << Btgt_Fmult << " " << Mgmt_quant(7) << " " << YPR_Btgt_dead / Vbio1_Btgt << " " << Btgt_Rec << " " + << Btgt << " " << YPR_Btgt_dead * Btgt_Rec << " " << YPR_Btgt_ret * Btgt_Rec + << " " << Vbio1_Btgt * Btgt_Rec << " # "; + + SS2out << MSY_SPR << " " << Bmsy / SSB_unf << " " << MSY_Fmult << " " << Mgmt_quant(14) << " " << MSY / (Vbio1_MSY * Recr_msy) << " " << Recr_msy << " " + << Bmsy << " " << MSY << " " << YPR_msy_dead * Recr_msy << " " << YPR_msy_ret * Recr_msy + << " " << Vbio1_MSY * Recr_msy << " # " << endl; + } + write_bodywt = write_bodywt_save; +// report5 << "Repro_output_by_age_for_morph_1_after_benchmark: " << fec(1) << endl; + } // end benchmarks + +FUNCTION void Get_Forecast() + { + //******************************************************************** + /* SS_Label_FUNCTION 35 Get_Forecast */ + t_base = styr + (endyr - styr) * nseas - 1; + int adv_age; + dvariable OFL_catch; + dvariable Fcast_Crash; + dvariable totcatch; + dvar_matrix catage_w(1, gmorph, 0, nages); + dvar_vector tempcatch(1, Nfleet); + imatrix Do_F_tune(t_base, TimeMax_Fcast_std, 1, Nfleet); // flag for doing F from catch + dvar_matrix Fcast_Catch_Store(t_base, TimeMax_Fcast_std, 1, Nfleet); + dvar_vector Fcast_Catch_Calc_Annual(1, Nfleet); + dvar_vector Fcast_Catch_Allocation_Group(1, Fcast_Catch_Allocation_Groups); + dvar_vector Fcast_Catch_ByArea(1, pop); + + dvar_vector H_temp(1, Nfleet); + dvar_vector C_temp(1, Nfleet); + dvar_vector H_old(1, Nfleet); + dvar_vector C_old(1, Nfleet); + int Tune_F; + int Tune_F_loops; + + int ABC_Loop_start = 1; + int ABC_Loop_end = 3; + + Do_F_tune.initialize(); + + if (fishery_on_off == 1) + { + switch (Do_Forecast) + { + case 1: + { + + Fcast_Fmult = SPR_Fmult; + if (show_MSY == 1) + report5 << "1: Forecast_using_Fspr: " << Fcast_Fmult << endl; + break; + } + case 2: + { + Fcast_Fmult = MSY_Fmult; + if (show_MSY == 1) + report5 << "2: Forecast_using_Fmsy: " << Fcast_Fmult << endl; + break; + } + case 3: + { + Fcast_Fmult = Btgt_Fmult; + if (show_MSY == 1) + report5 << "3: Forecast_using_F(Btarget): " << Fcast_Fmult << endl; + break; + } + case 4: + { + Fcast_Fmult = 0.0; + for (y = Fcast_RelF_yr1; y <= Fcast_RelF_yr2; y++) + for (s = 1; s <= nseas; s++) + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + t = styr + (y - styr) * nseas + s - 1; + Fcast_Fmult += Hrate(f, t); + } + } + Fcast_Fmult /= float(Fcast_RelF_yr2 - Fcast_RelF_yr1 + 1); + Fcurr_Fmult = Fcast_Fmult; + if (show_MSY == 1) + report5 << "4: Forecast_using_ave_F_from:_" << Fcast_RelF_yr1 << "_" << Fcast_RelF_yr2 << " value: " << Fcast_Fmult << endl; + break; + } + case 5: + { + Fcast_Fmult = Fcast_Flevel; + if (show_MSY == 1) + report5 << "5: Forecast_using_input_F " << Fcast_Flevel << endl; + break; + } + } + join1 = 1. / (1. + mfexp(30. * (Fcast_Fmult - max_harvest_rate))); + Fcast_Fmult = join1 * Fcast_Fmult + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate + if (join1 < 0.999) + { + warnstream << "Forecast F capped by max possible F from control file" << max_harvest_rate; + report5 << warnstream.str() << endl; + write_message (WARN, 0); + } + } + else + { + Fcast_Fmult = 0.0; + } + if (show_MSY == 1) // write more headers + { + report5 << "Annual_Forecast_Fmult: " << Fcast_Fmult << endl; + report5 << "Fmultiplier_during_selected_relF_years_was: " << Fcurr_Fmult << endl; + report5 << "Selectivity_averaged_over_yrs:_" << Fcast_Sel_yr1 << "_to_" << Fcast_Sel_yr2 << endl; + +// Fcast_Loop_Control(3) need to embellish this to report all options + if (Fcast_Loop_Control(3) == 1) + { + report5 << "Forecast_base_recruitment_from_spawn_recr_with_multiplier: " << Fcast_Loop_Control(4) << endl; + } + else if (Fcast_Loop_Control(3) == 2) + { + report5 << "Forecast_base_recruitment_is_adjusted_R0_with_multiplier: " << Fcast_Loop_Control(4) << endl; + } + else if (Fcast_Loop_Control(3) == 4) + { + report5 << "Forecast_base_recruitment_mean_from_yrs:_" << Fcast_Rec_yr1 << "_to_" << Fcast_Rec_yr2 << endl; + } + + report5 << "Cap_totalcatch_by_fleet " << endl + << Fcast_MaxFleetCatch << endl; + report5 << "Cap_totalcatch_by_area " << endl + << Fcast_MaxAreaCatch << endl; + report5 << "Assign_fleets_to_allocation_groups_(0_means_not_in_a_group) " << endl + << Allocation_Fleet_Assignments << endl; + report5 << "Calculated_number_of_allocation_groups " << Fcast_Catch_Allocation_Groups << endl; + if (Fcast_Catch_Allocation_Groups > 0) + { + report5 << "Year "; + for (f = 1; f <= Fcast_Catch_Allocation_Groups; f++) + report5 << " group_" << f; + report5 << endl; + for (y = endyr + 1; y <= YrMax; y++) + { + report5 << y << " " << Fcast_Catch_Allocation(y - endyr) << endl; + } + } + if (Fcast_Catch_Basis == 2) + { + report5 << "2:_Caps_&_Alloc_use_dead_catchbio" << endl; + } + else if (Fcast_Catch_Basis == 3) + { + report5 << "3:_Caps_&_Alloc_use_retained_catchbio" << endl; + } + else if (Fcast_Catch_Basis == 5) + { + report5 << "5:_Caps_&_Alloc_use_dead_catchnum" << endl; + } + else if (Fcast_Catch_Basis == 6) + { + report5 << "6:_Caps_&_Alloc_use_retained_catchnum" << endl; + } + if (N_Fcast_Input_Catches > 0) + { + report5 << "-1 #Input_fixed_catches_or_F_with_fleet/time_specific_values (3 for retained catch; 2 for dead catch; 99 for F); NOTE: bio vs. num based on fleet's catchunits" << endl; + } + report5 << "#_Relative_F_among_fleets" << endl; + if (Fcast_RelF_Basis == 1) + { + report5 << "based_on_years:_" << Fcast_RelF_yr1 << " _to_ " << Fcast_RelF_yr2 << endl; + } + else + { + report5 << "read_from_input_file" << endl; + } + if (F_Method == 1) + { + report5 << "Pope's_midseason_exploitation_rate=Fmult*Alloc" << endl; + report5 << "seas seas_dur "; + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + report5 << " fleet:" << f; + } + report5 << endl; + for (s = 1; s <= nseas; s++) + { + report5 << s << " " << seasdur(s); + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + report5 << " " << Fcast_Fmult * Fcast_RelF_Use(s, f); + } + else if (fleet_type(f) == 2) + { + report5 << " " << bycatch_F(f, s); + } + } + report5 << endl; + } + } + else + { + report5 << "Seasonal_apicalF=Fmult*Alloc*seas_dur_(can_be>ann_F_because_of_selex)" << endl; + report5 << "seas seas_dur "; + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + report5 << " " << fleetname(f); + } + report5 << endl; + for (s = 1; s <= nseas; s++) + { + report5 << s << " " << seasdur(s); + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + report5 << " " << Fcast_Fmult * Fcast_RelF_Use(s, f) * seasdur(s); + } + else if (fleet_type(f) == 2) + { + report5 << " " << bycatch_F(f, s) * seasdur(s); + } + } + report5 << endl; + } + } + + if (Fcast_Loop_Control(5) == 1) + {HCR_anchor = SSB_virgin;} + else if (Fcast_Loop_Control(5) == 2) + {HCR_anchor = SSB_unf;} + else if (Fcast_Loop_Control(5) == 3) + {HCR_anchor = Bmsy;} // so H4010_top_rd should be 1.0; + + if (H4010_top_rd < 0.0) // legacy approach. This has already been converted to new approach in readdata + { + H4010_top = Bmsy / HCR_anchor; // convert to fraction of anchor + if (H4010_bot > 0.25) + { + warnstream << "control rule cutoff is large (" << H4010_bot << "); so may not be < calculated Bmsy/SSB_unf (" << H4010_top << ")"; + write_message (WARN, 0); + } + } + else + { + H4010_top = H4010_top_rd; + } + if (Fcast_Loop_Control(5) == 3 && H4010_top_rd != 1.0) + { + warnstream << "HCR_anchor is BMSY; so H4010_top normally is 1.0; are you sure you want: " << H4010_top; + write_message (WARN, 0); + } + + Mgmt_quant(20) = H4010_top * HCR_anchor; + report5 << "#" << endl; + report5 << "N_forecast_yrs: " << N_Fcast_Yrs << endl; + report5 << "OY_Control_Rule: Inflection: " << H4010_top << " Intercept: " << H4010_bot << " Scale: " << H4010_scale_vec(endyr + 1) << endl + << "Control_rule_anchor_approach: " << Fcast_Loop_Control(5) << " HCR_anchor: " << HCR_anchor << endl + << "intercept(SSB): " << H4010_bot * HCR_anchor << endl + << "Inflection(SSB): " << H4010_top * HCR_anchor << endl + << "#" << endl; + + switch (HarvestPolicy) + { + case 0: // none + { + report5 << "Policy (0): no ramp or buffer; F_ABC=F_limit" << endl; + break; + } + case 1: // west coast + { + report5 << "Policy (1): ramp scales catch as f(B) and buffer (H4010_scale) applied to F" << endl; + break; + } + case 2: // Alaska + // + { + report5 << "Policy (2): ramp scales F as f(B) and buffer (H4010_scale) applied to F" << endl; + break; + } + case 3: // west coast + { + report5 << "Policy (3): ramp scales catch as f(B) and buffer (H4010_scale) applied to catch after applying ramp" << endl; + break; + } + case 4: // Alaska + { + report5 << "Policy (4): ramp scales F as f(B) and buffer (H4010_scale) applied to catch after applying ramp" << endl; + break; + } + } + } + + int jloop; + if (fishery_on_off == 1 || Do_Dyn_Bzero > 0) + { + jloop = Fcast_Loop_Control(1); + } + else + { + jloop = 1; + } + write_bodywt_save = write_bodywt; // save initial value so can be restored in last loop + + for (int Fcast_Loop1 = 1; Fcast_Loop1 <= jloop; Fcast_Loop1++) // for different forecast conditions + { +// report5 << Fcast_Loop1 << " y: " << 0 << " Repro_output_by_age_for_morph_1 top_forecast: " << fec(1) << endl; + + switch (Fcast_Loop1) // select which ABC_loops to use + { + case 1: // do OFL only + { + ABC_Loop_start = 1; + ABC_Loop_end = 1; + if (show_MSY == 1) + report5 << "FORECAST:_With_Constant_F=Fofl;_No_Input_Catches_or_Adjustments;_Equil_Recr;_No_inpl_error" << endl; + break; + } + case 2: // for each year: do 3 calculations: (1) OFL, (2) calc ABC and apply caps and allocations, (3) get F from catch _impl + { + ABC_Loop_start = 1; + ABC_Loop_end = 3; + if (show_MSY == 1) + report5 << "FORECAST:_With_F=Fabc;_With_Input_Catches_and_Catch_Adjustments;_Equil_Recr;_No_inpl_error" << endl; + break; + } + case 3: // just need to get F from stored adjusted catch (after modifying stored catch by implementation error). + { + ABC_Loop_start = 3; + ABC_Loop_end = 3; + if (show_MSY == 1) + report5 << "FORECAST:_With_F_to_match_adjusted_catch;_With_Input_Catches_and_Catch_Adjustments;_Stochastic_Recr;_With_inpl_error" << endl; + break; + } + } + if (show_MSY == 1) + { + if (HarvestPolicy == 0) + report5 << "pop year ABC_Loop season No_buffer bio-all bio-Smry SpawnBio Depletion recruit-0 "; + if (HarvestPolicy <= 2) + report5 << "pop year ABC_Loop season Ramp&Buffer Buffer2 bio-all bio-Smry SpawnBio Depletion recruit-0 "; + if (HarvestPolicy >= 3) + report5 << "pop year ABC_Loop season Ramp bio-all bio-Smry SpawnBio Depletion recruit-0 "; + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + report5 << " sel(B):_" << f << " dead(B):_" << f << " retain(B):_" << f << " sel(N):_" << f << " dead(N):_" << f << " retain(N):_" << f << " F:_" << f << " R/C"; + } + report5 << " Catch_Cap Total_Catch ann_F" << endl; + } + + // note that spawnbio and Recruits need to retain their value from calculation in endyr, + // so can be used to distribute recruitment in year endyr+1 if recruitment distribution occurs before spawning season + // would be better to back up to last mainrecrdev and start with begin of forecast + SSB_current = SSB_yr(endyr); + Recruits = exp_rec(endyr, 4); + // need to distribute these recruits forward into endyr+1 + + // refresh quantities that might have changed in benchmark. + // some of these might be change within forecast also + // recr_dist(endyr)=recr_dist_endyr; + // natM=natM_endyr; + + y = endyr; + { + ALK_subseas_update = 1; // to indicate that all ALKs need calculation + // if(MG_active(2) + get_growth2(y); + t = styr + (y - styr) * nseas - 1; + + for (s = 1; s <= nseas; s++) + { + t++; + for (subseas = 1; subseas <= N_subseas; subseas++) // do all subseasons in first year + { + get_growth3(y, t, s, subseas); // in case needed for Lorenzen M + Make_AgeLength_Key(s, subseas); // which also updates Wt_Age_beg, etc. + } +// if (s == spawn_seas) // + { + if (WTage_rd == 1) + { + Wt_Age_beg(s) = Wt_Age_t(t, 0); // used for smrybio + Wt_Age_mid(s) = Wt_Age_t(t, -1); + if (s == spawn_seas) + fec = Wt_Age_t(t, -2); + } + else + { + get_mat_fec(); // does spawnseas and stores in wt_Age_t(t, -2) + } + } + } + } +// report5 << Fcast_Loop1 << " y: " << y << " updated_Repro_output_by_age_for_morph_1 endyr: " << fec(1) << endl; + for (y = endyr + 1; y <= YrMax; y++) + { + t_base = styr + (y - styr) * nseas - 1; + for (f = 1; f <= N_SRparm2; f++) + { + if (SRparm_timevary(f) == 0) + { + // no change to SRparm_work + } + else + { + SRparm_work(f) = parm_timevary(SRparm_timevary(f), y); + } + SRparm_byyr(y, f) = SRparm_work(f); + } + env_data(y, -1) = log(SSB_current / SSB_yr(styr - 1)); // store most recent value for density-dependent effects, NOTE - off by a year if recalc'ed at beginning of season 1 + env_data(y, -2) = recdev(y); // store for density-dependent effects + + if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || save_for_report > 0 || WTage_rd > 0) + { + s = 1; + t = t_base + s; + subseas = 1; // begin season note that ALK_idx re-calculated inside get_growth3 + ALK_idx = (s - 1) * N_subseas + subseas; // redundant with calc inside get_growth3 ???? + get_growth3(y, t, s, subseas); // not needed because size-at-age already has been propagated to seas 1 subseas 1 + Make_AgeLength_Key(s, subseas); // this will give wt_age_beg before any time-varying parameter changes for this year + } + + smrybio = 0.0; + smrynum = 0.0; + s = 1; + t = t_base + 1; + for (g = 1; g <= gmorph; g++) + { + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + { + smrybio += natage(t, p, g)(Smry_Age, nages) * Wt_Age_beg(s, g)(Smry_Age, nages); + smrynum += sum(natage(t, p, g)(Smry_Age, nages)); //sums to accumulate across platoons and settlements + } + } + } + env_data(y, -3) = log(smrybio / Smry_Table(styr - 1, 2)); + env_data(y, -4) = log(smrynum / Smry_Table(styr - 1, 3)); + Smry_Table(y).initialize(); + Smry_Table(y, 2) = smrybio; // in forecast + Smry_Table(y, 3) = smrynum; //sums to accumulate across platoons and settlements + + if (Fcast_Loop1 == 3 && Do_Impl_Error > 0) // apply implementation error, which is a random variable, so adds variance to forecast + // in future, could do this a fleet-specific implementation error + { + for (s = 1; s <= nseas; s++) + { + t = t_base + s; + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + Fcast_Catch_Store(t, f) *= mfexp(Fcast_impl_error(y)); // should this be bias adjusted? + } + } + } + + // do biology for this year + // yz=endyr+1; // biology year for parameters + yz = y; + if (do_densitydependent == 1) + make_densitydependent_parm(y); // call to adjust for density dependence + + if (timevary_MG(y, 0) > 0 || save_for_report > 0) + get_MGsetup(y); + if (timevary_MG(y, 2) > 0) + { + ALK_subseas_update = 1; + get_growth2(y); + } + // "MG_type: 1=M, 2=growth, 3=wtlen, 4=recr_dist&femfrac, 5=migration, 6=ageerror, 7=catchmult, 8=hermaphroditism" << endl + if (Fcast_MGparm_ave(1, 2) == 1) + { + // array has been filled with averages already + } + else if (timevary_MG(y, 1) > 0 || N_pred > 0) + { + get_natmort(); + } + else + { + t_base = styr + (y - styr) * nseas - 1; + for (s = 1; s <= nseas; s++) + { + natM(t_base + s) = natM(t_base - nseas + s); + } + } + if (timevary_MG(y, 3) > 0) + { + get_wtlen(); + if (Hermaphro_Option != 0) + get_Hermaphro(); + } + if (Fcast_Loop_Control(3) == 3 || Fcast_MGparm_ave(4, 1) == 1) + { + // already filled with averages + } + else if (timevary_MG(y, 4) > 0 || timevary_MG(endyr + 1, 4) > 0) + { + get_recr_distribution(); + } + if (Fcast_MGparm_ave(5, 2) == 1) + { + // already filled with averages + } + else if (timevary_MG(y, 5) > 0) + get_migration(); + if (timevary_MG(y, 7) > 0) + get_catch_mult(y, catch_mult_pointer); + + if (save_for_report > 0 && Fcast_Loop1 == Fcast_Loop_Control(1)) + { + if (timevary_MG(y, 1) > 0 || timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0) + { + get_saveGparm(); + } + } + // SS_Label_Info_24.1.2 #Call selectivity, which does its own internal check for time-varying changes + if (Fcast_timevary_Selex == 0) + get_selectivity(); + + // ABC_loop: 1=get OFL; 2=get_ABC, use input catches; 3=recalc with caps and allocations + for (int ABC_Loop = ABC_Loop_start; ABC_Loop <= ABC_Loop_end; ABC_Loop++) + { + totcatch = 0.; + if (ABC_Loop == 1) + Mgmt_quant(Fcast_catch_start + N_Fcast_Yrs + y - endyr) = 0.0; // for OFL + Mgmt_quant(Fcast_catch_start + y - endyr) = 0.0; // for ABC + if (max(Do_Retain) > 0) + Mgmt_quant(Fcast_catch_start + 2 * N_Fcast_Yrs + y - endyr) = 0.0; // for retained ABC + if (STD_Yr_Reverse_F(y) > 0) + F_std(STD_Yr_Reverse_F(y)) = 0.0; + // consider move get_growth2 here so it can be responsive to mortality within the plus group as F changes between ABCloops + for (s = 1; s <= nseas; s++) + { + t = t_base + s; + if (ABC_Loop == ABC_Loop_start) // do seasonal ALK and fishery selex + { + if (timevary_MG(y, 2) > 0 || save_for_report > 0) + { + subseas = 1; // for begin of season ALK_idx calculated within Make_AgeLength_Key + get_growth3(y, t, s, subseas); + Make_AgeLength_Key(s, subseas); // begin season + + subseas = mid_subseas; + get_growth3(y, t, s, subseas); + Make_AgeLength_Key(s, subseas); // for middle of season (begin of 3rd quarter) + + // SPAWN-RECR: call Make_Fecundity in forecast + if (s == spawn_seas) + { + subseas = spawn_subseas; + if (spawn_subseas != 1 && spawn_subseas != mid_subseas) + { + get_growth3(y, t, s, subseas); + Make_AgeLength_Key(s, subseas); // spawn subseas + } + } + } + + if (WTage_rd == 1) + { + Wt_Age_beg(s) = Wt_Age_t(t, 0); + Wt_Age_mid(s) = Wt_Age_t(t, -1); + if (s == spawn_seas) + fec = Wt_Age_t(t, -2); + } + else if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || bigsaver == 1) + { + // Make_Fecundity(); + get_mat_fec(); // does just spawn season and subseason using ALK calculated just above + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + subseas = 1; + ALK_idx = (s - 1) * N_subseas + subseas; + Wt_Age_beg(s, g) = (ALK(ALK_idx, g) * wt_len(s, GP(g))); // wt-at-age at beginning of period + + subseas = mid_subseas; + ALK_idx = (s - 1) * N_subseas + subseas; + Wt_Age_mid(s, g) = ALK(ALK_idx, g) * wt_len(s, GP(g)); // use for fisheries with no size selectivity + } + } +// report5 << Fcast_Loop1 << " y: " << y << " updated_Repro_output_by_age_for_morph_1 annual: " << fec(1) << endl; + Wt_Age_t(t, 0) = Wt_Age_beg(s); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Make_FishSelex(); // calcs fishery selex by current season, all fleets, current gmorph + } + if(N_pred>0) + { +// rebase natM to M1 + for(p = 1; p <= pop; p++) + { + natM(t, p) = natM(t, 0); + } + for (f1 = 1; f1 <= N_pred; f1++) + { + f = predator(f1); + pred_M2(f1, t) = mgp_adj(predparm_pointer(f1)); // base with no seasonal effect + if (nseas > 1) + pred_M2(f1, t) *= mgp_adj(predparm_pointer(f1) + s); + p = fleet_area(f); // area this predator occurs in + + // a new array for indexing g and gpi could simplify below + // for (gp = 1; gp <= N_GP * gender * N_settle_timings; gp++) + + for (gp = 1; gp <= N_GP * gender; gp++) + { + g = g_Start(gp); // base platoon + for (settle = 1; settle <= N_settle_timings; settle++) + { + g += N_platoon; + int gpi = GP3(g); // GP*gender*settlement + natM(t, p, gpi) += pred_M2(f1, t) * sel_num(s, f, g); + } + } + } + } + + for(p = 1; p <= pop; p++) + { + int s1 = (p - 1) * nseas + s; + surv1(s1) = mfexp(-natM(t, p) * seasdur_half(s)); + surv2(s1) = square(surv1(s1)); + } + + } // end of seasonal biology + + if (s == nseas) + { + adv_age = 1; + } + else + { + adv_age = 0; + } // advance age or not when doing survivorship + + // SPAWN-RECR: calc area-specific spawning biomass in forecast + if (s == spawn_seas && spawn_time_seas < 0.0001) // get spawnbio in a forecast year + { + SSB_pop_gp(y).initialize(); + SSB_B_yr(y).initialize(); + SSB_N_yr(y).initialize(); + Smry_Table(y, 15) = 0.0; + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 1 && use_morph(g) > 0) // female + { + // SSB_pop_gp(y,p,GP4(g)) += fec(g)*elem_prod(natage(t,p,g),mfexp(-Z_rate(t,p,g)*spawn_time_seas)); // accumulates SSB by area and by growthpattern + // SSB_B_yr(y) += make_mature_bio(GP4(g))*elem_prod(natage(t,p,g),mfexp(-Z_rate(t,p,g)*spawn_time_seas)); + // SSB_N_yr(y) += make_mature_numbers(GP4(g))*elem_prod(natage(t,p,g),mfexp(-Z_rate(t,p,g)*spawn_time_seas)); + natage(t, p, g, 0) = 0.0; // these fish should not exist at beginning of year. They are created after spawning. Are here in array only due to Fcast_Loop1 + SSB_pop_gp(y, p, GP4(g)) += fracfemale_mult * fec(g) * natage(t, p, g); // accumulates SSB by area and by growthpattern + SSB_B_yr(y) += fracfemale_mult * make_mature_bio(GP4(g)) * natage(t, p, g); + SSB_N_yr(y) += fracfemale_mult * make_mature_numbers(GP4(g)) * natage(t, p, g); + Smry_Table(y, 15) += fracfemale_mult * natage(t, p, g) * elem_prod(fec(g), r_ages); // for mean age of female spawners = GenTime + } + } + SSB_current = sum(SSB_pop_gp(y)); + SSB_yr(y) = SSB_current; + + if (Hermaphro_Option != 0) // get male biomass + { + MaleSSB(y).initialize(); + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 2 && use_morph(g) > 0) // male; all assumed to be mature + { + natage(t, p, g, 0) = 0.0; // these fish do not yet exist + MaleSSB(y, p, GP4(g)) += Wt_Age_t(t, 0, g) * natage(t, p, g); // accumulates SSB by area and by growthpattern + } + } + if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB + { + SSB_current += Hermaphro_maleSSB * sum(MaleSSB(y)); + SSB_yr(y) = SSB_current; + } + } + // SPAWN-RECR: get recruitment in at beginning of a season in forecast; + if (timevary_SRparm(y) == 0) // SRparm use virgin values (but regime still could be) + { + R0_use = Recr_virgin; + SSB_use = SSB_virgin; +// warning << y << " virgin_SRR; SSB_use: "< 0) + { + settle = settle_g(g); // get settlement event + for (p = 1; p <= pop; p++) + { + // if(y==endyr+1) natage(t+Settle_seas_offset(settle),p,g,Settle_age(settle))=0.0; // to negate the additive code + natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) = Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * + mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); + if (Fcast_Loop1 == jloop && ABC_Loop == ABC_Loop_end) + { +// if (Settle_seas(settle) == s) // delete because logic is flawed + Recr(p, t + Settle_seas_offset(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)); + } + // the adjustment for mortality increases recruit value for elapsed time since begin of season because M will then be applied from beginning of season + } + } + } // end of spawner-recruitment calculations + // SPAWN-RECR: total spawn bio used in F policy. Make this area-specific too? + if (ABC_Loop == 1) // doing OFL this loop + { + ABC_buffer(y) = 1.0; + } + else if (ABC_Loop == 2 && s == 1) // Calc the buffer in season 1, will use last year's spawnbio if multiseas and spawnseas !=1 + { + + join1 = 1. / (1. + mfexp(100. * (SSB_current - H4010_bot * HCR_anchor))); + join2 = 1. / (1. + mfexp(100. * (SSB_current - H4010_top * HCR_anchor))); + + switch (HarvestPolicy) + { + case 0: + { + ABC_buffer(y) = 1.0; + break; + } + case 1: // west coast + // ramp scales catch as f(B) and buffer (H4010_scale) applied to F + { + ABC_buffer(y) = H4010_scale_vec(y) * + ((0.0001 * SSB_current / (H4010_bot * HCR_anchor)) * (join1) // low + + (0.0001 + (1.0 - 0.0001) * (H4010_top * HCR_anchor / SSB_current) * (SSB_current - H4010_bot * HCR_anchor) / (H4010_top * HCR_anchor - H4010_bot * HCR_anchor)) * (1.0 - join1) // curve + ) * + (join2) // scale combo + + + (H4010_scale_vec(y)) * (1.0 - join2); // scale right side + break; + } + case 2: // Alaska + // ramp scales F as f(B) and buffer (H4010_scale) applied to F + { + ABC_buffer(y) = H4010_scale_vec(y) * + ((0.0001 * SSB_current / (H4010_bot * HCR_anchor)) * (join1) // low + + (0.0001 + (1.0 - 0.0001) * (SSB_current - H4010_bot * HCR_anchor) / (H4010_top * HCR_anchor - H4010_bot * HCR_anchor)) * (1.0 - join1) // curve + ) * + (join2) // scale combo + + + (H4010_scale_vec(y)) * (1.0 - join2); // scale right side + break; + } + case 3: // west coast + // ramp scales catch as f(B) and buffer (H4010_scale) applied to catch + { + ABC_buffer(y) = 1.0 * + ((0.0001 * SSB_current / (H4010_bot * HCR_anchor)) * (join1) // low + + (0.0001 + (1.0 - 0.0001) * (H4010_top * HCR_anchor / SSB_current) * (SSB_current - H4010_bot * HCR_anchor) / (H4010_top * HCR_anchor - H4010_bot * HCR_anchor)) * (1.0 - join1) // curve + ) * + (join2) // scale combo + + + (1.0) * (1.0 - join2); // scale right side + break; + } + case 4: // Alaska + // ramp scales F as f(B) and buffer (H4010_scale) applied to catch + { + ABC_buffer(y) = 1.0 * + ((0.0001 * SSB_current / (H4010_bot * HCR_anchor)) * (join1) // low + + (0.0001 + (1.0 - 0.0001) * (SSB_current - H4010_bot * HCR_anchor) / (H4010_top * HCR_anchor - H4010_bot * HCR_anchor)) * (1.0 - join1) // curve + ) * + (join2) // scale combo + + + (1.0) * (1.0 - join2); // scale right side + break; + } + } + } // end calc of ABC buffer + else + { // ABC buffer remains at previously calculated value + } + + totbio.initialize(); + for (p = 1; p <= pop; p++) // loop areas + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + gg = sx(g); + + if (save_for_report > 0) + { + totbio += natage(t, p, g) * Wt_Age_beg(s, g); + Save_PopLen(t, p, g) = 0.0; + Save_PopLen(t, p + pop, g) = 0.0; // later put midseason here + Save_PopWt(t, p, g) = 0.0; + Save_PopWt(t, p + pop, g) = 0.0; // later put midseason here + Save_PopAge(t, p, g) = value(natage(t, p, g)); + for (a = 0; a <= nages; a++) + { + Save_PopLen(t, p, g) += value(natage(t, p, g, a)) * value(ALK(ALK_idx, g, a)); + Save_PopWt(t, p, g) += value(natage(t, p, g, a)) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); + Save_PopBio(t, p, g, a) = value(natage(t, p, g, a)) * value(Wt_Age_beg(s, g, a)); + } // close age loop + } + } + Tune_F_loops = 1; + + int s1 = (p - 1) * nseas + s; // stacks season inside area (p) for use with surv1 + + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); // calc the Hrates given the HarvestPolicy, and find which catches are fixed or adjustable + switch (ABC_Loop) + { + case 1: // apply Fmsy and get OFL + { + if (bycatch_setup(f, 3) <= 1) + { + Hrate(f, t) = Fcast_Fmult * Fcast_RelF_Use(s, f); + } + else + { + Hrate(f, t) = bycatch_F(f, s); + } + break; // no action, keep Hrate + } + case 2: // apply ABC control rule and store catches + { + if (bycatch_setup(f, 3) <= 1) + { + Hrate(f, t) = ABC_buffer(y) * Fcast_Fmult * Fcast_RelF_Use(s, f); + } + else + { + Hrate(f, t) = bycatch_F(f, s); + } + // if HarvestPolicy==3 or 4, then H4010_scale is not in ABC_buffer and will need to be applied to catch in first stage of the tuning process below + if (N_Fcast_Input_Catches > 0) + if (Fcast_InputCatch(t, f, 1) > -1.0) // have an input + { + if (Fcast_InputCatch(t, f, 2) <= 3) // input is catch + { + if (Fcast_InputCatch(t, f, 1) == 0.0) + { + Hrate(f, t) = 0.0; + Do_F_tune(t, f) = 0; + } + else + { + Tune_F_loops = 8; + if (Fcast_RelF_Use(s, f) > 0.0) + Do_F_tune(t, f) = 1; + } + } + else + { + Hrate(f, t) = Fcast_InputCatch(t, f, 1); + } // input is as Hrate (F), but do not need tuning + } + break; + } + case 3: // always get F to match catch when in ABC_Loop==3 + { + Tune_F_loops = 8; + if (Fcast_RelF_Use(s, f) > 0.0) + Do_F_tune(t, f) = 1; + break; + } + } + } + + if (F_Method == 1) // calculate catch, survival and F using Fmethod==1 (Pope's) + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + Nmid(g) = elem_prod(natage(t, p, g), surv1(s1, GP3(g))); + } + + for (Tune_F = 1; Tune_F <= Tune_F_loops; Tune_F++) + { + for (int ff = 1; ff <= N_catchfleets(p); ff++) // get calculated catch + { + f = fish_fleet_area(p, ff); + temp = 0.0; + if (Do_F_tune(t, f) == 1) + { + if (ABC_Loop == 2 && N_Fcast_Input_Catches > 0) // tune to input catch if in ABC_loop 2 + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (catchunits(f) == 1) // catch in weight + { + if (Fcast_InputCatch(t, f, 2) == 2) + { + temp += Nmid(g) * sel_dead_bio(s, f, g); + } // dead catch bio + else if (Fcast_InputCatch(t, f, 2) == 3) + { + temp += Nmid(g) * sel_ret_bio(s, f, g); + } // retained catch bio + } + else // catch in numbers + { + if (Fcast_InputCatch(t, f, 2) == 2) + { + temp += Nmid(g) * sel_dead_num(s, f, g); + } // deadfish catch numbers + else if (Fcast_InputCatch(t, f, 2) == 3) + { + temp += Nmid(g) * sel_ret_num(s, f, g); + } // retained catch numbers + } + } //close gmorph loop + temp1 = Fcast_InputCatch(t, f, 1) / (temp + NilNumbers); + join1 = 1. / (1. + mfexp(30. * (temp1 - max_harvest_rate))); + Hrate(f, t) = join1 * temp1 + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate + } + else if (fishery_on_off == 1) // tune to adjusted catch calculated from ABC_Loop=2 + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (Fcast_Catch_Basis == 2) + { + temp += Nmid(g) * sel_dead_bio(s, f, g); + } // dead catch bio + else if (Fcast_Catch_Basis == 3) + { + temp += Nmid(g) * sel_ret_bio(s, f, g); + } // retained catch bio + else if (Fcast_Catch_Basis == 5) + { + temp += Nmid(g) * sel_dead_num(s, f, g); + } // deadfish catch numbers + else if (Fcast_Catch_Basis == 6) + { + temp += Nmid(g) * sel_ret_num(s, f, g); + } // retained catch numbers + } //close gmorph loop + temp1 = Fcast_Catch_Store(t, f) / (temp + NilNumbers); + join1 = 1. / (1. + mfexp(30. * (temp1 - max_harvest_rate))); + Hrate(f, t) = join1 * temp1 + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate + } + } // end have fixed catch to be matched + } // end fishery loop + } // end finding the Hrates + + // now get catch details and survivorship + Nsurv = Nmid; // initialize the number of survivors + for (int ff = 1; ff <= N_catchfleets(p); ff++) // get calculated catch + { + f = fish_fleet_area(p, ff); + catch_fleet(t, f).initialize(); + // if(ABC_Loop==2 && bycatch_setup(f,3)<=1 && HarvestPolicy>=3) // fleet has scalable catch and policy applies to catch, not F + // {Hrate(f,t)*=H4010_scale;} + // here for Pope's, ok to do scale adjustment to Hrate; will have to be on catch for continuous F + + temp = Hrate(f, t); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + catch_fleet(t, f, 1) += Nmid(g) * sel_bio(s, f, g); // encountered catch bio + catch_fleet(t, f, 2) += Nmid(g) * sel_dead_bio(s, f, g); // dead catch bio + catch_fleet(t, f, 3) += Nmid(g) * sel_ret_bio(s, f, g); // retained catch bio + catch_fleet(t, f, 4) += Nmid(g) * sel_num(s, f, g); // encountered catch numbers + catch_fleet(t, f, 5) += Nmid(g) * sel_dead_num(s, f, g); // deadfish catch numbers + catch_fleet(t, f, 6) += Nmid(g) * sel_ret_num(s, f, g); // retained catch numbers + catage_w(g) = temp * elem_prod(Nmid(g), sel_dead_num(s, f, g)); + Nsurv(g) -= catage_w(g); + if (Do_Retain(f) > 0) + { + disc_age(t, disc_fleet_list(f), g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_num(s, f, g)), Zrate2(p, g)); // selected numbers + disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_ret_num(s, f, g)), Zrate2(p, g)); // selected numbers + } + } //close gmorph loop + catch_fleet(t, f) *= temp; + } // close fishery + + // calculate survival within area within season with Fmethod ==1 + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + settle = settle_g(g); // get settlement event + j = Settle_age(settle); + if (s < nseas && Settle_seas(settle) <= s) + { + natage(t + 1, p, g, j) = Nsurv(g, j) * surv1(s1, GP3(g), j); + } // advance age zero within year + for (a = j + 1; a < nages; a++) + { + natage(t + 1, p, g, a) = Nsurv(g, a - adv_age) * surv1(s1, GP3(g), a - adv_age); + Z_rate(t, p, g, a) = -log(natage(t + 1, p, g, a) / natage(t, p, g, a - adv_age)) / seasdur(s); + } + natage(t + 1, p, g, nages) = Nsurv(g, nages) * surv1(s1, GP3(g), nages); // plus group + if (s == nseas) + natage(t + 1, p, g, nages) += Nsurv(g, nages - 1) * surv1(s1, GP3(g), nages - 1); + if (save_for_report > 0) + { + j = p + pop; + for (a = 0; a <= nages; a++) + { + Save_PopLen(t, j, g) += value(0.5 * (Nmid(g, a) + Nsurv(g, a))) * value(ALK(ALK_idx, g, a)); + Save_PopWt(t, j, g) += value(0.5 * (Nmid(g, a) + Nsurv(g, a))) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); + Save_PopAge(t, j, g, a) = value(0.5 * (Nmid(g, a) + Nsurv(g, a))); + Save_PopBio(t, j, g, a) = value(0.5 * (Nmid(g, a) + Nsurv(g, a))) * value(Wt_Age_beg(s, g, a)); + } // close age loop + } + } + } // end Fmethod=1 pope + + else //calculate catch, survival and F using Fmethod== 2 or 3; continuous F + { + for (Tune_F = 1; Tune_F <= Tune_F_loops; Tune_F++) // tune F to match catch + { + for (g = 1; g <= gmorph; g++) //loop over fishing fleets to get Z=M+sum(F) + if (use_morph(g) > 0) + { + Z_rate(t, p, g) = natM(t, p, GP3(g)); + for (int ff = 1; ff <= N_catchfleets(p); ff++) // get calculated catch + { + f = fish_fleet_area(p, ff); + if (Fcast_RelF_Use(s, f) > 0.0) + { + Z_rate(t, p, g) += sel_dead_num(s, f, g) * Hrate(f, t); + } + } + Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); + } // end morph + + for (int ff = 1; ff <= N_catchfleets(p); ff++) // get calculated catch + { + f = fish_fleet_area(p, ff); + C_temp(f) = 0.0; // will hold fleet's calculated catch + if (Do_F_tune(t, f) == 1) // have an input catch or in ABC_loop 3, so get expected catch from F and Z + { + + if (ABC_Loop == 2) // tune to input catch in ABCloop 2; Do_F_tune(t,f) is only turned on if there is input catch + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (catchunits(f) == 1) // catch in weight + { + if (Fcast_InputCatch(t, f, 2) == 2) + { + C_temp(f) += elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)) * Zrate2(p, g); + } // dead catch bio + else if (Fcast_InputCatch(t, f, 2) == 3) + { + C_temp(f) += elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); + } // retained catch bio + } + else // catch in numbers + { + if (Fcast_InputCatch(t, f, 2) == 2) + { + C_temp(f) += elem_prod(natage(t, p, g), sel_dead_num(s, f, g)) * Zrate2(p, g); + } // deadfish catch numbers + else if (Fcast_InputCatch(t, f, 2) == 3) + { + C_temp(f) += elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); + } // retained catch numbers + } + } //close gmorph loop + C_temp(f) *= Hrate(f, t); // where temp was the available biomass or numbers calculated above and convert to catch here + H_temp(f) = Hrate(f, t); + temp = Hrate(f, t); + if (Tune_F < 3) + { + temp *= (Fcast_InputCatch(t, f, 1) + 1.0) / (C_temp(f) + 1.0); // apply adjustment using ratio of target to calculated catch + } + else + { + temp = H_old(f) + (H_temp(f) - H_old(f)) / (C_temp(f) - C_old(f) + 1.0e-6) * (Fcast_InputCatch(t, f, 1) - C_old(f)); + } + join1 = 1. / (1. + mfexp(30. * (temp - 0.95 * max_harvest_rate))); + Hrate(f, t) = join1 * temp + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate + C_old(f) = C_temp(f); + H_old(f) = H_temp(f); + } + else if (fishery_on_off == 1) // tune to adjusted catch calculated in ABC_Loop=2 (note different basis for catch) + { + C_temp(f) = 0.0; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + if (Fcast_Catch_Basis == 2) + { + C_temp(f) += elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)) * Zrate2(p, g); + } // dead catch bio + else if (Fcast_Catch_Basis == 3) + { + C_temp(f) += elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); + } // retained catch bio + else if (Fcast_Catch_Basis == 5) + { + C_temp(f) += elem_prod(natage(t, p, g), sel_dead_num(s, f, g)) * Zrate2(p, g); + } // deadfish catch numbers + else if (Fcast_Catch_Basis == 6) + { + C_temp(f) += elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); + } // retained catch numbers + } //close gmorph loop + C_temp(f) *= Hrate(f, t); + H_temp(f) = Hrate(f, t); + temp = Hrate(f, t); + if (Tune_F < 3) + { + temp *= (Fcast_Catch_Store(t, f) + 1.0) / (C_temp(f) + 1.0); // adjust Hrate using catch stored from ABCloop2 + } + else + { + temp = (H_old(f) + (H_temp(f) - H_old(f)) / (C_temp(f) - C_old(f) + 1.0e-6) * (Fcast_Catch_Store(t, f) - C_old(f))); + } + join1 = 1. / (1. + mfexp(30. * (temp - 0.95 * max_harvest_rate))); + Hrate(f, t) = join1 * temp + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate + C_old(f) = C_temp(f); + H_old(f) = H_temp(f); + } + } // end have fixed catch to be matched + } // end fishery loop + } // done tuning F + + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + catch_fleet(t, f).initialize(); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + tempvec_a = Hrate(f, t) * Zrate2(p, g); + catch_fleet(t, f, 1) += tempvec_a * elem_prod(natage(t, p, g), sel_bio(s, f, g)); // encountered catch bio + catch_fleet(t, f, 2) += tempvec_a * elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)); // dead catch bio + catch_fleet(t, f, 3) += tempvec_a * elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)); // retained catch bio + catch_fleet(t, f, 4) += tempvec_a * elem_prod(natage(t, p, g), sel_num(s, f, g)); // encountered catch numbers + catch_fleet(t, f, 5) += tempvec_a * elem_prod(natage(t, p, g), sel_dead_num(s, f, g)); // deadfish catch numbers + catch_fleet(t, f, 6) += tempvec_a * elem_prod(natage(t, p, g), sel_ret_num(s, f, g)); // retained catch numbers + catage(t, f, g) = elem_prod(elem_prod(natage(t, p, g), sel_dead_num(s, f, g)), tempvec_a); + if (Do_Retain(f) > 0) + { + disc_age(t, disc_fleet_list(f), g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_num(s, f, g)), Zrate2(p, g)); // selected numbers + disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_ret_num(s, f, g)), Zrate2(p, g)); // selected numbers + } + } //close gmorph loop + } // close fishery + + // calculate survival within area within season with Fmethod >=2 + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + settle = settle_g(g); // get settlement event + j = Settle_age(settle); + if (s < nseas && Settle_seas(settle) <= s) + { + natage(t + 1, p, g, j) = natage(t, p, g, j) * mfexp(-Z_rate(t, p, g, j) * seasdur(s)); + } // advance new recruits within year + for (a = j + 1; a < nages; a++) + { + natage(t + 1, p, g, a) = natage(t, p, g, a - adv_age) * mfexp(-Z_rate(t, p, g, a - adv_age) * seasdur(s)); + } + + natage(t + 1, p, g, nages) = natage(t, p, g, nages) * mfexp(-Z_rate(t, p, g, nages) * seasdur(s)); // plus group + if (s == nseas) + natage(t + 1, p, g, nages) += natage(t, p, g, nages - 1) * mfexp(-Z_rate(t, p, g, nages - 1) * seasdur(s)); + if (save_for_report > 0) + { + j = p + pop; + for (a = 0; a <= nages; a++) + { + Save_PopLen(t, j, g) += value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(ALK(ALK_idx, g, a)); + Save_PopWt(t, j, g) += value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); + Save_PopAge(t, j, g, a) = value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))); + Save_PopBio(t, j, g, a) = value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(Wt_Age_mid(s, g, a)); + } // close age loop + } + } // end morph loop + } // end continuous F + + // SS_Label_106 call to Get_expected_values + write_bodywt = 0; + if (ABC_Loop == ABC_Loop_end && Fcast_Loop1 == Fcast_Loop_Control(1)) + { + write_bodywt = write_bodywt_save; + } + if (show_MSY == 1) + { + report5 << p << " " << y << " " << ABC_Loop << " " << s << " " << ABC_buffer(y) << " " << H4010_scale_vec(y) << " " << totbio << " " << smrybio << " "; + if (s == spawn_seas) + { + report5 << SSB_current << " "; + report5 << SSB_current / SSB_unf << " " << Recruits; + } + else + { + report5 << 0 << " " << 0 << " " << 0; + } + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_area(f) == p) + { + if (F_Method == 1) + { + report5 << " " << catch_fleet(t, f)(1, 6) << " " << Hrate(f, t); + } + else + { + report5 << " " << catch_fleet(t, f)(1, 6) << " " << Hrate(f, t) * seasdur(s); + } + } + else + { + report5 << " - - - - - - - "; + } + + if (N_Fcast_Input_Catches == 0) + { + report5 << " R "; + } + else + { + if (Fcast_InputCatch(t, f, 1) < 0.0) + { + report5 << " R "; + } + else + { + report5 << " C "; + } + } + } + if (s == nseas && Fcast_MaxAreaCatch(p) > 0.) + { + report5 << " " << Fcast_MaxAreaCatch(p); + } + else + { + report5 << " NA "; + } // a max catch has been set for this area + } + if (p < pop && show_MSY == 1) + report5 << endl; + } // end loop of areas + if (s == 1 && Fcast_Loop1 == Fcast_Loop_Control(1)) + { + Smry_Table(y, 1) = totbio; + } + + if (ABC_Loop == ABC_Loop_end && Fcast_Loop1 == Fcast_Loop_Control(1)) + { + if (y < endyr + 50) + Get_expected_values(y, t); + } + + // SS_Label_Info_24.3.4 #Compute spawning biomass if occurs after start of current season + // SPAWN-RECR: calc spawn biomass in time series if after beginning of the season + if (s == spawn_seas && spawn_time_seas >= 0.0001) // compute spawning biomass + { + SSB_pop_gp(y).initialize(); + SSB_B_yr(y).initialize(); + SSB_N_yr(y).initialize(); + Smry_Table(y, 15) = 0.0; + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 1 && use_morph(g) > 0) // female + { + SSB_pop_gp(y, p, GP4(g)) += fracfemale_mult * fec(g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); // accumulates SSB by area and by growthpattern + SSB_B_yr(y) += fracfemale_mult * make_mature_bio(GP4(g)) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); + SSB_N_yr(y) += fracfemale_mult * make_mature_numbers(GP4(g)) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); + Smry_Table(y, 15) += fracfemale_mult * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)) * elem_prod(fec(g), r_ages); // for mean age of female spawners = GenTime + } + } + SSB_current = sum(SSB_pop_gp(y)); + SSB_yr(y) = SSB_current; + + if (Hermaphro_Option != 0) // get male biomass + { + MaleSSB(y).initialize(); + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 2 && use_morph(g) > 0) // male; all assumed to be mature + { + MaleSSB(y, p, GP4(g)) += Wt_Age_t(t, 0, g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); // accumulates SSB by area and by growthpattern + } + } + if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB + { + SSB_current += Hermaphro_maleSSB * sum(MaleSSB(y)); + SSB_yr(y) = SSB_current; + } + } + // SS_Label_Info_24.3.4.1 #Get recruitment from this spawning biomass after start of the season + // SPAWN-RECR + if (timevary_SRparm(y) == 0) // SRparm use virgin values (but regime still could be) + { + R0_use = Recr_virgin; + SSB_use = SSB_virgin; + } + else if (timevary_SRparm(y) == 1) // update R0_use and SSB_use in this year + // values will carry forward into subsequent years + { + R0_use = mfexp(SRparm_work(1)); + // timevary steepness is in SRparm_work(2) and will be applied inside of Equil_Spawn_Recr_Fxn() and Spawn_Recr() + equ_Recr = R0_use; + Fishon = 0; + eq_yr = y; + bio_yr = y; + SSBpR_Calc(R0_use); // call function to do per recruit calculation with current year's biology and adjusted R0 + SSB_use = SSB_equil; +// warning << y << " update_SRR; SSB_use: "< 0) + { + settle = settle_g(g); + for (p = 1; p <= pop; p++) + { + // if(y==endyr+1) natage(t+Settle_seas_offset(settle),p,g,Settle_age(settle))=0.0; // to negate the additive code + // natage(t+Settle_seas_offset(settle),p,g,Settle_age(settle)) += Recruits*recr_dist(y,GP(g),settle,p)*platoon_distr(GP2(g))* + natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) = Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * + mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); + if (Fcast_Loop1 == jloop && ABC_Loop == ABC_Loop_end) + { +// if (Settle_seas(settle) == s) // delete because logic is flawed + Recr(p, t + Settle_seas_offset(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)); + } + } + } + } + if (Hermaphro_Option != 0) //hermaphroditism + { + if (Hermaphro_seas == -1 || Hermaphro_seas == s) + { + k = gmorph / 2; + for (p = 1; p <= pop; p++) + for (g = 1; g <= k; g++) // loop females + if (use_morph(g) > 0) + { + if (Hermaphro_Option == 1) + { + for (a = 1; a < nages; a++) + { + natage(t + 1, p, g + k, a) += natage(t + 1, p, g, a) * Hermaphro_val(GP4(g), a - 1); // increment males with females + natage(t + 1, p, g, a) *= (1. - Hermaphro_val(GP4(g), a - 1)); // decrement females + } + } + else if (Hermaphro_Option == -1) + { + for (a = 1; a < nages; a++) + { + natage(t + 1, p, g, a) += natage(t + 1, p, g + k, a) * Hermaphro_val(GP4(g + k), a - 1); // increment females with males + natage(t + 1, p, g + k, a) *= (1. - Hermaphro_val(GP4(g + k), a - 1)); // decrement males + } + } + } + } + } + if (do_migration > 0) // movement between areas in forecast + { + natage_temp = natage(t + 1); + natage(t + 1).initialize(); + for (p = 1; p <= pop; p++) // source population + for (p2 = 1; p2 <= pop; p2++) // destination population + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + k = move_pattern(s, GP4(g), p, p2); + if (k > 0) + natage(t + 1, p2, g) += elem_prod(natage_temp(p, g), migrrate(bio_yr, k)); + } + } + if (bigsaver == 1) + { + + if ((Fcast_Loop1 == 2 || Fcast_Loop_Control(1) == 1) && ABC_Loop == 1) // get variance in OFL + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1) + { + Mgmt_quant(Fcast_catch_start + N_Fcast_Yrs + y - endyr) += catch_fleet(t, f, 2); + } + else if (bycatch_setup(f, 2) == 1) // bycatch + { + Mgmt_quant(Fcast_catch_start + N_Fcast_Yrs + y - endyr) += catch_fleet(t, f, 2); + } + } + } + + if (Fcast_Loop1 == Fcast_Loop_Control(1) && ABC_Loop == ABC_Loop_end) // in final loop, so do variance quantities + { + double countN; + dvariable tempbase; + dvariable tempM; + dvariable tempZ; + if (F_reporting != 5 && s == nseas) + { + tempbase = 0.0; + tempM = 0.0; + tempZ = 0.0; + // accumulate numbers across ages, morphs, sexes, areas + for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator + { + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + { + tempbase += natage(t - nseas + 1, p, g, a); // sum of numbers at beginning of year + tempZ += natage(t + 1, p, g, a + 1); // numbers at beginning of next year + temp3 = natage(t - nseas + 1, p, g, a); // numbers at begin of year + for (j = 1; j <= nseas; j++) + { + temp3 *= mfexp(-seasdur(j) * natM(t - nseas + j, p, GP3(g), a)); + } + tempM += temp3; // survivors if just M operating + } + } + } + annual_F(y, 2) += log(tempM) - log(tempZ); // F=Z-M + annual_F(y, 3) += log(tempbase) - log(tempM); // M + } + + if (F_reporting == 5 && s == nseas) + { // F_reporting==5 (ICES-style arithmetic mean across ages) + // like option 4 above, but F is calculated 1 age at a time to get a + // unweighted average across ages within each year + countN = 0.0; // used for count of Fs included in average + for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator + { + tempbase = 0.0; + tempM = 0.0; + tempZ = 0.0; + // accumulate numbers across all morphs, sexes, and areas + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + { + tempbase += natage(t - nseas + 1, p, g, a); // sum of numbers at beginning of year + tempZ += natage(t + 1, p, g, a + 1); // numbers at beginning of next year + temp3 = natage(t - nseas + 1, p, g, a); // numbers at begin of year + for (j = 1; j <= nseas; j++) + { + temp3 *= mfexp(-seasdur(j) * natM(t - nseas + j, p, GP3(g), a)); + } + tempM += temp3; // survivors if just M operating + } + } + // calc F and M for this age and add to the total + countN += 1; // increment count of values included in average + annual_F(y, 2) += log(tempM) - log(tempZ); // F=Z-M + annual_F(y, 3) += log(tempbase) - log(tempM); // M + } + annual_F(y, 3) /= countN; // M + annual_F(y, 2) /= countN; // F + } // end F_reporting==5 + + if (STD_Yr_Reverse_F(y) > 0) + { + if (F_reporting <= 1) + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1) + { + F_std(STD_Yr_Reverse_F(y)) += catch_fleet(t, f, 2); + } // add up dead catch biomass + else if (bycatch_setup(f, 2) == 1) // bycatch + { + F_std(STD_Yr_Reverse_F(y)) += catch_fleet(t, f, 2); + } // add up dead catch biomass + } + if (s == nseas) + F_std(STD_Yr_Reverse_F(y)) /= Smry_Table(y, 2); + } + else if (F_reporting == 2) + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1) + { + F_std(STD_Yr_Reverse_F(y)) += catch_fleet(t, f, 5); + } // add up dead catch numbers + else if (bycatch_setup(f, 2) == 1) // bycatch + { + F_std(STD_Yr_Reverse_F(y)) += catch_fleet(t, f, 5); + } // add up dead catch numbers + } + if (s == nseas) + F_std(STD_Yr_Reverse_F(y)) /= Smry_Table(y, 3); + } + else if (F_reporting == 3) + { + if (F_Method == 1) + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + F_std(STD_Yr_Reverse_F(y)) += Hrate(f, t); + } + } + else + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + F_std(STD_Yr_Reverse_F(y)) += Hrate(f, t) * seasdur(s); + } + } + } + else + { + F_std(STD_Yr_Reverse_F(y)) = annual_F(y, 2); + } + + } + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1) + { + Mgmt_quant(Fcast_catch_start + y - endyr) += catch_fleet(t, f, 2); + if (max(Do_Retain) > 0) + Mgmt_quant(Fcast_catch_start + 2 * N_Fcast_Yrs + y - endyr) += catch_fleet(t, f, 3); + } + else if (bycatch_setup(f, 2) == 1) // bycatch + { + Mgmt_quant(Fcast_catch_start + y - endyr) += catch_fleet(t, f, 2); + if (max(Do_Retain) > 0) + Mgmt_quant(Fcast_catch_start + 2 * N_Fcast_Yrs + y - endyr) += catch_fleet(t, f, 3); + } + } + if (write_bodywt > 0) + { + for (g = 1; g <= gmorph; g++) + { + gg = sx(g); + + if (ishadow(GP2(g)) == 0) + { + if (s == spawn_seas) + bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << -2 << " " << fec(g) << " #fecundity " << endl; + bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << 0 << " " << Wt_Age_beg(s, g) << " #popwt_beg " << endl; + bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << -1 << " " << Wt_Age_mid(s, g) << " #popwt_mid " << endl; + } + } + } + } + } + + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1) + { + if (ABC_Loop == 2 && HarvestPolicy >= 3) // alternative ABC_buffer approach + { + catch_fleet(t, f) *= H4010_scale_vec(y); + } + // if(Fcast_InputCatch(t,f,2)==2 || Fcast_InputCatch(t,f,2)==3) // have input catch + // {Fcast_Catch_Store(t,f)=Fcast_InputCatch(t,f,1);} // copy input catch to stored catch + // else + { + Fcast_Catch_Store(t, f) = catch_fleet(t, f, Fcast_Catch_Basis); + } // copy calculated catch to stored catch + totcatch += Fcast_Catch_Store(t, f); + } + else // bycatch + { + if (ABC_Loop == 2 && HarvestPolicy >= 3 && bycatch_setup(f, 3) <= 1) + { + catch_fleet(t, f) *= H4010_scale_vec(y); + } + // if(Fcast_InputCatch(t,f,2)==2 || Fcast_InputCatch(t,f,2)==3) // have input catch + // {Fcast_Catch_Store(t,f)=Fcast_InputCatch(t,f,1);} // copy input catch to stored catch + // else + { + Fcast_Catch_Store(t, f) = catch_fleet(t, f, Fcast_Catch_Basis); + } // copy calculated catch to stored catch + if (bycatch_setup(f, 2) == 1) + totcatch += Fcast_Catch_Store(t, f); + } + } + + if (show_MSY == 1) + { + if (s == nseas) + { + report5 << " " << totcatch << " "; + } + else + { + report5 << " NA "; + } + if (s == nseas && STD_Yr_Reverse_F(y) > 0) + { + report5 << F_std(STD_Yr_Reverse_F(y)); + } + else + { + report5 << " NA "; + } + // report5<<" numbers "< 0 && y >= Fcast_Cap_FirstYear) // adjust ABC catch to fleet caps + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (Fcast_MaxFleetCatch(f) > 0.) + { + temp = Fcast_Catch_Calc_Annual(f) / Fcast_MaxFleetCatch(f); + join1 = 1. / (1. + mfexp(1000. * (temp - 1.0))); // steep logistic joiner at adjustment of 1.0 + temp1 = join1 * 1.0 + (1. - join1) * temp; + Fcast_Catch_Calc_Annual(f) /= temp1; + for (s = 1; s <= nseas; s++) + { + Fcast_Catch_Store(t_base + s, f) /= temp1; + } + } + } + } + if (Fcast_Do_Area_Cap > 0 && y >= Fcast_Cap_FirstYear) // scale down if Totcatch exceeds Fcast_MaxAreaCatch (in this area) + { + if (pop == 1) // one area + { + Fcast_Catch_ByArea(1) = sum(Fcast_Catch_Calc_Annual(1, Nfleet)); + } + else + { + Fcast_Catch_ByArea = 0.0; + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + Fcast_Catch_ByArea(fleet_area(f)) += Fcast_Catch_Calc_Annual(f); + } + } + for (p = 1; p <= pop; p++) + if (Fcast_MaxAreaCatch(p) > 0.0) + { + temp = Fcast_Catch_ByArea(p) / Fcast_MaxAreaCatch(p); + join1 = 1. / (1. + mfexp(1000. * (temp - 1.0))); // steep logistic joiner at adjustment of 1.0 + temp1 = join1 * 1.0 + (1. - join1) * temp; + for (int ff = 1; ff <= N_catchfleets(p); ff++) + { + f = fish_fleet_area(p, ff); + Fcast_Catch_Calc_Annual(f) /= temp1; // adjusts total for the year + for (s = 1; s <= nseas; s++) + { + Fcast_Catch_Store(t_base + s, f) /= temp1; + } + } + } + // report5< 0 && y >= Fcast_Cap_FirstYear) // adjust to get a specific fleet allocation + { + Fcast_Catch_Allocation_Group.initialize(); + for (g = 1; g <= Fcast_Catch_Allocation_Groups; g++) + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (Allocation_Fleet_Assignments(f) == g) + { + Fcast_Catch_Allocation_Group(g) += Fcast_Catch_Calc_Annual(f); + } + } + temp = sum(Fcast_Catch_Allocation_Group); // total catch for all fleets that are part of the allocation scheme + temp1 = sum(Fcast_Catch_Allocation(y - endyr)); // total of all allocation fractions for all fleets that are part of the allocation scheme + for (g = 1; g <= Fcast_Catch_Allocation_Groups; g++) + { + temp2 = (Fcast_Catch_Allocation(y - endyr, g) / temp1) / (Fcast_Catch_Allocation_Group(g) / temp); + + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (Allocation_Fleet_Assignments(f) == g) + { + Fcast_Catch_Calc_Annual(f) *= temp2; + for (s = 1; s <= nseas; s++) + { + Fcast_Catch_Store(t_base + s, f) *= temp2; + } + } + } + } + } // end allocation among groups + } + } // end ABC_Loop + + if ((Fcast_Loop1 == Fcast_Loop_Control(1) && (save_for_report > 0)) || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase == 0))) + { + Smry_Table(y, 4) = Mgmt_quant(Fcast_catch_start + y - endyr); + eq_yr = y; + equ_Recr = Recr_unf; + bio_yr = y; + Fishon = 0; + SSBpR_Calc(equ_Recr); // call function to do per recruit calculation + + Smry_Table(y, 11) = SSB_equil; + Smry_Table(y, 13) = GenTime; + if( SR_fxn == 10 ) + { + temp = SSB_equil / equ_Recr; // current year's SSB/R with current biology at age + alpha = mfexp(SRparm_work(3)); + beta = mfexp(SRparm_work(4)); + SRparm_byyr(y, 2) = alpha * temp / (4. + alpha * temp); // implied steepness + SRparm_byyr(y, 1) = log( 1. / beta * (alpha - (1. / temp))); // implied ln_R0 + } + Fishon = 1; + SSBpR_Calc(equ_Recr); // call function to do per recruit calculation + if (STD_Yr_Reverse_Ofish(y) > 0) + {SPR_std(STD_Yr_Reverse_Ofish(y)) = SSB_equil / Smry_Table(y, 11);} + Smry_Table(y, 9) = totbio; + Smry_Table(y, 10) = smrybio; + Smry_Table(y, 12) = SSB_equil; + Smry_Table(y, 14) = YPR_dead; + } + } // end year loop + } // end Fcast_Loop1 for the different stages of the forecast + } +// end forecast function +// SS_Label_file #15. **SS_expval.tpl** +// SS_Label_file # * Get_expected_values() // for a specified season and subseason that has data, updates the ALK for that time and calculates expected values for any type of data from any fleet/survey +// SS_Label_file # + +//******************************************************************** + /* SS_Label_FUNCTION 46 Get_expected_values: check for data */ +FUNCTION void Get_expected_values(const int y, const int t); + { + dvariable temp1; + dvar_vector age_exp(0, nages2); + for (subseas = 1; subseas <= N_subseas; subseas++) + { + // make age-length key if needed + ALK_idx = (s - 1) * N_subseas + subseas; + ALK_time = (y - styr) * nseas * N_subseas + (s - 1) * N_subseas + subseas; + if (ALK_subseas_update(ALK_idx) == 1 || have_data(ALK_time, 0, 0, 0) > 0) // need ALK update for growth reasons or for data reasons + { + get_growth3(y, t, s, subseas); + Make_AgeLength_Key(s, subseas); + } + for (f = 1; f <= Nfleet; f++) + { + if (have_data(ALK_time, f, 0, 0) > 0) + { + p = fleet_area(f); + timing = data_time(ALK_time, f, 2) * seasdur(s); // within season elapsed time same for all datatypes of this fleet x time + // make selected age-length sample for this fleet and with this timing + { + exp_AL.initialize(); + exp_AL_ret.initialize(); + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + gg = sx(g); + if (gg == 2) + { + L1 = nlength1; + L2 = nlength2; + A2 = nages + 1; + } // move over on length dimension to store males + else + { + L1 = 1; + L2 = nlength; + A2 = 0; + } + + /* + if(F_Method==1 && surveytime(f)<0.0) // Pope's approximation + {tempvec_a=elem_prod(Nmid(g),sel_a(y,f,gg));} // CHECK Nmid may not exist correctly unless still within the area loop + else if(surveytime(f)<0.0) // mimic fishery catch, but without Hrate so gets available numbers + {tempvec_a=elem_prod(natage(t,p,g),elem_prod(Zrate2(p,g),sel_a(y,f,gg)));} + else // explicit timing + {tempvec_a=elem_prod(natage(t,p,g),elem_prod(mfexp(-Z_rate(t,p,g)*timing),sel_a(y,f,gg)));} + */ + if (timing >= 0.0) + { + tempvec_a = elem_prod(natage(t, p, g), elem_prod(mfexp(-Z_rate(t, p, g) * timing), sel_a(y, f, gg))); + } // explicit timing + else + { + if (F_Method > 1) // mimic fishery catch, so gets mean available numbers + { + tempvec_a = elem_prod(natage(t, p, g), elem_prod(Zrate2(p, g), sel_a(y, f, gg))); + } + else // Pope's approximation + { + Nmid(g) = elem_prod(natage(t, p, g), surv1(s, GP3(g))); // numbers-at-age(g,a) surviving to middle of time period + tempvec_a = elem_prod(Nmid(g), sel_a(y, f, gg)); + } + } + tempvec_a = elem_prod(tempvec_a, keep_age(g, ALK_idx)); + + if (Do_Retain(f) == 0) + { + if (dolen(f) == 1) + { + for (a = 0; a <= nages; a++) + { + temp = tempvec_a(a); + for (z = 1; z <= nlength; z++) + { + exp_AL(a + A2, L1 - 1 + z) += temp * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z); + ; // note that A2 and L1 depend on what sex g is + } + } + } + else + { + for (a = 0; a <= nages; a++) + { + temp = tempvec_a(a); + for (z = 1; z <= nlength; z++) + { + exp_AL(a + A2, L1 - 1 + z) += temp * ALK(ALK_idx, g, a, z); + } + } + } + exp_AL_ret = exp_AL; // in case user has retain code 2 rather than 0 + } + else // need retain matrix + { + if (dolen(f) == 1) // need retention and length + { + for (a = 0; a <= nages; a++) + { + temp = tempvec_a(a); + temp1 = tempvec_a(a) * retain_a(y, f, gg, a); + for (z = 1; z <= nlength; z++) + { + exp_AL(a + A2, L1 - 1 + z) += temp * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z); // note that A2 and L1 depend on what sex g is + exp_AL_ret(a + A2, L1 - 1 + z) += temp1 * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z) * retain(y, f, L1 - 1 + z); // note that A2 and L1 depend on what sex g is + } + } + } + else // need retention, but no length selex + { + for (a = 0; a <= nages; a++) + { + temp = tempvec_a(a); + temp1 = tempvec_a(a) * retain_a(y, f, gg, a); + for (z = 1; z <= nlength; z++) + { + exp_AL(a + A2, L1 - 1 + z) += temp * ALK(ALK_idx, g, a, z); + exp_AL_ret(a + A2, L1 - 1 + z) += temp1 * ALK(ALK_idx, g, a, z) * retain(y, f, L1 - 1 + z); + } + } + } + } + + // code below once erroneously built up catch by morph from exp_AL + // that approach is incorrect, because exp_AL already accumulates the morphs!!!!! + // putting a morph accumulation into the code above would slow computations for everyone in order to have this rarely used feature + // so instead, replicate the above to store directly into morphcomp_exp, rather than into the exp_AL matrix + // note that partition is read with morphcomp data, but it is not used + // fleets with no defined retention function base morphcomp off total catch + // fleets with retention defined, use retained catch + if (have_data(ALK_time, f, 8, 0) > 0) // morphcomp observation + { + int j = have_data(ALK_time, f, 8, 1); // observation number + // {Morphcomp_exp(j,5+GP4(g))+=sum(exp_AL); + + if (Do_Retain(f) == 0) + { + if (dolen(f) == 1) // uses length selectivity + { + for (a = 0; a <= nages; a++) + { + temp = tempvec_a(a); + for (z = 1; z <= nlength; z++) + { + Morphcomp_exp(j, 5 + GP4(g)) += temp * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z); + ; // note that A2 and L1 depend on what sex g is + } + } + } + else + { + for (a = 0; a <= nages; a++) + { + temp = tempvec_a(a); + for (z = 1; z <= nlength; z++) + { + Morphcomp_exp(j, 5 + GP4(g)) += temp * ALK(ALK_idx, g, a, z); + } + } + } + } + else // must base sample on retained catch from a fleet that has retention defined + { + if (dolen(f) == 1) // need retention and length + { + for (a = 0; a <= nages; a++) + { + temp = tempvec_a(a); + temp1 = tempvec_a(a) * retain_a(y, f, gg, a); + for (z = 1; z <= nlength; z++) + { + Morphcomp_exp(j, 5 + GP4(g)) += temp1 * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z) * retain(y, f, L1 - 1 + z); // note that A2 and L1 depend on what sex g is + } + } + } + else // need retention, but no length selex + { + for (a = 0; a <= nages; a++) + { + temp = tempvec_a(a); + temp1 = tempvec_a(a) * retain_a(y, f, gg, a); + for (z = 1; z <= nlength; z++) + { + Morphcomp_exp(j, 5 + GP4(g)) += temp1 * ALK(ALK_idx, g, a, z) * retain(y, f, L1 - 1 + z); + } + } + } + } + if (g == gmorph) + { + k = 5 + Morphcomp_nmorph; + Morphcomp_exp(j)(6, k) /= sum(Morphcomp_exp(j)(6, k)); + Morphcomp_exp(j)(6, k) += Morphcomp_mincomp; + Morphcomp_exp(j)(6, k) /= 1. + Morphcomp_mincomp * Morphcomp_nmorph; + } + } + } //close gmorph loop + + exp_l_temp = colsum(exp_AL); // total size composition + agetemp = rowsum(exp_AL); // total age composition + #ifdef DO_ONCE + if (do_once == 1) + echoinput << "yr " << y << ", seas: " << s << ", fleet:" << f << endl + << " sampled size " << exp_l_temp << endl + << " sampled age " << agetemp << endl; + #endif + if (Do_Retain(f) > 0) + { + exp_l_temp_ret = colsum(exp_AL_ret); + exp_truea_ret = rowsum(exp_AL_ret); + #ifdef DO_ONCE + if (do_once == 1) + echoinput << " retained size " << exp_l_temp_ret << endl + << " retained age " << exp_truea_ret << endl; + ; + #endif + } + else + { + exp_truea_ret = agetemp; // covers cases where retention not used, but observations have partition=2 + exp_l_temp_ret = exp_l_temp; + } + + // end creation of selected A-L + } + + if (sum(exp_l_temp) < 1.0e-8) + { + if (do_once == 1) + { + warnstream << current_phase() << " " << niter + << "warn in first call: Nil selected fish for year, seas, fleet " << y << " " << s << " " << f + << "; SS may recover; suggest check initial parm. values for selectivity and growth"; + write_message (WARN, 0); + } + exp_l_temp += 1.0e-09; + } + for (data_type = 1; data_type <= 9; data_type++) + { + switch (data_type) + { + case (1): // surveyindex + { + /* SS_Label_46.1 expected abundance index */ + // NOTE that the Q scaler is factored in later on + j = have_data(ALK_time, f, data_type, 0); // number of observations for this time,f,type + if (j > 0) + { + j = have_data(ALK_time, f, data_type, 1); // for now, only one observations is allowed for surveys + switch (Svy_units(f)) + { + case 1: // biomass + { + if (WTage_rd == 1) // using empirical wt-at-age; note that this cannot use GP specific bodyweights + // should sum over all g, but the g is already subsummed when agetemp is created by gender + { + vbio = 0.0; +// warning<= parm_dev_minyr(k) && y <= parm_dev_maxyr(k)) + { + vbio = parm_dev(k, y); + // can the mean dev for years with surveys be calculated here? + } + else + { + vbio = 0.0; + } + break; + } + } + Svy_selec_abund(f, j) = vbio; // e.g. the abundance that has been selected through selectivity or other assignment process + + // get catchability + // for "float" q, the calculations cannot be done on a year-by-year basis. The calc is done for the whole time series in SS_objfunc.tpl + if (Q_setup(f, 1) == 2) // mirror Q from lower numbered survey + { + Svy_log_q(f, j) = Svy_log_q(Q_setup(f, 2), 1); + Q_parm(Q_setup_parms(f, 1)) = Svy_log_q(f, 1); // base Q So this sets parameter equal to the scaling coefficient and can then have a prior + } + else if (Q_setup(f, 1) == 4) // mirror Q plus an offset + { + Svy_log_q(f, j) = Svy_log_q(Q_setup(f, 2), 1) + Q_parm(Q_setup_parms(f, 1) + 1); + Q_parm(Q_setup_parms(f, 1)) = Svy_log_q(f, 1); // base Q So this sets parameter equal to the scaling coefficient and can then have a prior + } + else // Q from parameter + { + if (Qparm_timevary(Q_setup_parms(f, 1)) == 0) // not time-varying + { + Svy_log_q(f, j) = Q_parm(Q_setup_parms(f, 1)); // set to base parameter value + } + else + { + Svy_log_q(f, j) = parm_timevary(Qparm_timevary(Q_setup_parms(f, 1)), Svy_yr(f, j)); + } + } + + // SS_Label_Info_25.1.3 #log or not + if (Svy_errtype(f) == -1) // normal + { + Svy_q(f) = Svy_log_q(f); // q already in arithmetic space + } + else if (Svy_errtype(f) >= 0 ) // lognormal, or T-dist + { + Svy_q(f) = mfexp(Svy_log_q(f)); // get q in arithmetic space + } + + // Q transformations and offsets + // option 5: add offset, useful when survey units are deviations + // option 3: use power function + // option 6: add offset, then use power function + if (Q_setup(f, 1) == 5 || Q_setup(f, 1) == 6 ) // add offset + { + vbio += Q_parm(Q_setup_parms(f, 1) + 1); + } + if (Q_setup(f, 1) == 3) // link is power function + { + vbio = pow(vbio, 1.0 + Q_parm(Q_setup_parms(f, 1) + 1)); + } + if (Q_setup(f, 1) == 6 ) // link is power function + { + vbio = pow(vbio, 1.0 + Q_parm(Q_setup_parms(f, 1) + 2)); // note that this is 2nd parameter after q + } + + if (Svy_errtype(f) >= 0) // lognormal or T-distribution + { + Svy_est(f, j) = log(vbio + 0.000001); + } + else + { + Svy_est(f, j) = vbio; + } + + // apply catchability, except if float is used. + // With float, catchability is calculated in ss_objfun after all obs have a value for svy_selec_abund + if (Q_setup(f, 5) == 0 || y > endyr) // apply Q if float is not used + // except if y is in forecast, then float Q has already been calculated so can be applied here + { + if (Svy_errtype(f) >= 0) // lognormal or T-dist + { + Svy_est(f, j) += Svy_log_q(f, j); + } + else + { + Svy_est(f, j) *= Svy_q(f, j); + } + } + } + break; + } // end survey index + + case (2): // DISCARD_OUTPUT + /* SS_Label_46.2 expected discard amount */ + { + if (have_data(ALK_time, f, data_type, 0) > 0) // number of observations + { + j = have_data(ALK_time, f, data_type, 1); // only getting first observation for now + if (fleet_type(f) <= 2) + { + if (catch_ret_obs(f, t) > 0.0 || y > endyr) + { + if (disc_units(f) == 3) // numbers regardless of catchunits for retained catch + { + exp_disc(f, j) = catch_fleet(t, f, 4) - catch_fleet(t, f, 6); + } + else if (catchunits(f) == 1) // biomass units for retained and discarded catch + { + exp_disc(f, j) = catch_fleet(t, f, 1) - catch_fleet(t, f, 3); // discard in biomass + if (disc_units(f) == 2) + exp_disc(f, j) /= (catch_fleet(t, f, 1) + 0.0000001); + } + else // numbers for retained and discarded catch + { + exp_disc(f, j) = catch_fleet(t, f, 4) - catch_fleet(t, f, 6); // discard in numbers + if (disc_units(f) == 2) + exp_disc(f, j) /= (catch_fleet(t, f, 4) + 0.0000001); + } + if (exp_disc(f, j) < 0.0) + { + warnstream << "negative discard occurred for fleet: " << f << "; obs: " << j << "; usually ephemeral issue with bad iteration"; + write_message (WARN, 0); + } + } + else + { + exp_disc(f, j) = -1.; + } + } + else if (fleet_type(f) == 4) // predator consumption stored in discard + { + if (disc_units(f) == 3) // numbers + { + exp_disc(f, j) = catch_fleet(t, f, 4); // consumption in numbers + } + else + { + exp_disc(f, j) = catch_fleet(t, f, 1); // consumption in biomass + } + } + else + { + exp_disc(f, j) = -1.; + } + } + break; + } // end discard + + case (3): // mean body weight + /* SS_Label_46.3 expected mean body weight */ + { + if (have_data(ALK_time, f, data_type, 0) > 0) // number of observations + { + for (int reps = 1; reps <= have_data(ALK_time, f, data_type, 0); reps++) + { + j = have_data(ALK_time, f, data_type, reps); // observation number in overall list + z = mnwtdata(5, j); // type 1=length, 2=weight + int parti = mnwtdata(4, j); // parrtition: 0=all, 1=discard, 2=retained + switch (parti) + { + case 0: + { + if (z == 2) + { + exp_mnwt(j) = (exp_l_temp * wt_len2(s, 1)) / sum(exp_l_temp); + } // total sample + else + { + exp_mnwt(j) = (exp_l_temp * len_bins_m2) / sum(exp_l_temp); + } + break; + } + case 1: + { + if (z == 2) + exp_mnwt(j) = (exp_l_temp - exp_l_temp_ret) * wt_len2(s, 1) / (sum(exp_l_temp) - sum(exp_l_temp_ret)); // discard sample + else + { + exp_mnwt(j) = (exp_l_temp - exp_l_temp_ret) * len_bins_m2 / (sum(exp_l_temp) - sum(exp_l_temp_ret)); + } + break; + } + case 2: + { + if (z == 2) + exp_mnwt(j) = (exp_l_temp_ret * wt_len2(s, 1)) / sum(exp_l_temp_ret); // retained only + else + { + exp_mnwt(j) = (exp_l_temp_ret * len_bins_m2) / sum(exp_l_temp_ret); + } + break; + } + } + } + } + break; + } + + case (4): // length composition + /* SS_Label_46.4 length composition */ + { + if (have_data(ALK_time, f, data_type, 0) > 0) + { + for (j = 1; j <= have_data(ALK_time, f, data_type, 0); j++) // loop all obs of this type + { + i = have_data(ALK_time, f, data_type, j); + if (LenBin_option > 1) + { + if (mkt_l(f, i) == 0) + { + exp_l(f, i) = make_len_bin * exp_l_temp; + } // expected size comp MAtrix * vector = vector + else if (mkt_l(f, i) == 1) + { + exp_l(f, i) = make_len_bin * (exp_l_temp - exp_l_temp_ret); + } // discard sample + else + { + exp_l(f, i) = make_len_bin * exp_l_temp_ret; + } // retained only + } + else // using data_bins same as pop_bins + { + if (mkt_l(f, i) == 0) + { + exp_l(f, i) = exp_l_temp; + } // expected size comp MAtrix * vector = vector + else if (mkt_l(f, i) == 1) + { + exp_l(f, i) = (exp_l_temp - exp_l_temp_ret); + } // discard sample + else + { + exp_l(f, i) = exp_l_temp_ret; + } // retained only + } + if (docheckup == 1) + echoinput << " len obs " << mkt_l(f, i) << " " << tails_l(f, i) << endl + << obs_l(f, i) << endl + << exp_l(f, i) << endl; + // code for tail compression, etc in the likelihood section to allow for superyear combinations // mkt=0 Do nothing + } // end lengthcomp loop + } + break; + } // end length composition + + case (5): // age composition + /* SS_Label_46.5 age composition */ + { + if (have_data(ALK_time, f, data_type, 0) > 0) + { + for (j = 1; j <= have_data(ALK_time, f, data_type, 0); j++) // loop all obs of this type + { + i = have_data(ALK_time, f, data_type, j); + k = ageerr_type_a(f, i); // age-err type + if (use_Lbin_filter(f, i) == 0) + { // sum across all length bins + if (mkt_a(f, i) == 0) + age_exp = agetemp; + if (mkt_a(f, i) == 1) + age_exp = agetemp - exp_truea_ret; // discard sample + if (mkt_a(f, i) == 2) + age_exp = exp_truea_ret; // retained only + } + else + { // only use ages from specified range of size bins + // Lbin_filter is a vector with 0 for unselected size bins and 1 for selected bins + if (mkt_a(f, i) == 0) + age_exp = exp_AL * Lbin_filter(f, i); + if (mkt_a(f, i) == 1) + age_exp = (exp_AL - exp_AL_ret) * Lbin_filter(f, i); // discard sample + if (mkt_a(f, i) == 2) + age_exp = exp_AL_ret * Lbin_filter(f, i); // retained only + } + exp_a(f, i) = age_age(k) * age_exp; + if (docheckup == 1) + echoinput << "Lbin " << Lbin_filter(f, i) << endl + << " obs " << obs_a(f, i) << endl + << "expected " << age_exp << endl + << "exp with ageerr " << exp_a(f, i) << endl; + // add code here to store exp_a_true(f,i)=age_exp + // then in data generation the sample can be from true age before ageing error is applied + + // if(docheckup==1) echoinput<<" real age "< 0) // have some sizefreq data + { + + if (have_data(ALK_time, f, data_type, 0) > 0) + { + for (j = 1; j <= have_data(ALK_time, f, data_type, 0); j++) // loop all obs of this type + { + iobs = have_data(ALK_time, f, data_type, j); // observation index + SzFreqMethod = SzFreq_obs_hdr(iobs, 6); + SzFreqMethod_seas = nseas * (SzFreqMethod - 1) + s; // index that combines sizefreqmethod and season and used in SzFreqTrans + if (SzFreq_obs_hdr(iobs, 9) > 0) // first occurrence of this method at this time is with fleet = f + { + if (do_once == 1 || (MG_active(3) > 0 && (timevary_MG(y, 3) > 0))) // calc matrix because wtlen parameters have changed + { + for (gg = 1; gg <= gender; gg++) + { + if (gg == 1) + { + z1 = 1; + z2 = nlength; + ibin = 0; + ibinsave = 0; + } // female + else + { + z1 = nlength1; + z2 = nlength2; + ibin = 0; + ibinsave = SzFreq_Nbins(SzFreqMethod); + } // male + topbin = 0.; + botbin = 0.; + + // NOTE: wt_len_low is calculated separately for each growth pattern (GPat) + // but the code below still just uses GPat=1 for calculation of the sizefreq transition matrix + + switch (SzFreq_units(SzFreqMethod)) // biomass vs. numbers are accumulated in the bins + { + case (1): // units are biomass, so accumulate body weight into the bins; Assume that bin demarcations are also in biomass + { + if (SzFreq_Omit_Small(SzFreqMethod) == 1) + { + while (wt_len_low(s, 1, z1 + 1) < SzFreq_bins(SzFreqMethod, 1) && z1 < z2) + { + z1++; + } + } // ignore tiny fish + if (z1 + 1 >= z2) + { + warnstream << "max population size " << wt_len_low(s, 1, z1) << " is less than first data bin " << SzFreq_bins(SzFreqMethod, 1) << " for SzFreqMethod " << SzFreqMethod; + write_message (FATAL, 0); // EXIT! + } + + if (wt_len_low(s, 1, nlength2) < SzFreq_bins(SzFreqMethod, SzFreq_Nbins(SzFreqMethod))) + { + warnstream << "max population size " << wt_len_low(s, 1, nlength2) << " is less than max data bin " << SzFreq_bins(SzFreqMethod, SzFreq_Nbins(SzFreqMethod)) << " for SzFreqMethod " << SzFreqMethod; + write_message (FATAL, 0); // EXIT! + } + + for (z = z1; z <= z2; z++) + { + if (ibin == SzFreq_Nbins(SzFreqMethod)) + { + SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = wt_len2(s, 1, z); + } + else + { + if (wt_len_low(s, 1, z) >= topbin) + { + ibin++; + ibinsave++; + } + if (ibin > 1) + { + botbin = SzFreq_bins2(SzFreqMethod, ibin); + } + if (ibin == SzFreq_Nbins(SzFreqMethod)) + { + SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = wt_len2(s, 1, z); + topbin = 99999.; + } + else + { + topbin = SzFreq_bins2(SzFreqMethod, ibin + 1); + if (wt_len_low(s, 1, z) >= botbin && wt_len_low(s, 1, z + 1) <= topbin) + { + SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = wt_len2(s, 1, z); + } + else + { + temp = (wt_len_low(s, 1, z + 1) - topbin) / wt_len_fd(s, 1, z); // frac in pop bin above (data bin +1) + temp1 = wt_len_low(s, 1, z) + (1. - temp * 0.5) * wt_len_fd(s, 1, z); // approx body wt for these fish + temp2 = wt_len_low(s, 1, z) + (1. - temp) * 0.5 * wt_len_fd(s, 1, z); // approx body wt for fish below + SzFreqTrans(SzFreqMethod_seas, z, ibinsave + 1) = temp * temp1; + SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = (1. - temp) * temp2; + } + } + } + } + if (SzFreq_scale(SzFreqMethod) == 2 && gg == gender) // convert to pounds + { + SzFreqTrans(SzFreqMethod_seas) /= 0.4536; + } + break; + } // end of units in biomass + // NOTE: even though the transition matrix is currently in units of biomass distribution, there is no need to + // normalize to sum to 1.0 here because the normalization will occur after it gets used to create SzFreq_exp + + case (2): // units are numbers + { + if (SzFreq_scale(SzFreqMethod) <= 2) // bin demarcations are in weight units (1=kg, 2=lbs), so uses wt_len to compare to bins + { + if (SzFreq_Omit_Small(SzFreqMethod) == 1) + { + while (wt_len_low(s, 1, z1 + 1) < SzFreq_bins(SzFreqMethod, 1) && z1 < z2) + { + z1++; + } + } // ignore tiny fish + if (z1 + 1 >= z2) + { + warnstream << "max population size " << wt_len_low(s, 1, z1) << " is less than first data bin " << SzFreq_bins(SzFreqMethod, 1) << " for SzFreqMethod " << SzFreqMethod; + write_message (FATAL, 0); // EXIT! + } + if (wt_len_low(s, 1, nlength2) < SzFreq_bins(SzFreqMethod, SzFreq_Nbins(SzFreqMethod))) + { + warnstream << "max population size " << wt_len_low(s, 1, nlength2) << " is less than max data bin " << SzFreq_bins(SzFreqMethod, SzFreq_Nbins(SzFreqMethod)) << " for SzFreqMethod " << SzFreqMethod; + write_message (FATAL, 0); // EXIT! + } + + for (z = z1; z <= z2; z++) + { + if (ibin == SzFreq_Nbins(SzFreqMethod)) + { + SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = 1.; + } //checkup<<" got to last ibin, so put rest of popbins here"<= topbin) + { + ibin++; + ibinsave++; + } //checkup<<" incr ibin "< 1) + { + botbin = SzFreq_bins2(SzFreqMethod, ibin); + } + if (ibin == SzFreq_Nbins(SzFreqMethod)) // checkup<<" got to last ibin, so put rest of popbins here"<= botbin && wt_len_low(s, 1, z + 1) <= topbin) //checkup<<" pop inside dat, put here"<= topbin) + { + ibin++; + ibinsave++; + } //checkup<<" incr ibin "< 1) + { + botbin = SzFreq_bins2(SzFreqMethod, ibin); + } + if (ibin == SzFreq_Nbins(SzFreqMethod)) // checkup<<" got to last ibin, so put rest of popbins here"<= botbin && len_bins2(z + 1) <= topbin) //checkup<<" pop inside dat, put here"< 0.0) + { + SzFreq_exp(iobs)(1, k) += SzFreq_mincomp(SzFreqMethod); + SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); + } + break; + } + case (1): // female only + { + SzFreq_exp(iobs)(k + 1, 2 * k) = 0.0; // zero out the males so will not interfere with data generation + SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); + if (SzFreq_mincomp(SzFreqMethod) > 0.0) + { + SzFreq_exp(iobs)(1, k) += SzFreq_mincomp(SzFreqMethod); + SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); + } + break; + } + case (2): // male only + { + ibin = SzFreq_obs_hdr(iobs, 7); + SzFreq_exp(iobs)(1, ibin - 1) = 0.0; // zero out the females so will not interfere with data generation + SzFreq_exp(iobs)(ibin, k) /= sum(SzFreq_exp(iobs)(ibin, k)); + if (SzFreq_mincomp(SzFreqMethod) > 0.0) + { + SzFreq_exp(iobs)(ibin, k) += SzFreq_mincomp(SzFreqMethod); + SzFreq_exp(iobs)(ibin, k) /= sum(SzFreq_exp(iobs)(ibin, k)); + } + break; + } + case (3): // each gender + { + SzFreq_exp(iobs) /= sum(SzFreq_exp(iobs)); + if (SzFreq_mincomp(SzFreqMethod) > 0.0) + { + SzFreq_exp(iobs) += SzFreq_mincomp(SzFreqMethod); + SzFreq_exp(iobs) /= sum(SzFreq_exp(iobs)); + } + break; + } + } // end gender switch + } // end have 2 genders + else + { + k = SzFreq_obs_hdr(iobs, 8); // max bins for this method + SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); + if (SzFreq_mincomp(SzFreqMethod) > 0.0) + { + SzFreq_exp(iobs)(1, k) += SzFreq_mincomp(SzFreqMethod); + SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); + } + } + #ifdef DO_ONCE + if (do_once == 1) + echoinput << y << " " << f << " szfreq_exp_final " << SzFreq_exp(iobs) << endl; + #endif + } // end loop of obs for fleet = f + } // end having some obs for this method in this fleet + } // end use of generalized size freq data + break; + } // end generalized size composition + + case (7): // mean size-at-age + /* SS_Label_46.7 mean size at age */ + { + if (have_data(ALK_time, f, data_type, 0) > 0) + { + for (j = 1; j <= have_data(ALK_time, f, data_type, 0); j++) // loop all obs of this type + { + i = have_data(ALK_time, f, data_type, j); + k = abs(ageerr_type_ms(f, i)); // age-err type where the sign selects length vs. weight + if (ageerr_type_ms(f, i) > 0) // values are length at age + { + if (mkt_ms(f, i) == 0) // total catch + { + exp_a_temp = age_age(k) * agetemp; // numbers at binned age + exp_ms(f, i) = age_age(k) * (exp_AL * len_bins_m2); // numbers * length + exp_ms_sq(f, i) = age_age(k) * (exp_AL * len_bins_sq); // numbers * length^2 + } + if (mkt_ms(f, i) == 1) // discard + { + // exp_a_temp = age_age(k) * (exp_AL * (1-retain(y,f))); // numbers at binned age = age_age(bins,age) * sum(age) + // exp_ms(f,i) = age_age(k) * (exp_AL * elem_prod((1-retain(y,f)),len_bins_m2)); // numbers * length + // exp_ms_sq(f,i) = age_age(k) * (exp_AL * elem_prod((1-retain(y,f)),len_bins_sq)); // numbers * length^2 + exp_a_temp = age_age(k) * (agetemp - exp_truea_ret); + exp_ms(f, i) = age_age(k) * ((exp_AL - exp_AL_ret) * len_bins_m2); // numbers * length + exp_ms_sq(f, i) = age_age(k) * ((exp_AL - exp_AL_ret) * len_bins_sq); // numbers * length^2 + } + if (mkt_ms(f, i) == 2) // retained + { + exp_a_temp = age_age(k) * exp_truea_ret; // numbers at binned age = age_age(bins,age) * sum(age) + exp_ms(f, i) = age_age(k) * (exp_AL_ret * len_bins_m2); // numbers * length + exp_ms_sq(f, i) = age_age(k) * (exp_AL_ret * len_bins_sq); // numbers * length^2 + } + } + else // values are weight at age + { + if (mkt_ms(f, i) == 0) + { + exp_a_temp = age_age(k) * agetemp; // numbers at binned age = age_age(bins,age) * sum(age) + exp_ms(f, i) = age_age(k) * (exp_AL * wt_len2(s, 1)); // numbers * bodywt + exp_ms_sq(f, i) = age_age(k) * (exp_AL * wt_len2_sq(s, 1)); // numbers * bodywt^2 + } + if (mkt_ms(f, i) == 1) + { + exp_a_temp = age_age(k) * (agetemp - exp_truea_ret); // numbers at binned age = age_age(bins,age) * sum(age) + exp_ms(f, i) = age_age(k) * ((exp_AL - exp_AL_ret) * wt_len2(s, 1)); // numbers * bodywt + exp_ms_sq(f, i) = age_age(k) * ((exp_AL - exp_AL_ret) * wt_len2_sq(s, 1)); // numbers * bodywt^2 + } + if (mkt_ms(f, i) == 2) + { + exp_a_temp = age_age(k) * exp_truea_ret; // numbers at binned age = age_age(bins,age) * sum(age) + exp_ms(f, i) = age_age(k) * (exp_AL_ret * wt_len2(s, 1)); // numbers * bodywt + exp_ms_sq(f, i) = age_age(k) * (exp_AL_ret * wt_len2_sq(s, 1)); // numbers * bodywt^2 + } + } + exp_ms(f, i) += 1.0e-6; + exp_a_temp += 1.0e-6; + exp_ms_sq(f, i) += 1.0e-6; + exp_ms_sq(f, i) = sqrt( + elem_div( + (exp_ms_sq(f, i) - elem_div(elem_prod(exp_ms(f, i), exp_ms(f, i)), exp_a_temp)), + exp_a_temp)) + + 0.000001; //std.err. of size at binned age = sqrt( (P2-P1*P1/P0) / P0 ) + exp_ms(f, i) = elem_div(exp_ms(f, i), exp_a_temp); // mean size at binned age + } + } // endl size-at-age + break; + } // end mean size-at-age + + } // end switch(data_type) + } // end loop for types of data + } + } // end loop of fleets + } // end loop of subseasons + return; + } // end function +// SS_Label_file #16. **SS_objfunc.tpl** +// SS_Label_file # * evaluate_the_objective_function() +// SS_Label_file # * Process_STDquant() // move info like SSB to the sd_vectors +// SS_Label_file # * Check_Parm() // check parameter against its bounds and do jitter if requested +// SS_Label_file # * Get_Prior() // calc the prior likelihood for a parameter +// SS_Label_file # * get_posteriors() // writes posteriors.sso and other MCMC relevant outputs +// SS_Label_file # + +//******************************************************************** +// FUNCTIONS in file: SS_objfunc.tpl +// evaluate_the_objective_function +// Process_STDquant +// Check_Parm +// Get_Prior +// get_posteriors + + /* SS_Label_FUNCTION 25 evaluate_the_objective_function */ +FUNCTION void evaluate_the_objective_function() + { + surv_like.initialize(); + Svy_like_I.initialize(); + Q_dev_like.initialize(); + disc_like.initialize(); + length_like.initialize(); + age_like.initialize(); + sizeage_like.initialize(); + parm_like.initialize(); + parm_dev_like.initialize(); + noBias_recr_like.initialize(); + mnwt_like.initialize(); + equ_catch_like.initialize(); + recr_like.initialize(); + Fcast_recr_like.initialize(); + catch_like.initialize(); + Morphcomp_like.initialize(); + TG_like1.initialize(); + TG_like2.initialize(); + length_like_tot.initialize(); + age_like_tot.initialize(); + regime_like.initialize(); + obj_fun = 0.0; + SoftBoundPen = 0.0; + + int k_phase = current_phase(); + if (k_phase > max_lambda_phase) + k_phase = max_lambda_phase; + + //Q_setup for 3.30 + // 1: link type + // 2: extra input for link, i.e. mirror fleet + // 3: 0/1 to select extra sd parameter + // 4: 0/1 for biasadj or not + // 5: 0/1 to float k=4; + + // Link types + // 1 simple q, 1 parm + // 2 mirror simple q, 1 mirrored parameter + // 3 q and power, 2 parm + + if (Svy_N > 0) + { + for (f = 1; f <= Nfleet; f++) + { + if (Svy_N_fleet(f) > 0) + { + Svy_se_use(f) = Svy_se(f); + if (Q_setup(f, 3) > 0) + { + Svy_se_use(f) += Q_parm(Q_setup_parms(f, 2)); // add extra stderr + } + // SS_Label_Info_25.1.1 #combine for super-periods + for (j = 1; j <= Svy_super_N(f); j++) + { + temp = 0.0; + for (i = Svy_super_start(f, j); i <= Svy_super_end(f, j); i++) + { + temp += Svy_est(f, i) * Svy_super_weight(f, i); + } // combine across range of observations + // sampwt sums to 1.0, so temp contains the weighted average + for (i = Svy_super_start(f, j); i <= Svy_super_end(f, j); i++) + { + Svy_est(f, i) = temp; + } // assign average to each obs + } + + // SS_Label_Info_25.1.2 #apply catchability, Q + if (Q_setup(f, 5) > 0) // do float Q + { // NOTE: cannot use float option if error type is normal + temp = 0.; + temp1 = 0.; + temp2 = 0.; + Svy_log_q(f) = 0.0; + Svy_q(f) = 0.0; + if (Svy_N_fleet_use(f) > 0) // be sure that some observation is being used + { + for (i = 1; i <= Svy_N_fleet(f); i++) + { + if (Svy_use(f, i) > 0) + { + Svy_est(f, i) = log( Svy_selec_abund(f, i) ); // before q is applied + temp2 += (Svy_obs_log(f, i) - Svy_est(f, i)) / square(Svy_se_use(f, i)); + temp += 1.0 / square(Svy_se_use(f, i)); + temp1 += 1.; + } + } + + // calc q and apply to all obs + if (Q_setup(f, 4) == 0) // mean q, with no bias adjustment + { + Svy_log_q(f) = temp2 / temp; + Svy_est(f) += temp2 / temp; + } + else // any value mean q with variance bias adjustment + { + Svy_log_q(f) = (temp2 + temp1 * 0.5) / temp; + Svy_est(f) += (temp2 + temp1 * 0.5) / temp; + } + Svy_q(f) = mfexp(Svy_log_q(f)); // get q in arithmetic space + Q_parm(Q_setup_parms(f, 1)) = Svy_log_q(f, 1); // base Q So this sets parameter equal to the scaling coefficient and can then have a prior + } + else // no observations + { + Q_parm(Q_setup_parms(f, 1)) = Svy_log_q(f, 1); + } + } + + // SS_Label_Info_25.1.4 #calc the logL + for (i = 1; i <= Svy_N_fleet(f); i++) { + if (Svy_use(f, i) > 0) + { + if (Svy_errtype(f) == 0) { // lognormal + Svy_like_I(f,i) = 0.5 * square((Svy_obs_log(f, i) - Svy_est(f, i)) / Svy_se_use(f, i)) + + sd_offset * log(Svy_se_use(f, i)); + } + else if (Svy_errtype(f) == 1) { // lognormal with bias adjustment + Svy_like_I(f,i) = 0.5 * square((Svy_obs_log(f, i) - Svy_est(f, i) + 0.5 * square(Svy_se_use(f, i))) / Svy_se_use(f, i)) + + sd_offset * log(Svy_se_use(f, i)); + } + else if (Svy_errtype(f) > 1) { // T-dist + dvariable df = Svy_errtype(f); + Svy_like_I(f,i) = ((df + 1.) / 2.) * log((1. + square((Svy_obs_log(f, i) - Svy_est(f, i))) / (df * square(Svy_se_use(f, i))))) + + sd_offset * log(Svy_se_use(f, i)); + } + else if (Svy_errtype(f) == -1) { // normal + Svy_like_I(f,i) = 0.5 * square((Svy_obs(f, i) - Svy_est(f, i)) / Svy_se_use(f, i)) + + sd_offset * log(Svy_se_use(f, i)); + } + else if (Svy_errtype(f) == -2) { + // gamma option will go here + } + else { + // values <-2 are trapped in readdata + } + } + } // end loop of obs + surv_like(f) = sum(Svy_like_I(f)); + } // end having obs for this survey + } + if (do_once == 1) + echoinput << "Finished survey obj_fun " << surv_like << endl; + } + + // SS_Label_Info_25.2 #Fit to discard + if (nobs_disc > 0) + { + for (f = 1; f <= Nfleet; f++) + if (disc_lambda(f, k_phase) > 0.0 || save_for_report > 0) + { + if (disc_N_fleet(f) > 0) + { + for (j = 1; j <= N_suprper_disc(f); j++) // do super years + { + temp = 0.0; + for (i = suprper_disc1(f, j); i <= suprper_disc2(f, j); i++) + { + temp += exp_disc(f, i) * suprper_disc_sampwt(f, i); + } // combine across range of observations + for (i = suprper_disc1(f, j); i <= suprper_disc2(f, j); i++) + { + exp_disc(f, i) = temp; + } // assign back to each obs + } + + if (disc_errtype(f) >= 1) // T -distribution + { + for (i = 1; i <= disc_N_fleet(f); i++) + if (yr_disc_use(f, i) >= 0.0) + { + disc_like(f) += 0.5 * (disc_errtype(f) + 1.) * log((1. + square(obs_disc(f, i) - exp_disc(f, i)) / (disc_errtype(f) * square(sd_disc(f, i))))) + sd_offset * log(sd_disc(f, i)); + } + } + else if (disc_errtype(f) == 0) // normal error, with input CV + { + for (i = 1; i <= disc_N_fleet(f); i++) + if (yr_disc_use(f, i) >= 0.0) + { + disc_like(f) += 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)) + sd_offset * log(sd_disc(f, i)); + } + } + else if (disc_errtype(f) == -1) // normal error with input se + { + for (i = 1; i <= disc_N_fleet(f); i++) + if (yr_disc_use(f, i) >= 0.0) + { + disc_like(f) += 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)) + sd_offset * log(sd_disc(f, i)); + } + } + else if (disc_errtype(f) == -2) // lognormal where input cv_disc must contain se in log space + { + for (i = 1; i <= disc_N_fleet(f); i++) + if (yr_disc_use(f, i) >= 0.0) + { + disc_like(f) += 0.5 * square(log(obs_disc(f, i) / exp_disc(f, i)) / sd_disc(f, i)) + sd_offset * log(sd_disc(f, i)); + } + } + else if (disc_errtype(f) == -3) // trunc normal error, with input CV + { + for (i = 1; i <= disc_N_fleet(f); i++) + if (yr_disc_use(f, i) >= 0.0) + { + disc_like(f) += 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)) - log(cumd_norm((1 - exp_disc(f, i)) / sd_disc(f, i)) - cumd_norm((0 - exp_disc(f, i)) / sd_disc(f, i))); + } + } + else + { + warnstream << "discard error type for fleet " << f << " = " << disc_errtype(f) << " should be -3, -2, -1, 0, or >=1"; + write_message (FATAL, 0); // EXIT! + } + } + } + if (do_once == 1) + { + echoinput << "Finished discard obj_fun " << disc_like << endl; + } + } + + // SS_Label_Info_25.3 #Fit to mean body wt + if (nobs_mnwt > 0) + { + for (i = 1; i <= nobs_mnwt; i++) + if (mnwtdata(3, i) > 0.) + { + mnwt_like(mnwtdata(3, i)) += 0.5 * (DF_bodywt + 1.) * log(1. + square(mnwtdata(6, i) - exp_mnwt(i)) / mnwtdata(9, i)) + mnwtdata(10, i); + } + if (do_once == 1) + echoinput << " Finished meanwt obj_fun " << mnwt_like << endl; + } + + // SS_Label_Info_25.4 #Fit to length comp + if (Nobs_l_tot > 0) + { + for (f = 1; f <= Nfleet; f++) + if (length_lambda(f, k_phase) > 0.0 || save_for_report > 0) + { + if (Nobs_l(f) >= 1) + { + + for (j = 1; j <= N_suprper_l(f); j++) // do each super period + { + exp_l_temp_dat.initialize(); + for (i = suprper_l1(f, j); i <= suprper_l2(f, j); i++) + { + exp_l_temp_dat += exp_l(f, i) * suprper_l_sampwt(f, i); // combine across range of observations + } + // exp_l_temp_dat/=sum(exp_l_temp_dat); // normalize not needed because converted to proportions later + for (i = suprper_l1(f, j); i <= suprper_l2(f, j); i++) + { + exp_l(f, i) = exp_l_temp_dat; // assign back to all obs + } + } + + for (i = 1; i <= Nobs_l(f); i++) + { + length_like(f, i) = -offset_l(f, i); // so a perfect fit will approach 0.0 + int parti = mkt_l(f, i); // discard vs retained + if (gender == 2) + { + if (gen_l(f, i) == 0) + { + for (z = 1; z <= nlen_bin; z++) + { + exp_l(f, i, z) += exp_l(f, i, z + nlen_bin); + } + exp_l(f, i)(nlen_binP, nlen_bin2) = 0.00; + } + else if (gen_l(f, i) == 1) // female only + { + exp_l(f, i)(nlen_binP, nlen_bin2) = 0.00; + } + else if (gen_l(f, i) == 2) // male only + { + exp_l(f, i)(1, nlen_bin) = 0.00; + } + else if (gen_l(f, i) == 3 && CombGender_L(parti, f) > 0) + { + for (z = 1; z <= CombGender_L(parti, f); z++) + { + exp_l(f, i, z) += exp_l(f, i, z + nlen_bin); + exp_l(f, i, z + nlen_bin) = 0.00; + } + } + } + exp_l(f, i) /= sum(exp_l(f, i)); + tails_w = ivector(tails_l(f, i)); + + if (gen_l(f, i) != 2) + { + if (tails_w(1) > 1) + { + exp_l(f, i, tails_w(1)) = sum(exp_l(f, i)(1, tails_w(1))); + exp_l(f, i)(1, tails_w(1) - 1) = 0.; + } + if (tails_w(2) < nlen_bin) + { + exp_l(f, i, tails_w(2)) = sum(exp_l(f, i)(tails_w(2), nlen_bin)); + exp_l(f, i)(tails_w(2) + 1, nlen_bin) = 0.; + } + exp_l(f, i)(tails_w(1), tails_w(2)) += min_comp_L(mkt_l(f, i), f); + } + + if (gender == 2 && gen_l(f, i) >= 2) + { + if (tails_w(3) > nlen_binP) + { + exp_l(f, i, tails_w(3)) = sum(exp_l(f, i)(nlen_binP, tails_w(3))); + exp_l(f, i)(nlen_binP, tails_w(3) - 1) = 0.; + } + if (tails_w(4) < nlen_bin2) + { + exp_l(f, i, tails_w(4)) = sum(exp_l(f, i)(tails_w(4), nlen_bin2)); + exp_l(f, i)(tails_w(4) + 1, nlen_bin2) = 0.; + } + exp_l(f, i)(tails_w(3), tails_w(4)) += min_comp_L(mkt_l(f, i), f); + } + exp_l(f, i) /= sum(exp_l(f, i)); + + if (header_l(f, i, 3) > 0 || save_for_report == 1) + { + if (Comp_Err_L(parti, f) == 0) // multinomial + { + // get female or combined sex logL + // logL functions are at end of file SS_miscfxn.tpl + if (gen_l(f, i) != 2) + length_like(f, i) += Comp_logL_multinomial( nsamp_l(f, i), obs_l(f, i)(tails_w(1), tails_w(2)), exp_l(f, i)(tails_w(1), tails_w(2)) ); + // add male logL + if (gen_l(f, i) >= 2 && gender == 2) + length_like(f, i) += Comp_logL_multinomial( nsamp_l(f, i), obs_l(f, i)(tails_w(3), tails_w(4)), exp_l(f, i)(tails_w(3), tails_w(4)) ); + } + else if( (Comp_Err_L(parti, f)==1) || (Comp_Err_L(parti, f)==2) ) // dirichlet + { + /* from Thorson: NLL -= gammln(A) - gammln(ninput_t(t)+A) + sum(gammln(ninput_t(t)*extract_row(pobs_ta,t) + A*extract_row(pexp_ta,t))) - sum(lgamma(A*extract_row(pexp_ta,t))) \ + in option 1, dirichlet_Parm = Theta*n from equation (10) of Thorson et al. 2016 + in option 2, dirichlet_Parm = Beta from equation (4) of Thorson et al. 2016 */ + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f),1))); + if (Comp_Err_L(parti, f) == 1) + dirichlet_Parm *= nsamp_l(f, i); + + // note: first term in equations (4) and (10) is calculated + // as offset_l in SS_prelim.tpl and already included in length_like + // now add second term which is only dependent on parameters and sample size + temp = gammln(dirichlet_Parm) - gammln(nsamp_l(f, i) + dirichlet_Parm); + // get female or combined sex logL + // third and final term in equations (4) and (10) + if (gen_l(f, i) != 2) { // so not male only + temp += Comp_logL_Dirichlet( nsamp_l(f, i), dirichlet_Parm, obs_l(f, i)(tails_w(1), tails_w(2)), exp_l(f, i)(tails_w(1), tails_w(2)) ); + } + // add male logL + if (gen_l(f, i) >= 2 && gender == 2) { + temp += Comp_logL_Dirichlet( nsamp_l(f, i), dirichlet_Parm, obs_l(f, i)(tails_w(3), tails_w(4)), exp_l(f, i)(tails_w(3), tails_w(4)) ); + } + length_like(f, i) -= temp; + } else // multivariate-Tweedie + { + dvariable tweedie_Phi; + dvariable tweedie_power; + // Exponentiate [PARAMETER_1] + int k1 = Comp_Err_parmloc(Comp_Err_L2(parti, f),1); + tweedie_Phi = mfexp(selparm(k1)); + // One plus logistic-transform [PARAMETER_1] + tweedie_power = 1.0 + mfexp(selparm(k1+1)) / (1.0+mfexp(selparm(k1+1))); + if(gen_l(f,i) !=2) // so not male only + { + // dtweedie( Type y, Type mu, Type phi, Type p, int give_log=0 ) + for (int tail_index=tails_w(1); tail_index<=tails_w(2); tail_index++){ + temp += 1.; // dtweedie( nsamp_l(f,i)*obs_l(f,i)(tail_index), nsamp_l(f,i)*exp_l(f,i)(tail_index), tweedie_Phi, tweedie_power, true ); + } + } + // add male logL + if(gen_l(f,i) >=2 && gender==2) + { + // dtweedie( Type y, Type mu, Type phi, Type p, int give_log=0 ) + for (int tail_index=tails_w(3); tail_index<=tails_w(4); tail_index++){ + temp += 1.; // dtweedie( nsamp_l(f,i)*obs_l(f,i)(tail_index), nsamp_l(f,i)*exp_l(f,i)(tail_index), tweedie_Phi, tweedie_power, true ); + } + } + length_like(f,i)-=temp; + } + if (header_l(f, i, 3) > 0) + length_like_tot(f) += length_like(f, i); + } + } + } + } + if (do_once == 1) + echoinput << "Finished lencomp obj_fun " << length_like_tot << endl; + } + + // SS_Label_Info_25.5 #Fit to age composition + if (Nobs_a_tot > 0) + { + for (f = 1; f <= Nfleet; f++) + if (age_lambda(f, k_phase) > 0.0 || save_for_report > 0) + { + if (Nobs_a(f) >= 1) + { + for (j = 1; j <= N_suprper_a(f); j++) // do super years Max of 20 allowed per type(f) + { + exp_a_temp.initialize(); + for (i = suprper_a1(f, j); i <= suprper_a2(f, j); i++) + { + exp_a_temp += exp_a(f, i) * suprper_a_sampwt(f, i); // combine across range of observations + } + // exp_a_temp/=(1.0e-15+sum(exp_a_temp)); // normalize + for (i = suprper_a1(f, j); i <= suprper_a2(f, j); i++) + exp_a(f, i) = exp_a_temp; // assign back to each original obs + } + + for (i = 1; i <= Nobs_a(f); i++) + { + age_like(f, i) = -offset_a(f, i); // so a perfect fit will approach 0.0 + if (gender == 2) + { + if (gen_a(f, i) == 0) // combined sex observation + { + for (z = 1; z <= n_abins; z++) + { + exp_a(f, i, z) += exp_a(f, i, z + n_abins); + } + exp_a(f, i)(n_abins1, n_abins2) = 0.00; + } + else if (gen_a(f, i) == 1) // female only + { + exp_a(f, i)(n_abins1, n_abins2) = 0.00; + } + else if (gen_a(f, i) == 2) // male only + { + exp_a(f, i)(1, n_abins) = 0.00; + } + else if (gen_a(f, i) == 3 && CombGender_A(f) > 0) + { + for (z = 1; z <= CombGender_A(f); z++) + { + exp_a(f, i, z) += exp_a(f, i, z + n_abins); + exp_a(f, i, z + n_abins) = 0.00; + } + } + } + exp_a(f, i) /= (1.0e-15 + sum(exp_a(f, i))); // proportion at binned age + + tails_w = ivector(tails_a(f, i)); + if (gen_a(f, i) != 2) + { + if (tails_w(1) > 1) + { + exp_a(f, i, tails_w(1)) = sum(exp_a(f, i)(1, tails_w(1))); + exp_a(f, i)(1, tails_w(1) - 1) = 0.; + } + if (tails_w(2) < n_abins) + { + exp_a(f, i, tails_w(2)) = sum(exp_a(f, i)(tails_w(2), n_abins)); + exp_a(f, i)(tails_w(2) + 1, n_abins) = 0.; + } + exp_a(f, i)(tails_w(1), tails_w(2)) += min_comp_A(f); + } + + if (gender == 2 && gen_a(f, i) >= 2) + { + if (tails_w(3) > n_abins1) + { + exp_a(f, i, tails_w(3)) = sum(exp_a(f, i)(n_abins1, tails_w(3))); + exp_a(f, i)(n_abins1, tails_w(3) - 1) = 0.; + } + if (tails_w(4) < n_abins2) + { + exp_a(f, i, tails_w(4)) = sum(exp_a(f, i)(tails_w(4), n_abins2)); + exp_a(f, i)(tails_w(4) + 1, n_abins2) = 0.; + } + exp_a(f, i)(tails_w(3), tails_w(4)) += min_comp_A(f); + } + + exp_a(f, i) /= (1.0e-15 + sum(exp_a(f, i))); + + if (header_a(f, i, 3) > 0 || save_for_report == 1) + { + if (Comp_Err_A(f) == 0) // multinomial + { + if (gen_a(f, i) != 2) + age_like(f, i) += Comp_logL_multinomial( nsamp_a(f, i), obs_a(f, i)(tails_w(1), tails_w(2)), exp_a(f, i)(tails_w(1), tails_w(2)) ); +// age_like(f, i) -= nsamp_a(f, i) * +// obs_a(f, i)(tails_w(1), tails_w(2)) * log(exp_a(f, i)(tails_w(1), tails_w(2))); + if (gen_a(f, i) >= 2 && gender == 2) + age_like(f, i) += Comp_logL_multinomial( nsamp_a(f, i), obs_a(f, i)(tails_w(3), tails_w(4)), exp_a(f, i)(tails_w(3), tails_w(4)) ); +// age_like(f, i) -= nsamp_a(f, i) * +// obs_a(f, i)(tails_w(3), tails_w(4)) * log(exp_a(f, i)(tails_w(3), tails_w(4))); + } + else if( (Comp_Err_A(f)==1) || (Comp_Err_A(f)==2) ) // dirichlet + { + /* from Thorson: NLL -= gammln(A) - gammln(ninput_t(t)+A) + sum(gammln(ninput_t(t)*extract_row(pobs_ta,t) + A*extract_row(pexp_ta,t))) - sum(lgamma(A*extract_row(pexp_ta,t))) \ + in option 1, dirichlet_Parm = Theta*n from equation (10) of Thorson et al. 2016 + in option 2, dirichlet_Parm = Beta from equation (4) of Thorson et al. 2016 + */ + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); + if (Comp_Err_A(f) == 1) + dirichlet_Parm *= nsamp_a(f, i); + // note: first term in equations (4) and (10) is calculated + // as offset_a in SS_prelim.tpl and already included in age_like + // now add second term which is only dependent on parameters and sample size + // second term in equations (4) and (10) which is only dependent on parameters and sample size + temp = gammln(dirichlet_Parm) - gammln(nsamp_a(f, i) + dirichlet_Parm); + // get female or combined sex logL + // final term in equations (4) and (10) + if (gen_a(f, i) != 2) { // so not male only + temp += Comp_logL_Dirichlet( nsamp_a(f, i), dirichlet_Parm, obs_a(f, i)(tails_w(1), tails_w(2)), exp_a(f, i)(tails_w(1), tails_w(2)) ); + } + // add male logL + if (gen_a(f, i) >= 2 && gender == 2) { + temp += Comp_logL_Dirichlet( nsamp_a(f, i), dirichlet_Parm, obs_a(f, i)(tails_w(3), tails_w(4)), exp_a(f, i)(tails_w(3), tails_w(4)) ); + } + age_like(f, i) -= temp; + } + } + else // MV_Tweedie + { + } + if (header_a(f, i, 3) > 0) + age_like_tot(f) += age_like(f, i); + } + } + } + if (do_once == 1) + echoinput << "Finished agecomp obj_fun " << age_like_tot << endl; + } + + // SS_Label_Info_25.6 #Fit to mean size@age + if (nobs_ms_tot > 0) + { + for (f = 1; f <= Nfleet; f++) + if ((Nobs_ms(f) > 0 && sizeage_lambda(f, k_phase) > 0.0) || save_for_report > 0) + { + for (j = 1; j <= N_suprper_ms(f); j++) + { + exp_a_temp.initialize(); + for (i = suprper_ms1(f, j); i <= suprper_ms2(f, j); i++) + { + exp_a_temp += exp_ms(f, i) * suprper_ms_sampwt(f, i); + } // combine across range of observations + for (i = suprper_ms1(f, j); i <= suprper_ms2(f, j); i++) + exp_ms(f, i) = exp_a_temp; // assign back to each original obs + } + + for (i = 1; i <= Nobs_ms(f); i++) + if (header_ms(f, i, 3) > 0) + { + for (b = 1; b <= n_abins2; b++) + { + if (obs_ms_n(f, i, b) > 0 && obs_ms(f, i, b) > 0) + { + sizeage_like(f) += 0.5 * square((obs_ms(f, i, b) - exp_ms(f, i, b)) / (exp_ms_sq(f, i, b) / obs_ms_n(f, i, b))) + sd_offset * log(exp_ms_sq(f, i, b) / obs_ms_n(f, i, b)); + // where: obs_ms_n(f,i,b)=sqrt(var_adjust(6,f)*obs_ms_n(f,i,b)); + } + } + } + } + if (do_once == 1) + echoinput << "Finished meanlength obj_fun " << sizeage_like << endl; + } + + // SS_Label_Info_25.7 #Fit to generalized Size composition + dvariable temp_logL; + if (SzFreq_Nmeth > 0) // have some sizefreq data + { + // create super-period expected values + for (j = 1; j <= N_suprper_SzFreq; j++) + { + a = suprper_SzFreq_start(j); // get observation index + SzFreq_exp(a) *= suprper_SzFreq_sampwt(a); // start creating weighted average + for (iobs = a + 1; iobs <= suprper_SzFreq_end(j); iobs++) + { + SzFreq_exp(a) += SzFreq_exp(iobs) * suprper_SzFreq_sampwt(iobs); + } // combine into the first obs of this superperiod + for (iobs = a + 1; iobs <= suprper_SzFreq_end(j); iobs++) + { + SzFreq_exp(iobs) = SzFreq_exp(a); + } // assign back to all obs + } + + SzFreq_like = -offset_Sz_tot; // initializes for each Sz_Method + for (iobs = 1; iobs <= SzFreq_totobs; iobs++) + { + if (SzFreq_obs_hdr(iobs, 3) > 0) + { + k = SzFreq_obs_hdr(iobs, 6); + f = abs(SzFreq_obs_hdr(iobs, 3)); + z1 = SzFreq_obs_hdr(iobs, 7); + z2 = SzFreq_obs_hdr(iobs, 8); + int Sz_method = SzFreq_obs1(iobs, 1); // sizecomp method + int logL_method = Comp_Err_Sz(Sz_method); + temp_logL = 0.0; + switch (logL_method) + { + case 0: // multinomial + { + temp_logL += Comp_logL_multinomial( SzFreq_sampleN(iobs), SzFreq_obs(iobs)(z1, z2), SzFreq_exp(iobs)(z1, z2)); + break; + } + case 1: // dirichlet with theta*n + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(Sz_method),1))) * SzFreq_sampleN(iobs); // theta * n + temp_logL -= gammln(dirichlet_Parm) - gammln( SzFreq_sampleN(iobs) + dirichlet_Parm ); + temp_logL -= Comp_logL_Dirichlet( SzFreq_sampleN(iobs), dirichlet_Parm, SzFreq_obs(iobs)(z1, z2), SzFreq_exp(iobs)(z1, z2)); + break; + } + case 2: // dirichlet with beta + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(Sz_method),1))); // beta + temp_logL -= gammln(dirichlet_Parm) - gammln( SzFreq_sampleN(iobs) + dirichlet_Parm ); + temp_logL -= Comp_logL_Dirichlet( SzFreq_sampleN(iobs), dirichlet_Parm, SzFreq_obs(iobs)(z1, z2), SzFreq_exp(iobs)(z1, z2)); + break; + } + case 3: // MV Tweedie + { + break; + } + } + SzFreq_like(SzFreq_LikeComponent(f, k)) += temp_logL; + SzFreq_eachlike(iobs) = value(temp_logL) - SzFreq_each_offset(iobs); + } + } + + if (do_once == 1) + echoinput << " did sizefreq obj_fun: " << SzFreq_like << " base: " << offset_Sz_tot << endl; + } + + // SS_Label_Info_25.8 #Fit to morph composition + if (Do_Morphcomp > 0) + { + for (iobs = 1; iobs <= Morphcomp_nobs; iobs++) + { + k = 5 + Morphcomp_nmorph; + if (Morphcomp_obs(iobs, 3) > 0.) + Morphcomp_like -= Morphcomp_obs(iobs, 5) * Morphcomp_obs(iobs)(6, k) * log(elem_div(Morphcomp_exp(iobs)(6, k), Morphcomp_obs(iobs)(6, k))); + } + if (do_once == 1) + echoinput << "Finished morphcomp obj_fun " << Morphcomp_like << endl; + } + + // SS_Label_Info_25.9 #Fit to tag-recapture + if (Do_TG > 0) + { + k = 1 + 2 * N_TG; + for (TG = 1; TG <= N_TG; TG++) + { + if (TG_use(TG) >= TG_min_recap) + { + j = TG + 2 * N_TG; + if (TG_parm_PH(j) == -1000.) + { + } // do nothing keep k at same value + else + { + if (TG_parm_PH(j) > -1000.) + { + k = j; + } + else + { + k = -1000 - TG_parm_PH(j) + 2 * N_TG; + } + } + overdisp = TG_parm(k); + for (TG_t = TG_mixperiod; TG_t <= TG_endtime(TG); TG_t++) + { + TG_recap_exp(TG, TG_t)(1, Nfleet) += 1.0e-6; // add a tiny amount + TG_recap_exp(TG, TG_t, 0) = sum(TG_recap_exp(TG, TG_t)(1, Nfleet)); + TG_recap_exp(TG, TG_t)(1, Nfleet) /= TG_recap_exp(TG, TG_t, 0); + if (Nfleet > 1) + TG_like1(TG) -= TG_recap_obs(TG, TG_t, 0) * (TG_recap_obs(TG, TG_t)(1, Nfleet) * log(TG_recap_exp(TG, TG_t)(1, Nfleet))); + TG_like2(TG) -= log_negbinomial_density(TG_recap_obs(TG, TG_t, 0), TG_recap_exp(TG, TG_t, 0), overdisp); + } + } + } + if (do_once == 1) + echoinput << "Finished tag obj_fun " << TG_like1 << endl + << TG_like2 << endl; + } + + /* + // SS_Label_Info_25.10 #Fit to initial equilibrium catch + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 1 && obs_equ_catch(s, f) > 0.0 && (init_equ_lambda(f, k_phase) > 0.0 || save_for_report > 0)) + { + equ_catch_like(f) += 0.5 * square((log(1.1 * obs_equ_catch(s, f)) - log(est_equ_catch(s, f) * catch_mult(styr - 1, f) + 0.1 * obs_equ_catch(s, f))) / catch_se(styr - 1, f)); + } + } + if (do_once == 1) + echoinput << " initequ_catch -log(L) " << equ_catch_like << endl; + */ + + // SS_Label_Info_25.11 #Fit to catch by fleet/season + if (F_Method > 1) // so not doing Pope's + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (fleet_type(f) == 1) // fleet has retained catch, so bypassing bycatch and predator fleets + { + i = 3 * catchunits(f); // because catchunits is 1 for bio and 2 for numbers + for (y = styr-1; y <= endyr; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas - 1 + s; + if (catch_ret_obs(f, t) > 0.0) + { + // catch_like(f) += 0.5*square( (log(catch_ret_obs(f,t)) -log(catch_fleet(t,f,i)+0.000001)) / catch_se(t,f)); + temp = 0.5 * square((log(1.1 * catch_ret_obs(f, t)) - log(catch_fleet(t, f, i) * catch_mult(y, f) + 0.1 * catch_ret_obs(f, t))) / catch_se(t, f)); + if (y == styr - 1) + {equ_catch_like(f) += temp;} + else + {catch_like(f) += temp;} +// echoinput<0) + // for (i=styr_rec+1;i<=endyr;i++) + // rec_like(1) += square((chi(i)- rho*chi(i-1)) /(sqrt(1.-rho*rho))) / (2.*sigmaRsq) + log(sigr); + // else + // rec_like(1) = (norm2( chi + sigmaRsq/2. ) / (2*sigmaRsq)) / (2.*sigmaRsq) + size_count(chi)*log(sigr); + + if ((recrdev_lambda(k_phase) > 0.0 || save_for_report > 0) && (do_recdev > 0 || recdev_do_early > 0)) + { + recr_like = sd_offset_rec * log(sigmaR); + // where sd_offset_rec takes account for the number of recruitment years fully estimated + // this is calculated as the sum of the biasadj vector + if (do_recdev < 3) + { + if (SR_autocorr == 0) + { + recr_like += norm2(recdev(recdev_first, recdev_end)) / two_sigmaRsq; + } + else + { + rho = SRparm(N_SRparm2); + recr_like += square(recdev(recdev_first)) / two_sigmaRsq; + for (y = recdev_first + 1; y <= recdev_end; y++) + { + recr_like += square(recdev(y) - rho * recdev(y - 1)) / ((1.0 - rho * rho) * two_sigmaRsq); + } + } + sum_recdev = sum(recdev); + } + else + { + rho = SRparm(N_SRparm2); + dvariable dev; + dvariable dev_last; + if (recdev_first >= styr) + { + dev_last = log(exp_rec(recdev_first, 4) / exp_rec(recdev_first, 3)); + } + else + { + dev_last = recdev(recdev_first); // so use devs for initial agecomp directly + } + recr_like += square(dev_last) / two_sigmaRsq; + sum_recdev = dev_last; + for (y = recdev_first + 1; y <= recdev_end; y++) + { + if (y >= styr) + { + dev = log(exp_rec(y, 4) / exp_rec(y, 3)); + } + else + { + dev = recdev(y); // so use devs for initial agecomp directly + } + recr_like += square(dev - rho * dev_last) / ((1.0 - rho * rho) * two_sigmaRsq); + dev_last = dev; + sum_recdev += dev; // get sum of devs + } + } + noBias_recr_like = recr_like - sd_offset_rec * log(sigmaR) + (recdev_end - recdev_first + 1.) * log(sigmaR); + regime_like = 0.5 * square(log(R1 / R1_exp) / (sigmaR / ave_age)); + if (do_recdev == 4) + regime_like += square(sum_recdev); + if (do_once == 1) + echoinput << "Finished recruitdev obj_fun " << recr_like << " " << sd_offset_rec << " " << two_sigmaRsq << endl; + } + if (Do_Forecast > 0 && do_recdev > 0) + { + if (recdev_end < endyr) + { + Fcast_recr_like = Fcast_recr_lambda * (norm2(Fcast_recruitments(recdev_end + 1, endyr))) / two_sigmaRsq; + // Fcast_recr_like += sd_offset_fore*log(sigmaR); this is now part of the recr_liker logL calculated above + } + if (SR_autocorr == 0) + { + Fcast_recr_like += (norm2(Fcast_recruitments(endyr + 1, YrMax))) / two_sigmaRsq; + } + else + { + Fcast_recr_like += square(Fcast_recruitments(recdev_end + 1) - rho * recdev(recdev_end)) / ((1.0 - rho * rho) * two_sigmaRsq); // for the transition year + for (y = recdev_end + 2; y <= YrMax; y++) + { + Fcast_recr_like += square(Fcast_recruitments(y) - rho * Fcast_recruitments(y - 1)) / ((1.0 - rho * rho) * two_sigmaRsq); + } + } + } + if (Do_Impl_Error > 0) + Fcast_recr_like += (norm2(Fcast_impl_error(endyr + 1, YrMax))) / (2.0 * Impl_Error_Std * Impl_Error_Std); // implementation error + + // SS_Label_Info_25.13 #Penalty for the parameter priors + dvariable mu; + dvariable tau; + dvariable Aprior; + dvariable Bprior; + dvariable Pconst; + Pconst = 0.0001; + + if (parm_prior_lambda(k_phase) > 0.0 || Do_all_priors > 0 || save_for_report > 0) + { + for (i = 1; i <= N_MGparm2; i++) + if (MGparm_PRtype(i) > 0 && (active(MGparm(i)) || Do_all_priors > 0)) + { + MGparm_Like(i) = Get_Prior(MGparm_PRtype(i), MGparm_LO(i), MGparm_HI(i), MGparm_PR(i), MGparm_CV(i), MGparm(i)); + parm_like += MGparm_Like(i); + } + for (i = 1; i <= N_init_F; i++) + if (init_F_PRtype(i) > 0 && (active(init_F(i)) || Do_all_priors > 0)) + { + init_F_Like(i) = Get_Prior(init_F_PRtype(i), init_F_LO(i), init_F_HI(i), init_F_PR(i), init_F_CV(i), init_F(i)); + parm_like += init_F_Like(i); + } + + for (i = 1; i <= Q_Npar2; i++) + if (Q_parm_PRtype(i) > 0 && (active(Q_parm(i)) || Do_all_priors > 0)) + { + Q_parm_Like(i) = Get_Prior(Q_parm_PRtype(i), Q_parm_LO(i), Q_parm_HI(i), Q_parm_PR(i), Q_parm_CV(i), Q_parm(i)); + parm_like += Q_parm_Like(i); + } + + for (i = 1; i <= N_selparm2; i++) + if (selparm_PRtype(i) > 0 && (active(selparm(i)) || Do_all_priors > 0)) + { + selparm_Like(i) = Get_Prior(selparm_PRtype(i), selparm_LO(i), selparm_HI(i), selparm_PR(i), selparm_CV(i), selparm(i)); + parm_like += selparm_Like(i); + } + if (Do_TG > 0) + { + k = 3 * N_TG + 2 * Nfleet1; + for (i = 1; i <= k; i++) + if (TG_parm2(i, 5) > 0 && (active(TG_parm(i)) || Do_all_priors > 0)) + { + TG_parm_Like(i) = Get_Prior(TG_parm2(i, 6), TG_parm_LO(i), TG_parm_HI(i), TG_parm2(i, 4), TG_parm2(i, 5), TG_parm(i)); + parm_like += TG_parm_Like(i); + } + } + + for (i = 1; i <= N_SRparm3; i++) + if (SRparm_PRtype(i) > 0 && (active(SRparm(i)) || Do_all_priors > 0)) + { + SRparm_Like(i) = Get_Prior(SRparm_PRtype(i), SRparm_LO(i), SRparm_HI(i), SRparm_PR(i), SRparm_CV(i), SRparm(i)); + parm_like += SRparm_Like(i); + } + // SS_Label_Info_25.14 #logL for recdev_cycle + if (recdev_cycle > 0) + { + temp = 0.0; + temp1 = 0.0; + for (i = 1; i <= recdev_cycle; i++) + { + if (recdev_cycle_parm_RD(i, 5) > 0 && (active(recdev_cycle_parm(i)) || Do_all_priors > 0)) + { + recdev_cycle_Like(i) = Get_Prior(recdev_cycle_parm_RD(i, 6), recdev_cycle_parm_RD(i, 1), recdev_cycle_parm_RD(i, 2), recdev_cycle_parm_RD(i, 4), recdev_cycle_parm_RD(i, 5), recdev_cycle_parm(i)); + parm_like += recdev_cycle_Like(i); + temp += mfexp(recdev_cycle_parm(i)); // accumulate values that should each be near 1.0 if there is no cycle effect + temp1 += 1.0; // accumulate N + } + } + temp -= temp1; // should be near zero + parm_like += 10000. * temp * temp; // similar to ADMB's approach to getting zero-centered dev_vectors + } + } + // SS_Label_Info_25.15 #logL for parameter process errors (devs) + { + for (i = 1; i <= N_parm_dev; i++) + { + if (parm_dev_lambda(k_phase) > 0.0 || save_for_report > 0) + { + if (parm_dev_type(i) == 1) // in timevary the adjusted parm is: p'=p+dev*se; so assumes that the devs are distributed as unit normal + { + dvariable temp; + if (parm_dev_use_rho(i) == 0) // no rho + { + temp = 0.5; // temp=1.00 / (2.000*square(1.0)); + parm_dev_like(i, 1) = square(parm_dev(i, parm_dev_minyr(i))); // first year + for (j = parm_dev_minyr(i) + 1; j <= parm_dev_maxyr(i); j++) + { + parm_dev_like(i, 1) += square(parm_dev(i, j)); + } + } + else + { + temp = 0.5 / ((1.0 - parm_dev_rho(i) * parm_dev_rho(i))); // temp=1.00 / (2.000*(1.0-parm_dev_rho(i)*parm_dev_rho(i))*square(1.0)); + parm_dev_like(i, 1) += square(parm_dev(i, parm_dev_minyr(i))); // first year + for (j = parm_dev_minyr(i) + 1; j <= parm_dev_maxyr(i); j++) + { + parm_dev_like(i, 1) += square(parm_dev(i, j) - parm_dev_rho(i) * (parm_dev(i, j - 1))); + } + } + parm_dev_like(i, 1) *= temp; + parm_dev_like(i, 2) = 0.0; // += float(parm_dev_maxyr(i)-parm_dev_minyr(i)+1.)*log(1.0); + // parm_dev_like(i,2), is included in the total parm_dev_like by user setting: sd_offset=1.0 + } + else if (parm_dev_type(i) == 3) // for testing only and compatibility with 3.30.12 and earlier 3.30 + { + dvariable temp; + temp = 1.00 / (2.000 * (1.0 - parm_dev_rho(i) * parm_dev_rho(i)) * square(1.00)); + parm_dev_like(i, 1) += square(parm_dev(i, parm_dev_minyr(i))); // first year + for (j = parm_dev_minyr(i) + 1; j <= parm_dev_maxyr(i); j++) + { + parm_dev_like(i, 1) += square(parm_dev(i, j) - parm_dev_rho(i) * parm_dev(i, j - 1)); + } + parm_dev_like(i, 1) *= temp; + parm_dev_like(i, 2) += float(parm_dev_maxyr(i) - parm_dev_minyr(i) + 1.) * log(parm_dev_stddev(i)); + // include parm_dev_like(i,2) in the total, or not, using sd_offset + } + else if (parm_dev_type(i) == 4) // for testing only + { + dvariable temp; + temp = 0.5 / ((1.0 - parm_dev_rho(i) * parm_dev_rho(i))); // temp=1.00 / (2.000*(1.0-parm_dev_rho(i)*parm_dev_rho(i))*square(1.0)); + parm_dev_like(i, 1) += square(parm_dev(i, parm_dev_minyr(i))); // first year + for (j = parm_dev_minyr(i) + 1; j <= parm_dev_maxyr(i); j++) + { + parm_dev_like(i, 1) += square(parm_dev(i, j) - parm_dev_rho(i) * (parm_dev(i, j - 1))); + } + parm_dev_like(i, 1) *= temp; + parm_dev_like(i, 2) = square(10. * (1.0 - (sumsq(parm_dev(i) + 1.0e-9) / float(parm_dev_maxyr(i) - parm_dev_minyr(i) + 1.)))); + } + else // 2D_AR devs + { +// TwoD_AR_def: 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase +// 10-mindimension, 11=maxdim, 12-N_parm_dev, 13-selparm_location + + f = parm_dev_info(i); // pointer from list of devvectors to 2DAR list + dvariable sigmasel = selparm(TwoD_AR_def[f](13)); + parm_dev_stddev(i) = sigmasel; + parm_dev_rho(i) = 0.0; + parm_dev_like(i, 1) -= -0.5 * log(det_cor(f)); + if (TwoD_AR_def[f](6) <= TwoD_AR_def[f](4)) // only one sigmasel by age + { + // nll -= - 0.5*log(det(cor)) - 0.5*nages*nyears*log(2.0*PI ) - 0.5*S_hat_vec*inv(cor)*S_hat_vec/pow(sigmaS,2) - 0.5*2*nages*nyears*log(sigmaS); + if (TwoD_AR_def[f](7) == 0) // do not use rho + { + parm_dev_like(i, 1) -= -0.5 * TwoD_AR_degfree(f) * log(2.0 * PI) - 0.5 * sumsq(parm_dev(i)) / pow(sigmasel, 2); + parm_dev_like(i, 2) -= -TwoD_AR_degfree(f) * log(sigmasel); + } + else + { + parm_dev_like(i, 1) -= -0.5 * TwoD_AR_degfree(f) * log(2.0 * PI) - 0.5 * parm_dev(i) * inv_cor(f) * parm_dev(i) / pow(sigmasel, 2); + parm_dev_like(i, 2) -= -TwoD_AR_degfree(f) * log(sigmasel); + } + } + else // some age-specific sigmasel + // note that devs are organized as list with age nested within year + { + int devcnt; + for (a = TwoD_AR_def[f](4); a <= TwoD_AR_def[f](5); a++) + { + dvariable sigmasel = selparm(TwoD_AR_def[f](13) + min(a, TwoD_AR_def[f](6)) - TwoD_AR_def[f](4)); + dvariable degfree = TwoD_AR_degfree(f) / (TwoD_AR_def[f](5) - TwoD_AR_def[f](4) + 1.0); // df per age + // if(TwoD_AR_def[f](7)==0) // do not use rho + { + parm_dev_like(i, 1) -= -0.5 * degfree * log(2.0 * PI); + parm_dev_like(i, 2) -= -degfree * log(sigmasel); + temp = 0.0; + devcnt = a - TwoD_AR_def[f](4) + 1.0; // dev counter in first year + j = TwoD_AR_def[f](5) - TwoD_AR_def[f](4) + 1; // n ages + for (int y = TwoD_AR_def[f](2); y <= TwoD_AR_def[f](3); y++) + { + temp += square(parm_dev(i, devcnt)); // ignore rho for now; need indexing for inv_cor() + devcnt += j; + } + parm_dev_like(i, 1) -= -0.5 * temp / (sigmasel * sigmasel); + } + } + // nll -= - 0.5*log(det(cor)) - 0.5*nages*nyears*log(2.0*PI ) - 0.5*S_hat_vec*inv(cor)*S_hat_vec/pow(sigmaS,2) - 0.5*2*nages*nyears*log(sigmaS); + } + } + } + } + } + + for (f = 1; f <= Nfleet; f++) + if (Q_setup(f, 4) == 3) + { + // parm_dev_like += Q_dev_like(f,1); // mean component for dev approach (var component is already in the parm priors) + // do not include for randwalk (Qsetup==4) + } + + // SS_Label_Info_25.16 #Penalty for F_ballpark + if (F_ballpark_yr >= styr) + { + if (F_Method == 1) + { + temp = annual_F(F_ballpark_yr, 1); + } + else + { + temp = annual_F(F_ballpark_yr, 2); + } + // in future, could allow specification of a range of years for averaging the F statistic + F_ballpark_like = 0.5 * square(log((F_ballpark + 1.0e-6) / (temp + 1.0e-6)) / 1.0) + sd_offset * log(1.0); + } + else + { + F_ballpark_like = 0.0; + } + + // SS_Label_Info_25.17 #Penalty for soft boundaries, uses the symmetric beta prior code + if (SoftBound > 0) + { + for (i = 1; i <= N_selparm2; i++) + { + if (selparm_PH_soft(i) > 0) + { + SoftBoundPen += Get_Prior(1, selparm_LO(i), selparm_HI(i), 1., 0.001, selparm(i)); + } + } + } + + // SS_Label_Info_25.18 #Crash penalty + // CrashPen = square(1.0+CrashPen)-1.0; this was used until V3.00L 7/10/2008 + CrashPen = square(1.0 + (1000. * CrashPen / (1000. + CrashPen))) - 1.0; + // SS_Label_Info_25.19 #Sum the likelihood components weighted by lambda factors + // cout<<" obj_fun start "< 0) + obj_fun += SzFreq_like * column(SzFreq_lambda, k_phase); + // cout<<" obj_fun sizefreq "< 0) + obj_fun += Morphcomp_lambda(k_phase) * Morphcomp_like; + if (Do_TG > 0 && Nfleet > 1) + obj_fun += TG_like1 * column(TG_lambda1, k_phase); + if (Do_TG > 0) + obj_fun += TG_like2 * column(TG_lambda2, k_phase); + // cout<<" obj_fun final "< 2.0) + { + warnstream << "1st iteration warning: annual F in endyr > 2.0; check configuration; suggest start with larger R0"; + write_message (WARN, 0); + } + if (sum(catch_like) > 0.5 * obj_fun && F_Method != 2) + { + warnstream << "1st iteration warning: catch logL > 50% total logL; check configuration; suggest start with larger R0"; + write_message (WARN, 0); + } + do_once = 0; + } + } // end objective_function + +//******************************************************************** + /* SS_Label_FUNCTION 26 Process_STDquant */ +FUNCTION void Process_STDquant() + { + for (y = styr - 2; y <= YrMax; y++) + { + if (STD_Yr_Reverse(y) > 0) + { + SSB_std(STD_Yr_Reverse(y)) = SSB_yr(y); + recr_std(STD_Yr_Reverse(y)) = exp_rec(y, 4); + } + if (STD_Yr_Reverse_Dep(y) > 0) + { + depletion(STD_Yr_Reverse_Dep(y)) = SSB_yr(y); + } + } + + switch (SPR_reporting) + { + case 0: // no scaling. this option skips SPR_reporting + { + break; + } + case 1: // compare to SPR + { + // SPR_std = (1.-SPR_std)/(1.-SPR_actual); + SPR_std = (1. - SPR_std) / (1. - SPR_target); + break; + } + case 2: // compare to SPR_MSY + { + SPR_std = (1. - SPR_std) / (1. - MSY_SPR); + break; + } + case 3: // compare to SPR_Btarget + { + SPR_std = (1. - SPR_std) / (1. - SPR_Btgt); + break; + } + case 4: // 1-%SPR + { + SPR_std = 1. - SPR_std; + break; + } + case 5: // raw %SPR + { + break; + } + } + + switch (depletion_basis) + { + case 0: + { + depletion /= SSB_virgin; + break; + } + case 1: + { + depletion /= (depletion_level * SSB_virgin); + Mgmt_quant(19) = SSB_virgin; + break; + } + case 2: + { + depletion /= (depletion_level * Bmsy); + Mgmt_quant(19) = Bmsy; + break; + } + case 3: + { + depletion /= (depletion_level * SSB_yr(styr)); + Mgmt_quant(19) = SSB_yr(styr); + break; + } + case 4: + { + depletion /= (depletion_level * SSB_yr(endyr)); + Mgmt_quant(19) = SSB_yr(endyr); + break; + } + case 5: // dynamic Bzero + { + for (y = first_catch_yr; y <= YrMax; y++) + if (STD_Yr_Reverse_Dep(y) > 0) + { +// warning< 1) + { + for (y = endyr; y >= first_catch_yr + 1; y--) + { + temp = depletion(STD_Yr_Reverse_Dep(y)); // initialize + for (y1 = y - 1; y1 > max(first_catch_yr, y - depletion_multi); y1--) + { + temp += depletion(STD_Yr_Reverse_Dep(y1)); + } + depletion(STD_Yr_Reverse_Dep(y)) = temp / (y - y1); + } + } + + // Use the selected F method for the forecast as the denominator for the F_std ratio + switch (F_std_basis) + { + case 0: // keep as raw value + { + break; + } + case 1: // compare to SPR + { + F_std /= Mgmt_quant(10); + break; + } + case 2: // compare to SPR_MSY + { + F_std /= Mgmt_quant(14); + break; + } + case 3: // compare to SPR_Btarget + { + F_std /= Mgmt_quant(7); + break; + } + } + if (F_std_log == 1) + F_std = log(F_std); + + // Do multi-year average of F_std if requested; assumes that F_std is NOT custom, so exists for all years + // otherwise, would need to check for positive value for STD_Yr_Reverse_F(y) and need to deal with averaging across not-reporting years = MESSY + // note that averaging starts in endyr, not endyr+N_forecast; otherwise the averaging could span endyr. + if (F_std_multi > 1) + { + for (y = endyr; y >= styr + 1; y--) + { + temp = F_std(STD_Yr_Reverse_F(y)); // initialize + for (y1 = y - 1; y1 > max(styr, y - F_std_multi); y1--) + { + temp += F_std(STD_Yr_Reverse_F(y1)); + } + F_std(STD_Yr_Reverse_F(y)) = temp / (y - y1); + } + } + + // SS_Label_7.8 get extra std quantities + // selectivity + // f = Do_Selex_Std + if (Selex_Std_Cnt > 0) + { + for (i = 1; i <= Selex_Std_Cnt; i++) + { + j = Selex_Std_Pick(i); + if (Selex_Std_AL == 1) + { + Extra_Std(i) = sel_l(Selex_Std_Year, Do_Selex_Std, 1, j); + if (gender == 2) + Extra_Std(i + Selex_Std_Cnt) = sel_l(Selex_Std_Year, Do_Selex_Std, 2, j); + } + else if (Selex_Std_AL == 2) + { + Extra_Std(i) = sel_a(Selex_Std_Year, Do_Selex_Std, 1, j); + if (gender == 2) + Extra_Std(i + Selex_Std_Cnt) = sel_a(Selex_Std_Year, Do_Selex_Std, 2, j); + } + else if (Selex_Std_AL == 3) + { + // 4darray sel_num(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected numbers + // 4darray save_sel_num(styr-3*nseas,TimeMax_Fcast_std+nseas,0,Nfleet,1,gmorph,0,nages) // save sel_num (Asel_2) and save fecundity for output; +nseas covers no forecast setups + + int t_write = styr + (Selex_Std_Year - styr) * nseas; // season 1 of selected year + g = g_Start(1) + N_platoon; // mid morph for first GP for females + Extra_Std(i) = save_sel_num(t_write, Do_Selex_Std, g, j); + if (gender == 2) + { + g = g_Start(1 + N_GP) + N_platoon; // mid morph for first GP for males + Extra_Std(i + Selex_Std_Cnt) = save_sel_num(t_write, Do_Selex_Std, g, j); + } + } + } + } + + // growth + if (Growth_Std_Cnt > 0) + { + int t_write = styr + (endyr - styr) * nseas; // season 1 of endyr + for (i = 1; i <= Growth_Std_Cnt; i++) + { + j = Growth_Std_Pick(i); // selected age + k = g_finder(Do_Growth_Std, 1); // selected GP and gender gp3 + Extra_Std(gender * Selex_Std_Cnt + i) = Ave_Size(t_write, mid_subseas, k, j); + if (gender == 2) + { + k = g_finder(Do_Growth_Std, 2); // selected GP and gender gp3 + Extra_Std(gender * Selex_Std_Cnt + Growth_Std_Cnt + i) = Ave_Size(t_write, mid_subseas, k, j); + } + } + } + + // numbers at age + if (NatAge_Std_Cnt > 0) + { + if (Do_NatAge_Std < 0) // sum all areas + { + p1 = 1; + p2 = pop; + } + else // selected area + { + p1 = Do_NatAge_Std; + p2 = Do_NatAge_Std; + } + y = NatAge_Std_Year; + t = styr + (y - styr) * nseas; // first season of selected year + for (i = 1; i <= NatAge_Std_Cnt; i++) + { + a = NatAge_Std_Pick(i); // selected age + temp = 0.; + for (p = p1; p <= p2; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 1 && use_morph(g) > 0) + { + temp += natage(t, p, g, a); // note, uses season 1 only + } + } + Extra_Std(gender * (Selex_Std_Cnt + Growth_Std_Cnt) + i) = temp; + if (gender == 2) + { + temp = 0.; + for (p = p1; p <= p2; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == 2 && use_morph(g) > 0) + { + temp += natage(t, p, g, a); // note, uses season 1 only + } + } + Extra_Std(gender * (Selex_Std_Cnt + Growth_Std_Cnt) + NatAge_Std_Cnt + i) = temp; + } + } + } + + // NatM + // shortcut natM( doing area 1 only + if (NatM_Std_Cnt > 0) + { + t = styr + (endyr - styr) * nseas; // first season of selected year + for (i = 1; i <= NatM_Std_Cnt; i++) + { + j = NatM_Std_Pick(i); // selected age + k = g_finder(Do_NatM_Std, 1); // selected GP and gender gp3 + Extra_Std(gender * (Selex_Std_Cnt + Growth_Std_Cnt + NatAge_Std_Cnt) + i) = natM(t, 1, k, j); + if (gender == 2) + { + k = g_finder(Do_NatM_Std, 2); // selected GP and gender gp3 + Extra_Std(gender * (Selex_Std_Cnt + Growth_Std_Cnt + NatAge_Std_Cnt) + NatM_Std_Cnt + i) = natM(t, 1, k, j); + } + } + } + + // ln(SSB) + Extra_Std(Do_se_LnSSB) = log(SSB_yr(styr)); + Extra_Std(Do_se_LnSSB + 1) = log(SSB_yr(int((styr + endyr) / 2))); + Extra_Std(Do_se_LnSSB + 2) = log(SSB_yr(endyr)); + + if (Do_se_smrybio > 0) // do stderr of SmryBio + { + k = Do_se_smrybio; + for (j = styr - 2; j <= YrMax; j++) + { + Extra_Std(k) = Smry_Table(j, 2); + k++; + } + } + + if (Svy_N > 0) + { + int Svy_sdreport_counter = 1; + for (f = 1; f <= Nfleet; f++) + { + if (Svy_sdreport(f) > 0) + { + for (i = 1; i <= Svy_N_fleet(f); i++) + { + Svy_sdreport_est(Svy_sdreport_counter) = Svy_est(f, i); + ++Svy_sdreport_counter; + } + } + } + } + } + +//******************************************************************** + /* SS_Label_FUNCTION 27 Check_Parm */ +FUNCTION dvariable Check_Parm(const int iparm, const int& PrPH, const double& Pmin, const double& Pmax, const int& Prtype, const double& Pr, const double& Psd, const double& jitter, const prevariable& Pval) + { + RETURN_ARRAYS_INCREMENT(); + const double bound = 0.001; + const dvariable zmin = inv_cumd_norm(bound); // z value for Pmin + const dvariable zmax = inv_cumd_norm((1.0 - bound)); // z value for Pmax + const dvariable Pmean = (Pmin + Pmax) / 2.0; + dvariable NewVal; + // dvariable temp; + dvariable Psigma, zval, kval, kjitter, zjitter, temp; + + NewVal = Pval; + if (Pval > -900) + { + if (Pmin > Pmax) + { + warnstream << "parameter min > parameter max " << Pmin << " > " << Pmax << " for parm: " << iparm; + write_message(FATAL, 1); // EXIT! + } + else if (Pmin == Pmax && PrPH >= 0) + { + warnstream << "parameter min is same as parameter max: " << Pmin << " = " << Pmax << " for parm: " << iparm ; + write_message (WARN, 1); + } + else if (Pval < Pmin) + { + warnstream << "parameter init value is less than parameter min " << Pval << " < " << Pmin << " for parm: " << iparm; + write_message (WARN, 1); + if (Prtype > 0) + exit(1); + } + else if (Pval > Pmax) + { + warnstream << "parameter init value is greater than parameter max " << Pval << " > " << Pmax << " for parm: " << iparm; + write_message (WARN, 1); + if (Prtype > 0) + exit(1); + } + + if (jitter > 0.0 && PrPH >= 0) + { + if ((Pmin <= -99 || Pmax >= 999)) + { + warnstream << "jitter not done unless parameter min & max are in reasonable parameter range " << Pmin << " " << Pmax; + write_message (WARN, 0); + } + else + { + // generate jitter value from cumulative normal given Pmin and Pmax + Psigma = (Pmax - Pmean) / zmax; // Psigma should also be equal to (Pmin - Pmean) / zmin; + if (Psigma < 0.00001) // how small a sigma is too small? + { + warnstream << "in Check_Parm jitter: Psigma < 0.00001 " << Psigma; + write_message (FATAL, 0); // EXIT! + } + zval = (Pval - Pmean) / Psigma; // current parm value converted to zscore + kval = cumd_norm(zval); + temp = randu(radm); + kjitter = kval + (jitter * ((2.00 * temp) - 1.)); // kjitter is between kval - jitter and kval + jitter + if (kjitter < bound) + { + NewVal = Pmin + 0.1 * (Pval - Pmin); + } + else if (kjitter > (1.0 - bound)) + { + NewVal = Pmax - 0.1 * (Pmax - Pval); + } + else + { + zjitter = inv_cumd_norm(kjitter); + NewVal = (Psigma * zjitter) + Pmean; + } + echoinput << "jitter (min, max, old, new): " << Pmin << " " << Pmax << " " << Pval << " " << NewVal << endl; + } + } + // now check prior + if (Prtype > 0) + { + if (Psd <= 0.0) + { + warnstream << "A prior is selected but prior sd is zero. Prtype: " << Prtype << " Prior: " << Pr << " Pr_sd: " << Psd << " for parm: " << iparm << " ; see echoinput for parm_type"; + write_message (FATAL, 0); // EXIT! + } + if (PrPH < 0) + { + prior_ignore_warning++; + } + } + } + else + { + // checking ignored for inputs that are special codes + } + + RETURN_ARRAYS_DECREMENT(); + return NewVal; + } + +//******************************************************************** + /* SS_Label_FUNCTION 29 Get_Prior */ +FUNCTION dvariable Get_Prior(const int T, const double& Pmin, const double& Pmax, const double& Pr, const double& Psd, const prevariable& Pval) + { + RETURN_ARRAYS_INCREMENT(); + dvariable Prior_Like = 0.; + dvariable mu; + dvariable tau; + dvariable Pconst = 0.0001; + dvariable Bprior; + dvariable Aprior; + switch (T) + { + case 0: // none + { + Prior_Like = 0.; + break; + } + case 6: // normal + { + Prior_Like = 0.5 * square((Pval - Pr) / Psd); + break; + } + case 1: // symmetric beta value of Psd must be >0.0 + { + mu = -(Psd * (log((Pmax + Pmin) * 0.5 - Pmin))) - (Psd * (log(0.5))); + Prior_Like = -(mu + (Psd * (log(Pval - Pmin + Pconst))) + (Psd * (log(1. - ((Pval - Pmin - Pconst) / (Pmax - Pmin)))))); + break; + } + case 2: // CASAL's Beta; check to be sure that Aprior and Bprior are OK before running SS2! + { + mu = (Pr - Pmin) / (Pmax - Pmin); // CASAL's v + tau = (Pr - Pmin) * (Pmax - Pr) / square(Psd) - 1.0; + Bprior = tau * mu; + Aprior = tau * (1.0 - mu); // CASAL's m and n + if (Bprior <= 1.0 || Aprior <= 1.0) + { + warnstream << "Bad Beta prior " << Pval << " " << Pr; + write_message (WARN, 0); + } + Prior_Like = (1.0 - Bprior) * log(Pconst + Pval - Pmin) + (1.0 - Aprior) * log(Pconst + Pmax - Pval) - (1.0 - Bprior) * log(Pconst + Pr - Pmin) - (1.0 - Aprior) * log(Pconst + Pmax - Pr); + break; + } + case 3: // lognormal without bias correction + { + if (Pmin > 0.0) + { + Prior_Like = 0.5 * square((log(Pval) - Pr) / Psd); + } + else + { + warnstream << "Cannot do prior in log space for parm with min <=0.0" ; + write_message (WARN, 0); + } + break; + } + case 4: //lognormal with bias correction (from Larry Jacobson) + { + if (Pmin > 0.0) + Prior_Like = 0.5 * square((log(Pval) - Pr + 0.5 * square(Psd)) / Psd); + else + { + warnstream << "Cannot do prior in log space for parm with min <=0.0"; + write_message (WARN, 0); + } + break; + } + case 5: //gamma (from Larry Jacobson) + { + double warnif = 1e-15; + if (Pmin < 0.0) + { + warnstream << "Lower bound for gamma prior must be >=0. Suggest " << warnif * 10.0; + write_message (WARN, 0); + } + else + { + //Gamma is defined over [0,+inf) but x=zero causes trouble for some mean/variance combos. + if (Pval < warnif) + { + warnstream << "Pval too close to zero in gamma prior - can not guarantee reliable calculations. Suggest rescaling data (e.g. * 1000)? "; + write_message (WARN, 0); + } + else + { + dvariable scale = square(Psd) / Pr; // gamma parameters by method of moments + dvariable shape = Pr / scale; + Prior_Like = -1 * (-shape * log(scale) - gammln(shape) + (shape - 1.0) * log(Pval) - Pval / scale); + } + } + break; + } + } + RETURN_ARRAYS_DECREMENT(); + return Prior_Like; + } + +FUNCTION void get_posteriors() + { + //******************************************************************** + /* SS_Label_FUNCTION 33 get_posteriors (MCMC eval) */ + if (rundetail > 1) + { + cout << "mceval counter: " << mceval_counter << endl; + } + if (rundetail == 0 && double(mceval_counter) / 200. == double(mceval_counter / 200.)) + { + cout << "mceval counter: " << mceval_counter << endl; + } + if (mceval_header == 0 && mceval_phase()) // first pass through the mceval phase + { + // delete any old mcmc output files + // will generate a warning if no files exist + // but will play through just fine + // NOTE: "del" works on Windows only; use "rm" on other operating systems + // solution here is to open file to the first record + rebuilder.open(sso_pathname + "rebuild.sso", ios::out); + posts.open(sso_pathname + "posteriors.sso", ios::out); + der_posts.open(sso_pathname + "derived_posteriors.sso", ios::out); + post_vecs.open(sso_pathname + "posterior_vectors.sso", ios::out); + post_obj_func.open(sso_pathname + "posterior_obj_func.sso", ios::out); + } + else + { + // define the mcmc output files; + rebuilder.open(sso_pathname + "rebuild.sso", ios::app); + posts.open(sso_pathname + "posteriors.sso", ios::app); + der_posts.open(sso_pathname + "derived_posteriors.sso", ios::app); + post_vecs.open(sso_pathname + "posterior_vectors.sso", ios::app); + post_obj_func.open(sso_pathname + "posterior_obj_func.sso", ios::app); + } + + if (mceval_header == 0) // first pass through the mceval phase + { + mceval_header = 1; + // produce the appropriate headers for the posteriors.rep + // and derived_posteriors.rep files + // parameters.rep matches "PARAMETERS" section in Report.SSO file + posts << "Iter Objective_function "; + for (i = 1; i <= active_count; i++) + { + posts << " " << ParmLabel(active_parm(i)); + } + posts << endl; + + // derived quantities + // derived_parameters.rep matches "DERIVED_PARAMETERS" section in Report.SSO file + NP = ParCount; + der_posts << "Iter Objective_function "; + for (j = 1; j <= N_STD_Yr; j++) // spawning biomass + { + NP++; + der_posts << ParmLabel(NP) << " "; + } + for (j = 1; j <= N_STD_Yr; j++) // recruitment + { + NP++; + der_posts << ParmLabel(NP) << " "; + } + for (j = 1; j <= N_STD_Yr_Ofish; j++) // SPRratio + { + NP++; + der_posts << ParmLabel(NP) << " "; + } + for (j = 1; j <= N_STD_Yr_F; j++) // F + { + NP++; + der_posts << ParmLabel(NP) << " "; + } + for (j = 1; j <= N_STD_Yr_Dep; j++) // depletion (Bratio) + { + NP++; + der_posts << ParmLabel(NP) << " "; + } + for (j = 1; j <= N_STD_Mgmt_Quant; j++) // Management quantities + { + NP++; + der_posts << ParmLabel(NP) << " "; + } + for (j = 1; j <= Extra_Std_N; j++) + { + NP++; + der_posts << ParmLabel(NP) << " "; + } + der_posts << endl; + if (depletion_basis != 2) + post_vecs << "depletion_basis_is_not_=2;_so_info_below_is_not_B/Bmsy" << endl; + if (F_std_basis != 2) + post_vecs << "F_std_basis_is_not_=2;_so_info_below_is_not_F/Fmsy" << endl; + post_vecs << "Endyr+1= " << endyr + 1 << endl; + post_vecs << "run mceval objfun Numbers Area Sex Ages:" << age_vector << endl; + post_vecs << "run mceval objfun F_yr "; + for (y = styr - 1; y <= YrMax; y++) + { + if (STD_Yr_Reverse_F(y) > 0) + post_vecs << y << " "; + } + post_vecs << endl; + post_vecs << "run mceval objfun B_yr "; + for (y = styr - 1; y <= YrMax; y++) + { + if (STD_Yr_Reverse_Dep(y) > 0) + post_vecs << y << " "; + } + post_vecs << endl; + + if (mcmc_output_detail > 0) + { + std::stringstream iter_labels; + std::stringstream lambda_labels; + + iter_labels << "Iter | Objective_function"; + lambda_labels << "---- | Lambdas"; + + if (F_Method > 1) + { + iter_labels << " | Catch"; + lambda_labels << " | " << column(catch_lambda, max_lambda_phase); + } + + iter_labels << " | Equil_catch"; + lambda_labels << " | " << column(init_equ_lambda, max_lambda_phase); + + if (Svy_N > 0) + { + iter_labels << " | Survey"; + lambda_labels << " | " << column(surv_lambda, max_lambda_phase); + } + if (nobs_disc > 0) + { + iter_labels << " | Discard"; + lambda_labels << " | " << column(disc_lambda, max_lambda_phase); + } + if (nobs_mnwt > 0) + { + iter_labels << " | Mean_body_wt"; + lambda_labels << " | " << column(mnwt_lambda, max_lambda_phase); + } + if (Nobs_l_tot > 0) + { + iter_labels << " | Length_comp"; + lambda_labels << " | " << column(length_lambda, max_lambda_phase); + } + if (Nobs_a_tot > 0) + { + iter_labels << " | Age_comp"; + lambda_labels << " | " << column(age_lambda, max_lambda_phase); + } + if (nobs_ms_tot > 0) + { + iter_labels << " | Size_at_age"; + lambda_labels << " | " << column(sizeage_lambda, max_lambda_phase); + } + if (SzFreq_Nmeth > 0) + { + iter_labels << " | SizeFreq"; + lambda_labels << " | " << column(SzFreq_lambda, max_lambda_phase); + } + if (Do_Morphcomp > 0) + { + iter_labels << " | Morphcomp"; + lambda_labels << " | " << Morphcomp_lambda(max_lambda_phase); + } + if (Do_TG > 0) + { + iter_labels << " | Tag_comp | Tag_negbin"; + lambda_labels << " | " << column(TG_lambda1, max_lambda_phase) << " | " << column(TG_lambda2, max_lambda_phase); + } + + iter_labels << " | Recruitment"; + lambda_labels << " | " << recrdev_lambda(max_lambda_phase); + + iter_labels << " | Forecast_Recruitment"; + lambda_labels << " | " << Fcast_recr_lambda; + + iter_labels << " | Parm_priors"; + lambda_labels << " | " << parm_prior_lambda(max_lambda_phase); + + if (SoftBound > 0) + { + iter_labels << " | Parm_softbounds"; + lambda_labels << " | NA"; + } + + iter_labels << " | Parm_devs"; + lambda_labels << " | " << parm_dev_lambda(max_lambda_phase); + + if (F_ballpark_yr > 0) + { + iter_labels << " | F_Ballpark"; + lambda_labels << " | " << F_ballpark_lambda(max_lambda_phase); + } + + iter_labels << " | Crash_Pen "; + lambda_labels << " | " << CrashPen_lambda(max_lambda_phase); + + post_obj_func << iter_labels.str() << endl; + post_obj_func << lambda_labels.str() << endl; + } + }; // end writing headers for mceval_counter==1 + + // produce standard output of all estimated parameters + posts << mceval_counter << " " << obj_fun << " "; + for (j = 1; j <= N_MGparm2; j++) + { + if (active(MGparm(j))) + posts << MGparm(j) << " "; + } + for (i = 1; i <= N_SRparm3; i++) + { + if (active(SRparm(i))) + posts << SRparm(i) << " "; + } + + if (recdev_cycle > 0) + { + for (i = 1; i <= recdev_cycle; i++) + { + if (active(recdev_cycle_parm(i))) + posts << recdev_cycle_parm(i) << " "; + } + } + if (recdev_do_early > 0) + { + for (i = recdev_early_start; i <= recdev_early_end; i++) + { + if (active(recdev_early)) + posts << recdev(i) << " "; + } + } + if (do_recdev > 0) + { + for (i = recdev_start; i <= recdev_end; i++) + { + if (active(recdev1) || active(recdev2)) + posts << recdev(i) << " "; + } + if (Do_Forecast > 0 && active(Fcast_recruitments)) + { + for (i = recdev_end + 1; i <= YrMax; i++) + { + posts << Fcast_recruitments(i) << " "; + } + } + } + if (Do_Impl_Error > 0) + { + for (i = endyr + 1; i <= YrMax; i++) + { + posts << Fcast_impl_error(i) << " "; + } + } + for (i = 1; i <= N_init_F; i++) + { + if (active(init_F(i))) + posts << init_F(i) << " "; + } + if (N_Fparm > 0) + { + for (i = 1; i <= N_Fparm; i++) + { + if (active(F_rate(i))) + posts << F_rate(i) << " "; + } + } + for (i = 1; i <= Q_Npar2; i++) + { + if (active(Q_parm(i))) + posts << Q_parm(i) << " "; + } + for (j = 1; j <= N_selparm2; j++) + { + if (active(selparm(j))) + posts << selparm(j) << " "; + } + if (Do_TG > 0) + { + k = 3 * N_TG + 2 * Nfleet1; + for (j = 1; j <= k; j++) + { + if (active(TG_parm(j))) + posts << TG_parm(j) << " "; + } + } + if (N_parm_dev > 0) + { + for (i = 1; i <= N_parm_dev; i++) + for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) + { + if (parm_dev_PH(i) > 0) + posts << parm_dev(i, j) << " "; + } + } + posts << endl; + + // derived quantities + der_posts << mceval_counter << " " << obj_fun << " "; + for (j = 1; j <= N_STD_Yr; j++) // spawning biomass + { + der_posts << SSB_std(j) << " "; + } + for (j = 1; j <= N_STD_Yr; j++) // recruitment + { + der_posts << recr_std(j) << " "; + } + for (j = 1; j <= N_STD_Yr_Ofish; j++) // SPRratio + { + der_posts << SPR_std(j) << " "; + } + for (j = 1; j <= N_STD_Yr_F; j++) // F + { + der_posts << F_std(j) << " "; + } + for (j = 1; j <= N_STD_Yr_Dep; j++) // depletion (Bratio) + { + der_posts << depletion(j) << " "; + } + for (j = 1; j <= N_STD_Mgmt_Quant; j++) // Management quantities + { + der_posts << Mgmt_quant(j) << " "; + } + for (j = 1; j <= Extra_Std_N; j++) + { + der_posts << Extra_Std(j) << " "; + } + + der_posts << endl; + + if (Do_Rebuilder == 1) + write_rebuilder_output(); + + // derived vectors quantities + t = styr + (endyr + 1 - styr) * nseas; + for (p = 1; p <= pop; p++) + { + for (gg = 1; gg <= gender; gg++) + { + tempvec_a.initialize(); + for (g = 1; g <= gmorph; g++) + if (sx(g) == gg && use_morph(g) > 0) + { + tempvec_a += natage(t, p, g); + } + post_vecs << runnumber << " " << mceval_counter << " " << obj_fun << " N_at_Age " + << " " << p << " " << gg << " " << tempvec_a << endl; + } + } + post_vecs << runnumber << " " << mceval_counter << " " << obj_fun << " F/Fmsy " << F_std << endl; + post_vecs << runnumber << " " << mceval_counter << " " << obj_fun << " B/Bmsy " << depletion << endl; + + // output objective function components + if (mcmc_output_detail > 0) + { + post_obj_func << mceval_counter << " | " << obj_fun; + + if (F_Method > 1) + post_obj_func << " | " << catch_like; + post_obj_func << " | " << sum(equ_catch_like); + if (Svy_N > 0) + post_obj_func << " | " << surv_like; + if (nobs_disc > 0) + post_obj_func << " | " << disc_like; + if (nobs_mnwt > 0) + post_obj_func << " | " << mnwt_like; + if (Nobs_l_tot > 0) + post_obj_func << " | " << length_like_tot; + if (Nobs_a_tot > 0) + post_obj_func << " | " << age_like_tot; + if (nobs_ms_tot > 0) + post_obj_func << " | " << sizeage_like; + if (SzFreq_Nmeth > 0) + post_obj_func << " | " << SzFreq_like; + if (Do_Morphcomp > 0) + post_obj_func << " | " << Morphcomp_like; + if (Do_TG > 0) + post_obj_func << " | " << TG_like1 << " | " << TG_like2; + post_obj_func << " | " << recr_like + regime_like; + post_obj_func << " | " << Fcast_recr_like; + post_obj_func << " | " << parm_like; + if (SoftBound > 0) + post_obj_func << " | " << SoftBoundPen; + post_obj_func << " | " << (sum(parm_dev_like)); + if (F_ballpark_yr > 0) + post_obj_func << " | " << F_ballpark_like; + post_obj_func << " | " << CrashPen; + + post_obj_func << endl; + } + posts.close(); + der_posts.close(); + post_vecs.close(); + post_obj_func.close(); + } // end get_posteriors +// SS_Label_file #17. **SS_write.tpl** +// SS_Label_file # * write_summaryoutput() // append writes to *cumreport.sso* +// SS_Label_file # * write_SS_summary() // writes *ss_summary.sso* +// SS_Label_file # * write_rebuilder_output() // special output +// SS_Label_file # * write_SIStable() // deprecated, see new r4ss routines +// SS_Label_file # * write_Bzero_output() // +// SS_Label_file # * Report_Parm() // used by write_big_report in writing *report.sso* +// SS_Label_file # + + /* SS_Label_FUNCTION 36 write_summaryoutput; Writes in append mode to cumreport.sso */ +FUNCTION void write_summaryoutput() + { + random_number_generator radm(long(time(&finish))); + time(&finish); + elapsed_time = difftime(finish, start); + report2 << runnumber << " -logL: " << obj_fun << " SSB(Vir_Start_End): " << SSB_yr(styr - 2) << " " << SSB_yr(styr) << " " << SSB_yr(endyr) << endl; + report2 << runnumber << " Files: " << datfilename << " " << ctlfilename; + if (readparfile >= 1) + report2 << " Start_from_ss.par"; + report2 << endl + << runnumber << " N_iter: " << niter << " runtime(sec): " << elapsed_time << " starttime: " << ctime(&start); + report2 << runnumber << version_info(1) << version_info(2) << version_info(3) << endl; + report2 << runnumber << " F_Method: " << F_Method << " Retro_YR: " << retro_yr << " Forecast_Type: " << Do_Forecast << " MSY_Type: " << Do_MSY << endl; + if (N_SC > 0) + { + for (j = 1; j <= N_SC; j++) + report2 << runnumber << " Comment S_" << j << " " << Starter_Comments(j) << endl; + } + if (N_DC > 0) + { + for (j = 1; j <= N_DC; j++) + report2 << runnumber << " Comment D_" << j << " " << Data_Comments(j) << endl; + } + if (N_CC > 0) + { + for (j = 1; j <= N_CC; j++) + report2 << runnumber << " Comment C_" << j << " " << Control_Comments(j) << endl; + } + if (N_FC > 0) + { + for (j = 1; j <= N_FC; j++) + report2 << runnumber << " Comment F_" << j << " " << Forecast_Comments(j) << endl; + } + k = current_phase(); + if (k > max_lambda_phase) + k = max_lambda_phase; + report2 << runnumber << " Like_Emph Total 1 " << endl + << runnumber << " Like_Value Total " << obj_fun << endl; + if (Svy_N > 0) + report2 << runnumber << " Like_Emph Indices All " << column(surv_lambda, k) << endl + << runnumber << " Like_Value Indices " << surv_like * column(surv_lambda, k) << " " << surv_like << endl; + if (nobs_disc > 0) + report2 << runnumber << " Like_Emph Discard All " << column(disc_lambda, k) << endl + << runnumber << " Like_Value Discard " << disc_like * column(disc_lambda, k) << " " << disc_like << endl; + if (nobs_mnwt > 0) + report2 << runnumber << " Like_Emph MeanBodyWt All " << column(mnwt_lambda, k) << endl + << runnumber << " Like_Value MeanBodyWt " << mnwt_like * column(mnwt_lambda, k) << " " << mnwt_like << endl; + if (Nobs_l_tot > 0) + report2 << runnumber << " Like_Emph LenComp All " << column(length_lambda, k) << endl + << runnumber << " Like_Value LenComp " << length_like_tot * column(length_lambda, k) << " " << length_like_tot << endl; + if (Nobs_a_tot > 0) + report2 << runnumber << " Like_Emph AgeComp All " << column(age_lambda, k) << endl + << runnumber << " Like_Value AgeComp " << age_like_tot * column(age_lambda, k) << " " << age_like_tot << endl; + if (nobs_ms_tot > 0) + report2 << runnumber << " Like_Emph MeanLAA All " << column(sizeage_lambda, k) << endl + << runnumber << " Like_Value MeanLAA " << sizeage_like * column(sizeage_lambda, k) << " " << sizeage_like << endl; + + if (F_Method > 1) + report2 << runnumber << " Like_Emph Catch All " << column(catch_lambda, k) << endl + << runnumber << " Like_Value Catch " << catch_like * column(catch_lambda, k) << " " << catch_like << endl; + + report2 << runnumber << " Like_Emph init_equ All " << column(init_equ_lambda, k) << endl + << runnumber << " Like_Value Init_Equ " << equ_catch_like * column(init_equ_lambda, k) << " " << catch_like << endl; + + if (SzFreq_Nmeth > 0) + report2 << runnumber << " Like_Emph WeightFreq All " << column(SzFreq_lambda, k) << endl + << runnumber << " Like_Value WeightFreq " << SzFreq_like * column(SzFreq_lambda, k) << " " << SzFreq_like << endl; + if (Do_Morphcomp > 0) + report2 << runnumber << " Like_Emph Morphcomp All " << Morphcomp_lambda(k) << endl + << runnumber << " Like_Value Morphcomp " << Morphcomp_like * Morphcomp_lambda(k) << " " << Morphcomp_like << endl; + if (Do_TG > 0) + report2 << runnumber << " Like_Emph Tag_comp All " << column(TG_lambda1, k) << endl + << runnumber << " Like_Value Tag_comp " << TG_like1 * column(TG_lambda1, k) << " " << TG_like1 << endl; + if (Do_TG > 0) + report2 << runnumber << " Like_Emph Tag_negbin All " << column(TG_lambda2, k) << endl + << runnumber << " Like_Value Tag_negbin " << TG_like2 * column(TG_lambda2, k) << " " << TG_like2 << endl; + + report2 << runnumber << " Like_Comp Recruits Regime Fcast_Recr Biasadj Priors ParmDevs CrashPen" << endl; + report2 << runnumber << " Like_Emph " << recrdev_lambda(k) << " " << regime_lambda(k) << " " << Fcast_recr_lambda << " " + << parm_prior_lambda(k) << " " << parm_dev_lambda(k) << " " << CrashPen_lambda(k) << endl; + report2 << runnumber << " Like_Value*Emph " << recr_like * recrdev_lambda(k) << " " << regime_like * regime_lambda(k) << " " + << Fcast_recr_like << " " << parm_like * parm_prior_lambda(k) << " " << sum(parm_dev_like) * parm_dev_lambda(k) << " " << CrashPen * CrashPen_lambda(k) << endl; + + report2 << runnumber << " TimeSeries Yr Vir Equ " << years << " "; + k = YrMax; + if (k == endyr) + k = endyr + 1; + for (y = endyr + 1; y <= k; y++) + { + report2 << y << "F "; + } + report2 << endl; + report2 << runnumber << " Timeseries SpawnBio " << SSB_yr(styr - 2, YrMax) << endl; + report2 << runnumber << " Timeseries Recruit " << column(exp_rec, 4) << endl; + report2 << runnumber << " Timeseries TotBio " << column(Smry_Table, 1) << endl; + report2 << runnumber << " Timeseries SmryBio-" << Smry_Age << " " << column(Smry_Table, 2) << endl; + report2 << runnumber << " Timeseries TotCatch " << column(Smry_Table, 4) << endl; + report2 << runnumber << " Timeseries RetCatch " << column(Smry_Table, 5) << endl; + j = 0; + if (max(Do_Retain) > 0) + j = 1; + if (Do_Benchmark > 0) + report2 << runnumber << " Mgmt_Quant " << Mgmt_quant(1, 6 + j) << endl; + + report2 << runnumber << " Parm Labels "; + for (i = 1; i <= ParCount; i++) + { + report2 << " " << ParmLabel(i); + } + report2 << endl; + report2 << runnumber << " Parm Values "; + report2 << " " << MGparm << " "; + if (N_parm_dev > 0) + { + for (j = 1; j <= N_parm_dev; j++) + report2 << parm_dev(j) << " "; + } + report2 << SRparm << " "; + if (recdev_cycle > 0) + report2 << recdev_cycle_parm << " "; + if (recdev_do_early > 0) + report2 << recdev_early << " "; + if (do_recdev == 1) + { + report2 << recdev1 << " "; + } + if (do_recdev == 2) + { + report2 << recdev2 << " "; + } + if (Do_Forecast > 0) + report2 << Fcast_recruitments << " "; + if (Do_Impl_Error > 0) + report2 << Fcast_impl_error << " "; + if (N_init_F > 0) + report2 << init_F << " "; + if (N_Fparm > 0) + report2 << " " << F_rate; + if (Q_Npar2 > 0) + report2 << Q_parm << " "; + if (N_selparm2 > 0) + report2 << selparm << " "; + // if(N_selparm_dev>0) report2< 0) + report2 << TG_parm << " "; + report2 << endl; + + NP = 0; // count of number of parameters + report2 << runnumber << " MG_parm "; + for (j = 1; j <= N_MGparm2; j++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " MG_parm " << MGparm << endl; + + if (N_parm_dev > 0) + { + report2 << runnumber << " MG_parm_dev "; + for (i = 1; i <= N_parm_dev; i++) + { + for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " MG_parm_dev " << parm_dev(i) << endl; + } + } + + report2 << runnumber << " SRparm "; + for (i = 1; i <= N_SRparm3 + recdev_cycle; i++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " SRparm " << SRparm << " "; + if (recdev_cycle > 0) + report2 << recdev_cycle_parm; + report2 << endl; + + if (recdev_do_early > 0) + { + report2 << runnumber << " Recr_early "; + for (i = recdev_early_start; i <= recdev_early_end; i++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " Recr_early "; + for (i = recdev_early_start; i <= recdev_early_end; i++) + report2 << " " << recdev(i); + report2 << endl; + } + + if (do_recdev > 0) + { + report2 << runnumber << " Recr_main "; + for (i = recdev_start; i <= recdev_end; i++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " Recr_main "; + for (i = recdev_start; i <= recdev_end; i++) + report2 << " " << recdev(i); + report2 << endl; + } + + if (Do_Forecast > 0) + { + if (do_recdev > 0) + { + report2 << runnumber << " Recr_fore "; + for (i = recdev_end + 1; i <= YrMax; i++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " Recr_fore "; + for (i = recdev_end + 1; i <= YrMax; i++) + report2 << " " << recdev(i); + report2 << endl; + } + if (Do_Impl_Error > 0) + { + report2 << runnumber << " Impl_err "; + for (i = endyr + 1; i <= YrMax; i++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " Impl_err "; + for (i = endyr + 1; i <= YrMax; i++) + report2 << " " << Fcast_impl_error(i); + report2 << endl; + } + } + + report2 << runnumber << " init_F "; + for (i = 1; i <= N_init_F; i++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " init_F "; + for (i = 1; i <= N_init_F; i++) + report2 << " " << init_F(i); + report2 << endl; + + if (N_Fparm > 0) + { + report2 << runnumber << " F_rate "; + for (i = 1; i <= N_Fparm; i++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " F_rate "; + for (i = 1; i <= N_Fparm; i++) + report2 << " " << F_rate(i); + report2 << endl; + } + + if (Q_Npar2 > 0) + { + report2 << runnumber << " Q_parm "; + for (i = 1; i <= Q_Npar2; i++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " Q_parm "; + for (i = 1; i <= Q_Npar2; i++) + report2 << " " << Q_parm(i); + report2 << endl; + } + + if (N_selparm2 > 0) + { + report2 << runnumber << " Sel_parm "; + for (i = 1; i <= N_selparm2; i++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " Sel_parm " << selparm << endl; + } + + if (Do_TG > 0) + { + report2 << runnumber << " Tag_parm "; + for (f = 1; f <= 3 * N_TG + 2 * Nfleet1; f++) + { + NP++; + report2 << " " << ParmLabel(NP); + } + report2 << endl + << runnumber << " Tag_parm " << TG_parm << endl; + } + + if (Do_CumReport == 2) + { + if (Svy_N > 0) + for (f = 1; f <= Nfleet; f++) + if (Svy_N_fleet(f) > 0) + { + report2 << runnumber << " Index:" << f << " Yr "; + for (i = 1; i <= Svy_N_fleet(f); i++) + { + ALK_time = Svy_ALK_time(f, i); + report2 << data_time(ALK_time, f, 3) << " "; + } + report2 << endl + << runnumber << " Index:" << f << " OBS " << Svy_obs(f) << endl; + if (Svy_errtype(f) >= 0) // lognormal or lognormal T-dist + { + report2 << runnumber << " Index:" << f << " EXP " << mfexp(Svy_est(f)) << endl; + } + else // normal error + { + report2 << runnumber << " Index:" << f << " EXP " << Svy_est(f) << endl; + } + } + + data_type = 4; + for (f = 1; f <= Nfleet; f++) + if (Nobs_l(f) > 0) + { + report2 << runnumber << " Len:" << f << " YR "; + for (i = 1; i <= Nobs_l(f); i++) + { + t = Len_time_t(f, i); + ALK_time = Len_time_ALK(f, i); + report2 << data_time(ALK_time, f, 3) << " "; + } + report2 << endl + << runnumber << " Len:" << f << " effN " << neff_l(f) << endl; + } + + data_type = 5; + for (f = 1; f <= Nfleet; f++) + if (Nobs_a(f) > 0) + { + report2 << runnumber << " Age:" << f << " YR "; + for (i = 1; i <= Nobs_a(f); i++) + { + t = Age_time_t(f, i); + ALK_time = Age_time_ALK(f, i); + report2 << data_time(ALK_time, f, 3) << " "; + } + report2 << endl + << runnumber << " Age:" << f << " effN " << neff_a(f) << endl; + } + } + report2 << endl; + cout << " finished appending to cumreport.sso " << endl; + } + +FUNCTION void write_SS_summary() + { + SS_smry.open(sso_pathname + "ss_summary.sso"); + SS_smry << version_info(1) << version_info(2) << version_info(3) << endl; + SS_smry << datfilename << " #_DataFile " << endl; + SS_smry << ctlfilename << " #_Control " << endl; + SS_smry << "Run_Date: " << ctime(&start); + SS_smry << "Final_phase: " << current_phase() << " N_iterations: " << niter << endl; + k = current_phase(); + if (k > max_lambda_phase) + k = max_lambda_phase; + SS_smry << "#_LIKELIHOOD " << endl; + SS_smry << "Label logL*Lambda" << endl; + SS_smry << "TOTAL_LogL " << obj_fun << endl; + if (F_Method > 1) + { + SS_smry << "Catch " << catch_like * column(catch_lambda, k) << endl; + } + if (N_init_F > 0) + SS_smry << "Equil_catch " << equ_catch_like * column(init_equ_lambda, k) << endl; + if (Svy_N > 0) + SS_smry << "Survey " << surv_like * column(surv_lambda, k) << endl; + if (nobs_disc > 0) + SS_smry << "Discard " << disc_like * column(disc_lambda, k) << endl; + if (nobs_mnwt > 0) + SS_smry << "Mean_body_wt " << mnwt_like * column(mnwt_lambda, k) << endl; + if (Nobs_l_tot > 0) + SS_smry << "Length_comp " << length_like_tot * column(length_lambda, k) << endl; + if (Nobs_a_tot > 0) + SS_smry << "Age_comp " << age_like_tot * column(age_lambda, k) << endl; + if (nobs_ms_tot > 0) + SS_smry << "Size_at_age " << sizeage_like * column(sizeage_lambda, k) << endl; + if (SzFreq_Nmeth > 0) + SS_smry << "Gen_Size_Comp " << SzFreq_like * column(SzFreq_lambda, k) << endl; + if (Do_Morphcomp > 0) + SS_smry << "Morphcomp " << Morphcomp_lambda(k) * Morphcomp_like << endl; + if (Do_TG > 0) + { + SS_smry << "Tag_Data_1 " << TG_like1 * column(TG_lambda1, k) << endl; + SS_smry << "Tag_Data_2 " << TG_like2 * column(TG_lambda2, k) << endl; + } + SS_smry << "Recruitment " << recr_like * recrdev_lambda(k) << endl; + SS_smry << "InitEQ_regime " << regime_like * regime_lambda(k) << endl; + SS_smry << "Sum_recdevs " << sum_recdev << endl; + SS_smry << "Forecast_Recruitment " << Fcast_recr_like << endl; + SS_smry << "Parm_priors " << parm_like * parm_prior_lambda(k) << endl; + SS_smry << "Parm_softbounds " << SoftBoundPen << endl; + SS_smry << "Parm_devs " << sum(parm_dev_like) * parm_dev_lambda(k) << endl; + SS_smry << "F_Ballpark " << F_ballpark_lambda(k) * F_ballpark_like << endl; + SS_smry << "Crash_Pen " << CrashPen_lambda(k) * CrashPen << endl; + + SS_smry << "#_PARAMETERS" << endl + << "#label value se active? range" << endl; + NP = 0; // count of number of parameters + active_count = 0; + SS_smry << "#_BIOLOGY" << endl; + for (j = 1; j <= N_MGparm2; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << MGparm(j) << " "; + if (active(MGparm(j))) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (MGparm(j) - MGparm_LO(j)) / (MGparm_HI(j) - MGparm_LO(j) + 1.0e-6) << endl; + } + SS_smry << "#_SPAWN_RECR" << endl; + for (j = 1; j <= N_SRparm3; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << SRparm(j) << " "; + if (active(SRparm(j))) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (SRparm(j) - SRparm_LO(j)) / (SRparm_HI(j) - SRparm_LO(j) + 1.0e-6) << endl; + } + + if (recdev_cycle > 0) + { + for (j = 1; j <= recdev_cycle; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << recdev_cycle_parm(j) << " "; + if (active(recdev_cycle_parm(j))) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (recdev_cycle_parm(j) - recdev_cycle_LO(j)) / (recdev_cycle_HI(j) - recdev_cycle_LO(j) + 1.0e-6) << endl; + } + } + + if (recdev_do_early > 0) + { + for (j = recdev_early_start; j <= recdev_early_end; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << recdev(j) << " "; + if (active(recdev_early)) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (recdev(j) - recdev_LO) / (recdev_HI - recdev_LO + 1.0e-6) << endl; + } + } + + if (do_recdev > 0) + { + for (j = recdev_start; j <= recdev_end; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << recdev(j) << " "; + if (active(recdev1) || active(recdev2)) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (recdev(j) - recdev_LO) / (recdev_HI - recdev_LO + 1.0e-6) << endl; + } + } + + if (Do_Forecast > 0 && do_recdev > 0) + { + for (j = recdev_end + 1; j <= YrMax; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << Fcast_recruitments(j) << " "; + if (active(Fcast_recruitments)) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (Fcast_recruitments(j) - recdev_LO) / (recdev_HI - recdev_LO + 1.0e-6) << endl; + } + + if (Do_Impl_Error > 0) + { + for (j = endyr + 1; j <= YrMax; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << Fcast_impl_error(j) << " "; + if (active(Fcast_impl_error)) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (Fcast_impl_error(j) - (-1.)) / (1.0 - (-1.0) + 1.0e-6) << endl; + } + } + } + + if (N_init_F > 0) + { + SS_smry << "#_Init_F" << endl; + for (j = 1; j <= N_init_F; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << init_F(j) << " "; + if (active(init_F(j))) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (init_F(j) - init_F_LO(j)) / (init_F_HI(j) - init_F_LO(j) + 1.0e-6) << endl; + } + } + + if (N_Fparm > 0) + { + SS_smry << "#_F" << endl; + for (j = 1; j <= N_Fparm; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << F_rate(j) << " "; + if (active(F_rate(j))) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (F_rate(j) - 0.) / (max_harvest_rate - 0 + 1.0e-6) << endl; + } + } + + if (Q_Npar2 > 0) + { + SS_smry << "#_Catchability" << endl; + for (j = 1; j <= Q_Npar2; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << Q_parm(j) << " "; + if (active(Q_parm(j))) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (Q_parm(j) - Q_parm_LO(j)) / (Q_parm_HI(j) - Q_parm_LO(j) + 1.0e-6) << endl; + } + } + + SS_smry << "#_Selectivity" << endl; + if (N_selparm2 > 0) + for (j = 1; j <= N_selparm2; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << selparm(j) << " "; + if (active(selparm(j))) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (selparm(j) - selparm_LO(j)) / (selparm_HI(j) - selparm_LO(j) + 1.0e-6) << endl; + } + + if (Do_TG > 0) + { + SS_smry << "#_Tag_Recapture" << endl; + for (j = 1; j <= 3 * N_TG + 2 * Nfleet1; j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << TG_parm(j) << " "; + if (active(TG_parm(j))) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " Act "; + } + else + { + SS_smry << 0.0 << " Fix "; + } + SS_smry << (TG_parm(j) - TG_parm_LO(j)) / (TG_parm_HI(j) - TG_parm_LO(j) + 1.0e-6) << endl; + } + } + + if (N_parm_dev > 0) + { + SS_smry << "#_Parm_Dev" << endl; + for (i = 1; i <= N_parm_dev; i++) + for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) + { + NP++; + SS_smry << ParmLabel(NP) << " " << parm_dev(i, j) << " "; + if (parm_dev_PH(i) > 0) + { + active_count++; + SS_smry << CoVar(active_count, 1) << " ACT "; + } + else + { + SS_smry << 0.0 << " FIX "; + } + SS_smry << (parm_dev(i, j) - (-10.)) / (10. - (-10) + 1.0e-6) << endl; + } + } + + SS_smry << "#_Derived_Quantities" << endl; + SS_smry << "#_Spawn_Bio" << endl; + for (j = 1; j <= N_STD_Yr; j++) + { + NP++; + active_count++; + SS_smry << ParmLabel(NP) << " " << SSB_std(j) << " " << CoVar(active_count, 1) << endl; + } + + SS_smry << "#_Recruitment" << endl; + for (j = 1; j <= N_STD_Yr; j++) + { + NP++; + active_count++; + SS_smry << ParmLabel(NP) << " " << recr_std(j) << " " << CoVar(active_count, 1) << endl; + } + + SS_smry << "#_SPR Basis= " << SPR_report_label << endl; + for (j = 1; j <= N_STD_Yr_Ofish; j++) + { + NP++; + active_count++; + SS_smry << ParmLabel(NP) << " " << SPR_std(j) << " " << CoVar(active_count, 1) << endl; + } + + SS_smry << "#_F Basis= " << F_report_label << endl; + for (j = 1; j <= N_STD_Yr_F; j++) + { + NP++; + active_count++; + SS_smry << ParmLabel(NP) << " " << F_std(j) << " " << CoVar(active_count, 1) << endl; + } + + SS_smry << "#_Depletion Basis= " << depletion_basis_label << endl; + for (j = 1; j <= N_STD_Yr_Dep; j++) + { + NP++; + active_count++; + SS_smry << ParmLabel(NP) << " " << depletion(j) << " " << CoVar(active_count, 1) << endl; + } + + SS_smry << "#_Mgmt_Quantity" << endl; + for (j = 1; j <= N_STD_Mgmt_Quant; j++) + { + NP++; + active_count++; + SS_smry << ParmLabel(NP) << " " << Mgmt_quant(j) << " " << CoVar(active_count, 1) << endl; + } + + SS_smry << "#_Extra_stdev" << endl; + for (j = 1; j <= Extra_Std_N; j++) + { + NP++; + active_count++; + SS_smry << ParmLabel(NP) << " " << Extra_Std(j) << " " << CoVar(active_count, 1) << endl; + } + + if (Do_se_smrybio == 0) + { + SS_smry << "SmryBio_Virgin " << Smry_Table(styr - 2, 2) << " 0.0" << endl; + SS_smry << "SmryBio_Initial " << Smry_Table(styr - 1, 2) << " 0.0" << endl; + for (y = styr; y <= YrMax; y++) + { + SS_smry << "SmryBio_" << y << " " << Smry_Table(y, 2) << " 0.0" << endl; + } + } + + SS_smry << "#_survey_stdev " << Svy_N_sdreport << endl; + if (Svy_N_sdreport > 0) + { + k = 0; + for (f = 1; f <= Nfleet; ++f) + { + if (Svy_sdreport(f) > 0) + { + for (j = 1; j <= Svy_N_fleet(f); j++) + { + active_count++; + k++; + NP++; + if (Svy_errtype(f) == -1) + { + SS_smry << ParmLabel(NP) << " " << Svy_sdreport_est(k) << " " << CoVar(active_count, 1) << " #: " << Svy_est(f, j) << " q: " << Svy_q(f, j) << endl; + } + else + { + SS_smry << ParmLabel(NP) << " " << Svy_sdreport_est(k) << " " << CoVar(active_count, 1) << " #exp(): " << mfexp(Svy_est(f, j)) << " q: " << Svy_q(f, j) << endl; + } + } + } + } + } + + SS_smry << "#_Biomass" << endl; + SS_smry << "TotBio_Virgin " << Smry_Table(styr - 2, 1) << " 0.0" << endl; + SS_smry << "TotBio_Initial " << Smry_Table(styr - 1, 1) << " 0.0" << endl; + for (y = styr; y <= YrMax; y++) + { + SS_smry << "TotBio_" << y << " " << Smry_Table(y, 1) << " 0.0" << endl; + } + + SS_smry << "TotCatch_Virgin " << Smry_Table(styr - 2, 4) << " 0.0" << endl; + SS_smry << "TotCatch_Initial " << Smry_Table(styr - 1, 4) << " 0.0" << endl; + for (y = styr; y <= YrMax; y++) + { + SS_smry << "TotCatch_" << y << " " << Smry_Table(y, 4) << " 0.0" << endl; + } + + // report2 < 0 && mceval_counter == 0) + cout << " produce output for rebuilding package" << endl; + rebuilder.open(sso_pathname + "rebuild.sso", ios::app); + rebuild_dat.open(sso_pathname + "rebuild.dat"); + + if (mceval_counter == 0) // writing to rebuild.dat + { + rebuild_dat << "#Title, #runnumber: " << runnumber << " " << datfilename << " " << ctlfilename << " " << obj_fun << " " << SSB_yr(styr - 2) << " " << SSB_yr(endyr + 1) << " StartTime: " << ctime(&start); + rebuild_dat << "SSv3_default_rebuild.dat" << endl; + rebuild_dat << "# Number of sexes" << endl + << gender << endl; + rebuild_dat << "# Age range to consider (minimum age; maximum age)" << endl + << 0 << " " << nages << endl; + rebuild_dat << "# Number of fleets" << endl + << Nfleet1 << endl; + rebuild_dat << "# First year of projection (Yinit)" << endl + << Rebuild_Yinit << endl; + rebuild_dat << "# First Year of rebuilding period (Ydecl)" << endl + << Rebuild_Ydecl << endl; + rebuild_dat << "# Number of simulations" << endl + << 1000 << endl; + rebuild_dat << "# Maximum number of years" << endl + << 500 << endl; + rebuild_dat << "# Conduct projections with multiple starting values (0=No;else yes)" << endl + << 0 << endl; + rebuild_dat << "# Number of parameter vectors" << endl + << 1000 << endl; + rebuild_dat << "# Is the maximum age a plus-group (1=Yes;2=No)" << endl + << 1 << endl; + rebuild_dat << "# Generate future recruitments using historical recruitments (1) historical recruits/spawner (2) or a stock-recruitment (3)" << endl + << 3 << endl; + rebuild_dat << "# Constant fishing mortality (1) or constant Catch (2) projections" << endl + << 1 << endl; + rebuild_dat << "# Fishing mortality based on SPR (1) or actual rate (2)" << endl + << 1 << endl; + rebuild_dat << "# Pre-specify the year of recovery (or -1) to ignore" << endl + << -1 << endl; + rebuild_dat << "# Fecundity-at-age" << endl; + } + + // stuff written to both rebuild.dat and rebuild.SSO + //a. "blank line" with run info + if (mceval_phase()) + rebuilder << "# mceval phase, cnt=" << mceval_counter << ", StartTime: " << ctime(&start); + else + rebuilder << "# in maximization mode, StartTime: " << ctime(&start); + + if (mceval_counter == 0) + rebuild_dat << "#" << age_vector << " #runnumber: " << runnumber << " " << datfilename << " " << ctlfilename << " " << obj_fun << " " << SSB_yr(styr - 2) << " " << SSB_yr(endyr + 1) << endl; + + //b. fecundity-at-age + t = styr + (Rebuild_Yinit - styr) * nseas; + dvar_vector tempvec2(0, nages); + dvar_vector tempvec3(0, nages); + tempvec_a.initialize(); + tempvec2.initialize(); + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (sx(g) == 1) + { + // NEED to adjust for spawning timing within season + tempvec_a += elem_prod(fec(g), natage(t + spawn_seas - 1, p, g)); + tempvec2 += natage(t + spawn_seas - 1, p, g); + } + tempvec_a = elem_div(tempvec_a, tempvec2); + rebuilder << tempvec_a << " #female fecundity; weighted by N in year Y_init across morphs and areas" << endl; + if (mceval_counter == 0) + { + rebuild_dat << tempvec_a << " #female fecundity; weighted by N in year Y_init across morphs and areas" << endl; + rebuild_dat << "# Age specific selectivity and weight adjusted for discard and discard mortality" << endl; + } + + //c. Weight-at-age and selectivity-at-age (ordered by sex and fleet). + // use the deadfish vectors that account for discard and for mortality of discards + // average across morphs and areas using N_at_Age in year Yinit and across seasons using Fcast_RelF + for (gg = 1; gg <= gender; gg++) + for (f = 1; f <= Nfleet1; f++) + { + tempvec_a.initialize(); + tempvec2.initialize(); + tempvec3.initialize(); + j = 0; + for (s = 1; s <= nseas; s++) + for (p = 1; p <= pop; p++) + if (fleet_area(f) == p && Fcast_RelF_Use(s, f) > 0.0) // active fishery in this area in endyr + { + j = 1; + for (g = 1; g <= gmorph; g++) + if (sx(g) == gg) + { + tempvec_a += elem_prod(Wt_Age_t(t, f, g), natage(t + s - 1, p, g) * Fcast_RelF_Use(s, f)); // body wt + tempvec2 += elem_prod(sel_num(s, f, g), natage(t + s - 1, p, g) * Fcast_RelF_Use(s, f)); //no wt + tempvec3 += natage(t + s - 1, p, g) * Fcast_RelF_Use(s, f); + } + } + if (j == 1) + { + tempvec_a = elem_div(tempvec_a, tempvec3); + tempvec2 = elem_div(tempvec2, tempvec3); + rebuilder << tempvec_a << " #bodywt for gender,fleet: " << gg << " / " << f << " " << fleetname(f) << endl; + rebuilder << tempvec2 << " #selex for gender,fleet: " << gg << " / " << f << " " << fleetname(f) << endl; + if (mceval_counter == 0) + { + rebuild_dat << " #wt and selex for gender,fleet: " << gg << " " << f << " " << fleetname(f) << endl; + rebuild_dat << tempvec_a << endl + << tempvec2 << endl; + } + } + } + + if (mceval_counter == 0) + { + rebuild_dat << "# Sex ratio correction" << endl; + if (gender_rd < 0) + {rebuild_dat << fracfemale << endl;} // where fracfemale is set to the sexratio parameter value + else + {rebuild_dat << "1" << endl;} // value to indicate not used + } + + //d. Natural mortality and numbers-at-age for year Yinit (females then males). + if (mceval_counter == 0) + rebuild_dat << "# M and current age-structure in year Yinit: " << Rebuild_Yinit << endl; + + for (gg = 1; gg <= gender; gg++) + { + tempvec_a.initialize(); + tempvec2.initialize(); + tempvec3.initialize(); + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == gg && use_morph(g) > 0) + { + tempvec_a += elem_prod(natM(t, p, GP3(g)), natage(t, p, g)); + tempvec2 += natage(t, p, g); // note, uses season 1 only + } + } + tempvec_a = elem_div(tempvec_a, tempvec2); + rebuilder << tempvec_a << " #mean M for year Yinit: " << Rebuild_Yinit << " sex: " << gg << endl; + rebuilder << tempvec2 << " #numbers for year Yinit: " << Rebuild_Yinit << " sex: " << gg << endl; + if (mceval_counter == 0) + rebuild_dat << " # gender = " << gg << endl + << tempvec_a << endl + << tempvec2 << endl; + } + + //e. Numbers-at-age for year Ydecl (females then males). + t = styr + (Rebuild_Ydecl - styr) * nseas; + if (mceval_counter == 0) + rebuild_dat << "# Age-structure at Ydeclare= " << Rebuild_Ydecl << endl; + for (gg = 1; gg <= gender; gg++) + { + tempvec_a.initialize(); + tempvec2.initialize(); + tempvec3.initialize(); + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (sx(g) == gg && use_morph(g) > 0) + { + tempvec2 += natage(t, p, g); + } + } + rebuilder << tempvec2 << " #numbers for year Ydeclare: " << Rebuild_Ydecl << " sex: " << gg << endl; + if (mceval_counter == 0) + rebuild_dat << tempvec2 << endl; + } + + k = endyr; + if (Rebuild_Yinit > k) + k = Rebuild_Yinit; + + //f. "blank line" used for header for following lines + rebuilder << "#R0 " << years << " #years" << endl; + + //g. recruitment + rebuilder << exp_rec(styr - 2, 4) << " "; + for (y = styr; y <= k; y++) + { + rebuilder << exp_rec(k, 4) << " "; + } + rebuilder << " #Recruits" << endl; + + //h. spawnbio + rebuilder << SSB_yr(styr - 2) << " " << SSB_yr(styr, k) << " #SpawnBio" << endl; + + //i. steepness; SigmaR; rho + rebuilder << SRparm(2) << " " << sigmaR << " " << SRparm(N_SRparm2) << " # spawn-recr steepness, sigmaR, autocorr" << endl; + + if (mceval_counter == 0) + { + rebuild_dat << "# Year for Tmin Age-structure (set to Ydecl by SS)" << endl + << Rebuild_Ydecl << endl; + + rebuild_dat << "# recruitment and biomass" << endl + << "# Number of historical assessment years" << endl + << k - styr + 2 << endl; + rebuild_dat << "# Historical data" << endl + << "# year recruitment spawner in B0 in R project in R/S project" << endl; + rebuild_dat << styr - 1 << " " << years; + if (Rebuild_Yinit > endyr) + rebuild_dat << " " << Rebuild_Yinit; + rebuild_dat << " #years (with first value representing R0)" << endl; + rebuild_dat << exp_rec(styr - 2, 4) << " "; + for (y = styr; y <= k; y++) + { + rebuild_dat << exp_rec(y, 4) << " "; + } + rebuild_dat << " #recruits; first value is R0 (virgin)" << endl; + rebuild_dat << SSB_yr(styr - 2) << " " << SSB_yr(styr, k) << " #SSBio; first value is SSB_virgin (virgin)" << endl; + rebuild_dat << 1 << " "; + for (y = styr; y <= k; y++) + rebuild_dat << 0 << " "; + rebuild_dat << " # in Bzero" << endl; + rebuild_dat << 0 << " "; + for (y = styr; y <= k - 3; y++) + rebuild_dat << 1 << " "; + rebuild_dat << " 0 0 0 # in R project" << endl; + rebuild_dat << 0 << " "; + for (y = styr; y <= k - 3; y++) + rebuild_dat << 1 << " "; + rebuild_dat << " 0 0 0 # in R/S project" << endl; + rebuild_dat << "# Number of years with pre-specified catches" << endl + << 0 << endl; + rebuild_dat << "# catches for years with pre-specified catches go next" << endl; + // rebuild_dat<<"# Number of future recruitments to override"<= Rebuild_Ydecl + 1) + { + for (y = Rebuild_Ydecl + 1; y <= Rebuild_Yinit; y++) + rebuild_dat << y << " " << 1 << " " << y << endl; + } + + rebuild_dat << "# Which probability to product detailed results for (1=0.5; 2=0.6; etc.)" << endl + << 3 << endl; + rebuild_dat << "# Steepness sigma-R Auto-correlation" << endl + << SRparm(2) << " " << sigmaR << " " << 0 << endl; + rebuild_dat << "# Target SPR rate (FMSY Proxy); manually change to SPR_MSY if not using SPR_target" << endl + << SPR_target << endl; + rebuild_dat << "# Discount rate (for cumulative catch)" << endl + << 0.1 << endl; + rebuild_dat << "# Truncate the series when 0.4B0 is reached (1=Yes)" << endl + << 0 << endl; + rebuild_dat << "# Set F to FMSY once 0.4B0 is reached (1=Yes)" << endl + << 0 << endl; + rebuild_dat << "# Maximum possible F for projection (-1 to set to FMSY)" << endl + << -1 << endl; + rebuild_dat << "# Defintion of recovery (1=now only;2=now or before)" << endl + << 2 << endl; + rebuild_dat << "# Projection type" << endl + << 4 << endl; + rebuild_dat << "# Definition of the 40-10 rule" << endl + << 10 << " " << 40 << endl; + rebuild_dat << "# Sigma Assessment Error (Base, Year1, Slope, MaxSigma)" << endl + << "1.0 " << endyr + 1 << " 0.075 2.0" << endl; + rebuild_dat << "# Pstar" << endl + << 0.45 << endl; + rebuild_dat << "# Constrain catches by the ABC (1=yes, 2=no)" << endl + << 2 << endl; + rebuild_dat << "# Implementation Error (0=no; 1=lognormal; 2=uniform)" << endl + << 0 << endl; + rebuild_dat << "#Parameters of Implementaion Error" << endl + << "1 0.3" << endl; + rebuild_dat << "# Calculate coefficients of variation (1=Yes)" << endl + << 0 << endl; + rebuild_dat << "# Number of replicates to use" << endl + << 10 << endl; + rebuild_dat << "# Random number seed" << endl + << -99004 << endl; + rebuild_dat << "# File with multiple parameter vectors " << endl + << "rebuild.SSO" << endl; + rebuild_dat << "# User-specific projection (1=Yes); Output replaced (1->9)" << endl + << "0 5" << endl; + rebuild_dat << "# Catches and Fs (Year; 1/2/3 (F or C or SPR); value); Final row is -1" << endl; + rebuild_dat << k << " 1 1" << endl + << "-1 -1 -1" << endl; + rebuild_dat << "# Fixed catch project (1=Yes); Output replaced (1->9); Approach (-1=Read in else 1-9)" << endl; + rebuild_dat << "0 2 -1" << endl; + rebuild_dat << "# (48a) Special catch options (1-Yes) [CUT_OFF, Emsy, distribution, MAXCAT, Add, replace_code]" << endl + << "0 0.18 1.00 1.00 0 6" << endl; + rebuild_dat << "# (48b) B1Target" << endl + << 150000 << endl; + tempvec_a(1, Nfleet) = colsum(Fcast_RelF_Use); + rebuild_dat << "# Split of Fs" << endl; + rebuild_dat << Rebuild_Yinit << " "; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + rebuild_dat << " " << tempvec_a(f) << endl; + } + rebuild_dat << "-1 "; + for (f = 1; f <= Nfleet; f++) + rebuild_dat << " 1"; + rebuild_dat << endl; + rebuild_dat << "# Yrs to define T_target for projection type 4 (a.k.a. 5 pre-specified inputs)" << endl; + rebuild_dat << endyr + 6 << " " << endyr + 7 << " " << endyr + 8 << " " << endyr + 9 << " " << endyr + 10 << " " << endl; + rebuild_dat << "# Year for probability of recovery" << endl; + rebuild_dat << endyr + 10 << " " << endyr + 11 << " " << endyr + 12 << " " << endyr + 13 << " " << endyr + 14 << " " << endyr + 15 << " " << endyr + 16 << " " << endyr + 17 << endl; + rebuild_dat << "# Time varying weight-at-age (1=Yes;0=No)" << endl + << 0 << endl; + rebuild_dat << "# File with time series of weight-at-age data" << endl + << "none" << endl; + rebuild_dat << "# Use bisection (0) or linear interpolation (1)" << endl + << 1 << endl; + rebuild_dat << "# Target Depletion" << endl + << 0.4 << endl; + rebuild_dat << "# CV of implementation error" << endl + << 0 << endl; + } + } // end output of rebuilding quantities + +FUNCTION void write_SIStable() //Note: deprecated, but add a message for now. + { + SIS_table.open(sso_pathname + "SIS_table.sso"); + SIS_table << "Note: SIS_table.sso is deprecated, please use the r4ss function get_SIS_info() instead" << endl; + } +//******************************************************************** + /* SS_Label_FUNCTION 41 write_Bzero_output */ +FUNCTION void write_Bzero_output() + { + // output annual time series for beginning of year and summing across areas for each GP and gender + if (SS2out.is_open()) + SS2out.close(); + SS2out.open(report_sso_filename, ios::app); + for (fishery_on_off = 1; fishery_on_off >= 0; fishery_on_off--) + { + + /* + in first pass, fishery is on (1) so just report current values + in second pass, rerun the time series with no fishery, then do the same reporting + */ + SS2out << endl + << pick_report_name(59) << endl; + SS2out << "Spawning_Biomass_Report"; + if (fishery_on_off == 0) + { + SS2out << "_1 No_fishery_for_Z=M_and_dynamic_Bzero"; + } + else + { + SS2out << "_2 With_fishery"; + } + SS2out << endl + << "Yr Area: "; + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + SS2out << p << " "; + } + SS2out << endl + << "xxxx GP: "; + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + SS2out << gp << " "; + } + SS2out << endl; + + if (fishery_on_off == 0) + { + setup_recdevs(); + get_initial_conditions(); + get_time_series(); // in write_big_report + + if (Do_Forecast > 0) + { + show_MSY = 0; + report5 << "#" << endl + << " FORECAST: in Bzero report with fishery onoff= " << fishery_on_off << endl; + Get_Forecast(); + } + } + + for (y = styr - 2; y <= YrMax; y++) + { + SS2out << y; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + SS2out << " " << SSB_pop_gp(y, p, gp); + } + SS2out << endl; + } + + SS2out << endl + << "NUMBERS_AT_AGE_Annual"; + if (fishery_on_off == 0) + { + SS2out << "_1 No_fishery_for_Z=M_and_dynamic_Bzero"; + } + else + { + SS2out << "_2 With_fishery"; + } + SS2out << endl; + SS2out << "Bio_Pattern Sex Yr " << age_vector << endl; + dvector tempvec2(1, nages); // holds summed survivors + tempvec2.initialize(); + for (gg = 1; gg <= gender; gg++) + for (gp = 1; gp <= N_GP; gp++) + for (y = styr; y <= YrMax; y++) + { + tempvec_a.initialize(); + t = styr + (y - styr) * nseas; // first season only + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0 && GP4(g) == gp && sx(g) == gg) + { + tempvec_a += value(natage(t, p, g)); + if (nseas > 1) + { + // add in age 0 fish recruiting in later seasons + for (s = 2; s <= nseas; s++) + if (Bseas(g) == s) + tempvec_a(0) += value(natage(t + s - 1, p, g, 0)); + } + } + SS2out << gp << " " << gg << " " << y << " " << tempvec_a << endl; + } + SS2out << endl + << "Z_AT_AGE_Annual"; + if (fishery_on_off == 0) + { + SS2out << "_1 No_fishery_for_Z=M_and_dynamic_Bzero"; + } + else + { + SS2out << "_2 With_fishery"; + } + if (Hermaphro_Option != 0) + SS2out << ";_hermaphrodites_combined_sex_output"; + if (N_pred > 0 && fishery_on_off == 0) + SS2out << ";_reported_M_includes_PredM2"; + SS2out << endl; + SS2out << "Bio_Pattern Sex Yr " << age_vector << endl; + for (gg = 1; gg <= gender; gg++) + for (gp = 1; gp <= N_GP; gp++) + { + tempvec2.initialize(); + for (y = styr; y <= YrMax; y++) + { + tempvec_a.initialize(); + t = styr + (y - styr) * nseas; // first season only + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0 && GP4(g) == gp && sx(g) == gg) + { + tempvec_a += value(natage(t, p, g)); + if (nseas > 1) + { + for (s = 2; s <= nseas; s++) + if (Bseas(g) == s) + { + tempvec_a(0) += value(natage(t + s - 1, p, g, 0)); + } + } + } + if (y > styr) + { + SS2out << gp << " " << gg << " " << y - 1 << " " << log(elem_div(tempvec2(1, nages), tempvec_a(1, nages))) << " _ " << endl; + } + for (a = 0; a <= nages - 1; a++) + tempvec2(a + 1) = value(tempvec_a(a)); + tempvec2(nages) += value(tempvec_a(nages)); + } + } + + SS2out << endl + << "Report_Z_by_area_morph_platoon"; + if (fishery_on_off == 0) + { + SS2out << "_1 No_fishery_for_Z=M_and_dynamic_Bzero"; + } + else + { + SS2out << "_2 With_fishery"; + } + SS2out << endl; + SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era" << age_vector << endl; + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (y = styr - 2; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + temp = double(y) + azero_seas(s); + SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " _ "; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Z_rate(t, p, g) << endl; + } + } + } + SS2out << " Note: Z calculated as -ln(Nt+1 / Nt)" << endl; + SS2out << " Note: Z calculation for maxage not possible, for maxage-1 includes numbers at maxage, so is approximate" << endl; + if (nseas > 1) + SS2out << " Z for age zero fish is not correct here if recruitment occurs in season after season 1" << endl; + + fishery_on_off = 1; + /* + SS2out<=0;fishery_on_off--) + { + if(fishery_on_off==0) {SS2out<<"_1 No_fishery_for_Z=M";} else {SS2out<<"_2 With_fishery";} + save_gparm=0; + setup_recdevs(); + get_initial_conditions(); + get_time_series(); // in write_big_report + if(Do_Forecast>0) + { + show_MSY=0; + report5<<"#"<0) + { + for (y=styr-2;y<=YrMax;y++) + for (s=1;s<=nseas;s++) + { + t = styr+(y-styr)*nseas+s-1; + temp=double(y)+azero_seas(s); + SS2out < 0) + { + parmvar = CoVar(AC, 1); + parmgrad = parm_gradients(AC); + + SS2out << " " << AC << " " << PH << " " << Pmin << " " << Pmax << " " << RD << " " << Jitter; + if (Pval == RD) + { + SS2out << " NO_MOVE "; + } + else + { + temp = (Pval - Pmin) / (Pmax - Pmin); + if (temp == 0.0 || temp == 1.0) + { + SS2out << " BOUND "; + Nparm_on_bound++; + } + else if (temp < 0.01) + { + SS2out << " LO "; + Nparm_on_bound++; + } + else if (temp >= 0.99) + { + SS2out << " HI "; + Nparm_on_bound++; + } + else + { + SS2out << " OK "; + } + } + SS2out << " " << parmvar; + + SS2out << " " << parmgrad; + } + else + { + SS2out << " _ " << PH << " " << Pmin << " " << Pmax << " " << RD << " " << Jitter << " NA _ _ "; + } + if (PR_T > 0) + { + switch (PR_T) + { + case 6: + { + SS2out << " Normal "; + break; + } + case 1: + { + SS2out << " Sym_Beta "; + break; + } + case 2: + { + SS2out << " Full_Beta "; + break; + } + case 3: + { + SS2out << " Log_Norm "; + break; + } + case 4: + { + SS2out << " Log_Norm_w/biasadj "; + break; + } + case 5: + { + SS2out << " Gamma "; + break; + } + } + SS2out << " " << PR << " " << CV << " " << Like << " "; + i = 1; + parm_val(i) = Pval; + prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, Pval); + i = 2; + temp = Pval - 1.96 * parmvar; + if (temp < Pmin) + temp = Pmin; + parm_val(i) = temp; + prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); + + i = 3; + temp = Pval + 1.96 * parmvar; + if (temp > Pmax) + temp = Pmax; + parm_val(i) = temp; + prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); + + i = 4; + temp = Pmin + 0.01 * (Pmax - Pmin); + parm_val(i) = temp; + prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); + i = 14; + temp = Pmax - 0.01 * (Pmax - Pmin); + parm_val(i) = temp; + prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); + + for (int i = 5; i <= 13; i++) + { + temp = Pmin + float(i - 4) / 10.0 * (Pmax - Pmin); + parm_val(i) = temp; + prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); + } + SS2out << parm_val << " " << prior_val; + } + else + { + SS2out << " No_prior "; + } + SS2out << endl; + } + +// SS_Label_file #18. **SS_write_ssnew.tpl** +// SS_Label_file # * write_nudata() // produces *starter.ss_new*, *forecast.ss_new*, *data_echo.ss_new*, *data_expval.ss*, bootstraps +// SS_Label_file # * write_nucontrol() // produces *control.ss_new* +// SS_Label_file # + +//******************************************************************** + /* SS_Label_FUNCTION 38 write_nudata */ +FUNCTION void write_nudata() + { + // code for multinomial distribution developed by Ian Stewart, Oct 2005 + + dvector temp_mult(1, 50000); + dvector temp_probs(1, nlen_bin2); + int compindex = 0; + dvector temp_probs2(1, n_abins2); + int Nudat = 0; + int Nubootdat = 0; + int Nsamp_DM = 0; + adstring newdatfilename; + adstring datinfostring; + // create bootstrap data files; except first file just replicates the input and second is the estimate without error + if (irand_seed < 0) + irand_seed = long(time(&start)); + + random_number_generator radm(irand_seed); + for (i = 1; i <= 1234; i++) + { + temp = randn(radm); + } + + for (Nudat = 1; Nudat <= N_nudata; Nudat++) + { + if (Nudat == 1) + { + echoinput << "Begin writing data_echo.ss_new file" << endl; + newdatfilename = "data_echo.ss_new"; + datinfostring = "echo_input_data"; + } + else if (Nudat == 2) + { + echoinput << "Begin writing data_expval.ss file" << endl; + newdatfilename = "data_expval.ss"; + datinfostring = "expected_values"; + } + else // data_boot files + { + echoinput << "Begin writing bootstrap data file(s)" << endl; + Nubootdat = Nudat - 2; + anystring2 = " "; + sprintf(anystring2, "%d", Nubootdat); + if (Nubootdat < 10) + { + newdatfilename = "data_boot_00" + anystring2 + ".ss"; + } + else if (Nubootdat < 100) + { + newdatfilename = "data_boot_0" + anystring2 + ".ss"; + } + else // Nubootdat > 99 + { + newdatfilename = "data_boot_" + anystring2 + ".ss"; + } + datinfostring = "bootstrap"; + } + anystring = ssnew_pathname + newdatfilename; + report1.open(anystring); + report1 << version_info(1) << version_info(2) << version_info(3) << endl + << version_info2 << endl + << "#_Start_time: " << ctime(&start); + report1 << "#_" << datinfostring << endl; + report1 << Data_Comments << endl; + if (Nudat > 2) + report1 << "#_bootstrap file: " << Nubootdat << " irand_seed: " << irand_seed << " first rand#: " << randn(radm) << endl; + + report1 << version_info(1) << version_info(2) << version_info(3) << endl; + report1 << styr << " #_StartYr" << endl; + report1 << endyr << " #_EndYr" << endl; + report1 << nseas << " #_Nseas" << endl; + report1 << 12. * seasdur << " #_months/season" << endl; + report1 << N_subseas << " #_Nsubseasons (even number, minimum is 2)" << endl; + report1 << spawn_month << " #_spawn_month" << endl; + report1 << gender_rd << " #_Nsexes: 1, 2, -1 (use -1 for 1 sex setup with SSB multiplied by female_frac parameter)" << endl; + report1 << nages << " #_Nages=accumulator age, first age is always age 0" << endl; + report1 << pop << " #_Nareas" << endl; + report1 << Nfleet << " #_Nfleets (including surveys)" << endl; + report1 << "#_fleet_type: 1=catch fleet; 2=bycatch only fleet; 3=survey; 4=predator(M2) " << endl; + report1 << "#_sample_timing: -1 for fishing fleet to use season-long catch-at-age for observations, or 1 to use observation month; (always 1 for surveys)" << endl; + report1 << "#_fleet_area: area the fleet/survey operates in " << endl; + report1 << "#_units of catch: 1=bio; 2=num (ignored for surveys; their units read later)" << endl; + report1 << "#_catch_mult: 0=no; 1=yes" << endl; + report1 << "#_rows are fleets" << endl + << "#_fleet_type fishery_timing area catch_units need_catch_mult fleetname" << endl; + for (f = 1; f <= Nfleet; f++) + { + report1 << fleet_setup(f) << " " << fleetname(f) << " # " << f << endl; + } + report1 << "#Bycatch_fleet_input_goes_next" << endl; + report1 << "#a: fleet index" << endl; + report1 << "#b: 1=include dead bycatch in total dead catch for F0.1 and MSY optimizations and forecast ABC; 2=omit from total catch for these purposes (but still include the mortality)" << endl; + report1 << "#c: 1=Fmult scales with other fleets; 2=bycatch F constant at input value; 3=bycatch F from range of years" << endl; + report1 << "#d: F or first year of range" << endl; + report1 << "#e: last year of range" << endl; + report1 << "#f: not used" << endl; + report1 << "# a b c d e f " << endl; + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) == 2) + report1 << bycatch_setup(f) << " # " << fleetname(f) << endl; + } + + if (Nudat == 1) // report back the input data + { + + report1 << "#_Catch data: year, seas, fleet, catch, catch_se" << endl; + report1 << "#_catch_se: standard error of log(catch)" << endl; + report1 << "#_NOTE: catch data is ignored for survey fleets" << endl; + k = 0; + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + { + for (y = styr - 1; y <= endyr; y++) + { + for (s = 1; s <= nseas; s++) + { + k++; + t = styr + (y - styr) * nseas + s - 1; + if (y == styr - 1) + { + g = -999; + } + else + { + g = y; + } + report1 << g << " " << s << " " << f << " " << catch_ret_obs(f, t) << " " << catch_se(t, f) << endl; + } + } + } + } + report1 << "-9999 0 0 0 0" << endl + << "#" << endl; + + report1 << "#_CPUE_and_surveyabundance_and_index_observations" << endl; + report1 << "#_units: 0=numbers; 1=biomass; 2=F; 30=spawnbio; 31=exp(recdev); 36=recdev; 32=spawnbio*recdev; 33=recruitment; 34=depletion(&see Qsetup); 35=parm_dev(&see Qsetup)" << endl; + report1 << "#_errtype: -1=normal; 0=lognormal; 1=lognormal with bias correction; >1=df for T-dist" << endl; + report1 << "#_SD_report: 0=not; 1=include survey expected value with se" << endl; + report1 << "#_note that link functions are specified in Q_setup section of control file" << endl; + report1 << "#_dataunits = 36 and 35 should use Q_type 5 to provide offset parameter" < 0) + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= Svy_N_fleet(f); i++) + { + t = Svy_time_t(f, i); + ALK_time = Svy_ALK_time(f, i); + report1 << Show_Time(t, 1) << " " << Svy_super(f, i) * data_time(ALK_time, f, 1) << " " << f * Svy_use(f, i) << " "; + report1 << Svy_obs(f, i) << " " << Svy_se_rd(f, i) << " #_ " << fleetname(f) << endl; + } + report1 << "-9999 1 1 1 1 # terminator for survey observations " << endl; + + report1 << "#" << endl + << Ndisc_fleets << " #_N_fleets_with_discard" << endl; + report1 << "#_discard_units (1=same_as_catchunits(bio/num); 2=fraction; 3=numbers)" << endl; + report1 << "#_discard_errtype: >0 for DF of T-dist(read CV below); 0 for normal with CV; -1 for normal with se; -2 for lognormal; -3 for trunc normal with CV" << endl; + report1 << "# note: only enter units and errtype for fleets with discard " << endl; + report1 << "# note: discard data is the total for an entire season, so input of month here must be to a month in that season" << endl; + report1 << "#_fleet units errtype" << endl; + if (Ndisc_fleets > 0) + { + for (f = 1; f <= Nfleet; f++) + if (disc_units(f) > 0) + report1 << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << endl; + report1 << "#_year month fleet obs stderr" << endl; + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= disc_N_fleet(f); i++) + { + ALK_time = disc_time_ALK(f, i); + report1 << Show_Time(disc_time_t(f, i), 1) << " " << yr_disc_super(f, i) * data_time(ALK_time, f, 1) << " " << f * yr_disc_use(f, i) << " "; + report1 << obs_disc(f, i) << " " << cv_disc(f, i) << " #_ " << fleetname(f) << endl; + } + } + else + { + report1 << "# "; + } + report1 << "-9999 0 0 0.0 0.0 # terminator for discard data " << endl; + + report1 << "#" << endl + << do_meanbodywt << " #_use meanbodysize_data (0/1)" << endl; + if (nobs_mnwt_rd == 0) + report1 << "#_COND_"; + report1 << DF_bodywt << " #_DF_for_meanbodysize_T-distribution_like" << endl; + report1 << "# note: type=1 for mean length; type=2 for mean body weight " << endl; + report1 << "#_year month fleet part type obs stderr" << endl; + if (nobs_mnwt > 0) + { + for (i = 1; i <= nobs_mnwt; i++) + { + f = abs(mnwtdata(3, i)); + report1 << Show_Time(mnwtdata(1, i), 1) << " " << mnwtdata(2, i) << " " << mnwtdata(3, i) << " " << mnwtdata(4, i) << " " << mnwtdata(5, i) << " " << mnwtdata(6, i) << " " << mnwtdata(7, i) - var_adjust(3, f) << " #_ " << fleetname(f) << endl; + } + } + if (do_meanbodywt == 0) + report1 << "# "; + report1 << " -9999 0 0 0 0 0 0 # terminator for mean body size data " << endl; + + report1 << "#" << endl + << "# set up population length bin structure (note - irrelevant if not using size data and using empirical wtatage" << endl; + report1 << LenBin_option << " # length bin method: 1=use databins; 2=generate from binwidth,min,max below; 3=read vector" << endl; + if (LenBin_option == 1) + { + report1 << "# no additional input for option 1" << endl; + report1 << "# read binwidth, minsize, lastbin size for option 2" << endl; + report1 << "# read N poplen bins, then vector of bin lower boundaries, for option 3" << endl; + } + else if (LenBin_option == 2) + { + report1 << binwidth2 << " # binwidth for population size comp " << endl; + report1 << minLread << " # minimum size in the population (lower edge of first bin and size at age 0.00) " << endl; + report1 << maxLread << " # maximum size in the population (lower edge of last bin) " << endl; + } + else + { + report1 << nlength << " # number of population size bins " << endl; + report1 << len_bins << endl; + } + + report1 << use_length_data << " # use length composition data (0/1/2) where 2 invokes new comp_control format" << endl; + if (use_length_data > 0) + { + report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; + report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; + report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; + report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; + report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; + report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; + report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; + report1 << "#" << endl; + if(use_length_data == 1) + { + report1 << "#_Using old format for composition controls" << endl; + report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (f = 1; f <= Nfleet; f++) + { + report1 << min_tail_L(0, f) << " " << min_comp_L(0, f) << " " << CombGender_L(0, f) << " " << AccumBin_L(0, f) << " " << Comp_Err_L(0, f) << " " << Comp_Err_L2(0, f) << " " << min_sample_size_L(0, f) << " #_fleet:" << f << "_" << fleetname(f) << endl; + } + } + else if (use_length_data == 2) + { + report1 << "#_Using new list format for composition controls" << endl; + report1 << "#_use negative fleet value to fill for all higher numbered fleets (recommended!)" << endl; + report1 << "#_must enter in fleet, partition order; but only need to enter for used combos" << endl; + report1 << "#_fleet = -9999 to terminate list" << endl; + report1 << "#_fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (int i = 0; i <= comp_control_L_count; i++) + report1 << comp_control_L[i] << endl; + } + + report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; + report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; + report1 << nlen_bin << " #_N_LengthBins; then enter lower edge of each length bin" << endl + << len_bins_dat << endl; + // report1< 0) + { + for (i = 0; i <= nobsl_rd - 1; i++) + { + report1 << lendata[i] << endl; + } + } + report1 << -9999. << " "; + for (j = 2; j <= 6 + nlen_bin2; j++) + report1 << "0 "; + report1 << endl; + } + else + { + report1 << "# see manual for format of length composition data " << endl; + } + + report1 << "#" << endl + << n_abins << " #_N_age_bins" << endl; + if (n_abins > 0) + { + report1 << age_bins1 << endl; + } + else + { + report1 << "# "; + } + report1 << N_ageerr << " #_N_ageerror_definitions" << endl; + if (N_ageerr > 0) + report1 << age_err_rd << endl; + + report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; + report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; + report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; + report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; + report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; + report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; + report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; + report1 << "#" << endl; + report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (n_abins <= 0) + report1 << "# "; + report1 << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_fleet:" << f << "_" << fleetname(f) << endl; + } + + if (n_abins <= 0) + report1 << "# "; + report1 << Lbin_method << " #_Lbin_method_for_Age_Data: 1=poplenbins; 2=datalenbins; 3=lengths" << endl; + report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; + report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; + report1 << "#_year month fleet sex part ageerr Lbin_lo Lbin_hi Nsamp datavector(female-male)" << endl; + if (nobsa_rd > 0) + { + for (i = 0; i <= nobsa_rd - 1; i++) + { + report1 << Age_Data[i] << endl; + } + } + f = exp_a_temp.size() + 8; + if (n_abins <= 0) + report1 << "# "; + report1 << "-9999 "; + for (i = 1; i <= f; i++) + report1 << " 0"; + report1 << endl; + + report1 << "#" << endl + << use_meansizedata << " #_Use_MeanSize-at-Age_obs (0/1)" << endl; + if (use_meansizedata > 0) + { + report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; + report1 << "# partition codes: 0=combined; 1=discard; 2=retained" << endl; + report1 << "# ageerr codes: positive means mean length-at-age; negative means mean bodywt_at_age" << endl; + report1 << "#_year month fleet sex part ageerr ignore datavector(female-male)" << endl; + report1 << "# samplesize(female-male)" << endl; + if (nobs_ms_rd > 0) + { + if (finish_starter == 999) + { + for (i = 1; i <= nobs_ms_rd; i++) + { + report1 << sizeAge_Data[i] << endl; + } + } + else + { + for (i = 0; i <= nobs_ms_rd - 1; i++) + { + report1 << sizeAge_Data[i] << endl; + } + } + report1 << "-9999 "; + for (j = 1; j <= 6 + 2 * n_abins2; j++) + report1 << " 0"; + report1 << endl; + } + } + + report1 << "#" << endl + << N_envvar << " #_N_environ_variables" << endl; + report1 << "# -2 in year will subtract mean for that env_var; -1 will subtract mean and divide by stddev (e.g. Z-score)" << endl; + report1 << "#_year variable value" << endl; + if (N_envvar > 0) + { + for (i = 0; i <= N_envdata - 1; i++) + report1 << env_temp[i] << endl; + report1 << "-9999 0 0" << endl; + } + + report1 << "#" << endl << "# Sizefreq data. Defined by method because a fleet can use multiple methods" << endl; + report1 << SzFreq_Nmeth_rd << " # N sizefreq methods to read (or -1 for expanded options)" << endl; + if (SzFreq_Nmeth_rd < 0) { + report1 << SzFreq_Nmeth << " # N sizefreq methods to read" << endl; + } + if (SzFreq_Nmeth != 0) + { + report1 << "# each row below has entry for each sizefreq method " << endl; + report1 << "#_ "; + for (int j = 1; j <= SzFreq_Nmeth; j++ ) + { report1 << j << " ";} + report1 << " # Method" << endl; + report1 << SzFreq_Nbins << " #_Sizefreq N bins" << endl; + report1 << SzFreq_units << " #_Sizefreq units(1=bio/2=num)" << endl; + report1 << SzFreq_scale << " #_Sizefreq scale(1=kg/2=lbs/3=cm/4=inches)" << endl; + report1 << SzFreq_mincomp << " #_Sizefreq: small constant to add to comps" << endl; + report1 << SzFreq_nobs << " #_Sizefreq number of obs per method" << endl; + if (SzFreq_Nmeth_rd < 0) { + report1 << Comp_Err_Sz << " #_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; + report1 << Comp_Err_Sz2 << " #_ParmSelect: consecutive index for dirichlet or MV_Tweedie comp_error" << endl; + } + report1 << "#_Sizefreq bins. one row for each method" << endl + << "#Note: negative value for first bin makes it accumulate all smaller fish vs. truncate small fish" << endl; + for (i = 1; i <= SzFreq_Nmeth; i++) + { report1 << SzFreq_Omit_Small(i) * SzFreq_bins1(i, 1) << SzFreq_bins1(i)(2, SzFreq_Nbins(i)) << endl; } + report1 << "#_method year month fleet sex part Nsamp " << endl << SzFreq_obs1 << endl; + } + + // begin tagging data section #1 (observed data) + report1 << "# " << endl + << Do_TG_rd << " # do tags (0/1/2); where 2 allows entry of TG_min_recap" << endl; + if (Do_TG_rd > 0) + { + // info on dimensions of tagging data + report1 << N_TG << " # N tag groups" << endl; + report1 << N_TG_recap << " # N recap events" << endl; + report1 << TG_mixperiod << " # TG_mixperiod ## (latency) is the first period in which logL is calculated for this tag group (0 = release period)" << endl; + report1 << TG_maxperiods << " # max periods ## to track recaptures (units=seasons), after which tags are still read into this accumulator period" << endl; + if (Do_TG_rd == 2) + { + report1 << TG_min_recap << " # TG_min_recap ## tag group's N recaps >=mixperiod must be >= min_recap to include tag group in logL)" << endl; + } + else + { + report1 << "# COND: TG_min_recap ## use Do_TG=2 to invoke reading TG_min_recap after TG_maxperiods" << endl; + } + + // tag releases + report1 << "# Release data for each tag group. Tags are considered to be released at the beginning of a season (period)" << endl; + report1 << "# area year seas sex age Nrelease (note that the TG and tfill values are placeholders and are replaced by program generated values)" << endl; + report1 << TG_release << endl; + + // tag recaptures + report1 << "#_TG year seas fleet Nrecap" << endl; + for (j = 1; j <= N_TG_recap; j++) + { + // fill in first 4 columns: + for (k = 1; k <= 5; k++) + report1 << TG_recap_data(j, k) << " "; + report1 << endl; + } + } + // end tagging data section #1 (observed data) + + report1 << "#" << endl + << Do_Morphcomp << " # morphcomp data(0/1) " << endl; + if (Do_Morphcomp > 0) + { + report1 << Morphcomp_nobs_rd << " # Nobs" << endl; + report1 << Morphcomp_nmorph << " # Nmorphs" << endl; + report1 << Morphcomp_mincomp << " # add_to_comp" << endl; + report1 << "#_year, month, fleet, null, Nsamp, datavector_by_Nmorphs" << endl; + for (i = 1; i <= Morphcomp_nobs_rd; i++) + { + report1 << Morphcomp_obs_rd << endl; + } + } + else + { + report1 << "# Nobs, Nmorphs, mincomp" << endl; + report1 << "#_year, seas, type, partition, Nsamp, datavector_by_Nmorphs" << endl; + } + + report1 << "#" << endl + << Do_SelexData << " # Do dataread for selectivity priors(0/1)" << endl; + report1 << "#_year, seas, fleet, age/size, bin, selex_prior, prior_sd" << endl; + report1 << "# feature not yet implemented" << endl; + + report1 << "#" << endl + << "999" << endl + << endl; + } + + else if (Nudat == 2) // report expected value with no added error + { + + report1 << "#_Catch data: year, seas, fleet, catch, catch_se" << endl; + report1 << "#_catch_se: standard error of log(catch)" << endl; + report1 << "#_NOTE: catch data is ignored for survey fleets" << endl; + k = 0; + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + { + for (y = styr - 1; y <= endyr; y++) + { + for (s = 1; s <= nseas; s++) + { + k++; + t = styr + (y - styr) * nseas + s - 1; + if (y == styr - 1) + { report1 << -999 << " "; } + else + { report1 << y << " "; } + report1 << s << " " << f << " "; + if (fleet_type(f) == 2 && catch_ret_obs(f, t) > 0.0) + { + report1 << 0.1 << " " << catch_se(t, f) << endl; // for bycatch only fleet + } + else if (catchunits(f) == 1) + { + report1 << catch_fleet(t, f, 3) << " " << catch_se(t, f) << endl; + } + else + { + report1 << catch_fleet(t, f, 6) << " " << catch_se(t, f) << endl; + } + } + } + } + } + report1 << "-9999 0 0 0 0" << endl + << "#" << endl; + + report1 << "#_CPUE_and_surveyabundance_and_index_observations" << endl; + report1 << "#_units: 0=numbers; 1=biomass; 2=F; 30=spawnbio; 31=exp(recdev); 36=recdev; 32=spawnbio*recdev; 33=recruitment; 34=depletion(&see Qsetup); 35=parm_dev(&see Qsetup)" << endl; + report1 << "#_errtype: -1=normal; 0=lognormal; 1=lognormal with bias correction; >1=df for T-dist" << endl; + report1 << "#_SD_report: 0=not; 1=include survey expected value with se" << endl; + report1 << "#_note that link functions are specified in Q_setup section of control file" << endl; + report1 << "#_dataunits = 36 and 35 should use Q_type 5 to provide offset parameter" < 0) + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= Svy_N_fleet(f); i++) + { + t = Svy_time_t(f, i); + ALK_time = Svy_ALK_time(f, i); + report1 << Show_Time(t, 1) << " " << Svy_super(f, i) * data_time(ALK_time, f, 1) << " " << f * Svy_use(f, i) << " "; + if (Svy_errtype(f) == -1) // normal + { + report1 << Svy_est(f, i); + } + else if (Svy_errtype(f) == -2) // gamma + { + // need gamma here + } + else + { + report1 << mfexp(Svy_est(f, i)); // lognormal or T-dist or lognormal w/bias + } + report1 << " " << Svy_se_rd(f, i) << " #_orig_obs: " << Svy_obs(f, i) << " " << fleetname(f) << endl; + } + report1 << "-9999 1 1 1 1 # terminator for survey observations " << endl; + + report1 << "#" << endl + << Ndisc_fleets << " #_N_fleets_with_discard" << endl; + report1 << "#_discard_units (1=same_as_catchunits(bio/num); 2=fraction; 3=numbers)" << endl; + report1 << "#_discard_errtype: >0 for DF of T-dist(read CV below); 0 for normal with CV; -1 for normal with se; -2 for lognormal; -3 for trunc normal with CV" << endl; + report1 << "# note: only enter units and errtype for fleets with discard " << endl; + report1 << "# note: discard data is the total for an entire season, so input of month here must be to a month in that season" << endl; + report1 << "#_fleet units errtype" << endl; + if (Ndisc_fleets > 0) + { + for (f = 1; f <= Nfleet; f++) + if (disc_units(f) > 0) + report1 << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << endl; + report1 << "#_year month fleet obs stderr" << endl; + for (f = 1; f <= Nfleet; f++) + if (disc_N_fleet(f) > 0) + for (i = 1; i <= disc_N_fleet(f); i++) + { + ALK_time = disc_time_ALK(f, i); + report1 << Show_Time(disc_time_t(f, i), 1) << " " << yr_disc_super(f, i) * data_time(ALK_time, f, 1) << " " << f * yr_disc_use(f, i) << " "; + { + report1 << exp_disc(f, i); + } + report1 << " " << cv_disc(f, i) << " #_orig_obs: " << obs_disc(f, i) << " #_ " << fleetname(f) << endl; + } + } + else + { + report1 << "# "; + } + report1 << "-9999 0 0 0.0 0.0 # terminator for discard data " << endl; + + report1 << "#" << endl + << do_meanbodywt << " #_use meanbodysize_data (0/1)" << endl; + + if (nobs_mnwt_rd == 0) + report1 << "#_COND_"; + report1 << DF_bodywt << " #_DF_for_meanbodysize_T-distribution_like" << endl; + report1 << "# note: type=1 for mean length; type=2 for mean body weight " << endl; + report1 << "#_year month fleet part type obs stderr" << endl; + if (nobs_mnwt > 0) + { + for (i = 1; i <= nobs_mnwt; i++) + { + f = abs(mnwtdata(3, i)); + report1 << Show_Time(mnwtdata(1, i), 1) << " " << mnwtdata(2, i) << " " << mnwtdata(3, i) << " " << mnwtdata(4, i) << " " << mnwtdata(5, i) << " " << exp_mnwt(i) << " " << mnwtdata(7, i) - var_adjust(3, f) << " #_orig_obs: " << mnwtdata(6, i) << " #_ " << fleetname(f) << endl; + } + } + if (do_meanbodywt == 0) + report1 << "# "; + report1 << " -9999 0 0 0 0 0 0 # terminator for mean body size data " << endl; + + report1 << "#" << endl + << "# set up population length bin structure (note - irrelevant if not using size data and using empirical wtatage" << endl; + report1 << LenBin_option << " # length bin method: 1=use databins; 2=generate from binwidth,min,max below; 3=read vector" << endl; + if (LenBin_option == 1) + { + report1 << "# no additional input for option 1" << endl; + report1 << "# read binwidth, minsize, lastbin size for option 2" << endl; + report1 << "# read N poplen bins, then vector of bin lower boundaries, for option 3" << endl; + } + else if (LenBin_option == 2) + { + report1 << binwidth2 << " # binwidth for population size comp " << endl; + report1 << minLread << " # minimum size in the population (lower edge of first bin and size at age 0.00) " << endl; + report1 << maxLread << " # maximum size in the population (lower edge of last bin) " << endl; + } + else + { + report1 << nlength << " # number of population size bins " << endl; + report1 << len_bins << endl; + } + + report1 << use_length_data << " # use length composition data (0/1/2) where 2 invokes new comp_comtrol format" << endl; + if (use_length_data > 0) + { + report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; + report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; + report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; + report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; + report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; + report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; + report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; + report1 << "#" << endl; + if(use_length_data == 1) + { + report1 << "#_Using old format for composition controls" << endl; + report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (f = 1; f <= Nfleet; f++) + { + report1 << min_tail_L(0, f) << " " << min_comp_L(0, f) << " " << CombGender_L(0, f) << " " << AccumBin_L(0, f) << " " << Comp_Err_L(0, f) << " " << Comp_Err_L2(0, f) << " " << min_sample_size_L(0, f) << " #_fleet:" << f << "_" << fleetname(f) << endl; + } + } + else if (use_length_data == 2) + { + report1 << "#_Using new list format for composition controls" << endl; + report1 << "#_use negative fleet value to fill for all higher numbered fleets (recommended!)" << endl; + report1 << "#_must enter in fleet, partition order; but only need to enter for used combos" << endl; + report1 << "#_fleet = -9999 to terminate list" << endl; + report1 << "#_fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (int i = 0; i <= comp_control_L_count; i++) + report1 << comp_control_L[i] << endl; + } + + report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; + report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; + report1 << nlen_bin << " #_N_LengthBins" << endl + << len_bins_dat << endl; + // report1< 0) + { + for (i = 1; i <= Nobs_l(f); i++) + { + k = 1000; + if (nsamp_l(f, i) < k) + k = nsamp_l(f, i); + exp_l_temp_dat = nsamp_l(f, i) * value(exp_l(f, i) / sum(exp_l(f, i))); + report1 << header_l_rd(f, i)(1, 3) << " " << gen_l(f, i) << " " << header_l_rd(f, i)(5) << " " << nsamp_l(f, i) << " " << exp_l_temp_dat << endl; + } + } + } + report1 << -9999. << " "; + for (j = 2; j <= 6 + nlen_bin2; j++) + report1 << "0 "; + report1 << endl; + } + else + { + report1 << "# see manual for format of length composition data " << endl; + } + + report1 << "#" << endl + << n_abins << " #_N_age_bins" << endl; + if (n_abins > 0) + { + report1 << age_bins1 << endl; + } + else + { + report1 << "# "; + } + report1 << N_ageerr << " #_N_ageerror_definitions" << endl; + if (N_ageerr > 0) + report1 << age_err_rd << endl; + + report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; + report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; + report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; + report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; + report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; + report1 << "#_ParmSelect: parm number for dirichlet or MV_Tweedie" << endl; + report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; + report1 << "#" << endl; + report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (n_abins <= 0) + report1 << "# "; + report1 << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_fleet:" << f << "_" << fleetname(f) << endl; + } + + if (n_abins <= 0) + report1 << "# "; + report1 << Lbin_method << " #_Lbin_method_for_Age_Data: 1=poplenbins; 2=datalenbins; 3=lengths" << endl; + report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; + report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; + report1 << "#_year month fleet sex part ageerr Lbin_lo Lbin_hi Nsamp datavector(female-male)" << endl; + if (Nobs_a_tot > 0) + for (f = 1; f <= Nfleet; f++) + { + if (Nobs_a(f) >= 1) + { + for (i = 1; i <= Nobs_a(f); i++) + { + k = 1000; + if (nsamp_a(f, i) < k) + k = nsamp_a(f, i); // note that nsamp is adjusted by var_adjust, so var_adjust + // should be reset to 1.0 in control files that read the nudata.dat files + exp_a_temp = nsamp_a(f, i) * value(exp_a(f, i) / sum(exp_a(f, i))); + report1 << header_a(f, i)(1) << " " << header_a_rd(f, i)(2, 3) << " " << header_a(f, i)(4, 8) << " " << nsamp_a(f, i) << " " << exp_a_temp << endl; + } + } + } + f = exp_a_temp.size() + 8; + if (n_abins <= 0) + report1 << "# "; + report1 << "-9999 "; + for (i = 1; i <= f; i++) + report1 << " 0"; + report1 << endl; + + report1 << "#" << endl + << use_meansizedata << " #_Use_MeanSize-at-Age_obs (0/1)" << endl; + if (use_meansizedata > 0) + { + report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; + report1 << "# partition codes: 0=combined; 1=discard; 2=retained" << endl; + report1 << "# ageerr codes: positive means mean length-at-age; negative means mean bodywt_at_age" << endl; + report1 << "#_year month fleet sex part ageerr ignore datavector(female-male)" << endl; + report1 << "# samplesize(female-male)" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (Nobs_ms(f) > 0) + { + for (i = 1; i <= Nobs_ms(f); i++) + { + report1 << header_ms(f, i)(1) << " " << header_ms_rd(f, i)(2, 3) << " " << header_ms(f, i)(4, 7); + for (a = 1; a <= n_abins2; a++) + { + report1 << " "; + temp = exp_ms(f, i, a); + if (temp <= 0.) + { + temp = 0.0001; + } + report1 << temp; + } + report1 << endl + << obs_ms_n_read(f, i) << endl; + } + } + } + report1 << "-9999 "; + for (j = 1; j <= 6 + n_abins2; j++) + report1 << " 0"; + report1 << endl; + for (j = 1; j <= n_abins2; j++) + report1 << " 0"; + report1 << endl; + } + + report1 << "#" << endl + << N_envvar << " #_N_environ_variables" << endl; + report1 << "# -2 in year will subtract mean for that env_var; -1 will subtract mean and divide by stddev (e.g. Z-score)" << endl; + report1 << "#_year variable value" << endl; + if (N_envvar > 0) + { + for (i = 0; i <= N_envdata - 1; i++) + report1 << env_temp[i] << endl; + report1 << "-9999 0 0" << endl; + } + + report1 << "#" << endl << "# Sizefreq data. Defined by method because a fleet can use multiple methods" << endl; + report1 << SzFreq_Nmeth_rd << " # N sizefreq methods to read (or -1 for expanded options)" << endl; + if (SzFreq_Nmeth_rd < 0) { + report1 << SzFreq_Nmeth << " # N sizefreq methods to read" << endl; + } + if (SzFreq_Nmeth != 0) + { + report1 << "# each row below has entry for each sizefreq method " << endl; + report1 << "#_ "; + for (int j = 1; j <= SzFreq_Nmeth; j++ ) + { report1 << j << " ";} + report1 << " # Method" << endl; + report1 << SzFreq_Nbins << " #_Sizefreq N bins" << endl; + report1 << SzFreq_units << " #_Sizefreq units(1=bio/2=num)" << endl; + report1 << SzFreq_scale << " #_Sizefreq scale(1=kg/2=lbs/3=cm/4=inches)" << endl; + report1 << SzFreq_mincomp << " #_Sizefreq: small constant to add to comps" << endl; + report1 << SzFreq_nobs << " #_Sizefreq number of obs per method" << endl; + if (SzFreq_Nmeth_rd < 0) { + report1 << Comp_Err_Sz << " #_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; + report1 << Comp_Err_Sz2 << " #_ParmSelect: consecutive index for dirichlet or MV_Tweedie comp_error" << endl; + } + report1 << "#_Sizefreq bins. one row for each method" << endl + << "#Note: negative value for first bin makes it accumulate all smaller fish vs. truncate small fish" << endl; + for (i = 1; i <= SzFreq_Nmeth; i++) + { report1 << SzFreq_Omit_Small(i) * SzFreq_bins1(i, 1) << SzFreq_bins1(i)(2, SzFreq_Nbins(i)) << endl; } + report1 << "#_method year month fleet sex part Nsamp " << endl; + for (iobs = 1; iobs <= SzFreq_totobs; iobs++) { + report1 << SzFreq_obs1(iobs)(1, 7) << " " << SzFreq_exp(iobs) << endl; + } + } + + // begin tagging data section #2 (expected values) + report1 << "#" << endl + << Do_TG << " # do tags (0/1)" << endl; + if (Do_TG > 0) + { + // info on dimensions of tagging data + report1 << N_TG << " # N tag groups" << endl; + report1 << N_TG_recap << " # N recap events" << endl; + report1 << TG_mixperiod << " # mixing latency period: N periods to delay before comparing observed to expected recoveries (0 = release period)" << endl; + report1 << TG_maxperiods << " # max periods (seasons) to track recoveries, after which tags enter accumulator" << endl; + + // tag releases + report1 << "# Release data for each tag group. Tags are considered to be released at the beginning of a season (period)" << endl; + report1 << "# area year seas sex age Nrelease (note that the TG and tfill values are placeholders and are replaced by program generated values)" << endl; + report1 << TG_release << endl; + + // tag recaptures + report1 << "#_Note: Expected values for tag recaptures are reported only for the same combinations of" << endl; + report1 << "# group, year, area, and fleet that had observed recaptures. " << endl; + report1 << "#_TG year seas fleet Nrecap" << endl; + for (j = 1; j <= N_TG_recap; j++) + { + // fill in first 4 columns: + for (k = 1; k <= 4; k++) + report1 << TG_recap_data(j, k) << " "; + // fill in 5th column with bootstrap values + TG = TG_recap_data(j, 1); + overdisp = TG_parm(2 * N_TG + TG); + t = styr + int((TG_recap_data(j, 2) - styr) * nseas + TG_recap_data(j, 3) - 1) - TG_release(TG, 5); // find elapsed time in terms of number of seasons + if (t > TG_maxperiods) + t = TG_maxperiods; + report1 << value(TG_recap_exp(TG, t, 0)) << " #_overdisp: " << value(overdisp) << endl; + } + } + // end tagging data section #2 (expected values) + + report1 << "#" << endl + << Do_Morphcomp << " # morphcomp data(0/1) " << endl; + if (Do_Morphcomp > 0) + { + report1 << "# note that raw data, not bootstrap are reported here " << endl; + report1 << Morphcomp_nobs << " # Nobs" << endl; + report1 << Morphcomp_nmorph << " # Nmorphs" << endl; + report1 << Morphcomp_mincomp << " # add_to_comp" << endl; + report1 << "#_year, month, fleet, null, Nsamp, datavector_by_Nmorphs" << endl; + for (i = 1; i <= Morphcomp_nobs; i++) + { + report1 << Morphcomp_obs(i)(1, 5) << " " << Morphcomp_exp(i) << endl; + } + } + else + { + report1 << "# Nobs, Nmorphs, mincomp" << endl; + report1 << "#_year, seas, type, partition, Nsamp, datavector_by_Nmorphs" << endl; + } + + report1 << "#" << endl + << Do_SelexData << " # Do dataread for selectivity priors(0/1)" << endl; + report1 << "#_year, seas, fleet, age/size, bin, selex_prior, prior_sd" << endl; + report1 << "# feature not yet implemented" << endl; + + report1 << "#" << endl + << "999" << endl + << endl; + } + + else // create bootstrap data + { + + report1 << "#_Catch data: year, seas, fleet, catch, catch_se" << endl; + report1 << "#_catch_se: standard error of log(catch)" << endl; + report1 << "#_NOTE: catch data is ignored for survey fleets" << endl; + k = 0; + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + { + for (y = styr - 1; y <= endyr; y++) + { + for (s = 1; s <= nseas; s++) + { + k++; + t = styr + (y - styr) * nseas + s - 1; + if (y == styr - 1) + { report1 << -999 << " "; } + else + { report1 << y << " "; } + report1 << s << " " << f << " "; + if (fleet_type(f) == 2 && catch_ret_obs(f, t) > 0.0) + { + report1 << 0.1 << " " << catch_se(t, f) << endl; // for bycatch only fleet + } + else if (catchunits(f) == 1) + { + report1 << catch_fleet(t, f, 3) * mfexp(randn(radm) * catch_se(t, f) - 0.5 * catch_se(t, f) * catch_se(t, f)) + << " " << catch_se(t, f) << endl; + } + else + { + report1 << catch_fleet(t, f, 6) * mfexp(randn(radm) * catch_se(t, f) - 0.5 * catch_se(t, f) * catch_se(t, f)) + << " " << catch_se(t, f) << endl; + } + } + } + } + } + report1 << "-9999 0 0 0 0" << endl + << "#" << endl; + + report1 << "#_CPUE_and_surveyabundance_and_index_observations" << endl; + report1 << "#_units: 0=numbers; 1=biomass; 2=F; 30=spawnbio; 31=exp(recdev); 36=recdev; 32=spawnbio*recdev; 33=recruitment; 34=depletion(&see Qsetup); 35=parm_dev(&see Qsetup)" << endl; + report1 << "#_errtype: -1=normal; 0=lognormal; 1=lognormal with bias correction; >1=df for T-dist" << endl; + report1 << "#_SD_report: 0=not; 1=include survey expected value with se" << endl; + report1 << "#_note that link functions are specified in Q_setup section of control file" << endl; + report1 << "#_dataunits = 36 and 35 should use Q_type 5 to provide offset parameter" < 0) + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= Svy_N_fleet(f); i++) + { + t = Svy_time_t(f, i); + ALK_time = Svy_ALK_time(f, i); + double newobs = 0.0; + report1 << Show_Time(t, 1) << " " << Svy_super(f, i) * data_time(ALK_time, f, 1) << " " << f * Svy_use(f, i) << " "; + if (Svy_errtype(f) == -1) // normal error + { + newobs = value(Svy_est(f, i) + randn(radm) * Svy_se_use(f, i)); // uses Svy_se_use, not Svy_se_rd to include both effect of input var_adjust and extra_sd + } + if (Svy_errtype(f) == 0) // lognormal + { + newobs = value(mfexp(Svy_est(f, i) + randn(radm) * Svy_se_use(f, i))); // uses Svy_se_use, not Svy_se_rd to include both effect of input var_adjust and extra_sd + } + else if (Svy_errtype(f) > 1000) // T-dist + { + dvariable df = Svy_errtype(f) - 1000.; + temp = sqrt((df + 1.) / df); + newobs = value(mfexp(Svy_est(f, i) + randn(radm) * Svy_se_use(f, i) * temp)); // adjusts the sd by the df sample size + } + if (Svy_minval(f) >= 0.0 && Svy_errtype(f) != 0) // this logic may need adjustment + newobs = max(newobs, 0.5 * Svy_minval(f)); + report1 << newobs << " " << Svy_se_rd(f, i) << " #_orig_obs: " << Svy_obs(f, i) << " " << fleetname(f) << endl; + } + report1 << "-9999 1 1 1 1 # terminator for survey observations " << endl; + + report1 << "#" << endl + << Ndisc_fleets << " #_N_fleets_with_discard" << endl; + report1 << "#_discard_units (1=same_as_catchunits(bio/num); 2=fraction; 3=numbers)" << endl; + report1 << "#_discard_errtype: >0 for DF of T-dist(read CV below); 0 for normal with CV; -1 for normal with se; -2 for lognormal; -3 for trunc normal with CV" << endl; + report1 << "# note: only enter units and errtype for fleets with discard " << endl; + report1 << "# note: discard data is the total for an entire season, so input of month here must be to a month in that season" << endl; + report1 << "#_Fleet units errtype" << endl; + if (Ndisc_fleets > 0) + { + for (f = 1; f <= Nfleet; f++) + if (disc_units(f) > 0) + report1 << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << endl; + report1 << "#_year month fleet obs stderr" << endl; + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= disc_N_fleet(f); i++) + { + ALK_time = disc_time_ALK(f, i); + report1 << Show_Time(disc_time_t(f, i), 1) << " " << yr_disc_super(f, i) * data_time(ALK_time, f, 1) << " " << f * yr_disc_use(f, i) << " "; + if (disc_errtype(f) >= 1) + { + temp = exp_disc(f, i) + randn(radm) * sd_disc(f, i) * sqrt((disc_errtype(f) + 1.) / disc_errtype(f)) * exp_disc(f, i); + if (temp < 0.001) + temp = 0.001; + } + else if (disc_errtype(f) == 0) + { + temp = exp_disc(f, i) + randn(radm) * sd_disc(f, i); + if (temp < 0.001) + temp = 0.001; + } + else if (disc_errtype(f) == -1) + { + temp = exp_disc(f, i) + randn(radm) * sd_disc(f, i); + if (temp < 0.001) + temp = 0.001; + } + else if (disc_errtype(f) == -2) + { + temp = exp_disc(f, i) * mfexp(randn(radm) * sd_disc(f, i)); + } + else if (disc_errtype(f) == -3) + { + temp = exp_disc(f, i) + randn(radm) * (sd_disc(f, i) / sqrt(cumd_norm((1 - exp_disc(f, i)) / sd_disc(f, i)) - cumd_norm((0 - exp_disc(f, i)) / sd_disc(f, i)))); + if (temp < 0.001) + temp = 0.001; + } + if (disc_minval(f) >= 0.0) + temp = max(value(temp), 0.5 * disc_minval(f)); + + report1 << " " << temp << " " << cv_disc(f, i) << " #_orig_obs: " << obs_disc(f, i) << " #_ " << fleetname(f) << endl; + } + } + else + { + report1 << "# "; + } + report1 << "-9999 0 0 0.0 0.0 # terminator for discard data " << endl; + + report1 << "#" << endl + << do_meanbodywt << " #_use meanbodysize_data (0/1)" << endl; + if (do_meanbodywt == 0) + report1 << "#_COND_"; + report1 << DF_bodywt << " #_DF_for_meanbodysize_T-distribution_like" << endl; + report1 << "# note: type=1 for mean length; type=2 for mean body weight " << endl; + report1 << "#_year month fleet part type obs stderr" << endl; + + // NOTE, the se stored in mnwtdata(7,i) was adjusted in prelim calc to include the input var_adjustment + // so var_adjust is subtracted here when the observation is written + if (nobs_mnwt > 0) + { + for (i = 1; i <= nobs_mnwt; i++) + { + temp = exp_mnwt(i) + randn(radm) * mnwtdata(7, i) * sqrt((DF_bodywt + 1.) / DF_bodywt) * exp_mnwt(i); + if (temp <= 0.0) + { + temp = 0.0001; + } + f = abs(mnwtdata(3, i)); + report1 << Show_Time(mnwtdata(1, i), 1) << " " << mnwtdata(2, i) << " " << mnwtdata(3, i) << " " << mnwtdata(4, i) << " " << mnwtdata(5, i) << " " << temp << " " << mnwtdata(7, i) - var_adjust(3, f) << " #_orig_obs: " << mnwtdata(6, i) << " #_ " << fleetname(f) << endl; + } + } + if (do_meanbodywt == 0) + report1 << "# "; + report1 << " -9999 0 0 0 0 0 0 # terminator for mean body size data " << endl; + + report1 << "#" << endl + << "# set up population length bin structure (note - irrelevant if not using size data and using empirical wtatage" << endl; + report1 << LenBin_option << " # length bin method: 1=use databins; 2=generate from binwidth,min,max below; 3=read vector" << endl; + if (LenBin_option == 1) + { + report1 << "# no additional input for option 1" << endl; + report1 << "# read binwidth, minsize, lastbin size for option 2" << endl; + report1 << "# read N poplen bins, then vector of bin lower boundaries, for option 3" << endl; + } + else if (LenBin_option == 2) + { + report1 << binwidth2 << " # binwidth for population size comp " << endl; + report1 << minLread << " # minimum size in the population (lower edge of first bin and size at age 0.00) " << endl; + report1 << maxLread << " # maximum size in the population (lower edge of last bin) " << endl; + } + else + { + report1 << nlength << " # number of population size bins " << endl; + report1 << len_bins << endl; + } + + report1 << use_length_data << " # use length composition data (0/1/2) where 2 invokes new comp_comtrol format" << endl; + if (use_length_data > 0) + { + report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; + report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; + report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; + report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; + report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; + report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; + report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; + report1 << "#" << endl; + if(use_length_data == 1) + { + report1 << "#_Using old format for composition controls" << endl; + report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (f = 1; f <= Nfleet; f++) + { + report1 << min_tail_L(0, f) << " " << min_comp_L(0, f) << " " << CombGender_L(0, f) << " " << AccumBin_L(0, f) << " " << Comp_Err_L(0, f) << " " << Comp_Err_L2(0, f) << " " << min_sample_size_L(0, f) << " #_fleet:" << f << "_" << fleetname(f) << endl; + } + } + else if (use_length_data == 2) + { + report1 << "#_Using new list format for composition controls" << endl; + report1 << "#_use negative fleet value to fill for all higher numbered fleets (recommended!)" << endl; + report1 << "#_must enter in fleet, partition order; but only need to enter for used combos" << endl; + report1 << "#_fleet = -9999 to terminate list" << endl; + report1 << "#_fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (int i = 0; i <= comp_control_L_count; i++) + report1 << comp_control_L[i] << endl; + } + + report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; + report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; + report1 << nlen_bin << " #_N_LengthBins" << endl + << len_bins_dat << endl; + report1 << "#_year month fleet sex part Nsamp datavector(female-male)" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (Nobs_l(f) > 0) + { + for (i = 1; i <= Nobs_l(f); i++) + { + int parti = mkt_l(f, i); + switch (Comp_Err_L(parti, f)) + { + case 0: + { + Nsamp_DM = nsamp_l(f, i); + break; + } + case 1: // Dirichlet #1 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f), 1))); // Thorson's theta from eq 10 + // effN_DM = 1/(1+theta) + n*theta/(1+theta) + Nsamp_DM = value(1. / (1. + dirichlet_Parm) + nsamp_l(f, i) * dirichlet_Parm / (1. + dirichlet_Parm)); + break; + } + case 2: // Dirichlet #2 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti,f), 1))); // Thorson's beta from eq 12 + // effN_DM = (n+n*beta)/(n+beta) + Nsamp_DM = value((nsamp_l(f, i) + dirichlet_Parm * nsamp_l(f, i)) / (dirichlet_Parm + nsamp_l(f, i))); + break; + } + case 3: // MV_Tweedie + { + // need MV_tweedie + break; + } + } + Nsamp_DM = min(Nsamp_DM, 50000); + Nsamp_DM = max(Nsamp_DM, 1); + exp_l_temp_dat.initialize(); + temp_probs = value(exp_l(f, i)); + temp_mult.fill_multinomial(radm, temp_probs); // create multinomial draws with prob = expected values + for (compindex = 1; compindex <= Nsamp_DM; compindex++) // cumulate the multinomial draws by index in the new data + { + exp_l_temp_dat(temp_mult(compindex)) += 1.0; + } + + report1 << header_l_rd(f, i)(1, 5) << " " << Nsamp_DM << " " << exp_l_temp_dat << endl; +// report1 << header_l_rd(f, i)(1, 3) << " " << gen_l(f, i) << " " << header_l_rd(f, i)(5) << " " << Nsamp_DM << " " << exp_l_temp_dat << endl; + } + } + } + report1 << -9999. << " "; + for (j = 2; j <= 6 + nlen_bin2; j++) + report1 << "0 "; + report1 << endl; + } + else + { + report1 << "# see manual for format of length composition data " << endl; + } + + report1 << "#" << endl + << n_abins << " #_N_age_bins" << endl; + if (n_abins > 0) + { + report1 << age_bins1 << endl; + } + else + { + report1 << "# "; + } + report1 << N_ageerr << " #_N_ageerror_definitions" << endl; + if (N_ageerr > 0) + report1 << age_err_rd << endl; + + report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; + report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; + report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; + report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; + report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; + report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; + report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; + report1 << "#" << endl; + report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (n_abins <= 0) + report1 << "# "; + report1 << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_fleet:" << f << "_" << fleetname(f) << endl; + } + + if (n_abins <= 0) + report1 << "# "; + report1 << Lbin_method << " #_Lbin_method_for_Age_Data: 1=poplenbins; 2=datalenbins; 3=lengths" << endl; + report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; + report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; + + report1 << "#_year month fleet sex part ageerr Lbin_lo Lbin_hi Nsamp datavector(female-male)" << endl; + if (Nobs_a_tot > 0) + for (f = 1; f <= Nfleet; f++) + { + if (Nobs_a(f) > 0) + { + for (i = 1; i <= Nobs_a(f); i++) + { + switch (Comp_Err_A(f)) + { + case 0: + { + Nsamp_DM = nsamp_a(f, i); + break; + } + case 1: // Dirichlet #1 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); // Thorson's theta from eq 10 + // effN_DM = 1/(1+theta) + n*theta/(1+theta) + Nsamp_DM = value(1. / (1. + dirichlet_Parm) + nsamp_a(f, i) * dirichlet_Parm / (1. + dirichlet_Parm)); + break; + } + case 2: // Dirichlet #2 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); // Thorson's beta from eq 12 + // effN_DM = (n+n*beta)/(n+beta) computed in Fit_LenComp + Nsamp_DM = value((nsamp_a(f, i) + dirichlet_Parm * nsamp_a(f, i)) / (dirichlet_Parm + nsamp_a(f, i))); + break; + } + case 3: // MV_Tweedie + { + // need MV_tweedie + break; + } + } + Nsamp_DM = min(Nsamp_DM, 50000); + Nsamp_DM = max(Nsamp_DM, 1); + exp_a_temp.initialize(); + temp_probs2 = value(exp_a(f, i)); + temp_mult.fill_multinomial(radm, temp_probs2); // create multinomial draws with prob = expected values + for (compindex = 1; compindex <= Nsamp_DM; compindex++) // cumulate the multinomial draws by index in the new data + { + exp_a_temp(temp_mult(compindex)) += 1.0; + } + + report1 << header_a(f, i)(1) << " " << header_a_rd(f, i)(2, 3) << " " << header_a(f, i)(4, 8) << " " << Nsamp_DM << " " << exp_a_temp << endl; + } + } + } + f = exp_a_temp.size() + 8; + if (n_abins <= 0) + report1 << "# "; + report1 << "-9999 "; + for (i = 1; i <= f; i++) + report1 << " 0"; + report1 << endl; + + report1 << "#" << endl + << use_meansizedata << " #_Use_MeanSize-at-Age_obs (0/1)" << endl; + if (use_meansizedata > 0) + { + report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; + report1 << "# partition codes: 0=combined; 1=discard; 2=retained" << endl; + report1 << "# ageerr codes: positive means mean length-at-age; negative means mean bodywt_at_age" << endl; + report1 << "#_year month fleet sex part ageerr ignore datavector(female-male)" << endl; + report1 << "# samplesize(female-male)" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (Nobs_ms(f) > 0) + { + for (i = 1; i <= Nobs_ms(f); i++) + { + report1 << header_ms(f, i)(1) << " " << header_ms_rd(f, i)(2, 3) << " " << header_ms(f, i)(4, 7); + for (a = 1; a <= n_abins2; a++) + { + report1 << " "; + temp = exp_ms(f, i, a) + randn(radm) * exp_ms_sq(f, i, a) / obs_ms_n(f, i, a); + if (temp <= 0.) + { + temp = 0.0001; + } + report1 << temp; + } + report1 << endl + << obs_ms_n_read(f, i) << endl; + } + } + } + report1 << "-9999 "; + for (j = 1; j <= 6 + n_abins2; j++) + report1 << " 0"; + report1 << endl; + for (j = 1; j <= n_abins2; j++) + report1 << " 0"; + report1 << endl; + } + + report1 << "#" << endl + << N_envvar << " #_N_environ_variables" << endl; + report1 << "# -2 in year will subtract mean for that env_var; -1 will subtract mean and divide by stddev (e.g. Z-score)" << endl; + report1 << "#_year variable value" << endl; + if (N_envvar > 0) + { + for (i = 0; i <= N_envdata - 1; i++) + report1 << env_temp[i] << endl; + report1 << "-9999 0 0" << endl; + } + + report1 << "#" << endl << "# Sizefreq data. Defined by method because a fleet can use multiple methods" << endl; + report1 << SzFreq_Nmeth_rd << " # N sizefreq methods to read (or -1 for expanded options)" << endl; + if (SzFreq_Nmeth_rd < 0) { + report1 << SzFreq_Nmeth << " # N sizefreq methods to read" << endl; + } + if (SzFreq_Nmeth != 0) + { + report1 << "# each row below has entry for each sizefreq method " << endl; + report1 << "#_ "; + for (int j = 1; j <= SzFreq_Nmeth; j++ ) + { report1 << j << " ";} + report1 << " # Method" << endl; + report1 << SzFreq_Nbins << " #_Sizefreq N bins" << endl; + report1 << SzFreq_units << " #_Sizefreq units(1=bio/2=num)" << endl; + report1 << SzFreq_scale << " #_Sizefreq scale(1=kg/2=lbs/3=cm/4=inches)" << endl; + report1 << SzFreq_mincomp << " #_Sizefreq: small constant to add to comps" << endl; + report1 << SzFreq_nobs << " #_Sizefreq number of obs per method" << endl; + if (SzFreq_Nmeth_rd < 0) { + report1 << Comp_Err_Sz << " #_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; + report1 << Comp_Err_Sz2 << " #_ParmSelect: consecutive index for dirichlet or MV_Tweedie comp_error" << endl; + } + report1 << "#_Sizefreq bins. one row for each method" << endl + << "#Note: negative value for first bin makes it accumulate all smaller fish vs. truncate small fish" << endl; + for (i = 1; i <= SzFreq_Nmeth; i++) + { report1 << SzFreq_Omit_Small(i) * SzFreq_bins1(i, 1) << SzFreq_bins1(i)(2, SzFreq_Nbins(i)) << endl; } + report1 << "#_method year month fleet sex part Nsamp " << endl; + j = 2 * max(SzFreq_Nbins); + dvector temp_probs3(1, j); + dvector SzFreq_newdat(1, j); + for (iobs = 1; iobs <= SzFreq_totobs; iobs++) + { + f = SzFreq_obs1(iobs, 1); // sizefreq method + double Nsamp_dat = 50000; + if (SzFreq_obs1(iobs, 7) < Nsamp_dat) + Nsamp_dat = SzFreq_obs1(iobs, 7); + SzFreq_newdat.initialize(); + + switch (Comp_Err_Sz(f)) + { + case 0: + { + Nsamp_DM = Nsamp_dat; + break; + } + case 1: // Dirichlet #1 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(f),1))); // Thorson's theta from eq 10 + // effN_DM = 1/(1+theta) + n*theta/(1+theta) + Nsamp_DM = value(1. / (1. + dirichlet_Parm) + Nsamp_dat * dirichlet_Parm / (1. + dirichlet_Parm)); + break; + } + case 2: // Dirichlet #2 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(f),1))); // Thorson's beta from eq 12 + // effN_DM = (n+n*beta)/(n+beta) computed in Fit_LenComp + Nsamp_DM = value((nsamp_l(f, i) + dirichlet_Parm * nsamp_l(f, i)) / (dirichlet_Parm + Nsamp_dat)); + break; + } + case 3: // MV_Tweedie + { + // need MV_tweedie + break; + } + } + + temp_probs3(1, SzFreq_Setup2(iobs)) = value(SzFreq_exp(iobs)); + temp_mult.fill_multinomial(radm, temp_probs3(1, SzFreq_Setup2(iobs))); // create multinomial draws with prob = expected values + for (compindex = 1; compindex <= j; compindex++) // cumulate the multinomial draws by index in the new data + { + SzFreq_newdat(temp_mult(compindex)) += 1.0; + } + + report1 << SzFreq_obs1(iobs)(1, 7) << " " << SzFreq_newdat(1, SzFreq_Setup2(iobs)) << endl; + } + } + + // begin tagging data section #3 (bootstrap data) + report1 << "#" << endl + << Do_TG << " # do tags (0/1)" << endl; + if (Do_TG > 0) + { + dvector temp_negbin(1, 50000); + + // changes authored by Gavin Fay in June 2016 in SS3 3.24Y + TG_recap_gen.initialize(); + int N_TG_recap_gen = 0; + for (TG = 1; TG <= N_TG; TG++) + { + overdisp = TG_parm(2 * N_TG + TG); + + dvector TG_fleet_probs(1, Nfleet); + dvector temp_tags(1, Nfleet); + // problem: TG_recap_exp only dimensioned to TG_endtime + for (t = 0; t <= min(TG_maxperiods, TG_endtime(TG)); t++) + { + if (value(TG_recap_exp(TG, t, 0)) > 0) + { + temp_negbin.initialize(); + temp_negbin.fill_randnegbinomial(value(TG_recap_exp(TG, t, 0)), value(overdisp), radm); + //cout << TG << " " << t << " " << temp_negbin << " " << TG_recap_exp(TG,t,0) << " " << value(overdisp) << endl; + if (temp_negbin(1) > 0) + { + TG_fleet_probs = value(TG_recap_exp(TG, t)(1, Nfleet)) / temp_negbin(1); + temp_tags = 0.0; + temp_mult.fill_multinomial(radm, TG_fleet_probs); + for (compindex = 1; compindex <= temp_negbin(1); compindex++) // cumulate the multinomial draws by index in the new data + { + temp_tags(temp_mult(compindex)) += 1.0; + } + for (f = 1; f <= Nfleet; f++) + { + if (temp_tags(f) > 0) + { + N_TG_recap_gen += 1; + TG_recap_gen(N_TG_recap_gen, 1) = TG; + TG_recap_gen(N_TG_recap_gen, 2) = TG_release(TG, 3) + int((t + TG_release(TG, 4) - 1) / nseas); + int k = TG_release(TG, 4); + TG_recap_gen(N_TG_recap_gen, 3) = ((t + k - 1) % nseas) + 1; + TG_recap_gen(N_TG_recap_gen, 4) = f; + TG_recap_gen(N_TG_recap_gen, 5) = temp_tags(f); + } + } + } + } + } + } + + // info on dimensions of tagging data + report1 << N_TG << " # N tag groups" << endl; + // //report1< area year seas sex age Nrelease (note that the TG and tfill values are placeholders and are replaced by program generated values)" << endl; + report1 << TG_release << endl; + + // tag recaptures + report1 << "#_Note: Bootstrap values for tag recaptures are produced only for the same combinations of" << endl; + report1 << "# group, year, area, and fleet that had observed recaptures. " << endl; + report1 << "#_TG year seas fleet Nrecap" << endl; + for (j = 1; j <= N_TG_recap_gen; j++) + { + report1 << TG_recap_gen(j) << endl; + } + } + // end tagging data section #3 (bootstrap data) + + report1 << "#" << endl + << Do_Morphcomp << " # morphcomp data(0/1) " << endl; + if (Do_Morphcomp > 0) + { + report1 << "# note that raw data, not bootstrap are reported here " << endl; + report1 << Morphcomp_nobs << " # Nobs" << endl; + report1 << Morphcomp_nmorph << " # Nmorphs" << endl; + report1 << Morphcomp_mincomp << " # add_to_comp" << endl; + report1 << "#_year, month, fleet, null, Nsamp, datavector_by_Nmorphs (no error added!!!)" << endl; + for (i = 1; i <= Morphcomp_nobs; i++) + { + report1 << Morphcomp_obs(i)(1, 5) << " " << Morphcomp_exp(i) << endl; + } + } + else + { + report1 << "# Nobs, Nmorphs, mincomp" << endl; + report1 << "#_year, seas, type, partition, Nsamp, datavector_by_Nmorphs" << endl; + } + + report1 << "#" << endl + << Do_SelexData << " # Do dataread for selectivity priors(0/1)" << endl; + report1 << "#_year, seas, fleet, age/size, bin, selex_prior, prior_sd" << endl; + report1 << "# feature not yet implemented" << endl; + + report1 << "#" << endl + << "999" << endl + << endl; + } + report1.close(); + } + + // report1 << "ENDDATA" << endl; + return; + } // end of write data + +//******************************************************************** + /* SS_Label_FUNCTION 39 write_nucontrol write new control file and starter file */ +FUNCTION void write_nucontrol() + { + echoinput << "Write starter.ss_new file " << endl; + anystring = ssnew_pathname + "starter.ss_new"; + ofstream NuStart(anystring); + NuStart << version_info(1) << version_info(2) << version_info(3) << endl + << version_info2 << endl; + if (N_SC > 0) + NuStart << Starter_Comments << endl; + NuStart << datfilename << " #_datfile" << endl + << ctlfilename << " #_ctlfile" << endl; + NuStart << readparfile << " #_init_values_src: 0 (use init values in control file); 1 (use ss3.par)" << endl; + NuStart << rundetail << " #_screen_display: 0 (minimal); 1 (one line per iter); 2 (each logL)" << endl; + NuStart << reportdetail << " #_report_table_selection: 0 (minimal; no wtatage.ss_new); 1 (all tables); 2 (brief), 3 (custom, read list) " << endl; + if (reportdetail == 3) + { + NuStart << "# custom report options: -100 to start with minimal; -101 to start with all; -number to remove, +number to add, -999 to end" << endl; + for (unsigned j = 0; j <= reportdetail_list.size() - 1; j++) + { + NuStart << reportdetail_list[j](1) << endl; + } + } + else + { + NuStart << "# COND: custom report options: -100 to start with minimal; -101 to start with all; -number to remove, +number to add, -999 to end" << endl; + } + + NuStart << docheckup << " #_checkup: write more 1st iteration age-specific details to echoinput.sso file (0,1) " << endl; + NuStart << Do_ParmTrace << " #_parmtrace: write parm values to ParmTrace.sso: 0 (no); 1 (good_iter,active_parms); 2 (good,all); 3 (every,all); 4 (every,active)" << endl; + NuStart << Do_CumReport << " #_cumreport: write to cumreport.sso: 0 (no); 1 (like×eries); 2 (add survey fits)" << endl; + NuStart << Do_all_priors << " #_prior_like: include prior_like for non-estimated parameters (0,1) " << endl; + NuStart << SoftBound << " #_soft_bounds: Use Soft Boundaries to aid convergence (0,1) (recommended)" << endl; + NuStart << "#" << endl + << N_nudata_read << " #_N_bootstraps: Number of datafiles to produce: 0 turns off all *.ss_new; 1st is data_echo.ss_new, 2nd is data_expval.ss, 3rd and higher are data_boot_**N.ss," << endl; + NuStart << Turn_off_phase_rd << " #_last_estimation_phase: turn off estimation for parameters entering after this phase" << endl; + NuStart << "#" << endl + << burn_intvl << " #_MCMCburn" << endl; + NuStart << thin_intvl << " #_MCMCthin" << endl; + NuStart << jitter << " # jitter_fraction: jitter within parameter bounds" << endl; + + NuStart << STD_Yr_min_rd << " #_minyr_sdreport: min year for sdreport outputs (-1 for styr); #_" << STD_Yr_min << endl; + NuStart << STD_Yr_max_rd << " #_maxyr_sdreport: max year for sdreport outputs (-1 for endyr+1; -2 for endyr+Nforecastyrs); #_" << STD_Yr_max << endl; + NuStart << N_STD_Yr_RD << " #_N_STD_yrs: N individual STD years " << endl; + NuStart << "#COND: vector of year values if N>0" << endl + << STD_Yr_RD << endl; + + NuStart << final_conv << " #_converge_criterion: (e.g. 1.0e-04) " << endl; + NuStart << retro_yr - endyr << " #_retro_yr: retrospective year relative to end year (e.g. -4)" << endl; + NuStart << Smry_Age << " #_min_age_summary_bio" << endl; + NuStart << depletion_basis_rd << " #_depl_basis: Depletion denom is: 0=skip; 1=X*SSB_virgin; 2=X*SSB_msy; 3=X*SSB_styr; 4=X*SSB_endyr; 5=X*dyn_Bzero; 6=X*SSB_unf_bmark; values>=11 invoke N multiyr with 10s & 100s digit; append .1 to invoke log(ratio); e.g. 122.1 produces log(12 yr trailing average of B/Bmsy)" << endl; + NuStart << "# If value = 1, then Btarget in benchmark will be a fraction of SSB_virgin, else will be a fraction of SSB_benchmark" << endl; + NuStart << depletion_level << " #_depl_denom_frac: fraction (X) for Depletion denominator (e.g. 0.4)" << endl; + NuStart << SPR_reporting << " #_SPR_basis: 0 (skip); 1 (1-SPR)/(1-SPR_tgt); 2 (1-SPR)/(1-SPR_MSY); 3 (1-SPR)/(1-SPR_Btarget); 4 (1-SPR); 5 (SPR)" << endl; + NuStart << F_reporting << " # F_std_units: 0 (skip); 1 (exploitation(Bio)); 2 (exploitation(Num)); 3 (sum(Apical_F's)); 4 (mean F for range of ages (numbers weighted)); 5 (unweighted mean F for range of ages)" << endl; + if (F_reporting == 4 || F_reporting == 5) + { + NuStart << F_reporting_ages << " # min and max age over which mean F will be calculated, with F=Z-M" << endl; + } + else + { + NuStart << "#COND 10 15 #_min and max age over which mean F will be calculated with F_reporting=4 or 5" << endl; + } + NuStart << F_std_basis_rd << " # F_std_basis: 0=no scaling; 1 (F/Fspr); 2 (F/Fmsy); 3 (F/Fbtgt); where F means annual F_std, Fmsy means F_std@msy; values >=11 invoke N multiyr using 10s and 100s digit; append .1 to invoke log(ratio)" << endl; + NuStart << double(mcmc_output_detail) + MCMC_bump << " #_MCMC_output_detail: integer part (0=default; 1=adds obj func components; 2= +write_report_for_each_mceval); and decimal part (added to SR_LN(R0) on first call to mcmc)" << endl; + NuStart << ALK_tolerance << " #_deprecated: ALK tolerance ***disabled in code" << endl; + NuStart << irand_seed_rd << " #_seed: random number seed for bootstrap data (-1 to use long(time) as seed): # " << irand_seed << endl; + NuStart << timevary_bio_4SRR << " #_Compatibility: flag for legacy (0) vs improved (1) impact of timevary biology on benchmark SRR calcs >=3.30.24" << endl; + NuStart << "3.30 #_final: check value for end of file and for version control" << endl; + NuStart.close(); + + echoinput << "Write forecast.ss_new file " << endl; + anystring = ssnew_pathname + "forecast.ss_new"; + ofstream NuFore(anystring); + NuFore << version_info(1) << version_info(2) << version_info(3) << endl; + if (N_FC > 0) + NuFore << Forecast_Comments << endl; + NuFore << "# for all year entries except rebuilder; enter either: actual year, -999 for styr, 0 for endyr, neg number for rel. endyr" << endl; + NuFore << Do_Benchmark << " # Benchmarks: 0=skip; 1=calc F_spr,F_Btgt,F_msy; 2=calc F_spr,F0.1,F_msy; 3=add F_Blimit; " << endl; + NuFore << Do_MSY << " # Do_MSY: 1= set to F(SPR); 2=calc F(MSY); 3=set to F(Btgt) or F0.1; 4=set to F(endyr); 5=calc F(MEY) with MSY_unit options" << endl; + NuFore << "# if Do_MSY=5, enter MSY_Units; then list fleet_ID, cost/F, price/mt, include_in_Fmey_scaling; # -fleet_ID to fill; -9999 to terminate" << endl; + if (Do_MSY == 5) + { + NuFore << MSY_units << " # MSY_units: 1=dead biomass, 2=dead biomass w/o excluded bycatch fleet, 3=retained biomass; 4=profits using price and costs" << endl; + NuFore << "# Note: if a fleet's catch is excluded from the Fmey search, its catch or profits are still included in the MSY value using historical F levels from Bmark_years" << endl; + NuFore << "# Fleet Cost_per_F Price_per_F include_in_Fmey_search" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (YPR_mask(f) > 0.0) + NuFore << f << " " << CostPerF(f) << " " << PricePerF(f) << " " << AdjustBenchF(f) << endl; + } + NuFore << "-9999 1 1 1 # terminate list of fleet costs and prices" << endl; + } + + NuFore << SPR_target << " # SPR target (e.g. 0.40)" << endl; + NuFore << BTGT_frac << " # Biomass target (e.g. 0.40) as fraction of SSB_virgin if depletion basis = 1 or time_vary compatibility = 0, else as fraction of SSB_unfished in benchmark" << endl; + if (Do_Benchmark != 3) NuFore << "#"; + NuFore << Blim_frac << " # COND: Do_Benchmark==3; Blimit as fraction of Bmsy (neg value to use as frac of SSB_virgin or SSB_unfished) (e.g. 0.50)"; + NuFore << "#" << endl << "# Bmark_years: beg_bio, end_bio, beg_selex, end_selex, beg_relF, end_relF, beg_recr_dist, end_recr_dist, beg_SRparm, end_SRparm (enter actual year, or values of 0 or -integer to be rel. endyr)" << endl + << Bmark_Yr_rd << endl + << "# " << Bmark_Yr << endl; + NuFore << "# value <0 convert to endyr-value; except -999 converts to start_yr; must be >=start_yr and <=endyr" << endl; + NuFore << Bmark_RelF_Basis << " # Bmark_relF_Basis: 1 = use year range; 2 = set relF same as forecast below" << endl; + NuFore << "#" << endl + << Do_Forecast_rd << " # Forecast: -1=none; 0=simple_1yr; 1=F(SPR); 2=F(MSY) 3=F(Btgt) or F0.1; 4=Ave F (uses first-last relF yrs); 5=input annual F scalar" << endl; + NuFore << "# where none and simple require no input after this line; simple sets forecast F same as end year F" << endl; + NuFore << N_Fcast_Yrs << " # N forecast years " << endl; + NuFore << Fcast_Flevel << " # Fmult (only used for Do_Forecast==5) such that apical_F(f)=Fmult*relF(f)" << endl; + anystring = ""; + if(Fcast_yr_rd(1) != -12345) + { // write in old format + NuFore << "#_Fcast_years for averaging: beg_selex, end_selex, beg_relF, end_relF, beg_mean recruits, end_recruits (enter actual year, or values of 0 or -integer to be rel. endyr)" << endl + << Fcast_yr_rd << endl + << "# " << Fcast_yr << endl; + NuFore << Fcast_timevary_Selex_rd << " # Forecast selectivity (0=fcast selex is mean from year range; 1=fcast selectivity from time-vary parms). NOTE: logic reverses in new format" << endl; + // + NuFore << "# A revised protocol for the Fcast_yr specification is available and recommended. Template is below." << endl; + warnstream << "A revised protocol for the Fcast_yr specification is available and recommended."; + write_message (NOTE, 1); + anystring = "#"; + } +// else + { // new list based format for Fcast years + NuFore << anystring << endl << anystring << " -12345 # code to invoke new format for expanded fcast year controls" << endl + << "# biology and selectivity vectors are updated annually in the forecast according to timevary parameters, so check end year of blocks and dev vectors" << endl + << "# input in this section directs creation of means over historical years to override any time_vary changes" << endl + << "# Factors implemented so far: 1=M, 4=recr_dist, 5=migration, 10=selectivity, 11=rel_F, 12=recruitment" << endl + << "# rel_F and Recruitment also have additional controls later in forecast.ss" << endl + << "# input as list: Factor, method (0, 1), st_yr, end_yr" << endl + << "# Terminate with -9999 for Factor" << endl + << "# st_yr and end_yr input can be actual year; <=0 sets rel. to timeseries endyr; Except -999 for st_yr sets to first year if time series" << endl +// << "#_Factor: 1=M, 2=growth, 3=wtlen, 4=recr_dist&femfrac, 5=migration, 6=ageerror, 7=catchmult, 8=hermaphroditism" << endl + << "# Method = 0 (or omitted) continue using time_vary parms; 1 use mean of derived factor over specified year range"< 0) + { + NuFore << anystring << Fcast_MGparm_ave_rd(i) << " # " << MGtype_Lbl(i) << "; use: " << Fcast_MGparm_ave(i) << endl; + } + + NuFore << anystring << "-9999 0 0 0" << endl << "#" < control rule cutoff" << endl; + NuFore << H4010_bot << " # Control rule cutoff for no F (as frac of HCR_anchor, e.g. 0.10) " << endl; + NuFore << H4010_scale_rd << " # Buffer: enter Control rule target as fraction of Flimit (e.g. 0.75), negative value invokes list of [year, scalar]. -year fills from year to YrMax " << endl; + NuFore << "# Also see HCR_anchor below to use virgin vs benchmark SSB or Bmsy as basis for inflection and cutoff" << endl; + if (H4010_scale_rd < 0) + { + j = H4010_scale_vec_rd.size() - 1; + for (int s = 0; s <= j; s++) + { + NuFore << H4010_scale_vec_rd[s] << endl; + } + } + + NuFore << "#" << endl << Fcast_Loop_Control(1) << " #_N forecast loops (1=OFL only; 2=ABC; 3=get F from forecast ABC catch with allocations applied)" << endl; + NuFore << Fcast_Loop_Control(2) << " # First forecast loop with stochastic recruitment" << endl; + NuFore << Fcast_Loop_Control(3) << " # Forecast base recruitment: 0= spawn_recr; 1=mult*spawn_recr_fxn; 2=mult*VirginRecr; 3=deprecated; 4=mult*mean_over_yr_range" << endl; + NuFore << "# for option 4, set phase for fore_recr_devs to -1 in control to get constant mean in MCMC, else devs will be applied" << endl; + if (Fcast_Loop_Control(3) == 0) + { + NuFore << 1.0 << " # Value multiplier is ignored" << endl; + } + else + { + NuFore << Fcast_Loop_Control(4) << " # multiplier on base recruitment " << endl; + } + NuFore << Fcast_Loop_Control(5) << " # HCR_anchor: 0 or 2 uses unfished benchmark SSB (old hardwired approach); 1 = virgin SSB; 3 = BMSY" << endl << "#" << endl; + + NuFore << Fcast_Cap_FirstYear << " # FirstYear for caps and allocations (should be after years with fixed inputs) " << endl; + + NuFore << Impl_Error_Std << " # stddev of log(realized catch/target catch) in forecast (set value>0.0 to cause active impl_error)" << endl; + + NuFore << Do_Rebuilder << " # Do West Coast gfish rebuilder output: 0=no; 1=yes " << endl; + NuFore << Rebuild_Ydecl << " # Rebuilder: first year catch could have been set to zero (Ydecl)(-1 to set to 1999)" << endl; + NuFore << Rebuild_Yinit << " # Rebuilder: year for current age structure (Yinit) (-1 to set to endyear+1)" << endl; + + NuFore << Fcast_RelF_Basis << " # fleet relative F: 1=use mean over year range; 2=read seas, fleet, alloc list below" << endl; + NuFore << "# Note that fleet allocation values is used directly as F if Do_Forecast=4 " << endl; + + NuFore << Fcast_Catch_Basis << " # basis for fcast catch tuning and for fcast catch caps and allocation (2=deadbio; 3=retainbio; 5=deadnum; 6=retainnum); NOTE: same units for all fleets" << endl; + + NuFore << "# Conditional input if relative F choice = 2" << endl; + NuFore << "# enter list of: season, fleet, relF; if used, terminate with season=-9999" << endl; + { + for (s = 1; s <= nseas; s++) + for (f = 1; f <= Nfleet; f++) + { + if (Fcast_RelF_Use(s, f) > 0.0) + { + if (Fcast_RelF_Basis == 1) + NuFore << "# "; + NuFore << s << " " << f << " " << Fcast_RelF_Use(s, f) << endl; + } + } + if (Fcast_RelF_Basis == 1) + NuFore << "# "; + NuFore << "-9999 0 0 # terminator for list of relF" << endl; + } + + NuFore << "# enter list of: fleet number, max annual catch for fleets with a max; terminate with fleet=-9999" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (Fcast_MaxFleetCatch(f) > -1 && fleet_type(f) == 1) + NuFore << f << " " << Fcast_MaxFleetCatch(f) << endl; + } + NuFore << "-9999 -1" << endl; + + NuFore << "# enter list of area ID and max annual catch; terminate with area=-9999" << endl; + for (p = 1; p <= pop; p++) + { + if (Fcast_MaxAreaCatch(p) > -1) + NuFore << p << " " << Fcast_MaxAreaCatch(p) << endl; + } + NuFore << "-9999 -1" << endl; + + NuFore << "# enter list of fleet number and allocation group assignment, if any; terminate with fleet=-9999" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (Allocation_Fleet_Assignments(f) > 0) + NuFore << f << " " << Allocation_Fleet_Assignments(f) << endl; + } + NuFore << "-9999 -1" << endl; + + NuFore << "#_if N allocation groups >0, list year, allocation fraction for each group " << endl; + NuFore << "# list sequentially because read values fill to end of N forecast" << endl; + NuFore << "# terminate with -9999 in year field " << endl; + + if (Fcast_Catch_Allocation_Groups > 0) + { + if (finish_starter == 999) + { + NuFore << endyr + 1 << " " << Fcast_Catch_Allocation(1) << endl; + } + else + { + j = Fcast_Catch_Allocation_list.size() - 1; + for (k = 0; k <= j - 1; k++) + NuFore << Fcast_Catch_Allocation_list[k] << endl; + } + NuFore << " -9999 "; + for (j = 1; j <= Fcast_Catch_Allocation_Groups; j++) + { + NuFore << " 1 "; + } + NuFore << endl; + } + else + { + NuFore << "# no allocation groups" << endl; + } + + NuFore << "#" << endl; + NuFore << Fcast_InputCatch_Basis << " # basis for input Fcast catch: -1=read basis with each obs; 2=dead catch; 3=retained catch; 99=input apical_F; NOTE: bio vs num based on fleet's catchunits" << endl; + + NuFore << "#enter list of Fcast catches or Fa; terminate with line having year=-9999" << endl; + NuFore << "#_year seas fleet catch(or_F)"; + if (Fcast_InputCatch_Basis == -1) + NuFore << " Basis "; + NuFore << endl; + for (j = 1; j <= N_Fcast_Input_Catches; j++) + { + NuFore << Fcast_InputCatch_rd(j) << endl; + } + NuFore << "-9999 1 1 0 "; + if (Fcast_InputCatch_Basis == -1) + NuFore << " 2 "; + NuFore << endl; + NuFore << "#" << endl + << 999 << " # verify end of input " << endl; + NuFore.close(); + + //********************************************************** + echoinput << "Write control.ss_new file " << endl; + + ofstream report4("control.ss_new"); + report4 << version_info(1) << version_info(2) << version_info(3) << endl; + report4 << version_info2 << endl; + if (N_CC > 0) + report4 << Control_Comments << endl; + report4 << "#_data_and_control_files: " << datfilename << " // " << ctlfilename << endl; + report4 << WTage_rd << " # 0 means do not read wtatage.ss; 1 means read and use wtatage.ss and also read and use growth parameters" << endl; + report4 << N_GP << " #_N_Growth_Patterns (Growth Patterns, Morphs, Bio Patterns, GP are terms used interchangeably in SS3)" << endl; + report4 << N_platoon << " #_N_platoons_Within_GrowthPattern " << endl; + if (N_platoon == 1) + report4 << "#_Cond "; + else + sd_ratio_rd = (sd_ratio_rd < 0)? -platoon_sd_ratio: platoon_sd_ratio; + report4 << sd_ratio_rd << " #_Platoon_within/between_stdev_ratio (no read if N_platoons=1)" << endl; + report4 << "#_Cond sd_ratio_rd < 0: platoon_sd_ratio parameter required after movement params." << endl; + if (N_platoon == 1) + report4 << "#_Cond "; + report4 << platoon_distr(1, N_platoon) << " #vector_platoon_dist_(-1_in_first_val_gives_normal_approx)" << endl; + report4 << "#" << endl; + if (finish_starter == 999) + { + report4 << 2 << " # recr_dist_method for parameters: 2=main effects for GP, Settle timing, Area; 3=each Settle entity; 4=none, only when N_GP*Nsettle*pop==1" << endl; + } + else + { + report4 << recr_dist_method << " # recr_dist_method for parameters: 2=main effects for GP, Area, Settle timing; 3=each Settle entity; 4=none (only when N_GP*Nsettle*pop==1)" << endl; + } + report4 << recr_dist_area << " # not yet implemented; Future usage: Spawner-Recruitment: 1=global; 2=by area" << endl; + report4 << N_settle_assignments << " # number of recruitment settlement assignments " << endl; + report4 << 0 << " # unused option" << endl; + report4 << "#GPattern month area age (for each settlement assignment)" << endl + << settlement_pattern_rd << endl + << "#" << endl; + if (pop == 1) + { + report4 << "#_Cond 0 # N_movement_definitions goes here if Nareas > 1" << endl + << "#_Cond 1.0 # first age that moves (real age at begin of season, not integer) also cond on do_migration>0" << endl + << "#_Cond 1 1 1 2 4 10 # example move definition for seas=1, morph=1, source=1 dest=2, age1=4, age2=10" << endl; + } + else + { + report4 << do_migration << " #_N_movement_definitions" << endl; + if (do_migration > 0) + { + report4 << migr_firstage << " # first age that moves (real age at begin of season, not integer)" << endl + << "# seas,GP,source_area,dest_area,minage,maxage" << endl + << move_def << endl; + } + else + { + report4 << "#_Cond 1.0 # first age that moves (real age at begin of season, not integer) if do_migration>0" << endl + << "#_Cond 1 1 1 2 4 10 # example move definition for seas=1, GP=1, source=1 dest=2, age1=4, age2=10" << endl; + } + } + report4 << "#" << endl; + report4 << N_Block_Designs << " #_Nblock_Patterns" << endl; + if (N_Block_Designs > 0) + { + report4 << Nblk << " #_blocks_per_pattern " << endl + << "# begin and end years of blocks" << endl + << Block_Design << endl; + } + else + { + report4 << "#_Cond " << 0 << " #_blocks_per_pattern " << endl + << "# begin and end years of blocks" << endl; + } + report4 << "#" << endl; + report4 << "# controls for all timevary parameters " << endl; + report4 << parm_adjust_method << " #_time-vary parm bound check (1=warn relative to base parm bounds; 3=no bound check); Also see env (3) and dev (5) options to constrain with base bounds" << endl + << "#" << endl; + report4 << "# AUTOGEN" << endl; + report4 << autogen_timevary << " # autogen: 1st element for biology, 2nd for SR, 3rd for Q, 4th reserved, 5th for selex" << endl; + report4 << "# where: 0 = autogen time-varying parms of this category; 1 = read each time-varying parm line; 2 = read then autogen if parm min==-12345" << endl; + + report4 << "#" << endl + << "#_Available timevary codes" << endl; + report4 << "#_Block types: 0: P_block=P_base*exp(TVP); 1: P_block=P_base+TVP; 2: P_block=TVP; 3: P_block=P_block(-1) + TVP" << endl; + report4 << "#_Block_trends: -1: trend bounded by base parm min-max and parms in transformed units (beware); -2: endtrend and infl_year direct values; -3: end and infl as fraction of base range" << endl; + + report4 << "#_EnvLinks: 1: P(y)=P_base*exp(TVP*env(y)); 2: P(y)=P_base+TVP*env(y); 3: P(y)=f(TVP,env_Zscore) w/ logit to stay in min-max; 4: P(y)=2.0/(1.0+exp(-TVP1*env(y) - TVP2))" << endl; + report4 << "#_DevLinks: 1: P(y)*=exp(dev(y)*dev_se; 2: P(y)+=dev(y)*dev_se; 3: random walk; 4: zero-reverting random walk with rho; 5: like 4 with logit transform to stay in base min-max" << endl + << "#_DevLinks(more): 21-25 keep last dev for rest of years" << endl + << "#" << endl; + report4 << "#_Prior_codes: 0=none; 6=normal; 1=symmetric beta; 2=CASAL's beta; 3=lognormal; 4=lognormal with biascorr; 5=gamma" << endl; + report4 << "#" << endl + << "# setup for M, growth, wt-len, maturity, fecundity, (hermaphro), recr_distr, cohort_grow, (movement), (age error), (catch_mult), sex ratio " << endl; + report4 << "#_NATMORT" << endl + << natM_type << " #_natM_type:_0=1Parm; 1=N_breakpoints;_2=Lorenzen;_3=agespecific;_4=agespec_withseasinterpolate;_5=BETA:_Maunder_link_to_maturity;_6=Lorenzen_range" << endl; + if (natM_type == 0) + { + report4 << " #_no additional input for selected M option; read 1P per morph" << endl; + } + else if (natM_type == 1) + { + report4 << N_natMparms << " #_N_breakpoints" << endl + << NatM_break << " # age(real) at M breakpoints" << endl; + } + else if (natM_type == 2) + { + report4 << natM_amin << " #_reference age for Lorenzen M; read 1P per morph" << endl; + } + else if (natM_type == 6) + { + report4 << natM_amin << " #_minimum age for Lorenzen" << endl + << natM_amax << " #_maximum age for Lorenzen; read 1P per morph" << endl; + } + else if (natM_type >= 3 && natM_type < 5) + { + report4 << " #_Age_natmort_by sex x growthpattern (nest GP in sex)" << endl + << Age_NatMort << endl; + } + else + { + report4 << natM_5_opt << " #_Maunder_M suboptions: 1 (4 parm per sex*GP, using age_maturity), 2 (4 parm, same), 3 (6 parm)" << endl; + report4 << "#_Note:_parm2(young_fish_power)_has_neg_value_(plaus._range:~-3_to_0.0);linear_@_-1.0; const_@_0.0" << endl; + } + report4 << "#" << endl; + report4 << Grow_type << " # GrowthModel: 1=vonBert with L1&L2; 2=Richards with L1&L2; 3=age_specific_K_incr; 4=age_specific_K_decr; 5=age_specific_K_each; 6=NA; 7=NA; 8=growth cessation" << endl; + if (Grow_type <= 5 || Grow_type == 8) + { + report4 << AFIX << " #_Age(post-settlement) for L1 (aka Amin); first growth parameter is size at this age; linear growth below this" << endl + << AFIX2 << " #_Age(post-settlement) for L2 (aka Amax); 999 to treat as Linf" << endl + << Linf_decay << " #_exponential decay for growth above maxage (value should approx initial Z; -999 replicates 3.24; -998 to not allow growth above maxage)" << endl; + report4 << "0 #_placeholder for future growth feature" << endl; + if (Grow_type >= 3 && Grow_type <= 5) + { + report4 << Age_K_count << " # number of K multipliers to read" << endl + << Age_K_points << " # ages for K multiplier" << endl; + } + } + else + { + report4 << " #_growth type not implemented" << endl; + } + report4 << "#" << endl; + report4 << SD_add_to_LAA << " #_SD_add_to_LAA (set to 0.1 for SS2 V1.x compatibility)" << endl; // constant added to SD length-at-age (set to 0.1 for compatibility with SS2 V1.x + report4 << CV_depvar << " #_CV_Growth_Pattern: 0 CV=f(LAA); 1 CV=F(A); 2 SD=F(LAA); 3 SD=F(A); 4 logSD=F(A)" << endl; + report4 << "#" << endl; + report4 << Maturity_Option << " #_maturity_option: 1=length logistic; 2=age logistic; 3=read age-maturity matrix by growth_pattern; 4=read age-fecundity; 5=disabled; 6=read length-maturity" << endl; + if (Maturity_Option == 3) + { + report4 << "#_Age_Maturity by growth pattern" << endl + << Age_Maturity << endl; + } + else if (Maturity_Option == 4) + { + report4 << "#_Age_Fecundity by growth pattern" << endl + << Age_Maturity << endl; + } + else if (Maturity_Option == 5) + { + report4 << "#_Age_Fecundity by growth pattern from wt-at-age.ss now invoked by read bodywt flag" << endl; + } + else if (Maturity_Option == 6) + { + report4 << "#_Length_Maturity by growth pattern" << endl + << Length_Maturity << endl; + } + report4 << First_Mature_Age << " #_First_Mature_Age" << endl; + if (Maturity_Option == 4 || Maturity_Option == 5) { + report4 << "# NOTE: maturity options 4 and 5 cause fecundity_at_length to be ignored, but parameters still needed " << endl; + } + report4 << Fecund_Option << " #_fecundity_at_length option:(1)eggs=Wt*(a+b*Wt);(2)eggs=a*L^b;(3)eggs=a*Wt^b; (4)eggs=a+b*L; (5)eggs=a+b*W" << endl; + report4 << Hermaphro_Option << " #_hermaphroditism option: 0=none; 1=female-to-male age-specific fxn; -1=male-to-female age-specific fxn" << endl; + if (Hermaphro_Option != 0) + { + report4 << Hermaphro_seas_rd << " # Hermaphro_season.first_age (seas=-1 means all seasons; first_age must be 0 to 9)" << endl + << Hermaphro_maleSSB << " # fraction_of_maleSSB_added_to_total_SSB " << endl; + } + + report4 << MGparm_def << " #_parameter_offset_approach for M, G, CV_G: 1- direct, no offset**; 2- male=fem_parm*exp(male_parm); 3: male=female*exp(parm) then old=young*exp(parm)" << endl; + report4 << "#_** in option 1, any male parameter with value = 0.0 and phase <0 is set equal to female parameter" << endl; + report4 << "#" << endl; + report4 << "#_growth_parms"; + if (N_GP > 1) + report4 << "; if N_GP>1, then nest GP within sex in parameters below"; + report4 << endl; + report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE env_var&link dev_link dev_minyr dev_maxyr dev_PH Block Block_Fxn" << endl; + NP = 0; + for (gg = 1; gg <= gender; gg++) + { + for (gp = 1; gp <= N_GP; gp++) + { + report4 << "# Sex: " << gg << " BioPattern: " << gp << " NatMort" << endl; + for (k = 1; k <= N_natMparms; k++) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + report4 << "# Sex: " << gg << " BioPattern: " << gp << " Growth" << endl; + for (k = 1; k <= N_growparms; k++) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + report4 << "# Sex: " << gg << " BioPattern: " << gp << " WtLen" << endl; + for (k = 1; k <= 2; k++) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + if (gg == 1) + { + report4 << "# Sex: " << gg << " BioPattern: " << gp << " Maturity&Fecundity" << endl; + for (k = 1; k <= 4; k++) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + } + } + } + report4 << "# Hermaphroditism" << endl; + if (Hermaphro_Option != 0) + { + for (k = 1; k <= 3; k++) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + } + + report4 << "# Recruitment Distribution " << endl; + j = NP + 1; + if (MGP_CGD > j) + { + for (k = j; k <= MGP_CGD - 1; k++) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + } + + report4 << "# Cohort growth dev base" << endl; + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + + report4 << "# Movement" << endl; + if (do_migration > 0) + { + for (k = 1; k <= 2 * do_migration; k++) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + } + + report4 << "# Platoon StDev Ratio " << endl; + if (N_platoon > 1 && sd_ratio_rd < 0) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + + report4 << "# Age Error from parameters" << endl; + if (Use_AgeKeyZero > 0) + { + for (k = 1; k <= 7; k++) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + } + + report4 << "# catch multiplier" << endl; + if (catch_mult_pointer > 0) + { + for (k = 1; k <= Nfleet; k++) + if (need_catch_mult(k) == 1) + { + NP++; + MGparm_1(NP, 3) = value(MGparm(NP)); + report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; + } + } + + // for (f=1;f<=N_MGparm;f++) + // { + // NP++; + // MGparm_1(f,3)=value(MGparm(f)); + // report4< 0) + { + report4 << "# timevary MG parameters " << endl + << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE" << endl; + for (f = 1; f <= timevary_parm_cnt_MG; f++) + { + NP++; + timevary_parm_rd[f](3) = value(timevary_parm(f)); + report4 << timevary_parm_rd[f] << " # " << ParmLabel(NP) << endl; + } + report4 << "# info on dev vectors created for MGparms are reported with other devs after tag parameter section " << endl; + } + else + { + report4 << "#_no timevary MG parameters" << endl; + } + + report4 << "#" << endl; + report4 << "#_seasonal_effects_on_biology_parms" << endl + << MGparm_seas_effects << " #_femwtlen1,femwtlen2,mat1,mat2,fec1,fec2,Malewtlen1,malewtlen2,L1,K" << endl; + report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE" << endl; + if (MGparm_doseas > 0) + { + for (f = 1; f <= N_MGparm_seas; f++) + { + NP++; + j++; + MGparm_seas_1(f, 3) = value(MGparm(j)); + report4 << MGparm_seas_1(f) << " # " << ParmLabel(NP) << endl; + } + } + else + { + report4 << "#_Cond -2 2 0 0 -1 99 -2 #_placeholder when no seasonal MG parameters" << endl; + } + + report4 << "#" << endl; + report4 << SR_fxn << " #_Spawner-Recruitment; Options: 1=NA; 2=Ricker; 3=std_B-H; 4=SCAA; 5=Hockey; 6=B-H_flattop; 7=survival_3Parm; 8=Shepherd_3Parm; 9=RickerPower_3parm; 10=B-H_ab" << endl; + report4 << init_equ_steepness << " # 0/1 to use steepness in initial equ recruitment calculation" << endl; + report4 << " 0 # not_used" << endl; + report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE env-var use_dev dev_mnyr dev_mxyr dev_PH Block Blk_Fxn # parm_name" << endl; + report4.unsetf(std::ios_base::fixed); + report4.unsetf(std::ios_base::floatfield); + for (f = 1; f <= N_SRparm2; f++) + { + NP++; + SRparm_1(f, 3) = value(SRparm(f)); + for (j = 1; j <= 6; j++) + report4 << setw(14) << SRparm_1(f, j); + for (j = 7; j <= 14; j++) + report4 << setw(11) << SRparm_1(f, j); + report4 << " # " << ParmLabel(NP) << endl; + } + report4.unsetf(std::ios_base::fixed); + report4.unsetf(std::ios_base::floatfield); + if (N_SRparm3 > N_SRparm2) + { + report4 << "# timevary SR parameters" << endl; + for (f = timevary_SRparm_first; f <= timevary_parm_SR_last; f++) + { + NP++; + timevary_parm_rd[f](3) = value(timevary_parm(f)); + report4 << timevary_parm_rd[f] << " # " << ParmLabel(NP) << endl; + } + report4.precision(6); + report4.unsetf(std::ios_base::fixed); + report4.unsetf(std::ios_base::floatfield); + } + else + { + report4 << "#_no timevary SR parameters" << endl; + } + + report4 << do_recdev << " #do_recdev: 0=none; 1=devvector (R=F(SSB)+dev); 2=deviations (R=F(SSB)+dev); 3=deviations (R=R0*dev; dev2=R-f(SSB)); 4=like 3 with sum(dev2) adding penalty" << endl; + report4 << recdev_start << " # first year of main recr_devs; early devs can precede this era" << endl; + report4 << recdev_end << " # last year of main recr_devs; forecast devs start in following year" << endl; + report4 << recdev_PH_rd << " #_recdev phase " << endl; + report4 << recdev_adv << " # (0/1) to read 13 advanced options" << endl; + if (recdev_adv == 0) + { + onenum = "#_Cond "; + } + else + { + onenum = " "; + } + report4 << onenum << recdev_early_start_rd << " #_recdev_early_start (0=none; neg value makes relative to recdev_start)" << endl; + report4 << onenum << recdev_early_PH_rd << " #_recdev_early_phase" << endl; + report4 << onenum << Fcast_recr_PH_rd << " #_forecast_recruitment phase (incl. late recr) (0 value resets to maxphase+1)" << endl; + report4 << onenum << Fcast_recr_lambda << " #_lambda for Fcast_recr_like occurring before endyr+1" << endl; + report4 << onenum << recdev_adj(1) << " #_last_yr_nobias_adj_in_MPD; begin of ramp" << endl; + report4 << onenum << recdev_adj(2) << " #_first_yr_fullbias_adj_in_MPD; begin of plateau" << endl; + report4 << onenum << recdev_adj(3) << " #_last_yr_fullbias_adj_in_MPD" << endl; + report4 << onenum << recdev_adj(4) << " #_end_yr_for_ramp_in_MPD (can be in forecast to shape ramp, but SS3 sets bias_adj to 0.0 for fcast yrs)" << endl; + report4 << onenum << recdev_adj(5) << " #_max_bias_adj_in_MPD (typical ~0.8; -3 sets all years to 0.0; -2 sets all non-forecast yrs w/ estimated recdevs to 1.0; -1 sets biasadj=1.0 for all yrs w/ recdevs)" << endl; + report4 << onenum << recdev_cycle << " #_period of cycles in recruitment (N parms read below)" << endl; + report4 << onenum << recdev_LO << " #min rec_dev" << endl; + report4 << onenum << recdev_HI << " #max rec_dev" << endl; + report4 << onenum << recdev_read << " #_read_recdevs" << endl; + report4 << "#_end of advanced SR options" << endl; + report4 << "#" << endl; + if (recdev_cycle > 0) + { + for (y = 1; y <= recdev_cycle; y++) + { + NP++; + recdev_cycle_parm_RD(y, 3) = value(recdev_cycle_parm(y)); + report4 << recdev_cycle_parm_RD(y) << " # " << ParmLabel(NP) << endl; + } + } + else + { + report4 << "#_placeholder for full parameter lines for recruitment cycles" << endl; + } + if (recdev_read > 0) + { + report4 << "# Specified recr devs to read" << endl; + report4 << "#_year Input_value # Final_value" << endl; + for (j = 1; j <= recdev_read; j++) + { + y = recdev_input(j, 1); + report4 << recdev_input(j) << " # "; + if (y >= recdev_first) + { + report4 << recdev(y) << endl; + } + else + { + report4 << " not used " << endl; + } + } + } + else + { + report4 << "# read specified recr devs" << endl; + report4 << "#_year Input_value" << endl; + } + report4 << "#" << endl; + report4 << "# all recruitment deviations" << endl + << "# "; + if (recdev_do_early > 0) + { + for (y = recdev_early_start; y <= recdev_early_end; y++) + { + report4 << " " << y << "E"; + } + } + if (do_recdev > 0) + { + for (y = recdev_start; y <= recdev_end; y++) + { + report4 << " " << y << "R"; + } + } + if (Do_Forecast > 0) + { + for (y = recdev_end + 1; y <= YrMax; y++) + { + report4 << " " << y << "F"; + } + } + report4 << endl + << "# "; + if (recdev_do_early > 0) + { + for (y = recdev_early_start; y <= recdev_early_end; y++) + { + NP++; + report4 << " " << recdev(y); + } + } + + if (do_recdev > 0) + { + for (y = recdev_start; y <= recdev_end; y++) + { + NP++; + report4 << " " << recdev(y); + } + } + + if (Do_Forecast > 0 && do_recdev > 0) + { + for (y = recdev_end + 1; y <= YrMax; y++) + { + NP++; + report4 << " " << recdev(y); + } + report4 << endl; + if (Do_Impl_Error > 0) + { + report4 << "# implementation error by year in forecast: "; + for (y = endyr + 1; y <= YrMax; y++) + { + NP++; + report4 << " " << Fcast_impl_error(y); + } + report4 << endl; + } + } + report4 << "#" << endl; + report4 << "#Fishing Mortality info " << endl; + report4 << F_ballpark << " # F ballpark value in units of annual_F" << endl; + report4 << F_ballpark_yr << " # F ballpark year (neg value to disable)" << endl; + + report4 << F_Method << " # F_Method: 1=Pope midseason rate; 2=F as parameter; 3=F as hybrid; 4=fleet-specific parm/hybrid (#4 is superset of #2 and #3 and is recommended)" << endl; + report4 << max_harvest_rate << " # max F (methods 2-4) or harvest fraction (method 1)" << endl; + if (F_Method == 1) + { + report4 << "# F_Method 1: no additional input needed" << endl; + } + else if (F_Method == 2) + { + report4 << F_parm_intval(1) << " # overall start F value (all fleets; used if start phase = 1 and not reading parfile)" << endl; + report4 << F_Method_PH(1) << " # start phase for parms (does hybrid in early phases)" << endl; + report4 << F_detail << " # N detailed inputs to read" << endl; + report4 << "# detailed setup for F_Method=2; -Yr to fill remaining years; -999 for phase or se ignores keeps default for those fields " << endl; + report4 << "#_fleet year seas F_value se phase" << endl; + if (F_detail > 0) + report4 << F_setup2 << endl; + } + else if (F_Method == 3) + { + report4 << F_Tune << " # N iterations for tuning in hybrid mode; recommend 3 (faster) to 5 (more precise if many fleets)" << endl; + } + else if (F_Method == 4) + { + report4 << "# Read list of fleets that do F as parameter; unlisted fleets stay hybrid, bycatch fleets must be included with start_PH=1, high F fleets should switch early" << endl; + report4 << "# (A) fleet;" << endl <<"# (B) F_starting_value (ignored if start_PH=1 or reading from ss3.par);" << + endl << "# (C) start_PH for fleet's Fparms (99 to stay in hybrid, <0 to stay at starting value)" << endl << + "# Terminate list with -9999 for fleet" << endl << + "# or terminate with -9998 to invoke reading fleet-time specific F values after first reading N hybrid tune loops)" << endl; + report4 << "# (A) (B) (C)" << endl; + for (unsigned j = 1; j <= F_Method_4_input.size() - 2; j++) + { + report4 << F_Method_4_input[j] << " # " << fleetname(F_Method_4_input[j](1)) << endl; + } + if (F_detail <=0 ) + {report4 << -9999 << " 1 1 # end of list" << endl << + "#F_detail template: fleet year seas F_value catch_se phase" << endl; } + else + {report4 << -9998 << " 1 1 # end of list, triggers reading F_detail" << endl; } + report4 << F_Tune << " #_number of loops for hybrid tuning; 4 precise; 3 faster; 2 enough if switching to parms is enabled" << endl; + if (F_detail > 0) + { + report4 << "# F_detail: List of fleet-time specific F related values to read; enter -Yr to fill remaining years&seasons; -999 for phase or catch_se keeps base value for the run" << endl; + report4 << "#fleet year seas F_value catch_se phase" << endl; + report4 << F_setup2 << endl; + report4 << "-9999 1 1 1 1 1 # end of F_detail" << endl; + } + } + + report4 << "#" << endl; + report4 << "#_initial_F_parms; for each fleet x season that has init_catch; nest season in fleet; count = " << N_init_F2 << endl; + report4 << "#_for unconstrained init_F, use an arbitrary initial catch and set lambda=0 for its logL" << endl; + report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE" << endl; + if (finish_starter == 999) + { + for (f = 1; f <= Nfleet1; f++) + { + NP++; + init_F_parm_1(f, 3) = value(init_F(f)); + if (obs_equ_catch(1, f) != 0.) + report4 << init_F_parm_1(f) << " # " << ParmLabel(NP) << endl; + } + } + else if (N_init_F2 > 0) + { + for (f = 1; f <= N_init_F2; f++) + { + NP++; + init_F_parm_1(f, 3) = value(init_F(f)); + report4 << init_F_parm_1(f) << " # " << ParmLabel(NP) << endl; + } + } + + report4 << "#" << endl + << "# F rates by fleet x season" << endl; + report4 << "#_year: "; + for (y = styr; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + report4 << " " << y; + } + report4 << endl + << "# seas: "; + for (y = styr; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + report4 << " " << s; + } + report4 << endl; + j = styr + (YrMax - styr) * nseas + nseas - 1; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + report4 << "# " << fleetname(f) << Hrate(f)(styr, j) << endl; + } + NP += N_Fparm; + report4 << "#" << endl; + report4 << "#_Q_setup for fleets with cpue or survey or deviation data" << endl; + report4 << "#_1: fleet number" << endl; + report4 << "#_2: link type: 1=simple q; 2=mirror; 3=power (+1 parm); 4=mirror with scale (+1p); 5=offset (+1p); 6=offset & power (+2p)" << endl; + report4 << "#_ where power is applied as y = q * x ^ (1 + power); so a power value of 0 has null effect" << endl; + report4 << "#_ and with the offset included it is y = q * (x + offset) ^ (1 + power)" << endl; + report4 << "#_3: extra input for link, i.e. mirror fleet# or dev index number" << endl; + report4 << "#_4: 0/1 to select extra sd parameter" << endl; + report4 << "#_5: 0/1 for biasadj or not" << endl; + report4 << "#_6: 0/1 to float" << endl; + if (depletion_fleet > 0) // special code for depletion, so prepare to adjust phases and lambdas + { + f = depletion_fleet; + report4 << "#_survey: " << f << " " << fleetname(f) << " is a depletion fleet" << endl; + if (depletion_type == 0) + report4 << "#_Q_setup(f,2)=0; add 1 to phases of all parms; only R0 active in new phase 1" << endl; + if (depletion_type == 1) + report4 << "#_Q_setup(f,2)=1 only R0 active in phase 1; then exit; useful for data-limited draws of other fixed parameter" << endl; + if (depletion_type == 2) + report4 << "#_Q_setup(f,2)=2 no phase adjustments, can be used when profiling on fixed R0" << endl; + } + + report4 << "#_ fleet link link_info extra_se biasadj float # fleetname" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (Svy_N_fleet(f) > 0) + { + report4 << " " << setw(9) << f; + for (j = 1; j <= 5; j++) + report4 << setw(10) << Q_setup(f, j); + report4 << " # " << fleetname(f) << endl; + } + } + report4 << "-9999 0 0 0 0 0" << endl + << "#" << endl; + + report4 << "#_Q_parameters" << endl; + if (Q_Npar > 0) + { + report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE env-var use_dev dev_mnyr dev_mxyr dev_PH Block Blk_Fxn # parm_name" << endl; + report4.unsetf(std::ios_base::fixed); + report4.unsetf(std::ios_base::floatfield); + for (f = 1; f <= Q_Npar; f++) + { + NP++; + Q_parm_1(f, 3) = value(Q_parm(f)); + for (j = 1; j <= 6; j++) + report4 << setw(14) << Q_parm_1(f, j); + for (j = 7; j <= 14; j++) + report4 << setw(11) << Q_parm_1(f, j); + report4 << " # " << ParmLabel(NP) << endl; + } + report4.unsetf(std::ios_base::fixed); + report4.unsetf(std::ios_base::floatfield); + + if (timevary_parm_start_Q > 0) + { + report4 << "# timevary Q parameters " << endl; + report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE # parm_name" << endl; + for (f = timevary_parm_start_Q; f <= timevary_parm_cnt_Q; f++) + { + NP++; + timevary_parm_rd[f](3) = value(timevary_parm(f)); + for (j = 1; j <= 6; j++) + report4 << setw(14) << timevary_parm_rd[f](j); + report4 << " " << timevary_parm_rd[f](7) << " # " << ParmLabel(NP) << endl; + } + report4 << "# info on dev vectors created for Q parms are reported with other devs after tag parameter section " << endl; + } + else + { + report4 << "#_no timevary Q parameters" << endl; + } + report4.unsetf(std::ios_base::fixed); + report4.unsetf(std::ios_base::floatfield); + } + report4 << "#" << endl; + report4 << "#_size_selex_patterns" << endl; + + report4 << "#Pattern:_0; parm=0; selex=1.0 for all sizes" << endl; + report4 << "#Pattern:_1; parm=2; logistic; with 95% width specification" << endl; + report4 << "#Pattern:_5; parm=2; mirror another size selex; PARMS pick the min-max bin to mirror" << endl; + report4 << "#Pattern:_11; parm=2; selex=1.0 for specified min-max population length bin range" << endl; + report4 << "#Pattern:_15; parm=0; mirror another age or length selex" << endl; + report4 << "#Pattern:_6; parm=2+special; non-parm len selex" << endl; + report4 << "#Pattern:_43; parm=2+special+2; like 6, with 2 additional param for scaling (mean over bin range)" << endl; + report4 << "#Pattern:_8; parm=8; double_logistic with smooth transitions and constant above Linf option" << endl; + report4 << "#Pattern:_9; parm=6; simple 4-parm double logistic with starting length; parm 5 is first length; parm 6=1 does desc as offset" << endl; + report4 << "#Pattern:_21; parm=2*special; non-parm len selex, read as N break points, then N selex parameters" << endl; + report4 << "#Pattern:_22; parm=4; double_normal as in CASAL" << endl; + report4 << "#Pattern:_23; parm=6; double_normal where final value is directly equal to sp(6) so can be >1.0" << endl; + report4 << "#Pattern:_24; parm=6; double_normal with sel(minL) and sel(maxL), using joiners" << endl; + report4 << "#Pattern:_2; parm=6; double_normal with sel(minL) and sel(maxL), using joiners, back compatibile version of 24 with 3.30.18 and older" << endl; + report4 << "#Pattern:_25; parm=3; exponential-logistic in length" << endl; + report4 << "#Pattern:_27; parm=special+3; cubic spline in length; parm1==1 resets knots; parm1==2 resets all " << endl; + report4 << "#Pattern:_42; parm=special+3+2; cubic spline; like 27, with 2 additional param for scaling (mean over bin range)" << endl; + + report4 << "#_discard_options:_0=none;_1=define_retention;_2=retention&mortality;_3=all_discarded_dead;_4=define_dome-shaped_retention" << endl; + report4 << "#_Pattern Discard Male Special" << endl; + for (f = 1; f <= Nfleet; f++) + report4 << seltype_rd(f) << " # " << f << " " << fleetname(f) << endl; + report4 << "#" << endl; + + report4 << "#_age_selex_patterns" << endl; + report4 << "#Pattern:_0; parm=0; selex=1.0 for ages 0 to maxage" << endl; + report4 << "#Pattern:_10; parm=0; selex=1.0 for ages 1 to maxage" << endl; + report4 << "#Pattern:_11; parm=2; selex=1.0 for specified min-max age" << endl; + report4 << "#Pattern:_12; parm=2; age logistic" << endl; + report4 << "#Pattern:_13; parm=8; age double logistic. Recommend using pattern 18 instead." << endl; + report4 << "#Pattern:_14; parm=nages+1; age empirical" << endl; + report4 << "#Pattern:_15; parm=0; mirror another age or length selex" << endl; + report4 << "#Pattern:_16; parm=2; Coleraine - Gaussian" << endl; + report4 << "#Pattern:_17; parm=nages+1; empirical as random walk N parameters to read can be overridden by setting special to non-zero" << endl; + report4 << "#Pattern:_41; parm=2+nages+1; // like 17, with 2 additional param for scaling (mean over bin range)" << endl; + report4 << "#Pattern:_18; parm=8; double logistic - smooth transition" << endl; + report4 << "#Pattern:_19; parm=6; simple 4-parm double logistic with starting age" << endl; + report4 << "#Pattern:_20; parm=6; double_normal,using joiners" << endl; + report4 << "#Pattern:_26; parm=3; exponential-logistic in age" << endl; + report4 << "#Pattern:_27; parm=3+special; cubic spline in age; parm1==1 resets knots; parm1==2 resets all " << endl; + report4 << "#Pattern:_42; parm=2+special+3; // cubic spline; with 2 additional param for scaling (mean over bin range)" << endl; + report4 << "#Age patterns entered with value >100 create Min_selage from first digit and pattern from remainder" << endl; + report4 << "#_Pattern Discard Male Special" << endl; + for (f = 1; f <= Nfleet; f++) + report4 << seltype_rd(f + Nfleet) << " # " << f << " " << fleetname(f) << endl; + report4 << "#" << endl; + + report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE env-var use_dev dev_mnyr dev_mxyr dev_PH Block Blk_Fxn # parm_name" << endl; + + // set back to default configuration for output + report4.unsetf(std::ios_base::fixed); + report4.unsetf(std::ios_base::floatfield); + + { + k = 0; + for (f = 1; f <= 2 * Nfleet; f++) + { + if (f > Nfleet) + { + f1 = f - Nfleet; + anystring = "AgeSelex"; + } + else + { + f1 = f; + anystring = "LenSelex"; + } + report4 << "# " << f1 << " " << fleetname(f1) << " " << anystring << endl; + for (j = 1; j <= N_selparmvec(f); j++) + { + NP++; + k++; + selparm_1(k)(3) = value(selparm(k)); + for (z = 1; z <= 6; z++) + report4 << setw(14) << selparm_1(k, z); + for (z = 7; z <= 14; z++) + report4 << setw(11) << selparm_1(k, z); + report4 << " # " << ParmLabel(NP) << endl; + } + } + if (Comp_Err_ParmCount > 0) + { + report4 << "#_Dirichlet and/or MV Tweedie parameters for composition error" << endl; + report4 << "#_multiple_fleets_can_refer_to_same_parm;_but_list_cannot_have_gaps" << endl; + k = Comp_Err_Parm_Start; + for (f = 1; f <= Comp_Err_ParmCount; f++) + { + k++; + NP++; + selparm_1(k)(3) = value(selparm(k)); + for (z = 1; z <= 6; z++) + report4 << setw(14) << selparm_1(k, z); + for (z = 7; z <= 14; z++) + report4 << setw(11) << selparm_1(k, z); + report4 << " # " << ParmLabel(NP) << endl; + } + } + else + { + report4 << "#_No_Dirichlet parameters" << endl; + } + + if (N_selparm3 > N_selparm) + { + report4 << "# timevary selex parameters " << endl; + report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE # parm_name" << endl; + // for (f=timevary_parm_start_sel;f<=timevary_parm_cnt_sel;f++) + for (int f = timevary_parm_start_sel; f <= timevary_parm_start_sel + N_selparm3 - N_selparm - 1; f++) + { + NP++; + timevary_parm_rd[f](3) = value(timevary_parm(f)); + for (j = 1; j <= 6; j++) + report4 << setw(14) << timevary_parm_rd[f](j); + report4 << " " << timevary_parm_rd[f](7) << " # " << ParmLabel(NP) << endl; + } + report4 << "# info on dev vectors created for selex parms are reported with other devs after tag parameter section " << endl; + } + else + { + report4 << "#_no timevary selex parameters" << endl; + } + + report4 << "#" << endl + << TwoD_AR_do << " # use 2D_AR1 selectivity? (0/1)" << endl; + if (TwoD_AR_do > 0) + { + k = timevary_parm_start_sel + N_selparm3 - N_selparm - 1; // starting point in timevary_parm_rd + report4 << "#_specifications for 2D_AR1 and associated parameters" << endl; + report4 << "#_specs: fleet, ymin, ymax, amin, amax, sigma_amax, use_rho, len1/age2, devphase, before_range, after_range" << endl; + report4 << "#_sigma_amax>amin means create sigma parm for each bin from min to sigma_amax; sigma_amax<0 means just one sigma parm is read and used for all bins" << endl; + for (j = 1; j <= TwoD_AR_cnt; j++) + { + ivector tempvec(1, 13); // fleet, ymin, ymax, amin, amax, sigma_amax, use_rho, len1/age2, devphase + tempvec(1, 13) = TwoD_AR_def[j](1, 13); + tempvec(6) = TwoD_AR_def_rd[j](6); // restore the read value in case it got changed + int isigmasel = TwoD_AR_def[j](13); // index of first sigmasel parm in selparm + if (tempvec(8) == 1) + { + anystring = "LEN"; + } + else + { + anystring = "AGE"; + } + + report4 << tempvec(1, 11) << " # 2D_AR specs for fleet: " << fleetname(tempvec(1)) << " " << anystring << endl; + int sigma_amax = tempvec(6); + int use_rho = tempvec(7); + int amin = tempvec(4); + int kmax = sigma_amax; + if (kmax < 0) kmax = amin; + for (a = amin; a <= kmax; a++) + { + dvector dtempvec(1, 7); // Lo, Hi, init, prior, prior_sd, prior_type, phase; + k++; + dtempvec = timevary_parm_rd[k](1, 7); + dtempvec(3) = value ( selparm(isigmasel + a - amin) ); + report4 << dtempvec << " # sigma_sel for fleet:_" << tempvec(1) << "; " << anystring << "_" << a <amin means create sigma parm for each bin from min to sigma_amax; sigma_amax<0 means just one sigma parm is read and used for all bins" << endl; + report4 << "#_needed parameters follow each fleet's specifications"< 0) + { + report4 << 1 << " # TG_custom: 0=no read and autogen if tag data exist; 1=read" << endl; + report4 << "#_Note - tag parameters cannot be time-varying" << endl; + report4 << "#_Note - phase=-1000 sets parm value to previous parm; phase=-100X sets to parm(X) value" << endl; + for (f = 1; f <= 3 * N_TG + 2 * Nfleet1; f++) + { + NP++; + report4 << TG_parm2(f)(1, 2) << " " << TG_parm(f) << " " << TG_parm2(f)(4, 14) << " # " << ParmLabel(NP) << endl; + } + } + else + { + report4 << "0 # TG_custom: 0=no read and autogen if tag data exist; 1=read" << endl + << "#_Cond -6 6 1 1 2 0.01 -4 0 0 0 0 0 0 0 #_placeholder if no parameters" << endl; + ; + } + report4 << "#" << endl; + if (timevary_cnt == 0) + { + report4 << "# no timevary parameters" << endl + << "#" << endl; + } + else + { + report4 << "# deviation vectors for timevary parameters" << endl + << "# base base first block block env env dev dev dev dev dev" << endl + << "# type index parm trend pattern link var vectr link _mnyr mxyr phase dev_vector" << endl; + + for (j = 1; j <= timevary_cnt; j++) + { + // report4.precision(6); + // report4.unsetf(std::ios_base::fixed); + // report4.unsetf(std::ios_base::floatfield); + report4 << setw(2) << "# "; + report4 << setw(5) << timevary_def[j](1, 12); + if (timevary_def[j](8) > 0) // now show devs + { + report4 << setw(6) << parm_dev(timevary_def[j](8)); + } + report4 << setw(6) << endl; + } + } + + report4 << "#" << endl + << "# Input variance adjustments factors: " << endl; + report4 << " #_1=add_to_survey_CV" << endl; + report4 << " #_2=add_to_discard_stddev" << endl; + report4 << " #_3=add_to_bodywt_CV" << endl; + report4 << " #_4=mult_by_lencomp_N" << endl; + report4 << " #_5=mult_by_agecomp_N" << endl; + report4 << " #_6=mult_by_size-at-age_N" << endl; + report4 << " #_7=mult_by_generalized_sizecomp" << endl; + report4 << "#_factor fleet value" << endl; + { + if (var_adjust_data.size() > 0) + for (f = 1; f <= Do_Var_adjust; f++) + report4 << setw(6) << var_adjust_data[f - 1](1, 2) << " " << setw(9) << var_adjust_data[f - 1](3) << endl; + } + report4 << " -9999 1 0 # terminator" << endl; + + report4.precision(6); + report4.unsetf(std::ios_base::fixed); + report4.unsetf(std::ios_base::floatfield); + + report4 << "#" << endl + << max_lambda_phase << " #_maxlambdaphase" << endl; + report4 << sd_offset << " #_sd_offset; must be 1 if any growthCV, sigmaR, or survey extraSD is an estimated parameter" << endl; + + report4 << "# read " << N_lambda_changes << " changes to default Lambdas (default value is 1.0)" << endl; + report4 << "# Like_comp codes: 1=surv; 2=disc; 3=mnwt; 4=length; 5=age; 6=SizeFreq; 7=sizeage; 8=catch; 9=init_equ_catch; " << endl + << "# 10=recrdev; 11=parm_prior; 12=parm_dev; 13=CrashPen; 14=Morphcomp; 15=Tag-comp; 16=Tag-negbin; 17=F_ballpark; 18=initEQregime" << endl + << "#like_comp fleet phase value sizefreq_method" << endl; + + if (N_lambda_changes > 0) + report4 << Lambda_changes << endl; + report4 << "-9999 1 1 1 1 # terminator" << endl; + + report4 << "#" << endl + << "# lambdas (for info only; columns are phases)" << endl; + if (Svy_N > 0) + { + for (f = 1; f <= Nfleet; f++) + report4 << "# " << surv_lambda(f) << " #_CPUE/survey:_" << f << endl; + } + if (nobs_disc > 0) + { + for (f = 1; f <= Nfleet; f++) + report4 << "# " << disc_lambda(f) << " #_discard:_" << f << endl; + } + if (nobs_mnwt > 0) + { + for (f = 1; f <= Nfleet; f++) + report4 << "# " << mnwt_lambda(f) << " #_meanbodywt:" << f << endl; + } + if (Nobs_l_tot > 0) + { + for (f = 1; f <= Nfleet; f++) + report4 << "# " << length_lambda(f) << " #_lencomp:_" << f << endl; + } + if (Nobs_a_tot > 0) + { + for (f = 1; f <= Nfleet; f++) + report4 << "# " << age_lambda(f) << " #_agecomp:_" << f << endl; + } + if (SzFreq_Nmeth > 0) + for (f = 1; f <= SzFreq_N_Like; f++) + report4 << "# " << SzFreq_lambda(f) << " #_sizefreq:_" << f << endl; + if (nobs_ms_tot > 0) + { + for (f = 1; f <= Nfleet; f++) + report4 << "# " << sizeage_lambda(f) << " #_size-age:_" << f << endl; + } + for (f = 1; f <= Nfleet; f++) + report4 << "# " << init_equ_lambda(f) << " #_init_equ_catch" << f << endl; + report4 << "# " << recrdev_lambda << " #_recruitments" << endl; + report4 << "# " << parm_prior_lambda << " #_parameter-priors" << endl; + report4 << "# " << parm_dev_lambda << " #_parameter-dev-vectors" << endl; + if (Do_TG > 0) + { + for (TG = 1; TG <= N_TG; TG++) + report4 << "# " << TG_lambda1(TG) << " #_TG-comp_group:_" << TG << endl; + for (TG = 1; TG <= N_TG; TG++) + report4 << "# " << TG_lambda2(TG) << " #_TG-negbin_group:_" << TG << endl; + } + report4 << "# " << CrashPen_lambda << " #_crashPenLambda" << endl; + if (Do_Morphcomp > 0) + report4 << "# " << Morphcomp_lambda << " #_Morphcomplambda" << endl; + report4 << "# " << F_ballpark_lambda << " # F_ballpark_lambda" << endl; + + report4 << Do_More_Std << " # (0/1/2) read specs for more stddev reporting: 0 = skip, 1 = read specs for reporting stdev for selectivity, size, and numbers, 2 = add options for M,Dyn. Bzero, SmryBio" << endl; + + //3868 Do_Selex_Std=More_Std_Input(1); + //3869 Selex_Std_AL=More_Std_Input(2); + //3870 Selex_Std_Year=More_Std_Input(3); + //3872 Selex_Std_Cnt=More_Std_Input(4); + //3873 Do_Growth_Std=More_Std_Input(5); + //3875 Growth_Std_Cnt=More_Std_Input(6); + //3876 Do_NatAge_Std=More_Std_Input(7); + //3877 NatAge_Std_Year=More_Std_Input(8); + //3879 NatAge_Std_Cnt=More_Std_Input(9); + + if (Do_More_Std == 0) // empty/dummy values when extra stddev reporting not used + { + report4 << " # 0 2 0 0 # Selectivity: (1) fleet, (2) 1=len/2=age/3=both, (3) year, (4) N selex bins" << endl; + report4 << " # 0 0 # Growth: (1) growth pattern, (2) growth ages" << endl; + report4 << " # 0 0 0 # Numbers-at-age: (1) area(-1 for all), (2) year, (3) N ages" << endl; + report4 << " # -1 # list of bin #'s for selex std (-1 in first bin to self-generate)" << endl; + report4 << " # -1 # list of ages for growth std (-1 in first bin to self-generate)" << endl; + report4 << " # -1 # list of ages for NatAge std (-1 in first bin to self-generate)" << endl; + } + if (Do_More_Std > 0) // these outputs needed for options 1 and 2 + { + // report4< 0) // vectors associated with options 1 and 2 + { + if (Do_Selex_Std > 0) + { + report4 << Selex_Std_Pick << " # vector with selex std bins (-1 in first bin to self-generate)" << endl; + } + else + { + report4 << " # -1 # list of bin #'s for selex std (-1 in first bin to self-generate)" << endl; + } + // if(Do_Growth_Std>0){ + if (More_Std_Input(5) > 0) + { + report4 << Growth_Std_Pick << " # vector with growth std ages picks (-1 in first bin to self-generate)" << endl; + } + else + { + report4 << " # -1 # list of ages for growth std (-1 in first bin to self-generate)" << endl; + } + if (Do_NatAge_Std != 0) + { + report4 << NatAge_Std_Pick << " # vector with NatAge std ages (-1 in first bin to self-generate)" << endl; + } + else + { + report4 << " # -1 # list of ages for NatAge std (-1 in first bin to self-generate)" << endl; + } + if (Do_More_Std == 2) // additional output when option 2 is selected + { + if (Do_NatM_Std > 0) + { + report4 << NatM_Std_Pick << " # vector with NatM std ages picks (-1 in first bin to self-generate)" << endl; + } + else + { + report4 << " # -1 # list of ages for NatM std (-1 in first bin to self-generate)" << endl; + } + } + } + report4 << fim << endl + << endl; // end of file indicator + return; + } // end of write nucontrol + +// SS_Label_file #19. **SS_write_report.tpl** +// SS_Label_file # * write_bigoutput() // produces *report.sso* and *compreport.sso* +// SS_Label_file # * SPR_profile() // calls SSBpR_Calc() and Equil_Spawn_Recr_Fxn() over a range of F to get SPR, YPR, and SSB and catch curves +// SS_Label_file # * global_MSY() // similar to SPR_profile but first changes all selectivities to knife edge and profiles on age-at-entry +// SS_Label_file # + +//******************************************************************** + /* SS_Label_FUNCTION 40 write_bigoutput */ +FUNCTION void write_bigoutput() + { + if (mceval_counter == 0) + { + anystring = sso_pathname + "Report.sso"; + report_sso_filename = anystring; + if (SS2out.is_open()) + SS2out.close(); + SS2out.open(anystring); // this file was created in globals so accessible to the report_parm function + anystring = sso_pathname + "CompReport.sso"; + if (SS_compout.is_open()) + SS_compout.close(); + SS_compout.open(anystring); + } + else + { + anystring = " "; + sprintf(anystring, "%d", mceval_counter); + if (SS2out.is_open()) + SS2out.close(); + if (SS_compout.is_open()) + SS_compout.close(); + anystring2 = sso_pathname + "Report_mce_"; + if (mceval_counter < 10) + { + anystring2 += "000"; + } + else if (mceval_counter < 100) + { + anystring2 += "00"; + } + else if (mceval_counter < 1000) + { + anystring2 += "0"; + } + anystring2 += anystring + ".sso"; + SS2out.open(anystring2); + report_sso_filename = anystring2; // save so can be reopened in append mode + anystring2 = sso_pathname + "CompReport_mce_"; + if (mceval_counter < 10) + { + anystring2 += "000"; + } + else if (mceval_counter < 100) + { + anystring2 += "00"; + } + else if (mceval_counter < 1000) + { + anystring2 += "0"; + } + anystring2 += anystring + ".sso"; + SS_compout.open(anystring2); + } + + SS2out << version_info(1) << version_info(2) << version_info(3) << endl + << version_info2 << endl; + time(&finish); + SS_compout << version_info(1) << version_info(2) << version_info(3) << endl + << "StartTime: " << ctime(&start); + + SS2out << "StartTime: " << ctime(&start); + SS2out << "EndTime: " << ctime(&finish); + elapsed_time = difftime(finish, start); + hour = long(elapsed_time) / 3600; + minute = long(elapsed_time) % 3600 / 60; + second = (long(elapsed_time) % 3600) % 60; + SS2out << "This run took: " << hour << " hours, " << minute << " minutes, " << second << " seconds." << endl; + SS2out << "Data_File: " << datfilename << endl; + SS2out << "Control_File: " << ctlfilename << endl; + if (readparfile >= 1) + {SS2out << "Start_parm_values_from_SS.PAR" << endl;} + else + {SS2out << "Start_parm_values_from_control_file" << endl;} + SS2out << endl + << "Convergence_Level: " << objective_function_value::pobjfun->gmax << " is_final_gradient" << endl; + temp = get_ln_det_value(); + if (SDmode == 0) + { + SS2out << "Hessian: Not requested." << endl; + } + else // (SDmode == 1) + { + if (temp > 0) + { + SS2out << "Hessian: " << temp << " is ln(determinant)." << endl; + } + if (temp <= 0) + { + SS2out << "Hessian: " << temp << " is ln(determinant). Hessian is not positive definite, so don't trust variance estimates." << endl; + } + } + SS2out << "Final_phase: " << current_phase() << endl; + SS2out << "N_iterations: " << niter << endl; + SS2out << "total_LogL: " << obj_fun << endl; + + if (N_SC > 0) + { + SS2out << endl + << "Starter_Comments" << endl + << Starter_Comments << endl; + } + if (N_DC > 0) + { + SS2out << endl + << "Data_Comments" << endl + << Data_Comments << endl; + } + if (N_CC > 0) + { + SS2out << endl + << "Control_Comments" << endl + << Control_Comments << endl; + } + if (N_FC > 0) + { + SS2out << endl + << "Forecast_Comments" << endl + << Forecast_Comments << endl; + } + + if (N_parm_dev == 0) + pick_report_use(4) = "N"; + if (SzFreq_Nmeth == 0) + pick_report_use(12) = "N"; + if (do_migration == 0) + pick_report_use(13) = "N"; + if (Svy_N == 0) + pick_report_use(21) = "N"; + if (Svy_N == 0) + pick_report_use(22) = "N"; + if (Svy_N == 0) + pick_report_use(23) = "N"; + if (nobs_disc == 0) + pick_report_use(24) = "N"; + if (nobs_disc == 0) + pick_report_use(25) = "N"; + if (nobs_mnwt == 0) + pick_report_use(26) = "N"; + if (Nobs_l_tot == 0) + pick_report_use(27) = "N"; + if (Nobs_a_tot == 0) + pick_report_use(28) = "N"; + if (SzFreq_Nmeth == 0) + pick_report_use(29) = "N"; + if (N_envvar == 0) + pick_report_use(33) = "N"; + if (Do_TG == 0) + pick_report_use(34) = "N"; + if (Grow_type < 3 || Grow_type > 6) + pick_report_use(44) = "N"; + if (MGparm_doseas == 0) + pick_report_use(46) = "N"; + if (N_ageerr == 0) + pick_report_use(51) = "N"; + if (use_length_data == 0) + pick_report_use(46) = "N"; + + SS2out << endl + << "#_KeyWords_of_tables_available_in_report_sso" << endl; + SS2out << "#_NOTE: table_number_is_order_in_which_tables_are_output" << endl; + SS2out << "#_List_Tables_related_to_basic_input_pre-processing_and_output" << endl; + k = 1; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DEFINITIONS" + k = 6; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DERIVED_QUANTITIES" + k = 33; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // ENVIRONMENTAL_DATA" + k = 3; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Input_Variance_Adjustment" + k = 2; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // LIKELIHOOD + k = 7; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MGparm_By_Year_after_adjustments + k = 11; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MORPH_INDEXING (defines_associations_for_sex_growth_pattern_platoons_settlements) + k = 30; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // OVERALL_COMPS (average_length_and_age_composition_observed_by_each_fleet) + k = 5; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // PARAMETERS + k = 4; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // parmdevs_detail + + SS2out << endl + << "# List_Tables_related_to_timeseries_output" << endl; + k = 36; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // BIOMASS_AT_AGE + k = 38; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // BIOMASS_AT_LENGTH + k = 15; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // CATCH + k = 41; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DISCARD_AT_AGE + k = 14; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // EXPLOITATION (showing_F_rates_by_fleet) + k = 40; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // CATCH_AT_AGE + k = 39; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // F_AT_AGE + k = 49; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MEAN_SIZE_TIMESERIES (body length) + k = 35; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // NUMBERS_AT_AGE + k = 37; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // NUMBERS_AT_LENGTH + k = 19; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SPAWN_RECRUIT + k = 20; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SPAWN_RECRUIT_CURVE + k = 17; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SPR_series (equilibrium_SPR_and_YPR_calculations_for_each_year) + k = 16; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // TIME_SERIES + k = 61; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // ANNUAL_TIME_SERIES + + SS2out << endl + << "# List_Tables_related_to_fit_to_data" << endl; + k = 52; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // composition database + k = 24; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DISCARD specification + k = 25; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DISCARD + k = 21; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // INDEX, CPUE, effort + k = 22; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // INDEX, obs + k = 23; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // INDEX, Q + k = 27; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // FIT_LEN_COMPS + k = 28; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // FIT_AGE_COMPS + k = 29; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // FIT_SIZE_COMPS + k = 26; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MEAN_BODY_WT + k = 34; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // TAG_Recapture + + SS2out << endl + << "# List_Tables_related_to_selectivity_and_discard" << endl; + k = 32; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // AGE_SELEX + k = 31; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // LEN_SELEX + k = 8; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // selparm(Size)_By_Year_after_adjustments + k = 9; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // selparm(Age)_By_Year_after_adjustments + k = 53; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // selex database + + SS2out << endl + << "#_List_Tables_related_to_biology" << endl; + k = 51; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // AGE_AGE'_KEY" + k = 50; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // AGE_LENGTH_KEY + k = 44; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Age-Specific k + k = 42; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // BIOLOGY + k = 47; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Biology-at-age + k = 45; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Growth_parameters + k = 48; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // mean body wt time series + k = 13; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MOVEMENT (fraction_moving_between_areas) + k = 43; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Natural_Mortality + k = 10; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // RECRUITMENT_DIST (distribution_of_recruits_among_morphs_areas_settlement_time) + k = 46; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Seasonal effects + k = 12; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SIZEFREQ_TRANSLATION (If_using_generalized_size_comp) + + SS2out << endl + << "# List_Tables_related_to_equilibrium_reference_points;_also_see_forecast_report.sso" << endl; + k = 59; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Dynamic_Bzero + k = 55; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // GLOBAL_MSY (including_knife-edge_selex_and_slot-age_selex) + k = 18; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Kobe_Plot + k = 54; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SPR/YPR_PROFILE + + SS2out << endl + << "# List_Additional_Tables" << endl; + k = 56; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // ss_summary + k = 57; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // rebuilder + k = 58; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SIS_table + k = 60; + SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // wt-at-age.ss + + SS2out << endl + << "# vector_with_report_usage" << endl; + for (k = 1; k <= 60; k++) + { + SS2out << " " << pick_report_use(k); + } + SS2out << endl + << endl; + + // REPORT_KEYWORD 1 DEFINITIONS + if (pick_report_use(1) == "Y") + { + SS2out << endl + << pick_report_name(1) << endl; + SS2out << "N_seasons: " << nseas << endl; + SS2out << "N_sub_seasons: " << N_subseas << endl; + SS2out << "Sum_of_months_on_read_was:_ " << sumseas << " rescaled_to_sum_to: " << sum(seasdur) << endl; + SS2out << "Season_Durations: " << seasdur << endl; + SS2out << "Spawn_month: " << spawn_month << endl + << "Spawn_seas: " << spawn_seas << endl + << "spawntiming as frac. of year: " << spawn_time_seas << endl; + SS2out << "N_areas: " << pop << endl; + SS2out << "Start_year: " << styr << endl; + SS2out << "End_year: " << endyr << endl; + SS2out << "Retro_year: " << retro_yr << endl; + SS2out << "N_forecast_yrs: " << N_Fcast_Yrs << endl; + SS2out << "N_areas: " << pop << endl; + SS2out << "N_sexes: " << gender << endl; + SS2out << "Max_age: " << nages << endl; + SS2out << "Empirical_wt_at_age(0,1): " << WTage_rd << endl; + SS2out << "N_bio_patterns: " << N_GP << endl; + SS2out << "N_platoons: " << N_platoon << endl; + SS2out << "NatMort: " << natM_type << " # options:_(0)1Parm;_(1)N_breakpoints;_(2)Lorenzen;_(3)agespecific;_(4)agespec_withseasinterpolate" << endl; + SS2out << "GrowthModel: " << Grow_type << " # options:_(1)vonBert with L1&L2;_(2)Richards with L1&L2;_(3)age_specific_K_incr;_(4)age_specific_K_decr; (5)age_specific_K_each; (6)not implemented" << endl; + SS2out << "Maturity: " << Maturity_Option << " # options:_(1)length logistic;_(2)age logistic;_(3)read age-maturity;_(4)read age-fecundity;_(5)disabled;_(6)read length-maturity" << endl; + SS2out << "Fecundity: " << Fecund_Option << " # options:_(1)eggs=Wt*(a+b*Wt);_(2)eggs=a*L^b;_(3)eggs=a*Wt^b;_(4)eggs=a+b*L;_(5)eggs=a+b*W" << endl; + SS2out << "Start_from_par(0,1): " << readparfile << endl; + SS2out << "Do_all_priors(0,1): " << Do_all_priors << endl; + SS2out << "Use_softbound(0,1): " << SoftBound << endl; + SS2out << "N_nudata: " << N_nudata << endl; + SS2out << "Max_phase: " << max_phase << endl; + SS2out << "Current_phase: " << current_phase() << endl; + SS2out << "Jitter: " << jitter << endl; + SS2out << "ALK_tolerance: " << ALK_tolerance << endl; + + if (use_length_data > 0) + { + SS2out << "#" << endl << "Length_comp_error_controls" << endl << "Fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize " << endl; + for (f = 1; f <= Nfleet; f++) + if (Nobs_l(f) > 0) + { + int parti_lo = 0; + int parti_hi = 0; + if (Do_Retain(f) == 1) parti_hi = 2; + for (int parti = parti_lo; parti <= parti_hi ; parti++) + { + SS2out << f << " " << parti << " " << min_tail_L(parti, f) << " " << min_comp_L(parti, f) << " " << CombGender_L(parti, f) << " " << AccumBin_L(parti, f) << " " << Comp_Err_L(parti, f) << " " << Comp_Err_L2(parti, f) << " " << min_sample_size_L(parti, f) << " #_ " << fleetname(f) << endl; + } + } + } + + if (n_abins > 0) + { + SS2out << "#" << endl << "Age_comp_error_controls" << endl << "Fleet mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize " << endl; + for (f = 1; f <= Nfleet; f++) + if (Nobs_a(f) > 0) + { + SS2out << f << " " << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_ " << fleetname(f) << endl; + } + } + + if(SzFreq_Nmeth > 0) + { + SS2out << "#" << endl << "Size_comp_error_controls" << endl << "#_Sz_method error_type error_parm_ID " << endl; + for (f = 1; f <= SzFreq_Nmeth; f++) + { + SS2out << f << " " << Comp_Err_Sz(f) << " " << Comp_Err_Sz2(f) << endl; + } + } + + SS2out << "#" << endl; + SS2out << "Fleet fleet_type timing area catch_units catch_mult survey_units survey_error Fleet_name" << endl; + for (f = 1; f <= Nfleet; f++) + { + SS2out << f << " " << fleet_setup(f) << " " << Svy_units(f) << " " << Svy_errtype(f) << " " << fleetname(f) << endl; + } + } // end DEFINITIONS + + // REPORT_KEYWORD 2 LIKELIHOOD + if (pick_report_use(2) == "Y") + { + k = current_phase(); + if (k > max_lambda_phase) + k = max_lambda_phase; + SS2out << endl + << pick_report_name(2) << " " << obj_fun << endl; //SS_Label_310 + SS2out << "Component logL*Lambda Lambda" << endl; + SS2out << "TOTAL " << obj_fun << " NA" << endl; + if (F_Method > 1) + SS2out << "Catch " << catch_like * column(catch_lambda, k) << " NA" << endl; + SS2out << "Equil_catch " << equ_catch_like * column(init_equ_lambda, k) << " NA" << endl; + if (Svy_N > 0) + SS2out << "Survey " << surv_like * column(surv_lambda, k) << " NA" << endl; + if (nobs_disc > 0) + SS2out << "Discard " << disc_like * column(disc_lambda, k) << " NA" << endl; + if (nobs_mnwt > 0) + SS2out << "Mean_body_wt " << mnwt_like * column(mnwt_lambda, k) << " NA" << endl; + if (Nobs_l_tot > 0) + SS2out << "Length_comp " << length_like_tot * column(length_lambda, k) << " NA" << endl; + if (Nobs_a_tot > 0) + SS2out << "Age_comp " << age_like_tot * column(age_lambda, k) << " NA" << endl; + if (nobs_ms_tot > 0) + SS2out << "Size_at_age " << sizeage_like * column(sizeage_lambda, k) << " NA" << endl; + if (SzFreq_Nmeth > 0) + SS2out << "SizeFreq " << SzFreq_like * column(SzFreq_lambda, k) << " NA" << endl; + if (Do_Morphcomp > 0) + SS2out << "Morphcomp " << Morphcomp_lambda(k) * Morphcomp_like << " " << Morphcomp_lambda(k) << endl; + if (Do_TG > 0) + SS2out << "Tag_comp " << TG_like1 * column(TG_lambda1, k) << " NA" << endl; + if (Do_TG > 0) + SS2out << "Tag_negbin " << TG_like2 * column(TG_lambda2, k) << " NA" << endl; + SS2out << "Recruitment " << recr_like * recrdev_lambda(k) << " " << recrdev_lambda(k) << endl; + SS2out << "InitEQ_Regime " << regime_like * regime_lambda(k) << " " << regime_lambda(k) << endl; + SS2out << "Forecast_Recruitment " << Fcast_recr_like << " " << Fcast_recr_lambda << endl; + SS2out << "Parm_priors " << parm_like * parm_prior_lambda(k) << " " << parm_prior_lambda(k) << endl; + if (SoftBound > 0) + SS2out << "Parm_softbounds " << SoftBoundPen << " " + << " NA" << endl; + SS2out << "Parm_devs " << (sum(parm_dev_like)) * parm_dev_lambda(k) << " " << parm_dev_lambda(k) << endl; + if (F_ballpark_yr > 0) + SS2out << "F_Ballpark " << F_ballpark_lambda(k) * F_ballpark_like << " " << F_ballpark_lambda(k) << endl; + if (F_ballpark_yr > 0) + SS2out << "F_Ballpark(info_only)_" << F_ballpark_yr << "_estF_tgtF " << annual_F(F_ballpark_yr, 2) << " " << F_ballpark << endl; + // if(F_ballpark_yr>0) SS2out <<"F_Ballpark "< 1) + SS2out << "Catch_lambda: _ " << column(catch_lambda, k) << endl + << "Catch_like: " << catch_like * column(catch_lambda, k) << " " << catch_like << endl; + SS2out << "Init_equ_lambda: _ " << column(init_equ_lambda, k) << endl + << "Init_equ_like: " << equ_catch_like * column(init_equ_lambda, k) << " " << equ_catch_like << endl; + if (Svy_N > 0) + { + SS2out << "Surv_lambda: _ " << column(surv_lambda, k) << endl + << "Surv_like: " << surv_like * column(surv_lambda, k) << " " << surv_like << endl; + SS2out << "Surv_N_use: _ " << Svy_N_fleet_use << endl; + SS2out << "Surv_N_skip: _ " << (Svy_N_fleet - Svy_N_fleet_use) << endl; + } + if (nobs_disc > 0) + { + SS2out << "Disc_lambda: _ " << column(disc_lambda, k) << endl + << "Disc_like: " << disc_like * column(disc_lambda, k) << " " << disc_like << endl; + SS2out << "Disc_N_use: _ " << disc_N_fleet_use << endl; + SS2out << "Disc_N_skip: _ " << (disc_N_fleet - disc_N_fleet_use) << endl; + } + if (nobs_mnwt > 0) + { + SS2out << "mnwt_lambda: _ " << column(mnwt_lambda, k) << endl; + SS2out << "mnwt_like: " << mnwt_like * column(mnwt_lambda, k) << " " << mnwt_like << endl; + SS2out << "mnwt_N_use: _ " << mnwt_N_fleet_use << endl; + SS2out << "mnwt_N_skip: _ " << (mnwt_N_fleet - mnwt_N_fleet_use) << endl; + } + if (Nobs_l_tot > 0) + { + SS2out << "Length_lambda: _ " << column(length_lambda, k) << endl; + SS2out << "Length_like: " << length_like_tot * column(length_lambda, k) << " " << length_like_tot << endl; + SS2out << "Length_N_use: _ " << Nobs_l_use << endl; + SS2out << "Length_N_skip: _ " << (Nobs_l - Nobs_l_use) << endl; + } + if (Nobs_a_tot > 0) + { + SS2out << "Age_lambda: _ " << column(age_lambda, k) << endl; + SS2out << "Age_like: " << age_like_tot * column(age_lambda, k) << " " << age_like_tot << endl; + SS2out << "Age_N_use: _ " << Nobs_a_use << endl; + SS2out << "Age_N_skip: _ " << (Nobs_a - Nobs_a_use) << endl; + } + if (nobs_ms_tot > 0) + { + SS2out << "Sizeatage_lambda: _ " << column(sizeage_lambda, k) << endl; + SS2out << "sizeatage_like: " << sizeage_like * column(sizeage_lambda, k) << " " << sizeage_like << endl; + SS2out << "sizeatage_N_use: _ " << Nobs_ms_use << endl; + SS2out << "sizeatage_N_skip: _ " << (Nobs_ms - Nobs_ms_use) << endl; + } + + // Parm_devs_detail + // (only reported if there are parameter deviations) + if (pick_report_use(4) == "Y") + { + SS2out << endl + << pick_report_name(4) << endl; + SS2out << "Index Phase MinYr MaxYr N stddev Rho Like_devs Like_se mean rmse var sqrt(var) est_rho D-W" << endl; + for (i = 1; i <= N_parm_dev; i++) + { + dvector for_AR1(parm_dev_minyr(i), parm_dev_maxyr(i)); + dvector for_var(parm_dev_minyr(i), parm_dev_maxyr(i)); + int y1 = parm_dev_minyr(i); + int y2 = parm_dev_maxyr(i); + double count; + count = float(y2 - y1 + 1.); + double mean; + mean = value(sum(parm_dev(i)) / count); + for (j = y1 + 1; j <= y2; j++) + { + for_AR1(j) = value(parm_dev(i, j - 1)) - mean; + } + for_var = value(parm_dev(i)) - mean; + double cross; + double Durbin; + double var; + var = sumsq(for_var); + cross = 0.; + Durbin = 0; + for (j = y1 + 1; j <= y2; j++) + { + cross += for_var(j) * for_AR1(j); + Durbin += square(for_var(j) - for_AR1(j)); + } + cross /= (count - 1.); + Durbin /= (var + 1.0e-09); + var /= count; + SS2out << i << " " << parm_dev_PH(i) << " " << y1 << " " << y2 << " " << count << " " << parm_dev_stddev(i) << " " << parm_dev_rho(i) << " " << parm_dev_like(i) << " " << sum(parm_dev(i)) / count << " " << sqrt(1.0e-09 + sumsq(parm_dev(i)) / (count)) << " " << var << " " << sqrt(1.0e-09 + var) << " " << cross / (1.0e-09 + var) << " " << Durbin << " " << endl; + } + } + if (SzFreq_Nmeth > 0) + { + for (j = 1; j <= SzFreq_Nmeth; j++) + { + SS2out << "SizeFreq_lambda:_" << j << "; "; + if (j == 1) + { + SS2out << "_ "; + } + else + { + SS2out << "_ "; + } + for (f = 1; f <= Nfleet; f++) + { + if (SzFreq_LikeComponent(f, j) > 0) + { + SS2out << SzFreq_lambda(SzFreq_LikeComponent(f, j), k) << " "; + } + else + { + SS2out << " NA "; + } + } + SS2out << endl; + SS2out << "SizeFreq_like:_" << j << "; "; + if (j == 1) + { + SS2out << SzFreq_like * column(SzFreq_lambda, k) << " "; + } + else + { + SS2out << "_ "; + } + for (f = 1; f <= Nfleet; f++) + { + if (SzFreq_LikeComponent(f, j) > 0) + { + SS2out << SzFreq_like(SzFreq_LikeComponent(f, j)) << " "; + } + else + { + SS2out << " NA "; + } + } + SS2out << endl; + } + // SS2out< 0) + { + SS2out << "#" << endl + << "Tag_Group: ALL "; + for (f = 1; f <= N_TG; f++) + SS2out << f << " "; + SS2out << endl; + SS2out << "Tag_comp_Lambda _ " << column(TG_lambda1, k) << endl + << "Tag_comp_Like " << TG_like1 * column(TG_lambda1, k) << " " << TG_like1 << endl; + SS2out << "Tag_negbin_Lambda _ " << column(TG_lambda2, k) << endl + << "Tag_negbin_Like " << TG_like2 * column(TG_lambda2, k) << " " << TG_like2 << endl; + } + SS2out << endl; + + SS2out << endl + << pick_report_name(3) << endl; + SS2out << "Fleet "; + for (i = 1; i <= Nfleet; i++) + { + SS2out << " " << i; + } + SS2out << endl; + SS2out << "Index_extra_CV " << var_adjust(1) << endl; + SS2out << "Discard_extra_CV " << var_adjust(2) << endl; + SS2out << "MeanBodyWt_extra_CV " << var_adjust(3) << endl; + SS2out << "effN_mult_Lencomp " << var_adjust(4) << endl; + SS2out << "effN_mult_Agecomp " << var_adjust(5) << endl; + SS2out << "effN_mult_Len_at_age " << var_adjust(6) << endl; + SS2out << "effN_mult_generalized_sizecomp " << var_adjust(7) << endl; + + SS2out << "MG_parms_Using_offset_approach_#:_" << MGparm_def << " (1=none, 2= M, G, CV_G as offset from female_GP1, 3=like SS2 V1.x)" << endl; + } + + // REPORT_KEYWORD 5 PARAMETERS + if (pick_report_use(5) == "Y") + { + SS2out << endl + << pick_report_name(5) << endl; + SS2out << "Num Label Value Active_Cnt Phase Min Max Init Used Status Parm_StDev Gradient Pr_type Prior Pr_SD Pr_Like Value_again Value-1.96*SD Value+1.96*SD V_1% V_10% V_20% V_30% V_40% V_50% V_60% V_70% V_80% V_90% V_99% P_val P_lowCI P_hiCI P_1% P_10% P_20% P_30% P_40% P_50% P_60% P_70% P_80% P_90% P_99%" << endl; + + NP = 0; // count of number of parameters + active_count = 0; + Nparm_on_bound = 0; + int Activ; + for (j = 1; j <= N_MGparm2; j++) + { + NP++; + Activ = 0; + if (active(MGparm(j))) + { + active_count++; + Activ = 1; + } + Report_Parm(NP, active_count, Activ, MGparm(j), MGparm_LO(j), MGparm_HI(j), MGparm_RD(j), MGparm_use(j), MGparm_PR(j), MGparm_CV(j), MGparm_PRtype(j), MGparm_PH(j), MGparm_Like(j)); + } + + for (j = 1; j <= N_SRparm3; j++) + { + NP++; + Activ = 0; + if (active(SRparm(j))) + { + active_count++; + Activ = 1; + } + Report_Parm(NP, active_count, Activ, SRparm(j), SRparm_LO(j), SRparm_HI(j), SRparm_RD(j), SRparm_use(j), SRparm_PR(j), SRparm_CV(j), SRparm_PRtype(j), SRparm_PH(j), SRparm_Like(j)); + } + + if (recdev_cycle > 0) + { + for (j = 1; j <= recdev_cycle; j++) + { + NP++; + Activ = 0; + if (active(recdev_cycle_parm(j))) + { + active_count++; + Activ = 1; + } + Report_Parm(NP, active_count, Activ, recdev_cycle_parm(j), recdev_cycle_parm_RD(j, 1), recdev_cycle_parm_RD(j, 2), recdev_cycle_parm_RD(j, 3), recdev_cycle_use(j), recdev_cycle_parm_RD(j, 4), recdev_cycle_parm_RD(j, 5), recdev_cycle_parm_RD(j, 6), recdev_cycle_parm_RD(j, 7), recdev_cycle_Like(j)); + } + } + + if (recdev_do_early > 0) + { + for (i = recdev_early_start; i <= recdev_early_end; i++) + { + NP++; + SS2out << NP << " " << ParmLabel(NP) << " " << recdev(i); + if (active(recdev_early)) + { + active_count++; + SS2out << " " << active_count << " " << recdev_early_PH << " " << recdev_LO << " " << recdev_HI << " " << recdev_RD(i) << " " << recdev_use(i) << " act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); + } + else + { + SS2out << " _ _ _ _ _ _ NA _ _ "; + } + SS2out << " dev " << endl; + } + } + + if (do_recdev > 0) + { + for (i = recdev_start; i <= recdev_end; i++) + { + NP++; + SS2out << NP << " " << ParmLabel(NP) << " " << recdev(i); + if (active(recdev1) || active(recdev2)) + { + active_count++; + SS2out << " " << active_count << " " << recdev_PH << " " << recdev_LO << " " << recdev_HI << " " << recdev_RD(i) << " " << recdev_use(i) << " act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); + } + else + { + SS2out << " _ _ _ _ _ _ NA _ _ "; + } + SS2out << " dev " << endl; + } + } + + if (Do_Forecast > 0 && do_recdev > 0) + { + for (i = recdev_end + 1; i <= YrMax; i++) + { + NP++; + SS2out << NP << " " << ParmLabel(NP) << " " << Fcast_recruitments(i); + if (active(Fcast_recruitments)) + { + active_count++; + SS2out << " " << active_count << " " << Fcast_recr_PH2 << " " << recdev_LO << " " << recdev_HI << " " << recdev_RD(i) << " " << recdev_use(i) << " act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); + } + else + { + SS2out << " _ _ _ _ _ _ NA _ _ "; + } + SS2out << " dev " << endl; + } + } + + if (Do_Impl_Error > 0) + { + for (i = endyr + 1; i <= YrMax; i++) + { + NP++; + SS2out << NP << " " << ParmLabel(NP) << " " << Fcast_impl_error(i); + if (Fcast_recr_PH2 > 0) // intentionally using recdev phase + { + active_count++; + SS2out << " " << active_count << " " << Fcast_recr_PH2 << " -1 1 0 0 act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); + } + else + { + SS2out << " _ _ _ _ _ _ NA _ _ "; + } + SS2out << " dev " << endl; + } + } + for (j = 1; j <= N_init_F; j++) + { + NP++; + Activ = 0; + if (active(init_F(j))) + { + active_count++; + Activ = 1; + } + Report_Parm(NP, active_count, Activ, init_F(j), init_F_LO(j), init_F_HI(j), init_F_RD(j), init_F_use(j), init_F_PR(j), init_F_CV(j), init_F_PRtype(j), init_F_PH(j), init_F_Like(j)); + } + + if (N_Fparm > 0) + { + for (i = 1; i <= N_Fparm; i++) + { + NP++; + Activ = 0; + SS2out << NP << " " << ParmLabel(NP) << " " << F_rate(i); + if (active(F_rate(i))) + { + active_count++; + Activ = 1; + SS2out << " " << active_count << " " << Fparm_PH[i] << " 0.0 " << max_harvest_rate << " " << F_parm_intval(Fparm_loc[i](1)) << " " << Fparm_use(i) << " act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); + } + else + { + SS2out << " _ _ _ _ _ _ NA _ _ "; + } + SS2out << " F " << endl; + } + } + + for (j = 1; j <= Q_Npar2; j++) + { + NP++; + Activ = 0; + if (active(Q_parm(j))) + { + active_count++; + Activ = 1; + } + Report_Parm(NP, active_count, Activ, Q_parm(j), Q_parm_LO(j), Q_parm_HI(j), Q_parm_RD(j), Q_parm_use(j), Q_parm_PR(j), Q_parm_CV(j), Q_parm_PRtype(j), Q_parm_PH(j), Q_parm_Like(j)); + } + + for (j = 1; j <= N_selparm2; j++) + { + NP++; + Activ = 0; + if (active(selparm(j))) + { + active_count++; + Activ = 1; + } + Report_Parm(NP, active_count, Activ, selparm(j), selparm_LO(j), selparm_HI(j), selparm_RD(j), selparm_use(j), selparm_PR(j), selparm_CV(j), selparm_PRtype(j), selparm_PH(j), selparm_Like(j)); + } + + if (Do_TG > 0) + { + k = 3 * N_TG + 2 * Nfleet1; + for (j = 1; j <= k; j++) + { + NP++; + Activ = 0; + if (active(TG_parm(j))) + { + active_count++; + Activ = 1; + } + Report_Parm(NP, active_count, Activ, TG_parm(j), TG_parm_LO(j), TG_parm_HI(j), TG_parm2(j, 3), TG_parm_use(j), TG_parm2(j, 4), TG_parm2(j, 5), TG_parm2(j, 6), TG_parm_PH(j), TG_parm_Like(j)); + } + } + + if (N_parm_dev > 0) + { + for (i = 1; i <= N_parm_dev; i++) + for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) + { + NP++; + SS2out << NP << " " << ParmLabel(NP) << " " << parm_dev(i, j); + if (parm_dev_PH(i) > 0) + { + active_count++; + SS2out << " " << active_count << " " << parm_dev_PH(i) << " -10 10 " << parm_dev_RD(i, j) << " " << parm_dev_use(i, j); + temp = (parm_dev(i, j) - (-10)) / (20); + if (temp <= 0.0 || temp >= 1.0) + { + SS2out << " BOUND "; + Nparm_on_bound++; + } + else if (temp < 0.01) + { + SS2out << " LO "; + Nparm_on_bound++; + } + else if (temp >= 0.99) + { + SS2out << " HI "; + Nparm_on_bound++; + } + else if (parm_dev(i, j) == parm_dev_use(i, j) && parm_dev_PH(i) > 0) + { + SS2out << " NO_MOVE "; + } + else + { + SS2out << " act "; + } + SS2out << CoVar(active_count, 1) << " " << parm_gradients(active_count) << " dev " << endl; + } + else + { + SS2out << " _ _ _ _ _ _ NA _ _ dev" << endl; + } + } + } + + SS2out << "#" << endl + << "Number_of_parameters: " << NP << endl; + SS2out << "Active_count: " << active_count << endl; + SS2out << "Number_of_active_parameters_on_or_within_1%_of_min-max_bound: " << Nparm_on_bound << endl; + } + + // REPORT_KEYWORD 6 DERIVED_QUANTITIES + if (pick_report_use(6) == "Y") + { + SS2out << endl + << pick_report_name(6) << endl; + SS2out << "SPR_std_report_basis: " << SPR_report_label << endl; + SS2out << "F_std_report_basis: " << F_report_label << endl; + SS2out << "B_ratio_denominator: " << depletion_basis_label << endl; + NP = deriv_start; + active_count = deriv_covar_start; + SS2out << "Label Value StdDev (Val-1.0)/Stddev CumNorm" << endl; + for (j = 1; j <= N_STD_Yr; j++) + { + NP++; + SS2out << ParmLabel(NP) << " " << SSB_std(j); + active_count++; + SS2out << " " << CoVar(active_count, 1) << endl; + } + for (j = 1; j <= N_STD_Yr; j++) + { + NP++; + SS2out << ParmLabel(NP) << " " << recr_std(j); + active_count++; + SS2out << " " << CoVar(active_count, 1) << endl; + } + for (j = 1; j <= N_STD_Yr_Ofish; j++) + { + NP++; + SS2out << ParmLabel(NP) << " " << SPR_std(j); + active_count++; + SS2out << " " << CoVar(active_count, 1); + if (CoVar(active_count, 1) > 0.0) + { + temp = value((SPR_std(j) - 1.0) / CoVar(active_count, 1)); + SS2out << " " << temp << " " << cumd_norm(temp); + } + SS2out << endl; + } + post_vecs << runnumber << " 0 " << obj_fun << " F/Fmsy_stdev "; + for (j = 1; j <= N_STD_Yr_F; j++) + { + NP++; + SS2out << ParmLabel(NP) << " " << F_std(j); + active_count++; + SS2out << " " << CoVar(active_count, 1); + post_vecs << CoVar(active_count, 1) << " "; + if (CoVar(active_count, 1) > 0.0) + { + temp = value((F_std(j) - 1.0) / CoVar(active_count, 1)); + SS2out << " " << temp << " " << cumd_norm(temp); + } + SS2out << endl; + } + post_vecs << endl; + post_vecs << runnumber << " 0 " << obj_fun << " B/Bmsy_stdev "; + + for (j = 1; j <= N_STD_Yr_Dep; j++) + { + NP++; + SS2out << ParmLabel(NP) << " " << depletion(j); + active_count++; + SS2out << " " << CoVar(active_count, 1); + post_vecs << CoVar(active_count, 1) << " "; + if (CoVar(active_count, 1) > 0.0) + { + temp = value((depletion(j) - 1.0) / CoVar(active_count, 1)); + SS2out << " " << temp << " " << cumd_norm(temp); + } + SS2out << endl; + } + post_vecs << endl; + for (j = 1; j <= N_STD_Mgmt_Quant; j++) + { + NP++; + active_count++; + SS2out << ParmLabel(NP) << " " << Mgmt_quant(j); + + SS2out << " " << CoVar(active_count, 1) << endl; + } + + for (j = 1; j <= Extra_Std_N; j++) + { + NP++; + active_count++; + SS2out << ParmLabel(NP) << " " << Extra_Std(j); + SS2out << " " << CoVar(active_count, 1) << endl; + } + + if (Svy_N_sdreport > 0) + { + k = 0; + for (f = 1; f <= Nfleet; ++f) + { + if (Svy_sdreport(f) > 0) + { + for (j = 1; j <= Svy_N_fleet(f); j++) + { + active_count++; + k++; + SS2out << fleetname(f) << "_" << Svy_yr(f, j) << " "; + SS2out << Svy_est(f, j) << " " << CoVar(active_count, 1) << " " << Svy_sdreport_est(k) << endl; + } + } + } + } + } + + // REPORT_KEYWORD 7 MGPARM_BY_YEAR + if (pick_report_use(7) == "Y") + { + k1 = YrMax; + SS2out << endl + << pick_report_name(7) << endl; + SS2out << "Yr Change? "; + for (i = 1; i <= N_MGparm2; i++) + SS2out << " " << ParmLabel(i); + SS2out << endl; + for (y = styr; y <= k1; y++) + SS2out << y << " " << timevary_MG(y, 0) << " " << mgp_save(y) << endl; + SS2out << endl; + } + + // REPORT_KEYWORD 8 SELPARM_SIZE_BY_YEAR + if (pick_report_use(8) == "Y") + { + k1 = YrMax; + if (Fcast_timevary_Selex == 0) + { + SS2out << "forecast_selectivity_averaged_over_years:_" << Fcast_Sel_yr1 << "_to_" << Fcast_Sel_yr2 << endl; + } + else + { + SS2out << "forecast_selectivity_from_time-varying_parameters " << endl; + } + SS2out << endl + << pick_report_name(8) << endl; + SS2out << "Fleet Yr Change? Parameters" << endl; + for (f = 1; f <= Nfleet; f++) + for (y = styr; y <= k1; y++) + { + k = N_selparmvec(f); + if (k > 0) + SS2out << f << " " << y << " " << timevary_sel(y, f) << " " << save_sp_len(y, f)(1, k) << endl; + } + } + + // REPORT_KEYWORD 9 SELPARM_AGE_BY_YEAR + if (pick_report_use(9) == "Y") + { + k1 = YrMax; + SS2out << endl + << pick_report_name(9) << endl; + SS2out << "Fleet Yr Change? Parameters" << endl; + for (f = Nfleet + 1; f <= 2 * Nfleet; f++) + for (y = styr; y <= k1; y++) + { + k = N_selparmvec(f); + if (k > 0) + SS2out << f - Nfleet << " " << y << " " << timevary_sel(y, f) << " " << save_sp_len(y, f)(1, k) << endl; + } + } + + // REPORT_KEYWORD 10 RECRUITMENT_DISTRIBUTION + if (pick_report_use(10) == "Y") + { + SS2out << endl + << pick_report_name(10) << endl; + SS2out << "Settle# settle_timing# G_pattern Area Settle_Month Seas Age Time_w/in_seas recr_dist_F recr_dist_M" << endl; + for (settle = 1; settle <= N_settle_assignments; settle++) + { + gp = settlement_pattern_rd(settle, 1); // growth patterns + p = settlement_pattern_rd(settle, 3); // settlement area + settle_time = settle_assignments_timing(settle); + SS2out << settle << " " << settle_time << " " << gp << " " << p << " " << Settle_month(settle_time) << " " << Settle_seas(settle_time) << " " << Settle_age(settle_time) << " " << Settle_timing_seas(settle_time) << " " << recr_dist(styr, gp, settle_time, p); + if (gender == 2) {SS2out << " " << recr_dist(styr, gp + N_GP, settle_time, p) << endl;} else {SS2out << " NA" << endl; } + } + SS2out << "#" << endl + << "RECRUITMENT_DIST_Bmark" << endl + << "Settle# settle_timing# G_pattern Area Settle_Month Seas Age Time_w/in_seas recr_dist_F recr_dist_M" << endl; + for (settle = 1; settle <= N_settle_assignments; settle++) + { + gp = settlement_pattern_rd(settle, 1); // growth patterns + p = settlement_pattern_rd(settle, 3); // settlement area + settle_time = settle_assignments_timing(settle); + SS2out << settle << " " << settle_time << " " << gp << " " << p << " " << Settle_month(settle_time) << " " << Settle_seas(settle_time) << " " << Settle_age(settle_time) << " " << Settle_timing_seas(settle_time) << " " << recr_dist_unf(gp, settle_time, p) / (Bmark_Yr(8) - Bmark_Yr(7) + 1); + if (gender == 2) {SS2out << " " << recr_dist_unf(gp + N_GP, settle_time, p) / (Bmark_Yr(8) - Bmark_Yr(7) + 1) << endl;} else {SS2out << " NA" << endl; } + } + SS2out << "#" << endl + << "RECRUITMENT_DIST_endyr" << endl + << "Settle# settle_timing# G_pattern Area Settle_Month Seas Age Time_w/in_seas recr_dist_F recr_dist_M" << endl; + for (settle = 1; settle <= N_settle_assignments; settle++) + { + gp = settlement_pattern_rd(settle, 1); // growth patterns + p = settlement_pattern_rd(settle, 3); // settlement area + settle_time = settle_assignments_timing(settle); + SS2out << settle << " " << settle_time << " " << gp << " " << p << " " << Settle_month(settle_time) << " " << Settle_seas(settle_time) << " " << Settle_age(settle_time) << " " << Settle_timing_seas(settle_time) << " " << recr_dist_endyr(gp, settle_time, p); + if (gender == 2) {SS2out << " " << recr_dist(endyr, gp + N_GP, settle_time, p) << endl;} else {SS2out << " NA" << endl; } + } + + SS2out << "#" << endl; + SS2out << "RECRUITMENT_DIST_TIMESERIES" << endl; + SS2out << "GP: "; + for (gp = 1; gp <= N_GP; gp++) + for (settle = 1; settle <= N_settle_timings; settle++) + for (p = 1; p <= pop; p++) + for (int sex = 1; sex <= gender; sex++) + if (recr_dist_pattern(gp, settle, p) == 1) SS2out << gp << " "; + SS2out << endl; + SS2out << "settle_timing: "; + for (gp = 1; gp <= N_GP; gp++) + for (settle = 1; settle <= N_settle_timings; settle++) + for (p = 1; p <= pop; p++) + for (int sex = 1; sex <= gender; sex++) + if (recr_dist_pattern(gp, settle, p) == 1) SS2out << settle << " "; + SS2out << endl; + SS2out << "area: "; + for (gp = 1; gp <= N_GP; gp++) + for (settle = 1; settle <= N_settle_timings; settle++) + for (p = 1; p <= pop; p++) + for (int sex = 1; sex <= gender; sex++) + if (recr_dist_pattern(gp, settle, p) == 1) SS2out << p << " "; + SS2out << endl; + SS2out << "sex: "; + for (gp = 1; gp <= N_GP; gp++) + for (settle = 1; settle <= N_settle_timings; settle++) + for (p = 1; p <= pop; p++) + for (int sex = 1; sex <= gender; sex++) + {if (recr_dist_pattern(gp, settle, p) == 1) SS2out << sex << " ";} + SS2out << endl; + + SS2out << "Year recr_dist" << endl; + for (y = styr; y <= YrMax; y++) + { + SS2out << y << " "; + for (gp = 1; gp <= N_GP; gp++) + for (settle = 1; settle <= N_settle_timings; settle++) + for (p = 1; p <= pop; p++) + for (int sex = 1; sex <= gender; sex++) + if (recr_dist_pattern(gp, settle, p) == 1) + { + SS2out << " " << recr_dist(y, gp + (sex -1) * N_GP, settle, p); + } + SS2out << endl; + } + } + + // REPORT_KEYWORD 11 MORPH_INDEXING + if (pick_report_use(11) == "Y") + { + SS2out << endl + << pick_report_name(11) << endl; + SS2out << "Index GP Sex BirthSeas Platoon Platoon_Dist Sex*GP Sex*GP*Settle BirthAge_Rel_Jan1" << endl; + for (g = 1; g <= gmorph; g++) + { + SS2out << g << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << GP2(g) << " " << platoon_distr(GP2(g)) << " " << GP(g) << " " << GP3(g) << " " << azero_G(g) << endl; + } + } + + // REPORT_KEYWORD 12 SIZEFREQ_TRANSLATION + // 3darray SzFreqTrans(1,SzFreq_Nmeth*nseas,1,nlength2,1,SzFreq_Nbins_seas_g); + if (pick_report_use(12) == "Y" && SzFreq_Nmeth > 0) + { + SS2out << endl + << pick_report_name(12) << endl; + SS2out << "#_NOTE: rows_are_population_length_bins;_columns_are_recipient_size_bins_according_to_the_specified_method" << endl; + for (SzFreqMethod = 1; SzFreqMethod <= SzFreq_Nmeth; SzFreqMethod++) + { + SS2out << SzFreqMethod << " gp seas len mid-len "; + if (SzFreq_scale(SzFreqMethod) == 1) + { + SS2out << " mid-kg "; + } + else if (SzFreq_scale(SzFreqMethod) == 2) + { + SS2out << " mid-lbs "; + } + else if (SzFreq_scale(SzFreqMethod) == 3) + { + SS2out << " mid-cm "; + } + else + { + SS2out << " mid-inch "; + } + SS2out << SzFreq_bins1(SzFreqMethod); + if (gender == 2) + SS2out << SzFreq_bins1(SzFreqMethod); + SS2out << endl + << SzFreqMethod << " gp seas len mid-len metric " << SzFreq_bins(SzFreqMethod) << endl; + ; + for (gp = 1; gp <= N_GP; gp++) + for (s = 1; s <= nseas; s++) + { + SzFreqMethod_seas = nseas * (SzFreqMethod - 1) + s; // index that combines sizefreqmethod and season and used in SzFreqTrans + for (z = 1; z <= nlength2; z++) + { + SS2out << SzFreqMethod << " " << gp << " " << s << " " << len_bins2(z) << " " << len_bins_m2(z) << " "; + if (SzFreq_scale(SzFreqMethod) == 1) + { + SS2out << wt_len2(s, gp, z) << " "; + } + else if (SzFreq_scale(SzFreqMethod) == 2) + { + SS2out << wt_len2(s, gp, z) / 0.4536 << " "; + } + else if (SzFreq_scale(SzFreqMethod) == 3) + { + SS2out << len_bins_m2(z) << " "; + } + else + { + SS2out << len_bins_m2(z) / 2.54 << " "; + } + for (j = 1; j <= gender * SzFreq_Nbins(SzFreqMethod); j++) + { + SS2out << SzFreqTrans(SzFreqMethod_seas, z, j) << " "; + if (SzFreqTrans(SzFreqMethod_seas, z, j) < 0.0) + { + warnstream << "Bin widths narrower than pop len bins caused negative allocation in sizefreq method:"; + warnstream << " method, season, size, bin: " << SzFreqMethod << " " << s << " " << len_bins2(z) << " " << j; + write_message (FATAL, 0); // EXIT! + } + } + SS2out << endl; + } + } + } + } + + // REPORT_KEYWORD 13 MOVEMENT + + if (pick_report_use(13) == "Y" && do_migration > 0) + { + SS2out << endl + << pick_report_name(13) << endl; + SS2out << " Seas GP Source_area Dest_area minage maxage " << age_vector << endl; + for (k = 1; k <= do_migr2; k++) + { + SS2out << move_def2(k) << " " << migrrate(endyr, k) << endl; + } + } + + // REPORT_KEYWORD 14 EXPLOITATION + if (pick_report_use(14) == "Y") + { + SS2out << endl + << pick_report_name(14) << endl; + SS2out << "NOTE: Displays.various.annual.F.statistics.and.displays.apical.F.for.each.fleet.by.season" << endl; + SS2out << "NOTE: F_Method:=" << F_Method; + if (F_Method == 1) + { + SS2out << ";.Pope's_approx,.fleet.F.is.mid-season.exploitation.fraction "; + } + else + { + SS2out << ";.Continuous_F;.fleet.F.will.be.multiplied.by.season.duration.when.it.is.used.and.in.the.F_std.calculation"; + } + SS2out << endl + << "NOTE: Displayed.fleet-specific.F.values.are.the.F.for.ages.with.compound.age-length-sex.selectivity=1.0" << endl; + SS2out << "NOTE: F_std_basis: " << F_report_label << endl; + SS2out << "F_std averaged over N years: " << F_std_multi << endl; + if (F_reporting >= 4) + { + SS2out << "NOTE: Annual_F.shown.here.is.done.by.the.Z-M.method.for.ages:." << F_reporting_ages(1) << "-" << F_reporting_ages(2) << endl; + } + else + { + SS2out << "NOTE: Annual_F.shown.here.is.done.by.the.Z-M.method.for.nages/2=" << nages / 2 << endl; + } + SS2out << "#" << endl; + SS2out << "Yr Seas Seas_dur F_std annual_F annual_M "; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + SS2out << " " << fleetname(f); + } + SS2out << endl; + SS2out << "Catchunits: _ _ _ _ _ "; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + if (catchunits(f) == 1) + { + SS2out << " Bio "; + } + else + { + SS2out << " Num "; + } + } + SS2out << endl + << "FleetType: _ _ _ _ _ "; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + if (fleet_type(f) == 1) + { + SS2out << " Catch "; + } + else + { + SS2out << " Bycatch "; + } + } + SS2out << endl + << "FleetArea: _ _ _ _ _ "; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + SS2out << " " << fleet_area(f); + } + SS2out << endl + << "FleetID: _ _ _ _ _ "; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + SS2out << " " << f; + } + SS2out << endl; + if (N_init_F > 0) + { + for (s = 1; s <= nseas; s++) + { + SS2out << "INIT " << s << " " << seasdur(s) << " _ _ _ "; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + if (init_F_loc(s, f) > 0) + { + SS2out << " " << init_F(init_F_loc(s, f)); + } + else + { + SS2out << " _ "; + } + } + SS2out << endl; + } + } + + for (y = styr; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + SS2out << y << " " << s << " " << seasdur(s); + if (s == 1 && STD_Yr_Reverse_F(y) > 0) + { + SS2out << " " << F_std(STD_Yr_Reverse_F(y)); + } + else + { + SS2out << " _ "; + } + SS2out << " " << annual_F(y)(2, 3); + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + SS2out << " " << Hrate(f, t); + } + SS2out << endl; + } + } + + // REPORT_KEYWORD 15 CATCH + if (pick_report_use(15) == "Y") + { + SS2out << endl + << pick_report_name(15) << endl; + SS2out << "# where vuln_ is mid-season selected bio or numbers; sel_ is selected total catch; dead_ is catch without live discards; ret_ is retained catch" << endl; + SS2out << "Fleet Fleet_Name Area Yr Seas Time Obs Exp Mult Exp*Mult se F Like vuln_bio sel_bio dead_bio ret_bio vuln_num sel_num dead_num ret_num" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + { + for (y = styr - 1; y <= endyr; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + if (catchunits(f) == 1) + { + gg = 3; + } // biomass + else + { + gg = 6; + } // numbers + temp = float(y) + 0.01 * int(100. * (azero_seas(s) + seasdur_half(s))); + SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " "; + if (y < styr) + { + SS2out << "INIT "; + } + else + { + SS2out << y << " "; + } + SS2out << s << " " << temp << " " << catch_ret_obs(f, t) << " " << catch_fleet(t, f, gg) << " " << catch_mult(y, f) << " " << catch_mult(y, f) * catch_fleet(t, f, gg); + SS2out << " " << catch_se(t, f) << " " << Hrate(f, t) << " "; + if (fleet_type(f) == 1) + { + if (catch_ret_obs(f, t) > 0 && F_Method > 1) + { + SS2out << 0.5 * square((log(1.1 * catch_ret_obs(f, t)) - log(catch_fleet(t, f, gg) * catch_mult(y, f) + 0.1 * catch_ret_obs(f, t))) / catch_se(t, f)); + } + else + { + SS2out << " NA"; + } + } + else + { + SS2out << "BYCATCH"; + } + SS2out << " " << vuln_bio(t, f) << " " << catch_fleet(t, f)(1,3) << " " << vuln_num(t, f) << " " << catch_fleet(t, f)(4,6) << endl; + } + } + } + } + int bio_t; + dvector Bio_Comp(1, N_GP * gender); + dvector Num_Comp(1, N_GP * gender); + // REPORT_KEYWORD 16 TIME_SERIES + // Fleet Fleet_Name Area Yr Era Seas Subseas Month Time + if (pick_report_use(16) == "Y") + { + SS2out << endl + << pick_report_name(16); + SS2out << " BioSmry_age:_" << Smry_Age; // SS_Label_320 + if (F_Method == 1) + { + SS2out << " Pope's_approx" << endl; + } + else + { + SS2out << " Continuous_F" << endl; + } + SS2out << "Area Yr Era Seas Bio_all Bio_smry SpawnBio Recruit_0 "; + for (gp = 1; gp <= N_GP; gp++) + SS2out << " SpawnBio_GP:" << gp; + if (Hermaphro_Option != 0) + { + for (gp = 1; gp <= N_GP; gp++) + SS2out << " MaleSpawnBio_GP:" << gp; + } + for (gg = 1; gg <= gender; gg++) + for (gp = 1; gp <= N_GP; gp++) + { + SS2out << " SmryBio_SX:" << gg << "_GP:" << gp; + } + + for (gg = 1; gg <= gender; gg++) + { + for (gp = 1; gp <= N_GP; gp++) + { + SS2out << " SmryNum_SX:" << gg << "_GP:" << gp; + } + } + SS2out << " mature_bio mature_num "; + + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + SS2out << " sel(B):_" << f << " dead(B):_" << f << " retain(B):_" << f << " sel(N):_" << f << " dead(N):_" << f << " retain(N):_" << f << " obs_cat:_" << f; + if (F_Method == 1) + { + SS2out << " Hrate:_" << f; + } + else + { + SS2out << " F:_" << f; + } + } + + SS2out << " SSB_vir_LH ABC_buffer" << endl; + for (p = 1; p <= pop; p++) + { + for (y = styr - 2; y <= YrMax; y++) + { + if (p == 1) + { + Smry_Table(y)(16, 17).initialize(); + } + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + bio_t = t; + if (y <= styr) + { + bio_t = styr - 1 + s; + } + Bio_Comp.initialize(); + Num_Comp.initialize(); + totbio.initialize(); + smrybio.initialize(); + smrynum.initialize(); + SSB_vir_LH.initialize(); + smryage.initialize(); + // Recr(p,y)=0; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + // if(s==Bseas(g)) Recr(p,y)+=natage(t,p,g,0); + gg = sx(g); + temp = natage(t, p, g)(Smry_Age, nages) * Wt_Age_t(bio_t, 0, g)(Smry_Age, nages); + Bio_Comp(GP(g)) += value(temp); //sums to accumulate across platoons and settlements + Num_Comp(GP(g)) += value(sum(natage(t, p, g)(Smry_Age, nages))); //sums to accumulate across platoons and settlements + totbio += natage(t, p, g) * Wt_Age_t(bio_t, 0, g); + smrybio += temp; + smrynum += sum(natage(t, p, g)(Smry_Age, nages)); + smryage += natage(t, p, g)(Smry_Age, nages) * r_ages(Smry_Age, nages); + SSB_vir_LH += natage(t, p, g) * virg_fec(g); + { + for (f = 1; f <= Nfleet; f++) + { + if (fleet_area(f) == p && y >= styr - 1 && fleet_type(f) <= 2) + { + Smry_Table(y, 16) += sum(catage(t, f, g)); // temporary storage spot + Smry_Table(y, 17) += catage(t, f, g) * r_ages; + } + } + } + } //close gmorph loop + Smry_Table(y, 17) /= ( Smry_Table(y, 16) + 1.0e-06 ); // mean age of catch + Smry_Table(y, 16) = smryage / smrynum; // mean age of summary numbers + if (gender_rd == -1) + SSB_vir_LH *= femfrac(1); + SS2out << p << " " << y; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + + SS2out << s << " " << totbio << " " << smrybio << " "; + if (s == spawn_seas) + { + temp = sum(SSB_pop_gp(y, p)); + if (Hermaphro_maleSSB > 0) + temp += Hermaphro_maleSSB * sum(MaleSSB(y, p)); + SS2out << temp; + } + else + { + SS2out << " _ "; + } + SS2out << " " << Recr(p, t) << " "; + if (s == spawn_seas) + { + SS2out << SSB_pop_gp(y, p); + if (Hermaphro_Option != 0) + SS2out << MaleSSB(y, p); + } + else + { + for (gp = 1; gp <= N_GP; gp++) + { + SS2out << " _ "; + } + if (Hermaphro_Option != 0) + { + for (gp = 1; gp <= N_GP; gp++) + { + SS2out << " _ "; + } + } + } + SS2out << " " << Bio_Comp << " " << Num_Comp; + SS2out << " " << SSB_B_yr(y) << " " << SSB_N_yr(y); + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + if (fleet_area(f) == p && y >= styr - 1) + { + SS2out << " " << catch_fleet(t, f) << " "; + if (y <= endyr) + { + SS2out << catch_ret_obs(f, t) << " " << Hrate(f, t); + } + else + { + SS2out << " _ " << Hrate(f, t); + } + // if(y<=endyr) {Smry_Table(y,4)+=catch_fleet(t,f,1); Smry_Table(y,5)+=catch_fleet(t,f,2); Smry_Table(y,6)+=catch_fleet(t,f,3);} + } + else + { + SS2out << " 0 0 0 0 0 0 0 0 "; + } + } + if (s == spawn_seas) + { + SS2out << " " << SSB_vir_LH; + } + else + { + SS2out << " _"; + } + if (y <= endyr) + { + SS2out << " NA"; + } + else + { + SS2out << " " << ABC_buffer(y); + } + SS2out << endl; + } + } + } + } + // REPORT_KEYWORD 17 SPR_SERIES (equilibrium_SPR_and_YPR_calculations_for_each_year) + // 1=totbio, 2=smrybio, 3=smrynum, 4=enc_catch, 5=dead_catch, 6=ret_catch, 7=spbio, 8=recruit, + // 9=equ_totbio, 10=equ_smrybio, 11=equ_SSB_virgin, 12=equ_S1, 13=Gentime, 14=YPR, 15=meanage_spawners, 16=meanage_smrynums, 17=meanage_catch + + if (pick_report_use(17) == "Y") + { + SS2out << endl + << pick_report_name(17) << endl; + SS2out << "#_NOTE: reports_per_recruit_quantities_using_current_year_biology;_using_same_equil_calc_routine_used_for_reference_points" << endl; + SS2out << "#_NOTE: current_year_biology_is_current_at-age_biology_from_time_series;_not_recalc_biology_from_current_growth_parameters" << endl; + SS2out << "#_NOTE: uses_R0= " << Recr_virgin << endl; + SS2out << "#_NOTE: YPR_unit_is_Dead_Biomass" << endl; + SS2out << "#_NOTE: gentime_is_mean_age_of_female_spawners_weighted_by_reproductive_value-at-age_(fec(g))" << endl; + + SS2out << "Yr Era Bio_all_eq Bio_Smry_eq SSB_unfished_eq SSBfished_eq SSBfished/R SPR YPR GenTime" << endl; + + for (y = styr; y <= YrMax; y++) + { + if (y <= endyr) + { + SS2out << y << " TIME "; + } + else + { + SS2out << y << " FORE "; + } + SS2out << Smry_Table(y)(9, 12) << " " << (Smry_Table(y, 12) / Recr_virgin) << " " << Smry_Table(y, 12) / Smry_Table(y, 11) << " "; + SS2out << (Smry_Table(y, 14) / Recr_virgin) << " " << Smry_Table(y, 13) << endl; + } // end year loop + // end SPR time series + } + + if (pick_report_use(61) == "Y") // ANNUAL_TIME_SERIES report:61 + { + SS2out << endl + << pick_report_name(61) << endl; + SS2out << "#_NOTE: MnAgeSmry_is_numbers_weighted_meanage_at_and_above_smryage:_" << Smry_Age << endl; + SS2out << "#_NOTE:_mean_age_of_catch_is_numbers-weighted_and_based_on_catage_which_is_the_dead_catch_and_comes_from:_sel_dead_num_=_sel_*_(retain_+_(1-retain)*discmort)" << endl; + SS2out << "#_NOTE: Depletion_basis: " << depletion_basis << " # " << depletion_basis_label << endl; + SS2out << "#_NOTE: F_std_report_basis: " << F_reporting << " # " << F_report_label << endl; + SS2out << "#_NOTE: SPR_std_report_basis: " << SPR_reporting << " # " << SPR_report_label << endl; + SS2out << "#_NOTE: tot_exploit:_is_dead_catch_B/bio_smry" << endl; + SS2out << "#_NOTE: sum_fleet_F:_is_simple_sum_of_full_Fs_among_all_fleets_ignoring_seasonal_and_area_modifiers" << endl; + SS2out << "#_NOTE: suffix:_an_emphasizes_that_quantity_is_annual_and_all_areas" << endl; + + SS2out << "year Era Bio_all_an Bio_Smry_an Num_Smry_an SSB recruits sel_catch_B_an dead_catch_B_an retain_catch_B_an sel_catch_N_an dead_catch_N_an retain_catch_N_an" << + " tot_exploit sum_fleet_F F=Z-M M mn_age_SSB mn_age_smry mn_age_catch SPR_std Depletion_std F_std" << endl; + // 1=totbio, 2=smrybio, 3=smrynum, 4=enc_catch, 5=dead_catch, 6=ret_catch, 7=spbio, 8=recruit, + // 9=equ_totbio, 10=equ_smrybio, 11=equ_SSB_virgin, 12=equ_S1, 13=Gentime, 14=YPR, 15=meanage_spawners, 16=meanage_smrynums, 17=meanage_catch + + for (y = styr; y <= YrMax; y++) + { + if (y <= endyr) + { + SS2out << y << " TIME "; + } + else + { + SS2out << y << " FORE "; + } + SS2out << Smry_Table(y)(1, 3) << " " << SSB_yr(y) << " " << exp_rec(y, 4) << " "; + SS2out << annual_catch(y) << " " << Smry_Table(y, 5) / Smry_Table(y, 2) << " " << annual_F(y) << " " << Smry_Table(y, 15) / SSB_yr(y) << " " << Smry_Table(y, 16) << " " << Smry_Table(y, 17) << " "; // + // gentime + if (STD_Yr_Reverse_Ofish(y) > 0) + { + SS2out << SPR_std(STD_Yr_Reverse_Ofish(y)) << " "; + } + else + { + SS2out << " _ "; + } + if (STD_Yr_Reverse_Dep(y) > 0) + { + SS2out << depletion(STD_Yr_Reverse_Dep(y)) << " "; + } + else + { + SS2out << " _ "; + } + if (y >= styr && STD_Yr_Reverse_F(y) > 0) + { + SS2out << F_std(STD_Yr_Reverse_F(y)); + } + else + { + SS2out << " _ "; + } + SS2out << endl; + } // end year loop + // end ANNUAL_TIME_SERIES + } + + // REPORT_KEYWORD 18 Kobe_Plot + if (pick_report_use(18) == "Y") + { + SS2out << endl + << pick_report_name(18) << endl; + if (F_std_basis != 2) + SS2out << "F_report_basis_is_not_=2;_so_info_below_is_not_F/Fmsy" << endl; + SS2out << "MSY_basis:_" << MSY_name << endl; + SS2out << "Yr B/Bmsy F/Fmsy" << endl; + for (y = styr; y <= YrMax; y++) + { + SS2out << y << " " << SSB_yr(y) / Bmsy << " "; + if (y >= styr && STD_Yr_Reverse_F(y) > 0) + { + SS2out << " " << F_std(STD_Yr_Reverse_F(y)); + } + else + { + SS2out << " _ "; + } + SS2out << endl; + } + } + + // ****************************************************************************** + k = Nfleet; + if (k < 4) + k = 4; + // quantities to store summary statistics + dvector rmse(1, k); // used in the SSBio, Index, Lencomp and Agecomp reports + dvector Hrmse(1, k); + dvector Rrmse(1, k); + dvector n_rmse(1, k); + // following vectors used for index-related quantities + dvector mean_CV(1, k); + + dvector mean_CV2(1, k); + + dvector mean_CV3(1, k); + + // vectors to store mean sample sizes for comp data + dvector mean_Nsamp_in(1, k); + dvector mean_Nsamp_adj(1, k); + dvector mean_Nsamp_DM(1, k); + // SS_Label_330 + + // REPORT_KEYWORD 19 SPAWN_RECRUIT + if (pick_report_use(19) == "Y") + { + + rmse = 0.0; + n_rmse = 0.0; + double cross = 0.0; + double Durbin = 0.0; + double var = 0.0; + + for (y = recdev_first; y <= recdev_end; y++) + { + temp1 = recdev(y); + if (y < recdev_start) // so in early period + { + rmse(3) += value(square(temp1)); + n_rmse(3) += 1.; + rmse(4) += biasadj(y); + } + else + { + var += value(square(temp1)); + if (y > recdev_start) // so not first year + { + cross += value(temp1 * recdev(y - 1)); + Durbin += value(square(temp1 - recdev(y - 1))); + } + rmse(1) += value(square(temp1)); + n_rmse(1) += 1.; + rmse(2) += biasadj(y); + } + } + if (n_rmse(1) > 0. && rmse(1) > 0.) + rmse(1) = sqrt(rmse(1) / n_rmse(1)); // rmse during main period + if (n_rmse(1) > 0.) + rmse(2) = rmse(2) / n_rmse(1); // mean biasadj during main period + if (n_rmse(3) > 0. && rmse(3) > 0.) + rmse(3) = sqrt(rmse(3) / n_rmse(3)); //rmse during early period + if (n_rmse(3) > 0.) + rmse(4) = rmse(4) / n_rmse(3); // mean biasadj during early period + if (n_rmse(1) >= 2.) + { + cross /= (n_rmse(1) - 1.); + } + else + { + cross = 0.0; + } + Durbin /= (var + 1.0e-09); + var /= (n_rmse(1) + 1.0e-09); + + dvariable steepness = SRparm(2); + SS2out << endl + << pick_report_name(19); + SS2out << " Function: " << SR_fxn << " RecDev_method: " << do_recdev << " sum_recdev: " << sum_recdev << endl + << SRparm(1) << " Ln(R0) " << mfexp(SRparm(1)) << endl + << steepness << " steepness" << endl + << Bmsy / SSB_virgin << " Bmsy/Bzero "; + if (SR_fxn == 8) + { + dvariable Shepherd_c; + dvariable Shepherd_c2; + dvariable Hupper; + Shepherd_c = SRparm(3); + Shepherd_c2 = pow(0.2, Shepherd_c); + Hupper = 1.0 / (5.0 * Shepherd_c2); + temp = 0.2 + (SRparm(2) - 0.2) / (0.8) * (Hupper - 0.2); + SS2out << " Shepherd_c: " << Shepherd_c << " steepness_limit: " << Hupper << " Adjusted_steepness: " << temp; + } + else if (SR_fxn == 9) + { + SS2out << " Ricker_Power: " << SRparm(3); + } + + SS2out << endl; + SS2out << sigmaR << " sigmaR" << endl; + SS2out << init_equ_steepness << " # 0/1 to use steepness in initial equ recruitment calculation" << endl; + + SS2out << SRparm(N_SRparm2 - 1) << " init_eq: see below" << endl + << recdev_start << " " << recdev_end << " main_recdev:start_end" << endl + << recdev_adj(1) << " " << recdev_adj(2, 5) << " breakpoints_for_bias_adjustment_ramp " << endl; + + temp = sigmaR * sigmaR; // sigmaR^2 + SS2out << "ERA N RMSE RMSE^2/sigmaR^2 mean_BiasAdj est_rho Durbin-Watson" << endl; + SS2out << "main " << n_rmse(1) << " " << rmse(1) << " " << square(rmse(1)) / temp << " " << rmse(2) << " " << cross / var << " " << Durbin; + if (wrote_bigreport == 0) // first time writing bigreport + { + if (rmse(1) < 0.5 * sigmaR && rmse(2) > (0.01 + 2.0 * square(rmse(1)) / temp)) + { + warnstream << "Main recdev biasadj is >2 times ratio of rmse to sigmaR"; + SS2out << " # " << warnstream.str() ; + write_message (WARN, 0); + } + } + SS2out << endl; + + SS2out << "early " << n_rmse(3) << " " << rmse(3) << " " << square(rmse(3)) / temp << " " << rmse(4); + if (wrote_bigreport == 0) // first time writing bigreport + { + if (rmse(3) < 0.5 * sigmaR && rmse(4) > (0.01 + 2.0 * square(rmse(3)) / temp)) + { + warnstream << "Early recdev biasadj is >2 times ratio of rmse to sigmaR"; + SS2out << " # " << warnstream.str(); + write_message (WARN, 0); + } + } + SS2out << endl; + + SS2out << "Yr SpawnBio exp_recr with_regime bias_adjusted pred_recr dev biasadjuster era mature_bio mature_num raw_dev" << endl; + SS2out << "S/Rcurve " << SSB_virgin << " " << Recr_virgin << endl; + y = styr - 2; + SS2out << "Virg " << SSB_yr(y) << " " << exp_rec(y) << " - " << 0.0 << " Virg " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " 0.0 " << endl; + y = styr - 1; + SS2out << "Init " << SSB_yr(y) << " " << exp_rec(y) << " - " << 0.0 << " Init " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << 0.0 << endl; + + if (recdev_first < styr) + { + for (y = recdev_first; y <= styr - 1; y++) + { + SS2out << y << " " << SSB_yr(styr - 1) << " " << exp_rec(styr - 1, 1) << " " << exp_rec(styr - 1, 2) << " " << exp_rec(styr - 1, 3) * mfexp(-biasadj(y) * half_sigmaRsq) << " " << exp_rec(styr - 1, 3) * mfexp(recdev(y) - biasadj(y) * half_sigmaRsq) << " " + << recdev(y) << " " << biasadj(y) << " Init_age " << SSB_B_yr(styr - 1) << " " << SSB_N_yr(styr - 1) << " " << recdev(y) << endl; // newdev approach uses devs for initial agecomp directly + } + } + for (y = styr; y <= YrMax; y++) + { + SS2out << y << " " << SSB_yr(y) << " " << exp_rec(y) << " "; + if (recdev_do_early > 0 && y >= recdev_early_start && y <= recdev_early_end) + { + SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y) << " Early " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << recdev(y); + } + else if (y >= recdev_start && y <= recdev_end) + { + SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y) << " Main " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << recdev(y); + } + else if (Do_Forecast > 0 && y > recdev_end) + { + SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y); + if (y <= endyr) + { + SS2out << " Late "; + } + else + { + SS2out << " Fore "; + } + SS2out << SSB_B_yr(y) << " " << SSB_N_yr(y) << " "; + if (do_recdev > 0) + { + SS2out << Fcast_recruitments(y); + } + else + { + SS2out << " 0.0"; + } + } + else + { + SS2out << " _ _ Fixed"; + } + SS2out << endl; + } + + SS2out << endl << "#Expanded_Spawn_Recr_report" << endl << pick_report_name(19) << endl; + SS2out << SR_fxn << " # SR_Function" << endl; + SS2out << N_SRparm2 << " # N_SRparms" << endl; + SS2out << "#" << endl << "#_SRparm parm_label value phase TV_year" << endl; + for (int j = 1; j <=N_SRparm2; j++) + { + SS2out << "# " << j << " " << ParmLabel(firstSRparm + j) << " " << SRparm(j) << " " << SRparm_PH(j); + if (SRparm_timevary(j) > 0 && j <= 4 ) // timevary SRparm exists + {SS2out << " " << timevary_SRparm_first_yr;} else {SS2out << " -";} + SS2out << endl; + } + SS2out << "#" << endl; + if (SRparm_timevary(N_SRparm2 - 1) > 0) // timevary regime exists + {SS2out << " #_Regime_used_to_offset_from_SRR";} + SS2out << timevary_bio_4SRR << " # timevary_bio_4SRR #_Compatibility_flag_for_legacy_(0)_vs_improved_(1)_impact_of_timevary_biology_on_benchmark_SRR_calcs" << endl; + if( timevary_MG_firstyr == YrMax) + { SS2out << " #_No_timevary_MGparm" << endl; } + else + { SS2out << timevary_MG_firstyr << " #_first year_timevary_MGparm_(or_any_year_EWAA) " << endl; } + + SS2out << "#" << endl << "Quantities for MSY and other benchmark calculations " << endl + << "Benchmark_index: 1 2 3 4 5 6 7 8 9 10" << endl + << "Benchmark_label: beg_bio end_bio beg_selex end_selex beg_relF end_relF beg_recr_dist end_recr_dist beg_SRparm end_SRparm" << endl + << "Benchmark_years: " << Bmark_Yr << endl; + for ( int k = 1; k <=9; k+=2) + { if (Bmark_Yr(k+1) > Bmark_Yr(k)) + {SS2out << "#_NOTE:_using_range_of_years_can_reduce_standard_error_of_result;_do_this_only_when_timevarying_makes_necessary: " << k << " " << Bmark_Yr(k) << " " << Bmark_Yr(k+1) << endl;} + } + SS2out << "SSBpR0_virgin: " << SSBpR_virgin << " #_uses_biology_from_start_year: " << styr < (0.01 + 2.0 * square(rmse(1)) / temp)) + { + warnstream << "Main recdev biasadj is >2 times ratio of rmse to sigmaR"; + SS2out << " # " << warnstream.str() ; + write_message (WARN, 0); + } + } + SS2out << endl; + + SS2out << "early " << n_rmse(3) << " " << rmse(3) << " " << square(rmse(3)) / temp << " " << rmse(4); + if (wrote_bigreport == 0) // first time writing bigreport + { + if (rmse(3) < 0.5 * sigmaR && rmse(4) > (0.01 + 2.0 * square(rmse(3)) / temp)) + { + warnstream << "Early recdev biasadj is >2 times ratio of rmse to sigmaR"; + SS2out << " # " << warnstream.str(); + write_message (WARN, 0); + } + } + SS2out << endl << "#" << endl << init_equ_steepness << " # Initial_equilibrium:_0/1_to_use_spawner-recruitment_in_initial_equ_recruitment_calculation" << endl << "#" << endl; + SS2out << "Yr SpawnBio exp_recr with_regime bias_adjusted pred_recr dev biasadjuster era mature_bio mature_num raw_dev SSBpR(yr) " << endl; + + y = styr - 2; + SS2out << "Virg " << SSB_yr(y) << " " << exp_rec(y) << " _ " << 0.0 << " Virg " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " _ " << SSBpR_virgin << endl; + y = styr - 1; + SS2out << "Init " << SSB_yr(y) << " " << exp_rec(y) << " _ " << 0.0 << " Init " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " _ " << SSBpR_virgin << endl; + + if (recdev_first < styr) + { + for (y = recdev_first; y <= styr - 1; y++) + { + SS2out << y << " " << SSB_yr(styr - 1) << " " << exp_rec(styr - 1, 1) << " " << exp_rec(styr - 1, 2) << " " << exp_rec(styr - 1, 3) * mfexp(-biasadj(y) * half_sigmaRsq) << " " << exp_rec(styr - 1, 3) * mfexp(recdev(y) - biasadj(y) * half_sigmaRsq) << " " + << recdev(y) << " " << biasadj(y) << " Init_age " << SSB_B_yr(styr - 1) << " " << SSB_N_yr(styr - 1) << " " << recdev(y) << endl; // newdev approach uses devs for initial agecomp directly + } + } + for (y = styr; y <= YrMax; y++) + { + SS2out << y << " " << SSB_yr(y) << " " << exp_rec(y) << " "; + if (recdev_do_early > 0 && y >= recdev_early_start && y <= recdev_early_end) + { + SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y) << " Early " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << recdev(y); + } + else if (y >= recdev_start && y <= recdev_end) + { + SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y) << " Main " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << recdev(y); + } + else if (Do_Forecast > 0 && y > recdev_end) + { + SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y); + if (y <= endyr) + { + SS2out << " Late "; + } + else + { + SS2out << " Fore "; + } + SS2out << SSB_B_yr(y) << " " << SSB_N_yr(y) << " "; + if (do_recdev > 0) + { + SS2out << Fcast_recruitments(y); + } + else + { + SS2out << " 0.0"; + } + } + else + { + SS2out << " _ _ Fixed " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " _ "; + } + SS2out << " " << Smry_Table(y, 11) / Recr_virgin << endl; + } + + // REPORT_KEYWORD SPAWN_RECR_CURVE + if (pick_report_use(20) == "Y") + { + { + SRparm_work = SRparm_byyr(styr); + y = styr; + SS2out << endl + << pick_report_name(20) << endl + << "# using_virgin_SR_parameters: " << SRparm_work << endl; + SS2out << "SSB/SSB_virgin SSB Recruitment" << endl; + for (f = 1; f <= 120; f++) + { + SSB_current = double(f) / 100. * SSB_virgin; + temp = Spawn_Recr(SRparm_work, SSB_virgin, Recr_virgin, SSB_current); + SS2out << SSB_current / SSB_virgin << " " << SSB_current << " " << temp << endl; + } + SS2out << endl + << "SPAWN_RECR_CURVE report:20 Benchmark" << endl // revise this name per r4ss needs + << "# using_benchmark_SR_parameters: " << SRparm_bench << endl; + SS2out << "SSB/SSB_benchmark SSB Recruitment" << endl; + for (f = 1; f <= 120; f++) + { + SSB_current = double(f) / 100. * SSB0_4_SRR; + temp = Spawn_Recr(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSB_current); + SS2out << SSB_current / SSB0_4_SRR << " " << SSB_current << " " << temp << endl; + } + + } + } + + // REPORT_KEYWORD 22 INDEX_2 Survey Observations by Year + if (pick_report_use(22) == "Y" && Svy_N > 0) + { + SS2out << endl + << pick_report_name(22) << endl; + SS2out << "NOTE: Calc_Q is Q_base with devs, so does not include power; eff_Q includes effect of Power" << endl; + // where show_time(t) contains: yr, seas + // data_time(ALK,f) has real month; 2nd is timing within season; 3rd is year.fraction + // show_time2(ALK) has yr, seas, subseas + rmse = 0.0; + n_rmse = 0.0; + mean_CV = 0.0; + mean_CV2 = 0.0; + mean_CV3 = 0.0; + SS2out << "Fleet Fleet_name Area Yr Seas Subseas Month Time Vuln_bio Obs Exp Calc_Q Eff_Q SE SE_input Dev Like Like+log(s) SuprPer Use" << endl; + for (f = 1; f <= Nfleet; f++) + { + in_superperiod = 0; + for (i = 1; i <= Svy_N_fleet(f); i++) + { + t = Svy_time_t(f, i); + ALK_time = Svy_ALK_time(f, i); + SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " << Svy_selec_abund(f, i) << " " << Svy_obs(f, i) << " "; + if (Svy_errtype(f) >= 0) // lognormal or T-dist + { + temp = mfexp(Svy_est(f, i)); + SS2out << temp << " " << Svy_q(f, i) << " " << temp / Svy_selec_abund(f, i) << " " << Svy_se_use(f, i) << " " << Svy_se(f, i); + if (Svy_use(f, i) > 0) + { + SS2out << " " << Svy_obs_log(f, i) - Svy_est(f, i) << " "; + SS2out << Svy_like_I(f, i) - log(Svy_se_use(f, i)) << " " << Svy_like_I(f,i) << " "; + rmse(f) += value(square(Svy_obs_log(f, i) - Svy_est(f, i))); + n_rmse(f) += 1.; + mean_CV(f) += Svy_se_rd(f, i); + mean_CV3(f) += Svy_se(f, i); + mean_CV2(f) += value(Svy_se_use(f, i)); + } + else + { + SS2out << " _ _ _ "; + } + } + else // normal + { + SS2out << Svy_est(f, i) << " " << Svy_q(f, i) << " " << "NA" << " " << Svy_se_use(f, i) << " " << Svy_se(f, i); + if (Svy_use(f, i) > 0) + { + SS2out << " " << Svy_obs(f, i) - Svy_est(f, i) << " "; + SS2out << Svy_like_I(f, i) - log(Svy_se_use(f, i)) << " " << Svy_like_I(f,i) << " "; + rmse(f) += value(square(Svy_obs(f, i) - Svy_est(f, i))); + n_rmse(f) += 1.; + mean_CV(f) += Svy_se_rd(f, i); + mean_CV3(f) += Svy_se(f, i); + mean_CV2(f) += value(Svy_se_use(f, i)); + } + else + { + SS2out << " _ _ _ "; + } + } + if (Svy_super(f, i) < 0 && in_superperiod == 0) + { + in_superperiod = 1; + SS2out << " beg_SuprPer "; + } + else if (Svy_super(f, i) < 0 && in_superperiod == 1) + { + in_superperiod = 0; + SS2out << " end_SuprPer "; + } + else if (in_superperiod == 1) + { + SS2out << " in_SuprPer "; + } + else + { + SS2out << " _ "; + } + SS2out << Svy_use(f, i); + SS2out << endl; + } + if (n_rmse(f) > 0) + { + rmse(f) = sqrt((rmse(f) + 1.0e-9) / n_rmse(f)); + mean_CV(f) /= n_rmse(f); + mean_CV3(f) /= n_rmse(f); + mean_CV2(f) /= n_rmse(f); + } + } + } + + // REPORT_KEYWORD 21 INDEX_1 Survey Fit Summary + SS2out << endl + << pick_report_name(21) << endl; + SS2out << "Fleet Link Link+ ExtraStd BiasAdj Float Qbase Num=0/Bio=1 Err_type" + << " N Npos RMSE logL mean_input_SE Input+VarAdj Input+VarAdj+extra VarAdj New_VarAdj penalty_mean_Qdev rmse_Qdev Offset Power fleetname" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (Svy_N_fleet(f) > 0) + { + SS2out << f << " " << Q_setup(f) + << " " << Svy_q(f, 1) << " " << Svy_units(f) << " " << Svy_errtype(f) + << " " << Svy_N_fleet(f) << " " << n_rmse(f) << " " << rmse(f)<< " " << surv_like(f) + << " " << mean_CV(f) << " " << mean_CV3(f) << " " << mean_CV2(f) << " " << var_adjust(1, f) + << " " << var_adjust(1, f) + rmse(f) - mean_CV(f) + << " " << Q_dev_like(f, 1) << " " << Q_dev_like(f, 2) << " "; + if (Q_setup(f, 1) >= 5) + {SS2out << " " << Q_parm(Q_setup_parms(f, 1) + 1);} // offset + else + {SS2out << " NA ";} + if (Q_setup(f,1) == 3) + {SS2out << " " << Q_parm(Q_setup_parms(f, 1) + 1) << " ";} // power + else + if (Q_setup(f,1) == 6) + {SS2out << " " << Q_parm(Q_setup_parms(f, 1) + 2) << " ";} // power + else + {SS2out << " NA ";} + SS2out << fleetname(f) << endl; + } + } + if (depletion_fleet > 0) // special code for depletion, so prepare to adjust phases and lambdas + { + f = depletion_fleet; + SS2out << "#_survey: " << f << " " << fleetname(f) << " is a depletion fleet" << endl; + if (depletion_type == 0) + SS2out << "#_Q_setup(f,2)=0; add 1 to phases of all parms; only R0 active in new phase 1" << endl; + if (depletion_type == 1) + SS2out << "#_Q_setup(f,2)=1 only R0 active in phase 1; then exit; useful for data-limited draws of other fixed parameter" << endl; + if (depletion_type == 2) + SS2out << "#_Q_setup(f,2)=2 no phase adjustments, can be used when profiling on fixed R0" << endl; + } + + SS2out << "RMSE_Qdev_not_in_logL" << endl + << "penalty_mean_Qdev_not_in_logL_in_randwalk_approach" << endl; + + // REPORT_KEYWORD 23 INDEX_3 Survey_Q_setup + SS2out << endl + << pick_report_name(23) << endl; + SS2out << "#" << endl + << "Fleet Q_parm_assignments" << endl; + for (f = 1; f <= Nfleet; f++) + { + SS2out << f << " " << Q_setup_parms(f, 1) << " _ " << Q_setup_parms(f, 2) << " _ " << Q_setup_parms(f)(3, 4) << " " << fleetname(f) << endl; + } + } + + // REPORT_KEYWORD 24 DISCARD_SPECIFICATION + if (pick_report_use(24) == "Y" && nobs_disc > 0) + { + SS2out << endl + << pick_report_name(24) << endl; + SS2out << "Discard_units_options" << endl; + SS2out << "1: discard_in_biomass(mt)_or_numbers(1000s)_to_match_catchunits_of_fleet" << endl; + SS2out << "2: discard_as_fraction_of_total_catch(based_on_bio_or_num_depending_on_fleet_catchunits)" << endl; + SS2out << "3: discard_as_numbers(1000s)_regardless_of_fleet_catchunits" << endl; + SS2out << "Discard_errtype_options" << endl; + SS2out << ">1: log(L)_based_on_T-distribution_with_specified_DF" << endl; + SS2out << "0: log(L)_based_on_normal_with_Std_in_as_CV" << endl; + SS2out << "-1: log(L)_based_on_normal_with_Std_in_as_stddev" << endl; + SS2out << "-2: log(L)_based_on_lognormal_with_Std_in_as_stddev_in_logspace" << endl; + SS2out << "-3: log(L)_based_on_trunc_normal_with_Std_in_as_CV" << endl; + + SS2out << "#_Fleet units errtype" << endl; + if (Ndisc_fleets > 0) + { + for (int ff = 1; ff <= N_catchfleets(0); ff++) + { + f = fish_fleet_area(0, ff); + if (disc_units(f) > 0) + SS2out << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << endl; + } + } + for (int ff = 1; ff <= N_pred; ff++) + { + f = predator(ff); + SS2out << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << " is_M2_fleet" << endl; + } + + // REPORT_KEYWORD 25 DISCARD_OUTPUT Discard observations by year + SS2out << endl + << pick_report_name(25) << endl; + SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Obs Exp Std_in Std_use Dev Like Like+log(s) SuprPer Use Obs_cat Exp_cat catch_mult exp_cat*catch_mult F_rate" << endl; + data_type = 2; + if (nobs_disc > 0) + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2 || fleet_type(f) == 4) + { + for (i = 1; i <= disc_N_fleet(f); i++) + { + t = disc_time_t(f, i); + y = Show_Time(t, 1); + ALK_time = disc_time_ALK(f, i); + if (catchunits(f) == 1) + { + gg = 3; + } // biomass + else + { + gg = 6; + } // numbers + SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) + << " " << obs_disc(f, i) << " " << exp_disc(f, i) << " " + << " " << cv_disc(f, i) << " " << sd_disc(f, i); + + if (yr_disc_use(f, i) >= 0.0) + { + if (disc_errtype(f) >= 1) // T -distribution + { + temp = 0.5 * (disc_errtype(f) + 1.) * log((1. + square(obs_disc(f, i) - exp_disc(f, i)) / (disc_errtype(f) * square(sd_disc(f, i))))); + SS2out << " " << obs_disc(f, i) - exp_disc(f, i) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); + } + else if (disc_errtype(f) == 0) // normal error, with input CV + { + temp = 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)); + SS2out << " " << obs_disc(f, i) - exp_disc(f, i) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); + } + else if (disc_errtype(f) == -1) // normal error with input se + { + temp = 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)); + SS2out << " " << obs_disc(f, i) - exp_disc(f, i) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); + } + else if (disc_errtype(f) == -2) // lognormal where input cv_disc must contain se in log space + { + temp = 0.5 * square(log(obs_disc(f, i) / exp_disc(f, i)) / sd_disc(f, i)); + SS2out << " " << log(obs_disc(f, i) / exp_disc(f, i)) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); + } + else if (disc_errtype(f) == -3) // trunc normal error, with input CV + { + temp = 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)) - log(cumd_norm((1 - exp_disc(f, i)) / sd_disc(f, i)) - cumd_norm((0 - exp_disc(f, i)) / sd_disc(f, i))); + SS2out << " " << obs_disc(f, i) - exp_disc(f, i) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); + } + } + else + { + SS2out << " _ _ _ "; + } + if (yr_disc_super(f, i) < 0 && in_superperiod == 0) + { + in_superperiod = 1; + SS2out << " beg_SuprPer "; + } + else if (yr_disc_super(f, i) < 0 && in_superperiod == 1) + { + in_superperiod = 0; + SS2out << " end_SuprPer "; + } + else if (in_superperiod == 1) + { + SS2out << " in_SuprPer "; + } + else + { + SS2out << " _ "; + } + SS2out << yr_disc_use(f, i); + SS2out << " " << catch_ret_obs(f, t) << " " << catch_fleet(t, f, gg) << " " << catch_mult(y, f) << " " << catch_mult(y, f) * catch_fleet(t, f, gg) << " " << Hrate(f, t); + SS2out << endl; + } + } + } + + // REPORT_KEYWORD 26 MEAN_BODY_WT_OUTPUT + if (pick_report_use(26) == "Y" && nobs_mnwt > 0) + { + SS2out << endl + << pick_report_name(26) << endl; + SS2out << "log(L)_based_on_T_distribution_with_DF=_" << DF_bodywt << endl; + SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Part Type Obs Exp CV Dev NeglogL Neg(logL+log(s)) Use" << endl; + // 10 items are: 1yr, 2seas, 3fleet, 4part, 5type, 6obs, 7se, then three intermediate variance quantities + for (i = 1; i <= nobs_mnwt; i++) + { + t = mnwtdata(1, i); + f = abs(mnwtdata(3, i)); + ALK_time = mnwtdata(11, i); + SS2out << mnwtdata(3, i) << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " + << mnwtdata(4, i) << " " << mnwtdata(5, i) << " " << mnwtdata(6, i) << " " << exp_mnwt(i) << " " << mnwtdata(7, i); + if (mnwtdata(3, i) > 0.) + { + SS2out << " " << mnwtdata(6, i) - exp_mnwt(i) << " " << 0.5 * (DF_bodywt + 1.) * log(1. + square(mnwtdata(6, i) - exp_mnwt(i)) / mnwtdata(9, i)) << " " << 0.5 * (DF_bodywt + 1.) * log(1. + square(mnwtdata(6, i) - exp_mnwt(i)) / mnwtdata(9, i)) + mnwtdata(10, i) << " " << 1; + } + else + { + SS2out << " NA NA NA -1"; + } + SS2out << endl; + } + } + + dvar_vector more_comp_info(1, 20); + dvariable cumdist; + dvariable cumdist_save; + double Nsamp_DM; // equals Nsamp_adj when not using Dirichlet-Multinomial or Tweedie likelihood + double Nsamp_adj; // input sample size after input variance adjustment + double Nsamp_in; // input sample size + dvector minsamp(1, Nfleet); + dvector maxsamp(1, Nfleet); + + // REPORT_KEYWORD 27 FIT_LEN_COMPS + if (pick_report_use(27) == "Y" && Nobs_l_tot > 0) + { + SS2out << endl + << pick_report_name(27) << endl; + SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Sexes Part SuprPer Use Nsamp_in Nsamp_adj Nsamp_DM effN Like Method DM_parm MV_T_parm "; + SS2out << " All_obs_mean All_exp_mean All_delta All_exp_5% All_exp_95% All_DurWat"; + if (gender == 2) + SS2out << " F_obs_mean F_exp_mean F_delta F_exp_5% F_exp_95% F_DurWat M_obs_mean M_exp_mean M_delta M_exp_5% M_exp_95% M_DurWat %F_obs %F_exp "; + SS2out << endl; + rmse = 0.0; + n_rmse = 0.0; + mean_Nsamp_in = 0.0; + mean_Nsamp_adj = 0.0; + mean_Nsamp_DM = 0.0; + Hrmse = 0.0; + Rrmse = 0.0; + neff_l.initialize(); + in_superperiod = 0; + data_type = 4; + minsamp = 10000.; + maxsamp = 0.; + //mean_all_obs; 1 + //mean_all_exp; 2 + //mean_all_delta; 3 + //5%_all_exp; 4 + //95%_all_exp; 5 + //Durbin-Watson_all; 6 + //mean_F_obs; 7 + //mean_F_exp; 8 + //mean_F_delta; 9 + //5%_F_exp; 10 + //95%_F_exp; 11 + //Durbin-Watson_F; 12 + //mean_M_obs; 13 + //mean_M_exp; 14 + //mean_M_delta; 15 + //5%_M_exp; 16 + //95%_M_exp; 17 + //Durbin-Watson_M; 18 + //sexratio_obs; 19 + //sexratio_exp; 20 + + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= Nobs_l(f); i++) + { + t = Len_time_t(f, i); + ALK_time = Len_time_ALK(f, i); + more_comp_info.initialize(); + neff_l(f, i) = exp_l(f, i) * (1 - exp_l(f, i)) + 1.0e-06; // constant added for stability + neff_l(f, i) /= (obs_l(f, i) - exp_l(f, i)) * (obs_l(f, i) - exp_l(f, i)) + 1.0e-06; + // store sample sizes + Nsamp_in = nsamp_l_read(f, i); + Nsamp_adj = nsamp_l(f, i); + dvector tempvec_l(1, exp_l(f, i).size()); + tempvec_l = value(exp_l(f, i)); + more_comp_info = process_comps(gender, gen_l(f, i), len_bins_dat2, len_bins_dat_m2, tails_l(f, i), obs_l(f, i), tempvec_l); + Nsamp_DM = Nsamp_adj; // Will remain this if not used + int parti = mkt_l(f, i); + dirichlet_Parm = 0.0; // default gets reported if using multinomial + double Tweedie_Parm = 0.0; // default gets reported if not using MV Tweedie + if (Comp_Err_L(parti, f) == 1) // Dirichlet #1 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f),1))); // Thorson's theta from eq 10 + // effN_DM = 1/(1+theta) + n*theta/(1+theta) + Nsamp_DM = value(1. / (1. + dirichlet_Parm) + nsamp_l(f, i) * dirichlet_Parm / (1. + dirichlet_Parm)); + } + else if (Comp_Err_L(parti, f) == 2) // Dirichlet #2 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f),1))); // Thorson's beta from eq 12 + // effN_DM = (n+n*beta)/(n+beta) + Nsamp_DM = value((nsamp_l(f, i) + dirichlet_Parm * nsamp_l(f, i)) / (dirichlet_Parm + nsamp_l(f, i))); + } + else if (Comp_Err_L(parti, f) == 3) // MV Tweedie + { + // TBD + } + + if (header_l(f, i, 3) > 0) + { + n_rmse(f) += 1.; + rmse(f) += value(neff_l(f, i)); + mean_Nsamp_in(f) += Nsamp_in; + mean_Nsamp_adj(f) += Nsamp_adj; + mean_Nsamp_DM(f) += Nsamp_DM; + Hrmse(f) += value(1. / neff_l(f, i)); + Rrmse(f) += value(neff_l(f, i) / Nsamp_adj); + if (Nsamp_adj < minsamp(f)) + minsamp(f) = Nsamp_adj; + if (Nsamp_adj > maxsamp(f)) + maxsamp(f) = Nsamp_adj; + } + + // SS2out<<"Fleet Fleet_Name Area Yr Month Seas Subseas Time Sexes Part SuprPer Use Nsamp_adj Nsamp_in Nsamp_DM effN Like"; + // temp=abs(header_l_rd(f,i,2)); + // if(temp>999) temp-=1000; + SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " << gen_l(f, i) << " " << mkt_l(f, i); + if (header_l(f, i, 2) < 0 && in_superperiod == 0) + { + SS2out << " start "; + in_superperiod = 1; + } + else if (header_l(f, i, 2) < 0 && in_superperiod == 1) + { + SS2out << " end "; + in_superperiod = 0; + } + else if (in_superperiod == 1) + { + SS2out << " in "; + } + else + { + SS2out << " _ "; + } + if (header_l(f, i, 3) < 0) + { + SS2out << " skip "; + } + else + { + SS2out << " _ "; + } + SS2out << Nsamp_in << " " << Nsamp_adj << " " << Nsamp_DM << " " << neff_l(f, i) << " " << length_like(f, i) << " "; + SS2out << Comp_Err_L(parti, f) << " " << dirichlet_Parm << " " << Tweedie_Parm << " "; + SS2out << more_comp_info(1, 6); + if (gender == 2) + SS2out << " " << more_comp_info(7, 20); + SS2out << endl; + } // end loops over observation i and fleet f + + //Fleet N Npos mean_effN mean(inputN*Adj) HarMean(effN) Mean(effN/inputN) MeaneffN/MeaninputN Var_Adj + //long ago, Ian Stewart had the proto-r4ss add a column called "HarEffN/MeanInputN" which was the ratio of the columns "HarMean(effN)" column and the "mean(inputN*Adj)" and has been used as the multiplier on the adjustment factor in the status-quo NWFSC tuning approach. + //My suggestion would be to remove the columns "Mean(effN/inputN)" and "MeaneffN/MeaninputN" if those are not recommended values for tuning (I don't get the impression that they are) and have SS3 internally produce the "HarEffN/MeanInputN" column so that it's available to all users. + //It might also be good to add a keyword to the top of those lower tables which could simplify the logic of parsing them separately from the FIT_..._COMPS tables above them and therefore be more robust to changes in format. + + SS2out << "#" << endl + << "Length_Comp_Fit_Summary" << endl + << "Data_type Fleet Recommend_var_adj # N Npos min_Nsamp max_Nsamp mean_Nsamp_in mean_Nsamp_adj mean_Nsamp_DM err_method err_index par1 val1 par2 val2 mean_effN HarMean_effN Curr_Var_Adj Fleet_name" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (n_rmse(f) > 0) + { + // calculate summary statistics + rmse(f) /= n_rmse(f); + Hrmse(f) = n_rmse(f) / Hrmse(f); + Rrmse(f) /= n_rmse(f); + mean_Nsamp_in(f) /= n_rmse(f); + mean_Nsamp_adj(f) /= n_rmse(f); + mean_Nsamp_DM(f) /= n_rmse(f); + // write values to file + SS2out << "4 " << f << " "; + if (Comp_Err_L(0, f) == 0) + { // standard multinomial + SS2out << Hrmse(f) / mean_Nsamp_adj(f) * var_adjust(4, f); + } + else + { // Dirichlet-multinomial (Recommend_var_adj = 1) + SS2out << "1"; + } + SS2out << " # " << Nobs_l(f) << " " << n_rmse(f) << " " << minsamp(f) << " " << maxsamp(f) << " " << mean_Nsamp_in(f) << " " << mean_Nsamp_adj(f); + + switch (Comp_Err_L(0, f)) + { + case 0: + { // standard multinomial + // placeholders for mean_Nsamp_DM and DM_theta (not used) + SS2out << " NA 0 NA multinomial NA NA NA "; + break; + } + case 1: // Dirichlet-multinomial + { + } + case 2: // Dirichlet-multinomial + { + // mean_Nsamp_DM and DM_theta + SS2out << " " << mean_Nsamp_DM(f) << " " << Comp_Err_L(0, f) << " " << Comp_Err_L2(0, f) << " " << ParmLabel(Comp_Err_parmloc(Comp_Err_L2(0, f),2)) << " " << mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(0, f),1))) << " NA "<< " NA "; + break; + } + case 3: // MV Tweedie + { + SS2out << " NA 3 NA NA NA NA NA "; + break; + } + } + SS2out << rmse(f) << " " << Hrmse(f) << " " << var_adjust(4, f) << " " << fleetname(f) << endl; + } + } + } + + // REPORT_KEYWORD 28 FIT_AGE_COMPS + if (pick_report_use(28) == "Y" && Nobs_a_tot > 0) + { + SS2out << endl + << pick_report_name(28) << endl; + SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Sexes Part Ageerr Lbin_lo Lbin_hi SuprPer Use Nsamp_in Nsamp_adj Nsamp_DM effN Like "; + SS2out << " All_obs_mean All_exp_mean All_delta All_exp_5% All_exp_95% All_DurWat"; + if (gender == 2) + SS2out << " F_obs_mean F_exp_mean F_delta F_exp_5% F_exp_95% F_DurWat M_obs_mean M_exp_mean M_delta M_exp_5% M_exp_95% M_DurWat %F_obs %F_exp "; + SS2out << endl; + rmse = 0.0; + n_rmse = 0.0; + mean_Nsamp_in = 0.0; + mean_Nsamp_adj = 0.0; + mean_Nsamp_DM = 0.0; + Hrmse = 0.0; + Rrmse = 0.0; + minsamp = 10000.; + maxsamp = 0.; + for (f = 1; f <= Nfleet; f++) + for (i = 1; i <= Nobs_a(f); i++) + { + t = Age_time_t(f, i); + ALK_time = Age_time_ALK(f, i); + more_comp_info.initialize(); + neff_a(f, i) = exp_a(f, i) * (1 - exp_a(f, i)) + 1.0e-06; // constant added for stability + neff_a(f, i) /= (obs_a(f, i) - exp_a(f, i)) * (obs_a(f, i) - exp_a(f, i)) + 1.0e-06; + // store sample sizes + Nsamp_in = nsamp_a_read(f, i); + Nsamp_adj = nsamp_a(f, i); + dvector tempvec_a(1, exp_a(f, i).size()); + tempvec_a = value(exp_a(f, i)); + more_comp_info = process_comps(gender, gen_a(f, i), age_bins, age_bins_mean, tails_a(f, i), obs_a(f, i), tempvec_a); + + Nsamp_DM = Nsamp_adj; // Will stay at this val for multinomial + if (Comp_Err_A(f) == 1) // Dirichlet #1 + { + dirichlet_Parm =mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); // Thorson's theta from eq 10 + // effN_DM = 1/(1+theta) + n*theta/(1+theta) + Nsamp_DM = value(1. / (1. + dirichlet_Parm) + nsamp_a(f, i) * dirichlet_Parm / (1. + dirichlet_Parm)); + } + else if (Comp_Err_A(f) == 2) // Dirichlet #2 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); // Thorson's beta from eq 12 + // effN_DM = (n+n*beta)/(n+beta) + Nsamp_DM = value((nsamp_a(f, i) + dirichlet_Parm * nsamp_a(f, i)) / (dirichlet_Parm + nsamp_a(f, i))); + } + + if (header_a(f, i, 3) > 0) + { + n_rmse(f) += 1.; + rmse(f) += value(neff_a(f, i)); + mean_Nsamp_in(f) += Nsamp_in; + mean_Nsamp_adj(f) += Nsamp_adj; + mean_Nsamp_DM(f) += Nsamp_DM; + Hrmse(f) += value(1. / neff_a(f, i)); + Rrmse(f) += value(neff_a(f, i) / Nsamp_adj); + if (Nsamp_adj < minsamp(f)) + minsamp(f) = Nsamp_adj; + if (Nsamp_adj > maxsamp(f)) + maxsamp(f) = Nsamp_adj; + } + + // SS2out<<"Fleet Fleet_Name Area Yr Seas Subseas Month Time Sexes Part Ageerr Lbin_lo Lbin_hi Nsamp_in Nsamp_adj Nsamp_DM effN Like SuprPer Use"; + temp = abs(header_a_rd(f, i, 2)); + if (temp > 999) + temp -= 1000; + SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " << gen_a(f, i) << " " << mkt_a(f, i) << " " << ageerr_type_a(f, i) << " " << len_bins(Lbin_lo(f, i)) << " " << len_bins(Lbin_hi(f, i)) << " "; + if (header_a(f, i, 2) < 0 && in_superperiod == 0) + { + SS2out << " start "; + in_superperiod = 1; + } + else if (header_a(f, i, 2) < 0 && in_superperiod == 1) + { + SS2out << " end "; + in_superperiod = 0; + } + else if (in_superperiod == 1) + { + SS2out << " in "; + } + else + { + SS2out << " _ "; + } + if (header_a(f, i, 3) < 0 || nsamp_a(f, i) < 0) + { + SS2out << " skip "; + } + else + { + SS2out << " _ "; + } + SS2out << Nsamp_in << " " << Nsamp_adj << " " << Nsamp_DM << " " + << " " << neff_a(f, i) << " " << age_like(f, i) << " " << more_comp_info(1, 6); + if (gender == 2) + SS2out << " " << more_comp_info(7, 20); + SS2out << endl; + } + + SS2out << "#" << endl + << "Age_Comp_Fit_Summary" << endl + << "Data_type Fleet Recommend_var_adj # N Npos min_Nsamp max_Nsamp mean_Nsamp_in mean_Nsamp_adj mean_Nsamp_DM err_method err_index par1 val1 par2 val2 mean_effN HarMean_effN Curr_Var_Adj Fleet_name" << endl; + for (f = 1; f <= Nfleet; f++) + { + if (n_rmse(f) > 0) + { + // calculate summary statistics + rmse(f) /= n_rmse(f); + Hrmse(f) = n_rmse(f) / Hrmse(f); + Rrmse(f) /= n_rmse(f); + mean_Nsamp_in(f) /= n_rmse(f); + mean_Nsamp_adj(f) /= n_rmse(f); + mean_Nsamp_DM(f) /= n_rmse(f); + // write values to file + SS2out << "5 " << f << " "; + if (Comp_Err_A(f) == 0) + { // standard multinomial + SS2out << Hrmse(f) / mean_Nsamp_adj(f) * var_adjust(5, f); + } + else + { // Dirichlet-multinomial (Recommend_var_adj = 1) + SS2out << "1"; + } + SS2out << " # " << Nobs_a(f) << " " << n_rmse(f) << " " << minsamp(f) << " " << maxsamp(f) << " " << mean_Nsamp_in(f) << " " << mean_Nsamp_adj(f); + switch (Comp_Err_A(f)) + { + case 0: + { // standard multinomial + // placeholders for mean_Nsamp_DM and DM_theta (not used) + SS2out << " NA 0 NA multinomial NA NA NA "; + break; + } + case 1: // Dirichlet-multinomial + { + } + case 2: // Dirichlet-multinomial + { + // mean_Nsamp_DM and DM_theta + SS2out << " " << mean_Nsamp_DM(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << ParmLabel(Comp_Err_parmloc(Comp_Err_A2(f),2)) << " " << mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))) << " NA "<< " NA "; + break; + } + case 3: // MV Tweedie + { + SS2out << " NA 3 NA NA NA NA NA "; + break; + } + } + SS2out << rmse(f) << " " << Hrmse(f) << " " << var_adjust(5, f) << " " << fleetname(f) << endl; + } + } + } + + // REPORT_KEYWORD 29 FIT_SIZE_COMPS + if (pick_report_use(29) == "Y" && SzFreq_Nmeth > 0) + { + SS2out << endl + << pick_report_name(29) << endl; + + SzFreq_effN.initialize(); + for (int sz_method = 1; sz_method <= SzFreq_Nmeth; sz_method++) + { + SS2out << "#Method: " << sz_method; + SS2out << " #Units: " << SzFreq_units_label(SzFreq_units(sz_method)); + SS2out << " #Scale: " << SzFreq_scale_label(SzFreq_scale(sz_method)); + SS2out << " #Add_to_comp: " << SzFreq_mincomp(sz_method) << " #N_bins: " << SzFreq_Nbins(sz_method) << endl; + SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Sexes Part SuprPer Use Nsamp_in Nsamp_adj Nsamp_DM effN Like"; + SS2out << " All_obs_mean All_exp_mean All_delta All_exp_5% All_exp_95% All_DurWat"; + if (gender == 2) + SS2out << " F_obs_mean F_exp_mean F_delta F_exp_5% F_exp_95% F_DurWat M_obs_mean M_exp_mean M_delta M_exp_5% M_exp_95% M_DurWat %F_obs %F_exp "; + SS2out << endl; + rmse = 0.0; + n_rmse = 0.0; + mean_Nsamp_in = 0.0; + mean_Nsamp_adj = 0.0; + mean_Nsamp_DM = 0.0; + Hrmse = 0.0; + Rrmse = 0.0; + + dvector sz_tails(1, 4); + sz_tails(1) = 1; + sz_tails(2) = SzFreq_Nbins(sz_method); + sz_tails(3) = SzFreq_Nbins(sz_method) + 1; + sz_tails(4) = 2 * SzFreq_Nbins(sz_method); + for (f = 1; f <= Nfleet; f++) + { + in_superperiod = 0; + for (iobs = 1; iobs <= SzFreq_totobs; iobs++) + { + more_comp_info.initialize(); + k = SzFreq_obs_hdr(iobs, 6); + if (k == sz_method && abs(SzFreq_obs_hdr(iobs, 3)) == f) + { + if (SzFreq_obs_hdr(iobs, 1) >= styr) // year is positive, so use this obs + { + y = SzFreq_obs_hdr(iobs, 1); + t = SzFreq_time_t(iobs); + ALK_time = SzFreq_time_ALK(iobs); + gg = SzFreq_obs_hdr(iobs, 4); // gender + if (gender == 2 && (gg == 3 || gg == 2)) + { + sz_tails(3) = SzFreq_Nbins(sz_method) + 1; + sz_tails(4) = 2 * SzFreq_Nbins(sz_method); + } + else + { + sz_tails(3) = 1; + sz_tails(4) = SzFreq_Nbins(sz_method); + } + p = SzFreq_obs_hdr(iobs, 5); // partition + z1 = SzFreq_obs_hdr(iobs, 7); + z2 = SzFreq_obs_hdr(iobs, 8); + temp = 0.0; + temp1 = 0.0; + for (z = z1; z <= z2; z++) + { + SzFreq_effN(iobs) += value(SzFreq_exp(iobs, z) * (1.0 - SzFreq_exp(iobs, z))); + temp += square(SzFreq_obs(iobs, z) - SzFreq_exp(iobs, z)); + temp1 += SzFreq_obs(iobs, z) * log(SzFreq_obs(iobs, z)) - SzFreq_obs(iobs, z) * log(SzFreq_exp(iobs, z)); + } + SzFreq_effN(iobs) = (SzFreq_effN(iobs) + 1.0e-06) / value((temp + 1.0e-06)); + temp1 *= SzFreq_sampleN(iobs); + dvector tempvec_l(1, SzFreq_exp(iobs).size()); + tempvec_l = value(SzFreq_exp(iobs)); + more_comp_info = process_comps(gender, gg, SzFreq_bins(sz_method), SzFreq_means(sz_method), sz_tails, SzFreq_obs(iobs), tempvec_l); + Nsamp_DM = SzFreq_sampleN(iobs); // Will remain this if not used; there is no "adjusted" sample size for sizwfreq + if (Comp_Err_Sz(sz_method) == 1) // Dirichlet #1 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(sz_method),1))); // Thorson's theta from eq 10 + // effN_DM = 1/(1+theta) + n*theta/(1+theta) + Nsamp_DM = value(1. / (1. + dirichlet_Parm) + SzFreq_sampleN(iobs) * dirichlet_Parm / (1. + dirichlet_Parm)); + } + else if (Comp_Err_Sz(sz_method) == 2) // Dirichlet #2 + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(sz_method),1))); // Thorson's beta from eq 12 + // effN_DM = (n+n*beta)/(n+beta) + Nsamp_DM = value((SzFreq_sampleN(iobs) + dirichlet_Parm * SzFreq_sampleN(iobs)) / (dirichlet_Parm + SzFreq_sampleN(iobs))); + } + if (SzFreq_obs_hdr(iobs, 3) > 0) // dheck for -fleet that is an ignored obs + { + n_rmse(f) += 1.; + rmse(f) += SzFreq_effN(iobs); + mean_Nsamp_in(f) += SzFreq_sampleN(iobs); + mean_Nsamp_adj(f) += SzFreq_sampleN(iobs); + if (SzFreq_sampleN(iobs) < minsamp(f)) + minsamp(f) = SzFreq_sampleN(iobs); + if (SzFreq_sampleN(iobs) > maxsamp(f)) + maxsamp(f) = SzFreq_sampleN(iobs); + Hrmse(f) += 1. / SzFreq_effN(iobs); + Rrmse(f) += SzFreq_effN(iobs) / SzFreq_sampleN(iobs); + mean_Nsamp_DM(f) += Nsamp_DM; + } + else + { + SzFreq_effN(iobs) = 0.; + } + temp = SzFreq_obs1(iobs, 3); // use original input value because + if (temp > 999) + temp -= 1000.; + SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " << gg << " " << p; + if (SzFreq_obs_hdr(iobs, 2) < 0 && in_superperiod == 0) + { + SS2out << " start "; + in_superperiod = 1; + } + else if (SzFreq_obs_hdr(iobs, 2) < 0 && in_superperiod == 1) + { + SS2out << " end "; + in_superperiod = 0; + } + else if (in_superperiod == 1) + { + SS2out << " in "; + } + else + { + SS2out << " _ "; + } + if (SzFreq_obs_hdr(iobs, 3) < 0) + { + SS2out << " skip "; + } + else + { + SS2out << " _ "; + } + SS2out << " " << SzFreq_sampleN(iobs) << " " << SzFreq_sampleN(iobs) << " " << Nsamp_DM << " " << SzFreq_effN(iobs) << " " << SzFreq_eachlike(iobs) << " " << more_comp_info(1, 6); + if (gender == 2) + SS2out << " " << more_comp_info(7, 20); + SS2out << endl; + } // end finding observation that is being used + } // end observation matching selected method + } // end loop of observations + } // end fleet loop + // SS2out<<"Fleet N Npos mean_effN mean(inputN*Adj) HarMean(effN) Mean(effN/inputN) MeaneffN/MeaninputN Var_Adj"< 0) + { + // calculate summary statistics + rmse(f) /= n_rmse(f); + Hrmse(f) = n_rmse(f) / Hrmse(f); + Rrmse(f) /= n_rmse(f); + mean_Nsamp_in(f) /= n_rmse(f); + mean_Nsamp_adj(f) /= n_rmse(f); + mean_Nsamp_DM(f) /= n_rmse(f); + // write values to file + SS2out << "6 " << f << " "; + if (Comp_Err_Sz(sz_method) == 0) + { // standard multinomial + SS2out << Hrmse(f) / mean_Nsamp_adj(f) * var_adjust(6, f); + } + else + { // Dirichlet-multinomial (Recommend_var_adj = 1) + SS2out << "1"; + } + SS2out << " # " << n_rmse(f) << " " << n_rmse(f) << " " << minsamp(f) << " " << maxsamp(f) << " " << mean_Nsamp_in(f) << " " << mean_Nsamp_adj(f); + + switch (Comp_Err_Sz(sz_method)) + { + case 0: + { // standard multinomial + // placeholders for mean_Nsamp_DM and DM_theta (not used) + SS2out << " NA 0 NA multinomial NA NA NA "; + break; + } + case 1: // Dirichlet-multinomial + { + } + case 2: // Dirichlet-multinomial + { + // mean_Nsamp_DM and DM_theta + SS2out << " " << mean_Nsamp_DM(f) << " " << Comp_Err_Sz(sz_method) << " " << Comp_Err_Sz2(sz_method) << " " << ParmLabel(Comp_Err_parmloc(Comp_Err_Sz2(sz_method),2)) << " " << mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(sz_method),1))) << " NA "<< " NA "; + break; + } + case 3: // MV Tweedie + { + SS2out << " NA 3 NA NA NA NA NA "; + break; + } + } + SS2out << rmse(f) << " " << Hrmse(f) << " " << var_adjust(4, f) << " " << fleetname(f) << endl; + } + } + } // end loop of methods + } // end have sizecomp + + // REPORT_KEYWORD 30 OVERALL_COMPS average composition for all observations + if (pick_report_use(30) == "Y") + { + SS2out << endl + << pick_report_name(30) << endl; + SS2out << "area seas Fleet N_obs len_bins " << len_bins_dat << endl; + + for (f = 1; f <= Nfleet; f++) + { + for (k = 1; k <= 4; k++) + { + dvector templen(1, nlen_bin); + templen.initialize(); + for (s = 1; s <= nseas; s++) + { + templen += obs_l_all(k, s, f); + } + obs_l_all(k, 0, f) = templen / (float(nseas)); + } + } + int kseas = 1; + if (nseas > 1) + kseas = 0; + for (f = 1; f <= Nfleet; f++) + for (s = kseas; s <= nseas; s++) + { + if (Nobs_l(f) > 0) + { + SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_l(f) << " freq " << obs_l_all(1, s, f) << endl; + SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_l(f) << " cum " << obs_l_all(2, s, f) << endl; + if (gender == 2) + { + SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_l(f) << " female " << obs_l_all(2, s, f) << endl; + SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_l(f) << " male " << obs_l_all(2, s, f) << endl; + } + } + } + + SS2out << "area seas Fleet N_obs age_bins "; + if (n_abins > 1) + { + SS2out << age_bins(1, n_abins) << endl; + for (f = 1; f <= Nfleet; f++) + for (s = kseas; s <= nseas; s++) + { + if (Nobs_a(f) > 0) + { + SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_a(f) << " freq " << obs_a_all(1, s, f) << endl; + SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_a(f) << " cum " << obs_a_all(2, s, f) << endl; + if (gender == 2) + { + SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_a(f) << " female " << obs_a_all(2, s, f) << endl; + SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_a(f) << " male " << obs_a_all(2, s, f) << endl; + } + } + } + } + else + { + SS2out << "No_age_bins_defined" << endl; + } + } + + // REPORT_KEYWORD 31 LEN_SELEX + if (pick_report_use(31) == "Y") + { + SS2out << endl + << pick_report_name(31) << endl; + SS2out << "Lsel_is_length_selectivity" << endl; // SS_Label_370 + SS2out << "RET_is_retention" << endl; // SS_Label_390 + SS2out << "MORT_is_discard_mortality" << endl; // SS_Label_390 + SS2out << "KEEP_is_sel*retain" << endl; // SS_Label_370 + SS2out << "DEAD_is_sel*(retain+(1-retain)*discmort)"; // SS_Label_370 + SS2out << "; Year_styr-3_(" << styr - 3 << ")_stores_average_used_for_benchmark" << endl; + SS2out << "Factor Fleet Yr Sex Label " << len_bins_m << endl; + for (f = 1; f <= Nfleet; f++) + { + k = styr - 3; + j = YrMax; + for (y = k; y <= j; y++) + for (gg = 1; gg <= gender; gg++) + if (y == styr - 3 || y == endyr || y == YrMax || (y >= styr && (timevary_sel(y, f) > 0 || timevary_sel(y + 1, f) > 0))) + { + SS2out << "Lsel " << f << " " << y << " " << gg << " " << y << "_" << f << "_Lsel"; + for (z = 1; z <= nlength; z++) + { + SS2out << " " << sel_l(y, f, gg, z); + } + SS2out << endl; + } + } + + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + for (y = styr - 3; y <= YrMax; y++) + for (gg = 1; gg <= gender; gg++) + if (y == styr - 3 || y == endyr || y == YrMax || (y >= styr && (timevary_sel(y, f) > 0 || timevary_sel(y + 1, f) > 0))) + { + // if(y>=styr && y<=endyr) + // { + SS2out << "Ret " << f << " " << y << " " << gg << " " << y << "_" << f << "_Ret"; + if (gg == 1) + { + for (z = 1; z <= nlength; z++) + { + SS2out << " " << retain(y, f, z); + } + } + else + { + for (z = nlength1; z <= nlength2; z++) + { + SS2out << " " << retain(y, f, z); + } + } + SS2out << endl; + SS2out << "Mort " << f << " " << y << " " << gg << " " << y << "_" << f << "_Mort"; + if (gg == 1) + { + for (z = 1; z <= nlength; z++) + { + SS2out << " " << discmort(y, f, z); + } + } + else + { + for (z = nlength1; z <= nlength2; z++) + { + SS2out << " " << discmort(y, f, z); + } + } + SS2out << endl; + // } + SS2out << "Keep " << f << " " << y << " " << gg << " " << y << "_" << f << "_Keep"; + for (z = 1; z <= nlength; z++) + { + SS2out << " " << sel_l_r(y, f, gg, z); + } + SS2out << endl; + SS2out << "Dead " << f << " " << y << " " << gg << " " << y << "_" << f << "_Dead"; + for (z = 1; z <= nlength; z++) + { + SS2out << " " << discmort2(y, f, gg, z); + } + SS2out << endl; + } + } + + // REPORT_KEYWORD 32 AGE_SELEX + if (pick_report_use(32) == "Y") + { + dmatrix selmax(1,Nfleet,1,3); // max selectivity for each fleet and year, season + SS2out << endl + << pick_report_name(32) << endl; + SS2out << "Asel_is_age_selectivity_alone" << endl; + SS2out << "Asel2_is_Asel*(selL*size_at_age(ALK)); Q and F parameters may appear higher than expected because Asel2 may have max < 1.0; " << endl; + SS2out << "Aret_is_age_retention" << endl; + SS2out << "COMBINED_ALK*selL*selA*wtlen*ret*discmort_in_makefishsel_yr: " << makefishsel_yr << " With_MeanSel_From: " << Fcast_Sel_yr1 << " - " << Fcast_Sel_yr2; // SS_Label_380 + SS2out << "; Year_styr-3_(" << styr - 3 << ")_stores_average_used_for_benchmark" << endl; + + SS2out << "Factor Fleet Yr Seas Sex Morph Label "; + for (a = 0; a <= nages; a++) + { + SS2out << " " << a; + } + SS2out << endl; + for (f = 1; f <= Nfleet; f++) + { + k = styr - 3; + j = YrMax; + for (y = k; y <= j; y++) + for (gg = 1; gg <= gender; gg++) + if (y == styr - 3 || y == endyr || y == YrMax || (y >= styr && (timevary_sel(y, f + Nfleet) > 0 || timevary_sel(y + 1, f + Nfleet) > 0))) + { + SS2out << "Asel " << f << " " << y << " 1 " << gg << " 1 " << y << "_" << f << "Asel " << sel_a(y, f, gg) << endl; + } + } + for (f = 1; f <= Nfleet; f++) + { + if (seltype(f + Nfleet, 2) != 0) // using age retention + { + for (y = styr - 3; y <= YrMax; y++) + for (gg = 1; gg <= gender; gg++) + if (y == styr - 3 || y == endyr || y == YrMax || (y >= styr && (timevary_sel(y, f + Nfleet) > 0 || timevary_sel(y + 1, f + Nfleet) > 0))) + { + SS2out << "Aret " << f << " " << y << " 1 " << gg << " 1 " << y << "_" << f << "Aret " << retain_a(y, f, gg) << endl; + SS2out << "Amort " << f << " " << y << " 1 " << gg << " 1 " << y << "_" << f << "Amort " << discmort_a(y, f, gg) << endl; + } + } + } + + if (Do_Forecast > 0) + { + k = YrMax; + } + else + { + k = endyr; + } + + selmax = 100.0; // set to big number + + for (y = styr - 3; y <= k; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0 && (y == styr - 3 || y >= styr)) + { + if (s == spawn_seas && (sx(g) == 1 || Hermaphro_Option != 0)) + SS2out << "Fecund " + << " NA " + << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" + << "Fecund" << Wt_Age_t(t, -2, g) << endl; + for (f = 1; f <= Nfleet; f++) + { + SS2out << "Asel2 " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_Asel2" << save_sel_num(t, f, g) << endl; + temp = max(save_sel_num(t, f, g)); + if (temp < selmax(f, 3) && y >= styr) + {selmax(f, 3) = value(temp); + selmax(f, 1) = float(y); + selmax(f, 2) = float(s);} // save y.s + + if (fleet_type(f) <= 2) + SS2out << "F " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_F" << Hrate(f, t) * save_sel_num(t, f, g) << endl; + SS2out << "bodywt " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_bodywt" << Wt_Age_t(t, f, g) << endl; + } + } + } + y = makefishsel_yr; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + for (s = 1; s <= nseas; s++) + { + SS2out << "sel*wt " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_sel*wt" << sel_bio(s, f, g) << endl; + SS2out << "sel*ret*wt " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_sel*ret*wt" << sel_ret_bio(s, f, g) << endl; + SS2out << "sel_nums " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_sel_nums" << sel_num(s, f, g) << endl; + SS2out << "sel*ret_nums " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_sel*ret_nums" << sel_ret_num(s, f, g) << endl; + SS2out << "dead_nums " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_dead_nums" << sel_dead_num(s, f, g) << endl; + SS2out << "dead*wt " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_dead*wt" << sel_dead_bio(s, f, g) << endl; + } + SS2out << "#" << endl << "maximum_ASEL2" << endl << "Fleet fleet_name year seas max" << endl; + for (f = 1; f <=Nfleet; f++) + {SS2out << f << " " << fleetname(f) << selmax(f) << endl;} + } + + // REPORT_KEYWORD 33 ENVIRONMENTAL_DATA + if (pick_report_use(33) == "Y" && N_envvar > 0) + { + SS2out << endl + << pick_report_name(33) << endl; + SS2out << "#_Begins.in.startyr-1.which.for.model.generated.columns.shows.the.base.value.to.which.other.years.are.scaled" << endl; + SS2out << "#_Ninput.vectors " << N_envvar << endl; + SS2out << "#_statistics.for.each.inout.env.vector.where.mc.is.to.meancenter.and.Zscore.also.divides.by.stdev" << endl; + SS2out << "Index N minyr maxyr mean stdev mc Zscore" << endl; + for (k = 1; k <= N_envvar; k++) + { + SS2out << k << " " << env_data_N(k) << " " << env_data_minyr(k) << " " << env_data_maxyr(k) << " " << env_data_mean(k) << " " << env_data_stdev(k) << " " << env_data_do_mean(k) << " " << env_data_do_stdev(k) << endl; + } + + SS2out << endl + << "Yr rel_smrynum rel_smrybio exp(recdev) rel_SSB null "; + for (i = 1; i <= N_envvar; i++) + SS2out << " env:_" << i; + SS2out << endl; + for (y = styr - 1; y <= YrMax; y++) + { + SS2out << y << " " << env_data(y) << endl; + } + SS2out << endl; + } + + // REPORT_KEYWORD 34 TAG_Recapture + if (pick_report_use(34) == "Y" && Do_TG > 0) + { + SS2out << endl + << pick_report_name(34) << endl; + SS2out << TG_mixperiod << " First period to use recaptures in likelihood" << endl; + SS2out << TG_maxperiods << " Accumulation period" << endl; + + SS2out << " Tag_release_info" << endl; + SS2out << "TAG Area Yr Seas Time Sex Age Nrelease Init_Loss Chron_Loss" << endl; + ; + for (TG = 1; TG <= N_TG; TG++) + { + SS2out << TG << " " << TG_release(TG)(2, 8) << " " << TG_save(TG)(1, 2) << endl; + } + SS2out << "Tags_Alive "; + k = max(TG_endtime); + for (t = 0; t <= k; t++) + SS2out << t << " "; + SS2out << endl; + for (TG = 1; TG <= N_TG; TG++) + { + SS2out << TG << " " << TG_save(TG)(3, 3 + TG_endtime(TG)) << endl; + } + SS2out << "Total_recaptures "; + for (t = 0; t <= k; t++) + SS2out << t << " "; + SS2out << endl; + for (TG = 1; TG <= N_TG; TG++) + { + SS2out << TG << " "; + for (TG_t = 0; TG_t <= TG_endtime(TG); TG_t++) + SS2out << TG_recap_exp(TG, TG_t, 0) << " "; + SS2out << endl; + } + + SS2out << endl + << "Reporting_Rates_by_Fishery" << endl + << "Fleet Init_Reporting Report_Decay" << endl; + for (f = 1; f <= Nfleet; f++) + SS2out << f << " " << TG_report(f) << " " << TG_rep_decay(f) << endl; + SS2out << "See_composition_data_output_for_tag_recapture_details" << endl; + } + + // ************************ SS_Label_400 + // REPORT_KEYWORD 35 NUMBERS_AT_AGE + if (pick_report_use(35) == "Y") + { + SS2out << endl + << pick_report_name(35) << endl; + SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era" << age_vector << endl; + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (y = styr - 2; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + temp = double(y) + azero_seas(s); + SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " B"; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Save_PopAge(t, p, g) << endl; + temp = double(y) + azero_seas(s) + seasdur_half(s); + SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " M"; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Save_PopAge(t, p + pop, g) << endl; + } + } + } + + // REPORT_KEYWORD 36 BIOMASS_AT_AGE + if (pick_report_use(36) == "Y") + { + SS2out << endl + << pick_report_name(36) << endl; + SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era" << age_vector << endl; + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (y = styr - 2; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + temp = double(y) + azero_seas(s); + SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " B"; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Save_PopBio(t, p, g) << endl; + temp = double(y) + azero_seas(s) + seasdur_half(s); + SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " M"; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Save_PopBio(t, p + pop, g) << endl; + } + } + } + + // REPORT_KEYWORD 37 NUMBERS_AT_LENGTH + if (pick_report_use(37) == "Y") + { + SS2out << endl + << pick_report_name(37) << endl; + SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era " << len_bins << endl; + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (y = styr; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + temp = double(y) + azero_seas(s); + SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " B "; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Save_PopLen(t, p, g) << endl; + temp = double(y) + azero_seas(s) + seasdur_half(s); + SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " M "; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Save_PopLen(t, p + pop, g) << endl; + } + } + } + + // REPORT_KEYWORD 38 BIOMASS_AT_LENGTH + if (pick_report_use(38) == "Y") + { + SS2out << endl + << pick_report_name(38) << endl; + SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era " << len_bins << endl; + for (p = 1; p <= pop; p++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (y = styr; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + temp = double(y) + azero_seas(s); + SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " B "; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Save_PopWt(t, p, g) << endl; + temp = double(y) + azero_seas(s) + seasdur_half(s); + SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " M "; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Save_PopWt(t, p + pop, g) << endl; + } + } + } + + // REPORT_KEYWORD 39 F_AT_AGE + if (pick_report_use(39) == "Y") + { + SS2out << endl + << pick_report_name(39) << endl; + SS2out << "Area Fleet Sex Morph Yr Seas Era" << age_vector << endl; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + for (g = 1; g <= gmorph; g++) + { + if (use_morph(g) > 0) + { + for (y = styr - 1; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + SS2out << fleet_area(f) << " " << f << " " << sx(g) << " " << g << " " << y << " " << s; + if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << Hrate(f, t) * save_sel_num(t, f, g) << endl; + } + } + } + } + + // REPORT_KEYWORD 40 CATCH_AT_AGE + if (pick_report_use(40) == "Y") + { + SS2out << endl + << pick_report_name(40) << endl; + SS2out << "#_NOTE: catage is based on: sel_dead_num = sel * (retain + (1-retain)*discmort)" << endl; + SS2out << "Area Fleet Sex XX XX Type Morph Yr Seas XX Era" << age_vector << endl; + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2 || fleet_type(f) == 4) + for (g = 1; g <= gmorph; g++) + { + if (use_morph(g) > 0) + { + for (y = styr - 1; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX dead " << g << " " << y << " " << s; + if (y == styr - 1) + { + SS2out << " XX INIT "; + } + else if (y <= endyr) + { + SS2out << " XX TIME "; + } + else + { + SS2out << " XX FORE "; + } + SS2out << catage(t, f, g) << endl; + } + } + } + } + + // REPORT_KEYWORD 41 DISCARD_AT_AGE + if (pick_report_use(41) == "Y") + { + SS2out << endl + << pick_report_name(41) << endl; + SS2out << "Area Fleet Sex XX XX Type Morph Yr Seas XX Era" << age_vector << endl; + for (f = 1; f <= Nfleet; f++) + // if((fleet_type(f)<=2 && Do_Retain(f)>0) || fleet_type(f)==4) + if ((fleet_type(f) <= 2 && Do_Retain(f) > 0)) + for (g = 1; g <= gmorph; g++) + { + if (use_morph(g) > 0) + { + for (y = styr - 1; y <= YrMax; y++) + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX dead " << g << " " << y << " " << s; + if (y == styr - 1) + { + SS2out << " XX INIT "; + } + else if (y <= endyr) + { + SS2out << " XX TIME "; + } + else + { + SS2out << " XX FORE "; + } + SS2out << catage(t, f, g) << endl; + SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX sel " << g << " " << y << " " << s; + if (y == styr - 1) + { + SS2out << " XX INIT "; + } + else if (y <= endyr) + { + SS2out << " XX TIME "; + } + else + { + SS2out << " XX FORE "; + } + SS2out << disc_age(t, disc_fleet_list(f), g) << endl; + + SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX ret " << g << " " << y << " " << s; + if (y == styr - 1) + { + SS2out << " XX INIT "; + } + else if (y <= endyr) + { + SS2out << " XX TIME "; + } + else + { + SS2out << " XX FORE "; + } + SS2out << disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) << endl; + + SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX disc " << g << " " << y << " " << s; + if (y == styr - 1) + { + SS2out << " XX INIT "; + } + else if (y <= endyr) + { + SS2out << " XX TIME "; + } + else + { + SS2out << " XX FORE "; + } + SS2out << disc_age(t, disc_fleet_list(f), g) - disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) << endl; + } + } + } + } + + // REPORT_KEYWORD 42 BIOLOGY + if (pick_report_use(42) == "Y") + { + SS2out << endl + << pick_report_name(42) << endl; + SS2out << sum(use_morph) << " " << nlength << " " << nages << " " << nseas << " N_Used_morphs;_lengths;_ages;_season;_by_season_in_endyr" << endl; + if (gender == 2) + { + SS2out << "GP Bin Len_lo Len_mean Wt_F Mat Mat*Fec Wt_M Fec"; + } + else + { + SS2out << "GP Bin Len_lo Len_mean Wt_F Mat Mat*Fec Fec"; + } + if(Maturity_Option == 4 || Maturity_Option == 5) { + SS2out << " // [Mat, Mat*Fec, and Fec reported as 0.5 because maturity option directly reads age_fecundity]"; + } + SS2out << endl; + for (gp = 1; gp <= N_GP; gp++) + for (z = 1; z <= nlength; z++) + { + SS2out << gp << " " << z << " " << len_bins(z) << " " << len_bins_m(z) << " " << wt_len(1, gp, z) << " " << mat_len(gp, z) << " " << mat_fec_len(gp, z); + if (gender == 2) + { + SS2out << " " << wt_len(1, N_GP + gp, z); + } + SS2out << " " << fec_len(gp, z) << endl; + } + } + + // REPORT_KEYWORD 43 NATURAL_MORTALITY + if (pick_report_use(43) == "Y") + { + SS2out << endl + << pick_report_name(43) << endl; + SS2out << "Method: " << natM_type << endl; + int hide_M1 = 1; + if(N_pred > 0) + { + SS2out<< "area 0 shows M1 only, numbered areas have M1+M2"< 0) + { + SS2out << endl + << "Predator_(M2); Values_are_apical_M2; total_M-at-age_(M1+M2)_reported_in_table_No_fishery_for_Z=M " << endl + << "Yr Era seas "; + for (f1 = 1; f1 <= N_pred; f1++) + { + f = predator(f1); + SS2out << fleetname(f) << "_M2 comsume_Bio consume_Num"; + } + SS2out << endl; + for (y = styr - 2; y <= YrMax; y++) + { + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + SS2out << y; + if (y == styr - 2) + { + SS2out << " VIRG "; + } + else if (y == styr - 1) + { + SS2out << " INIT "; + } + else if (y <= endyr) + { + SS2out << " TIME "; + } + else + { + SS2out << " FORE "; + } + SS2out << s << " "; + for (f1 = 1; f1 <= N_pred; f1++) + { + SS2out << pred_M2(f1, t) << " " << catch_fleet(t, predator(f1), 1) << " " << catch_fleet(t, predator(f1), 4) << " "; + } + SS2out << endl; + } + } + } + } + // REPORT_KEYWORD 44 AGE_SPECIFIC_K + if (pick_report_use(44) == "Y" && Grow_type >= 3 && Grow_type <= 6) + { + SS2out << endl + << pick_report_name(44) << endl; + SS2out << "Bio_Pattern Sex " << age_vector << endl; + g = 0; + for (gg = 1; gg <= gender; gg++) + for (gp = 1; gp <= N_GP; gp++) + { + g++; + SS2out << gp << " " << gg << " " << -VBK(g) << endl; + } + } + + // REPORT_KEYWORD 45 GROWTH_PARAMETERS_derived + if (pick_report_use(45) == "Y") + { + SS2out << endl + << pick_report_name(45) << endl; + SS2out << " Count Yr Sex Platoon A1 A2 L_a_A1 L_a_A2 K A_a_L0 Linf CVmin CVmax natM_amin natM_max M_age0 M_nages" + << " WtLen1 WtLen2 Mat1 Mat2 Fec1 Fec2" << endl; + for (g = 1; g <= save_gparm_print; g++) + { + SS2out << save_G_parm(g)(1, 2) << " " << sx(save_G_parm(g, 3)) << " " << save_G_parm(g)(3, 22) << endl; + } + } + // REPORT_KEYWORD 46 SEASONAL_BIOLOGY + if (pick_report_use(46) == "Y" && MGparm_doseas > 0) + { + SS2out << endl + << pick_report_name(46) << endl; + SS2out << "Seas F_wtlen1 F_wtlen2 F_mat1 F_mat2 F_fec1 F_fec2 M_wtlen1 M_wtlen2 L_a_A1 VBK" << endl; + for (s = 1; s <= nseas; s++) + { + SS2out << s << " " << save_seas_parm(s) << endl; + } + } + + // restore_AgeLength_Key to endyr, otherwise it will have ALK from end of forecast + // NOT SURE why this code is here + if (timevary_MG(endyr, 2) > 0 || timevary_MG(endyr, 3) > 0 || WTage_rd > 0) + { + y = endyr; + t_base = styr + (y - styr) * nseas - 1; + for (s = 1; s <= nseas; s++) + { + t = t_base + s; + bio_t = styr + (endyr - styr) * nseas + s - 1; + subseas = 1; + ALK_idx = (s - 1) * N_subseas + subseas; + get_growth3(styr, t, s, subseas); + Make_AgeLength_Key(s, subseas); // for begin season + subseas = mid_subseas; + ALK_idx = (s - 1) * N_subseas + subseas; + get_growth3(styr, t, s, subseas); + Make_AgeLength_Key(s, subseas); // for midseason + if (s == spawn_seas) + { + subseas = spawn_subseas; + ALK_idx = (s - 1) * N_subseas + subseas; + if (spawn_subseas != 1 && spawn_subseas != mid_subseas) + { + get_growth3(styr, t, s, subseas); + Make_AgeLength_Key(s, subseas); // spawn subseas + } + get_mat_fec(); + } + } + } + + dvariable Herma_Cum; + // REPORT_KEYWORD 47 Biology_at_age_by_morph + if (pick_report_use(47) == "Y") + { + SS2out << endl + << pick_report_name(47) << endl; + SS2out << "in_endyr_with_"; + switch (CV_depvar) + { + case 0: + { + SS2out << "CV=f(LAA)"; + break; + } + case 1: + { + SS2out << "CV=F(A)"; + break; + } + case 2: + { + SS2out << "SD=F(LAA)"; + break; + } + case 3: + { + SS2out << "SD=F(A)"; + break; + } + case 4: + { + SS2out << "logSD=f(A)"; + break; + } + } + + SS2out << endl; + SS2out << "Seas Morph Bio_Pattern Sex Settlement Platoon int_Age Real_Age Age_Beg Age_Mid M Len_Beg Len_Mid SD_Beg SD_Mid Wt_Beg Wt_Mid Len_Mat Age_Mat Mat*Fecund Mat_F_wtatage Mat_F_Natage"; + if (Hermaphro_Option != 0) + { + SS2out << " Herma_Trans "; + } + if (gender == 2) + { + for (p = 1; p <=pop; p++) + SS2out << " sex_ratio_area:_" << p ; + } + for (f = 1; f <= Nfleet; f++) + SS2out << " Len:_" << f << " SelWt:_" << f << " RetWt:_" << f; + SS2out << endl; + for (s = 1; s <= nseas; s++) + { + t = styr + (endyr - styr) * nseas + s - 1; + ALK_idx = (s - 1) * N_subseas + 1; // for first subseas of season + ALK_idx_mid = (s - 1) * N_subseas + mid_subseas; // for midsubseas of the season + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (a = 0; a <= nages; a++) + { + SS2out << s << " " << g << " " << GP4(g) << " " << sx(g) << " " << settle_g(g) << " " << GP2(g) << " " << a << " " << real_age(g, ALK_idx, a) << " " << calen_age(g, ALK_idx, a) << " " << calen_age(g, ALK_idx_mid, a); + SS2out << " " << natM(t, 1, GP3(g), a) << " " << Ave_Size(t, 1, g, a) << " " << Ave_Size(t, mid_subseas, g, a) << " " + << Sd_Size_within(ALK_idx, g, a) << " " << Sd_Size_within(ALK_idx_mid, g, a) << " " + << Wt_Age_beg(s, g, a) << " " << Wt_Age_mid(s, g, a) << " " << ALK(ALK_idx, g, a) * mat_len(GP4(g)) << " "; + if (Maturity_Option <= 2) + { + SS2out << mat_age(GP4(g), a); + } + else if (sx(g) == 1 && Maturity_Option < 5) + { + SS2out << Age_Maturity(GP4(g), a); + } + else + { + SS2out << -1.; + } + SS2out << " " << fec(g, a) << " " << make_mature_bio(g, a) << " " << make_mature_numbers(g, a); + if (Hermaphro_Option == 1) + { + if (sx(g) == 1) + { + SS2out << " " << Hermaphro_val(GP4(g), a) << " "; + } + else + { + SS2out << " NA "; + } + } + else if (Hermaphro_Option == -1) + { + if (sx(g) == 2) + { + SS2out << " " << Hermaphro_val(GP4(g), a) << " "; + } + else + { + SS2out << " NA "; + } + } + // write sex ratio in endyr for each area using natage + // small constant added to denominator so that morph-area combos with no fish will display a value of 0.0, rather than "nan" + // because natage is used, the reported sex ratio values will be responsive to hermaphroditism, and to sex-specific mortality + if (gender == 2) + { + if (sx(g) == 1) + { + for (p = 1; p <= pop; p++) + SS2out << " " << natage(t, p, g, a) / (natage(t, p, g, a) + natage(t, p, g + gmorph / 2, a) + 1.0e-07) << " "; + } + else + { + for (p = 1; p <= pop; p++) + SS2out << " " << natage(t, p, g, a) / (natage(t, p, g, a) + natage(t, p, g - gmorph / 2, a) + 1.0e-07) << " "; + } + } + if (WTage_rd == 0) + { + for (f = 1; f <= Nfleet; f++) + SS2out << " " << ALK(ALK_idx_mid, g, a) * elem_prod(sel_l(endyr, f, sx(g)), len_bins_m) / (ALK(ALK_idx_mid, g, a) * sel_l(endyr, f, sx(g))) << " " << ALK(ALK_idx_mid, g, a) * elem_prod(sel_l(endyr, f, sx(g)), wt_len(s, GP(g))) / (ALK(ALK_idx_mid, g, a) * sel_l(endyr, f, sx(g))) << " " << ALK(ALK_idx_mid, g, a) * elem_prod(sel_l_r(endyr, f, sx(g)), wt_len(s, GP(g))) / (ALK(ALK_idx_mid, g, a) * sel_l_r(endyr, f, sx(g))); + } + else + { + for (f = 1; f <= Nfleet; f++) + SS2out << " " << ALK(ALK_idx_mid, g, a) * elem_prod(sel_l(endyr, f, sx(g)), len_bins_m) / (ALK(ALK_idx_mid, g, a) * sel_l(endyr, f, sx(g))) << " " << Wt_Age_t(t, f, g, a) << " " << Wt_Age_t(t, f, g, a); + } + SS2out << endl; + } + } + } + } + + // REPORT_KEYWORD 48 MEAN_BODY_WT by year + if (pick_report_use(48) == "Y") + { + SS2out << endl + << pick_report_name(48) << endl; + if (WTage_rd > 0) + SS2out << " as read from wtatage.ss"; + SS2out << "#_NOTE: yr=_" << styr - 3 << "_stores_values_for_benchmark" << endl; + SS2out << "Morph Yr Seas" << age_vector << endl; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (y = styr - 3; y <= YrMax; y++) + { + yz = y; + if (yz > endyr + 2) + yz = endyr + 2; + // if(y==styr-3 || y==styr || timevary_MG(yz,2)>0 || timevary_MG(yz,3)>0 || WTage_rd>0) // if growth or wtlen parms have changed + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + SS2out << g << " " << y << " " << s << " " << Wt_Age_t(t, 0, g) << endl; + } + } + } + } + + // REPORT_KEYWORD 49 MEAN_SIZE_TIMESERIES body length + if (pick_report_use(49) == "Y") + { + SS2out << endl + << pick_report_name(49) << endl; + SS2out << "Morph Yr Seas SubSeas" << age_vector << endl; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (y = styr - 3; y <= YrMax; y++) + { + yz = y; + if (yz > endyr + 2) + yz = endyr + 2; + // if(y==styr-3 || y==styr || timevary_MG(yz,2)>0) + { + for (s = 1; s <= nseas; s++) + { + t = styr + (y - styr) * nseas + s - 1; + for (i = 1; i <= N_subseas; i++) + { + SS2out << g << " " << y << " " << s << " " << i << " " << Ave_Size(t, i, g) << endl; + } + } + } + } + } + s = 1; + for (i = 1; i <= gender; i++) + { + SS2out << "#" << endl + << "mean_size_Jan_1_for_sex: " << i << "#NOTE: combines_all_settlements_areas_GP_and_platoons" << endl; + SS2out << "Sex Yr Seas Beg " << age_vector << endl; + for (y = styr; y <= YrMax; y++) + { + yz = y; + if (yz > endyr + 2) + yz = endyr + 2; + if (y <= styr || timevary_MG(yz, 2) > 0 || N_platoon > 1) + { + t = styr + (y - styr) * nseas + s - 1; + SS2out << i << " " << y << " " << s << " " << 0; + for (a = 0; a <= nages; a++) + { + temp = 0.0; + temp1 = 0.0; + for (g = 1; g <= gmorph; g++) + { + if (sx(g) == i && use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) + { + temp += natage(t, p, g, a); + temp1 += Ave_Size(t, 1, g, a) * natage(t, p, g, a); + } // end loop of areas + } // end need to use this gender/platoon + } // end loop of all platoons + if (temp > 0.0) + { + SS2out << " " << temp1 / temp; + } + else + { + SS2out << " __"; + } + } // end loop of ages + SS2out << endl; + } // end need to report this year + } // end year loop + } // end gender loop + } // end do report detail + + // REPORT_KEYWORD 50 AGE_LENGTH_KEY + if (pick_report_use(50) == "Y") + { + SS2out << endl + << pick_report_name(50) << endl; + if (Grow_logN == 1) + SS2out << " #Lognormal "; + SS2out << "#" << endl; // SS_Label_460 + SS2out << " sdratio " << platoon_sd_ratio << endl; + SS2out << " sdwithin " << sd_within_platoon << endl; + SS2out << " sdbetween " << sd_between_platoon << endl; + for (s = 1; s <= nseas; s++) + for (subseas = 1; subseas <= N_subseas; subseas++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + t = styr + (endyr - styr) * nseas + s - 1; + ALK_idx = (s - 1) * N_subseas + subseas; + SS2out << "#" << endl + << " Seas: " << s << " Sub_Seas: " << subseas << " Morph: " << g << endl; + SS2out << "Age:"; + for (a = 0; a <= nages; a++) + SS2out << " " << a; + SS2out << endl; + for (z = nlength; z >= 1; z--) + { + SS2out << len_bins2(z) << " "; + for (a = 0; a <= nages; a++) + SS2out << ALK(ALK_idx, g, a, z) << " "; + SS2out << endl; + } + SS2out << "mean " << Ave_Size(t, subseas, g) << endl; + SS2out << "sdsize " << Sd_Size_within(ALK_idx, g) << endl; + } + } + + // REPORT_KEYWORD 51 AGE_AGE_KEY + if (pick_report_use(51) == "Y" && N_ageerr > 0) + { + SS2out << endl + << pick_report_name(51) << endl; + for (k = 1; k <= N_ageerr + store_agekey_add; k++) + { + SS2out << "KEY: " << k << endl + << "mean " << age_err(k, 1) << endl + << "SD " << age_err(k, 2) << endl; + for (b = n_abins; b >= 1; b--) + { + SS2out << age_bins(b) << " "; + for (a = 0; a <= nages; a++) + SS2out << age_age(k, b, a) << " "; + SS2out << endl; + } + if (gender == 2) + { + L2 = n_abins; + A2 = nages + 1; + for (b = n_abins; b >= 1; b--) + { + SS2out << age_bins(b) << " "; + for (a = 0; a <= nages; a++) + SS2out << age_age(k, b + L2, a + A2) << " "; + SS2out << endl; + } + } + } + } + + // REPORT_KEYWORD 52 COMPOSITION_DATABASE + /* SS_Label_xxx report the composition database to CompReport.sso */ + int last_t; + if (pick_report_use(52) == "Y") + { + SS_compout << endl + << "Size_Bins_pop;_(Pop_len_mid_used_for_calc_of_selex_and_bio_quantities)" << endl; + SS_compout << "Pop_Bin: "; + for (j = 1; j <= nlength; j++) + SS_compout << " " << j; + SS_compout << endl + << "Length: " << len_bins << endl; + SS_compout << "Len_mid: " << len_bins_m << endl; + SS_compout << "Size_Bins_dat;_(Data_len_mid_for_reporting_only)" << endl; + SS_compout << "Data_Bin: "; + for (j = 1; j <= nlen_bin; j++) + SS_compout << " " << j; + SS_compout << endl + << "Length: " << len_bins_dat << endl; + SS_compout << "Len_mid: " << len_bins_dat_m << endl; + + SS_compout << "Combine_males_with_females_thru_sizedata_bin " << CombGender_L << endl; + // SS_compout<<"Size:"< 999) + real_month -= 1000.; + + if (ALK_time == last_t) + { + repli++; + } + else + { + repli = 1; + last_t = ALK_time; + } + in_superperiod = determine_speriod(in_superperiod, anystring, header_l(f, i, 2), header_l(f, i, 3)); + +// count bins + nbins = 0; + for (gg = 1; gg <= gender ; gg ++) + { + if (gen_l(f, i) != 2 && gg == 1) + { + z_lo = tails_l(f, i, 1); + z_hi = tails_l(f, i, 2); + nbins += z_hi - z_lo + 1; + } + else if (gen_l(f, i) >= 2 && gg == 2) // do males + { + z_lo = tails_l(f, i, 3); + z_hi = tails_l(f, i, 4); + nbins += z_hi - z_lo + 1; + } + } + + int gender2 = gender; + if (gen_l(f, i) == 0) gender2 = 1; + for (gg = 1; gg <= gender2 ; gg ++) + { + if (gen_l(f, i) != 2 && gg == 1) + { + s_off = 1; + z_lo = tails_l(f, i, 1); + z_hi = tails_l(f, i, 2); + } + else if (gen_l(f, i) >= 2 && gg == 2) // do males + { + s_off = 2; + z_lo = tails_l(f, i, 3); + z_hi = tails_l(f, i, 4); + } + // temp = gammln(dirichlet_Parm) - gammln(nsamp_l(f, i) + dirichlet_Parm); + nsamp = fabs(nsamp_l(f, i)); + for (z = z_lo; z <= z_hi; z++) + { + ocomp = obs_l(f, i, z); + ecomp = value( exp_l(f, i, z) ); + // Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin Obs Exp + SS_compout << header_l(f, i, 1) << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gen_l(f, i) << " LEN " << mkt_l(f, i) << " 0 " << s_off << " " << 1 << " " << 1 << " " << len_bins_dat2(z) << " " << ocomp << " " << ecomp << " "; + // Pearson Nsamp_adj Nsamp_in effN Like + temp2 += ocomp; + temp1 += ecomp; + if (nsamp > 0 && header_l(f, i, 3) > 0 && (ecomp != 0.0 && ecomp != 1.0) && nbins > 0 ) // check for values to include + { + int parti = mkt_l(f, i); + if (Comp_Err_L(parti,f) == 0) + { + show_Pearson = (ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp ); // Pearson for multinomial + show_logL = ocomp * log( (ocomp + 1.0e-12) / ( ecomp + 1.0e-12) ) * nsamp; // logL + } + if (Comp_Err_L(parti, f) == 1 || Comp_Err_L(parti, f) == 2) + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f),1))); + if (Comp_Err_L(parti, f) == 1 ) + { dirichlet_Parm *= nsamp; } + show_Pearson = value((ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp * (nsamp + dirichlet_Parm) / (1. + dirichlet_Parm))); // Pearson for Dirichlet-multinomial using negative-exponential parameterization + show_logL = -offset_l(f,i) / nbins + - value( gammln(nsamp * ocomp + dirichlet_Parm * ecomp) - gammln(dirichlet_Parm * ecomp)) + - value( ( gammln(dirichlet_Parm) - gammln(nsamp + dirichlet_Parm))) / nbins; + } + if (Comp_Err_L(parti, f) == 3 ) // MV Tweedie + { + } + SS_compout << show_Pearson << " " << nsamp << " " << nsamp_l_read(f, i) << " " << neff_l(f, i) << " " << show_logL; + } + else // sample size zero or skip + { + SS_compout << " NA " << " " << nsamp << " " << nsamp_l_read(f, i) << " NA NA "; // placeholder + } + // Cum_obs Cum_exp SuprPer Used? + SS_compout << " " << temp2 << " " << temp1 << " " << anystring < 999) + real_month -= 1000.; + + if (ALK_time == last_t) + { + repli++; + } + else + { + repli = 1; + last_t = ALK_time; + } + in_superperiod = determine_speriod(in_superperiod, anystring, header_a(f, i, 2), header_a(f, i, 3)); + +// count bins + nbins = 0; + for (gg = 1; gg <= gender ; gg ++) + { + if (gen_a(f, i) != 2 && gg == 1) + { + z_lo = tails_a(f, i, 1); + z_hi = tails_a(f, i, 2); + nbins += z_hi - z_lo + 1; + } + else if (gen_a(f, i) >= 2 && gg == 2) // do males + { + z_lo = tails_a(f, i, 3); + z_hi = tails_a(f, i, 4); + nbins += z_hi - z_lo + 1; + } + } + + int gender2 = gender; + if (gen_a(f, i) == 0) gender2 = 1; + for (gg = 1; gg <= gender2 ; gg ++) + { + if (gen_a(f, i) != 2 && gg == 1) + { + s_off = 1; + z_lo = tails_a(f, i, 1); + z_hi = tails_a(f, i, 2); + } + else if (gen_a(f, i) >= 2 && gg == 2) // do males + { + s_off = 2; + z_lo = tails_a(f, i, 3); + z_hi = tails_a(f, i, 4); + } + // temp = gammln(dirichlet_Parm) - gammln(nsamp_l(f, i) + dirichlet_Parm); + nsamp = fabs(nsamp_a(f, i)); + for (z = z_lo; z <= z_hi; z++) + { + ocomp = obs_a(f, i, z); + ecomp = value( exp_a(f, i, z) ); + // Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin Obs Exp + SS_compout << header_a(f, i, 1) << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gen_a(f, i) << " AGE " << mkt_a(f, i) << " " << ageerr_type_a(f, i) + << " " << s_off << " " << len_bins(Lbin_lo(f, i)) << " " << len_bins(Lbin_hi(f, i)) << " " << age_bins(z) << " " << ocomp << " " << ecomp << " "; + // Pearson Nsamp_adj Nsamp_in effN Like + temp2 += ocomp; + temp1 += ecomp; + + if (nsamp > 0 && header_a(f, i, 3) > 0 && (ecomp != 0.0 && ecomp != 1.0) && nbins > 0 ) // check for values to include + { + if (Comp_Err_A(f) == 0) + { + show_Pearson = (ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp ); // Pearson for multinomial + show_logL = ocomp * log( (ocomp + 1.0e-12) / ( ecomp + 1.0e-12) ) * nsamp; // logL + } + if (Comp_Err_A(f) == 1 || Comp_Err_A(f) == 2) + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); + if (Comp_Err_A(f) == 1 ) + { dirichlet_Parm *= nsamp; } + show_Pearson = value((ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp * (nsamp + dirichlet_Parm) / (1. + dirichlet_Parm))); // Pearson for Dirichlet-multinomial using negative-exponential parameterization + show_logL = -offset_a(f,i) / nbins + - value( gammln(nsamp * ocomp + dirichlet_Parm * ecomp) - gammln(dirichlet_Parm * ecomp)) + - value( ( gammln(dirichlet_Parm) - gammln(nsamp + dirichlet_Parm))) / nbins; + } + if (Comp_Err_A(f) == 3 ) // MV Tweedie + { + } + SS_compout << show_Pearson << " " << nsamp << " " << nsamp_a_read(f, i) << " " << neff_a(f, i) << " " << show_logL; + } + else // sample size zero or skip + { + SS_compout << " NA " << " " << nsamp << " " << nsamp_a_read(f, i) << " NA NA "; // placeholder + } + // Cum_obs Cum_exp SuprPer Used? + SS_compout << " " << temp2 << " " << temp1 << " " << anystring < 999) + real_month -= 1000.; + if (ALK_time == last_t) + { + repli++; + } + else + { + repli = 1; + last_t = ALK_time; + } + in_superperiod = determine_speriod(in_superperiod, anystring, header_ms(f, i, 2), header_ms(f, i, 3)); + + for (z = 1; z <= n_abins2; z++) + { + if (z <= n_abins) + s_off = 1; + else + s_off = 2; + t1 = obs_ms_n(f, i, z); + // where: obs_ms_n(f,i,z)=sqrt(var_adjust(6,f)*obs_ms_n(f,i,z)); + if (ageerr_type_ms(f, i) > 0) + { + anystring2 = " L@A "; + } + else + { + anystring2 = " W@A "; + } + if (t1 > 0.) + t1 = square(t1); + SS_compout << header_ms(f, i, 1) << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gen_ms(f, i) << anystring2 << mkt_ms(f, i) << " " << ageerr_type_ms(f, i) << " " << s_off << " " << exp_ms_sq(f, i, z) << " " << nlen_bin << " " << age_bins(z) << " " << obs_ms(f, i, z) << " " << exp_ms(f, i, z) << " "; + if (obs_ms(f, i, z) > 0. && t1 > 0. && header_ms(f, i, 3) > 0) + { + SS_compout << (obs_ms(f, i, z) - exp_ms(f, i, z)) / (exp_ms_sq(f, i, z) / obs_ms_n(f, i, z)) << " "; // Pearson + SS_compout << t1 << " "; // sample size + SS_compout << "NA "; // placeholder for input sample size + //SS_compout< 0) // have some sizefreq data + { + repli = 0; + in_superperiod = 0; + last_t = -999; + for (iobs = 1; iobs <= SzFreq_totobs; iobs++) + { + y = SzFreq_obs_hdr(iobs, 1); + if (y >= styr) // flag for obs that are used + { + N_out++; + temp2 = 0.0; + temp1 = 0.0; + real_month = abs(SzFreq_obs1(iobs, 3)); // month + if (real_month > 999) + real_month -= 1000.; + f = abs(SzFreq_obs_hdr(iobs, 3)); + gg = SzFreq_obs_hdr(iobs, 4); // gender + int Sz_method = SzFreq_obs1(iobs, 1); // sizecomp method + int logL_method = Comp_Err_Sz(Sz_method); + + in_superperiod = determine_speriod(in_superperiod, anystring, SzFreq_obs_hdr(iobs, 2), SzFreq_obs_hdr(iobs, 3)); + + p = SzFreq_obs_hdr(iobs, 5); // partition + z_lo = SzFreq_obs_hdr(iobs, 7); + z_hi = SzFreq_obs_hdr(iobs, 8); + nbins = z_hi - z_lo +1; + t = SzFreq_time_t(iobs); + ALK_time = SzFreq_time_ALK(iobs); + nsamp = SzFreq_sampleN(iobs); + temp2 = 0.0; + temp1 = 0.0; + if (ALK_time == last_t) + { + repli++; + } + else + { + repli = 1; + last_t = ALK_time; + } + for (z = z_lo; z <= z_hi; z++) + { + ocomp = SzFreq_obs(iobs, z); + ecomp = value( SzFreq_exp(iobs, z)); + if (z > SzFreq_Nbins(Sz_method)) + {s_off = 2;} + else + {s_off = 1;} + // Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin Obs Exp + SS_compout << SzFreq_obs_hdr(iobs, 1) << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gg << " SIZE " << p << " " << Sz_method; + SS_compout << " " << s_off << " " << SzFreq_units(Sz_method) << " " << SzFreq_scale(Sz_method) << " "; + if (s_off == 1) + { + SS_compout << SzFreq_bins1(Sz_method, z); + } + else + { + SS_compout << SzFreq_bins1(Sz_method, z - SzFreq_Nbins(Sz_method)); + } + SS_compout << " " << ocomp << " " << ecomp << " "; + temp2 += ocomp; + temp1 += ecomp; + + // Pearson Nsamp_adj Nsamp_in effN Like + if (nsamp > 0 && SzFreq_obs_hdr(iobs, 3) && (ecomp != 0.0 && ecomp != 1.0) && nbins > 0 ) // check for values to include + { + if (logL_method == 0) + { + show_Pearson = (ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp ); // Pearson for multinomial + show_logL = ocomp * log( (ocomp + 1.0e-12) / ( ecomp + 1.0e-12) ) * nsamp; // logL + } + if (logL_method == 1 || logL_method == 2) + { + dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(Sz_method),1))); + if (logL_method == 1 ) + { dirichlet_Parm *= nsamp; } + show_Pearson = value((ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp * (nsamp + dirichlet_Parm) / (1. + dirichlet_Parm))); // Pearson for Dirichlet-multinomial using negative-exponential parameterization + show_logL = -SzFreq_each_offset(iobs) / nbins + - value( gammln(nsamp * ocomp + dirichlet_Parm * ecomp) - gammln(dirichlet_Parm * ecomp)) + - value( ( gammln(dirichlet_Parm) - gammln(nsamp + dirichlet_Parm))) / nbins; + } + if (logL_method == 3 ) // MV Tweedie + { + } + SS_compout << show_Pearson << " " << nsamp << " " << SzFreq_sampleN(iobs) << " " << SzFreq_effN(iobs) << " " << show_logL; + } + else // sample size zero or skip + { + SS_compout << " NA " << " " << nsamp << " " << SzFreq_sampleN(iobs) << " NA NA "; // placeholder + } + // Cum_obs Cum_exp SuprPer Used? + SS_compout << " " << temp2 << " " << temp1 << " " << anystring < SzFreq_Nbins(k)) + s_off = 2; + SS_compout << " " << s_off << " " << SzFreq_units(k) << " " << SzFreq_scale(k) << " "; + if (s_off == 1) + { + SS_compout << SzFreq_bins1(k, z); + } + else + { + SS_compout << SzFreq_bins1(k, z - SzFreq_Nbins(k)); + } + SS_compout << " " << SzFreq_obs(iobs, z) << " " << SzFreq_exp(iobs, z) << " "; + temp2 += SzFreq_obs(iobs, z); + temp1 += SzFreq_exp(iobs, z); + // next add Pearson column + if (SzFreq_obs_hdr(iobs, 3) > 0) + { + if (SzFreq_exp(iobs, z) != 0.0 && SzFreq_exp(iobs, z) != 1.0) + { + SS_compout << (SzFreq_obs(iobs, z) - SzFreq_exp(iobs, z)) / sqrt(SzFreq_exp(iobs, z) * (1. - SzFreq_exp(iobs, z)) / SzFreq_sampleN(iobs)); + } + else + { + SS_compout << " NA "; + } + // next add the following columns: + // Nsamp_adj, Nsamp_in (temporarily "NA"), effN + SS_compout << " " << SzFreq_sampleN(iobs) << " NA " << SzFreq_effN(iobs) << " "; + // next add Like column + if (SzFreq_obs(iobs, z) != 0.0 && SzFreq_exp(iobs, z) != 0.0) + { + SS_compout << " " << SzFreq_obs(iobs, z) * log(SzFreq_obs(iobs, z) / SzFreq_exp(iobs, z)) * SzFreq_sampleN(iobs); + } + else + { + SS_compout << " NA "; + } + } + else // sample size zero or skip + { + SS_compout << " NA "; // placeholder for Pearson + SS_compout << " " << SzFreq_sampleN(iobs) << " NA"; // Nsamp_adj and Nsamp_in (NA for now) + SS_compout << " NA NA "; // placeholder for effN and Like + } + // next add the following columns: + // Cum_obs Cum_exp SuprPer Used? + SS_compout << " " << temp2 << " " << temp1 << " " << anystring << endl; + // single row representing info from previous bin-specific rows + if (z == z2 || z == SzFreq_Nbins(k)) + SS_compout << SzFreq_obs_hdr(iobs, 1) << " " << SzFreq_obs_hdr(iobs, 2) << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gg << " SIZE " << p << " " << k << " " << s_off << " " << 1 << " " << 2 << endl; + } + */ + } + } + } + + // Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin Obs Exp Pearson N effN Like Cum_obs Cum_exp SuprPer Used? + if (Do_Morphcomp > 0) + { + for (iobs = 1; iobs <= Morphcomp_nobs; iobs++) + { + N_out++; + y = Morphcomp_obs(iobs, 1); + real_month = Morphcomp_obs(iobs, 2); + ALK_time = Morphcomp_obs(iobs, 5 + 1 + Morphcomp_nmorph); + f = Morphcomp_obs(iobs, 3); + k = 5 + Morphcomp_nmorph; + for (z = 6; z <= k; z++) + { + SS_compout << y << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " 1 1 " + << " GP% "; + SS_compout << " 0 0 0 0 0 " << z - 5 << " " << Morphcomp_obs(iobs, z) << " " << Morphcomp_exp(iobs, z) << " NA " << Morphcomp_obs(iobs, 5) << " NA NA NA NA _ _ " << endl; + } + } + } + + if (Do_TG > 0) + { + for (TG = 1; TG <= N_TG; TG++) + { + y = TG_release(TG, 3); + s = TG_release(TG, 4); + for (TG_t = 0; TG_t <= TG_endtime(TG); TG_t++) + { + N_out++; + t = styr + (y - styr) * nseas + s - 1; + temp1 = s - 1.; + // temp=float(y)+temp1/float(nseas); + temp = float(y) + 0.01 * int(100. * (azero_seas(s) + seasdur_half(s))); + // Fill in columns for: Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin + SS_compout << y << " NA " << s << " NA " << temp << " NA " << TG_release(TG, 2) << " " << TG << " " << TG_release(TG, 6) << " TAG2 NA NA NA NA NA " << + // TAG2 values (total recaptures) + // Fill in columns for: Obs Exp Pearson Nsamp_adj Nsamp_in effN Like Cum_obs Cum_exp SuprPer Used? + TG_t << " " << TG_recap_obs(TG, TG_t, 0) << " " << TG_recap_exp(TG, TG_t, 0) << " NA NA NA NA NA NA NA NA "; + if (TG_t >= TG_mixperiod && TG_use(TG) >= TG_min_recap) + { + SS_compout << "_" << endl; + } + else + { + SS_compout << " skip" << endl; + } + // TAG1 values (proportions for each fleet) associated with the above TAG2 output + if (Nfleet > 1) + for (f = 1; f <= Nfleet; f++) + { + // Fill in columns for: Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi + SS_compout << y << " NA " << s << " NA " << temp << " " << f << " " << fleet_area(f) << " " << TG << " " << TG_release(TG, 6) << " TAG1 NA NA NA NA NA " << + // Fill in columns for:: Bin Obs Exp Pearson Nsamp_adj Nsamp_in + f << " " << TG_recap_obs(TG, TG_t, f) << " " << TG_recap_exp(TG, TG_t, f) << " NA " << TG_recap_obs(TG, TG_t, 0) << " NA " + << " NA NA NA NA NA "; // NA values are for: effN Like Cum_obs Cum_exp SuprPer + // Fill in Used? column + if (TG_t >= TG_mixperiod && TG_use(TG) >= TG_min_recap) + { + SS_compout << "_" << endl; + } + else + { + SS_compout << " skip" << endl; + } + } + s++; + if (s > nseas) + { + s = 1; + y++; + } + } + } + } + + if (N_out == 0) + SS_compout << styr << " -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1" << endl; + SS_compout << styr << " -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1" << endl + << " End_comp_data" << endl; + } + + // REPORT_KEYWORD 53 SELEX_database + if (pick_report_use(53) == "Y") + { + SS2out << endl + << pick_report_name(53) << endl; + SS2out << "Fleet Yr Kind Sex Bin Selex" << endl; + for (f = 1; f <= Nfleet; f++) + for (y = styr - 3; y <= endyr; y++) + { + if (y == styr - 3 || y == endyr || (timevary_sel(y, f) > 0 || timevary_sel(y + 1, f) > 0)) + { + for (gg = 1; gg <= gender; gg++) + { + for (z = 1; z <= nlength; z++) + { + SS2out << f << " " << y << " L " << gg << " " << len_bins(z) << " " << sel_l(y, f, gg, z) << endl; + } + if (seltype(f, 2) != 0) + { + if (gg == 1) + { + for (z = 1; z <= nlength; z++) + { + SS2out << f << " " << y << " D " << gg << " " << len_bins(z) << " " << retain(y, f, z) << endl; + } + } + else + { + for (z = 1; z <= nlength; z++) + { + SS2out << f << " " << y << " D " << gg << " " << len_bins(z) << " " << retain(y, f, z + nlength) << endl; + } + } + } + if (seltype(f, 2) == 2) + { + if (gg == 1) + { + for (z = 1; z <= nlength; z++) + { + SS2out << f << " " << y << " DM " << gg << " " << len_bins(z) << " " << discmort(y, f, z) << endl; + } + } + else + { + for (z = 1; z <= nlength; z++) + { + SS2out << f << " " << y << " DM " << gg << " " << len_bins(z) << " " << discmort(y, f, z + nlength) << endl; + } + } + } + } + } + if (timevary_sel(y, f + Nfleet) > 0) + { + for (gg = 1; gg <= gender; gg++) + for (a = 0; a <= nages; a++) + { + SS2out << f << " " << y << " A " << gg << " " << a << " " << sel_a(y, f, gg, a) << endl; + } + } + } + SS2out << " end selex output " << endl; + } // end do report detail + wrote_bigreport++; + // SS2out.close(); + // SS_compout.close(); + return; + } // end write_bigoutput + +FUNCTION void SPR_profile() + { + // REPORT_KEYWORD 54 SPR/YPR_Profile + int SPRloop; + int bio_t_base; + dvariable Fmult2 = maxpossF; + dvariable Fcrash = Fmult2; + dvariable Fmultchanger0 = Fmult2 / 39.; + dvariable Fmultchanger1; + dvariable Fmultchanger2; + dvariable Btgt_prof; + dvariable Btgt_prof_rec; + dvariable SPR_last; + dvariable SPR_trial; + dvariable YPR_last; + + SS2out << endl + << pick_report_name(54) << endl; + y = styr - 3; + yz = y; + bio_yr = y; + eq_yr = y; + t_base = y + (y - styr) * nseas - 1; + bio_t_base = styr + (bio_yr - styr) * nseas - 1; + + // SPAWN-RECR: call make_fecundity for benchmark bio for SPR loop + + for (s = 1; s <= nseas; s++) + { + t = styr - 3 * nseas + s - 1; + Wt_Age_beg(s) = Wt_Age_t(t, 0); // used for smrybio + Wt_Age_mid(s) = Wt_Age_t(t, -1); // used in global MSY + if (s == spawn_seas) + { + fec = Wt_Age_t(t, -2); + SS2out << " repro_output for SPR/YPR: " << fec(1) << endl;} + } +// do not recalculate here so force using values from benchmark + SS2out << "unfished values for SRR: SSB " << SSB0_4_SRR << " R " << R0_4_SRR << " SSBpR " << " SSBpR: " << SSB0_4_SRR / R0_4_SRR << endl; + SS2out << "SPRloop Iter Bycatch Fmult F_std SSBpR YpR_dead YpR_dead*Recr YpR_ret*Recr Revenue Cost Profit SSB Recruits SSB/Bzero Tot_Catch "; + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + SS2out << " " << fleetname(f) << "(" << f << ")Dead"; + } + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + SS2out << " " << fleetname(f) << "(" << f << ")Ret"; + } + for (f = 1; f <= Nfleet; f++) + { + if (fleet_type(f) <= 2) + SS2out << " " << fleetname(f) << "(" << f << ")Age"; + } + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + SS2out << " SSB_Area:" << p << "_GP:" << gp; + } + SS2out << endl; + equ_Recr = 1.0; + Fishon = 0; + int SPRloop1_end; + if (Do_Benchmark == 3) + { + SPRloop1_end = 8; + } + else + { + SPRloop1_end = 7; + } + int SPRloops; + SSBpR_Calc(equ_Recr); + if (N_bycatch == 0) + { + k = 0; + } + else + { + k = 1; + } + for (int with_BYC = 0; with_BYC <= k; with_BYC++) + for (int SPRloop1 = -1; SPRloop1 <= SPRloop1_end; SPRloop1++) + { + Fmultchanger1 = value(pow(0.0001 / Fcrash, 0.025)); + Fmultchanger2 = value(Fcrash / 39.); + SPRloops = 40; + switch (SPRloop1) + { + case -1: + { + SPRloops = 1; + Fmult2 = 0.0; + break; + } + case 0: + { + SPRloops = 40; + Fmult2 = maxpossF; + break; + } + case 1: + { + SPRloops = 40; + Fmult2 = Fcrash; + break; + } + case 3: + { + Fmult2 = 1; + SPRloops = 1; + break; + } + case 4: + { + Fmult2 = SPR_Fmult; + SPRloops = 1; + break; + } + case 5: + { + Fmult2 = Btgt_Fmult; + SPRloops = 1; + break; + } + case 6: + { + Fmult2 = MSY_Fmult; + SPRloops = 1; + break; + } + case 8: + { + Fmult2 = Btgt_Fmult2; + SPRloops = 1; + break; + } + case 7: + { + Fmult2 = MSY_Fmult; + SPRloops = 40; + SPR_trial = value(SSB_equil / SSB_virgin); + SPR_last = SPR_trial * 2.; + YPR_last = -1.; + break; + } + } + for (SPRloop = 1; SPRloop <= SPRloops; SPRloop++) + { + if (SPRloop1 == 7 && SPRloop > 1) + { + if (F_Method > 1) + { + Fmult2 *= 1.05; + } + else + { + Fmult2 = Fmult2 + (1.0 - Fmult2) * 0.05; + } + if (SPR_trial <= 0.001) + SPRloop = 1001; + SPR_last = SPR_trial; + YPR_last = YPR_dead; + } + + for (f = 1; f <= Nfleet; f++) + for (s = 1; s <= nseas; s++) + { + t = bio_t_base + s; + if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) + { + if (SPRloop1 != 3) + { + Hrate(f, t) = Fmult2 * Bmark_RelF_Use(s, f); + } + else + { + a = styr + (endyr - styr) * nseas + s - 1; + Hrate(f, t) = Hrate(f, a); + } + } + else if (fleet_type(f) == 2 && bycatch_setup(f, 3) > 1) + { + Hrate(f, t) = double(with_BYC) * bycatch_F(f, s); + } + else + { + Hrate(f, t) = 0.0; + } + } + Fishon = 1; + + SSBpR_Calc(equ_Recr); + // SPAWN-RECR: calc equil spawn-recr in the SPR loop + SSBpR_temp = SSB_equil; + Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench , SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR + Btgt_prof = Equ_SpawnRecr_Result(1); + Btgt_prof_rec = Equ_SpawnRecr_Result(2); + if (Btgt_prof < 0.001 || Btgt_prof_rec < 0.001) + { + Btgt_prof_rec = 0.0; + Btgt_prof = 0.; + if (SPRloop1 == 0) + Fcrash = Fmult2; + } + SS2out << SPRloop1 << " " << SPRloop << " " << with_BYC << " " << Fmult2 << " " << equ_F_std << " " << SSB_equil / (SSB0_4_SRR / R0_4_SRR) << " " << YPR_dead << " " + << YPR_dead * Btgt_prof_rec << " " << YPR_ret * Btgt_prof_rec << " " << (PricePerF * YPR_val_vec) * Btgt_prof_rec + << " " << Cost << " " << (PricePerF * YPR_val_vec) * Btgt_prof_rec - Cost << " " << Btgt_prof << " " << Btgt_prof_rec << " " << Btgt_prof / SSB0_4_SRR + << " " << value(sum(equ_catch_fleet(2)) * Btgt_prof_rec); + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + temp = 0.0; + for (s = 1; s <= nseas; s++) + { + temp += equ_catch_fleet(2, s, f); + } + SS2out << " " << temp * Btgt_prof_rec; + } + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + temp = 0.0; + for (s = 1; s <= nseas; s++) + { + temp += equ_catch_fleet(3, s, f); + } + SS2out << " " << temp * Btgt_prof_rec; + } + // report mean age of CATCH of non-bycatch fleets + for (f = 1; f <= Nfleet; f++) + if (fleet_type(f) <= 2) + { + temp = 0.0; + temp2 = 0; + for (s = 1; s <= nseas; s++) + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + temp += equ_catage(s, f, g) * r_ages; + temp2 += sum(equ_catage(s, f, g)); + } + if (temp2 > 0.0) + { + SS2out << " " << temp / temp2; + } + else + SS2out << " NA"; + } + + for (p = 1; p <= pop; p++) + for (gp = 1; gp <= N_GP; gp++) + { + SS2out << " " << SSB_equil_pop_gp(p, gp) * Btgt_prof_rec; + } + SS2out << endl; + if (SPRloop1 == 0) + { + Fmult2 -= Fmultchanger0; + if (Fmult2 < 0.0) + Fmult2 = 1.0e-6; + } + else if (SPRloop1 == 1) + { + Fmult2 *= Fmultchanger1; + } + else if (SPRloop1 == 2) + { + Fmult2 += Fmultchanger2; + } + } + } + + SS2out << "Finish SPR/YPR profile" << endl; + SS2out << "#Profile 0 is descending additively from max possible F: " << maxpossF << endl; + SS2out << "#Profile 1 is descending multiplicatively half of max possible F" << endl; + SS2out << "#Profile 2 is additive back to Fcrash: " << Fcrash << endl; + SS2out << "#value 3 uses endyr F, which has different fleet allocation than benchmark" << endl; + SS2out << "#value 4 is Fspr: " << SPR_Fmult << endl; + SS2out << "#value 5 is Fbtgt: " << Btgt_Fmult << endl; + SS2out << "#value 6 is Fmsy: " << MSY_Fmult << endl; + if (Do_Benchmark == 3) + SS2out << "#value 8 is F_Blimit: " << Btgt_Fmult2 << endl; + SS2out << "#Profile 7 increases from Fmsy to Fcrash" << endl; + SS2out << "#_NOTE: meanage_of_catch_is_for_total_catch_of_fleet_type==1_or_bycatch_fleets_with_scaled_Hrate" << endl; + // end SPR/YPR_Profile + return; + } + +FUNCTION void Global_MSY() + { + // REPORT_KEYWORD 55 GLOBAL_MSY + // GLOBAL_MSY with knife-edge age selection, then slot-age selection + SS2out << endl + << pick_report_name(55) << endl; + y = styr - 3; // stores the averaged biology and selectivity, etc. from benchmark + yz = y; + bio_yr = y; + eq_yr = y; + t_base = y + (y - styr) * nseas - 1; + + for (int MSY_loop = 0; MSY_loop <= 2; MSY_loop++) + { + if (MSY_loop == 0) + { + SS2out << "#" << endl + << "ACTUAL_SELECTIVITY_MSY with MSY units as: " << MSY_name << endl; + } + else if (MSY_loop == 1) + { + SS2out << "#" << endl + << "KNIFE_AGE_SELECTIVITY_MSY " << endl; + } + else + { + SS2out << "#" << endl + << "SLOT_AGE_SELECTIVITY_MSY " << endl; + } + SS2out << "------ SPR SPR SPR SPR SPR SPR SPR SPR SPR # BTGT BTGT BTGT BTGT BTGT BTGT BTGT BTGT BTGT BTGT # " + << " MSY MSY MSY MSY MSY MSY MSY MSY MSY MSY MSY" << endl + << "Age SPR Fmult Fstd Exploit Recruit SSB Y_dead Y_ret VBIO # SPR B/B0 Fmult Fstd Exploit Recruit SSB Y_dead Y_ret VBIO " + << " # SPR B/B0 Fmult Fstd Exploit Recruit SSB Y_MSY Y_dead Y_ret VBIO " << endl; + + if (MSY_loop > 0) + { + for (int SPRloop1 = 1; SPRloop1 <= nages - 1; SPRloop1++) + { + sel_bio.initialize(); + sel_ret_bio.initialize(); + sel_num.initialize(); + sel_ret_num.initialize(); + sel_dead_num.initialize(); + sel_dead_bio.initialize(); + SS2out << SPRloop1 << " "; + for (s = 1; s <= nseas; s++) + { + t = styr - 3 * nseas + s - 1; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (f = 1; f <= Nfleet; f++) + { + if (MSY_loop == 1) + { + sel_bio(s, f, g)(SPRloop1, nages) = Wt_Age_mid(s, g)(SPRloop1, nages); // selected * wt + sel_ret_bio(s, f, g)(SPRloop1, nages) = Wt_Age_mid(s, g)(SPRloop1, nages); // selected * retained * wt + sel_num(s, f, g)(SPRloop1, nages) = 1.00; // selected numbers + sel_ret_num(s, f, g)(SPRloop1, nages) = 1.00; // selected * retained numbers + sel_dead_num(s, f, g)(SPRloop1, nages) = 1.00; // sel * (retain + (1-retain)*discmort) + sel_dead_bio(s, f, g)(SPRloop1, nages) = Wt_Age_mid(s, g)(SPRloop1, nages); // sel * (retain + (1-retain)*discmort) * wt + } + else + { + sel_bio(s, f, g, SPRloop1) = Wt_Age_mid(s, g, SPRloop1); // selected * wt + sel_ret_bio(s, f, g, SPRloop1) = Wt_Age_mid(s, g, SPRloop1); // selected * retained * wt + sel_num(s, f, g, SPRloop1) = 1.00; // selected numbers + sel_ret_num(s, f, g, SPRloop1) = 1.00; // selected * retained numbers + sel_dead_num(s, f, g, SPRloop1) = 1.00; // sel * (retain + (1-retain)*discmort) + sel_dead_bio(s, f, g, SPRloop1) = Wt_Age_mid(s, g, SPRloop1); // sel * (retain + (1-retain)*discmort) * wt + } + } + } + } + show_MSY = 2; // invokes just brief output in benchmark + did_MSY = 0; + Get_Benchmarks(show_MSY); + did_MSY = 0; + } + } + else + { + SS2out << "Actual "; + show_MSY = 2; // invokes just brief output in benchmark + did_MSY = 0; +// report5 << 0 << " y: " << y << " updated_Repro_output global_1: " << fec(1) << endl; + Get_Benchmarks(show_MSY); +// report5 << 0 << " y: " << y << " updated_Repro_output global_2: " << fec(1) << endl; + did_MSY = 0; + } + } + SS2out << endl; + return; + } + +// note that FUNCTION write_Bzero_output() is found in file SS_write.tpl +FUNCTION dvector process_comps(const int sexes, const int sex, dvector& bins, dvector& means, const dvector& tails, + dvector& obs, dvector& exp) + { + dvector more_comp_info(1, 20); + double cumdist; + double cumdist_save; + double temp, temp1, temp2; + int z; + more_comp_info.initialize(); + // sexes is 1 or 2 for numbers of sexes in model + // sex is 0, 1, 2, 3 for range of sexes used in this sample + int nbins = bins.indexmax() / sexes; // find number of bins + // do both sexes tails(4) has been set to tails(2) if males not in this sample + if ((sex == 3 && sexes == 2) || sex == 0 || sexes == 1) + { + more_comp_info(1) = obs(tails(1), tails(4)) * means(tails(1), tails(4)); + more_comp_info(2) = exp(tails(1), tails(4)) * means(tails(1), tails(4)); + more_comp_info(3) = more_comp_info(1) - more_comp_info(2); + // calc tails of distribution and Durbin-Watson for autocorrelation + temp1 = 0.0; + temp2 = 0.0; + cumdist_save = 0.0; + cumdist = 0.0; + for (z = 1; z <= nbins; z++) + { + cumdist += exp(z); + if (sexes == 2) + cumdist += exp(z + nbins); // add males and females + if (cumdist >= 0.05 && cumdist_save < 0.05) // found bin for 5% + { + if (z == 1) + { + more_comp_info(4) = bins(z); + } // set to lower edge + else + { + more_comp_info(4) = bins(z) + (bins(min(z + 1, nbins)) - bins(z)) * (0.05 - cumdist_save) / (cumdist - cumdist_save); + } + } + if (cumdist >= 0.95 && cumdist_save < 0.95) // found bin for 95% + { + more_comp_info(5) = bins(z) + (bins(min(z + 1, nbins)) - bins(z)) * (0.95 - cumdist_save) / (cumdist - cumdist_save); + } + cumdist_save = cumdist; + + temp = obs(z) - exp(z); // obs-exp + if (z > tails(1)) + { + more_comp_info(6) += square(temp2 - temp); + temp1 += square(temp); + } + temp2 = temp; + } + + if (sex == 3 && sexes == 2) // do sex ratio + { + more_comp_info(19) = sum(obs(tails(1), tails(2))); // sum obs female fractions = %female + more_comp_info(20) = sum(exp(tails(1), tails(2))); // sum exp female fractions = %female + for (z = tails(3); z <= tails(4); z++) + { + temp = obs(z) - exp(z); // obs-exp + if (z > tails(3)) + { + more_comp_info(6) += square(temp2 - temp); + temp1 += square(temp); + } + temp2 = temp; + } + } + more_comp_info(6) = (more_comp_info(6) / temp1) - 2.0; + } + + if (sex == 1 || (sex == 3 && sexes == 2)) // need females + { + // where means() holds midpoints of the data length bins + more_comp_info(7) = (obs(tails(1), tails(2)) * means(tails(1), tails(2))) / sum(obs(tails(1), tails(2))); + more_comp_info(8) = (exp(tails(1), tails(2)) * means(tails(1), tails(2))) / sum(exp(tails(1), tails(2))); + more_comp_info(9) = more_comp_info(7) - more_comp_info(8); + // calc tails of distribution and Durbin-Watson for autocorrelation + temp1 = 0.0; + temp2 = 0.0; + cumdist_save = 0.0; + cumdist = 0.0; + for (z = tails(1); z <= tails(2); z++) + { + cumdist += exp(z); + if (cumdist >= 0.05 * more_comp_info(20) && cumdist_save < 0.05 * more_comp_info(20)) // found bin for 5% + { + if (z == 1) + { + more_comp_info(10) = bins(z); + } // set to lower edge + else + { + more_comp_info(10) = bins(z) + (bins(min(z + 1, nlen_bin)) - bins(z)) * (0.05 * more_comp_info(20) - cumdist_save) / (cumdist - cumdist_save); + } + } + if (cumdist >= 0.95 * more_comp_info(20) && cumdist_save < 0.95 * more_comp_info(20)) // found bin for 95% + { + more_comp_info(11) = bins(z) + (bins(min(z + 1, nlen_bin)) - bins(z)) * (0.95 * more_comp_info(20) - cumdist_save) / (cumdist - cumdist_save); + } + cumdist_save = cumdist; + + temp = obs(z) - exp(z); // obs-exp + if (z > tails(1)) + { + more_comp_info(12) += square(temp2 - temp); + temp1 += square(temp); + } + temp2 = temp; // save current delta + } + more_comp_info(12) = (more_comp_info(12) / temp1) - 2.0; + } + if (sex >= 2 && sexes == 2) // need males + { + more_comp_info(13) = (obs(tails(3), tails(4)) * means(tails(3), tails(4))) / sum(obs(tails(3), tails(4))); + more_comp_info(14) = (exp(tails(3), tails(4)) * means(tails(3), tails(4))) / sum(exp(tails(3), tails(4))); + more_comp_info(15) = more_comp_info(13) - more_comp_info(14); + // calc tails of distribution and Durbin-Watson for autocorrelation + temp1 = 0.0; + temp2 = 0.; + cumdist_save = 0.0; + cumdist = 0.0; + // where (1-more_comp_info(20)) is the total of male fractions + for (z = tails(3); z <= tails(4); z++) + { + cumdist += exp(z); + if (cumdist >= 0.05 * (1.0 - more_comp_info(20)) && cumdist_save < 0.05 * (1.0 - more_comp_info(20))) // found bin for 5% + { + if (z == nbins + 1) + { + more_comp_info(16) = bins(z); + } // set to lower edge + else + { + more_comp_info(16) = bins(z) + (bins(min(z + 1, 2 * nbins)) - bins(z)) * (0.05 * more_comp_info(20) - cumdist_save) / (cumdist - cumdist_save); + } + } + if (cumdist >= 0.95 * (1.0 - more_comp_info(20)) && cumdist_save < 0.95 * (1.0 - more_comp_info(20))) // found bin for 95% + { + more_comp_info(17) = bins(z) + (bins(min(z + 1, 2 * nbins)) - bins(z)) * (0.95 * (1.0 - more_comp_info(20)) - cumdist_save) / (cumdist - cumdist_save); + } + cumdist_save = cumdist; + + temp = obs(z) - exp(z); // obs-exp + if (z > tails(3)) + { + more_comp_info(18) += square(temp2 - temp); + temp1 += square(temp); + } + temp2 = temp; // save current delta + } + more_comp_info(18) = (more_comp_info(18) / temp1) - 2.0; + } + + return more_comp_info; + } + +FUNCTION int determine_speriod(int s_period, adstring a_string, dvariable var2, dvariable var3) + { + if (var2 < 0 && s_period == 0) + { + s_period = 1; + a_string = "Sup"; + } + else if (var2 < 0 && s_period > 0) + { + s_period = 0; + a_string = "Sup"; + } + else if (s_period > 0) + { + s_period++; + a_string = "Sup"; + } + else + { + a_string = "_"; + } + if (var3 < 0) + { + a_string += " skip"; + } + else + { + a_string += " _"; + } + return s_period; + } +// SS_Label_file #20. **SS_ALK.tpl** +// SS_Label_file # * Make_AgeLength_Key() // calculates age-length key for a particular season and subseason; uses calc_ALK or calc_ALK_log +// SS_Label_file # * calc_ALK_range() // allows for condensing range of lengths for each age, but no longer used +// SS_Label_file # * calc_ALK() // calculates normal distribution of length-at-age +// SS_Label_file # * calc_ALK_log() // for lognormal distribution of length-at-age +// SS_Label_file # + +FUNCTION void Make_AgeLength_Key(const int s, const int subseas) + { + //******************************************************************** + /* SS_Label_FUNCTION 31 Make_AgeLength_Key */ + // this is called for each subseason of each year + // checks to see if a re-calc of the ALK is needed for that time step + // if it is, then it loops through all possible biological entities "g" (sex, growth pattern, settlement event, platoon) + // then it retrieves the previously calculated and stored mean size-at-age from Ave_Size(t,subseas,gstart) + // moves these mean sizes into a _W working vector + // then it calls calc_ALK to make and store the age-length key for that subseason for each biological entity + + int gstart = 0; + dvariable dvar_platoon_ratio = platoon_sd_ratio; + dvariable dvar_between_platoon = sd_between_platoon; + dvariable dvar_within_platoon = sd_within_platoon; + dvar_vector use_Ave_Size_W(0, nages); + dvar_vector use_SD_Size(0, nages); + imatrix ALK_range_use(0, nages, 1, 2); + ALK_idx = (s - 1) * N_subseas + subseas; + if (ALK_subseas_update(ALK_idx) == 1) // so need to calculate + { + ALK_subseas_update(ALK_idx) = 0; // reset to 0 to indicate update has been done + gp = 0; + // calculate the between and within stdev ratio + // when sd_ratio_rd is > 0, values are constant and calculations are already done. + if (sd_ratio_rd < 0) + { + dvar_platoon_ratio = MGparm(sd_ratio_param_ptr); + dvar_between_platoon = sqrt(1. / (1. + dvar_platoon_ratio * dvar_platoon_ratio)); + dvar_within_platoon = dvar_platoon_ratio * dvar_between_platoon; + platoon_sd_ratio = value(dvar_platoon_ratio); + sd_between_platoon = value(dvar_between_platoon); + sd_within_platoon = value(dvar_within_platoon); + } + + for (int sex = 1; sex <= gender; sex++) + for (GPat = 1; GPat <= N_GP; GPat++) + { + gp = gp + 1; + gstart = g_Start(gp); // base platoon + for (settle = 1; settle <= N_settle_timings; settle++) + { + gstart += N_platoon; + if (recr_dist_pattern(GPat, settle, 0) > 0) + { + + // update the sd_within and sb_between here. Used to be in growth2 function + // SS_Label_Info_16.5.2 #do calculations related to std.dev. of size-at-age + // SS_Label_Info_16.5.3 #if (y=styr), calc CV_G(gp,s,a) by interpolation on age or LAA + // doing this just at y=styr prevents the CV from changing as time-vary growth updates over time + g = gstart; + if (CV_const(gp) > 0 && y == styr) + { + for (a = 0; a <= nages; a++) + { + if (real_age(g, ALK_idx, a) < AFIX) + { + CV_G(gp, ALK_idx, a) = CVLmin(gp); + } + else if (real_age(g, ALK_idx, a) >= AFIX2_forCV) + { + CV_G(gp, ALK_idx, a) = CVLmax(gp); + } + else if (CV_depvar_a == 0) + { + CV_G(gp, ALK_idx, a) = CVLmin(gp) + (Ave_Size(t, subseas, g, a) - Lmin(gp)) * CV_delta(gp); + } + else + { + CV_G(gp, ALK_idx, a) = CVLmin(gp) + (real_age(g, ALK_idx, a) - AFIX) * CV_delta(gp); + } + } // end age loop + } + else + { + // already set constant to CVLmi + } + // SS_Label_Info_16.5.4 #calc stddev of size-at-age from CV_G(gp,s,a) and Ave_Size(t,g,a) + if (CV_depvar_b == 0) + { + Sd_Size_within(ALK_idx, g) = SD_add_to_LAA + elem_prod(CV_G(gp, ALK_idx), Ave_Size(t, subseas, g)); + } + else + { + Sd_Size_within(ALK_idx, g) = SD_add_to_LAA + CV_G(gp, ALK_idx); + } + // SS_Label_Info_16.3.5 #if platoons being used, calc the stddev between platoons + if (N_platoon > 1) + { + Sd_Size_between(ALK_idx, g) = Sd_Size_within(ALK_idx, g) * dvar_between_platoon; + Sd_Size_within(ALK_idx, g) *= dvar_within_platoon; + } + + if (docheckup == 1) + { + echoinput << "with lingrow; subseas: " << subseas << " sex: " << sx(g) << " gp: " << GP4(g) << " g: " << g << endl; + echoinput << "size " << Ave_Size(t, subseas, g)(0, min(6, nages)) << " @nages " << Ave_Size(t, subseas, g, nages) << endl; + if (CV_depvar_b == 0) + echoinput << "CV " << CV_G(gp, ALK_idx)(0, min(6, nages)) << " @nages " << CV_G(gp, ALK_idx, nages) << endl; + echoinput << "sd " << Sd_Size_within(ALK_idx, g)(0, min(6, nages)) << " @nages " << Sd_Size_within(ALK_idx, g, nages) << endl; + } + + // end sd_within updating + + for (gp2 = 1; gp2 <= N_platoon; gp2++) // loop the platoons + { + g = gstart + ishadow(gp2); + + use_Ave_Size_W = Ave_Size(t, subseas, gstart); + use_SD_Size = Sd_Size_within(ALK_idx, gstart); + if (N_platoon > 1) + { + use_Ave_Size_W += shadow(gp2) * Sd_Size_between(ALK_idx, gstart); + Ave_Size(t, subseas, g) = use_Ave_Size_W; // only needed for reporting because use_Ave_Size_W used for calcs + Sd_Size_within(ALK_idx, g) = use_SD_Size; // ditto; also same sd is used for all platoons + } + + if (Grow_logN == 0) + { + ALK(ALK_idx, g) = calc_ALK(len_bins, use_Ave_Size_W, use_SD_Size); + } + else + { + ALK(ALK_idx, g) = calc_ALK_log(log_len_bins, use_Ave_Size_W, use_SD_Size); + } + } // end platoon loop + } + } // end settle loop + } // end growth pattern&gender loop + } + } // end Make_AgeLength_Key + +FUNCTION imatrix calc_ALK_range(const dvector& len_bins, const dvar_vector& mean_len_at_age, const dvar_vector& sd_len_at_age, + const double ALK_tolerance) + { + // SS_Label_FUNCTION_31.2 # calc_ALK_range finds the range for the distribution of length for each age + int a, z = 0; // declare indices + int nlength = len_bins.indexmax(); // find number of lengths + int nages = mean_len_at_age.indexmax(); // find number of ages + imatrix ALK_range(0, nages, 1, 2); // stores minimum and maximum + dvariable len_dev; + double ALK_tolerance_2; + ALK_tolerance_2 = 1.0 - ALK_tolerance; + for (a = 0; a <= nages; a++) + { + if (ALK_tolerance == 0.00) + { + ALK_range(a, 1) = 1; + ALK_range(a, 2) = nlength; + } + else + { + z = 1; + temp = 0.0; + while (temp < ALK_tolerance && z < nlength) + { + len_dev = (len_bins(z) - mean_len_at_age(a)) / (sd_len_at_age(a)); + temp = cumd_norm(len_dev); + z++; + } + ALK_range(a, 1) = z; + temp = 0.0; + while (temp < ALK_tolerance_2 && z < nlength) + { + len_dev = (len_bins(z) - mean_len_at_age(a)) / (sd_len_at_age(a)); + temp = cumd_norm(len_dev); + z++; + } // end length loop + ALK_range(a, 2) = min(z, nlength); + } + } // end age loop + return (ALK_range); + } + +// the function calc_ALK is called by Make_AgeLength_Key to calculate the distribution of length for each age +FUNCTION dvar_matrix calc_ALK(const dvector& len_bins, const dvar_vector& mean_len_at_age, const dvar_vector& sd_len_at_age) + { + // the function calc_ALK is called by Make_AgeLength_Key to calculate the distribution of length for each age + RETURN_ARRAYS_INCREMENT(); + // SS_Label_FUNCTION_31.2 #Calculate the ALK + int a, z; // declare indices + int nlength = len_bins.indexmax(); // find number of lengths + int nages = mean_len_at_age.indexmax(); // find number of ages + dvar_matrix ALK_w(0, nages, 1, nlength); // create matrix to return with length vectors for each age + dvar_vector AL(1, nlength + 1); // create temporary vector + dvariable len_dev; + // ALK_count++; + ALK_w.initialize(); + for (a = 0; a <= nages; a++) + { + AL.initialize(); + for (z = 1; z <= nlength; z++) + { + len_dev = (len_bins(z) - mean_len_at_age(a)) / (sd_len_at_age(a)); + AL(z) = cumd_norm(len_dev); + } + AL(nlength + 1, nlength + 1) = 1.0; + ALK_w(a) = first_difference(AL); + ALK_w(a, 1) += AL(1); // because first bin is from cumulative calc + } // end age loop + + RETURN_ARRAYS_DECREMENT(); + return (ALK_w); + } + +FUNCTION dvar_matrix calc_ALK_log(const dvector& len_bins, const dvar_vector& mean_len_at_age, const dvar_vector& sd_len_at_age) + { + RETURN_ARRAYS_INCREMENT(); + //SS_Label_FUNCTION_31.3 #Calculate the ALK with lognormal error, called when Grow_logN==1 + int a, z; // declare indices + int nlength = len_bins.indexmax(); // find number of lengths + int nages = mean_len_at_age.indexmax(); // find number of ages + dvar_matrix ALK_w(0, nages, 1, nlength); // create matrix to return with length vectors for each age + dvar_vector AL(1, nlength + 1); // create temporary vector + dvariable len_dev; + dvariable temp; + + AL(1) = 0.0; + AL(nlength + 1) = 1.0; // terminal values that are not recalculated + + for (a = 0; a <= nages; a++) + { + temp = log(mean_len_at_age(a)) - 0.5 * sd_len_at_age(a) * sd_len_at_age(a); + for (z = 2; z <= nlength; z++) + { + len_dev = (len_bins(z) - temp) / (sd_len_at_age(a)); + AL(z) = cumd_norm(len_dev); + } // end length loop + ALK_w(a) = first_difference(AL); + } // end age loop + RETURN_ARRAYS_DECREMENT(); + return (ALK_w); + } + +// SS_Label_file #21. **SS_timevaryparm.tpl** +// SS_Label_file # * make_timevaryparm() // makes parameters a function of input environmental data time series +// SS_Label_file # * make_densitydependent_parm() // for the current year, changes a parameter value as a function of summary bio or recruitment at beginning of this year +// SS_Label_file # + +//********************************************************************* + /* SS_Label_Function_14 #make_timevaryparm(): create trend and block time series */ +FUNCTION void make_timevaryparm() + { + dvariable baseparm; + baseparm_min = -999.; // fill array with default + baseparm_max = 999; // fill array with default + dvariable endtrend; + dvariable infl_year; + dvariable slope; + dvariable norm_styr; + // note: need to implement the approach that keeps within bounds of base parameter + + int timevary_parm_cnt_all; + timevary_parm_cnt_all = 0; + if (do_once == 1) + echoinput << endl + << "**********************" << endl + << "number of parameters with timevary: " << timevary_cnt << endl; + + for (int tvary = 1; tvary <= timevary_cnt; tvary++) + { + ivector timevary_setup(1, 14); + timevary_setup(1, 14) = timevary_def[tvary](1, 14); + if (do_once == 1) + echoinput << "timevary #: " << tvary << endl + << "setup: " << timevary_setup << endl; + // what type of parameter is being affected? get the baseparm and its bounds + switch (timevary_setup(1)) // parameter type + { + case 1: // MG + { + baseparm = MGparm(timevary_setup(2)); // index of base parm + baseparm_min(tvary) = MGparm_LO(timevary_setup(2)); + baseparm_max(tvary) = MGparm_HI(timevary_setup(2)); + if (do_once == 1) + echoinput << "base MGparm " << baseparm << endl; + for (j = timevary_setup(3); j < timevary_def[tvary + 1](3); j++) + { + timevary_parm_cnt_all++; + timevary_parm(timevary_parm_cnt_all) = MGparm(N_MGparm + j); + if (do_once == 1) + echoinput << j << " timevary_parm: " << timevary_parm(timevary_parm_cnt_all) << endl; + } + parm_timevary(tvary) = baseparm; // fill timeseries with base parameter, just in case + break; + } + case 2: // SR + { + baseparm = SRparm(timevary_setup(2)); // index of base parm + baseparm_min(tvary) = SRparm_LO(timevary_setup(2)); + baseparm_max(tvary) = SRparm_HI(timevary_setup(2)); + if (do_once == 1) + echoinput << "base SRparm " << baseparm << endl; + for (j = timevary_setup(3); j < timevary_def[tvary + 1](3); j++) + { + timevary_parm_cnt_all++; + timevary_parm(timevary_parm_cnt_all) = SRparm(N_SRparm(SR_fxn) + 3 + j - timevary_SRparm_first + 1); + if (do_once == 1) + echoinput << j << " timevary_parm: " << timevary_parm(timevary_parm_cnt_all) << endl; + } + parm_timevary(tvary) = baseparm; // fill timeseries with base parameter, just in case + break; + } + case 3: // Q + { + baseparm = Q_parm(timevary_setup(2)); // index of base parm + baseparm_min(tvary) = Q_parm_LO(timevary_setup(2)); + baseparm_max(tvary) = Q_parm_HI(timevary_setup(2)); + if (do_once == 1) + echoinput << "base Qparm " << baseparm << endl; + for (j = timevary_setup(3); j < timevary_def[tvary + 1](3); j++) + { + timevary_parm_cnt_all++; + timevary_parm(timevary_parm_cnt_all) = Q_parm(Q_Npar + j - timevary_parm_start_Q + 1); + if (do_once == 1) + echoinput << j << " timevary_parm: " << timevary_parm(timevary_parm_cnt_all) << endl; + } + parm_timevary(tvary) = baseparm; // fill timeseries with base parameter, just in case + break; + } + case 5: // selex + { + baseparm = selparm(timevary_setup(2)); // index of base parm + baseparm_min(tvary) = selparm_LO(timevary_setup(2)); + baseparm_max(tvary) = selparm_HI(timevary_setup(2)); + if (do_once == 1) + echoinput << "base selparm " << baseparm << endl; + for (j = timevary_setup(3); j < timevary_def[tvary + 1](3); j++) + { + timevary_parm_cnt_all++; + timevary_parm(timevary_parm_cnt_all) = selparm(N_selparm + j - timevary_parm_start_sel + 1); + if (do_once == 1) + echoinput << j << " timevary_parm: " << timevary_parm(timevary_parm_cnt_all) << endl; + } + parm_timevary(tvary) = baseparm; // fill timeseries with base parameter, just in case + break; + } + } + + timevary_parm_cnt = timevary_setup(3); // first parameter used to create timevary effect on baseparm + if (timevary_setup(4) > 0) // block + { + if (do_once == 1) + echoinput << "block pattern " << z << endl; + z = timevary_setup(4); // specified block pattern + g = 1; + temp = baseparm; + for (a = 1; a <= Nblk(z); a++) + { + switch (timevary_setup(5)) + { + case 0: + { + temp = baseparm * mfexp(timevary_parm(timevary_parm_cnt)); + timevary_parm_cnt++; + break; + } + case 1: + { + temp = baseparm + timevary_parm(timevary_parm_cnt); + timevary_parm_cnt++; + break; + } + case 2: + { + temp = timevary_parm(timevary_parm_cnt); // direct assignment of block value + timevary_parm_cnt++; + break; + } + case 3: + { + temp += timevary_parm(timevary_parm_cnt); // block as offset from previous block + timevary_parm_cnt++; + break; + } + } + + for (int y1 = Block_Design(z, g); y1 <= Block_Design(z, g + 1); y1++) // loop years for this block + { + parm_timevary(tvary, y1) = temp; + } + g += 2; + } + // timevary_parm_cnt--; // back out last increment + } // end uses blocks + + else if (timevary_setup(4) < 0) // trend + { + // timevary_parm(timevary_parm_cnt+0) = offset for the trend at endyr; 3 options available below + // timevary_parm(timevary_parm_cnt+1) = inflection year; 2 options available + // timevary_parm(timevary_parm_cnt+2) = stddev of normal at inflection year + // calc endyr value, + if (do_once == 1) + echoinput << "logistic trend over time " << endl; + if (timevary_setup(4) == -1) // use logistic transform to keep with bounds of the base parameter + { + endtrend = log((baseparm_max(tvary) - baseparm_min(tvary) + 0.0000002) / (baseparm - baseparm_min(tvary) + 0.0000001) - 1.) / (-2.); // transform the base parameter + endtrend += timevary_parm(timevary_parm_cnt); // add the offset Note that offset value is in the transform space + endtrend = baseparm_min(tvary) + (baseparm_max(tvary) - baseparm_min(tvary)) / (1. + mfexp(-2. * endtrend)); // backtransform + infl_year = log(0.5) / (-2.); // transform the base parameter + infl_year += timevary_parm(timevary_parm_cnt + 1); // add the offset Note that offset value is in the transform space + infl_year = r_years(styr) + (r_years(endyr) - r_years(styr)) / (1. + mfexp(-2. * infl_year)); // backtransform + } + else if (timevary_setup(4) == -2) // set ending value directly + { + endtrend = timevary_parm(timevary_parm_cnt); + infl_year = timevary_parm(timevary_parm_cnt + 1); + } + else if (timevary_setup(4) == -3) // use parm as fraction of way between bounds + { + endtrend = baseparm_min(tvary) + (baseparm_max(tvary) - baseparm_min(tvary)) * timevary_parm(timevary_parm_cnt); + infl_year = r_years(styr) + (r_years(endyr) - r_years(styr)) * timevary_parm(timevary_parm_cnt + 1); + } + slope = timevary_parm(timevary_parm_cnt + 2); + timevary_parm_cnt += 3; + + norm_styr = cumd_norm((r_years(styr) - infl_year) / slope); + temp = (endtrend - baseparm) / (cumd_norm((r_years(endyr) - infl_year) / slope) - norm_styr); // delta in cum_norm between styr and endyr + + for (int y1 = styr; y1 <= YrMax; y1++) + { + if (y1 <= endyr) + { + parm_timevary(tvary, y1) = baseparm + temp * (cumd_norm((r_years(y1) - infl_year) / slope) - norm_styr); + } + else + { + parm_timevary(tvary, y1) = parm_timevary(tvary, endyr); + } + } + parm_timevary(tvary, styr - 1) = baseparm; + } + + if (timevary_setup(7) > 0) // env link (negative value indicates density-dependence which is calculated year-by-year in different function) + { + if (do_once == 1) + echoinput << "env_link to env_variable: " << timevary_setup(7) << " using link_type " << timevary_setup(6) << endl; + switch (int(timevary_setup(6))) + { + case 1: // exponential env link + { + for (int y1 = styr - 1; y1 <= YrMax; y1++) + { + parm_timevary(tvary, y1) *= mfexp(timevary_parm(timevary_parm_cnt) * (env_data(y1, timevary_setup(7)))); + } + timevary_parm_cnt++; + break; + } + case 2: // linear env link + { + for (int y1 = styr - 1; y1 <= YrMax; y1++) + { + parm_timevary(tvary, y1) += timevary_parm(timevary_parm_cnt) * env_data(y1, timevary_setup(7)); + } + timevary_parm_cnt++; + break; + } + case 3: // result constrained by baseparm_min-max; input values are unit normal + { + dvariable temp; + double p_range = baseparm_max(tvary) - baseparm_min(tvary); + + for (int y1 = env_data_minyr(timevary_setup(7)); y1 <= env_data_maxyr(timevary_setup(7)); y1++) + { + temp = log((parm_timevary(tvary, y1) - baseparm_min(tvary) + 1.0e-7) / (baseparm_max(tvary) - parm_timevary(tvary, y1) + 1.0e-7)); + temp += timevary_parm(timevary_parm_cnt) * env_data(y1, timevary_setup(7)); + parm_timevary(tvary, y1) = baseparm_min(tvary) + p_range / (1.0 + exp(-temp)); + } + timevary_parm_cnt++; + break; + } + case 4: // logistic env link + { + // first parm is offset; second is slope + for (int y1 = styr - 1; y1 <= YrMax; y1++) + { + parm_timevary(tvary, y1) *= 2.00000 / (1.00000 + mfexp(-timevary_parm(timevary_parm_cnt + 1) * (env_data(y1, timevary_setup(7)) - timevary_parm(timevary_parm_cnt)))); + } + timevary_parm_cnt += 2; + break; + } + } + } + // SS_Label_Info_14.3 #Create parm dev randwalks if needed + if (timevary_setup(8) > 0) // devs + { + k = timevary_setup(8); // dev used + if (do_once == 1) + echoinput << "dev vector #: " << k << endl; + parm_dev_stddev(k) = timevary_parm(timevary_parm_cnt); + parm_dev_rho(k) = timevary_parm(timevary_parm_cnt + 1); + int picker = timevary_setup(9); // selects the method for creating time-vary parameter from dev vector + + switch (picker) + { + case 1: + { + for (j = timevary_setup(10); j <= timevary_setup(11); j++) + { + parm_timevary(tvary, j) *= mfexp(parm_dev(k, j) * parm_dev_stddev(k)); + } + break; + } + case 2: + { + for (j = timevary_setup(10); j <= timevary_setup(11); j++) + { + parm_timevary(tvary, j) += parm_dev(k, j) * parm_dev_stddev(k); + } + break; + } + case 3: + { + parm_dev_rwalk(k, timevary_setup(10)) = parm_dev(k, timevary_setup(10)) * parm_dev_stddev(k); + parm_timevary(tvary, timevary_setup(10)) += parm_dev_rwalk(k, timevary_setup(10)); + for (j = timevary_setup(10) + 1; j <= timevary_setup(11); j++) + { + parm_dev_rwalk(k, j) = parm_dev_rwalk(k, j - 1) + parm_dev(k, j) * parm_dev_stddev(k); + parm_timevary(tvary, j) += parm_dev_rwalk(k, j); + } + break; + } + case 4: // mean reverting random walk + { + parm_dev_rwalk(k, timevary_setup(10)) = parm_dev(k, timevary_setup(10)) * parm_dev_stddev(k); // 1st yr dev + parm_timevary(tvary, timevary_setup(10)) += parm_dev_rwalk(k, timevary_setup(10)); // add dev to current value + for (j = timevary_setup(10) + 1; j <= timevary_setup(11); j++) + { + // =(1-rho)*mean + rho*prevval + dev // where mean = 0.0 + parm_dev_rwalk(k, j) = parm_dev_rho(k) * parm_dev_rwalk(k, j - 1) + parm_dev(k, j) * parm_dev_stddev(k); // update MRRW using annual dev + parm_timevary(tvary, j) += parm_dev_rwalk(k, j); // add dev to current value of annual parameter, which may previously be adjusted by block or env + } + break; + } + case 6: // mean reverting random walk with penalty to keep rmse near 1.0 + { + parm_dev_rwalk(k, timevary_setup(10)) = parm_dev(k, timevary_setup(10)) * parm_dev_stddev(k); // 1st yr dev + parm_timevary(tvary, timevary_setup(10)) += parm_dev_rwalk(k, timevary_setup(10)); // add dev to current value + for (j = timevary_setup(10) + 1; j <= timevary_setup(11); j++) + { + // =(1-rho)*mean + rho*prevval + dev // where mean = 0.0 + parm_dev_rwalk(k, j) = parm_dev_rho(k) * parm_dev_rwalk(k, j - 1) + parm_dev(k, j) * parm_dev_stddev(k); // update MRRW using annual dev + parm_timevary(tvary, j) += parm_dev_rwalk(k, j); // add dev to current value of annual parameter, which may previously be adjusted by block or env + } + break; + } + case 5: // mean reverting random walk constrained by base parameter's min-max: + { + // NOTE: if the stddev parameter is greater than 1.8, the distribution of adjusted parameters will become U-shaped + dvariable temp; + double p_range = baseparm_max(tvary) - baseparm_min(tvary); + int j = timevary_setup(10); + parm_dev_rwalk(k, j) = parm_dev(k, j) * parm_dev_stddev(k); // 1st yr dev + // p_base=(parm_timevary(tvary,j)-baseparm_min(tvary))/(baseparm_max(tvary)-baseparm_min(tvary)); // convert parm to (0,1) scale + // temp=log(p_base/(1.-p_base)) + parm_dev_rwalk(k,j); // convert to logit and add dev; so dev must be in units of the logit + temp = log((parm_timevary(tvary, j) - baseparm_min(tvary) + 1.0e-7) / (baseparm_max(tvary) - parm_timevary(tvary, j) + 1.0e-7)); + parm_timevary(tvary, j) = baseparm_min(tvary) + p_range / (1.0 + exp(-temp - parm_dev_rwalk(k, j))); + for (j = timevary_setup(10) + 1; j <= timevary_setup(11); j++) + { + // =(1-rho)*mean + rho*prevval + dev // where mean = 0.0 + parm_dev_rwalk(k, j) = parm_dev_rho(k) * parm_dev_rwalk(k, j - 1) + parm_dev(k, j) * parm_dev_stddev(k); // update MRRW using annual dev + temp = log((parm_timevary(tvary, j) - baseparm_min(tvary) + 1.0e-7) / (baseparm_max(tvary) - parm_timevary(tvary, j) + 1.0e-7)); + parm_timevary(tvary, j) = baseparm_min(tvary) + p_range / (1.0 + exp(-temp - parm_dev_rwalk(k, j))); + } + break; + } + } + if (timevary_setup(14) == 1) // continue_last + { + for (j = timevary_setup(11) + 1; j <= YrMax; j++) + parm_timevary(tvary, j) = parm_timevary(tvary, timevary_setup(11)); + } + } + if (do_once == 1) + echoinput << "result by year: " << parm_timevary(tvary) << endl; + } + } // end timevary_parm setup for all years + +FUNCTION void make_densitydependent_parm(int const y1) + { + + for (int tvary = 1; tvary <= timevary_cnt; tvary++) + { + ivector timevary_setup(1, 13); + timevary_setup(1, 13) = timevary_def[tvary](1, 13); + if (timevary_setup(7) < 0) // density-dependent + { + int env_var = timevary_setup(7); + timevary_parm_cnt = timevary_setup(3); // link parameter index + if (do_once == 1) + echoinput << y1 << " density-dependent to env_variable: " << env_var << " using link_type " + << timevary_setup(6) << " env: " << env_data(y1, env_var) << " parm: " << timevary_parm(timevary_parm_cnt) << endl; + switch (int(timevary_setup(6))) + { + case 1: // exponential env link + { + parm_timevary(tvary, y1) *= mfexp(timevary_parm(timevary_parm_cnt) * env_data(y1, env_var)); + break; + } + case 2: // linear env link + { + parm_timevary(tvary, y1) += timevary_parm(timevary_parm_cnt) * env_data(y1, env_var); + break; + } + case 3: // result constrained by baseparm_min-max; input values are unit normal + { + dvariable temp; + double p_range = baseparm_max(tvary) - baseparm_min(tvary); + temp = log((parm_timevary(tvary, y1) - baseparm_min(tvary) + 1.0e-7) / (baseparm_max(tvary) - parm_timevary(tvary, y1) + 1.0e-7)); + temp += timevary_parm(timevary_parm_cnt) * env_data(y1, env_var); + parm_timevary(tvary, y1) = baseparm_min(tvary) + p_range / (1.0 + exp(-temp)); + break; + } + case 4: // logistic env link + { + // first parm is offset ; second is slope + parm_timevary(tvary, y1) = 2.00000 / (1.00000 + mfexp(-timevary_parm(timevary_parm_cnt + 1) * (env_data(y1, env_var) - timevary_parm(timevary_parm_cnt)))); + break; + } + } + } + } + } + +// SS_Label_file #22. **SS_tagrecap.tpl** +// SS_Label_file # * Tag_Recapture() // calculates expected values for number of tags returned by each fleet(and area), in each time step, for each tag release group +// SS_Label_file # + +FUNCTION void Tag_Recapture() + { + // SS_Label_Info_24.15 #do tag mortality, movement and recapture revise 7/10/2019 + dvariable TG_init_loss; + dvariable TG_chron_loss; + TG_recap_exp.initialize(); + + // get reporting rates by fleet that will be used for all Tag Groups + for (f = 1; f <= Nfleet1; f++) + { + j = 3 * N_TG + f; + if (TG_parm_PH(j) == -1000.) + { + TG_report(f) = TG_report(f - 1); + } // do nothing keep same value + else + { + if (TG_parm_PH(j) > -1000.) + { + k = j; + } + else + { + k = -1000 - TG_parm_PH(j); + } + TG_report(f) = mfexp(TG_parm(k)) / (1. + mfexp(TG_parm(k))); + } + j += Nfleet1; + if (TG_parm_PH(j) == -1000.) + { + TG_rep_decay(f) = TG_rep_decay(f - 1); + } // do nothing keep same value + else + { + if (TG_parm_PH(j) > -1000.) + { + k = j; + } + else + { + k = -1000 - TG_parm_PH(j); + } + TG_rep_decay(f) = TG_parm(k); + } + } + for (TG = 1; TG <= N_TG; TG++) + { + firstseas = int(TG_release(TG, 4)); // release season + t = int(TG_release(TG, 5)); // release t index calculated in data section from year and season of release + p = int(TG_release(TG, 2)); // release area + gg = int(TG_release(TG, 6)); // gender (1=fem; 2=male; 0=both + a1 = int(TG_release(TG, 7)); // age at release + + TG_alive.initialize(); + if (gg == 0) + { + for (g = 1; g <= gmorph; g++) + { + TG_alive(p, g) = natage(t, p, g, a1); + } // gets both genders + } + else + { + for (g = 1; g <= gmorph; g++) + { + if (sx(g) == gg) + { + TG_alive(p, g) = natage(t, p, g, a1); + } // only does the selected gender + } + } + if (TG_parm_PH(TG) == -1000.) + { + } // do nothing keep same TG_init_loss + else + { + if (TG_parm_PH(TG) > -1000.) + { + k = TG; + } + else + { + k = -1000 - TG_parm_PH(TG); + } + TG_init_loss = mfexp(TG_parm(k)) / (1. + mfexp(TG_parm(k))); + } + + // get chronic loss parameter + j = TG + N_TG; + if (TG_parm_PH(j) == -1000.) + { + } // do nothing keep same value + else + { + if (TG_parm_PH(j) > -1000.) + { + k = j; + } + else + { + k = -1000 - TG_parm_PH(j) + N_TG; + } + TG_chron_loss = mfexp(TG_parm(k)) / (1. + mfexp(TG_parm(k))); + } + TG_alive /= sum(TG_alive); // proportions across morphs at age a1 in release area p at time of release t + TG_alive *= TG_release(TG, 8); // number released as distributed across morphs + TG_alive *= (1. - TG_init_loss); // initial mortality + if (save_for_report > 0) + { + TG_save(TG, 1) = value(TG_init_loss); + TG_save(TG, 2) = value(TG_chron_loss); + } + TG_t = 0; + for (y = TG_release(TG, 3); y <= endyr; y++) + { + for (s = firstseas; s <= nseas; s++) + { + if (save_for_report > 0 && TG_t <= TG_endtime(TG)) + { + TG_save(TG, 3 + TG_t) = value(sum(TG_alive)); + } // OK to do simple sum because only selected morphs are populated + + for (p = 1; p <= pop; p++) + { + for (g = 1; g <= gmorph; g++) + if (TG_use_morph(TG, g) > 0) + { + for (f = 1; f <= Nfleet; f++) + if (fleet_area(f) == p) + { + // calculate recaptures by fleet + // NOTE: Sel_for_tag(t,f,g,a1) = sel_ret_num(s,f,g,a1)*Hrate(f,t) + if (F_Method == 1) + { + TG_recap_exp(TG, TG_t, f) += TG_alive(p, g) // tags recaptured + * mfexp(-(natM(t, p, GP3(g), a1) + TG_chron_loss) * seasdur_half(s)) * Sel_for_tag(t, f, g, a1) * TG_report(f) * mfexp(TG_t * TG_rep_decay(f)); + } + else // use for method 2 and 3 + { + TG_recap_exp(TG, TG_t, f) += TG_alive(p, g) * Sel_for_tag(t, f, g, a1) / (Z_rate(t, p, g, a1) + TG_chron_loss) * (1. - mfexp(-seasdur(s) * (Z_rate(t, p, g, a1) + TG_chron_loss))) * TG_report(f) * mfexp(TG_t * TG_rep_decay(f)); + } + + if (docheckup == 1) + echoinput << " TG_" << TG << " y_" << y << " s_" << s << " area_" << p << " g_" << g << " GP3_" << GP3(g) << " f_" << f << " a1_" << a1 << " Sel_" << Sel_for_tag(t, f, g, a1) << " TG_alive_" << TG_alive(p, g) << " TG_obs_" << TG_recap_obs(TG, TG_t, f) << " TG_exp_" << TG_recap_exp(TG, TG_t, f) << endl; + } // end fleet loop for recaptures + TG_alive(p, g) *= mfexp(-seasdur(s) * (Z_rate(t, p, g, a1) + TG_chron_loss)); + } // end morph loop + } // end area loop + + if (Hermaphro_Option != 0) + { + if (Hermaphro_seas == -1 || Hermaphro_seas == s) + { + k = gmorph / 2; + for (p = 1; p <= pop; p++) // area + for (g = 1; g <= k; g++) // loop females + if (use_morph(g) > 0) + { + if (Hermaphro_Option == 1) + { + TG_alive(p, g + k) += TG_alive(p, g) * Hermaphro_val(GP4(g), a1); // increment males with females + TG_alive(p, g) *= (1. - Hermaphro_val(GP4(g), a1)); // decrement females + } + else if (Hermaphro_Option == -1) + { + TG_alive(p, g) += TG_alive(p, g + k) * Hermaphro_val(GP4(g + k), a1); // increment females with males + TG_alive(p, g + k) *= (1. - Hermaphro_val(GP4(g + k), a1)); // decrement males + } + } + } + } + + if (do_migration > 0) // movement between areas of tags + { + TG_alive_temp = TG_alive; + TG_alive = 0.0; + for (g = 1; g <= gmorph; g++) + if (use_morph(g) > 0) + { + for (p = 1; p <= pop; p++) // source population + for (p2 = 1; p2 <= pop; p2++) // destination population + { + k = move_pattern(s, GP4(g), p, p2); + if (k > 0) + TG_alive(p2, g) += TG_alive_temp(p, g) * migrrate(y, k, a1); + } + } + if (docheckup == 1) + echoinput << " Tag_alive after survival and movement " << endl + << TG_alive << endl; + } + t++; // increment seasonal time counter + if (TG_t < TG_endtime(TG)) + TG_t++; + if (s == nseas && a1 < nages) + a1++; + } // end seasons + firstseas = 1; // so start with season 1 in year following the tag release + } // end years + } // end loop of tag groups + } // end having tag groups + diff --git a/n_warn.txt b/n_warn.txt new file mode 100644 index 00000000..57d0089f --- /dev/null +++ b/n_warn.txt @@ -0,0 +1,2 @@ +"x" +"1" 0 diff --git a/warnings.txt b/warnings.txt new file mode 100644 index 00000000..360e0885 --- /dev/null +++ b/warnings.txt @@ -0,0 +1,13 @@ +!!version_info += "#V3.30.xx.yy;_safe;_compile_date:_"; +-- Building ss3 with docker in 'SS330' -- +*** Parse: ss3.tpl +tpl2cpp ss3 || tpl2rem ss3 + +*** Compile: ss3.cpp +g++ -c -std=c++17 -O3 -Wall -Wextra -D_USE_MATH_DEFINES -DUSE_ADMB_CONTRIBS -I. -I"/usr/local/admb/include" -I"/usr/local/admb/include/contrib" -oss3.obj ss3.cpp + +*** Linking: ss3.obj +g++ -std=c++17 -O3 -oss3 ss3.obj "/usr/local/admb/lib/libadmb-contrib-x86_64-linux-g++13.a" + +Successfully built executable. + From fd78d6e6bdd9ff66f23ba0a0555234c99c04e12c Mon Sep 17 00:00:00 2001 From: Elizabeth Perl Date: Thu, 24 Jul 2025 17:35:51 +0000 Subject: [PATCH 7/8] delete stuff that I didn't mean to commit and add print before R code to see what's going on --- .github/workflows/build-ss3-warnings.yml | 3 + SS330/ss3 | Bin 4301144 -> 0 bytes SS330/ss3.tpl | 41683 --------------------- n_warn.txt | 2 - 4 files changed, 3 insertions(+), 41685 deletions(-) delete mode 100755 SS330/ss3 delete mode 100644 SS330/ss3.tpl delete mode 100644 n_warn.txt diff --git a/.github/workflows/build-ss3-warnings.yml b/.github/workflows/build-ss3-warnings.yml index 192fc006..4e218903 100644 --- a/.github/workflows/build-ss3-warnings.yml +++ b/.github/workflows/build-ss3-warnings.yml @@ -60,6 +60,9 @@ jobs: chmod 777 SS330 /bin/bash ./Make_SS_330_new.sh --admb docker -b SS330 -w &> warnings.txt + - name: Print warnings + run: cat warnings.txt + - name: Use R to parse warnings output and determine if amount of warnings has changed run: | txt <- readLines("warnings.txt", encoding = "UTF-8") diff --git a/SS330/ss3 b/SS330/ss3 deleted file mode 100755 index 710a4796d991d2ee17e8b1397b473e02b601b26c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4301144 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
#1`vmz=peuMpOuHFY}n8=}s{yt0@t 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ξU&!LHzF4*e;P~!OgX&K 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�p{zHLo9{st_9po_*P4?o?%nX9&VSNA^ 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

@oC`k}SP?(?qK^}tJXcXEF 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

}0y>r$T^D^}o-!yzRp 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௚ zl2foL9`S+G=P`du%X4xlo7GzkHlTdGb}s6ki@s^^E-64M)t!Tv##8+;N^2D;vITBC ztUBZyJ&mw5z_bpX&{8Now1+ae@)Vj$H78kEl4~Q#aZEMo3wo?$`l(d?!(|5T*3f(D zjjzN}i6f{fs};_!k6BrfQM7&d))jemRiY|uW1{cv1zh9* z-azmg!WnI|S>0!Gu2A(*A=@wHVBfT7MYsr&fe>(qKy_}Q^%$>l%kc<7(&_67;Vl2w ziUhQiKzXZriO$N@sb4|}q06de0u$*Qr!&~Y&^b=hKA_}BP*rpqw#lMUO04oDpky@^ zw>2J96GOqcovN*2Nax|WAn_N{rO{ets#7Q?8B_u$ECU~764zI%bpMudpjIS=oh`K* z^>FxQxV~!o)5o@#ySlR1%RPh6VMdvcgBU<9KM~<`&99!V1}7f&Rnys!6N@gc z!)EeT(_!$r_V*;5w%3v36(KU0tBWAB>jYYb`X0le>5E^=?7__VszJ)o*?NB1cTI<2 zvmm_Xw;zQEV;vC&>i~99?T`TW-6l{ahWNbZ2w?Z%%by_8@sbgQ+TE0^0}?2hkDAingGv9Qdt#bhtK`)r{mGHR82qR08{ye&ALWxH2^hq= zR1|z4;6i1Lhf4kN9x73G?Auhz#*vEm^Cyrc597uEkA43S0Xzbgzp!u9MI}m&|kae$=t_8?V?Ri_4c#JLhCU=Vk5!N=rb^p`FfeIjO!%ix0JXA|lN zuZ8X+uJ>Gm0-4~eN)yd`W8lWCU$L`3IcFx^cpT@@%=a)oY0R=jZMAz~z1B!xI$K8a z39r~od2P_;oNg$NeY2X?3@Caj?=qIl^yjp*lsAIq&I%-*R?05%C3I!ArC&O$kFJ{_ zhNRnh*POf27pc{oK`gRXZvcc@%cE8k@Tfl+`hO_3Ka`3Oh1Lu9eHhRkLe|gH@KWn@ z#du4fm+YG5=<~Da`h2UA*5`}YIr@ARsIYmLK7%bH=rgsctfG;+2N2ul+NohfpA9S7b5}P zP9S~108L~-B$)bu;Y=&ujwy5iR;JE}zmu7pIWUkA3H<=t1-*)?GO*yh;J-r=#9ae0 zRtWRCGWBC5h*t!{x+{hoF*hBP$fAFUWjxd&SzWPFf6w*Xw5Tm|?6`=z=y;<#O%(_Mh@eiM@rXx2A zy!7Dv7JzNO8<%78mTe(H5B8fUGYGhspI?)a?2&sJFGyZ-^!pMzXd+AY*K`p!?xdrL zp%1xI>yKhq>qu#U;sq#l2WXMZv(%@UlGt@mgL2f@3}*B+xOOCRU(@^Ltx85xmMnii zD0v}=t12J>bVF*GtMYg}r(=xFWI9$-#^vh@wHGzwn0s;&t68QLenXcaGQ*Z24sjkf z-C?J-(+)gc(M-9zSW?L5t9Iuk3NZ0Z3Iq;~X9_~%nemh12n#T}n9~_c=WxK`F_+_y z(90#~{?hV{D#a%X0xo@vD7jdm{{Rk+UgsruCXrPg35SEm)iSTakw&jojRIcQ=1MK) z;K1Y0){1G9IF85s$G;yQRow`OucN94mxV-CcV8{$s&2jpQPswm;OZGcXr>F$6&&Rm z3psZ!Tg*%h8dxVS-BX8s0^zu#f05Y+1F zLqO7AN@YbVzg5bQ5r06W^7<4E)0%wK_lG@UoA?cp;7>qtdI2jL_e7KIzOXmj@rI@l z&nd|pmyiJ*Ql?Tild>QI*Auuat|4;x4w}`?DYC8wToexws8zu7@@oO z6rN6Z9|c}vt=+P7h9^#2)WUtT7iP3jqPEl5_l5V;m7%>f2Yus_CEpQK!@mT1LU?&1b%Z6)cjNL!JiJr;IHeDpt9o4(9jz6p1>48 zOtRWqGQW$??SQj{Qx-k?*Tja=GC{SM+uB3M)Pt}Bk3={xDnfHF z!c_+0>ju$8nzzKmArFt_kRKHx-iuJpAUqWn;jQ;P9H!%u9Bz$@u?llOVqaw_I)5BpV9?79@ zR0JN4cO^P^;gJZX^c|755@g4F5vm!4kD?;g-3Guy?(Sx|BlsNmzECWkq8^2B6RU0v^NOTqau7V$HQR>9?79! zRD_$o2#E%vc~pdtUiENTghz7t@5*SEKJkhN;Q$_qup=r$q8H&ZgYbG(gxRw_946tB z9G-}ZP{WIGJ`p_Yb`oTis?3KuzHU|Vn`OLLi#Jx6lz8$&B;4@6^#F5Y!qphPix1*r zCcRF3@Cqoyx-p^h?g$}AF(Ax5?eMpi&FnTxsMvRk&l2quvoIO(zN#a|lNW3FXREgN%XU9uJKsRh(PN%oSRsC8A zt?Ch1Ia`41*Va0&a@pyMl&npaf?u4|Mt2%YkFee}Vw>IXxz=?26Dte$^9yD@Yb*!^ zdmPqOmK!SJD@rHwJhpxSkF@piQ4!AfBAmwLh6r7wBD}!q53_6lLs&2zk6Z@ovOp)9 zxmKtu9*}!DxHij;48dnU)Ktr%j>!JLEk6G2qS_RX6k|(NgxcPb{Q^8j2=P+-ctX4= znOr-2S{>kIdv{c}jrVxutcOP;)Q^g=^g9p2JUlX!_*>m*nXjuY1b{)mHSkCdML>wG zx;J-wI84JM5du*WF7hJ$^Q{)?fv6(o0zw)`i!=t0@2$A!Hl`RA<(x1CDhgYIfL`8V>9S_1ZJQ5)`D#Arxgnw}Sm(Jn0y^pjM@)(KNuI zxbpiTd;qfI}1}u@m6nLub0IEVD*NtWi+(4Gv zP9TkB(q*fNB-fnPbyjVL0m)p)GSe=1U4zz5$|c`d`O&B+8=kwxQcrFCCF*H{KPc*z zB2^^yWS{n^XCxkp@N2bb9e(T<55kjpBtl_Sgmarc2xWNW;4uXVkq3{F7J?o;2H}w$ zdPn7OYLkbmN@@gbKKSl7t&&C} zLZn{5;h3j}EAdDjp1CBN9Sp`*eXek;Hy(+wIV!?)-WkJCGh>()6`=|CE4nybfk$!} z5EbF!jUI&VcqGF0Q4t0$^dQ`iMYx|!}SJ1d#;6eB!{D=QI-U0o+IjCBwm_=0z`eRaOxOYk zavaUxfk!s`9QBOr5a(uRfik*4LD&K>IpY`4=zxbmY=NWBG10erOw=cAfh1>vCb~fV zumwJJQfa=X(qB>G8eP*_pu8@yGi-rpoP(%zJ&2keu0U3WCSVFsQes?urp#ca}y=#_c8f=sgl>kEDZSOGi-ZcQ*w?h@@g*j7>u z4`1V7W{o|ZHQuRfti&2?kY?7WX3v6-tdWO_(TR-0T_iqaviZ9Bo_^ zp@_Hu9H9Loyet%w=Kv(zsNXR0npB!uv3uV*uv_D5PG;T)WM4Y^af{LZr&F^R17* z{|@32DR#O+2QF7y+tr5DKlv_5ea4assY7@l2B}UaQhRT6AT|4%qSO>{rrQ5)efhnQ zMrv9RQn7ZVo^V5|j)l~N;gMR60}B+T$~ciKp^-Wb)>7xFSznypPPGG0SplRJ(;i0; zhiP_4vxa9dzhvu+x38*ZXS0S#_J#HN_s4Y&OU)WG!q;#c6uoN0tIpoOPuEbFHOMH2 z_4)S_tik@p**f7X*bc3$D#)nqXu{9`s3vR!TLpha?j7_d*-7aVi^rd|o0SjNy0B9^ zODcBq3a+l-qgK9XRD`b6meMmO>Zf07@`3Ka&kZ;HN2E)J+ z#`yV|e6OZj)w)?uvsUeHE+g#oY49|w1wv7-3?T&1u#S7mcCu16z;H~d@?@ny zGD7=jHq?#kpZ+CH{#LbYxvcu3T3G)VLNG@!Zwl!x7(_cqz6ZY?Jays^)!;9|TX~>HM8N<+)Lr}@LHaYIFdhZYa=IraHbMN_KkSiA zJ528NTii>gnxyL)jCy>L69?FMclizsH^`>7A%!Wvg%0g<%#(A8EIl+{FS$WvAgAw* zK**mFgL3AkvAEOKK>8G9ZPQGi3)rmXn0Qa_Ldn$U#Lw-pZpc@SpJ%Yn1$>0s6d4?L zYZba4P60b9(e3>#`Mw!>FiuPbSYJHzmUqjWuJiiyqkyY;#LRsdtQ}Hw3o~~*bJsU> zf9#gK9CNpC=Ife%>sD zKLQC+a=zHIrb<_wJFoCN0Jc;+_-0sa|H&nS92=WJ3S8dyL&6$x%z;n z`F(;Z8gS*F#86nP`h}E_)76dj;|`+d?guh#-nIwG!1(s%5#N|*6x7vB=$e!mJ?=}S zfVCv&&X=jJkh(_koRT}mc;eAH6>;2yWH|OQxlV542G{WpuH!}`{sYUg*`l%Jhi=HL z_^wc#iIGglVfy{!`4gvCoD|@BA|f>h+;;KgS;d51AS@vzhjUj(V7pmL0KF9_91wenYJ(U39ndVUjpLJFrY9S_p~PE&$m!Ucm8Xu*U4J-V9MJ zar4AnrfK@n!KjWBoFb%*Mg&Sw;15+O%HKASqWY{ATTiBf0zWJgcK%hQ&UxNwy35~EHTfdXJQJ!g3g9OxfiA)? zhn+0=O`){p9J(jiPQD;PYK5_-XIO>th6%sF1)qH|KtuNeI?e!l#LYV12|i-HueZTHhI#~+!sm1V7s_smcuT}m`rAD z8iWYSsV8L#|IicAPkrztaz|3nSSGPkP17WHyPxvmY7!H%(94kb41!H5|P|Z$0 zrP${Qa5nAXhT(=DTa90iuE}}a%^p^@*~8X7v^_jy+QVh0)Lo)d@kLe`7s}p00zK{b z;+KQH4+j)}+rfw`Mzcj}JbL=?NRXPnk9QBt-VIFnzr#VZ*~1q!^dW%mTOMi->C?3Y z*`3?aOlyeUXq?6&yMFcqt>H|Ei@48|b33>>#n;}D18G2OAlT!ugs%SKe)Ky#sNg=z z0Zi{k%7L_m%aMeQZi!LjcH1oBYfSA*OZcgaCG7F4!xGA&j`~C=_>B9K`43E16Ftznshy42dCq`wu8wS_M(V3f$e;mY7$SHMQEwanpkQwWqd+} zC-X;iil<;?8!Ek_Cl$|ig>0CpY@>b+Hh;A(RH%QQ=C34PhM2!GgH8L_)YbkW)v$l@ z+WyUyrcNwsY`1?4Wuk?Vc{crXUIcfh!h1$O=Ac&zTUNaSiGJf4oD6+JI(1aMj z%WlSRD-uyrjZp|z!2hZi{C&rL&CntQ`H!FnK|67OOBv0mk=L4Cdc=%o6?XxujOR7_{3dQYrf`7}m zM}ECohWle$Ah$ycWd=`+5+kgqj7UQu$T$$ z)1d|Rcz~k{k;_y$N?2pljnB$d>c)4lH3A3SH*4Eur<5Jc&v1xJ)3<7dEr3%ufm|io zHbyodJj2y|sTf<=2gBe|`qmsd)_|kxRCeu^vdaYSbc2HQ-5)lSSvF0Z%xy>v{Egmr z>AJ({(d&2J2CNcrblqwcGrR8TMpoB783%;#oq_yD*I|G*6}eTMVx`TBVPCP?f2J8@ zPd9+q_kZcXKNHX~(OLV<{yWZuuIbizPWIndOqI6H-hXRl-s|+=#T;AzJ;A|3Q2+5D z-m&Pvp$(n=*BhJV|9|_heMfu$wYj3C^=7C_ck%w%DcxE>IGw9W5wf4wsT2)!^Y$Smq_8rSZo|Q@3TG_n*@J04EN5{4P8)WL%|ss{NF% zy-2=(wdVO+ZzDUM!nH@kRolwBc(kEjJUT6Gfqds$(D(IP&>mq6v_I)+SSvgR(-VFB z50<%JzhUNfvpsrM?2%u?HEjBEN43x6(WTm(ur2WaQ0>WI6+MT9t@guT9M#UpqwL16 z51HKv+jx5v3D?>;o^@2~!y}!R8`A0es1HetS@ogfcy_J%9dt%h z>BWdg>R|6kJw)_b=-VeaSA_NL;q%vH{;JqXBRT;k6v{|Ilw7%e4Z-5->?>jIqKK22 zuTsaB1GaZg*hK_;=5xI!@*D9!rGBJTJnP(39q|U05T(h!&bk~B2>iiyr5N`PkSFoc zTraL`_xli!R8~2%!{co3b}R&7w?xmJoTx*Q4D zKmC7p^iLWdN#fdJ3k?0qQJ@bVS>XKPa5Wq}D|?g?99i*qmIYQ2}SRM-MdoCUb+l_-7pQ#dN+eCKGx zWIVFKqOb+hoIRbadwNXR0+*fK8o;ACj@;r1FF*3K9~U*AxAD*oZzAJ5yy3Zs#3>rT z-RA;JZmo~h#<|UDrX1p}! ze8I~$UN-Tv zj+f7P`Gl7bcv;HJLSEkDWezX1c**7EWnQv)nZnBiUY_P<6feVgd4iY6cTyrl4QA1^Ib!*xc}BaY6v4Uggya*Ol4oMt(cZxgosy-wrY z2#;bli>}~hIWJ3aQT<6!mwyO{N(OeX*m`Iz9>tR^Yo4#o@@vADKPnvMzr`a9ObuJ$ z_tTC7zv59`L2h%rE>7b~oKQ)a$0fLgu;A`@g1d|0ma(jfzgi~ts|+4+OVgq6NnX9b zspu7#)p~iz0sCbgBYZz0`f8wDr#=YdZWUIo#}PPo{9H%2RKG+W{qS(X|yj(+F;tDQi`)$3^9r{(`D-JN*K4zOidc@(EyPUrWkIV*P z3?9WBEc_ZSl0R8q91K^!yOT8^AZzwwy(T?beree9%MUy1pNB_L-BDhYB|4>;X5!N` zEWEWCh1lA&43A$7sNY=S2TXQ(Pi92vMWxCqJ63>PJYLX#wQQe_g+Mu znzEbOWj%hqDI)OlO{lCds~~=&tE$Js=JYagpG=#=xPz4*7zmppVp*mZFV%Ue!VB@U zZQq;vrVumX{=6TJmx?FHLx9fD7%BxQ$P@@^UjTm36wU{a#pi z@ek@|ep~t$@V$!ptueP@-%b?O$A#q9L@s(y&I#uRXFg~OV>!Dpo)lO2l4RS(@oylE z)fp|E0LbELUPkdUjF%^Pd5o97y!7OyD=!^+X~#CWe;(M)L+5ed*j(MW>iaHzU!~t4 z(a#m`R{5&vdwqRR*7rTl)cbw<-dd-BpvxBo-5cunee`{_zIW02rs(IH`u?82f2i*( z^?j$lf2r@s^gW>O)$UPvRoC~1`u@7ECrLj)7w50c&&K_zrr$+< zucGgF==(kT?$!4W`rbv~d+2+*zBkqN+}%{QM;@$?{!7x&o%NmP^0QyZ=zFHVf2QGV z(r^qqeWjl-==;+~z9tHef!BHczLaifO?_{w?_PZ$j{djwQF4#uhm*S}ckABO`@(P2 zpjZ*<_ja)&{rmAjb8ZW3R6&_rZ}#7w%zm8xm)}AC4krHQJxa!lLDmbf(KuqmfTQX& z=pTJ^GYtjC@nR5G5ZNcIY&*`r!5R%^$(w1oi~)YWTR~m^6((dN_aw$g6sVIxP^CZZ zsxR_GBn|cqKjkl%MT0QdGji*ZdOHSt_O}^;OU5kBdHGX{t7)z5jE%@5I(~wAF`FNQ<^rInJm63Tv65D=@#xfFE=3yH}M8S%2qtWKARC-6G z@;j&29}ip`mH_*(ct8>0Q8`gJjuUllo176FzECuH_e($@Oz1}dUDccc;Ca~3gl`c( zZKRE0g}%sX2)hTjZ@5{<1CjR5>!YhkVHJ}JZal#02Gn95T-j1^Steq=oveXDjG*t9 zR^WOP{RQ|>G0kdC!vD2PHR4yWNn5hgDol>(bu;)rAXZK#XIw4j$(#wiu!KU4K!QAk zEY+XS4`6$ZokJYbBaTql|yzO-0%HoHOD4P%jh%zB_IQX<;xW(s8G&%6TNNqXfw8G0hUU zd2;`U*D`c1UX8)z0oRNjQpflkI|+79`Xbf8GOisV4vQU-ic69u-*UD*y>0dpgo?=1 zyYIzRdHYz*O|;Gag>yxE$=9r>F~7hwb#yA1;=Sxt^~*{%cn; zAoE2&*ex!i09_2Qhj}cVH#_4XRzHhcSFT~b6o2wxO3Q^@%H^5fQI+}{!E+_Hv*V>& z`q7j5Srk;m1kT~}Ky6RK7<_x0dS~%=2-OQ)sIYs3Ir}E}N$#86FS&nUBBafKKc+>~ z6L)xWM`EfjIeSO;_T+jS{r4A7&Nxymanr#6J zOM9ceOI3TJ8@7WWN)?WA*qGJZloEM!C&W@N!Tzma6v!*}?05;!MJYWC7=}{11l4LP zrDS7zP$AhVX!b%*4B6X1|R<(?rQ z4vU|u3ww=fmc*!E;A?Sk7edi^OKo%*#>&NdJq}ma(`sc{f^GvJzVY=uh?LZ zUzOo>xDk3$do%Fk`$P|jmvXbk1-rkBSfyHhXMf#s44`E(6Wttn`(o;o!JKlcW} zWPrY84L#%gbI`tzNqex`nA$kiKPYwpRdN!?1^5s>^aa(;lSvinw{U`;O6Meg`{W{C z7`LRsp2s%9dr67)iWl2ql@Zl2^elCa7==Anx}YClA_R+&=J809i-1vdvn-k*9z;=n ztZ2<;RBq?QmIs-1Qmn(>!sX}tOppdHbM3f%u5tO(Yv2MzWXByFW|j;>Mk+NRvqdA5 zhq4-(-1ihR_h@7q6B*e=36^Xy-GmElK_IklxgDde8lypg3LUaIO@5V3nUs+@FrIBZ z_&^ZYXwf_r>`FV>Z5nKO1-7Fd?9CeN3&CKkiJylWR4}oX3xe4(?91&M?5Aibur2Il z!*(-zhS=UouqJn;wl*M|+~L|IgMvvHBRZSNc(2nXbtV1fF<}3^tGZ-STg4yqa5pWW z+WYCrxeo>^*a8;*qb=YajZ6!;%abz;$!KZY4xvV&_JwOj8B`;jrnhWDqFm7I$vp;* zs)X9~^Tk_RrKR|+ZK$Pq6WT~wiZc*XYc%59s4T^p&!Hpau7%RDSlUu_l<-_EMJGU0 zmSXG}o0Xsq7l|5TZ9oi+yI5q{*G-=3m0ayB_PcBxdxK$L%lQA@w0;S7Pd?bZC5+t} zjY^O~8HdO5KzW{p+>9xNn36x0^-#G38us9Du(=Atgnd*ShlFsjN7_xvKs>;6FYd{D z0JQ{K7TOHQVJzejuMi9dx@Y3lK-IV(*UvxcyYak7KOffj_4>XV_Zi0gs%^ZQ{WpfJ z2hl~@V`IJ9-C|RPC!6a)(_rfo8u#tJ3*){iYv74Jvl+Zj zud*P%nUOXSX&cy%qACOGP<)<`XtEDSHV^&2vRZ0(JErq{BSnD-jY2uw&il}k@n;c0!&S_)PVy@ zv$2CyTE29N#!SS@ z9dT_5#xLkRe|}FgwJ%Q0ORX$F28gc>=ciBLxqXjBi0!*>BF9H~kw<}z5;vZOiSlQ} zTWK+(=!{IGdza!H6E8g@Jv5LO4*8?B>zCdZAAYM5=zxtray$W#DPvnPJ&3&rsT7VR zv8N&ze8*w+B0>R^eqds{Sc60#h8e9gE*JM?E<w zE#MMOYQW8rTuMbCKxWnkKbSw8P!kb-Y@!nRW*(%4hFm9W(&Lhue&tT*WcAJTqhWRiU`@xhh`~ zk|h&EoNz|YLy4*t*j67&*7kO6?zMxl%r#^xl1?GT^> z#infqQQ@TWqtNpE-0|6HI_48VP#q1}w&SJ<-*VLlJkBK|c`dKl@qF+>z&JB$q`{xk zeH#z|4iKPCyrTVJI23U00ZDA&aJp+{P}|og%A_?K9)))LQ;S2_)GX1}EB;rRQ$g}8 zUK7i41Rj;*_ZCaZZXcD>(nl;N&F13obf^e#OX&`Ja@x=k5)^qTMl}0}#9CR6?Ca0> z;wD~Mis++Kyig+0LQ?sTeX3>L#34|+lLxse+==L6DjCo87SKdcV#$f$dU8jw-(hXr z`zsGB0KcIQsmN~qmWqt~7d*KyBMk?q{k#~`kGD!wG^n> zlYA$RmZh4~Ndu^yroclHyO9jHNbOtI+a^7kV|sy?_j#rTq-aTAHaMBy2Y*NF`82SA z)>kh?*x0!;l&)`OIL1TNbfPM6>wl%M=00ln{WVd6y(jnIa=kY67Qd14B+#zH)|e^` z+!Uua4PUBsx9up=}1)9Z)X!d=RBru>PGPJ9Ea&y7y=a1+Ui(xiC(>m=Wb+S3@{ zmRx#=3Ca+2f?R-7beDMtyrsAi9&|N8zK>txYy!3Hs@U<61DdKywpM1?zW)8yNY zpQ5#emAJq&L@ zxUkvV!PKeZ6}(7=l8Gk~`C;#KqC!(t>t7U`CX-;L888y#u{qt)Mmn;R#lr*0708&H z{g>9*xe;#8Og&jouro6dd0{w$ota_z${ERQu6lYR?$mQ*>%1$FHzWTbydn(KX0!m+gT1YEQL{81)_8cgo}5KC} zEirWhL0*IY6|?_R(#8iwz`?sK@Jq_un-eO+JsVrgY}R%h4aU{Mtr7tM$~jIf+a<9U z)lkjAp|NVN4V%|)02#pd)U|1reNN8!r?hA42Y8W^eWWOM>-fE6;NT~LCJT2Uxwke^M0pA z9;?Rx*jS(4b!_4VPfn%tbf;A8K;%IFsMn^kU7+(6+$EixKL;Ydu;n1=-rJmf`JC&b zf?EGPh$LG-R{mh?pTsZM*1s1M5h2IVi@mD#r##c&M4Hul*+HuH3wP4w>h`lEvoodx zJ9wfwMQ|%jJaoiiTL0cpD zenf+vfJsvNzsmI2ka*C}`}3<|GFPD?j+LODkM&G_yc~c;fOFP>bFiK+h(51@4JCc1 z%O9lAi}>YApLQ^Yt+Oma zQ6E={0+?X3!2#|s?%GF=!tgyDV8@ zW|$>IQWWfFIO_^^9~@%`(J7Akr0Y2dRWe_>c^P?{34?;YSfd0>0`xscWyTc zOSVf%1XKBC)K|(qFe4hNMyTrxR4Ey6v;09U*5H>Lxc-A5Ve5`alZSHkpU z{son%UYy#>7YLgk1UK@v6dl$k=Fd}g#pt>w2i4U{*HzdM#&!7tY1a1oxv3(LM^LMFPH)+Q$5&0vWqGZk8fW+R1nlD;K=xTuh<5)dgl zcwL6R2_C%eUmoiHZAO~*{x+1w;FaPK%Fp~jkL2fnuq$0MSMCM;a^+_p{3Cn+mSnT{ zZ=tdEAqFkI2icEGjSbvvG9Ust%06s{|Elc6X#}{Yfc_DpCGv4=wkK;7n3^A)$M|gJ zW!a5I;-@#!6Bw?ILWNS4>9tR*W2*5trz`Ey_D-7`Plu%ZU)1n!N0X4D`RI zIjLQ}HW?iv2g@lM`YM{{GHW(Ut5e;dm5WxmA0hQUEEG^m7iIeqbiDfb%I5dMqts;f z&$r)VWk>uRIEuet=V*T$#W1ZOKJRVrPDu4Fiad|v@(e0Zx-p;V$sE$ww(>-rUa00L zzgc1;f)7~nXg$QF-?D)J(Kjsc51z1q{|wb_PFRW@4g6^nI4DHGmuitECDvvBhQ@Hm zx|0p?6K(8(n`^+g0B|4)l4=|Oa%Ri)_Md_xl=3=A{-FKogs$YDKAy<%Z*c;q-q3S=wu>r zJJNzVRe8Eihyl=9J|2v(nN&JsqVTdb=}7bB3XWVbp9T*i9zrPctJ7XYM=?x+41+z5 zcRUl#iNwUnixn`D=T*4}W*rg})N*^{qenz(N1u9LKHVE`ZPsyIQ*a((YVsOs!5K^_!WUb`mpB3iS(De0&ym15 z0gR7|8Wf6;@LETBGX)jf!jVIWfeL(bQU!HY^Z96*wEa26xI3gzuEpEH5X%?@UC)VQ zg^DB?V9LronM6tz<#Yq*3&eaBRwr&0iO)}0l3I2e+Kh3Ot)l~tF`EpMdZBlFc4W=i zPxc$#=ltk_e7q)ZT7l8Oe|a@Lsw(6J(8>fzA#>k@dSvVb`vZU?+9jIGE|eWh53u_> zvj;O@K^^9cR`Nwjc5P<&E&zu)hP(88u)-AlMj$K|Q_#^O8hO?6TPOaca;1C9kaw0q zK@G7Gg$6*(#L;{s^IDvTiph;A6LX-9z8#NTQe;7LF-{6CqCeOlaGWhzDU~Z}T`0z* zwu}VC6M^I64iX_TNMaBr{n?$K>^_|}2FeE=jLI_-BJmcU>4T0}?d7Xdp3K8Y2S}3= zP34Ocvdj?(iF~2JRaIr=s~PQ;qgyC`xkMt!$&qQL+o>?b?G3pC=A2lKMo?exX)l#g zP}8H(Z@THx;yFe;SWl7Ye@yb1JnWvmHXpmqdTQw(l93EL99e{)9bN+b;Rs#-pM1eIwERd!> zo8!gd*>pxA%g~p><=45CUuufo{qm}3h<(b&~02!?lPekdJwAWhR@Yf)o6yi}Y#5=g-%EWGJ1@Wxy4#yR0NKL>aXaS02r zl?%K$3*PO32XDZLOFv0?kNq3G-`)ys??I&L_I`KG0k02Ykb!QvgvD>33%qF-yeucY zS0E{YY+NjOh%4CFv!oJUkiJT=;57%lKmglVjsDcD7H+2-u>5jg7_Ktsp;KYnuteyb zcvCtQ`Z#1Rmw*=n^_eQR+z(d*<5@cXY4@c>K}K5w@)1T^BK^jy)+ zm{bZ~!!ZT`RT=uTkIQ24XC>Ho0TvcB!4c<=7c1UTa{@bRLU}*;GaF@#*FCn1HV}jO z$OKx1Zm~(Wab4sL8it^8-HOWQxNhsDiV=a^!1x^OC)o%4k@tc|pAI8JA%p!|W0@Q@ z*suP}zYq4`I7%xd2mAeh0g3#fYDY3P{dL4Riy#lJN{t_a*v`IK^6q#nPCy z8N&~lY(&wX^7)9-N^^=!g)|5TjI`=kZRPR(zC)^&EXT+N;mMH3#>ZF<&M&C0G7u+b zAkH$wd}MH?&r5g_s0g_gsb^%b2hBg%MW=E8c?gfpv9G1T9G$tAq9=ZH`3s%k1VcW& zpsTUI;yilN>zf#xMsChn9BzF@Pf@oG#X$Mp*7}N%QCzzlFP$PaLv@ojRbJ%C&&q; z_STQI4jtKwL!%&lImJVkf_|i@Kl53L;FaItv0w$-<39w+8Rl9{Iit)Oa^_gSGz02~ zESf<1x(&)59PYAyDNSt0wuVso>MXUFTw=%d4{q{x?Eu#=&82_=iKwBboT>G1lIQU; z15ZvzxLiukh(a5jTdqc^WPagA^~O3Ahm^&MhIpk`H~lHz#!wWLVPjtBz`1K>2wBiV zBg{J37a9#mv{&1Lt{6d~2=Z(3r=VlZ?^R+iS3Pma|6`;a^2@bORM9}FO)K_FHL(DD z4HTZJ#aIl*S8*Z>ucS7B4i}fzV2x(sjPdiD_*Ef5gHIgvA_bI=fnB#Pj>_XuU5yjx zbNm*vxX+XG8AV>6?rK{cRUC~z!@-j8KNTck%3s8|Wj)8YTdqNvPXi$$he`z8!Tho-4b>Vd=9C#21{c+%U zscxwHuTQoKQvX$vrtNCw3sC>dVINuks!RFP7=r|tKY%n{{@dSCzW!lVJ~A$}{^c&^ z|7Vq-#qzz;T-M*+rTkEr@;$8b-B^Au&Rt^pzAokKyOghLm9Nb5K8?TMt^Lp?A?-(+ z(f;!&-w@_Ac%Zz}rQCe0+&q-C4ZMd!y5zw(X7pR`lJI0c){sGOthRYX{$TvQ6MnhI z-zPNF;qRRo0qKdF5lFM*?_3Y3r~U7G*PJin7k#o%NIN*=kTGKxXapXm$>=GfkkvkT zf7mSptmtI|H028N6_2un$~&MYXsD1IEGTS6z;z^GYc1m^7b!7?P$=WE%tFkpfO;|3 z3K?Xycvy+yXk_rMTqhfMQZ%b!h4~rd_e}NP!5J;Rx~vwg%Kv4`?=|G-l%Jn>PPS#@ zhuf6jF{G<_?*2AGz4oY3B|$Fp0tY$ss+SCL%J0-7#$*w}POk~+Cx?;h2%z`OmVGLAGK215X&~8Y z86-45d4i2st1mTA`!TInAJ&gEAfo$WGZvj2 zg_nwbB)dw3FS^M}<)nTAJB~Y1dgBLn7Cr7;$(jIf2gW_3#f|8HLxa$t#!{ zRwHB4<9TT4AodrZ%&#X^nCDNX(vSlGn=5*Bl;~mCh+4P= z34#<#(VQiJVuf6>jgXxLBtx$FT_tfC_#5*#e~eIV>Rpy%p=DmI&$CNAPsG*I&YzG= zFK+mww5Q@O{D2rF?N9c$OZzYrpxFoLi!_v_wDS(AJ#oVy84G~>;HPLtQo~85I3t;! z!KU-XxKO-TCXA$~bx}>4#tfK{;p!_X@aRSk1)@dkszFl!QW^A;&IDZ;Eo!P9@g_;+ zG2PK((ONrU1^`7(82&^PxJCefB+M|}#aNIP(}<`P`NW9@3bV7=fn-7!X%3hpQB1?+ zPrw|H8~zA$BJLsvFttjJ>}4l%X$PPw$O}4=zWfP5({RHd0ZqqU8~}kpQ4(|5IYrcN zz|2*B{+*^!zY7@*p3nLP%YMMxUgg0j_+df`-#!yR6Jbrv>QMhz8UFR_l@Ru2e);m^40H{3J13pkem@bO#f#Za0!a1 z3Z!Xse;l8l4{%YF5ibfZzs{xnQmg!8mVX)LF82JhVQnh8*9EmTy7R;%I+QR&lT-g5X@ysh4+x7aNr4@SZp?AuJR>;11|JDiH%IlL-#!&pDvK|1@eg79lP` z9b(s26ZGLH6zHiM^km#sW`=BQzo~;iBVennlwaLRG3FW{hPlMJG$@l{+=P25aCzVf?J2qa(hic+Yz%XMU>@p1APKv6qg_adVFQP1l!PH&r0Knh|85JoM-{-Q?<;$?qGP16k zaQ|9oRZWSm>hcG%$CAu;u7v9HleiQ3VflPg9FX^O;wz?Oj~*LwP?65JT&$xg#B!;>wB z-=UuDk~cy<*&FtT^<K%*su=7~zo@Iby>7G8U z!_+-FvW6ht^B!PnrYOMl61iqDs$}E)Ijc@%)z8W7s0~6;C|WscJ6qabTMXYhbWv-o zs;;`Kzp+n=fd1g#CYhOX`Pyu)i@fYMGkFq{y?!565SCnfv$4w9lf`fQhUoD@#00b* zpygoJC+hK@%LRZX?qNZqjR&)dui?$Jt);5(jIBBcAN-qFv z0{7KZUXi-hSBsz&tokK^Zx&UVm!*#d`zHo54-N+N{FRii4t!BAFC};Rf^m`@* z`z=!mB*^a>V*wdSAluQ)nD3?QGtI^INpS%YZ-Hn?5K+V*!4vy=4&_|RU7lpN`_j)2 z*C!E31e)Mt&Bq79TZgj2O<8KeTMT$MH)S~C4aUV}HOaEjKnVI3iurH_U?c4wiXNzB zm9+E0XTu%LJuO2rw`sBTtnMpU6(eNhPSJ?bp~`cj?jXvbTs??dzn^DvoE-Ap?5L}~ ztV@cZW<40$!Iw<7n}A>r*be5N9*d}{E3M2*A=vXi0;-P6mkqR6-Y2N?c_r)({qm_` zhX3uNS#vQ}vv}_x)y}tZXO;C(WuO6;g1ZyB1)L&xBF8xD?t;2)p5SdSDh<+7*LD}~ zHc6IRx)YJpu`a98jQ<0zPad{r5l2rkCm`i7r0;TQz+N z?yRHHhkzQSUh-JX-UFNzx!r-x6G6ySbs*D@Zyj3a2@8{neHA9L8k3qDlSLn(6Yhfc z3DMMf#el11d*!j58tR~P{uD`PqwmBQf1v_uXS>IJR>Zzx(huz(OqizCn=K)_Y32_v zm?ZqXk3xJX;X?`r;%>U#QWI~QW3Qrwql)IJ!by{^7U*<<4vgZs3yuer&q|)S$i?fq z&tVK~4wEZVbwn}8{Z~c-eTe#2F^pN%+MM5?H{RFVV7^b4@8vN1YrGFLB92S6M#Kke z*+;|;#;Fl;4ai~E3k3*ybjfV;f|{GPE2{OV^6 z@b_EbXK3&kYvFqh;lU5EfiHlWu-3;9*We!p_&|j%D(C z$LnHk<=$&g4+%h*GOfVW)GFV;czb7DUCmPQ-Tg<=FiGd>R#fjF!NPB_9> z+P#?N)Gat6PM?TY2OiOv8NOaED(?a=Kr^v_t7V&LPtKii(gH8yg6}hTO;66=0q4{t zfp59&lZAFT4+D;GIXe?4QAJ}Pafa;5V%aiHA((Ns*rYqqvC}~E>{H_NQ;H0#n973K zUk1KT2-2PtpJTfywoYc&#}u$n@`=i$At2l;rWhc)rW?&O)EYW1%IjNBU<68xsf5lR zHyd9l-d+c!+ee{=K>F?!e=@#79@5NpRtbDhMwQ?un|wf2v;j{n0KpCVh?h|Uwd19U z6oP|_YAODtVq%B|vQYdcBXBZM(FB|Tqr@OO{oHCkNkh}#Wq;+H$v8Vu_GTk=>dn4J zaFq3`fJnU}HyQN$6wQ)FkrSP)O7V5Htp3z7W{&h-s|%78so=qWU_nyI3P336CGZWU zQI->*vW)Vd|3)ky&C?5&+C)$8Yw+JW)s^A~Y=8wY3~I9q5J^`+4RAON740MMJ*My| zVaMakAmEc0a-ri)>KMJr7l-xk$Np4Ii>ObnC!WUy9=}2-g+k6x%z^)hDI0n01dafM z#8`R;=TMXr>1wyDED@NB++6pl0@wb0Y7Oy#+MJ5>b{W(DkNTn_lqY)KON{pr}S4yifz$1E0&ic%YE+L`z>t`^T*kPhz90U1_uc zd^i!7(n$5i*p&uXxP1C6q+VgFO@q|cQ01bCWvl2%NDXq1^K4ue zna@=wB4#3%fJugoGGJ5i0!O3*sPkuCNO!APr2$efy~T4d#{Pv=gu=F1P;cG@v~6G% zJ~;GA%m*YrtWMdes}4HxYWK&^!ZOTJBpzo;UxQdySqxQD<9Ak7LN`st!V87g2h@qG zaj&8VH#D}0Y7z|@K3TuPpg_X2punvYaF8E0AK-TYA9n-{xaW5D2%}1kq_q?jDjFoV z9cIG-u}G9f1BhksE5wr1-${hLXr)H%gt&q_ZOW57akRGMNMM2mYU2uIw5!euT5K6A z)vPSOko!)h{op!%e2Q!E@p$N+H{;&uV^5_y;v z#@3ec{L}-70-3`NrKp}uj)vxhCWt6#RcbWxgnaE=RmruXTwl_ z+`dS>JD-fy%D0k+G4KbrADQtJ8#|EbM8;r;-w#Q-XMX{RlCQoP&_dw0U1T3hHz`mH z;GmF#d2S_22XbN0MZFC=mN*(QFNjY%99WoFiiU% z=U!2p=eqicQs`J3f+<|jR0thyi(yapVzdzW9U+GqtU_EiGfR|}-!b~X`JL@`P40f@ zNzopd(eGS|DjjA+d9E}ZQ3i-H@UPAp{-x+_LyMLJT`@YwKMD%voM^7zNp#UhzVl=} z0M}N(ucFJ+?hs@jnG;{S;MrW;#Gi#cca5)jW~smvyKgJ9?1TA0h1*zx|+0nB>d;?}LvFS5c~U!&{@Dx(Qjq8;^lEOn&(Q{9+2P;V`14<}v9y zq60;iEGrdnq1dt9srNj&cVK6hQb1q{?KbY??$9yPZLA9MhVx?Ss3-v`I^8fD^|98Pk#o(ys-A_V$1O-&4oEvcohO@*4&Z`!j+#on@@&TtMF2Qj6 zxxjhIg7aVy9RF&-$-*TV&P^_Gid%4sb~xL0*CxQJk4rF|FQMpy>63>vO`p$#;F$C= zc}eWPD0M@Ex#|Pr$#o{({s$hE%j%5jNN|)~5`$qbm&D-4kOZtgm&D*n)DFnA#lX(U zDrRCw6Yq0RA}(pJ-?<9SuEFX}KkA4PK%A{10^B@;+b0MBHVxlz$9YECmFN5wic&y|t4Wyd*b?+XBZc+x69}2*aItt$kfYBN zFkN)+WRyVZ0O@Cl&HJSdRxyspYhla+`xa4fN(CzD+QhJ|8aL5{5z%X%O8v+WN>8)N z$H*b}NCyEN9&7+$mPa8_7`e3gqOd5i2wOiL7F8Vm&GLC%wUT@Fq81w|;4^RP>e zfmvpa1rI9n4?d3mff+apE@V{?LZj$Yx zPUJ~_;)`67Ayhxib{zULlir8whouiFs-zv`y-;{@4_sTzQTy1~0baje&;0_j1-@B{ zdcho928B8Of6_XcL7nG63J<|EYR{o$@Qm7Eq-mWpa0_O#s(hkq=@+h+MwmPY8mgAs z@&VsJlet~KG4R?~%&os|Gfh2+;^A_aw&(r}AK|3K@GXeWIrWh57YtJw6ej)U!%4A3 z=63lePiZK96YszBqq%KzVGF6D69;`6xK}9EwQ^6&vVL@Ypl!ysCd1QyPM{u=ZF&E5TDi zOl{&guj;^3ss*`)b>2JFX)aq>kH!HoUaZk7eg*DwQ|B(c2y};0_BEfssj-e-SAjwZ z(IO)srMlfhG{9jOz>j&Ys7SoejHYOEMAU&aTI#mJdje%K_W>wn=M89c-%#0 zbOh_Qk)Iai-h(t!){a}T?jaOrg0!*$0FxD}FV|aQP2td(m_b&A} zhVeLG_HET0Ea$MR-Rmk9=0B`@g*ZC4+BQQ5*M6*l7l9?vYT{$CN>G!;QwKsgYFR@? zjy0?TZJ5nAM4D}I=cp`joaU&97KGubSME?KO2BY7OpY3l7l9H~y#AGPyApQ(j#$Eh zeG=M)g<7O9z9%c|kc0G3hal3FpM)VG+;;bEft)g015PmJfn4@0#g_(AueV>REHXLv zD?P^{tTHSk@Dp2O!6e*>3;uvjl*dy)y#k&I))eZ4dgMxU9`wvjxGfMg)1<0}NmY!% zf)3aBVd-+*TSzE--gXCWz74NNG^m(Tld-W>hN=F&|oq z35>I1Jw~9i^Zpc{7(cIxcR4OaKVo*&Wl!~cAF?wIHy-{UHo;=<17?ohIaCJbAiXC= znq%Cl_f+4e`;rIRng`84?dZ#a^U#;m7ovNI$^+YR24V)!B$CRI2ZZCRVxr9$U=h!T z@IxM=a!(#oG?GJfac~)o#xEGQvAKVLz-UQH9Ju7kEQ6ET)G<2HI6OLvVwCrZ3NY?E zqHNSItk?+L@~K*t+^Hn0ZA1lXea+^*-q6cIgVEQJrj6;V`7nx)d_ixDXEuN|@NSF5 z!nWj@pdHB9_L)xEjrT(6N3BrRK7>eFaJ5Zcs=d{!wg#)cvQ(At>{9+huTZpqMw&+Z z$2^o@2&F>}l5WrmWCQYKWe`1D~?WcKtDz~Qc}5O1k2cJi72Pj&Sm z#)r%O2KLdLx&7)vJQOZ>d3){%a|?bcxaDfl6oHafV63U0Zcy*O?E`Aq2UN7aUp>MC z#+Io~%bmliSN5pk6uIg(7Pk+lSbT54jjy4T~6 zJzi9l-M*ZvSu#1j@;ayvQ$dKr$?+hh72`y7hMYuPyu+LcDH3rAM`mv`r^#?W@Oy#1 z+ zxh_?%JakPgdJO7&Xl$V3D$pTlO`GTuDhb~rO-sVp*hFkw)AlBeN#HeHg2BA)0>*EF zdD#gj38EcHz$F+=FBdQmSYX;nFjj1J7IMt(f?$iy~Te=r>8UA+t@Q z^}~XB8_`BQs))7;!!d%#`tdAU0-l|{6bhJ(;6sXZR?mt732>l5<2D?DD(K9FVtoesv8%^UWkLr^L_sJzmjrdN@JKV^CQP)_5_o+goX;pEk z;9by8`rtQ66D@;8hzhD9tCI`aOQ6}>ElKZlQ$%3M$DyP@+&z>LzCfC0gdM9J!&0_Y zr;hiY3A)$B1#$*G&Y(Lg=lYe?rPQ zsNKtfVxJ%sf5WZ;*I`sf4cNb7KtQe9>VhzrnmKCG4Z|2%(IoYF8eT6vOMT)%JAHhD z{04kg1pW2Lc`-F^oHtOtlM160?}E;*KvVvhwbtjSt_t`75@ber(D2(d=u>4Z&>K1` z(C>Ceghs#vr7e5|AYE-?`&}}F8r`?X1Dp^_6 zQ?SJ45781wFD$1cK0||}4dI9xng9Z;PKxB(ha6^B+5nAbIvbzx9-AkX!}A#Mh0=iz zpY|~eMH%GgLp&*S=2e@PuppkmfSzrmn=7#vl~Hrx*T2EvIu4M3z8q@D#;y?%oIi1N zF1D*0N`=KxC%&J`bg52Oao1`zjsb^OlbB|p3f(prgdqu7#6u9hWo$u?(vpB|;1`U$ z$tGjKGp=mn!{GsD-%U~vqHVa`mvADKnOopN$s}9eGp{tbT~wEC3sx%Gaz%z%Kbic1 z2nxRM!_^*MsFE3oId~B@=bdqM+!%$x=4J%O=i#TA`ZYfSdu}5;Z?0yR5_|3X;Bmmk zr*S1r-1BEkvjC3AS9}10A$H#NCus34AA*esSaSrUrfbW`*r9ryP?t-n#2CttpjQBj zBs_GUg3izJ;#)n0z7Gg;&@vvGkqPdP=)anbUML>?N+~72azqi%-lQbq4rXxOVSDID zsmg6ibm>M@iIR^*p2`uj!}k73l0^9=JHH}qBhg0SOA_%85?w_j*2V5%Bg&%@n2pzS zB9k9i=uQ37PNe{LcZZ?$)hq%I6j8CprGLpT1b}URj zqzT;ER#fsEZXyN{gXH0=wBV-wpI`tqR1mx6JjxO(?|^z4H%URc+58^@-p*+&rzmv$ zM0HauVC>pWM|rFOs9l2@Tt(sQgTbQk=6a_ne57*3nS_Qv#MKD*nC&3`#8wlAKhcCJ z+}H#VhU=C^Y2a^3!Lxb~(hFbMiGB1rgEoX2jba)me*$JT-0(-3HE|a!(Jn0jv*C)E zD2g{6fMSrB><{|#CjiCahCc#ofV+570+PI6v_cW}BtL27#``&y6j8S!Ltq4FQq+=Y zV~|)j5yQjp5SR}g9+uefFT=x^@@&Jy8(s+=9=-sWjOD@~%HA&y%wvp%XL`dbR~rBa zC-ePCIN3NRJXy*iJH9Dks^E#iZ1mfWI7*=yP1CKMlpa19x*ryCeY!m48>>aZkrY-g z9t^CNA*|#zh^@FB^1TbMHJtg==?z@}knchnV%6(!e|Q-k&*PQPiK4k`MLLd=&Z-S` zRF!O&*9X@sJHU4JLVa9Ebzz^1|KtIA^Q>h#Nak`}F_U$uCAd8?v3Gg`KZS==)R&W9 z$!pj|$zW$w5Tz^SY$7)9noAq06Hl%&o45|OnKG`L3bOKxj`mZ`Z$jmWyHGp-oelIb z=<1C4SRSIR5d{Yk+E*iYPdg0K$Hc0KS5x8d(gP?MW%;{jyd1{MnGnDlfh-s!d9z*f?m=D(&A%{C+vmAWCBm7E2dT%35Q1zGW77e##mMzBU}8 zVDLY6`giah2>w0Jz)D?BjY?22t-@l#PFM>Hct=2}?EO$wJNlwczrC)FYpyhS0vjc-rumRxTK> z8rHW$6-24=MuU{{Ji8;pRz|0mWdq~Xw=VVfTiKxjP^QT~7?ZSi>ioZ_2n0>W#?&IQ zpEg6zs(1~9cfuxtsZ`pPxBy1kx2ZE}my|ejSKc}CILD##gh*90<~9;HPnxgKN%CZs zLTv^%IDD}1OoS3e0s5f!z zq-BA50F6m6|8k?DnYyk4tmh1^hrOXT%VgA7&#Lb&G|So0iK<$kFBNPBH<%6GWozgy zsLg2TPS3Oo#AYMuJiy;AN;dULI|^(nP%x_g@RZrq+fcP`YLvZB8D;Y(?m$yN#ypXs zQPAM?y};k)W=a0mQ|NEO4oe{Ten-VnKAfET@6vTH3VhfewZIIN{UXQ=yo$({Q9A=t z8Uf!-I|8>@2;2_@l)b>U(c}pBi-k zYq82#r0=uzd*hy`pFh#}?4bJ_`uSCT|DV1u)%OB@|6bpp)c2G6{+qsE)%RxaDtwIl zVU1T4oo?Lk*3ZU0RX>-}aC+(Ik@|i`r$42iC+YiYeK+v?+<4aaJYD}u{d`g1-_hx} zzNhegRX<gONyy|U(y z7XR`7jjsPbU4E~A_UZe*`hKhKhsOGD@Y^>1{*b;GzN6ZARl}>G+p$x>|3TmH)bH!) zdv$%Ur0)hE#r5-F8tw&sKc(-p!rXW1^v(KSO2hd?Kj&yXjQbl%pV8f$eLT5G^21(# z+ZD;(le=~GzVKTV$DZ>qm!N4_zXmZ|Z+6yF+~}15&=NzH0VgKl)%LtQE{=*2y;5)* zmv1#QY#4AHTTc?}GGRRv#2)Z)Rjha{-g)s3 z<6PFfP3&y}!e+sGMefJsIuAJZ`qv~OhbJ@d9NdXN#o5-#p{kNd<#{prEOxXB!sy*Q zER0%86utop6*UTp@W&MjlW!vmcxR%}!9=0!S_=i_!0C?&7XgK#K!KmOjM#AG7=RvX z1rWrM4afz&0-9L)4mw?|$7^r)VZI#Am!Prra)I@-J6?k7D@c5v?d(^-Kmp&pVlu#l z&dB`cBxXe>@Z9A&_~rSuO&bt{IXwmE#XHT(mfOY42|#coaO1;IG5-bb1QTw>P`D3i zxJ?0fL(h|Fvp3N}g6~_B1fUUHIlWFW3G(n-lVAj2I!N%Q^|A|IUY`VePZ%V)8^3}` zFu$21!Bq5g9;T!s3QDaQMLMu69s|}J1`z)pvPFv6*w~r5?>PByyEwvh-)c#E_St69 z2xTllvY$nD6V4O~=X3dK-C-KWJel^hW{J(>H&9KT>OGX}B*-b^ph?NrHV9D~La!hQ z%aGgaYkm}aF1)^bzr{^_hAai+40zr(krV%T^4CYc_FnLM8tg!fFEWRj3j^Nlz259y z-c5hq=iPL@Zkx(ALR5iKc3aM_1N6XwC}UPM8Tm1mvG z^Bs0#Fi&~rxq*4+79WK!JmG-c?z+>!aKL9YNhEQnrRH6ks6h^7|@zut^BQAwzAY!ncg za{fL@ks_uylFJ_@r)N#0DI9$t#}u+JQ+zWLB%yI?z1RHnlJxUnMD9Pn{oc~W88`v$~ufaq&Jd6prMm&ni8wJ&4L%5Df1m-}^f zcd|M;uRq(Yu9U@85Fy@&$GQ7SCm+u?yy(#u)Uvt$yCDf2Ag|&8nvA`kRrfjozGg5Qy;Lm)w_7)=Zwl zd8xLrD7mM1o5{X4$P$6oz_|y$uo72*3nK9O!Q9VxS&7rS)koq^Pv&r2;*1?wK7vKI zng8swa!#3d2NGer-nAzlgED2}CturgE(K>Wv8Q#HqyeYn=%^-1% z$7S}lCofoo{WpxCWtOs%eX}KE&;=iVWdkvL1<<8N$?RoMo-q*z#_-#hnI)`b-;~*L zh?Pl^%@8H9Am{0phIcpkXE=6W-3fnz!SW4BM`1Td-Ua2WJWrbIO*Q$b{Lb$9uCv(> z)2g8iyC?JEFKwtziIU9#EsFM-$-Xt`qd}mean72%v*t!-&3__HY^(V}Tg^Yp-;uE& zhstj3&jw@nLxp5)Q%PQ`uh{x0u$P(+ID+W_r9J3>h*eZS*VSN~e==&=4UP*EomX@n z&$150=pzcEpXGLOx***p_{iZaLa`oh!t`pGCf4_9h;<3EH6f;%5KAbCHC-UqG$C$- z2sr3)=1xV2?;08|C3{-;Tvh5M?i>`5v>7<2_k80jqV*pw-n$@#&n>|RIx4IhVHYd zHw4{psaHbL^`oFh_x}Hc?#3StbX!3-gV4>br>Of(1E5>m693x)n`y`$7){p?f4wp}PZYriKY2%us^prlVGq8EUwp`!xE;g}RL`bdOc} zFX%q@gF)R%&?G_VHqq$bOmyX_F9cntinWbw=ng}@ARKc4Y>piZXU|*H?Byx0*Y;UpF+-eF?>`&kQ9^bT@`-uW#;9 z=;nim3pkbw6*Z=c-l)}Nh6--z4x!cx6}37Rx(9CjFX(oM)mNI~7p=x@)Q#2XmLs~{ ztPqMWQ^orYZ0Pn!y&=qyM;#N2?idu*%n2Hd zS(|S#n~LYUzQL0341&H0cQQzKjnj4XMI8mPt^{SOxLVKN|Iu#!uaJ==Wt-jIf`Uf> zqu77w|8EU+=@JK_yRD8Q$%kNDevZXOx|k|D+R-iMhHf8fL6`ow(B0+vFX(zrbdT)} zLAR<#w+MVt;BiHlsbYSdjk;Y>Z-_GZKyr`@2-v7Q7zH(TYy2m4=X_&O_q9-T(`zg0 zrV-tGuIMsVoM$N2h;=Tk;DYWos+Caceujb?-C-zpeP%d?VU1F?cYPc}-L)|a-M7KR z1ssTms#>OsWIMVS%e$c4$sOG&3*Gf7c71ePn&@VJ8iH;ajqU|7MFGY;F6c5>w@n6?&$uF zX$p<*3KY9Ox{XY9Pp%9>_v$SQ-Q!@2g4c%tZmNZDvHyhb zWccBVx>2F%cGT$JO>}Q}MVF~!KPOTQbhFF2Q1=*hOenf<%6ShtKhg!ou20>)@WU0l z^*#xq?);jHx>Lc!1qfxhh#FHxT|2rz+~9(4b9Z#l$~g*&?m`s1KDxC{bRP;;Wan!r zbPs}uaSE3kx=a=0QL9Pa`fljHL>&`K-TN$bFGl?rbVp;@pr|`^MF@41HM;ePZbesg znJRYHwxK%_^@dor1Jp60=*~bvEoyE5A8qd)Uq$i#4~KFEM7&h#z4suXKtK}-7^N6g zAV>>6AY$-CS0G5DiI)^QC{O-Sy`C zd%d1NAiI0doPN%nDLb1lc5_fEGP|=j*w~#@iM2ZgKI|{)$SytADw)~cU&Mjk2F~oB z5^HP185W>faAzp1v%7A+jos4~ncaQxVSfilcIm11BB<)lP|b5Qrog>J@y0&ESHKi51yUwH;U9M`{JLN6Im~e)zEeAxC!UsWt#q zb?ugNVs|uULA!SA8tndDFhA_Zg8|RDN5BDf`=d8A|JE<&dHx@qZuk6S!J=H?Y>~1RH!0v<2?B-U|*?kSo zf;+>lFBQ9+KCrR-RT*Y?BYfCj#gScls`UU>-5Clyu{)4bqFuWc40iX23Cgm7AyCcz1IzzR5vAblq((d2y+1P!tG;8-c z_^`i{BfIoeyM{#vUArILt6*ohfHS+t({XC0W?d(K|nUF?_Cuo_lM5oYNQZP;2z9?xt2O9nwjtZrx+BK{*81}#8 zpwI%$OkkOiEfz*ZnfNlA1y|_Bok}6SR@xN$g_l+G9^BTCPo+4dT6(HQn%Vv5wgbD* zQWkWuzrpSfGz-q|V>-JNSJ>DsA=&*Ke&8?a$SytA=3{+B*KU*(yQ_o;*{Yg;VqrvR zw^Y8^P2ZukyJ)$M-2o4>b~_Wh#T?nCr`kEJGwAFt{?|dfe^FYoYj>Sk7!m9aMzi4B zJ-J=6yJeY;-3=v}-G%UBe``l}>8bXpncd%SIk4Nwnccf$r9rT}3C)7D+d^me=cP7w zLnONzIfc)2Wwt#TT=6S$N6GejGT8M13%eGrvui*se~l@YY4I79Yl0?&be+Ocd*3xc z(&!8t{+5mkrKj3CEG-!Jzv-aRzbLIZ*k7!Lu>H|2xI#~EQwq6h?+i8+XO%33+xj1N zWS5?5kDA&2{e}a(ot)XdE7n5T{%97Q-4;5#mF(<>NOm>&fw8SaYKa&7n-IInpsH&( z%!%Cv!h>wd;2DG6!uewN^)Hlm!|Z)mkNa7>ZHe7Rj@qTC+D}+#(Ak~!kArs4Q(Cb* z!wRu5BDC8R&4O$9@K(icKYK^^ZZT%}E%>m%xg)#uRBL2r_xN=OcH20!dqu1?2zEa} zv*7I3(b=79@5rtdWp!|wQOrQKyK zY`H5^vfG5%rBcK`#G$9!H(1}$*_{r$wyO4L$}x6!=Zb|9q1~u_vAbuBVt2c}Bb#4@ zwL29)>@VTSEr(-0?F(ufBQf0&~}>8Vx{D=@l3b1pmCpP309;`}JqLfHOjmJj>u z?9N_3$S*Fz-|4H zII>GmwL)fgKfC0>ZYgJWzZPpDg5Bw87Tg)`e4^MLZjY{SLYUo8$%lQOZAtd%+NQU^ z9vEF|vh@VC&Zg;ee+qVwo3_$)qtqBQy87xAhT5a6k)%-?H2iHG6-rOFPq64>*#Dw~ zLU&Lmaj?HwtzrA4S#X7ZjHO0SS4sBhdiCD5d$fCc2;A1+){$L$sueP```I53?3Qw7 z_iM2h!uChA;OySXRP27R$d(Mgxy$T+3b*yQb7YsEYR`kJuH7O|><$(lWJ?B>4R#M+ z$Pc^Sb#`+X+Ssis+4T^+?H$>rr`r2i($LwB0bN@%*hFc??hK>FT8PkY&3v)D94n*j z3=QngFy;;7H|T^YY5<7zJ`GF z$!5^)%p2{et$<3p&akVbtIlvI=>fV*s!Db}BFcj8H7}$iTH4j-N{9Ys$+O{7{K6@T zq`fHCKXSFxT7{5=HhsKFbqhj$lL~}*lPcp1EH6&5v%Gkn((!N61;y^Vyj!^N?>jw? z(xEntCL_!*^$sQHk}p@>5Z5wt@NTbf5xpy{MSuf;h0P+Lru^JuhZYZx`EB11a7AzX z9zajDJ(FI(ohP5Xi6;^-zri~YZ*FP#Q5Pr4htoU7XMZ=yPd3Q=5{UB58^ye7YsMAC z#Sm}WbzF2fkH_A$TwLnNfhPOoPk{VG>X6LHi&Bj$Wvc?@+Xcy2&g07RK5{q(vv?o5 z^K_|F^*(YYdIY=-Jb;oYwHEI@Yt6wmOVyX&N0THP+UT2vTOzK7ZcV~91$rS|2ri^> zyO7oG!hJ)XgIT!7RMASxj{~_7F0WM1J<}d_t)5sn$<>yflTP#_Dr$D3{kRHOV>lk*-qlrrK=?|-cK0sBaDZ2jOQpVF#nvXJdl7t&-lSsOF{C5fRu^D z^}W`wv1H6jo;lYh+Twp$v>CUEsBo>BS?{%=^O(|xMd9s3!Q2lYDsi7;l9URii9)0W%W<(Qmz0B z?Fe)P*612ZnE$}*0$z7N|5hO><>4+eX1xyupSS*wUUW3>6jtgugUiE@wgS z6Y_YfJ8)E8ag7)MbiXPGj4?}=!g7$;&LIJqAXvdJ^VMbyA^Kb zFS2K>I-?+0TWr`>^b5J+b%-5bLSj{V)o)q^^Hh-fjf2SVf>}!Pu|`8*cpV&^%_2)> zq{P<=%On)jwnMqkPq8cac`T)~a+gN3J#=pCN^VPl+w9V$oC;u>8Obv%TzE^@)D__v zak87yaXd#}gp2W;_uR&_0S^>=_$ifaV{?${e<}z0r6V&0cO*#grOo+^6*vXq!0)Rz z21_!b^tA9qZcPV33Afjt63j^NW|#ME6F%y>{1Tav-Y+F8+Q5T!_SWV}#2XA7x)JU! zJcHCODP5qn;M*+t2h5T#bj*@y&Idh+9|App1XZjPzy26v6qf;r%FpIwjqk*3Aed&Iv0G zXz{=o-%qP*j$^Lo!}}Sfd_=#n8H9G)CMamec)NOMU>$|kJ2f^yLC;=h^|m9%y_C{M z=!`#Pup&}$RO+Gx)JT*B_QjRqyho>@Jhrxs-X z9br1J{P3Slek)uGpBVu8i8}d(WHS`|g5V2gg8M%VMlgM)B3RB!aIhr!G!ZOI1XFZ^ z^^}u{{%eFu!hS&sR?`WN96&18CA@NpCHx5AUH=#eTdVkS5xD8cqR!BSR&UPSV)3)6^^9gGFvSAzuB|>Y52IS}iiVsN>uZ zAL>O!UnNi7(U(KT6y zd$lbL&+NFCz`0nKVRj1G*;()h>tPyv+IYQDYcAGOa<$bz$ze|k1Q8E=3gHSlqW@TX zj_9vbN-W74KW_;xeBu2>3B`PhB$g82FD#P|alnVgS{1Zai6<$e_&hh`?KEyKRnin6 z!8DKtIPHCXfo1sw&XoNS=_@o>uVYdLO70L-PT*Vz{H_(H4k2jPenTf2H(c+?NEpi6 zJtff&MD#%-`Xq=lLlq60(w^-*fa)AXP;jaxb*j(Wsh;?qMa_jb@%aKV3Cev}QF^j? zQ7C!}txCSAzP&`Lw`CiftRp4W9-wNx)UOp3OGCNZlplq&jBiDbGQJrM*yd%s0o&*l zrv8Ju7@YNxHy;o=&E{|2+50PSQ%+g9oCXDeq=}r1xaK(MB zrxW<~EpAm4!zRHl9TitF9s?spc8GtkZncY)7pzvR0jmwC42*G9h<}6O%R3EN)_$C)xJHY}O^+?&4O)j~M)c1<`| zoh~#Cz#ATGs^wzCgsXYeXCUw;ASxwad>!qL4mg`z&gQ}+Y4!pG;ZI=v#-jccZjXBG z5~VY=HhpY5M|+BLosCyzQPLpzo(swYBQ zq_3U6@Msh9=&%`d$UJ)B)07vvYm}~$P^FHU(HV3bHlqUm_omIUgNKKk@P>!Ym{gkp zqXeL*r30@mbzbXVU|#j$DSU>N{>M3ZpqPMbvR8Gedxaqcr@lo*BsZK6n+riwO^Y*p z9mlm1tGPl7`du8{R?Q5ML89k|NAs_ktojaMa=uL9kMt!+0fY`mO52%NAS72LMFN-K zsg)Xw^u(2qBeCqX++{JZ06Zu(Ynt1e00m zgs`-+hS>~*`m)Ht^yT1&#?QV?lTmSGR~mK6_?TrP{!rAg-(-+kX?n61J_xjx49efT z)HyKhsT82=#W3z0XJAuNa)(91#LZz>GVy#-7N%zi&zEKvrXy1;GsEK2)D`YXQ!f;L zAsC#QQ=si4;?bKr@;?pS`2S|$AM}Jl@wN7J)4Rm5)|b0B4@rrS^`;j`=gGBp2c!l| zho!wkiG+zx?T!{QA>8_NOL8 z?EcgwL;2HXsLtX~caF35&yrus&<&3b97l$=KKnGgLfYSV(1#X>X~ce0?WHr^ho1d9 za8R;pu$_@r>57pvyP1)^+qf_`)oE2FzWEYgWicQrr&v>G{H4!_6B_$SwR5MLjRDTh zlEv|aI397@=V(S@!`yF>&FXVAe5L_8lPiGRg~>NP#|PP^IG(1Yxc6CrI@kZg>Rf=J zVmhjrjufOsF@5u^{1np@bt=8zwha+GOFGR!C%X^i@kh^81JnCYktsd39XPM8<2<~W zaq2zCU&om9Uw#F~l7w-Ko>;OB=a2*J_po}WwJ;)It>+~U2HxyZ)cmr}&}7lvGbh%r z$~mb@l{Xg!Ff>Fm)P)!tK^S8bEz>f!m@BS2U8iM2bqeuPWYa9sy`Nd=^N0dI-1Tc+ z=o~WPNm@!52NXu`&5zM`VWo~IfeuM|Ow?veYLkgtRg&meomx-I!W@56#b3Y`wF9C* z7pdq!j^XaAQ~knDwX&pIh$5XS%*<*4 z?ZN3SQjRp-lNwQQ=D7m6E1h(GT#?j>Lbxn4b4NjZ`tYW#mUAPhz7I)>h&7Ihf;~C8 z765+i@G(t1ZSQAS^!5~GytWfr(Rn>^p~`XgK)Fbq(x!p^NI_;G6B2 z912Udjf(RoR-J>OK|zF$WQD4&7f`a2kR`Tt#J-d$lubj^0f~8<5I=3IU@MLmke;Nz zcFo1iEhv-6D`;rxrh6S>7k!MJpXo@2`pR_%IbV33X=oUSuLh>ge4UgoozJ01FN0=O z+@;kdK-cljnHkuXMawzfQ)l#%V{|(?7FGcI}WMNu2_RI&|4BR)xv1!|b}4rt*as6|2ipOft$>L8~|vRHM9Oa;|z~_;V2Wk?7;g1tHqML&R52 zJ;!3}<1>*l_(yYJ99QwNggX?te*hG(4;pxP;+c-u+zbUaKAdIlJHS1Q;Y}|u3Qzv% zgPaU&Q;irGB-N~2YF0@S$$ttTxtGi&pKL}MD%LxzI1O1-7m?63J-4_H%Z&r#-{;K) zBCA4}8meu0Ecg>YhRq-}-n1lAoc#6#vymE&?@3i9RN`AJgn4>Bx)oow`pXIo0D_X#><6Orqx?k$7dZ=AZs1^(hSiU{ zZf32zZR%Zq>qpi_<^W#%SDwf<$*d#(LP_71ynVN5iex?Ft)=i3laq?K-FwVR~) zXN8htiUQ-(0Bf*NdOLR2JD>tCrXAD1#m`YG6;y&1IeaUgAqvfWQb{DEO zr@*HK5f~;1fPhcxhZTkw@Ut17`0Py2OhClv1@PH`_`IOi$Iry42qw<;S{a>6bIM$HH8r!s)AY&5f6!F?sCC*;L#7<<_yX1(KK|3G#SZ_$MFa6TN#rD7 zm!kOo&McbmG13#T7XT7yyTMK^p&}(zPsJW~-|mIFln1Jte_#*OX99lT$F=660~ih= za`9~{xhpyW3ngN=;R&tv7VL_C06+S#e632`*$4IFRMfh@%nD7>N8SHD25MA6`tJf% zWSbmqm;p;8!^|D%bhML)0g1$if_|S48D@cu@)Vs&S&p_mibU5n8QpQv5#``5O56qC zv$&>l`OU9c;8Xh{Fu4Q_LAu|$4>m}RFG@Yo**CFYuPCur!(eU2w?+ePE< zh@2W^p5zgoWLZ1OAHQM^ZU2V;=Ew{k<+W>Vkwaypm!8++#2W);*T9Up+ z{=@Ra(J@&M!m081v_pH@-Fck)S0a>9mN?0EaP4nnjLA>4GYLZ6iTGL@d5|9*&%QDqPvd{UkOv0qYrJbM$SJB}x22{qZcmE{nvDhuY+s zRE6n9_FDx zO4NyLOBT0#w5~st3(4+8+=PQ0_LW7#qdXh2Mi4md_QfVey`7}4_cO0c+M__5SD?Ru z85v_|U^I8J+W20qWB$23qQR!+(xx_|1d5Pt$S!B$61Em6$+#Q|ikKK#crH&O11H6k zb^qbe1Zhgj!&oC{K-OiX^JmLMWJ)p$)D%WkF=QY!mQG!~ZrYnZNzQma@7? z9$SJ(pQmTD<{`Y%;Q;jkyyrvkH&ZK!X>9E_Wf_j~C{G3K%mw)dU@+-7m96wGGecREOz%f*E-Li@m9 z%1M-OpjLzJHH6ud%w(d?5{Y*o3F$kGR6qjh7q3A-SX~P7d(=+Kqzp9F{>O;v8fM}@ zP;H>;*D2G#m#v$gfRSCa=3^`99vlB+wE|{Q*vy7u&)gqi*h0j3 zU>^5VDwE#B>oa7;Lx8D^Feb# z0ViCsLqXaltaT4ipp}f&qpN7zg+3>@03rn#lfCdFvWL%89WA0#m(~!|h%y13p!v-M zMae4!cTp+7YJX0)>7LPiAkZ9bDA0rg%@#40pubi}xCYa-rh#jf9aoMvfRb5iQaCe0 zNn(qbicCog$F0b4Eds3XhcA=iY zMmL1*J;p}2gzd`-4ys5XYfZrRS$)h#~Y>FRhf3p^?UGaw-$B9OT@X3o_dIJ#FcoskJ- z+Cx=ojO5wgfpkKN()bebA?- zV@Gf$wdYI7#EdrWsM{$XdOAB0UOPw;j>nZ{`M7)*41o#yd)cUH1#vZ{w+>4gGFAtJ z1z3UP`;WaD59m}5#WEGdAGM(ldc)^TXCdfhkA{%`(50#({ofbl44zr-?J7$ECY~|r zEOF{%iT)B}C&DNu5xak<#u7CJM&S)2>-#cEOWNC_N(d&$_X8Epw{azVB_+rC&sdIc zw}9#(l4FG~$46U*9J|BpazyDkACx$CIp#}@Qwd`O!dP^f(o7%5_=*EYzwS(lxU$%^ zqr})47^RyCw>3_qLEa3nh4e3-XL_%^w{p;PS5E->K#Bj}%n~0bPmzu$~g zmctxcCR59rpnq?h0-fb^D)EcMDyK||!|*Yq4cRiO7Qc*O23PwO~KN}PJO93e42 zLm0zIVJq}(*_bg#I$+$fTygmZt}GrZ`lFLw%kH%S}jtmZ*kTrNJxg1l}Z)r;r3^;teXWMepjhjYm_hC32MiUvpReNr#*iXB|g{$E8-x*`ST2- z&z4^vH;n1aq;^rBgY-WF=C1~{gqd`iW|8SEoYc+YG9|Zb%KJBXYFSh&O)GU=E$)sk*y#}vYep(b}AtK_1u%N?to{sIrjCE1`rcD$Y&}Xcp zs0>e$Gb&Jx^T8EImr83TiFaMVT&&>3Ap^aNGtw?g1N5!_7+C0sh#+! zA(2yfthg3iG>lz<9D3wV+90MYs$iufPze}!7hR^DxV?Dn{`Z8#rN+-Oplm2WY(_^s@MeL-Qi9NAW1DIK+ z9UYyLu%#mbwTyi1%cA`ncyl9tQ+?xMW*h94!COM<=dgsKAjJj^+TK#p^e`iaW>LXG zlez|Ef=vAB1MA>rUa{c($U0@X8kF;7u_9^ktx?K*E>+OVPd`{>Pzyvpx&J|0R5OaonU-zo7vv{n9cU`1_b?s z6pf>GZ|q{wkMd+f8l9GOKXLSrtfdBkFJek+0fo{@lJcKhCMg@?RZ3gPpQSve9NLWW z0h6Se1(lR ziDwty(tU9|r5EWXo|8euKh%!W4EGYg3VO3i`hJZlN_u}x7g;ikcI4!6GEAW7kvFKT z*~6XT#NiHFdf3E_MN54^SOfvOggc^t4yL7E9aK(DM9vBDhu_z*KO7?0^_iw5PmR+9 z&6m&sg(xM!7ttTH+FE|9ye1i*q|1LJh}zz1OKOulGD$aEGRbSkT{n5nh+z);sAZyJ z(Z^GSQ6{U4Eq|stdCvr9zMfGo2rJc%Y-L+KF3si;5^9ZeH2cu zGUL?CyJU$mo-iUiVlX^SVeD%7CQS@-987Ez7+D#V=1Q7%)N!bTj_wK@1|;)_z^3%G zUv!|s{N+N7lI4#|HvMFO!1{UjLr4QrL;QF2a~7u=^i_(>BF+~K0kee&);Mla)CAqQ zL6DlDug*^sJ3oyiKc$HuQR*2l$Xucf;PVt|Y`0et9p@U%qEJle_B#4LOSl7(;jg%R zEO*3Ig)S5Lgnq^3L!@s7z0o310PK`>Mjig=fu600{|zyks+VI}YJp9EIYu1**PG_+ z1LoO!_f|H+n^{(V8%TajQY3TwQZJ~bkw&shlIH6{5KcEop(z!ws;pZr>^pdmVA8fpxFkG1|ZqJ{gV zN5Qd3nK@cr3(Hiq8i&$V6uio6fzJy}-6j@0J#;1}m!`tonkP`g*(^@%17{(F971TT zP$F+x1k7j@P{9+*9x1msv86o!#3WeCDi&-kIja3ox+yPHn&r|pjkGL>RN)UzQkF;4Se_P`>cQ#@sJe zJQo#?B?CY>5~f0Sf5Dd}cG>--JmDB;vSScI?SHS4SvF_r5>Zf{N8Gy4bG>R)lCm<+QAa%#FOI zt;XbKa3>ztLuLE{7j0~{l5AB0TkH?}b;>t{K`j1|@*5Ni>a5UEQs|rlV1l>Zu}hT7 z7grTqDrGJD!^YLJWvr|>D8!^otOZ)Jt%z5n8jEF@Ty2$4&VcU6He;Rv&A}CV>pr#Z zyft05DaJC>S4Ooxu8=wi%Z~#0r6geXILYw(5J3hF@~1$`=KJf>V09yHSY_T=}mzca@#IL$!&Sql^WkhI~HG( zMng&TBc3M^Oz(3Ddpb#RYF0#QzdCqBpkzt4*_t*O#t~4#IEr5pC49Vb%A#4QlTwbh z-RDhz3s_M7I>%V@e9;fv$L41}=?D2}Uo`3;>Bz?-M8ZJ3kbEwS7pP zw&|;Sl*E`0aM1c7B3&zaSwteL)CEqBt{{IzV!sG}pWyWSclcf3!J|Fr1hO6=N(qD~ zjgnj7bb1QqDfMoh@Dj-?EG~2(4URK2BEj*1GZdJc=_#R`-qWEAZ^!8P6+Gbx20GF^ zLJ;Wo5;`xVqo;%})Ct{%CA#XsPZS|Q65G6w3Ink(@vT1{nAmKzl2Lbfpf&1-jJD*R z3?SA{oYJwr_q+qvfi|pD8S5I7fMR)SEskY#HcJ6kGC~C*CeEKfPE>NWQ=N5ck2q1g z@(vr1ypq)O9h}H!yl)t29lLIfa8ueSH{9DyyyUeAjlFNKm|ciovBHxcI|$VqPN-%8 z6@DaE*`o)D6ruHT0)AdHM?Oy&TiJoQbz{ORlZ`rt9zGOM@ZZW%RY|93ZC!KG1;kjc zc6kw@GR<(^8$?}zY17>$@qiO$!5$(xQqIz@N9zeu9Xm^kk&bCPc6Rm+{i!dLUdyBd z!@`%}yO%4nJcSM~8UChMYfrx|1k3_HQHRL{nS(IkV;BAcD6wA?fd2Te#`0+lT(gxh z8uM-l{uTk=hQ5KBttd}}Fsk{I5)5X22{dDov}5{|y!XM4iY>fll0p3tPT9bu#v)v4 z-(?B~P+MOp9U+%cLY|Tg6NhN8!^Q1tm-k8?bh0<+&nh<9hja6uK(x?|4F!k;J~c# zXGtE6u0s4u;h6^D%q&t4PS5kue2Rb~ORy1=4LC<5toWas5xnV1K%2K=34*M80xq5G zp+(Wh81$Walq-BCwK69V{pRxh;pl*jqg`H@FMD{?n}fd1CWr970=7w6TTw~ zd(#JG)9FE){%@s?YAihh)yN=Cb4lk`Sw9tK$kmDkX@!lsA1w|xhrpKPbgP^lzeUnw^IY*9b^VZ^mJF1F011sn1=|qM-7^q=k zAk7oNz_zITFz~~hih<3T<)%S!-hNzg;{H{i{jA}{Kv4?=B?1{}pDzXm=nR~CUNUeK z7tFvaoq^?Z%o?Czf(9VPy#SMN{o&|m$ZVA4R z8+_&S7WfBnOYjZd;KR;Y;G5u<;BRKQ@c;Q)3;Y_~68u+g@c*2#z-zcA_{DDU|DLwM z|AAYAAL#}^(Fz}j+w9`##r&!I0)17{mXm-do{PH`BB`syKzDK(F|-Q#qIs#c!6fv- z#eOPf>Z8FBzmQTVV1UB83& z3-rwM!(E<|G7P~5$*@!)aFAjA35yKFaZB(oxxx4S)dJrYw*=q84LRhtIF7&sb;H-GBbk)0?;jeElk^ZPoGw?6?gPuF74pZfZ}d>Cped( zbn!j`>00Z>q=M*u{_83y#h}s`IVm0&y!~LP&UY~r-=2~|VxkHyOj%;$Al4bQzke{r zgcj)#6RT#KwPT8juPYcaF^1eSXiUsP!e)Q!*h$LO7Z+@g4tlJ&uu!zvLloOJ@4DMV z6x-oL0_@=>!JO=|$CsZtXf{LHqXlMPggu_Z1uxb%*ZH2z$Y?+->jXJgNX?{0DQ)B( zcfM)SM@trm^P84>dUtf;`@wwiot~ihuHI4d{U|P2-zPuT{r@eqg)RD~GE3Wd+nw*C z#P>lldtl;w`4cXD_hM2({QuACitiFnNWSahg7tk^=ew9Y-&CDxH~)3#yA2J>Dg^R< zKEj3XWhwdblV^0kXJC64`3d}hWTn;DR}(2j@crvI36*J>_e!)e%zNW;4D;q4L5?ax z{a-2Fx2iG&PQFEjpjP6)WE}~BCb0oA@o%_`te+(3N7f@#l#RmrN*g_g3qCvN@*3q^ z!x)(p-&8+pJ#V?&D1`VPH!y(jj&6M45{eDhr?u4iZuo-aI|3Jc4op#9-|HBe6W>&J zYD;gr^Svkz0AGl~yD27okGtsmiG1-rce2uV`96~G=D47~uarRG&=+q#Z0Y+x#%*?M z@~fiD)i$gz-ymaqe!b5=%k)G8MX@NZ$eZ=G#SJsqmlwjP{k4ISmpG%6X*Drd+c8Ei zamE!x!WW;29)K&*nczU@>?B2}L<~!&(|J2j_zP(M;72 zIBg-!vjg{d@qYS8kv>nR_)QSZ4Ht(B(|+-^IX#J~8ep2&WqBZ&*ASg>fD(pGXWe&s zT~`9;;V;5EBny^F<6?dBaeSUz?~=TDc9>3$R1(FN+(_urx}LjYjE>E+fcn zl)4y=!~%0Gt*zc*yHkToMgy=W3Nf%&Sa0-}Q=_wnR>jhGEA8<2N|ruO4L&s*Ah(e4 z4?BUS27twC#ht*02Y|(CXAn*{T|5pjEHYCv8`_TNMa5L};4jC8XtfL+zH;4uZ-zsV zV^g2Li#6iJ4OsJ-`8$rf7RS$c6VKv4%u^RI*szOh{~!7bO21Glk<;(Kr4-Hdreahp z-=;*wk1v6uu29G5lwI1KdgyV~4&`Cr6Fb48{K0W5%D=?kl>i5S{WW&*QRL{%0pey- z9tjd>55~C2wtFx$4ephLmxuu@V&aU93A|aIg7wozzct(&;oY!<-2QZdy|TDZjlAz( z$_$c8YlvkFvDA!c0Wyw+=Y94_h(>y~+2kWiPD){VB+Nggyr;5LqY0))o}!$xC>{(% zDmuFAhz`N8ZPc3@h_JsS6PVzNh!d@>-tKLuc7Gd6j`Aeb6FHGW#b7`M&c5%IBt4uE zeQY4YK9e}bz&&lQ-maokyKzQ489!Iyzc%^01%SnB`<%e)1%SnA?>T|pn`YQ5rdKz-%zor4ob#il-Sx9v`E;uLJjNqvHka-#d0xDPAwBVfGg zEpTm$rZfW!O~yV6^B|O>qkWm=d33Zx*V?8is{UPmqG*4-jH0BUZt|%9Q9;I`viSl4 zrfKPQxXpeTl>ImKF92ScN;>frzDs=hA|8hhS93GdwGBv#|8fI4jZMCcNQ-Rdc*_XHhPhxHVsL>+cNs0B}zN0pHi z--@!O%HERB<(NHksK#pAtFa%(vnsYt(p7<;2Z~qK*d$er{i}V2RTt`Ca4>L; z+U$f<%~XvY)83abmTK%^qP-9L27zJAlJ(&SM&?%4SgCJR=3eO3=&E5wu&w%=U-qd+ zgPj^}GaAWi>?6HF3#SINj0T{hI+Y1}quX#-n>@XZMzR{~q&L{-)S#ZxK=vl@If30X ztR=u=wW&^EM+3m(v|dhN8v!P(u_K|T{zFt_^9&rma@%o|r%{c4fw?7fHFg#EVV;G6 z@upA0wW`HQnHg zS>bODV)!fnbK$=c08CY6WeLC24ZcgP1-?CQiJ#eS@S_J>;QQm2;0L+Erw*{dPs1(2 zw{U}B-`@hi9Jd5tzzx2N6~2Uo|Bh0llYKw#XTiS|w}gMC8~pyh7I;5y34W{_{G}Hx z@F#Ff@DXnCUMqZvgfHa=AKJ%)zb0-8|EaMq^7e?az(0Xog5T%{|4MHQ{1Ds{{0ukv zxxFm#iMS>B9&YfT_O!sik6VJT=?4G9^A`9$xFz^2@hbW zek5)Qex)1yVrzbTOXjz+Zt&UNEciddE#Z%FgFn{Q0{;ze3BHsY{Ov9l_=~tD_)}wC zSYvBg}o3;Ns zEc>qlZt#Vy@PEnv>$}k|`l(~>@5)K|m2U8zto_|1vcDVa20z@|-}RRLU4$F_o7Vno zlI*`qxxufo_Fs!-|8?p`7kR(3_Fvhu|JvvV|GTw6Iwt$08E){!t?;*Hf7HVbz6v%V zo9dGixE22I2H#h5wIok#~SKzMhfswbKoLx;4JyWqi$cgTH8vmtSSP403~? zYK0#o;aj-DFSEv1x{R*^Zt&Z!@s%m#>${OI`dMbxf4bEFN;mjzR{gJ+`XB2C-`EOY zMZ!n8!Ed$N>tkuJQf~0Ec&WhTKRs|u{%|VJMcxlzw7|cOTY}%{24B|-|B!^A;RgTW zC=336xW(KFZ8-4{|CPQEGpK_3joF(cF`>vi{b};?>F4NHfNQ_vI`7%m)ZSA|v(IJL zDyL?6ixvu)%e*!i(gWSGVHj`XP4f`{#GPX?hd`gOp@muPlM$pIx#Z*ez2O~r0iNfO zCt#^6U_von(wGPu{_r!e5_;|HZuyxXjnna-D{sU5sKi?xc=H}>CB(0N-Y$M^9Z8D{ z0pkBPh{gY9D8w&G;t#iqziD`W#NSy)iND;=W`?9O2{in%Qv7{g^CSL99dCI%-Zm0% z4dBgd)KZ9F2g?(I^ZRvlByR`4AMaCHOPY zo#SBd*li2^H@GGEPu<{=Y|Y69V+{eH=mvl6t_A)Z+!Frh-Qb_H!neb%_)ag{ko_HH zsEUvi2R>wipG7VO_#JNW<*o2VC47b(d=iXg!asp*W=?n``XS-9 zgr#}irYNnT7zwXWce>?-cM;clJ6i;_uTSlp>FxIpwY0BjYQK)!j|yymzAxI>(%UCn z+y6ufOVWRd+HVUDpud{h*VNlbS=%o*wQox8hX=MFLG5v{mXhDvzK^N>MO^231KZc9 z_ITeF3wNMQTb)V`A5KFZpDv8jDi zYX3lB`w`S08CuD2ZQsY#{-U^+`+BnYyp?<2q*cuVBq~Q3E9w|O8*I@?5fjFDaGf_K zu>B8x&>o$q%Xq6uGdCw%Jz z@wFy==ouuwBd8cm5mVoUZ!50z#ss$i8%L4&DerT{EwHvf|Fj|BtJJe-0~uw^K$i@3%9^nb$&B@w8+<`4{56?@9(04RZOvF^CH$`gT=oG zm#HKM|9AVj$Xmk-UrNFsaD(suh($k-<5sOK@yi4*I}%QwL_2Jnk#W{+00Ij&@CT7{ zN5TPA-n=t(H?B~{_xr_O#|<5b654=IZ6|gh z1}8gJCtJx*w!0+z2*^qjz6{fb1RS56=0o-V|Fj<=JQQ!ix6Z4D_Wzgt2v@yiDBh2d z_A%`bZPO{~9_aZQ5b5B-(vlv|u zSb{wUHst2e7_}YYnAYxGX|WyQ8nz>-H|?$45w2+uNf^s^govT`#n=uAINNIEBEuTs zKy62O{Uf!8TGXl05KAMq9if}v=rBUhMyZ+6NNz`{qBnTgslgpXL10a7M>xM$vG$Tv zqrFBWxgFs%y+M1Y1`CY_$TGA!w44)Id;nOib_t7o&Va7kk(&qM@YmAjo#1n?FcVD%Z}ZX9God5UWRP{&+Q0zfJ0@25*-1H zSWp|K)pms6jqL~*oVFvBJ5OpX3~ zJHn$nqHPEO8}$kXBI|a9d#e=#Nlxuf8cGhb9pN(_QF|vu3k^ip?FiHKc7>hV4K&)x zxH%5LwaM2e04!Gf%n7Vi09c%s?gaMx^M<;L~yzsJ~8K;SYzga0@_8mUf!ij0%D^h#6E&} zOF$HgDiovn{#OIGrnVdDmuB<}Dzl+(+^nl;;bs|b3BHvZ{GkdK_#E64d|@~Er>*c| zxYZ^CSO{2Hdw`f+Ql61)r|jgUvKv(`MDuV9m901wSi6mTkLO08C>&6?jqe7`sN4ES z!~ezf|QqD-IG3?rpzgmWlD= zm8Za3a7$O_eI@YbO|QnPn%BccRiOYdjVx+P_@Qp_30BpPCDoGs-Qa(=dhb5+Ub4R% z{P%D`6F*<#me1slne<9X-c0G9U&1bqmTzQjURlD=cY~j4b?0%?ork%>-?HMrAn~_$ zgYRgCZ-raA;|iVP4xC-4-M^ren3JfD`FZv1$b9iEu~TJ8k4%QyAGja)=GibS>I}X) zUIcIJ;r+T0e*)A4kCnco%>xvAK=L(xK!Hw~b|Wq+a2XAva6E3}ySJ4eHMXw~jD4E@ zs1N)!Z>tovtHA4!rS6=!*zFQ-$<9^W;J?u<@Y`@p@PBl7F>It2zO{t^!VUftD?h6w zKeOE6w?Y*rzxx=s#7{pr_?A}qIugE#8~jRIKEm`9j6`Q1&B5*VDEc<&TTek^nw0XC zCR=%K?YAfP!dh9xOWx^Hc6ay)*3sSJfCuh?MU@bLU2D2ZqFfWy9p>I*cNiBPFuWWd z#jeo33%KZghgB0Ha5}g`76445ekkEZzO!fRaSILD3qIsWvCua8H}v;^c0w{#XK0;; zuEso04|uBib!5uC;@wGS+$3fPntT!1Bn(Y1>{Bqk31(3sOnHJ?Eqj=?@YuX3yODVg zgXD!LrFn+aHWr_!@7IQT@Vjg@o*G30f^GVlYE+#Y)%(V1q&n-uS~xYj(*^JDQRiJ) z3#I!GC20YHLRmWrZRC!D5o zq35iJ{`P_k%F8Po3J-o&pifv^$$ z*|;V6dldRk@U^V)WhDH!Zt$}%TJTTBZNPbT|2Ye`9sK+2>w0NG)6>w)3arW|wCOXx z73pMrGw5T$SJID7`e@rp>7)DOQXj){;cuYhJ4(~dz!%Nj)vBo-3V57}JRhA>vC)obAfuFp<1R z=QHM9N-qv#Cv~@C-tYutUKoh^g9owSTISJg9QToTbsl4W$qn-_?JYd_l$bjNV(x0f z97~wjNz7&3Fpsoi{x^boJ{^fFgqKRcm9vZ2SQlTU5EZgdy-(#yKHA^*yh& zP*CE-oW9f#u89^@WnK|x&<{$9!7(;kc$WL&3Jt~pU?9B|Vm=eU+1--P2fUmWdJJ|b zL_--8<2uOxS-H@ja8}xSawW41ZF|6w`#YSykry?W4V@?m+B)xXYmGE@VHtUGUuQsX zQgSbA=mKlw7K31$G|W9e1Ub6UhZG|)dmpDx7D z+UvJrE9zp*@40j^Z~+u4C7~$MeTbYpMVb#LcmBd)t1Gg+su5tmB9F8A{)GGHJtlSc zo3N$bLb)ajZ6ynBaR&4z?Zu}<5al!hOnGMIV@xFlR9H!qcI!$SDv+3c-S~h@%w`8a zC)bPe&>13P6@w209#cs;JiQA@oIU=pg9>j68|$Bd_y|KCsE(Kv?@OifRlq>y%A=|? zxNHn~m0){2uwa?wMfMMdY$;~M!2TN~3ZJOH6W4r*Vg29M0k+ZnAc87%@v`RKs8I_1-px>OM(l1MRj810r^< zO@?a~bC67ZU*ygwuC7JL>X=-sOa+T;ow?!QTFZq4=<#H$Sd5N&kjQPrHU*3S$lR zq}Z{$)_@|0YrS&aaIN9EX4l%T8@Qlg&PZ8st-V;`C)auu)3U*1;O{?_YrSS{=2E8I z-HsXk7%s-HbwH<_EX-?-ZMarerXYV;Yp^uHwN`(SAAZ{DpJn+1SyHAn#ZN2APZe@` z>003sGcRcoyH+8=l-;!wX-Ail;_|l1f%Rcw0SEYN$Q&m4GcxzAa)ZBZ#eY%a|DPLt zed`7?%twmc*3k`q1Ue5BKQXwaTv)~pKFvB>o-Rkrr-kC|@+Pf)*b;jC+OXj_k*7*U zpT7q8L*5ASU(%gmrod-)0u_Z5H#kJ0m^$*bu|{EPSrLU9P%{Zs}srqRhl;RVDO;Sk|Se+qo(~ zUOqifMcr7BjjisItw+EXM_n=fINs6*WoZ{Abez?g1@hYF#Q`DLDqqYj4OKe&-p2bX#jXwgE&?j(sQ)`V!@73h{WB>5Zb5{3$V&MsAF zox4l@&yv{Nl@4&JV%Hp8O5``=YZ&8G^W##_HCO5yFDLj-QqF13>Y73UWOk{P0)|U1 zy$rF%{C`_r?6$%OEr~oDJ9){a#;nYbOEtk;B#R%GTy4||V4!#v9 zXzA&yqAx$b^+OY-uAl7cdZZ;Au^L5^*|(bB!^)!6U&JL9QWJEsj|;U}eCs5(Ig)Rc zrUEc%p?vU+@~zT#ww6E4Y`qEBmzA$hd5A$-GDzvlvlrA^p`qkkcjg87)@#f1!_}(B zN?Bd)rAsl%)fI9Lshe^THg9AbMPl6G@3+E}x@aP+fq*ww%me4GOKk(3_1geksLNUH}f9(9RH8(84rF{Te-c+4?Mwo|OXv+r0I(C34>SnJt(&yqqQH ztw-RoF>ig)n|=hp{NLxTSD+Qy`vzqTCwqqgz~moSK4I!Y^`z&-u&( z|0!;XpEwuzq>l9p@i>{L6P|6x$)sHi;@;Dd=JEp$u|eLED3 z-`JlKvR!SAT-%Cfi%%fwXag(LrQt}<8zYaOP*hTkltx6<~wSnWC@zy{XC0HbegMb{z7eo>U~ zPvC2W6pywxRgE^>0H-X)k43@z-Wuxo1fw#?=XP2|vujZ)oid_QJ7xH06Z5coO3x+Q zXB$OLNGpNlkZ;ZuJ+c^)xNneMQJXuNaZTjlLHWR%#_R(b~7VFNMJ-5JoE_^UM&ek(I)H8=PdtnghV{H5l^p^Xu5;_lm)NZpLv;e75I zxXN;CRc*bcm6vXfBs&((@-k?l#CX=9o_(EZ&!v&{!w>)mCfUaH!y>dWCE4=yEYbR` z5Iw5}1hynwaiL7I{njGM{)^Qau{c-|k1a{|6n^=?C)tnWYR_C@d~sfwFN#Gw*+6v1wQG88lqrUQ~MVhu=5@!CpMRozx`#DlGm|Y zGH?47#{3~AC(vXGW{|fVLiFtA$=42D*C4~7kiTN2f%oD7bAC;J^2V!n!!u$kb zZYweW-Nc#a#KEg9+Ix;}8zNEgdok0R@yg=$vT_Bt-{%G7%Hp%QLURB3V|#MXs-~*Z zX}F?fp(ppL^;z4)8lhVfbX2!gMvxNw_4k5W@NTJ+PUU1(rXp(|>Xyn$I(Hf(i8hBk z{7Viy^l^uyseDf`rze`77 z!>jli6z7>#1UzwmmUHvmUwC3$Q9eS^&z9z@4aX%L?zb5BR-@BPCA!Zk}JFk@q znc1e`^gViiCpUrD(SE~E;_Se+inHj@+;DMhbkd<|^Z6A5#Zm_K4BVq)A~PHX#D#jQ znfpQ@=jl62eluw)b;ST~6$a7} z_`J4#3e=_!)K2+{suFRKtMXdo>Y;e>Zd09dS6 z$q8(H09c%M4H-{GP;{)%<4bQAf?&X|oW!mbV6<`*@PMtD{w>zFOqOe4Amg$WR@2Hr z92rw&r;UlQzi;+Ym^J06LM65D_n9oVdUAd&mI5~9Xae*DEVjEQTkPXHx)|bJkviI2 zlMIVJ2qA428)+C>TI@Xh+6MN70VZQDRA45HeMSxFbxVIa!(ye32GU~bPI!N(EWw^2 zz+$yHC$O9VusAIOU}lT`l&V{7(?evj-FP4^_ER~F#U>cY42un#_@5T5^)*>c4#q@; z8%^t>sbgSX{ECW{`P?yxDQOzl)#qtBD(^W5elRgV4v-3|*a3bnYjc2{>g)g?)grC% z?DxG@G>j0uB9pJ1#c!=d}=Z zX=x267#{X9V!`G*MGU8u9+u<;c9OD=B_|vhPngNWo~H)F!wwnQe1p+IdRS8@yvYGz zvD$r3V1oj{;=fp~TF*{4Afpu(aF`HS1C0PUt+@Bo!TFrfo14e%c_SCY_e;3P-Je74?57=i~ zo{-cU5jE1A|5u&beawG#2mW^zS2{|TQ^UF?E>~v$k5jmGN=t zklG~A3GKjG^?eg>`XQ(^8zv6%zpQ`Rc)dX2$z5*ui(&VxaQQ>da?BRM4&m~xb((mG zgdgMv-`5J?Rl>J$ga6Sw*|8V5n7p8Z020v{L+r3(rT=2sNu;z`Y?C-S6}rud=PpKW zjX9@%GE6Aj=tRCdf+?L#l9~4e9tUBkSZ7jR#4TxhoE!XlEBtcY()ljF)}!9g{SlrR z<*5*gH_lpjrKc%L8R*)kb<5j`Wk;T;u{dSa>;<+DAV)tbh$SBarV)#%iHmb>H>G z)1}#WTN+J#nP)JBO}Y*ro>n$2a|v!T*M9GyfMJxp6nZg0q{+_oHKjx7Tk7N>EroXr27Dz(C8DyT?elG; zkb~|)M1ROPDz#QLq`bMW@i>*^LfU&$Dlhx~y-(@xcqPmdzDC3J)TB`SA!jhWK)8ES9Q2^g z8w)+ACY2N;dWI1GkdhQDv?V=d8{Lu8h7!DQGqr^Z=&API0QQc_yG-6O>yU$YJPEGs z-ZAzA!#m0$8hB>(5@eBKS<>80IRbSK#LzYJP1#q#ie;VXeoJ{md8Kj#6~0=gyt zJp7#l<7s9DDkGq`iXq#NWdzEP<^Vxn0ZO0v{@G%?`JXSSI_i<$fI{QRvfvX7f6dE7 z3v^DA|3O3pTPuT9eIN5d*BBG>A4ngt$@5|XMd1!?DF=82OfzPu%P@_7520{@FB@gq zoz5^jomVBDA)q65FCxR2S)nPE_6=N~m(CkmMXX&xzy}dA zL?=yMd4Px^lC)MXkn|)X-GfMrAwXLz=`~P0SPeotAw+4{YbTvl8Yp1Fmq41km(rOk zCZ7`MJ%edJK45{bzK+uuxJ=ekVysLU>0JCmQW%a(i~tw#n4iJ8Lx> zX5$}bL_bqnX$khtTl+V`#cdt)gN74H*c#_w4Jnklo9wx>yzaLX?v^)ILNa}P2hDLS z%r|H`rOG1V#TTVmKfm80*55UOpV#J%P$S1mMh;+X7>Q{_e=LE}3}~^LLZgMJjbtI8 zEk0gW8{L5u>0rcsyXkA)m4-?BP}P3|*r7L=1pw13kA&x2xdfx0K-t6!UMDbX$j_OmA*V8L>|z=)j% zc)+4g2?fjPNRjL#-`$|t9OV7d?du*PxYEP+62Qh5NTLp2*CgZZ&7ROXbzN} zoZm)a76J;0yEl|@$t7&UwUdNvfpEkZl;NvrLHd2TEQ}o%gkU(eeTt4l^>^o1x_QN7!fYZ0XpVeLm&aX?IbU#u! z?~fh>Bd`cpDaUYb5f5O6@T`@uhUT0Pk!4*90UoB*(~nu^Ro4GSmjF zrv$J%yBM=N8Qz#pr(^o3>CE*EU=B5NCYaM++5^szNig2au;hz6+#ra@ZoRJf`4bBv z0sIt@{N#}XsiaFq=gb>Ly@_Rzqi5c@-1{SwcZkiWm#&)r1}JsT12E~f)sz1d$DeXZ($j+ z;!6e4uA*E3vG<%2L;7H@I{YuC?B>`6fym%xp7s&^FQ?sISJ7s1Z{a=W7`;b?@$}w6WBxjL> zq;4jIvoe0np%H8_WfagE$h~G`An`s{#%M5*O~WhyYTXP`hC^aw0E{IJDadK{ z&wvm9LituhllP0(Vh=V2ZsUCMS`{2}jyZkR#_LfJ^SYxbcoj3vIXbUPDF1NqM0r+N zdCmC5#Oo@I`gz3O`Q5QBQI0l1wAOi@E@lRT>9s95WM1!GvGLkO@>&+W=GDtA2udfk zB7%%VCHv}iOJz42w*>#A@Cpa`DVHtqFXEQqSG&PK-pK+Vid%x8=muZ5qXpiBTY`Vm z4Sq5v&rOx-D4LuPGLf@yAQHp>VIt=pg11iO6zwK*iaGIDyea8@l3_`DLx3Q7&iU&>CD;kfIs_!Wk_9=AZxkjG zO-ZlF0VF-~Ldb8rEICL}e#+7$%V!16vK;k0gz{W7{2K&slI2{wMV5s?5L}kUx-0{6 z6(CDw0hXmnpe$k7n!;}oUDRdy2T1{)W4ZF_^&rll=(TsD*Pc(sgSPc)a%QzZ3X>R= zaB1^Pttk2-N4l@xx29%MmeUeNGtre#?#bb>a-At0KHZid5vO4xlv7zGEs4SpO(TOr zAuQrkh5kR<-UZIa>iZu*E+>;qheA@hHKc@5l4+=!8X84S7bR3vD$|XTQOacoGtBuM zGo}khMbky8$fVRzrg6z2l~fYtQqew1i4qC__gZ^Ddq20sd|$8s@AG{A$}%4|Gh=V8qFh!H8Au4uXiKxPp>F0_#SUn9B^YF?x~!@ z8drzE{OMTgiU-h^Uhj(QCkjQXrO&{I*vK=F?*P?@i?I<<{u1 z=35J|e?S@-JQGvqi?ygWBkJ|y?wxza|Ij^o%`EhXYbqPf=EU?vazaciM5BzwTKy&! zeYI|bZ5SL@*e)Pi!)-y0!A5u>K`kc*%P+yg0L05cAuX$vH3b{ubI7uS5>XfgB+a)` zdeAV1qvON^01(XuVM%i@8x5PqJvZCvp}GB%r2-COR*PDvA^zg*;#F{bQYkk;)9|&_ zZ~4Qp536HE@w!aB8<{iqX2o3R5u?vp`{{y)QKkwJo3Ex)1FNg&{ zXupGgUpx~1ak1bR;jRYTO!f*M3BF$}_!dt1kb*xq7X1I5Gxr!ZbMGZL;@96pbafHA zL~wz7o}zT+5%^ga3qIQke;*!~;wV?3qPHHiBN#XMzX{&dP@C6eNR!>0w5JR5cm22j zc=Q6*^i{E%eiRd>jnyG|Bvw!NhtGb=!0wq|Opt;cjh_&HN_0^E8jl2D9t-|%C;Uwc zz91I-+RGgDm(n9mpIBXOK$1}8OqGFxm>i@(22^6WX3@AjMLLDxt@(1;%}BvGrO8TR z(pbGpArr@&K9cwQ&Fl`fbSJe`PDM;nwhZ?=Y&pLFxUBOBbh3FhenTEMCljhFyrUA{ zsvJnLg*(bt_o~EQe)y#DfLAfZB2BI%nDBCN#)X~46=|WXSES`{Obeyr#|B;Ty358c z2h%QC(uC`;T`yF1BSHJRbcK zVxdl?Fr?2|exs{HjL+eb;2Xt)KXQo!{x>`l{7$s#YX(1G?129Uj|BftEcixF_?ilS zLM-^(x;W^k;gRUy7z=)Wf&+dw9tpm6EcnBn9q_;6Q6@)5YtQ@5(fuZJTXPuE3f7%c zLBB3Wovsi#B7G(A$cr)cUCeL2Q(trWd(5eCplZ!K^)wTtaYf zg$wfr&7`styc@p+qIvKMblX+;ee4A*<oL@bjwto6D`B6N)_I{2PCy`4iYt<(!>R$Y3RtEI84Ud1tOkQ zM(u^BwE<}*ti1^LMEl>t`%gpE-Ap zv&OoF9@PL#z~5rkBsoU*hXw~rbK3>(?-LsK-~P~@hw#Vv|DvzAMPDMp@sE3TeXYer zUPJul(De=brFJg+oBx$1sqS+g4TvU2`&G$}S{ddDowK+nTp4yK>`Q!+gfh8hXJ zdS@pL0c(UMT{;!d*vT)nO!tS7o9R_rXL3_}0F(16MV0~)*dsrQ2)YoMzZnJxYVrqG|?H)xLK|m=6 zdao{(%Kt^A)6 z(8Tqsv2JKgmeA%~rxVz>i3a4qPkQh4KhIh%EW=;af^De%x>t5+<36;}8uF{y0T098 zTek6rGy`_W*0+OIc<8hyG-dfyH4)_B zSc#vWQZFv&gJFy520}tzRfqVFz85G zLMuR?Pmp9r6+6DwkP}^yT?z6iIWBC12~=$S!V>!J0L1ynTRX{VqcH2J*hFCG5m*3R zO5a2J6CEW{`WvH1{^RvM{}x%gnxW)?k*W0`mD<`5JCGZ0gqFnT5fs`^>4y4kOCJ)@72U$2>qK0q zvk`7yQ!Gg1ZucNR*DHT*s3?qGNr;g4Bqm+D?Uqh~?B0p1Lxu4M#cCkAha8yP&mKt= zh)!tQy#T~nKp+;TA5Gkp9hY?J3wRi{XeqW+U_+I*>ziPiPHDyq8jnWm$^B>qbMRn%a9Vuy}DXf$2Ud-Uj=7Dy|?3~<^1$tmS zdbi)SN8huNJ-Uo0Vor(wXi?OQ*P^f%2i;XWtbKK|B^x|^dq$ZIKSeWTag2sOetnSvS?@{xOioHZ)kN1!Ls5{(5k}pS7 z?3)q2l|Uw<-)u76ldb#5=w>sJ4N?QmvaT&ZN~x?ME0Y6F-QJNFBzLRFF+2U#2zzAq z!PqVd*SF{fn-89i2Y(;@3V;>))JU$w2UmuQMxzu(KG<__6?`r+>h!t2xZy;!C4KJD zq)Xf5A^WbROV6QyZ%bS~_I=funi=7$#J;1a2O`~(AG*x*&N?o~x?DqW3Hb+eLJE!? z&k$PFvO7GgwUR?VN{UPd7PwdA2u#!C(r-0@$_an%2iDmI)-lTPXUp@3rb{w5$TNs)Re)W8 zk+gUmMM{mN#id4)dx*+H*J3tjw$8NaNj1)<;JBm-#KZWf5u;vxpV$AqoiB$^b_<86 zXtqOIZ~y}++J~ZgOhE_8eRy4X_FA(%*t4v#H*!C?4vk`kP|+P&EojS-K}B-BjlKA! z2^5Wlis~3Zo_h3np<8Y+UP?H8lR=X27%Ct-2tIPUM6Yhg`5?>ElH)zuM|1PdnSh0~ ziM*)QP2GGG2`2Q_BM@URDcB6p=vK~K7SUqcaHHUdSPxO;2NorV zCYx2%hH5a|@L1sjixp!6c}t8{>T}b zRyeEl0i4Y(Hhq)hWU!&&9Vf|g;-ec~V`R{CCmkcybWebrBQ z>FceM>g#KGhF4$j=UDn0fjQsd*OIqNeYM|a>8qvIS8ckgZhv|>f*H$RoIT~*F z1AET})na128ky&udlE4B^vd5mez<2m z)i+pP{it~-ZHh}rb!MJaM|$4*6d88+m})TI($VZ@E*-t_ozzht#+Ee34q8VU(3{8q z!IC{Xy37Dt{?8Arp$iQD&krp6gKpOHe;UlDqZKYN_&FKX;rJlauqJ=|IUA@B; zEv%#qBA=lkzGgUh| zXotdxKt-`$SPdd4W(xwaa@maIQ{tK8>a1L5jj=R3#vIAAnr)?;jiWIro3J7=TmY+= zMQYtrPB9nmLaD@Q1QdxwMYkf*wa{{@Jk5cx3LMmR()3fLxIQsFaRwMx7eSm7roWl6 zy2LLMoO4wtDn}0Hk)ZdJDkvI=2#&ezB{Kg)c0^L5jhSyy@<9@dBxe@Vby70%$MnPL znUUaCpq;p4{380EE7I*G05z%(gf6T+5E@u1-bF!HQR%YL(cIw!)SN06SBbjMaX)A` zmpF}-p!!sk|CT|kN~y6_Owx<51DI*Je64ev{&F*_&Qnj!)`2 zIi*veMoMT-6^eeO0i_`-h_WJZL*x|1A_^rnvFEKoNDYt93{5@riJGYIm+@_ko`qqi z4$PB+=K&?0k{OzIwxPsj&v^0ug>>Uhdzws^sW!0Jl`cSBfj1F#^ImWA-lS`L;p3&v z+N?;PS(&1xAJ~&Fuy}C@ChwtkvjJ1Ar7#0DnyU!m6l%T~)|P7GZetL5k%8SBWV*b@ z%A`FTt@l%sjmrkT3!z6T5P8f{T8QhI;WeYJ!SoE0iLNxjR~x0T`0yLuYbB^z7Z^dE z>({l>0D4$mZ2v=0Bv6 z#PNMvLh;xwd2$K0dfbxGOGq)eB=pXgQbM!7*6mFyrGeK89aqS5W3RsUE-R!L5l0aue7+7L8UQ+GEP_zEB8p~e8ZxW&|E*TfD0^MjQ0ck z&ge@SR8>1mLj4EFk6>|GQN-!O2g2L zoZIqS~j~;e82NXiB`wyJ+VbPSKwG2^@xyvv--E zy=NQcMRIrGOVE=J)d&^cKr^YFBf|Oo6^p{fJBS~-S*a>t;DKk;3Cr6z1#DP;g)dx4 zP-1ihqO)&um{L$3S!R#4Wci|3mW@A`viy&%PHpT;FtfC)@E$7ae*73doLFp^)y3i%{}#8gE!XH^C^tjGXUC=Gj@2? zSN*__lSi_F#fx!%V4Dq?Vr}(#)&S^B2=1xpb%UU%9;newJ+JN2WEu~$JIYhEU_Pa%co~N75!6vuw+ve3)HB8pY?BKtUfkjbw$OknLCtPs z3Fs?gEP!ZT-M<4VV(wFlK<<*k7<<&(w2+L2!wye^iU>$-L@_Yrt?zTo-$1 z>N@MBxc(r+av0QSt&D_jBo^J1^L!&=C7}!b!17&S@uHR=*qsJUNvJO~KoZ)BLFSoy zIvNC*gf0u=LbZ`5B3;`cqGFEO?)(hkBe5 z3tk*@OjY0Ek>C?z!Oy@d+cvdLQH$5tUMON9r*r^4dHq`TGNk=2FS>BX_Z$C zi^CNn=f~4A17fvZ8Jf0t8v%1wMGr|ka3n=uSV=2N(Hn?VsS8beA8674wjV$4EY);k zYL3M!m1?}p(ak@&dE_ClR-uyFzJ+g;;`W=qg)dRP6IXj(8ZDz6jA;M3;*~bvc^2mJ z5}hu4&INp7*P2+CErmM@i2R-CKwSRX?2jYCr!J;U75ALWGf&`|$}_K8wB6;IpAbw_ zF%;#Qet?x5QikA1r?63Cv-MbSNNG;k!E=D9%QN-xU~Nd5tkaXrVI+zo+Z-*5dtwNA zd}4_Kggt>X(Uicjh745LHl&Pjf%OpNe?4H=y1+8T8UkZSY)em`=K_ltFA*4*EvOG_ zmHZz$GU?*=hLjx`7Q|)cBgikx1@iQ>$$Oq`U)|Z6*2o%VB22O=3^1{1r5sz&tp*z$ z2u#(Ye9Um6MY$iN$Ro;r22hFeQv!2~vYiX8hj`Tw>^Kc~*?C26oNm-6%FQmYcyTL% z={_h?zGJ|&DB~WMq8#C_>x%g zMZy7}gGYkTj0JzsPY(E-@rW#;v&=xHIvfuO6@BzGW=S2c$yxH)Ds4b&(P!I*fa>a< zU0oH1qhqUAVVDu^hvsm`$jJ=VcsX~R^P`uU5hr2h%S&9$WL2A)hG-5GU{bK>MLc(e zidtjtjaFe^47JRKA2w5i{QeDgyVTr@DG0L}wkX=?Y3sdX$IGTI7HoH-yLC5m1t^I$ z`Md+BuJB4#6~RF4j~4&$1F7=c5Zd99;5)~HfA=c~{Hu5*_~YbP z{OEUa!naZIU&Ml6u+c$(4jzgAi?QIlf8&6^0FMMeJQjREXMeB2qoqfnb&rKM%o#V{ z#l@@bA}$tu*m<$zlXzq+`sV^=MNcAfj-G}8crASwnYd!yVbyL` zigxw=>1HFzO(fV1G$Zfu_0R`%PKgBTQycOn9q9e8Hy<~q6uI0hEQVeL^AASbYcPD> z;|n|?TgywlUJf3w`dzByJSnLkp?9o5gCz@8o528 zDuq8hl@i|H>w{DjI}Ur6r>?iXE=T~IiD{XkJX9GhBy7C1m0&n5e-oQsqR#-) zHASylilKy~&GVOO4@<#)T37lEqx|N^-S?6|lh*>EjCFAVKk^~y!cpa-<~q6~$94

96MRYw#RDB+HaI{y6aBy7d{Ou2FN*S6nAxspe@@tm-~FjBeu3sA0{KiCp3HwfLN zJ>TOl_f2qE${octlUpZ=Q?->)L2LC_l#|YK1eIZ^oDV9c+=NKP&R)coL~P4y=Y|m* z8pK2AuzL*X%_Z0}xp+I4#7p9_N1M9`S8&S#z88zEV+;wbO&ZC~4wEZ^_OUjLLC*e$ zw0ik|R)Bkvduuwg-E_9i0i8=or$W=gGOQXe%8l=RfR1G)lZ_Ajd0&dii&wkRpCo!Z z(c@b>TWGo&^p-$(+OGlux;4KyX<>W(n>d$)Dk(Ru!KBrnv~t6=6m<{MtY`znngbf< zjO~xEDd~-X;c=5i5N~KlCzKPIgg>(jig%{TF2v-}S7WQI=VBZF{TY-`acePNwUG78 zNRuN>X{mzbFM1WAdaK;&Zg)2dg;>MWvV(_hwNu%5gg-asG|a6(H1O%}X4?Vz>>!Qy z93bnB`t3oJEX0xAc#y;VD|8<~S(XGKgRS>Yq7e;7%jXTkAp?B{PX5K!?0Kry9_ZLW ztDbh~&IMThJnk2hhXAUU9b~8Bi9{2|REF}m?j&X1pAh)uB=sY7FZ5L`Dm#EOPos;m zwftUV4l?6EA_0Ki(6MX4Bk?Z4fo{N#1pN440A`Wm5;tIi8?Y_`uLYp6$DKPYn7?86 zE+%_7CxKWS5}WS!#9yG@LihZQcenu$n##3c-wksgVYJ%0 zVaB>)E+lGhD>%mdv{VaBBZFDP3>{C`pgF=%}kRo9hM~Pr$(iAlm_CRidy{l7ek@awb|W zUQy%LsD9LEiS;W;RG_cnolz zYD^@2OICGd_~U~WP$3q!8t`i#;LBVRv$f!LzP2-u66PGj>~zBvxM9Yz+yKkvp8fPW z(9MG4p>8&=e_nU-0{|IH0DvX;|6v7QE^d1h^i{8x_Qh??$_^MXnQbK~-=n;=D?#sn zA>%vdlU#Vq%n;lV;n^}nzp)qk;@&dzY8&p8kyenD2;Ku+smVoh(x&SYA19l={ zR{~-q6dVe_?rJwd8&)KC$Se+cmSqi*8vs&cQ<29WvlD%)S3#L-e5&`WTOzpK179~V zUocLM-Sv==b$zOL-dSMn`q^OZGO{+?U5AH6UCrv|Z3KMaQ2;(ez;VZ1b-2zAm!scB@gS5)E($wxiKrC>SW>m#=t%3*20#0 z4tOs;#Az+Nb^~D6`o!Pde;uhmFUnu3f+)x;UgWmxW`w_);w%fp-(%pfCcNVo&Z7ps zM9?IBFV874lfZWI?SY|h6smB;B)DPfvbr_gOZC&*z3hnxzBsERZv358%t7e#YH*(e z!_qek*Qc&(9V-Sf)o3ATg(h+#`k-4viNraL)z}kusM8G2tt=nA%kh!MusCjH>F+TF z$mE+PjL+-}4A(_y#q5^;_BwoN(dBv7)uEq}sE+~3ef#Qt{Gm#jyvyWGCM%h| z%H$;`irZOlZIAW+tPUT*G7plc7uoF(JPyok?#d zJ(yg;q!W`QCT*FV&7?V#Gnn|1m~$+uE*~6+6{(|4{$x_gWG|BNePZf+KKq)S!sJpW{h6dONo8^oldeoU zGHK7`944)p#4|aaNn<7rn4H9<`b;E$Gx>|j0VeyH>}K*4lOLFT!{l=&TbXQO@;;MN zChszNlgUaZuQGXw$s#5TnLN(q5hin(%wjT=$rL7&n2cv~H*2#H1~gvzat!at0GWlZH%UnfRC-Ylh@7lY>ltW3q?I&rG&6 z*~a7xCZ90*fXPNC>zJ%z@)na-OqMZunaT4^o@Vj{lX*-En9ODpU^11-f0#^QGM35h zOm1P4%j8-nS27vKB%8@4O!_hD!z6{tg-kj#>A)nBNoyu8m^5V)$K(_yCo_p*@=sGF zRZI>s`JIVk@(Yt6nS9ISOD3N(`H;ybCS^=Ykf6&7O?;id?}sMKZ+U2y`F+PcFEziP zo8Ob)(D27izP`!tH~EGp?>E2A&F|Ufx1aev%ly7=@Xj;&uI9Iq`As&zJDYHoupc=fg}s)8xCE z{1D{lhWn%RE7M1$Uom2MR^Yefz&g&*;ikkhFvXA+Jf>sW_i^lDUE13?w=?c^21*+N zqw@#Q;O-szt~q}*vzPwHUs<0%sIOMQa7&E`|5^EE2u=SphY{)|<p@5h57Y}sK-P7h!6mI{F_N{VH3YL@;mWi!m5D`Vw6yB) zW^<6>PvBr(?jHPgiO6&l*zxD3kq5~4CV94BK(m4yR5AIrVn4RXEEji{Bv(KRT-#}l z;`MzTFJdK%_fqHr7M-dkIor>6PwT^WXTe9#05cpPxNkum4*FJc3V;}8eg%*ym3{rJ zaAmom6|QWuDK8%7>3PhwR^v^Xe?kCYzflDCb3stE{|?SqIqdT?$-WrWes_wl#RdpO zb4}K{Nq&0XDbS3{veEv|z6Vamfjpcp#Bn~>p*&-xR8T+*77xWExzC{-6H;>SNK0Zr z6xJTVLtW}p&{~%Oy+OHmHEE&+OqEW6hU%%* z_P|3`$nJw0QEEw{4GM5fQpp?R)sWM?t?atY|0AfOxs3fuu!2U`7y4&6)UDACiVc4B z!Y}5aeSzaK{-Vy1cW4;0qwV{5UDY~>2Gk3_QaN1Tlqz!Y7kvXX7vL5G>bkDY4cB!> zoU5+gs!&&HV%KNOikuSAItAmK)#&F^XH%{QZ~->%nVDa9j(u0 z{4Pm7AMZ%2Js5H%bxs2Fj#25rtqA-;=J{%C8Q=1oDHlm{lE^Psk51p{17!pccr zY!l$bJ~{#ZG`IsZR;tbRgJ|O&szL5Q^85Vqf8{s0@=&$a^d^+mwX76Hz~Fv)kSiXK zmIVVp;54<`(@0NwjQTUqH$CO*iE+~>#rP&REDt20EM4pl_4Cyr6Q}@ue%aK<7)#4v z{=5gsdte(*ZKEbZUYw1S@X(yT?KMDCte}K!^&0*^h;}!$n8*v+qU8ecc||l(lxs9$K%y&&Lzxr2d0`X zz>1BJP@_8>7FOVNd$>lwouq5@Wjz?nS}22=pK#gHQcw;30Nb+dXbB!fvZHKFEy2#T z9bL?&m2C2N05d&W;-fTwlWw;~v>;g|j>GLA;bIAWxcz3RqQ7)JVhTz;oBRbfCSQy0 z#hio=C4pCXR+S*+B3w4r@d)Pfu(eW_uv+VkIs_qevqvo-axo^b9q0>?p~u+>=!hQY z@xv~U6Vw^?cr@sRf4QIwbw-Ve2Hjp4uK8}E*;2it@x7XhUv@2*>5Mux8g!}~y0c_< zs2?dwt8OikOotPM1#3peBcm^u93kGB&GMKa#=bVjZpkIOCE*ETFe|8)y&115km!&o zGwZO`%GK>qdN(;5!T?Qf6n7z+VAHmpH{fnGxmz5?CCY_{+*u$eQ~XO?S}FbOW%9wi(DRyc63^6947 zQ5PeEEQ;-x7(79Lkne-p!i9XrRThjPp}62DR7IaMBCp3{UJIs zEA}~8wEcteeTUF$y8XIi^rqE;DB}$e*MbMTbDD}Sj2#^Ru>+}m=^yyT?m17g>pASt zAI_qo55Ce2M-xxcMJJ99tB&{-XyW}&(Z6^!@ksSP(ZrolAvZay)qC_esDELYoUMsT z4!HvkIif5zEL%N&CkX0(zj==C?_YoMU+j#Kju>}=^go5& zGD8XsMB=Z701EC*tdHAk)KvRcZ!7jnP$?LCJhf?m{1KGkaoS}vzQ_*l*JIFQ7~NX) z7oha);BM%R+KUG=T4iQMCf@4L7|7+?G5G3NYSSuo7@FGDcd+Wp-A1x^MZGqH-xa~m znO1N{R_r%`lj1i!2>zlv^iwWg!TzL?PCxQ4;t6nKnCp8@4dw>BnTw0a+%-;FQ{Mf^+lciwP z-!NsXm~VCd0T>9x6S%1okGa!}jg#%!^u}ar3B+K<9=Q# zEdON()a3xqwqj3VFc7>mF)ph-GZ8}@pKo(!Vgk0VAk6N{9X?je4-f3HMHN94vaBl-`0|!}G?~Fkt zyA~#AJIJLFjO`$IsIQM{B`7_PUkg(^Sv@N!G|sZX8Meg6sEbI{id}hwtykedrVfbe zK;{ikAQLbo?*K`?E2C5d_dff?0YVQOHN}O8Iebg@?&xW;?j8=i8FDQ_&Wi1aez+g~cc?LcYiSRq=|zzC7PbOoKobDsBAh*{ElP?Qp!Jr~ocSt57oAam zfkZ^;Rc`3T$gtljXMqvIq6_qU9Tv5dOr?5CfFs0}%a4(oi9(-4Mt|9NjAN-ofvHVW z+f)TC0$O$TsM=b!944=|>QV7lCOj5XR!K*-{NnzRHhz~~p{I>un_;7RAA<{&5&)E| znI|(Fv6*{`ZraUE@hlJ*8L^Saf=}C|e(^MN;D~1O4k~VhM*aoN>oLy~M?hUr5M0-h zYvH;Y-FS=mslpse61Jdc6Gd|A@6qKbAHc2dy#S}5uBGQu4}gFDHHW2PPxTc_>-xF$ zknmF{1Er4t8RMdk+>G2nfA(K$C7`UPzar25hC^5|>f|eZgJvbpwtx`b-v@-wH)3G| z<8q5*Okw-QDLw|^7{?#ZVs4;+$e*eophEjNYQoSQ`!XPf(56GkB8)>_Ijb&3wg4Pv z(_$MwWfyt`dZafu{S>}(=nu%58yY!{&7S`Y06~_MudBo^<`BqYu<0vh!dbeP#)hXh z{SUX_hrwQc8>D&_f3`EN`i!(*?AsG<6%Ee{H^AUgcc_aY0NtT-_V?k#y5aAImWIlC z8r+%FP-k=M9RBa|U!+&{=YNm)>@WTKpW(0YghprsvU*45V~$UY)68@j8D_=~{U(D2 z&CCVPh@1ZD-@i07zd{?`cgDhz2uPmHu>zY>d-AR>fE6wU@U3}9Qj3fsJBqYIkq_;%?W+#2-^&e zHAqEtL=pVvQ1OIjIGG_C+5S?Y4f?e|T+q)W;~hdQfAXK|(2IX+ zDOS=4MVbPbseQSY;zZ-v*GGeX-93~>5Kpan@m^|;9xy@cWxy1pN}-{lw|4_Vukx62 z)GK`41dp`}c5&3DuM`=3mF!{Ci!Qbbz6w3o>cTzL;du4@KeR@l4l@glfytKoN-^}3 z^{9)XN}+vbj^a>N6s6b;5kqTq!b9x9oUlRK_Wd+uprx_Nkp@v(9n#W>Ma|vh zXjnhd5m~W+PY;u`g*(_Gm*tQn$|nakxwrp>Aj|jSQnQjH2(Ga5Fa`Xw7TLT1s1A*j zOr1-ldM4C7U6TDogGiqftXhTldZ#QVGM6!VjO^$}L&|RTIV{(^8gFf30-2@r+ zK0s9|lXr=PmH+qWBYeVdiTN!yzst<;V)MJu{JwRM!P(6% zpH_|*3S+P)t)G_h>9_K|vRboES+1D9p~9+*&ReEmKR6a)Wd119$+iB^eM8xG7UVRW_mxMu>+>qHak5THp`Fwa(q~@23}wiZ$w?z1@eD8jW?od#549&DazG92N0lHyhyXg z#fD=rPRsvbT4JaL*bVP*a9w3cB!AH{I0W{oi!)LGxctwjZeNWjJQ$LU`K)~>TN$#* zmN8P_DxHopCjm6GXUgPaYq)+|rTU|dvaKXMfMm0P2xzc35YXr0l?{k5YnCW5rbgha z3>F9Ci!hy%j3?%j#8%{jgS^@6g^6XjOWDE3_f&7O!?-R!zpMt?lyRR2-pML#kRlPz zP+C0jM-TK*-K1W?`)u6CI6TpO#H?gGR%Dcg$2Jj+Ad}PsEMuVm?oEgMIede&B4F;2 zzll$c;wxDoNAWX%hM78;Dg*COe5ZvEw8n3fq|p0(&6~I@)g>96WR0?8$o&4#JvtBM{b< z0YrBq34AXK`83``A>Vo+qC&>3wiR-3#~KP5*ryfp4k#w=8YDq`~FHBNI^VCGUC!IuuGM3X*-7W*)(X}409dgdmV z00Xfst6*6gkW5QGLyA@kPhHPmOUrjO{3c*J#VBARN#G(?Z`3$wN=2h96_v?+KU48mYf|v1kN%24QyQ}f5)F%DD zdn>$$_9cft;cKmZAEZ(H{`Kc|;jVC}Li2!vQbU(|o=(P7Xwg^qYc0YeoH^z>&QX#7 z(Dhic^Cm@9kuTq}RpbdAq44;u+>ln0tl#!w+It~C3IcH*z>kb~%^njtKdi7$J1aCF ztuq(y2UEDg;UiP$6CQyHp33K|xZ?fE4I-BM#wNDhSAqK3Z!xzla$YJx9plXNJ!%0S z5Dq$uc7f;ZFPa~wOYuRt;xfswW;+m)ON8H%owl~Xh;Gz zWS44=w>;+Jeiye)p>`;3#Wr?EhjWcDyY5g!JiR)fPl(V^pY1ii8aL?8%X1 z1M8z1!F+b(p)Rm6)KgS{k9uvC$dOJTR<{UCD_sveLViTQgs|cYL|6$tgJt7VGMm+1 zfUzGX)3&k9tb+!@D8wffxPFi~M|+Z0V9o}|{T|;oWIs9vIQrqcG=DT7Vx!e;=5?Q8 zxj+h(I#5e8{T)-(D|n8xATY!N!es{6-ic9IcEOanSp{$9^3NbT{{sFM%pZePHC@ce zssF0%;Bn2K(4Y2XnEOig`ZlMuFds|EM~{enB&pV6J_wf?TrpYrSTPiO09M8cD_FWK z;9tS~No3{W7s7?^Q5~;`jsg-0?3}Suf?BGFR?^G7MJAa&bD52T#>r<h*O)A2bJ>f1ts(<}6~4i@y2%D>L}k68xwkPRlVO zJ$P*-)fvQ5h85fL9(*nv27$B2Fa{l9FPaz02=*58S`V!veP`H}uc>HxD2xhfE1JO& zW!v@)m91J;$ZwU}BEOZY48LAQn~HBTK+*h#td*^7`SV#>j~{?ufnt>^-D-=>tRsp8 zNK!95&t0NSR+V3hD7i5rEXq~Pi75FOMEM?m)Jf0Tyit@dUlU1`zU3my&&Jjk<%ma! za0~qj@Uw$2iG@8^0EY&0Rnu(Z6eG3X)~-G%$QC1?16oA*7*1|cgaz_jrSj#sQcb~c zXgmOGe&43BHOAz6zP!xoYN~>|oq5#IEM<6?Rv%woQ$$X7^6r)qL^`dO`W}5R4JZ zrjOs5krR}W7Q!8GMQESUnef|l5gzVD;A%ptsXff_q^OD!V8OC6bOAcdy3u(z6P+yH z9l<6m^KJm%Wm?HxFuTb!qmw@I=;?F)>3YsJI`D8-iWv5UY0#%cb- z8`v3R@QEErj)b=F5(yo?JEDXxS#C?HNy{1%+PFhYX!*~WSQ4U1ZE=8&L%7Xq7O2Xd zvT16t_2S6~Q08E6l{*FW?A4IMv$()$zI099zSmH^1{BSZa+#XMVe}l}qw47xocK?PG4_HIj&Rkm ztF*4eL=T`|>V^v%`u05=C|LlmVkVrwCLO<}xsak>*XT#xD<=OszhSqG#1>wH#UHy` zG?89XoT9qNT;Wia z+JVPM9vLOhF-fy!a1HGQ3*l z3XO)N*>!ad^Xju`ph*NBKhlO<8V$}zIA{EF8Y`1*BTa~g^bzGGNN6W%w&6ifA??IDYUk7!xow0gH!wO?`zoEe- zr?0v%|R#b>8l0?H`#rY@|Qc^mFdBByjrzc$Eyfb=Sbfqf$DVW zm{9E%{41D0oBh(A3nKN=Ul*b+bt9QZImrno?9#!ADl`QF_FcmPM5J3l-D6&&z`4SO z9c)N0SQ*S;fX9|dC7Ay-x%u%4yIgi_(}zduCBJ(SPc7*H;nuLEs>V2BiY;+yp#)cb zLBZSo>2US&$JqTciLz676Z2rgWZGY-el*(HjOm^MZvh z+kRZ3kMWGL|M^zChh0BFsqw86Tt)z*#*eRq?}+5bdxD4P@D&f&>FgM zd&DI%vqhJNRzUq2JYS1xLviKtSPelH#@~vW1RY*$cfLl6J6G7i;rKnTJ5TwGZVK+) z7ccI76+n$UKmEV(<46Aly6wl)wOZNQqOvzObjI@cyf?#&dFZKzX#WcZiR=}QQS_(A2PGM;X83D-(y2Y1ebEf3${x+fT6L+r7ZnQ>*yoU z)mkp)PEd{HQmUU1yOg^?(c@CCG88YS_W%DbrG7`_QeNRYw-uXkQw^7L>n?FAb2-ss zhf-db^6LTPQkDP)rkH~t<5J>ff9ZeWSDq)0Xny6-bzwVn`4vtPsHDMOzmk&V@+;Wj zD1qWo$FDSp!*vIWPr^RnSMKdo!>=?kb&|@|4ipc4p_}cyuR$)FYuQ?9T+5lYT}vBR zmHe|_(XOQof{WlnnY02PWk`pn02qTGT%Wa?yUf1$mG|vcn6zW=Ag^o5jfQ%agG$%Zp$1w98sZ59 z$KKN&*K)3LEoXpa#K5tk+qdA8XKu$LT)%p$<{FMgH{J;x%Tx^;b}R#GIF=jeSg`(! z`%N6javKy3Ryi{_qGLJujO|!1!u*-Xu?+o8YiP=sXo8w!&eK6Pl4E%q^z2xr82yFE zu^g|^6n9hi|9{7_vb}LE7jV0P6FjAO|K3>*s=pp0WV zlk4sOgNDel#oQeK)XeBAn{%Y(ts9k zM<&AcZKik_f^M}FIFLRXHtaw=BTqyo|A7PHSSwT5iS!kru7EHjVP4XG4zd`&sM7@@ z!gq~UaJ!LN)&l&q$g+T6;9R&zu=Y^M7%kf74>v7W2%k9S;Q$_}nA zLyuvWmgLVM=a4_f!(jdvq-xDRRhcoiUzvtt+jYYoow( z$oe4Il08L_0o@*`Qz|fPfM9=7z8rMIy_ zYrLabSK_>YSyxJHW5=;r%EVd@$WRUB7FtzTbHsHej$@pfI*#z?e!{Xbt*g;=do++R zzEQtrm<4aM2zrOdIudK(ENz%|&Xg-_t#jrBJv&I}3Vj+US}QZZ1qoo;ipPSyKkst1 z0s!a%@55uRbL9QYn&@XY$}_C3g~HD+!?VzD@F;rRP`{l$80r2AdJ`-5GH2_fXMSVD zqjtMz})$S+9yS zEFKDp)rcNozj5tO9wE^~0(Ac+vCtJ4i_u614--(D9t~$AoQc?LFN7L+qlf0vK*td@ z96cO_PDdn}ML2QYPOUb*?j40RjfQ(_7}svaU=7@Fq4g2Vt)R?JmroeR_95;*C-lLAeAw=%yThh1cz<_~7BV-v!d?*MJ z`uPRkKq83jXzV{ql&h~3Q)N$^zpxwjA?s^LXFJ~PRyrjscKYy$BcO!&wl^zBN6isX zXb1jakkU6Q^V6^y+r|7iWXXJ^Xv`nOkrxBcuRH#REDP8U=N4HySMG8UD4k1?WdX|t zA%b*1|HXl40q-Nr@r|utdsM&P(qgeQhtUSH0pT;;L91We8xW-HZ2>qNOEw@t7CLGX zi%s3(-GCs$jW!+z5R5ivzh)EmZa^64JVzJEcu8+Sco(M(u>s*!s<5*G!6ypM4G8=T zkw$&|s83u`%^o!_HByZ6;T(nru?vURUNvuhFGHo8yKrv1JG=p5ZLVE;cq30lQWu4} zBN7vR0L-VZn!?^0`y=GHN?jtqmFi;rYEjzm_TTMh0|J9wX9L3R$iV1aqO>Pk`>b$8 z$=xjsgJjc2JLkDel*#JuH${{jGK57L=ZKPjL6j{i%D_~cH|k-#UXesO%@R=#9a3AA zUydU}%?$`=-=#Mo+&9W5PBBt%AOO*>_j-oK$mb|rM0mzzEy7dfw@RHPzm@8r2eATk zDUXm8)CjR>qO-)}H{|OIu_+{%vL0XNh>sFAt)Lghe#SdSw^$VWO`=;_6x+!^gZS?) z{uRtuNTq#ihuG`K+m)o!|ABr`x3w&Y=@45i=08!HNLJSwCa@-UK$x&YY{^N8&8g^M z{t@!=DTHF1CcgKO5~3Q9lixk+e)+}y zjQ9<$mBUQs>YR-xn5+3g`g4Euc%n0rrRO^IeiV4?8xQ>zCP9`@A9HYlu29#?07jo1_M`OB~2LaxpLEj_{mZF>HHgLG2gXGiR$ zuEtumK5Fn&T#aeErE7Hv_edGyjE*Fllt7|9k93z1?Q`D<5G^R?`3QB*{5Tw#;Gg;` zkAwEJ%ELSQUKAcy|W2T=X~8^pp_?IcVIQSJMR6U&04cCYji4chOr~- z_Tg0A5)3=|FSHwpnP()_-uE>7p99J`Rdw>DQ_RiV@Tws*JwMuiMQp*Pt$k)^FB+v| zSui74eIV~U;uiMAz>(wryv_(xXFQnOxIKy~e4PQQ-pOc5<*+R>ftD6r%b)W6B&53I zstV?Jq?O(FA9}q$ueOKGQu{2!k3Vl1$pjCpMtm2DEx877N@f7Iu z#w-gWNmDhOe(NmL^!ewbPoY(v3MG_j;hJ8-wZ_Kyq#7k%m+#_8~}EMziVIZ14!4X9kn(rY>pjrD$D!PcGq>i&m{@mk;Ykwc@BaaTMv6(n?KAuTLe zzUD4yb?IEdsH3Ga44apLBODWmj!iti(rVkx5St8X2h}=1HjO{H8veF2-dB(N0fTa) z2~jk*pvld7i-4(?f}T~(vrf86I-tbpO>*%=wl(IUT$i2Ad{^7q?XWk!anI)*a~gmm zFfT))>oW4&oqB?1-J7xS#Z(zN}2GC`+Ibj(yoHCNV zWvp4P>+wPfehUIa2l8eT&hH(^K0&AeWV6XX=Q9*;#l8#)2LpNdJ2kKfslVt&KF>%l z&*(pvTnQ3Koqb1&U z3(vX5Ufz#;;;Qr}iogElryQ~}3$kJ|gM+d%Q!P@T`YuppxY8{(BYCQ232V~QE*=X< za^rB#ag7`fk#lZ6#d%LX*_?NioSAAf>R(kbw4S;VW{jKls5dyd!CG}KlP!#mQS(si zlOPR_55y|i@R`;fxvEcN*i>qgKW_)(B`YI07}yDXb4sa4sK(G12EM$gEfGU%4S>OE9Bb>hLj>TVeeZ~URUF&LDlKnIhCCpw7aU*-8(NJ&k=vk4vxaM^2*`?wL|a`154 zJ^Zay4e@KYBhFLm2#o@NB*W?Z5T@zAZ>zkQzR!wXeNKB{&y3tDbF0@WOwu0yBu#rSU4@Z^F4F_2`>4gNXTfz#k;9o82Ns1x`prssyq zE%QH^P_JM>UHsW3I~bDnv$8rpH%vJ?Fu2v24sb(>K-6c<#Lr_YHFZ8M6sLn&4AqL8 zl2S#v{6%B%5aB&7IVe45>U?Spw)xJ00tu+q^m{Y`PMt6)F(q}V@UM(rjmI$+bu-3@ z`=k}&Fv_HxyOtGL~GL6?_kY<}OY*WlQd_Lf*8|t$UkWmZclk@)8 zrmV{r>&?pSxn=6JV%R;!u&4O<-ER94VbK(+%c|iq_NX2xLchwi24!hIuo=qersDA$ z``D-yQ;tgEy3|xL|EW)Fk)&qi>iEK+_sS^f)`l35@CrYGRK>NpMg1=f9nBGXRGQoF z5Y>Q&FncRO?$_Lo#tX#|Za#e$4?W=f4VN{j;bk#B$_De#nM|vS?VV7=(-sWD^Gxen z+tqT4x{%j=+Hw-=j=%lfKf42568!DHmg1LcIZuC41=`IRszpD%J1jFA&QGJn4}aL( zwKsV%{BVBRgxA+x2;9XLq9iQwk;`tZEb0nZ< z)uZ~t^2?@vXZ3lhReQLIF{lOaC;Ncvd-4nQ9hs=B0c~+!UmT9u`M%yxdklgPWRqIs z$J7-CQ4OwvUh#uf*pG?}$94PEjqQtK^s0c4Fic;#M;+zyRx|%UWu?=z$YiRV*QivZ zKLwrGe_Fx~cdr9FmXuo18!?a1*Wn1}bjVxG=DOp@sE4m+@#XLmYSiO&43(;0H+qFJ zu+^^O&Ocb|ga9)Ii##0@lOM&JP<(T!`*EG@f&>srD z`GpNo>ne5dHuO`i@bOw5w|M)i&Cml+U)2EqB9~B%#&99L$OapfXh~;TkdA&h zv1f(9h->u0uRClmNUsyv9n-U7+G+WR(GREB#h>+9v5KijO+X8bkiM&;T+NVTBTN++ zV+O}HA);@mDObay!MFCp$C(MBHqqcM+=AnxKUr?bDOU&4o)L$JTPr>ArN~ljZ2ySx zb-eI@@Q$K_k~nO8!uNw3`$9+G(*&kRA&@^h2P$XZ)NuQ9t!|e?mvPKBC7vM!j_F4ki>lfJ=BLoL!r&j^MQ^r<@%B|=QL z24%zHYfQ}Z>CHLE9~X4-aXjk?GU$3bAMww+;wr|}!^&jpAGkmyIu`pr1P+#(LpO>) zVYD2Imp^MPv>c}+Ndya}tDJ?FpHM%cOn zU1rG^EFa>SSK*IvDcH(^lS|SQV6>Og5?;SN5Z4Oj;vY7VVsNPcDgzP)ZF&{lt33SEuL(M-5zNuH(S5}C;7A6fqCQV0!cM))P-Nn!3V z<_#R?u=`k;%Q#j2sGrLq098Li25^2PBTj9UH>heH8p|qPVB>UC4_A{Gr`*P)nt<5p zVtbEDZNu5T;isA{Gznk^8p0p+Ef~geapjidHWkedPmy z;vMdjx={}pzs0XT7r9lQ;rm4RwVA+p!?4bwsW3|s@GtP3MV{}w*&)Gc>OI%Ev5&Ua z6$kcE!RD$Q{{nUnu~UGp3j-Unk+Ok zAK111LvCfLRQu!?`^V(BT78dSZQQ}O0LLURJOU$(KcOOlBQgH`Q}Gz4SWKq@*=FGf zvpqCmb=kj|V+baP-AHH$R+aUJ?`@7(OIjvgExmh0uh#!w+p7(P{&~Eb|7Gpfs+P!I zh!#08WAQEiS>xe?tzvc}yj!|AkoA4~3GMAAftB=%R_vB;5ewdXk6rL5!*#)--S~rR z70+HMYrNtoQRU=tl_7`&khQ!~L;i79pT0A+Q*PQSSN&0P#J=}Z0J!@0RAe1%RMp31 zb#ua*;YYv8Bi!J8CRl@eWs};93IBSLGxuS*n z{LvQ3sRXrzDq-x_vB1UMBU#`xcavo7-6+52Y4t-mD^}Yl^d1^sES}p>J7XH9+ipiH zaJ@oow-ZW5gGdGgt|Vipc%P)&V3AbfTluY0P2{&yHNdaeoc46nVk+-y#MEp678`BP zWQ#}*ZRwbqcs%+fE_UM@?h&iiJT7euj%}rLHCZqrmp(iK_XAnnh(g?__V->+HhIik zT|7jVckScmbJK;bx1|1>vTe*G4=}L!Q*}ZS_)Fj060W>YCGy@01otiFw@RHMzm@7# z{Dy|eU2^4W-78VF@F_^#rG*x<`oiIDdvHyuET@eJF5Z#!085W&@us4q1X5hGw*o_vK}8Dd0npZ+GhR5AiXGq=&#}iU zyI@Rxydpf*vHx7v?E+{U_FiGHBd~eT*g4LV)$(Mss;IJI#>tb7>UdZCNe-T%n-L>Y z&QqnI%AkK9u<;c*e7|Kq%ycdS*z^(ERsk`xf8u7l&yNU|XBA9btyV7M&2UpzV@-F}+-+FOx&BU!({aNQrycMy9ty%=coaTH ze?a1ZqiwNhdvO*8%P3SR8)@oAU`BmkwdEN0uvX0lRVPxzu|^I3d0Vb@6oPuT{yD7< zOQCOOIf7Bc-$Gg}__?2WpI*thKIGuAT7`a@5UbIhLjh-Wj;MftW93RK;7D{xp8jiy zDX|Ai)CxE$tbnIMhaxH9OQ2^f;J2uOM*;tRR@dQIDk64PUm8sTCv|oy;N(uV6>$D@ zCsx4XF19LVffU=|dFM&4JSkU0{<2}><;g}h#ewl@21EgGb)L@EPelQn06V$@+WMy# ziHAb{u7Uz??^;U%KYTWF2-%X29OzTW`38n1qB z8<*yt{nv>!Z}%OxCak=|(FAJVCC}(q>$1qBdDDfoXkNP=qIt88=3OLVXqD=l0}4OSvx_upQ3kXw(<<48EU$GdI(dY|XGxOB{f)!UV}4l~BrnTXL)s%y z!sao2fyt@;LsTanTxb*9g!>SpuaO?P-LB{~EGHP1XGO1nT32)c6rWdKVb+*)0YyKi zl7~QjY-pCxA)J>Yp&Mo#cw@-6?#RtA>xLX)+XBc6Oh(8BpII~$F2f33alX!-jY{D( z!gQ`I=I@$_k1{NrEq{OSFS-K(63QHTkuI}vHAZrf-Sj(c*)4!)Q*-{P2U~8mwgYxG z!%aIcbMcZ(kL%Umm)I16CC;lH;#~ne%w~|fxlTnc?HVqHSO*{wna#lQfuR5o&4zsS zr}aKsY^zusv_3{-TEH(ZhD&J7R@jABK;zQFsv)*WE+K#(&~^!i3u`u<3knzpumh!Ncb#@cn$#Rf`5GqMsB6mm(fgIf?mNvw}Q^{rMYaMjRv5G(9y-pQLEX6Sp?_lG(cPW zWT=&|blmw)P%sq`K*=Xb7JEJH!n5_5t#q{kB25DI1WJ0EE9=6;8`{bRPwIAS zL7OQEl+h%xm@M6%_{W2lkUPTa;sbc4uYUvFHe}E-PDkMcx7PA6wTZ9=tMF&f`grW0 z(;H?%=9UW)9S8uszD%UZNYTve2n}&7GlWKk(D2WxM6jX@5N2+63OK)huwW5@>~$#F z5@O}^QJA6h4&~SvxCGDCdBBu2bB}0>`hsq{e`R@QLGL(q=yw!+KF&)f_7Cn%$8un{?h4_j z7oao-|3k3hhvH!snP2xq17CVzQ%tzJYB{O&O!5~jL(~;mL6OIVF2UdSy+INp#)SUF zO<84z=6fdKR19sn7EqoAAXO&-9cpY8|(YlVAjf4`iIkD zeFdin4zw@LfkDc=U8z50d}+BVCIkzR{`IAwq!$h*9n=fZf(|MxS)H1 z8QR|t!V!n|iKv!qP}LM!NJaIE3_oFU7ZISG5OjSZ9}oByEKZqB1Ky)PDu*PC zS7Ww?mofjsAw+>S`y7e;AQNm#85sO@UsLDoNos(w{(=^STwvyX&qzc3+SO+~@wRpx zcXq_LgEq%t3&XJLU`B4wiplS##=eI9v^U|xN6KoParH;4&qbl=GM+PtvKK{9h7#6* zeP)AA0+>-4djWs9H9QxWu~G^Cu52Jf+D*(f`i`|*fO@cLs&VjCj$IAx0p}x+IRHXs z)h_cY|8&l!+pm)Ns=*11v)sis-qpYt`i$cbOquygn?YT)3gs_=6SiWX#g-1wBCXz` z`R5I`51-Cn)qPL(o%6L9zv6NE#bklHdjE+OY_UV@q%bWu^f`u7Lr@Boj7;$Ps<{b~ ze|(C0-#|&OJn~zyr=lTcX9AyCu}2~Io&v``O@vPk@XZwD_zSl`X&^fd4yfoV)U3Vr z@U$caYtQQZJQy#g9WZ!SMLGD}T04#~0sZ$F{(V3H#yLz5#Py}u{Xqdr>Of{!S`4AgGj?Q64&Jn(mh0C{1Fd_;zB}HE|+Hl>1-fb z7B4R57s&Du1|kBL(SBlTvEH$SrFKz~wn7a%44Sj&C@9HA(61VshxisZ${-sb|0ulk z7F@%|-ra_cWUTMG*_hTY)R^*hPJr!Pc8aeY0wEW&OHC@OFT~Qsu-K@cB0aOcz(418 z&c8Smo&^O|If%~#RQ>4BI-u?XaKI-Ws$uzBVJE+A;=+CTVZ>YhtD;+biVoj)L{HeZ zX3>X!ty%O=Jkf_$CqB6^5H4K3`rp+11z?Bkolhw_^?n%?JoTPftMHqMUO)c>srR5< ztLe;R=lW!gJ(qjknjvOzt+8*I9B;3&ZX^*I@y? zpx><^zwaVrT#o34k(Svag8kg)u?Kd&1AD6*_Er0FVN>v^m2VPERy~3jIDtMP6)L_6 zgHOD&*C*9uOZl$ugx2=Mx}wf(s0Z{be?GTN=;20#miL-{P<`g3Uvu*0$xND&ZH$#g>#*L<p+mQuQV*2ghyP$S^Ox3b1eambasSue6CA42Y-FP8VD}0d)HR8BLcShhvH1S;hN>uUm z)vx^dBS5aEcw$g_6rnfNw>6|9pw=)9l*XE%=uOIpi z2X>wPxNsuG;A*ay@giDtz4}tr<|@*!{Q2jCT+QaXywKHLUqQ9k~ zTkTw8hCwuYG;EpQQ@Ou`dLczW1Oz5#?o_(S%=LU^bqe3W|7B7$>T zl*dl`%P3o#z9pP^GyZfy814F*x4tydAMN$gofsIJ{Z?u2vkYbo}6SE>&4ZJ-7H0QC1*F8T_kE@4U&97+`g8WE<{Fbp(A z1F0T(YjtmaNZLe&;wmw1R?J~XmI1A{U3)(Sk=4=|< z5ko-ELs=P^5s-N&*yttdM8Lz zf?)XKD}6T%GL9O7meXfjq+*ro+E1wsXwE%qdRhY?d_gF*A2SkZPw$?)Lk(*QJRM*)%{Xu_=v8vLf0w#GxxQZRrye!=M6ZAIf+R~?LPdbdPHlq7OYkTWzp!}@0L;Xk`Jy6^d4|6)rd4wtg)FL>4MN_=f8aE&+xmS=c-S@V zDb&?=V6aJ@NhIoKrFxq0z3s9|Rlz0M?NX`!LlAGfY*Jqm#Iy_Ury__~eK)Ds0RoxH z`5ZlcE4t{&^n>3i(<&9}mX9wsymtT<1Giv6%N=#WWW0Ly(3S84Od;-oHuuJ&!slOo7Nfhb8 z)-~s=uWF778~w5)Ucy5_F6#NyS??-!_3hXUlrcf`msya86NecS(y?*8@Bx{=(dPt; ze&d|Z7=K|uPT!!!3tq33-`m$$y8Dg(PQUR}yd&3U1$LK^g!gLCZBCc)UKr@$92;m6 zfi{GJo(Kbd>;P>c&@*A6Lofs}5zN2MwkahI0MKmZ6t^`DbdCd*L!g_&Kuf|v|IQLh zsz2VYIRi~q`ZZNw{L8R_^tiV-irC}6l5KbAM;g`WaZ{%1UL#=!e|M-!x1l8i$#93- zx9md^2toqg@I;D&+!1W}R|cp-b>%tU9~kYwaWf;332O69VP(gu5m`CYVdc}BtgM)# zS$S-_W~I>rG-koFMFXL)dYbWA%bMEM;7n>$E>-PEyfoT0youJPQ^w#55o`X_=jvtX zqVrHBOs+mA<7CD7N+>*Hw#-v-7?HYP9ykfF^j~vm3-~`P82AUmM&~&$gL^MF?HhwA zEeDZ{8ab6a*9eFwt6)}Gc~n*P3>&-Ewa%{`~T;6bev)1jvbs1#(yfT}3v95!Vj z4V|v+Vt64zn)0^#;R1dPf86p3r+`ZV=M=CVyY+jR0$TqcYi|NqRkgm49|x2yJ5*LQ zXjo=cn%H2NT99T~SY%dIX50p&x+#@)Y0&Tj1|3n#ThYwT21-jBEW$)86`E9 zX1SOw`_VTMqpZ+F`a43o?C1O2HP-LJq;m54bVq zx`GlT^cDzpzWY6JmVWp9@oUU?zdwae^t<2n_@!&Xm#2IQ2}@Blwe~s=6Kh?gp^J%2^PP}*88W3NOA^RXR??+}V%G8%m(f~dI4jy0TS;seUyC;7m{JSQKA zjVkn>j)j(5p|hf6nrVcl*qByWp@*u_lR6eU%nF?oEwq~vx(QaGyR@zRwr7dm zgY^ZK+ympPXcS`9%WS-n9&#Fl@1y4Qt?ZwDqpa+af2l_D5l(16zlDodNzuW0B!4NL zGd6{6#LH-C`^Fw&V{=N=#xcIO^T4yl#?o|}k$sd{a%a(d3IhD-?FA7Lg<$8c8oeK3 z4ceMc4i~HCP+rYk9AEr4 z+MW0@2B%G1LuZfFSB3H-VkBQg{0mo6iNW%U06>EtU-_ z(9CE)oLgm~gHV7h>Ud+h!mphk!l%u*;u6Mi6{j(|%X`&dZ%FZt;Z*#JFoxrA(VRRO zhOLuB14rAT!{3n^9p&VGkmB3MQcP)%$jPSZDzP4BmcNt}{$Q*zqc~(UHNOd$I4=lb z3LW0u#+}0!#FAFL3pYJd%u44K8dWRMs48sZ9W-&y{u7n0?7)PI9N)LWmjxYh3ssza z{}9cU1_TDF0oL5|8A$$u#Fdm7i{D=QP!5@3HvD$)Jg(_s`+Eq_?cRBEZt<>dL;Gqz z;~UDSczhfcA-;{wowo%xgkahv4KJiXpc&6VPmqzVS-j z-*YQ(CEzq&#d#u-9H2uuKm_;;o7f; zYe#N-!$IwE!qlcM){}Bet8a11?%+Y6utWWVPHMyYqs`ufdr&_zxcb2iZSX&JNv}Zj zQ(HBJFX8w)451GQ;b~UQF}U>3GJf~T&K~+ca;wqLa0#E1k2xJ3IQU;i`VM{#MsXq> z{CU&V9S^?=`b(w$GLEtO>*I$Wwfv+E@_Yw>2_!~1`1YwPal?(sp8NtdT`=FdCtYHw zXevijCZU0X5+-IMMFEAb7IUdex~G(M&p-#7)2emi78j%(2)Y?c^YW)*s>#ihWE2S% zV0uZ8b)VuGz0)_K=Ltf01OWniTwGp82 zAIDoXR_C?S`Fh(|poB#(O}Q| zT-~o(pu&l0!MV+xAclD`ftr`?gu|tt^kR zw!+57Q8#G526MuJz~N+xX!f7In8mU_APv*)IdpXZ)&ddkmxzMr&yJt_eS=u)SD2X5 zfu(L9?uX7L`Vp4;>_0X9d9c{(6eheZY^m45*g9&8JOp{Zr7k%z%2F>d5=TLzM$j0i zZBrZ&wtk!Ma(m(H#c3FY(9OqTPgzh3 z3=@@o_^TTC|0oOh!(Y{q5f2$Z=gZNrPcM4M;)8&tTob@X$8-(CAZh#Ix|Mz|jpsp|g2}ml78p{VB zjK?i0%Yc#q;kVR+-ra9Sls7bfRJm9XrWItmHgVYQQCZS7;$;Tp@XXLMyi<2=3CG%R z4V5g5!%c6(aP}K+sX{+OuD@R#)f5^!3}sRBX-r8L24NT2oWlJ7T4qy1u;go$P5F*H z($m`3p`mBMzi4;28NIg%L$A434gDFIr@G|Wu%XX_ckRf~cMJ;~`V>fvaLNBP5+~B& z(T>FXY1dkyX};sYokaC|^71WT*1Ev#_i`L?*XyDdWMy$hAo=Ql5C7A5plyf{7b3)2 zBo4yqkazvzdf$5RjQ9NsH((VUGn9u{dY@S&MPnvSvKh-GECFrW)QRx7yf?nMnd<^0 zO@Pa?GQ2Z)BHJNd-^$3cz!R?xd)=~|qrC2!Cq{T(Y6BY<(d)`vya%n<-3+aUy)Kn& zyza_Pj@K9mg^|hD1k1U0{FGut`YC>WDNk<7gclG$Q1B^G6hvy#^WVdZ+`lyHHR)<}MBY}%DH^WHOm6&HNu zICFdpg*0#J0*L)qy_AZ zQooeB9+shGc;B{ZQInqLcJITh!^Lc9PE;{#!rNr0USg_)a}S4@YSc}Enpw7(-3=!e zE@o7VDQ1&BrK_ua79rH!3+m8$-D6gfW-Xg6O(OHoUFMv7XzDQd%y z*2YchVJK=p)=_6MF`QPi`|!${Hqf8KfvOFCcBKZp6t+~23K}DuVH z&=t|HewLAVEhL7PaxEils0ybjhfkM{NTA)^QQ`M~wyNZlRmUq`g4RHP-%mI;K&w zkcu<*xArH;{{H*M-`U?_jNs7zBHa8(|4<`%4L0c5UeEOuE4H_2f!JQa*xs^%YI`fO z6-4tTD_Lyoyj)~>hi?AhuotG&+tYaAw9fdQxcPYDcjV^(9S(qA_+}Hp26(d$BeW~h z&9@jg|GMxy3SdpRqGA9anTl$5X8~Ls<}=0I%|zD$qKy6nb2K_Aqw_HNOdZ23(PeZ< zmS)d^C|T9W0eqY%Tt>Gd&pIljr$Cs)d>Mq0u$ZUI|fe}?mWpttB zm8@$xXa%Rwy%|_a@63uQrRgQo3L{&K=cBED32TFF7SDSu5{F>e3QK+sofv6s)iZoE z&E*Qqt5j4gAV)X;}@Qih18fSJ1O5grL!A84c2)hEDv2OH3HVIPD5!fFd z-%){hHL}D#ZA#oNodv*MjGX}b8~z!c@ncZ^I{a<$hIBFecgA1$ZUnypm*oEhb#<8F zDC8{bpowUS1_u%iU5Be~mFFcOw5q2;B}3 zevNWkeI5y!;o-rPz|gKfy1kY zT=Ictc#V!*#f_2Q{CU@W^QTH4=%7`6WtdNIHj(^L%tLR5{n+c_m&jF#z6n3k&6=>z z&AsMQHR5w&%+(20MeYf9r0*C%^r(@(D;-q{bL_WVjOB3e&7zJl$1e9H&0rgumKnQ{ex2iR_UEpXW|=tjgGWd+S#+I$Zsq1bPo z)LF4-m1)#Xt9b*LOu}38KnKNsOqkC?a+2ZS+Zq41NOQT)n9DypT52G9Vf(P5rl5t)GVO#;e08@lo9!q zJ@a*4%)JlhL8$ksx&+Jhul$;CC12rKuG{o8L$GG(S?0~pmlCzXo5euUiT|6i=eYyW zpmN8abJ1!=oH6j4jP{{!-gwYQGWIMN0F$j@YuS(_%Gh%p0_=S3S>HgsZ<}G?UyMqo zba}{N&E~9rTC1M-VkmhF{hEOhtsW(6i`kl#V!mK(H{Q9F-A< zcmg&1Z}(@TzLQDo$x_vfMbVL+RBMKOVOIqFR~XqWS_64s1nh+^$Ph>9(VHdrF)Mq6 z*Ms*_9|mep4L|=6xu3%O>tU*Tf8X%)sl5LRKdC{=JETavsi4sY(N9ERNBj-m0^Z+~ zK^zzsu?vYu!;1IwdEZvJCW>o$AA6n8FB6+>(JlDBXLt7W=iKpCoZsVU*dGp7-x(Jd zPWlU(fj7lG>DW|VVJ0rX#{(tAy~`W8LNzxvx(FFa3UJD)|PB)@3TZvLV^h26SU z{yu&)k$qUN`@Qr7p(bo=;f|#Qt=$v-|)H9v3kCuqg((@a-b{Hq8+P#d)rniGw-tuP1n-%an@Xb?~6YRU4Yot zoWQY^o1sZd1j$Z1&L$g@v5%Oh^2P7mRA!y$q;kQf5vimwq*4ZUM%Yvy2NN)z4Ftl# z%?>g#ZVKz4{ks(IgRMF=g`XY}k-{zKY6`!iy%{?j47u?7O&AP?T2PxVIcoM=-tJvf&tztq%)BkbN#>iEFqv8MYA|br2%cGoWm3A`+AqO*qp}37{PfX5rDW6zKgu8PR9+4M`w-5e+u{S zj2#hEy>wt;<^$Cu5N1spx6YMyEz@B(bf`$1a26ldAU@wo?z#c|H(a)RY*fiZLCKWU9+i*`%W_W7+pR^(y+@2t3 zcwT0No=a0(J2bzGNqp6c0(+v72>ykI=!`8~n$kv+k7Z%-rfS6DmW z`syCYLt=J(jaLuWTF{>1mr2q~mU1ie;J<%-hHgIQ3y|=lTlW{~55I(+nh`4hY*XAT zUch$Grnr2$*G0E?msjQ7<5_vBY-h*}EAJA}@hbMtQMwtfDManw71pg6u>AH(LqWpmTSFxmA-4UhMQlM*Y zKJRV*Ms?3e?t}I17H~=U5q){ z4a-#O&8Gk|nl$kqhDfA^r3Xqu<@CP z`e1%La-(_e0&U2=4x8w>h5I0APS>#rmux!BmIqK$Bby_^g8jn$cC>K28~%lz@k_Z| zMK8n(E(`owxTO4no$-GSkFS&eV|aWWPqo4oblAT;T;j|IS~eQS94k6!#3LiGAFi=nPPEKc{!1gS#Vp3%R&7(@If>A4Oe<)=%7c*0xJ> zU__jSDJO2mpNn7K6(6F}6`tsv-@vx8dD6^po^R$i=gE`Xv41~*K|m1&+}NEX(=y@m z*1dF)dS+LiF&|RSE#BPs*$ifELiy!57N4Jm*_{8=)aD=VV`Dz1`|5uG%hcv9ObM)% zME`%D+I-X3TTtK1%WZ7l=1=Ac&)%IN5eiRj-WTILY3|hKf9#9IqUn@@D#aw$o!TsU zqBCQm15Rx&6}3LilRve&OrRETB@`!b9ooH(AK8pCof|w_E<)=;tJSUQUt#+dY2*teyASZ((@ye0eU3T)BnTgL$$z|6% z)5N#0qp=-yhWFu@c;ThdFf$^Sj*-^8%(g%5+^Bb69|d8OQcE}uWp);VbKio&==7t* z?2yYeWP<6wpn*lLn>Sx$>zoeS9*_K8_vIUO%e4LZXk-WN_|a-R2agR0g6z9qM9Z76 zIIO;b7RyI5+-+X}ST*6JcVX&tFE;St55GOL6Mwi3Vg4L0_=W}gv?#HkeGxEmP5?&kn-LEFRYD6!S zRn+*;Ob2s2yV32ZJ3X({$47K9DcA2tPqoqckjlf%aDUKZySH$qlQmNx`n#-o8HG=? zrWnyCvo?d{axZ3_VN?=Mr6OIIzJ4v^epbk$)B+U?6+$VgMnIxYM zk;z;%@TDo%hVVVHv!G@jPy3-kge8VT1<*2vUCJh-SeX~0=MR8Gl#fEugJz;YqiHFx zLwKECi1(n}Y7m8yOIW<^m{^51-t5$KU$(t~r=1IY9dJ_~rXLubyI-q3!lhQ;3fyY$ zsz524A>Jzlw(wJJ`1BfqCkec4zTFlB%j>YIcL~PnoML@8E~^ix+0@#v-n=0h8}sRh z9oA;AAn#K1W+vmK?1vzq@z!zdXge78_^E0evsnO2@|%X)BJ7)Y>vd9g(ZfRf4?B3t zVA$Os8$*}Du;HiK99ZeyIWEG``IK+yPg+Coi5Q26i5P?#CR+QJWAFdH|L^Smi#>dM zKReRi-y5ZAdYN`_?7hd^u=n}0$2_*2_!Igw%PB%!P7(FKfJ-Z60Yw@bRa{MhohZf? zf8;Ntm^s{zBOUgdtB0YdI(nF%7NH0B!e`d$a9NGjLp#(S)&s*edibK&(ZfUk`8z$_ z4xg+}ji2*!oZ8zXRS(af7S_Wq$c3fHY<>@|%95oXLiFA{vv;6*&ckdXZ}(;(MjhJW zyODNSjZ2g%n!2`(ew+VyksM$nIVjTe_BD}=K_r`B#5Pzg(rw7O4kK|)xOc@m?hsst z=4aE3Ay>KGIBYlrmtwp+^Z}4Pfm)zwnXu0eh4W+v$+ml!yy~}Zm`VPQknmbwO5`1= zmkllqrg;O+9jqWlivn#2{ziP5m_Ex3Ttp{|Etyd6s?xO&tz+M2QBJ$}7>c)k zau<%#Tg;^r#dRE(Ugd2)0~RP7CtLP3vc(@l8V8?^Tjajk+()h58~=dL2SI(-?qy-0 zu;!8QgQ5M4pB)(3-l$0{p3j6JMcgu_4{ysrlC-d>!V#}9OR&a+Ei8Bx>|kbnRc|rI zn1Szh76!s>%i%F zT<1ls^fP+q=)n`XL?_c<1g*tl}Lk&>XuA{x>`} za1Gq1BhIX;j#>m=E6<`!TF75q&`OE*`0bsE`MYMMAblr)Zucf`LxHFS5*^XhI^E8q2#IzL|lqR zJIznOtp?ohl+FzJ=-LPaJ{XsD6u%7b#PvPB-11o!K7dQ|mvzP;9{CO6V@$iVq%;1R zk=?^&TzUb--rIpEylp&e;o)Z-*l%RuDfr!ipS~sDeE2QtL~W78pNz`>)rbH#ed|3* zagXs(#>0Fb=JHU?LjezW@o+m2xA2g|!}UB&;o%=VOyc1p9wy*0rPOi0e|(2DjO4A8 zc{rYj!8|1La0CzicsPiMK0E|@=*2?}4*?!_B;&A+hb=t(%)D>!Gto!GbH?9`I&Rel8C;^Dvc%Yk9behs$}mgog`w$l&2@9>(&J%EL$=PUhiw9tQJ}$iopl z^yA?m9{TVQFxwrPhI^)xjt{>E-fpGY?aFxR!^jc(|O0OL(|| zhYTLh=3y)ksXUD2f${Z@=V34pi98&^Lq8r4;-L=@K^}VX5W_=&haHHOw~dD_Jp7CU z?ccGp{pTU0J~z1cK3S`9NGpD)`M1yYyw7SqA7##i%{keelgzoNIcGL1|E4eXJi?qe z74| z7<`w}N2VbIT{1&JE`LWz_j&b6sc7%gx!( zm&N9~-kfXA`9X88H0Qg`xx0zyzUDmD#KX6nLk%8l&gYo>(e|>3xj)3nJ<6O9Gv{P; z?rL~JbN&;0)pa+i7mX|4UNa7JAF&kog4Br@oS#;_BW>2tY3%)m3I^oyTzuz%Sm^m5FU}FYkkx(Rr^a1fiGKiD{NykM>dU5)IIKr9U)kCS^wc3rUSdX`}#qXGj zhiRcj-C8NJ@RwjgZwzGS&EVh?7KUMx)h(mx&CeXfr?LKZ2v!C32A3_}ee*HyA41Fo zLBDp)fD^q@c(uScyZEwuAb5}T!wQG96DCBA8eslF1Z50{eS(G9uoC@>>5zpVkiOmf z?M)Sg(G83r;*Id^yD==37D5`)h?5wEVoNUW!Xy^Qdxihr6AK*lSzNw`r_CiMT?~r% zuI7E}4YG0n0o*4(yl+9-K=k361arIH8xF3 z`0zgmB!uEO9f0kEu@6ykOa41uydQ9*PF4ZfM;icz_$8p>jWfQKF^=VVKim<>kJWCowyF|Wv}++I7I1tF8xEF zXTm_vyWOmla90oGMN4|gQv;e1aqq}Oc)iZ+i!*v+I?)j_5%>%Ve8495XEu0?*6>aK zm;v$fX^&*QW$XGH$C{=O$f3OAs|MtxhXx<;Hv0cCfLw17_76d*>~!^C8)TT?@SiAx zh60m9{x3z|@YmKc!9n<8lmfl+^?*xSlv=Ev*{ z5M{B&I~`kCxS4wN1I*M#L!3{gEaH9 zaF(1yPD)7mF}3$IkZYQm3G2KTnTEm4V`}FmKqJ8dy!MqemTMZ*iXR=opG;!~&fayB zU8ByPFKJB2DOhkJW_&S?dutkx11M>n`~$Y_WU;Hc57Afe@+Va67g6t*nc-}^F$pbA z=4Z{Ll2%OGUFm&5HYG5VmkXQubq2XXa-R!x%O&$--g;FtsTQ{-linPlKMMxb1M>cO z3`I~)ux38zv2|!Ey9QfJX~dYZwUkSbQcD?q49_jz_5Y!?b>7XGFv^O576|Vg)lquu8Rlx-t{B|>3i4afe2~V3VQrY;bkxL_vLG@rO}2a84t@ytbH9e z1wTk_vG^p7DV{zc-Mf2+#Ia^?+!<4xU8lgso|Q07bPr7EjfbfXmdQ zw%8&XT!(LhdbjdE-EYlRavzgr-|;@deTYb7!Y%-z6Q$jLtgo~(gy1Xf)g$>po%d*> z3gLUN2Ql89Dg~kWLJmuFUl*TWVEF%3{vaka&fB{Hio-8>>*BRu%AI=#mY4r@hw;;1 z*1mCp;;(Dsm&p9@p|##T2+_R1+gFLVr=}uN6;U#{({#LijGvBdDB6$L&jU0apTq3n zmlDMrorcNf&R?rKB%U`0)&P5 z>VU3K0#N+`B8|eus^WfB9cd+VOu_jY<0EOsAEy<+?;V-|_hV{_>eRkBK_F_ANduB; z`?`?C333(8t96DriCyFIv3k`|!NZdlF{~eVEtC zgJiE%kQT2<8R1IFdjP(a&-D9}{@2t-!FfmR13eXV*_U=Z>fyQKupYrFSa8gK^bKph z%bLU~&j1LAwa$BCEk;|X4@lDN52Ef4C6-*)Wq9A|rFg7l7m6k2r{pL13>L(}-f)qY ziqATx4qp|VHw>F(j4tUuOecd+^KAesPs0Az`7x(M2u`Q*1aOeI8MzAkSKGJ|MWz!Q ze<0D=MqxU~yrHEPbVH#tv{ix`r%7p}0uM|=%7!SRy#a$T&D`x?+mSW8hgZ9I$8CF> zVtc{Q#wCZ){((4&1$5F3i`Bw-H5e#FY4F2iK#^o5G!fL8o z%zFL)C^}H&8zOa~%zCYvJ^;dS1wGZrg2bL_x!ZqdZ z=o%~>1cRJ3I z`csVB^WETmFZMH&8@T6pCO=j<^BwP1+~u_5U)kJY!xHfXTdY4}O0W-RXBP-QCAc1~ z`7a6v#De5K_5j+^_(8f?d9Rp>msWyR8>4>XgcGE3yBCXm$GD+1s9n>&S@ve#uBJOh zc9;=4jr4&X*?QiuQW*4sn{hFvl;Ku%#(%NR;r|yGQ%V`1T<|-JPj4`AU&RM-f%sD$ zrJ6ow8-J#UP8#+)-|H( z&yLAtfplD_7blu_`gU(5?`sQ1?hn%Y%}~DE z?67NpJRFR6?Wgyp_mr-^?=ZZp4prZoeprO>oL)@dx&3fTZK*CYzVo7^d2M{>?dn*q z?|g4BiH++!j}a-KNV!?(UHq~2o&C7s?7Z92g9;XG#1X!8!LxtwJKt}ly^dNmTYTpW zI0XxyMuO-&r{P}na?ZIv&L6L5zT_r!k}r24`#{iqnaaE@mDV6C$rEq#yX&?+P}s^n zvb21)d;5XFZygtY4HOw>T9j|1>KqeF7&H8b;G9}!JKFCFC~sqm*VBuyxzQIp1|J2- z*T#phobhAxgCP3f^S*OHVz*#nrXQ4y2-v3H)c(6Q^)6K?+|)Y@fZNo2{wU-}M@_w< z2RKc=UD7TOH}$5=Q@c0ycJ5DUyEpZIB<`EUH8S+j;w=|zT<5)xGkwisUQ1K&X+c`N z$CME^7H=V4DKvG$hmK1P&U>mWZDc0e8OZ#_1(NxdIH7R?Z^NeEO{w7r{he$ox*F;Taq9xUZOG_y$z#N!80}Q`Fg{b za)a}(5u;00qdVo_qPGz^1q<#qM)%ie(Ay(unOJ`lirHf^8VjMpUq8vUTPXFm{l~r; z`cbA4*cDAki5ETB@9$|tqBo|T>NL`rP5yw&bBEA1o3Y!UF%6RSR|wChco7ZqbKwR3 z2Ki5@ug$04U`lr%pw4~TL3D(EGv!2Sro4b=gKehFd{!F`w=VD-4RdijSjcrXrl0YM z*!nszAJp{FKQTC=9I4Qvog00V=yaRA64Xp;~7dmS3 zdPF_C?HPUa7d)ygUmUbo>&TrUsp)r?-=y-WYiZ+s(OsG(9ID$n-?o%|_R5#y+ifb1HQ#L;vrK-K^Z* zZq5dk(O0|i_QIvUFc=aD=06T~MjF-6PemHlx45QJA$unWyi*Y|Kl3$j-^6|2JZM>q zqMm;=;`v=D7}{}C^TK>r=XsjfKlwZ@92YdNN#W-s&Fh3GeDfNvB6O3+N`H{R`<_bl zv*SqCZXFln+nm*;r((=3oE^3MYIao6%tE7{n<3`)JWj#FX;J1i025)Gdtp|HzyA)t zcY>+f@JpvZ{`dBE9WCFtugg}cecgiiM%&juZh|I$&}o7e#D~kv4Aey71hwp=3Hp+D z7G+<@YO(EXf-@UoS(O}p4Hw= z+;XjFYSg2X&7*7ZXuNAUYrN6Uqcofo_^4wzN0>)<^Gkm|>Kjf#Md+;JRn~Bx6R+a? zf7VbP8_uu;!+L%i16g4`-yNrVp0=MDPR<=-I5*-HEd1hUwt>TbY173poKFB+zciea zT0?_-A)bF%pB*m^HshC$T%mR|3JsBHyZK7Iib>C*ou}s_tWEX(?9&+D3a97wpr+>u z7KkXjIoNMGGZS7cSG#$JIu^gQgAK&O-`UoecH%N-5&QjgNpPrl;t39huEP{eZyGN0 zS9ZaI;QYU0Z~2x%NjLef$5h>hYkH2uaZTIO9X{51 z`{EjswF9``=JrzNk?$sUVPk_%a{EN=8Q^Q@u830g(B7(@Su9Oo3ha2-F_EFi&p-^Akn{;$ZXUqv6NNf)7T}B`9YI3crNkh zuyq>n{2kqcg}=c(rH{<+uOF5Cn7Z59Sv^Y{(=F9|$biZ!@A-qBM&gI^>a4|YWO{vf z(M}@<`eulf0a9PC^A^?G&T0?&XxuW6%@+)oifZt-GVQFELusa=$Dj6HT0dz|j%xpx zWI-SoSy1o;-mb9fe*0bIZGO!6xF-XB`*IVD@TldV$geKm3~Ax6s!o!`w0LVI{-&o8 z(8PF|e@P;18(+UIw) zQ)vm{eR{y_`k0p0m+$w>Y8Ju@7G8p*7>{{5{vEW~#k&e4v^q|rHlUp?=j}L$PEG@< z`ZUCqMG&JSPsFoJ;J+Xr+S4(NR}bVxi?`QK(WTcNXE)UACDhIPAXGE#!j+V3ab0~; zIDk_l0%+*r1aQ6yVBro8U;)l<0KFuDlBfV?Fo3Dy0M7cIKOzQm#4Tdm18@o!tVLeId3ozs;a+}B4}g5_!hsI&_?5jV2F3Sgt}%$| zMN2~mBB3O+eMH~iZpHKSR

vJCif-o(Nzf5c>X-;Y6>@l*3+uzY{T9$py?sl)Nn z06JzM==jdBoI{TB;0<1OXZ&o`9hQG7E|j0#8NZRkqrUw2aiRR!&iMQ;yyc&O3*|TV z?j-&xGC*zOe}Wm$-r!Yq#?N)rdp#~xer{*{XE7FR@$0?z68+qd=&1jzD6iq`D$J!?LH)>Fs&6rZ zzyVi%t3MA1FexH{&Fze=X^z~e0hkKto!>MaOL0a8^Z}F_ zRRQ&p0GG1xp#mEHx|^l*2BGEbS3oDDENTT*gaU0Vpf30GiBV5Zm14U9r(nU?c#IX$ z)ijX&m_mTI0(uGW&%zZ@^X=k)8FVHcRjAu;uh+)IQgL6aj}%<^?NT#@Q=5)hKKOzZex}mS8dnCs>WZrEOMn!r3tZs?Q4E#3IW^(LH$UiwS3DD#xK{ z5T_S!gbve6-qdM^d$5g+V#+y(`oigMI&X6u{Uh(ot(w;#<4i|ThjV_+iHy$h!TaJA zESZQpzqu#kO-Z$gI8?$Hto)fCI&$?xEbxnT0+)xJkOIHKTeF0cTfE;f1v53&qp)`R zaZ=EaM`dLTdi{N>#oD=k!QGE9ISYG}w7+?;`WZ;gJ6K_d2A@`<6~b;WdXF4$;vp}3 zv%>MXz{KN*sCcxalC|+jG4V*Y@o2(rydfgVkH^`J$6G)UkJsmDJa*T|$}&eEjcl9I z0dDXvtL%VJ^ltDe*h&|P=Z&dQoNqV539aw=c)Ssf!tB` z&BpCu!R0tM-+_bMSO4G~_{1@i*l-8_b%OC2>vow>5R z>++}o&Sd~jWxW_u!mWW+H-HuL4$SW@9$NQ>%tQ9M{S=XRdpLqcyBA#y4I`4E+MF@zXoWl>K;&;=Jkni%*r{ICXIG)E0Q z56M;o=l7g~1xGXNGjI^IHFo#@7}y$=7Kj33f)=f-$^eRX94A_s{py{|&@fZV0= zy^Cv^a)S%*!t;jSZ*Ia^U#herq{T4?V@{9b7UuaR#A99!gPIF!^9fiHTa#dN_D&$$pkXh=8)Yw932+aCV}Wo3gIyRh z$MONb_@Nq@lwIE5xXJh^&PNbDtFNm~wy?BV>A;80qT{vvxVG9pG^RR)3?|E3mLn96t?PuTcggu;hO2a$H)Gad zra3P*_*8Sf$Xvf<&KDZ|MRPsYT>Ex0%v|?0@upo+KZDG5sd;X1!&~>b#!KyNWpk^+ z|1Hn0Z1!+{L0a)o{N(w#;$5j1j4NK9Ix)5QxAVEc3@c^4nb=ZxTwRZb#+w7gN~jML8Z9B0gw|h0 z53ONBnX4lY+GQS3zxC9?cD4CsL z(S&b+?yG3BMJpNbn<^pGqPdjt3{Y594p5`0JWHtJV}(j63ll0Wp_YWJRBnSs8;G8x zD7V2@tp`2_icd)}G){9jp~cCt1QS%x#|~6NVwjL*39YL^SarE*C(WYu)K1eD%`A&H zQrLTn24v`+LDW(^zhP@2=qx^rQo`fPO|fX)I-r>vTBb$In}EKo5^^kBMG2EsLWM;G z%+1-#t+i;;TA*=R5{E{M<`KO_xvdsWVrXL&jm3DQYO;xG+uW)twrCZLe_40YPOe3p zDB-@zf|gmdo@u*N(MpTv61`9*)LXQQPAo&YO%|6if%Z`eTq2_J&7hs_ zt=vS5CNs3`mqiaL7R}|(72jVb@y)boCDS%ixj7cCWgG@7%Hb~!t(9@8oGfz7EgFlC zllQQqRTga^TA*lyMbjAH$r=aGq7{ronxe5X1Wt=eMBmFhUQsS0)HsweZF63dI3!!N zit)Ww(F}`L5^bF%DdzGgl~6(SEahU)7lW2F4l9(4EfNiyOWS!-(OQd^Q$o>pi9>@$ z^O)kBx=LuCMbl^{gW9l#RLN`{jof;2r(7ly;`xqLcF4^oT8XLn;3io#k@o@ zNV(lLG+4ZmP{x?;`bi|@Skz;_wM`PV$f7w6?Q{*T!lF&&4pJ1unMQ6UE%lj8HEkA6 zWGT$+B4_|_s5KRpEV0j{Pe)H+(O7EoDwU9A(FEr4If|xPG=)}@tSI(}H*#y4^M@;n zb-4zuV9fSXwA`W@3~k#b60<6cmQp(nh$&*$V9_F?)rxu+EvMY46b<0rgr+T-F?;b+ z%{PmdiGNTu$)b6b`)@_lELuwLKNZDSBaPfLhBiz?%e81OB_t?XYSA2`y%epmXc6W1 zQMt7it)f@ne6ggs(V~?^8x?J}Xd`p}<#tJ19Nr>nirc95Lthj$(W05Oz8;FEShRw2 zTVD`vrbXk4eyu1zHf-d^Q^G`zLy<*2`roOWq$a}`9Q~TC(h|}boxb{5y+uo@zMhIU zS(IOt^0s73;@d2mK%;$smnKuD8qnEP&}e_(C`OxT(IU!StP)Zz+CW7;q-dr^vzaZw zE)uyp7Ay_#;!$c#G!IV17_E$)dTG`@&zsO|xhkB|NBTmPJ#D&QdhjqPdhCQn{rTZDq#Z z-z*th0hE6zg;kc2!+^(NuR@khi)Ir&PEpj#CP9fzW}*g>8Rw&I%);X}h#a6Mh+Ip^ z;bZ45l(dyvw49Ia@FeFeEb1|BM=H10qGjZMtlUP6CNgbr07dhw6{ra~4l_|S0}^Po zxfe;mi586|dWE7X7EK~LXs2*9Em}`gK0whNi`EhiC|YFEMoQSYLnM@2w2Iu{E)=xZ zqVe>+s6U9<9ESf?I1&U^eQEGjvqInigVv5uL6uD&axP#S=7UnHG&@4vkba+oA#LY@njK7R_dSGtL)HmRdB4a*xr_DlD2v zw2z{-7R{oBewvCn%uUp^l`-eDF}okWB+;U!L?L#9O&=qg@QG{>TC zM9UQ|vS=l>bC06s7L6zON6h(09O^9^%iNr-+$M`AFl}jywplcpa*tOu4zp5CzA=a9 zsN6)0RuR2b(G-goF~wPmW?Hn3=)=E=MP*wwlbZZ|g2Xq^qVcqy$F-$fX3;pJru|!K z(F~^Tbd_6cQIF`HqeO0lMPn&piiYM{w2C&Fp=bc}iZ#Unau3!x#9K6zDekUll11Ct z6W+W{LQAt~9P^^$XGw9UMPrG+t=t@owo&Vg6fLr7BJKA9MawN(L2ic1t+Z$*V|I$7 zwHA$M9uH8o!J-+|`sDK@zMe(n$W7GH0+`3HdWa>uucGl5O6SQ2>B8#?CsSo`wku0~UM>Jp2DvP##0d&+RQFXmVTZtZ} zXro0vqWdW7S+t3Ak5#z=tV+B>#BXgr&@JI9OMEQ{umdw_CtEgDB| z3g-VKv{H-alDl!8Hi*I~{p3?Bx7MOLKX=7oF8w zw2di#Te*!E^%#domD_6392T5}G=p64Tj3^I zG=a8r#d>us7L8-^e-m6Z{xgA^;-6~?c$bO&Q8WllxH8FXV#iAZ1R4JNi(IS?M zCl$@HXe+H`j-o{tt!HRoJSuX_Et*Z!i2G42s?wrOM9)$Q^%kvUZuZ$M5}GWUM(ynS zMbI{jCa`zlDH?aUpW-aaouF|@v}i43Hd4_Pi#C!wP|-|_dbG3hGeu`P7R@4hkD^5u zEuto;D_U;RJff2ot+J@cRHP}|V9_RO{dh$^i&indhbkI4!cSWz(H@E>S~Q7v);d<= zn_|&qnrE-Cw8R4CAB-T&5bK}}TZ8D|PN&7zsimcvwTmPIS5zJrvTXVF;7{q+nq6aFPXVFqRg)JK;4rLZCV$3#;5j|8|G?NlmD_U>SJfh1L zZL(+ui{3*jx6Pu7w32*9;|BUEP9S=NqKOvGrra;fBxWfVZKWpnX_DffVbN@+V#hi` zvn*Ol?oW#5STv95$BJUTw_mpq{bRJG7^^4^TFzAbI!5A9YteYx&KgAo#W2VBk~@;pY^ zVaiDsZD2C{JSb?IMeB(^K3dQ`i^ekQ6`xDg%Yd4wH(EjwwR4dM+!{ui7hFHUGIX>b zon$8HQV0W@7)Ghd{Z&GWMU%)KqTEc2Hqj>kI9=rCSTvE`ZptmPXdI*d%V!c=g+=3u zehCzLQ47>hkR>FL@R|}@!-O_VXk;92(Ky5%s1i!Ugepr&CSk{?lD390q16&lji-cx%B{3$J&hnv(Rzz! zkbB*KM1p70EL!!C*y9oL4Gi*A5zAEU`b1M<(Im>PPZ0^p77dX5sd6(dn$1dW=X~Mj zSTu|1dPR#YTFcVXplG>8Gs&%1w929xL{HTCHdr)`=v?J`7Hwj|i8W~(?58b-8GAV5 z3!{w(YD^=+64FTMqJ-oyA;l6hNNB>_2)6CRge*%)VRYu5DoV|>sK*Q_K25XGqHP}o zoeyEifCh^uQ^I(a;8`?@=*fx(j`I^#M1#5aK9L)5(LADeD4Jx^DysTwMbj*rOYXUf zW?3|c=)0pN6}cA8CVGT&OD$SXRX?WO3X5h^QLlfj{sE{_b-g9Tvg&w13H&^bA$XRM z%=q4-1b$t`5MuFDtAjX7n5cw=Fd@kjvKWUGl#muCWLQEy-O7Y}MSa;8ZDqFX{7AAT z&!Qen;XviqTQq^5AWqRhk{`1))*|-niCL{hYZb9W4X9d1J1E%994a` zMzYAFSyc6r--!hM>>7s`YMG#*qK%eYN%ifa5?U>q%sBkeBog9|_u~-94ESY)potc3 zWa77fAc;@0Xf~DFUsI83(JZ2SD$37xYT6nY+V68kZjnVZ$z7*txkWRGzN=`JMbn7B zqG*FfQyAaDr$`oh7A>bHdurMOC-`xwpdPv?H{PO2jM+EqBxV^FZK8yqP7yTQq7BqT z%lldwESgAf^xSZXLzzVrh~}%@N{hx5{iQ_Y)>|}==$DG}JFcp;a>n;9McXWzMZdF9 z(YOXf`eC2Ssx%nnR0Prfu3Hi`G*Q8?ZYT z?6=&aN#6lA?caKf)>CdsdCAlXknr6{5 zR^xpY&9Z0)xjhxlwP+djyX9ojL#ah8$bEl}YO<8B=_qqH!nt+(b&~qG+N; z6NqlQM`D&@(G-@qtB0vghEbOJa}~|8XfECBwe{j&i+~#UT51W6@;=~X%|eS-F|&@x zV=!8Na8whNL-X7@Ot_5}Eu|Ta)kwBlG>O@gq-boiFQJr)fBqzidZI<^nce?UG{vGt zM_Oi;AcqIpC|Dq3ODWGZT)qO}&yB{xpdMvLYU{qsbLZ>vSK ziT~KGAWsKQJiY8bziJ?^~nrzWTqE9NCVbLOLa*m?e7EK`cRz>qHT1wN%IZ2Jy zqHWC0+p*;pYST)fCcCRFA&>TOF$l=m#xTl&k5FN)7R_QZdn+1yil59(qT5fDfD{gUYS2Xc6=6zu1!s8Cwg~WNd>aRM9D9950sYS+s%naEhXVk$!?I zS-K}e7>pp(qKPcsdn-4`q7~#OD!0g@S+w=|%A%#@zNXv;ippiwF;$D#rH^#=Jhy_(FTh)5j{;&&!UY)k5)8rsxP;J=zfaETeP0&Uj-7g zB#YJ(-JociMXQK@qG*;yD~Vn@R3zkDw1Vgvik4b5o^EA`q7@b`C-)#lYb_dJx#*^- zXVEfp*9;LO2%P4pt(0gT(6o|eS=imq+w>NemR_+Kdl;20tNjZ=buE@QmfX+ZH35(N zUoETL0sM*@;!F73fA)!&3F++#009*xW{JN+-^Is3VTh))NSN8 zF_Vw+w?Qe(dBg15KeaYSwuzbEBlz0r(VO~n9pU;_q<2dTWh7Pgf~2%rf6CVl3de)Y zubGR`hPS}NM%`5_HnuNs>WcMB$MHE;3>HRt%U?vAidVgX5&VFBeuT1nJp~Z5i~HtX ztg+cPrdvV`mU|zHD94_Jm5fG{Im@Y%B~;1sCTy4BEk;Mmzu67CtND9A+1p=gZ8w!knwjx!#-`&Dq1bE@t4MfdND~;2pFqY*sngpw7!gH_p$V zMT?o4;e>db-i%@&^L_Tgmj;jsS^%`SJ? zzoDqr9O$r5h-Tm9uvd}oW_^sq<~Po~F%G+o?17H#FPDaO(nR(F4*NQ?k8#+~MYBD0 zlYE_wB>OmreTTy?r|fEny*Jq>I_&Y$>^Tm*=>@P)aoC4NvnM<3m&s0X*jw;*CExu> zOp+XS0oh|6_B+w+t`7S`veO;*{n6~t(Hrq~l1TQ4KZFbBH7*;U_3@@Gvh1ZSP~PtV zQtQS};)Q%7$s7F~D8+U1b)@32@o}V^-o!$2xi1;~&fC2Ib`3uhA}(Au99$TCOGOG%YCOz#ItBLg^qx)7DAm<)`p8+yu(f*`yz+EknC$5*&8wQ zK0@}<4tqwl>^B{@$lk#ndQDQ!B|G8durZ*LD(GL4TvhR0ff8k`9$ll*!UmGpE!eNW-4J*Ss8A0}Qj_lhV zw#a_NVfT)fo$jzjcF19`Lm8+^bM)QMVTvVTE`#!qExwCp^GE%9FNu=f+$j!q^xY>|Dh z!~W^nD4h&&*dqH%hy6O)e>m~p_G&nlBKstVT^udD-eHUEo(}s`viE8Ud!L6Lw#fd9 z9?^J+!O^n+>99riLWkY{3}heS$UfC!i|iQ=`xCNV`;K$iBKus2y@2c!9NFJX2SqCf zk=@^6-x4kRRfjFIe?>pZPvx0pk8@`hNY_GCx)F%DZ~ zU+b`!k?rbar*z3Ql_GnD!=6X>O^)o39Ja{r?Xdq5ExX)di|lpMRn%(k1hVgOWZ&el zMfOV$J0@E87>6yg^Bwk=PeJz6j_d;*w#dG~VLwN|U*5e{z~9I_vCWFPLZ zMYi@QmA!;)S0}%r58|g%WNUv?*>{uuk|TSS!xq`vpH%k6(Xz`Nw#e50q_U4C`y)s8 zbq-r(YkyMNe?1Wu?~x8$WNUv?*&ma=-jThx!xq`vpH%jLqh&Wqugj?$v_Glro5^l> zWWVgNMYi@Qm3>CE>;i`^@z(yNvJWIXeoMH_U+Az!w)Q8L-TZizP7)oq$kzU(vX_#5 zq9glHbUXZ<7umz5_o?iXXxSe)Y>~aE!@ivC3`h3k4qIfek*=7^9vUq>$6<@?#SXh0 z*;hKUPj}cNdzQmq{aBPv`Z#QneZIqfmh9Ud+3V5mh|tNA4*Rxf*;Ni(WN(+wm8SA+ zvgbRp?{U}??{^(`-)PyB9Ja`Q#9_BQ3fWIPvX67vBKro1{TA77nGZN@k$sxOo=^5$ zj_gm-Nr}+OJ`VfpXxUFWY?1wgbj4IBCzJiPBl}i|E%9FBu=j|To#wDb_T3Kqn@1pf zn8mVKwgmUu69*g>+#II_=i*dn{cVSo2flui;Hw#dHRVZTCl zwxg4+=yv$26xl-^c44&a6%JcucXQYmk$s61?*|;V$X+d7G1bY@(Xz80w#a_gVecq| z?3*3gr#NhpeVfDnkZjk!_j1@G`)r5(1lc8y?6v52MChci!@e*)7r)(^QTo z`$#t#dvaiDy+2=Xzr^$A8@*}z(5jr`-VgHNlLmb(!Ic$;ryL7HJmE)pi7ddQ+cb&sN z1nlZ$$WAYoH=vuA?HNcdmX}V2wYi5>=U_CrrU>O$Ki+WY^Bddo>4U<(H@8=x7Jh1p z`&6)~Ik79=LGFLo$bo@zSBk8m+px#!+p*Pr+v(lCaASKlrrDu`I2?lcrC$WeS6<$m z&uwf^4ZX(S`qlUmFYqO3VG(A9rSYSWCHgDHOA9^Pr4=&d)9Bq7n3t^mE zO?t|`p#Psq?{U2*Jy?+0w`+jOchXR@K+|x`Gf2ap4DBK$WO>SKh|PK7(0KW2>HiYi zW7qkiRUf)rXos25dNQ;tt;X-GUEP+p| zI)=h({%>`3u@P)OWVZ;;d{Wghv zRr-yjPjKnM!mIa^m%;ucd{cz4a;FxLos>F!MQ~nbJElXd8*r0vUukuPoCyKpCMXB<BVox@QgeBlo0QX>o&vlE}{xxE_#cMxaZ}0ib}>$ZzX+2 z$r53hSRT$o5DO80w(zF+Gxbqen-(gRfcVL<5)Cw1a12V+&~4rx%=o(5eEZHn{N#&v z{%ty%8iM+$2}+v`+ogu6(fiP>N#o|;cTac~PlaBifWmFlKhT$wGQs0GwnmCqX?gl? z4r?rsWby~+lLYlPo#YDMs5YS-;CF|N)hH$=NXB^C8qyZ4ZO$-8f^qQ)ld&3YV#9}$g+A& zU99;Jo!kps;Cw<$2&hq}!vv~(Gy3=8J}ktj+gm_G37J@!MgSg-Y6l!^V^MP8ZmQ3F zR8;O|YbW08V&EXQcP~bXxylifMKM=8 zVz$#LPb|MNP{Uik@bjd*tF5_{?q&gARUJo=dex|pIS?EvbC0KNk9Aq4$s*fUbw{JfSO=db57l-QPaNi%$ z5^c%iJJ7}9R>MK}^pD_B&*spefx`hc_;e(k5VUlyi^E6bc=j}W1mmmX@EXSG0ka@b zoui-S+6UbPq=K&Wg!|#hU7qkY@+)`rx9ew(y9Xm@$>Fbp1ZLm+G5!)mIb@o7q+&3u zIpjr%8iT07L?Ec~E>z=R;V~r%E>_B7aw}4(lujQHQq4IMOngpQI_wNiIC%hHfti75)6*esU-EUxCgf9HX3&Vk#B|6~ zTt_hjbciPf@+%e}^7&cH)S~l2ZEpnbrw+>Yirc5Ueu{B)E0i!M~TXnu|}=t zMZM33`afKIxV9!LmSqO@J7iB?8o1Pjx|pbLd;S;8nJ~i~&2@?w^-p%PQQmWYt_4ID z|0culUN7p$F4P1+Y6ekj+guxZQJ-?52K=a7LHH6IHPef_`2|N!X@1oAiF&Dxn&d@&&4t?1 zkNOx<@g^B#h}FHQ_q$LJ;M&vHHbiA^P22EBq)T0Dy3B>T#E*IiiHNB*_Imv~W!xKPjXqjn}Lp1wDze;{e(+ADWiky`Jn5i6vx^K|sFa1u$aNTw7|Q;G$T zixdgA6tyWu4KyYElvj#J&Pa-LZ7F6}iIAd;k>W}%MGB=DLn&HnDN=1ICcI)vG1@D| zZXNFfw*-XnDQSwCyfHlpg`wof%xqsZ6d>7woK%0uRvdmM$1cUmS!BtfF2d@;%qu+vNa_XihnL1O7Nr~eRG_Ph#MXlxaQ1R`SW`6%OLZ;%eS~K%#)u9!$ zDa_r}%-n&ZnWeTAH7Esx-tdE7%{+WYQgpSYXcZ~NO-71lkbR;~wl+7@WZZxI6ZF#?IbhgK9)iWQXNg*%K96x(u~gsm0~p>a+1 zj{1M;M#`0A|E-o{PVI`2V`HXPOaY9UZaAN8Y0ccB&UqI%{C6POV%@=DvsH5;;L0|pF8T6N@7Je`NWa=4d!$lQb>GS z74@$9d<8vMxl*j{W@)449}!Z#{({!V7}_!R+Ng~SDa8v9h!p(lqLyMO21@~#(&6^# zXO|S$o{G&*E|> zpQFgxUHgJt>pfYsn4^@)Ze zCHjh1Hq5uhX4n*|@fwCq2ve2gxLkkoRu@Y@_eOf&lyt411lTaP45S_D7ZyCo7R+M{ z=B+@-)&^gkgxmJ(-ctn+u&VC$ma{x8eI2M-J+_oJI$BI9P@yWn z#=eivejM7yf4H27OC;&>J?5O*xMUzR3BR}H&6fbN2)QH{TKd%DoJtHEnu29JQy7yodPMcfCXN}QR3f1fezIoo0Zbp z(&uNFfi4cA+0CkAnsoqHS8zS)$8@w5wVqxg6!^1hB*m&W#SVUoOGjx%O((^nq?lk+ z9Hl9~5`|*8lO^NBjeIf=Fcf=$qMl;IOD&QzLa0QHj_>d_`qi2LRSe#|0p5z;Qg9pi z;~VY8RBb-HLLEi_VG?AmHtmrTQJ5i%K8k*Xv5_s_6w_e13+pW6n&)(r=fE`ej5^-x zB$W$(6jBU9a~uHMEPoIzx!F?4KbY-(aoL@QV>~%_r;_7tu)6JhZK18JM0Q)6O_Q(X z_ZUK~p;$tL2zA_58;3*l7Eh(h4)rp|$~$zxIs`APf@5pJIwg!5dp53gvfxd--ILK- z(rzN@c0VCAaCw?ucazob$3WKC?t7orn!XuQ7Tm;kkF(p|032bi?JGyN`&pZ2lA&o2 zfXasA|7c{Pj(^qC1GIwGW@~`fJNsgc%K_~CZ21I0C{P1Mk%PYAUW&EB7Hb^+RVXkc zE>bL&Xf^e5e|HRdMmMyNh!uG0EUpnccGuEj$S-8a+;^wXiwp%AgyaCq=6nBL&I6ak z;Xl2wTaV+2x?lc~E)Se?oguWQ&RcB>JNc*14I{OLOT}=?>(#SuLSOwHF|TJEQjddF zV(2aAeG2}A8(m6i2Lzi2da?O9;&G!MCsO+-5gRx1baevZ8J- zfda)@9Kzwl_fikbslzn87s6K4m(mi3RX56D1F#Uy%{ihm zgwNZ_?}ohSSmQ5 zfTc27@pS!eI-pSC#7~VO0S_%swNFvsdA;SMpZUSHcp%pLr-6lYI*VzJT5$Dcs%(W# zhx_7Tk!eFA!6A-HG=PP)vH`h^M&rmg1}TnS8(YLZOmZrIj7g5fB^wSqBn<74zaTT) zSg6=x9~uu{qNl3}VeF91#14yLDC{>vfFFugV<4F~(*0tP)&KOEf)f%p#tL~I%zE;B zvBDZKUl9`r-n=MO#Qm@uz(K=FGsR^$+^+ejy(Q2an<512Z3If> z;0txU4q+8M5@{g#ryxw`rmSgje5psO@q*lzb zA)KnFkSTlsP1m@;w`kkB8&;_Xu^YZSqMrsCjQ96eiOH>NLDKX?^kZ;8*{o%-@cyEnmb; zd|ub9t|$)9T^(DT*Qo+`Q^r9|^}sfny$F!|h04TTD6k4h%>yg(SJaYOcy(}Y;9a4# zg33w^&J}S$V-jh+d9rd$X2&rAh)rT*4SLGY!e2b|ltxoo%0F14QW2O@>DBq*omL5+ zBf^aYgt>Vv&&^(rzp6b3qotNnRja^whNnUCAGkf2;RTyKrltduWmy{P(&Lb z_fS33h9<^~YSXjqwlp_w3FhB{wS}<^?I_wdfx~JJnZx_Nj^ZnNn{pl2ZEY=w^>A^7 zqnQ1ub`+DIAgM((In8usV=(1`r*OkWk9WHJjF|p>wZ*h>Z3NS+4buz3w19_i!pY#F z`5va{3I%HZ=L9>}axdSeIdG$YNGHr*ZHMaVkV zP<|4WGdqs@5!N5f8U{F++|KXdQo3UjQ8U^j@0=N?Q$_Wl#sQr_Ylzdm^e+D$G~T7D z6f`YH)~9+q_zl?4{rTcZm;$N^gB^0Eq=mxmJ6Un!@6eLuDu}G}hpRF9B6N)3B%$N- zLv%ngW@IG8H?;<++Vfv!*yUngqguR4sIK|}r6f0n++fGmABS+T(f^|P5KZFFchfvJzQD`(Kgb_$nzkbY+FdtV`2_{*V7z2t~u41K}RPl z;)9M1I;QYCcf;W=!KBsbr6k;CZw!uW3Z{U6MZH)ds7!XFEtQD+ z)$QO}zVG>~mDR$~HxVstF;KVgT(nRx#K&7aiqt;%2y_jlqCy8tKvUjG9&NMR^K}Hf z6$3Q8_a33-9p5@BYD!?U$6PP58LxG-W9?>7vqaL(PNC~6*X5qL(rR|wNIBXWIqGXU z&eL+FP>%oNrMqnPV>vu-0IIm}dArD#pyp5BBGRO22)nkZ*0B@swU+VNtC9y$k0g=eVHT z`k|k8L9ZqBLKpN|e(26F=+_9{o*Ozwk}VJVBst#&{V1UeT(m#*LzfJ8{?!G2-~nGN+qj^!2|eyxM<<{A zp)0ze?;-S`F4|N4(BD7l=;R7Q?{z_^`Jvx;K_5c~SZ`Gy1&SV7=hJp*Bl>n^4-hZc zQ7&n2ji;*$BdqfG2enmx1M5tbfX-Pb!1r;CVES9S38pyy8Agv*(N4@MdPQ*6k5bO@ z571&PlaSS{?-XLWK{9QSutWVwW&m#VkXrhqMe5HV+$@T}x5~fO+%OY@P)Qi-B2D1e6}8wOK1vL3ZlB^ zfj3cN#6*MlLqsea9$SNWVky^h(G(o_GuqKjKtLxd$OeKmA&A`vNp@2|`Cb-1vmvv7 zs)^CNnyO0$^W!au=5U%CC~ErLDzf;BDV5lV5~|0(1Ld_jlb~Y$Gd-z>0o3ZXl61Ki zo&St$fWPd3vlmqtfEU~Y{BRl^sJ7Av>G(o{=k`SgrI%b`ndZP1+BEH;w0o*H%(neG zm5Bvm_0fp!l3u~mWa28^l~lyjJi!K*z%ac7i>t(BVwt6F5o?QNwZl`?<`7odjntPY z4AnG^1K!r>%o>^|Of-RdSD<)nsbRhaM_r<#ks1w{wK`!RT0uLLQpV3*;`S*)h#0&Q zyEiXle;}AW0e=YqdK^URCJNU+HvIxqNCQ?a$(HM{iRb7AQX{R*_b}}jFoh6~S!_~c zMJnbY>PRSxAr=0}$X(tT(5@aj#1FqgbUM7z%ISRI_C=(34RqJ;XW~!>UvBl^av}vlkkRU_Y@^O+iU!`wGM25WI7!#JcHlWvqHRbl9u{ zy{@mTu17f+zFaIE8xZUjh{xbF*fbd|e2;L!drS@a+m?hCSo^AePLYS`pWmCc@$g2{ z$wrszTa>c}hCW>!UTvSOeq3N0Bvf?139Xv0!MQlM?1)|td+tW09eW)jKR3wF9)+pGyRnbZ+Dh0DQ3x>EE)X~LoQ0m7( z>3dYb;>O8>gpgX3iaqm9Q|Yca;-|1!hV=hNxT@?5Gu}5_mG(H^wTGUw`b)pV6m#QB z5+M?U>S=UPQ9dP;wGRNUM>}`omd8Mf;0A)@&%xq4m|Y!z3-Cc6EDWr(D{!W>p<40V zt%Y=;+h36$^XO&P*!vx0%CpUX!M%FqRge)_UbMf+CiIvg1O;;y2@kBk?W0L8xlf!g zSEzJFKfsvbizz2=vtnT1CF6K{%pJZ6<{!tdhaP{IAnXar zidF8pnNow15TD=qMa}FPjL9k-`k6imIj@VglE1JYmU0?PjsZ+ z2yGXGLX}o01;K15fIm9uxUp6g0kSJdEqA* z`0-`IKMgx^(SL~E9#H}{@$}oA|_W8i&7}9rb zG3@kt$a;VEr&5y#0EE}i9${C z6WOLkhG{_Xi7f+ygNt@z)Axs*k1>!`bK$X=*E;m!cr1Ul^XJ7@_iTj#zTo8WUAlvI zq+rv1Z4M6r@n6YhG#S&DgMa9-ZRQRuY`Yz2GlJRO@K>LcY-OuzEIQgzRb>bmp{j=r zh(-QoO&*%uq1w};p{hF|L%1%6vbsiF&fBmYabrfNen7$$l<=FLg2MmmUakx1sJ&bn z?#g8q|DDwEs&^Ui*PZadH^;4X(f|t9`o^aj>dV>%_tF_ige_zz<$xj*O}y5f6p$vB zH~Dm}Z*|fFJWk~6q&s@)PPz`G$;>vczQV+leI7E=UDPRvFTb_M?R4I5PLx1WuD2v`PFNjW z9FwUo8&)Z}7}?ug*(6`ac|`(8#-PBnQYf!)f-h(fWKO>yQN zpNvU{Vrx=7k1}T16su{9jiXRJ+opJlpW>lp-RfWN1Vs$JnD7*vVga3FD6k2~Fszd@ z*5*+`Jxh-h{S@Cd6eoaU=TMjihT%rzWoXoy=Z&~Z#A&rJf36=>+FKt7d949XD9W7K z30xf)`UM;_Jt7}v52qx-BQ`=kCXc*j^oT-Nb^+xI8-e5(ocJO*z#+sbW~H&9+1FUF z@UWoSrbj8BPQg@%70oYPWNlM(itUvPE4WD-s$cvk7ND7^!8qH1Xx0pBOgg;lp8MVw z{HWE{JS)!y6`kR|whA*#_99XZoTXPj*=NBaODn}1cEVzHn#T3=nRs-vfXJf!1Tvx~ zGM$h7y3X*=L|>U1xVnMHv?A%9Z`N{!CQJUCDnq_F+R2%P$9vxA%z$%O;xTf5>xYfI1J?sJ2 zTW}XqN!lw+U3Mlt)%859r`CQF;c6S-rhBS7hoPN)-8YljBP?yX0fNOZzEsI=DEtEq z7ZaFYxGAEBuaZ=#Y!uJE5=_Cnui+I78F8t z=1ciJT|S%TErf_{)Z=8tc+}`w7e_~sq{NxPV};DptQh%=u`8Wx{T-#9L!ao4n=VNd zxy`oD*?UJaT}H{VLac?>$$@|*{mH(h#Q3*}kiH!r!h?ATZ&JRBHUwlg4yN>jn2@Ue zvoV-1Nz5h~yxieQ9ll6kZ=jL2{bRccY(tBPZ_V~;aSj0 z{dbl&j)|{76@QU?NzLHffvGVxAo(5LfZ?f-jY)B846+@fYzNg-V5(0%q@scG_3tty z(pNyvrm#=*{MOj)1>A#_C$vC>npAgv#=a9Rm?F_@Udk!8bw-t#_`1RT+JYtETIZ`! z(J9oBuiYK@?|gYo-xvf*%7d%Kf8F4JQzZNMcAa_w6`{J>+k)ffvnq2>94wEgUOFS^ zzbQ8d}1F5DO4v`(=7(w#Cz3`bEF?Bn))nR?2#PRsey7$ zDE0IzlFBDDB%o9EthO$FfMI1Nr8_h7T6&*}3gJ*vjbOrE?QJWD)bX}W*uW3gYA@N) zWQ3DWt9fgWh;#{(JlCjf|*RUYe!irVA9A5fKPao4Zn(3puypq{UemTtdlX-5o{9q5? z!}SQcb|BYK$E^z?U3|xF_z7n3gWpZcJ!!sEy>kC@1j?UIJu9ZQ%;tec_z~}qCxI(IQuxt_AAXoO82)%M{0HW%+YuSa zQv?gGxn4)*^@W*PSC#n|)=O$yQ^nzTBBqM}y6CB5S2v!CII@5z;7;PN^gl+d+3RZx z)n2g*XScbdm6%(o=6}dzVZ{Q!J`#Ql2A>E1!TZDo2{{Z|H~|nRG1&4{j5HY#$rwJ| z&I`4B4kXo;H&%)1eZSNgV7vZa)B{s-lj?F2r5i=5bE7UFjL`uFs^xLyYBgdfptW;* z*Hb>v-fA3$v%Mh8)~ZP>#0{_|s?tL;yteb?FaDYFr|KVNyf}rOgito)yZZ9Ja{ItE zPJ~QsjsaEj9+RnNJw{-h<-^Gno~sUKy?`h+)Gjoi`-SPLd0kF*SR0)1BdX#%4nbjX z;#ata6KLD99@0KT;j^3DS4F=5NXFr$wjNN5+z6Y0m7&*vFNp2o@|%pbXW0K`uf&W(upD;owRCZb~TJ* zWFEr+ZmVkfDj1q_WUC{a>6%*b2CXvvFsyPY@Z-G3>`AO|q#3zgQn|3nt_z={ABbLI z2YEx2=oPfkd5dbg8kU^U=1APmG_eJlu zZq@_+XlMKyO|`^H(2}$hR#3XpmiP0nZh0Gef_XTmo0TD+fHJI0 z*UZ@qXS(DQv5)w`hq!?Cqy{IBh7EQKwVccXbD9=mY%sqk$~%W<(K|Y!1HO0A30tA! zu}bS3{}H)edJ-ap>fAz-2o+%0;(IqBzHWxH*bRvlyQJX|E}oE;AzvAem>bIrBL}tG z+ZTaXYrO>Ti3veJAe@5cnFZ#@=n#ow&2$! znQI-j*Rb6L!0m6u8`oZDVs7A_2Rvwbr}#iKU7Q-s zA5D9}f(Xt-&0B&Qto~W7GhLxyIg5}rzpeDgTkiglZs?r7E#th>he6r5Yn{;(WM$(% zcZ#g;Gq&L{b6O}c|6}&c@J7u8Z{P|*Y)xLTnx|C4QcfQ9lyW|sGSN+5fnvDH(rNm= z7?(gZdQ7$MB)U)2ck^M<`azVd9ox05(bUlhZcZWU&_8=w^);*)%qHQnunU!nPG z6+X!U>^I;qHHa8+4+7A=gk3uRfW9fTNaji7M!)!o^6B}`6y3Sl)_n2dGtvB{vyA4m zOO4M;7DiEg+MvoaQW) zav2Vje`Y{e5%>m+%g!POQHQ@_1L}qXe|*4R%$ZJ=;Gcmb$Yy{bGZKfDYax#|53d;t zECnU zqd1{F=!;1sG;=qa`T6j<9NIvZkv|d0IMI;tI=CQ`9l%oubh&!o?iR{PgC6kUXE3W8 zM2b(T6r6yZY)mLQuEVC_#2A!y3r#^t6_eDzNbhMUA?!)YyMA@2++C{YJ=Sp|k}s3= zQ;1uH^f1sfq#s6ES)|)+REO`jD4UkBQEJs>nJ0o-`+@Cl=4?}ut$l2Sr%qcSehnh( z5uu}Wy0#vuv13X`kR^}7NO?|xP11|pWQ2q4XFvryI}q< z1S}lI#{SejU)jBaGZn4Y4nH5u1lk-{-&jS`g0u}1DZbrBpcc$3f_hjbqoy*7#3=J0 z1#K+Lb{BIP=m$fsboapumTxS1*O!uC)Iod3H?N1okQct)YB^=SP#a3GR_^x66r006 zh69>74tB}Y7d;J+4&dSQKZo=wJ}z%e6sB(GGd@;4{0}=M%z>d-b>_re_Nk17l4I!I z0apeaWN}1`$G5jvcC^>6S{pC^K4Rb$0#$p`#&Fhp+bE?PzIntW8%1h#M{&0H@EAOi z!3F32LkUqFZ%+fR&tRN$qn+t4M%rGleg|4gEmD`ch;t2i=Q<}mIDDg*@!@=0GTx{E zge))uXRnRy+=j81`#nm(2_e4|Jx6iB+X3Kmzu(}NAp_?ky{)z3YHVYSUWy#U^Rx$f z)lTcSR@oyclLI2B>I`_JaZE{ngtWvDM#1kG1^)^MzX|b+vAGY!#&8qwsB;*}9X13f zt_0=W@2*(I9LBG)9X4dt&0aUOI&&BsGO7=dc#@fn4U)-_Gn5zu$tB}}7RC2Xo=YpT zM;*uWFU-YTYeX5(n<0#ThgFQ-;E^yNzY-oonNh+6)380GePf%A;vKtzNJ(N8N>@gq zbb&+Z{0K_#{s&5L;12{x^l-sUPmX8%zn&b=s!?{1XVoal@vM5DIUY+hX(b;4fu^ze zIu1cG4fosozr$Gomtm~NE%=K4(?sX#-2+Y@8{wu_2Xh9)*%VxkVHZAPuOMy#Z3~N; zhwCOdA$b@^ug?~JJ`JI78}U_ohQCv9X>7xpvbw?XmqB^K?D|w;ACjMHlP`rALFk-C z{1Z?NeBF_v$l-9_$x7xiniWVRFhsMx!n(HFD|~t_y7f*{Z+MI6sfclOROR}*WhX2S z%?$^auY1_=xD7lKmkq|Sm(W0aFFT#n^d~5IDg1bhT3DMeDYNoCalfD=7%`}iXS?%1 z4Yyn6FMG-pu=k?jN1eL&Wr{nA^|XeJig zg)X#xZ#ihRI*Z)<8jV(Dq3y=zhpEa9# zj#JsC_Nj1+s?JAYs3v0IT)v*cI1i~gF_z#bpP#J{AU%(Pq!;(Qp*T0-W&m0X{}ha0 z{l1KsocVTvg#h<=EdYpYpVJ(0tvy*^crh=_>)fqJtjcC%iC zxB3p24(CIVMowNTu)IhUI(YT7Qi#S7!Y)k*ljM*HoOt^{q@dw9;}dh4E>* zYEZ5TkSprW%V3@m&J481ByI1!EdNWwGQNUE&BHa4p|i0B;EA4nXjrSiCcim5FV}&q_&S)Uh*7UlBB#J5%gWh# zNg(swZ21WVUMz5PO(NHorQjOsn1E>*J1>d&iP(ABz@3+CGtABloXR-_ZXT$FAMpsY=vXE)^LKMY*b!d7`LaXKqV0e2Pk9r1AYuQ-PsHkKQP zr9edB(U%0;6qY{ZGsLb&;5TmLS7@wwa2U$b`7&5BXo6lS-!z>2%|>t=D2_tEvT z=IN_fT79w7BFA9fws;C!Cj&&1rs{4GGHq9@s(+$S%N@`44jBz+_e2tvCihYs_Dq!M zxh(*~R1ToUq%>kRd`km+jsFS#_TXeJCeNLr;2Fy6ZynT9@>F7!I-05N3Q=kzqaiB|Z z5{=hXoP1Dso*rg2X7n0 z_oCf)6fNCm4U=jZT*qqd^Qauc*K${9u&)~U2T(gntaed8ZsR#5mo1*U0*COq@ zt^!ZiYOg*x68L#BoF@)=u}nc$6esSMn;R0olK!LK-TT5DH#17x}-k;B(fb5BYzpdF!Hls;m9}Bf=)T9SUjT+ z2ZBUiDQYtdufpbHYKPV79~bcJIpM+Gtx0$)+!2-(u`hDZqX@8MH)^u+OwC9-Z&5NQ z4;^Odq*kTXa4S+83S7KUwvtjfi9E{}dxWytxj;+RX!3#N+-$iE1@kYzrpvI<$xeVkA-D;N2!DVsBd*f4y8K=G3D0VBbBIr(YM7M|7MW zpcHTs(*b>I5#OEwRKEWQy+?7?K7<2__ZmX?szOk*7=6C0GCsZDrLTO-779Q2WopG} z`c-87bygA2e=XwkU->+c#J+NUTy<6w1R_{`{g=QonAcG5B~>8)qqD%q zF@2rY&xY+!*!*j89}3)yYZ+&)jOeQ;Lv$qM9DOE0bazfZIQESU9^;Z7r%^H!LB~8L zr5>*7C@?s72EI0h8V(d4(;QmFrbgmX4b6zEpI*GO{j+D`W07ygGM|H}l1&^X8J+V% z5r@ns1o?}+_r$ZvqJL4+s-2a(Rm{QJTJ&#GQYax#z~96RY&wM!D)IEx#7Vdbjf~4a z^~}}&^xDN&Sc_FBy;cQf5}lu_b9OFlBoxoLW2$o!tlozkL}LE_QFd0Ik_y`galV*R z_Tew3?1_uArQCZB1d~HI@kvPK&tShGl`rpk2~PYOwMqRYOyzt3&P`x6lz06GoYM+) z6MGN>UB_Pv)JBMwCD1o*Jpv_rb+iJtMn@3>JqUq1g&JysKB3FOBuGVh`mJ;B03<$* zl{E!9%GQv-lUzThOuJ*|GxK~*-QESVFlVf%VaxZ30M+leOlrHLL4sRJ6sp=CH z+b)JRZ8l=)r>ZG-xwtT7q3Qf;=DS?jOY@x(==C=Y*@9zdUj-M|!=_Wx>IedqW*`(! z;6yA3$b(I|gjvi;K^Np>ER-L-Kk%2eJeof#VtKT!p{N_eyHpG?OR#@-Ot>h)iu4;kjI{ z0MdV;kJYW7+7zNPKNJ4O`H1VmMy}j|TGYf&3=FD{-39v1@OlS&je$l73!6p5nI7S~ zCZ5DOdxgJtz^6Fi5+df<;ME8&apYGH_&^6-BEVN+)|~%^{^dYmJnKGGagBo@A>jZQ zLKPxNYmfhIpP>ji2(kiM^C~A$c@E$@9JDOoChox}I&?PkJ_eG=|3VekPSo0qwN1>u zMC%k)l5LteOm{|bT<4Q|(nF23a1r(n26PKPu^oBuy1_9`P+icQjck9L6-C}5=3qTv zxEZF5m~zfoBv_6h`oiIFx1orEAR11!qv5?7bxZpUkoBVXbpjbJA%v_8_YXC;vX!=i zQt8^QQkobmv`SaP$&e_*>u30V1&cw!C6sn5rIn%f?xix+Sgi{#gTUphHSnjU);}ji z47I`awOUg+K(J}bH=(UVzC+z}qAI2bE4iJ77*0>i-(n-yDW3#Cq05(e%9F5Y(dBQW zyx>(fq|k22HuNFJ@IN?0;UB~I{b31P#RzNf0j#-5i#n%)s9`#CGg=K7!6oS2;Sb(S z&C|li8JPom_E>HQz4g|q#I^sQDp5Q63 zX_q%eIRME}wHPFeLo!hf^)(5o&)17f2rQf}3q>g#%#n*Xj!L%&%Rv&Q>oj@u2zYe}&VDK5d= zPPE~jqbatCLh%EeVg*0N6ZN!=ztglri)bfie0PS*%1wLqvMIkFnOK}*Xy<}9LMm!l z>;hdx)1r^(vlaPkaDm<-Z*lx8tsVUoCUSzAH-%^u#$r(2f?DIhXhDd;>kc+c4Iv>` zu5s1H4lFGUuzQ{~u)HT3wG|~?I~kfZYi>~DBUb!u)dnsqH>rO=;H1H$yOc@4XoFXH zWeeLC%#S|>a?u_?coe5rBWSUk>#*A zTbgqO-URU+TFPwc2;5>MhBHCDd0;Mn#9aMJ^N-OdYBENIK3sX+>x$KdH1_gb@$);a zaX2$8!WFMMPmh~9u<_2Jx5y7CBZK*`q1T*DR7B!B-=GZ#npw7%j`1h1bKhrIFmXKs z?UPeEc`wn{Jn1X44Cb|mXo#d|frvkGea8m$L%AdP4IB=WILA(0Z>5tt!^E{|!{uy) zXX(9WmX7H7MxRG$Bia|ES^E=nG3XwC%+5NZ0-FH`^O>2!Az*x($t&LYu8bsPaIXM~(`0aeIA5ae8%HsN8*A9v8Qdh2 z#+#?<`64p7QW^^MeG5jOo4u4CaOtGq^cFvPf@F zj_2W1vp=8CYi|a(sxb3paGPfQe`j!8X6-%I+i<>Lok~Xs8rBuTS{Cmz&O>#sPInF0 zAKr0>`?GJKQ3Chi^JOJ)b3shzT3MrT@TqIkWE302l4<)g6h%+qR`%3jUbPdr`|$iC z0}FQomm}Yuz%9k#mAoZ~y9<;_7Pa20WYSQ^t(6s2mmQCDc`O(nhk=tpTsVW{J$eRF z9RsSBK@5)ncoe3a>{c+-WMn{ImDu&=x38d{1y&Cr+1i^h@PMK}Weg)X;7Zv2 zkGD<^@k88}kwd)MBg<)1cE5oNMcT$+inLM4mX#LUgJgnBq@Mxo5@|bX?X;LLhd386 zp2t3ePT8F%saYFFNr9^HmjdDJiqJI%c=PH7qI<^A<2~c**W4N z1QXH`^IbP)SL{qMpJawFgOJ^?+piVm{L84mNUhA4Nmv4TW<+G%%k=!7)QAJ((vwUN zylH$KM(S6p?Q8ZbgaDe}w*Yau3>Uq-9C}=;lHNNWdYh-(^a!BoWdH<3-0fUG(xst( zsCS~I=MZ}m6xx^qC~rX4)&=So5eZy`2*I)ML5*tP<<|Iy@8W7%Jnb?}-D1_E4ms#Q zi$yr--x#E_=wNj|Ngfdxl;sjCv+^@`=oU+%n0T;5x3}MLK)pgSZV8U9gchkjwooM} z4r4C3MeecOI#u!r{^&R!3DEZb&5_uek&bO|&~|KpJ&Ci!{g7JoAJ<(67{5bYzigT|9O*_gd;U9|FYf3SxNR!ePn8k|1n&v-l%Pwf7W%%V83I~$H@?=eHim7+3Y5VU62)1mBVuFtz1r+QoO8B}wXm9`MXT5cFx%BM zT_XWp5M;23b>gp*kAP}vFqnS;`u1z_vl@}wcpqhEdU*E>%|u2+&Wb znL{!@_N#&7Xa9*q<|B|P+3jw4gaM8w1>em2m_y+aQn>hNWCN0-;I(z|+ISnV0ZZbN zV*K$pAeLl&`rBL0*27|F8kk2_S>VdA44)e_D?uu z9wqzT7|?$9w?tuoje~c!VJ{n&{efT7h(vsy7l^|Ae^u?a|NSVK7s2)srZYxE_`Sgu z-Q&eZybA?#UX-YQ3&ZqXMNS0AKon>y|7aYe{+${+h0u6Agr;Nyens3_!1aarGx5xh z72>~-cWGF0_B33VRD@{ygAj$cTS>^PAU;I8mB&eZn@!ulwNe!cLwqU2i_X%Cib|Ey z8@I8eo$afgRfOVE9>wrcoM=-_deTSn%YddhKaQ#IC{KvC*^OsJ8GiwLy2bwNtcJ~fe8;C0)@+PQ*RqY+D*#~Mw?qF3k&=#YE z_re>>4%Ray&Va+cgS8p@F|Jb9tDoE8w-6jLU`&`hSUNj8%Yl~6^bfCS7q4qa()iFu z&lc9x4vHkJXBrgld37a%G}pC-b(4c2AxVYjIU&dv)`&1KO#%z5jQ#=N4c}N+(FotX z_ibTSs-$~y5A4IVTUt^LVmTXCIUOLyzoRUb&lTN_o)Av-pzDm{*ksvw}D z@BQ4k8So!AZr=LMy>T=6M{8%`JRA?hgwN~;;M45#li1Bf-gkD;+D`cfMqh9{`KN%t zJXa;nR*fJ;`8m9eUt21;_<{%(#8%WQD1kv^PFx74{0D(3sCu!dWG^V3%E2`rzNB38 zsO1yrEaW)n;$SJhilR`giniC#-{;|-wu8YiK|LAH_6k4n>@yMm0$cc(AB{*rcB-I- zZvo*88bj>x7Iu*A&BY1%z$G{k;~&>wePt=6rlDzXR~(4d6t}`M^dl89JuQlh=|w_; zZzn}kOt&fK5Au16>4xGsQtU+;TiX;L(iESMLa~iav6`P^4@2=9Qp8Jz@J$MvVr@;a zc@&DfzqDH2wXQY;yVb{IbgOs67?6G9J7)MMlQ|QxTyWC)`q4fPY0G85EH2x6A<%v} zdAyzDh|B}^r%r{M>{LAK)O#!F;r073G2o{xbW-sje&$QX=S~)95|}(bYAPP9%Q$_0 zIgX#0oH!X$=`{CH3^{E9XVIiX!{hYbIE)p&!|!@I{%>>u=HsT2s1Xi3mhV!gud@_6 z1KB#COZoIv33dk7s@G_m_GU%QZ}17Z+42(#+!f*!X}u&V4s~k$a&QiH{0dVt_6xqo zPcUl)`oXA6HDi5d;6qf{PZ119o97RAj||4$5#WGbImjC?40YuNBoP$At3B5 zb`PU5X2q2YP#8;18k#XJ*+!59wo)1jtQaSOTwNMmJ({|mo^7bnOtdCDl}z_MS>HR@_IWf{?}fA+WX= zn6P*DJHGW%=dm;@$K=CX<>@emE6+{2r%TiBwa(eL06qqk5?vcQT%eY!T@%nUZiz}- zK&H%zcSxqdmIM6v40Q3I3lxq}(~ZT$&oS6C$@bLPuw(m7uIh*~C(FyA%{q*G8EaZI zr7C$?V9D$5a)*ynQ~z+MVpGqNapI(6uYeR~rDE?RDiS=K@EB>$;P@m4PT4o%uRj%g zqe*jKYo$4_JZ+luD+G|8LL+gY6XTgV&rYEAsC9{SBX1p%j=-bY8Ae|^wjpFXlXUE0(4atR{G~wsglJhQ&&A%9 zXQ?;k`K~+V=@V$;x&P;MY%P$ZY?b*-*?4rPY-Qbp$-$*899wcLt21tGW%<*w2hMTQ zvCuKBtWK+kT!Z((IC1Ru8IGy+Fft&!#2HU~s=o_Epz-H^$plrPnCe-yl19K5c;bER6^fkH`3lJR9b&Lbs zCWh?!E%{C%Ih&0oOk@)_{TJDUl_)b!Sl$OT8i9tt3DctBjdk#{fahw$4|ugg$$I?p zH=!5F_?nR5km*SFj{vVzNM1h7d_hFMt!5Najvuv~aI`mQY+$0%*9%(!<9E5AJ9w*r z=W4>`;pT3BTs?BB>o#1t;V#JfoM2 zU`@kdu1ji33J}Qo0f)2ur6Ru-diZX}EupV=pqI+|uowP|nbH?)$6Hr<;IGFm`cIBJ zx59f05I@S3gpmjDhkp)4N)`Ro{XM7#AvxbZt1H7&>(sqfI*Fy$h6~|xH>^?(VmEwu z#GJ&)Qd;se*z7UWs_N_CQX24r6UbLd$I?bO z&^}&u7MLLNkw6?X9O~=L1QB~7&;s?lDl$cU?Ye%mRw~~PKI$EhlP~M-;MSX?QcG?HLU_+XWX#N9$t+|XoB5Ku#c0Ct0pymo~RD8@2;;EHTg;MtMav? zW?OLmfBRa|pP=T9d7-j3ly5{1kQ4w-aAMgqV=@L?s*@y9Pqaug!hJ48BoW$CpR zWV+*zpG@T_Wd7Z2H|fA_o+drTCOv{b3@UyBSk&NW&F?Tc2{Ysv`eNJ?{*$uc-}uu5 zpNCr=mQJ_B)(3&h0Lr|NXg~Ua!H4^?w;MHxyo$9b8ojDYl}RrX&lO`VM9hFfms;X|n?(b<9DGDZoIWa$^q!D!cY@2DRqm z)~+lpUeLq4P~gU=WiD>dbm}x5jkF}P=HjkfWiC$8(6tDiw@B{nxj2cq{ebI?OG&@> z#ng_mDA%bxIBMKWFI<;&g=i)wMn;F(2!_YYK0+(4#KK^v&(AKd%47g5<%#R`KJv8> zM%zG7pi=Qq;_W@tIf>&{imPz}f~;J?iyjG9`!mTQDCE3;3f4?_Z&#dVyZ@JKBp0#B82vYhs5U%_KB(Mc@UWs&GQ*Oi-K{!?C3t6=6hd^42 zp&TUgHLguopX-g)ul_m{Ddx?!q`0(qgcP%X*HTPUC3rYO9&klZH{4;4%(gkCKbZ7X zH%Y;mP2f0x^&Ot-*8b{qj=Qmo5p7Ez*dqSVF?V&LzxsPm^%g(z#h&V=e(WVlv|+1Z zb@2)^H}6hJldGYi0NYtwOWTfVzv|c*CK_77)~HV_$Obb-SMTX-%8C6mDW^~>PhZal z3-to7`H0RVLohz@DjC9l(@W@41oZ&wu`p#HgY$B5K81gXRwi!0TkJUrDQeVILk+|H z*g`Bz8WK7*g=L^w6Ng%4WT-4WRe>gw7#~W;u@clTVmh#)dqWrP zupZRC*ib$Tlud_WyGx=Hakklo85fj}Fz?@Oq~EJ;eRw9LpXn$(B>2NgY9pUo>JXQ{ zso+*Nd&51}dgj$X#g&^+gVw`1hI72M8$Zoi72q&(?+7{FJp+zA}a{ z0lDT*8FHdJ94nBSoqsTxCN{%GNmUF%yr0Mr%={u&O$G@B1aYQ_Y4UVZ#dcH?dPM3D z1bYWc9+B}+WiY>8q*4GSS@13vE)weMrbu$F47qIwf_=GhM{w$zWVWeV4gzU|qB@Bj zyMd#QDN?Dg2vA#mMSxnvv4Fh zl8OsX`~w=ZR6fMvLc5_X{hT891SRf{A|Cx#3wFtvWD{wAT2oh|Rx~x-<}u;flO(3Q zwT8xqZbX&T4PNe!7yC-mS?$9{0*SL1`loSxq{yUcsmSh;FZ7OsmyDW+QkT}*f;UlA zqF+=WcuLN7dc9`)Y|FcSe!I_W-t>$1n$3R2Ox~CdsbPvIo`|LMD>t6F#OAQtaDXx_ z|M|<$n#UJA#WQOquT_U%r5a77f)0v){_N}bE!o>gQqD4z9|L7fTEG z8u+MMIqhK+>QSfGb_Y`1l(n~+T38pyaRsSqjjN%}9XG;mwNrDsU#PkUNr2-3j45o- zp!x_2!~1d9EjK3_KiIm>xU8f%k{+BdI1v{E1~@5FEy#q!MT^C}u#9Ti_O{1^_Xv*zPM74QzN4}hSXtyaN-U}Flh7( zB5MD_nTxa*cxerNp7j{$Y-?~rQ$#Az4`s>xJ67cY7#e0SReTiM28~JPNex1szuBi$ zFO-^Q_Z8OG*fdnl_y<%;CGc_)R`oPN08&TycZi*nw6Oy<0~qus8sKL5tB3{Q4I0ag4zf~@ z8Z0iug1|wfG45tY8lp*yc4rOM-YX|`C_`H{F+?n@3+7})T)hTtz-UfhE?Wo>q3wVqJ0C@AyvB0Nyu@Hp=6ity$bzOs8wvfW-awFagKE%`Uxp8)@yv=Z ze9W3@Ig_D1e2%cgPufXcvK`ViAlcboM|gz3rd&sOxy@nMZ4pbF@3&|kE4Go8j)M`R z{*9MAmhT8RzGKN={aYBj_gym28Or@Z87`_J9EU6>B>utb$%Hs*^o%!NPt#u^*9ULs z0_PJtC}#2z*Vn{B7yhHGY=~=loy7@+890r>-mpB1SQ+2EF!3V>A{PL{`ThaO)68;z zP!%50U5!tNw-S0o;*h~26FlIyn7{l$l+eJK;XQrg@%}hg6fZ+4H~|l+&>d=V43ahE zv+$}V%SVV|znJFY*A(Q2G%>D?)pTux3Bjn9t%K>t1T#;;7<^E-7&otU z|1^*l1d)S1%U4F7jAXP&d@`aXFp(xApr=D(4;%>Izu(Y1sD`08B(M-DY|#z9!39d; z?*s%D^wL9&8%XeOd=FIgXb5V_np>0*4as+Y;3Osf%^2#_V0N;OT*Msy=|R(|-VW50 za^p%1L6gpkoI4EEiY<9c!;2GZWD2EwsO^$#QR|Xfy#tD+A6sEsFzc^dV`)hZVJ?Z8 z#}OYthXRb&0v;0ajn?1awk*C0fIN%6(D!;IJq^3p`(MT0(R$0)Ga0SpYz{Bq5;0mY zH#~yifiYz=4EwPP)2oVCyK$v#l_$XK>+%e5`7c)aKq;5CGW1G1nT2OzVZ?-y8g!W~ z*GWa)Z?1u`MH8Aq5b8C)03@h*|yappDml?hC; z{Wpm$?W4-2W1YnJseDJ8%Z6Z-1e+G?ZNw{!pRGUaLY?A_>upVX8PGrGCw2W^tzb*S z_a73AY&rKnIpN&&S?{+_Ida`6oWF;}`YTj@>`X%=>00ZA^DH>eh!f7Sy7$>hjvgk7 z9;QayV6`k7(sFH_9mmBP!c*C-I9$WJH_*XY-o6n$KngrznkTt#MNH<-i zn;jt?%X44(n9|)#=|UYx-GEUS-|>0;1hWfHpc9>QOM`iCY15@Rx3owqcBr#{e&BIFkYV-84&Ko0B32 z@PO~M!g_4x01lHM4^Ey7NH{^>VkFJO5nvuv<9^)V_{E5_UKq}xxUch)Zz2TqxZ{qE z@asCFalRKtoQLz%NOs_rE0xe@o=Os_SOT`&L8ItD8UY8MHk_#5W2BYyeMnB9m-5#RbpAe zaVIz@(3vg5lcN%5XlYo6Q^C+#??9j4cC*uXz+pT<l#R=l@1{pREs%(u!gu3Mq8Tg!(qQNvJOcR086OR6F zIKlO|ybU=A7lhkms!vv}KZ=7XNbJQjEHB%vlgG+5qS!@lrACAJU3bz;?i32d#Uquw z7LPF+u`OXUKW``;Kxi=D>!Rn!x$RCXdP9mHIz3Dw50weC>t6QzX?exaDo^c( zFVx>s7GX^r1_ewj^t1?7aBi;sq1{M)d)ZOn+DeVMIb=0Fv?31a0k!)BKnsuqX~+YC zZpT50;n-XN1Sl&F%1RNweMI%DIo^XD%_L}lfNxFFu0=ae1Jjf+=ad0sOe>Wy-wC$m z+#n+sN$VMSSt{-bfV-D)2d8PhdBb+Je1xI#TT?QH+}uk=_Mf-z&i)iP(xx%xD*ELt80GlZJj z&ugbHZ;HF*=2-K1%6;vlKc1pJ{n@~WcTT=G($lxV28@0@q3UZ`~&tO>b+K<=#e?PIZJ>K(5_&K0t@%}W6R`1MiJsZmGW=xhf z>IM|?@sB#$?To$=bu+;7%&#eZtO?n9a)jNmA1c&a7v(t*2Q78J&yl$VCkYr8=CY8*Ags*HSD(4htHCsg)*Ky!6%wU6yh z%|!0nGmrKeQJGoSPpIr{kKieLEB^YQP#K23IX*e?IDh%%z(cqw`^ka8hkPg{8BeI- zbwNiUQKwK6-@hLDgvtkBTa&8u((zYNW{!-!*aF6Fo=|z~x60+dFz6LLNk}>K_)9sn za8b6L%Rccu;ZQKo^Mu1ks4e3OmD(Oz;9eL%vZHjUVbmulRKBdHMOw{YinI(DWsCIY z9FIsFc#o?lCfi6X@>nV`CcU{*&f-}qt;fI{|S|33K#j( z@eU}C_R{f7?DA0HlB>jlr=`d1&kd&9etz3JhHS(8>Xhew-^k>oAGF+#nNEF%ddvfj zuH0)K$35EG1pRi@{^MQl0RI4N5V11$dxzs4S>iq7-srTnNX2j4G6K1a~T{^s0xZ90{5Dc+Fx2`(=GiNZ-zBwpBdKpEoZb{Du& zN6ZQj$LimHNzyDVq2-B*2W2fS`E@H1E?a7N7AiS!@L3X2gzD6H6OEB3^gx={tvar? zDAH9Q8_TnkRS5N%zE7VQiJ%_Bw9S)Qd+rxO*Fn(YVCJ8gbiKf$hs!%StqEq<`p5$$ zzJwjYRmU7G`H=R#p$8Lb`}WfE>1IBWEi5gz0Yz3=oC7VUR1E_j5H?EAdUzulB1D{` z&!I?r4I&XXsZJWPMK{;5{~s%yO5xiTQJraMJ9?pGb z6kYiKXDM0_Ok#JZ*-L3I4%cpXQyQ%)ne_f?R8o|tcKM0jfIW!*?U)gCH&wcU@5`1CUf&$O{w#x^AO4@vm*HYEOLiyiOReetyqH!F$-jdyse!VZizE5~JX?bnu!H@8u|RR*r)A?+Uwp z2kHZ_5OP{i^F%&{yB5&?CwUe)6y}ja0bAOV!^e4Z-oz+)&pCJ_f#-UV_%To@c?f@a zp2+HZvC2g8J(dmqgwyeMHRF3vHT}&JLS%;N6=E?#FBKrTGyVqi$KfwNcAteGPC?pj zb;?W7pS`oVJniNpW5(;#?nFI@K`BDdrlcYp7n~YgzKUj8s+s~+;skeOMB&n3Ff$-? zlInpPd>aDBCXPhDhok6liD~dt@qwX@FmjQC3FhB+obI_xBkkjuOVhrqKFSLkp*i8! z_gZ=V+RMdvHSZGXyVhn|zN;?+4bOJ;@x|JA?Ow*;^88Y!P3X6eH6f_a@=Ko@Qm=s& zCJai7+Nn6wB%P|-JVWv_s!5b@}>)P-$IMdql#9?C6@XvVQ8zT9v%OCKRx3}qcWBJ;gJ@owehc=TIO5*5b@UI)b z25c%(y4;lF@*h*GnpBchHF>EE^fl?L8v2@TR2B3!+ocXw#D{!ZgLF8>>Hh-V|D7WH z|LhE_|BoZ!_V)im)Bj6|-SOw{@%Z-be2`gW`h4W)N4@XXvj3g(H8ouCZ>X9)n$Shw7a#i1XT4F;QMu3 zcYbkN8IN!#S$=w$rVLc30!I2$3unaAJvyk8N4(jjIXeXDq}Zu54a43s-JaD&p%wF} zs1g5DAD$E@o-p$P!_dWTDRB1c zE>Lw#L@$x&N_{L7gW&s4KTEmI`k7L!4q*k0vSxgqj=eR!nX!AMk&M>W)Pv3rH5J+! z7h%^~^z&lqXRWhaP_Kr3*CKW%a*cY!LzX_i&&&(wE(>}36iDWnW&4t#bhTGfRdfaD38p&xQpDSV+8c{>n;=ereSfpBN+)N#GuE#2 z1tctgWgO2g8^@2c>ny1u-`w`H0T2%u^+y)F)!KDV(8Y|GN8Uod;Tk-V;H3oj?mDl< zaT?3VvwpZdi^KmNK6`hayGdo9&)5u2{Qur{9^UXkx%D0Lu7g#3V6yy6DX815LMVP} zM-^+=nXk-I8<8Zt&cB~?l3nK?Q)E=2A>Li*M>;s&pe7kq(YwxfdUEVt=bn;`QOkMV z(8;;Sz3ZF~eI)KwPB<=5*>%3u%1lRdL_=6R$!f}6ar%}>==Ahoa8(6p?+-AoE^DJf z7OWIRE|GAB*_}nP`orml%ai>xo505N2O8iva@V;(uyUs|gMYbGc^#{%@N&OB4e6`t zk6q^-{=#qMB?G(8TcdZK+q@CICU1;1@rZ*{}riEsAWTs-)i zaKLPJkHO&KL7X!QBwO8^kq@qP^xIqAztxW1>fV2)YinxyN02hJbG9C!Q2(hhXBSBg z`Tl7wvr9Usizn_7!^5TK#1!g0A9g}8kU=yd-v$=QUny_)_Hus~zZu0NW}6#v%E+2+ zZpn0Jn;v*JL^jeyX2v8^QbWF{lZD7E*7DoXNFv4jdJ>=0;--lv@*WnzhKfdNCddga zz8u9Ph+KwKH5QR8;7_)urI+w5yRftZVMUBhAUjP|@I&n!rn^1p`=|i zffWWIEDaWtT5gI~x0{yK?V$e9IzqU0m^A+O=}p z?xw{YowB&q30w4VeC|zN`5FM(YO-yr(6uv9yG|s zFx%m1N5sLnEHBxz+AKh^Py#Pc`)W>PyJV?(KLNy-Qy3edCjii=JkQrL-d}i66qM9+ zksE4q+ZdFbCJ=6}uzqykzISV2($BuSs0YP!!cc1pe(NQQr@MeCfLV{T*EVR0-8G;_ z943$>@tjuOphDDRz$}}#nb->O=F2j2H1aL8&0SbBZ?+20L2R$Lu=pCW-^8t{SpjFp)cW zEF-$o8UmUlrdW=uVhuZNZXmSBY~g(em#an~!5nL-FD(R?E6IZhMU~!mS%jk2&N)!{ zbHA!-6KhryGSI%A%__>&(9Ry+K_u&~!MIYx(B#Mc64!VD0V6D5w}$`RvD>9x!=>K80ZeNUe3L)e%R00CTSBGWwFOUU0o`P>>fq48t7 z#FJWx;bHB+$&w3HDXPAQ-gRS2(3q^1wqQ!MF*P8je!vuASmeMHU>O#--YUBFp)speTrlg zPa*fCntns|!pXgPY`-_2BHb{DQ_45*d&3`~Y5^~CLM(40A<_{~!OlQD#XL7c4k7GO zx)J6@AY?HMi{5KY?`XwS)CTSDc#82^+7H$G#Tbi>{O85QmQ_e?0&rnp{GSsJai0LV znu=yhq``x0I4b4yPV*7+SovP$^>i_&wclV2k|nz68?^g;J0}R*@RaP zeskzCKaCo^880RM6&6hJqf1Kj)2inDSf%5-iFE>7$5ziztA@wwIVDv)uA6k!iU?wv z@ER1rj@3y4q#mAzg=;3)< ziiTnUgnSQGbHbLozDNGk5q|qw)OZs8fEMVJo%D|**_uh{zErgi$kfL04C-EnXBa(7 zEWg6^S7)r$)Bhc^5OQfEYX+4mY0ujNrDxDvJ4H-fb_9yRcEF&r)i)J{Cz}fV975!X z_2dpvNhh$sU^;(K5}zWKe1TzLSHiYMsPwmxPip@{d zZj?RT<(vZS_>>8Z{aUvVyiC^p-W{Ve%A>Rp9R^91>p7dn0+_4;WYAY50GEix-9NX3 zEVIE(+`~}$p#R`5OTxavsyAZbpF2lOSUDuk%$w4}T{!S(weU_1 zzo-@#Lt|Jiye1aF0u3N7ynq1G!Vdr0Eu1I-riEtmkp9g1pRLxG^g5Lm?zJb6GA!02 zTG;Lh-NJ^_!pL*X{(|pxAd!wQsvBp;7rlz)a5any?mMAx_|IiiqBq1oSsbA3S(aXj zcJ!G2bG~6y8^09F;M`B>_*vBlEiwoFk0rZ8|E$E7Xfh7AQ|Pph-U>b~&+Zz7fDM!M zZLL^W9ESH`18z>r(O3O5jx;|VDiC4nDH4N`y%vs!gaQdP^#4w0|HknQM`rtQU&~7c zY@*ms3_()$o01audW%i&8A?)b=1QwAV@vy#tPm+#`>4x7m#eUQ2_?(qvxM%Jn0|E( z1wOM1_5>GvhhN)R&X=^nHZpD!gq@$C{J>(=erPG{c}h=2G(LfdKUbCLA~Dw6zD^4k z-$6K2@}+$YrBcWD@=@B%?sUK5#U={ zUG7F)^US@KeUX4OUSZK1SdRqkEEoK7JOVeV> zSbC5vQ1OJ^xm3?&?jm#}XaU4|1kyB;|K%bztcIqzTe5&}!~J)BINbkrUGN*pcwUZod?|H9({p~D+-iE-4|c3yZK>K>bWh{0?-#(c87 z0BLI}Ipy_2e>TGT@ zq4QVDo4qB~fo0dBY=l#$Sla<~<*3r`&M;kt=kPip=fdZnLar&~avt}0ZyNpMStj}M zO6Zi>&}ZTMWzGsLT>dv|OnTMPzirb|V~0aXZBbvxEe!YH>f3oP{G0Uqh1a45MSVG( zO6>i@k^NYmus&=UzU#AgW0MTpP!PPyw? z?%5dPb5V@?>Nw^6DCZi0GbupR@MHD}68~-%aqZ4I?(KxUpP{wPEZqS!j`e+(H+Nx1 z689A(Ljs)Ez9d^LPRvsHH54_q{O?d?Ei2B`^QgpM$qHY3u?8*bTu9TC?bJXFg zgS%phvPyGTOnn<}rLkp&YF&xe=|yoC*1eZ_7Q}uy;{r>6t%eXJYc*_rq66zhALCup zBhLMNWFN(ukfY6RJEp2+x;DC(%tS9Xq3mqLb^&I5vs_V=XHl{%i=w^XuHlzyQHK3s zQ%5({0oEjKftX*7<%PQTZn@Du8QWNTiS_~pM$rYN;-Hs`qoGrwBL7xv0rlCGC@Q|r z(=9Cyay?{)@UMXTK!?tx9T&5JQDq=94ncD|{c=zGCA>ugy&4qGpNlW4#)+W^DkOFKlJ^9;y%}9&F zeu#90ZP##!UoMnOJe3ROaI;NZaRx+5i_aI*wbq4lx8y^Z=r}BPeKLE6?tL#GGK3HP zqxit|;M~Dvz!KrPeWBc%tI%j`9R)FneFU!REtWiT#S*dHP0Q8tcsWOhv1RYLIz}&L z3Uygg)G<9c_dZg0hHQ^?+4nniW=fa+_!D)ZTrw||oA#y8TquWo0tkGmZ#n)5_aeWP z-5ElwYGd?k<$jmt4-i$LvSyshfIR(XivhJJMKPdzj%L7R7?=pzVSN&-`476RD57VN zf=Sp|Cyegu2~Y@8o%@AA|66bH~@x3M78d&!%@du^F9N+;8AsM&6^8wZ=~v5 z0-QkRPGBbKWYp>n7_vZ8LWiu(oL1<>G!)>{QD)2Or$1tE@poi#aV1%xw|YR=KTI_y zi)>M_N8u5}#2RiSE9>WU=&$ynikb`TnA{;e8|3gDUeVQfD4tB(U>6XrRW)lH4sOaOc7Nqlo4m>^z4heM`-bH|?PkB!7Wg$4R+ z!~+DC0e9My&T|YMeinySRKHQS&;`4}A$4d@>=qlCZG_nj7$Y`NhSPqNHz|G5Gx97@ z=j&$~mjxdaYcYij_m37N*QAiG(i+6RO3!tUfLD<|Lw9nhfZ7v=+F+;?ITrWAgVrg6 zMPVpQTvQWzia_hzt56&|@@5sSZ%5SK7_1P{B6#7PK0wG5uoeDcj0Q7tRzjZ;Q2dqkJ<*-; zA*0Q&FB7PRLgz~%j2xH0kLnIZCt?LDh|hsmlW<1rI2Wj#7&wYSE}8Upm|?CxAgcE; z_$ci;_%Nyi4K{IV*BNAkhLwWIB@%kd&t_4c7srW#=Kh%nFm(KZz4(nhG4KQgo>Ar@ z{$-T;G>(7@PYisC+-{)>I5B_=f$^C&ykz0Tz=7x!168syD@8ac4@|P162E>AK{h7_ z4ns3op=W7WcgMOEt|{pQo%Q*bbk@N`#dNMlt}8tM4!%0!`L9S>F^5|ncEx_T+Nwr) zXgTSL0o;x#B;k0ACdrS7ib;AA{pTX77hfHc9%Jv`8T-V**H4Ii(*imvLAPS>kvxLi zOA~~Z<4FkW=OrlQC8*m;2~+kbPt{r9cYf8BWT zcHLB(_xYVScMJZgmOL)^)P;OYe-cg4TjwsJhMr<;=wXk_#;OU$-wR2F+r$-$-yQid zJKxx~-*P8i`=jXH6*2X$q$0k)is;?dRHSX%$b{%t3Y?_B%Mxd13DF?Fo&}(7HBzIM zH?sJl*3@=-&1y91ABY05wCdm3)U=dg7|+J%_1q6aa zR68vh69Ke3MNsdW~H|FK{c1KR0+kNhJN=FEWt3__KDh`-p2Fr`@=O)-1Sf-d& z1j9BsCE@k3eV^Px>@TjA&jt-crI=<2W!)!t6X{^QCbuR%_sPYVHz2TFBaY^AwZ&Sj z`{Zh$XaKU@_sQLQyWM0Rupg@T!7lc!IghaSw8(CwMJYSJ%L?s~YEDz&*i3iH*P}|( z&Xkg4oRTJzKEqw|L6p=~^FqFxYn=_Lh>WPejDu{2J;>rF$ikl?_c}g#vL03azq3cx zft~11sm^NKnNbwdrWOh}7uao+KinoYE||>&Yu?7zN#9lvV*3w z>ZlBMLQf1MgWQE@gd0zOOgvlzk?6I94TsXq(E?$J94YV@422aJe(ezLn~Ea3h9OsP zT_}56zn&a@{ zX3!;n5Sw?*O>8{!)F)%`9pXo0l)Kw0cNfd8VmVRX&Rts9vRs7qeuY!6CCYJ&Pj-mg zp?vrd0)HZroEROAXl^H(Tk+E^^fG5z+&Q29dgNB;(ikY8bWqL# z%5W35=TeGShAmzX0tS1q!NDj z0s#=0;{E^Xni_kngL)&xhUTaA+y}h$cms-IEZn{oJHI^3$`fb2)z8*0464#9i1U^c*cA zweMz`)58s+<7lM9#@kb|O}?8p`A=$;-#2AWlF_@Vd0mcb{Il*z zwR=jIzV_N{Ja841DNm{U#V+LZr)S~2F^sgkyu>>T7X$JXHn3AHTVPGUs9E@#EE!xX z=U$@fG7+(-xQ^-r)U7hF;&oJce5QSMS|%pwVBSW&VrJzZP2DC+G!Bc$6@TxgF6or0 z`?G^Z-GjGBQTN~7n!2AykR|h2spGtb#W@@EI#kjMUJJA+nYQ#X_7=jsZd9n5>Drl*BbBaS3;Mf)`4q!z#1Do@;M$_s$_v#63S;b9eeZ4tJAX z#3kY?a5b|BIVar?Yo5e0Srb>V6~xINc&eAU3r~r-({17oM{};KA?{ZQsMW1qT*M`i zxC3dC#4%YD_eW!kxCvh3W}q)BA2lPdv^aOp+9=Kq8>Tte%SBvI7jY99+MAIcNgR_k zaW}&&s!v$=M=@7S%0Bc(<-~p6&LZyB;wa)a-ld6K0ogM>=U?tC#>{U?-4cwKU@7in zwMPsW>IeW80Clb>{h*y*zReAv3}>~5--~o0AfP(_KY3=R`W?>*S)~Fg_vik57le4= z6=N)WS|!~<%UOIlYj^(wBlPxBjw$`t&1c0GU)Iur{&Q#qbSoEhfY8gxNfT}GfeX5X zxU0FKZzc3{7xcVH=&v4dD7l2tU(Lov9R_z+B=lkz^zpuce#?csQzZ1mF6d7IZMq1X zF&s%;1FgW?oQr;H-QV!n(r}HZN>gcn(%K?C+>J_g26PCY zbX~4b>W9X+1+gMt>s69qf>Tx>Yv@9J*e}R_2Q4N!`jTQk;nF-d%3p957RmBms^ZV9 zk2CYjw^Rfn-=7k5>HUn;m#wW~@W35<7}#6Q>xb$=uoQzq9~o?9pOTs`7+o{KhEE~1 zm9DApwQFk$QI1$s_cisUpuVnaiXZ^aL}k<$_HxL6Fer;7WopWqjCNqdkT9(yPb6VWsXdftJAo>VcR@gBH?E zjnuG>Z)Jfj8|i&Snh&HAY@6A{VOv3>!?tO7cG$K7`bZz;c^Ior9ICJ+LJ0fiD-I2w z@QcX7jU;LlGHpjWBXs8fLjSmpgi8z_LlGH&7Qj}ma;d_ZkR;;eNgf>EaVjQHRsLH% z%;TSRoj_SM=}7@+eMTaidr&=~hP}kGviuBuZw~cgkD!B#9+1LD!S^q5U#dpMjVo9C zzqA`S*!Jq1&?k!=5wf3PJ5b09QjbD^^n%0`#|^Ur2sS_snU-mPMR#ajI0PDf2#0_l z1zh)u+kCTFb`MBE6Oz2F!KP|Fnjnr9H5`>Ql-i<*t*^3OU7<_L76)LH!%v(5Z7oP! z25FPPq82XNB;i$R;Yuf$rY$XXeg`hziI`jt57Y{M=WW(xwu2T1BbnE$HMiT$Koey& zjsF7jr4Q@xs|yjWwD#97wQ7Hx^RV~i`vg;aCTpi%Qv8Ecdy1!ak;x-l?b`1@rP^EB zwVxhc`>_GK?LQ7?Gb=P4j>*I`fqGx9!$`zh8VVm%2mgRC3e%9bRy%%1MPa3nLO_I0 zzrd5e5wna=ui;5AvD5#+)YM&1FT5VG;3H}^$B45g7p(MJM75v8ga0^;9a2c zL_+fiRaZYERl*+h=oC@3N^C%$0Vn-5+ujmzFo-*eErdog9?fWQvx;AY9K;oa=YztV;I;SGu+nZbUR5kSgCG8-Xi|VOc zbxl)IQxPn0+|*F+S(5dKWPJ+u;<9>>rE1oYbdspz@N6mq))Lgme=fU_ zpMEIlhTEWI40jF28c`|B^o&{#*ESA46H67@`-Cds8E5S4H10-4w2E0EgPqQ4{zp({ zW>J&FE|HDg>Z3XIIRWdv&-k1pzU=qCDCABNwLp+qsM&$shun*RMA^%f4B7WG6|4JD zfZNoJS{{GCZ1|Fg*kAWO^&|G#`3)E*IF*qq{i)zlqc|nwmYpUwV*~UNfGWbRY;4&H zn3y=8wpUlbd=lAqiULXh1UW)_MHbA*I3?OKanfRA^k9LD(?>3HMW)6JmNM1oPid{W zt8Kg&kZY9p_c-kE=hX86NW&TarXG5LW~jpw))6fIXS=^gDZ|25byMB)KiDk0HvlEJ zn%es@8)dG0dhH(p;`D${5ieGIP~j~{R=nvhm3uf6L_MbSRmTcy9qlgPR@ds1G+EZD zXGhY~3Hg?+bw_O0*B`G~Xd7I&K!3r$Dt?z?=2ipAAjSLkVPA}*Egkax{k`m+$eXpw z2~40R{lrGVc^4oV@f?eG=p`|r49;o;-xQ7SW#WVNLJU>>fWv>o`mk#4PkGcWQ0Zp@8{D2cNh%ly zr2n5$n*R^Bs%@6)!x(5VDKWvsQ~~p!HGH9 z@evLpf5Ed@YpZ&?W-U5J2yCP5vvK(i;#8tVDHFuNG;M;p!(pQSxtC3W+S+QZ#a;S@ zK{oRU#5Z)f2v3b$OzH=G7qDALxkRkZv6OX1PEss2BgNlLe3zm zKbb|f&G1z9+-|)K>F}6lA;`)Fgy>4yBWjP*!fG0aHtqPtaw98)vlu2hlF3aZbs<`0 zUzE$;3(N$Fh7}`E#UnEmAJ{Z5#gz)$WS3*#2vsruB;MNv5=EOROf%TeJ* zom}c}dRqn2f$mdA%Esy#-V;k zW>*+5n*#FjS!aIL8C$7wq15<5Np!62S2w{ni`Z>nhcvS%So}ZQmil(>kM6M;gbB2Q zSlLU^>7?-j{w0lxc&M1he2S0kzow+0=AYFSd~*e+PC{-4w`*VJq2;8ZsY49g`dMu2 zbyBuvVd%L?x|^>~tZWm9q^M6Qzm|nr{1m?FJQq_Rd6dt;gcWhdS(v9cH@o{O%BA=w_k%xT5DPcl_6ce;#Dsz_^eUO{A`Bzk*iV75ZK zwOR{5kB}AvhPtGrm>&NQ*Sg<5=gJh2UTP`&Zvi6ON9!hm3^m;GPO~`m+@fg3q=HD) zw1*$XGEhB?_lT;gpfTnr19SKetgQ9nsVTNOkk&_*F|HXy{dE^6GV7w%@o;y-Tqt}C z?wF;AQC>nf&c?DzyK7F5F8`Lh{FSZOG) zzKN}D*vboQ7NaOGq3H!jQ7p_e1T*T03;%os#LM3Hr8egz$H!I1kLa4Q^E0ZeJtZ>L&_8K%CZO9m(R_rQ zs1<;L;kr?6dQPtZ!bcI)g7WTee;s)tx zG6?IUp3&1)9i*AA^e+R8f@Ce6wj<4y`(`Q1tpsbG+E>!y5`kq& z3@mdTERPY(4HVpna-(9D8|;)Dz;dsk9BlUf>?}lE8Jk_)@&S1Z`Tp3VqpfJO_mUuA zZ?x6X4(#B-LT%x%Cp4n1G$!qf4=iEX+9(^bVmRwev6jUIuT#aboKMGd_(4SI*o-M$ zMAz(PWUmvmS9pCidmlxbVef?3XhmEbZ^G^9cn){KkAw817)U$CKzfmbw5b>AKq!>( zP1Gt8wEfj1nzmg?Gqip8s)x2IXlr-^!!9GxEQ^6=zJq42K_l^mA3?K*LsZWZNbZh- zq_2Y{!%NHCY|=9P81HNhhvIv#Sx;ZVPxXF5ieVTQ64QnJxSh0>=ePZTE%N+3D2T;)9=? z9xi94;@i+kV<6dFTAqA2bZK|XbND=K^E$?FzgBzNu1n)|IFGGBD_7X=uU!bTN3AXA zv8l*eV&|-U$D6az&Upqojw@}xo&E%HVc|iq7@f@pG{$sYssnrj2D_U07)C|ted1H2 z^fPg&x`2VR+8i!7fd=}Jxj3({0zNo$&0Z;0Di=ZG)BU3xR1DwtVXdkC@3=SL+%1+O zMf`=oKnrqZgSw@cyA7eKgM)9IvOmHMz$@OZ#g75e8&qx8`G5>2?t96Z2^{O^#BHuw z9Oal3Vg2j?2%{=A^aCoxT@4{S?7Ddr8KXaQnu2ETl;`by0PX9Qe8!!!ak&BU_d?5r6nkZKx|B3T3iZX5FuYB+9)a!@PSJ&r(I{ z3G5{2G(PiN1a<8ZwV&|tRhp!sAV~-NjY1=3^HH>?>TpVRJYd)HdU{kH^-LZArSiU% zJT^?eyS(%|P7DwDd=N9Z`{x)2fEUkNk8oJ$;u)ec1Aj1>N1>zjVD7{CGdq3ZHY>e7 z)7Pv9r<@%Jz!43~r_)yhDFL6aI`>R3#$IzM&in^JBE&)cZ{J`o#VpN3_#J2uo&|{F zE%x+t&Nb`>-xZ%kZ-L!*mc{zp(;{Rcu8U^8f=uWGnn%2hUn@dlrZ96&4+x7mgcE1i z@M-rb#y{Ix*O5!P3$0|^Ih==;ij7v;{_VY)16)kkk@9~JZhR|hO0+YgxEeW#1%AwBe`f3W$&d<)-COPWEA4A@8y;KwRR z1lB=AfcZ)`HHecCFqjGW?1i8-Rl>X|speZQBz6!A^1n|IFM5KE?L*{Pg9M*&$m!3ocUCp$2n0!-LOSE^o>sl zeIsl91^>Xd?7C)sq)^UACh(?;P{NB6r(UfqVWphP&D|Grnv&Abtu;&fGf*mNCp6fa zbGg(iU@iRz@(alODWOR~Rowh;OIwYV{+DX>*lDA0c-HFWl|!c@4vWsT#9=;esfnB+Q=8x*0rPd$mg$fIfq8U){?p*DJ0cj*a0M2gpgSEQ8i+NGpg_{nCMY8K+0QRfB9>LU4AeK zoyXC`(TDF?^uaEgG#tz6poG-41bM|vC?E3asc)c445M{IKTH$wFI}++#?l=eHx-Vm zT!;eNmaql7e>cXKS_+j8T>K8C7OpdZOHZ8#knft-hEjo5I(4p!w}k%M&QVf#ReLRU z7eV;-rSmf3hz$g)lr>hB?-_`aY#Vz3j=;01hvS~7DXXuLY`PBvol@8?-+~gE7c-H} ze~{oT^VlPpHwuriAzpaEwg%M+C1G+TH2Eb{I# zIPH$Q-e7EfO2j>FBRUA36ftL%x6$p~3u!7|47$utX?mHQe?_Mtnl!Nbxc)Z0+T2P` z2#62KY~6l;0}MFxJhT~PUwp1_*}XGK`rbG1DW{3=JQ|md6?U%ArtGTrF3Dk^-figW zLn+5bF06lbEt=h`getbx;o-r+Y`VlkzJ{}bSa0?EYX{~dv1jPQ1SH~ZiT0WaxwP5P zC?FcO81lu8>ry+b>3W3XMZhEx|N*y5mXdhU>^7xbRnv^H14tP|9*bUfs zCxjt&HHQ%GTbrlIRMXg)KnXOSO;P@PQnx?1<(0S`>acpAvh4a2L0R4&(ujZiE@2(? z@|bKv#2O4U~-i1R|aBJyuR<;9aY^1=uh}>OojLuGHx| zb@kUsh3#TsMuI=k^=|p)SdrMDcE>;;ma!{Bj{oCk7rSL4LGODB@g91mFhAL9SrZ%Q zRR*U$sK*(Mw^8y#UHWa5mVL>Vbvj*I#%JBKH54y7^!S6fWeKO$vPD%a{?5R}5up(d zT%lX`RclCMPBAM*WI{6T7lYJL1ULZI-UHe>QT9HZ6QTDh0_qE-L3Yy{qXamDWJdzd zMDVHLKCny?q`7cUDdycXYGAhai1Bb7@(8h5&LHwdWZke z!Mn{P?4MNhwR#4U0>HNs`w=Pcd&{fEO?k9KoIkg2Uc^WaT&Cshe#(8Q%kU3H-jj*& z5sYMUCG$;7{KXJ#Z99`=4|VwtHV%xr4y5ED zMxIc@H%-X`XdeCP=^0*1=1?_Ns#Uh1usHGpmMsxuZ?vIg04Tv|p(;ZxV0!=-jRfzD zQ}4I5=fzT)FZJDMo=>uC_$()a=d}&~qnD!%J&AFJjqxk#2j6c+(HN6$j6EYUuDw+A zZZR;T@tkWQUsIG!Q*xFh)G$Qr2JvQ04Eg@USFgD#fH(C6w1PDr;9R}qms*s684G#y z?P&_r;8%O4h5pX9&EZ+5~yS+dY3v?^Y%#*Z*gA zPpfHB-LtiYZfp@m7qO>!F6JD50tWyTrH-7GKEt!8s?+@E4Y&uvPyLQ)vuZhV+%?tPI*{(7whgfR82>|e;;Afa1k^C46sd1OMktGa2 zzJi47>(CB4{76QDP`e>ONq+oK8v}YY##IGB5|9smyjmE+kCrH*{+f&}%zaqPqWNT# zwq?FYYN(zc03qF($fX%{$!47B-9HyM={HDFs{tedAX1LAn|fKweFFfLGxMEY?rl?U ziYd2}<+Oml5C3KnCZ@RJvq7;-lif^(SgHPa zG{)Z?`yt<12wI8M(zn|*ZXNVeUP|RwX^$k^H4HH|fKk>u^7)H2|E8l3Bqx)9*N}gCrwji!Tl|9u zY8#%_PDpUkIV9#ruXwaOC1REwvDmoiktjCSF~l6BnBXH5ICM~y$g0G}HAlf8h!dK- zkP3&ZNgesL*27#xIH~=0>Jq}zW2!OS1Psoy;K;Yu5bLDVQ|V5{(6iHI;29;UGPqt5xjOJMvizN+9FGf!B__4LWB)?3;8aGHvnG- zCQMNK3qrorC7#v0X*k)g{4_IoY(4l*6U~CP7ovIaLgL!62RvGC9+gR@x}u3)!IqSlgfGyo z-9q6C`L?g%H3fMcY+?4Y?N%FA7lX=X+d_kA1`rjEA={EhdDwQlh*V|LdF(HX*rg9e z5!>0+(TsIqlPs=yzPFC!!q3X;c*d^d+~_*CC259~Kmv>IW*xh|bv$`Wb#%7t$Qd8i zjPXjw2AYqCsrOY;PT(OOIE^s~o$ILD6+A zYpi)ShvE!%kC{VsB0dQ-6~>3UZ#-rceR6i_-!S-HASwfSQ#+J>j$?zlnd>;I2Us3! zgxQ`YMF(0jZ~^Ki#mr^0q?peoMZsLplES~;SyHr_#i?v15$Yk-I%Jt*E4)K!6BSLR zgL%y#7N_^juO>P({4XBd2JMt_UUNB7jYLX#_#qmhR*2tbd=|?rd(b9%gPr!8v}qgi z)QBCNSG^&A=hVi877XlW*^qDdtANg5DR0_6h&;uzm!qt;#4?VoECPul&PPqn#3=>d;M;RpQ@4QYsNRSr^U}W z@z@SeL#;cu@LySzp%G8Ci6nO?bZU?~=)p8r0 zDPHg=9Po{>aR@%e24{*F{4VApE^9+)=13dkfm8Lg%ka$+I;*bQL&F!pqZ0a!T5&dYny8CX+Y7{E?o8uDS`(ffodSzNw}xu!is(VENm zcjnGvo*P8IhdEC`k}yYSUlSwyA!Ng`h!Fo(WFYB6f5AhSz)*oN)I-bk-sWG3VN4#M z>;+Q;kQ1 zkM=m7hv*MtK&a#q|IE=aqWyt;@hhwCv@BTk%cQJ5U!)M1Ub1Dhii33!x@X z-Bv?+8=&3Nrb}aSjV%qgb6UE?+tO|RncJ~-?hky4--wo`NK3QP(%xw4Cab0Cc1uS$ zirLcZYr0yx02eEurK_ezwv=KdExiHMLGG(RjI(XBbuVnzmHP|Yp1`%8n$`ZmX1s)F z;YY8?VtvH)`-aiVZ4=Ura@#No+UV+=qP5Y>G0HvWlq*0vSETbFH-eBbew>ey`U~hL zkBkuS9RqDA2W@+j(-3$}r%L~N1fm1=+>tY+YdP|v{FCwJMrVTI8*aqGFJu*8XzPq8 zRh>7A7}whktKdQBDPZ)Jf*{Aw9! zK!U50U~KMKG**Mov7W1w-ieso)qz*6j=j~l=tbPQ4E?-5{3t}S=oYZ7c*a0WujQOC z6UY8+OdP*uApb(<@3!;rL_TK`-Pi&1pE^+8rCd^R4FqruAdaQPA&$87d2^`Db(_zNR8Wb;@v0lgzn=+?dc+ZY z5IAJRyQ+<2Rum3V=fm7MR%;wvCILqha762LH4JApL-cVMbc34k0?3TY?->vvyGe}9 zi;;)#0@!3hy5SS5}sZLy>=SOX~R5U-9WItfdj|X1zj1weV^W$4UCBrd+D(FMN zai)}0!e*xQ&uoky_6N?xZ^YbTX33`z`0>;L^3W&pF@Z%K% z@Hp9q472ag;o3*OMZB6(1L;$b#myUx9lRE=Vj(9f!CmEB!}akRQ!6jK z%cHDRz0q^90$!X zb$){OjBcZ8_wBgVK`3i~c}8K98j`22L-V4(Xx z*gL-CI)8pGz{Y6b)?<`_AmC{&uiD|m2%>#AGH1KGknbXF zm&SMP_=&%;g!DK|0g{Fru|eGqT*M$_PpE`YZgVl)$l?yw9poA1c13glw0lJYV(~!L z2c+pXEYv(>YbO{ace|;)OT687WuCX&{L_5sDtLBv*C8JBZ}KIkK2Wb7Ice9Gs~G?| zm9EPqB2U+qi>>Gq2!0UO?z$s-oL<6W7^h2wL|GSeS#8eCs7LNZTM>{V8O>=>%xEsN zE_wqW3*x`fq~(cc2sn5ZT6x4>Jvu_Y5*CpR_>rMPfC!M17}VuWA?^oId0 z-vgJgqF}(yx_BI9AH|T25 z4A&E{oDn~+2)=fI4}4X;68@Qr;0N65fxjNFMF_%06vpi^V&xQNA1Uk0az#s8v14D< zw4$~;F3M;PrZG7hY=j$| ze0_C-8=Gjbga~X`YHZ;P^Dt--EsXm>?JqQ+UsG0wIis+e+8)phItOVn&Dg7_d)S?f zS2FaMGb@090TsGL_6fWaepN;AeZ2Tn4gS1};LFfZ7yi|F#r(2jmmGZC{Sdb-tdDnZ z#apYAaDqYErXrMIPxGKG!z)RyRuO!?$sYLA@v2XEceU^He&-Cb$G3S7-4EXFzrObI zj0dueUYd>v*7%r|im{ehf2F6!xA98&p%uY5^}^RR@U1F>-`vB4e;r78PgfjX2kZ3Jj)X zz+xRCLG8f+-{4=gF?A-U#k~5%j(jDg`VtNTQ%Wr9rHA11{$M*!{Z90 z?NDLx1;7_`3Bg=0A>sgV5<8S&vV_=nAkq%q5qk--1WK9~JMGXNY7vXU4wZwBt|dfQ zy{M5!CLuHiYMtCM%hVnHYs6ie*ip`F`wL$ot70t^_Czidb{mdDC`blL_(?Sa32dQk z)cB{(d4RP=E)#@VhxQBev9fbBUoYxrJnm(_e_E$4b9i zC;(2S6Z#U7XECrf_F}+vf?3BkU@>$;=?SROi^0v}@iEN{DuAR|CF*OW%?R*30pJbrd;;v)X{=T6ABz|Pe>#Wp=zY=!qN_iw zj(R=!C9Fp=I7G@seQ zKm+`$e%P0{6clRxW{nd!aQt3Q!YheV8|lYz1)!cFAGB`i7FUCMtQxsfS@guyah4&! zbBJl|VLY(0nSvn3ggNLlPh)%HmGH?G!N2^e2Yw!22_IJx`~_b4ItG4o)e5@%-cLOE z2ji9a7ghwHUF?B>0IwYP?!{?ZvyL#a6OmK-%GBP_a2?Qpwq=dN@XMM7CV~1Z@L+2 z_u_$VIb5z{E3$>_J#BvsuY})F5&W?d5Bxs75`JDq@HcqjJLA(b)(1~A-KC%?UA0r1czJ_<8(_`YYM_9eVwf_?SC#1rJSZ|;m}wO?Q# zEE$G9E=HZ&k%PmJq7)AL_5N4E3;0IF-4+sQGJPF5Plev~J#I^AiFpoVAZi=&=zoe# zcAW=Pzw{CRBYNsSjv8$Wo#dN6$`&PFz#kDHyXJ@{cF}QF-fG9bGr+S?K#~4N0H2)7 zd3l7o2bF_ovldI|&+|egp}SRk%*^OrdhX~3bEYwR!|;Yfs`zE&gLB{G{FS!Sv7l$p z6YJcCw$&zDXZ)mzV1M{0F;Ohve~Y)G;VsbK0OdU)+&9qohcy<{%T08vO%`+#ph32) zW|PA$n>&AXx2eR_Ccc#gHrj3agl!u0w%$)$ZxOl$XZWq>ak&3Mz7E3C)*Mn|%#v=w z-S(E%fD@jvc|BeUeGJ_c(}>B2o#0xFKY&-le^e3tIYl1$>Ubsm(-pzzuJOQ+!zwU7GkV}bf7UvTh> z2(<%A5K!WiF$C-1zWN9Ebs*UfGZx`Yy#GXX!En}>?>y|i%wf(kajOqnX8e)qfQv&WP+?EL<2jgGvu_zQ@5gG z-#eK&8&&Uh{DL(bx69U|x*Wkp;4x$O!Q;YDucJNgTRj;~f!F~z`GF;WCjP{Mmn)J4 z;Q6TnFpH`9hm2&LM&ac=SlDDjdRerq5HzAHs>_0!l{Z6~nzvDu578lscmTB$?njOtzCHHIlNDb>DJ{S!EldTf)ebH-1&tau0=fx~JHmXM!03y4(#Wm;f+tB^ zNScB+7tGMFLb1M;rE5xBroXVKPr#`2!GLCD1i=sBn2F429HW|UyLD>$_oANb`6u!+ zN6yx1&0s5Z4Pv#IBGX6qMpVsm`qD@~vAXQJVYxM2_l&yrW!Mb7GIB~1CC=#jX&bLW z-4~%qacZ8mMX~HK$GPvrDbe$}vX3|1j)I=~eBK`@h50=DkkZ#gvLf({a-p7D9v@d! zi`DGFK+qF;cd2G2^L0Wl!WAo@r$^W%EbAIIPuDg?9Q_OSKu&RgkbtjS+zdd9B&<&G zJ8*`1g@j_SkC!Us{nDu#gWsqacvL6%8N8#!Li9||?&ETGe;1t;k3O_Y9qlMkZBYxZ z9pX^-7tTzTy7-dfn|E8YxXJM;zQ^%*QX_rzdf^O9MRogI>8LOD+5iT$TAB zo2$?^yO7^5G)@=lhC--46@UDN;j5)~zNGjP4Wha(L>WP=_6_K#wN>JvMOr$DQhYxR z)+F!3UyI}!cA>}YLjUw9$ zpE{b1ff6WX9;gj8Q z?aqF-%0aYMZY7y&BWf6Z>(1xDX;kk(l0v?(20_Dh`53?Xqgtyw5#NXNzf7z5mgKyN z-%B?7mzP%AnBT2xInV7wYvE2IQ=%11w0i?T<9M+0OZyVYU6PQVy1{0SJtamN`%6=};K*spu|D+o=GJJWDhyVlJ9GKF!rz=aR# z`KP7kkHKvV4c4hq!>E(+jkulat2a5Z5nkp4;SKnrZUcyp8`bGDe+JVs3CsL05&7&# z^2Ew-sPhp?k(Qa_yK?|JHojSQ%@ki>Jo^h)5MJX##$a4w#zy<|n;f$gX9$BPYDx6V zL92Q7mfniy1$VJs>G^F-RsB~^MbVyq(42k=ylc$r7lAT{5x&rCgg-`T@Q5qjq1RxG z5MLlHOp$IE4`miIWfHxsx)n2kv!Lh!GQcob&SqyIt;%K`Y{)7)4LpF>wfkLj_NP19 zBmJ70;pCn?xf~h$wJd@lC1Uz?#1x#L`n#y?x52@jBT)2@x0RcZ55vWNkSnOav>R1W z=^$clYN(4fvhWzR4gxm;1Yy9f0cS(L<^1jPGJX+lCc~^Fj35p(#yxcl)yiX*JO21Ss1Ci zDjlg>z%$WmX&s0D7i3*%-U{q>qj{MaY}zLKS07U_=_RlSbow4o`ZgQ>6HmILUs~p| zmvD`-3%{K{%acB1n*~4ClRm{xAB=QEpi0u`c}bM2tDi}TiZ|zcQHkn_6DWk|bE`n?P7QyH8Z zJu%$I0gSYLuniOLh}@7b=Vs2JeCEbwd3z2s4;3OR@&)tli)0tdAwDmt-Ch&NA?!cI^P6j&ycv$fKzs-Az&A&0aPZFt0?jjNPivZ7YL@{ix2=&+Ir=jw2u1`!L!v3SnQ`%fhm}#HMHv z{vkEVJgQ@1asSaa*Gq|q4{(mJ%n+OuHZxrAzn5UVcrT{kut%E-Z|ue7S`!r(Pq7G6 zGj)B}tsEM#@% z44iui@5myOw zpRLwSH&+I_n0dabt}4e6zEb)PFq>GEvH>DF0vpYvs&VuT$cFF72cktJWLNZC zP4(dV?ydHyGSn+>p>Dxp z3+e0hz1*2sY<6FQ+csaoqjAe4Wi^C@OqIa}{sM`r^MsIv!g$<`Km6yuY?DRQ^xc{xzv21aZFrW;HuInW;maTboa`O@G5D9vOLdTJ zuEe>bugqf|w!o_V3q7R@u)jcC0LoF%MF$}6dW-X4ue5Yy11j~WcmB!h+2SjrhV=zI zfdWpq8W;dL8O%y~0vN_l;~O|{A{2ey6F}gMk2Zj+KI#3AVj|AGTwi^ig*DUC+y|nSoEla!ju?dLkWP zQtmIz-sCSla3Mr1rPqpE_VBWx0kvDDa+0&l>WFu+polPLj_%Mb_<{1GDbbZCU?;H%6KY)Xt=>u(OP5vF z`)Avg=A#`EmFAjC?~_X3cNiGDPY3d2yD@G&4makJbqx8-{j6ya%K$D%o0lNjg}LwtTzN6v-`v;u9=)fsg7oHo z)C4X_1j@w~PeAi^(AMiBCaXx3PH4$-iohv>%LkmA2@vf&J$UVY_Gu8d26pV?o1wSw zUm?3~eAYbP4-qb!#!50mp8H;|rDm?QW8cPwpxS0R&@zh0N!xYD#&e{Fx>V70)Fd50 zFBdxatm(LmblgWewt4AzS30P&zHVjH(Jq>f`QK_frf{rozf4w`n%UMiIQY zxD#lWhqrr$A(gf1W4lcYlA?I~!8YBdWsqZ=bO`AkpcmtvMBwd86qF5u)=UnqBAuGH zLl{E(>cSViW9x=fqOGk>+lz3rM~toJhPDLK=G;@JSAC&*qzxlwH(e43QbdiJr2e)W zWn53FJ;xm#QFO`oDEdDXg}NXbbi_-rmXv>1EfX5Ik|RdWv^=Uiea>*lF0szEjQ!3M z-Z!xO;xV{~eWTgi3nHxVx!USwQ!_zZSr?vb*U-S!fQDOEb`?`c7~-itq(jaerzg4f z>I3R0(>mCpD+farafXiV!(Z#R4kaCZD2)iZ`9nODfyY$@ZUhH&{QSN7@R1@o`0Yw&2(%1e% zdLhGzqy}{uEyBW(LyUmp5;g$(E(=VZ zYKs81G=a|;w5$uu%v^C~dMv?NXeOKLFZdXLq>=lQP=e{CN0)`$iwPY!_zUL(%(PF~ zqwX>k$;KAB^GM0KVvxrI79c&eDg}VFt-&RcBHSkv_sE=akDI0d)^LU;)nz#E3hp`) z+Tr0?BMX7F!D*nL@nJ3ZrPcLI#dekJrW>!r^Qm82eGu5b12!&~@Qexs%eU(VBa_tq zA2`_8mAJ7xmsUT}0J_h)w0hGabaYPMZZyZfv^tZQR+a$$G7GkJkj z7v`5C143Je`N~$D*FZgidJ?8J={lLtjj93G*c+H?=Fi5lfDGL4C!~(*pt2u>Px4e`-IHG20p>YQ;vfW4*n(BG}G|k zbR+&exl$EDFx}<*R1+ZipknryCiX=@Gq90Fv}zB|$5Qe^%fJC@RU=uLk^(g_N9S-$ z?m3;#mZ-<|Gx4e6xD2KU{)o8Z%tC8wdO`Zv_wJDBsp+yWEUw;CPjl7Yji2?o=IK~S zV$sdSI3E~YE6W=MZDkYc=B-u@>tT6E^jmXNM*`{qn>c6Co4D?5^j4Y7DIEL4pYE*= zgoAkDN6u$uV1)9U>RnJJ*Ng)Vj4l(k=L_`ta9ybEMg=PB2`P$n3kX zW53BWve}>9a(wf4jsQ%J6-{gPUDFyVRE>d$yT`yK(;8-Db|U9J?8l_4@-$CAvSh9Z zre&zpE~KN^DtMZ^V4l#p9%UUGDO+;U(I?H!)Jq^-Es%lj!&L3f#E0VJxPIl7`HaQ0 zd3Z29`xcKC^Xy0USlHqjl{e7GL>(9nR}a6yS_*WL_hVg7sevWuzKigDq{(`#yxzI3 zaX(gfDL=V)q`r&CVDI&!@?O7jhv7qY_nfI+bYxpEBOxfW>iVScC`pF+l;!7o7e}W8Npv6|DH6%6B<}!-& zG#IQfeP@V2XRz!$Sil?`CVpPMenE}6lth2-9Mr7uSU*UGDAz|l2DO7KXs79f1k4+H zRbQorEIA>9dUb5cMMxp&>5KONO`vOCepP98pGpU&)PR3lC?E z{03FkTNV!T&Sa~d13jW5GcUShu<1!$hfo+2_qUBCt;>+F|VB(j<~PZ>5u9cXN^@xfRnKKs;7m`sny2k0h}u;*bA z$l9Vf#c9mbo-)!|)9qSnp_a<6km{dUv)RZqqh_;#8}*EN&Bt!qq&1CM4-~+-b2$bI zI-n!%=*{VUfyyXay@VpWv4o;I;4k>>xF{5J<3=8h2dxVbUPcHAO9mwfuXJ`{x=9X} zsv+3FMT`OWb2E`EB~%Y5G2KpV>m;VyiH)7aQFh`Pk~ohPI1y|xTSyw}nY|0$cF|6% z97!TYHnqr~0s91$eUM^P*55|G+)12bCq6BS@-f@)p|oVDP9R&t_}w+%OJ$6K!D!gq zrdeF8O%`v`l0jKdO<8mJ%~A7A5BTZ|!IL!jAORN^X4y2I!wc+R}H>=AQ4OM4#wkio7}b?b_SDjhQ8C$Ui3 z67}Be67uZp*%x;nBm9bKGrl1YL@Fp96dcXLvb0n^LuTKcp9ZB>Kv701$_yc8C@fzW zEDdg4ry5t;xa9}}HLF~*F$n)peQgJ&rRw#*d!S&;J+}Bv}zTX$RvMjAFNk=Ot zVC3*$Kn5U2P)X3djU4xKrZ36lgDL=WA_Y37P1hJiH$0D5~g|bvI+`!(?}6Xzg>`~ zwM7q7rw~72M7fP`tLmKZo#bdStN+fUS{TnFR12`e_aQ~*LQ!wXf)(0XeI=;~p6G0# zsmT~rXtWIi4O1Z%Z&-z?z6goJ-PC+5HPcB=Rnx3g5p;olPH4Kv%197!G40iyzEnCw zDAj^xQ4Pz8vZzJ?5<5(?_`{XItqy=k8RQW@YKW4WTbm}|7QO(Fvt?nk7`bAkPrk!3 z(7OeHu~sztnmct6swt-f+}34)2QM-Z>7-46sQ(N^je&zA}!@dD0C4v`*5TgyZg?IU@6myHC*mLjI@_K$0*(0DSaVId#(1|bAT&+7JdYu z;i>49gXdatP~k?g@;4(N?H_k3lnI4UHXzcf$)2Tm*>b$--DL$1(N|1snlt-#He_(Xqfkalk3#>OC9$npofqBEa)CxY?6i zn<2K7Z~FC+V*dazWtSR6Jr~)KehwNAJe6kG`U%0gxnI1=Y4^nrI2D09*9KoeaIuU_ z9q=PiR&F^^^(+>Qj77{Q2b@Du9qr>-fD0gcmD_X2AR5{~_9-ZjP{uQhwdx$Rj#Q;} z(}9`YFuW*p{(|$hWyW!(BMoJQrRd43;Jaf~JZY)AR4PhQ$NCFi(dnIadS|3lC;JN? zLV8gz@^6N%@>Qv*{3^YoRsIW*U`_eRA)4}V9v+5YZpBlv3s+0|7)SLu^js$>tK*e} zrK&&h)xRXWAGK>LbTN%OD2=vi(zo&S)UJ~3Vy#QWLe0O9L6%H_dwtd!#1xuGbszlW zl6CplRn7UKN=|8&jvFQ>1~!d7BmcT;`t1x{Uzbx_wd00KhjE6D@YW1su!YxRQI6#c z7d_!>f6zC%OYKEh#5@u@?vSTJ{BlFlKr(X_7HfKu_l%VFHEUrrb78Uhl4&=@G-_sE zR8upPv%ahq1Mg`exPPtuE$U6An}Jl_0DM@?y?r6>-ROe)^eKdTA6$$;T!_{GW9&-c zY^>h!3~nY%R|}@BMY1K7%ou8>#u!DkkR+x}lS*V4L(RgtW=4xr3ax)hQX(eCzO;~~ zq!5+zT_Y*kxBv6J=X~qE-*1}VkNchPd(L~__dVyl=RG?HJtzdz2X?x0^X~DL=3(&as7a^=$F%!cG`(>r8DYrJiGQgjbFMr zlCnWNzzGvGR^q#A$9e_c?2I{Ii&-vhM)qe2toJ3TjS1L8F*xf24+br6dwiAVIzx3k zDK4WL4a{f<@?3fV4ABA-EnFTxcT$_?n05{34#UE)@SR-!g&aRhy@#R{;R)ygIEwH{ z1c_hkhu{Cb3%>(FBVh$Ib&oN{FVgv=u1JRwBtF9rU%%9azZgN{Tl(P(54iB-5F|dv z507JGoI;<(RVu`9rlpFeq)Y%DO1e+uXZhiO-tWSHiy-L_^26We#wTffvLC)Y?mBVs z^Y5>Uelx$mUXvobAG~VD*rfEP8#{} zIXsl~|9LQs=rWleo$*;!98wSB%aeb@4Cl?uI77N#&!-ww-nS=G8~zVSXVixowU!mN zf;(ytN7OK$T~Qk|Dwc)lRKHy6O7#jy)Op^he=a~&cEuILh3=?(-m@7V;*I(#qhfKf zj(WE{>bs7p35beel+WO&b>!&vF0866?t_>my_f~kK&BR(tEhgeg+jgr5N3J@ypCFE zn`1e&qmb0mtD~#>;aj8WciTAx88%)gfZobIMTzOgY?+I;K4km0!Q z$8=EyFjoN*?AP>MtRedX^%;IcU+K-#L$IMjVSt8UxIU1UQadJ?w*tJ|AlZ)95g_{& z~&Z6EYP#IC_C~dQ0ij%&ZIpgpOClu)CY%@;YDl&0Ri^JIhXL4qq@ss*2v+;0_ z;^D~$+nD5RzH@>kq-D7C7;*V&HK-xWvn@RB1=TgH)I+?{ru)~-0R!K|Le z*?U%u2kjU!t{Af2>`!bfRsHWFtW9NZ)7bElu2{LhoKZFYi-kTGVhsQe3$ak+Lw@+) zZv5>CV*HC)*~>4=vLmh}<{^lscTLh|StO6dFgi@a8k*@VU_26-P1UT;`TxQU$cT&4 z`*PURf0vt(4D0lOEf%CLA$J3U@tyB5bi*ON-0K*H_PwN~6=epZptI7p24C z6s`a$?1g#E$D1XH*`6^E^Bf7W?~kaM8{?7ESbV448F&}fxVHtsq1wh8-_j4Cv&@Ab zhM-z&kZGM`v5%$=_mOvqG^Rg(Xd2V)U34G#5FW^3iNuQ1ZJ4vgmEv>+i7)iS|GU|R z{~bZ%`}*OpcH?UxsLz0V0);$$!?!AaUBCF1H@VU~qfhud^r?@=C%8`p9I5doe)yyA z69NCwCju7w;dx}BBS*Vxd|yBOJapt7_?ZY&UoHIb$F{og`w^5WGOqkapR{__B%YSj zcqI%r{`Fdg_GU9I^j3tw!YMjmp#>=9DsWkEe)GX{cnAb@4>4QS?f_*t&z*<0`*N^M zNmO0Zj-y=F0&m?Yo+kGS7*F9_m|GhVO}4Pj?ci=8gL!9g9v>=8ZKQ_LkqiK3|EjEJ z<4Ys4yqbzIx5X8O5hE1nc{!#YWY^qbq!ccXm+Um;o`kHh3YVtZi=~f02fr=UAx6F8 zB4lG9URmpu3)dn}G0He*p|Mh0)zDS*rEWK?jvD$NzH1&M`FpJ#`3v`^ixvue*ebIe0yS#JBgu=jOQZ!x1FDiXZ++whO-xLE?9P z?8DC!ZhRk&pX-PJ{COAs*$9&U7(e{=ZhS+H@8XA_ILSqS6oRB*+YkS5z6<|5g2W%3 z=Ob^18-J(9FZIKJGtotV8G@ug*$2&RMoEBx^7Qe60E2oir_j*q;Lc68x;B1n9(AAWbL z3%?0L;wSmxM~*n>Y||e{5FOOXD6?n>dAn=^hMSFAb!B3d;n}(ymwBV=Ua+V2wK1oa zO!1lk>0=ok0dW$OA!MQVbsdXdyrviLqIa83j{rsQXdCIJg_n;5llrh0_MKa1oKq*w zh1z^|F_%rrDK#T^^UNlm{B*da0^})3jWy3*GCl+)wcfuPPOlq|>#dpwvL)&(IeWm<*pB)${lp*xCIA0%^Z6Ni`Q1u%@jF)WX-;tTPC0O_{ zT$FHrzjKlo=Vtrl^}#-_yx5H(^KO$Le$`zr`~n1tpW%m3cH>)V{6If^g9I1-%Mc{} zoBZ%uZC&`M5hVU1Km0vzemZJ?e*T}2e#YG5qW=_vq(9FO|H;iR{M!f;pXG-yZSTVG zLXh}7{O~inyYNK_5?|L3U)znZs_}>3_mTJYZZ7&E1WCWd4`0KLuc+~be)yjCT=Y93 zNcw&K@H6VV@I?p`-@*@H^-351Tz!Q<_nwcu`2aZj7o#3jxay`9VS(b zuixQV=OR8Uujw|{sWJzOc1}0DI5U&91NAu`$W%TkM(yJ4ywoMcHwY4cpC7*Voi2P; z1mVuLyEf9Dd(`5l1_oqYlr|v@uo^FkBKESvCT+K^)DYnS{OU}`U3PXOJGm+c*b<37@pWv=RYt} zRX3oCOBMGcDEaS)&qOQesNeS?Nc^FeA$-Ih z=!%5Tu=+=v_5JvI7vr-KB>o#e{PETj?}O0iMhkBz@ty4c=}pc)#Ul42UBFKM(wfx9lS z*sxag)U?=mLZ8kP&c*`;e@9|P=_Xfb;Y#u7wTiv(h zw}-#qp-TWqV6G3e;}1-0uy8f3VDYWAva^#-Va`A+u(FTF!pgp*t>g*3i&_SPja^B{ zAXtn8m10V!q?`2SDtf<{mqUs5O8AjK!&;Juf?ns0Nrz-f*QPGgo%15{H*=-+<}D{M zqm>~@^mwfJMpwKtUvP;7ChgiOdP_l%dQS3V{)ee9<~JZnd}Tj;4>vwd<9E_JM5`d% zUUt!6gCOaD=!fs-#wTn1vwryLQ(W{XBS`wU`{55g?85Iskoa1D_($CM9vWZzx{tiS zKIEdm4M8<0H}sTtnT(l;3twqIrs|ZhR2S7wO*P)5hQ-9AHLm#E_^ctiGS1&zZe4y4r}lMg2cD+#rJdL5hOm~hi~M@*VOp$ zr}^mTodOsAmk}(+F;W<2>}HyXe8lBUhH~>*{~~6Y`zuH$Sv!CN8v*F30CKC@mjvM4 zK-aBi4FwS8R#Xjojxk`3%SKn9x)}IZEo8GqL+ZKJlB9yS(Rom)>nep;uGNYwLF#2bws!* ztx)o_u6%2SAe4~42fSW>iW>^#x&U;7X5*|1jBv>X1UN1%Sh#KsVp4=stboA%0&+kp z?iX0Zs|tce|HEfeqK1l$IGku4*D?3YtnZwf8-e$>et@)E0VK!)zk=E^#$5n$Yvp)^ z)u}z>ts-^fE0QfUPeIfX+IMe_cTubGOM_gZ<{-#&R?ZLKd4vn!4nYU=W*#rtFU{J? zbE@a?*;Jp@e;neX_7#FmJ;x7!<{20MPXvj-#}9wdO@Fth-_Q@=>S-7Ks}Lmpe_!_D z|CeDd{8j{sU*m`G=f-!}_?P|gyN9~yZ$hy67G!xzf|c9ph>L>#2@7^$G`_1<2fa-L z(-_~8L)yU1L6MKJ9|1|;QOR$pZ&&giC&FIVBxX3;88^_7;@hDMn&Kd zbsR|d%8Ro}tD*EcK*)lpv^Y6&wr^ZY(hL&LS{(ksCMG7w7)x-d>hM~!95Xxz-!Tte zV{5(bqKl~vI2>0KWOt~8cL?*f_zDWHB>SOzWw$_yn!I`pZMV$xbc^1{BwTzmG8Uge~KUuP8o#R4<*h-9Mw>aNqcM!gox6N zsjY$agrYoK$H8cc9j7ohwnUD@5i=rkeLPTvLsNW29`%}wr2z;MU*d;fJI#e(grHt! z2)1Lw&%dkUXZgiXc+VBT34%=T4nKUK$6VtxT@fU{t{?s@>@ahYZ!}AWDiQ~LnHIFY6R|Y3n`R3ez zxL;M>m;wXKXyF}SlcsB47Ddc>39TMpGbb?KG-V$ulp1eBkz;6m?lk<*5|Tgl4Llid z%aUC8b>az_>NG~Z@1!(KQPS6mGqgT;wnb?!DfME()<-z2i^q-J#(X80kQ?`5C8_4c z=!)m?=`T^c9IcyiO}u+{7@N_dR5}0V;M?NnB|L%U6W4?Jk`30-$0s3a$q)Qf%3|Xj z*kDV@p^qYLpv6k4i`%Q(JOvS=X8x()&N{6{DS|948GiUCZu}J*-_j2s`qf2$41&dp z6lQi8(}&tO$>~G&M}>*-h*m0ybkaIT1I$tYahVzdK*vW`?JhYvIL3G$U*Y(a9)jcZ zr|!09;ayaXj6C4t_;CcOkvshGtHLh)0tAV#>xZx6#-BA5{!qRTKRp3(*z-;rU*dm*ijdLKZ3;1@WUs&@vSs|pdWtHzb^XEBB-|aqZY@s+6tF=!NCSG zotJ(%NBxDfS-s8uLmc&QFdh>D4}?z&$lmy5(+BZ zrIIVCy_URUtLo*(2&P*NXOGvxD%4Y@CP%S*j0f-~JE48Bkj*|m?sk4mmXB+K1r6Bc z4|Q1K{MbM~z8Rd{6Cc%FZY$2^%D~D6dC2GTb&9MA5dNPZz(h;+eK_k4td)$mq$8T~ zU9MQGr}o2IRRG132_M;$DnDe2E|Z<)-cjUaU)N(3TzXtQ2#fIHmPnBZfpAolx9g-U zi#H;utI#x*>Tn;J937s>@Bx?z9UjT>NIRU#@C69NQJ9UHF8-A!=@!zs;!iY(*?~z1 z8pOn#x!Z{EbaTn?a26O57x?79W%32P^fSKql zCYqlsKcPTvS8B7F+6zoA)Zy(gifmGcckmO;JubO$F1=tXnOHu*7`yQDw^oP=|AP;% zJU%i8+t-+)+WGc!t}9D_A84~a>S-XI#bYs}(g#pc?{i0;K9=iJTR zGi>f~ztnz|oMwUh_+wjJ+PTM9(9p`2P-}t{2Mb*H3OY0eT$?=Z%-3cQw(YrXv~6!l zah8j7!9VTaA10pmPcYLhj1>9ub+%g=RGUP>yl!Dw($Y<9EL@}{!blE))e3J%LtNbP z$Y5NwaVRx^zwyz_SR9$3cLV5R#ykJS_Os{1D}GRo)!*ZzYbQ5hba^mpos<3Jvtlfb zm02(|W9P6pfSU$Gg>?PZt#5tUx7dq5dzm-C+5JWwDbpuBSNHS#`>`^0l#7)+G%GiP z6%1KR2XcKLyFOGLhO5W*2tN**_IVYa1u0cEfumy~lWyvo$XZdMl3I`v+cE!r66~1t zzVtGSE+>yT#S@(#9GPR3R#pRvs$*Gz5~e#}z_8oPt$Oz!ksb|ut}uUte#2YKFfz10 zcO?EN%lT8s;K|5q>oSzD-hg14t8Shesk@!IHQ7F*q|_T1Jx6m+(c1A|5}?j+4VUV+ z=`W};THBO+ZiGwiKa5f(VEGu7fZtwJy_-+{B7cC$*6~(v=%_h}TKp(DDA{ngIZT%! z6au5-B8TaEf`-~L(nNQuEsD2kimgep2Pw9^$E0|XqIgXdisy%$6#s`Q85RqR;)#(; zyuBzK800*RY{MzPJE5=Qk)%KIe)AN`t?4T{f` z;w+2D#n3dQ-eNC^ur|R@wJ4%JcT4@YrZ|ZdpCQHZ7LWZE#c@$6-egh4mD+BK-8IDo zQj{Uz6BfnG6vb z_V-ept0}$=iWnYYS;{_zBegCrk0BX{d)CP1N+lI6||pJ zOH7676m_R<3Ds$Ik$7S%6qr)p>528Cfw}s6mw~C#)NbONB30dfDK;*wNDJ3oxis1V zgtcyH9KL`K7Mw^k^$ez-pDRD1z~!!FGnwqX){N2N={;yslR6B-4-OZDG^THQ2ft?r z?!X7jH+{V&ry~b8#ImiWXklVgo;&+DwwB>E3|K9m|2}aBC~!%9=|8E#=4U(RpGnP^ z#;RlD{$Nozd{pPzXoa-{*BB#fs1I?*-Kl%1vv_0WpK=APtkBnD8dbgEI1PSTgXyc8 z;JpD4<(2@;DAM~=I1nV>nF(It1#kFSgGVVaN|Hr6&kJ5*g1aa%&y+AJ-{%GIFxjZ5 zz$ix+xVaa+7?i1v1qUmdT|5lLrY62O5k7UW5Ce)R$7v1K*lWYoL?c*;IsfzFPVlGG z^DWQ18a?ZNYv5VmfUl|f1`h1!1aZnzx+@)9oj;BPd(%|>u8dz1@%0#`Io*uzN6|jO z!|UPJ2J4MSM9Dd{tjq=sdR_!3nV0&FDz;$$SgGqh1OWIK_e=56De0H?duEt`QHOr5 zgd0r$EJT6KU&qFDRXVT8k+cW{!Oi&Scq6HU-V(f){Ur)Ugz=sSN+keVXhNC!xRP4P z*U4ncL-0wboNlMAa7Is?9N(BJ-yBKKXy$?HlrJ-(EJ;?%hb~0QCkw2UH+8aPRybo9 zK5Ciy#!PuFUW?2&IpY%#RHyv931zXgQXa~b$KjKf`5rrEg)<(q$?=Vu^6io2jJ6)A zPPx7bWf`|pJ_YB%SQ}>Dmwc{tyCt*28ME7Jj z7Drp`_hQvpNs#&hI10u>eAD_k)!9m2*Scx=h%HMyapFdN@c9AgqN@XQrt~yNlV2Gs zqsa}`=t?}i6Lm~-{k7Ifh(iQoRb5o46p+Q-GSb~+bW}~dT9CdNbd6hq$MEs4?=c{A z{4{0TW892)(frk%u_vGu+rJ%%An`#z{ORK^{6PeX-!sIA{wOzofX099hd+MIMc+V> z^vC((hq>|nHNKl4{s@*SJLKKR70jSt&ksM?jeiKi;w+e?l8KhA*c<1Cl#IYsgHC=@$tibJzp)SlMV?gh2*_>_4UW z0V<^>YlhZs0W=;MWate?|#fILvNxHWEnz3Bc5EzVWZjrRfIj=xw}ON0HL)q#XUYe21L8?q zE-ID>$jZdR18k_;QoqxfgjByjVPP;{Lq;6+u}rm&=x?g^f=IP4$y926>k0mrl|$E9 zq(V@ECx-@VQawp3)S+99oZ-Q7DC7E@*eoyNv*P?y6mfMo>lw3rN!rGRw4!Am82(ye|n}K6(A4t0vZ5ehN^3-A5+e&8x`yc)ATTi+0s}Usqi~R7_V9Xu# zV-Y0&XVH6}=sIpDLQh0a}4Fi^uJtsRrO?Mwa;Xk1F;)MsY13%QQyb z;z}d$Kc(^OLuMM4Bhz?Tr*S*e7{WA8xYM}mKcz9sN@GN1bvyrvl4C!LdvQOeG3Zv8 z93@a<*}AG`rSThRc&gHLoklj(c#LUmcBj$%Kc(@%2bHdd_V&J zQ%onOqeNE`>QPGc(yv@4`XdC1-$e@)StExQ*rmVpIRY0%2L^Lu+*RvuT~)IE@K3s{ z)&m-Uw;z6oyJ~%@t5yR)e5xDYM&pmr#6=1k%)KJRRTXzWq{_%@l*e!e5~uKs{35UI zr>defHnVipi7d*Y4$qy!jD5kPWSq=tOl_~PcxFi1^IK4!)onr3V_kP`CrVXG&jk4Pf(nmFx3x<_^R+<4bcy}T znE4OAj^+@iO)4;=hc2;)Fi@0Xyi|)`Ls_k9Yp|-ME{v?+^)>5pU_BIQ1U}`wtinqH z?U!@d3+x8G={n|k^;xU3?$)ckK@uH!2iC%lpRczFn!=}_PNb7 z6*pj&F2@GG!&`K};p8wDoSdYhGtIYvBti$aq3xz<#Lnxr0e(bmRn}wwU8a3Kc zYYOOSUqx{@icE1TMT~pV^cj~tOc?@O|BR$K(xUkM3=hS3G{q1LAx^yKn#uENbd%*G zALEF6&fJ6d`|-@Xh%gY!nOZd*kE3zN)eY}wSFm0(N?h6v`lgeVq~R@tMVs&ew8sB} z_%#=D-%WkE!?DA*huYlmHHxo!NX@aVH5g{)6+(D5l+-cIT9}5|srkQxY9_Ln*Q4;3 z5-ffVe!MbvGb-RnW7TJHy^*fmErijt^=avd%zD9#q;kI;)jzzj0taaCNQa|0Qj_5& zMMlletRm{YzTH%R7I9CcLk;Um3`fvqrI!yDP6J=yC0$9Fj?G0}UKuR92MK_;X;jiP zhe&jICc-U|2rFGbyy8T_X&m8~fcQhzk*j~L&^T_E#U_NNau*VW!&y5UuzNu|MD__g zmuo6GnN_ijLjal54WO#+k7S?PzK}%bS<$Tv(vS#Fq)#_qSRfmiCLcgqj`H~#`D~`4 z^}%8h%()e|#rU<8$j7|MM5a={ahP<_^7Vmy&J@YaX`?P^@-QKSaFDIZep6u|gqRz+ zm~S)D+l=v&g3cC-pst&tav#MfjKx(y8m^`C1Zt`lEQ04r6QFN6Nk-L*=&(-D5Gx_8 zMC(NZj8=f5Y&XxLDn(GZPXR^}usa$cK>$j6U|1g`h+O8t=qvMLKQ+7W6QafV6-ETI zr8C+7(Euw2pwy*xC8awNwbdNAET9FFD!bXfZ)9R*MCP**8)&5lLyeKm!Pw2%wj zZj4N5+W}QpkD$CcZd&Ahcr1NKjAtB4o%S!QCsfJ)F4bW|++}qMK4Gxow*4~L5MH7O zhp(c+jpEMaeCcj#ilt1a4b@h$KnCZBCVmwxJcM2&EuysEf32ktkd_%NT!z=-G5C*m zSXV0J1~3thN77JGW~k~)pw(KKOs<8w1L(5X!YFghM8b6>>5?3@uDFuD@Fv>B^?BnF zWZ{B+wb}-(aj74E3FAur_5DU^H>gJUhLof==+03&d;7%MC?S z5Q*spjHbv-kZ9Q+1yR#*p~N&rpvB?fq!#dGg1L?HKSajmS|%;I2JX%w*7(5%f)M?P z@bZL#AL=hyxDh!Vs@`Hv1NVi3yeJ1MnYA4?UZb+XsGg-DE#W8Pq82-Wl3LL5@%msh#?q$hIH|}p}WNwfFt9V>ncI*)-BP3 z24Xz!LrAfsb{`PSOQNZqQ1w%*8pIfvXULe2R@aUnkz?6w>WlMkJn$8~az(><3-_jK zzED)u(7h^A^ zbewKzw3Cf+S=MvqohIGfS0cJZ5<_C)H^zG}2JDIJ$YADLQC z?oyj7qpC%h(JDSHoTPF#{IX=)pn~?B;awRs2f;7PZ>&27bZ%5O;=Xw%gqw|urZc|E zHfcwUW*b>g<<4hf#3?uP6_&!N?D>vDY7&4YNj6HqamR-T<@ny+_?q9bZlXRcT{0%= znFzW--IX?Rm)c^MMzxw}~7L$u?`32Uy#&*1`8SfET1GQs(w&k=}00zaa&aaWh?Y(Yhv6ulyUB&ItU8=Zk zN8t#+iY8U}0z-kl%N;&7WV{A??-(j!C4pz0%reuFmiq(>4YW$bg7F`;;Z6r0G?2cRJy7RaXD)d9UgG%tyHIs+rTF(RhaF#x3pXYlj$uj zr;wMrlpSA)(n5Ct2ij*PcrPm40-(2uF0&&SGx7>1dM%4+%nev5CPnnMDDiUbc+VqV zdg#_T?Al;9Vt@Sk@KaHEzl&r%CH*FwOcImFUgzk%SC7I&tR4B>XNWv63h%q`iIn+E zyweI>hj`>&ILFZ-xIhd4(Q+uC!@hqm4#R4e@3dg4={x<%I;6%#V8qz;qDHZ)Fs@(E zKJWX^3M9r>t`A+tqKzv>(DoSZ-e_wH~I0U z`Ba7Kv_ch&C`_>MR;f6BEssrD2B%ksA4Ao))-`$h^S9%h$#W;+0|sS9)(=jeufuyx zlWK0SR9rdkHVxuUQv9%YLLFLt;V@U{vtEFM;2HwJxgG&jFmVHzZD#LYMgUgDZr}(& zX&@y#4F}0a>EPd(h(?4rw$pKfM;SBXJ9u-*X-mKCc4wt4Uw-7fV7nSVvhObLSK2z= ziKZJaoT(FQhw{YQCq;kS4bLn#i&7$9hu5O`nfH3aG!|0h%I{95-#r?o@IUz7VwTxj zhC55Kr3Zh0iOYlUgM|JAB^gi=55AdH3~^Y&7adXIOFYxW4Z)%(u;$`F5R`I_IzmS~ z+!k@zJ?(TS8?z{b_}^inh+`COErMqG5+BfZ^Ppx{J7hq{9{Rr@(2S-dHi4W_5QUPaE4;3C*nzB>h4n zdpeQZjJZHMQ1DvJTsK}&M2?w5cRI-nG$9$XbEJC2$WXMxoIK_H$1l>6qRB9(Hqi4Q z4C(m~6moTeQ8)Jm*ok+r^q19@`mCer)s4avy}ED#9$0rpK2 z8rdq(#yj0WzV{It*5xoFQ9X)rjEqZhumH&N7M`#pXEO34MD}_Voub6M-j3H2@z^S- z<{yxTc>qX+AHsiZjl2yr?;)av$NQwf6>uVGt%8LU@LDY{A7ypXHg^%9IlP_Zla2Jy zG;5uItyELHxVz2mGZ%MKKJ(kRG4?{57k1II(N8J6i&k>0N%xV75nZ$lO*vgCFWbBe zEYom^c`~+sfqJ%>VX<;%#frgzlLGwx0Q;&PD(#VCmq4fEP;KeI^H~+Tr@A4BU{zvD zvfYJl&F%lC(4D%)WPjL%2=?DfQ;Ny&EImvnN+Y%w{dZIoN@LW;z&*?#Kj~MB^<%j5 z7;ck#UqC2U%+Ct*M=ln`kq8J-b}Zm*@-y-)zkr|fbLZlJW5QBMj(wMhnH4Diu~<5! zA{xyxVvJlONu_~i7$q&nIS(-VTb7U^k`RWqaCmxsvdp{Yt%5i%W}k~iV}nUZMWBJlSs-d5U}QG!Y1(4Z(!Nr7=!V;oef zmi_&X>ZT^YH`)=C5i!(e0PbO8DP9E#=02bJSXQ5TbP}p_D_}+o5M*Q6)03D{9Urg; zEfi=77@S-zK`VHUQnU3c*=tF?5hlkabr&+moN+GF`=3IYQa1($CQn&<149r-9suBV z`8?s(!%V2o%#XqA^L;h19#M?P@gY(KbUM1@LsIC)Q8`Xs`_v4r)}9j zSJ{@5DAG*=X_v+?j3(V93T0~icNF2`DrEAs&1AA*qDhxVE@Zv%Tt<}UE3TqmHM82N zh=`#!t-vG=M?N4dU_!nQP{#gSMa1s2qvmF~H$^=DAw?AbA~l%0*Brx@YuU)P77SQ5d<58e+l2AP# zOiyA`6z23vxJ5G9-W0N_M*RW^Xy$<|Mao5$QiY(st){)VSSa1r83kxW^@8I|=I~Ls z|0v$k7aSi-G~546*p#>z9M9|^nl~mSGa+ejRd0tD0^=oYhq0XuyEQuI>>FCExR3>4 zJnEaW9?9SjCGp31N-gi&R=*a(mA+xAMH&u=!)FL@Zr7qfq)eTHS3KckIbTCWlqT*zm|&)2izUkxQJ z+0D;G|B0V3+nD-YFeZYZn>9bzfFEcj9*No<8J}RnRlhaXPGXxP3#0L>`%Y~**$7Vp z3=SEVH8>`e^o$U&vtVS6_wN!?n=u}z?3DN_8RsxE5b1$$07|*BMKd`UQ7tg@OROpg zz49`WfZMeTdBwj_AcX4}aogew9QL*sFLCK&-XKg$W}k@7s>0ioun;9rK46bOCoA!1 zay0Zla@674ZQ|Tl!B^wri`5EgJS){tK`l@wbEsM9CHsy2qOY=wLgyPy)n79%LiKCf zsiH6!MH~}}WZ;6}gj5U*K+O!DZ@9McHWonK{~*al>3?oH15Mf6mR2E%QL^O7ajhiu zOdW$q8^&FdyLD*Ag0%998^%@4UQsS_L)J-iphU*CDj@=suIiU`2LK#Nx6t_AH?br| zVYQKavrSEIwo#_fQ6O%{tZtM7VRy;;cE@pS?I9+z?wKu;bs5l=E)-Izp1o9$4Df@> z$Hu5B#kguZreudZAL|LXW#!|^)@D8~$CJlIok>vnxG#xQzC-y&TgJiWiRjU*`rL1>m;t^phG26H8%1!1 z>|=|_KRj;68~$aVhzsUC00WtQ0{cDgk%z#z8XCd8*70aVVI4?f$<+|Zw5JnyBbg^f zc%ct?eQq(sANtWn&yFew}m05U(S;46eBYBrAj(4a5 z*@eZbct8y%+xWh;d3n6PVAz!)Nt2io{8;A3k$4OcsNWpPWGX5LT7Y3yHeN)&p(P?p zy||clugnItBN9|ASnq*Ap3>R(MwJ_BiTYli*`SVL#4j;&S8WD`;t-y!(1R*)gKeK} z{{$b{z?*GhS65N;`6|W=EU?%y`VtNt?nn=&2HLN|Mjxyi+W|SrGLGk@T?V;}XRKg2 zKd%CQkp1J?x$aoEVvM?4;_y^+UF2IdfuTV08g`Z4!$nUtGlk00LRl*3*r0dAl zsiCVIzl{+uy%tiYmfnDy0t4%s4Z(uQxA9smS!o}cUoh^j&tY%Z>Mv@73%{VGzIjv< zwYl180wjk_)l$ZfkvN!+TwYXESyHwZTyia$Ot-9LGO?@R9gZ}1*E1(pNFEa_9u^oW zIH4Z~2aHb%1vmXuf-R(c2Pbi`0T%${e@`^Y!{-nI>!vPQrI+|&r&h4&PLSfXjViKz z;ZQ_$M3zWSsfBVKq5-BUfGh#59Stx-0b~i_X;hPlBzh`WH`j1v!GH)sYcJi%E`%MbRQol87=9CWdl!zS&oa0fS{5 zgr<$ny7MxMlE)x)ZLMlg8`PrkR1Wzn+so1X@aNK7uv3m<$`}o?)t0+cSLk6+7|+y^ z;;`)ty=PAr$zp;0&|q#W8B4YZ$?Dbx6QxH|1D~ku&uE#VISSoSpd5}xGK*?OB!ygR zGXZH~>0!(8X7P0NpmgpGb5Qyb^*UXRVPhGvoU$4$yaDgS|5%Id?m+}|vE7Don;eeO z$}yH>v~r9%Mk~kCF|wxVN@t;^VJotvgQKNM*aarbT~-M*%rp2A^U7I+)Li^+mVN(} zhAXs?SXEj6egmyxnfAR$BQrZc7#d;Uvs$X`?0-E==__nj;CYK3Tk;T6ZuKSdYcKCU z7vCsYi7YA@=CcQ>(^fMq7K4gKMo=uCTlilF;Xk_CWN{4*h`SHB^E$=iYL+}4gGIOG z8Kh{GJ9i;1A?ARgF_qjn6n(|hARru$$?zK(xhzMmzQxDJNIve?d?YD8;>pMJgS(CV@e?CK4Z*tl`fu@uK!b5-RPoPJp_=)BPk@3A7Q zL>-kd=oPcGd?|!OXL-!4rRPiEVhz1Sq>bXr*TZz2qlQ*P&^|8>LQ#_y!18AN@-H}H z0{#cb{D5vvhVIsUA~_Ky0UR>zOkf#;Wav3RJT7~5;wuu5dku@xPAM)}_&ew4Z9w|a zM15v`A+!GGs*?4G@m>|c8K?kiEM&4f>yIM8%Fg=luQap%y6zEmb!&5#^~ETNsH;r0 z;FhzJ$CJCkg;Z-O!SO6`%RlWWW}m7M%;`NDiNbj6`V4R@b$y3b*Be{_*_M2W z5B6*ZqRm2VmNi< zLw5^XWtoU378k=>MVP9Vnu~aF0Z*KX<{le%6Uq@3unEbjVWqHSpnO&@GFekFKuE{2 zWF!=2tOEpru~C>g|!@JlIqz zwez)NYnW&ttGSY<@`a`}wUji%l1$vZj%o(phrC4IJ5*UE9olJ#j4si9{O}J&@m>9h zw{Pf2<6F!|K|F$0eYyj*ijxqbWCPUVFzD||MwgXagX@~&y?R|lZav>bi8lcC3Jy6F z#m=OhX0Vdr`<|7;_iVg1GRy0ZI75oD>a5RYw!H`InCW-x8c}A;>GThv)UX{ZBz3My z$Lia^;d)~Y)S_8<70eq6GU`Lqb?9PY3(bcqCqL5t3xPN;$7r)a~l&OzLEiO{gH}>dbRU@U3 zIVeXk{v3fucMf9<*jdq%Suh`2pbX3iq=qWFw}@4;&4VwY!<^LSA^fZl%) zdOihnc3e>&lfr2gcnlgULw?{ofMEM&JYs!Xd$u54C3O=OKlHGnzbCGS)=7x(cvBqbNO9X`c8crqY^S&chd;VxoXyi9 zA>*%(6mz1cSXhrl9obpck>Z1n6nnT*?Bq@HMxElHjubD6nqqBliqo$XxugL7g|T8& ztH0qnJ8;jG2Jl^#t7=J1AFZ$x7F5zXFB)DO7HeS>j}G3&3+kX(CA$cYr*IKkpH!EL zI&^TMgQEu=9Nmd$iwEOYZ;GvTijO!_yeMjl@!k|)Z6R`t4oWdfZR%hTo~;zK1D%Q* z#FR6>YU~kp30_dtCmjh-r3?|G&a6Y)4pHkm5`M;!aDQjQMlWxQopg%B94R)4n&P$I z6z5(m;)$p+juijBnA!bkAtc1WTYHS$wm`mO;4N8g=)-bsSyhS)%4Ad|t-TslXpcb! z+RM8@~(WwL&`+E{}Z%=A{3 z?eaYfx-EV{UZ}NV+E~R==TaD`b`-Ahw9qfs0=kDn^99~#@cmD04Ad?Xloh_hmt=m) zKn%R%voijBXxjA0>#NDLkhn%Yk7uM>>UkEQgX(z&pUdMJ*{hbz4$s8wF|{8od;z`1 zP~d^dIHBPYTQ-${dy%*KffRf*E>i`Iq!cfAD_(^5|AJM~gPOr5yKZU254ad-ljS*?h-MTKzrWb$09T$wr#zdj(hg?nWc^UFC3gAS;9d zl#)NZmvOeCBeOf_uQ3j)7plQFbN>hRGSkZab$G$tf5z63@wT)x-d1ex<;dl1mCMWn zGxz_c#kO*Jy!w*Cj2X=s^VjpX3|H>2LX0l?zv==2I`xU}0yJLnS>?mmG=utMy^G{I znZQfcvm{YbJ&))6(^UmCi_d?l=M{YZ4bP}ry+r2h!0nS*=QhEKz)Mv(sIFz|gWEIzML&nx)+8J_6`q2SpI&{3&a2ZDt`4gkYpf<27Qx|Dq% z%rab;Hw)q5gcsnRVifWqR^4z{&B#z-&qRHtfuqu>8h98Wog+&CiZ$9_1)ibW4;`wF zmm(l0NR^4tuMxq7(aO;n%|2H#Yc>)yz&-|;;Z-l|4*%A;gU6AXN6=(d3k5nNQN;U%q`gL}i~yY-xU=761;Z?nf}z_!-`!OR9}@A0gEkhg2U(Q|PV93&eYMNYz^L zCQ{{HX!AK5&n~H!sGOk?s;6>-)>b?FT^KXe=BZqfY9M}`Qq@fINYxPlhg7);#u{;6 zsgBbjgj5q9Qf(u<5qY&+{85KgeH3pZ)%-Y{&v)_clIk~=%eGWkIiwoSn4vbW=7?0& z@Z*%KSv!wZPXpkP>SF|Bjn)vtl~-44sa|qO#r7^zs)}Bz@@TMi75b^7E!8GGyQHe> zm8y%1NimICj2UXPGFzltg&(I>Hz#_edJO;=$!c&CaSG)df4geg*Z3G~+ySq{C1VG= zA;`H|4jC_xDq{n2b{#qQHZ7-?@z@2nj0f=SlCg;@$#%|Vs+c0#xD5sWoP$}S3r?RX3?DAgQ?RJTeS>aAs6;kLs9%(AT5H!?t=j9-0+ zRF`?Bx?APBE!B&N87}>cT9>5@jRZd9Cvwnxiy`zGy{U-xe(F))#x&x$Ud=X1stS^aQI5-9k z$qM7ZWgH*ULn=ml_{5G9AtR{9HFT{>q~u;(gB)l%2N|O^6aA^R2oL=*+*rHu7!Ua& zNd`;yc79RrnQA7u zHY3MNAsdAsMH5nP1%7EBE=dPUE$K!YU3>3N0hXO zZ9N%3O3URfX}^ij=qPCq$w-1KX^YBJAF|8Dn1g4RXkqDfI9jR3h#7wFPZxist)U|c z#W}~ZW=Z4dRoonLsvU}J;$UoSIa_gq@oeRo@vt|=yL5`qajX_mQ%vxt__=h}lqxDa zQaq2kWvBQzya|_#d+A<4#(2jt!%}HfyfUs6PuL-2M@NdUu?FkHQ6MSGy0h%S@v#kJ z%5#AcJB1u+eFFlL@c z)r7OwER4nEXEAAnTh@Sn8BKb zA0-aQzk)eat~JGx@v!{B2mowxQoy~-FtpU-IOiRzL=~roSDdM|nYx;WPut?`#5{LFZnDb|IQyhjdjWip8?7-jnzkGPwerLh!4{yjN zS`WHMo`Tm(8bohSC5hAP$f;uKPAUs@kwdg{c(#@KuMCGeeDL4s6(Ggy9j(Z6X<57} zehHV=<%6d?Qhei-t;{KSwo`oGo8n-dqBHxtMosZvZ;IP#E_L=bb);C=m0~q-is$LZ zLdHagj60=u@yhtS_^uAEK7tg(YkqfT+9#mq%CuRUywgV-6P0|Pmwdn>(0wOu6?Vn5 zt-_nVDYnolIvc7=QB%Cko8n8-%TvW<{|P(Aop`oW+z2nzCF4@Molv3EN17&$msf>v zix28h;gyaQhdEMwTvF6N(zc1e1Dq^qeKs>#Piwc}|n#;a$sp+nWPn2}68tA^_PA$|>& zT!(kF8l$$`rxx^lksCc7VpWPN)@6!Grmb9~m!wy!^Z%G5|MBd|e;GY>n2DwIe39Zq zjufX!E9q6_+u{a0^B*aOb9t@b2rt$Cnrf

Mc>JcJWgES~`+Sj(QF`E_KNf@TT}L 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

pz{IRQKwc!{Eaz8|Z-9 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

-*U`s>h^YA`IxDNCml_$50q=4kMcSlv6- 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 z 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 w4KKFf|cAjj&C>#{^Qh|c@YTT)S?=~F9cm# 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�Q>hgoL~Vo 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%0DAF4 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

_>puF)LBl95)L%PY%MQl+mf%dO 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%0DmIy303ho8yrkf$M<0-B|CV&5ZvOoO&c z-wY4VBo{j?tmEE+XSw$MyYziixwC${mD zI-8NV?>Vl{TfUH|Q}*qIrfZd3t{;bHDV>z-f?uw|(`Jl7tbHet`9@+Vrrliq#aR0~ z7c$;{o}1U}p*gW$#cLSJS91M3qw!$7aqU}=yecnt@`^9z3qGi@i;V@&905-PC{?c9|mg^TBUP! zhBY77Esc$T_?0{xOJ@d}@mIJyN1<6NuS@9cLEdGoaT}eV{c4_0_45-K5ift`RJNaQ z>D#0CLc;rHs&$e*G*+VoSBoCr)t60Wzs;w!ANln4x%(AHb>E3)X`HwNdad7^c}RzOlLfbExwvup*5uG)t|f*1%8MBTp-VAq=Zt=I zh2Qj2U1)%&@ikM~LFs$~G)wDD$5;E>BI(?Zyx&v*jLxUU>l}q<|Ldl*FLcoPoRiYo zdLo^vOKhDtI$xBpQ?_obr+>O)DyuTpPjz8CuwB4DCII<%$MVE2Ij61%@Th0>zve8L zWb{Hm2mKn+^Al_USm_(4a%W~`(-B~+fjtYG+PcoVoLkq|dw1T=M(R3eoWG!;Ys_AW z@=K}DZ=A|**CfQ$eKQwi-jjU1b{7I-W_7;VzfucrWAl_*Z?N+k#fQvR3NwFc2Hy|f zpI4f>7d?bF=D4DW{K!swp)GrJye!%80Qe^GMwYQ3GdAy>w10_$iEpK#pM-u0`Zw}z z)5d;a_Pbo^uB1q3;bqwKEmPT@Ihw=;5ScNM<|V7Zw}bcALPaK^ER5d(o|Xzhp1;XVS-* zc71{Bpl#P{;U5Gyj;yar)}^+-cj_E`?!BaH-EE;ge7446G1+1sz8`zB@GGoLZw{FO zzxI{v*LkaztFxach?!~M@H%?Q^?BoJ{+ZXK^FN0*2tD(EA)EJs^XlBvX$=}YGpfT^35Z}~| z9qa8pwft4A*S1dO;xUS~q=9V%c7p_&x|xfia9yqqo2c$>gKiKyzm4KMb|>v!tqryo zZ_%6>c3b&uAKC@qy^Mv;JYNnma5uqza0|!`#x4ed%>(OEdVF7M_ID&c5|%v;ZR;Yk z3t!E6=p9pbKOdsf{3{2x1DNl#mX3vG;5mE>JQ}0yf@keJr*iLn27QPZ)7G<0q4+4C zNxpCp-eGvz${8+?v?8i*ffz4l`;A%AUpeiA!(#io)qf~+0yp31&&F&kK0*G!x(SGTVU4?mQbeem_bH|+8)VVBRG z$S#w}s@O4={bg8IWS!Vs<4NpaOqTll^y`?fA*<81abA8DH)Jd6DrSUu3oOS-j)jx& z*p7z^XhG^1)Ni#TZ~i@gK7(rz+FE)!{@uFBjU|P3a?S3ah;4y?5dMz$PGz?_{NdF- z_dJ2W?$6L6c^$>ANqMmQTUV64I|jU=h!{z77lG{p)(h-xLuGxzK4AU8j1O_|e@S0%m#(<~C9V5k zBySM9dFak?c?BB-HWz@UfQ?|M#v7;18n)9XDa)C^g0tcUD(v8k!>>QQoC?wb8@usnoCbR zG^5CwB%0D3jRv?mnqfCR9imC)Xs-5X%7GVNPCWdEDYIwO z=9`+wy)IiBBMZL@d;vCH&vz8B`DHEmH2BBo@b-=y@iu{53-0MT9BUqzl$7f74B>Zy zuQ>s}7kvE*@I&C6z^iYtX+!?SzWhn>+fTsnT)}+o1o#T@dryF`0k8V|jG+E{Uw;$$ z1B>8gyItUiz(;K-To1V6MQ{hfjVyvY3~qE0+#I;EMR28WVEnQOZZ){^MR2v?CKkap zfty?e*ADJT46d5Ix0B9kaR1=jNmFl)e`6dHJTJw}f_cH6k#W7YQx&B6H-wD$pL1XK z*^*I%43P)krK|>i1e#qt8H-TGow^h1`R-zRWSbiFq^0Nbcs&_tR_~h1{y;Qu_VoB? z=zM>jU_CPAsB>+3FEWbJ^EAo0K3>lNG<(tWGtulkp`LvaJtlUkcC>(u;naQRzE$Ve zd_9m9RO{cB#Ckr+*wyWS+*k%c*Wh#3c z{fg>Yupd_M`7WiKqOx<9%|%s^rO5ljUgBnw`&*mt;Qkiv^t1GwGIzJV(`~EkH-4`X z{>PCnwR2}y>GJ10lHU%#?$)X7r-h%l@`L-6s4v=|l+m{0(A)qG@~eaJ|LEV{x^ns* z$j|ItzT4?c?n#*W%>sGuM*d%Nc_xEyY(RPbobsF-d~7oN?#ke4-Zz!4g2y=%nb_)P z#Z>d|)-!vvRA5brsbuKM*drJ?w(sLKA+MG+YA)kEUug{Ay)JkMG;430%C?K z+`Y9n)@di6*keUch1C)-htc% z%HDNX`le+CzdhTH$u>x?eRD$XrM8**!^iE|A&|Z;%$Kh4rePWA>XC66x)Is02^kUl z`Fo&U`?W7i&cz!rw~o_?%qvNk?&ov5l&<#B-gecc5opq%boK7DdfiyK*~eh&l1l5Z zC<|4l%_hEAO#UuLN4<0$l8(k)UD7ze_RWmfd#18qG6#_P@KfA3m!_50!H_*_pc#iI z-8*I92${2b^X`u^F((b^*X0j~(I#CLq%&OJDvyKE45IUL(LBrQ4EiR`E!GEJvFkJD z;H&rYbDm`Tu_KjN*;}Z;$la~-da0L}xbiY@W18|>w?uh0BlBY5vhu%(T zW7FJY`zoT%E7e zKOf-kLv7W=hL!o3B)D}YgS-}WzDV*qr89qBWIHr%eN)-}vhQ9`r?IcO56AZpX1=-^ zQzbqgtMq)cE;59?=cDs!(s@8S!?snK9)ae-m!`6}VjJh6r;~YIUi~yWFDU6sBzG^5 zRhnD-tZHGb_~iS{y`awDrMD{)+)yoF+$fqmr?MZBFH9bA{W|yP!=V{4n zxkKmLH3ht#UVIwUniRa<@ZN#^_wen!2;RtDI%?yC(3F2`D$6nPq2NjL*?^v2?u!Ig!|{^0FG5g1e@&pHyDn8JCw$ohvqym$wJ=V%M&k z;l0z#OJ96mI-#jPIAz|^cKW@%5X;}gc@FYI=j!gE-^zf1+a&U*`X(=9$Qef0bCj3+ zl$T6sETp{5L$e)SCNB>zk{6ZB)xo@MEK)zX_HD}wKH}x&G2h557f9^>ueUS5|L#;4 ztL1*Be02e@{F5IS6s#B6+6Zg_SUdc|*un^~9l#1*iQ=6A))t|g1GYUtr#3K6x?6#L zz`-tMq}%t=aqVtP$!s!tq5N9@z$Uj2UyU9ITl^6D&U$3R6l?<;+cZJbarczD`^wo0 zjTzgpy>e%=j*f@nvxbnwO^M;kSM7!VUC314oL5PvKep)yxB8x`?A^}=*W}5fJ!R~@ zRJu4SdH-2zL=2eUzI;vTtId+4%556nG;-I-?-UHgmYZ~@-$DFqb}DyoreHO|4gd?< zeH*ZTU|#uZJlX^X7i*$@8UAE!cZ>J0)L zh``2x9RQ|vS^cE@2(Uq5MmKjP+dGVT>KEP0f8jgnU%+d8W6OYnuVT-NDRW1r=uG~h zTSZ-bf#~>|`~#~87K}k{1C{~CHZ1cKT??=}V8Qzg+JV&qquQCD($Yp+Yk)nUZ>N;9 zFt(z{W^GdmQ6Hwd&;#8U@$HiBltV{fjr%cU`@_hsMuvZ1sK5R~l}&as%uCs^Jv&dg z6s6%SzMA;^+?08XD_{f0hl#z^L%Z&Hei4Ix`zgKE@D%>p_RIWfVw&~9nt**<0NPP_ zE|pI71XY^{d2=g}_KZLLlaGRbO#1)w$n?t&W!upY|I8xk|4}ae%;wnqq54$|PtRYc z?Ec&fOl*<$7kd}4%BmTB!F&+U4G^rg3AYPeQwaBNa9d0awFlfVxHl;+{6v2MSjFFh zvMjyE`3J~*2e^m%b}Fb7*gtR1xUr-$@&D}1pDF-_os}vdbMU|MEO#HpxvEqCIA8K* zn^g}J|0O%li#_>_Pr~aRjme7WJi?x_u7`gm^5y%S3&Qd>Zrv{Vf1fgEtei`&{9sIh zLl}t%W5%uf;hX+9cbs#T_~wNvb572=(aO!6N0_xEu4zp?u;@IZ1vzg)kJ`WUN$Cm4DAd;WUrW3JT|qxP z2y8wA8v`~6%=0PYJpybN*t7W7Pp}1G#s3JyO5cV3Bd`i!H368)t{mP*U^)}#+)jE; zzvcN%EnB$#7S2j_whsEQtaQiQcPM`;v;Rox*oFMP$O`((eZaaRu>HU~fypoGC*DC| z0}rXa4-kIKUaE+d!_W&p&RyOtdR`gP6OanUdB!@ zSUNpNpzri#o$sf|_^5Z2Z%@{irDd&!KI6%{EG#PnZnY=tbxX@?hrY~{^_H-#Zg44N zY0cSrXH-_=`@zbfx;X;<;U~B;vE9BbQ_rray&&r`(CMdqFF-#5O!q!JH$~*9^^S#K z*(87Ub+lpRoBfKnNxqGZNmebmvaBoXGfT^AgZ>In)>nL4N^3u9twomS$5dyAfHeX8 zCEo>G)c3N9j;&{ji@5RqUHaR$?P=)B3yy{IIf<^7z^;JRxzkG<{h7JXLfdV^`7A@m zM44N6?^fEZAFG5v4Xz4VKbEXR;OYW#%1ojyCu>ttv-Uo%bN7eJel76sL$1cG&Mzd_ z?j2R0dv`FNMeaF#>nGR%uu)*IG7t+J0am`uhspM`O*1gzb=^i53B;%2J|W)yum{KXKNMz z-Be`nixAy3baf{|SN1;ojgz3Og06cBI@zKYy+hEwjc;dzXKT0Ku+4x|lGR&H+|0kO zM1dr=i(T*@f1GRgOJxh|S0uLw+&FSg-F|J1Toy5+a=p3JIJ~!ea<2-@od-APrT3Z` zxhF{PT5R$tH9oG(fPEBqnyifGxej+Tl4_t*O_j9KvcM{$om%8@-Mp$k^ zJO0d*`<+vhTLtfKPwxF;x!b_iBiEGM&tl}BpxpMt`!Y}N@4|BX!L@jDXHHG-G`xR# ztZRpV_;Ted3U6S27`Zp8{x1J^WPGEIZEhdI{$yW?|7!j!941`?=f2lXaD3+4z(4mIhacEHm!9CMqj`9M}l` zUrJn?-w>9y16(z-Ua5S4Fd{2s_BP__Y%oN2+7JC*$TEGxt&(N!q;w5~t4Ee8zfVMD znR`LPd=+mLJWJ`3LT zbKclIzwXXKfA1M?-XC)?SH7D2m+r#fBkQReb3P87A6xME^KBxO{@%zEA}f`$K?eRC zk^NG>os49+=GG9^uXcWb_IuhfvsS^MW}MRltOHn?0Q_XD1HkqIYZ8EcKJI>5lLm9n z;T0w6tHWCgjjU<-M&Q%BnSL4mO_HX0U_a8{gKaiXC)jJai6e-~uR5`7AGx@1C3+@` z@5|nSd}l%V44;>*1>Uxs@z2wbWeK;K7}?Ewvn_88J-5Gd&te)^!9Ij6=Zs_K4n^Dl z6Sj1Hz=k4sg2|2;mBB2uwb1H(K>;{#w@^I#l{D#{jQ-!!KFL%#sM7kg0s-i4ldV0S4lf4$9XX9A14doH(N z2A9}n6r7OY%c%0>VvEgtUPAV zyu-|*$SVkm7i<@fbgu=sM`;|gX$vLINp8_P z+7_*&nLTCl=K@Y9xJ!9^=~l)i(XX zy=lrr&y9>1&i3;l-?0zAAz*i?-CY5nX{VS=>lM|BZ{<2|()vQu>Ryq#MP|%h;ei~L z>m;(?NE%FA`>@hr`*Y#SKg4=X#faV0!48{5pGw^NTS*(lbwbCXk^!!>#?ynj4NY(Snuiej>(m6`(6R>2E6Be#zL{ z?LSlOMdUqNtqqB;4!Z7>pxX{z?@7>gL$@C~b3aW`Z~8Sky|VidbVJaU@NMm0XY4NA z1h|1ka0{;dIKGv8SkHhjT9%Tz7M#)_hs%KLTLjkvPWg%B>j2lk2(B000dR5Y9CY=? z;l{zKJmPTk;JOyUmEFX6e-T_7T-zeJI&dwE;F`fTE`r+yt{z;RU3$Q6TLgCyT*D%` z!>+zKnRDQp7U3(snRrnQPX1vvIOWfaa|l-L(g$Jnz$8BiYX+wLdoZ=Z9l(@+?adAO zuvJ@1(tgu2ZL81a*FF|Y8{Y;;p;P*oqML`V^(5$0UADYWBu{y%g|7W1@*>*p(5ikd zm2c7ZK-+PWv?I`Vo+Rx&w5tElLPyy4Jhm3Fz0y$eVe9{vqLpvRK)VmQac!;zoYEJ? z$#-^ull@L)XVLXTCwnYKcNjY5Zz;NhTWorlqFV)B&q>J3K-aefo$S;GT|abDTL`xo zT<;>desHpHT)Q3tCw~`*I|5GWkHa}1iTCF!`xH3kXQ{es`afv*L%WnMw?ij?z7${h=H@atMm?OLU1vSrEmp^qOzLXL#dAbE%W?gSeW9aaHLD{?J zzi59aVV@T0Moz&#?dTr&?DMCSx6c54^9!zh9{;^q`;0@=_zc%RPlo0Z+NXj%4WP@| z=XuD9u}{-J`g?SpsQ$=~ozQhIL8p3l0J^==AN#=d#PESK_il8Pr!Me+XFln?(3YQjM%kR}_2-ms z42?bYQ+7_taRjEFOh0XO!S0iuM&9Xvck9e+RgU33^>yeiB~9h4j%7bComZZOPP2cr zl8I?VCGpS{@?@L4A3kK?iEoq6@E&wC|G$lR-LsBmQE7gH9ROAXEE#|e1FHt+1YqO9 zsv@viV3ojDxOB4h5z?_YeJuMtzMXc`fj{2K)tQC-Eqoz7z2MbvI=ejlH3qNr)L@V~ z?D81C^;2D{f@c=kWqdmw9uIqySp^TSO*BC__BXfv?2`>LX3vb|b|bf#vsihx|{D(qfXkcz;{ft3efs{3hRD}hb&tvBL>XDYOq&I9uV z=QrB(&(MxT>)Bd*T7ew~7A&V-z{Vo5eZWS61@qoTx<`QBj~r*f%ezi;d_8AWwW|T> z4$L3QK38=2DepG!A^o$+-S%u>uJYu3g83(~rSen-Z5jM4pX07!K8S1@(H`9?_> zEN1S^)}_;-kR3r8)unp)HTGZpx+DqX`<(s=HE2w>H_u-zMVhVd#xd-e|}H-YxpGNS7frZV1BY+Jv;-z-oUq$9CYo6Gji`~ z;(W)>82LJ5V#|g;-z^&xhs7Il zXKk$s2wMke_S{Y*chpPQzn^-#R-^a$U)*&4M>t(IB&GRNj0cf_ft#+NulCRGn0WnG z4gGYlUR~Hxo3idl&bHOZOx+ID4~8=rgyyYMqcWI){_vV`dz%9`1}x}P3wy|a1Xd2L z99>>pRohAfTM6uOQb3eY>#g#W(p3kpJ0hbISYbeh=(YoMfQe5($?X7E5F=N(UY9p|W;^8SPG0;02A zp=-{M3;<7I>nMB_cx?opg7paSR^Z>49DD?KKfJ*#dMQSIk3Gv=OmMpVd5mjRG1$W$ zyerT>!B7CD)VOGY2br`^Q-3H4q)TJ{w=4^ z_X9b7UySJEE)h>(Ju(K7G4Oo+mSoWRl+yKl*iFYKFg!tDZAvk0yS+_pt<2f?+(;N))(gKGzO1K;YW^WH;o z_he@hugY7?*=(*Qqj|%c>cyY_3*{C=Xm&!Be zoSkKHxn_M4_C92#UT`eCpKt5;xxh(hq*CTZ3%g#!oK>`A(Dp*xollE)481q*6Ra25Py{vr zY%l^F0d_C|Q+g+W4FEft^h#Ih=jks4G6bstHWqVS;|V5+Z;z?2{Jh6l%n zcGBL|?`bTw!=-QGTlFK@M$LIfx4yFVAg{ivejS8=0ok8+`A^uU8WSDywab?4G=m!rG-xI1@yo%+J?*l$}O`@oSW8|YWZzYIJLz&^vo z&3U8OAG3~eQhL)rgDwsWu2Fd8~ztMT9vH2Yq1 z%$}3|2{icL-HAwyY4gt0-nAz6dPSHt&P>6#0N)$QpUU6)C47+>lj>I07pQN@Htme^ z3(keSlZ$qzk{utlK)<@m9}i1L6Lwk!O#Qg?TWgaO*?lkczaq~%v*G-&@*KANC^}Xm z&$GL9OaiL_*2}l*Sty;iDv89l&m)SCNWZ8~pGoS^Lb6I_QC zQ+Dos$qljv`4~dB^YZVLkN!~EseQCVbMR%yvKi5Af`+sQ?*?SEfqAEZt3^WNDQ~VY z2!AI!Oc`Dx9o4zHg5*zt-;ez3B>y#@d@}|y<25q|ArPzW^l@{!6n3ie?WX_wuzb*_f9{3m2s-|oznz^{$71KNsuOn*=gixb0B7T8AqbcMKAaCl}q3lC^JAYMP219jAeqkJ%(esaG8<#;-aCgWrWNvcy zEbm-_S4cd-!F$gw7};gYFLu(o1Lt}0Mf`$fS3)zk-knRoFf4n+P0ofr%k8=TcdRLW zohLj6pKS9+WNR+ttk0KS4SX*&^T>X)XtqKV={Kme-dlIIw$|nXeQFja4~LOa>eZ`P zB7-?}u&mWKR(=J;)EqN+KLm6{#!`u|+NPJ&VSI>eunqn}__y+%<9FxyUX0|raI-aY zg6&_X|Ans^Hs|#x%pYe{)GBkjbNL%UMm6Pc+WlMO^EXfWCeZVTVETgh2AaM%@ySU3 zOg%Pb{8ie^hGXV^vc>ZE?wI`5qqh$}lfSDUS^oARqjk#7-}~b8cbN3`qvw(4Z)HE@ zfsLo0zqROXgU{5@|2$#-7OkIc$mluh=I({4o#bJ@}6 zz8m16r{)iCeEw%PFFNp*R^&gUTeno<>0n~YXq0(+s;!J39-Kl{?`V+ z6}*X4`e`6y@&<2)X68@3(BA=FJ3P++gwo61LW#gb2ljmV0qDQ-d$(@QD82N3N-#gA zYZko&$kSSfO&2P!w0ro3FFn9~Wf8pWR|fxK@O$`n{_Lg4?2*<&DtBtS_QM;?Mm5l{ zAw5qPec~R{DfCQTa3w;s#>f^X;F zNgwG5$}{sD-Q8;A96Bj*d#pfgmqJE6@>Y5IeXjDGe_v8BG#%)yrpY(}C-{UYw z?p*H2RyOhMHo==>A-HT;PtkGl?CxXU}bb#vZDhUGQf}oAfwu zP}=UF?X+UTKC_&^>vHcckTYMu_z-M z@a?~lIz_{E-WsxPWZ$ldTQM$Omi$Ege)`8I zlX>m2>@&r)4<1u?_Js)Hi{WVmZ|14p9^S5z$}g-2-;T_U;_tC|_pKNl45uty%W9CO z@@s&85IdN%+^;m+^Q8KF?*Qe6tmxhurK2BQM+^>>i8GIap9ddYbDRV=7lF+Kn+0~7 z82Od*ulQTcw*oNLsT8my0bY-`5_nH*cnzfv*a)<$W*%K5u;Bo|+SoR9%l?WrI|n>l z*5D5MLhG3A&>i^AA$y0|sBF}lyHBAToXX3{IJ~%wA?R-RWX$<8cA_d;#+p?)EH%vvaW`t8~Pp4FVpDFvq{_x=Dzc3*hAe2=i6kr^6#>Kdi62;PNzvP{bufd+;pNYe9WpPP*qL+YJk55 zezkGi?~-40uf#jN?!eIPf^P2;bn3_VLw69mw@4o8*^@AB)<1ixON?F>=@B8Fgl`VM zC%AUZYcpnz(DdQzRllaQH@H4b9NZ_h*}Myp{vQ7Pnq%2-xoOCg<&U*=GjUIxB-MpB zexSyO^7wjPK}K zmdq^TJmeE92kAfC{Mh#i?a-Lm8D|HjsU11B?{?RKDbo|m=~}kvL*q)*2(rqrJ7(_v zUeZssCJru^rn2wj-;t9(89TM=ZQq#cLVA>@Mr7@~KA1n+@M7m&TND3?6D1$hhn&_O zC-&8%8-=cI2|BgydFa}q)BQHqxA^_7@hztBR~5b@ud`LYD(}X>!vARcggWFjk&epu z9JBX_b>L@B9WXZX_c8kIa}(PVb^lq6!R;Q61IT;XL+&1pTag#p$EZ3tN7{$bS(+=~ z6O>6NF&C!|G3E?#1+r?}iDSHtex%3iC+zytMK+GirIW*}*}+`1rXczJ#G3wP+&Y>3 zL1Im5BmXa2;R4Pn_CmqNC+8SYcKDA^9Ll|MrSL>E@YZ|i@Ber#yO2Wn)FOHD{VVa0Wb$zg24gG3 zH5SfTF6hK{e7OMe1>@*?J8Aen-_8|3A)kYxyGb*^3rOd}mAb#`fX+P0b=EXP|%1)wHa@nH9|xyd&`LXCCl#zMU)Kjaj#tg=YG^X}f3ss(}2+ zeZ-0L{l!wrUPW4;!CX%1cHSK?yZPQ_>|dD9y+vi#s3PkDbmyUAi1OS6UoCvE=6i8J z#Q|n<;=(8*mRuQsLq15lTHw8(Z|4Tm1v0qCZsrxVjh!p-a~yZqHszocPA}_Ba|CMr zOgZT~AA7Ep?7hg2?0Z+A-S9)kE9k$EZ|M&0r{rRQm6V^iJ}fz{$ZUAwv|ZcnMkX-~ zoggj;*9oo>+}V6PJ>blEcbgf{$`9;!@#g*XUYpnWzSP9Bw(w3d_f@$qhe%P*bng1> z0`jiI4{V@~JMVgc{Pipk)>G+Bk-zDePTM!d+o3V-14()P+sWx{MP3~?H99YOFjnVY zXxeIMlbS0wK(mz2{^eK2<`Yk#_Be^Wv#GnAl+W}SI>UEWKvK}azv5x$16!xFSFDGw z3OcXt(Ka^8&tG6}7oIwEP3c8z3KCyiQ+gHNy)U_@^kV+}&YIE-`QLi`*T9<6w}SlO zX=5U{lYn9AlL@<#Ve+qhsS z@{FDQe$Mw@Zfuj;?mu&e3c5^N-;2@lY}RDb$acPnyqLX@X=u7{nzru+-x1R3_vOZa zyEU8{4)c*7n&pJWXY(&`JtyXt`3^C!bReu7Ny$NOZ>E zBrZMO+{A6y5~{$DfZyrki3sVYZi{aKU-jX5yvnYTbnOTKR+Zf|$g|&;eH(_yF3HtP zl-&VjrdY2r^>m}`7#_b!?_p?qZ<)@Xu732wklwhsuEtEsA1$GGHF-VEI>#l*cix+? zSN3eVAA9VLw};Z(34TBLukvmEiyNm-B|7OX>@D0(L%qp!DP)82th#kNx5r+vF<=!D z*b!hUV2)(-6Ws!^@(5k&j~V|(U=_g10%j<^z0oF#0yf233$(9Gf&tglnPvee|Ji2(^zucJXe-)CpYh&>2 z^<;iGU#4ucfJ_q;x;IAV`h1x+@LcA}d>|}S`ECMV=;iyNkj&V9cYC2P_vHOPU)}-m z^Q6&~%kib~aIic$D`UG@q6PHss~0eAVd z3S{@9-_)NMO21zojo@p*?>ji1os_SAdA|Hyd4CoK!Ap-=kBdIlzNN^0{yLY6IunoY zL&poeG+Y!;14%Hx?#KhgD;^Gyn-+i_jKE4CWPbL&>D;=I+Grtk2Y{J2)nM~*qBc+| zxt_0UR(gD2SBJc9;CqpGv+7r?m3M-%`h~>tzYxEyXwPo;A@2(GnYFjur7wIJ*D7?5 zKr?vvboMCU&R3u@?IPE|Jm8)FSA8iPW4v(BboNPni*6?i=S->0eQ{;jrvu!VRp0K& zPrDgcnm(H|Ogm3wp0O;sDZcN_t=Tjq^9VleEOa!m6*@NE5WZ(AJ3C*pqE*?=ci+UcU?c82B#=Z`vQ@*Wlb(w_3eD z(g2yKDJDJ$Z!P0D&2a-|ib=TlE|-kNO@Tkm`u#k76YyokM{>A6s<4vJ(x21+|8P2c ztKf^JMeFlHXMk^3y{UtD2fU-=Z7NBQ*gNwx!k(c7%%ER=hl)c)B(}c{D*-%xi23`eC|FW5ErR==j>NT;a z;GU#c=r+wuux_X|nLUciQ#&#qNB%mbXHt6lm)mvbn-XfPJ>WZ?nJh=W3YyB%fn}j-Xd-q)vvYZwF8d?3wT7|6Nljqnr6N)b+pAcV#wwV1r6aSC->uEFD zOEgYfiw#U0G_eCS|MX)dZr$iwkxa*r(@dGANYYx;m!fWbl5c09?ApbvQ@dAmF5lza zl)O2iI=Ky+182-+zsY3G=?m#K^Up2eeP@ghmnW}?uamhxbU!jTqSv&+aicd>Clz;} z{-xsCGxk0`-e=ZIyUO|qycK88WG_~FrfqsmU3K?gFb2%sl|oXUPEw*l(VP!ji;h3y zeD--(e7(l*rv8|7*qcixPETGQuQ%s|D#pnRc2B7dt~`R?iPNLy zT?@_j%9-rPFCrw4(@)8M78HK?S7C|zh=Joo*DbbK!kR?Pin?<_0X<`cBd;h_~xRy zcZfR1o84~;A78NR#a-}r!27Vv8$U+cq%nc^+x{$WDNlAjjGXHC&SV>MelijhWs^Z} zA8I4lq{azCj$~C#FkX7!OqOjFuFpN8tdA`wOXJm6WDU2^Wbfo#Hh1@bG6Hqa$E#oY zSopYA6{LOeWp1Dx-89^!eWStsVb-RaG9rugA=~TkR>6M+{`C7#uKddWhx|f&s^uqJ zW#H|DcV;nL8UNyyU-CU_=43h2%-0pkR^7;|+jVNTQeMa48-veVGYi#gR$}c?z@9-Z z_zm%=56sxRL$Fz}Et>T)YuCoGSy93-#lH%4)xv)>-%gq~Xxf;fH@cynaRmQrp}COx z>0?Dxt#-o3Gc2R;71KEGlE72t;9zfJr-mfwAoin)(=GP{#7 zdJNg39{P4qR=;HV@2GVCme}5Z&SX_}^i#d>0k#qtvmw)7-0~qd=)QSs%Ew&E9IE)< z`ymtXANk;niO<-wxg@t{xBzY%+|4Qs(-vtr;l0>tHUZJ3f|ETiVBl142!t}#{kloc zbau{U{}NO8{jro;``O5*(lb=|Nq(g6uQ&Iw??cwao*8qujP=cgy?1MW=1!-@ufoQU z4?#P360{mK&q7;x(@bvvq`QaA_#f)K&Xe{h62G=?BsZ|#VD2+o{X51_@Y21RpUSfu z*gUXOK}_Ah(AZbF25{4h;M%}VfYW%*^1Z|G$&P!$IX9yxXUDkxFzy;!b>dL03t?SR zX_`RRFtWTlrSaEcY%m0@Oyj+S)IrKV*w1XqJ2T)UAJ7~y-%;iEwaYdGtlgS+_y^VN zE+;w;%0Scd5m)d3{%iF1BJ<~--n0HUPp@n+$z-AIzx;BO4aVUs1@?5=;HmJPgblLs zHejcv^<`=FOn7OzAU`eATMy0fZ8O=m(tByXUVq+i#)6Ffo#b4+-rShG51Ic&?_T6P z?eTg?py~RgYx|CTy^o~KQ-4@ia28{3Q|4dK*Q;1(4K$UXnaTE30iAD$^wO5yGyl{p z_pO2p@CzH`{lXR#>)ngIDs;YFc^#L|@SSneIRMS}&(37qrE}8LY1$C?J_YX?Fl~tY zmXc48*JX-7 zPa9X{^Y=pE3%%x$qIZ2hbJC#C*TM9ic@wc3SjOOYJ~xv+=JLC3JCb)(zw{{Qy|E1& z-tsBtOUT)h^FxtwpD8z2PHXZxi;eqagJxv)-_9Js6G_ zcKGJuyT|1Vj=$&_-FbJD?T>Q9+D%2`JqT}S->K=88rf65jRVtJLH#7J z$CX!TAa+c2z?Ih}SfqWJF)Md$X-`)*cQ{4^70UZz^1k*9Zaq2Mt0(#IClsLPb-#A& z$+P`>qCUEk0e%`8-;Ze<=FDBNZDf+4qHW|4b&#WawF_AXzBps=>@aoK-f6T7To1Sb zaM$u3^&N?~`t3$?`blr`muBp}xaX4I`jV7Jdueb-kdp#eo@-BLJmtm-(}~ewd!k2^ zA1#2Vc>hfHMtGbTAkXxXkv&9a9%=k&E$dX5$d8is$e7OVA<7`{>|eR|tdTv#>r~RY z9hy~Np2=P(opm9dCMIWW%lh!{6%U!{ua?eCa9Cn&&Xo_C69-J zy_;{R4PC~!P}huaNn8<~4>dvmVlQp&N}HVz8Q&;--7#a&8h3)RPon!;_Q0eCTKn?PquI>)Ten-bhZx+lq*75CjBGZ(GV7X7>PL&O`3>hpmn zj%wNl@^A6d@LQ#U{cpibNl1ek8$s9h^_lDkmDXc69ie@-ueHU;SgNMTU5WMLK;`g^ z!M_DPs=v;h^!RJ@l0OH&&y&A!>hjnAX<5O;?Atf;m;W&&Uv;k@{9)ujTl&ucZ`#Lt zx9(vfKU`q@2I%kd%?D1OkoaLoAt@Mr- zdh1HEZ|fZK-)~UIkt><*UK9Eu_uS>?lEFejO@+OXZP|>XODd^PGvs~P1yi#mv3hqG{#2M731&f^6K0?^gEELbUTfb>HFj~ z!JQ+d`5?GJoip|5qFmD>M)bPeAG~Tuf62cVcw0!vBjN3XclHtTPQttWTc@tKjx;;) z&cpk9;%`o~Eu&zp#Q56aSg$d8wWjO&gFU-fryhCfpC7XAzeBbSkAYJQ7R05|N(8dzFZJ@nUkvWCL4TEQLkWQ{B>s|Wg*d9n_NWgP_9k1Y8dXTp=^ zjzePXH4S~jlQkWdRXERl+>&6$@M|OMs8aR6-8MDQ-IBi5vp=%gjlMfy;b13H)r8~U8tO=TFXsUlWlYORq@oipu zB6A%Yb?%PZMjjK4(Yd)OF&>McVah)B*yqQjWgFklok~l%{R1}l{_OiZ?Va>Im-K}D zH2<0T3*=b&86PkD;Te0+>6Y+WBYWDK?!DID%PJo;4}HOph<_RhwvQ@aVErKgs{xk+ zRtfBY=*$?vj4|xEK|^p#70FwRxa}(Uy)Nhb&04M6U>*AUk+Yv~=eyRvp?fIXb37Z1 zbW1ID2e~H3DgHjvkvcS!{SDtrhr6a4iHUhH@8&vga~45tBABUyds4hJWDC?wiRzRcSWu+?xjxYuRM?|5bx(M%EB? zZ&V-i-!^T*v+ZVGVslBqliWks5?XmNv1hfl{m3|-^!$Wx=luVpUiCZPofOhB0)F(z zu8u9>&DaY&1=o9)&{0Z$uJv?$HLRl+9cl36Kb^_GP5Jny)e#(Dnb-_{<<1pGQ5Ts} zpddKVVi%@uvpbOWkf-Yzb2dMLflUUw9_bq+HX?m%pfSGB_z<&?#H=})zS-T+G3X?3 ziSL|qdgqXNF74CU@e|TJn759x@}KyVU(958OYi4Sq}R;PH)|W#rb1;RbiW_EK(EY>IOSRiZcn9Epr0sSWD_70GcH8Z(UY>owe5&ns40-pG zU!~3IQ+~t#SNSdD!j1ZgQ_rt>Gw>b>@aC;A5}SNOq!DYOT)ds|?)aaX+P@SdzImwt~rVHzKQsbZz@BF-iH|ey{xE`gvDgE9(($7cl!@SJJ`1u4Px2 zw8nR}W>T0!M;|)Yc)s`^m1+2#p!&Nb64NaGScYy%}?F4^S{ckTS`Z3lC$oCbhH9%hOY@&LN@xnO^4gRv1SvzyPl$Z zbAAxz{G!A=@}V_F%jG8@tdMX01nUL1 zHUQJye*jn-Sh0xQ-)jDU0KKb#KTo#2$V)SgMR8UFQ$u!W!AxmW(Msqi-E^uCb()}8 z+=&27HGi|%S5SOpCi@-9Y5_-s3${sreJ1%PV$h+EOamW{0cwyjKI+=}ddUyZ&!t9m zEzmU{ow4WhciMFCWKD)7-{oBjru6QGt{ZtKy|=pQrF`Vi`oS$AqhIO$giUYWI6~KX zovzd}gkvb@`H&R+v+y@~Y5kI9`}bvoHfsW9%M+}1v7bbB;_Ft2J0JG_Luj0w+#4UC zw{KZDA#eUCu6^#7&agk0-VFabp_`p%&4z_JXT;OXyy>Q-(Hm*2?BZCSJRHAwGq;Cw z0-2rYw(+39qMQBIfj+kxz0L~yuk1|rZsoTQ8VnYk|NHw|{CUbDWjH?oz}0BmV-emw zr4?NaQnOb`?>m*A@H|Cj-hUeQT6R3J25H~l0cFk`jJo*k0x&jbji^xVHSmn_ci#B;(WI-cfbZX&@?Dunk$4ES4YAup^QN`MSc#BnsN$dl79XU&fp?d4+{Pr$ocCfAN|oG3a2?=IRc;#IZg@MFA2<6B0`rG0B`He8olb8m zdWH9CeB~%S``}SF^ppRb1hyC06AZ+{=7IG@=!!WI-3{z10lE~hz6jk~V7&pl2IyBK zuOHYk`JU@+JGn`7|6nZBjQzFU;*GSBXxGF;Ld+rap|(HiME=J64`u%iT~3GEM!3IH zIgF65^3#rI?^gQJ#RW8G0;%+kz&{G^EC>FsQ2LlFxce$h`nZ-gIUke0jYY|;W5C=K zoI?I;bboK;khxFE8BzLLL;b1xrk0`v|BeUl4Brxnr>C0(I~vU0QSHd=g#L%}J%_zC z`}1#Y0RBuc1i!f``7)B|Z;aS#?gJf0&TXV^J!x>VN?S%D`I``H&ZjxWiGsN^j%RP- z?*c{~TzXRYiXywtp8`|?etXIB?AL^+MI<&ru&L;6{MXE{R{^etru4DLvlpu3nKq#7 zl-Jv?>yo0xw4Lsn_15jst}Q*DeVh_tXsHv4A6VLrMTw8tFD{t;l;KK2)(21O%;Tmn zR@rKapm4oO10`VV$OtqCAAj7OO*Aw-NJv1G5tDA&ur#yK)IQ;O_I{;Pa@bnIIX&ei zC#UQT?D52aE;gG`k#cg>rYfQ7T6sLT7f`S|V4VS&{B9$#4q#gEL0_qER26L-@E+jL z6`Y@FJAoYp_F@5`)eDoV*S)|eBQiuHyAOh!2WQS9@@7}=E~Ydm`c`f*_TxD*qjMVC zs((8kiun|j;4cHP8f2CM+Yao2l+Y&x=X;4$i1}2bZyGuK5#yXTZ~D%VtR-ST-K3-8 ztmD}S+;jxTUS>W-AIm=a583W17xOXwyKFNK{{sAGe?ODdoNZF?@|M|n>dLOg$TsOG zAGa}>BAeE{zHo{7NE&_D{>Y6Tv?3!CgUNueI@{IJ_Q-VXMaFMD9seEHq5k{;_}X)h z+ZfF6td2(-gDH3{KKGEDpZdSq{6u0f70}dH9Jeu;2592ON3=6{e;=!ROUGc^koieZ z?|ssnAA{+JCiBeWHU{(HiS+uhkfmZUv&j4ldQA*w{lnhxA< z7R|4(_xAW0Ol~gLjLgh^uHJ9w>(w}-4`-Du2dh!M&wsKA^3N_m{NQx$z9Ha9BK^VPa+}bhM%4OzPoAzMY?| zKIF$U1|H9Rh;(>+(d(e?hi@9#x5W3WP}=-+g=TK%p67osw*E@Qra?s2mp!;YJYpG4ony*yGusQKyxcfi{Tua^hO+m6l-VAC4&{2w|^ z+&uriuH-)zbJ(t!Lv9axKfITb-Y+S=FZg?2%t3wZEIL=7=j#My(o)ETwiI}w0Q{7` za$v;)m~31Ie<85PsQh1s4%7b4JT!84vDTj3&LqAZYhyQN)P%eXNi#?EcoPkIF*fcc z9lhv$P~#=^<@HM%$NV*7W6E$PInVYDuSO8ZC?p%$9B7V%wr;Xn> zeoT9a4wDZc%;d;vuD7MJ%PzG~OcYeV=y>+=F|z#lqdP~gR!k#Cmg%`|oM8uPD}6Ej znC$#E&(4d+=D0k4v1=ym-op{(oips-CALF$4!0@gVHTR=mmIfurtJ#pG-aDN*Uu#W z9-9xhY^$-!_kQTcHvTKWY%}O=g61$fKcswq%G2quVfb+kQx3ZSH2Gr2_%W?E7Y`jk z<}1;weYDPi^b*qw#5I)HacE|%j%RlZ<0!8gXd2cX&vFpI!1GcFeF>g-yU9E)E!$>p^dnIA>3_GCL}E}*w7 zFR#PUOx7IFu9M!gpz-T^Tzr?O z2G=b8wJ z^@H>BX15HVj+V6xo(@mew_m%gdB?_MAN6GQN6V^#XPYN$;I+%@0_Sv3*6*WbZHA|C zsas!veeJSlzKMCqvu+tqM9V6Hr`D5Yy<+-V&CNLDSy}g|g#FO-qSfZ2ydv;+fp;1*jUG8gGQ;`{7UN@|H5-3$^=@Ym%)0`44BqRZ zrqBMjkc$+JCI9UT;_vv8TaFb@-ptbx4`C}4-bnb6hhKg0_#278*2Di$7+*Sg8{vh^ z@BwJw&6N&*(4U<#-c;!Rrg_o(h0;2>_|4dW$TVfwD4Aiuwd7XAGjQ&1`)AU@%?BVC z-M=q-zfW3j7nr~Jp)2=ek{j0jvT+8FV?F4C-8R{dwsA}wamUuW#49;bBP&srhXSxB zF5GR;)7~tD@e9@>@D=?OLp6AU1e;AhjBCLztMtP;vRZc z5}zctC5zFfZq&}pi2D-w`nKi>9~%UxV>|VrvaBUMR=3;ES6R+;u!HR|BTwcI&UZ(b zrEmX(d7me9xn%Z)Yys2$;px15w|%PG{{`7{quT!&`)mKnc=4c$PLb=(T(OU+xTM{dV{%=%CMdI+kW8MSNBMUzcyDuc>nS7*dX|tN9aei z9nfah?@sSI7HtGtF0>QG#E)p!39P>a_~trHRiDhslCbX}?vBRYb|2qf++_So$Gh&1N3o)Ktm)R>=Dj3`=Q1-tRFpaV zCJA3d_^r~PM!tOYZH^pnMLRj25NCW$!N2|X-S+tcp#FotN9upI-lD^2OZN_L`x3LW zhS)*;eZ)_R;I})o4(GKW-c=1PKC1on6R)7@;N!*K#`r+IWnp>dJc1`LbG=aVN{Lr~ zknz-h8i-dzyd>=>P(I8<+KA2x}8qb3VM=E>2@Hf6KlT z<(H0UARTp4UPHL_HHXMOk@C9(KQ7-&SC%dg&IQZkE23tC!byQs`8wcqg46Ok;0%J( z`#RthpTvCmb--x=r})nQzMOl(sRQTZ2U1_Dc*A7%6)UEEvT^)*aj@Pe!I7S-1gD^R zx832UC)n@(`@`Zlhg-4ZCvGF|O5%ELFF0oi=!}aqlOo%__Fr-&`xP9LC<7bZabr_jHj+--kS;~X;E3!wp#H;DvZFgbEI%#E(_d_~^_n_t5lE$C4IDcqH;!ji9u$tF4 zo=kiG>TbJG_Qjg){2NTuCtbg6UA#Xs_pS}F8N45S+qD}XQ{Kb#TFD%OXT=8kA9=T) z$d>8b;-1XJMuz*}jh#ow1tx1I+ny=ArM8 z&MdF&{2&ok3bOahkWui=Zu>;l;}4uNjnGXE@y?8XOTEe7ZzlfRzqQ5K>DF&lhW;C_ zs`Ke`5Ni}1}KGM?$?zg26W|JN>Zmsg0Gynaha&%STC_Yi%Mco}GeAYe z-9X&hE$*DuAIs3uQq~X{%EY$~zP0<|Q#+b~Z!3IH@a?1p-R<5n6aSQ#6vsv>ey7&x zciYdBz>kbj~AJ!@nLZ<=y(8 zu$(jH75v>c4}A~TC-_$13eG(jrSC#E_n_-ipBthSmvFX%vkII|VH|paYm1qF;;t>G z;-87y=b?PhdN=EZ;2b3!)JiMU-CWW6Eg@`(Ftcxu@?A-Y^janK*!JD_vl05iYZIoB z<@cc2olfbzGha`-*Zz99{VF(CKV{?V7vB%TO>j9`_ad-ak}D%J?S9!0o4~Ai+I<85 zA1ZHr<7T1Z!MN<*eWW+}(r&wjZ$}=pmEc)GmGm`XXw_ZG>GXHvd3%Y=p%sJG2<_7v zFJd`&#;U@7!sth1L_bF>QvskModPgAPU&3*#E>4H3Ti<=ysNHo91A2+wGP zzWr<34i^*WBz`8_hqGK+bB@H{XE6n+N=1nG~=cq~I zB*{-Nb#yxU)jm?IU-=yj`N7Mf?|>(EnO?pM)tNcdt8z`g z2Vb&RuCaKi&LpFp@Ul0$GG-AzX}j2*DZ{K&NJbkN|K8xXi;A!e^~b(a{G+%3#Ch9{ z{&+S0QSr7zuRD6!HkVVIKFpMCrO~1$d>`Qrgr5zs)5kITo1Adr7M_7Wn()&UPSk6` zmEM~rdC>3Y+o~Zwz8$hSzb?)`V%HEsi%OSN!2by8H+wNwD*bil9tP?AW@OAP95(k5 zg>cvk?xL8v_!=;Z;CqAG{wgqh{b2l}uKiILzdoa;Fwg2UOO|x0e0G32i*%i?eBAG( z%T*6%?|I>w>|Z!$*xch3WAAL%-dl93bH`dL>kzN=LI-&VyAGUv;I#9d*{?F@$GVH~ zmZ%<5P1JVEs{Ghtb5EZ2h*Ji^aUu(=L0jV^x|?fr?*Omrt8Tq~R{77~4-_Nq>yY_- z=qPeJ)C%a8lsZ%pNvpD))=i5dTpWj>@6=z1TTf z`qKTRzXQy;m;MQ*zbjOab)2IIPw8Tv>eO|ZnpH^ z*$Fv}RLAqq!j^l>un3pSR2f-`tZ_H1Pt(7m58yg} zrylTL`I1||h2UlMFQt8iwD%{6&6&RgXrF(LO1s8~()Y7p==fp#B)+k;lb16-6!DpY z-VI%M%T1=!#n%L1-+uVY;Ol~KJAA8zhu#nR)hSYUJx#{ih1q(TD1*e$J%KWI<4;*v zdh9)-u2gQt<>+5<+71loy2)@Fz*z&%M-K$2E`C!Kj^@O@;0%ECqX?V~dyR4V^2lbc zjRV56<}<&3>#+UT1Ho#zc}lDlSo^@b%f-s7FEeh|IRkZifnZS{Yns@xX@YrkcpX@C ziiYiPMx-mFZ*UYWI$aBxAxu_=6X3UlFaK7cFGTB#lx7+cjRQ+fWmtJO?c;63=1#%@ zmhV$Felpj0SQo!F5({sfu-1Y#>%?LEV(G99TRbD*?E8&(MPgC8!Wsmt_@o2OW8EbB z5Su|*a~80k4wmj+%uJWx=G;6s=ytq_^1^zS{%8WLr#Nh1N-uOk-wu5#-;Vy^-ecX< zR^q%e!j#(BRlV@V-ac&KE50f0vsC?W7OP;r1suI!keR25vc5MmOGK>% zrwg1P92m|Qqi{4PbbwQM^04DuG2<6L1@}F1-`ABMzb=l#abJituo&Tm6zo~ex<-0Kk0hS=LLtW97w&l$ES z4h-w|NG$q^#+lqj`1{`BwkO^z4f-g}IAioy{QR(*sxmEU1@SA1-$MLH)Hlva+a0F= zXSE}2)@yU3GB)3_Ig}rM)K9v=?VmgB+@;9;PIUd#3%w7z<}&&bZ7Z~`(2g_|XU%mG z+IDESh*lXq1E|x+uE(oVZz?-yCGpc4e@@|I>ig7TyH@cs#$D!H-aZ!GQ{jbPjg>2i zTS44!xN(DHZbltz;QmC^!puD4t^;QiINn|wcYbc>eAJ0~m-X(ji^llxw-ImWLB>;i znpw$wv}8DaUMraHtU64^zY$e~%5sX|GSbii);+B6SxL{fi&{@IZQblyyjVUJ+F6FF zsH{$HbM7x4 zBmND@Fl(1zk&HUeZD#T{i!$0?itQ`>Z+Q7)+;;Dw@O6~Q*CM7`i4*r@*Vn7uk$EiX zw|-*s6|(E)N9bNcd*3>2-m})Y&>D}Mhg_sHyNSR4jA8o-`3GK@DoyFJ=?{@5&92lW zc>BQn)Z^|Rz}eGs3zfYZzb;jF7w6K{*iQ@Z`8z_O5~y=K-Q zC5w4@AW!mhHo~*!>|uM0+SlJ5dG1>Y^!rwei%oJ8O*E)vdM|?6ORT)~5O>cy_in)x zra5I6*mFBT_{4%?8+Sm=I+<`|TbVxTk3ZCpyY_81Fi!IBeY&2Cmd0bhMCKLB)Af=$ z5Nf;1Qzbl`7Y^GuDo?jMa)a+bm<8&Slqc@#p>4BTmG<4X5qCTIvWKiEh0mNfkf-$u zUo>oQSDv1lBu_!xlf49!yrXK`L=rjs!0bWhsgn5%$qf5xO#5Gky}M-CStEc?`7EiX z{X@H4X?e-ZC-vmsnQZd;wNTxe^>@|XD&np}<~@@6rs<)4N?tee>Xr_t*Na5k1g$ne zTM2CdS`D=KvW`EwJ!ka5QtsV=MLKzV)P?gHMBXYx>8&>Eo?1!yX}HPDjKo=xxv?b6lR=mz)x6)fOHk-9P6AiaFBAkXMO^1N}yuzdz` zt&=D_)2@w9&agjRyAeOaM5Hm~oMqdmvVLrfv$pji)kV1eOGskrIoLZF4%=Vi+p*J0 zlyk>D>$tiF4@=$H6*Oo*mB$o$oFLBTT+(?ZxW;$9+`CV!>cMGM?b9n-XC!{d`}7~0 z8{_0CYwS*%+KGE8XG{ZA+2%5w1K6o3h z9(MK);FovrM$o>n*0c|MNnVZIK(a+FRfV+1t{VRcS)Y+QmV@#;JU!QX^>%7CJS7>htO?YAZ^d&Um?zhY>xRWOQ zA2kNou1FDgC-^^5KV5uiRvS)%-w03t7l!R`v-oPI;F+{9n|v`xnvpm{%VgOu#`GDR zelSnLzTz1SY{ESC=NUo&cRg}^o)eg-l!a!;c4g_wlCFK@}id>?u`xJcV^OK_I)hQ z?~5mnh*suiy-somz%23P?v~uXkX+U87(Bf{8n&NQIs5}2uicvZJ?Ft`>g9=e!s+9Q zLlU&%MYLSumwW)9H|0FYxAoJRk@dR*p4=_?|I8Q(&!pw->T1lLmy|E^no-Va8>Ab| z8uE3fy54KOA!s9OV$40jF~Wgk*x@kD(hvTn@! zZ4sCi=c6Z)DIca)nXkGDwK>RUUbPCol3y}!D}*lvpJ^BVe6cG0CSg_nz@dqg+?Do> zc9FK@`oOG1_N{7bFTVlV1EIH>HD<;xr0x8D*o^f~n_zTVoiKX}Zu43KY#K8QE?|6x z*UT;d44&y5W{kxsiQkbPH@OgKPm|lQ>3i|Pl) zZguq>{rhqCgKRyQ&TkKx6J4%eDU!T!|CX(^4W6Mr!}eEMkhbQ)v zU%$u;&+})vJ-y1BThIXE*c?L2%~+-SEu#Fok-1&%a`f=5J`aoWRn^zf{|*~TzmFF5 zi~DmZ?nl%#E$s$h$QWJBn{R1CY$bS|$eah3xtDVSnNekDbfc?78WII6x~T0MNQ_Y7 zm1ZAvj5M#O{*uVFjyi(!49|mAk45m*=a1O7>M;pVR9gIctjZs;5*Mh?WY=R_Pd9;C zja=o`YL?uQ&|T1V(AU8;a`=e-LktqD10Js)gKvBPoH~mym>X;0zlyoBTbviYf8h}M zD}J^in*W??=42P+b+zLMh<%X0OFGQ`m=7PBRksz&KRl&x9&zqfe-s|_@766kBY3ag zx%neG@jqoBhjYq$6*zs!GCq(VaNrKkjcbtA0neP{M(q1Bx~yJ!ygY~7?vvBqCVNYK zZo$no+2Uz)3vTECixYDT>aj`gA?Hi^e>eZ1OG{Qe-UaqW$e(N4@vN-8!eac%vo0dP z?;5d>5#I!S8Ts|wvTo<&P=-dWpofE6PJ&enPT?2a{aGi!k^H8D*)=+`1)g2VTA)4I zr@=F6+j8G|VhDSfDN;n+O4~x)z#Jr>vWu;Sk{cc?)u#8sv-yk>`#jkI%R+Mfy~Tc; zHqM-`=r*0cQ?L4BY-~?%U9{W=cs7)e*!!43TJ<5h8S^;TrbQ>tlueu6m(sS@W-!%; zA5eb3E4g8vsQeDWGjGv|{fq_A53}WF`1J5qCK5}d%Q-E#td@3y+(yZL!%@iXNCa&X z$*qH@xoX7TthRJCJbwL}@ixPTKUe3;&zB;b!WP;H<~-z@esrefwuHu8$=wdmwxuKX zIr+$~2+7STXLEhch6#XrTi`>5*J9Z!GTtOLbR^7d;P<0n7Lye=eFF{{jJ!0pm&6LBF zk(Z1%!@lgqmgp|x%>## zeVU_8(LZ*Ac^z_pqP+e^a$B<6X)cqHwwp)nrw)Z@k0;l+%`(;os`E#36Y~$5T5c_v z-$(8lYA?4PqxO;;%y0qeSyzXDw|T_b+sEIc^+4Mmps6mp!5V{>ue!JgEN@&`+@9cd zv#-xBxMyzcdXzn8i~gIB?*CKzPbaM288e){f#B7mn?C`zwF^AWzb)q9jPdF}g`{C^ z%ZU9>$r~d)qwf8BF!skHoxeFMx*ePICrL0@fq5q~wbo-TKbG>q&l%`HlG_1KZ5y_R z#{3K5F>?L&QNJFHTyy`#`=c9O+9$me%o^k_l-#Y7o2@T$FJs>R@Q8hc{8rmMxl#T# zx8DvBBMC7iM-10XecQAAoP;>GYc-kKwu^%_S0C>E54ca)Lv{ZBGga2Td zQkT~{73}^OA9U)OKb^2U=Ekm5gvz{C`VULT9siMa8tGZA_W0E7$njrwFbn5y=Tjs0 zTi*cRx8R$!?p?c`w?C@$r|t{&V7`j%e96A#&6Gv-WK| z`O)AZi3|2q2ZLa)eS&wbH9z|2ajJtuGTWSW1^$3vj@T<`PfD}=}I%YOd+In3hx!9x?bMW2C8_vIci+mQQ; z6 z!oQ`JWl!mrF{O7tf z!}sZ@=lNCIH^8O@9Le$zlqmhgH#)q}snd47tL?7;xDEp2T9W-;2mdeDyZ(W#sxRM% ztn{=Hz5_h-*6B6}&-E)UNw160M)dBE<`|iN@jl|O0pIw={~~DR-B9ac^i#C)#g_bK67{^v_94XEjK_@yI2d&f)<6N@QsA8 zm?T_swh_LbaE24}qq^Q&&;BfEZhF2iqG$H{`6z)_39S#B)=&c2Xacsux!Y`(=CQuJzz8vO?q=fbBF;IPaZ2>i ztdkn`gEi!5*64_BX?(ojsrM}Zsx-o{GBh%pKS}(4;?E&3DhKOP<;CCA0m;-&?scRe z8PaF^Q9frw+mt~ofz}(KsjMoXZG@Jo`xI73SmhYDBHwC1t?@dZYglU~Jt=Gl`0Ze6FN^A=RlB! zIdk@n*mu*PGv)Ypg|VZ!M>$a`vm#p#mk?D)PfjJL4(Of8shAkC{}my}x0#I`?I#_K zR2eLZ4@b(cGVgEALB?QgkKHYM<(p0$jow4INGlBsF&-wp7pe)YUi{WKkajD60__za zO<6AlB zCpL`h`=hM{?=xD&3c9(rHq#rHwwYFer8Sl!<@q?}xh0fmweJn2rS{N0rf=}4S-b6n z)(Pza5rR4`8RwBRcg$X>aoW)*>SNoHHAbARd|M|v>2B9sC9dE9T1OW$PA@UJTTJL+5Hh-KJUNPZ~c`n}j_m5Wte~X8g3gb!NH4#1r-n~j+je{4|cig9=y?>nO zj~@4XiGMoyI=f~y2tSoJKZU=Y@S>S6e$&C@7v9L2<>7aP@wHc=l<*bcKQH;64t{Vw zT}gi;W2H^wS_AQZ&;F=V#p`i!Eq6^_?X83Gt>9jx@Ls~J!{_jgZH`8|E5jPnrqcO= zGLWntU_Fg2qc=B)^H59p1mOe7dRb%6R>D*1wv9a+ev>VgIEC(&*|d4?slh!&BjJJm zn*_hMAs#!+lRxOl53raulNNa9q`%5Z;KaA8Sr|EaB*li2XizP0U(m z(6TjaB$BZXjI)sOq-18Ag2WVpJ?)F1hA_waH&BynX# z{W*R)>t@DRLlJKIV_oVGU zrN0SU6592As~u;?=_I@%5Xb00XsZG=;q*bPp9E(X;e&+t2I5Fuir*dNs|WgLG+zD3 zDWBl|xn}%b64(pamy@X4&-}UsS!>x7b2j+a2}P7ucz!LpE8y9F%pUu1n)jXzkMGAY z^F04vDRbW6>_NO|KYomEFfZ}sUMRT(p?SUJZiOe6++&Yu?dZ~Mxx6#huDc1{_nnvL z_azd;vmz~lv_B!)=0{1QqJ8mX8XtltIL<-gdLt+a0%;j zM;jO3d~*+TBk>22@fEepO~sLZxB}$#-bVYqaZmal0@1cY+XM|4nfXyUYzD6%+Mw{Z zf;V;fSIAd;ql_i&Cv*gMOnU7(?Pn=O&WntH>VMW=Ff-e!tqrza6>3 zd+p3RAx~trPB#}j{FCv6=Tw3Vh0Ywc4V=}Uti#`qtd5XfB;CFFcIJz>?6LPC%gNtz z?GwUB5WM%o-6vF+cv{(`>NB!8Kd+qVW60}m++&}u@;U~2MmN)L+`V|_%@?y-<{4l@ zd#cm>kV{F=ZpOAc@T?1!X6#p2H`hXIY+`bWt>EjS*S;ioci7q05O7x`W(ieAdxt3KW%>| zX}*Izsl2T(n0g5Hb=fQ>@N8(^V?Qq4w!x7byx)kGrfG?9X*_i|9HFjLZ~x&(pWf+T`_;nZ2K)5uTcd_SkY> zShspIjovcjgORy3Jua~iC?|23GMYUxOzW+FFdL9->aJgM!{dX>cNaW^4`Y+eK<)rM zMsF>4_cbmw`x>=1cQi-K1`Bu#Fg~{@X9e2pJBGp=ykB<+&KhFb9n3kAdAZulp{Hc& zG0Cihr|i)^_Md0Ma|Aq|u5|V@R2!j75xR(_jSCTV0{>sY|2HL^|2gnZV$y4{J>Z>& zOmk*pNw!Ss=WX!xKC#DnYxrDvGWs|DOaAR1^XzP>tIaoap;>pbZi9?7m9IO9AL!e{ zpGSE8dKdq`gU4?qe$2!FY8YRAdoAIGPwuh5BfIXK4*nGTUd?)$d)0CkEdfso>N5#I}QJA@>s5-olE&52-j8pLkh`;YO#!nKzpoRYX&&kV4^ZR-5H2!Oky`1k!%Bdt{4sP~Nts-7K z@z%QWqJ8(SA1)QYGs;Sl-rNYzPH)39=j`Thxzul-%rh+8ogI_S56cVI4k&VCXam+d+cWEx#wup z=;@#>A%HUUi`pH{i-x!`PbcC1zj;3Od%?dK8~wcv+?9;`W{k*tCw;%cGc(M*aE$PN zdyl<)7IJ41?%NrrJhI08kr|2WqxavZ$E8Zjr4pHMk?tHg4VfdM{rA#;YwlxiF>9~! z?a)69;>+onT#qKFwDfN~7#)P)bto8vU__lfNu~IJ!jlW~EpM%Jdi-{ZITF z;@=(--}hN5{^eQmrOO70-%0#$xbdgdv32oJN2ws;6s{(}3;sJC&50^V&l+$}S9|QH zU6?v^*RvW}dsmlW)scHjevt9L_c4EM3TMIq) z0P+^@J+OPUQt_HeEVWys>P7kK0ly#o&-1PJ74(~?ZItuUHVPaJ4U6))cRx67rfi8m z0oI&Fd+l@41CH*=m}i-B&s|Gr(Q1-Cpu9oyDOtKvE``KzCksKO>a1lA{cqV`vo_10 zhPD=35wzn);75A6owSxio347C_8zw#8QofiRkn+^lU^8A+t~#FGmJSLbBI|-!tbtM zGpxnNz_*s~wafX|UX@!IWYqU&euVOX{jB5)75i;a(n!m51@M9nk%o|Yahb5eni^_ts+2E-nN3(McRzd zu*6B*gYji)zmA#r$-d>S^U$s)TK{a~t8BWMmkHl0bIQ{@V<}qYM;S}O_k3^av*pCu z0qv*qxmFOz^!>`ire7HF1>Shr+>*E^w{y*8R!&ZhC(Xo_ukl^78P=C(%^hGddF?}P z{Yqc1$v?D4Xt-g_k7z^C8lZXQBpDOXswt;)#TC>`$$PxkWb&R1-%j}61Dmyxw7}aM z*X!&~8Y(_Udkx4Fb`7-D0bs8LyC1#&vu_vv%? z?5QR0%=*3do7^H3-(<(pW}U`##>Fu5O4w8wth~p*1pq(YG#2fjjvq zdWiMhYZ-IWvW@@2%m>W<%)V@PM&{^9RrXkbg{pSf09NmH;l9}hZDR(l6IxFOZ3DCo z8MHoV-5IoP(AEcN#mF6k)&=bmJ7bS>^X%jb%0Pw?W$|{9lFem!N@p zfZR2TXt%;&1OI*CtNg5;!guy!32QxJ`#h{&`^Qq*Eb_4a6~-DNY}NH{x^m8N^|i@& zWV({%?NARZAAUDom87etgZ2v6rQtT?`*4GEwet85r_C@51y@|y9ilw12W#vGzYI0j z_CgzhHW9{;p0i`vy*z~-BD~y3Xdex)A6^Z3shjuOH@oS3kbB&{HI%fS_KPe#jaxTD zhMJkHDt+DHwcNtILjEgbSD5vT==^r%Brcd@tycYEA9y{t?ltdDhW9mIpKg8H*Qhq8 zve^c&<|NipUb}E@_>y>Cy1lw~dnx?!N8SE#g4%`CAB44nu-w~RtdsYT)dv5-r(CSl zeJqW!U4)f^^=_r>EC;JK&f);a?lh;6;jaGE58oHTF#V^>!B8;@V<%yy9>#gm7{>nj zICo5V7?=1MKo}dLl0}jda6Tr&xv~%9<%d42T>wsaJ>gxGgezTZ2rsxjtQXfon+eSl zCO^tc542opW}G);I#+bKVOw4P%rND1$i=^zZ^zcDa`zOniQ82-;wxB-Jq7+$d>Zdd z;p>BMsqkoz5%Z9eJHl<*_y8M-x1D&8xbdd6k5locsG+2SxV_+%H0`yYIuM+?_}a;E zVxMHb49s5fP8=3qi|GzmEfd49In4wXw@0C256NTv^HoJ8MIDlZdwTC`vrO-0#yq2&XF8^I_-h%rP(X^|lEtD_9RXJ(fWm(>QM+v1Vl{$sZ^f65U zuZG{UPq7~l+4s2k!F62xgjz=`;R3^uLOVy>^Fx$HnQOXc?XeT=7O-p5`V)QEo?!e) z-v?A4UyuQ{I4`~m5=K$l8_y90gEs_T#~pj^%Bk?&jHe^d&&Jax0O{k>N5Q-E^-JFx z@Vc5`pY*9cZWrENd(-z*iM9*ch5$`^E!K%W22DN<`CYHZ?Yc1U{IuPlBz%bQ^AygW z_FGK&xh6aXsR+#CyZ73^lb`x3^r9J?GW-Z;tT+34syJ+!_;vKylwO}|0`sUx+&xzx zm9Fgyoxhaab;{qpd!2Q_k547n_%F`Y`OrT|E@`1P2d#|szK#(vf7jvO`}8fz4WIjz z+*vA*w!QYXnwNfWzj9gf&oNKOMaWJ2mFmI#5^|+~tzVk_W~~FZ!!x*=`n2HrzmQyG z0~o)&DQB||sKfSVlW~OHbU6=#`2pmm{pideCai|ju4G8W<|`RxMZ)rYs(ACfMr zJS)pbrZ&DAp8oB7?VqTf)xzV~gc+?kFrlReH zwr%HLhsNKc?Sr-jK9ZN_oB28P4}9gK@gu$@wC)VNdCFZXlG(~R#N@^K1&bKDOCjxZ-q#J%VrRw<@#jJvS8Xr>hl^;=9F#dUsL7N zdV)L5Jejv=%TzxthG+fX_Sz3>KiNH=Oy57{@9B5%C1H$tC);2nyu|4-rWwrL?d;7^ zeN9Mi_8g!Ko=qdH*GaBb?zY`1xklfZxyOS2$Q=XoMDi=Yg4F_MgxtdQ=;v{K50blP zD!Fccd*X=|(Qf0`+Ju#AG%o?oXm^@vht07-&32wo>LtN6Cgkj${{BAM2c_-l}Ps$|YTAeqlkC36LMH+V9y zkCxd4&)SK-_7^4dR!^p1uYSKV_g+<^lPV@tzshGncooQ8qWpY8GQ)bX9QrPJ242}~ z4@>4(9GO}6_;T$w{v4u04h&i~BD~giW$b=!GS-4o zNM4MLlg|#xPc&z32>sJ9#cP<+(Pvt)w=?k`?>sJD8{J60b^|1m#L z@kWSOoH)36%HvGp4G>RjdDdsVJZ7{>W80W=t)g7neK&a?Yr#9y%j0v|d6di+c$%$I z`#8yb{(xlmO(k;xyaG?=zq4h^ek=G2b4ow?K#-;Qm{ z5;Sl0Vm2Gwb;J$Nw7X@i&-^O3I&sbWA*>88Cys2VBIs+Odu!z?r&4Gg&}gb|Ir(;} z(N94;w=Qw0rc~M6_Rco*+cvPq4jr|>kS_Bnuu_S)sf@C*<{PX5uxe(G+UKRQqS|QM z{?@zX*-&`Il*ic{SPwjG)J~-HXzm}z7x5rhxq9d2Onc}2SWe=FoTvuxtRdHfRq}@a z9!vH{r^>5f)Mom_86~e>W#rS0gC?KGS#+~1fI7*TX{6_tyTH8oBd&dZlG+yjqJZB< zatp}A>?22=chOHh0J%LmiI46_?n*Gn*SK=uC%HW#x$?oSe~LZ3ZyY_aHwjbm$TtZ! zZ`%dVju%FqyKc>#u*uBZl($`^qXQYY(Dsv~r?Ys}xzlB@C)c-W{BsqqUhPV7&tGJ#P1j{FnE#91)4{h2DpZ%D zvs#k71D?S-qxQdZ;VFd2A1BRRHB0VDB9W&vV%fbVeTPBG)A88-$o-JyE|J`kklY&R zE8wYr_o)4Xc+Pd?X6-5AER%ekb((<7jTKybS(JB9Hqr4#^?-f3*Oso3{P0<2$=?P~ zzbF5?*H?bY*XWlIxNZ5aX!$GPDL&oJ|NZ-uzdAds3#Z6G*sDGHk7mo)n6wR^HON0x zZSr%D{OI#TroG8Gd6@L=Wb@sk9(;SqEKq$u<;V=E4dchCglENjMx8f<%Pv#V5+>m&~WJRp< zodB=hlR0f6G8=-$YwUuuZ{pKAb2M~kPzqXifTnSDCA9U>ytPMnADHh8_w}ldb-Z=5 zbP20R`0ssvuqKrLvQhKau%rL{@x5B(yKkH699?`OsvD3drK@ry>v8WJwJ)dqGqFs4 z2eI(ey$f3*yH7cL37bgQ=Cej^rew@>DSKnzXPhB_jI)qj<{1C9jzGHlk9b3^?)`pq ziKlxzXK-)l^arOsWIdeF7&t;Y3x7K5+~;M+z&p(tXyyjQpC})-|3`99pG59wk&7=r z{zYGIF_@q7ay!VAS5icVMi^@P!+DWeJM^iKx<1pI(csA#k1|GuEZZ z^2e>H_QZXR(-Y$b^sa2%C+%w)0(0WNEoM)K^%XEP&TdHVOwymM9ksVh?l%uW?!ffK zanbgHw)mQUT?ghHDYv!!ZM`bF1EIAt$!&vYP2;H9M`q1ff7PL<6)Z8{|-yl8q zK1XhF-v&N!_ui5va(C-#xl9WoozFh7?n2%iZVj&^Y&~Dh#D;gs^mM^$4#U5O&0PlN1oSjLuW?Ua4Y*2EN0zp_IoR_N#d>|?ko3h zu~p~RgT&3~yTb2)r>uF@ZWR6}_lJLP2!AVa|L)=UW#gBDKLSr}%cyhjem^|)E!PLc zB+}h?Lc8J~$ILDAW)D~iW%+Al6ethdh>scP?U5ILittt7Yj2gc!^5Y%-8EnIWb3r$ z`6b+#m*rs6+_r=G9|b?D_#al+2pNx)VB2p952$SHAfOj%7QE|K%BAH=3L-kt1;82fD z?;L^BQTz<^GcO%~`tQ@x1l}_(ZaV&vosME;_L7bkWNPhSsoWmqO-?d zdD#i?T6o_gUNh!>(2RM)iEU#3b$~c?;N1{`qrO>5SPx-$36u0>?Gd5hv`&v-ZF&w> z1dB?{3jPPcvo04t?blTX%5yE@v5$?~zgGCQ*)o{*wNBG9?{(P{qzl#&{}k|zZtoO+ z_>Q+tgtvJ3T?dapLHvK-?czTl##f)8{XNp(PWn|wFFN?ay_|lZcYQE@R^oQ``6O~<%shiZ8no5gj2G%x^Wa^DTn@x|6+IMR&T!$yupV#`fsOPJ)5?|DQv22Se zZKJIO^LxlO>p9OGxmj&~4LqB_!1$`YG%tE`eLKzXYpz`GF8ieR(o7+D2bhl`*R=WR zOUZ9v$X8WDImhT^?cMm2)gJTV@%8Gm{4Oi;Cn~MbIdz$?w|T_*0=Vxdy7f-sc3IM^ z!b=gh?klcdJ;TE@=S#T1J&}0Q$1`?-+Cdv}9s%z(;a%va6Fl{oF2ZUz;ImZvE+ve1 zkmXDB`^y0EnYMD;cee|yi;=Tfa#|&az8UB*N`JwRXxmSZ+Lx&Pe#}e1JI?g6rtPOc zJV@qxL7oYwFCLldaBA>h_YtMW)9tbN1NmBz@iR{zW$9*PJp8`onx1%Jog5Pj7ZN z*iGh3FGYS!^A`Iu#9OxV9M-3rYuCb)+&F3if>284U5U@19TNeu})k-qW+^YNk zQKn!R0%;DeO`H2**&dcyM@loy5#_mGfYFi=TP^jFu-Zn zh&qA=+xi@H-^(Czi=P{{XSp(3HCxSKNqWIa;y~5RW`*x8@1a>to7$f>fE$# z_dZelLq|^5p}|Y?yARB>KJ4DVJ$D)XFx$62n>>^cpf@G=baL+%}WpXZ{%d^UG2D#~60j&XC*;AErA_u=e@3+{jk2IPY%g=&OwJqbe`a70>U@ zspZ<(bMpK79muK7-<~r+e=z43-#M zj+!@=@*~SHZ98^>`D5fhD!IRt+?LQgIvSHU!&6@{X704G{_4mLzI)4~0&xy(OKqTm zP#d6Y{Fxx0MVoksuqT9Fp1vnaI-+zd^L=o&pH)AiRYThpplM92gVqm?X5;!E{5NBo z3EN6o=GisH>m+PolCX`0ZJQ))fUxZm@>CWBKcRgPb_w5>b&jcf_f9Por|usrk1q+{ z8{n2jE|@1$&dQ@zK)gU%2)CH4oXkf1<|r<;HmIrUGmyxb%FEpZEn6AvSn$k8GN4pjx62( z6VTEA+5zR~&J(rn@&Y{$t(~En(3C2p0%1k>wP)_I*pOv^U4bw&~3kza{3PThD1K2W9Ia1VO|oPHQ-!=the%Qy(n1? zq4ujhZh&Xx*fD#-On6@Q@;KH06)O>s*6XxnXFQ1wV2>mBUdc_SkQ<)Im^}U*{dVG* z{d;%#7S?4(yF`eVHozV!|82zhC>I zmpS;sb%zZ5a2ex!Vjy}fPnUf&nDdY+``5ZzGW$aN8&qap@U*{U%()Zl4o7a#?`-^K zoHNsXYvtMso!Puxoizkb3|Zxp)hSu!q4qTg`pjRje{JrV@o!sQ@c8p;YB+vX+7kk% z^lTaYyKZsU`ZfsDxdTCAjW4iX09NK6M3rSD@oETrLS?zp$3G+eeLjuf`nxAL%D3hDa}$YzL#MV+%E{+F$Tj2b z!gE!JAs>_4R?9a0jc1Jo-ju_Py};S8sq$z8V-4X?s9!Gw!`RtVlt)h@@rnJUYde?= zN!LRvj~=C~CzLM9oq(sWYRuj)o%vl)?xf{m-avk@e2m$nN4ia?$m_+(H8$0&MsBE0 zoBD^R_}nq)4dm(P?cYA7Fa0TcEiG*q_k&sB$vqRyjJ{Mresf>Mp1WYo*f{)Y?77*{ zHe}FBpmhgm>W9U@WPb~^4!*6koiqpiaK4_`BVAWc+7BDR`P9vBpIM=FhWD>Y)>?S_ zJz2G{UDgh8Dm+;?WXn>S%>EU9IFMJ-N}vq|XeR%Z$xdj;YMi^xOOqMr7zcv)_A38u z3(vIE@Y*NAZUAS?P44{VBiU&xho=YmofnSTukx+Fkfra8zf=0|YuR#W5wcgeBWFd; znBB>@^@x++;G94gUGN4{)|{XK*=3~fM8)e?`uw|Ng{!hz=i&Ao7;chy^~5{W!~Ned zF2S*Se%s+01p9l3BYVKX4*DRneBcAq5)IKlf99F_(W8&+Yubmbt_JEs_1XLZ@;MNi zSE(J8vhY=Ktvj#bZ_%ou&4$Kxcjia>tqxi-G-DquG55ke!4(R|zisp%;rj@GNim%8 z$GmWj6gucJ;Qgkz5_hm!)g*)47muNdDoBG8(bduE-cnU<2MAyJ@KaC?L7cq zwU=gi%WiPyW0Tk0uia@}vEd7XPgDv(*(FlM)^Ep<>2 zX8iK~pr+mWHlof~mdZ^OHH@fU*MfJ{jqaRrz1n7YkAjk@wy~Ww*WDC7?;ay;Wki_T zaKR4z1%%Pf%#UbA&>90Y;g>>diNH|U3c}hV!i3d8*qQ*AXl>Be258mLnn`09v^!O9 z8@zHedrJJX#1ztMY&+iYs6=IbE7BUFE|TDF1#kED?%4AGRBqw@oT}%U|HpWD^O$oV zBzK)WsJXWL?uqfUvM>9p@YbA4J%6RRmBbx*4RJMo)RX@);%Xhp`l*xG$>;ftv-P@b z$M%3zL>^TK*8e$eBd~;J&g5)^C-;^yd%bx6=#{H!kN#Z4Z;#r9P9HDD;>?&6yE2Q& zcmFC^=07Df`wXGVroxkH|MxOG!CU3YJbXo#OqJ>Omua8K+{t&K&qd{N2@Z`-QCSpD z^0(;kM(nWz!x@+ir<(K(g3}C+bqr}XWB0-P4%ULR<~p~$->$reeL0ojZzIiP$a<^v zoUd;t%X{?MYDTD((hAo0TgU9PG#`1VlWx~{5Vhab*uh8d$Io2@=8kLKHPLG2A?!QQ zxY#*J|G#7MdBHj`dI*0TQ#Wgcmo8(U8~xzVInCVwmALQ|59}vhBVgV@y5!Teu2#Cj zet-3=lHZ{po1^D$C8W8Qu;-++ZuHXR>v}&;-r7b^;w}40QyZAOu5r_JUv`>QN8Rvj zyvvpQ(f?j<5ttKTuJ+_Uo-G#^<0mfvJ^JLHv8?w&6|S^ZP+kh(rTN>F`%RnK2hcim zGL7TdES+FZ)Niq`0N)x^+Op@B+euf;$HwfFln`UrFt5DGnOCZP?IXNnl5mYb6UgWy z+*11*%1(F2y7*Goi9b8pxSa&A8hKwO%^L5lSCr;#J=p+H*@I*DkJWyrogcIn{4vkW z{mq!S44HLP$?OAfu_yBw@G@jdzwLyl^Pw^4E!5*3nZdc6@u8SIZkI5`est2g+nhhd zV}HBay~CRS)|9*b(_+YUDvhn6g)C!|3fm{Loze!IxVwfDw!L=d+91yW>>aMmG1yN>pt%K zu(}9Bj9E&3v+$@Xa3X<^#h`lAb!^r99m2 zVO)ZZ{%C_|2<)OmDW^dPJ6JavI+gPdiNx2U*B#S-nC)Qhy>g3vEi$ZkTtNM>M=fx6 zN^Pd_&-DLw(fVT!;j{n5_(S*?h4F4M%)G$tWzxMYZGm}#vB#_7A3~-XTh5lul({3g zjQDNHn)SG2lWDvTzw=TOzmYm&WJ3b$bBppm5PTD(g!r3@-$wig_>PK?$0f-QASXWK zy3)Uc^b8V5?cb{M(r@+&;XKfr?XU;#P@Rd4GfBT`(-$cH{vE`{gzfaOF4;d;4g9aJ zbg{1Wv4q_*L^**)b(~+RnVHDEyJf8knQguF!K&~|3Ftx z;%q6r?3u^nyu>f8r~vh)jpVQX=`p)adi7@77I}OyPG!1l9cCW4n4#=bSxX(J{KklX z^W|IY6Tq?_R@-dwmO9KD;4Jdc`8DRpvI`z{@S}ZjS||N;_IQb}Pxe(UICGF==4wBZ zoUk1aiz&yhzfoUb_scN_y_2{rq1}^98n!rTh;D!8ev~TR1^F$VUCu7cv`*Xw=Elpm z*l!2l`n}RK67o%}ofeRmRo@-6zplLhH9PNqA2JVwo{C#qv&P_xblN9f3)c0>n=5&5 zxDa{F0Rod%>8KWXHvNygCVezKwCB}vv)@wp4aB***4=(um8Wv-fqyZWDqrg~VPe0t zS5#%Tm9XTdG5cNe=buTK-}a;CG0XBt;)y@Wf0$in={?rTUGdm|>fH0*k4WA~Xy42% z;~h7tCCb87n9LKH_&h$Gnz);>c%&39j`U`CR*+_+?Jkx*1VQ z`7PVce5aqekc$zOhWKze1w=FYvljU!KX(0MpLXga%kDI3Fi$|ghnz&L-Z}GuZmSW<~II`a|}rm- zYK~(hUX0es<}9i3Qs8wzKW6{V;t$iu%vxPldT(0rUXFb;63<7EBBq@SuZ{Amd;xnv zB?9 zhY0Elf1LEoMTMo$Trw*ulXV~3VtlIB;oxP=2Tc9L6MK<08R@5EJegChb9Uq; z-XA?Sr*(QCn5QGx*qkRxZbwL`OFzZ-;@{d4)=#1rLN9@?q1yXV+05GG@c)}{>r^kD zzTd^vhq>F;?0Zz%d_Pi)lFB3)E5Tb|yT$&X@Rnwmjp}JVY1v3xa6y?LrDGlOdZ3wo zpC34obRk$JE`-;q0lxK|ff>I_#~4q4J7#Z+!eM`>8#jz2UVfC`CgOJy z|2RW&XzkE8KvTGWG>&&c>xTAz5zP4S+4;A5Qxt>O4__aA<>KQ<7(1Ztf_93bIQnh` zTJE5~&nB3E%ulqdRI8J5o`+=~7ySFYz+X=K%Ezf6@Rm!4NuRM#v^IwBfxzUWn4o(2 z`ry-k_&`4JYsA+&rR7YvG#;&mcjxc0RrroEe`$^LpaqJ49)I=_mizlL`_I`pKM&x< zpAP(?vKW&5Ka7R;bPrM%o1oo}g0R-n{!IFvJBSxPWG&Vu#Fach{meA(AAW%&+gG{w z4_`93;2QosEit!%7qCq|%>jS#gV@ca%lga*v(9BGE9Lw){Db+)_?V5WHQ4^l{!7X~ zF;0i^OPs;&is0Y#jh(j{EeInp?T@NNrqYH$YeuVY>Ur32QWADTR^7b%d=| z8oxjqY5zf+1>L1HmnHFUW(=q_gs6vEG~X&h-k}${<4F&g?DO%4Sk+hEKgsXE#_Sd8 z`r___)mgk%bvsI?dG!7&QDlkfGhak~*btJiDyW^I%DTCMqpY4_$fiO_t( zY;iY!xZ;1)zjMaz56B7Qj~iZn#~%$=a8+LB`)jFSur@!a-8F-`%Nh^dQGJ7HcM9ty zEH-W2(dVX*-)+Lwk2@)!BEr6|{A}{_gAEdXAEZRS;*hOOhq)z#qzS3|@h&jWyTF}~ zZwdF~Qo@V>!+dMHQ-<1y(XMm3s}o$R&HG_JPE|P8xLTz%Sjy&9URDw}A8a#TE5hnT zyVRfhR10C9GsYwO`G?Z=dv-)W?*}JNVO^xM+DLlZjvlvHrP~8xW-J`Td_oJec{3Dpfci>9dmFxsDU`!kB!zr?SxGbb`xpM z)Im3+g5(q^Cuk#lE8aAz4q`6uHxw*`)xp1op|aQqM#Jo|4ia`jP9nAj`Xu^|X5(X1 zg<04uz*qss`Ztf;$E$v(uwM>VCv5X1%aGPO=>24h3=wdtf@;)z^)vHtjho67b1;%jc5PD>AsAB*#D3KI-|FIX+$OP}gT z|8Ir16@1SxAl)?xtsXvq?b|tjr#a~aVH@Dz%(wKKZ)abXRwEj-g!*z0d6Eb1fB3dWJblPnqjtRo?An?YI&1RD423w~oL6on{`6(8&*~NF zzOJ;-QZjpx*$=+wmlAC=w9NsU^0pmXAGA)s9i6T5j;B>MvMtH0%`aGBY@d39hmbk% zZR2)~{%TFT$o2P`y@vkUl=17BwJGg!k_l0oy)?jsao0~0fSe@1D@a#qwVS^qktLsO zVC`8vYp0<Sk9B@y)Pk^$GZt2JwEhKMXNdAlZx4t@o{< zar=J0tv69FW}M~tat?NI!Q%YfWqB-0tMVKlz&iNjOFiGF%8|7mYye@YY*vD`T3DxM zVpZnnR_8Sbv4-I9uX3^8>tkswPR>Zgy1_b)@7Q9E{i=mUd3pg);pK$)6RtBIPMT9@ zpAiW)eWZ@??Sy-MQt7Lq%(g*W!?(4-NuS&ImeNQY(wz?lK5B{e;tVS0LJEN4a6k)Ys6)=ainw@k7&mFLNV@9Gm z&JY_sjqKP&?ZmwbT5ufpUlwtlaQHL zk(W3GnIW2^i(h{n3aWfJ>MpQ&E zOZ)5_!F&ms>m{>8GW%u(^+PT6PIy+7jN7>Hc%RRa>#m)d^+U5~%Zw#e`CT*Q!z^Kn zADojc$xHkJn>dr~`sDY4|8LTu`(vyjrJ-v^aBa36`s_m(-%cC1E0y;>UK&`h2=150 zaL-LVp~6M^rdO;?Ue$N%z&MF^{d38wtwl~tu2a4b#g)$%!Z*Ep+{SE;SyvKn+A%VM z=bzEbx(|zrMSo>xh`ODQ_)M~!&q45;kZRYbpC^&HM52)5c4tH;|LQAsii3R9w{{u%32(i+nXsNS z#+|dXV@}?u(5;KLUOgKbQ?;!DFz-NKC9($lJ$KdHabKGfv$HOyqn>J%% z>m*{6;86py<;XN^P;(_SJl;uWJv`fx`E9C zA22Y+YRumOPx8Iv_A{!lrJhVP=9@J>vyNrPM|VF8GB-u$lL7Lx1mHK$SaLM;N2RB7 zW+HY2=}~*KuFX!5^z15lQf258@!SlLX+K8KV#{A191@J4T?hZk9_HP`bjAc>^%7PA zmTA|kJuI^>!4}H6IkW?OdMq7+e|O~;vsc!7+@#OkQKh-2br|gdEZHK~lZ4S8T;Erv zTv-ePHwEWJYTWAEWyJdtm?qC(7iPJquFagYmhdhQ_qzvSmvbHTmmX>L=oVzBf(1VF5;aAu4yyB7H%q?Uge?q4d^>?^{pTMUj}V! zfTnq63R-`FCSLXRdgul38_(J&tuk&SY!+dci<$Bb`Y_Ua43>tKsQU0G;#CuGCT(~> z{ZyNgINV)|w#;aysXWl%0S>)_I$c;&>ad=2rMh}UwE@yd|5mOS?ouUh@~cTW8V z%PZ~6j>+c}9CoVm6n`7>``_=z|Kq{MSDlv}j{HS_J5b$LK-&oIt$eHBw(_KUuIT*M z5!PKkZa=B8{pr%WczcurFCuC;I0f^^o%hy_ZgAH@OZ;_4`HoHZ;ey#+@we3|FZa5z2j71q&*c9|>KB~g7>LY9u z7z>5*N&tfyMi65Nz8VkXkW11S>fgy(iCAvMxH(6v@^9CfxYe4=w^}UCx=M6u-o@T0 zaZ>!&5U+%IW?r}~?JM_v9mZ~p<7y5Wrj>cuh6#&x!0vg+#@Ya8JDBfr^<8@$zo&a& zqV6&34Gu(1f@NC_5~p*akWp)qR0d~~5YQknIFZ@WC6&yudfOet?rp?tET_*lHgssZpFNf9?!LPPcOW2&sgKIk_#9K?e z6~sHxdY0bnCr;gxar-g8opy?TT%9oM2ULmKL+_0F3w8LJRi_2%7OTAF9*w_<_?R!| zN3_|{Hf7LCp!H_ZDxhr)(29v$MtTNXnGf)79ZsLZ58N8R*m!4F;G%I>*03uGuZMSK zmCO6asd-g4-SFNj++*OyljYzpAyYoCbVwh(n@Gc5;(ar`raoB##Q}mNn|~cWF$CW> zFb&`Flk*jj&pFif{la^j$H&sM9BM9}`ba5!YvEfdzPH0?#=Q*N+Vm4+Tk}@l{l#%u*boewz_?!Lj5IKJ$Jaf2%%oiMtuv<+8cn=hdgL_sm?$*L%8* z?DvsVB^F)P2xKplx)qg8RVC#&Y@!(HHBo1b2|j+6Sk4E`JmD(mAdV9g!iN z2Lf?}IK)%Bnu$9>-1jOC{D{^8tvKc9Tjjrov=%{oly9rXEB~qblh!h$JpoBDwuASh z_qzS*%INYhoXva`nVz3r=_nv=)zGAut?RvXn0DaLnf-PkBlC-qa}Kv1)PYw;IyCNB zcPbs_!D+f_du{L(o{K#unXR78jQyr&3^!vgN7xca$qhm>GA23;%s$U;;O#!smHCKd zhR^0HEwkRt_;a3Xa~hq=LOBW}r7+5+ldyS8&!?UA1pSQZ^}($KW-0eDJsO zu|xH{g8eLjT3_?Zby>vvfO%^ipUbqw`=(FUs<0EmEJ4mQXK;VN%BJH|^3fN%H)Rey zE8wZQ*tJPJ;W249>(`Ed(q zOSl-B86a0W`kpsoZYN%whuQ06Dy-lwPWq1F+tH&J8v93Ka|n|>GoF}sQJoH}BrFvX zrt)7&SOsChaij@aIkcIQ!;kt`!*SSe(Du^ltUl6(K8c=xx#MQnG?w_?e$MHBdZMHB z*hr8BuMfNp)W<^A$0zD2yRJ}ul*1ECQofgsr{4<=?rHJ;$m+^GHLorebR#ofsVxx$Mzgtvd8&(z;5FS!Ta#b@UhqtQ z&0UWf`E}FRlashEy71HmO*_g({s?Kjg1@c5DUD$t?kwn)C*YrG8n=JSxA&v+s)OG9 z;qmnSn_2z{>XCP0bm%hJve>=yLYM-U#_b;Pw%_spdHWK$s;ce(ea^WXQ4p^TN;#2& zVxr-UrAZDsWJzV_fTcYvEBievE8ois1Q7)h1V>O&$dMEU6@;8XL?uJPnG^-5G{aCp zMeqN+_Bj{sg^OwLy+5B1ckR9Q+UvXLdGB+_kW3&oc`5d3Ytmk8v%KYbmabh=+ffNU zKHuCiOw!U+Yd>j|7=0G?_()P5yxU|n!w>oMY=`q9GjK+w+8_GiK!yD6HTAc`#NQbB zn*x7%-(roM{9&43gZBn`(~hd*Y+8`f>-2v*2a8@TlM$2yy>8m*-{@$E@A9}|72iL8?0+X7~aP1J8)1o>BkNE35;j7wxLe> z#MlDmQ#-6s-NItgzxL7vPLNgBD#Zwg7a%4BW7Nz$hFHQw95f6xE@3)!QQEmd`I}nT zj79k3;5QY1pEGZ}YL$0wy}?_2f`YapFbXzpR!7>%S;mgSl#j3>NV@ju4}MuO#Y-+IZc4S z9<%R=H!9d?RCj!gb&lTcGS&>S-$F@DZT>0v$%CJ(#HcAZXk)6+JNsyjPW4;?wQs5U zpiR}~+CgE{Lhcy8r@C8@F8O?|@g9nUe=TJcEeuC6XNwxGp`n&8D$^Oz zbz^SLnI+Pn2cB2x9YdQ(>Hq$(!%E|wmhK9(4ZEYhO((`X@+lhdP@Cfgw>-ER%d}Q6 z(Z>W+nWppP-txaiiLOpxstbPb=QZz+Ayg}Cru7+Zhw%4Ft>DoaB=VaGzhU$57*@k< zQjbswwewRb_^7KPwL1<b4wp4$bL6G~0u5TLBABqA4G1Qeb^dj>b}FOX(T`-RmN? zH8b-%;tj6@q0P>ExD7O`T@<_se>w1%2Y&&?s41hS`Qa(QYn~s}2e4-`-&}AJ5BQ0OpG)K)SdVz0mIjWQmKp_jc%1<~eWS28tLf3^&SGs@ zjuMENf~#ZWb&%ZyS-Qi(#+s%%jwd+}K`IYKD!*%?!+hChGUbYBT-5svG%l%xzS8Lb z-ne9FCyaj<{paJ72EfoGiUJJ!HWP-+*gGEKzWRq`;q)0P2PA8lH|vLw+Hgi!c2I9@?;@T z^=BH~bTR7rFSY*Etfh%Dtoa(sR7>@TFfyQL1oYIt>qZ!-;N}N6KbS3I)U26M9evvp zhAX_fbisND^zVkS9qS`|KJUnsU z;W7Nxw6_CnDE%hGU-a^t^;fEo)4_`aFQYmP7$%5vg}biRsA?TgfNYNychvV8AWvaQ z1tqTp;MbO))y6KlheA)W5f`9UY+{shf4AgJB(>I?UwaCeQnW4K5<`x)mk zm^YfgN#jY+tC_7CVh@w_hroX`qyAS&f6e+JwF6mQvHt}9@58K>H*o-g+=}34y~?y5 zQs2GsCO7D93Ae*YL*1KdxJ>H?)@_10ZW&=rg&kwFagkW3ae)q3=%4$n7Wenmu$k6h z56BFKOwekKmtfX?3>mZbx8@cnje#i4(;@$|QRi2rQ(g0;a+A~z>l@JZ63pxs8V6t> zFOa@tG1>U+6Ea<0_=Y$^1HjCdYHdsb=M=Mu7|c|pcC{*Iv)%(^HwzJX|BF_dB6_#dOW?;!WZ#&7{i3ztZDbzMYTGOi9q zb-Kqw#{gqE66%J7`hY!^@T#YWjq zb59J_Yq<;)Yx_wE!x)5fCc>lh{0G8`^PDE<{-`V#KxX=eJBE!U;{_Q}7IBv|5NkMC zun4VgebjU2x*iG(hR!x5Kb&-8odRnzq{{_vh0t{cLlxZ{MqQ#EL+&X}5k0LX8zSzl z`#^pibd4fiGf9{FO$Z;@r^3yD(;dSc%B#6>6XWVy;61+t4Oyl7R9_cep zt3lw^&fhWMQT`g`9Faa#!K3gsqqM^EBHf`NevszBHa`}8!f#tkJ_YLt>1k8!=gZPXp}^VWj}e5#ckgd2Chorsh1*9ql-_;eHZ|pr z;YD&o`uz*(=K|v>@T0+}?>wu1uz+nn)kgjnvMObR~8kfM$zaD=na0{~FMr9)p zZtMQ7-SLH;=5RTPGlj1o%(}NwmIT(Tc7C*TWb*x4N*kAU+Sq0i9rD@B)3R?>;>llj&h3=!0g7R4i`+%+gM!p7mIB!&^fdp z+AHAEeQ4c)4-k(cv-frhcPeB&kKnxz!hHoYe}#+hP!G1Xh)dH5(GKl_&YyrQzSrI9 zL*SZ!zm3{@)*tIfXSH*KSXac|{#P5}Ndzij6fWJ1sK13c3xbYT*Bv_Q4VT!1!Hp-K z@`3fE!!-sv15wXtFHkpb3Y8tR?{SItA2KdVxo8`7|9}iKkXkAV^AfnZ!j1Yx-G^`! z^%*C*V5cyrlKbzt+ky^W_X*tV4YM&1t(2qs`om1+-4^LI3;hwE4aQ#F$CQV4$~$5A zfLy9vZdi>5R@VY@e}%orO8KT~{n#$h83LVuv_E7xP1yOL0DF%aHsK~hrqsFIFqh(7 z2${daO|nu#9}#E5W!~5$#vChya6>)?Zc-gwSIAg*DK~tJfs-y0GPQ7P&OT`61LgM4 zUzCsO&>4;SekzrZUH=DM^Kwh^jfITpkQmCFN=sfAl-zEx_a=$kw`olBv!z~hi% z55;$kA8zKRE0Y$T8!Rhl?J+dcR2z(IWV> zey_ZGTuW(p3V1s3@^!%L1iYF!V8%aBSCeNV4zJlo$jU>Ss{*6e#FMtBL|fwl9G9+# z40B-DZKOCvn7su{xIU1X`a!uNhT6DfBd(a^iL)6sc_zxr>vnmvl4rTBh_;pLWdd|| z1MXJB-S-7>^UQF;7X8rGftW8$E3e+K)7E+Zau1r)-gOYh&+xk#sI(%mP%IX~jgcW{h{$2%tx$u_@^Iz>N`$9wy`KkXZH!Pxhc?fAO%3;mA zjTobfbsO6J#C7%BM<0+z7wdAX`zt@_clOlAPNyg@&A&rQ{eIG5%wPZg_ww-u{N8}y zC(TFKmvMe!#{WJa!+=xu?UUzY7W`#>_xSmE3h6NU`*Op_l#fM!m5;b^Q#&7V`Xjq8 zw>lra5T1$H&!F~4ce8Fj5`X#-^ez77;_NG|%p3oH@aGF2hG0xru7=C>jI;3$yG{u~ zYebWq>ZVS#Lo_x>fsWgq4;g-eSvPJPwWT`ap%=m^fV)?qhVdTUQHGxs!x>?x_z8?` za}26iqlRL<7hG=nY;_D;4AfD~+r*kXr9}|r6CiJ#r;Y$`1~B5lv!b*(qK0$6$@>*G zZM0}Bu^vWmVOeM;fZ_suxzINQVLl48uKAZpmpx|fB()=@km)<8T)aP|bAgO#ORC?) z96XN?4zn5**x<7+`gdruP8m+R-4Xsjp_|rXbRO_$Yo*6rKn}B-$HR5=6>soIKxQIz zV@ZzbdO*ffy5q~sI%Rh4ycOk&@-_lGVvXs(nBribw@GmC8>V5b{CgO;p~D(|vB+Eb zD>DqrD^E<$o#&TVpQWe#9t55%c(E{3yv)wP(+o$=Z}Daq>6ixjXvmx9_tatNpTP5> zF+d~WLXT;F*XkRG+r>Tl&E*W}(<2_~z|*}-@rX0a@4ny{L1tPUUm0C)*!(ycKFSA{ z`)nMX#FCGN+9>AFRM(~h$7ON3p%X*4)L&*H z&2k`5ccgV6A&&%>w)gKT)5k)p=ifLFW;Rb|z*>T~ROIj1l)viyo91U;uVQ^>X}NkH zKwUEv;|j|2QE&@_+kYd^bQ0{nBIY{?t{dW z$!dpWY{##{f1YtKHJng{Gez0)^YI9Z+GTOCN;{;BJ_J{Gkcwh5MR_(9{(RCNFV99m-j~u7^5S0C zMm5js^!Mgzx(#IwoLW@?BVU>aCqiFK>~)H^I*szs{4N08LK?WJlNw+ ztTn^$lg^(e!{6v|e|zo^n^S&yI0s1Lbt1`dT?{{Ex8gaXV!A7qvfUzed@^ds!yu4k)}MAfrE0 zZg>l3T`^=t8ztV5#*QStqZ1+d;r#-%TGfpc^+!SQ_bbvu?BV}Gx^ezMryedMy$Nu4 zhThjnZ-r5BP1{$W-a`0WY}BhvH`7b$R0Vez=;d@j&<5@`ZC<_We8tp%)UBb^v@jR^ z`@E&FUch{V(&-Xmny>Q_?lj1x7HGJ?|95b6pi|#L!#(gXi?}x+<8xNS{RJ}rh4^}p z#=Ck(-1Yyqh&vfFS1)L|TOjjaz)gkDEVP9pokPE=gG=piA!PiomaBISqagEW++nyn zXnB5(5k2Lt$J+{9jXqS|HT+-(FwO585~dGiZ2!T)xK@=Lnp55B02zU4slTpS zBQLW&_NuNsVbJM_wfPZLcjWKuj*lnz zDR7IRvlrHzhf|sQAkbo5b>lJrY*%4uLNfmc8N3~DI!?nHi8l5X-x_?|4sTf1he~lB z1%0;IuXqV&oj+lk-@n&`AMK0rh--z}*`{^i`I+!2AL5{E26!TDAh^F^>{s zNU=sp-=e~PfQ1wppyop<^le3Y45F|tt{XO*+dCp0&TbXz`-m%5OtbYaJg=hl-~(-j zRGVKmK97%ePoSw|(HRpEe(1`Aox*OW2R9C@M*?qGo5fu^ihC@=p>JQIelITG826gJ zq&n-P6Xm-WAwc(LGR5U*BwnqpFfXk1wdSx?Uj zLw$D$oF}3ke1y9f+)L|mr*!HI{XSjQvaLH&H=V?s8HMc?mAehhdD3^X%e|pnzLsX$!{%ekpC5 z0gK-A(dlNXSSAw?ieF2_-=$lHVL!>(LZ+tdiE>~memG!VZ~Uf0Uk3Ue5x+JXrpX+l zFK{9tGXt1Q2(yEVIgj3BGktScoMOf&g=$@hraaGse?KEePr|@lLi<=1=`W=)81?si za{Zo@Ft;}9f2FQ|AGlW;^}qS#`Xk`K2x9_~Mw9C5Pl9{j?ppeM^yKes)A^f&7N{>k5ht~Xl;*Qt|1a35pTuZKI@nJ3Yo1^?A|lUkbVr#V9j+(V$hGxh1Ns(#ZlQL`4U z%~c|-6ve8Zh79^#@bC3L(hYGE>#;VoDNbhRh$!8BA>-Y*LVc�Wu<97`tidrmf+4 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

7@6v8n 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�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 z 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 || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase==0)) - int write_bodywt; - int write_bodywt_save; - int save_gparm; - int save_gparm_print; -!! save_for_report = 0; -!! bigsaver = 0; -!! write_bodywt = 0; -!! write_bodywt_save = 0; -!! special_flag = 0; - - int Nparm_on_bound; - int on; - int SDmode; - int maxI; - - LOCAL_CALCS - // clang-format on - maxI = 999; - on = 0; - No_Report = 0; - Ncycle = 3; - z = 0; - z1 = 0; - z2 = 0; - L1 = 0; - L2 = 0; - A2 = 0; - a1 = 0; - f = 0; - f1 = 0; - fs = 0; - gmorph = 0; - g = 0; - GPat = 0; - gg = 0; - gp = 0; - gp2 = 0; - a = 0; - b = 0; - p = 0; - p1 = 0; - p2 = 0; - i = 0; - y = 0; - yz = 0; - s = 0; - s2 = 0; - mid_subseas = 0; - subseas = 0; - ALK_idx = 0; - ALK_time = 0; - ALK_idx_mid = 0; - t = 0; - mo = 0; - j = 0; - j1 = 0; - j2 = 0; - k = 0; - k1 = 0; - k2 = 0; - k3 = 0; - s_off = 0; - Fishon = 0; - NP = 0; - Ip = 0; - firstseas = 0; - t_base = 0; - niter = 0; - loop = 0; - TG_t = 0; - Fcast_catch_start = 0; - retParCount = 0; - N_SC = 0; - N_DC = 0; - N_CC = 0; - N_FC = 0; - catch_mult_pointer = 0; - frac_female_pointer = 0; - icycle = 0; - No_Report = 0; - mcmcFlag = 0; - noest_flag = 0; - temp = 0; - temp1 = 0; - save_gparm_print = 0; - finished_minimize = 0; - // SS_Label_Info_1.1.2 #arrays for parameter labels are created in GLOBAL - // adstring_array NumLbl; - // adstring_array GenderLbl; // gender label - // adstring_array CRLF; // blank to terminate lines - - MessageIntro += " Information: "; // information that could be useful - MessageIntro += " Suggestion: "; // a possible better way - MessageIntro += " Performance: "; // can help performance - MessageIntro += " : "; // might be a problem, execution continues anyway - MessageIntro += " Adjustment: "; // adjustment has been made, execution continues - MessageIntro += " Fatal Error! "; // major problem, program will exit - - CRLF += ""; - GenderLbl += "Fem"; - GenderLbl += "Mal"; - GP_Lbl += "_GP_1"; - GP_Lbl += "_GP_2"; - GP_Lbl += "_GP_3"; - GP_Lbl += "_GP_4"; - GP_Lbl += "_GP_5"; - GP_Lbl += "_GP_6"; - onenum = " "; - for (i = 1; i <= 199; i++) /* SS_loop: fill string NumLbl with numbers (start at 1) */ - { - sprintf(onenum, "%d", i); - NumLbl += onenum + CRLF(1); - } - for (i = 0; i <= 198; i++) /* SS_loop: fill string NumLbl0 with numbers (start at 0) */ - { - sprintf(onenum, "%d", i); - NumLbl0 += onenum + CRLF(1); - } - pick_report_name += "DEFINITIONS report:1"; - pick_report_use += "N"; - pick_report_name += "LIKELIHOOD report:2"; - pick_report_use += "N"; - pick_report_name += "Input_Variance_Adjustment report:3"; - pick_report_use += "N"; - pick_report_name += "Parm_devs_detail report:4"; - pick_report_use += "N"; - pick_report_name += "PARAMETERS report:5"; - pick_report_use += "N"; - pick_report_name += "DERIVED_QUANTITIES report:6"; - pick_report_use += "N"; - pick_report_name += "MGparm_By_Year_after_adjustments report:7"; - pick_report_use += "N"; - pick_report_name += "selparm(Size)_By_Year_after_adjustments report:8"; - pick_report_use += "N"; - pick_report_name += "selparm(Age)_By_Year_after_adjustments report:9"; - pick_report_use += "N"; - pick_report_name += "RECRUITMENT_DIST report:10"; - pick_report_use += "N"; - pick_report_name += "MORPH_INDEXING report:11"; - pick_report_use += "N"; - pick_report_name += "SIZEFREQ_TRANSLATION report:12"; - pick_report_use += "N"; - pick_report_name += "MOVEMENT report:13"; - pick_report_use += "N"; - pick_report_name += "EXPLOITATION report:14"; - pick_report_use += "N"; - pick_report_name += "CATCH report:15"; - pick_report_use += "N"; - pick_report_name += "TIME_SERIES report:16"; - pick_report_use += "N"; - pick_report_name += "SPR_SERIES report:17"; - pick_report_use += "N"; - pick_report_name += "Kobe_Plot report:18"; - pick_report_use += "N"; - pick_report_name += "SPAWN_RECRUIT report:19"; - pick_report_use += "N"; - pick_report_name += "SPAWN_RECR_CURVE report:20"; - pick_report_use += "N"; - pick_report_name += "INDEX_1 report:21 summary"; - pick_report_use += "N"; - pick_report_name += "INDEX_2 report:22 annual"; - pick_report_use += "N"; - pick_report_name += "INDEX_3 report:23 Qparms"; - pick_report_use += "N"; - pick_report_name += "DISCARD_SPECIFICATION report:24"; - pick_report_use += "N"; - pick_report_name += "DISCARD_OUTPUT report:25"; - pick_report_use += "N"; - pick_report_name += "MEAN_BODY_WT_OUTPUT report:26"; - pick_report_use += "N"; - pick_report_name += "FIT_LEN_COMPS report:27"; - pick_report_use += "N"; - pick_report_name += "FIT_AGE_COMPS report:28"; - pick_report_use += "N"; - pick_report_name += "FIT_SIZE_COMPS report:29"; - pick_report_use += "N"; - pick_report_name += "OVERALL_COMPS report:30"; - pick_report_use += "N"; - pick_report_name += "LEN_SELEX report:31"; - pick_report_use += "N"; - pick_report_name += "AGE_SELEX report:32"; - pick_report_use += "N"; - pick_report_name += "ENVIRONMENTAL_DATA report:33"; - pick_report_use += "N"; - pick_report_name += "TAG_Recapture report:34"; - pick_report_use += "N"; - pick_report_name += "NUMBERS_AT_AGE report:35"; - pick_report_use += "N"; - pick_report_name += "BIOMASS_AT_AGE report:36"; - pick_report_use += "N"; - pick_report_name += "NUMBERS_AT_LENGTH report:37"; - pick_report_use += "N"; - pick_report_name += "BIOMASS_AT_LENGTH report:38"; - pick_report_use += "N"; - pick_report_name += "F_AT_AGE report:39"; - pick_report_use += "N"; - pick_report_name += "CATCH_AT_AGE report:40"; - pick_report_use += "N"; - pick_report_name += "DISCARD_AT_AGE report:41"; - pick_report_use += "N"; - pick_report_name += "BIOLOGY report:42"; - pick_report_use += "N"; - pick_report_name += "Natural_Mortality report:43"; - pick_report_use += "N"; - pick_report_name += "AGE_SPECIFIC_K report:44"; - pick_report_use += "N"; - pick_report_name += "Growth_Parameters report:45"; - pick_report_use += "N"; - pick_report_name += "Seas_Effects report:46"; - pick_report_use += "N"; - pick_report_name += "Biology_at_age_in_endyr report:47"; - pick_report_use += "N"; - pick_report_name += "MEAN_BODY_WT(Begin) report:48"; - pick_report_use += "N"; - pick_report_name += "MEAN_SIZE_TIMESERIES report:49"; - pick_report_use += "N"; - pick_report_name += "AGE_LENGTH_KEY report:50"; - pick_report_use += "N"; - pick_report_name += "AGE_AGE_KEY report:51"; - pick_report_use += "N"; - pick_report_name += "COMPOSITION_DATABASE report:52"; - pick_report_use += "N"; - pick_report_name += "SELEX_database report:53"; - pick_report_use += "N"; - pick_report_name += "SPR/YPR_Profile report:54"; - pick_report_use += "N"; - pick_report_name += "GLOBAL_MSY report:55"; - pick_report_use += "N"; - pick_report_name += "SS_summary.sso report:56"; - pick_report_use += "N"; - pick_report_name += "rebuilder.sso report:57"; - pick_report_use += "N"; - pick_report_name += "SIStable.sso report:58"; - pick_report_use += "N"; - pick_report_name += "Dynamic_Bzero report:59"; - pick_report_use += "N"; - pick_report_name += "wtatage.ss_new report:60"; - pick_report_use += "N"; - pick_report_name += "ANNUAL_TIME_SERIES report:61"; - pick_report_use += "N"; - - // check command line inputs - - if ((on = option_match(argc, argv, "-noest")) > -1) - { - warnstream << "SS3 is not configured to work with -noest; use -stopph instead which overrides maxphase in starter.ss"; - write_message(FATAL, 0); - } - - if ((on = option_match(argc, argv, "-maxI")) > -1 || (on = option_match(argc, argv, "-stopph")) > -1) - { - // if maxI > 999, maxphase will reset to maxI - maxI = atoi(ad_comm::argv[on + 1]); - echoinput << "read max phase to override starter file's maxphase " << maxI << endl; - } - - if ((on = option_match(argc, argv, "modelname")) > -1 ) - { - base_modelname = ad_comm::argv[on + 1]; - echoinput << "read basemodel name to use instead of ss3 " << base_modelname << endl; - cout << " base name " << base_modelname << endl; - } - - SDmode = 1; - if ((on = option_match(argc, argv, "-nohess")) > -1) - { - SDmode = 0; - } - echoinput << " -nohess flag (1 means do Hessian): " << SDmode << endl; - adstring sw; // used for reading of ADMB switches from command line - mcmcFlag = 0; - noest_flag = 0; - for (i = 0; i < argc; i++) /* SS_loop: check command line arguments for mcmc commands */ - { - sw = argv[i]; - j = strcmp(sw, "-mcmc"); - if (j == 0) - { - mcmcFlag = 1; - } - j = strcmp(sw, "-mceval"); - if (j == 0) - { - mcmcFlag = 1; - } - } - // clang-format off - - // SS_Label_Info_1.2 #Read the starter.ss file - // SS_Label_Flow read starter.ss - ad_comm::change_datafile_name("starter.ss"); // get filenames - cout << " reading from starter.ss" << endl; - adstring checkchar; - line_adstring readline; - checkchar = ""; - ifstream Starter_Stream("starter.ss"); - // this opens a different logical file with a separate pointer from the pointer that ADMB uses when reading using init command to read from global_datafile - k = 0; - N_SC = 0; - while (k == 0) - { - Starter_Stream >> readline; // reads a single line from input stream - if (length(readline) > 2) - { - checkchar = readline(1); - k = strcmp(checkchar, "#"); - checkchar = readline(1, 2); - j = strcmp(checkchar, "#C"); - if (j == 0) - { - N_SC++; - Starter_Comments += readline; - } - } - } - echoinput << version_info(1) << version_info(2) << version_info(3) << endl - << version_info2 << endl; - warning << version_info(1) << version_info(2) << version_info(3) << endl - << version_info2 << endl; - warning << "This file contains warnings, suggestions and notes generated as files are read and processed" << endl - << endl; - END_CALCS - - - init_adstring datfilename -!!echoinput << datfilename << " datfilename" << endl; - init_adstring ctlfilename -!!echoinput << ctlfilename << " ctlfilename" << endl; - init_int readparfile -!!echoinput << readparfile << " readparfile" << endl; - init_int rundetail -!!echoinput << rundetail << " rundetail" << endl; - init_int reportdetail - int rd_background - - LOCAL_CALCS - // clang-format on - struct stat pathinfo; - if (stat("./ssnew", &pathinfo) != 0) - { - ssnew_pathname = ""; - } - else - { - ssnew_pathname = "./ssnew/"; - } - - if (stat("./sso", &pathinfo) != 0) - { - sso_pathname = ""; - } - else - { - sso_pathname = "./sso/"; - } - - warning.open(sso_pathname + "warning.sso"); - echoinput.open(sso_pathname + "echoinput.sso"); - ParmTrace.open(sso_pathname + "ParmTrace.sso"); - report5.open(sso_pathname + "Forecast-report.sso"); - report2.open(sso_pathname + "CumReport.sso", ios::app); - bodywtout.open(ssnew_pathname + "wtatage.ss_new"); - // clang-format off - END_CALCS - - - LOCAL_CALCS - // clang-format on - if (reportdetail < 0 || reportdetail > 3) - reportdetail = 0; - echoinput << reportdetail << " reportdetail 0=minimal for data-limited, 1=all, 2=no growth, 3=custom" << endl; - if (reportdetail == 3) - { - // -101 means to select all - // -100 means to select data-limited - // -102 means to select no growth or length - // positive integer means to add that item to selected list - // negative integer means to remove selected item from list - // -999 means to stop reading items for the list - ender = 0; - do - { - ivector tempin(1, 1); - *(ad_comm::global_datafile) >> tempin(1, 1); - if (tempin(1) == -999) - ender = 1; - reportdetail_list.push_back(tempin(1, 1)); - } while (ender == 0); - int Nrec = reportdetail_list.size() - 2; - for (int j = 0; j <= Nrec; j++) - { - if (reportdetail_list[j](1) == -100) rd_background = 0; - if (reportdetail_list[j](1) == -101) rd_background = 1; - if (reportdetail_list[j](1) == -102) rd_background = 2; - } - } - else - { - rd_background = reportdetail; // 0=limited; 2=brief; 1=all - } - - // set background set of picked reports; then set custom if reportdetail==3 - for (k = 1; k <= 60; k++) - { - pick_report_use(k) = "N"; // all off - } - if (rd_background == 0) // limited - { - pick_report_use(1) = "Y"; - pick_report_use(2) = "Y"; - pick_report_use(5) = "Y"; - pick_report_use(6) = "Y"; - pick_report_use(14) = "Y"; - pick_report_use(15) = "Y"; - pick_report_use(16) = "Y"; - pick_report_use(61) = "Y"; - } - else if (rd_background == 2) // brief, no growth or length - { - for (k = 1; k <= 61; k++) - { - pick_report_use(k) = "Y"; // start with all on - } - pick_report_use(7) = "N"; - pick_report_use(8) = "N"; - pick_report_use(11) = "N"; - pick_report_use(12) = "N"; - pick_report_use(13) = "Y"; - pick_report_use(17) = "N"; - pick_report_use(18) = "N"; - pick_report_use(24) = "N"; - pick_report_use(25) = "N"; - pick_report_use(26) = "N"; - pick_report_use(27) = "N"; - pick_report_use(29) = "N"; - pick_report_use(31) = "N"; - pick_report_use(33) = "N"; - pick_report_use(34) = "N"; - pick_report_use(37) = "N"; - pick_report_use(38) = "N"; - pick_report_use(44) = "N"; - pick_report_use(45) = "N"; - pick_report_use(46) = "N"; - pick_report_use(47) = "N"; - pick_report_use(48) = "N"; - pick_report_use(49) = "N"; - pick_report_use(50) = "N"; - pick_report_use(53) = "N"; - pick_report_use(55) = "N"; - pick_report_use(57) = "N"; - pick_report_use(58) = "N"; - pick_report_use(59) = "N"; - } - else // all on - { - for (k = 1; k <= 61; k++) - { - pick_report_use(k) = "Y"; - } - } - if (reportdetail == 3) - { - for (unsigned j = 0; j <= reportdetail_list.size() - 2; j++) - { - if (reportdetail_list[j](1) > 0 && reportdetail_list[j](1) <= 60) - { - pick_report_use(reportdetail_list[j](1)) = "Y"; - } - else if (reportdetail_list[j](1) >= -60) - { - pick_report_use(-reportdetail_list[j](1)) = "N"; - } - else if (reportdetail_list[j](1) > -100) - { - warnstream << "custom report number: " << reportdetail_list[j](1) << " is out of range and ignored"; - write_message(WARN, 0); - } - } - } - - for (k = 1; k <= 60; k++) - echoinput << k << " " << pick_report_use(k) << " " << pick_report_name(k) << endl; - // clang-format off - END_CALCS - - init_int docheckup; // flag for ending dump to "checkup.SS" -!!echoinput<0) echoinput<=11 invoke multiyr with 10's digit; append .1 to invoke log(ratio) with hundreds digit - LOCAL_CALCS - // clang-format on - echoinput << depletion_basis_rd << " depletion_basis as read; this is also known as Bratio and is a std quantity; has multi-yr and log(ratio) options" << endl; - depletion_multi = 0; - depletion_log = 0; - depletion_basis = int( depletion_basis_rd ); // discard decimal - k = depletion_basis; - - if (depletion_basis_rd > float( depletion_basis) ) // invokes log(ratio) if decimal value exists - { - depletion_log = 1; - } - - if (k > 10) // invokes multiyr - { - depletion_multi = int(k / 10); - depletion_basis = k - 10 * depletion_multi; - } - - echoinput << "Parse into: depletion_log(ratio): " << depletion_log << " depletion_multi-yr: " << depletion_multi << " depletion_basis: " << depletion_basis << endl; - // clang-format off - END_CALCS - - init_number depletion_level; -!!echoinput << depletion_level << " depletion_level" << endl; - init_int SPR_reporting; // 0=skip; 1=SPR; 2=SPR_MSY; 3=SPR_Btarget; 4=(1-SPR); 5=SPR -!!echoinput << SPR_reporting << " SPR_reporting" << endl; - init_int F_reporting; // 0=skip; 1=exploit(Bio); 2=exploit(Num); 3=sum(frates); 4=true F for range of ages; 5=unweighted avg F for range of ages - LOCAL_CALCS - // clang-format on - echoinput << F_reporting << " F_reporting quantity, e.g. 3=sum(apical Fs)" << endl; - if (F_reporting == 4 || F_reporting == 5) { - k = 2; - } - else - { - k = 0; - } - // clang-format off - END_CALCS - init_ivector F_reporting_ages_R(1,k); - // convert to F_reporting_ages later after nages is read. - LOCAL_CALCS - // clang-format on - if (k > 0) - { - echoinput << F_reporting_ages_R << " F_reporting_ages_R" << endl; - echoinput << "Will be checked against maxage later " << endl; - } - // clang-format off - END_CALCS - - init_number F_std_basis_rd; // 0=raw; 1=rel Fspr; 2=rel Fmsy ; 3=rel Fbtgt; values >=11 invoke multiyr with 10's digit; >=100 invoke log(ratio) with hundreds digit - number finish_starter; - int mcmc_output_detail; - number MCMC_bump; // value read and added to ln(R0) when starting into MCMC - number ALK_tolerance; - number tempin; - int ender; - int irand_seed; - int irand_seed_rd; - int timevary_bio_4SRR; // flag in 3.30.24 for impact of timevary biology on benchmark SRR calculations - int timevary_bio_4SRR_rd; // flag in 3.30.24 for impact of timevary biology on benchmark SRR calculations - int F_std_multi; // for multi-year averaging of F_std - int F_std_log; // for log(ratio) of F_std - int F_std_basis; - - LOCAL_CALCS - // clang-format on - { - F_std_multi = 0; - F_std_log = 0; - echoinput << F_std_basis_rd << " F_std basis as read" << endl; - F_std_basis = int(F_std_basis_rd); // discards the decimal - k = F_std_basis; // temp value - - if (F_std_basis_rd > float( F_std_basis) ) // invokes log(ratio) if decimal value exists - { - F_std_log = 1; - } - - if (k > 10) // invokes multiyr - { - F_std_multi = int(k / 10); - F_std_basis = k - 10 * F_std_multi; - } - - echoinput << "Parse into: F_std_log(ratio): " << F_std_log << " F_std_multi: " << F_std_multi << " F_std_basis: " << F_std_basis << endl; - if (F_std_multi > 1) - { - warnstream << "new feature for multiyr F_std reporting, be sure STD reporting covers all years from styr to endyr"; - write_message(NOTE, 0); - } - echoinput << "For Kobe plot, set depletion_basis=2; depletion_level=1.0; F_reporting=your choice; F_std_basis=2" << endl; - - mcmc_output_detail = 0; - MCMC_bump = 0.; - ALK_tolerance = 0.0; - irand_seed_rd = -1; - irand_seed = -1; - ender = 0; - //embed following reads in a do-while such that additional reads can be added while retaining backward compatibility with files that do not have the added elements - // element list: - // 1. MCMC_output_detail.MCMC_bump - // 2. ALK_tolerance - // 3. irand_seed; added for 3.30.15 - // xx. finish_starter - do - { - *(ad_comm::global_datafile) >> tempin; - finish_starter = tempin; - if (tempin == 3.30 || tempin == 999) - ender = 1; - - if (tempin == 999.) // finish read in 3.24 format for ss_trans - { - echoinput << "SS read 999 from starter.ss, so will read files in 3.24 format" << endl - << endl; - if (readparfile > 0) - { - warnstream << " ss_trans does not read the PAR file; readparfile set to 0" << endl; - write_message(WARN, 0); - readparfile = 0; - } - } - else // reading in 3.30 format - { - finish_starter = 3.30; - echoinput << "Read files in 3.30 format" << endl; - echoinput << "SS will continue reading from starter.ss until it reads 3.30" << endl; - - echoinput << "read MCMC_output_detail.MCMC_bump as a single real number; separate values will be parsed from integer and fraction" << endl; - mcmc_output_detail = int(tempin); - MCMC_bump = tempin - mcmc_output_detail; - if (mcmc_output_detail < 0 || mcmc_output_detail > 2) - mcmc_output_detail = 0; - echoinput << "MCMC output detail(1=more_detail_to_posts; 2=write_report_for_each_mceval): " << mcmc_output_detail << endl; - echoinput << "MCMC bump to R0: " << MCMC_bump << endl; - - echoinput << "Now read ALK tolerance which is deprecated. If not 0, it will be reset to 0." << endl; - *(ad_comm::global_datafile) >> ALK_tolerance; - if (ALK_tolerance > 0.0 || ALK_tolerance < 0.0) - { - warnstream << "ALK tolerance is now deprecated and is set to 0" ; - write_message(ADJUST, 1); - ALK_tolerance = 0; - } - echoinput << "ALK tolerance: " << ALK_tolerance << endl; - - echoinput << "Now get random number seed; enter -1 to use long(time) as the seed" << endl; - *(ad_comm::global_datafile) >> tempin; - if (tempin == 3.30) - { - ender = 1; - irand_seed_rd = -1; - irand_seed = -1; - } - else - { - irand_seed_rd = int(tempin); - irand_seed = irand_seed_rd; - echoinput << "random number seed: " << irand_seed << endl; - tempin = 0; - } - - echoinput << "now read flag for dealing with impact of time-varying biology on benchmark SRR calculations" << endl; - timevary_bio_4SRR = 0; - timevary_bio_4SRR_rd = -1; - *(ad_comm::global_datafile) >> tempin; - if (tempin == 3.30) // starter file does not contain the new line for timevary_bio_4SRR, so assign default - { - ender = 1; - timevary_bio_4SRR = 0; - } - else // new input line beginning 3.30.24 - { - timevary_bio_4SRR = int(tempin); - timevary_bio_4SRR_rd = 0; // indicates that line was read - echoinput << "Compatibility flag for legacy (0) vs improved (1) impact of timevary biology on benchmark SRR calcs: " << timevary_bio_4SRR << endl; - tempin = 0; - } - - if (ender == 0) - { - *(ad_comm::global_datafile) >> tempin; - if (tempin == 3.30) - { - ender = 1; - } - else - { - echoinput << endl - << "starter.ss should have read 3.30 here; it read: " << tempin << endl; - warnstream << "starter.ss has extra input lines; check echoinput to verify read"; - write_message(FATAL, 0); - } - } - } - } while (ender == 0); - echoinput << " finish reading starter.ss" << endl - << endl; - } - // clang-format off - END_CALCS - - // end reading from Starter file - - number pi -!! pi = 3.14159265358979; - - number neglog19 -!! neglog19 = -log(19.); - - number NilNumbers // used as the minimum for posfun and similar checks -!! NilNumbers = 0.0000001; -// !! NilNumbers = 0.000; - -!!// SS_Label_Info_1.2.1 #Set up a dummy datum for use when max phase = 0 - number dummy_datum; - int dummy_phase; -!! dummy_datum = 1.; -!! if (Turn_off_phase <= 0) {dummy_phase = 0;} else {dummy_phase = -6;} - - int runnumber; - int N_prof_var; - int prof_var_cnt; - int prof_junk; - - LOCAL_CALCS - // clang-format on - // SS_Label_Info_1.3 #Read runnumber.ss - ifstream fin1("runnumber.ss", ios::in); - if (fin1) - { - fin1 >> runnumber; - runnumber++; - fin1.close(); - } - else - { - runnumber = 1; - } - // SS_Label_Info_1.3.1 #Increment runnumber and write to file - ofstream fin2("runnumber.ss", ios::out); - fin2 << runnumber; - fin2.close(); - - // SS_Label_Info_1.4 #Read Profilevalues.ss file - N_prof_var = 998; - ifstream fin3("profilevalues.ss", ios::in); - fin3 >> N_prof_var; // if file is null this will not return anything - if (N_prof_var == 998) - { - N_prof_var = 0; - prof_junk = 0; - } - else - { - prof_junk = 1; - } - fin3.close(); - if (N_prof_var > 0) - { - ad_comm::change_datafile_name("profilevalues.ss"); - } - else // just to have something in scope - { - ad_comm::change_datafile_name("runnumber.ss"); - } - prof_var_cnt = (runnumber - 1) * N_prof_var + 2; - // clang-format off - END_CALCS - init_vector prof_var(1,prof_junk+runnumber*N_prof_var); -// SS_Label_file #3. **SS_readdata.tpl** -// SS_Label_file # * read *data_file* named in starter.ss -// SS_Label_file # * create arrays for data with dimensioning defined dynamically -// SS_Label_file # * creates link from each data element to area/time/fleet that datum occur, and other arrays with specification of which data types occur in each area/time -// SS_Label_file # * uses function found in SS_global: get_data_timing() -// SS_Label_file # * read *forecast.ss* -// SS_Label_file # * note that this extends the time dimension of some arrays, so is read before readcontrol - -// SS_Label_Flow read data file named in starter.ss file -// SS_Label_Info_2.0 #READ DATA FILE -// SS_Label_Info_2.1 #Read comments and dimension info -// SS_Label_Info_2.1.1 #Read and save comments at top of data file - number fif // end of file marker - - LOCAL_CALCS - // clang-format on - // - ad_comm::change_datafile_name(datfilename); - - if (finish_starter == 999) - { - warnstream << "finish_starter=999, so probably used a 3.24 starter.ss; please update"; - write_message(WARN, 0); - finish_starter = 3.30; - } - cout << " reading from data file" << endl; - ifstream Data_Stream(datfilename); // even if the global_datafile name is used, there still is a different logical device created - k = 0; - N_DC = 0; - while (k == 0) - { - Data_Stream >> readline; // reads the line from input stream - if (length(readline) > 2) - { - checkchar = readline(1); - k = strcmp(checkchar, "#"); - checkchar = readline(1, 2); - j = strcmp(checkchar, "#C"); - if (j == 0) - { - N_DC++; - Data_Comments += readline; - } - } - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_2.1.2 #Read model time dimensions - int read_seas_mo; // 1=read integer season; 2=read real months - LOCAL_CALCS - // clang-format on - read_seas_mo = 2; - // clang-format off - END_CALCS - - - int N_subseas; // number of subseasons within season; must be even number to get one to be mid_season - ivector timing_constants(1,6); - LOCAL_CALCS - // clang-format on - *(ad_comm::global_datafile) >> styr; //start year of the model - echoinput << styr << " start year " << endl; - - *(ad_comm::global_datafile) >> endyr; // end year of the model - echoinput << endyr << " end year " << endl; - - *(ad_comm::global_datafile) >> nseas; // number of seasons - echoinput << nseas << " N seasons " << endl; - // clang-format off - END_CALCS - init_vector seasdur(1,nseas); // season duration; enter in units of months, fractions OK; will be rescaled to sum to 1.0 if total is greater than 11.9 - - LOCAL_CALCS - // clang-format on - echoinput << seasdur << " months/seas (fractions OK) " << endl; - *(ad_comm::global_datafile) >> N_subseas; - echoinput << N_subseas << " Number of subseasons (even number only; min 2) for calculation of ALK " << endl; - mid_subseas = N_subseas / 2 + 1; - timing_constants(1) = read_seas_mo; - timing_constants(2) = nseas; - timing_constants(3) = N_subseas; - timing_constants(4) = mid_subseas; - timing_constants(5) = styr; - timing_constants(6) = endyr; - // clang-format off - END_CALCS - - int TimeMax; - int TimeMax_Fcast_std; - int ALK_time_max; - int eq_yr; - int bio_yr; - number sumseas; - - // SS_Label_Info_2.1.3 #Set up seasons - vector seasdur_half(1,nseas); // half a season - matrix subseasdur(1,nseas,1,N_subseas); // cumulative time, within season, for each subseas - vector subseasdur_delta(1,nseas); // length of each subseason - vector azero_seas(1,nseas); // cumulative time, within year, up until begin of this season - - LOCAL_CALCS - // clang-format on - sumseas = sum(seasdur); - if (sumseas >= 11.9) - { - seasdur /= sumseas; - seas_as_year = 0; - sumseas = 12.0; // to be sure it is exactly 12. - } - else - { - seasdur /= 12.; - seas_as_year = 1; - // sumseas will now be used as the duration of the pseudo-year, rather than assuming year has 12 months; - if (nseas > 1) - { - warnstream << "Error. Can only have 1 season when during seasons as psuedo-years."; - write_message (FATAL, 0); - } - } - seasdur_half = seasdur * 0.5; // half a season - subseasdur_delta = seasdur / double(N_subseas); - TimeMax = styr + (endyr + 50 - styr) * nseas + nseas - 1; - retro_yr = endyr + retro_yr; - ALK_time_max = (endyr - styr + 51) * nseas * N_subseas; // sets maximum size for data array indexing 50 years into forecast - // ALK_time_max will be redefined after reading forecast's YrMax to accomodate forecasts longer than the 50 year data limit - - azero_seas(1) = 0.; - if (nseas > 1) - { - for (s = 2; s <= nseas; s++) /* SS_loop: calculate azero_seas from cumulative sum of seasdur(s) */ - { - azero_seas(s) = sum(seasdur(1, s - 1)); - } - } - subseasdur.initialize(); - for (s = 1; s <= nseas; s++) /* SS_loop: for each season */ - { - for (subseas = 2; subseas <= N_subseas; subseas++) /* SS_loop: calculate cumulative time within season to start of each subseas */ - { - subseasdur(s, subseas) = subseasdur(s, subseas - 1) + seasdur(s) / double(N_subseas); - } - } - echoinput << seasdur << " processed season duration (frac. of year) " << endl; - echoinput << subseasdur_delta << " processed subseason duration (frac. of year) " << endl; - echoinput << " processed subseason cumulative annual time within season " << endl - << subseasdur << endl; - if (seas_as_year == 1) - { - warnstream << "Season durations sum to <11.9, so SS3 assumes you are doing years as pseudo-seasons." << endl - << "There can be only 1 season in this timestep and SS3 will ignore month input and assume all observation occur at middle of this pseudo-year" << endl - << "mortality, growth and movement rates are per annum, so will get multiplied by the duration of this timestep as they are used." << endl - << "What gets reported as age is now age in timesteps; and input of age-specific M or K requires one entry per timestep" << endl - << "Similarly, output of age-specific quantities is in terms of number of timesteps, not real years" << endl - << "spawn_month and settlement_month in control file are best set to 1.0 when doing years as pseudo-seasons" << endl; - write_message(WARN, 1); - } - // clang-format off - END_CALCS - -// SPAWN-RECR: define spawning season - init_number spawn_rd; - number spawn_month; // month that spawning occurs - int spawn_seas; // spawning occurs in this season - int spawn_subseas; // - number spawn_time_seas; // real time within season for mortality calculation - LOCAL_CALCS - // clang-format on - if (read_seas_mo == 1) // so reading values of integer season - { - spawn_seas = spawn_rd; - spawn_month = 1.0 + azero_seas(spawn_seas) / sumseas; - spawn_subseas = 1; - spawn_time_seas = 0.0; - } - else // reading values of month - { - spawn_month = spawn_rd; - temp1 = (spawn_month - 1.0) / sumseas; // spawn_month as fraction of year - if (spawn_month >= 13.0) - { - warnstream << "Fatal error. spawn_month must be <13.0, end of year is 12.99, value read is: " << spawn_month; - write_message (FATAL, 0); - } - spawn_seas = 1; // earlist possible spawn_seas; - spawn_subseas = 1; // earliest possible subseas in spawn_seas - temp = azero_seas(spawn_seas) + subseasdur_delta(spawn_seas); // starting value - while (temp <= temp1 + 1.0e-9) - { - if (spawn_subseas == N_subseas) - { - spawn_seas++; - spawn_subseas = 1; - } - else - { - spawn_subseas++; - } - temp += subseasdur_delta(spawn_seas); - } -// spawn_time_seas = (temp1 - azero_seas(spawn_seas)) / seasdur(spawn_seas); // incorrect: remaining fraction of year converted to fraction of season - spawn_time_seas = (temp1 - azero_seas(spawn_seas)); // timing in units of fraction of year such that exp(-Z*spawn_time_seas) will be correct - } - echoinput << "SPAWN month: " << spawn_month << "; seas: " << spawn_seas << "; subseas_for_ALK: " << spawn_subseas << "; spawntiming as frac. of year: " << spawn_time_seas << endl; - if (spawn_seas > nseas) - { - warnstream << " spawn_seas index must be <= nseas "; - write_message(WARN, 0); - } - // clang-format off - END_CALCS - int pop; // number of areas - int gender_rd; - int gender; // number of sexes - int nages; // maxage as accumulator - int nages2; // doubled vector to store males after females = gender*nages+gender-1 - int Nsurvey; - int Nfleet; - int Nfleet1; // used with 3.24 for number of fishing fleets - - LOCAL_CALCS - // clang-format on - { - *(ad_comm::global_datafile) >> gender_rd; - gender = abs(gender_rd); - if (gender_rd < 0) - echoinput << "gender read is negative, so total spawnbiomass will be multiplied by frac_female parameter" << endl; - *(ad_comm::global_datafile) >> nages; - echoinput << gender << " N sexes " << endl - << "Accumulator age " << nages << endl; - *(ad_comm::global_datafile) >> pop; - echoinput << pop << " N_areas " << endl; - *(ad_comm::global_datafile) >> Nfleet; - Nfleet1 = 0; - Nsurvey = 0; - nages2 = gender * nages + gender - 1; - echoinput << Nfleet << " total number of fishing fleets and surveys " << endl; - - // define some useful labels - MGtype_Lbl += "natmort"; - MGtype_Lbl += "growth"; - MGtype_Lbl += "wtlen"; - MGtype_Lbl += "recr_dist"; - MGtype_Lbl += "migration"; - MGtype_Lbl += "ageerror"; - MGtype_Lbl += "catchmult"; - MGtype_Lbl += "hermaphro"; - MGtype_Lbl += "null9"; - MGtype_Lbl += "selectivity"; - MGtype_Lbl += "rel_F"; - MGtype_Lbl += "recruitment"; - echoinput << "MGtype labels: "<< MGtype_Lbl << endl; - } - // clang-format off - END_CALCS - -// SS_Label_Info_2.1.5 #Define fleets, surveys, predators and areas - imatrix pfleetname(1,Nfleet,1,2); - ivector fleet_type(1,Nfleet); // 1=fleet with catch; 2=discard only fleet with F; 3=survey(ignore catch); 4=M2=predator - int N_bycatch; // number of bycatch only fleets - int N_pred; // number of predator fleets - ivector N_catchfleets(0,pop); // number of bycatch plus landed catch fleets by area - imatrix fish_fleet_area(0,pop,0,Nfleet); // list of catch_fleets that are type 1 or 2, so have a F - ivector predator(1,Nfleet); // list of "fleets" that are type 4 - ivector predator_rev(1,Nfleet); // predator ID given f - imatrix predator_area(0,pop,0,Nfleet); // list of predators by area - ivector need_catch_mult(1,Nfleet); // 0=no, 1=need catch_multiplier parameter - vector surveytime(1,Nfleet); // (-1, 1) code for fisheries to indicate use of season-wide observations, or specifically timed observations - ivector fleet_area(1,Nfleet); // areas in which each fleet/survey/predator operates - vector catchunits1(1,Nfleet); // 1=biomass; 2=numbers -// vector catch_se_rd1(1,Nfleet) // units are se of log(catch); use -1 to ignore input catch values for discard only fleets - vector catchunits(1,Nfleet); -// vector catch_se_rd(1,Nfleet) - matrix catch_se(styr-nseas,TimeMax,1,Nfleet); - matrix fleet_setup(1,Nfleet,1,5); // type, timing, area, units, need_catch_mult - matrix bycatch_setup(1,Nfleet,1,6); - // 1: fleet number; must match fleet definitions"<> fleet_setup(f)(1, 5); - *(ad_comm::global_datafile) >> anystring; - fleetname += anystring; - fleet_type(f) = int(fleet_setup(f, 1)); - if (fleet_type(f) == 2) - N_bycatch++; - surveytime(f) = fleet_setup(f, 2) / fabs(fleet_setup(f, 2)); - fleet_setup(f, 2) = surveytime(f); - p = int(fleet_setup(f, 3)); //area - fleet_area(f) = p; - catchunits(f) = int(fleet_setup(f, 4)); - need_catch_mult(f) = int(fleet_setup(f, 5)); - if (fleet_type(f) <= 2) - { - N_catchfleets(0)++; // overall N - N_catchfleets(p)++; // count by area - fish_fleet_area(0, N_catchfleets(0)) = f; // to find the "f" index for a catchfleet when not within an area loop - fish_fleet_area(p, N_catchfleets(p)) = f; // to find the index when in an area loop - - YPR_mask(f) = 1; - if (surveytime(f) != -1.) - { - warnstream << "fishing fleet: " << f << " surveytime read as: " << surveytime(f) << " normally is -1 for fishing fleet; can override for indiv. obs. using 1000+month"; - write_message(WARN, 0); - } - } - else if (fleet_type(f) == 3) - { - if (surveytime(f) == -1.) - { - warnstream << "survey fleet: " << f << " surveytime read as: " << surveytime(f) << " SS3 resets to 1 for all survey fleets, and always overridden by indiv. obs. month"; - write_message (FATAL, 0); - surveytime(f) = 1.; - } - } - else if (fleet_type(f) == 4) // predator, e.g. red tide - { - N_pred++; - predator(N_pred) = f; - predator_rev(f) = N_pred; - predator_area(0, N_pred) = f; // to find the "f" index for a predator when not within an area loop - predator_area(p, N_pred) = f; // to find the index when in an area loop - surveytime(f) = -1.; - } - if (fleet_type(f) > 1 && need_catch_mult(f) > 0) - { - warnstream << "Need_catch_mult can be used only for fleet_type=1 fleet= " << f; - write_message (FATAL, 0); - } - echoinput << f << " # " << fleet_setup(f) << " # " << fleetname(f) << endl; - if (f > 1) { // check for duplicate fleet names, which will break r4ss - for (int f1 = 1; f1 < f; f1++) - { - if (fleetname(f1) == fleetname(f)) - { - warnstream << "duplicate fleet names for fleets: " << f1 << " and " << f << "; " << fleetname(f) << "; SS3 will exit"; - write_message (FATAL, 0); - } - } - } - } - - if (N_bycatch > 0) - { - echoinput << "Now read bycatch fleet characteristics for " << N_bycatch << " fleets" << endl; - echoinput << "1: fleet number; must match fleet definitions" << endl; - echoinput << "2: 1=include dead bycatch in total dead catch for F0.1 and MSY optimizations and forecast ABC; 2=omit from total catch for these purposes (but still include the mortality)" << endl; - echoinput << "3: 1=Fmult scales with other fleets; 2=bycatch F constant at input value; 3=mean bycatch F from range of years" << endl; - echoinput << "4: F or first year of range" << endl; - echoinput << "5: last year of range" << endl; - echoinput << "6: not used" << endl; - for (j = 1; j <= N_bycatch; j++) - { - *(ad_comm::global_datafile) >> f; - bycatch_setup(f, 1) = f; - *(ad_comm::global_datafile) >> bycatch_setup(f)(2, 6); - if (fleet_type(f) == 2) - { - echoinput << f << " " << fleetname(f) << " bycatch_setup: " << bycatch_setup(f) << endl; - if (bycatch_setup(f, 2) == 2) // omit bycatch fleet catch from YPR optimize - { - YPR_mask(f) = 0; - } - if (bycatch_setup(f, 3) == 3) // check year range - { - if (bycatch_setup(f, 4) < styr) - bycatch_setup(f, 4) = styr; - if (bycatch_setup(f, 5) > retro_yr) - bycatch_setup(f, 5) = retro_yr; - } - } - else - { - warnstream << "fleet " << f << " is in bycatch list but not designated as bycatch fleet"; - write_message (FATAL, 0); - } - } - } - echoinput << "YPR_optimize_mask: " << YPR_mask << endl; - Nfleet1 = N_catchfleets(0); - N_retParm = 0; - } - // clang-format off - END_CALCS - -// ProgLabel_2.1.5 define genders and max age - - ivector age_vector(0,nages); - vector r_ages(0,nages); - vector frac_ages(0,nages); - ivector years(styr,endyr); // vector of the years of the model - vector r_years(styr,endyr); - ivector ALK_subseas_update(1,nseas*N_subseas); // 0 means ALK is OK for this subseas, 1 means that recalc is needed - - ivector F_reporting_ages(1,2); - - LOCAL_CALCS - // clang-format on - for (a = 0; a <= nages; a++) // SS_loop: fill ivector age vector - age_vector(a) = a; - for (a = 0; a <= nages; a++) // SS_loop: fill real vector r_ages - r_ages(a) = double(a); - frac_ages = r_ages / r_ages(nages); - for (y = styr; y <= endyr; y++) - { //year vector - years(y) = y; - r_years(y) = y; - } - if (F_reporting == 4 || F_reporting == 5) - { - F_reporting_ages = F_reporting_ages_R; - if (F_reporting_ages(1) > (nages - 2) || F_reporting_ages(1) < 0) - { - warnstream << "reset lower end of F_reporting_ages to be nages-2 "; - write_message(ADJUST, 0); - F_reporting_ages(1) = nages - 2; - } - if (F_reporting_ages(2) > (nages - 2) || F_reporting_ages(2) < 0) - { - warnstream << "reset upper end of F_reporting_ages to be nages-2 "; - write_message(ADJUST, 0); - F_reporting_ages(2) = nages - 2; - } - } - else - { - F_reporting_ages(1) = nages / 2; - F_reporting_ages(2) = F_reporting_ages(1); - } - // clang-format off - END_CALCS - -// SS_Label_Info_2.1.6 #Indexes for data timing. "have_data" and "data_time" hold pointers for data occurrence, timing, and ALK need - int data_type; - number data_timing; - 4iarray have_data(1,ALK_time_max,0,Nfleet,0,9,0,150); - imatrix have_data_yr(styr,endyr+50,0,Nfleet); - -// have_data stores the data index of each datum occurring at time ALK_time, for fleet f of observation type k. Up to 150 data are allowed due to CAAL data -// have_data(ALK_idx,0,0,0) is overall indicator that some datum requires ALK update in this ALK_time -// have_data() 3rd element: 0=any; 1=survey/CPUE/effort; 2=discard; 3=mnwt; 4=length; 5=age; 6=SizeFreq; 7=sizeage; 8=morphcomp; 9=tags -// have_data() 4th element; zero'th element contains N obs for this subseas; allows for 150 observations per datatype per fleet per subseason - - 3darray data_time(1,ALK_time_max,1,Nfleet,1,3); -// data_time(): first value will hold real month; 2nd is timing within season; 3rd is year.fraction -// for a given fleet x subseas, all observations must have the same specific timing (month.fraction) -// a warning will be given if subsequent observations have a different month.fraction -// an observation's real_month is used to assign it to a season and a subseas within that seas, and it is used to calculate the data_timing within the season for mortality - -// where ALK_idx=(y-styr)*nseas*N_subseas+(s-1)*N_subseas+subseas This is index to subseas and used to indicate which ALK is being referenced - -// ProgLabel_2.2 Read CATCH amount by fleet - matrix obs_equ_catch(1,nseas,1,Nfleet); // initial, equilibrium catch. now seasonal - LOCAL_CALCS - // clang-format on - have_data.initialize(); - have_data_yr.initialize(); - obs_equ_catch.initialize(); - - for (y = 1; y <= ALK_time_max; y++) - for (f = 1; f <= Nfleet; f++) - { - data_time(y, f, 1) = -1.0; // set to illegal value since 0.0 is valid - } - // clang-format off - END_CALCS -!!// SS_Label_Info_2.2 #Read CATCH amount by fleet - - int N_ReadCatch; -// int Catch_read; - vector tempvec(1,6); // vector used for temporary reads - LOCAL_CALCS - // clang-format on - ender = 0; - do - { - dvector tempvec(1, 5); - *(ad_comm::global_datafile) >> tempvec(1, 5); - if (tempvec(1) == -9999.) - ender = 1; - catch_read.push_back(tempvec(1, 5)); - } while (ender == 0); - N_ReadCatch = catch_read.size() - 1; - echoinput << N_ReadCatch << " records" << endl; - // clang-format off - END_CALCS - - matrix catch_ret_obs(1,Nfleet,styr-nseas,TimeMax+nseas); - imatrix catch_record_count(1,Nfleet,styr-nseas,TimeMax+nseas); - 3iarray catch_seas_area(styr,TimeMax,1,pop,0,Nfleet); - matrix totcatch_byarea(styr,TimeMax,1,pop); - vector totcat(styr-1,endyr); // by year, not by t - int first_catch_yr; - vector catch_by_fleet(1,Nfleet); - - ivector disc_fleet_list(1,Nfleet); - int N_retain_fleets; - int catch_warn; - - LOCAL_CALCS - // clang-format on - catch_ret_obs.initialize(); - catch_record_count.initialize(); - catch_warn = 0; - tempvec.initialize(); - for (k = 0; k <= N_ReadCatch - 1; k++) - { - // do read in list format y, s, f, catch, catch_se - tempvec(1, 5) = catch_read[k]; - g = tempvec(1); - s = tempvec(2); - f = tempvec(3); - if (g == -999) - { // designates initial equilibrium - y = styr - 1; - } - else - { - y = g; - } - if (k == 0) - echoinput << "first catch record: " << tempvec(1, 5) << endl; - if (k == (N_ReadCatch - 1)) - echoinput << "last catch record: " << tempvec(1, 5) << endl; - if (y >= (styr - 1) && y <= endyr && (g == -999 || g >= styr)) // observation is in date range - { - if (s > nseas) - { - catch_warn++; - s = nseas; - // allows for collapsing multiple season catch data down into fewer seasons - // typically to collapse to annual because accumulation will all be in the index "nseas" - } - if (s > 0) - { - t = styr + (y - styr) * nseas + s - 1; - { - catch_ret_obs(f, t) += tempvec(4); - catch_record_count(f, t)++; - catch_se(t, f) = tempvec(5); - } - } - else // distribute catch equally across seasons - { - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - { - catch_ret_obs(f, t) += tempvec(4) / nseas; - catch_record_count(f, t)++; - } - } - } - } - } - if (catch_warn > 0) { - if (catch_warn > 1) - warnstream << catch_warn << " catch records have "; - else - warnstream << "one catch record has "; - warnstream << "seas>nseas; perhaps erroneous entry of month rather than season; changed to nseas"; - write_message(ADJUST, 0); - } - // warn on duplicate catch records - for (y = styr - 1; y <= endyr; y++) - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) { - t = styr + (y - styr) * nseas + s - 1; - if (catch_record_count(f, t) > 1) - { - warnstream << catch_record_count(f, t) << " catch records have been accumulated into year, seas, fleet " << y << " " << s << " " << f << "; total catch= " << catch_ret_obs(f, t); - write_message(WARN, 0); - } - } - - obs_equ_catch.initialize(); - for (s = 1; s <= nseas; s++) - { - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - obs_equ_catch(s, f) = catch_ret_obs(f, styr - nseas - 1 + s); - } - echoinput << " equ, seas: -1 " << s << " catches: " << obs_equ_catch(s) << endl; - } - for (y = styr; y <= endyr; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - echoinput << "year, seas: " << y << " " << s << " catches: " << trans(catch_ret_obs)(t) << endl; - } - - // calc total catch by year so can calculate the first year with catch and to omit zero catch years from sdreport - totcat.initialize(); - catch_seas_area.initialize(); - totcatch_byarea.initialize(); - totcat(styr - 1) = sum(obs_equ_catch); // sums over all seasons and fleets - first_catch_yr = 0; - if (totcat(styr - 1) > 0.0) - first_catch_yr = styr - 1; - - for (y = styr; y <= endyr; y++) - { - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - for (p = 1; p <= pop; p++) - for (f = 1; f <= Nfleet; f++) - if (fleet_area(f) == p && catch_ret_obs(f, t) > 0.0 && fleet_type(f) <= 2) // excludes survey and predator fleets - { - catch_seas_area(t, p, f) = 1; - catch_seas_area(t, p, 0) = 1; - if (fleet_type(f) == 1) - totcat(y) += catch_ret_obs(f, t); - if (fleet_type(f) == 1) - totcatch_byarea(t, p) += catch_ret_obs(f, t); - } - } - if (totcat(y) > 0.0 && first_catch_yr == 0) - first_catch_yr = y; - if (y == endyr && totcat(y) == 0.0) - { - warnstream << "catch is 0.0 in endyr; this can cause problem in the benchmark and forecast calculations. "; - write_message(WARN, 0); - } - } - echoinput << endl - << "#_show_total_catch_by_fleet" << endl; - catch_by_fleet = rowsum(catch_ret_obs); - for (f = 1; f <= Nfleet; f++) - { - echoinput << f << " type: " << fleet_type(f) << " " << fleetname(f) << " catch: " << catch_by_fleet(f); - if (fleet_type(f) == 3 && catch_by_fleet(f) > 0.0) - { - warnstream << " Catch by survey fleet will be ignored " << fleet_type(f); - write_message(WARN, 1); - } - echoinput << endl; - } - // clang-format off - END_CALCS - - // SS_Label_Info_2.3 #Read fishery CPUE, effort, and Survey index or abundance -!!echoinput<=30 for special patterns - ivector Svy_errtype(1,Nfleet); // -2=gamma(Cole); -1=normal; 0=lognormal ; 1=lognormal w/ biascorr; >1=T-dist - ivector Svy_sdreport(1,Nfleet); // 0=no sdreport; 1=enable sdreport - int Svy_N_sdreport; - - LOCAL_CALCS - // clang-format on - - data_type = 1; // for surveys - echoinput << "Units: 0=numbers; 1=biomass; 2=F; >=30 for special patterns" << endl; - echoinput << "Errtype: -2=gamma(future); -1=normal; 0=lognormal ; 1=lognormal w/ biascorr; >1=T-dist with DF=XXX" << endl; - echoinput << "SD_Report: 0=no sdreport; 1=enable sdreport" << endl; - echoinput << "Fleet Units Err_Type SD_Report" << endl; - echoinput << Svy_units_rd << endl; - Svy_units = column(Svy_units_rd, 2); - Svy_errtype = column(Svy_units_rd, 3); - Svy_sdreport = column(Svy_units_rd, 4); - - for (f = 1; f<=Nfleet; f++) - { - if (Svy_units(f) >= 35 && Svy_errtype(f) >= 0) - { - warnstream << " survey error type must not be lognormal for surveys of deviations for fleet: " << f << fleetname(f) << endl; - write_message(FATAL, 1); - } - - if (Svy_errtype(f) < -2 ) - { - warnstream << " survey error type = " << Svy_errtype(f) << " is illegal for fleet: " << f << fleetname(f) << endl; - write_message(FATAL, 1); - } - } - - // read survey data - ender = 0; - do - { - dvector tempvec(1, 5); - *(ad_comm::global_datafile) >> tempvec(1, 5); - if (tempvec(1) == -9999.) - ender = 1; - Svy_data.push_back(tempvec(1, 5)); - } while (ender == 0); - Svy_N_rd = Svy_data.size() - 1; - echoinput << Svy_N_rd << " nobs_survey " << endl; - // clang-format off - END_CALCS - -// init_matrix Svy_data(1,Svy_N_rd,1,5) -// !!if(Svy_N_rd>0) echoinput<<" Svy_data "< 0) - { - for (i = 0; i <= Svy_N_rd - 1; i++) - { - echoinput << Svy_data[i] << endl; - y = Svy_data[i](1); - if (y >= styr) - { - f = abs(Svy_data[i](3)); // negative f turns off observation - Svy_N_fleet(f)++; - if (Svy_data[i](5) < 0) - { - warnstream << "cannot use negative se to indicate superperiods in survey data"; - write_message (FATAL, 0); - } - if (Svy_data[i](2) < 0) - Svy_super_N(f)++; // count the super-periods if seas<0 - } - } - Svy_N = sum(Svy_N_fleet); - for (f = 1; f <= Nfleet; f++) - if (Svy_super_N(f) > 0) - { - j = Svy_super_N(f) / 2; // because we counted the begin and end - if (2 * j != Svy_super_N(f)) - { - warnstream << "unequal number of starts and ends of survey superperiods "; - write_message (FATAL, 0); - } - else - { - Svy_super_N(f) = j; - } - } - } - - // check if there are observations for the index before enabling sdreport - for (f = 1; f <= Nfleet; ++f) - { - if (Svy_N_fleet(f) == 0) Svy_sdreport(f) = 0; - } - // clang-format off - END_CALCS - - imatrix Svy_time_t(1,Nfleet,1,Svy_N_fleet); // stores the continuous season index (t) for each obs - imatrix Svy_ALK_time(1,Nfleet,1,Svy_N_fleet); // stores the continuous subseas index (ALK_time) for each obs - imatrix Svy_use(1,Nfleet,1,Svy_N_fleet); - matrix Svy_obs(1,Nfleet,1,Svy_N_fleet); - matrix Svy_obs_log(1,Nfleet,1,Svy_N_fleet); - matrix Svy_se_rd(1,Nfleet,1,Svy_N_fleet); - matrix Svy_se(1,Nfleet,1,Svy_N_fleet); -// arrays for Super-years - imatrix Svy_super(1,Nfleet,1,Svy_N_fleet); // indicator used to display start/stop in reports - imatrix Svy_super_start(1,Nfleet,1,Svy_super_N); // where Svy_super_N is a vector - imatrix Svy_super_end(1,Nfleet,1,Svy_super_N); - matrix Svy_super_weight(1,Nfleet,1,Svy_N_fleet); - ivector Svy_styr(1,Nfleet); - ivector Svy_endyr(1,Nfleet); - imatrix Svy_yr(1,Nfleet,1,Svy_N_fleet); - number real_month; - vector timing_input(1,3); - vector timing_r_result(1,3); - vector Svy_minval(1,Nfleet); - vector Svy_maxval(1,Nfleet); - ivector timing_i_result(1,6); - // r_result(1,3) will contain: real_month, data_timing_seas, data_timing_yr, - // i_result(1,6) will contain y, t, s, f, ALK_time, use_midseas - - LOCAL_CALCS - // clang-format on - // SS_Label_Info_2.3.1 #Process survey observations, move info into working arrays,create super-periods as needed - Svy_super_N.initialize(); - Svy_N_fleet.initialize(); - Svy_styr.initialize(); - Svy_endyr.initialize(); - Svy_yr.initialize(); - Svy_minval.initialize(); - Svy_minval = 999999999.; - Svy_maxval.initialize(); - Svy_maxval = -999999999.; - in_superperiod = 0; - if (Svy_N > 0) - { - for (i = 0; i <= Svy_N_rd - 1; i++) // loop all, including those out of yr range - { - y = Svy_data[i](1); - if (y > endyr + 50) - { - warnstream << "forecast observations cannot be beyond endyr +50"; - write_message (FATAL, 0); - } - if (y >= styr) - { - // call a global function to calculate data timing and create various indexes - // function will return: data_timing, ALK_time, real_month, use_midseas - timing_input(1, 3) = Svy_data[i](1, 3); - get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); - f = abs(Svy_data[i](3)); - if (y > retro_yr) - Svy_data[i](3) = -f; - Svy_N_fleet(f)++; // count obs by fleet again - j = Svy_N_fleet(f); // index of observation as stored in working array - t = timing_i_result(2); - ALK_time = timing_i_result(5); - // some fleet specific indexes and working versions of the data and se - Svy_time_t(f, j) = t; - Svy_ALK_time(f, j) = ALK_time; // continuous subseas counter in which jth obs from fleet f occurs - Svy_se_rd(f, j) = Svy_data[i](5); // later adjust with varadjust, copy to se_cr_use, then adjust with extra se parameter - if (Svy_data[i](3) < 0) - { - Svy_use(f, j) = -1; - } - else - { - Svy_use(f, j) = 1; - Svy_N_fleet_use(f)++; - } - Svy_obs(f, j) = Svy_data[i](4); - Svy_yr(f, j) = y; - if (Svy_styr(f) == 0 || (y >= styr && y < Svy_styr(f))) - Svy_styr(f) = y; // for dimensioning survey q devs - if (Svy_endyr(f) == 0 || (y <= endyr && y > Svy_endyr(f))) - Svy_endyr(f) = y; // for dimensioning survey q devs - - // Svy_styr and Svy_endyr for recruitment surveys will be checked against recdev start and end in readcontrol - if (y >= styr && Svy_data[i](3) > 0) - { - Svy_minval(f) = min(Svy_minval(f), Svy_obs(f, j)); - Svy_maxval(f) = max(Svy_maxval(f), Svy_obs(f, j)); - } - // some all fleet indexes - if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f - { // real_month,fraction of season, year.fraction - data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); - } - else if (timing_r_result(1) == data_time(ALK_time, f, 1)) - { - warnstream << "SURVEY: duplicate survey obs for this time-fleet: y,s,f: " << y << " " << s << " " << f << " SS3 will exit "; - write_message (FATAL, 0); - } - - have_data(ALK_time, 0, 0, 0) = 1; - have_data(ALK_time, f, 0, 0) = 1; // so have data of some type in this subseas, for this fleet - have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas - p = have_data(ALK_time, f, data_type, 0); // current number of observations - have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas - have_data_yr(y, f) = 1; // survey or comp data exist this year - have_data_yr(y, 0) = 1; - // create super_year indexes - if (Svy_data[i](2) < 0) // start or stop a super-period; ALL observations must be continguous in the file - { - Svy_super(f, j) = -1; - if (in_superperiod == 0) // start superperiod - { - Svy_super_N(f)++; - Svy_super_start(f, Svy_super_N(f)) = j; - in_superperiod = 1; - } - else - { - if (in_superperiod == 1) // end superperiod - { - Svy_super_end(f, Svy_super_N(f)) = j; - in_superperiod = 0; - } - else - { - } - } - } - else - { - Svy_super(f, j) = 1; - } - } - } - - echoinput << "Successful read of survey data; total N: " << Svy_N << endl; - echoinput << "Index Survey_name N Super_Per Min_val max_val // Observations:" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (Svy_N_fleet(f) > 0) - { - echoinput << f << " " << fleetname(f) << " " << Svy_N_fleet(f) << " " << Svy_super_N(f) << " " << Svy_minval(f) << " " << Svy_maxval(f) << " // " << Svy_obs(f) << endl; - if (Svy_errtype(f) >= 0 && Svy_minval(f) <= 0.) - { - warnstream << "error, SS3 has exited. A fleet uses lognormal error and has an observation <=0.0; fleet: " << f; - write_message (FATAL, 0); - } - } - } - } - Svy_N_sdreport = 0; - for (f = 1; f <= Nfleet; ++f) - { - if (Svy_sdreport(f) > 0) - { - Svy_N_sdreport += Svy_N_fleet(f); - } - } - if (Svy_N_sdreport < 0) - Svy_N_sdreport = 0; - echoinput << "Number of sdreport index values: " << Svy_N_sdreport << endl; - // clang-format off - END_CALCS - - init_int Ndisc_fleets; - int nobs_disc; // number of discard records kept in active array - int disc_N_read; // number of records read - ivector disc_N_fleet(1,Nfleet); // kept obs per fleet - ivector disc_N_fleet_use(1,Nfleet); // kept obs per fleet - ivector N_suprper_disc(1,Nfleet); // N super_yrs per obs - - LOCAL_CALCS - // clang-format on - // SS_Label_Info_2.4 #read Discard data - echoinput << " note order of discard read is now: N fleets with disc, then if Ndisc_fleets>0 read: fleet, disc_units, disc_error(for 1,Ndisc_fleets), then read obs " << endl; - echoinput << Ndisc_fleets << " N fleets with discard " << endl; - - if (Ndisc_fleets > 0) - { - j = Nfleet; - } - else - { - j = 0; - } - data_type = 2; // for discard - // clang-format off - END_CALCS - init_imatrix disc_units_rd(1,Ndisc_fleets,1,3); - ivector disc_units(1,j); // formerly scalar disc_type - ivector disc_errtype(1,j); // formerly scalar DF_disc - vector disc_errtype_r(1,j); // real version for T-dist - vector disc_minval(1,j); - vector disc_maxval(1,j); - - LOCAL_CALCS - // clang-format on - disc_units.initialize(); - disc_errtype.initialize(); - disc_minval.initialize(); - disc_minval = 999999999.; - disc_maxval.initialize(); - disc_maxval = -999999999.; - nobs_disc = 0; - disc_N_fleet = 0; - disc_N_fleet_use = 0; - N_suprper_disc = 0; - if (Ndisc_fleets > 0) - { - echoinput << "#_discard_units (1=same_as_catchunits(bio/num);2=fraction; 3=numbers)" << endl; - echoinput << "#_discard_error: >0 for DF of T-dist(read CV below); 0 for normal with CV; -1 for normal with se; -2 for lognormal; -3 for trunc normal with CV" << endl; - echoinput << "#_fleet units errtype" << endl; - echoinput << disc_units_rd << endl; - for (j = 1; j <= Ndisc_fleets; j++) - { - f = disc_units_rd(j, 1); - disc_units(f) = disc_units_rd(j, 2); - disc_errtype(f) = disc_units_rd(j, 3); - disc_errtype_r(f) = float(disc_errtype(f)); - } - - ender = 0; - do - { - dvector tempvec(1, 5); - *(ad_comm::global_datafile) >> tempvec(1, 5); - if (tempvec(1) == -9999.) - ender = 1; - discdata.push_back(tempvec(1, 5)); - } while (ender == 0); - disc_N_read = discdata.size() - 1; - echoinput << disc_N_read << " N discard obs " << endl; - - if (disc_N_read > 0) - { - for (i = 0; i <= disc_N_read - 1; i++) // get count of observations in date range - { - echoinput << discdata[i] << endl; - y = discdata[i](1); - if (y >= styr) - { - f = abs(discdata[i](3)); - disc_N_fleet(f)++; - if (discdata[i](5) < 0) - { - warnstream << "Cannot use negative se as indicator of superperiod in discard data"; - write_message (FATAL, 0); - } - if (discdata[i](2) < 0) - N_suprper_disc(f)++; // count the super-periods if seas<0 or se<0 - } - } - nobs_disc = sum(disc_N_fleet); // sum of obs in the date range - for (f = 1; f <= Nfleet; f++) - if (N_suprper_disc(f) > 0) - { - j = N_suprper_disc(f) / 2; // because we counted the begin and end - if (2 * j != N_suprper_disc(f)) - { - warnstream << "unequal number of starts and ends of discard superperiods "; - write_message (FATAL, 0); - } - else - { - N_suprper_disc(f) = j; - } - } - } - } - // clang-format off - END_CALCS - - imatrix disc_time_t(1,Nfleet,1,disc_N_fleet); - imatrix disc_time_ALK(1,Nfleet,1,disc_N_fleet); // stores the continuous subseas index (ALK_time) for each obs - imatrix yr_disc_use(1,Nfleet,1,disc_N_fleet); - matrix obs_disc(1,Nfleet,1,disc_N_fleet); - matrix cv_disc(1,Nfleet,1,disc_N_fleet); - matrix sd_disc(1,Nfleet,1,disc_N_fleet); -// arrays for Super-years - imatrix yr_disc_super(1,Nfleet,1,disc_N_fleet); - imatrix suprper_disc1(1,Nfleet,1,N_suprper_disc); - imatrix suprper_disc2(1,Nfleet,1,N_suprper_disc); - matrix suprper_disc_sampwt(1,Nfleet,1,disc_N_fleet); - LOCAL_CALCS - // clang-format on - // SS_Label_Info_2.4.1 #Process discard data and create super periods as needed - disc_N_fleet.initialize(); // redo the counter to provide pointer for below - N_suprper_disc.initialize(); - in_superperiod = 0; - if (nobs_disc > 0) - { - for (i = 0; i <= disc_N_read - 1; i++) - { - y = discdata[i](1); - if (y > endyr + 50) - { - warnstream << "forecast observations cannot be beyond endyr +50"; - write_message (FATAL, 0); - } - if (y >= styr) - { - timing_input(1, 3) = discdata[i](1, 3); - get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); - - f = abs(discdata[i](3)); - if (y > retro_yr) - discdata[i](3) = -f; - disc_N_fleet(f)++; - j = disc_N_fleet(f); // index number for data that are in date range - t = timing_i_result(2); - ALK_time = timing_i_result(5); - disc_time_t(f, j) = t; - disc_time_ALK(f, j) = ALK_time; // subseas that this observation is in - - if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f - { // real_month,fraction of season, year.fraction - data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); - } - else if (timing_r_result(1) != data_time(ALK_time, f, 1)) - { - warnstream << "DISCARD: data_month already set for y,s,f: " << y << " " << s << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " but read value is: " << timing_r_result(1); - write_message(WARN, 0); - } - - have_data(ALK_time, 0, 0, 0) = 1; - have_data(ALK_time, f, 0, 0) = 1; // so have data of some type - have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas - p = have_data(ALK_time, f, data_type, 0); - have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas - - cv_disc(f, j) = discdata[i](5); - obs_disc(f, j) = fabs(discdata[i](4)); - disc_minval(f) = min(disc_minval(f), obs_disc(f, j)); - disc_maxval(f) = max(disc_maxval(f), obs_disc(f, j)); - if (discdata[i](4) < 0.0) - discdata[i](3) = -fabs(discdata[i](3)); // convert to new format using negative fleet - if (discdata[i](3) < 0) - { - yr_disc_use(f, j) = -1; - } - else - { - yr_disc_use(f, j) = 1; - disc_N_fleet_use(f)++; - } - if (fleet_type(f) < 3 && catch_ret_obs(f, t) <= 0.0) - { - warnstream << "discard observation: " << i << " has no corresponding catch " << discdata[i]; - write_message(WARN, 0); - } - - // create super_year indexes - if (discdata[i](2) < 0) // start/stop a super-year ALL observations must be continguous in the file - { - yr_disc_super(f, j) = -1; - if (in_superperiod == 0) // start a super-year - { - N_suprper_disc(f)++; - suprper_disc1(f, N_suprper_disc(f)) = j; - in_superperiod = 1; - } - else if (in_superperiod == 1) // end a super-year - { - suprper_disc2(f, N_suprper_disc(f)) = j; - in_superperiod = 0; - } - } - else - { - yr_disc_super(f, j) = 1; - } - } - } - } - echoinput << "Successful read of discard data " << endl; - echoinput << "Index Survey_name N Super_Per Min_val max_val // Observations:" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (disc_N_fleet(f) > 0) - { - echoinput << f << " " << fleetname(f) << " " << disc_N_fleet(f) << " " << N_suprper_disc(f); - echoinput << " " << disc_minval(f) << " " << disc_maxval(f) << " // " << obs_disc(f) << endl; - if (disc_minval(f) < 0.) - { - warnstream << "error, SS3 has exited. A discard observation is <0.0; fleet: " << f; - write_message (FATAL, 0); - } - } - } - // clang-format off - END_CALCS - - -!!// SS_Label_Info_2.5 #Read Mean Body Weight data -// note that syntax for storing this info internally is done differently than for surveys and discard - init_int do_meanbodywt; - int nobs_mnwt_rd; - int nobs_mnwt; - ivector mnwt_N_fleet(1,Nfleet); - ivector mnwt_N_fleet_use(1,Nfleet); - number DF_bodywt; // DF For meanbodywt T-distribution -!!echoinput< 0) - { - *(ad_comm::global_datafile) >> DF_bodywt; - echoinput << DF_bodywt << " degrees of freedom for bodywt T-distribution " << endl; - echoinput << "#_yr month fleet part type obs stderr" << endl; - echoinput << "# type is a required new input with 3.30.12" << endl; - echoinput << "# type makes explicit the infor previously contained in the sign of partition, e.g. " << endl; - echoinput << "# type=1 is for mean length, type=2 is for mean weight, (future, type=3 is for mean true age)" << endl; - ender = 0; - z = 0; - do - { - dvector tempvec(1, 7); - *(ad_comm::global_datafile) >> tempvec(1, 7); - if (tempvec(1) == -9999.) - ender = 1; - z++; - if (z <= 2) - { - echoinput << "meansize_obs_#:" << z << " # " << tempvec << endl; - } - mnwtdata1.push_back(tempvec(1, 7)); - if (tempvec(1) >= styr) - { - nobs_mnwt++; - } - } while (ender == 0); - nobs_mnwt_rd = mnwtdata1.size() - 1; - echoinput << nobs_mnwt_rd << " nobs for mean body size" << endl; - if (nobs_mnwt_rd > 0) - { - echoinput << "meansize_obs_#:" << nobs_mnwt_rd << " # " << mnwtdata1[nobs_mnwt_rd - 1] << endl; - } - } - // clang-format off - END_CALCS - matrix mnwtdata(1,11,1,nobs_mnwt); // working matrix for the mean size data -// 10 items are: 1yr, 2seas, 3fleet, 4part, 5type, 6obs, 7se, then three intermediate variance quantities, then ALKtime - - LOCAL_CALCS - // clang-format on - mnwtdata.initialize(); - j = 0; - data_type = 3; - if (nobs_mnwt > 0) - for (i = 0; i <= nobs_mnwt_rd - 1; i++) // loop all obs - { - y = mnwtdata1[i](1); - if (y > endyr + 50) - { - warnstream << "mnwt forecast observations cannot be beyond endyr +50"; - write_message (FATAL, 0); - } - if (y >= styr) - { - if (mnwtdata1[i](2) < 0.0) - { - warnstream << "negative season not allowed for mnwtdata because superperiods not implemented "; - write_message(WARN, 0); - } - timing_input(1, 3) = mnwtdata1[i](1, 3); - get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); - j++; - f = abs(mnwtdata1[i](3)); - if (y > retro_yr) - { - mnwtdata1[i](3) = -f; - } - mnwt_N_fleet(f)++; - if (mnwtdata1[i](3) > 0) - { - mnwt_N_fleet_use(f)++; - } - t = timing_i_result(2); - ALK_time = timing_i_result(5); - // disc_time_ALK(f,j) = ALK_time; // subseas that this observation is in - - if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f - { // real_month,fraction of season, year.fraction - data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); - } - else if (timing_r_result(1) != data_time(ALK_time, f, 1)) - { - warnstream << "MEAN_WEIGHT: data_month already set for y,s,f: " << y << " " << s << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " but read value is: " << timing_r_result(1); - write_message(WARN, 0); - } - have_data(ALK_time, 0, 0, 0) = 1; - have_data(ALK_time, f, 0, 0) = 1; // so have data of some type - have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas - p = have_data(ALK_time, f, data_type, 0); - have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas - - z = mnwtdata1[i](4); // z is partition (0, 1, 2) - - for (k = 1; k <= 7; k++) - { - mnwtdata(k, j) = mnwtdata1[i](k); - } - mnwtdata(1, j) = t; // note: saving t, not y so have direct access to t later - mnwtdata(11, j) = ALK_time; - } - } - echoinput << "Successful pre-processing of mean-bodysize data" << endl; - // clang-format off - END_CALCS - -!!// SS_Label_Info_2.6 #Setup population Length bins - number binwidth2; // width of length bins in population - number minLread; // input minimum size in population; this is used as the mean size at age 0.00 - number maxLread; // input maximum size to be considered; should be divisible by binwidth2 - int nlen_bin2; //number of length bins in length comp data doubled for males - int nlen_binP; //number of length bins in length comp data +1 as needed - number minL; // minL and maxL store ends of the sizevector and are used as bounds later - number minL_m; // mean size in first pop bin - number maxL; // set to the midsize of last population bin for selex calc - int nlength; // N pop lenbins - int nlength1; // +1 as needed - int nlength2; // doubled for males - number startbin; // population length bin that matches first data length bin - - init_int LenBin_option; // 1=set to data bins; 2 generate uniform; 3 = read custom -!!echoinput<0) echoinput<0) echoinput< 0) - { - echoinput << "#_now read controls for processing the length comps:" << endl; - echoinput << "Use_length_data == 1: invokes original input format starting with mintailcomp, one row for each fleet" << endl; - echoinput << "Use_length_data == 2: invokes list format with fleet and partition preceding controls" << endl; - if (use_length_data == 2) - { - echoinput << "#_fleet: fleet number, or -9999 for terminator row, or negative fleet to use input row as filler for all fleets and partitions" << endl; - echoinput << "#_partition: 0=all, 1=discard, 2=retained" << endl; - } - echoinput << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; - echoinput << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; - echoinput << "#_males and females treated as combined gender below this bin number " << endl; - echoinput << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; - echoinput << "#_Comp_Error: 0=multinomial, 1=dirichlet using theta * n, 2=dirichlet using beta, 3=MV_Tweedie with phi and power"<> min_tail_L(0, f); - min_tail_L(1, f) = min_tail_L(0, f); - min_tail_L(2, f) = min_tail_L(0, f); - *(ad_comm::global_datafile) >> min_comp_L(0, f); - if (min_comp_L(0, f) <= 0) { - warnstream << "addtocomp input for length comps fleet " << f << - " is " << min_comp_L(0, f) << " but should be > 0 to avoid log(0) in likelihood"; - write_message(WARN, 0); - } - min_comp_L(1, f) = min_comp_L(0, f); - min_comp_L(2, f) = min_comp_L(0, f); - *(ad_comm::global_datafile) >> CombGender_L(0, f); - CombGender_L(1, f) = CombGender_L(0, f); - CombGender_L(2, f) = CombGender_L(0, f); - *(ad_comm::global_datafile) >> AccumBin_L(0, f); - AccumBin_L(1, f) = AccumBin_L(0, f); - AccumBin_L(2, f) = AccumBin_L(0, f); - *(ad_comm::global_datafile) >> Comp_Err_L(0, f); - Comp_Err_L(1, f) = Comp_Err_L(0, f); - Comp_Err_L(2, f) = Comp_Err_L(0, f); - *(ad_comm::global_datafile) >> Comp_Err_L2(0, f); - Comp_Err_L2(1, f) = Comp_Err_L2(0, f); - Comp_Err_L2(2, f) = Comp_Err_L2(0, f); - *(ad_comm::global_datafile) >> min_sample_size_L(0, f); - min_sample_size_L(1, f) = min_sample_size_L(0, f); - min_sample_size_L(2, f) = min_sample_size_L(0, f); - } - } - else - { - ender = 0; - int parti; - int parti_lo; - int parti_hi; - int f_lo; - int f_hi; - do - { - dvector tempvec(1,9); - *(ad_comm::global_datafile) >> tempvec(1,9); // read vector - f = int(tempvec(1)); - parti = int(tempvec(2)); - comp_control_L.push_back(tempvec(1,9)); // save for write back in ss_new - comp_control_L_count++; - if (f == -9999.) - { - ender = 1; - } - else - { - if (f < 0) // fill all higher fleets to create default that is overwritten by later reads - { - f_lo = abs(f); - f_hi = Nfleet; - parti_lo = 0; - parti_hi = 2; - } - else // specific input - { - f_lo = f; - f_hi = f; - parti_lo = parti; - parti_hi = parti; - } - // else other codes could do other types of specialized fills - - for (f = f_lo; f <= f_hi; f++) - for (parti = parti_lo; parti <= parti_hi; parti++) - { - min_tail_L(parti, f) = tempvec(3); - min_comp_L(parti, f) = tempvec(4); - CombGender_L(parti, f) = int(tempvec(5)); - AccumBin_L(parti, f) = int(tempvec(6)); - Comp_Err_L(parti, f) = int(tempvec(7)); - Comp_Err_L2(parti, f) = int(tempvec(8)); - min_sample_size_L(parti, f) = tempvec(9); - } - } - } while (ender == 0); - } - echoinput << "fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (f = 1; f <= Nfleet; f++) - for (int parti = 0; parti <= 2; parti++) - { - echoinput << f << " " << parti << " " << min_tail_L(parti, f) << " " << min_comp_L(parti, f) << " " << CombGender_L(parti, f) << " " << AccumBin_L(parti, f) << " " << Comp_Err_L(parti, f) << " " << Comp_Err_L2(parti, f) << " " << min_sample_size_L(parti, f) << " #_fleet: " << f << " " << fleetname(f) << endl; - - if (min_sample_size_L(parti, f) < 0.001) - { - warnstream << " minimum sample size for length comps must be > 0; minimum sample size set to 0.001 "; - write_message(WARN, 1); - min_sample_size_L(parti, f) = 0.001; - } - - if (Comp_Err_L2(parti, f) > Comp_Err_ParmCount + 1) - { - warnstream << "; length D-M must refer to existing Comp_err definition, or increment by 1: " << Comp_Err_L2(parti, f); - write_message(FATAL, 1); - } - else if (Comp_Err_L2(parti, f) > Comp_Err_ParmCount) - { - Comp_Err_ParmCount++; - DM_parmlist(parti, f) = 1; // flag for creating new definition because Comp_Err_L2 can point to existing definition - } - // else OK because refers to existing definition - } - // the count for age data will be added after reading the age data setup - echoinput << "number of D-M definitions needed for length comp data: " << Comp_Err_ParmCount << endl - << endl; - - *(ad_comm::global_datafile) >> nlen_bin; - echoinput << nlen_bin << " nlen_bin_for_data " << endl; - } - else - { - nlen_bin = 2; - nlen_bin2 = 2 * gender; - } - // clang-format off - END_CALCS - vector len_bins_dat(1,nlen_bin); // length bin lower boundaries - LOCAL_CALCS - // clang-format on - if (use_length_data > 0) - { - *(ad_comm::global_datafile) >> len_bins_dat; - echoinput << " len_bins_dat " << endl - << len_bins_dat << endl; - - for (f = 1; f <= Nfleet; f++) - { - if (CombGender_L(0, f) > nlen_bin) - { - warnstream << "Combgender_L(part,f) cannot be greater than nlen_bin; resetting for fleet: " << f; - write_message(WARN, 0); - CombGender_L(0, f) = nlen_bin; - } - } - nlen_binP = nlen_bin + 1; - nlen_bin2 = gender * nlen_bin; - } - else - { - } - // clang-format off - END_CALCS - - vector len_bins_dat2(1,nlen_bin2); // doubled for males; for output only - vector len_bins_dat_m(1,nlen_bin); // midbin; for output only - vector len_bins_dat_m2(1,nlen_bin2); // doubled for males; for output only - - LOCAL_CALCS - // clang-format on - // SS_Label_Info_2.7.2 #Process population length bins, create mean length per bin, etc. - // note this is after reading the len_bin_for data in case population is mirrored to data - if (LenBin_option == 1) - { - nlength = nlen_bin; // set N pop bins same as data bins - } - else if (LenBin_option == 2) - { - nlength = (maxLread - minLread) / binwidth2 + 1; // number of population length bins - } - else if (LenBin_option == 3) - { - // nlength was read - } - nlength1 = nlength + 1; // +1 when needed - nlength2 = gender * nlength; // doubled for males - // clang-format off - END_CALCS - - vector len_bins(1,nlength); //vector with lower edge of population length bins - vector log_len_bins(1,nlength); //vector with log of lower edge of population length bins - vector len_bins2(1,nlength2); //vector with lower edge of population length bins - vector binwidth(1,nlength2); //ve - vector len_bins_m(1,nlength); //vector with mean size in bin - vector len_bins_m2(1,nlength2); //vector with all length bins; doubled for males - vector len_bins_sq(1,nlength2); //vector with all length bins; doubled for males - vector male_offset(1,nlength2); // used to calculate retained@length as population quantity - - LOCAL_CALCS - // clang-format on - male_offset.initialize(); // initialize - if (LenBin_option == 1) - { - len_bins = len_bins_dat; - } - else if (LenBin_option == 2) - { - len_bins(1) = minLread; - for (z = 2; z <= nlength; z++) - { - len_bins(z) = len_bins(z - 1) + binwidth2; - } - } - else - { - len_bins = len_bins_rd; - } - - if (len_bins(1) == 0.0) - { - len_bins(1) = 0.001; - } - for (z = 1; z <= nlength; z++) - { - len_bins2(z) = len_bins(z); - log_len_bins(z) = log(len_bins(z)); - if (z < nlength) - { - len_bins_m(z) = (len_bins(z + 1) + len_bins(z)) / 2.; - binwidth(z) = len_bins(z + 1) - len_bins(z); - } - else - { - len_bins_m(z) = len_bins(z) + binwidth(z - 1) / 2.; - binwidth(z) = binwidth(z - 1); - } - - len_bins_m2(z) = len_bins_m(z); // for use in calc mean size at binned age - len_bins_sq(z) = len_bins_m2(z) * len_bins_m2(z); // for use in calc std dev of size at binned age - if (gender == 2) - { - len_bins2(z + nlength) = len_bins(z); - male_offset(z + nlength) = 1.; - binwidth(z + nlength) = binwidth(z); - len_bins_m2(z + nlength) = len_bins_m2(z); - len_bins_sq(z + nlength) = len_bins_sq(z); - } - } - echoinput << endl - << "Processed Population length bin info " << endl - << len_bins << endl; - - maxL = len_bins_m(nlength); - minL = len_bins(1); - minL_m = len_bins_m(1); - if (LenBin_option != 2) - { - binwidth2 = binwidth(nlength / 2); // set a reasonable value in case LenBin_option !=2 - } - startbin = 1; - - if (use_length_data > 0) - { - while (len_bins(startbin) < len_bins_dat(1)) - { - startbin++; - } - - for (z = 1; z <= nlen_bin; z++) - { - len_bins_dat2(z) = len_bins_dat(z); - if (gender == 2) - { - len_bins_dat2(z + nlen_bin) = len_bins_dat(z); - } - if (z < nlen_bin) - { - len_bins_dat_m(z) = 0.5 * (len_bins_dat(z) + len_bins_dat(z + 1)); // this is not gender specific - } - else - { - len_bins_dat_m(z) = len_bins_dat_m(z - 1) + (len_bins_dat(z) - len_bins_dat(z - 1)); - } - len_bins_dat_m2(z) = len_bins_dat_m(z); - if (gender == 2) - { - len_bins_dat_m2(z + nlen_bin) = len_bins_dat_m(z); - } - } - if (len_bins_dat(nlen_bin) > len_bins(nlength)) - { - warnstream << "Data length bins extend beyond pop len bins " << len_bins_dat(nlen_bin) << " " << len_bins(nlength); - write_message(FATAL, 0); - } - if (len_bins_dat(nlen_bin) < len_bins(nlength)) - { - warnstream << "Max data length bin: " << len_bins_dat(nlen_bin) << " < max pop len bins: " << len_bins(nlength) << "; so will accumulate larger pop len bins"; - write_message(NOTE, 1); - } - echoinput << endl - << "Processed Data length bin info " << endl - << len_bins_dat << endl; - } - // clang-format off - END_CALCS - - matrix make_len_bin(1,nlen_bin2,1,nlength2); - - int ibin; - int ibinsave; - int fini; - number topbin; - number botbin; - - LOCAL_CALCS - // clang-format on - // SS_Label_Info_2.7.3 #Create conversion of pop length bins to data length bins - make_len_bin.initialize(); - ibin = 0; - topbin = 0.; - botbin = 0.; - if (use_length_data > 0) - { - for (z = 1; z <= nlength; z++) - { - if (ibin == nlen_bin) - { //checkup<<" got to last ibin, so put rest of popbins here"<= topbin) - { //checkup<<" incr ibin "; - ibin++; - } - - if (ibin > 1) - { - botbin = len_bins_dat(ibin); - } - if (ibin < nlen_bin) - { - topbin = len_bins_dat(ibin + 1); - } - else - { - topbin = 99999.; - } - - if (ibin == nlen_bin) // checkup<<" got to last ibin, so put rest of popbins here"<= botbin && len_bins(z + 1) <= topbin) //checkup<<" pop inside dat, put here"< 0) - { - ender = 0; - z = 0; - do - { - dvector tempvec(1, k); - *(ad_comm::global_datafile) >> tempvec(1, k); - if (sum(tempvec) == 0.0) - { - warnstream << "reading past end of file for length data; exit "; - write_message(FATAL, 0); - } - if (tempvec(1) == -9999.) - ender = 1; - z++; - if (z <= 2) - { - echoinput << "len_obs_#:" << z << " # " << tempvec(1, k) << endl; - } - lendata.push_back(tempvec(1, k)); - } while (ender == 0); - nobsl_rd = lendata.size() - 1; - echoinput << nobsl_rd << " N length comp observations " << endl; - if (nobsl_rd > 0) - echoinput << "len_obs_#:" << nobsl_rd << " # " << lendata[nobsl_rd - 1] << endl; - - data_type = 4; - if (nobsl_rd > 0) - for (i = 0; i <= nobsl_rd - 1; i++) - { - y = lendata[i](1); - if (y >= styr) - { - f = abs(lendata[i](3)); - if (lendata[i](6) < 0) - { - warnstream << "Error in length data: negative sample size no longer valid as indicator of skip data or superperiods "; - write_message(FATAL, 0); - } - if (lendata[i](2) < 0) - N_suprper_l(f)++; // count the number of starts and ends of super-periods if seas<0 - Nobs_l(f)++; - } - } - Nobs_l_tot = sum(Nobs_l); - for (f = 1; f <= Nfleet; f++) - { - s = N_suprper_l(f) / 2.; - if (s * 2 != N_suprper_l(f)) - { - warnstream << "Error: unequal number of length superperiod starts and stops "; - write_message(FATAL, 0); - } - else - { // to get the number of superperiods - N_suprper_l(f) = s; - } - } - - echoinput << "Lendata Nobs by fleet " << Nobs_l << endl; - echoinput << "Lendata superperiods by fleet " << N_suprper_l << endl; - } - else - { - nobsl_rd = 0; - Nobs_l = 0; - Nobs_l_tot = 0; - N_suprper_l = 0; - } - // clang-format off - END_CALCS - - imatrix Len_time_t(1,Nfleet,1,Nobs_l); - imatrix Len_time_ALK(1,Nfleet,1,Nobs_l); - 3darray obs_l(1,Nfleet,1,Nobs_l,1,nlen_bin2); - 4darray obs_l_all(1,4,0,nseas,1,Nfleet,1,nlen_bin); // for the sum of all length comp data - matrix offset_l(1,Nfleet,1,Nobs_l); // Compute OFFSET for multinomial (i.e, value for the multinonial function - matrix nsamp_l(1,Nfleet,1,Nobs_l); - matrix nsamp_l_read(1,Nfleet,1,Nobs_l); - imatrix gen_l(1,Nfleet,1,Nobs_l); - imatrix mkt_l(1,Nfleet,1,Nobs_l); - 3darray header_l_rd(1,Nfleet,1,Nobs_l,0,5); - 3darray header_l(1,Nfleet,1,Nobs_l,0,3); - 3darray tails_l(1,Nfleet,1,Nobs_l,1,4); // min-max bin for females; min-max bin for males - ivector tails_w(1,4); - -// arrays for Super-years - imatrix suprper_l1(1,Nfleet,1,N_suprper_l); - imatrix suprper_l2(1,Nfleet,1,N_suprper_l); - matrix suprper_l_sampwt(1,Nfleet,1,Nobs_l); // will contain calculated weights for obs within super periods - int floop; - int tloop; - - LOCAL_CALCS - // clang-format on - // SS_Label_Info_2.7.5 #Process length comps, compress tails, add constant, scale to 1.0 - N_suprper_l = 0; - Nobs_l = 0; - in_superperiod = 0; - suprper_l1.initialize(); - suprper_l2.initialize(); - obs_l_all.initialize(); - - if (Nobs_l_tot > 0) - { - echoinput << "process length comps " << endl; - for (floop = 1; floop <= Nfleet; floop++) // loop fleets - for (i = 0; i <= nobsl_rd - 1; i++) // loop all observations to find those for this fleet/time - { - y = lendata[i](1); - if (y > endyr + 50) - { - warnstream << "forecast length obs cannot be beyond endyr +50;"; - write_message(FATAL, 0); - } - if (y >= styr) - { - f = abs(lendata[i](3)); - if (f == floop) - { - timing_input(1, 3) = lendata[i](1, 3); - get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); - - Nobs_l(f)++; - j = Nobs_l(f); - f = abs(lendata[i](3)); - t = timing_i_result(2); - s = timing_i_result(3); - ALK_time = timing_i_result(5); - - Len_time_t(f, j) = t; // sequential time = year+season - Len_time_ALK(f, j) = ALK_time; - if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f - { // real_month,fraction of season, year.fraction - data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); - } - else if (timing_r_result(1) != data_time(ALK_time, f, 1)) - { - warnstream << "LENGTH: data_month already set for y,m,f: " << y << " " << timing_r_result(1) << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " so treat as replicate"; - write_message(WARN, 0); - } - - have_data(ALK_time, 0, 0, 0) = 1; - have_data(ALK_time, f, 0, 0) = 1; // so have data of some type - have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas - p = have_data(ALK_time, f, data_type, 0); - have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas - have_data_yr(y, f) = 1; // survey or comp data exist this year - have_data_yr(y, 0) = 1; - - if (s > nseas) - { - warnstream << " Critical error, season for length obs " << i << " is > nseas"; - write_message(FATAL, 0); - } - - if (lendata[i](6) < 0.0) - { - warnstream << "negative values not allowed for lengthcomp sample size, use -fleet to omit from -logL"; - write_message(FATAL, 0); - } - header_l(f, j, 1) = y; - if (lendata[i](2) < 0) - { - header_l(f, j, 2) = -timing_r_result(1); // month with sign to indicate super period - } - else - { - header_l(f, j, 2) = timing_r_result(1); // month - } - - header_l_rd(f, j)(1, 5) = lendata[i](1, 5); // values as in input file - header_l(f, j, 3) = lendata[i](3); -// header_l(f, j)(3, 5) = lendata[i](3, 5); - if (y > retro_yr) - header_l(f, j, 3) = -f; - if (header_l(f, j, 3) > 0) - Nobs_l_use(f)++; - // note that following storage is redundant with Show_Time(t,3) calculated later - header_l(f, j, 0) = float(y) + 0.01 * int(100. * (azero_seas(s) + seasdur_half(s))); // - gen_l(f, j) = lendata[i](4); // gender 0=combined, 1=female, 2=male, 3=both - mkt_l(f, j) = lendata[i](5); // partition: 0=all, 1=discard, 2=retained - nsamp_l_read(f, j) = lendata[i](6); // assigned sample size for observation - nsamp_l(f, j) = nsamp_l_read(f, j); - // SS_Label_Info_2.7.6 #Create super-periods for length compositions - if (lendata[i](2) < 0) // start/stop a super-period ALL observations must be continguous in the file - { - if (in_superperiod == 0) // start a super-period ALL observations must be continguous in the file - { - N_suprper_l(f)++; - suprper_l1(f, N_suprper_l(f)) = j; - in_superperiod = 1; - } - else if (in_superperiod == 1) // end a super-year - { - suprper_l2(f, N_suprper_l(f)) = j; - in_superperiod = 0; - } - } - - for (z = 1; z <= nlen_bin2; z++) // get the composition vector - { - obs_l(f, j, z) = lendata[i](6 + z); - } - - if (sum(obs_l(f, j)) <= 0.0) - { - warnstream << "zero fish in size comp (fleet, year) " << f << " " << y; - write_message(FATAL, 0); - } - if (nsamp_l_read(f, j) <= 0.0) - { - warnstream << "Input N is <=0.0 in length comp " << header_l_rd(f, j); - write_message(FATAL, 0); - } - tails_l(f, j, 1) = 1; - tails_l(f, j, 2) = nlen_bin; - tails_l(f, j, 3) = nlen_binP; - tails_l(f, j, 4) = nlen_bin2; - if (gen_l(f, j) == 3 && gender == 2 && CombGender_L(mkt_l(f, j), f) > 0) - { - for (z = 1; z <= CombGender_L(mkt_l(f, j), f); z++) - { - obs_l(f, j, z) += obs_l(f, j, z + nlen_bin); - obs_l(f, j, z + nlen_bin) = 0.0; - } - tails_l(f, j, 3) = nlen_binP + CombGender_L(mkt_l(f, j), f); - } - if (gen_l(f, j) == 2) // zero out females for male-only obs - obs_l(f, j)(1, nlen_bin) = 0.; - if (gen_l(f, j) <= 1 && gender == 2) // zero out males for female-only or combined gender obs - obs_l(f, j)(nlen_binP, nlen_bin2) = 0.; - obs_l(f, j) /= sum(obs_l(f, j)); // make sum to 1.00 - - if (gen_l(f, j) != 2) // do females, unless Male-only observation - { - k = 0; - temp = sum(obs_l(f, j)(1, nlen_bin)); // sum of females proportions - for (z = 1; z <= nlen_bin; z++) - if (obs_l(f, j, z) > 0.) // find Number of bins with data - { - k++; - } - if (temp > 0.0 && k > 1) // only compress tail if obs exist for this gender and there is more than 1 bin with data - { - k = 0; - for (z = 1; z <= nlen_bin - 1; z++) // compress Female lower tail until exceeds min_tail - { - if (obs_l(f, j, z) <= min_tail_L(mkt_l(f, j), f) && 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 = nlen_bin; z >= tails_l(f, j, 1); z--) // compress Female upper tail until exceeds min_tail - { - if ((obs_l(f, j, z) <= min_tail_L(mkt_l(f, j), f) && k == 0) || z > (nlen_bin - AccumBin_L(mkt_l(f, j), f))) - { - 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_L(mkt_l(f, j), f); // add min_comp to bins in range - } - - if (gen_l(f, j) >= 2 && gender == 2) // process males - { - k = 0; - temp = sum(obs_l(f, j)(nlen_binP, nlen_bin2)); - for (z = nlen_binP; z <= nlen_bin2; z++) - if (obs_l(f, j, z) > 0.) - { - k++; - } - if (temp > 0.0 && k > 1) // only compress tail if obs exist for this gender and there is more than 1 bin with data - { - k = 0; - k1 = tails_l(f, j, 3); - for (z = k1; z <= nlen_bin2 - 1; z++) - { - if (obs_l(f, j, z) <= min_tail_L(mkt_l(f, j), f) && 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 = nlen_bin2; z >= tails_l(f, j, 3); z--) // compress Male upper tail until exceeds min_tail - { - if ((obs_l(f, j, z) <= min_tail_L(mkt_l(f, j), f) && k == 0) || z > (nlen_bin2 - AccumBin_L(mkt_l(f, j), f))) - { - 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_L(mkt_l(f, j), f); // add min_comp to bins in range - } // end doing males - obs_l(f, j) /= sum(obs_l(f, j)); // make sum to 1.00 again after adding min_comp - if (gender == 1 || gen_l(f, j) != 2) - { // females or combined - obs_l_all(1, s, f)(1, nlen_bin) += obs_l(f, j)(1, nlen_bin); - } - if (gender == 2) - { - if (gen_l(f, j) == 1 || gen_l(f, j) == 3) // put females into female only - { - obs_l_all(3, s, f)(1, nlen_bin) += obs_l(f, j)(1, nlen_bin); - } - if (gen_l(f, j) >= 2) // put males into combined and into male only - { - for (z = 1; z <= nlen_bin; z++) - { - obs_l_all(1, s, f, z) += obs_l(f, j, nlen_bin + z); - obs_l_all(4, s, f, z) += obs_l(f, j, nlen_bin + z); - } - } - } - } - } - } - } - - echoinput << "Overall_Compositions" << endl - << "seas fleet len_bins " << len_bins_dat << endl; - for (f = 1; f <= Nfleet; f++) - { - for (s = 1; s <= nseas; s++) - { - for (j = 1; j <= 4; j++) - { - if (j != 2) - { - temp = sum(obs_l_all(j, s, f)); - if (temp > 0.0) - { - obs_l_all(j, s, f) /= temp; - } - else - { - obs_l_all(j, s, f) = float(1. / nlen_bin); - } - } - } - obs_l_all(2, s, f, 1) = obs_l_all(1, s, f, 1); // first bin - for (z = 2; z <= nlen_bin; z++) - { - obs_l_all(2, s, f, z) = obs_l_all(2, s, f, z - 1) + obs_l_all(1, s, f, z); - } - if (Nobs_l(f) > 0) - { - echoinput << s << " " << f << " freq" << obs_l_all(1, s, f) << endl; - echoinput << s << " " << f << " cuml" << obs_l_all(2, s, f) << endl; - echoinput << s << " " << f << " female" << obs_l_all(3, s, f) << endl; - echoinput << s << " " << f << " male" << obs_l_all(4, s, f) << endl; - } - } - } - echoinput << "Successful processing of length data" << endl - << endl; - // clang-format off - END_CALCS - - -!!// SS_Label_Info_2.8 #Start age composition data section -!!// SS_Label_Info_2.8.1 #Read Age bin and ageing error vectors - int n_abins; // age classes for data - int n_abins1; - int n_abins2; - int Use_AgeKeyZero; // set to ageerr_type for the age data that use parameter approach - int AgeKeyParm; // holds starting parm number for age error parameters - int store_agekey_add; // when parameter based key uses blocks, this stores dimension - int save_agekey_count; // counter for storing those keys - int AgeKey_StartAge; - int AgeKey_Linear1; - int AgeKey_Linear2; - int N_ageerr ; // number of ageing error matrices to be calculated - vector min_tail_A(1,Nfleet); //min_proportion_for_compressing_tails_of_observed_composition - vector min_comp_A(1,Nfleet); // small value added to each composition bins - ivector CombGender_A(1,Nfleet); // combine genders through this age bin (0 or -1 for no combine) - ivector AccumBin_A(1,Nfleet); // collapse bins down to this bin number (0 for no collapse; positive value for N to accumulate) - ivector Comp_Err_A(1,Nfleet); // composition error type - ivector Comp_Err_A2(1,Nfleet); // composition error definition used - vector min_sample_size_A(1,Nfleet); // minimum sample size - int Nobs_a_tot; - int nobsa_rd; - int Lbin_method; //#_Lbin_method: 1=poplenbins; 2=datalenbins; 3=lengths - int CombGender_a; // combine genders through this age bin - ivector Nobs_a(1,Nfleet); - ivector Nobs_a_use(1,Nfleet); - ivector N_suprper_a(1,Nfleet); // N super_yrs per obs - - LOCAL_CALCS - // clang-format o - Use_AgeKeyZero = 0; - N_ageerr = 0; - n_abins1 = 0; - n_abins2 = 0; - nobsa_rd = 0; - store_agekey_add = 0; - Nobs_a.initialize(); - Nobs_a_use.initialize(); - N_suprper_a.initialize(); - Comp_Err_A.initialize(); - Comp_Err_A2.initialize(); - echoinput << "Enter the number of agebins, or 0 if no age data" << endl; - *(ad_comm::global_datafile) >> n_abins; - echoinput << n_abins << " N age bins " << endl; - n_abins1 = n_abins + 1; - n_abins2 = gender * n_abins; - // clang-format off - END_CALCS - - vector age_bins1(1,n_abins); // age classes for data - vector age_bins(1,n_abins2); // age classes for data female then male end-to-end - vector age_bins_mean(1,n_abins2); // holds mean age for each data age bin - 3darray age_err_rd(1,1,1,1,0,0); - - LOCAL_CALCS - // clang-format on - age_bins1.initialize(); - age_bins.initialize(); - age_bins_mean.initialize(); - - if (n_abins > 0) - { - *(ad_comm::global_datafile) >> age_bins1; - echoinput << age_bins1 << " agebins " << endl; - - *(ad_comm::global_datafile) >> N_ageerr; // number of ageing error matrices to be calculated - echoinput << N_ageerr << " N age error defs " << endl; - - age_err_rd.deallocate(); - age_err_rd.allocate(1, N_ageerr, 1, 2, 0, nages); - age_err_rd.initialize(); - for (j = 1; j <= N_ageerr; j++) - { - *(ad_comm::global_datafile) >> age_err_rd(j, 1)(0, nages); - *(ad_comm::global_datafile) >> age_err_rd(j, 2)(0, nages); - } - Nobs_a = 0; - N_suprper_a = 0; - if (n_abins > 0) - { - echoinput << "ageerror_definitions_as_read" << endl - << age_err_rd << endl; - Use_AgeKeyZero = 0; - if (N_ageerr > 0) - { - for (i = 1; i <= N_ageerr; i++) - { - if (age_err_rd(i, 2, 0) < 0.) - { // set flag for setup of age error parameters - if (Use_AgeKeyZero > 0) - { - warnstream << "Error: There are > 1 negative sd values for age 0 in age error definitions." << endl; - warnstream << " but SS3 can only create 1 age error definition from parameters, "; - write_message(FATAL, 1); - } - Use_AgeKeyZero = i; - } - } - } - - echoinput << "#_now read for each fleet info for processing the age comps:" << endl; - echoinput << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; - echoinput << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; - echoinput << "#_males and females treated as combined gender below this bin number " << endl; - echoinput << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; - echoinput << "#_Comp_Error: 0=multinomial, 1=dirichlet using theta * n, 2=dirichlet using beta, 3=MV_Tweedie with phi and power"<> min_tail_A(f); - *(ad_comm::global_datafile) >> min_comp_A(f); - if (min_comp_A(f) <= 0) { - warnstream << "addtocomp input for age comps fleet " << f << - " is " << min_comp_A(f) << " but should be > 0 to avoid log(0) in likelihood"; - write_message(WARN, 0); - } - *(ad_comm::global_datafile) >> CombGender_A(f); - *(ad_comm::global_datafile) >> AccumBin_A(f); - *(ad_comm::global_datafile) >> Comp_Err_A(f); - *(ad_comm::global_datafile) >> Comp_Err_A2(f); - *(ad_comm::global_datafile) >> min_sample_size_A(f); - echoinput << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_fleet: " << f << " " << fleetname(f) << endl; - - if (min_sample_size_A(f) < 0.001) - { - warnstream << "minimum sample size for age comps must be > 0; minimum sample size set to 0.001 "; - write_message(WARN, 0); - min_sample_size_A(f) = 0.001; - } - if (Comp_Err_A2(f) > Comp_Err_ParmCount + 1) - { - warnstream << "Age D-M must refer to existing comp_err definition, or increment by 1: " << Comp_Err_A2(f); - write_message(FATAL, 0); - } - else if (Comp_Err_A2(f) > Comp_Err_ParmCount) - { - Comp_Err_ParmCount++; - int parti = 0; - DM_parmlist(parti, f + Nfleet) = 1; // flag for creating new definition because Comp_Err_L2 can point to existing parameter - } - // else OK because refers to existing definition - } - echoinput << "number of D-M definitions needed for both length and age comp data: " << Comp_Err_ParmCount << endl; - - *(ad_comm::global_datafile) >> Lbin_method; - echoinput << Lbin_method << " Lbin method for defined size ranges " << endl; - - if (nobsa_rd > 0 && N_ageerr == 0) - { - warnstream << "must define ageerror vectors because age data exist"; - write_message(FATAL, 0); - } - for (f = 1; f <= Nfleet; f++) - { - if (CombGender_A(f) > n_abins2) - { - warnstream << "Combgender_A(f) cannot be greater than n_abins for fleet:_" << f << "; resetting"; - write_message(WARN, 0); - CombGender_A(f) = n_abins2; - } - } - for (b = 1; b <= n_abins; b++) - { - age_bins(b) = age_bins1(b); - - if (b < n_abins) - { - age_bins_mean(b) = (age_bins1(b) + age_bins1(b + 1)) * 0.5; - } - else if (b > 1) - { - age_bins_mean(b) = age_bins1(b) + 0.5 * (age_bins1(b) - age_bins1(b - 1)); - } - else - { - age_bins_mean(b) = age_bins1(b) + 0.5; - } - - if (gender == 2) - { - age_bins(b + n_abins) = age_bins1(b); - age_bins_mean(b + n_abins) = age_bins_mean(b); - } - } - // SS_Label_Info_2.8.2 #Read Age data - k = 9 + n_abins2; - ender = 0; - z = 0; - do - { - dvector tempvec(1, k); - *(ad_comm::global_datafile) >> tempvec(1, k); - if (sum(tempvec) == 0.0) - { - warnstream << "reading past end of file for age data; exit "; - write_message(FATAL, 0); - } - if (tempvec(1) == -9999.) - ender = 1; - z++; - if (z <= 2) - echoinput << "age_obs_#:" << z << " # " << tempvec(1, k) << endl; - Age_Data.push_back(tempvec(1, k)); - } while (ender == 0); - nobsa_rd = Age_Data.size() - 1; - echoinput << nobsa_rd << " N age comp observations " << endl; - if (nobsa_rd > 0) - echoinput << "age_obs_#:" << nobsa_rd << " # " << Age_Data[nobsa_rd - 1] << endl; - - data_type = 5; // for age data - - for (i = 0; i <= nobsa_rd - 1; i++) - { - y = Age_Data[i](1); - if (y >= styr) - { - f = abs(Age_Data[i](3)); - if (Age_Data[i](9) < 0) - { - warnstream << "Error: negative sample size in age data no longer valid as indicator of skip data or superperiods "; - write_message(FATAL, 0); - } - if (Age_Data[i](6) == 0 || Age_Data[i](6) > N_ageerr) - { - warnstream << "Error: undefined age_error type: " << Age_Data[i](6) << " in obs: " << i; - write_message(FATAL, 0); - } - if (Age_Data[i](2) < 0) - N_suprper_a(f)++; // count the number of starts and ends of super-periods if seas<0 or sampsize<0 - - Nobs_a(f)++; - } - } - for (f = 1; f <= Nfleet; f++) - { - s = N_suprper_a(f) / 2.; - if (s * 2 != N_suprper_a(f)) - { - warnstream << "Error: unequal number of age superperiod starts and stops "; - write_message(FATAL, 0); - } - else - { - N_suprper_a(f) /= 2; - } - } - echoinput << endl - << "Age_Data Nobs by fleet " << Nobs_a << endl; - echoinput << "Age_Data superperiods by fleet " << N_suprper_a << endl; - Nobs_a_tot = sum(Nobs_a); - } - } - else - { - echoinput << "N bins set to zero, so no more reading of age data inputs" << endl; - } - // clang-format off - END_CALCS - - matrix offset_a(1,Nfleet,1,Nobs_a); // Compute OFFSET for multinomial (i.e, value for the multinonial function - imatrix Age_time_t(1,Nfleet,1,Nobs_a); - imatrix Age_time_ALK(1,Nfleet,1,Nobs_a); - 3darray obs_a(1,Nfleet,1,Nobs_a,1,gender*n_abins); - 4darray obs_a_all(1,4,0,nseas,1,Nfleet,1,n_abins); // for the sum of all age comp data - matrix nsamp_a(1,Nfleet,1,Nobs_a); - matrix nsamp_a_read(1,Nfleet,1,Nobs_a); - imatrix ageerr_type_a(1,Nfleet,1,Nobs_a); - imatrix gen_a(1,Nfleet,1,Nobs_a); - imatrix mkt_a(1,Nfleet,1,Nobs_a); - 3darray Lbin_filter(1,Nfleet,1,Nobs_a,1,nlength2); - imatrix use_Lbin_filter(1,Nfleet,1,Nobs_a); - imatrix Lbin_lo(1,Nfleet,1,Nobs_a); - imatrix Lbin_hi(1,Nfleet,1,Nobs_a); - 3darray tails_a(1,Nfleet,1,Nobs_a,1,4); // min-max bin for females; min-max bin for males - 3darray header_a(1,Nfleet,1,Nobs_a,1,9); - 3darray header_a_rd(1,Nfleet,1,Nobs_a,2,3); - -// arrays for Super-years - matrix suprper_a_sampwt(1,Nfleet,1,Nobs_a); // will contain calculated weights for obs within super periods - imatrix suprper_a1(1,Nfleet,1,N_suprper_a); - imatrix suprper_a2(1,Nfleet,1,N_suprper_a); - - // SS_Label_Info_2.8.3 #Pre-process age comps, compress tails, define length bin filters - LOCAL_CALCS - // clang-format on - Lbin_filter = 1.; - use_Lbin_filter.initialize(); // have to use initialize; imatrix cannot be set to a constant - suprper_a1.initialize(); - suprper_a2.initialize(); - obs_a_all.initialize(); - N_suprper_a = 0; - Nobs_a = 0; - in_superperiod = 0; - - if (Nobs_a_tot > 0) - { - echoinput << "process age comps " << endl; - for (floop = 1; floop <= Nfleet; floop++) - for (i = 0; i <= nobsa_rd - 1; i++) - { - y = Age_Data[i](1); - if (y > endyr + 50) - { - warnstream << "forecast age obs cannot be beyond endyr +50; SS3 will exit"; - write_message(FATAL, 0); - } - if (y >= styr) - { - f = abs(Age_Data[i](3)); - if (f == floop) - { - timing_input(1, 3) = Age_Data[i](1, 3); - get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); - Nobs_a(f)++; // redoing this pointer just to create index j used below - j = Nobs_a(f); - - f = abs(Age_Data[i](3)); - t = timing_i_result(2); - s = timing_i_result(3); - ALK_time = timing_i_result(5); - Age_time_t(f, j) = t; // sequential time = year+season - Age_time_ALK(f, j) = ALK_time; - if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f - { // real_month,fraction of season, year.fraction - data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); - } - else if (timing_r_result(1) != data_time(ALK_time, f, 1)) - { - warnstream << "AGE: data_month already set for y,m,f: " << y << " " << timing_r_result(1) << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " so treat as replicate"; - write_message(WARN, 0); - } - have_data(ALK_time, 0, 0, 0) = 1; - have_data(ALK_time, f, 0, 0) = 1; // so have data of some type - have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas - p = have_data(ALK_time, f, data_type, 0); - if (p > 150) - { - warnstream << "fatal: max agecomp obs per fleet*time is 150; you requested " << p << " for fleet x year " << f << " " << y; - write_message(FATAL, 0); - } - have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas - have_data_yr(y, f) = 1; - have_data_yr(y, 0) = 1; // survey or comp data exist this year - - if (s > nseas) - { - warnstream << "Critical error, season for age obs " << i << " is > nseas"; - write_message(FATAL, 0); - } - - if (Age_Data[i](6) < 0.0) - { - warnstream << "negative values not allowed for age comp sample size, use -fleet to omit from -logL"; - write_message(WARN, 0); - } - header_a(f, j)(1, 9) = Age_Data[i](1, 9); - header_a_rd(f, j)(2, 3) = Age_Data[i](2, 3); - if (Age_Data[i](2) < 0) - { - header_a(f, j, 2) = -timing_r_result(1); // month with sign for super periods - } - else - { - header_a(f, j, 2) = timing_r_result(1); // month - } - if (y > retro_yr) - header_a(f, j, 3) = -f; - if (header_a(f, j, 3) > 0) - Nobs_a_use(f)++; - gen_a(f, j) = Age_Data[i](4); // gender 0=combined, 1=female, 2=male, 3=both - mkt_a(f, j) = Age_Data[i](5); // partition: 0=all, 1=discard, 2=retained - nsamp_a_read(f, j) = Age_Data[i](9); // assigned sample size for observation - nsamp_a(f, j) = nsamp_a_read(f, j); - - if (Age_Data[i](6) > N_ageerr) - { - warnstream << " ageerror type must be <= " << N_ageerr; - write_message(FATAL, 0); - } - ageerr_type_a(f, j) = Age_Data[i](6); - - // SS_Label_Info_2.8.4 #Create super-periods for age compositions - if (in_superperiod == 0 && Age_Data[i](2) < 0) // start a super-year ALL observations must be continguous in the file - { - N_suprper_a(f)++; - suprper_a1(f, N_suprper_a(f)) = j; - in_superperiod = 1; - } - else if (in_superperiod == 1 && Age_Data[i](2) < 0) // end a super-year - { - suprper_a2(f, N_suprper_a(f)) = j; - in_superperiod = 0; - } - - for (b = 1; b <= gender * n_abins; b++) // get the composition vector - { - obs_a(f, j, b) = Age_Data[i](9 + b); - } - if (sum(obs_a(f, j)) <= 0.0) - { - warnstream << " zero fish in age comp " << header_a(f, j); - write_message(FATAL, 0); - } - if (nsamp_a_read(f, j) <= 0.0) - { - warnstream << "Input N is <=0.0 in age comp " << header_a_rd(f, j); - write_message(FATAL, 0); - } - - Lbin_lo(f, j) = Age_Data[i](7); - Lbin_hi(f, j) = Age_Data[i](8); - switch (Lbin_method) // here all 3 methods are converted to poplenbins for use internally - { - case 1: // values are population length bin numbers - { - if (Lbin_lo(f, j) <= 0) - Lbin_lo(f, j) = 1; - if (Lbin_hi(f, j) <= 0 || Lbin_hi(f, j) > nlength) - Lbin_hi(f, j) = nlength; - break; - } - case 2: // values are data length bin numbers - { - if (Lbin_lo(f, j) <= 0) - Lbin_lo(f, j) = 1; - if (Lbin_hi(f, j) <= 0 || Lbin_hi(f, j) > nlen_bin) - Lbin_hi(f, j) = nlen_bin; - s = 0; - for (k = 1; k <= nlength; k++) - { // find poplen bin that matches data len bin - if (len_bins(k) == len_bins_dat(Lbin_lo(f, j))) - s = k; - } - if (s == 0) - { - warnstream << "L_bin_lo no match to poplenbins in age comp " << header_a(f, j); - write_message(FATAL, 0); - } - Lbin_lo(f, j) = s; - - s = 0; - for (k = 1; k <= nlength; k++) - { - if (len_bins(k) == len_bins_dat(Lbin_hi(f, j))) - s = k; // find poplen bin that matches data len bin - } - if (s == 0) - { - warnstream << "L_bin_hi no match to poplenbins in age comp " << header_a(f, j); - write_message(FATAL, 0); - } - Lbin_hi(f, j) = s; - break; - } - case 3: // values are lengths - { - if (Lbin_lo(f, j) <= 0) - Lbin_lo(f, j) = len_bins(1); - if (Lbin_hi(f, j) <= 0 || Lbin_hi(f, j) > len_bins(nlength)) - Lbin_hi(f, j) = len_bins(nlength); - s = 0; - for (k = 1; k <= nlength; k++) - { - if (len_bins(k) == Lbin_lo(f, j)) - s = k; // find poplen bin that matches input length for lbin_lo - } - if (s == 0) - { - warnstream << "L_bin_lo no match to poplenbins in age comp " << header_a(f, j); - write_message(FATAL, 0); - } - Lbin_lo(f, j) = s; - - s = 0; - for (k = 1; k <= nlength; k++) - { - if (len_bins(k) == Lbin_hi(f, j)) - s = k; - } - if (s == 0) - { - warnstream << "L_bin_hi no match to poplenbins in age comp " << header_a(f, j); - write_message(FATAL, 0); - } - Lbin_hi(f, j) = s; - break; - } - } - - // lbin_lo and lbin_hi are now in terms of poplenbins; their original values are retained in header_a - if (Lbin_lo(f, j) > nlength || Lbin_lo(f, j) > Lbin_hi(f, j)) - { - warnstream << "L_bin_lo is too high in age comp. Are you using lengths or bin numbers? " << header_a(f, j); - write_message(FATAL, 0); - } - if (Lbin_lo(f, j) == 1 && Lbin_hi(f, j) == nlength) - { - use_Lbin_filter(f, j) = 0; - } - else - { - use_Lbin_filter(f, j) = 1; - } - - if (use_Lbin_filter(f, j) == 1) - { // use Lbin_filter for this obs - 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.; - } - } - - if (gen_a(f, j) == 2) - obs_a(f, j)(1, n_abins) = 0.; // zero out females for male-only obs - if (gen_a(f, j) <= 1 && gender == 2) - obs_a(f, j)(n_abins1, gender * n_abins) = 0.; // zero out males for female-only or combined gender obs - 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 (gender == 2) - { - if (gen_a(f, j) == 3 && CombGender_A(f) > 0) - { - for (z = 1; z <= CombGender_A(f); z++) - { - obs_a(f, j, z) += obs_a(f, j, z + n_abins); - obs_a(f, j, z + n_abins) = 0.0; - } - tails_a(f, j, 3) = n_abins + 1 + CombGender_A(f); - } - } - - obs_a(f, j) /= sum(obs_a(f, j)); - - if (gen_a(f, j) != 2) // do females, unless Male-only observation - { - 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) // only compress tail if obs exist for this gender and there is more than 1 bin with data - { - k = 0; - for (z = 1; z <= n_abins - 1; z++) // compress Female lower tail until exceeds min_tail - { - if (obs_a(f, j, z) <= min_tail_A(f) && 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--) // compress Female upper tail until exceeds min_tail - { - if ((obs_a(f, j, z) <= min_tail_A(f) && k == 0) || (z > (n_abins - AccumBin_A(f)))) - { - 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_A(f); // add min_comp to bins in range - } // done with females - - if (gen_a(f, j) >= 2 && gender == 2) // compress Male tails until exceeds min_tail - { - 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) // only compress tail if obs exist for this gender and there is more than 1 bin with data - { - k = 0; - - for (z = n_abins1; z <= n_abins2 - 1; z++) - { - if (obs_a(f, j, z) <= min_tail_A(f) && 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--) // compress Male upper tail until exceeds min_tail - { - if ((obs_a(f, j, z) <= min_tail_A(f) && k == 0) || (z > (n_abins2 - AccumBin_A(f)))) - { - 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_A(f); // add min_comp to bins in range - } - if (sum(obs_a(f, j)) > 0.) - obs_a(f, j) /= sum(obs_a(f, j)); // make sum to 1.00 again after adding min_comp - s = timing_i_result(3); - if (gender == 1 || gen_a(f, j) != 2) - obs_a_all(1, s, f)(1, n_abins) += obs_a(f, j)(1, n_abins); // females or combined - if (gender == 2) - { - if (gen_a(f, j) == 1 || gen_a(f, j) == 3) // put females into female only - { - obs_a_all(3, s, f)(1, n_abins) += obs_a(f, j)(1, n_abins); - } - if (gen_a(f, j) >= 2) // put males into combined and into male only - { - for (a = 1; a <= n_abins; a++) - { - obs_a_all(1, s, f, a) += obs_a(f, j, n_abins + a); // males into combined - obs_a_all(4, s, f, a) += obs_a(f, j, n_abins + a); // males - } - } - } - } - } - } - - echoinput << "area seas fleet age_bins " << age_bins << endl; - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) - { - if (Nobs_a(f) > 0) - { - obs_a_all(1, s, f) /= sum(obs_a_all(1, s, f)); - } - else - { - obs_a_all(1, s, f) = 0.0; - } - obs_a_all(2, s, f, 1) = obs_a_all(1, s, f, 1); // first bin - for (a = 2; a <= n_abins; a++) - { - obs_a_all(2, s, f, a) = obs_a_all(2, s, f, a - 1) + obs_a_all(1, s, f, a); - } - echoinput << fleet_area(f) << " " << s << " " << f << " freq " << obs_a_all(1, s, f) << endl; - echoinput << fleet_area(f) << " " << s << " " << f << " cuml " << obs_a_all(2, s, f) << endl; - } - echoinput << endl - << "Successful processing of age data " << endl; - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_2.9 #Read mean Size_at_Age data - init_int use_meansizedata; - int nobs_ms_tot; - int nobs_ms_rd; -!!echoinput< 0) - { - k = 7 + 2 * n_abins2; - ender = 0; - z = 0; - do - { - dvector tempvec(1, k); - *(ad_comm::global_datafile) >> tempvec(1, k); - if (sum(tempvec) == 0.0) - { - warnstream << "reading past end of file for size-at-age data; exit "; - write_message(FATAL, 0); - } - if (tempvec(1) == -9999.) - ender = 1; - z++; - if (z <= 2) - echoinput << "meansize@age_obs_#:" << z << " # " << tempvec(1, k) << endl; - sizeAge_Data.push_back(tempvec(1, k)); - } while (ender == 0); - nobs_ms_rd = sizeAge_Data.size() - 1; - echoinput << nobs_ms_rd << " N size@age obs read " << endl; - if (nobs_ms_rd > 0) - echoinput << "meansize@age_obs_#:" << nobs_ms_rd << " # " << sizeAge_Data[nobs_ms_rd - 1] << endl; - - data_type = 7; // for size (length or weight)-at-age data - Nobs_ms = 0; - N_suprper_ms = 0; - if (nobs_ms_rd > 0) - for (i = 0; i <= nobs_ms_rd - 1; i++) - { - y = sizeAge_Data[i](1); - if (y >= styr) - { - f = abs(sizeAge_Data[i](3)); - if (sizeAge_Data[i](7) < 0) - { - warnstream << "error. cannot use negative sampsize for meansize data "; - write_message(FATAL, 0); - } - if (sizeAge_Data[i](2) < 0) - { - N_suprper_ms(f)++; // count the number of starts and ends of super-periods if seas<0 or sampsize<0 - } - Nobs_ms(f)++; - } - } - for (f = 1; f <= Nfleet; f++) - { - s = N_suprper_ms(f) / 2.; - if (s * 2 != N_suprper_ms(f)) - { - warnstream << "Error: unequal number of meansize superperiod starts and stops "; - write_message(FATAL, 0); - } - else - { - N_suprper_ms(f) /= 2; - } - } - echoinput << endl - << "meansize data Nobs by fleet " << Nobs_ms << endl; - echoinput << "meansize superperiods by fleet " << N_suprper_ms << endl; - - nobs_ms_tot = sum(Nobs_ms); - } - else - { - Nobs_ms = 0; - N_suprper_ms = 0; - nobs_ms_tot = 0; - } - // clang-format off - END_CALCS - - imatrix msz_time_t(1,Nfleet,1,Nobs_ms); - imatrix msz_time_ALK(1,Nfleet,1,Nobs_ms); - 3darray obs_ms(1,Nfleet,1,Nobs_ms,1,n_abins2); - 3darray obs_ms_n(1,Nfleet,1,Nobs_ms,1,n_abins2); - 3darray obs_ms_n_read(1,Nfleet,1,Nobs_ms,1,n_abins2); - imatrix ageerr_type_ms(1,Nfleet,1,Nobs_ms); - imatrix gen_ms(1,Nfleet,1,Nobs_ms); - imatrix mkt_ms(1,Nfleet,1,Nobs_ms); - 3darray header_ms(1,Nfleet,1,Nobs_ms,0,7); - 3darray header_ms_rd(1,Nfleet,1,Nobs_ms,2,3); - matrix suprper_ms_sampwt(1,Nfleet,1,Nobs_ms); - imatrix suprper_ms1(1,Nfleet,1,N_suprper_ms); - imatrix suprper_ms2(1,Nfleet,1,N_suprper_ms); - -// note: sizeAge_Data[i](6) has age error method used; sign is positive to indicate mean length-at-age; negative for mean weight-at-age - LOCAL_CALCS - // clang-format on - Nobs_ms = 0; - suprper_ms1.initialize(); - suprper_ms2.initialize(); - N_suprper_ms.initialize(); - if (nobs_ms_tot > 0) - { - in_superperiod = 0; - for (floop = 1; floop <= Nfleet; floop++) - for (i = 0; i <= nobs_ms_rd - 1; i++) - { - y = sizeAge_Data[i](1); - if (y > endyr + 50) - { - warnstream << "forecast meansize obs cannot be beyond endyr +50"; - write_message(FATAL, 0); - } - if (y >= styr) - { - f = abs(sizeAge_Data[i](3)); - if (f == floop) - { - timing_input(1, 3) = sizeAge_Data[i](1, 3); - get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); - Nobs_ms(f)++; - j = Nobs_ms(f); // observation counter - t = timing_i_result(2); - s = timing_i_result(3); - real_month = timing_r_result(1); - ALK_time = timing_i_result(5); - msz_time_t(f, j) = t; - msz_time_ALK(f, j) = ALK_time; - if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f - { // real_month,fraction of season, year.fraction - data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); - } - else if (timing_r_result(1) != data_time(ALK_time, f, 1)) - { - warnstream << "LEN@AGE: data_month already set for y,m,f: " << y << " " << timing_r_result(1) << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " so treat as replicate"; - write_message(WARN, 0); - } - have_data(ALK_time, 0, 0, 0) = 1; - have_data(ALK_time, f, 0, 0) = 1; // so have data of some type - have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas - p = have_data(ALK_time, f, data_type, 0); - have_data(ALK_time, f, data_type, p) = j; // store data index for the p'th observation in this subseas - - if (s > nseas) - { - warnstream << " Critical error, season for size-age obs " << i << " is > nseas"; - write_message(FATAL, 0); - } - - header_ms(f, j)(1, 7) = sizeAge_Data[i](1, 7); - header_ms_rd(f, j)(2, 3) = sizeAge_Data[i](2, 3); - - // note that following storage is redundant with Show_Time(t,3) calculated later - if (y > retro_yr) - header_ms(f, j, 3) = -f; - if (sizeAge_Data[i](3) < 0) - header_ms(f, j, 3) = -f; - if (header_ms(f, j, 3) > 0) - Nobs_ms_use(f)++; - header_ms(f, j, 0) = float(y) + 0.01 * int(100. * (azero_seas(s) + seasdur_half(s))); // - - gen_ms(f, j) = sizeAge_Data[i](4); - mkt_ms(f, j) = sizeAge_Data[i](5); - if (abs(sizeAge_Data[i](6)) > N_ageerr) - { - warnstream << "in meansize-at-age, ageerror type must be <= " << N_ageerr; - write_message(FATAL, 0); - } - ageerr_type_ms(f, j) = sizeAge_Data[i](6); - - // SS_Label_Info_2.9.1 #Create super-periods for meansize data - if (sizeAge_Data[i](2) < 0) // start/stop a super-period ALL observations must be continguous in the file - { - header_ms(f, j, 2) = -real_month; //month - if (in_superperiod == 0) // start superperiod - { - N_suprper_ms(f)++; - suprper_ms1(f, N_suprper_ms(f)) = j; - in_superperiod = 1; - } - else if (in_superperiod == 1) // end a super-period - { - suprper_ms2(f, N_suprper_ms(f)) = j; - in_superperiod = 0; - } - } - else - { - header_ms(f, j, 2) = real_month; //month - } - - for (b = 1; b <= n_abins2; b++) - { - obs_ms(f, j, b) = sizeAge_Data[i](7 + b); - } - for (b = 1; b <= n_abins2; b++) - { - obs_ms_n(f, j, b) = sizeAge_Data[i](7 + b + n_abins2); - obs_ms_n_read(f, j, b) = sizeAge_Data[i](7 + b + n_abins2); - } - } - } - } - echoinput << "Successful read of size-at-age data; N kept = " << Nobs_ms << endl; - } - // clang-format off - END_CALCS - - -// SS_Label_Info_2.10 #Read environmental data that will be used to modify processes and expected values - init_int N_envvar; - int N_envdata; - LOCAL_CALCS - // clang-format on - echoinput << N_envvar << " N_envvar " << endl; - - ender = 0; - N_envdata = 0; - if (N_envvar > 0) - { - do - { - dvector tempvec(1, 3); - *(ad_comm::global_datafile) >> tempvec(1, 3); - if (tempvec(1) == -9999.) - ender = 1; - if (sum(tempvec) == 0.0) - { - warnstream << "reading past end of file for env data; exit "; - write_message(FATAL, 0); - } - env_temp.push_back(tempvec(1, 3)); - } while (ender == 0); - N_envdata = env_temp.size() - 1; - echoinput << " successful read of " << N_envdata << " environmental observations " << endl; - } - // clang-format off - END_CALCS - -// SS_Label_Info_2.11 #Start generalized size composition section -// SS_Label_Info_2.11.1 #Read generalized size frequency data (aka wt frequency) - int SzFreqMethod; - int iobs; - int SzFreq_Nmeth_rd; // number of sizefreq methods to be read - int SzFreq_Nmeth; - LOCAL_CALCS - *(ad_comm::global_datafile) >> SzFreq_Nmeth_rd; - if (SzFreq_Nmeth_rd > 0) - { - SzFreq_Nmeth = SzFreq_Nmeth_rd; - } - else if (SzFreq_Nmeth_rd < 0) - { - *(ad_comm::global_datafile) >> SzFreq_Nmeth; - } - echoinput << SzFreq_Nmeth << " N sizefreq methods to read " << endl; - END_CALCS - - imatrix SzFreq_HaveObs2(1,SzFreq_Nmeth,1,ALK_time_max); - init_ivector SzFreq_Nbins(1,SzFreq_Nmeth); // number of bins for each method -!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_Nbins << " Sizefreq N bins per method" << endl; - init_ivector SzFreq_units(1,SzFreq_Nmeth); // units for proportions (1 = biomass; 2=numbers ) for each method -!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_units << " Sizetfreq units(1=bio/2=num) per method" << endl; - init_ivector SzFreq_scale(1,SzFreq_Nmeth); // bin scale (1=kg; 2=lbs; 3=cm; 4=in) for each method -!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_scale << " Sizefreq scale(1=kg/2=lbs/3=cm/4=inches) per method" << endl; - init_vector SzFreq_mincomp(1,SzFreq_Nmeth); // mincomp to add for each method -!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_mincomp << " Sizefreq: add small constant to comps, per method " << endl; - init_ivector SzFreq_nobs(1,SzFreq_Nmeth); -!!if (SzFreq_Nmeth > 0) echoinput << SzFreq_nobs << " Sizefreq N obs per method" << endl; - ivector SzFreq_Nbins_seas_g(1,SzFreq_Nmeth*nseas); // array dimensioner used only for the SzFreqTrans array - ivector SzFreq_Nbins3(1,SzFreq_Nmeth); // doubles the Nbins if gender==2 - int SzFreqMethod_seas; - ivector Comp_Err_Sz(1,SzFreq_Nmeth); - ivector Comp_Err_Sz2(1,SzFreq_Nmeth); - - LOCAL_CALCS - // clang-format on - Comp_Err_Sz.initialize(); - Comp_Err_Sz2.initialize(); - if (SzFreq_Nmeth_rd == -1) - { - *(ad_comm::global_datafile) >> Comp_Err_Sz(1,SzFreq_Nmeth); - echoinput << Comp_Err_Sz << " Sizefreq: Comp_Err_method " << endl; - *(ad_comm::global_datafile) >> Comp_Err_Sz2(1,SzFreq_Nmeth); - echoinput << Comp_Err_Sz2 << " Sizefreq: Comp_Err_index " << endl; - for (f = 1; f <= SzFreq_Nmeth; f ++) - { - if (Comp_Err_Sz2(f) > Comp_Err_ParmCount + 1) - { - warnstream << "Sz D-M must refer to existing index, or increment by 1 to add new definition: " << Comp_Err_Sz2(f); - write_message(FATAL, 0); - } - else if (Comp_Err_Sz2(f) > Comp_Err_ParmCount) - { - Comp_Err_ParmCount++; - int parti = 0; - DM_parmlist(parti, f + 2*Nfleet) = 1; // flag for creating new definition because Comp_Err_Sz2 can point to existing parameter - } - // else OK because refers to existing definition - } - } - - SzFreq_units_label += "bio"; - SzFreq_units_label += "numbers"; - SzFreq_scale_label += "kg"; - SzFreq_scale_label += "lbs"; - SzFreq_scale_label += "cm"; - SzFreq_scale_label += "inches"; - g = 0; - data_type = 6; // for generalized size composition data - - if (SzFreq_Nmeth > 0) - { - SzFreq_HaveObs2.initialize(); - for (k = 1; k <= SzFreq_Nmeth; k++) - { - if (SzFreq_units(k) == 1 && SzFreq_scale(k) > 2) - { - warnstream << "error: cannot accumulate biomass into length-based szfreq scale for method: " << k; - write_message(FATAL, 0); - } - SzFreq_Nbins3(k) = gender * SzFreq_Nbins(k); - for (s = 1; s <= nseas; s++) - { - g++; - SzFreq_Nbins_seas_g(g) = SzFreq_Nbins(k) * gender; - } - } - } - // clang-format off - echoinput<<"here"<0) echoinput << " SizeFreq bins-raw " << endl << SzFreq_bins1 << endl; - matrix SzFreq_bins(1,SzFreq_Nmeth,1,SzFreq_Nbins3); // szfreq bins as processed and doubled for the males if necessary - matrix SzFreq_bins2(1,SzFreq_Nmeth,0,SzFreq_Nbins3+1); // as above, but one more bin to aid in the search for bin boundaries - ivector SzFreq_Omit_Small(1,SzFreq_Nmeth); - int SzFreq_totobs; - int SzFreq_N_Like; - matrix SzFreq_means(1,SzFreq_Nmeth,1,SzFreq_Nbins3); // szfreq mean size in bins as processed and doubled for the males if necessary - - LOCAL_CALCS - // clang-format on - SzFreq_totobs = 0; - // SS_Label_Info_2.11.1 #Size comp bins according to scaling method - if (SzFreq_Nmeth > 0) - { - for (k = 1; k <= SzFreq_Nmeth; k++) - { - // set flag for accumulating, or not, fish from small pop len bins up into first SzFreq data bin - // if first bin is positive, then fish smaller than that bin are ignored (omitsmall set =1) - // if first bin is negative, then smaller fish are accumulated up into that first bin - - SzFreq_Omit_Small(k) = 1; - if (SzFreq_bins1(k, 1) < 0) - { - SzFreq_Omit_Small(k) = -1; - SzFreq_bins1(k, 1) *= -1; // make this positive for use in model, then write out as negative in data_echo.ss_new - } - - SzFreq_bins(k)(1, SzFreq_Nbins(k)) = SzFreq_bins1(k)(1, SzFreq_Nbins(k)); - if (gender == 2) - { - for (j = 1; j <= SzFreq_Nbins(k); j++) - { - SzFreq_bins(k, j + SzFreq_Nbins(k)) = SzFreq_bins1(k, j); - } - } - if (SzFreq_scale(k) == 2) // convert from lbs to kg - { - SzFreq_bins(k) *= 0.4536; - } - else if (SzFreq_scale(k) == 4) // convert from inches to cm - { - SzFreq_bins(k) *= 2.54; - } - SzFreq_bins2(k, 0) = 0.; - SzFreq_bins2(k)(1, SzFreq_Nbins(k)) = SzFreq_bins(k)(1, SzFreq_Nbins(k)); - if (gender == 2) - { - SzFreq_bins2(k, SzFreq_Nbins(k) + 1) = 0.; - for (j = 1; j <= SzFreq_Nbins(k); j++) - { - SzFreq_bins2(k, j + SzFreq_Nbins(k) + 1) = SzFreq_bins2(k, j); - } - } - - for (z = 1; z <= SzFreq_Nbins(k); z++) - { - if (z < SzFreq_Nbins(k)) - { - SzFreq_means(k, z) = 0.5 * (SzFreq_bins2(k, z) + SzFreq_bins2(k, z + 1)); // this is not gender specific - } - else - { - SzFreq_means(k, z) = SzFreq_means(k, z - 1) + (SzFreq_bins2(k, z) - SzFreq_bins2(k, z - 1)); - } - if (gender == 2) - SzFreq_means(k, z + SzFreq_Nbins(k)) = SzFreq_means(k, z); - } - echoinput << "Processed_SizeFreqMethod_bins for method: " << k << endl - << "low: " << SzFreq_bins(k) << endl - << "mean: " << SzFreq_means(k) << endl; - } - SzFreq_totobs = sum(SzFreq_nobs); - } - // clang-format off - END_CALCS - -// NOTE: for the szfreq data, which are stored in one list and not by fleet, it is not possible to exclude from the working array on basis of before styr or after retroyr - ivector SzFreq_Setup(1,SzFreq_totobs); // stores the number of bins plus header info to read into ragged array - ivector SzFreq_Setup2(1,SzFreq_totobs); // stores the number of bins for each obs to create the ragged array - ivector SzFreq_time_t(1,SzFreq_totobs); - ivector SzFreq_time_ALK(1,SzFreq_totobs); - - LOCAL_CALCS - // clang-format on - if (SzFreq_Nmeth > 0) - { - g = 0; - for (k = 1; k <= SzFreq_Nmeth; k++) - for (j = 1; j <= SzFreq_nobs(k); j++) - { - g++; - SzFreq_Setup(g) = 7 + gender * SzFreq_Nbins(k); - SzFreq_Setup2(g) = gender * SzFreq_Nbins(k); - } - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_2.11.2 #Read size comp observations into a ragged array -!!// , with the number of elements for each obs stored in sizefreq_setup -!!// unlike the size and agecomp, obs from all fleets are in one dimension, rather than having a dimension for fleet -!!// to do super-period, obs must be sorted by fleet and time within each method - init_matrix SzFreq_obs1(1,SzFreq_totobs,1,SzFreq_Setup); -!!if(SzFreq_totobs>0) echoinput<<" first sizefreq obs "< - // SzFreq_obs_hdr: 1=y; 2=month; 3=f; 4=gender; 5=partition; 6=method&skip flag; 7=first bin to use; 8=last bin(e.g. to include males or not); 9=flag to indicate transition matrix needs calculation - vector SzFreq_sampleN(1,SzFreq_totobs); - vector SzFreq_effN(1,SzFreq_totobs); - vector SzFreq_eachlike(1,SzFreq_totobs); - vector SzFreq_each_offset(1,SzFreq_totobs); - matrix SzFreq_obs(1,SzFreq_totobs,1,SzFreq_Setup2); - imatrix SzFreq_LikeComponent(1,Nfleet,1,SzFreq_Nmeth); - number N_suprper_SzFreq; // no real need to keep track of these by method, so just use a number - LOCAL_CALCS - // clang-format on - SzFreq_N_Like = 0; - N_suprper_SzFreq = 0; - if (SzFreq_Nmeth > 0) - { - SzFreq_LikeComponent.initialize(); - SzFreq_obs.initialize(); - SzFreq_eachlike.initialize(); - SzFreq_each_offset.initialize(); - iobs = 0; - for (k = 1; k <= SzFreq_Nmeth; k++) - { - for (j = 1; j <= SzFreq_nobs(k); j++) - { - // if(y>=styr && y<=retro_yr) // not used because all obs in one list - iobs++; - for (z = 1; z <= 5; z++) - { - SzFreq_obs_hdr(iobs, z) = SzFreq_obs1(iobs, z + 1); - } - SzFreq_sampleN(iobs) = SzFreq_obs1(iobs, 7); - if (SzFreq_obs1(iobs, 3) < 0) - N_suprper_SzFreq++; // count the number of superperiod start/stops - if (SzFreq_obs_hdr(iobs, 4) == 3) // both genders - { - for (z = 1; z <= SzFreq_Setup2(iobs); z++) - { - SzFreq_obs(iobs, z) = SzFreq_obs1(iobs, 7 + z); - } - } - else if (SzFreq_obs_hdr(iobs, 4) <= 1) // combined gender or female only - { - for (z = 1; z <= SzFreq_Nbins(k); z++) - { - SzFreq_obs(iobs, z) = SzFreq_obs1(iobs, 7 + z); - } - } - else // male only - { - for (z = SzFreq_Nbins(k) + 1; z <= SzFreq_Setup2(iobs); z++) - { - SzFreq_obs(iobs, z) = SzFreq_obs1(iobs, 7 + z); - } - } - if (gender == 1) - SzFreq_obs_hdr(iobs, 4) = 1; // just in case - if (sum(SzFreq_obs(iobs)) <= 0.0) - { - warnstream << "zero fish in size comp " << SzFreq_obs_hdr(iobs); - write_message(FATAL, 0); - } - if (SzFreq_sampleN(iobs) <= 0.0) - { - warnstream << " Input N is <=0.0 in size comp " << SzFreq_obs_hdr(iobs); - write_message(FATAL, 0); - } - - f = abs(SzFreq_obs_hdr(iobs, 3)); - SzFreq_obs(iobs) /= sum(SzFreq_obs(iobs)); - SzFreq_obs(iobs) += SzFreq_mincomp(k); - SzFreq_obs(iobs) /= sum(SzFreq_obs(iobs)); - y = SzFreq_obs_hdr(iobs, 1); - if (y > endyr + 50) - { - warnstream << "forecast sizefreq obs cannot be beyond endyr +50"; - write_message(FATAL, 0); - } - - timing_input(1, 3) = SzFreq_obs_hdr(iobs)(1, 3); - timing_input(2) = SzFreq_obs1(iobs, 3); - get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); - - f = abs(SzFreq_obs_hdr(iobs, 3)); - if (y > retro_yr) - SzFreq_obs_hdr(iobs, 3) = -f; - t = timing_i_result(2); - if (gender == 1) - { - SzFreq_obs_hdr(iobs, 4) = 0; - } - z = SzFreq_obs_hdr(iobs, 4); // gender - // get min and max index according to use of 0, 1, 2, 3 gender index - if (z != 2) - { - SzFreq_obs_hdr(iobs, 7) = 1; - } - else - { - SzFreq_obs_hdr(iobs, 7) = SzFreq_Nbins(k) + 1; - } - if (z <= 1) - { - SzFreq_obs_hdr(iobs, 8) = SzFreq_Nbins(k); - } - else - { - SzFreq_obs_hdr(iobs, 8) = 2 * SzFreq_Nbins(k); - } - // SzFreq_obs_hdr(iobs,5); // partition - SzFreq_obs_hdr(iobs, 6) = k; - if (k != SzFreq_obs1(iobs, 1)) - { // save method code for later use - warnstream << "sizefreq ID # doesn't match "; - write_message(WARN, 0); - } - if (y >= styr) - { - ALK_time = timing_i_result(5); - real_month = timing_r_result(1); - - SzFreq_time_t(iobs) = t; - SzFreq_time_ALK(iobs) = ALK_time; - SzFreq_LikeComponent(f, k) = 1; // indicates that this combination is being used - if (SzFreq_HaveObs2(k, ALK_time) == 0) // transition matrix needs calculation - { - SzFreq_HaveObs2(k, ALK_time) = 1; // flad showing condition met - SzFreq_obs_hdr(iobs, 9) = 1; // flag that will be ehecked in ss_expval - } - - if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f - { // real_month,fraction of season, year.fraction - data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); - } - else if (timing_r_result(1) != data_time(ALK_time, f, 1)) - { - warnstream << "SIZE: data_month already set for y,m,f: " << y << " " << timing_r_result(1) << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " so treat as replicate"; - write_message(WARN, 0); - } - have_data(ALK_time, 0, 0, 0) = 1; - have_data(ALK_time, f, 0, 0) = 1; // so have data of some type - have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas - p = have_data(ALK_time, f, data_type, 0); - have_data(ALK_time, f, data_type, p) = iobs; // store data index for the p'th observation in this subseas - have_data_yr(y, f) = 1; - have_data_yr(y, 0) = 1; // survey or comp data exist this year - - if (SzFreq_obs_hdr(iobs, 7) < 0) - SzFreq_obs_hdr(iobs, 3) = -abs(SzFreq_obs_hdr(iobs, 3)); // old method for excluding from logL - } - else - { - SzFreq_obs_hdr(iobs, 3) = -abs(SzFreq_obs_hdr(iobs, 3)); // flag for skipping this obs - SzFreq_time_t(iobs) = styr; - SzFreq_time_ALK(iobs) = 1; - } - } - } - SzFreq_N_Like = sum(SzFreq_LikeComponent); - if (N_suprper_SzFreq > 0) - { - j = N_suprper_SzFreq / 2; // because we counted the begin and end - if (2 * j != N_suprper_SzFreq) - { - warnstream << "unequal number of starts and ends of sizefreq superperiods "; - write_message(FATAL, 0); - } - else - { - N_suprper_SzFreq = j; - } - echoinput << "N superperiods for sizecomp " << N_suprper_SzFreq << endl; - } - } - // clang-format off - END_CALCS - -// SS_Label_Info_2.11.3 #Calc logL for a perfect fit to the sizefreq data as an offset - vector offset_Sz_tot(1,SzFreq_N_Like); // this is a constant offset, so can be declared in data section - ivector suprper_SzFreq_start(1,N_suprper_SzFreq); - ivector suprper_SzFreq_end(1,N_suprper_SzFreq); - vector suprper_SzFreq_sampwt(1,SzFreq_totobs); // will contain calculated weights for obs within super periods - - LOCAL_CALCS - // clang-format on - if (SzFreq_Nmeth > 0) - { - offset_Sz_tot.initialize(); - suprper_SzFreq_start.initialize(); - suprper_SzFreq_end.initialize(); - suprper_SzFreq_sampwt.initialize(); - // N_suprper_SzFreq=0; // redo this counter so can use the counter - // count the number of type x methods being used to create vector length for the likelihoods - g = 0; - for (f = 1; f <= Nfleet; f++) - for (k = 1; k <= SzFreq_Nmeth; k++) - { - if (SzFreq_LikeComponent(f, k) > 0) - { // so stored value g gives index in list of logL elements - g++; - SzFreq_LikeComponent(f, k) = g; - } - } - // in_superperiod=0; - // for (iobs=1;iobs<=SzFreq_totobs;iobs++) - // { - // k=SzFreq_obs_hdr(iobs,6); // get the method - // f=abs(SzFreq_obs_hdr(iobs,3)); - // s=SzFreq_obs_hdr(iobs,2); // sign used to indicate start/stop of super period - // if(SzFreq_obs_hdr(iobs,3)>0) // negative for out of range or skip - // { - // z1=SzFreq_obs_hdr(iobs,7); - // z2=SzFreq_obs_hdr(iobs,8); - // g=SzFreq_LikeComponent(f,k); - // offset_Sz_tot(g)-=SzFreq_sampleN(iobs)*SzFreq_obs(iobs)(z1,z2)*log(SzFreq_obs(iobs)(z1,z2)); - // } - - // identify super-period starts and stops - // if(s<0) // start/stop a super-period ALL observations must be continguous in the file - // { - // if(in_superperiod==0) - // { - // N_suprper_SzFreq++; - // suprper_SzFreq_start(N_suprper_SzFreq)=iobs; - // in_superperiod=1; - // } - // else if(in_superperiod==1) // end a super-period - // { - // suprper_SzFreq_end(N_suprper_SzFreq)=iobs; - // in_superperiod=0; - // } - // } - // } - } - echoinput << " finished processing sizefreq data " << endl; - // if(N_suprper_SzFreq>0) echoinput<<"sizefreq superperiod start obs: "<> Do_TG_rd; - echoinput << Do_TG_rd << " Do_TagData(0/1/2) " << endl - << "# where 2 indicates additional read of TG_min_recap" << endl; - if (Do_TG_rd > 0) - { - Do_TG = 1; - *(ad_comm::global_datafile) >> N_TG; - *(ad_comm::global_datafile) >> N_TG_recap; - *(ad_comm::global_datafile) >> TG_mixperiod; - *(ad_comm::global_datafile) >> TG_maxperiods; - TG_min_recap = 0; - N_TG2 = N_TG; - TG_timestart = 9999; - echoinput << N_TG << " N tag groups " << endl - << N_TG_recap << " N recapture events" << endl - << TG_mixperiod << " Latency period for mixing" << endl - << TG_maxperiods << " N periods to track recoveries" << endl; - if (Do_TG_rd == 2) - { - *(ad_comm::global_datafile) >> TG_min_recap; - echoinput << TG_min_recap << " min recaps >= mixperiod for inclusion in logL" << endl; - } - } - else - { - N_TG = 0; - N_TG_recap = 0; - TG_mixperiod = 0; - TG_maxperiods = 0; - TG_min_recap = 0; - N_TG2 = 1; - TG_timestart = 1; - } - // clang-format off - END_CALCS - - ivector TG_endtime(1,N_TG2) - ivector TG_use(1,N_TG2) // 0/1 flag to indicate N recaptures >= TG_min_recap - init_matrix TG_release(1,N_TG,1,8) - // TG area year seas tfill sex age Nrelease - LOCAL_CALCS - // clang-format on - TG_endtime(1) = 0; - TG_use = 0; // initialize - if (N_TG > 0) - { - echoinput << " Tag Releases " << endl - << "TG area year seas tfill sex age Nrelease " << endl - << TG_release << endl; - for (TG = 1; TG <= N_TG; TG++) - { - t = styr + int((TG_release(TG, 3) - styr) * nseas + TG_release(TG, 4) - 1); - TG_release(TG, 5) = t; - if (t < TG_timestart) - TG_timestart = t; - k = TG_maxperiods; - if ((t + TG_maxperiods) > TimeMax) - k -= (t + TG_maxperiods - TimeMax); - TG_endtime(TG) = k; - } - } - // clang-format off - END_CALCS - -// SS_Label_Info_2.12.1 #Store recapture info by TG group and time to follow it as a cohort - init_matrix TG_recap_data(1,N_TG_recap,1,5) - // TG, year, seas, fleet, sex, Nrecap - 3darray TG_recap_obs(1,N_TG2,0,TG_endtime,0,Nfleet); // no area index because each fleet is in just one area - LOCAL_CALCS - // clang-format on - if (N_TG > 0) - { - echoinput << "First row of tag-recapture data " << TG_recap_data(1) << endl; - echoinput << "Last row of tag-recapture data " << TG_recap_data(N_TG_recap) << endl; - TG_recap_obs.initialize(); - for (j = 1; j <= N_TG_recap; j++) - { - TG = TG_recap_data(j, 1); // TG is the tag group - t = styr + int((TG_recap_data(j, 2) - styr) * nseas + TG_recap_data(j, 3) - 1) - TG_release(TG, 5); // find elapsed time in terms of number of seasons - if (t > TG_maxperiods) - t = TG_maxperiods; - if (t < 0) - { - warnstream << " recapture is before tag release for recap: " << j; - write_message(FATAL, 0); - } - TG_recap_obs(TG, t, TG_recap_data(j, 4)) += TG_recap_data(j, 5); // save N recaptures by TG, fleet of recapture, elapsed time - if (t >= TG_mixperiod) - TG_use(TG) += TG_recap_data(j, 5); // count total recaptures from this TG - } - echoinput << "# total recaptures >= mixperiod by tag group" << endl; - for (TG = 1; TG <= N_TG; TG++) - { - echoinput << TG << " " << TG_use(TG) << endl; - for (TG_t = 0; TG_t <= TG_endtime(TG); TG_t++) - { - TG_recap_obs(TG, TG_t, 0) = sum(TG_recap_obs(TG, TG_t)(1, Nfleet)); - if (TG_recap_obs(TG, TG_t, 0) > 0.) TG_recap_obs(TG, TG_t)(1, Nfleet) /= TG_recap_obs(TG, TG_t, 0); - } - } - } - // clang-format off - END_CALCS - -// SS_Label_Info_2.13 #Morph composition data - init_int Do_Morphcomp; -!!echoinput << Do_Morphcomp << " Do_Morphcomp(0/1) " << endl; - int Morphcomp_nobs; - int Morphcomp_nobs_rd; - int Morphcomp_nmorph; - number Morphcomp_mincomp; - matrix Morphcomp_obs_rd(1,1,1,1); // reallocate if needed - matrix Morphcomp_obs(1,1,1,1); // reallocate if needed - LOCAL_CALCS - // clang-format on - if (Do_Morphcomp == 0) - { - Morphcomp_nobs = 0; - Morphcomp_nobs_rd = 0; - Morphcomp_nmorph = 0; - Morphcomp_mincomp = 0.00001; - } - else - { - *(ad_comm::global_datafile) >> Morphcomp_nobs_rd; - *(ad_comm::global_datafile) >> Morphcomp_nmorph; // later compare this value to the n morphs in the control file and exit if different - *(ad_comm::global_datafile) >> Morphcomp_mincomp; - echoinput << Morphcomp_nobs_rd << " Morphcomp_nobs " << endl; - echoinput << Morphcomp_nmorph << " Morphcomp_nmorph " << endl; - echoinput << Morphcomp_mincomp << " Morphcomp_mincomp " << endl; - - Morphcomp_obs.deallocate(); - Morphcomp_obs.allocate(1, Morphcomp_nobs_rd, 1, 5 + Morphcomp_nmorph + 1); // terminal +1 will contain computed value of ALK_time - Morphcomp_obs.initialize(); - Morphcomp_obs_rd.deallocate(); - Morphcomp_obs_rd.allocate(1, Morphcomp_nobs_rd, 1, 5 + Morphcomp_nmorph); // but will only get filled with the used obs - Morphcomp_obs_rd.initialize(); - // yr, seas, fleet, partition, Nsamp, datavector - data_type = 8; // for morphcomp - - echoinput << " morph composition data" << endl - << "year month fleet null Nsamp datavector" << endl; - Morphcomp_nobs = 0; - for (i = 1; i <= Morphcomp_nobs_rd; i++) - { - *(ad_comm::global_datafile) >> Morphcomp_obs_rd(i); - echoinput << Morphcomp_obs_rd(i) << endl; - timing_input(1, 3) = Morphcomp_obs_rd(i)(1, 3); - y = timing_input(1); - if (y >= styr && y <= endyr + 50) // obs is in year range - { - if (timing_input(2) < 0.0) - { - warnstream << "negative month not allowed for morphcomp because superperiods not implemented "; - write_message(FATAL, 0); - } - get_data_timing(timing_input, timing_constants, timing_i_result, timing_r_result, seasdur, subseasdur_delta, azero_seas, surveytime); - - s = timing_input(2); - f = abs(timing_input(3)); - t = timing_i_result(2); - ALK_time = timing_i_result(5); - - Morphcomp_nobs++; - Morphcomp_obs(Morphcomp_nobs)(1, 5 + Morphcomp_nmorph) = Morphcomp_obs_rd(i)(1, 5 + Morphcomp_nmorph); // save observations to be used - Morphcomp_obs(Morphcomp_nobs, 5 + Morphcomp_nmorph + 1) = ALK_time; // for reporting - if (y > retro_yr) - Morphcomp_obs(Morphcomp_nobs, 3) = -f; // set to dummy observation - if (data_time(ALK_time, f, 1) < 0.0) // so first occurrence of data at ALK_time,f - { // real_month,fraction of season, year.fraction - data_time(ALK_time, f)(1, 3) = timing_r_result(1, 3); - } - else if (timing_r_result(1) != data_time(ALK_time, f, 1)) - { - warnstream << "morph_comp: data_month already set for y,s,f: " << y << " " << s << " " << f << " to real month: " << data_time(ALK_time, f, 1) << " but read value is: " << timing_r_result(1); - write_message(WARN, 0); - } - have_data(ALK_time, 0, 0, 0) = 1; - have_data(ALK_time, f, 0, 0) = 1; // so have data of some type - have_data(ALK_time, f, data_type, 0)++; // count the number of observations in this subseas - p = have_data(ALK_time, f, data_type, 0); - have_data(ALK_time, f, data_type, p) = Morphcomp_nobs; // store data index for the p'th observation in this subseas - - Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph) /= sum(Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph)); - Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph) += Morphcomp_mincomp; - Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph) /= sum(Morphcomp_obs(Morphcomp_nobs)(6, 5 + Morphcomp_nmorph)); - } - } - echoinput << "processed morphcomp: Nread:" << Morphcomp_nobs_rd << " N save: " << Morphcomp_nobs << endl - << Morphcomp_obs << endl; - } - // clang-format off - END_CALCS - - int Do_SelexData; - LOCAL_CALCS - // clang-format on - *(ad_comm::global_datafile) >> Do_SelexData; - echoinput << "Do dataread for selectivity priors(0/1): " << Do_SelexData << endl; - echoinput << "year seas fleet age/size bin selex_prior prior_sd" << endl; - echoinput << "feature not yet implemented" << endl; - // clang-format off - END_CALCS - -// SS_Label_Info_2.14 #End of datafile indicator - init_int fid; - - LOCAL_CALCS - // clang-format on - if (fid != 999) - { - warnstream << " final value in data file is an error " << fid; - write_message(FATAL, 0); - } - cout << "Data read successful " << fid << endl - << endl; - echoinput << " data read successful" << endl - << endl; - - // SS_Label_Info_3.0 #Read forecast.ss - // SS_Label_Flow #read forecast.ss - // note that forecast.ss is read before control file in order to st up length of some time dimension arrays - ad_comm::change_datafile_name("forecast.ss"); - cout << " reading forecast file " << endl; - ifstream Forecast_Stream("forecast.ss"); // even if the global_datafile name is used, there still is a different logical device created - k = 0; - N_FC = 0; - while (k == 0) - { - Forecast_Stream >> readline; // reads the line from input stream - if (length(readline) > 2) - { - checkchar = readline(1); - k = strcmp(checkchar, "#"); - checkchar = readline(1, 2); - j = strcmp(checkchar, "#C"); - if (j == 0) - { - N_FC++; - Forecast_Comments += readline; - } - } - } - // clang-format off - END_CALCS - int Do_Benchmark; // 0=skip; 1= do Fspr, Fbtgt, Fmsy; 2=do Fspr, F0.1, Fmsy - int Do_MSY; // 1= set to F(SPR); 2=calc F(MSY); 3=set to F(Btgt) or F0.1; 4=set to F(endyr) - int did_MSY; - int show_MSY; - int wrote_bigreport; - ivector Bmark_Yr_rd(1,10); - ivector Bmark_Yr(1,10); - ivector Bmark_t(1,2); // for range of time values for averaging body size - number SPR_target; - number BTGT_frac; - number Blim_frac; - int MSY_units; // 1=dead catch, 2=retained catch, 3=retained catch profits - vector CostPerF(1,Nfleet); - vector PricePerF(1,Nfleet); - ivector AdjustBenchF(1,Nfleet); - - LOCAL_CALCS - // clang-format on - echoinput << "read Do_Benchmark(0=skip; 1= do Fspr, Fbtgt, Fmsy; 2=do Fspr, F0.1, Fmsy; 3=Fspr, Fbtgt, Fmsy, F_Blimit)" << endl; - *(ad_comm::global_datafile) >> Do_Benchmark; - echoinput << Do_Benchmark << " echoed Do_Benchmark " << endl; - echoinput << "read Do_MSY basis (1=F_SPR,2=calcMSY,3=F_Btarget,4=mult*F_endyr (disabled);5=calcMEY with MSY_unit options" << endl; - *(ad_comm::global_datafile) >> Do_MSY; - echoinput << Do_MSY << " echoed Do_MSY basis" << endl; - if (Do_MSY == 2) - { - echoinput << "Note that Do_MSY=5 is more flexible than Do_MSY=2 by providing control of MSY_units" << endl; - } - - CostPerF = 0.0; - PricePerF = 1.0; // default value per mt - MSY_units = 2; // default to YPR_opt = dead catch without excluded bycatch fleets, but with size/age discard included - AdjustBenchF = 1; - if (Do_MSY == 5) // doing advanced MSY options, including MEY - { - warnstream << "F(mey) is a research feature in 3.30.19; use cautiously and report any issues"; - write_message(WARN, 0); - echoinput << "enter quantity to be maximized: (1) dead catch biomass; (2) dead catch biomass w/o excluded bycatch fleet " - << "(3) retained catch; (4) retained catch profits" << endl; - *(ad_comm::global_datafile) >> MSY_units; - echoinput << MSY_units << " # MSY_units as entered" << endl; - - CostPerF.initialize(); - PricePerF.initialize(); - echoinput << "enter fleet ID and cost per fleet, price per fleet, and 1 to indicate FMEY applies to this fleet (0) otherwise; negative fleet ID fills for all higher fleet IDs, -9999 exits list" << endl; - int fleet_ID = 100; - double tempcost; - double tempprice; - int tempAdjust; - while (fleet_ID > -9999) - { - *(ad_comm::global_datafile) >> fleet_ID; - *(ad_comm::global_datafile) >> tempcost; - *(ad_comm::global_datafile) >> tempprice; - *(ad_comm::global_datafile) >> tempAdjust; - echoinput << fleet_ID << " " << tempcost << " " << tempprice << " " << tempAdjust << endl; - if (fleet_ID > Nfleet) - { - warnstream << "fleetID > Nfleet"; - write_message(WARN, 0); - } - else if (fleet_ID > 0) - { - CostPerF(fleet_ID) = tempcost; - PricePerF(fleet_ID) = tempprice; - AdjustBenchF(fleet_ID) = tempAdjust; - } - else if (fleet_ID > -999) - { - for (f = -fleet_ID; f <= Nfleet; f++) - { - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - CostPerF(f) = tempcost; - PricePerF(f) = tempprice; - AdjustBenchF(f) = tempAdjust; - } - } - } - } - echoinput << "# Cost-per-unit fishing mortality: " << CostPerF << endl - << "Price per kg: " << PricePerF << endl; - } - - switch (Do_MSY) - { - case 1: // set Fmsy=Fspr - { - MSY_name = "set_Fmsy=Fspr"; - break; - } - case 3: // set Fmsy=Fbtgt or F0.1 - { - if (Do_Benchmark == 1) MSY_name = "set_Fmsy=Fbtgt"; - if (Do_Benchmark == 2) MSY_name = "set_Fmsy=F0.1"; - break; - } - case 4: // set fmult for Fmsy to 1 - { - MSY_name = "set_Fmsy_using_input_Fmult"; - break; - } - case 2: // calc Fmsy - { - MSY_name = "find_Fmsy_to_maximize_dead_catch"; - break; - } - case 5: // calc Fmey - { - switch (MSY_units) - { - case 1: - { - MSY_name = "find_Fmsy_to_maximize_dead_catch"; - break; - } - case 2: - { - MSY_name = "find_Fmsy_to_maximize_retained_catch"; - break; - } - case 3: - { - MSY_name = "find_Fmey_to_maximize_profits_(retained_catch_revenue_-_fleet_cost"; - break; - } - } - break; - } - } - - show_MSY = 0; - did_MSY = 0; - wrote_bigreport = 0; - Blim_frac = 0.5; // default - echoinput << "next read SPR target and Biomass target as fractions" << endl; - *(ad_comm::global_datafile) >> SPR_target; - echoinput << SPR_target << " echoed SPR_target " << endl; - *(ad_comm::global_datafile) >> BTGT_frac; - echoinput << BTGT_frac << " echoed BTGT_frac " << endl; - - if (Do_Benchmark == 3) - { - echoinput << "if Do_Benchmark==3, read Blimit as fraction of Bmsy (neg value to use as frac of Bzero)" << endl; - *(ad_comm::global_datafile) >> Blim_frac; - echoinput << Blim_frac << " echoed Blim_frac " << endl; - } - - echoinput << "next read 10 Benchmark years for: beg-end bio; beg-end selex; beg-end relF; beg-end recr_dist; beg-end SRparm" << endl; - echoinput << "codes: -999 means start year; >0 is an actual year; <=0 is relative to endyr" << endl; - *(ad_comm::global_datafile) >> Bmark_Yr_rd(1, 10); - - Bmark_Yr = 0; - if (Do_Benchmark == 2 && N_bycatch > 0) - { - warnstream << "F0.1 does not work well with bycatch fleets; check output carefully"; - write_message(WARN, 0); - } - echoinput << Bmark_Yr_rd << " echoed Benchmark years" << endl; - for (i = 1; i <= 10; i++) // beg-end bio; beg-end selex; beg-end relF - { - if (Bmark_Yr_rd(i) == -999) - { - Bmark_Yr(i) = styr; - } - else if (Bmark_Yr_rd(i) <= 0) - { - Bmark_Yr(i) = Bmark_Yr_rd(i) + endyr; - } - else if (Bmark_Yr_rd(i) < styr) - { - warnstream << "benchmark year (" << Bmark_Yr_rd(i) << ") < styr (" << styr << "); change to styr"; - write_message(WARN, 0); - Bmark_Yr(i) = styr; - } - else if (Bmark_Yr_rd(i) > endyr) - { - warnstream << "benchmark year (" << Bmark_Yr_rd(i) << ") > endyr (" << endyr << "); change to endyr"; - write_message(WARN, 0); - Bmark_Yr(i) = endyr; - } - else - { - Bmark_Yr(i) = Bmark_Yr_rd(i); - } - } - Bmark_t(1) = styr + (Bmark_Yr(1) - styr) * nseas; - Bmark_t(2) = styr + (Bmark_Yr(2) - styr) * nseas; - - echoinput << Bmark_Yr << " Benchmark years as processed" << endl; - echoinput << "next read: 1=use range of years as read for relF; 2 = set same as forecast relF below" << endl; - // clang-format off - END_CALCS - init_int Bmark_RelF_Basis; - - LOCAL_CALCS - // clang-format on - echoinput << Bmark_RelF_Basis << " echoed Bmark_RelF_year basis" << endl; - if (Do_MSY == 5 && Bmark_RelF_Basis == 2) - { - warnstream << "Do_MSY=5, so must use Bmark_RelF_Basis=1"; - write_message(FATAL, 0); - } - echoinput << endl - << "next read forecast basis: 0=none; 1=F(SPR); 2=F(MSY) 3=F(Btgt); 4=Ave F (enter yrs); 5=read Fmult" << endl; - // clang-format off - END_CALCS - init_int Do_Forecast_rd; - int Do_Forecast; -!! Do_Forecast = Do_Forecast_rd; -!!echoinput << Do_Forecast << " echoed Forecast basis" << endl; - - vector Fcast_Input(1,24); - - int N_Fcast_Yrs; - ivector Fcast_yr(1,6); // yr range for selex, then yr range for either allocation or for mean F - ivector Fcast_yr_rd(1,6); - int Fcast_Sel_yr1; - int Fcast_Sel_yr2; - int Fcast_RelF_yr1; - int Fcast_RelF_yr2; - int Fcast_Rec_yr1; - int Fcast_Rec_yr2; - int Fcast_RelF_Basis; // 1=use year range; 2=read below - number Fcast_Flevel; - int Do_Rebuilder; - int Rebuild_Ydecl; - int Rebuild_Yinit; - int HarvestPolicy; // 0=none; 1=west coast adjust catch; 2=AK to adjust F - number H4010_top_rd; - number H4010_bot; - number H4010_scale; - number H4010_scale_rd; - int Do_Impl_Error; - number Impl_Error_Std; - vector Fcast_Loop_Control(1,5); - int N_Fcast_Input_Catches; - int Fcast_InputCatch_Basis; // 2=dead catch; 3=retained catch; 99=F; -1=read fleet/time specific (biomass vs numbers will match catchunits(fleet) - int Fcast_Catch_Basis; // 2=dead catch bio, 3=retained catch bio, 5= dead catch numbers 6=retained catch numbers; Same for all fleets - - int Fcast_Catch_Allocation_Groups; - int Fcast_Do_Fleet_Cap; - int Fcast_Do_Area_Cap; - int Fcast_Cap_FirstYear; - vector Fcast_MaxFleetCatch(1,Nfleet); - vector Fcast_MaxAreaCatch(1,pop); - ivector Allocation_Fleet_Assignments(1,Nfleet); - matrix Fcast_RelF_Input(1,nseas,1,Nfleet); - int Fcast_timevary_Selex_rd; // old logic: 0 = fcast selectivity is mean over range of years; 1=use time-varying parameters to control selectivity in forecast - int Fcast_timevary_Selex; // new logic: 1 = fcast selectivity is mean over range of years; 0=use time-varying parameters to control selectivity in forecast - int N_Fcast_parm_aves; - - LOCAL_CALCS - // clang-format on - Fcast_MaxFleetCatch.initialize(); - Fcast_MaxAreaCatch.initialize(); - Allocation_Fleet_Assignments.initialize(); - Fcast_Catch_Allocation.initialize(); - Fcast_RelF_Input.initialize(); - Fcast_yr.initialize(); - Do_Impl_Error = 0; - Do_Rebuilder = 0; - // clang-format off - END_CALCS - matrix Fcast_MGparm_ave_rd(1,12,1,4) // for the 8 MGtypes plus, method, st_year, end_year - matrix Fcast_MGparm_ave(1,12,1,4) // for the 8 MGtypes plus, method, st_year, end_year (real years) - // lables for the MGtypes found in string array: MGtype_Lbl - - LOCAL_CALCS - // clang-format on - Fcast_timevary_Selex_rd = 0; // default; do mean - Fcast_MGparm_ave.initialize(); - Fcast_MGparm_ave_rd.initialize(); - if (Do_Forecast_rd > 0) - { - // Fcast_Input(1,k)=Fcast_Input_rd(1,k); - // k=0; - // k++; - echoinput << endl - << "#next read N forecast years" << endl; - *(ad_comm::global_datafile) >> N_Fcast_Yrs; - echoinput << N_Fcast_Yrs << " #echoed N_Fcast_Yrs " << endl; - if (Do_Forecast_rd > 0 && N_Fcast_Yrs <= 0) - { - warnstream << "ERROR: cannot do a forecast of zero years: " << N_Fcast_Yrs; - write_message(FATAL, 0); - } - if (Do_Forecast_rd > 0 && STD_Yr_max == -1) - { - warnstream << "Std_yrmax=-1 in starter, so no variance output for forecast quantities after endyr+1 "; - write_message(NOTE, 0); - } - - YrMax = endyr + N_Fcast_Yrs; - - echoinput << endl - << "# next read Fmult value to be used only if Forecast basis==5" << endl; - // k++; Fcast_Flevel=Fcast_Input(k); - *(ad_comm::global_datafile) >> Fcast_Flevel; - echoinput << Fcast_Flevel << " # echoed Fmult value" << endl; - - N_Fcast_parm_aves = 0; - echoinput << endl - << "# next enter year ranges for averaging forecast quantities that otherwise will follow time-vary parameter controls" << endl - << "# enter single value of -12345 to invoke recommended generic approach" << endl - << "# or enter six Fcast_year values: beg_selex, end_selex, beg_relF, end_relF, beg_recruits, end_recruits" << endl - << "# year values are actual year, or values <= 0 to be relative to endyr" << endl - << "# use of some of these year ranges is conditional on settings later in the forecast.ss file" << endl; - *(ad_comm::global_datafile) >> Fcast_yr_rd(1); - - if(Fcast_yr_rd(1) != -12345) // continue with old approach - { - *(ad_comm::global_datafile) >> Fcast_yr_rd(2,6); - echoinput << Fcast_yr_rd << " # echoed Fcast years as read" << endl; - Fcast_yr = Fcast_yr_rd; - for (i = 1; i <= 6; i++) // tagcode - { - if (Fcast_yr(i) == -999) - { - Fcast_yr(i) = styr; - } - else if (Fcast_yr(i) <= 0) - { - Fcast_yr(i) += endyr; - } - else if (Fcast_yr(i) < styr) - { - Fcast_yr(i) = styr; - } - else if (Fcast_yr(i) > endyr) - { - Fcast_yr(i) = endyr; - } - else - { - } // OK in range - } - Fcast_Sel_yr1 = Fcast_yr(1); - Fcast_Sel_yr2 = Fcast_yr(2); - Fcast_RelF_yr1 = Fcast_yr(3); - Fcast_RelF_yr2 = Fcast_yr(4); - Fcast_Rec_yr1 = Fcast_yr(5); - Fcast_Rec_yr2 = Fcast_yr(6); - echoinput << Fcast_yr << " # After Transformation" << endl; - - echoinput << endl - << "# read flag for selectivity used in forecasts; 0 creates mean to use for all years; 1 implements time-varying selectivity per parameters" << endl; - *(ad_comm::global_datafile) >> Fcast_timevary_Selex_rd; - // change polarity to match new code logic - if(Fcast_timevary_Selex_rd == 0) - {Fcast_timevary_Selex = 1;} // do means - else - {Fcast_timevary_Selex = 0;} - - echoinput << Fcast_timevary_Selex_rd << " # echoed Fcast_timevary_Selex value" << endl; - // set equivalent values using new approach - Fcast_MGparm_ave(10,1) = 10; - Fcast_MGparm_ave(10,2) = 1; - Fcast_MGparm_ave(10,3) = Fcast_yr_rd(1); // for selectivity - Fcast_MGparm_ave(10,4) = Fcast_yr_rd(2); - Fcast_MGparm_ave(11,1) = 11; - Fcast_MGparm_ave(11,2) = 1; - Fcast_MGparm_ave(11,3) = Fcast_yr_rd(3); // for rel F - Fcast_MGparm_ave(11,4) = Fcast_yr_rd(4); - Fcast_MGparm_ave(12,1) = 12; - Fcast_MGparm_ave(12,2) = 1; - Fcast_MGparm_ave(12,3) = Fcast_yr_rd(5); // for recruitment - Fcast_MGparm_ave(12,4) = Fcast_yr_rd(6); - Fcast_MGparm_ave_rd = Fcast_MGparm_ave; - } // end old approach for Fcast years - else - - { // read fcast year ranges in new list-based format -// set defaults, but each can be overridden - Fcast_yr(1,6) = endyr; - Fcast_Sel_yr1 = Fcast_yr(1); - Fcast_Sel_yr2 = Fcast_yr(2); - Fcast_RelF_yr1 = Fcast_yr(3); - Fcast_RelF_yr2 = Fcast_yr(4); - Fcast_Rec_yr1 = Fcast_yr(5); - Fcast_Rec_yr2 = Fcast_yr(6); - Fcast_timevary_Selex = 0; - - echoinput << " #_Read year ranges for forecast factors that will use means" << endl - << "#_ range will be endyr to endyr unless explicitly set below" << endl; - // Fcast_MGparm_ave_rd: read MGtype, method, start year, end year - // terminate with Factor = -9999 - echoinput << "read list of factor, method (0,1), start year, end year" << endl - << "Terminate with -9999 for factor" << endl - << "Factors: 1=M, 2=growth, 3=wtlen, 4=recr_dist&femfrac, 5=migration, 6=ageerror, 7=catchmult, 8=hermaphroditism" << endl - << "10=selectivity, 11=rel.F, 12=recruitment" - << "Method = 0 to use parameters (with time_vary); 1 to use mean of derived factor over year range"<> tempvec(1, 4); - echoinput << tempvec << endl; - if (tempvec(1) == -9999. || tempvec(1) > 12) - ender = 1; - else - { - int f1 = tempvec(1); - Fcast_MGparm_ave_rd(f1) = tempvec; - Fcast_MGparm_ave(f1) = tempvec; - } - } while (ender == 0); - - // Adjusting Fcast_MGparm_ave_rd minyear and maxyear values - // for Fcast_MGparm_ave - for (i = 1; i <= 12; i++) - { - if (Fcast_MGparm_ave_rd(i,1) > 0) - { - echoinput< endyr) - { - Fcast_MGparm_ave(i,3) = endyr; - } - // Adjust end year - if (Fcast_MGparm_ave(i,4) == -999) - { - Fcast_MGparm_ave(i,4) = endyr; - } - else if (Fcast_MGparm_ave(i,4) <= 0) - { - Fcast_MGparm_ave(i,4) += endyr; - } - if (Fcast_MGparm_ave(i,4) < Fcast_MGparm_ave(i,3)) - { - Fcast_MGparm_ave(i,4) = Fcast_MGparm_ave(i,3); - warnstream << "Fcast_MGparm_ave maxyear before minyear, setting to: " << Fcast_MGparm_ave(i,4); - write_message(ADJUST, 0); - } - if (Fcast_MGparm_ave(i,4) > endyr) - { - Fcast_MGparm_ave(i,4) = endyr; - } - switch (i) - { - case 10: // 10=selectivity - Fcast_Sel_yr1 = Fcast_MGparm_ave(i,3); - Fcast_Sel_yr2 = Fcast_MGparm_ave(i,4); - Fcast_timevary_Selex = Fcast_MGparm_ave(i,2); // tells SS3 to use mean (1) vs. time-vary parms (0) - break; - case 11: // 11=relative F - Fcast_RelF_yr1 = Fcast_MGparm_ave(i,3); - Fcast_RelF_yr2 = Fcast_MGparm_ave(i,4); - // only year range read here; invocation will be read later: Fcast_RelF_Basis; // tells SS3 to use mean, not time-vary parms - break; - case 12: // 12=recruitment - Fcast_Rec_yr1 = Fcast_MGparm_ave(i,3); - Fcast_Rec_yr2 = Fcast_MGparm_ave(i,4); - // only year range read here; invocation will be read later - break; - } - } - } - echoinput << "Forecast factor averaging: " << endl << Fcast_MGparm_ave << endl; - echoinput << "operational values may be calculated or assigned in benchmark_forecast setup" << endl; - } - - echoinput << endl - << "next read 4 values for: control rule shape(0, 1, 2, 3 or 4), inflection (like 0.40), cutoff(like 0.10), scale(like 0.75)" << endl; - *(ad_comm::global_datafile) >> HarvestPolicy; - if (HarvestPolicy == 0) - echoinput << "HarvestPolicy=0, so values for top, bottom, buffer will be ignored" << endl; - - echoinput << HarvestPolicy << " # echoed HarvestPolicy " << endl; - *(ad_comm::global_datafile) >> H4010_top_rd; // as fraction of HCR_anchor; use -1 as legacy approach to set H4010_top to Bmsy/SSB_unf - echoinput << H4010_top_rd << " # echoed control rule inflection" << endl; - *(ad_comm::global_datafile) >> H4010_bot; - echoinput << H4010_bot << " # echoed control rule cutoff " << endl; - *(ad_comm::global_datafile) >> H4010_scale_rd; - H4010_scale = H4010_scale_rd; - echoinput << H4010_scale << " # echoed control rule scalar " << endl; - if (H4010_top_rd > 0.0 && H4010_top_rd <= H4010_bot) - { - warnstream << "control rule inflection: " << H4010_top_rd << " must be > control rule cutoff " << H4010_bot; - write_message(FATAL, 0); - } - if (H4010_scale > 1.0) - { - warnstream << "Sure you want control rule scalar > 1.0? " << H4010_scale; - write_message(WARN, 0); - } - - if (H4010_scale < 0.0) - { - echoinput << "# now read pairs of year,H4010scale; each read fills from that year to YrMax; end with year<0.0 " << endl; - ender = 0; - do - { - dvector tempvec(1, 2); - *(ad_comm::global_datafile) >> tempvec(1, 2); - if (tempvec(1) < 0.0) - ender = 1; - H4010_scale_vec_rd.push_back(tempvec(1, 2)); - echoinput << " H4010 read: " << tempvec(1, 2) << endl; - } while (ender == 0); - } - - echoinput << endl - << "# next enter 2 values that control looping through the forecast (see manual), then 3 additional controls" << endl; - echoinput << "# first does F_msy or proxy; 2nd applies control rule; 3rd applies caps and allocations" << endl; - *(ad_comm::global_datafile) >> Fcast_Loop_Control(1, 5); - echoinput << Fcast_Loop_Control(1) << " #echo: N forecast loops (1-3) (recommend 3 to get full variance for short-term forecasts)" << endl; - echoinput << Fcast_Loop_Control(2) << " #echo: First forecast loop with stochastic recruitment (recommend 3)" << endl; - echoinput << Fcast_Loop_Control(3) << " #echo: Forecast base recruitment: 0=spawn_recr; 1=mult*spawn_recr; 2=mult*VirginRecr; 3=deprecated; 4=mult*mean from yr range" << endl; - if (Fcast_Loop_Control(3) == 3) - { - echoinput << "Option 3 deprecated, converting to option 4 for mean recruitment. Use mean over year range controls for recrdist" << endl; - warnstream << "Option 3 for mean forecast recruitment is deprecated. Changing to option 4. User can do recrdist with new fcast year controls"; - write_message(ADJUST, 0); - Fcast_Loop_Control(3) = 4; - Fcast_Loop_Control(4) = 1.0; // safeguard in case user had value here - } - if (Fcast_Loop_Control(3) == 4) - { - echoinput << "Forecast base recruitment is mean from years: " << Fcast_Rec_yr1 << " to " << Fcast_Rec_yr2 << " recrdist from parameters, or mean fcast year controls" << endl; - } - else if (Fcast_Loop_Control(3) < 0) // input probably was a -1 from pre 3.30.15, so convert to 0 - { - Fcast_Loop_Control(3) = 0; - Fcast_Loop_Control(4) = 1.0; - } - if (Fcast_Loop_Control(3) > 0) - { - echoinput << Fcast_Loop_Control(4) << "#echo: multiplier on forecast base recruitment" << endl; - echoinput << "forecast devs will be applied after the multiplier," << endl << - "even when the base is set to the mean of earlier recruitments" << endl; - } - - if (Fcast_Loop_Control(5) <= 0) // default before 3.30.24 - { - echoinput << "basis for HCR anchor was not set; setting to 2 to match default before 3.30.24" << endl; - warnstream << "basis for HCR anchor was not set; setting to 2 to match default before 3.30.24"; - write_message(ADJUST, 0); - Fcast_Loop_Control(5) = 2; - } - if (H4010_top_rd < 0) // convert old legacy approach to new approach for using Bmsy - { - Fcast_Loop_Control(5) = 3; - H4010_top_rd = 1.0; - } - echoinput << Fcast_Loop_Control(5) << " #control rule anchor: 1=virgin_SSB; 2=unfished_benchmark_SSB(old_approach); 3=Bmsy" << endl; - if (depletion_basis == 1 && Fcast_Loop_Control(5) == 2) - { - warnstream << "depletion_basis is using virgin but HCR anchor is using SSB_unf from benchmark. Are you sure?"; - write_message(WARN, 0); - } - - echoinput << "#next enter year in which Fcast loop 3 caps and allocations begin to be applied" << endl; - *(ad_comm::global_datafile) >> Fcast_Cap_FirstYear; - echoinput << Fcast_Cap_FirstYear << " # echoed value" << endl; - - echoinput << endl - << "#next enter 0, or stddev of implementation error" << endl; - *(ad_comm::global_datafile) >> Impl_Error_Std; - echoinput << Impl_Error_Std << " # echoed value" << endl; - if (Impl_Error_Std > 0.0) { - if (Do_Forecast_rd > 0) { - Do_Impl_Error = 1; // OK to do impl error because forecast occurs - } - else - { - warnstream << "changing Imple_Error to 0 because no forecast "; - write_message(WARN, 1); - Impl_Error_Std = 0.0; - Do_Impl_Error = 0; - } - } - - echoinput << endl - << "#next select rebuilding program output: 0=no; 1=yes" << endl; - *(ad_comm::global_datafile) >> Do_Rebuilder; - echoinput << Do_Rebuilder << " # echoed value" << endl; - - echoinput << endl - << "#next select rebuilding program: year declared overfished" << endl; - *(ad_comm::global_datafile) >> Rebuild_Ydecl; - echoinput << Rebuild_Ydecl << " # echoed value" << endl; - - echoinput << endl - << "#next select rebuilding program: year rebuilding plan started" << endl; - *(ad_comm::global_datafile) >> Rebuild_Yinit; - echoinput << Rebuild_Yinit << " # echoed value" << endl; - - echoinput << endl - << "#next select fleet relative F: 1=mean over year range read above; 2=read list of seas, fleet, relF below" << endl; - echoinput << "# Note that fleet allocation is used directly as F if Do_Forecast=4 " << endl; - *(ad_comm::global_datafile) >> Fcast_RelF_Basis; - echoinput << Fcast_RelF_Basis << " # echoed value" << endl; - if (Fcast_RelF_Basis < 1 || Fcast_RelF_Basis > 2) { - warnstream << "Fcast_relF_Basis value must be 1 or 2" << endl; - write_message(FATAL, 1); - } - if (Fcast_RelF_Basis == 1 && Fcast_MGparm_ave(11,2) == 0) { - echoinput << "Fcast_relF_Basis = 1 requires that year range is set above" << endl; - warnstream << "Fcast_relF_Basis = 1 requires that year range is set above" << endl; - write_message(FATAL, 1); - - } - - if (Do_Forecast_rd == 4 && Fcast_RelF_Basis == 2) { - warnstream << "Cannot specify forecast fleet relative F because Do_Forecast==4 specifies relative F directly as F;" << endl - << " need to align choice of forecast basis and forecast relative F basis"; - write_message(FATAL, 1); - } - - echoinput << endl - << "#next read Catch Basis for caps and allocations; Same for all fleets" << endl; - echoinput << "2=dead catch bio, 3=retained catch bio, 5= dead catch numbers 6=retained catch numbers" << endl; - *(ad_comm::global_datafile) >> Fcast_Catch_Basis; - echoinput << Fcast_Catch_Basis << " # echoed value" << endl; - if (Fcast_Catch_Basis < 2 || Fcast_Catch_Basis > 6) { - warnstream << "illegal value for Fcast_Catch_Basis"; - write_message(FATAL, 1); - } - - if (Fcast_RelF_Basis == 2) - { - ivector checkfleet(1, Nfleet); - checkfleet.initialize(); - echoinput << endl - << "Fcast_RelF_Basis==2, so now read list of seas, fleet#, relF_value" << endl - << "Terminate with -9999 for season" << endl - << "Will be re-scaled to sum to 1.0" << endl; - ender = 0; - do - { - dvector tempvec(1, 3); - *(ad_comm::global_datafile) >> tempvec(1, 3); - echoinput << tempvec << endl; - if (tempvec(1) == -9999.) - { - ender = 1; - } - else - { - s = int(tempvec(1)); - f = int(tempvec(2)); - if (fleet_type(f) <= 2) - { - Fcast_RelF_Input(s, f) = tempvec(3); - checkfleet(f) = 1; - } - else - { - warnstream << "forecast exit for fleet " << f << " ;cannot set fcast relF for survey fleets"; - write_message(FATAL, 0); - } - } - } while (ender == 0); - echoinput << " fleet relative F by season and fleet as read" << endl - << Fcast_RelF_Input << endl; - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 1 && checkfleet(f) == 0) - { - warnstream << "fleet: " << f << " " << fleetname(f) << " is a fishing fleet but forecast relF not read"; - write_message(WARN, 0); - } - } - } - else - { - } - } - - else // set forecast defaults - { - warnstream << "Forecast=0 or -1, so rest of forecast file will not be read and can be omitted;"; - write_message(WARN, 0); - if (Bmark_RelF_Basis == 2) - { - warnstream << "Fatal stop: no forecast, but bmark set to use fcast"; - write_message(FATAL, 0); - } - if (Do_Forecast == 0) - { - warnstream << "A one year forecast using recent F will be done automatically"; - write_message(WARN, 0); - Do_Forecast = 4; // sets simple forecast; else Do_Forecast==-1 causes no forecast - N_Fcast_Yrs = 1; - YrMax = endyr + 1; - } - else - { - Do_Forecast = -1; // no forecast - N_Fcast_Yrs = 0; - YrMax = endyr; - } - - Fcast_Flevel = 1.; - Fcast_yr = 0; - Fcast_yr_rd = 0; - Fcast_RelF_Basis = 1; - Fcast_Sel_yr1 = endyr; - Fcast_Sel_yr2 = endyr; - Fcast_RelF_yr1 = endyr; - Fcast_RelF_yr2 = endyr; - Fcast_Rec_yr1 = styr; - Fcast_Rec_yr2 = endyr; - HarvestPolicy = 0; - H4010_top_rd = 0.001; - H4010_bot = 0.0001; - H4010_scale_rd = 1.0; - H4010_scale = 1.0; - Fcast_Loop_Control.fill("{2,1,0,0,0}"); - Fcast_Cap_FirstYear = endyr + 1; - Impl_Error_Std = 0.0; - Do_Impl_Error = 0; - Do_Rebuilder = 0; - Rebuild_Ydecl = endyr; - Rebuild_Yinit = endyr; - Fcast_RelF_Basis = 1; - Fcast_Catch_Basis = 2; - } // end of defaults for do_forecast = 0 - // clang-format off - END_CALCS - - matrix Fcast_Catch_Allocation(1,N_Fcast_Yrs,1,Nfleet); // dimension to Nfleet but use only to N alloc groups - vector H4010_scale_vec(endyr+1,YrMax); - - LOCAL_CALCS - // clang-format on - if (Do_Forecast_rd > 0) - { - echoinput << endl - << "# next read list of fleet ID and max annual catch; end with fleet=-9999" << endl; - for (f = 1; f <= Nfleet; f++) - Fcast_MaxFleetCatch(f) = -1; - Fcast_Do_Fleet_Cap = 0; - ender = 0; - do - { - dvector tempvec(1, 2); - *(ad_comm::global_datafile) >> tempvec(1, 2); - echoinput << tempvec << endl; - if (tempvec(1) == -9999.) - { - ender = 1; - } - else - { - f = int(tempvec(1)); - if (fleet_type(f) <= 2) - { - Fcast_MaxFleetCatch(f) = tempvec(2); - } - else - { - warnstream << "exit for fleet " << f << " ; can only set max catch for retained or discard catch fleets"; - write_message(FATAL, 0); - // cout<<" EXIT - see warning "<> tempvec(1, 2); - echoinput << tempvec << endl; - if (tempvec(1) == -9999.) - { - ender = 1; - } - else - { - p = int(tempvec(1)); - Fcast_MaxAreaCatch(p) = tempvec(2); - Fcast_Do_Area_Cap = 1; - } - } while (ender == 0); - echoinput << " processed Max totalcatch by area " << endl - << Fcast_MaxAreaCatch << endl; - - echoinput << endl - << "Read list of fleet ID and assignment to allocation group; end with fleet ID=-9999" << endl; - echoinput << "fishing fleets not assigned to allocation group are processed normally" << endl; - Allocation_Fleet_Assignments.initialize(); - Fcast_Catch_Allocation_Groups = 0; - ender = 0; - do - { - dvector tempvec(1, 2); - *(ad_comm::global_datafile) >> tempvec(1, 2); - echoinput << tempvec << endl; - if (tempvec(1) == -9999.) - { - ender = 1; - } - else - { - f = int(tempvec(1)); - if (fleet_type(f) == 1) - { - Allocation_Fleet_Assignments(f) = tempvec(2); - } - else - { - warnstream << "exit for fleet " << f << " ; can only put retained catch fleets in allocation groups"; - write_message(FATAL, 0); - } - } - } while (ender == 0); - - Fcast_Catch_Allocation_Groups = max(Allocation_Fleet_Assignments); - echoinput << " Processed Fleet allocation group assignments " << endl - << Allocation_Fleet_Assignments << endl; - - Fcast_Catch_Allocation.initialize(); - if (Fcast_Catch_Allocation_Groups > 0) - { - echoinput << "# now read fraction of catch for each identified allocation group " << endl; - ender = 0; - k = Fcast_Catch_Allocation_Groups + 1; - do - { - dvector tempvec(1, k); - *(ad_comm::global_datafile) >> tempvec(1, k); - if (tempvec(1) == -9999.) - ender = 1; - Fcast_Catch_Allocation_list.push_back(tempvec(1, k)); - echoinput << " allocation assignment: " << tempvec(1, k) << endl; - } while (ender == 0); - j = Fcast_Catch_Allocation_list.size() - 1; - - if (j == 0) - { - warnstream << "Error: there are no allocation fractions specified and there are " << Fcast_Catch_Allocation_Groups << " allocation groups"; - write_message(FATAL, 1); - } - - for (k = 0; k <= j - 1; k++) - { - for (y = Fcast_Catch_Allocation_list[k](1) - endyr; y <= N_Fcast_Yrs; y++) // assign input from the input year through last forecast year - { - for (a = 1; a <= Fcast_Catch_Allocation_Groups; a++) - { - Fcast_Catch_Allocation(y, a) = Fcast_Catch_Allocation_list[k](a + 1); - } - } - } - echoinput << "processed allocation groups by year" << endl; - for (y = 1; y <= N_Fcast_Yrs; y++) - { - if (sum(Fcast_Catch_Allocation(y)) == 0.0) - { - warnstream << "Fcast_Catch_allocation is blank for year: " << y + endyr << "; SS3 assigning uniform; can override with input catches"; - write_message(WARN, 0); - } - else - { - Fcast_Catch_Allocation(y) /= sum(Fcast_Catch_Allocation(y)(1, Fcast_Catch_Allocation_Groups)); - } - echoinput << y + endyr << " " << Fcast_Catch_Allocation(y)(1, Fcast_Catch_Allocation_Groups) << endl; - } - } - - *(ad_comm::global_datafile) >> Fcast_InputCatch_Basis; - echoinput << Fcast_InputCatch_Basis << " # basis for input Fcast catch: -1= read with each obs; 2=dead catch; 3=retained catch; 99=input Hrate(F); -1=read fleet/time specific (bio/num units are from fleetunits; note new codes in SSV3.20)" << endl; - k1 = styr + (endyr - styr) * nseas - 1 + nseas + 1; - y = k1 + (N_Fcast_Yrs)*nseas - 1; - if (Fcast_InputCatch_Basis == -1) - { - j = 5; - echoinput << "# year seas fleet catch basis" << endl; - } - else - { - j = 4; - echoinput << "# year seas fleet catch" << endl; - } - - ender = 0; - do - { - dvector tempvec(1, j); - *(ad_comm::global_datafile) >> tempvec(1, j); - if (tempvec(1) == -9999.) - ender = 1; - Fcast_InputCatch_list.push_back(tempvec(1, j)); - echoinput << tempvec << endl; - } while (ender == 0); - N_Fcast_Input_Catches = Fcast_InputCatch_list.size() - 1; - } - else - { - N_Fcast_Input_Catches = 0; - Fcast_InputCatch_Basis = 2; - k1 = 1; - y = 0; - j = 0; - fif = 999; - } - // clang-format off - END_CALCS - - 3darray Fcast_InputCatch(k1,y,1,Nfleet,1,2); // values and basis to be used - matrix Fcast_InputCatch_rd(1,N_Fcast_Input_Catches,1,j); - imatrix Fcast_RelF_special(1,nseas,1,Nfleet); // records whether an input catch or F occurs - - LOCAL_CALCS - // clang-format on - Fcast_InputCatch.initialize(); - Fcast_InputCatch_rd.initialize(); - Fcast_RelF_special.initialize(); - if (Do_Forecast_rd > 0) - { - if (N_Fcast_Input_Catches > 0) - { - for (t = k1; t <= y; t++) - for (f = 1; f <= Nfleet; f++) - { - Fcast_InputCatch(t, f, 1) = -1; - } - - for (i = 0; i <= N_Fcast_Input_Catches - 1; i++) - { - echoinput << i << " " << Fcast_InputCatch_list[i] << endl; - Fcast_InputCatch_rd(i + 1) = Fcast_InputCatch_list[i]; - y = Fcast_InputCatch_rd(i + 1, 1); - s = Fcast_InputCatch_rd(i + 1, 2); - f = Fcast_InputCatch_rd(i + 1, 3); - if (y > endyr && y <= YrMax && fleet_type(f) <= 2) - { - Fcast_RelF_special(s, f) = 1; - t = styr + (y - styr) * nseas + s - 1; - Fcast_InputCatch(t, f, 1) = Fcast_InputCatch_rd(i + 1, 4); - if (y >= Fcast_Cap_FirstYear) - { - warnstream << "Input catches in " << y << " can be overridden by caps or allocations"; - write_message(WARN, 0); - } - if (Fcast_InputCatch_Basis == -1) - { - Fcast_InputCatch(t, f, 2) = Fcast_InputCatch_rd(i + 1, 5); // new method - } - else - { - Fcast_InputCatch(t, f, 2) = Fcast_InputCatch_Basis; // method before 3.24P - } - } - } - } - } - - H4010_scale_vec.initialize(); - if (H4010_scale_rd >= 0.0) - { - echoinput << "fill H4010_scale_vec with single input" << endl; - H4010_scale_vec = H4010_scale_rd; - } - else - { - echoinput << "fill H4010_scale_vec from input list; filling from read year to YrMax for each input" << endl; - j = H4010_scale_vec_rd.size() - 1; - int last_rd_yr; - last_rd_yr = endyr; - for (int s = 0; s <= j - 1; s++) // loop input - { - y = H4010_scale_vec_rd[s](1); - echoinput << H4010_scale_vec_rd[s] << endl; - if (y <= endyr) - { - warnstream << "; " << y << " is <= endyr; set to endyr+1 "; - write_message(WARN, 1); - y = endyr + 1; - } - if (y <= last_rd_yr) - { - warnstream << "; " << y << " is <= last_rd_yr; overwrite will occur "; - write_message(WARN, 1); - } - last_rd_yr = y; - if (y > YrMax) - { - warnstream << "; " << y << " is > YrMax; set to YrMax "; - write_message(WARN, 0); - y = YrMax; - } - for (k = y; k <= YrMax; k++) - { - H4010_scale_vec(k) = H4010_scale_vec_rd[s](2); - } - } - } - echoinput << "H4010_scale: " << H4010_scale_vec << endl; - - if (Do_Rebuilder == 1 && Do_Forecast_rd <= 0) - { - warnstream << "Error: Rebuilder output selected without requesting forecast"; - write_message(FATAL, 0); - } - if (Do_Benchmark == 0) - { - if (Do_Forecast_rd >= 1 && Do_Forecast_rd <= 3) { - Do_Benchmark = 1; - warnstream << "Turn Benchmark on because Forecast needs it"; - write_message(WARN, 0); - } - if (Do_Forecast == 0 && F_std_basis > 0) - { - F_std_basis = 0; - warnstream << "Set F_std_basis=0 because no benchmark or forecast"; - write_message(WARN, 0); - } - if (depletion_basis == 2 || depletion_basis == 6 ) - { - depletion_basis = 1; - warnstream << "Change depletion basis to 1 because benchmarks were not requested"; - write_message(WARN, 0); - } - if (SPR_reporting >= 1 && SPR_reporting <= 3) - { - SPR_reporting = 5; - warnstream << "Change SPR_reporting to 5 (raw %SPR) because benchmarks were not requested"; - write_message(WARN, 0); - } - } - else - { - if (Do_MSY == 0) - { - warnstream << "Setting Do_MSY=1 because benchmarks are on"; - write_message(WARN, 0); - Do_MSY = 1; - } - } - - if (Fcast_Sel_yr1 > Fcast_Sel_yr2) // tagcode these checks seem unnecessary because of checks already done upon reading values - { - warnstream << " Error, Fcast_Sel_Yr1 must be at or before Fcast_Sel_Yr2"; - write_message(FATAL, 1); - } - if (Fcast_Sel_yr1 > endyr || Fcast_Sel_yr1 < styr) - { - warnstream << " Error, Fcast_Sel_Yr1 must be between styr and endyr"; - write_message(FATAL, 1); - } - if (Fcast_Sel_yr2 > endyr || Fcast_Sel_yr2 < styr) - { - warnstream << " Error, Fcast_Sel_Yr2 must be between styr and endyr"; - write_message(FATAL, 1); - } - if (Fcast_Rec_yr1 > Fcast_Rec_yr2) - { - warnstream << " Error, Fcast_Rec_Yr1 must be at or before Fcast_Rec_Yr2"; - write_message(FATAL, 1); - } - if (Fcast_Rec_yr1 > endyr || Fcast_Rec_yr1 < styr) - { - warnstream << " Error, Fcast_Rec_Yr1 must be between styr and endyr"; - write_message(FATAL, 1); - } - if (Fcast_Rec_yr2 > endyr || Fcast_Rec_yr2 < styr) - { - warnstream << " Error, Fcast_Rec_Yr2 must be between styr and endyr"; - write_message(FATAL, 1); - } - - did_MSY = 0; - if (Do_Forecast > 0) - *(ad_comm::global_datafile) >> fif; - - if (Do_Forecast_rd > 0 && fif != 999) - { - warnstream << " Error, must have 999 to verify end of forecast inputs. value: " << fif; - write_message(FATAL, 1); - } - echoinput << " done reading forecast " << endl - << endl; - // if (Do_Forecast == 0) Do_Forecast = 4; - TimeMax_Fcast_std = styr + (max(YrMax, endyr + 50) - styr) * nseas + nseas - 1; - - // redefine ALK_time_max for forecast years longer than 50, but no data past 50 years - j = max(YrMax, endyr + 50); - ALK_time_max = (j - styr + 1) * nseas * N_subseas; // sets maximum size for data array indexing 50 years into forecast - // clang-format off - END_CALCS - - imatrix Show_Time(styr,TimeMax_Fcast_std,1,2) // for each t: shows year, season - imatrix Show_Time2(1,ALK_time_max,1,3) // for each ALK_time: shows year, season, subseas - LOCAL_CALCS - // clang-format on - t = styr - 1; - for (y = styr; y <= max(YrMax, endyr + 50); y++) /* SS_loop: fill Show_Time(t,1) with year value */ - for (s = 1; s <= nseas; s++) /* SS_loop: fill Show_Time(t,2) with season value */ - { - t++; - Show_Time(t, 1) = y; - Show_Time(t, 2) = s; - } - ALK_idx = 0; - for (y = styr; y <= max(YrMax, endyr + 50); y++) - for (s = 1; s <= nseas; s++) - for (subseas = 1; subseas <= N_subseas; subseas++) - { - ALK_idx++; - Show_Time2(ALK_idx, 1) = y; - Show_Time2(ALK_idx, 2) = s; - Show_Time2(ALK_idx, 3) = subseas; - } - // clang-format off - END_CALCS - -// matrix env_data_RD(styr-1,YrMax,1,N_envvar) - vector env_data_mean(1,N_envvar); - vector env_data_stdev(1,N_envvar); - vector env_data_N(1,N_envvar); - ivector env_data_minyr(1,N_envvar); - ivector env_data_maxyr(1,N_envvar); - ivector env_data_do_mean(1,N_envvar); - ivector env_data_do_stdev(1,N_envvar); - - LOCAL_CALCS - // clang-format on - { - env_data_mean.initialize(); - env_data_stdev.initialize(); - env_data_N.initialize(); - env_data_minyr.initialize(); - env_data_maxyr.initialize(); - env_data_do_mean.initialize(); - env_data_do_stdev.initialize(); - - if (N_envdata > 0) - { - env_data_minyr = 9876; - for (i = 0; i <= N_envdata - 1; i++) - { - y = env_temp[i](1); - k = env_temp[i](2); - if (y <= -1) // flag to do_mean so use -2 to get mean but not stdev - { - env_data_do_mean(k) = 1; - } - if (y == -1) // flag to do_stdev - { - env_data_do_stdev(k) = 1; - } - if (y >= (styr - 1) && y <= YrMax) - { - env_data_mean(k) += env_temp[i](3); - env_data_stdev(k) += env_temp[i](3) * env_temp[i](3); - env_data_N(k)++; - env_data_minyr(k) = min(env_data_minyr(k), y); - env_data_maxyr(k) = max(env_data_maxyr(k), y); - } - } - echoinput << " process environmental input data" << endl; - for (k = 1; k <= N_envvar; k++) - { - if (env_data_N(k) > 0) - { - env_data_mean(k) /= env_data_N(k); - } - else - { // no data - } - if (env_data_N(k) > 1) - { - temp = env_data_stdev(k) / (env_data_N(k) - 1.); - env_data_stdev(k) = sqrt(temp - env_data_mean(k) * env_data_mean(k)); - } - else - { // no data - } - echoinput << k << " N " << env_data_N(k) << " min-max year " << env_data_minyr(k) << " " << env_data_maxyr(k) << " mean " << env_data_mean(k) << " stdev " << env_data_stdev(k) << " subtract mean " << env_data_do_mean(k) << " divide stddev " << env_data_do_stdev(k) << endl; - } - } - } - // clang-format off - END_CALCS - - -!!// SS_Label_Info_3.2 #Create complete list of years for STD reporting - ivector STD_Yr_Reverse(styr-2,YrMax); // contains 0/1 for each year to indicate std reporting - ivector STD_Yr_Reverse_Dep(styr-2,YrMax); // contains index number to i'th depletion (e.g. Bratio) std - ivector STD_Yr_Reverse_Ofish(styr-2,YrMax); // ditto - ivector STD_Yr_Reverse_F(styr-2,YrMax); // ditto - int N_STD_Yr_Dep; - int N_STD_Yr_Ofish; - int N_STD_Yr_F; - int N_STD_Mgmt_Quant; - - LOCAL_CALCS - // clang-format on - if (STD_Yr_min < 0 || STD_Yr_min < (styr - 2)) - STD_Yr_min = styr - 2; - if (STD_Yr_max == -1) - STD_Yr_max = endyr + 1; - if (STD_Yr_max == -2) - STD_Yr_max = YrMax; - if (STD_Yr_max > YrMax) - STD_Yr_max = YrMax; - STD_Yr_Reverse.initialize(); - for (y = STD_Yr_min; y <= STD_Yr_max; y++) - { - STD_Yr_Reverse(y) = 1; - } - STD_Yr_Reverse(styr - 2) = 1; - STD_Yr_Reverse(styr - 1) = 1; - STD_Yr_Reverse(styr) = 1; - for (i = 1; i <= N_STD_Yr_RD; i++) - { - if (STD_Yr_RD(i) >= styr && STD_Yr_RD(i) <= YrMax) - { - STD_Yr_Reverse(STD_Yr_RD(i)) = 1; - } - } - N_STD_Yr = sum(STD_Yr_Reverse); // count number of years for which std is requested - - STD_Yr_Reverse_Dep.initialize(); - STD_Yr_Reverse_Ofish.initialize(); - STD_Yr_Reverse_F.initialize(); - j = 0; - N_STD_Yr_Dep = 0; - N_STD_Yr_Ofish = 0; - N_STD_Yr_F = 0; - - echoinput << "SPR_reporting " << SPR_reporting << endl; - echoinput << "F_reporting " << F_reporting << endl; - for (y = styr - 2; y <= YrMax; y++) - { - if (STD_Yr_Reverse(y) > 0) - { - j++; - STD_Yr_Reverse(y) = j; // use for SSB and recruitment - if (y >= styr) - { - // depletion must start in year AFTER first catch. It could vary earlier if recdevs happened enough earlier to change SSBio, but this is not included - if ((depletion_basis > 0 && y > first_catch_yr) || y == endyr) - { - N_STD_Yr_Dep++; - STD_Yr_Reverse_Dep(y) = N_STD_Yr_Dep; - } - if (y <= endyr) - { - if ((SPR_reporting > 0 && totcat(y) > 0.0) || y == endyr) - { - N_STD_Yr_Ofish++; - STD_Yr_Reverse_Ofish(y) = N_STD_Yr_Ofish; - } - if ((F_reporting > 0 && totcat(y) > 0.0) || y == endyr) - { - N_STD_Yr_F++; - STD_Yr_Reverse_F(y) = N_STD_Yr_F; - } - } - else - { - if (SPR_reporting > 0) - { - N_STD_Yr_Ofish++; - STD_Yr_Reverse_Ofish(y) = N_STD_Yr_Ofish; - } - if (F_reporting > 0) - { - N_STD_Yr_F++; - STD_Yr_Reverse_F(y) = N_STD_Yr_F; - } - } - } - } - } - echoinput << "Finished creating STD containers and indexes " << endl - << " STD_SSB_Recr " << STD_Yr_Reverse << endl - << " STD_deplet " << STD_Yr_Reverse_Dep << endl - << " STD_SPR " << STD_Yr_Reverse_Ofish << endl - << " STD_F " << STD_Yr_Reverse_F << endl; - // clang-format off - END_CALCS -// SS_Label_file #4. **SS_readcontrol.tpl** -// SS_Label_file # * read *control_file* named in starter.ss -// SS_Label_file # * define and read needed parameters from model options selected -// SS_Label_file # * creates labels for those parameters -// SS_Label_file # * uses a function found in SS_global, create_timevary(), to create, index and label time-varying parameters; including autogeneration option -// SS_Label_file # * creates and labels derived quantities -// SS_Label_file # * creates covariance matrix -// SS_Label_file # * reads *wt_at_age.ss* if requested -// SS_Label_file # * finish DATA_SECTION - - LOCAL_CALCS - // clang-format on - //********CONTROLS******************************** - // SS_Label_Info_4.0 #Begin Reading from Control File - // /* SS_Label_Flow begin reading from control file */ - ad_comm::change_datafile_name(ctlfilename); - echoinput << endl - << " Begin reading control file " << endl; - cout << " reading from control file" << endl; - ifstream Control_Stream(ctlfilename); // even if the global_datafile name is used, there still is a different logical device created - - // SS_Label_Info_4.1 #Read and store comments at top of control file - k = 0; - N_CC = 0; - while (k == 0) - { - Control_Stream >> readline; // reads the line from input stream - if (length(readline) > 2) - { - checkchar = readline(1); - k = strcmp(checkchar, "#"); - checkchar = readline(1, 2); - j = strcmp(checkchar, "#C"); - if (j == 0) { - N_CC++; - Control_Comments += readline; - } - } - } - // clang-format off - END_CALCS - -// when a parameter is defined and its label (hence usage) is created, -// the value of its min, max, init, prior have not yet been read -// so when it gets created, need to pushback a code to indicate what special conditions affect it -// also may want to save indicator of whether the parameter is multiplier, logit, etc. -// so push_back a code to the ivector Parm_minmax -// and add a string to the adstring_array Parm_info - ivector minmax_types(1,10) // set of canned min-max types - -!!// SS_Label_Info_4.2 #Read info for growth patterns, gender, settlement events, platoons - init_int WTage_rd // 0 means do not read wtatage.ss; 1 means read and use wtatage.ss and also read and use growth parameters - // future option 2 will suppress reading and use of growth -!!echoinput< 0) timevary_MG_firstyr = styr; - init_int N_GP // number of growth patterns (morphs) -!!echoinput< 0) - { - // Remove unnecessary or confusing reports (issue #383) - pick_report_use(8) = "N"; - pick_report_use(27) = "N"; - pick_report_use(31) = "N"; - pick_report_use(38) = "N"; - pick_report_use(42) = "N"; - // Incompatible option, fatal condition - if (nobs_mnwt > 0) - { - warnstream << "expected value for mean body-wt will be from the growth curve, not from empirical wtatage.ss"; - write_message (WARN, 1); - } - } - - if (N_platoon > 1) - { - *(ad_comm::global_datafile) >> sd_ratio_rd; - *(ad_comm::global_datafile) >> platoon_distr; - echoinput << sd_ratio_rd << " sd_ratio_rd" << endl; - echoinput << platoon_distr << " platoon_distr" << endl; - } - else - { - sd_ratio_rd = 1.; - platoon_distr(1) = 1.; - echoinput << " do not read sd_ratio or platoon_distr" << endl; - } - // SS_Label_Info_4.2.1 #Assign distribution among growth platoons if needed - if (platoon_distr(1) < 0.) - { - if (N_platoon == 1) - { - platoon_distr(1) = 1.; - } - else if (N_platoon == 3) - { - platoon_distr.fill("{0.15,0.70,0.15}"); - } - else if (N_platoon == 5) - { - platoon_distr.fill("{0.031, 0.237, 0.464, 0.237, 0.031}"); - } - } - platoon_distr /= sum(platoon_distr); - // calculate stdev values - if (sd_ratio_rd < 0) - { - platoon_sd_ratio = -sd_ratio_rd; - warnstream << "sd_ratio read is < 0, so expecting sd parameter after movement params."; - write_message (NOTE, 1); - } - else - { - platoon_sd_ratio = sd_ratio_rd; - } - if (N_platoon > 1) - { - sd_between_platoon = sqrt(1. / (1. + platoon_sd_ratio * platoon_sd_ratio)); - sd_within_platoon = platoon_sd_ratio * sd_between_platoon; - } - else - { - sd_between_platoon = 0.000001; - sd_within_platoon = 1; - } - - if (N_platoon == 1) - { - ishadow(1) = 0; - shadow(1) = 0.; - } - else if (N_platoon == 3) - { - ishadow.fill_seqadd(-1, 1); - shadow.fill_seqadd(-1., 1.); - } - else if (N_platoon == 5) - { - ishadow.fill_seqadd(-2, 1); - shadow.fill_seqadd(-2., 1.); - } - else - { - warnstream << "illegal N platoons: " << N_platoon << "; must be 1, 3 or 5 " ; - write_message (FATAL, 1); // EXIT! - } - // clang-format off - - END_CALCS - -!!// SS_Label_Info_4.2.2 #Define distribution of recruitment(settlement) among growth patterns, areas, months - - int recr_dist_method // 1=like 3.24 (not used); 2=main effects for GP, Settle timing, Area; 3=each Settle entity; 4=no parms (only if GPXsettleXarea=1) - int recr_dist_area // 1=global SRR; 2=area-specific SRR - int N_settle_assignments // number of assigned settlements for GP, Settle_month, Area (>=0) - int N_settle_assignments_rd // number read, needed to distinguish between ss3.24 and SS3.30 setup - int N_settle_timings // number of recruitment settlement timings per spawning (>=1) - important for number of morphs calculation - // will be calculated from the number of unique settle_months among the settle_assignments - int settle // index to settle_assignments - int settle_time // index to setting timings - int Comp_Err_Parm_Start - int recr_dist_inx - LOCAL_CALCS - // clang-format on - * (ad_comm::global_datafile) >> recr_dist_method; - echoinput << recr_dist_method << " # Recruitment distribution method; where: 2=parms for main effects for GP, Area, Settle timing; 3=one parm for each Settle event" << endl; - *(ad_comm::global_datafile) >> recr_dist_area; - echoinput << recr_dist_area << " # future option for recr_dist_area: 1 is hardwired to do global SRR; 2 in future will do area-specific SRR" << endl; - recr_dist_area = 1; //hardwire for testing - N_settle_assignments_rd = 0; - N_settle_assignments = 1; // default - - switch (recr_dist_method) - { - case 1: - { - *(ad_comm::global_datafile) >> N_settle_assignments_rd; - *(ad_comm::global_datafile) >> recr_dist_inx; - N_settle_assignments = N_settle_assignments_rd; - break; - } - case 2: - { - *(ad_comm::global_datafile) >> N_settle_assignments; - *(ad_comm::global_datafile) >> recr_dist_inx; - break; - } - case 3: - { - *(ad_comm::global_datafile) >> N_settle_assignments; - *(ad_comm::global_datafile) >> recr_dist_inx; - break; - } - case 4: - { - *(ad_comm::global_datafile) >> N_settle_assignments; - *(ad_comm::global_datafile) >> recr_dist_inx; - if (N_settle_assignments > 1) - { - warnstream << "Need to change to recr_dist_method=3 because >1 settle assignments requested"; - write_message (FATAL, 0); // EXIT! - } - break; - } - } - echoinput << N_settle_assignments << " Number of settlement events: GP/area/month to read (>=0) " << endl; - if (recr_dist_method == 1) - { - warnstream << "recr_dist_method cannot be 1 in SS3.30 "; - write_message (FATAL, 0); // EXIT! - } - else if (N_settle_assignments == 1 && recr_dist_method != 4) - { - warnstream << "This model has just one settlement event. Changing to recr_dist_method 4 and removing the recruitment distribution parameters at the end of the MG parms section (below growth parameters) will produce identical results and simplify the model."; - write_message (SUGGEST, 0); - } - else if (recr_dist_method == 2) - { - warnstream << " recr_dist_method 3 is simpler and takes 1 parm for each settlement"; - write_message (SUGGEST, 0); - } - echoinput << recr_dist_inx << " # unused option " << endl; - // clang-format off - END_CALCS - - int birthseas; // is this still needed?? - - matrix settlement_pattern_rd(1,N_settle_assignments,1,4); // for each settlement event: GPat, Month, area, age - ivector settle_assignments_timing(1,N_settle_assignments); // stores the settle_timing index for each assignment - matrix settle_timings_tempvec(1,N_settle_assignments,1,2) // temporary storage for real_month and age of each settlement_timing - // dimensioned by assignments, but only uses N_settle_timings of these - LOCAL_CALCS - // clang-format on - *(ad_comm::global_datafile) >> - settlement_pattern_rd; - echoinput << " settlement pattern as read " << endl - << "GPat Month Area Age" << endl - << "*" << settlement_pattern_rd << "*" << endl; - echoinput << "Now calculate the number of unique settle timings, which will dictate the number of recr_dist_timing parameters " << endl; - N_settle_timings = 0; - settle_timings_tempvec.initialize(); - if (N_settle_assignments == 0) - { - N_settle_timings = 1; - settle_timings_tempvec(1, 1) = 1.0; - settle_timings_tempvec(1, 2) = 0; - } - else - { - for (settle = 1; settle <= N_settle_assignments; settle++) - { - real_month = settlement_pattern_rd(settle, 2); - int settle_age_here = settlement_pattern_rd(settle, 4); - if (N_settle_timings == 0) - { - N_settle_timings++; - settle_timings_tempvec(N_settle_timings, 1) = real_month; - settle_timings_tempvec(N_settle_timings, 2) = settle_age_here; - settle_assignments_timing(settle) = N_settle_timings; - } - else - { - k = 0; - for (j = 1; j <= N_settle_timings; j++) - { - if (settle_timings_tempvec(j, 1) == real_month && settle_timings_tempvec(j, 2) == settle_age_here) // found matching settle_time - { - settle_assignments_timing(settle) = j; - k = 1; - } - } - if (k == 0) - { - N_settle_timings++; - settle_timings_tempvec(N_settle_timings, 1) = real_month; - settle_timings_tempvec(N_settle_timings, 2) = settle_age_here; - settle_assignments_timing(settle) = N_settle_timings; - } - } - } - } - echoinput << "N settle timings: " << N_settle_timings << endl - << " unique_settle_times: " << endl - << settle_timings_tempvec << endl; - echoinput << "settle events use these settle_times: " << settle_assignments_timing << endl; - - if (recr_dist_method == 2) - { - echoinput << " Need to read N_GP * Narea * N_settletimings=" << N_GP * pop * N_settle_timings << " recruitment distribution parameters " << endl; - } - else if (recr_dist_method == 3) - { - echoinput << " Need to read N_settle_assignments=" << N_settle_assignments << " recruitment distribution parameters " << endl; - } - - // SS_Label_Info_4.2.3 #Set-up arrays and indexing for growth patterns, gender, settlements, platoons - // clang-format off - END_CALCS - int g3i; -// SPAWN-RECR: define settlement timings - ivector Settle_seas(1,N_settle_timings) // calculated season in which settlement occurs - ivector Settle_seas_offset(1,N_settle_timings) // calculated number of seasons between spawning and the season in which settlement occurs - vector Settle_timing_seas(1,N_settle_timings) // calculated elapsed time (frac of year) between settlement and the begin of season in which it occurs - vector Settle_month(1,N_settle_timings) // month (real)in which settlement occurs - ivector Settle_age(1,N_settle_timings) // calculated age at which settlement occurs, with age 0 being the year in which spawning occurs - 3iarray recr_dist_pattern(1,N_GP,1,N_settle_timings,0,pop); // has flag to indicate each settlement events - - LOCAL_CALCS - // clang-format on - Settle_seas_offset.initialize(); - Settle_timing_seas.initialize(); - Settle_age.initialize(); - Settle_seas.initialize(); - recr_dist_pattern.initialize(); - - echoinput << "Calculated assignments in which settlement occurs " << endl - << "Settle_event / Month / Seas / Seas_from_spawn / time_from_seas_start / age_at_settle" << endl; - if (N_settle_assignments > 0) - { - for (settle = 1; settle <= N_settle_assignments; settle++) - { - gp = settlement_pattern_rd(settle, 1); // growth patterns - p = settlement_pattern_rd(settle, 3); // settlement area - settle_time = settle_assignments_timing(settle); - Settle_age(settle_time) = settlement_pattern_rd(settle, 4); // settlement age as read - recr_dist_pattern(gp, settle_time, p) = 1; // indicates that settlement will occur here - recr_dist_pattern(gp, settle_time, 0) = 1; // for growth updating - Settle_month(settle_time) = settle_timings_tempvec(settle_time, 1); - } - for (settle_time = 1; settle_time <= N_settle_timings; settle_time++) - { - j = 0; // temp value for calculated settlement age - if (spawn_month > Settle_month(settle_time)) - { - k = 1; - j++; // so sets season 1 as earliest possible settlement at age 1 - } - else - { - k = spawn_seas; // earliest possible season for settlement at age 0 - } - temp = azero_seas(k); // annual elapsed time fraction at begin of this season - Settle_timing_seas(settle_time) = (Settle_month(settle_time) - 1.0) / sumseas; // fraction of year at settlement month - - while ((temp + seasdur(k)) <= Settle_timing_seas(settle_time)) - { - temp += seasdur(k); - if (k == nseas) - { - k = 1; - j++; - } - else - { - k++; - } - } - if (j != Settle_age(settle_time)) - { - warnstream << "settle_month is less than spawn_month, so logical age at settlement calculated to be: " << j - << " for settle_time " << settle_time << ". Does not match read value of " << Settle_age(settle_time) << " are you sure? "; - write_message (NOTE, 0); - } - Settle_seas(settle_time) = k; - Settle_seas_offset(settle_time) = Settle_seas(settle_time) - spawn_seas + j * nseas; // number of seasons between spawning and the season in which settlement occurs - Settle_timing_seas(settle_time) -= temp; // timing from beginning of this season; needed for mortality calculation - echoinput << settle_time << " / " << Settle_month(settle_time); - echoinput << " / " << Settle_seas(settle_time) << " / " << Settle_seas_offset(settle_time) << " / " - << Settle_timing_seas(settle_time) << " / " << Settle_age(settle_time) << endl; - if (Settle_seas_offset(settle_time) == 0 && spawn_time_seas > 0.0) - { - warnstream << "Cannot have spawn_time_seas after beginning of a season and settlements in the same season" << endl - << "++ put spawning at beginning of the season, or move settlements to next season"; - write_message (FATAL, 0); // EXIT! - } - } - } - else - { - recr_dist_pattern(1, 1, 1) = 1; - recr_dist_pattern(1, 1, 0) = 1; - Settle_month(1) = 1.; - Settle_timing_seas(1) = 0.0; - Settle_seas(1) = 1; - Settle_seas_offset(1) = 0; - Settle_age(1) = 0; - } - - gmorph = gender * N_GP * N_settle_timings * N_platoon; // total potential number of biological entities, some may not get used so see use_morph(g) - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.2.1.1 #Define indexing vectors to keep track of characteristics of each morph - ivector sx(1,gmorph) // define sex for each growth morph - ivector GP4(1,gmorph) // index to GPat - ivector GP(1,gmorph) // index for gender*GPat; note that gp is nested inside gender - ivector GP3(1,gmorph) // index for main gender*GPat*settlement - ivector GP2(1,gmorph) // reverse pointer for platoon - imatrix g_finder(1,N_GP,1,gender) // reverse pointer to middle "g" for each main morph (used only with Growth_Std - ivector g_Start(1,N_GP*gender) // base "g" for this growth pattern - ivector Bseas(1,gmorph) // birth season -// following two containers are used to track which morphs are being used - ivector use_morph(1,gmorph) - imatrix TG_use_morph(1,N_TG2,1,gmorph) - imatrix ALK_range_g_lo(1,N_subseas*nseas*gmorph,0,nages) - imatrix ALK_range_g_hi(1,N_subseas*nseas*gmorph,0,nages) - - vector azero_G(1,gmorph); // time since Jan 1 at beginning of settlement in which "g" was born - 3darray real_age(1,gmorph,1,nseas*N_subseas,0,nages); // real age since settlement - 3darray keep_age(1,gmorph,1,nseas*N_subseas,0,nages); // set to 0.0 if real_age<0. this allows omitting virtual young fish to be excluded from expected values - 3darray calen_age(1,gmorph,1,nseas*N_subseas,0,nages); // real age since Jan 1 of spawn year - - 3darray lin_grow(1,gmorph,1,nseas*N_subseas,0,nages) // during linear phase has fraction of Size at Afix - ivector settle_g(1,gmorph) // settlement pattern for each platoon - int ALK_count; - - LOCAL_CALCS - // clang-format on - ALK_count = 0; - - use_morph.initialize(); - TG_use_morph.initialize(); - keep_age.initialize(); - keep_age = 1.0; - - for (gp = 1; gp <= N_GP * gender; gp++) - { - g_Start(gp) = (gp - 1) * N_settle_timings * N_platoon + int(N_platoon / 2) + 1 - N_platoon; // find the mid-morph being processed - } - - g = 0; - g3i = 0; - echoinput << endl - << "MORPH_INDEXING" << endl; - echoinput << "g Sex GP Settlement Birth_Seas Platoon Platoon% Sex*GP Sex*GP*settle_time Used(0/1) SettleTime_frac_yr" << endl; - for (gg = 1; gg <= gender; gg++) - for (gp = 1; gp <= N_GP; gp++) - for (settle = 1; settle <= N_settle_timings; settle++) - { - g3i++; - { - for (gp2 = 1; gp2 <= N_platoon; gp2++) - { - g++; - GP3(g) = g3i; // track counter for main morphs (gender x pattern x settlement) - Bseas(g) = Settle_seas(settle); - sx(g) = gg; - GP(g) = gp + (gg - 1) * N_GP; // counter for pattern x gender so gp is nested inside gender - GP2(g) = gp2; // reverse pointer to platoon counter - GP4(g) = gp; // counter for growth pattern - settle_g(g) = settle; // to find the settlement timing for this platoon - azero_G(g) = (Settle_month(settle) - 1.0) / sumseas; // settlement month converted to fraction of year; could be > one year - for (p = 1; p <= pop; p++) - { - if (recr_dist_pattern(gp, settle, p) == 1) - { - use_morph(g) = 1; - } - } - if (use_morph(g) == 1) - { - if ((N_platoon == 1) || (N_platoon == 3 && gp2 == 2) || (N_platoon == 5 && gp2 == 3)) g_finder(gp, gg) = g; // finds g for a given GP and gender and last birstseason - } - echoinput << g << " " << sx(g) << " " << GP4(g) << " " << settle << " " << Bseas(g) << " " - << GP2(g) << " " << 100. * platoon_distr(GP2(g)) << " " << GP(g) << " " << GP3(g) << " " << use_morph(g) << " " << azero_G(g) << endl; - } - } - } - echoinput << "calen_age is elapsed years since beginning of year in which spawning occurred" << endl; - echoinput << "real_age is elapsed years since settlement" << endl; - echoinput << "g s subseas ALK_idx settle_time age@settle age real_age calen_age" << endl; - calen_age.initialize(); - real_age.initialize(); - keep_age.initialize(); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) == 1) - for (s = 1; s <= nseas; s++) - for (subseas = 1; subseas <= N_subseas; subseas++) - { - ALK_idx = (s - 1) * N_subseas + subseas; - settle_time = settle_g(g); - // real_age is real age since settlement and is used in growth calculations - // calen_age is real age since the beginning of the year in which spawning occurred - for (a = 0; a <= nages; a++) - { - calen_age(g, ALK_idx, a) = r_ages(a) + azero_seas(s) + double(subseas - 1) / double(N_subseas) * seasdur(s); - if (a < Settle_age(settle_time)) - { - real_age(g, ALK_idx, a) = 0.; - keep_age(g, ALK_idx, a) = 0.; - } - else if (a == Settle_age(settle_time)) - { - if (calen_age(g, ALK_idx, a) >= (azero_G(g) + Settle_age(settle_time))) - { - real_age(g, ALK_idx, a) = calen_age(g, ALK_idx, a) - azero_G(g) - Settle_age(settle_time); - keep_age(g, ALK_idx, a) = 1.; - } - else - { - real_age(g, ALK_idx, a) = 0.; - keep_age(g, ALK_idx, a) = 0.; - } - } - else - { - real_age(g, ALK_idx, a) = calen_age(g, ALK_idx, a) - azero_G(g) - Settle_age(settle_time); - keep_age(g, ALK_idx, a) = 1.; - } - if (a < 4) echoinput << g << " " << s << " " << subseas << " " << ALK_idx << " " << settle_time << " " << Settle_age(settle_time) - << " " << a << " " << real_age(g, ALK_idx, a) << " " << calen_age(g, ALK_idx, a) << endl; - } - } - - if (N_TG > 0) - { - for (TG = 1; TG <= N_TG; TG++) - { - for (g = 1; g <= gmorph; g++) - { - if (TG_release(TG, 6) > 2) - { - warnstream << "Gender for tag groups must be 0, 1 or 2 "; - write_message (WARN, 0); - } - if (use_morph(g) > 0 && (TG_release(TG, 6) == 0 || TG_release(TG, 6) == sx(g))) TG_use_morph(TG, g) = 1; - } - } - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.3 #Define movement between areas - int do_migration // number of explicit movements to define - number migr_firstage - matrix migr_start(1,nseas,1,N_GP) - LOCAL_CALCS - // clang-format on - migr_firstage = 0.0; - do_migration = 0; - if (pop > 1) - { - *(ad_comm::global_datafile) >> do_migration; - echoinput << do_migration << " N_migration definitions to read" << endl; - if (do_migration > 0) - { - *(ad_comm::global_datafile) >> migr_firstage; - echoinput << migr_firstage << " migr_firstage" << endl; - } - } - else - { - echoinput << " only 1 area, so no read of do_migration or migr_firstage " << endl; - } - // clang-format off - END_CALCS - init_matrix move_def(1,do_migration,1,6) // seas morph source dest minage maxage -// ivector GP3(1,gmorph) // index for main gender*GPat*settlement in that order -// plan to revise such that movement is by GP3, not GP - 4iarray move_pattern(1,nseas,1,N_GP,1,pop,1,pop) - int do_migr2 - ivector firstBseas(1,N_GP) - - LOCAL_CALCS - // clang-format on - move_pattern.initialize(); - do_migr2 = 0; - if (do_migration > 0) - { - echoinput << " migration setup " << endl - << move_def << endl; - for (k = 1; k <= do_migration; k++) - { - s = move_def(k, 1); - gp = move_def(k, 2); - p = move_def(k, 3); - p2 = move_def(k, 4); - move_pattern(s, gp, p, p2) = k; // save index for definition of this pattern to find the right parameters - } - k = do_migration; - for (s = 1; s <= nseas; s++) - for (gp = 1; gp <= N_GP; gp++) - for (p = 1; p <= pop; p++) - { - if (move_pattern(s, gp, p, p) == 0) { - k++; - move_pattern(s, gp, p, p) = k; - } // no explicit migration for staying in this area, so create implicit - } - - do_migr2 = k; // number of explicit plus implicit movement rates - migr_start.initialize(); - // need to modify so it only does the calc for the first settlement used for each GP??? - for (gp = 1; gp <= N_GP; gp++) - { - // use firstBseas so that the start age of migration is calculated only for the first birthseason used for each GP - firstBseas(gp) = 0; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (GP4(g) == gp && firstBseas(gp) == 0) firstBseas(gp) = Bseas(g); - } - } - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0 && firstBseas(GP4(g)) == Bseas(g)) - { - for (s = 1; s <= nseas; s++) - for (subseas = 1; subseas <= N_subseas; subseas++) - { - a = 0; - ALK_idx = (s - 1) * N_subseas + subseas; - while (real_age(g, ALK_idx, a) < migr_firstage) { - a++; - } - migr_start(s, GP4(g)) = a; - } - } - } - // clang-format off - END_CALCS - matrix move_def2(1,do_migr2,1,6) // movement definitions. First Do_Migration of these are explicit; rest are implicit - - LOCAL_CALCS - // clang-format on - if (do_migration > 0) - { - for (k = 1; k <= do_migration; k++) { - move_def2(k) = move_def(k); - } - k = do_migration; - for (s = 1; s <= nseas; s++) - for (gp = 1; gp <= N_GP; gp++) - for (p = 1; p <= pop; p++) - { - if (move_pattern(s, gp, p, p) > do_migration) - { - k++; - move_def2(k, 1) = s; - move_def2(k, 2) = gp; - move_def2(k, 3) = p; - move_def2(k, 4) = p; - move_def2(k, 5) = 0; - move_def2(k, 6) = nages; - } - } - echoinput << "move_def " << endl - << move_def2 << endl; - } - // clang-format off - END_CALCS - - -!!// SS_Label_Info_4.4 #Define the time blocks for time-varying parameters - int N_Block_Designs // read N block designs - ivector Nblk(1,1) - imatrix Block_Design(1,1,1,1) - LOCAL_CALCS - // clang-format on - * (ad_comm::global_datafile) >> - N_Block_Designs; - echoinput << N_Block_Designs << " N_Block_Designs" << endl; - if (N_Block_Designs > 0) - { - Nblk.deallocate(); - Nblk.allocate(1, N_Block_Designs); - *(ad_comm::global_datafile) >> Nblk(1, N_Block_Designs); - echoinput << Nblk << " N_Blocks_per design" << endl; - - ivector Nblk2; // temporary vector to create ragged array of dimensions for block matrix - Nblk2.allocate(1, N_Block_Designs); - Nblk2 = Nblk + Nblk; - Block_Design.deallocate(); - Block_Design.allocate(1, N_Block_Designs, 1, Nblk2); - bool endyrChk = false; - for (j = 1; j <= N_Block_Designs; j++) - { - *(ad_comm::global_datafile) >> Block_Design(j)(1, Nblk2(j)); - a = -1; - for (k = 1; k <= Nblk(j); k++) - { - a += 2; - b = a + 1; - if (Block_Design(j, b) == -1) - { - Block_Design(j, b) = endyr; - } - else if (Block_Design(j, b) == -2) - { - Block_Design(j, b) = YrMax; - } - // check block year values - if (Block_Design(j, b) > YrMax) - { - if (Block_Design(j, b) < 999) // manual suggests use of 9999, so 999 is safe choice here - { - warnstream << "Block_design:" << j << ", block: " << k << ", ends in: " << Block_Design(j, a + 1) << " reset to YrMax: " << YrMax; - write_message (ADJUST, 0); - } - Block_Design(j, b) = YrMax; - } - if (Block_Design(j, a) < styr - 1) - { - warnstream << "Block:" << j << " " << k << " starts before styr; resetting"; - write_message (ADJUST, 0); - Block_Design(j, a) = styr; - } - if (Block_Design(j, b) < Block_Design(j, a)) - { - warnstream << "Block:" << j << " " << k << " ends before it starts; fatal error"; - write_message (FATAL, 0); // EXIT! - } - if (Block_Design(j, b) < styr - 1) - { - warnstream << "Block:" << j << " " << k << " ends before styr; fatal error"; - write_message (FATAL, 1); // EXIT! - } - if (Block_Design(j, a) > retro_yr + 1) - { - warnstream << "Block:" << j << " " << k << " starts after retroyr+1; should not estimate "; - write_message (WARN, 0); - } - if (Block_Design(j, b) > retro_yr + 1) - { - warnstream << "Block:" << j << " " << k << " ends in: " << Block_Design(j, a + 1) << " after retroyr+1: " << retro_yr + 1; - write_message (WARN, 0); - } - if (Block_Design(j, a) > YrMax) - { - warnstream << "Block:" << j << " " << k << " starts in: " << Block_Design(j, a + 1) << " which is > YrMax: " << YrMax << " fatal error"; - write_message (FATAL, 0); // EXIT! - } - if (Block_Design(j, b) == endyr) - { - endyrChk = true; - } - } - echoinput << " block design #: " << j << " read year pairs: " << Block_Design(j) << endl; - } - if (endyrChk == true) - { - warnstream << "At least one block pattern ends in endyr. Check the output parameter value time series to see if the values in forecast years are as intended."; - write_message (WARN, 0); - } - } - else - { - Nblk.allocate(1, 1); - Block_Design.allocate(1, 1, 1, 1); - } - // clang-format off - END_CALCS - - init_int parm_adjust_method -!! echoinput< 1) N_predparms += N_pred * nseas; - natM_5_opt = 0; - MGparm_point.initialize(); - // 0=1Parm; 1=segmented; 2=Lorenzen; 3=agespecific; 4=agespec with seas interpolate; 5=Maunder_M; 6=Lorenzen range - *(ad_comm::global_datafile) >> natM_type; - echoinput << natM_type << " natM_type" << endl; - switch (natM_type) - { - case 0: - { - N_natMparms = 1; - break; - } - case 1: - { - *(ad_comm::global_datafile) >> N_natMparms; - echoinput << N_natMparms << " N breakpoints " << endl; - NatM_break.deallocate(); - NatM_break.allocate(1, N_natMparms); - *(ad_comm::global_datafile) >> NatM_break(1, N_natMparms); - echoinput << NatM_break << " NatM_age_segment_breaks " << endl; - break; - } - case 2: - { - N_natMparms = 1; - *(ad_comm::global_datafile) >> natM_amin; - echoinput << natM_amin << " natM_A for Lorenzen" << endl; - break; - } - case 3: - { - // same as 4 - } - case 4: - { - N_natMparms = 0; - Age_NatMort.deallocate(); - Age_NatMort.allocate(1, N_GP * gender, 0, nages); - for (gp = 1; gp <= N_GP * gender; gp++) - { - *(ad_comm::global_datafile) >> Age_NatMort(gp)(0, nages); - } - echoinput << " Age_NatMort empirical input: " << endl - << Age_NatMort << endl; - break; - } - case 5: - { - // Maunder et al. age and sex specific M - // A) read in an integer for the method to do maturity Maunder_MatType = 1,2,3 - *(ad_comm::global_datafile) >> natM_5_opt; - echoinput << " Maunder_NatMort option: " << natM_5_opt << endl; - N_natMparms = 4; - if (natM_5_opt == 3) N_natMparms = 6; - // Maunder_Mjuv = natMparms(1,gp); - // Maunder_lambda = natMparms(2,gp); - // Maunder_lmat = natMparms(3,gp); - // Maunder_Mmat = natMparms(4,gp); - // if(natM_5_opt==3){ //use two parameters mat50% and mat_slope. - // Maunder_L50 = natMparms(5,gp); - // Maunder_beta = natMparms(6,gp); - break; - } - case 6: - { - N_natMparms = 1; - *(ad_comm::global_datafile) >> natM_amin; - echoinput << natM_amin << " natM_minage for Lorenzen" << endl; - *(ad_comm::global_datafile) >> natM_amax; - echoinput << natM_amax << " natM_maxage for Lorenzen" << endl; - break; - } - } - // clang-format off - END_CALCS - -// read growth setup - init_int Grow_type // 1=vonbert; 2=Richards; 3=age-specific K ascend; 4=age-specific K descend; 5=age-specific K; 6=read vector(not implemented); 8=growth cessation -!!echoinput<=3 && Grow_type<=5) {do_ageK=1; k=5;} // number of ages for age-specific K - init_vector tempvec5(1,k) - int Age_K_count; - - LOCAL_CALCS - // clang-format on - Age_K_count = 0; - if (k > 0) echoinput << tempvec5 << " # growth specifications: AFIX1 AFIX2 LINF_decay placeholder age-specific_K_ages" << endl; - k1 = 0; - AFIX = 0.; - AFIX2 = 999.; // this value invokes setting Linf equal to the L2 parameter - Linf_decay = 0.0; // initialize - if (Grow_type == 1) - { - N_growparms = 5; - AFIX = tempvec5(1); - AFIX2 = tempvec5(2); - Linf_decay = tempvec5(3); - // tempvec(4) is a placeholder - } - else if (Grow_type == 2 || Grow_type == 8) - { - N_growparms = 6; - AFIX = tempvec5(1); - AFIX2 = tempvec5(2); - Linf_decay = tempvec5(3); - if (Grow_type == 8 && AFIX2 != 999) - { - warnstream << "AFIX2 set to 999 for grow_type==8 because only Linfinity allowed for growth cessation "; - write_message (ADJUST, 0); - AFIX2 = 999.; - } - if (Grow_type == 8 && AFIX != 0.0) - { - warnstream << "AFIX set to 0.0 for grow_type==8; growth cessation "; - write_message (ADJUST, 0); - AFIX2 = 0.0; - } - // tempvec(4) is a placeholder - } - else if (do_ageK == 1) - { - AFIX = tempvec5(1); - AFIX2 = tempvec5(2); - Linf_decay = tempvec5(3); - // tempvec(4) is a placeholder - Age_K_count = tempvec5(5); - echoinput << " read this number of ages for age-specific K " << Age_K_count << endl; - N_growparms = 5 + Age_K_count; - } - else if (Grow_type == 6) // not implemented - { - N_growparms = 2; // for the two CV parameters - k1 = N_GP * gender; // for reading empirical length_at_age - } - - echoinput << " N_growparms " << N_growparms << endl; - AFIX2_forCV = AFIX2; - if (AFIX2_forCV > nages) AFIX2_forCV = nages; - - AFIX_delta = AFIX2 - AFIX; - if (AFIX != 0.0) - { - AFIX_plus = AFIX; - } - else - { - AFIX_plus = 1.0e-06; - } - N_M_Grow_parms = N_natMparms + N_growparms; - lin_grow.initialize(); - - echoinput << "g a seas subseas ALK_idx real_age calen_age lin_grow first_grow_age" << endl; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (a = 0; a <= nages; a++) - { - for (s = 1; s <= nseas; s++) - for (subseas = 1; subseas <= N_subseas; subseas++) - { - ALK_idx = (s - 1) * N_subseas + subseas; - // if(a==0 && s0) echoinput<<"Age-specific_K_points"<0) echoinput<<" Len_At_Age_rd"< 1) - { - if (Grow_type == 3) - { - for (j = 2; j <= Age_K_count; j++) - { - if (Age_K_points(j) <= Age_K_points(j - 1)) - { - warnstream << "Age K points must be unique and ascending order "; - write_message (FATAL, 0); // EXIT! - } - } - } - else if (Grow_type == 4 || Grow_type == 5) - { - for (j = 2; j <= Age_K_count; j++) - { - if (Age_K_points(j) >= Age_K_points(j - 1)) - { - warnstream << "Age K points must be unique and decending order "; - write_message (FATAL, 0); // EXIT! - } - } - } - } - Grow_logN = 0; - switch (CV_depvar) - { - case 0: - { - CV_depvar_a = 0; - CV_depvar_b = 0; - break; - } - case 1: - { - CV_depvar_a = 1; - CV_depvar_b = 0; - break; - } - case 2: - { - CV_depvar_a = 0; - CV_depvar_b = 1; - break; - } - case 3: - { - CV_depvar_a = 1; - CV_depvar_b = 1; - break; - } - case 4: - { - CV_depvar_a = 1; - CV_depvar_b = 1; - Grow_logN = 1; - break; - } - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.5.2 #Process biology - int do_fec_len // switch based on maturity option to trigger fecundity calcs - init_int Maturity_Option // 1=length logistic; 2=age logistic; 3=read age-maturity - // 4=read age-fecundity; 5=read age-fec from wtatage.ss; 6=read length-maturity - // options 1, 2, 3, 6 can be used with fecundity options to create fecundity-at-age: fec(g) - // options 4 and 5 read fecundity directly, so the concept of maturity is not defined - LOCAL_CALCS - // clang-format on - echoinput << Maturity_Option << " Maturity_Option" << endl; - if (Maturity_Option == 3 || Maturity_Option == 4) - { - k1 = N_GP; - } - else - { - k1 = 0; - } - if (Maturity_Option == 6) - { - k2 = N_GP; - } - else - { - k2 = 0; - } - if (Maturity_Option == 4 || Maturity_Option == 5) { - do_fec_len = 0; - } - else { - do_fec_len = 1; - } - - if (Maturity_Option == 5) - { - echoinput << " fecundity and weight at age to be read from file: wtatage.ss" << endl; - if (WTage_rd == 0) - { - warnstream << "Must set WTage_rd to 1 to use wtatage.ss"; - write_message (FATAL, 0); // EXIT! - } - } - // clang-format off - END_CALCS - init_matrix Age_Maturity(1,k1,0,nages) // for maturity option 3 or 4 - init_matrix Length_Maturity(1,k2,1,nlength) // for maturity option 6 -!!if(k1>0) echoinput<<" read Age_Maturity(3) or Age_Fecundity(4) for each GP"<0) echoinput<<" read Length_Maturity for each GP"<5) {warnstream<<"Illegal fecundity option: "<> Hermaphro_Option; - echoinput << Hermaphro_Option << " Hermaphro_Option: 0 means No; 1 for F to M; -1 for M to F" << endl; - if (Hermaphro_Option != 0) - { - *(ad_comm::global_datafile) >> Hermaphro_seas_rd; // -1 for all seasons, or integer for particular season <=nseas - echoinput << Hermaphro_seas_rd << endl; - Hermaphro_seas = int(Hermaphro_seas_rd); - - // fractional part of Hermaphro_seas will be converted to the first age that switches - if (Hermaphro_seas_rd > 0) { - Hermaphro_firstage = int((Hermaphro_seas_rd - Hermaphro_seas) * 10.0 + 1.0e-6); - } - else - { - Hermaphro_firstage = int((abs(Hermaphro_seas_rd) - 1) * 10.0 + 1.0e-6); - } - // so 2.3 will do switch in season 2 beginning with age 3. - echoinput << Hermaphro_seas << " Hermaphro_season (-1 means all seasons)" << endl; - echoinput << Hermaphro_firstage << " Hermaphro_firstage (from decimal part of seas input; note that firstage can only be a single digit, so 9 is max" << endl; - *(ad_comm::global_datafile) >> Hermaphro_maleSSB; // read as a fraction (0.0 to 1.0) of the male SSB added into the total SSB - echoinput << Hermaphro_maleSSB << " Hermaphro_maleSSB " << endl; - } - // clang-format off - END_CALCS -// if Hermaphro_Option=1, then read 3 parameters for switch from female to male by age -// if Hermaphro_Option=-1, then read 3 parameters for switch from male to female by age -// FUTURE if Hermaphro_Option=2, then read 3 parameters for switch from female to male by age for each GrowPattern -// FUTURE if Hermaphro_Option=3, then read 3 parameters for switch from female to male by length -// FUTURE if Hermaphro_Option=4, then read 3 parameters for switch from female to male by length for each GrowPattern - - init_int MGparm_def // offset approach (1=none, 2= M, G, CV_G as offset from female-GP1, 3=like SS2 V1.x) -!! echoinput< 3) - { - warnstream << "Illegal parm_adjust_method; must be 1 or 2 or 3 "; - write_message (FATAL, 0); // EXIT! - } - - ParCount = 0; - Parm_minmax.push_back(0); // to start real info at index "1" to align with ParCount - - // retParCount=-1; // for 3.24 -> 3.30 dome-shaped retention replace with ivector N_retparm() - - // SS_Label_Info_4.5.3 #Set up indexing and parameter names for MG parameters - for (gg = 1; gg <= gender; gg++) - { - for (gp = 1; gp <= N_GP; gp++) - { - MGparm_point(gg, gp) = ParCount + 1; // starting pointer - switch (natM_type) - { - case 0: - { - ParCount++; - ParmLabel += "NatM_uniform_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - break; - } - case 1: - { - for (k = 1; k <= N_natMparms; k++) - { - ParCount++; - onenum = " "; - sprintf(onenum, "%d", k); - ParmLabel += "NatM_break_" + onenum + "_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - } - break; - } - case 2: - { - ParCount++; - ParmLabel += "NatM_Lorenzen_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - break; - } - case 5: // new age and maturity specific by Mark Maunder - { - ParCount++; - ParmLabel += "NatM_juv_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - ParCount++; - ParmLabel += "NatM_power_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - ParCount++; - ParmLabel += "NatM_infl_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - ParCount++; - ParmLabel += "NatM_mature_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - if (natM_5_opt == 3) - { - ParCount++; - ParmLabel += "NatM_L50_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - ParCount++; - ParmLabel += "NatM_slope_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - } - break; - } - case 6: - { - ParCount++; - ParmLabel += "NatM_Lorenzen_average" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - break; - } - default: - { - break; - } - } - - switch (Grow_type) - { - case 1: - { - ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(3); - ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(2); - ParmLabel += "VonBert_K_" + GenderLbl(gg) + GP_Lbl(gp); - Parm_info += "val"; - Parm_minmax.push_back(1); - ParCount += 3; - break; - } - case 2: - { - ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "VonBert_K_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "Richards_" + GenderLbl(gg) + GP_Lbl(gp); - ParCount += 4; - break; - } - case 3: - { - ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "VonBert_K_young_" + GenderLbl(gg) + GP_Lbl(gp); - ParCount += 3; - for (a = 1; a <= Age_K_count; a++) - { - ParmLabel += "Age_K_mult_" + GenderLbl(gg) + GP_Lbl(gp) + "_a_" + NumLbl0(Age_K_points(a) + 1); - ParCount++; - } - break; - } - case 4: - { - ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "VonBert_K_old_" + GenderLbl(gg) + GP_Lbl(gp); - ParCount += 3; - for (a = 1; a <= Age_K_count; a++) - { - ParmLabel += "Age_K_mult_" + GenderLbl(gg) + GP_Lbl(gp) + "_a_" + NumLbl0(Age_K_points(a) + 1); - ParCount++; - } - break; - } - case 5: - { - ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "L_at_Amax_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "VonBert_K_old_" + GenderLbl(gg) + GP_Lbl(gp); - ParCount += 3; - for (a = 1; a <= Age_K_count; a++) - { - ParmLabel += "Age_K_each_" + GenderLbl(gg) + GP_Lbl(gp) + "_a_" + NumLbl0(Age_K_points(a) + 1); - ParCount++; - } - break; - } - case 8: - { - ParmLabel += "L_at_Amin_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "Linf_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "VonBert_K_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "Cessation_" + GenderLbl(gg) + GP_Lbl(gp); - ParCount += 4; - break; - } - } - // init_int CV_depvar // select CV_growth pattern; 0 CV=f(LAA); 1 CV=F(A); 2 SD=F(LAA); 3 SD=F(A); 4 logSD=f(A) - if (CV_depvar <= 1) - { - ParmLabel += "CV_young_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "CV_old_" + GenderLbl(gg) + GP_Lbl(gp); - } - else if (CV_depvar <= 3) - { - ParmLabel += "SD_young_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "SD_old_" + GenderLbl(gg) + GP_Lbl(gp); - } - else - { - ParmLabel += "lnSD_young_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "LnSD_old_" + GenderLbl(gg) + GP_Lbl(gp); - } - - ParCount += 2; - ParmLabel += "Wtlen_1_" + GenderLbl(gg) + GP_Lbl(gp); - ParmLabel += "Wtlen_2_" + GenderLbl(gg) + GP_Lbl(gp); - ParCount += 2; - if (gg == 1) // add parms for maturity and fecundity for females only - { - ParmLabel += "Mat50%_" + GenderLbl(1) + GP_Lbl(gp); - ParmLabel += "Mat_slope_" + GenderLbl(1) + GP_Lbl(gp); - ParCount += 2; - if (Fecund_Option == 1) - { - ParmLabel += "Eggs/kg_inter_" + GenderLbl(1) + GP_Lbl(gp); - ParmLabel += "Eggs/kg_slope_wt_" + GenderLbl(1) + GP_Lbl(gp); - ParCount += 2; - } - else if (Fecund_Option == 2) - { - ParmLabel += "Eggs_scalar_" + GenderLbl(1) + GP_Lbl(gp); - ParmLabel += "Eggs_exp_len_" + GenderLbl(1) + GP_Lbl(gp); - ParCount += 2; - } - else if (Fecund_Option == 3) - { - ParmLabel += "Eggs_scalar_" + GenderLbl(1) + GP_Lbl(gp); - ParmLabel += "Eggs_exp_wt_" + GenderLbl(1) + GP_Lbl(gp); - ParCount += 2; - } - else if (Fecund_Option == 4) - { - ParmLabel += "Eggs_intercept_" + GenderLbl(1) + GP_Lbl(gp); - ParmLabel += "Eggs_slope_len_" + GenderLbl(1) + GP_Lbl(gp); - ParCount += 2; - } - else if (Fecund_Option == 5) - { - ParmLabel += "Eggs_intercept_" + GenderLbl(1) + GP_Lbl(gp); - ParmLabel += "Eggs_slope_Wt_" + GenderLbl(1) + GP_Lbl(gp); - ParCount += 2; - } - } - } - } - - if (Hermaphro_Option == 1 || Hermaphro_Option == -1) - { - MGparm_Hermaphro = ParCount + 1; // pointer to first hermaphroditism parameter - ParmLabel += "Herm_Infl_age"; - ParmLabel += "Herm_stdev"; - ParmLabel += "Herm_asymptote"; - ParCount += 3; - } - recr_dist_parms = ParCount + 1; // pointer to first recruitment distribution parameter - switch (recr_dist_method) - { - case 2: // new method with main effects only - { - for (k = 1; k <= N_GP; k++) { - ParCount++; - ParmLabel += "RecrDist_GP_" + NumLbl(k); - } - for (k = 1; k <= pop; k++) { - ParCount++; - ParmLabel += "RecrDist_Area_" + NumLbl(k); - } - for (k = 1; k <= N_settle_timings; k++) { - ParCount++; - ParmLabel += "RecrDist_month_" + NumLbl(Settle_month(k)); - } - break; - } - case 3: // new method with parm for each settlement - { - for (s = 1; s <= N_settle_assignments; s++) - { - ParCount++; - gp = settlement_pattern_rd(s, 1); // growth patterns - p = settlement_pattern_rd(s, 3); // settlement area - settle_time = settle_assignments_timing(s); - ParmLabel += "RecrDist_GP_" + NumLbl(gp) + "_area_" + NumLbl(p) + "_month_" + NumLbl(Settle_month(settle_time)); - } - break; - } - case 4: // no distribution of recruitments - { - break; - } - } - - MGP_CGD = ParCount + 1; // pointer to cohort growth deviation base parameter - ParCount++; - ParmLabel += "CohortGrowDev"; - - if (do_migration > 0) - { - for (k = 1; k <= do_migration; k++) - { - s = move_def(k, 1); - gp = move_def(k, 2); - p = move_def(k, 3); - p2 = move_def(k, 4); - ParCount++; - ParmLabel += "MoveParm_A_seas_" + NumLbl(s) + GP_Lbl(gp) + "from_" + NumLbl(p) + "to_" + NumLbl(p2); - ParCount++; - ParmLabel += "MoveParm_B_seas_" + NumLbl(s) + GP_Lbl(gp) + "from_" + NumLbl(p) + "to_" + NumLbl(p2); - } - } - - if (N_platoon > 1 && sd_ratio_rd < 0) - { - ParCount ++; - sd_ratio_param_ptr = ParCount; - ParmLabel += "Platoon_SD_Ratio"; - } - - if (Use_AgeKeyZero > 0) - { - AgeKeyParm = ParCount + 1; - for (k = 1; k <= 7; k++) - { - ParCount++; - ParmLabel += "AgeKeyParm" + NumLbl(k); - } - } - - catch_mult_pointer = -1; - j = sum(need_catch_mult); // number of fleets needing a catch multiplier parameter - if (j > 0) { - catch_mult_pointer = ParCount + 1; - } - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - j = fish_fleet_area(0, ff); - if (need_catch_mult(j) == 1) - { - ParCount++; - ParmLabel += "Catch_Mult:_" + NumLbl(j) + "_" + fleetname(j); - } - } - - frac_female_pointer = ParCount + 1; - for (gp = 1; gp <= N_GP; gp++) - { - ParCount++; - ParmLabel += "FracFemale_GP_" + NumLbl(gp); - } - predparm_pointer = -1; - for (int pc = 1; pc <= N_pred; pc++) - { - ParCount++; - predparm_pointer(pc) = ParCount; // first parm for this predator - onenum = " "; - sprintf(onenum, "%d", pc); - ParmLabel += "M2_pred" + onenum; - Parm_info += "val"; - Parm_minmax.push_back(3); - if (nseas > 1) - { - for (s = 1; s <= nseas; s++) - { - ParCount++; - onenum2 = " "; - sprintf(onenum2, "%d", s); - ParmLabel += "M2_pred" + onenum + "_s" + onenum2; - Parm_info += "val"; - Parm_minmax.push_back(3); - } - } - } - predparm_pointer(Nfleet + 1) = ParCount; - echoinput << " predparm pointer" << predparm_pointer << endl; - N_MGparm = ParCount; - // clang-format off - END_CALCS - - init_matrix MGparm_1(1,N_MGparm,1,14) // matrix with natmort and growth parms controls - ivector MGparm_offset(1,N_MGparm) - - LOCAL_CALCS - // clang-format on - //set base parm for cohort growth dev to permissable values - if (MGparm_1(MGP_CGD, 3) == 0 || (MGparm_1(MGP_CGD, 1) == MGparm_1(MGP_CGD, 2))) - { - MGparm_1(MGP_CGD, 1) = 0.1; //min - MGparm_1(MGP_CGD, 2) = 10.; //max - MGparm_1(MGP_CGD, 3) = 1.; //init - MGparm_1(MGP_CGD, 4) = 1.; //prior - MGparm_1(MGP_CGD, 5) = 1.; // prior_sd - MGparm_1(MGP_CGD, 6) = 0.; // prior type - MGparm_1(MGP_CGD, 7) = -1.; // phase - } - - echoinput << " Biology base parameter setup " << N_MGparm << endl; - for (i = 1; i <= N_MGparm; i++) - echoinput << i << " " << MGparm_1(i) << " " << ParmLabel(ParCount - N_MGparm + i) << endl; - - // find MGparms for which the male parameter value is set equal to the female value - // only applies for MGparm_def==1 which is direct estimation (no offsets) - // only for the natmort and growth parameters (not wtlen, fecundity, movement, recr distribution) - MGparm_offset.initialize(); - if (MGparm_def == 1 && gender == 2) - { - gg = 2; // males - for (gp = 1; gp <= N_GP; gp++) - { - Ip = MGparm_point(gg, gp) - 1; - for (j = 1; j <= N_M_Grow_parms; j++) - { - if (MGparm_1(Ip + j, 3) == 0.0 && MGparm_1(Ip + j, 7) < 0) MGparm_offset(Ip + j) = MGparm_point(1, gp) - 1 + j; // save reference to female parm if male value is zero and not estimated - } - } - } - // clang-format off - END_CALCS - - ivector mgp_type(1,N_MGparm) // contains category to parameter (1=natmort; 2=growth; 3=wtlen & fec; 4=recr_dist&femfrac; 5=movement; 6=ageerrorkey; 7=catchmult) - // labels for the types are found in: MGtype_Lbl - LOCAL_CALCS - // clang-format on - gp = 0; - for (gg = 1; gg <= gender; gg++) - for (GPat = 1; GPat <= N_GP; GPat++) - { - gp++; - Ip = MGparm_point(gg, GPat); - mgp_type(Ip, Ip + N_natMparms - 1) = 1; // natmort parms - Ip += N_natMparms; - mgp_type(Ip, Ip + N_growparms - 1) = 2; // growth parms - - // check on estimation of variance parameters for CV_young and CV_old - for (int kk = Ip + N_growparms - 2; kk <= Ip + N_growparms - 1; kk++) - { - if (MGparm_1(kk, 7) > 0) varparm_estimated(1) = 1; - if (MGparm_1(kk, 8) != 0 || MGparm_1(kk, 9) != 0 || MGparm_1(kk, 13) != 0) - { - warnstream << "CV of growth parameters cannot be time-varying"; - write_message (FATAL, 0); // EXIT! - } - } - // if(MGparm_1(Ip+N_growparms-2,7)>0) varparm_estimated(1)=1; // for CV_young - // if(MGparm_1(Ip+N_growparms-1,7)>0) varparm_estimated(1)=1; // for CV_old - - Ip = Ip + N_growparms; - mgp_type(Ip, Ip + 1) = 3; // wtlen - Ip += 2; - if (gg == 1) { - mgp_type(Ip, Ip + 3) = 3; - Ip += 4; - } // maturity and fecundity - } - if (Hermaphro_Option != 0) { - mgp_type(MGparm_Hermaphro, MGparm_Hermaphro + 2) = 3; - } // herma parameters done with wtlen and fecundity - if (recr_dist_method < 4) mgp_type(Ip, MGP_CGD - 1) = 4; // recruit apportionments - mgp_type(MGP_CGD) = 2; // cohort growth dev - if (do_migration > 0) mgp_type(MGP_CGD + 1, N_MGparm) = 5; // note that it fills until end of MGparm list, but some get overwritten - if (N_platoon > 1 && sd_ratio_rd < 0) mgp_type(sd_ratio_param_ptr) = 2; - if (Use_AgeKeyZero > 0) mgp_type(AgeKeyParm, N_MGparm) = 6; - if (catch_mult_pointer > 0) mgp_type(catch_mult_pointer, N_MGparm) = 7; - for (f = frac_female_pointer; f <= frac_female_pointer + N_GP - 1; f++) mgp_type(f) = 4; - if (N_pred > 0) mgp_type(predparm_pointer(1), predparm_pointer(1) + N_predparms - 1) = 1; - echoinput << "mgparm_type for each parm:"< 0) // env variable used - { - timevary_setup(7) = int(abs(MGparm_1(j, 8))) - k * 100; - k = timevary_setup(7); - // for(y=styr-1;y<=YrMax;y++) env_data_pass(y)=env_data_RD(y,k); - env_data_pass(1) = env_data_minyr(k); - env_data_pass(2) = env_data_maxyr(k); - } - else if (abs(MGparm_1(j, 8) > 0)) // density-dependence - { - timevary_setup(7) = -int(abs(MGparm_1(j, 8)) - k * 100); - do_densitydependent = 1; - echoinput << "Density-dependent flag for MGparms " << do_densitydependent << " MGparm: " << j << endl; - k = 0; - env_data_pass.initialize(); - } - - if (z > 0) // doing blocks - { - if (z > N_Block_Designs) - { - warnstream << "MG block request exceeds N_block patterns"; - write_message (FATAL, 0); // EXIT! - } - create_timevary(MGparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), mgp_type(j), Block_Design(z), env_data_pass, N_parm_dev, finish_starter); - } - else - { - create_timevary(MGparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), mgp_type(j), block_design_null, env_data_pass, N_parm_dev, finish_starter); - } - timevary_def.push_back(timevary_setup(1, 14)); - for (y = styr - 3; y <= YrMax + 1; y++) { - timevary_MG(y, mgp_type(j)) = timevary_pass(y); - } // year vector for this category of MGparm - if (j == MGP_CGD) CGD_onoff = 1; - if (mgp_type(j) == 6) // doing time-vary age-age' key; can only use blocks - { - store_agekey_add = Nblk(z) + 2; // additional storage space for block-based Age error keys - } - } - } - if (timevary_used == 1) autogen_timevary(1) = 1; // indicate that some parameter is time-varying - timevary_parm_cnt_MG = timevary_parm_cnt; - - // SS_Label_Info_4.5.9 #Set up random deviations for MG parms - // NOTE: the parms for the se of the devs are part of the MGparm2 list above, not the dev list below - - // SS_Label_Info_4.5.95 #Populate time_bio_category array defining when biology changes - k = YrMax + 1; - echoinput << "Display timevary_MG flag" << endl; - for (y = styr + 1; y <= YrMax; y++) - { - if (timevary_MG(y, 2) > 0 && y < k) k = y; - } - if (k < YrMax + 1) - { - for (y = k; y <= YrMax + 1; y++) - { - timevary_MG(y, 2) = 1; - } - } - for (y = styr - 1; y <= YrMax; y++) - { - for (f = 1; f <= 7; f++) - { - if (timevary_MG(y, f) > 0) - { - MG_active(f) = 1; - timevary_MG(y, 0) = 1; // tracks active status for all MG types - if(timevary_MG_firstyr == YrMax) timevary_MG_firstyr = y; // save for reporting in MSY and spawn_recruit output - } - } - - // timevary growth or maturity and Maunder M refers to that maturity - if ((timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0) && natM_type == 5 && natM_5_opt < 3) timevary_MG(y, 1) = 1; - - echoinput << y << " timevary_MG: " << timevary_MG(y) << endl; - } - - if( timevary_MG_firstyr < YrMax || WTage_rd == 1) // time-varying biology - { - if( timevary_bio_4SRR == 0) // legacy approach; this switch is read from starter.ss - { - warnstream << "There is timevary biology and the legacy approach to benchmark calculations is being used; user should be aware of possible impacts to benchmark results"; - write_message(WARN, 0); - if( timevary_bio_4SRR_rd == -1) // older starter file did not contain necessary flag - { - warnstream << "There is timevary biology, so the flag for timevary_bio_4SRR must be set to 0 (old default) or 1 (new improved) in starter.ss"; -// make this a WARN while testing, then change to FATAL for operational code - write_message(WARN, 0); - } - } - } - - for (y = endyr + 1; y <= YrMax; y++) - { - for (f = 1; f <= 7; f++) - { - if (timevary_MG(y, f) > 0 && Fcast_MGparm_ave(f,2) > 0) - { - warnstream << "mean MGparm for forecast is incompatible with timevary parm in forecast yr: " << y << "; for type: " << f << " " << MGtype_Lbl(f) << "; SS3 will disable time-vary"; - write_message(WARN, 0); - timevary_MG(y, f) = 0; - } - } - } - - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.5.7 #Set up seasonal effects for MG parms - init_ivector MGparm_seas_effects(1,10) // femwtlen1, femwtlen2, mat1, mat2, fec1 fec2 Malewtlen1, malewtlen2 L1 K - int MGparm_doseas - int N_MGparm_seas // number of MGparms that use seasonal effects - LOCAL_CALCS - // clang-format on - echoinput - << "seasonal effects as read: " << MGparm_seas_effects << endl; - adstring_array MGseasLbl; - MGseasLbl += "F-WL1" + CRLF(1); - MGseasLbl += "F-WL2" + CRLF(1); - MGseasLbl += "F-Mat1" + CRLF(1); - MGseasLbl += "F-Mat1" + CRLF(1); - MGseasLbl += "F-Fec1" + CRLF(1); - MGseasLbl += "F-Fec1" + CRLF(1); - MGseasLbl += "M-WL1" + CRLF(1); - MGseasLbl += "M-WL2" + CRLF(1); - MGseasLbl += "L1" + CRLF(1); - MGseasLbl += "VBK" + CRLF(1); - MGparm_doseas = sum(MGparm_seas_effects); - N_MGparm_seas = 0; // counter for assigned parms - if (MGparm_doseas > 0) - { - for (j = 1; j <= 10; j++) - { - if (MGparm_seas_effects(j) > 0) - { - MGparm_seas_effects(j) = N_MGparm + timevary_parm_cnt_MG + N_MGparm_seas; // store base parameter count - for (s = 1; s <= nseas; s++) - { - N_MGparm_seas++; - ParCount++; - ParmLabel += MGseasLbl(j) + "_seas_" + NumLbl(s); - } - } - } - echoinput << MGparm_seas_effects << " MGparm_seas_effects" << endl; - } - // clang-format off - END_CALCS - init_matrix MGparm_seas_1(1,N_MGparm_seas,1,7) // read matrix that defines the seasonal parms -!!if(N_MGparm_seas>0) echoinput<<" MGparm_seas"< 0) - { - MG_active(mgp_type(f)) = 1; - } - } - if ((natM_type == 2 || natM_type == 6) && MG_active(2) > 0) - { - MG_active(1) = 1; // lorenzen M depends on growth - } - - j = N_MGparm; - if (timevary_parm_cnt_MG > 0) - for (f = timevary_parm_start_MG; f <= timevary_parm_cnt_MG; f++) - { - j++; - MGparm_LO(j) = timevary_parm_rd[f](1); - MGparm_HI(j) = timevary_parm_rd[f](2); - MGparm_RD(j) = timevary_parm_rd[f](3); - MGparm_PR(j) = timevary_parm_rd[f](4); - MGparm_CV(j) = timevary_parm_rd[f](5); - MGparm_PRtype(j) = timevary_parm_rd[f](6); - MGparm_PH(j) = timevary_parm_rd[f](7); - } - - if (N_MGparm_seas > 0) - for (f = 1; f <= N_MGparm_seas; f++) - { - j++; - MGparm_LO(j) = MGparm_seas_1(f, 1); - MGparm_HI(j) = MGparm_seas_1(f, 2); - MGparm_RD(j) = MGparm_seas_1(f, 3); - MGparm_PR(j) = MGparm_seas_1(f, 4); - MGparm_CV(j) = MGparm_seas_1(f, 5); - MGparm_PRtype(j) = MGparm_seas_1(f, 6); - MGparm_PH(j) = MGparm_seas_1(f, 7); - } - MG_active(0) = sum(MG_active(1, 7)); - echoinput << "MG_active " << MG_active << endl; - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.6 #Read setup for Spawner-Recruitment parameters - // SPAWN-RECR: read setup for SR parameters: LO, HI, INIT, PRIOR, PRtype, CV, PHASE - init_int SR_fxn -!!echoinput< 0) varparm_estimated(2) = 1; // sigmaR is estimated so need sd_offset=1 - - if (SRparm_1(N_SRparm2, 3) != 0.0 || SRparm_1(N_SRparm2, 7) > 0) - { - SR_autocorr = 1; - } - else - { - SR_autocorr = 0; - } - // flag for recruitment autocorrelation - echoinput << " Do recruitment_autocorr: " << SR_autocorr << endl; - - // note that the regime parameter seems to bypass use of timevary_SRparm, but timevary_SRparm is used for R0, h beginning 3.30.24 - timevary_used = 0; - for (j = 1; j <= N_SRparm2 - 1; j++) // so omits autocorr - if (j != N_SRparm2 - 2) // because sigmaR cannot be time-varying - { - if (SRparm_1(j, 13) == 0 && SRparm_1(j, 8) == 0 && SRparm_1(j, 9) == 0) - { - // no time-vary parameter effects - } - else // set up a timevary parameter definition - { - timevary_used = 1; - ivector timevary_setup(1, 14); // temporary vector for timevary specs - timevary_setup.initialize(); - if (timevary_SRparm_first == 0) timevary_SRparm_first = timevary_parm_cnt + 1; // cumulative index for first timevary SRparm - echoinput << " timevary for SR parm: " << j << endl; - timevary_cnt++; // count parameters with time-vary effect - SRparm_timevary(j) = timevary_cnt; // base SR parameter will use this timevary specification - timevary_setup(1) = 2; // indicates a SR parm - if (autogen_timevary(2) == 0) - { - echoinput << " timevary SR parms will be autogenerated " << endl; - } - else - { - echoinput << " timevary SR parms will be read, not autogenerated " << endl; - } - timevary_setup(2) = j; // index of base parm within that type of parameter - timevary_setup(13) = firstSRparm + j; // index of base parm relative to ParCount which is continuous across all types of parameters - timevary_setup(3) = timevary_parm_cnt + 1; // first parameter within total list of all timevary parms - timevary_pass = 0; // placeholder; not used for SR parms - // set up env link info - echoinput << " check for env " << SRparm_1(j, 8) << endl; - k = int(abs(SRparm_1(j, 8)) / 100); // find the env link code - timevary_setup(6) = k; // link code for env - if (SRparm_1(j, 8) > 0) // env variable used - { - timevary_setup(7) = int(abs(SRparm_1(j, 8))) - k * 100; - k = timevary_setup(7); - // for(y=styr-1;y<=YrMax;y++) env_data_pass(y)=env_data_RD(y,k); - env_data_pass(1) = env_data_minyr(k); - env_data_pass(2) = env_data_maxyr(k); - } - else if (abs(SRparm_1(j, 8) > 0)) // density-dependence - { - timevary_setup(7) = -int(abs(SRparm_1(j, 8)) - k * 100); - do_densitydependent = 1; - k = 0; - env_data_pass.initialize(); - } - - if (SRparm_1(j, 13) > 0) // doing blocks - { - if (SRparm_1(j, 13) > N_Block_Designs) - { - warnstream << "SR block request exceeds N_block patterns"; - write_message (FATAL, 0); // EXIT! - } - create_timevary(SRparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), f, Block_Design(SRparm_1(j, 13)), env_data_pass, N_parm_dev, finish_starter); - } - else - { - create_timevary(SRparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), f, block_design_null, env_data_pass, N_parm_dev, finish_starter); - } - timevary_def.push_back(timevary_setup(1, 14)); - int SRflag; - SRflag = 0; - for (y = styr - 3; y <= YrMax + 1; y++) - { - if (timevary_pass(y) > 0 && j != N_SRparm2 - 1) - { - timevary_SRparm(y) = timevary_pass(y); // set timevary flag, except for regime parameter - timevary_SRparm_first_yr = y; - SRflag = 1; // first change point - } - else if(SRflag == 1) - { - timevary_SRparm(y) = 2; // flag to carry forward current SRR info - } - } - } - } - - N_SRparm3 = N_SRparm2; - if (timevary_SRparm_first > 0) - { - timevary_parm_SR_last = timevary_parm_cnt; - if (timevary_used == 1) autogen_timevary(2) = 1; // indicate that some parameter is time-varying - N_SRparm3 += (timevary_parm_SR_last - timevary_SRparm_first + 1); - echoinput << " SR timevary_parm_cnt start and end " << timevary_SRparm_first << " " << timevary_parm_SR_last << endl; - echoinput << "link to timevary parms: " << SRparm_timevary << endl; - } - echoinput << "SR_Npar and N_SRparm2 and N_SRparm3: " << N_SRparm(SR_fxn) << " " << N_SRparm2 << " " << N_SRparm3 << endl; - // clang-format off - END_CALCS - - vector SRparm_LO(1,N_SRparm3) - vector SRparm_HI(1,N_SRparm3) - vector SRparm_RD(1,N_SRparm3) - vector SRparm_PR(1,N_SRparm3) - ivector SRparm_PRtype(1,N_SRparm3) - vector SRparm_CV(1,N_SRparm3) - ivector SRparm_PH(1,N_SRparm3) - - LOCAL_CALCS - // clang-format on - for (i = 1; i <= N_SRparm2; i++) - { - SRparm_LO(i) = SRparm_1(i, 1); - SRparm_HI(i) = SRparm_1(i, 2); - SRparm_RD(i) = SRparm_1(i, 3); - SRparm_PR(i) = SRparm_1(i, 4); - SRparm_CV(i) = SRparm_1(i, 5); - SRparm_PRtype(i) = SRparm_1(i, 6); - SRparm_PH(i) = SRparm_1(i, 7); - } - if (timevary_SRparm_first > 0) - { - j = N_SRparm2; - for (f = timevary_SRparm_first; f <= timevary_parm_SR_last; f++) - { - j++; - echoinput << f << " " << j << " " << timevary_parm_rd[f] << endl; - SRparm_LO(j) = timevary_parm_rd[f](1); - SRparm_HI(j) = timevary_parm_rd[f](2); - SRparm_RD(j) = timevary_parm_rd[f](3); - SRparm_PR(j) = timevary_parm_rd[f](4); - SRparm_PRtype(j) = timevary_parm_rd[f](6); - SRparm_CV(j) = timevary_parm_rd[f](5); - SRparm_PH(j) = timevary_parm_rd[f](7); - } - } - echoinput << "SRparm_RD: " << SRparm_RD << endl; - // clang-format off - END_CALCS - - init_int do_recdev // 0=none; 1=devvector; 2=simple deviations; 3=dev from R0 -!!echoinput< 0) - { - recdev_options(1, 13) = recdev_options_rd(1, 13); - recdev_early_start_rd = recdev_options(1); - recdev_early_PH_rd = recdev_options(2); - Fcast_recr_PH_rd = recdev_options(3); - Fcast_recr_lambda = recdev_options(4); - recdev_adj(1) = recdev_options(5); - recdev_adj(2) = recdev_options(6); - recdev_adj(3) = recdev_options(7); - recdev_adj(4) = recdev_options(8); - if (recdev_adj(4) > endyr + 1 && do_recdev > 0) - { - warnstream << "bias adjustment ramp extends into forecast; biasadj set to 0.0 internally for forecast years"; - write_message (WARN, 0); - } - recdev_adj(5) = recdev_options(9); // maxbias adj - - recdev_cycle = recdev_options(10); - recdev_LO = recdev_options(11); - recdev_HI = recdev_options(12); - recdev_read = recdev_options(13); - } - else - { - recdev_early_start_rd = 0; // 0 means no early - recdev_early_end = -1; - recdev_early_PH_rd = -4; - recdev_options(2) = recdev_early_PH_rd; - Fcast_recr_PH_rd = 0; // so will be reset to maxphase+1 - recdev_options(3) = Fcast_recr_PH_rd; - Fcast_recr_lambda = 1.; - recdev_adj(1) = double(styr) - 1000.; - recdev_adj(2) = styr - nages; - recdev_adj(3) = recdev_end; - recdev_adj(4) = double(endyr) + 1.; - recdev_adj(5) = 1.0; - recdev_cycle = 0; - recdev_LO = -5; - recdev_HI = 5; - recdev_read = 0; - } - - recdev_early_start = recdev_early_start_rd; - - if (do_recdev == 0) - { - recdev_PH_rd = -3; - recdev_early_PH_rd = -4; - Fcast_recr_PH_rd = -4; - } - if (recdev_adv > 0) - { - echoinput << "#_start of advanced SR options" << endl; - } - else - { - echoinput << "# advanced options not read; defaults displayed below" << endl; - } - - echoinput << recdev_early_start_rd << " #_recdev_early_start (0=none; neg value makes relative to recdev_start)" << endl; - echoinput << recdev_early_PH_rd << " #_recdev_early_phase" << endl; - echoinput << Fcast_recr_PH_rd << " #_forecast_recruitment phase (incl. late recr) (0 value resets to maxphase+1)" << endl; - echoinput << Fcast_recr_lambda << " #_lambda for Fcast_recr_like occurring before endyr+1" << endl; - if (Fcast_Loop_Control(3) >= 3 && Fcast_recr_PH_rd >= 0) - { - warnstream << "Forecast devs will be applied to mean base recruitment over range of historical years in forecast.ss"; - write_message (NOTE, 0); - } - if (Do_Impl_Error > 0 && Fcast_recr_PH_rd < 0) - { - warnstream << "Implementation error has null effect unless Fcast_recr_PH is >=0"; - write_message (WARN, 0); - } - echoinput << recdev_adj(1) << " #_last_early_yr_nobias_adj_in_MPD" << endl; - echoinput << recdev_adj(2) << " #_first_yr_fullbias_adj_in_MPD" << endl; - echoinput << recdev_adj(3) << " #_last_yr_fullbias_adj_in_MPD" << endl; - echoinput << recdev_adj(4) << " #_first_recent_yr_nobias_adj_in_MPD" << endl; - echoinput << recdev_adj(5) << " #_max_bias_adj_in_MPD" << endl; - echoinput << " #_NOTE: biasadjustment forced to 0.0 after year recdev_end" << endl; - echoinput << recdev_cycle << " # period of cycle in recruitment " << endl; - echoinput << recdev_LO << " #min rec_dev" << endl; - echoinput << recdev_HI << " #max rec_dev" << endl; - echoinput << recdev_read << " #_read_recdevs" << endl; - echoinput << "#_end of advanced SR options" << endl; - - // SS_Label_Info_4.6.3 #Create parm labels for recruitment cycle parameters - if (recdev_cycle > 0) - { - for (y = 1; y <= recdev_cycle; y++) - { - ParCount++; - sprintf(onenum, "%d", y); - ParmLabel += "RecrDev_Cycle_" + onenum + CRLF(1); - } - } - - // SS_Label_Info_4.6.4 #Setup recruitment deviations and create parm labels for each year - if (recdev_end > retro_yr) - { - warnstream << " recdev_end: " << recdev_end << " > retro_yr: " << retro_yr << " reset "; - write_message (ADJUST, 0); - recdev_end = retro_yr; - } - if (recdev_end < endyr && (Fcast_Loop_Control(3) == 3 || Fcast_Loop_Control(3) == 4)) - { - warnstream << "Fcast recr option is 3 or 4 and recdev_end: " << recdev_end << " < endyr: " << endyr << " reset "; - write_message (ADJUST, 0); - recdev_end = endyr; - } - if (recdev_start < (styr - nages)) - { - warnstream << " recdev_start: " << recdev_start << " < styr-nages: " << styr - nages << " reset "; - write_message (ADJUST, 0); - recdev_start = styr - nages; - } - recdev_first = recdev_start; // stores first recdev, whether from the early period or the standard dev period - - if (recdev_early_start >= recdev_start) - { - warnstream << "Cannot set recdev_early_start: " << recdev_early_start << " after main recdev start: " << recdev_start; - write_message (FATAL, 0); // EXIT! - } - else if (recdev_early_start == 0) // do not do early rec devs - { - recdev_do_early = 0; - recdev_early_end = -1; - if (recdev_early_PH_rd > 0) recdev_early_PH_rd = -recdev_early_PH_rd; - } - else - { - if (recdev_early_start < 0) recdev_early_start += recdev_start; // do relative to start of recdevs - recdev_do_early = 1; - if (recdev_early_start < (styr - nages)) - { - recdev_early_start = styr - nages; - warnstream << "Adjusting recdev_early to: " << recdev_early_start; - write_message (ADJUST, 0); - } - if (recdev_start - recdev_early_start < 6) - { - warnstream << "Are you sure you want so few early recrdevs? Better to include in range of main recdevs " << recdev_start - recdev_early_start; - write_message (SUGGEST, 0); - } - - recdev_first = recdev_early_start; // because this is before recdev_start - recdev_early_end = recdev_start - 1; - for (y = recdev_early_start; y <= recdev_early_end; y++) - { - ParCount++; - recdev_doit(y) = 1; - if (y >= styr) - { - sprintf(onenum, "%d", y); - ParmLabel += "Early_RecrDev_" + onenum + CRLF(1); - } - else - { - onenum = " "; - sprintf(onenum, "%d", styr - y); - ParmLabel += "Early_InitAge_" + onenum + CRLF(1); - } - } - } - - if (do_recdev > 0) - { - for (y = recdev_start; y <= recdev_end; y++) - { - ParCount++; - recdev_doit(y) = 1; - - if (y >= styr) - { - sprintf(onenum, "%d", y); - ParmLabel += "Main_RecrDev_" + onenum + CRLF(1); - } - else - { - onenum = " "; - sprintf(onenum, "%d", styr - y); - ParmLabel += "Main_InitAge_" + onenum + CRLF(1); - } - } - } - - if (Do_Forecast > 0) - { - if (do_recdev != 0) { - for (y = recdev_end + 1; y <= YrMax; y++) - { - recdev_doit(y) = 1; - sprintf(onenum, "%d", y); - ParCount++; - if (y > endyr) - { - ParmLabel += "ForeRecr_" + onenum + CRLF(1); - } - else - { - ParmLabel += "Late_RecrDev_" + onenum + CRLF(1); - } - } - } - - if (Do_Impl_Error > 0) { - for (y = endyr + 1; y <= YrMax; y++) - { - sprintf(onenum, "%d", y); - ParCount++; - ParmLabel += "Impl_err_" + onenum + CRLF(1); - } - } - - // check recdev start and end against survey year start and end - for (f = 1; f <=Nfleet; f++) { - if (Svy_units(f) == 31 || Svy_units(f) == 32 || Svy_units(f) == 33 || Svy_units(f) == 36) { // select just recruitment surveys - if (Svy_styr(f) < recdev_first) { - warnstream << "Recruitment survey: " << f << " has data in: " << Svy_styr(f) << ", which is before first early recdev: " << recdev_first << ". Suggest start recdevs earlier"; - write_message (SUGGEST, 0); - } - if (Svy_endyr(f) > recdev_end && Fcast_recr_PH_rd <=0 ) { - warnstream << "Recruitment survey: " << f << " has data in: " << Svy_endyr(f) << ", which is after last main recdev: " << recdev_end << ". Suggest extend recdev_end, or use pos. phase for fore_recruitments: " << Fcast_recr_PH_rd; - write_message (SUGGEST, 0); - } - } - } - - } - - biasadj_full.initialize(); - if (recdev_adj(5) == -1) // all years with estimated recruitments - { - biasadj_full = recdev_doit; - } - else if (recdev_adj(5) == -2) // no ramp - { - biasadj_full(recdev_first, endyr) = recdev_doit(recdev_first, endyr); - } - else if (recdev_adj(5) == -3) // all to 0.0 - { - biasadj_full = 0.0; - } - else - { // do ramp - for (y = styr - nages; y <= YrMax; y++) - { - if (y < recdev_first) // before start of recrdevs - { - biasadj_full(y) = 0.; - } - else if (y <= recdev_adj(1)) - { - biasadj_full(y) = 0.; - } - else if (y <= recdev_adj(2)) - { - biasadj_full(y) = (y - recdev_adj(1)) / (recdev_adj(2) - recdev_adj(1)) * recdev_adj(5); - } - else if (y <= recdev_adj(3)) - { - biasadj_full(y) = recdev_adj(5); - } // max bias adjustment - else if (y <= recdev_adj(4)) - { - biasadj_full(y) = recdev_adj(5) - (y - recdev_adj(3)) / (recdev_adj(4) - recdev_adj(3)) * recdev_adj(5); - } - else - { - biasadj_full(y) = 0.; - } - if (y > endyr) { - biasadj_full(y) = 0.0; - } - } - } - echoinput << "#_recruitment bias adjustment" << endl - << biasadj_full << endl; - ; - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.6.5 #Read recdev_cycle parameters and input recruitment deviations if needed - init_matrix recdev_cycle_parm_RD(1,recdev_cycle,1,14); -!!k=1; -!!if(recdev_cycle>0) k=recdev_cycle; - vector recdev_cycle_LO(1,k); - vector recdev_cycle_HI(1,k); - ivector recdev_cycle_PH(1,k); -!!if(recdev_cycle>0) echoinput<<"recruitment cycle input "<0) echoinput<<"recruitment deviation input "<Fparm_loc[] in global: holds f,t for each element of F_rate vector - ivector Fparm_PH_dim(1,1); // will be redimensioned in param section to (1,N_Fparm) - // the ivector Fparm_PH_dim is populated from the std::vector Fparm_PH defined in global; - // then used to set phase to each F_rate in the parameter vector - // defining F_rate as number_vector allows for phase of elements in F_rate parameter vector to be element specific - // in ss_param: init_bounded_number_vector F_rate(1,k,0.,max_harvest_rate,Fparm_PH_dim) - - - LOCAL_CALCS - // clang-format on - Equ_F_joiner = 10; // defaults - F_detail = -1; - F_Tune = 3; - F_parm_intval = 0.05; // fill vector - - F_Method_PH = 99; // default is to stay in hybrid - F_PH_time.initialize(); - F_PH_time = 99; // so hybrid unless changed - - *(ad_comm::global_datafile) >> F_Method; - echoinput << F_Method << " F_Method as read" << endl; - if (F_Method < 1 || F_Method > 5) - { - warnstream << "F_Method must be 1 or 2 or 3 or 4, value is: " << F_Method; - write_message (FATAL, 0); // EXIT! - } - - *(ad_comm::global_datafile) >> max_harvest_rate; - echoinput << max_harvest_rate << " max_harvest_rate " << endl; - if (F_Method == 1) // Pope's - { - if (max_harvest_rate > 0.999) - { - warnstream << "Max harvest rate must be <1.0 for F_method 1 " << max_harvest_rate; - write_message (FATAL, 0); // EXIT! - } - if (max_harvest_rate <= 0.30) - { - warnstream << "Unexpectedly small value for max harvest rate for F_method 1: " << max_harvest_rate; - write_message (NOTE, 0); - } - Equ_F_joiner = (log(1. / max_harvest_rate - 1.)) / (max_harvest_rate - 0.2); // used to spline the harvest rate - } - else // exponential F - { - if (max_harvest_rate < 1.0) - { - - warnstream << "Max harvest rate typically is >1.0 for F_method 2, 3 or 4 " << max_harvest_rate; - write_message (NOTE, 0); - } - switch (F_Method) - { - case 2: // F as parameter for all fleets - { - *(ad_comm::global_datafile) >> F_parm_intval(1); - *(ad_comm ::global_datafile) >> F_Method_PH(1); // phase to switch from hybrid to parameters - *(ad_comm::global_datafile) >> F_detail; - F_parm_intval = F_parm_intval(1); // copy to rest of fleets - F_Method_PH = F_Method_PH(1); // copy to rest of fleets - F_Tune = 4; - echoinput << F_parm_intval << " starting F value when not starting from hybrid " << endl; - echoinput << F_Method_PH(1) << " Phase to switch from hybrid to parameter " << endl; - echoinput << F_detail << " N_detailed Fsetups to read (later -1 in yr field fills remaining years for that fleet)" << endl; - if (F_detail > 0) { - F_setup2.deallocate(); - F_setup2.allocate(1, F_detail, 1, 6); // fleet, yr, seas, Fvalue, se, phase - *(ad_comm::global_datafile) >> F_setup2; // reads whole table; will be processed later - echoinput << " detailed F_setups " << endl - << F_setup2 << endl; - // add some checks to be sure that a -year record has been read for each fleet with fleet_type<=2 - } - break; - } - case 3: // hybrid for all fleets - { - F_Method_PH = 99; // never switch to parameters - *(ad_comm::global_datafile) >> F_Tune; - echoinput << F_Tune << " N iterations for tuning hybrid F (typically 3-5)" << endl; - break; - } - case 4: // fleet-specific choice for hybrid vs parameters - { - echoinput << "read list of fleet ID, starting F, and phase to transition to parameters" << endl; - // each fleet starts with hybrid then switches to parameter in specified phase - // enter PH = 99 to not create any F parms for the listed fleet (stays in hybrid) - // fishing fleets not listed will use hybrid for all phases - // except bycatch fleets always start with parm in phase 1 - // PH = -1 will keep starting parameter value throughout run - F_Method_PH = 99; // default is to stay in hybrid - ender = 0.; - F_detail = 0; - int byc_count; - byc_count = 0; - dvector tempvec(1, 3); - tempvec.initialize(); - F_Method_4_input.push_back(tempvec(1, 3)); - while (ender >= 0.) - { - dvector tempvec(1, 3); - *(ad_comm::global_datafile) >> tempvec(1, 3); - echoinput << tempvec << endl; - F_Method_4_input.push_back(tempvec(1, 3)); - ender = tempvec(1); - f = int(tempvec(1)); // fleet ID - if (f <= Nfleet && ender > 0) - { - if (fleet_type(f) <= 2) - { - F_parm_intval(f) = tempvec(2); - F_Method_PH(f) = tempvec(3); - if (fleet_type(f) == 2) { - byc_count++; - } // count bycatch fleets listed here to check against number in data file - } - else - { - warnstream << "cannot set FMethod for survey or predator fleet: " << f << " " << fleetname(f); - write_message (FATAL, 0); // EXIT! - } - } - } - if (byc_count != N_bycatch) - { - warnstream << "Not all bycatch fleets have been included in Fparm list"; - write_message (FATAL, 0); // EXIT! - } - echoinput << "now read N tuning loops while in hybrid phases (2 is OK if switching to parm later, 3 OK, 4 more precise with many fleets)" << endl; - *(ad_comm::global_datafile) >> F_Tune; - echoinput << "hybrid tuning loops as read: " << F_Tune << endl; - if (ender == -9998) // flag to trigger reading F_detail for f x t specific F values - { - echoinput << "# now read List of fleet-time specific F related values to read; enter -Yr to fill remaining years&seasons; -999 for phase or catch_se keeps base value for the run; end that list with -1 for fleet" << endl; - echoinput << "#Fleet Yr Seas F_value catch_se phase" << endl; - - dvector tempvec(1, 6); - tempvec.initialize(); - F_detail_input.push_back(tempvec(1, 6)); // fill the nasty zero row - ender = 0.; - F_detail = -1; - while (ender >= 0.) - { - dvector tempvec(1, 6); - *(ad_comm::global_datafile) >> tempvec(1, 6); - echoinput << tempvec << endl; - F_detail_input.push_back(tempvec(1, 6)); - ender = tempvec(1); - F_detail++; - } - F_setup2.deallocate(); - F_setup2.allocate(1, F_detail, 1, 6); // fleet, yr, seas, Fvalue, se, phase - for (j = 1; j <= F_detail; j++) - { - F_setup2(j) = F_detail_input[j]; - } - echoinput << " detailed F_setups " << endl << F_setup2 << endl; - } - break; - } - } - } - // note that the F_setup2 table will be processed to fill F_PH_time after reading init_F inputs - // code flow would be cleaner if F_setup was processed before reading and processing the init_F - // however, for backward compatibility it is necessary to create the init_F parameters before the F parameters - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.7.1 #Read setup for init_F parameters and create init_F parameter labels -// NEW only read for catch fleets with positive initial equ catch - imatrix init_F_loc(1,nseas,1,Nfleet); // pointer to init_F parameter for each fleet - int N_init_F; - int N_init_F2; // for conversion of 3.24 to 3.30 - LOCAL_CALCS - { - // clang-format on - init_F_loc.initialize(); - N_init_F = 0; - N_init_F2 = 0; - - for (s = 1; s <= nseas; s++) - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (obs_equ_catch(s, f) != 0.0) - { - N_init_F++; - init_F_loc(s, f) = N_init_F; - } - N_init_F2 = N_init_F; - } - } - // clang-format off - END_CALCS -!! echoinput<<" ready to read init_F setup for: "< 0) - { - 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_CV = column(init_F_parm_1, 5); - init_F_PRtype = column(init_F_parm_1, 6); - init_F_PH = ivector(column(init_F_parm_1, 7)); - - k = nseas; - - for (s = 1; s <= k; s++) - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (init_F_loc(s, f) > 0) - { - ParCount++; - ParmLabel += "InitF_seas_" + NumLbl(s) + "_flt_" + NumLbl(f) + fleetname(f); - j = init_F_loc(s, f); - if (obs_equ_catch(s, f) <= 0.0) - { - if (init_F_RD(j) > 0.0) - { - warnstream << f << " catch: " << obs_equ_catch(s, f) << " initF: " << init_F_RD(j) << " initF is reset to be 0.0"; - write_message (ADJUST, 0); - } - init_F_RD(j) = 0.0; - init_F_PH(j) = -1; - } - if (obs_equ_catch(s, f) > 0.0 && init_F_RD(j) <= 0.0) - { - warnstream << f << " catch: " << obs_equ_catch(s, f) << " initF: " << init_F_RD(j) << " initF must be >0"; - write_message (FATAL, 0); // EXIT! - } - } - } - } // end processing init_F parameters - - { // begin processing F_setup to create the F parameters - do_Fparm_loc.initialize(); // location in Fparm vector of this fleet x time F; location defined even for hybrid - - Fparm_start = ParCount; // beginning of Fparms in total parameter list for tracking of parameter labels - N_Fparm = 0; - - ivector tempin(1, 2); - tempin.initialize(); - Fparm_loc.push_back(tempin(1, 2)); - Fparm_PH.push_back(0); - - if (F_Method == 1 || F_Method == 3) // no F parameters - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 2) // bycatch - { - warnstream << " cannot use Fmethod 1 or 3 for bycatch fleet: " << f << " " << fleetname(f); - write_message (FATAL, 0); // EXIT! - } - else if (fleet_type(f) >= 3) // survey fleet or predator - { - // F_PH_time(f) not used; - } - else // fleet_type = 1 - { - for(t = styr; t<= TimeMax+nseas; t++) - { - if(catch_ret_obs(f,t) > 0) - { - F_PH_time(f,t) = 99; // so never (e.g. PH 99) switch to parameters because Fmethod == 3 - } - else - { - F_PH_time(f,t) = -1; // no catch, so no F needed - } - } - } - } - } - else // need F parameters for Fmethod 2 and 4 - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) >= 3) // survey fleet or predator - { - // bypass because F not used for survey or predators - } - else // fleet_type is 1 or 2 - { - echoinput << " creating parms for fleet " << f << " "< 0.) - { - if (F_Method_PH(f) < 0) F_PH_time(f, t) = -1; // parameter will be fixed F - if (fleet_type(f) == 2) - { - F_PH_time(f, t) = 1; // begin in phase 1 for a bycatch fleet - // note: catch_ret_obs for bycatch fleet is needed as a trigger to create an F, it is not used as an observation - } - else - { - if (F_Method_PH(f) > 0 && F_Method_PH(f) <= 99) F_PH_time(f, t) = F_Method_PH(f); // for later phases - } - N_Fparm++; - ivector tempin(1, 2); - tempin(1) = f; - tempin(2) = t; - Fparm_loc.push_back(tempin(1, 2)); // stores the f, t for each Fparm - Fparm_PH.push_back(F_PH_time(f, t)); // stores PH in vector for dimensioning Fparm later - do_Fparm_loc(f, t) = N_Fparm; // stores parameter count for this f, t location - sprintf(onenum, "%d", y); - ParCount++; - ParmLabel += "F_fleet_" + NumLbl(f) + "_YR_" + onenum + "_s_" + NumLbl(s) + CRLF(1); - } - else - { - F_PH_time(f, t) = -1; - } - - } - } - } - echoinput << "N F parameters " << N_Fparm << endl; - echoinput << "Phase for each f, t: " << endl << F_PH_time << endl; - } - - if (F_detail > 0) - { - for (k = 1; k <= F_detail; k++) - { - f = F_setup2(k, 1); - y = F_setup2(k, 2); - s = F_setup2(k, 3); - if (y > 0) - { - y1 = y; - y2 = y; - } - else - { - y1 = -y; - y2 = endyr; - } - echoinput << "detailed F setup #: " << k << ": " << F_setup2(k) << endl; - for (y = y1; y <= y2; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - j = do_Fparm_loc(f, t); // get index in the Fparm vector - if (j > 0 && F_setup2(k, 6) != -999) { - Fparm_PH[j] = F_setup2(k,6); // phase for each F_rate parameter - F_PH_time(f,t) = F_setup2(k,6); - } - if (j > 0 && F_setup2(k, 5) != -999) catch_se(t, f) = F_setup2(k, 5); // reset the se for this observation - } - // setup of F_rate values occurs later in the prelim calc section - } - echoinput << "After F_detail: Phase for each f, t: " << endl << F_PH_time << endl; - } - - // all fleets that use parm approach will do so in PH=1 - // find whether any fleet is hybrid for each phases - for (y = styr; y <= endyr; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (F_PH_time(f, t) < 99 && readparfile == 1) // fleet ends up using parm approach - { - F_PH_time(f,t) = 1; // so start with parm in phase 1 because using parm - } - if (F_PH_time(f, t) == 99) F_PH_time(0, t) = 99; // if one fleet is hybrid in phase, then set flag for hybrid - } - } - echoinput << f << " Overall F_PH_time: " << F_PH_time(0) << endl; - } - // clang-format off - END_CALCS - -// SS_Label_Info_4.8 #Read catchability (Q) setup - imatrix Q_setup(1,Nfleet,1,5) - ivector Q_setup_check(1,Nfleet) - imatrix Q_setup_parms(1,Nfleet,1,5) // index of first parameter for: 1=base q with link; 2=extrastd; 3=env; 4=block/trend; 5=dev; - int parm330_cnt - int Q_Npar2 - int Q_Npar - int firstQparm; - int timevary_parm_cnt_Q; - int timevary_parm_start_Q; - int depletion_fleet; // stores fleet(survey) number for the fleet that is defined as "depletion" by survey type=34 - int depletion_type; // entered by Q_setup(f,2) and stores additional controls for depletion fleet - - LOCAL_CALCS - // clang-format on - firstQparm = 0; - timevary_parm_cnt_Q = 0; - timevary_parm_start_Q = 0; - - depletion_fleet = 0; - depletion_type = 0; - - //Q_setup for 3.30 - // 1: link type - // 2: extra input for link, i.e. mirror fleet or dev_vector index associated with survey - // 3: 0/1 to select extra sd parameter - // 4: 0/1 for biasadj or not - // 5: 0/1 to float - - // read setup and get the parameter count - echoinput << "# read Q setup only for fleets with survey/CPUE/effort observations, end with fleet_ID<0 " << endl - << "# fleet_ID link_type link_info extra_se(0/1) biasadj(0/1) float(0/1)" << endl; - firstQparm = ParCount; // base index before adding Q parms - Q_setup.initialize(); - Q_setup_parms.initialize(); - Q_Npar = 0; - Q_setup_check.initialize(); - j = 1; - do - { - *(ad_comm::global_datafile) >> j; - if (j > 0) - { - *(ad_comm::global_datafile) >> Q_setup(j); - Q_setup_check(j) = 1; - } - else - { - *(ad_comm::global_datafile) >> tempvec(1, 5); - } - } while (j > 0); - echoinput << "Q setup " << endl - << "Note: control file should only contain rows for fleets with index observations" << endl - << " but setup is reported here as one row for each fleet (with no fleet column)" << endl - << Q_setup << endl; - - // get base parameter count - for (f = 1; f <= Nfleet; f++) - { - if (Svy_N_fleet(f) > 0) - { - if (Q_setup_check(f) == 0) - { - warnstream << "Q setup; survey obs exist for fleet " << f << " but no Q setup was read "; - write_message (FATAL, 0); // EXIT! - } - Q_Npar++; - ParCount++; - Q_setup_parms(f, 1) = Q_Npar; // first parameter index for this fleet that has obs so needs a Q - if (Svy_errtype(f) == -1) - { - ParmLabel += "Q_base_" + fleetname(f) + "(" + NumLbl(f) + ")"; - if (Q_setup(f, 5) == 1) // float - { - warnstream << "Q setup: can't use float option with normal error distribution, fleet: " << f; - write_message (FATAL, 0); // EXIT! - } - } - else if (Svy_errtype(f) >= 0) // lognormal or T-dist - { - ParmLabel += "LnQ_base_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - if (Svy_units(f) == 35) - { - echoinput << "fleet: " << f << " is a survey of dev vector: " << Q_setup(f, 2) << endl; - if (Q_setup(f, 2) == 0) - { - warnstream << "Q setup: must enter index of dev_vector surveyed by fleet: " << f; - write_message (FATAL, 0); // EXIT! - } - } - - switch (Q_setup(f, 1)) - { - case 1: // simple Q - { - break; - } - case 2: // mirror - { - int fmirror; - fmirror = Q_setup(f, 2); - if (fmirror == 0 || fmirror >= f) - { - warnstream << "Illegal mirror for q for fleet: " << f << " trying to mirror fleet: " << Q_setup(f, 2); - write_message (FATAL, 0); // EXIT! - } - if (Q_setup(fmirror, 5) == 1) - { - warnstream << "Fleet: " << f << " cannot mirror fleet that has float q: " << fmirror; - write_message (FATAL, 0); // EXIT! - } - break; - } - case 3: // add power - { - Q_Npar++; - ParCount++; - ParmLabel += "Q_power_" + fleetname(f) + "(" + NumLbl(f) + ")"; - break; - } - case 4: // mirror with offset, where offset typically is ln(area_base/area_dependent) ln(Q2) = ln(Q1) + ln (area1 / area2) - { - if (Q_setup(f, 2) == 0 || Q_setup(f, 2) >= f) - { - warnstream << "Illegal mirror for q for fleet: " << f << " trying to mirror fleet: " << Q_setup(f, 2); - write_message (FATAL, 0); // EXIT! - } - Q_Npar++; - ParCount++; - ParmLabel += "Q_mirror_scale_" + fleetname(f) + "(" + NumLbl(f) + ")"; - break; - } - case 5: // add offset - { - Q_Npar++; - ParCount++; - ParmLabel += "Q_offset_" + fleetname(f) + "(" + NumLbl(f) + ")"; - break; - } - case 6: // add offset and power - { - Q_Npar++; - ParCount++; - ParmLabel += "Q_offset_" + fleetname(f) + "(" + NumLbl(f) + ")"; - Q_Npar++; - ParCount++; - ParmLabel += "Q_power_" + fleetname(f) + "(" + NumLbl(f) + ")"; - break; - } - } - if (Q_setup(f, 3) > 0) - { - Q_Npar++; - ParCount++; - Q_setup_parms(f, 2) = Q_Npar; - ParmLabel += "Q_extraSD_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - if (Svy_units(f) == 35 || Svy_units(f) == 36) // env index of recdev or parm dev vector - { - if (Q_setup(f, 1) < 5) // so OK for 5 and 6 - { - warnstream << "Suggest using Q option 5 to include offset parameter for an index of deviations (type 35 or 36)"; - write_message (WARN, 0); - } - if (Q_setup(f, 1) == 3 || Q_setup(f,1) == 6) - { - warnstream << "Power function cannot be used for an index of deviations (type 35 or 36) because of negative values"; - write_message (FATAL, 0); - } - } - if (Svy_units(f) == 34) // special code for depletion, so prepare to adjust phases and lambdas - { - echoinput << "# survey: " << f << " " << fleetname(f) << " is a depletion fleet" << endl; - depletion_fleet = f; - depletion_type = Q_setup(f, 2); - if (depletion_type == 0) - echoinput << "link_info=0; add 1 to phases of all parms; only R0 active in new phase 1 (same as 3.24 logic)" << endl; - if (depletion_type == 1) - echoinput << "link_info=1 only R0 active in phase 1; then exit; useful for data-limited draws of other fixed parameter" << endl; - if (depletion_type == 2) - echoinput << "link_info=2 no phase adjustments, can be used when profiling on fixed R0" << endl; - if (Q_setup(f, 5) == 1) - { - warnstream << "Change to no_float for depletion fleet # " << f << endl; - warnstream << "++ and you must set phase to negative so not estimated"; - write_message (ADJUST, 1); - Q_setup(f, 5) = 0; - } - } - } - else - { - if (Q_setup_check(f) > 0) - { - warnstream << " Q setup error; no survey obs for fleet " << f << " but Q setup was read "; - write_message (FATAL, 0); // EXIT! - } - } - } - - echoinput << "Q_Npar (number of long parameter lines): " << Q_Npar << endl - << endl << "Q setup parameter index " << endl - << "column have index of first parameter for: 1=base q with link; 2=extrastd; 3=env; 4=block/trend; 5=dev;" - << Q_setup_parms << endl; - // clang-format off - END_CALCS - - init_matrix Q_parm_1(1,Q_Npar,1,14) - ivector Qparm_timevary(1,Q_Npar) // holds index in timevary_def used by each base parameter - // dimensioned to hold the extra_sd parms, but these cannot be time-varying - imatrix timevary_Qparm(styr-3,YrMax+1,0,Nfleet) // goes to yrmax+1 to allow referencing in forecast, but only endyr+1 is checked - // stores years to calc non-constant sel parms by fleet - - LOCAL_CALCS - // clang-format on - // now create time_vary parameters - parm330_cnt = 0; // restart the index - Qparm_timevary.initialize(); - timevary_Qparm.initialize(); - timevary_parm_start_Q = 0; - timevary_parm_cnt_Q = 0; - timevary_used = 0; - for (f = 1; f <= Nfleet; f++) - if (Svy_N_fleet(f) > 0) - { - j = Q_setup_parms(f, 1); - echoinput << "fleet " << f << " base index " << j << endl; - if (Q_setup(f, 5) == 1) // float - { - if (Q_parm_1(j, 7) >= 0) - { - warnstream << "Fleet: " << f << " SS3 changed Q to not estimate because it is set to float"; - write_message (ADJUST, 0); - Q_parm_1(j, 7) = -1; - } - } - - // depletion fleet check - if (Svy_units(f) == 34) // special code for depletion - { - if (Q_parm_1(j, 7) >= 0) - { - warnstream << "Fleet: " << f << " SS3 changed Q to not estimate because it is depletion fleet"; - write_message (ADJUST, 0); - Q_parm_1(j, 7) = -1; - } - } - - // check for extraSD estimation - if (Q_setup(f, 3) > 0) - { - if (Q_parm_1(Q_setup_parms(f, 2), 7) > 0) varparm_estimated(3) = 1; // extraSD is estimated, so need sd_offset=1 - } - - if (Q_parm_1(j, 13) == 0 && Q_parm_1(j, 8) == 0 && Q_parm_1(j, 9) == 0) - { - // no time-vary parameter effects - } - else // set up a timevary parameter definition - { - timevary_used = 1; - ivector timevary_setup(1, 14); // temporary vector for timevary specs - timevary_setup.initialize(); - if (timevary_parm_start_Q == 0) timevary_parm_start_Q = timevary_parm_cnt + 1; - echoinput << endl - << " timevary Q for fleet: " << f << endl; - timevary_cnt++; // count parameters with time-vary effect - Qparm_timevary(j) = timevary_cnt; // base Q parameter will use this timevary specification - timevary_setup(1) = 3; // indicates a Q parm - timevary_setup(2) = j; // index of base parm within that type of parameter - timevary_setup(13) = firstQparm + j; // index of base parm relative to ParCount which is continuous across all types of parameters - timevary_setup(3) = timevary_parm_cnt + 1; // first parameter within total list of all timevary parms - timevary_pass = column(timevary_Qparm, f); // year vector for this fleet - // set up env link info - echoinput << " check for env " << Q_parm_1(j, 8) << endl; - - k = int(abs(Q_parm_1(j, 8)) / 100); // find the env link code - timevary_setup(6) = k; // link code for env - if (Q_parm_1(j, 8) > 0) // env variable used - { - timevary_setup(7) = int(abs(Q_parm_1(j, 8))) - k * 100; - k = timevary_setup(7); - // for(y=styr-1;y<=YrMax;y++) env_data_pass(y)=env_data_RD(y,k); - env_data_pass(1) = env_data_minyr(k); - env_data_pass(2) = env_data_maxyr(k); - } - else if (abs(Q_parm_1(j, 8) > 0)) // density-dependence - { - timevary_setup(7) = -int(abs(Q_parm_1(j, 8)) - k * 100); - do_densitydependent = 1; - k = 0; - env_data_pass.initialize(); - } - - if (Q_parm_1(j, 13) > 0) // doing blocks - { - if (Q_parm_1(j, 13) > N_Block_Designs) - { - warnstream << "Q block request exceeds N_block patterns" ; - write_message (FATAL, 0); // EXIT! - } - create_timevary(Q_parm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), f, Block_Design(Q_parm_1(j, 13)), env_data_pass, N_parm_dev, finish_starter); - } - else - { - create_timevary(Q_parm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), f, block_design_null, env_data_pass, N_parm_dev, finish_starter); - } - timevary_def.push_back(timevary_setup(1, 14)); - for (y = styr - 3; y <= YrMax + 1; y++) { - timevary_Qparm(y, f) = timevary_pass(y); - } // year vector for this category og MGparm - } - } - - Q_Npar2 = Q_Npar; - if (timevary_parm_start_Q > 0) - { - if (timevary_used == 1) autogen_timevary(3) = 1; // indicate that some parameter is time-varying - timevary_parm_cnt_Q = timevary_parm_cnt; - Q_Npar2 += (timevary_parm_cnt_Q - timevary_parm_start_Q + 1); - echoinput << "Q uses timevary parms: " << Qparm_timevary << endl; - echoinput << " Q timevary_parm_cnt start and end " << timevary_parm_start_Q << " " << timevary_parm_cnt_Q << endl; - } - echoinput << "Q_Npar (long lines) and Q_Npar2 (long + short lines): " << Q_Npar << " " << Q_Npar2 << endl; - // clang-format off - END_CALCS - - vector Q_parm_LO(1,Q_Npar2) - vector Q_parm_HI(1,Q_Npar2) - vector Q_parm_RD(1,Q_Npar2) - vector Q_parm_PR(1,Q_Npar2) - ivector Q_parm_PRtype(1,Q_Npar2) - vector Q_parm_CV(1,Q_Npar2) - ivector Q_parm_PH(1,Q_Npar2) - - LOCAL_CALCS - // clang-format on - if (Q_Npar2 == 0) - { - Q_parm_LO = -1.; - Q_parm_HI = 1.; - Q_parm_PH = -4; - } - else - { - for (i = 1; i <= Q_Npar; i++) - { - Q_parm_LO(i) = Q_parm_1(i, 1); - Q_parm_HI(i) = Q_parm_1(i, 2); - Q_parm_RD(i) = Q_parm_1(i, 3); - Q_parm_PR(i) = Q_parm_1(i, 4); - Q_parm_CV(i) = Q_parm_1(i, 5); - Q_parm_PRtype(i) = Q_parm_1(i, 6); - Q_parm_PH(i) = Q_parm_1(i, 7); - } - if (timevary_parm_start_Q > 0) - { - j = Q_Npar; - for (f = timevary_parm_start_Q; f <= timevary_parm_cnt_Q; f++) - { - j++; - echoinput << f << " " << j << " " << timevary_parm_rd[f] << endl; - Q_parm_LO(j) = timevary_parm_rd[f](1); - Q_parm_HI(j) = timevary_parm_rd[f](2); - Q_parm_RD(j) = timevary_parm_rd[f](3); - Q_parm_PR(j) = timevary_parm_rd[f](4); - Q_parm_PRtype(j) = timevary_parm_rd[f](6); - Q_parm_CV(j) = timevary_parm_rd[f](5); - Q_parm_PH(j) = timevary_parm_rd[f](7); - } - } - } - echoinput << "Q_parm_RD: " << endl; - for (z = 1; z <= Q_Npar2; z++) - echoinput << z << " " << Q_parm_RD(z) << " " << ParmLabel(ParCount - Q_Npar2 + z) << endl; - echoinput << "#" << endl; - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.9 #Define Selectivity patterns and N parameters needed per pattern - ivector seltype_Nparam(0,50) - LOCAL_CALCS - // clang-format on - seltype_Nparam(0) = 0; // selex=1.0 for all sizes - seltype_Nparam(1) = 2; // logistic; with 95% width specification - seltype_Nparam(2) = 6; // test version of double normal (24) - seltype_Nparam(3) = 6; // flat middle, power up, power down - seltype_Nparam(4) = 0; // set size selex=female maturity - seltype_Nparam(5) = 2; // mirror another selex; PARMS pick the min-max bin to mirror - seltype_Nparam(6) = 2; // non-parm len selex, additional parm count is in seltype(f,4) - seltype_Nparam(7) = 8; // New doublelogistic with smooth transitions and constant above Linf option - seltype_Nparam(8) = 8; // New doublelogistic with smooth transitions and constant above Linf option - seltype_Nparam(9) = 6; // simple 4-parm double logistic with starting length; parm 5 is first length; parm 6=1 does desc as offset - - seltype_Nparam(10) = 0; // First age-selex selex=1.0 for all ages - seltype_Nparam(11) = 2; // pick min-max age - seltype_Nparam(12) = 2; // logistic - seltype_Nparam(13) = 8; // double logistic - seltype_Nparam(14) = nages + 1; // empirical - seltype_Nparam(15) = 0; // mirror another selex - seltype_Nparam(16) = 2; // Coleraine - Gaussian - seltype_Nparam(17) = nages + 1; // empirical as random walk N parameters to read can be overridden by setting special to non-zero - seltype_Nparam(18) = 8; // double logistic - smooth transition - seltype_Nparam(19) = 6; // simple 4-parm double logistic with starting age - seltype_Nparam(20) = 6; // double_normal,using joiners - - seltype_Nparam(21) = 2; // non-parm len selex, additional parm count is in seltype(f,4), read as pairs of size, then selex - seltype_Nparam(22) = 4; // double_normal as in CASAL - seltype_Nparam(23) = 6; // double_normal where final value is directly equal to sp(6) so can be >1.0 - seltype_Nparam(24) = 6; // double_normal with sel(minL) and sel(maxL), using joiners - seltype_Nparam(25) = 3; // exponential-logistic in size - seltype_Nparam(26) = 3; // exponential-logistic in age - seltype_Nparam(27) = 3; // cubic spline for selex at length, additional parm count is in seltype(f,4) - // seltype_Nparam(28)=3; // cubic spline for selex at age, additional parm count is in seltype(f,4) - seltype_Nparam(29) = 0; // undefined - - seltype_Nparam(41) = 2 + seltype_Nparam(17); // like 17, with 2 additional parameters for scaling (average over bin range) - seltype_Nparam(42) = 2 + seltype_Nparam(27); // like 27, with 2 additional parameters for scaling (average over bin range) - seltype_Nparam(43) = seltype_Nparam(6); // like 6, with 2 additional parameters for scaling (average over bin range) - seltype_Nparam(44) = 4; // like 17 for two sexes with male selectivity as separate parameters - seltype_Nparam(45) = 4; // like 14 for two sexes with male selectivity as separate parameters - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.9.1 #Read selectivity definitions -// do 2*Nfleet to create options for size-selex (first), then age-selex - init_imatrix seltype_rd(1,2*Nfleet,1,4) // read selex type for each fleet/survey, retention option, male_offset_option, special - imatrix seltype(1,2*Nfleet,1,4) // read selex type for each fleet/survey, retention option, male_offset_option, special - - int N_selparm // figure out the Total number of selex parameters - int N_selparm3 // N selparms plus timevary parms - int N_selparm2 // N selparms plus timevary parms and 2D_AR1 parms - ivector N_selparmvec(1,2*Nfleet) // N selparms by type, including extra parms for male selex, retention, etc. - ivector Maleselparm(1,2*Nfleet) - ivector RetainParm(1,Nfleet) // can only have length or age retention, not both for a fleet - ivector dolen(1,Nfleet) - int blkparm - int firstselparm - ivector N_ret_parm(0,6) // 6 possible retention functions allowed - ivector N_disc_mort_parm(0,6) // 6 possible discard mortality functions allowed - ivector Do_Retain(1,Nfleet) // indicates 0=none, 1=length based, 2=age based - ivector Min_selage(1,Nfleet) // minimum selected age - imatrix Comp_Err_parmloc(1,Comp_Err_ParmCount,1,2); // for each comp_err_index, locate starting parameter in parcount (2) and in Selparm (1). - - LOCAL_CALCS - // clang-format on - echoinput - << " selex types " << endl - << seltype_rd << endl; - - // identify fleets with adjusted first_selected age - seltype = seltype_rd; // set matrices to be same - Min_selage.initialize(); - for (f = 1; f <= 2 * Nfleet; f++) - { - echoinput << f << " " << seltype_rd(f, 1) << endl; - if (seltype_rd(f, 1) >= 100) - { - if (f <= Nfleet) - { - warnstream << "Fleet: " << f << " cannot use >100 code for length selectivity; SS3 will correct"; - write_message (ADJUST, 0); - j = int(seltype(f, 1) / 100); - k = seltype(f, 1) - 100 * j; - seltype_rd(f, 1) = k; // change input value so will be written correctly in ss_new - seltype(f, 1) = seltype_rd(f, 1); - } - else - { - Min_selage(f - Nfleet) = int(seltype(f, 1) / 100); - k = seltype(f, 1) - 100 * Min_selage(f - Nfleet); - echoinput << seltype(f, 1) << " " << k << " " << Min_selage(f - Nfleet) << endl; - if (k == 12 || k == 13 || k == 14 || k == 16 || k == 18 || k == 26 || k == 27) - { - echoinput << "OK to use min_selage for selex pattern: " << k << " for fleet: " << f - Nfleet << endl; - } - else if (k == 17 || k == 44 || k == 45) - { - warnstream << "Don't use min_selage for age selectivity: " << k << " for fleet: " << f - Nfleet << " because separate control exists; SS3 will correct"; - write_message (ADJUST, 0); - seltype_rd(f, 1) = k; - } // change input value so will be written correctly in ss_new - else if (k == 19) - { - warnstream << "Can't use min_selage for age selectivity: " << k << " for fleet: " << f - Nfleet << " because separate control sets sel = 1.0e-06 below a specified age SS3 will correct"; - write_message (ADJUST, 0); - seltype_rd(f, 1) = k; - } - else if (k == 20) - { - warnstream << "OK to use min_selage for age selectivity: " << k << " for fleet: " << f - Nfleet << " but be aware that a separate control for parm 5 can set sel = 1.0e-06 below a specified age"; - write_message (WARN, 0); - } - else - { - echoinput << "Min_selage not implemented and not relevant for selex pattern: " << k << " for fleet: " << f - Nfleet << endl; - seltype_rd(f, 1) = k; - } - seltype(f, 1) = k; - } - } - } - - RetainParm.initialize(); - // define number of parameters for each retention type - N_ret_parm(0) = 0; - N_ret_parm(1) = 4; // for asymptotic retention - N_ret_parm(2) = 4; // for asymptotic retention and 4 param discard mort - N_ret_parm(3) = 0; // all dead - N_ret_parm(4) = 7; // for dome-shaped retention and 4 param discard mort - - // define number of discard mortality parameters for each retention type - N_disc_mort_parm(0) = 0; - N_disc_mort_parm(1) = 0; // for asymptotic retention - N_disc_mort_parm(2) = 4; // for asymptotic retention and 4 param discard mort - N_disc_mort_parm(3) = 0; // all dead - N_disc_mort_parm(4) = 4; // for dome-shaped retention and 4 param discard mort - - // SS_Label_Info_4.9.2 #Process selectivity parameter count and create parameter labels - firstselparm = ParCount; - N_selparm = 0; - // N_ret_parm=7; // to allow for dome-shaped retention - Do_Retain.initialize(); - for (f = 1; f <= Nfleet; f++) - { - if (WTage_rd > 0 && seltype(f, 1) > 0) - { - warnstream << "Use of size selectivity not advised when reading empirical wt-at-age "; - write_message (WARN, 0); - } - N_selparmvec(f) = seltype_Nparam(seltype(f, 1)); // N Length selex parms - if (seltype(f, 1) == 6 || seltype(f, 1) == 43) N_selparmvec(f) += seltype(f, 4); // special setup of N parms - if (seltype(f, 1) == 21) N_selparmvec(f) += 2 * (seltype(f, 4) - 1); // special setup of N parms - if (seltype(f, 1) == 27) N_selparmvec(f) += 2 * seltype(f, 4); // special setup of N parms for cubic spline - if (seltype(f, 1) == 42) N_selparmvec(f) += 2 * seltype(f, 4); // special setup of N parms for cubic spline - if (seltype(f, 1) > 0 && Svy_units(f) < 30) { - dolen(f) = 1; - } - else - { - dolen(f) = 0; - } - if (seltype(f, 1) == 15 || seltype(f, 1) == 5) // mirror - { - if (seltype(f, 4) == 0 || seltype(f, 4) >= f) - { - warnstream << "Illegal mirror for len selex fleet " << f << "trying to mirror fleet: " << seltype(f, 4); - write_message (FATAL, 1); // EXIT! - } - } - if (seltype(f, 1) == 43) - { - ParCount++; - ParmLabel += "SizeSel_ScaleBinLo_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "SizeSel_ScaleBinHi_" + fleetname(f) + "(" + NumLbl(f) + ")"; - echoinput << "N parm " << N_selparmvec(f) << endl; - } - - if (seltype(f, 1) == 27 || seltype(f, 1) == 42) - { - if (seltype(f, 1) == 42) - { - ParCount++; - ParmLabel += "SizeSpline_ScaleBinLo_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "SizeSpline_ScaleBinHi_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - ParCount++; - ParmLabel += "SizeSpline_Code_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "SizeSpline_GradLo_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "SizeSpline_GradHi_" + fleetname(f) + "(" + NumLbl(f) + ")"; - for (s = 1; s <= seltype(f, 4); s++) - { - ParCount++; - ParmLabel += "SizeSpline_Knot_" + NumLbl(s) + "_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - for (s = 1; s <= seltype(f, 4); s++) - { - ParCount++; - ParmLabel += "SizeSpline_Val_" + NumLbl(s) + "_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - } - else if (seltype(f, 1) == 24 || seltype(f, 1) == 2) // double_normal - { - ParCount++; - ParmLabel += "Size_DblN_peak_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "Size_DblN_top_logit_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "Size_DblN_ascend_se_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "Size_DblN_descend_se_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "Size_DblN_start_logit_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "Size_DblN_end_logit_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - else if (seltype(f, 1) == 1) // logistic - { - ParCount++; - ParmLabel += "Size_inflection_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "Size_95%width_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - else if (seltype(f, 1) == 11) - { - ParCount++; - ParmLabel += "SizeSel=1_BinLo_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - ParmLabel += "SizeSel=1_BinHi_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - - else - { - for (j = 1; j <= N_selparmvec(f); j++) - { - ParCount++; - ParmLabel += "SizeSel_P" + NumLbl(j) + "_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - } - - // account for the low and high bin parameters - if (seltype(f, 1) == 43) N_selparmvec(f) += 2; - - if (seltype(f, 2) >= 1) - { - if (WTage_rd > 0) - { - warnstream << "Length-based retention will use the same empirical wtatage for discard and retained fish for fleet: " << f; - write_message (NOTE, 0); - } - Do_Retain(f) = 1; - if (fleet_type(f) == 2 && seltype(f, 2) != 3) - { - warnstream << "Fleet: " << f << " is a bycatch fleet, so consider using retention option =3 so no parameters needed"; - write_message (SUGGEST, 0); - } - if (seltype(f, 2) == 3) - { - RetainParm(f) = 0; - } // no parameters needed - else - { - RetainParm(f) = N_selparmvec(f) + 1; - // N_selparmvec(f) +=N_ret_parm*seltype(f,2); // N retention parms first [N_ret_parm] for retention; next [N_ret_parm] for discard mortality - if (N_ret_parm(seltype(f, 2)) > 0) - { - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_L_infl_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_L_width_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_L_asymptote_logit_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_L_maleoffset_" + fleetname(f) + "(" + NumLbl(f) + ")"; - if (N_ret_parm(seltype(f, 2)) == 7) // doing dome - { - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_L_dome_infl_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_L_dome_width_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_L_dome_maleoffset_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - } - if (seltype(f, 2) == 2 || seltype(f, 2) == 4) - { - ParCount++; - N_selparmvec(f)++; - ParmLabel += "DiscMort_L_infl_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "DiscMort_L_width_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "DiscMort_L_level_old_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "DiscMort_L_male_offset_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - } - } - else if (seltype(f, 2) < 0) // mirror retention - { - Do_Retain(f) = 1; - RetainParm(f) = 0; - } - if (seltype(f, 3) >= 1) - { - if (gender == 1) - { - warnstream << "Male selex cannot be used in one sex model; fleet: " << f ; - write_message (FATAL, 1); // EXIT! - } - Maleselparm(f) = N_selparmvec(f) + 1; - if (seltype(f, 3) == 1 || seltype(f, 3) == 2) - { - N_selparmvec(f) += 4; // add male parms - ParCount += 4; - ParmLabel += "SzSel_MaleDogleg_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParmLabel += "SzSel_MaleatZero_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParmLabel += "SzSel_MaleatDogleg_" + fleetname(f) + "(" + NumLbl(f) + ")"; - ParmLabel += "SzSel_MaleatMaxage_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - else if (seltype(f, 3) >= 3) - { - if (seltype(f, 3) == 3) { - anystring = "Male_"; - } - else - { - anystring = "Fem_"; - } - if (seltype(f, 1) == 1) - { - N_selparmvec(f)++; - ParCount++; - ParmLabel += "SzSel_" + anystring + "Infl_" + fleetname(f) + "(" + NumLbl(f) + ")"; - N_selparmvec(f)++; - ParCount++; - ParmLabel += "SzSel_" + anystring + "Slope_" + fleetname(f) + "(" + NumLbl(f) + ")"; - N_selparmvec(f)++; - ParCount++; - ParmLabel += "SzSel_" + anystring + "Scale_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - else if (seltype(f, 1) == 24 || seltype(f, 1) == 2) - { - N_selparmvec(f)++; - ParCount++; - ParmLabel += "SzSel_" + anystring + "Peak_" + fleetname(f) + "(" + NumLbl(f) + ")"; - N_selparmvec(f)++; - ParCount++; - ParmLabel += "SzSel_" + anystring + "Ascend_" + fleetname(f) + "(" + NumLbl(f) + ")"; - N_selparmvec(f)++; - ParCount++; - ParmLabel += "SzSel_" + anystring + "Descend_" + fleetname(f) + "(" + NumLbl(f) + ")"; - N_selparmvec(f)++; - ParCount++; - ParmLabel += "SzSel_" + anystring + "Final_" + fleetname(f) + "(" + NumLbl(f) + ")"; - N_selparmvec(f)++; - ParCount++; - ParmLabel += "SzSel_" + anystring + "Scale_" + fleetname(f) + "(" + NumLbl(f) + ")"; - } - else - { - warnstream << "Illegal male selex option selected for fleet " << f ; - write_message (FATAL, 1); // EXIT! - } - } - } - - if (seltype(f, 1) == 7) - { - warnstream << "Selectivity pattern #7 is no longer supported "; - write_message (WARN, 0); - } - if (seltype(f, 1) == 23 && F_Method == 1) - { - warnstream << "Do not use F_Method = Pope's with selex pattern #23 "; - write_message (WARN, 0); - } - N_selparm += N_selparmvec(f); - } - for (f = Nfleet + 1; f <= 2 * Nfleet; f++) - { - int f1 = f - Nfleet; // actual fleet number - if (seltype(f, 1) == 15) // mirror - { - if (seltype(f, 4) == 0 || seltype(f, 4) >= f1) - { - warnstream << "Illegal mirror for age selex fleet " << f - Nfleet; - write_message (FATAL, 0); // EXIT! - } - N_selparmvec(f) = 0; // Nunber of Age selex parms - } - else if (seltype(f, 1) != 17 && seltype(f, 1) != 41) - { - N_selparmvec(f) = seltype_Nparam(seltype(f, 1)); // Nunber of Age selex parms - } - else if (seltype(f, 4) == 0) - { - N_selparmvec(f) = seltype_Nparam(seltype(f, 1)); // this is nages+1 - } - else - { - N_selparmvec(f) = abs(seltype(f, 4)) + 1; // so reads value for age 0 through this age - if (seltype(f, 1) == 41) N_selparmvec(f) +=2; // for the scaling parameters - } - - if (seltype(f, 1) == 41) - { - ParCount++; - ParmLabel += "AgeSel_ScaleAgeLo_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "AgeSel_ScaleAgeHi_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - - if (seltype(f, 1) == 27 || seltype(f, 1) == 42) - { - if (seltype(f, 1) == 42) - { - ParCount++; - ParmLabel += "AgeSpline_ScaleAgeLo_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "AgeSpline_ScaleAgeHi_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - N_selparmvec(f) += 2 * seltype(f, 4); // special setup of N parms for cubic spline - ParCount++; - ParmLabel += "AgeSpline_Code_" + fleetname(f1) + "_" + NumLbl(f1); - ParCount++; - ParmLabel += "AgeSpline_GradLo_" + fleetname(f1) + "_" + NumLbl(f1); - ParCount++; - ParmLabel += "AgeSpline_GradHi_" + fleetname(f1) + "_" + NumLbl(f1); - for (s = 1; s <= seltype(f, 4); s++) - { - ParCount++; - ParmLabel += "AgeSpline_Knot_" + NumLbl(s) + "_" + fleetname(f1) + "_" + NumLbl(f1); - } - for (s = 1; s <= seltype(f, 4); s++) - { - ParCount++; - ParmLabel += "AgeSpline_Val_" + NumLbl(s) + "_" + fleetname(f1) + "_" + NumLbl(f1); - } - } - else if (seltype(f, 1) == 44) - { - N_selparmvec(f) = 2 + gender + gender * seltype(f, 4); - ParCount++; - ParmLabel += "first_selage_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "first_age_mean_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "last_age_mean_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - if (gender == 2) - { - ParCount++; - ParmLabel += "Male_ln(ratio)_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - for (int gg = 1; gg <= seltype(f, 4); gg++) - { - ParCount++; - ParmLabel += "female_ln(selchange)_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - for (int gg = 1; gg <= seltype(f, 4); gg++) - { - ParCount++; - ParmLabel += "male_ln(selchange)_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - } - else - { - for (int gg = 1; gg <= seltype(f, 4); gg++) - { - ParCount++; - ParmLabel += "ln(selchange)_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - } - } - else if (seltype(f, 1) == 45) - { - N_selparmvec(f) = 2 + gender + gender * seltype(f, 4); - ParCount++; - ParmLabel += "first_selage_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "first_age_mean_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "last_age_mean_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - if (gender == 2) - { - ParCount++; - ParmLabel += "Male_ln(ratio)_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - for (int gg = 1; gg <= seltype(f, 4); gg++) - { - ParCount++; - ParmLabel += "female_sel_logit_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - for (int gg = 1; gg <= seltype(f, 4); gg++) - { - ParCount++; - ParmLabel += "male_sel_logit_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - } - else - { - for (int gg = 1; gg <= seltype(f, 4); gg++) - { - ParCount++; - ParmLabel += "ln(selchange)_" + NumLbl(gg) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - } - } - - else if (seltype(f, 1) == 20) - { - ParCount++; - ParmLabel += "Age_DblN_peak_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "Age_DblN_top_logit_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "Age_DblN_ascend_se_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "Age_DblN_descend_se_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "Age_DblN_start_logit_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "Age_DblN_end_logit_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - else if (seltype(f, 1) == 12) - { - ParCount++; - ParmLabel += "Age_inflection_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "Age_95%width_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - else if (seltype(f, 1) == 11) - { - ParCount++; - ParmLabel += "minage@sel=1_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - ParmLabel += "maxage@sel=1_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - else - { - - k = 0; - if (seltype(f, 1) == 41) k = 2; // reduce count for the scaling parameters - for (j = 1; j <= N_selparmvec(f) - k; j++) - { - ParCount++; - ParmLabel += "AgeSel_P" + NumLbl(j) + "_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - } - - // age-specific retention function - if (seltype(f, 2) >= 1) - { - Do_Retain(f1) = 2; - if (WTage_rd > 0) - { - warnstream << "Age-based retention will use the same empirical wtatage for discarded and retained fish for fleet: " << f; - write_message (NOTE, 0); - } - if (seltype(f1, 2) > 0) - { - warnstream << "cannot have both age and size retention functions " << f << " but retention parms not setup "; - write_message (FATAL, 0); // EXIT! - } - if (seltype(f, 2) == 3) - { - RetainParm(f1) = 0; - } // no parameters needed - else - { - RetainParm(f1) = N_selparmvec(f) + 1; - // N_selparmvec(f) +=N_ret_parm*seltype(f,2); // N retention parms first [N_ret_parm] for retention; next [N_ret_parm] for discard mortality - // for (j=1;j<=N_ret_parm(seltype(f,2));j++) - // { - // ParCount++; N_selparmvec(f)++; ParmLabel+="Retain_age_P"+NumLbl(j)+"_"+fleetname(f1)+"("+NumLbl(f1)+")"; - // } - if (N_ret_parm(seltype(f, 2)) > 0) - { - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_A_infl_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_A_width_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_A_asymptote_logit_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_A_maleoffset_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - if (N_ret_parm(seltype(f, 2)) == 7) // doing dome - { - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_A_dome_infl_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_A_dome_width_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "Retain_A_dome_maleoffset_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - } - - if (seltype(f, 2) == 2 || seltype(f, 2) == 4) - { - ParCount++; - N_selparmvec(f)++; - ParmLabel += "DiscMort_A_infl_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "DiscMort_A_width_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "DiscMort_A_level_old_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - ParCount++; - N_selparmvec(f)++; - ParmLabel += "DiscMort_A_male_offset_" + fleetname(f1) + "(" + NumLbl(f1) + ")"; - } - } - } - else if (seltype(f, 2) < 0) // mirror retention - { - Do_Retain(f1) = 2; - RetainParm(f1) = 0; - } - - if (seltype(f, 3) >= 1) - { - if (gender == 1) - { - warnstream << "Male selex cannot be used in one sex model; fleet: " << f; - write_message (FATAL, 0); // EXIT! - } - Maleselparm(f) = N_selparmvec(f) + 1; - if (seltype(f, 3) == 1 || seltype(f, 3) == 2) - { - N_selparmvec(f)++; - ParCount++; - ParmLabel += "AgeSel_" + NumLbl(f1) + "MaleDogleg_" + fleetname(f1); - N_selparmvec(f)++; - ParCount++; - ParmLabel += "AgeSel_" + NumLbl(f1) + "MaleatZero_" + fleetname(f1); - N_selparmvec(f)++; - ParCount++; - ParmLabel += "AgeSel_" + NumLbl(f1) + "MaleatDogleg_" + fleetname(f1); - N_selparmvec(f)++; - ParCount++; - ParmLabel += "AgeSel_" + NumLbl(f1) + "MaleatMaxage_" + fleetname(f1); - } - else if (seltype(f, 3) >= 3 && seltype(f, 1) == 20) - { - if (seltype(f, 3) == 3) { - anystring = "Male_"; - } - else - { - anystring = "Fem_"; - } - N_selparmvec(f)++; - ParCount++; - ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Peak_" + fleetname(f1); - N_selparmvec(f)++; - ParCount++; - ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Ascend_" + fleetname(f1); - N_selparmvec(f)++; - ParCount++; - ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Descend_" + fleetname(f1); - N_selparmvec(f)++; - ParCount++; - ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Final_" + fleetname(f1); - N_selparmvec(f)++; - ParCount++; - ParmLabel += "AgeSel_" + NumLbl(f1) + anystring + "Scale_" + fleetname(f1); - } - else - { - warnstream << "Illegal male selex option selected for fleet " << f; - write_message (FATAL, 1); // EXIT! - } - } - N_selparm += N_selparmvec(f); - } - - // create index to fleets with discard - disc_fleet_list.initialize(); - N_retain_fleets = 0; - for (f = 1; f <= Nfleet; f++) - { - if (Do_Retain(f) > 0) - { - N_retain_fleets++; - disc_fleet_list(f) = N_retain_fleets; // for compact storage of disc_age(t,f,g) - } - } - - // SS_Label_Info_4.097 #Read parameters needed for estimating variance of composition data - { - echoinput << "#Now create parameters for D-M variance of composition data; CANNOT be time-varying" << endl; - Comp_Err_Parm_Start = 0; - if (Comp_Err_ParmCount > 0) - { - echoinput << Comp_Err_ParmCount << " #_definitions are needed: " << endl; - Comp_Err_Parm_Start = N_selparm; - // create a D-M parameter or tweedie parameter pair only for the first fleet that references that parm number - for (f = 1; f <= Nfleet; f++) - for (int parti = 0; parti <= 2; parti++) - { - if (DM_parmlist(parti, f) > 0) // create DM parameter labels for definitions first referenced for lencomp - { - N_selparm ++; - ParCount ++; - Comp_Err_parmloc(Comp_Err_L2(parti, f),1) = N_selparm; // first parameter used by this method - Comp_Err_parmloc(Comp_Err_L2(parti, f),2) = ParCount; // use this index in write_report to display the correct parameter label - switch (Comp_Err_L(parti, f)) - { - case 1: - { - ParmLabel += "ln(DM_theta)_Len_P" + NumLbl(Comp_Err_L2(parti, f)); - break; - } - case 2: - { - ParmLabel += "ln(DM_beta)_Len_P" + NumLbl(Comp_Err_L2(parti, f)); - break; - } - case 3: - { - ParmLabel += "ln(tweedie_Phi)_Len_P" + NumLbl(Comp_Err_L2(parti, f)); - N_selparm ++; - ParCount ++; - ParmLabel += "ln(tweedie_Power)_Len_P" + NumLbl(Comp_Err_L2(parti, f)); - break; - } - } - } - } - - for (f = 1; f <= Nfleet; f++) - { - if (DM_parmlist(0, f + Nfleet) > 0) // create DM parameter labels for definitions first referenced for agecomp - { - N_selparm ++; - ParCount ++; - Comp_Err_parmloc(Comp_Err_A2(f),1) = N_selparm; // first parameter used by this method - Comp_Err_parmloc(Comp_Err_A2(f),2) = ParCount; // use this index in write_report to display the correct parameter label - switch (Comp_Err_A(f)) - { - case 1: - { - ParmLabel += "ln(DM_theta)_Age_P" + NumLbl(Comp_Err_A2(f)); - break; - } - case 2: - { - ParmLabel += "ln(DM_beta)_Age_P" + NumLbl(Comp_Err_A2(f)); - break; - } - case 3: - { - ParmLabel += "ln(tweedie_Phi)_Age_P" + NumLbl(Comp_Err_A2(f)); - N_selparm ++; - ParCount ++; - ParmLabel += "ln(tweedie_Power)_Age_P" + NumLbl(Comp_Err_A2(f)); - break; - } - } - } - } - - for (int f = 1; f <= SzFreq_Nmeth; f++) - { - if (DM_parmlist(0, f + 2 * Nfleet) > 0) // create DM parameter labels for definitions first referenced for sizefreq. note that sizefreq comps are by method, not fleet - { - N_selparm ++; - ParCount ++; - Comp_Err_parmloc(Comp_Err_Sz2(f),1) = N_selparm; // first parameter used by this method - Comp_Err_parmloc(Comp_Err_Sz2(f),2) = ParCount; // use this index in write_report to display the correct parameter label - switch (Comp_Err_Sz(f)) - { - case 1: - { - ParmLabel += "ln(DM_theta)_Sz_P" + NumLbl(Comp_Err_Sz2(f)); - break; - } - case 2: - { - ParmLabel += "ln(DM_Beta)_Sz_P" + NumLbl(Comp_Err_Sz2(f)); - break; - } - case 3: - { - ParmLabel += "ln(tweedie_Phi)_Sz_P" + NumLbl(Comp_Err_Sz2(f)); - N_selparm ++; - ParCount ++; - ParmLabel += "ln(tweedie_Power)_Sz_P" + NumLbl(Comp_Err_Sz2(f)); - break; - } - } - } - } - // note that it would take a lot more code to append labels for parameters that are used by more than one fleet or type - } - } - - for (f = 1; f <= Nfleet; f++) - { - if (disc_N_fleet(f) > 0 && seltype(f, 2) == 0 && seltype(f + Nfleet, 2) == 0) - { - warnstream << "discard data exists for fleet " << f << " but retention parms not setup " ; - write_message (FATAL, 0); // EXIT! - } - else if (disc_N_fleet(f) == 0 && seltype(f, 2) > 0) - { - warnstream << "no discard amount data for fleet " << f << " but retention parms have been defined "; - write_message (WARN, 0); - } - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.9.3 #Read selex parameters - init_matrix selparm_1(1,N_selparm,1,14) - ivector selparm_fleet(1,N_selparm) // holds the fleet ID for each selparm - // equivalent to the mgp_type() for MGparms - matrix mirror_mask(1,Nfleet,1,nlength) - matrix mirror_mask_a(1,Nfleet,0,nages) - LOCAL_CALCS - // clang-format on - mirror_mask.initialize(); - mirror_mask_a.initialize(); - selparm_fleet.initialize(); - echoinput << " selex and composition base parameters " << endl; - for (g = 1; g <= N_selparm; g++) - { - echoinput << g << " ## " << selparm_1(g) << " ## " << ParmLabel(ParCount - N_selparm + g) << endl; - } - - // now identify the fleet associated with each parameter - echoinput << "identify the fleet associated with each parameter" << endl; - j = 0; - for (f = 1; f <= 2 * Nfleet; f++) - { - if (N_selparmvec(f) > 0) - { - for (g = 1; g <= N_selparmvec(f); g++) - { - j++; - selparm_fleet(j) = f; - } - } - } - if (Comp_Err_ParmCount > 0) - { - echoinput << "comp_error parameter selection by partition (row) and fleet" << endl - << "L_type: " << Comp_Err_L << endl - << "L_parm: " << Comp_Err_L2 << endl - << "A_type: " << Comp_Err_A << endl - << "A_parm: " << Comp_Err_A2 << endl - << "Sz_type: " << Comp_Err_Sz << endl - << "Sz_parm: " << Comp_Err_Sz2 << endl; - - for (f = 1; f <= Nfleet; f++) - for (int parti = 0; parti <= 2; parti++) - { - // if Dirichlet was indicated, set fleet for this parameter - if (Comp_Err_L2(parti, f) > 0) - { - j = Comp_Err_parmloc(Comp_Err_L2(parti, f),1); - selparm_fleet(j) = f; - } - if (Comp_Err_A2(f) > 0) - { - j = Comp_Err_parmloc(Comp_Err_A2(f),1); - selparm_fleet(j) = f; - } - } - } - echoinput<<"selparm_fleet:"< 0) // could point to length or age retention - { - k = parmcount + RetainParm(f) + 2; - if (selparm_1(k, 1) >= 0.0) // check to see if user has bounds relevant for 3.24 format - { - warnstream << "Converting asymptotic retention parameter to 1/(1+e(-x)) format for fleet: " << f << " parm: " << k << endl; - warnstream << "++ because parm min was >=0.0" << endl; - warnstream << "++ old min, max, init, prior: " << selparm_1(k)(1, 4); - write_message (WARN, 1); - new_lower_bound = -10.; - new_upper_bound = 10.; - - // check initial value against lower and upper bounds first - if (selparm_1(k, 3) <= selparm_1(k, 1)) - { - selparm_1(k, 3) = new_lower_bound; - } - else if (selparm_1(k, 3) >= selparm_1(k, 2)) - { - selparm_1(k, 3) = new_upper_bound; - } - else if (selparm_1(k, 3) > 0.) - { - if (selparm_1(k, 3) < 1.0) - { - selparm_1(k, 3) = -log(1.0 / selparm_1(k, 3) - 1.0); - } - else - { - selparm_1(k, 3) = 999.; - } // hardwire to force to be 1.0 - } - else - { - selparm_1(k, 3) = -999.; - } // hardwire to force to 0.0 - - // check prior value against lower and upper bounds first - if (selparm_1(k, 4) <= selparm_1(k, 1)) - { - selparm_1(k, 4) = new_lower_bound; - } - else if (selparm_1(k, 4) >= selparm_1(k, 2)) - { - selparm_1(k, 4) = new_upper_bound; - } - else if (selparm_1(k, 4) > 0.) - { - if (selparm_1(k, 4) < 1.0) - { - selparm_1(k, 4) = -log(1.0 / selparm_1(k, 4) - 1.0); - } - else - { - selparm_1(k, 4) = 999.; - } // hardwire to force to be 1.0 - } - else - { - selparm_1(k, 4) = -999.; - } // hardwire to force to 0.0 - - selparm_1(k, 1) = new_lower_bound; - selparm_1(k, 2) = new_upper_bound; - - warnstream << "new min, max, init, prior: " << selparm_1(k)(1, 4); - write_message (WARN, 0); - } - } - parmcount += N_selparmvec(f); - } - - echoinput << "check on mirror bounds" << endl; - parmcount = 0; - for (f = 1; f <= Nfleet; f++) - { - if (seltype(f, 1) == 5) // uses mirror - { - i = int(selparm_1(parmcount + 1, 3)); - j = int(selparm_1(parmcount + 2, 3)); - echoinput << "check on size selex mirror bounds for fleet: " << f << " " << endl; - if (i <= -1) { - i = 1; - } // legit input, use to set mirror_mask - else if (i == 0) - { - echoinput << " size selex mirror, length range min bin read is (" << i << ") reset to 1 for fleet: " << f << endl; - selparm_1(parmcount + 1, 3) = 1; - i = 1; - } - if (j <= -1) { - j = nlength; - } // legit input, use to set mirror_mask - else if (j == 0) - { - warnstream << "size selex mirror, length range max bin read is (" << j << ") reset to nlength for fleet: " << f; - write_message (ADJUST, 1); - selparm_1(parmcount + 2, 3) = -1; - j = nlength; - } - if (j > nlength) - { - warnstream << "size selex mirror length is > nlength for fleet: " << f << " reset to nlength"; - write_message (ADJUST, 0); - selparm_1(parmcount + 2, 3) = -1; - j = nlength; - } - if (i > j) - { - warnstream << "size selex mirror length range min (" << i << ") greater than max (" << j << ") for fleet: " << f; - write_message (FATAL, 0); // EXIT! - } - if (j > nlength) - { - warnstream << "size selex mirror length is > nlength for fleet: " << f << " reset to nlength"; - write_message (ADJUST, 0); - selparm_1(parmcount + 2, 3) = nlength; - j = nlength; - } - if (i > j) - { - warnstream << "size selex mirror length range min (" << i << ") greater than max (" << j << ") for fleet: " << f; - write_message (FATAL, 0); // EXIT! - } - mirror_mask(f) = 1.0e-10; - mirror_mask(f)(i, j) = 1.; - echoinput << "fleet: " << f << " set mirror for bins: " << i << " through " << j << endl; - echoinput << "set to no prior and not estimated, just in case " << endl; - selparm_1(parmcount + 1, 6) = 0; - selparm_1(parmcount + 2, 6) = 0; - selparm_1(parmcount + 1, 7) = -99; - selparm_1(parmcount + 2, 7) = -99; - echoinput << "end check on mirror mask: " << endl; - } - else if (seltype(f, 1) == 11) // setting min-max len range - { - echoinput << "check on size selex min-max for fleet: " << f << " " << selparm_1(parmcount + 1, 3) << " " << selparm_1(parmcount + 2, 3) << " nsize bins: " << nlength << endl; - i = int(selparm_1(parmcount + 1, 3)); - j = int(selparm_1(parmcount + 2, 3)); - if ((selparm_1(parmcount + 1, 3) - i) > 0.) - { - warnstream << "fleet: " << f << " age selex range min read is: " << selparm_1(parmcount + 1, 3) << "; SS3 expected an integer and will convert "; - write_message (ADJUST, 0); - selparm_1(parmcount + 1, 3) = i; - } - if ((selparm_1(parmcount + 2, 3) - j) > 0.) - { - warnstream << "fleet: " << f << " age selex range max read is: " << selparm_1(parmcount + 2, 3) << "; SS3 expected an integer and will convert "; - write_message (ADJUST, 0); - selparm_1(parmcount + 2, 3) = j; - } - if (selparm_1(parmcount + 2, 3) > nlength) - { - warnstream << "fleet: " << f << " age selex range max read is: " << selparm_1(parmcount + 2, 3) << "; is >nsizes; SS3 will convert "; - write_message (ADJUST, 0); - selparm_1(parmcount + 2, 3) = nlength; - } - echoinput << " accepted range: " << selparm_1(parmcount + 1, 3) << " " << selparm_1(parmcount + 2, 3) << endl; - echoinput << "set to no prior and not estimated, just in case " << endl; - selparm_1(parmcount + 1, 6) = 0; - selparm_1(parmcount + 2, 6) = 0; - selparm_1(parmcount + 1, 7) = -99; - selparm_1(parmcount + 2, 7) = -99; - mirror_mask(f) = 1.0e-10; - mirror_mask(f)(selparm_1(parmcount + 1, 3), selparm_1(parmcount + 2, 3)) = 1.0; - echoinput << "create mirror_mask: " << mirror_mask(f) << endl; - echoinput << "end check on min-max ranges for size selex=11" << endl; - } - - parmcount += N_selparmvec(f); - } - for (f = 1; f <= Nfleet; f++) - { - if (seltype(f + Nfleet, 1) == 11) // setting min-max age range - { - echoinput << "check on age selex min-max for fleet: " << f << " " << selparm_1(parmcount + 1, 3) << " " << selparm_1(parmcount + 2, 3) << " nages: " << nages << endl; - i = int(selparm_1(parmcount + 1, 3)); - j = int(selparm_1(parmcount + 2, 3)); - echoinput << "set to no prior and not estimated, just in case " << endl; - selparm_1(parmcount + 1, 6) = 0; - selparm_1(parmcount + 2, 6) = 0; - selparm_1(parmcount + 1, 7) = -99; - selparm_1(parmcount + 2, 7) = -99; - if ((selparm_1(parmcount + 1, 3) - i) > 0.) - { - warnstream << "fleet: " << f << " age selex range min read is: " << selparm_1(parmcount + 1, 3) << "; SS3 expected an integer and will convert "; - write_message (ADJUST, 0); - selparm_1(parmcount + 1, 3) = i; - } - if ((selparm_1(parmcount + 2, 3) - j) > 0.) - { - warnstream << "fleet: " << f << " age selex range max read is: " << selparm_1(parmcount + 2, 3) << "; SS3 expected an integer and will convert "; - write_message (ADJUST, 0); - selparm_1(parmcount + 2, 3) = j; - } - if (selparm_1(parmcount + 2, 3) > nages) - { - warnstream << "fleet: " << f << " age selex range max read is: " << selparm_1(parmcount + 2, 3) << "; is >nages; SS3 will convert "; - write_message (ADJUST, 0); - selparm_1(parmcount + 2, 3) = nages; - } - echoinput << " accepted range: " << selparm_1(parmcount + 1, 3) << " " << selparm_1(parmcount + 2, 3) << endl; - mirror_mask_a(f) = 0; - mirror_mask_a(f)(selparm_1(parmcount + 1, 3), selparm_1(parmcount + 2, 3)) = 1.0; - echoinput << "create mirror_mask: " << mirror_mask_a(f) << endl; - echoinput << "end check on min-max ranges for age selex=11" << endl; - } - // seltype 41 check on the min-max age range could go here, rather than in selex calcs - parmcount += N_selparmvec(f + Nfleet); - } - // clang-format off - END_CALCS - - int timevary_parm_cnt_sel; - int timevary_parm_start_sel; - ivector selparm_timevary(1,N_selparm) // holds index of timevary used by this base parameter - imatrix timevary_sel(styr-3,YrMax+1,1,2*Nfleet) - int TwoD_AR_do; - int TwoD_AR_cnt - int makefishsel_yr - ivector TwoD_AR_use(1,2*Nfleet); - - LOCAL_CALCS - // clang-format on - timevary_parm_start_sel = 0; - timevary_parm_cnt_sel = 0; - timevary_sel.initialize(); - selparm_timevary.initialize(); - TwoD_AR_use.initialize(); - timevary_used = 0; - for (j = 1; j <= N_selparm; j++) - { - echoinput << j << " sel " << selparm_1(j) << endl; - k = selparm_fleet(j); - if (selparm_1(j, 13) == 0 && selparm_1(j, 8) == 0 && selparm_1(j, 9) == 0) - { - // no time-vary parameter effects - } - else if (k == 0) - { - warnstream << "Comp_err parameters cannot have timevary effects "; - write_message (WARN, 0); - } - else // set up a timevary parameter defintion - { - timevary_pass = column(timevary_sel, k); // year vector for this category of selparm - timevary_used = 1; - ivector timevary_setup(1, 14); // temporary vector for timevary specs - timevary_setup.initialize(); - if (timevary_parm_start_sel == 0) timevary_parm_start_sel = timevary_parm_cnt + 1; - echoinput << endl - << " timevary for sel parameter: " << j << endl; - timevary_cnt++; // count parameters with time-vary effect - selparm_timevary(j) = timevary_cnt; // base parameter will use this timevary specification - timevary_setup(1) = 5; // indicates a sel parm - timevary_setup(2) = j; // index of base parm within that type of parameter - timevary_setup(13) = firstselparm + j; // index of base parm relative to ParCount which is continuous across all types of parameters - timevary_setup(3) = timevary_parm_cnt + 1; // first TV parameter within total list of all timevary parms - z = selparm_1(j, 13); // specified block or trend definition - - k = int(abs(selparm_1(j, 8)) / 100); // find the env link code - timevary_setup(6) = k; // link code for env - if (selparm_1(j, 8) > 0) // env variable used - { - timevary_setup(7) = int(abs(selparm_1(j, 8))) - k * 100; - k = timevary_setup(7); - // for(y=styr-1;y<=YrMax;y++) env_data_pass(y)=env_data_RD(y,k); - env_data_pass(1) = env_data_minyr(k); - env_data_pass(2) = env_data_maxyr(k); - } - else if (abs(selparm_1(j, 8) > 0)) // density-dependence - { - timevary_setup(7) = -int(abs(selparm_1(j, 8)) - k * 100); - do_densitydependent = 1; - k = 0; - env_data_pass.initialize(); - } - if (z > 0) // doing blocks - { - if (z > N_Block_Designs) - { - warnstream << "selex block request exceeds N_block patterns"; - write_message (FATAL, 0); // EXIT! - } - create_timevary(selparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), selparm_fleet(j), Block_Design(z), env_data_pass, N_parm_dev, finish_starter); - } - else - { - create_timevary(selparm_1(j), timevary_setup, timevary_pass, autogen_timevary(timevary_setup(1)), selparm_fleet(j), block_design_null, env_data_pass, N_parm_dev, finish_starter); - } - timevary_def.push_back(timevary_setup(1, 14)); - for (y = styr - 3; y <= YrMax + 1; y++) { - timevary_sel(y, selparm_fleet(j)) = timevary_pass(y); - } // year vector for this category - } - } - if (do_densitydependent == 1 && Fcast_timevary_Selex == 1) { - warnstream << "Fcast_timevary_Selex is 1 (do averages); user should change to 0 (timevary) because density dependence affects a selectivity parameter or growth "< 0) - { - if (timevary_used == 1) autogen_timevary(5) = 1; // indicate that some parameter is time-varying - timevary_parm_cnt_sel = timevary_parm_cnt; // last timevary_selparm - N_selparm3 = N_selparm + timevary_parm_cnt_sel - timevary_parm_start_sel + 1; - } - N_selparm2 = N_selparm3; // for distinguishing the 2D_AR parms - - // now add parameters for the 2D_AR1 approach - // Input in first parameter line several setup factors: rho_y, rho_a, ymin, ymax, amin, amax, use_rho, sigma_amax, null9, null10, null11, null12, null13,null14 - // then one to several parameter lines containing age-specific sigma for ages amin to sigma_amax - // note that parm_dev_minyr and parm_dev_maxyr need to map onto the matrix defined by ymin, ymax, amin, amax, - TwoD_AR_cnt = 0; - echoinput << " now read 0/1 for 2D_AR" << endl; - *(ad_comm::global_datafile) >> TwoD_AR_do; - echoinput << TwoD_AR_do << " #_ 0/1 to request experimental 2D_AR selectivity deviations " << endl; - - if (TwoD_AR_do > 0) - { - // elements 1-11 are read from control.ss; 12 and 13 are calculated internally - // 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase - // 10-before yr range, 11=after yr range, 12-N_parm_dev, 13-selparm_location - // rho is used only to calculate the cor matrix in prelim_calcs; it can never be estimated - // sigma_sel is generally best fixed to a value of 1.0, estimation should not be undertaken without thorough investigation - ivector tempvec(1, 13); - tempvec.initialize(); - TwoD_AR_def.push_back(tempvec); // bypass that pesky zeroth row - TwoD_AR_def_rd.push_back(tempvec); // bypass that pesky zeroth row - echoinput << "read specification for first 2D_AR1: fleet, ymin, ymax, amin, amax, sigma_amax, use_rho, len1/age2, phase, before, after" << endl; - ender = 0; - do - { - ivector tempvec(1, 13); - ivector tempvec2(1, 13); - tempvec.initialize(); - tempvec2.initialize(); - *(ad_comm::global_datafile) >> tempvec(1, 11); - tempvec2 = tempvec; - echoinput << tempvec(1, 11) << endl; - f = tempvec(1); - if (f < 0) - { - ender = 1; - } - else - { - N_parm_dev++; - TwoD_AR_cnt++; - if (tempvec(8) == 1) - { - anystring = "LEN"; - fs = f; - TwoD_AR_use(fs) = TwoD_AR_cnt; - } - else - { - anystring = "AGE"; - fs = f + Nfleet; - TwoD_AR_use(fs) = TwoD_AR_cnt; - } - - // save_sigmaval=tempvec(6); // to restore into TwoD_AR_def_rd later - if (tempvec(6) < tempvec(4)) tempvec(6) = tempvec(4); - if (tempvec(6) > tempvec(5)) tempvec(6) = tempvec(5); - int sigma_amax = tempvec(6); - int use_rho = tempvec(7); - int amin = tempvec(4); - - TwoD_AR_def_rd.push_back(tempvec2); // saves the values as read for writing to control.ss_new - - tempvec(12) = N_parm_dev; - // apply two lines below later when the timevary_setup is created - // tempvec(12)=1; // used for dimensioning the dev vectors in SS_param parm_dev_minyr(k) - // tempvec(13)=(tempvec(3)-tempvec(2)+1)*(tempvec(5)-amin+1); //parm_dev_maxyr(k) - tempvec(13) = N_selparm2 + 1; - z = f; - if (tempvec(8) == 2) z = f + Nfleet; - for (y = tempvec(2); y <= tempvec(3) + 1; y++) { - timevary_sel(y, z) = 1; - } - TwoD_AR_def.push_back(tempvec); - echoinput << "now read a parameter line with the sigma for each age from: " << amin << " to sigma_amax: " << sigma_amax << endl; - for (j = amin; j <= sigma_amax; j++) - { - dvector dtempvec(1, 7); // Lo, Hi, init, prior, prior_sd, prior_type, phase; - dtempvec.initialize(); - *(ad_comm::global_datafile) >> dtempvec(1, 7); - timevary_parm_rd.push_back(dtempvec); - echoinput << " sigmasel for " << anystring << " " << j << " " << dtempvec(3) << endl; - if (timevary_parm_start_sel == 0) { - timevary_parm_start_sel = timevary_parm_cnt + 1; - timevary_parm_cnt_sel = timevary_parm_cnt; - } - ParCount++; - timevary_parm_cnt++; - timevary_parm_cnt_sel++; - N_selparm2++; - ParmLabel += "sigmasel_" + fleetname(f) + "(" + NumLbl(f) + ")_" + anystring + "(" + NumLbl(max(1, j)) + ")"; - if (dtempvec(7) > 0) - { - warnstream << "2DAR Sigmasel parameter is not normally estimable; adequate performance usually obtained by fixing to value of 1.0"; - write_message (WARN, 0); - } - } - if (use_rho == 1) - { - warnstream << "2DAR rho is incompletely implemented; it should only be used experimentally and never estimated"; - write_message (WARN, 0); - echoinput << "read one parameter line for rho_yr, then one for rho_age (or length)" << endl; - { - dvector dtempvec(1, 7); // Lo, Hi, init, prior, prior_sd, prior_type, phase; - dtempvec.initialize(); - *(ad_comm::global_datafile) >> dtempvec(1, 7); - dtempvec(7) = -1; // force no estimation - timevary_parm_rd.push_back(dtempvec); - echoinput << " rho year: " << dtempvec(3) << endl; - ParCount++; - timevary_parm_cnt++; - timevary_parm_cnt_sel++; - N_selparm2++; - ParmLabel += "rho_yr_" + fleetname(f) + "(" + NumLbl(f) + ")_" + anystring; - } - { - dvector dtempvec(1, 7); // Lo, Hi, init, prior, prior_sd, prior_type, phase; - dtempvec.initialize(); - *(ad_comm::global_datafile) >> dtempvec(1, 7); - dtempvec(7) = -1; // force no estimation - timevary_parm_rd.push_back(dtempvec); - echoinput << " rho " << anystring << ": " << dtempvec(3) << endl; - ParCount++; - timevary_parm_cnt++; - timevary_parm_cnt_sel++; - N_selparm2++; - ParmLabel += "rho_" + fleetname(f) + "(" + NumLbl(f) + ")" + anystring; - } - } - echoinput << "ready to read next fleet's 2DAR specs, or terminate by reading line starting with negative fleet" << endl; - } - } while (ender == 0); - } - echoinput << "N_selparm: " << N_selparm << " with timevary: " << N_selparm3 << " with TV and 2D_AR: " << N_selparm2 << " timevary parm range for sel: " << timevary_parm_start_sel << " " << timevary_parm_cnt_sel << " " << timevary_parm_cnt << endl; - - if (timevary_parm_cnt > 0) - { - echoinput << "list all parms used for timevary implementation" << endl; - for (y = 1; y <= timevary_parm_cnt; y++) - { - echoinput << y << " parm " << timevary_parm_rd[y](1, 7) << endl; - } - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.9.xx #Create arrays needed for timevary_parameters - vector baseparm_min(1,timevary_parm_cnt) - vector baseparm_max(1,timevary_parm_cnt) - -!!// SS_Label_Info_4.9.9 #Create arrays for the total set of selex parameters - 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) - ivector selparm_PH_soft(1,N_selparm2) - - LOCAL_CALCS - // clang-format on - // SS_Label_Info_4.9.12 #Create vectors, e.g. selparm_PH(), that will be used to create actual array of estimted parameters - 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, 6); - selparm_CV(f) = selparm_1(f, 5); - selparm_PH(f) = selparm_1(f, 7); - } - j = N_selparm; - if (timevary_parm_start_sel > 0) - { - for (f = timevary_parm_start_sel; f <= timevary_parm_cnt_sel; f++) - { - j++; - selparm_LO(j) = timevary_parm_rd[f](1); - selparm_HI(j) = timevary_parm_rd[f](2); - selparm_RD(j) = timevary_parm_rd[f](3); - selparm_PR(j) = timevary_parm_rd[f](4); - selparm_PRtype(j) = timevary_parm_rd[f](6); - selparm_CV(j) = timevary_parm_rd[f](5); - selparm_PH(j) = timevary_parm_rd[f](7); - } - } - - // SS_Label_Info_4.9.10 #Special bound checking for size selex parameters - z = 0; // parameter counter within this section - for (f = 1; f <= Nfleet; f++) - { - if (seltype(f, 1) == 8 || seltype(f, 1) == 22 || seltype(f, 1) == 23 || seltype(f, 1) == 24 || seltype(f, 1) == 2) - { - if (selparm_1(z + 1, 1) < len_bins_m(2)) - { - warnstream << "Fleet:_" << f << "min bound on parameter for size at peak is " << selparm_1(z + 1, 1) << "; should be >= midsize bin 2 (" << len_bins_m(2) << ")"; - write_message (WARN, 0); - } - if (selparm_1(z + 1, 1) < len_bins_dat(1) && (seltype(f, 1) == 24 || seltype(f, 1) == 2)) - { - warnstream << "Fleet:_" << f << "min bound on parameter for size at peak is " << selparm_1(z + 1, 1) << "; which is < min databin (" << len_bins_dat(1) << "), so illogical."; - write_message (WARN, 0); - } - if (selparm_1(z + 1, 2) > len_bins_m(nlength - 1)) - { - warnstream << "Fleet:_" << f << "max bound on parameter for size at peak is " << selparm_1(z + 1, 2) << "; should be <= midsize bin N-1 (" << len_bins_m(nlength - 1) << ")"; - write_message (WARN, 0); - } - } - z += N_selparmvec(f); - } - // end special bound checking - - // SS_Label_Info_4.9.11 #Create time/fleet array indicating when changes in selex occcur - timevary_sel(styr - 3) = 1; - timevary_sel(styr) = 1; - timevary_sel(endyr + 1) = 1; - - for (y = styr + 1; y <= endyr; y++) - { - z = 0; // parameter counter within this section - for (f = 1; f <= 2 * Nfleet; f++) - { - if (seltype(f, 1) == 5 || seltype(f, 1) == 15) // mirror - { - if (f <= Nfleet) { - timevary_sel(y, f) = timevary_sel(y, seltype(f, 4)); - } - else - { - timevary_sel(y, f) = timevary_sel(y, seltype(f, 4) + Nfleet); - } - z += seltype_Nparam(seltype(f, 1)); - } - if (f <= Nfleet && seltype(f, 2) < 0) // retention is being mirrored - { - k = -seltype(f, 2); - if (timevary_sel(y, k) > 0) timevary_sel(y, f) = 1; - } - if (f <= Nfleet) - { - // CHECK: why is below needed for WTage_rd>0 - if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || WTage_rd > 0) - { - timevary_sel(y, f) = 1; - } - } - } // end type - - } // end years - echoinput << "Recalc_flag_for_length_selex_recalc_by_year" << endl; - for (f = 1; f <= Nfleet; f++) - { - echoinput << f << " " << fleetname(f) << " " << column(timevary_sel, f) << endl; - } - echoinput << "Recalc_flag_for_age_selex_recalc_by_year" << endl; - for (f = 1; f <= Nfleet; f++) - { - int f2 = f + Nfleet; - echoinput << f << " " << fleetname(f) << " " << column(timevary_sel, f2) << endl; - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.10 #Read tag recapture parameter setup -// if Tags are used, the read parameters for initial tag loss, chronic tag loss, andd -// fleet-specific tag reporting. Of these, only reporting rate will be allowed to be time-varying - init_int TG_custom; // 1=read; 0=create default parameters -!! echoinput<0) echoinput<<" Tag parameters as read "<0) {k1=k;} else {k1=1;} - vector TG_parm_LO(1,k1); - vector TG_parm_HI(1,k1); - ivector TG_parm_PH(1,k1); - int firsttagparm; - LOCAL_CALCS - // clang-format on - if (Do_TG > 0) - { - if (TG_custom == 1) - { - TG_parm2 = TG_parm1; // assign to the read values - } - else - { - TG_parm2.initialize(); - onenum = " "; - for (j = 1; j <= N_TG; j++) - { - TG_parm2(j, 1) = -10; // min - TG_parm2(j, 2) = 10; // max - TG_parm2(j, 3) = -7.; // init - TG_parm2(j, 4) = -7.; // prior - TG_parm2(j, 5) = 0.001; // prior is quite diffuse - TG_parm2(j, 6) = 1.; // default prior type is symmetric beta - if (j == 1) - { - TG_parm2(j, 7) = -4; - } // phase - else - { - TG_parm2(j, 7) = -1000; - } // phase - } - - for (j = 1; j <= N_TG; j++) - { - TG_parm2(j + N_TG) = TG_parm2(1); // set chronic tag retention equal to initial tag_retention - } - for (j = 1; j <= N_TG; j++) // set overdispersion - { - TG_parm2(j + 2 * N_TG, 1) = 1; // min - TG_parm2(j + 2 * N_TG, 2) = 10; // max - TG_parm2(j + 2 * N_TG, 3) = 2.; // init - TG_parm2(j + 2 * N_TG, 4) = 2.; // prior - TG_parm2(j + 2 * N_TG, 5) = 0.001; // prior is quite diffuse - TG_parm2(j + 2 * N_TG, 6) = 1.; // default prior type is symmetric beta - if (j == 1) - { - TG_parm2(j + 2 * N_TG, 7) = -4; - } // phase - else - { - TG_parm2(j + 2 * N_TG, 7) = -1000; - } // phase - } - for (j = 1; j <= Nfleet1; j++) - { - TG_parm2(j + 3 * N_TG, 1) = -10; // min - TG_parm2(j + 3 * N_TG, 2) = 10; // max - TG_parm2(j + 3 * N_TG, 3) = 7.; // init - TG_parm2(j + 3 * N_TG, 4) = 7.; // prior - TG_parm2(j + 3 * N_TG, 5) = 0.001; // prior is quite diffuse - TG_parm2(j + 3 * N_TG, 6) = 1.; // default prior type is symmetric beta - if (j == 1) - { - TG_parm2(j + 3 * N_TG, 7) = -4; - } // phase - else - { - TG_parm2(j + 3 * N_TG, 7) = -1000; - } // phase - } - // set tag reporting decay to nil decay rate - for (j = 1; j <= Nfleet1; j++) - { - k = j + 3 * N_TG + Nfleet1; - TG_parm2(k, 1) = -4.; - TG_parm2(k, 2) = 0.; - TG_parm2(k, 3) = 0.; - TG_parm2(k, 4) = 0.; // prior of zero - TG_parm2(k, 5) = 2.; // sd dev of prior - TG_parm2(k, 6) = 6.; // default prior type is squared dev - if (j == 1) - { - TG_parm2(k, 7) = -4; - } // phase - else - { - TG_parm2(k, 7) = -1000; - } // phase - } - } - - TG_parm_LO = column(TG_parm2, 1); - TG_parm_HI = column(TG_parm2, 2); - k = 3 * N_TG + 2 * Nfleet1; - for (j = 1; j <= k; j++) TG_parm_PH(j) = TG_parm2(j, 7); // write it out due to no typecast available - - echoinput << "create tag labels " << endl; - // SS_Label_Info_4.10.1 #Create parameter count and parameter names for tag parameters - onenum = " "; - firsttagparm = ParCount; - for (j = 1; j <= N_TG; j++) - { - sprintf(onenum, "%d", j); - ParCount++; - ParmLabel += "TG_loss_init_" + onenum + CRLF(1); - } - for (j = 1; j <= N_TG; j++) - { - sprintf(onenum, "%d", j); - ParCount++; - ParmLabel += "TG_loss_chronic_" + onenum + CRLF(1); - } - for (j = 1; j <= N_TG; j++) - { - sprintf(onenum, "%d", j); - ParCount++; - ParmLabel += "TG_overdispersion_" + onenum + CRLF(1); - if (TG_parm_LO(2 * N_TG + j) < 1.0) - { - warnstream << "Overdispersion par_min is <1.0 for TG= " << j << "; value = " << TG_parm_LO(2 * N_TG + j) << "; changed to 1.001 for run"; - write_message (ADJUST, 0); - TG_parm_LO(2 * N_TG + j) = 1.001; - } - if (TG_parm2(2 * N_TG + j, 3) < 1.0) - { - warnstream << "Overdispersion parameter is <1.0 for TG= " << j << "; value = " << TG_parm2(2 * N_TG + j, 3) << "; changed to 1.001 for run"; - write_message (ADJUST, 0); - TG_parm2(2 * N_TG + j, 3) = 1.001; - } - } - for (j = 1; j <= Nfleet; j++) - { - if (fleet_type(j) <= 2) - { - sprintf(onenum, "%d", j); - ParCount++; - ParmLabel += "TG_report_fleet:_" + onenum + CRLF(1); - } - } - for (j = 1; j <= Nfleet; j++) - { - if (fleet_type(j) <= 2) - { - sprintf(onenum, "%d", j); - ParCount++; - ParmLabel += "TG_rpt_decay_fleet:_" + onenum + CRLF(1); - } - } - - echoinput << " Processed/generated Tag parameters " << endl - << TG_parm2 << endl; - } - else - { - TG_parm_LO.initialize(); - TG_parm_HI.initialize(); - TG_parm_PH.initialize(); - } - // clang-format off - END_CALCS - - ivector parm_dev_minyr(1,N_parm_dev); - ivector parm_dev_maxyr(1,N_parm_dev); - ivector parm_dev_PH(1,N_parm_dev); - int Do_Var_adjust - - ivector parm_dev_type(1,N_parm_dev); // distinguish parameter dev vectors from 2DAR devs - ivector parm_dev_use_rho(1,N_parm_dev); // uses rho parameter, or not - ivector parm_dev_info(1,N_parm_dev); // pointer from list of devvectors to 2DAR list - ivector TwoD_AR_ymin(1,TwoD_AR_cnt) - ivector TwoD_AR_ymax(1,TwoD_AR_cnt) - ivector TwoD_AR_amin(1,TwoD_AR_cnt) - ivector TwoD_AR_amax(1,TwoD_AR_cnt) - ivector TwoD_AR_before(1,TwoD_AR_cnt) // what to do in years before the year range - ivector TwoD_AR_after(1,TwoD_AR_cnt) // what to do in years after the year range - ivector TwoD_AR_degfree(1,TwoD_AR_cnt) // N years with observations * nages in the 2D_AR range - ivector TwoD_AR_cor_dim(1,TwoD_AR_cnt) - - LOCAL_CALCS - // clang-format on - parm_dev_use_rho.initialize(); - if (timevary_cnt > 0) - { - for (j = 1; j <= timevary_cnt; j++) // loop all timevary to set up devs; note that 2D_AR1 is counted in N_parm_dev, but not in timevary_cnt - { - ivector timevary_setup(1, 14); - timevary_setup(1, 14) = timevary_def[j](1, 14); - if (timevary_setup(8) > 0) - { - k = timevary_setup(8); // dev vector used - parm_dev_minyr(k) = timevary_setup(10); // used for dimensioning the dev vectors in SS_param - parm_dev_maxyr(k) = timevary_setup(11); - parm_dev_PH(k) = timevary_setup(12); - echoinput << " dev vector #: " << k << " setup: " << timevary_setup << " phase: " << parm_dev_PH(k) << endl; - f = timevary_setup(13); // index of base parameter - int picker = timevary_setup(9); - parm_dev_type(k) = 1; // so P'=P+dev*se with objfun using -log(1); so expects se of devs to be approx unit normal - // parm_dev_type is used in SS_objfunc.tpl - if (picker > 20) - { - picker -= 20; - timevary_setup(14) = 1; // flag to continue last dev through to YrMax - timevary_def[j](14) = 1; // save in array also - echoinput << j << " setting flag to continue last dev " << Fcast_timevary_Selex << " " << firstselparm << " " << f << " " << firstselparm + N_selparm << " " << endl; - if (Fcast_timevary_Selex == 1 && f >= firstselparm && f <= (firstselparm + N_selparm)) - { - warnstream << "for selectivity parmdevs, must change Fcast_timevary_Selex to 0 when using continue last dev"; - write_message (WARN, 1); - } - } - if (picker > 10) - { - parm_dev_type(k) = 3; // P'=P+dev; objfun using -log(se) to match 3.30.12 and earlier - picker -= 10; - } - if (picker == 6) parm_dev_type(k) = 4; // add penalty to keep rmse near 1. Needs to estimate stddev factor - // this works, but slow final convergence because getting stddev exactly to 1.0 causes high correlation among devs - timevary_setup(9) = picker; // set to its core function because parm_dev_type has been setup - timevary_def[j](9) = picker; // save in array also - - parm_dev_use_rho(k) = 0; - // require rho to be used for some dev approaches - if (picker == 4 || picker == 5 || picker == 6) parm_dev_use_rho(k) = 1; - for (y = parm_dev_minyr(k); y <= parm_dev_maxyr(k); y++) - { - sprintf(onenum, "%d", y); - ParCount++; - if (picker == 1) - { - ParmLabel += ParmLabel(f) + "_DEVmult_" + onenum + CRLF(1); - } - else if (picker == 2) - { - ParmLabel += ParmLabel(f) + "_DEVadd_" + onenum + CRLF(1); - } - else if (picker == 3) - { - ParmLabel += ParmLabel(f) + "_DEVrwalk_" + onenum + CRLF(1); - } - else if (picker == 4) - { - ParmLabel += ParmLabel(f) + "_DEV_MR_rwalk_" + onenum + CRLF(1); - } - else if (picker == 5) - { - ParmLabel += ParmLabel(f) + "_DEV_MR_rwalk_bnd_" + onenum + CRLF(1); - } // for bounding result on base parm min-max - else if (picker == 6) - { - ParmLabel += ParmLabel(f) + "_DEV_MR_rwalk_pen_" + onenum + CRLF(1); - } // like 3.24 - else - { - warnstream << "illegal parmdevtype for parm " << f; - write_message (FATAL, 0); // EXIT! - } - } - } - } - } - - // now add dev vectors for the 2D_AR1 - TwoD_AR_degfree.initialize(); - for (f = 1; f <= TwoD_AR_cnt; f++) - { - ivector TwoD_AR_setup(1, 13); - // 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase - // 10-mindimension, 11=maxdim, 12-N_parm_dev, 13-selparm_location - // note that elements 10 and 11 have different usages when used for time-varying parameters - TwoD_AR_setup(1, 13) = TwoD_AR_def[f](1, 13); - echoinput << f << " 2D_AR1 setup " << TwoD_AR_setup << endl; - k = TwoD_AR_setup(12); // dev vector used - parm_dev_minyr(k) = 1; // used for dimensioning the dev vectors in SS_param parm_dev_minyr(k) - parm_dev_maxyr(k) = (TwoD_AR_setup(3) - TwoD_AR_setup(2) + 1) * (TwoD_AR_setup(5) - TwoD_AR_setup(4) + 1); //parm_dev_maxyr(k) - parm_dev_PH(k) = TwoD_AR_setup(9); - parm_dev_type(k) = 2; // distinguish 2D_AR devs from parameter devs - parm_dev_use_rho(k) = 0; // need to update when implemented - parm_dev_info(k) = f; // pointer from parmdev list to the 2D_AR list - TwoD_AR_ymin(f) = TwoD_AR_setup(2); - TwoD_AR_ymax(f) = TwoD_AR_setup(3); - TwoD_AR_amin(f) = TwoD_AR_setup(4); - TwoD_AR_amax(f) = TwoD_AR_setup(5); - TwoD_AR_before(f) = TwoD_AR_setup(10); - TwoD_AR_after(f) = TwoD_AR_setup(11); - TwoD_AR_cor_dim(f) = (TwoD_AR_ymax(f) - TwoD_AR_ymin(f) + 1) * (TwoD_AR_amax(f) - TwoD_AR_amin(f) + 1); - for (y = TwoD_AR_ymin(f); y <= TwoD_AR_ymax(f); y++) - { - TwoD_AR_degfree(f) += have_data_yr(y, timevary_setup(1)); - for (a = TwoD_AR_amin(f); a <= TwoD_AR_amax(f); a++) - { - sprintf(onenum, "%d", y); - sprintf(anystring, "%d", a); - ParCount++; - if (TwoD_AR_setup(8) == 1) - { - ParmLabel += fleetname(TwoD_AR_setup(1)) + "_ARDEV_y" + onenum + "_Lbin" + anystring + CRLF(1); - } - else - { - ParmLabel += fleetname(TwoD_AR_setup(1)) + "_ARDEV_y" + onenum + "_A" + anystring + CRLF(1); - } - } - } - echoinput << " total years, and with data " << TwoD_AR_ymax(f) - TwoD_AR_ymin(f) + 1 << " " << TwoD_AR_degfree(f) << " times nages: "; - TwoD_AR_degfree(f) *= (TwoD_AR_amax(f) - TwoD_AR_amin(f) + 1); - echoinput << TwoD_AR_degfree(f) << endl; - } - - echoinput << " read var_adjust list until -9999" << endl; - ender = 0; - do - { - dvector tempvec(1, 3); - *(ad_comm::global_datafile) >> tempvec(1, 3); - echoinput << tempvec << endl; - if (tempvec(1) == -9999.) ender = 1; - var_adjust_data.push_back(tempvec(1, 3)); - } while (ender == 0); - Do_Var_adjust = var_adjust_data.size() - 1; - echoinput << " number of variance adjustment records = " << Do_Var_adjust << endl; - // clang-format off - END_CALCS - matrix var_adjust(1,7,1,Nfleet) - // init_matrix var_adjust_list(1,Do_Var_adjust+1,1,3) - - LOCAL_CALCS - // clang-format on - var_adjust.initialize(); - for (j = 4; j <= 7; j++) - { - var_adjust(j) = 1.0; // null value - } - if (Do_Var_adjust > 0) - { - for (j = 1; j <= Do_Var_adjust; j++) - { - var_adjust(var_adjust_data[j - 1](1), var_adjust_data[j - 1](2)) = var_adjust_data[j - 1](3); - } - echoinput << " Var_adjustments as read " << endl - << var_adjust << endl; - } - else - { - var_adjust(1) = 0.; - var_adjust(2) = 0.; - var_adjust(3) = 0.; - var_adjust(4) = 1.; - var_adjust(5) = 1.; - var_adjust(6) = 1.; - var_adjust(7) = 1.; - } - // clang-format off - END_CALCS - - init_int max_lambda_phase - init_number sd_offset - - LOCAL_CALCS - // clang-format on - echoinput - << max_lambda_phase << " max_lambda_phase " << endl; - if (max_lambda_phase < 1) max_lambda_phase = 1; - echoinput << sd_offset << " sd_offset (adds log(s)); needed if variance parameters are estimated " << endl; - if (sd_offset == 0) - { - if (varparm_estimated(1) == 1) - { - warnstream << "growth variance is estimated parameter, so change sd_offset to 1"; - write_message (FATAL, 0); // EXIT! - } - if (varparm_estimated(2) == 1) - { - warnstream << "recruitment sigmaR is estimated parameter, so change sd_offset to 1"; - write_message (FATAL, 0); // EXIT! - } - if (varparm_estimated(3) == 1) - { - warnstream << "survey extraSD is estimated parameter, so change sd_offset to 1"; - write_message (FATAL, 0); // EXIT! - } - } - if (depletion_fleet > 0 && depletion_type < 2 && max_lambda_phase < 2) - { - max_lambda_phase = 2; - warnstream << "Increase max_lambda_phase to 2 because depletion fleet is being used"; - write_message (ADJUST, 0); - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.11.1 #Define type_phase arrays for lambdas - matrix surv_lambda(1,Nfleet,1,max_lambda_phase) - matrix disc_lambda(1,Nfleet,1,max_lambda_phase) - matrix mnwt_lambda(1,Nfleet,1,max_lambda_phase) - matrix length_lambda(1,Nfleet,1,max_lambda_phase) - matrix age_lambda(1,Nfleet,1,max_lambda_phase) - matrix sizeage_lambda(1,Nfleet,1,max_lambda_phase) - matrix init_equ_lambda(1,Nfleet,1,max_lambda_phase) - matrix catch_lambda(1,Nfleet,1,max_lambda_phase) - vector recrdev_lambda(1,max_lambda_phase) - vector regime_lambda(1,max_lambda_phase) - vector parm_prior_lambda(1,max_lambda_phase) - vector parm_dev_lambda(1,max_lambda_phase) - vector CrashPen_lambda(1,max_lambda_phase) - vector Morphcomp_lambda(1,max_lambda_phase) - matrix SzFreq_lambda(1,SzFreq_N_Like,1,max_lambda_phase) - matrix TG_lambda1(1,N_TG2,1,max_lambda_phase) - matrix TG_lambda2(1,N_TG2,1,max_lambda_phase) - vector F_ballpark_lambda(1,max_lambda_phase) - -!!// SS_Label_Info_4.11.2 #Read and process any lambda adjustments - int N_lambda_changes - int N_changed_lambdas - LOCAL_CALCS - // clang-format on - echoinput << endl << "LAMBDA" << endl - << " each line has 5 values: like_code, fleet, beginning_phase, value, code_for_sizefreq "<< endl - << " terminate reading with like_code = -9999" << endl - << " like_code options are: 1=surv; 2=disc; 3=mnwt; 4=length; 5=age; 6=SizeFreq; 7=sizeage; 8=catch; 9=init_equ_catch; " << endl - << " 10=recrdev; 11=parm_prior; 12=parm_dev; 13=CrashPen; 14=Morphcomp; 15=Tag-comp; 16=Tag-negbin; 17=F_ballpark; 18=initEQregime." << endl - << " 2nd value (fleet) only used for like_codes 1 - 9, which are fleet-specific, except" << endl - << " 2nd value is used for Tag-Group, instead of fleet, for like_codes 15 & 16." << endl - << " 5th value is used only for like_code=6 and specifies the SizeFreq method used, which is in addition to fleet designation." << endl; - - ender = 0; // begin reading lambda changes - do - { - dvector tempvec(1, 5); - *(ad_comm::global_datafile) >> tempvec(1, 5); - if (tempvec(1) == -9999.) ender = 1; - lambda_change_data.push_back(tempvec(1, 5)); - } while (ender == 0); - N_lambda_changes = lambda_change_data.size() - 1; - // clang-format off - END_CALCS - - matrix Lambda_changes(1,N_lambda_changes,1,5) - LOCAL_CALCS - // clang-format on - for (f = 1; f <= N_lambda_changes; f++) Lambda_changes(f) = lambda_change_data[f - 1]; - if (N_lambda_changes > 0) echoinput << N_lambda_changes << " lambda changes: " << endl - << Lambda_changes << endl; - surv_lambda = 1.; // 1 - disc_lambda = 1.; // 2 - mnwt_lambda = 1.; // 3 - length_lambda = 1.; // 4 - age_lambda = 1.; // 5 - SzFreq_lambda = 1.; // 6 - sizeage_lambda = 1.; // 7 - catch_lambda = 1.; // 8 - init_equ_lambda = 1.; // 9 - recrdev_lambda = 1.; // 10 - parm_prior_lambda = 1.; // 11 - parm_dev_lambda = 1.; // 12 - CrashPen_lambda = 1.; // 13 - Morphcomp_lambda = 1.; // 14 - TG_lambda1 = 1.; // 15 - TG_lambda2 = 1.; //16 - F_ballpark_lambda = 1.; // 17 - regime_lambda = 1.; // 18 - - if (depletion_fleet > 0 && depletion_type < 2) - { - for (f = 1; f <= Nfleet; f++) - { - surv_lambda(f, 1) = 0.0; - init_equ_lambda(f, 1) = 0.0; - disc_lambda(f, 1) = 0.0; - mnwt_lambda(f, 1) = 0.0; - length_lambda(f, 1) = 0.0; - age_lambda(f, 1) = 0.0; - sizeage_lambda(f, 1) = 0.0; - // catch_lambda(f,1)=0.0; // keep this positive to prevent crashes from bad fit to catch - } - if (SzFreq_Nmeth > 0) - { - for (z = 1; z <= SzFreq_N_Like; z++) - { - SzFreq_lambda(z, 1) = 0.0; - } - } - if (N_TG2 > 0) - { - for (z = 1; z <= N_TG2; z++) - { - TG_lambda1(z, 1) = 0.0; - TG_lambda2(z, 1) = 0.0; - } - } - recrdev_lambda(1) = 0.0; - Morphcomp_lambda(1) = 0.0; - F_ballpark_lambda(1) = 0.0; - - surv_lambda(depletion_fleet, 1) = 1.0; - } - - N_changed_lambdas = 0; - for (j = 1; j <= N_lambda_changes; j++) - { - k = Lambda_changes(j, 1); // like component - f = Lambda_changes(j, 2); // fleet - s = Lambda_changes(j, 3); // phase - if (k <= 9) // only check those codes that are fleet-specific - { - if (f > Nfleet) - { - k = 0; - warnstream << "Illegal fleet/survey for lambda change at row: " << j << " fleet: " << f << " > Nfleet"; - write_message (ADJUST, 0); - } - } - else if (k == 15 || k == 16) // tag data - { - if (f > N_TG2) - { - k = 0; - warnstream << "Illegal tag group for lambda change at row: " << j << " Tag: " << f << " > N_taggroups"; - write_message (ADJUST, 0); - } - } - else if (k > 18) - { - k = 0; - warnstream << "Illegal lambda_type for lambda change at row: " << j << " Method: " << k << " > 17"; - write_message (ADJUST, 0); - } - if (s > max_lambda_phase) - { - k = 0; - warnstream << "Illegal request for lambda change at row: " << j << " phase: " << s << " > max_lambda_phase: " << max_lambda_phase; - write_message (ADJUST, 0); - } - // if(s>Turn_off_phase) s=max(1,Turn_off_phase); - temp = Lambda_changes(j, 4); // value - if (temp != 0.0 && temp != 1.0) N_changed_lambdas++; - z = Lambda_changes(j, 5); // special for sizefreq - switch (k) - { - case 0: // do nothing - { - break; - } - case 1: // survey - { - surv_lambda(f)(s, max_lambda_phase) = temp; - break; - } - case 2: // discard - { - disc_lambda(f)(s, max_lambda_phase) = temp; - break; - } - case 3: // meanbodywt - { - mnwt_lambda(f)(s, max_lambda_phase) = temp; - break; - } - case 4: // lengthcomp - { - length_lambda(f)(s, max_lambda_phase) = temp; - break; - } - case 5: // agecomp - { - age_lambda(f)(s, max_lambda_phase) = temp; - break; - } - case 6: // sizefreq comp - { - z = Lambda_changes(j, 5); // sizefreq method - if (z > SzFreq_Nmeth) - { - warnstream << "reading sizefreq lambda change for method > Nmeth " << Lambda_changes(j, 5); - write_message (FATAL, 0); // EXIT! - } - SzFreq_lambda(SzFreq_LikeComponent(f, z))(s, max_lambda_phase) = temp; - break; - } - case 7: // size-at-age - { - sizeage_lambda(f)(s, max_lambda_phase) = temp; - break; - } - case 8: // catch - { - catch_lambda(f)(s, max_lambda_phase) = temp; - break; - } - case 9: // init_equ_catch - { - init_equ_lambda(f)(s, max_lambda_phase) = temp; - break; - } - case 10: // recr_dev - { - recrdev_lambda(s, max_lambda_phase) = temp; - break; - } - case 11: // parm_prior - { - parm_prior_lambda(s, max_lambda_phase) = temp; - break; - } - case 12: // parm_dev - { - parm_dev_lambda(s, max_lambda_phase) = temp; - break; - } - case 13: // crash_penalty - { - CrashPen_lambda(s, max_lambda_phase) = temp; - break; - } - case 14: // morphcomp - { - Morphcomp_lambda(s, max_lambda_phase) = temp; - break; - } - case 15: // Tag - multinomial by fleet where f is now tag group - { - TG_lambda1(f)(s, max_lambda_phase) = temp; - break; - } - case 16: // Tag - total by time where f is now tag group - { - TG_lambda2(f)(s, max_lambda_phase) = temp; - break; - } - case 17: // F ballpark - { - F_ballpark_lambda(s, max_lambda_phase) = temp; - break; - } - case 18: // regime lambda - only for initial equilibrium - { - regime_lambda(s, max_lambda_phase) = temp; - break; - } - } - } - for (f = 1; f <= Nfleet; f++) - { - if (Svy_N_fleet(f) == 0) surv_lambda(f) = 0.; - if (disc_N_fleet(f) == 0) disc_lambda(f) = 0.; - if (Nobs_l(f) == 0) length_lambda(f) = 0.; - if (Nobs_a(f) == 0) age_lambda(f) = 0.; - if (Nobs_ms(f) == 0) sizeage_lambda(f) = 0.; - } - if (nobs_mnwt == 0) mnwt_lambda = 0.; // more complicated to turn off for each fleet - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.12 #Read setup for more derived quantities to include in the STD report - init_int Do_More_Std // option (currently 0, 1, or 2) - int More_Std_N_Inputs; // count of inputs (depends on option above) - LOCAL_CALCS - // clang-format on - More_Std_N_Inputs = 0; - if (Do_More_Std == 1) { - More_Std_N_Inputs = 9; - } - if (Do_More_Std == 2) { - More_Std_N_Inputs = 13; - } - // clang-format off - END_CALCS - ivector More_Std_Input(1,13); // read dimensions - init_ivector temp_std_input(1,More_Std_N_Inputs) - LOCAL_CALCS - // clang-format on - echoinput - << Do_More_Std << " # extra stdev reporting: 0 = skip, 1 = read specs for reporting stdev for selectivity, size, and numbers, 2 = add option for M, dyn. Bzero & Smrybio " << endl; - More_Std_Input.initialize(); - if (Do_More_Std > 0) - { - echoinput << "inpt_as_read: " << temp_std_input << endl; - More_Std_Input(1, More_Std_N_Inputs) = temp_std_input(1, More_Std_N_Inputs); - echoinput << More_Std_Input(1, 4) << " # Selectivity: (1) 0 to skip or fleet, (2) 1=len/2=age/3=combined, (3) year, (4) N selex bins; NOTE: combined reports in age bins" << endl; - echoinput << More_Std_Input(5, 6) << " # Growth: (1) 0 to skip or growth pattern, (2) growth ages; NOTE: does each sex" << endl; - echoinput << More_Std_Input(7, 9) << " # Numbers-at-age: (1) 0 to skip or area(-1 for all), (2) year, (3) N ages; NOTE: sums across morphs" << endl; - } - if (Do_More_Std >= 2) - { - echoinput << More_Std_Input(10, 11) << " # Mortality: (1) 0 to skip or growth pattern, (2) N ages for mortality; NOTE: does each sex" << endl; - echoinput << More_Std_Input(12) << " # Dyn_Bzero: 0 to skip, 1 to do, 2 w/ recr" << endl; - echoinput << More_Std_Input(13) << " # SmryBio: 0 to skip, 1 to do" << endl; - } - // clang-format off - END_CALCS - - int Do_Selex_Std; - int Selex_Std_AL; - int Selex_Std_Year; - int Selex_Std_Cnt; - int Do_Growth_Std; - int Growth_Std_Cnt; - int Do_NatAge_Std; - int NatAge_Std_Year; - int NatAge_Std_Cnt; - int Do_NatM_Std; - int NatM_Std_Cnt; - int Do_Dyn_Bzero; - int Do_se_smrybio; - int Do_se_LnSSB; - int Extra_Std_N; // dimension for the sdreport vector Selex_Std which also contains the Growth_Std - - LOCAL_CALCS - // clang-format on - Extra_Std_N = 0; - - // don't read any extra std inputs - if (Do_More_Std == 0) - { - Do_Selex_Std = 0; - Selex_Std_AL = 1; - Selex_Std_Year = endyr; - Selex_Std_Cnt = 0; - Do_Growth_Std = 0; - Growth_Std_Cnt = 0; - Do_NatAge_Std = 0; - NatAge_Std_Cnt = 0; - NatAge_Std_Year = endyr; - Do_NatM_Std = 0; - NatM_Std_Cnt = 0; - Do_Dyn_Bzero = 0; - Do_se_smrybio = 0; - Do_se_LnSSB = 0; - } - - // read standard extra std inputs (only option prior to 3.30.15) - if (Do_More_Std > 0) - { - Do_Selex_Std = More_Std_Input(1); - Selex_Std_AL = More_Std_Input(2); - Selex_Std_Year = More_Std_Input(3); - if (Selex_Std_Year < 0) Selex_Std_Year = endyr; - Selex_Std_Cnt = More_Std_Input(4); - Do_Growth_Std = More_Std_Input(5); - Growth_Std_Cnt = More_Std_Input(6); - Do_NatAge_Std = More_Std_Input(7); - NatAge_Std_Year = More_Std_Input(8); - if (NatAge_Std_Year < 0) NatAge_Std_Year = endyr + 1; - NatAge_Std_Cnt = More_Std_Input(9); - if (Do_Selex_Std <= 0) Selex_Std_Cnt = 0; - if (Do_Growth_Std <= 0) Growth_Std_Cnt = 0; - if (Do_NatAge_Std == 0) NatAge_Std_Cnt = 0; - Do_NatM_Std = 0; // value replaced below if Do_More_Std==2 - NatM_Std_Cnt = 0; // value replaced below if Do_More_Std==2 - } - - // read additional extra std inputs for NatM (added in 3.30.15) - if (Do_More_Std == 2) - { - Do_NatM_Std = More_Std_Input(10); - NatM_Std_Cnt = More_Std_Input(11); - if (Do_NatM_Std <= 0) { - NatM_Std_Cnt = 0; - } - Do_Dyn_Bzero = More_Std_Input(12); - Do_se_smrybio = More_Std_Input(13); - } - // clang-format off - END_CALCS - - // get vector of length bins or ages for selex std (either input or autogenerate) - init_ivector Selex_Std_Pick(1,Selex_Std_Cnt); - LOCAL_CALCS - // clang-format on - if (Do_Selex_Std > 0) - { - echoinput << Selex_Std_Pick << " # vector with selex std bins (-1 in first bin to self-generate)" << endl; - if (Selex_Std_Pick(1) < 0) // then self-generate even bin selection - { - if (Selex_Std_AL == 1) // length-based selex - { - if (Selex_Std_Cnt == 1) - { - Selex_Std_Pick(1) = nlength / 2; - } - else if (Selex_Std_Cnt == 2) - { - Selex_Std_Pick(1) = nlength / 2; - Selex_Std_Pick(2) = nlength; - } - else - { - j = nlength / (Selex_Std_Cnt - 1); - Selex_Std_Pick(1) = j / 2; - for (i = 2; i <= Selex_Std_Cnt - 1; i++) Selex_Std_Pick(i) = Selex_Std_Pick(i - 1) + j; - Selex_Std_Pick(Selex_Std_Cnt) = nlength; - } - echoinput << "generate length selex std for fleet: " << Do_Selex_Std << " in year: " << Selex_Std_Year << " at bins: " << Selex_Std_Pick << endl; - } - else // age-based or age-length-combined selex - { - if (Selex_Std_Cnt == 1) - { - Selex_Std_Pick(1) = nages / 2; - } - else if (Selex_Std_Cnt == 2) - { - Selex_Std_Pick(1) = nages / 2; - Selex_Std_Pick(2) = nages; - } - else - { - j = nages / (Selex_Std_Cnt - 1); - Selex_Std_Pick(1) = j / 2; - for (i = 2; i <= Selex_Std_Cnt - 1; i++) Selex_Std_Pick(i) = Selex_Std_Pick(i - 1) + j; - Selex_Std_Pick(Selex_Std_Cnt) = nages; - } - echoinput << "generate age selex std for fleet: " << Do_Selex_Std << " in year: " << Selex_Std_Year << " at ages: " << Selex_Std_Pick << endl; - } - } - // adjust values to keep in range - for (i = 1; i <= Selex_Std_Cnt; i++) - { - if (Selex_Std_AL == 1) // length-based selex - { - if (Selex_Std_Pick(i) <= 0) Selex_Std_Pick(i) = 1; - if (Selex_Std_Pick(i) > nlength) - { - warnstream << "Selex_std requested output past nlength, resets to nlength, may produce duplicates"; - write_message (ADJUST, 0); - Selex_Std_Pick(i) = nlength; - } - } - else // age-based or age-length-combined selex - { - if (Selex_Std_Pick(i) < 0) Selex_Std_Pick(i) = 0; - if (Selex_Std_Pick(i) > nages) - { - warnstream << "Selex_std requested output past nages, resets to nages, may produce duplicates"; - write_message (ADJUST, 0); - Selex_Std_Pick(i) = nages; - } - } - } - // increment count - Extra_Std_N = gender * Selex_Std_Cnt; - } - // clang-format off - END_CALCS - - // get vector of bins for growth std (either input or autogenerate) - init_ivector Growth_Std_Pick(1,Growth_Std_Cnt); - LOCAL_CALCS - // clang-format on - if (Do_Growth_Std > 0) - { - echoinput << Growth_Std_Pick << " # vector with growth std ages (-1 in first bin to self-generate)" << endl; - // turn off growth extra stderr for growth if no estimated growth parameters - if (MG_active(2) == 0) - { - warnstream << "Growth output stderr requested but no growth parameters are estimated, changing growth stddev reporting specifications to 0"; - write_message (ADJUST, 0); - Do_Growth_Std = 0; - // More_Std_Input(5)=0; - // More_Std_Input(6)=0; - Growth_Std_Cnt = 0; - } - else - { - // there are active growth parameters so proceed with processing stderr - if (Growth_Std_Pick(1) < 0) - { - Growth_Std_Pick(1) = AFIX; - Growth_Std_Pick(Growth_Std_Cnt) = nages; - if (Growth_Std_Cnt > 2) - { - k = Growth_Std_Cnt / 2; - for (i = 2; i <= k; i++) Growth_Std_Pick(i) = Growth_Std_Pick(i - 1) + 1; - j = (nages - Growth_Std_Pick(k)) / (Growth_Std_Cnt - k); - for (i = k + 1; i <= Growth_Std_Cnt - 1; i++) Growth_Std_Pick(i) = Growth_Std_Pick(i - 1) + j; - } - } - for (i = 1; i <= Growth_Std_Cnt; i++) - { - if (Growth_Std_Pick(i) < 0) Growth_Std_Pick(i) = 0; - if (Growth_Std_Pick(i) > nages) Growth_Std_Pick(i) = nages; - } - } - Extra_Std_N += gender * Growth_Std_Cnt; - } - // clang-format off - END_CALCS - - // get vector of bins for N-at-age std (either input or autogenerate) - init_ivector NatAge_Std_Pick(1,NatAge_Std_Cnt); - LOCAL_CALCS - // clang-format on - if (Do_NatAge_Std != 0) - { - echoinput << NatAge_Std_Pick << " # vector with NatAge std bins (-1 in first bin to self-generate)" << endl; - if (NatAge_Std_Pick(1) < 0) - { - NatAge_Std_Pick(1) = 1; - NatAge_Std_Pick(NatAge_Std_Cnt) = nages; - if (NatAge_Std_Cnt > 2) - { - k = NatAge_Std_Cnt / 2; - for (i = 2; i <= k; i++) NatAge_Std_Pick(i) = NatAge_Std_Pick(i - 1) + 1; - j = (nages - NatAge_Std_Pick(k)) / (NatAge_Std_Cnt - k); - for (i = k + 1; i <= NatAge_Std_Cnt - 1; i++) NatAge_Std_Pick(i) = NatAge_Std_Pick(i - 1) + j; - } - } - for (i = 1; i <= NatAge_Std_Cnt; i++) - { - if (NatAge_Std_Pick(i) <= 0) NatAge_Std_Pick(i) = 0; - if (NatAge_Std_Pick(i) > nages) NatAge_Std_Pick(i) = nages; - } - Extra_Std_N += gender * NatAge_Std_Cnt; - } - - // clang-format off - END_CALCS - - // get vector of bins for NatM std (either input or autogenerate) - init_ivector NatM_Std_Pick(1,NatM_Std_Cnt); - LOCAL_CALCS - // clang-format on - if (Do_NatM_Std > 0) - { - echoinput << NatM_Std_Pick << " # vector with NatM std ages (-1 in first bin to self-generate)" << endl; - // autogenerate the ages - if (NatM_Std_Pick(1) < 0) - { - // set first and last to reference ages - NatM_Std_Pick(1) = AFIX; - NatM_Std_Pick(NatM_Std_Cnt) = nages; - // if there is more than 2, fill in the middle - if (NatM_Std_Cnt > 2) - { - // first half of values increment by 1 - k = NatM_Std_Cnt / 2; - for (i = 2; i <= k; i++) { - NatM_Std_Pick(i) = NatM_Std_Pick(i - 1) + 1; - } - // remainder are evently distributed across range - j = (nages - NatM_Std_Pick(k)) / (NatM_Std_Cnt - k); - for (i = k + 1; i <= NatM_Std_Cnt - 1; i++) { - NatM_Std_Pick(i) = NatM_Std_Pick(i - 1) + j; - } - } - } - // shift any negative values to 0 and any that are too large down to nages - for (i = 1; i <= NatM_Std_Cnt; i++) - { - if (NatM_Std_Pick(i) < 0) NatM_Std_Pick(i) = 0; - if (NatM_Std_Pick(i) > nages) NatM_Std_Pick(i) = nages; - } - // increment counter - Extra_Std_N += gender * NatM_Std_Cnt; - } - - if (Do_Dyn_Bzero > 0) - { - Do_Dyn_Bzero = Extra_Std_N + 1; // start spot for Dynamic Bzero - Extra_Std_N += YrMax - (styr - 2) + 1; - if (More_Std_Input(12) == 2) Extra_Std_N += YrMax - (styr - 2) + 1; // for recruitment - } - // add 3 values for ln(SSBio) - // (years are automatically generated as startyr, mid-point, and endyr) - Do_se_LnSSB = Extra_Std_N + 1; - Extra_Std_N += 3; - - if (Do_se_smrybio > 0) - { - Do_se_smrybio = Extra_Std_N + 1; // start spot - Extra_Std_N += YrMax - (styr - 2) + 1; - } - // else smrybio will be written anyway, but without se - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.13 #End of reading from control file - init_int fim // end of file indicator - - LOCAL_CALCS - // clang-format on - if (fim == 999) - { - cout << "End of control file successful! " << fim << endl; - echoinput << "End of control file successful! " << fim << endl; - } - else - { - cout << " Unsuccessful end of control file. Check echoinput for clues. Last read is: " << fim << endl; - exit(1); - } - // clang-format off - END_CALCS - -!!// SS_Label_Info_4.14 #Create count of active parameters and derived quantities - int CoVar_Count; - int active_count; // count the active parameters - int active_parms; // count the active parameters - int deriv_start; // start index for derived quantities - int deriv_covar_start - - LOCAL_CALCS - // clang-format on - if (Do_Benchmark > 0) - { - N_STD_Mgmt_Quant = 22; - if (Do_Benchmark == 3) N_STD_Mgmt_Quant += 3; // for Blimit - } - else - { - N_STD_Mgmt_Quant = 4; - } - Fcast_catch_start = N_STD_Mgmt_Quant; - if (max(Do_Retain) > 0) { - j = 1; - } - else - { - j = 0; - } - if (Do_Forecast > 0) { - N_STD_Mgmt_Quant += N_Fcast_Yrs * (1 + j) + N_Fcast_Yrs; - } - k = ParCount + 2 * N_STD_Yr + N_STD_Yr_Dep + N_STD_Yr_Ofish + N_STD_Yr_F + N_STD_Mgmt_Quant + gender * Selex_Std_Cnt + gender * Growth_Std_Cnt + gender * NatAge_Std_Cnt + gender * NatM_Std_Cnt; - if (Do_More_Std >= 2) - { - k += Do_Dyn_Bzero * (YrMax - (styr - 2) - 1); - if (More_Std_Input(12) == 2) k += (YrMax - (styr - 2) - 1); // for recruits - k += Do_se_smrybio * (YrMax - (styr - 2) - 1); - } - k += 3 + Svy_N_sdreport; - echoinput << "N parameters: " << ParCount << endl - << "Parameters plus derived quant: " << k << endl; - // clang-format off - END_CALCS - ivector active_parm(1,k) // pointer from active list to the element of the full parameter list to get label later - -//*********************************************** -!!// SS_Label_Info_4.14.1 #Adjust the phases to negative if beyond turn_off_phase and find resultant max_phase - int max_phase; - int Turn_off_phase2 - - LOCAL_CALCS - // clang-format on - echoinput - << "Adjust the phases " << endl; - Turn_off_phase2 = Turn_off_phase; - echoinput << " requested turn_off phase: " << Turn_off_phase << endl; - if (depletion_fleet > 0 && depletion_type == 1) - { - Turn_off_phase2 = 1; - echoinput << "depletion fleet and type are: " << depletion_fleet << " " << depletion_type << " so set turn-off to phase 1 " << endl; - } - max_phase = 1; - active_count = 0; - active_parm(1, ParCount) = 0; - ParCount = 0; - - j = MGparm_PH.indexmax(); - - for (k = 1; k <= j; k++) - { - ParCount++; - if (MGparm_PH(k) == -9999) { - MGparm_RD(k) = prof_var(prof_var_cnt); - prof_var_cnt += 1; - } - if (depletion_fleet > 0 && depletion_type < 2 && MGparm_PH(k) > 0) MGparm_PH(k)++; // add 1 to phase if using depletion fleet - if (MGparm_PH(k) > Turn_off_phase2) MGparm_PH(k) = -1; - if (MGparm_PH(k) > max_phase) max_phase = MGparm_PH(k); - if (MGparm_PH(k) >= 0) - { - active_count++; - active_parm(active_count) = ParCount; - } - } - - for (j = 1; j <= SRparm_PH.indexmax(); j++) - { - ParCount++; - if (SRparm_PH(j) == -9999) { - SRparm_1(j, 3) = prof_var(prof_var_cnt); - SRparm_RD(j, 3) = SRparm_1(j, 3); - prof_var_cnt += 1; - } - if (depletion_fleet > 0 && depletion_type < 2 && SRparm_PH(j) > 0) SRparm_PH(j)++; // add 1 to phase if using depletion fleet - if (depletion_fleet > 0 && depletion_type < 2 && j == 1) SRparm_PH(1) = 1; // R0 active in phase 1, unless type==2 - if (SRparm_PH(j) > Turn_off_phase2) SRparm_PH(j) = -1; - if (SRparm_PH(j) > max_phase) max_phase = SRparm_PH(j); - if (SRparm_PH(j) >= 0) - { - active_count++; - active_parm(active_count) = ParCount; - } - } - - if (recdev_cycle > 0) - { - for (y = 1; y <= recdev_cycle; y++) - { - ParCount++; - recdev_cycle_LO(y) = recdev_cycle_parm_RD(y, 1); - recdev_cycle_HI(y) = recdev_cycle_parm_RD(y, 2); - recdev_cycle_PH(y) = recdev_cycle_parm_RD(y, 7); - if (depletion_fleet > 0 && depletion_type < 2 && recdev_cycle_PH(y) > 0) recdev_cycle_PH(y)++; // add 1 to phase if using depletion fleet - if (recdev_cycle_PH(y) > Turn_off_phase2) recdev_cycle_PH(y) = -1; - if (recdev_cycle_PH(y) > max_phase) max_phase = recdev_cycle_PH(y); - if (recdev_cycle_PH(y) >= 0) { - active_count++; - active_parm(active_count) = ParCount; - } - } - } - - if (depletion_fleet > 0 && depletion_type < 2 && recdev_early_PH_rd > 0) recdev_early_PH_rd++; // add 1 to phase if using depletion fleet - if (recdev_early_PH_rd > Turn_off_phase2) - { - recdev_early_PH = -1; - } - else - { - recdev_early_PH = recdev_early_PH_rd; - } - - if (recdev_early_PH > max_phase) max_phase = recdev_early_PH; - - if (recdev_do_early > 0) - { - for (y = recdev_early_start; y <= recdev_early_end; y++) - { - ParCount++; - if (recdev_early_PH >= 0) { - active_count++; - active_parm(active_count) = ParCount; - } - } - } - - if (depletion_fleet > 0 && depletion_type < 2 && recdev_PH > 0) recdev_PH++; // add 1 to phase if using depletion fleet - if (recdev_PH > Turn_off_phase2) recdev_PH = -1; - if (recdev_PH > max_phase) max_phase = recdev_PH; - if (do_recdev > 0) - { - for (y = recdev_start; y <= recdev_end; y++) - { - ParCount++; - if (recdev_PH >= 0) { - active_count++; - active_parm(active_count) = ParCount; - } - } - } - - Fcast_recr_PH2 = max_phase + 1; - Fcast_recr_PH = Fcast_recr_PH_rd; - if (Do_Forecast > 0) - { - if (Turn_off_phase > 0) - { - if (Fcast_recr_PH_rd != 0) // read value for forecast_PH - { - Fcast_recr_PH2 = Fcast_recr_PH; - if (depletion_fleet > 0 && depletion_type < 2 && Fcast_recr_PH2 > 0) Fcast_recr_PH2++; - if (Fcast_recr_PH2 > Turn_off_phase2) Fcast_recr_PH2 = -1; - if (Fcast_recr_PH2 > max_phase) max_phase = Fcast_recr_PH2; - } - if (depletion_fleet > 0 && depletion_type == 1) - { - max_phase = 1; - Fcast_recr_PH2 = -1; - } - } - else - { - Fcast_recr_PH2 = -1; - } - - if (do_recdev != 0) { - for (y = recdev_end + 1; y <= YrMax; y++) - { - ParCount++; - if (Fcast_recr_PH2 > -1) { - active_count++; - active_parm(active_count) = ParCount; - } - } - } - if (Do_Impl_Error > 0) { - for (y = endyr + 1; y <= YrMax; y++) - { - ParCount++; - if (Fcast_recr_PH2 > -1) - { - active_count++; - active_parm(active_count) = ParCount; - } - } - } - } - else - { - Fcast_recr_PH2 = -1; - } - - echoinput << "Fcast_dev_phase (read and adjusted): " << Fcast_recr_PH_rd << " " << Fcast_recr_PH2 << endl; - - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) - { - if (init_F_loc(s, f) > 0) - { - j = init_F_loc(s, f); - ParCount++; - if (init_F_PH(j) == -9999) { - init_F_parm_1(j, 3) = prof_var(prof_var_cnt); - init_F_RD(j) = init_F_parm_1(j, 3); - prof_var_cnt++; - } - if (depletion_fleet > 0 && depletion_type < 2 && init_F_PH(j) > 0) init_F_PH(j)++; - if (init_F_PH(j) > Turn_off_phase2) init_F_PH(j) = -1; - if (init_F_PH(j) > max_phase) max_phase = init_F_PH(j); - if (init_F_PH(j) >= 0) - { - active_count++; - active_parm(active_count) = ParCount; - } - } - } - - if (N_Fparm > 0) - { - Fparm_PH_dim.deallocate(); - Fparm_PH_dim.allocate(1, N_Fparm); - for (g = 1; g <= N_Fparm; g++) - { - ParCount++; - if (depletion_fleet > 0 && depletion_type < 2 && Fparm_PH[g] > 0) Fparm_PH[g]++; // increase phase by 1 - if (Fparm_PH[g] > Turn_off_phase2) Fparm_PH[g] = -1; - if (Fparm_PH[g] > max_phase) max_phase = Fparm_PH[g]; - Fparm_PH_dim(g) = Fparm_PH[g]; // move values into ivector - if (Fparm_PH[g] > 0) - { - active_count++; - active_parm(active_count) = ParCount; - } - echoinput< 0 && depletion_type < 2 && Q_parm_PH(f) > 0) Q_parm_PH(f)++; - if (Q_parm_PH(f) > Turn_off_phase2) Q_parm_PH(f) = -1; - if (Q_parm_PH(f) > max_phase) max_phase = Q_parm_PH(f); - if (Q_parm_PH(f) >= 0) - { - active_count++; - active_parm(active_count) = ParCount; - } - } - - // SS_Label_Info_4.14.2 #Auto-generate cubic spline setup while inside this parameter counting loop - Ip = 0; - int N_knots; - for (f = 1; f <= 2 * Nfleet; f++) // check for cubic spline setup - { - if (f <= Nfleet) - { - fs = f; - } - else - { - fs = f - Nfleet; - } - if (seltype(f, 1) == 27 || seltype(f, 1) == 42) // reset the cubic spline knots for size or age comp - { - // TODO - may need adjustments below for selex pattern 42 - - k = int(selparm_RD(Ip + 1)); // setup method - N_knots = seltype(f, 4); // number of knots - - if (k == 0 || k == 10) - { - } // do nothing - else if (k == 1 || k == 2 || k == 11 || k == 12) // get new knots according to cumulative distribution of data - { - echoinput << "Adjust the "; - if (f <= Nfleet) - { - echoinput << "size-based "; - } - else - { - echoinput << "age-based "; - } - echoinput << "cubic spline setup for fleet: " << fs << endl; - - j = 4; // counter for which knot is being set (first knot is 4th spline parameter line) - z = 1; // counter for bins in cumulative distribution - if (N_knots >= 3) - { - temp = 0.025; - temp1 = 0.950 / float(N_knots - 1); // increment - } - else - { - warnstream << "There must be at least 3 knots in spline "; - write_message (FATAL, 0); // EXIT! - } - if (f <= Nfleet) // doing size Selex - { - // exit if no length data available on which to base the knots - if (Nobs_l(fs) == 0) - { - warnstream << "No length data for fleet " << fs << ": can't autogenerate cubic spline knots "; - write_message (FATAL, 0); // EXIT! - } - // calculate cumulative length distribution - dvector templen(1, nlen_bin); - templen.initialize(); - for (s = 1; s <= nseas; s++) - { - templen += obs_l_all(2, s, f); - } - templen /= double(nseas); - while (temp <= 0.975001) - { - while (templen(z) < temp) - { - z++; - } - // intermediate knots are calculated from data_length_bins - if (z > 1) - { - selparm_RD(Ip + j) = len_bins_dat(z - 1) + (temp - templen(z - 1)) / (templen(z) - templen(z - 1)) * (len_bins_dat(z) - len_bins_dat(z - 1)); - } - else - { - selparm_RD(Ip + j) = len_bins_dat(z); - } - j++; - temp += temp1; - } - echoinput << "len_bins_dat: " << len_bins_dat << endl; - echoinput << "Cum_comp: " << templen << endl; - echoinput << "Knots: " << selparm_RD(Ip + 3 + 1, Ip + 3 + N_knots) << endl; - } - else // age selex - { - // exit if no age data available on which to base the knots - if (Nobs_a(fs) == 0) - { - warnstream << "no age data for fleet " << fs << ": can't autogenerate cubic spline knots "; - write_message (FATAL, 0); // EXIT! - } - // calculate cumulative age distribution - dvector tempage(1, n_abins); - tempage.initialize(); - for (s = 1; s <= nseas; s++) - { - tempage += obs_a_all(2, s, fs); - } - tempage /= double(nseas); - while (temp <= 0.975001) - { - while (tempage(z) < temp) - { - z++; - } - // intermediate knots are calculated from age_bins - if (z > 1) - { - selparm_RD(Ip + j) = age_bins(z - 1) + (temp - tempage(z - 1)) / (tempage(z) - tempage(z - 1)) * (age_bins(z) - age_bins(z - 1)); - } - else - { - selparm_RD(Ip + j) = age_bins(z); - } - j++; - temp += temp1; - } - echoinput << "age_bins: " << age_bins << endl; - echoinput << "Cum_comp: " << tempage(1, n_abins) << endl; - echoinput << "Knots: " << selparm_RD(Ip + 3 + 1, Ip + 3 + N_knots) << endl; - } - if (k == 2 || k == 12) // create default bounds, priors, etc. - { - echoinput << "Do complete setup of lo, hi, prior, etc. for cubic spline" << endl; - for (z = Ip + 4; z <= Ip + 3 + N_knots; z++) - { - // set bounds at outer limits of data bins - if (f <= Nfleet) - { - selparm_LO(z) = len_bins_dat(1); - selparm_HI(z) = len_bins_dat(nlen_bin); - } - else - { - selparm_LO(z) = age_bins(1); - selparm_HI(z) = age_bins(n_abins); - } - // set prior at mid-point - selparm_PR(z) = int((selparm_LO(z) + selparm_HI(z)) / 2.); - // set prior type to 0 and SD to 1.0 - selparm_PRtype(z) = 0; - selparm_CV(z) = 1.0; - // set phase for knots to negative - selparm_PH(z) = -99; - } - - if (N_knots == 3) - { - p = 8; - } - else if (N_knots == 4) - { - p = 10; - } - else - { - p = 3 + N_knots + 1 + 0.5 * N_knots; - } - // loop over parameters for splines value at each knot - for (z = N_knots + 1 + 3; z <= 3 + 2 * N_knots; z++) - { - a = Ip + z; - // set initial value for each parameter - if (z <= p) - { - selparm_RD(a) = -5. + float(z - (N_knots + 4)) / float(p - (N_knots + 4)) * 4.; - } - else - { - selparm_RD(a) = 0.0; - } - // set bounds and symmetric beta prior - selparm_LO(a) = -9.; - selparm_HI(a) = 7.; - selparm_PR(a) = 0.; - selparm_PRtype(a) = 1; // symmetric beta - selparm_CV(a) = 0.001; - selparm_PH(a) = 2; - } - // fix one of the parameters at 0 (because rescaling removes a degree of freedom) - selparm_PH(Ip + p) = -99; - selparm_PRtype(Ip + p) = 0; - selparm_CV(Ip + p) = 1.0; - // set values for gradient parameters - p = Ip + 1; - selparm_LO(p) = 0.; - selparm_HI(p) = 2.; - selparm_PR(p) = 0.; - selparm_PRtype(p) = 0; - selparm_CV(p) = 1.0; - selparm_PH(p) = -99; - p++; - selparm_LO(p) = -0.001; - selparm_HI(p) = 1.; - selparm_RD(p) = 0.1; // moderate positive gradient at bottom - selparm_PR(p) = 0.; - selparm_PRtype(p) = 1; // SYMMETRIC BETA - selparm_CV(p) = 0.001; - selparm_PH(p) = 3; - p++; - selparm_LO(p) = -1.; - selparm_HI(p) = 0.001; - if (N_knots >= 3) - { - selparm_RD(p) = -0.001; // small negative gradient at top - selparm_PR(p) = 0.; - selparm_PRtype(p) = 1; - selparm_CV(p) = 0.001; - selparm_PH(p) = 3; - } - else - { - selparm_RD(p) = 0.00; - selparm_PR(p) = 0.; - selparm_PRtype(p) = 0; - selparm_CV(p) = 1.0; - selparm_PH(p) = -99; - } - - for (z = Ip + 1; z <= Ip + 3 + 2 * N_knots; z++) - { - selparm_1(z, 1) = selparm_LO(z); - selparm_1(z, 2) = selparm_HI(z); - selparm_1(z, 3) = selparm_RD(z); - selparm_1(z, 4) = selparm_PR(z); - selparm_1(z, 6) = selparm_PRtype(z); - selparm_1(z, 5) = selparm_CV(z); - selparm_1(z, 7) = selparm_PH(z); - } - } - } - } - Ip += N_selparmvec(f); - } - selparm_PH_soft = selparm_PH; - for (k = 1; k <= selparm_PH.indexmax(); k++) - { - ParCount++; - if (selparm_PH(k) == -9999) { - selparm_RD(k) = prof_var(prof_var_cnt); - selparm_1(k) = prof_var(prof_var_cnt); - prof_var_cnt++; - } - if (depletion_fleet > 0 && depletion_type < 2 && selparm_PH(k) > 0) selparm_PH(k)++; - if (selparm_PH(k) > Turn_off_phase2) selparm_PH(k) = -1; - if (selparm_PH(k) > max_phase) max_phase = selparm_PH(k); - if (selparm_PH(k) >= 0) - { - active_count++; - active_parm(active_count) = ParCount; - } - } - - if (Do_TG > 0) - { - for (k = 1; k <= 3 * N_TG + 2 * Nfleet1; k++) - { - ParCount++; - if (depletion_fleet > 0 && depletion_type < 2 && TG_parm_PH(k) > 0) TG_parm_PH(k)++; - if (TG_parm_PH(k) > Turn_off_phase2) TG_parm_PH(k) = -1; - if (TG_parm_PH(k) > max_phase) max_phase = TG_parm_PH(k); - if (TG_parm_PH(k) >= 0) - { - active_count++; - active_parm(active_count) = ParCount; - } - } - } - - if (timevary_cnt > 0) - { - for (j = 1; j <= timevary_cnt; j++) // loop all timevary to set up devs; note that 2D_AR1 is counted in N_parm_dev, but not in timevary_cnt - { - ivector timevary_setup(1, 14); - timevary_setup(1, 14) = timevary_def[j](1, 14); - if (timevary_setup(8) > 0) - { - k = timevary_setup(8); // dev vector used - if (depletion_fleet > 0 && depletion_type < 2 && parm_dev_PH(k) > 0) parm_dev_PH(k)++; // add 1 to phase if using depletion fleet - if (parm_dev_PH(k) > Turn_off_phase2) parm_dev_PH(k) = -1; - if (parm_dev_PH(k) > max_phase) max_phase = parm_dev_PH(k); - } - } - } - - if (TwoD_AR_cnt > 0) - { - for (j = 1; j <= TwoD_AR_cnt; j++) // loop all timevary to set up devs; note that 2D_AR1 is counted in N_parm_dev, but not in timevary_cnt - { - ivector TwoD_AR_setup(1, 13); - TwoD_AR_setup(1, 13) = TwoD_AR_def[j](1, 13); - if (TwoD_AR_setup(12) > 0) - { - k = TwoD_AR_setup(12); // dev vector used - if (depletion_fleet > 0 && depletion_type < 2 && parm_dev_PH(k) > 0) parm_dev_PH(k)++; // add 1 to phase if using depletion fleet - if (parm_dev_PH(k) > Turn_off_phase2) parm_dev_PH(k) = -1; - if (parm_dev_PH(k) > max_phase) max_phase = parm_dev_PH(k); - } - } - } - - if (N_parm_dev > 0) - { - for (k = 1; k <= N_parm_dev; k++) - { - for (y = parm_dev_minyr(k); y <= parm_dev_maxyr(k); y++) - { - ParCount++; - if (parm_dev_PH(k) >= 0) - { - active_count++; - active_parm(active_count) = ParCount; - } - } - } - } - - if (Do_Forecast > 0 && Turn_off_phase > 0) - { - if (Fcast_recr_PH == 0) // read value for forecast_PH. This code is repeats earlier code in case other parameters have changed maxphase - { - if (depletion_fleet > 0 && depletion_type == 1) - { - } - else - { - Fcast_recr_PH2 = max_phase + 1; - } - } - } - - echoinput << "ParCount " << ParCount << " Active parameters: " << active_count << endl - << "Turn_off_phase " << Turn_off_phase << endl - << " max_phase " << max_phase << endl; - echoinput << active_parm.indexmax() << endl; - - if (Turn_off_phase <= 0) - { - func_eval(1) = 1; - } - else - { - func_conv(max_phase) = final_conv; - func_eval(max_phase) = 10000; - func_conv(max_phase + 1) = final_conv; - func_eval(max_phase + 1) = 10000; - } - - // SS_Label_Info_4.14.3 #Add count of derived quantities and create labels for these quantities - j = ParCount; - active_parms = active_count; - CoVar_Count = active_count; - deriv_start = ParCount; - deriv_covar_start = active_count; - echoinput << "parm " << j << " covar " << CoVar_Count << endl; - echoinput << "deriv_start " << deriv_start << " " << deriv_covar_start << endl; - onenum = " "; - for (y = styr - 2; y <= YrMax; y++) - { - if (STD_Yr_Reverse(y) > 0) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - if (y == styr - 2) - { - ParmLabel += "SSB_Virgin"; - } - else if (y == styr - 1) - { - ParmLabel += "SSB_Initial"; - } - else - { - // _itoa(y,onenum,10); - sprintf(onenum, "%d", y); - ParmLabel += "SSB_" + onenum + CRLF(1); - } - } - } - - echoinput << "parm " << j << " covar " << CoVar_Count << endl; - for (y = styr - 2; y <= YrMax; y++) - { - if (STD_Yr_Reverse(y) > 0) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - if (y == styr - 2) - { - ParmLabel += "Recr_Virgin"; - } - else if (y == styr - 1) - { - ParmLabel += "Recr_Initial"; - } - else - { - // _itoa(y,onenum,10); - sprintf(onenum, "%d", y); - ParmLabel += "Recr_" + onenum + CRLF(1); - } - } - } - - echoinput << "parm " << j << " covar " << CoVar_Count << endl; - for (y = styr; y <= YrMax; y++) - { - if (STD_Yr_Reverse_Ofish(y) > 0) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - // _itoa(y,onenum,10); - sprintf(onenum, "%d", y); - ParmLabel += "SPRratio_" + onenum + CRLF(1); - } - } - - //F_std - echoinput << "parm " << j << " covar " << CoVar_Count << endl; - for (y = styr; y <= YrMax; y++) - { - if (STD_Yr_Reverse_F(y) > 0) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - // _itoa(y,onenum,10); - sprintf(onenum, "%d", y); - ParmLabel += "F_" + onenum + CRLF(1); - } - } - - echoinput << "parm " << j << " covar " << CoVar_Count << endl; - for (y = styr; y <= YrMax; y++) - { - if (STD_Yr_Reverse_Dep(y) > 0) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - // _itoa(y,onenum,10); - sprintf(onenum, "%d", y); - ParmLabel += "Bratio_" + onenum + CRLF(1); - } - } - echoinput << "parm " << j << " covar " << CoVar_Count << endl; - // create labels for Mgmt_Quant - if (Do_Benchmark > 0) - { - ParmLabel += "SSB_unfished" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Totbio_unfished" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "SmryBio_unfished" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Recr_unfished" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - if (Do_Benchmark == 1 || Do_Benchmark == 3) - { - ParmLabel += "SSB_Btgt" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "SPR_Btgt" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "annF_Btgt" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Dead_Catch_Btgt" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - } - else if (Do_Benchmark == 2) - { - ParmLabel += "SSB_F01" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "SPR_F01" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "annF_F01" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Dead_Catch_F01" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - } - ParmLabel += "SSB_SPR" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "annF_SPR" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Dead_Catch_SPR" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "SSB_MSY" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "SPR_MSY" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "annF_MSY" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Dead_Catch_MSY" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Ret_Catch_MSY" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "B_MSY/SSB_unfished" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; -// add quantities needed when time-vary life history is used; but report here for all cases; elements 18-21 of mgmt_quant - ParmLabel += "Recr_MSY_bmarkbio" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Depletion_denom" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "HCR_inflect" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "R0_for_SRR_bench" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "SSB_for_SRR_bench" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - - if (Do_Benchmark == 3) - { - ParmLabel += "SSB_Blim" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "annF_Blim" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Dead_Catch_Blim" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - } - } - else - { - ParmLabel += "Bzero_again" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Totbio_unfished" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "SmryBio_unfished" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Recr_unfished" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - } - - echoinput << "parm " << j << " covar " << CoVar_Count << " after benchmark " << endl; - if (Do_Forecast > 0) - { - for (y = endyr + 1; y <= YrMax; y++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", y); - ParmLabel += "ForeCatch_" + onenum + CRLF(1); - } - for (y = endyr + 1; y <= YrMax; y++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", y); - ParmLabel += "OFLCatch_" + onenum + CRLF(1); - } - if (max(Do_Retain) > 0) - { - for (y = endyr + 1; y <= YrMax; y++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", y); - ParmLabel += "ForeCatchret_" + onenum + CRLF(1); - } - } - } - echoinput << "parm " << j << " covar " << CoVar_Count << " after forecast " << endl; - - // do labels for Selex_Std - if (Do_Selex_Std > 0) - { - echoinput << " do selex std labels " << Selex_Std_Cnt << " " << Selex_Std_AL << endl; - for (g = 1; g <= gender; g++) - for (i = 1; i <= Selex_Std_Cnt; i++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - if (Selex_Std_AL == 1) - { - if (Selex_Std_Pick(i) > nlength) - { - warnstream << "cannot select stdev for length bin greater than nlength " << Selex_Std_Pick(i) << " > " << nlength; - write_message (FATAL, 0); // EXIT! - } - ParmLabel += "LenSelex_std_" + NumLbl(Do_Selex_Std) + "_" + GenderLbl(g) + "_L_" + NumLbl(len_bins(Selex_Std_Pick(i))) + CRLF(1); - } - else if (Selex_Std_AL == 2) - { - if (Selex_Std_Pick(i) > nages) - { - warnstream << "cannot select stdev for age bin greater than maxage " << Selex_Std_Pick(i) << " > " << nages; - write_message (FATAL, 0); // EXIT! - } - ParmLabel += "AgeSelex_std_" + NumLbl(Do_Selex_Std) + "_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(Selex_Std_Pick(i)) + 1) + CRLF(1); - } - else if (Selex_Std_AL == 3) - { - if (Selex_Std_Pick(i) > nages) - { - warnstream << "cannot select stdev for age bin greater than maxage " << Selex_Std_Pick(i) << " > " << nages; - write_message (FATAL, 0); // EXIT! - } - ParmLabel += "AgeLenSelex_std_" + NumLbl(Do_Selex_Std) + "_GP1_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(Selex_Std_Pick(i)) + 1) + CRLF(1); - } - } - } - if (Do_Growth_Std > 0) - { - echoinput << " do growth std labels " << Growth_Std_Cnt << endl; - for (g = 1; g <= gender; g++) - for (i = 1; i <= Growth_Std_Cnt; i++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Grow_std_GP:_" + NumLbl(Do_Growth_Std) + "_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(Growth_Std_Pick(i)) + 1) + CRLF(1); - } - } - - if (Do_NatAge_Std != 0) - { - echoinput << " do natage std labels " << NatAge_Std_Cnt << endl; - for (g = 1; g <= gender; g++) - for (i = 1; i <= NatAge_Std_Cnt; i++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - if (Do_NatAge_Std > 0) - { - ParmLabel += "NatAge_std_" + NumLbl(Do_NatAge_Std) + "_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(NatAge_Std_Pick(i)) + 1) + CRLF(1); - } - else - { - ParmLabel += "NatAge_std_All_" + GenderLbl(g) + "_A_" + NumLbl0(age_vector(NatAge_Std_Pick(i)) + 1) + CRLF(1); - } - } - } - - if (Do_NatM_Std > 0) - { - echoinput << " do NatM std labels " << NatM_Std_Cnt << endl; - for (g = 1; g <= gender; g++) - for (i = 1; i <= NatM_Std_Cnt; i++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - // cout<<"i: "< 0) - { - echoinput << " do Dyn Bzero std labels " << endl; - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Dyn_Bzero_Virg" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Dyn_Bzero_InitEq" + CRLF(1); - for (y = styr; y <= YrMax; y++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", y); - ParmLabel += "Dyn_Bzero_" + onenum + CRLF(1); - } - } - else if (depletion_basis_rd == 5) - { - warnstream << "must select dyn_bzero in control file extra_std for it to be used as depletion denominator "; - write_message (FATAL, 0); // EXIT! - } - if (More_Std_Input(12) == 2) - { - echoinput << " do Dyn Bzero Recruits std labels " << endl; - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Dyn_Recr_Virg" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "Dyn_Recr_InitEq" + CRLF(1); - for (y = styr; y <= YrMax; y++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", y); - ParmLabel += "Dyn_Recr_" + onenum + CRLF(1); - } - } - - // output ln(SSB) std for selected years - echoinput << " do ln(SSB) std labels for 3 years" << endl; - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", styr); - ParmLabel += "ln(SSB)_" + onenum + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", int((endyr + styr) / 2)); - ParmLabel += "ln(SSB)_" + onenum + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", endyr); - ParmLabel += "ln(SSB)_" + onenum + CRLF(1); - - if (Do_se_smrybio > 0) - { - echoinput << " do SmryBio std labels " << endl; - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "SmryBio_Virg" + CRLF(1); - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - ParmLabel += "SmryBio_InitEq" + CRLF(1); - for (y = styr; y <= YrMax; y++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", y); - ParmLabel += "SmryBio_" + onenum + CRLF(1); - } - } - - // output Svy_sdreport value std for selected years - echoinput << " do Svy_sdreport labels " << Svy_N_sdreport << endl; - if (Svy_N_sdreport > 0) - { - k = 0; - for (f = 1; f <= Nfleet; ++f) - { - if (Svy_sdreport(f) > 0) - { - for (i = 1; i <= Svy_N_fleet(f); i++) - { - CoVar_Count++; - j++; - active_parm(CoVar_Count) = j; - sprintf(onenum, "%d", Svy_yr(f, i)); - ParmLabel += fleetname(f) + "_" + onenum + CRLF(1); - } - } - } - } - - // additional labels - echoinput << "parm " << j << " covar " << CoVar_Count << " after all derived quantities " << endl; - sprintf(onenum, "%d", int(100 * depletion_level)); - switch (depletion_basis) - { - case 0: - { - depletion_basis_label += "no_depletion_basis"; - break; - } - case 1: - { - depletion_basis_label += " " + onenum + "%*Virgin_Biomass"; - break; - } - case 2: - { - depletion_basis_label += " " + onenum + "%*B_MSY"; - break; - } - case 3: - { - depletion_basis_label += " " + onenum + "%*StartYr_Biomass"; - break; - } - case 4: - { - depletion_basis_label += " " + onenum + "%*EndYr_Biomass"; - break; - } - case 5: - { - depletion_basis_label += " " + onenum + "%*Dyn_Bzero"; - break; - } - case 6: - { - depletion_basis_label += " " + onenum + "%*Bmark_Biomass"; - break; - } - } - if (depletion_log == 1) depletion_basis_label += ";log"; - if (depletion_multi > 1) - { - sprintf(onenum, "%d", depletion_multi); - depletion_basis_label += ";multi:" + onenum; - } - - switch (SPR_reporting) - { - case 0: // skip SPR reporting - { - SPR_report_label += " raw_SPR"; - break; - } - case 5: // keep as raw %SPR value - { - SPR_report_label += " raw_SPR"; - break; - } - case 1: // compare to SPR - { - sprintf(onenum, "%d", int(100. * SPR_target)); - SPR_report_label += " (1-SPR)/(1-SPR_" + onenum + "%)"; - break; - } - case 2: // compare to SPR_MSY - { - SPR_report_label += " (1-SPR)/(1-SPR_MSY)"; - break; - } - case 3: // compare to SPR_Btarget - { - sprintf(onenum, "%d", int(100. * BTGT_frac)); - SPR_report_label += " (1-SPR)/(1-SPR_at_B" + onenum + "%)"; - break; - } - case 4: - { - SPR_report_label += " 1-SPR"; - break; - } - } - - switch (F_std_basis) - { - case 0: // raw - { - F_report_label = "_abs_F"; - break; - } - case 1: - { - sprintf(onenum, "%d", int(100. * SPR_target)); - F_report_label = "(F)/(F" + onenum + "%SPR)"; - break; - } - case 2: - { - F_report_label = "(F)/(Fmsy)"; - break; - } - case 3: - { - sprintf(onenum, "%d", int(100. * BTGT_frac)); - F_report_label = "(F)/(F_at_B" + onenum + "%)"; - break; - } - } - - switch (F_reporting) - { - case 0: // keep as raw value - { - F_report_label += ";_no_F_report"; - break; - } - case 1: // exploitation rate in biomass - { - F_report_label += ";_with_F=Exploit(bio)"; - break; - } - case 2: // exploitation rate in numbers - { - F_report_label += ";_with_F=Exploit(num)"; - break; - } - case 3: // sum of F mults - { - F_report_label += ";_with_F=sum(full_Fs)"; - break; - } - case 4: // F=Z-M for specified ages - { - F_report_label += ";_with_F=Z-M;_for_ages_"; - sprintf(onenum, "%d", int(F_reporting_ages(1))); - F_report_label += onenum; - sprintf(onenum, "%d", int(F_reporting_ages(2))); - F_report_label += "_" + onenum; - break; - } - case 5: // F=Z-M for specified ages (unweighted) - { - F_report_label += ";_with_F=Z-M;_for_ages_unweighted_"; - sprintf(onenum, "%d", int(F_reporting_ages(1))); - F_report_label += onenum; - sprintf(onenum, "%d", int(F_reporting_ages(2))); - F_report_label += "_" + onenum; - break; - } - } - if (F_std_log == 1) F_report_label += ";log"; - if (F_std_multi > 1) - { - sprintf(onenum, "%d", F_std_multi); - F_report_label += ";multi:" + onenum; - } - - echoinput << "Active parameters plus derived quantities: " << CoVar_Count << endl; - // clang-format off - END_CALCS - -// containers for parameter values after jitter - vector MGparm_use(1,N_MGparm2) - vector SRparm_use(1,N_SRparm3); - vector recdev_cycle_use(1,recdev_cycle); - vector recdev_use(recdev_first,YrMax); - vector recdev_RD(recdev_first,YrMax); - vector Q_parm_use(1,Q_Npar2); - vector init_F_use(1,N_init_F); - vector Fparm_use(1,N_Fparm); - vector selparm_use(1,N_selparm2); -!!k=Do_TG*(3*N_TG+2*Nfleet1); - vector TG_parm_use(1,k); - matrix parm_dev_RD(1,N_parm_dev,parm_dev_minyr,parm_dev_maxyr); - matrix parm_dev_use(1,N_parm_dev,parm_dev_minyr,parm_dev_maxyr); - -!!k=gmorph*(YrMax-styr+1); -!!// SS_Label_Info_4.14.4 #Create matrix CoVar and set it to receive the covariance output - matrix save_G_parm(1,k,1,22); - matrix save_seas_parm(1,nseas,1,10); - matrix CoVar(1,CoVar_Count,1,CoVar_Count+1); -!!save_G_parm.initialize(); -!!CoVar.initialize(); -!!set_covariance_matrix(CoVar); - - // SS_Label_Info_4.15 #Prepare for read empirical wt-at-age, which happens in prelim - int N_WTage_rd - int N_WTage_maxage - int y2 - ivector last_yr_read(-2,Nfleet) - ivector filled_once(-2,Nfleet) - int f2 -// SS_Label_file #5. **SS_param.tpl** -// SS_Label_file # -

INITIALIZE_SECTION
-// SS_Label_file # -// SS_Label_file # - not used in SS3 -// SS_Label_file # -
PARAMETER_SECTION
-// SS_Label_file # -// SS_Label_file # - create needed parameters and derived quantities as dvar arrays - -// SS_Label_Section_4.99 #INITIALIZE_SECTION (not used in SS3) -INITIALIZATION_SECTION - -// SS_Label_Section_5.0 #PARAMETER_SECTION -PARAMETER_SECTION -// { -// SS_Label_Info_5.0.1 #Setup convergence critera and max func evaluations - LOCAL_CALCS - // clang-format on - // set the filename to all ADMB output files to "base_modelname.[ext]" - // where base_modelname can be read from command line with command modelname followed by text - // e.g. ss3_win.exe -nohess -stopph 3 modelname ss4you - // if requested modelname.par is not found, then will attempt to read from ss3.par then ss.par - // whatever name is read, the write will be to modelname.par. Which has default of ss3.par - ad_comm::adprogram_name = base_modelname; - echoinput << "Begin setting up parameters" << endl; - cout << "Begin setting up parameters ... "; - if (readparfile >= 1) - { - anystring = base_modelname + ".par"; - cout << " read parm file: " << anystring << endl; - - ifstream fin(anystring); - if(fin.fail() ) { - cout << " no find, try ss3.par" << endl; - anystring = "ss3.par"; - ifstream fin(anystring); - if(fin.fail() ) { - cout << " no find, try ss.par" << endl; - anystring = "ss.par"; - ifstream fin(anystring); - if(fin.fail() ) { - warnstream << "could not find ss3.par, ss.par, or requested parfile " << base_modelname << ".par"; - write_message(FATAL, 0); - } - }} - cout << " found "< where first value is for age 0! -// if yr=-yr, then fill remaining years for that seas, growpattern, gender, fleet -// fleet 0 contains begin season pop WT -// fleet -1 contains mid season pop WT -// fleet -2 contains maturity*fecundity - - 3darray migrrate(styr-3,YrMax,1,do_migr2,0,nages) - 4darray recr_dist(styr-3,YrMax,1,N_GP*gender,1,N_settle_timings,1,pop); - 3darray recr_dist_unf(1,N_GP*gender,1,N_settle_timings,1,pop); - 3darray recr_dist_endyr(1,N_GP*gender,1,N_settle_timings,1,pop); -!!// SS_Label_Info_5.1.2 #Create SRparm vector, recruitment vectors - init_bounded_number_vector SRparm(1,N_SRparm3,SRparm_LO,SRparm_HI,SRparm_PH) - matrix SRparm_byyr(styr-3,YrMax,1,N_SRparm2+1) // R0, steepness, parm3, sigmar, rec_dev_offset, R1, rho, SSB Time_vary implementation of spawner-recruitment - vector SRparm_virg(1,N_SRparm2+1) - vector SRparm_work(1,N_SRparm2+1) - vector SRparm_bench(1,N_SRparm2+1) - number two_sigmaRsq; - number half_sigmaRsq; - number sigmaR; - number SSBpR_virgin; - number SSBpR_bench; - number SSB0_4_SRR; - number R0_4_SRR; - number regime_change; - number rho; - number dirichlet_Parm; - LOCAL_CALCS - // clang-format on - Ave_Size.initialize(); - // if(SRparm(N_SRparm2)!=0.0 || SRparm_PH(N_SRparm2)>0) {SR_autocorr=1;} else {SR_autocorr=0;} // flag for recruitment autocorrelation - if (do_recdev == 1) - { - k = recdev_start; - j = recdev_end; - s = 1; - p = -1; - } - else if (do_recdev >= 2) - { - s = recdev_start; - p = recdev_end; - k = 1; - j = -1; - } - else - { - s = 1; - p = -1; - k = 1; - j = -1; - } - // clang-format off - END_CALCS - -// vector biasadj(styr-nages,YrMax) // biasadj as used; depends on whether a recdev is estimated or not -// vector biasadj_full(styr-nages,YrMax) // full time series of biasadj values, only used in defined conditions - number sd_offset_rec - - init_bounded_number_vector recdev_cycle_parm(1,recdev_cycle,recdev_cycle_LO,recdev_cycle_HI,recdev_cycle_PH) - -// init_bounded_dev_vector recdev_early(recdev_early_start,recdev_early_end,recdev_LO,recdev_HI,recdev_early_PH) - init_bounded_vector recdev_early(recdev_early_start,recdev_early_end,recdev_LO,recdev_HI,recdev_early_PH) - init_bounded_dev_vector recdev1(k,j,recdev_LO,recdev_HI,recdev_PH) - init_bounded_vector recdev2(s,p,recdev_LO,recdev_HI,recdev_PH) - vector recdev(recdev_first,YrMax); - - LOCAL_CALCS - // clang-format on - if (do_recdev == 0) - { - s = -1; - } - else - { - s = YrMax; - } - if (Do_Impl_Error > 0) - { - k = Fcast_recr_PH2; - j = YrMax; - } - else - { - k = -1; - j = -1; - } - // clang-format off - END_CALCS - init_bounded_vector Fcast_recruitments(recdev_end+1,s,recdev_LO,recdev_HI,Fcast_recr_PH2) - init_bounded_vector Fcast_impl_error(endyr+1,j,-1,1,k) - vector ABC_buffer(endyr+1,YrMax); - number HCR_anchor // basis (denominator) for inflection in control rule. Select virgin SSB or benchmark SSB - -// SPAWN-RECR: define some spawning biomass and recruitment entities - number SSB_virgin - number Recr_virgin - number SSB_vir_LH - - number SSB_unf // SSB unfished, based on benchmark biology - number Recr_unf - number SSB_use - number R0_use - - number SSB_deplete // SSB that will be used as denominator for depletion calculations and as basis for control rule inflection - number SSB_current; // Spawning biomass - number SSB_equil; - - number SPR_trial - number SPR_actual; - number SSBpR_temp; // SSB per Recruit; used to pass quantity into Equil_SpawnRecr - number Recruits; // Age0 Recruits - number equ_mat_bio - number equ_mat_num - - number YPR // variable still used in SPR series - number YPR_Btgt_enc; - number YPR_Btgt_dead; - number YPR_Btgt_N_dead; - number YPR_Btgt_ret; - number YPR_Btgt_cost; - number YPR_Btgt_revenue; - number YPR_Btgt_profit; - number YPR_Btgt; - - number YPR_spr_enc; - number YPR_spr_dead; - number YPR_spr_N_dead; - number YPR_spr_ret; - number YPR_spr_cost; - number YPR_spr_revenue; - number YPR_spr_profit; - - number Vbio_spr; - number Vbio1_spr; - number Vbio_Btgt; - number Vbio1_Btgt; - - number Btgt; - number Btgttgt; - number SPR_Btgt; - number Btgt_Rec; - number Bspr; - number Bspr_rec; - - number MSY - number Bmsy - number Recr_msy - number YPR_msy_enc; - number YPR_msy_dead; - number YPR_msy_N_dead; - number YPR_msy_ret; - number YPR_msy_cost; - number YPR_msy_revenue; - number YPR_msy_profit; - - number YPR_enc; - number YPR_dead; - number YPR_opt; // used to find F0.1 and Fmsy contains all dead catch - vector YPR_val_vec(1,Nfleet); // used to calculate value, so is multipled by price per unit - number YPR_N_dead; - number YPR_ret; - number Cost; // total fishery cost across all fleets - number Profit; // total revenues - Cost - number MSY_Fmult; - number SPR_Fmult; - number Btgt_Fmult; - number MSY_SPR; - - number Btgt2; - number Btgttgt2; - number SPR_Btgt2; - number Btgt_Rec2; - number Btgt_Fmult2; - number H4010_top; - - 3darray SSB_pop_gp(styr-3,YrMax,1,pop,1,N_GP) //Spawning biomass - vector SSB_yr(styr-3,YrMax) - vector SSB_B_yr(styr-3,YrMax) // mature biomass (no fecundity) - vector SSB_N_yr(styr-3,YrMax) // mature numbers -!!k=0; -!!if(Hermaphro_Option!=0) k=1; - - 3darray MaleSSB(styr-3,YrMax*k,1,pop,1,N_GP) //Male Spawning biomass - - matrix SSB_equil_pop_gp(1,pop,1,N_GP); - matrix MaleSSB_equil_pop_gp(1,pop,1,N_GP); - matrix Recr(1,pop,styr-2*nseas,TimeMax_Fcast_std+nseas) //Recruitment - matrix exp_rec(styr-2,YrMax,1,4) //expected value for recruitment: 1=spawner-recr only; 2=with environ and cycle; 3=with bias_adj; 4=with dev - matrix Nmid(1,gmorph,0,nages); - matrix Nsurv(1,gmorph,0,nages); - 3darray natage_temp(1,pop,1,gmorph,0,nages) - number ave_age // average age of fish in unfished population; used to weight R1 - -!!// SS_Label_Info_5.1.3 #Create M, F, and Z parameters and associated arrays and constants - init_bounded_number_vector init_F(1,N_init_F,init_F_LO,init_F_HI,init_F_PH) -// matrix est_equ_catch(1,nseas,1,Nfleet) - -// natural, predation and fishing mortality - matrix natMparms(1,N_natMparms,1,N_GP*gender) // will be derived from the MGparms -!!if(Do_Forecast>0) {k=TimeMax_Fcast_std+nseas;} else {k=TimeMax+nseas;} - 4darray natM(styr-3*nseas,k,0,pop,1,N_GP*gender*N_settle_timings,0,nages) // M1 + pred_M2, see desc. in biofxn.tpl -// 3darray natM_M1(1,nseas,1,N_GP*gender*N_settle_timings,0,nages) // base M, biology only - matrix pred_M2(1,N_pred,styr-3*nseas,TimeMax_Fcast_std+nseas); // predator M2 - - // add area (pop) dimension to same dimension as season; use s1=(p-1)*pop + s - 3darray surv1(1,nseas*pop,1,N_GP*gender*N_settle_timings,0,nages) - 3darray surv2(1,nseas*pop,1,N_GP*gender*N_settle_timings,0,nages) - 4darray Z_rate(styr-3*nseas,k,1,pop,1,gmorph,0,nages) - 3darray Zrate2(1,pop,1,gmorph,0,nages) - matrix Hrate(1,Nfleet,styr-3*nseas,k) //Harvest Rate for each fleet; this is F - 4darray natage(styr-3*nseas,k,1,pop,1,gmorph,0,nages) // add +1 year - 4darray catage(styr-3*nseas,k,1,Nfleet,1,gmorph,0,nages) - 4darray disc_age(styr-3*nseas,TimeMax_Fcast_std+nseas,1,2*N_retain_fleets,1,gmorph,0,nages); - 4darray equ_catage(1,nseas,1,Nfleet,1,gmorph,0,nages) - 4darray equ_numbers(1,nseas,1,pop,1,gmorph,0,3*nages) - 4darray equ_Z(1,nseas,1,pop,1,gmorph,0,nages) - matrix catage_tot(1,gmorph,0,nages)//sum the catches for all fleets, reuse matrix each year - matrix bycatch_F(1,Nfleet,1,nseas) - 3darray catch_fleet(styr-3*nseas,k,1,Nfleet,1,6) // 1=sel_bio, 2=kill_bio; 3=ret_bio; 4=sel_num; 5=kill_num; 6=ret_num - matrix annual_catch(styr-1,YrMax,1,6) // same six as above - matrix annual_F(styr-1,YrMax,1,3) // 1=sum of hrate (if Pope fmethod) or sum hrate*seasdur if F; 2=Z-M for selected ages; 3=M - 3darray equ_catch_fleet(1,6,1,nseas,1,Nfleet) - matrix vuln_bio(styr-3*nseas,k,1,Nfleet) // biomass selected by each fleet - matrix vuln_num(styr-3*nseas,k,1,Nfleet) // numbers selected by each fleet - - matrix fec(1,gmorph,0,nages) //relative fecundity at age, is the maturity times the weight-at-age times eggs/kg for females - matrix make_mature_bio(1,gmorph,0,nages) // mature female weight at age - matrix make_mature_numbers(1,gmorph,0,nages) // mature females at age - matrix virg_fec(1,gmorph,0,nages) - vector Equ_SpawnRecr_Result(1,2); - number fish_bio; - number fish_bio_r; - number fish_bio_e; - number fish_num_e; - number fish_num; - number fish_num_r; - number vbio; - number totbio; - number smrybio; - number smrynum; - number smryage; // mean age of the summary numbers (not accounting for settlement timing) - number catch_mnage; // mean age of the catch (not accounting for settlement timing or season of the catch) - number catch_mnage_d; // total catch numbers for calc of mean age - number harvest_rate; // Harvest rate - number maxpossF; - - - LOCAL_CALCS - // clang-format on - if (N_Fparm > 0) // continuous F - { - k = N_Fparm; - } - else - { - k = -1; - } - // clang-format off - END_CALCS - // defining F_rate as number_vector allows for Fparm_PH to be element specific - init_bounded_number_vector F_rate(1,k,0.,max_harvest_rate,Fparm_PH_dim) - - vector Nmigr(1,pop); - number Nsurvive; - - number caa; - number Fmult; - number Fcast_Fmult; - number Fcurr_Fmult; - number Fchange; - number last_calc; - matrix Fcast_RelF_Use(1,nseas,1,Nfleet); - matrix Bmark_RelF_Use(1,nseas,1,Nfleet); // relative F among all catch fleets - matrix Bmark_HistF(1,nseas,1,Nfleet); // save F to use for non-optimized fleets - // note that bycatch_F(1,Nfleet,1,nseas) has similar role - number alpha; - number beta; - number steepness; - number GenTime; - number Yield; - number Adj4010; - -// !!k1 = styr+(endyr-styr)*nseas-1 + nseas + 1; -// !!y=k1+N_Fcast_Yrs*nseas-1; - -!!// SS_Label_Info_5.1.4 #Create Q_parm and associated arrays - init_bounded_number_vector Q_parm(1,Q_Npar2,Q_parm_LO,Q_parm_HI,Q_parm_PH) - - matrix Svy_log_q(1,Nfleet,1,Svy_N_fleet); - matrix Svy_q(1,Nfleet,1,Svy_N_fleet); - matrix Svy_se_use(1,Nfleet,1,Svy_N_fleet) - matrix Svy_est(1,Nfleet,1,Svy_N_fleet) // will store expected survey in normal or lognormal units as needed - matrix Svy_selec_abund(1,Nfleet,1,Svy_N_fleet); // Vulnerable biomass - matrix Svy_like_I(1,Nfleet,1,Svy_N_fleet) - vector surv_like(1,Nfleet) // likelihood of the indices - matrix Q_dev_like(1,Nfleet,1,2) // likelihood of the Q deviations - - vector disc_like(1,Nfleet) // likelihood of the discard biomass - vector mnwt_like(1,Nfleet) // likelihood of the mean body wt - - matrix exp_disc(1,Nfleet,1,disc_N_fleet) - 3darray retain(styr-3,YrMax,1,Nfleet,1,nlength2) - vector retain_M(1,nlength) - 3darray discmort(styr-3,YrMax,1,Nfleet,1,nlength2) - vector discmort_M(1,nlength) - vector exp_mnwt(1,nobs_mnwt) - - matrix Morphcomp_exp(1,Morphcomp_nobs,6,5+Morphcomp_nmorph) // expected value for catch by growthpattern - - 3darray SzFreqTrans(1,SzFreq_Nmeth*nseas,1,nlength2,1,SzFreq_Nbins_seas_g); - -!!// SS_Label_Info_5.1.5 #Selectivity-related parameters -!! echoinput<<" now dimension the selectivity arrays "< 0) - k = TimeMax_Fcast_std + nseas; - else - k = TimeMax + nseas; - // clang-format off - END_CALCS - -!!// SS_Label_Info_5.1.7 #Create arrays for storing derived selectivity quantities for use in mortality calculations -// 4darray fish_body_wt(styr-3*nseas,k,1,Nfleet,1,gmorph,0,nages); // wt (adjusted for size selex) - 4darray sel_bio(1,nseas,1,Nfleet,1,gmorph,0,nages); // selected * wt - 4darray sel_ret_bio(1,nseas,1,Nfleet,1,gmorph,0,nages); // selected * retained * wt - 4darray sel_num(1,nseas,1,Nfleet,1,gmorph,0,nages); // selected numbers - 4darray sel_ret_num(1,nseas,1,Nfleet,1,gmorph,0,nages); // selected * retained numbers - 4darray sel_dead_num(1,nseas,1,Nfleet,1,gmorph,0,nages); // sel * (retain + (1-retain)*discmort) - 4darray sel_dead_bio(1,nseas,1,Nfleet,1,gmorph,0,nages); // sel * (retain + (1-retain)*discmort) * wt - - 4darray save_sel_num(styr-3*nseas,TimeMax_Fcast_std+nseas,1,Nfleet,1,gmorph,0,nages) // save sel_num (Asel_2) and save fecundity for output; +nseas covers no forecast setups - - 4darray Sel_for_tag(TG_timestart*Do_TG,TimeMax*Do_TG,1,Nfleet,1,gmorph*Do_TG,0,nages) - vector TG_report(1,Nfleet*Do_TG); - vector TG_rep_decay(1,Nfleet*Do_TG); - - 3darray save_sp_len(styr,YrMax,1,2*Nfleet,1,50); // use to output selex parm values after adjustment - - 3darray exp_l(1,Nfleet,1,Nobs_l,1,nlen_bin2) - matrix neff_l(1,Nfleet,1,Nobs_l) - vector tempvec_l(1,nlength); - vector exp_l_temp(1,nlength2); - vector exp_truea_ret(0,nages2); - vector exp_l_temp_ret(1,nlength2); // retained lengthcomp - vector exp_l_temp_dat(1,nlen_bin2); -// vector offset_l(1,Nfleet) // Compute OFFSET for multinomial (i.e, value for the multinonial function - matrix length_like(1,Nfleet,1,Nobs_l) // likelihood of the length-frequency data - vector length_like_tot(1,Nfleet) // likelihood of the length-frequency data - matrix SzFreq_exp(1,SzFreq_totobs,1,SzFreq_Setup2); - vector SzFreq_like(1,SzFreq_N_Like) - 3darray exp_a(1,Nfleet,1,Nobs_a,1,n_abins2) - vector exp_a_temp(1,n_abins2) - vector tempvec_a(0,nages) - vector agetemp(0,nages2) - matrix neff_a(1,Nfleet,1,Nobs_a) - matrix age_like(1,Nfleet,1,Nobs_a) // likelihood of the age-frequency data - vector age_like_tot(1,Nfleet) // likelihood of the age-frequency data - vector sizeage_like(1,Nfleet) // likelihood of the age-frequency data - 3darray exp_ms(1,Nfleet,1,Nobs_ms,1,n_abins2) - 3darray exp_ms_sq(1,Nfleet,1,Nobs_ms,1,n_abins2) - - number Morphcomp_like - vector equ_catch_like(1,Nfleet) - vector catch_like(1,Nfleet) - number recr_like - number noBias_recr_like - number JT_obj_fun - number regime_like - number sum_recdev - number Fcast_recr_like - number parm_like - matrix parm_dev_like(1,N_parm_dev,1,2) -// vector selparm_dev_like(1,N_selparm_dev) - number CrashPen - number SoftBoundPen - number Equ_penalty - number F_ballpark_like - - number R1 - number R1_exp - number t1 - number t2 - number temp - number temp1 - number temp2 - number temp3 - number temp4 - number join1 - number join2 - number join3 - number upselex - number downselex - number peak - number peak2 - number point1 - number point2 - number point3 - number point4 - number timing - number equ_Recr - number equ_F_std - number equ_M_std - -!!// SS_Label_Info_5.1.8 #Create matrix called smry to store derived quantities of interest - matrix Smry_Table(styr-3,YrMax,1,17); - // 1=totbio, 2=smrybio, 3=smrynum, 4=enc_catch, 5=dead_catch, 6=ret_catch, 7=spbio, 8=recruit, - // 9=equ_totbio, 10=equ_smrybio, 11=equ_SSB_virgin, 12=equ_S1, 13=Gentime, 14=YPR, 15=meanage_spawners, 16=meanage_smrynums, 17=meanage_catch - - - matrix env_data(styr-1,YrMax,-4,N_envvar) - matrix TG_save(1,N_TG,1,3+TG_endtime) - - // save gradients for all active parameters -!! int parm_grad_active_count = max(1,active_count); // the dummy parameter is still in there even if no other params are estimated - vector parm_gradients(1,parm_grad_active_count); - -!!// SS_Label_Info_5.2 #Create sdreport vectors - sdreport_vector SSB_std(1,N_STD_Yr); - sdreport_vector recr_std(1,N_STD_Yr); - sdreport_vector SPR_std(1,N_STD_Yr_Ofish); - sdreport_vector F_std(1,N_STD_Yr_F); - sdreport_vector depletion(1,N_STD_Yr_Dep); - sdreport_vector Mgmt_quant(1,N_STD_Mgmt_Quant) - sdreport_vector Extra_Std(1,Extra_Std_N) // includes many subvectors created in SS_readcontrol - - sdreport_vector Svy_sdreport_est(1,Svy_N_sdreport) - -!!// SS_Label_Info_5.3 #Create log-Likelihood vectors - vector MGparm_Like(1,N_MGparm2) - vector init_F_Like(1,N_init_F) - vector Q_parm_Like(1,Q_Npar2) - vector selparm_Like(1,N_selparm2) - vector SRparm_Like(1,N_SRparm3) - vector recdev_cycle_Like(1,recdev_cycle) -!! k=Do_TG*(3*N_TG+2*Nfleet1); - vector TG_parm_Like(1,k); - -!!// SS_Label_Info_5.4 #Define objective function - objective_function_value obj_fun - number last_objfun - vector phase_output(1,max_phase+1) -!!cout<<" end of parameter section "<PRELIMINARY_CALCS_SECTION -// SS_Label_file # -// SS_Label_file # - preprocessing of the comp logL -// SS_Label_file # - get initial parameter values from *ss.par* or from values in control file -// SS_Label_file # - check parameter initial values and ranges and apply jitter using function check_parm() found in SS_objfun.tpl -// SS_Label_file # - set y=styr and do_once flag=1; then call all biology functions once to check for problems -// SS_Label_file # - exit if turn_off_phase<0, else continue to the PROCEDURE_SECTION found in SS_proced.tpl - -//****************************************************************************************** -// SS_Label_Section_6.0 #PRELIMINARY_CALCS_SECTION - PRELIMINARY_CALCS_SECTION - { - // SS_Label_Info_6.1 #Some initial housekeeping - // SS_Label_Info_6.1.1 #Create and initialize random number generator - random_number_generator radm(long(time(&start))); - if (F_ballpark_yr > retro_yr) - F_ballpark_yr = retro_yr; - if (F_ballpark_yr < styr) - { - F_ballpark_lambda = 0.; - } - sel_l.initialize(); - sel_a.initialize(); - offset_l.initialize(); - offset_a.initialize(); - save_sp_len.initialize(); - save_sel_num.initialize(); - catch_mult = 1.0; - - // SS_Label_Info_4.15 #read empirical wt-at-age - last_yr_read.initialize(); - filled_once.initialize(); - if (WTage_rd > 0) - { - ad_comm::change_datafile_name("wtatage.ss"); - echoinput << "Begin reading the empirical weight at age file" << endl; - cout << "Reading the empirical weight at age file ..."; - *(ad_comm::global_datafile) >> N_WTage_maxage; - k = 7 + N_WTage_maxage; - echoinput << " N_WTage_max " << N_WTage_maxage << endl; - ender = 0; - do - { - dvector tempvec(1, k); - *(ad_comm::global_datafile) >> tempvec(1, k); - if (tempvec(1) == -9999.) - ender = 1; - echoinput << tempvec(1, k) << endl; - y = abs(tempvec(1)); - f = tempvec(6); - if (f == -2) - { - if (tempvec(7) > 0.0) - { - warnstream << "WTATAGE.SS has positive fecundity at age 0 for year = " << y << " Are you sure? fecundity is for the time of spawning and age 0 fish normally do not exist at time of spawning"; - write_message(WARN, 0); - } - } - if (y < 9999) - last_yr_read(f) = max(y, last_yr_read(f)); - if (y < 9999 && tempvec(1) < 0) - filled_once(f) = y; // record latest fill event for this input category - WTage_in.push_back(tempvec(1, k)); - } while (ender == 0); - N_WTage_rd = WTage_in.size() - 1; - k2 = TimeMax_Fcast_std + 1; - echoinput << " N_WTage_rd " << N_WTage_rd << endl; - echoinput << " last year read for -2 through Nfleet: " << last_yr_read << endl; - echoinput << " latest fill year for -2 through Nfleet: " << filled_once << endl; - - for (f = -2; f <= Nfleet; f++) - for (t = styr; t <= k2; t++) - for (g = 1; g <= gmorph; g++) - for (a = 0; a <= nages; a++) - { - Wt_Age_t(t, f, g, a) = -9999.; - } - if (N_WTage_maxage > nages) - N_WTage_maxage = nages; // so extra ages being read will be ignored - dvector tempvec(1, 7 + N_WTage_maxage); - for (i = 0; i <= N_WTage_rd - 1; i++) - { - tempvec(1, 7 + N_WTage_maxage) = WTage_in[i](1, 7 + N_WTage_maxage); - y = abs(tempvec(1)); - f = tempvec(6); - if (y < styr) - y = styr; - if (tempvec(1) < 0 || (y == last_yr_read(f) && filled_once(f) == 0)) - { - y2 = max(YrMax, endyr + 50); - } - else - { - y2 = y; - } // allows filling to end of time series - s = abs(tempvec(2)); - if (tempvec(2) < 0) - { - f2 = Nfleet; - } - else - { - f2 = f; - } // allows filling all fleets - gg = tempvec(3); - gp = tempvec(4); - birthseas = tempvec(5); - g = (gg - 1) * N_GP * nseas + (gp - 1) * nseas + birthseas; // note cannot handle platoons - if (s <= nseas && gg <= gender && gp <= N_GP && birthseas <= nseas && f <= Nfleet) - { - for (j = y; j <= y2; j++) // loop years - { - for (k = f; k <= f2; k++) - { - t = styr + (j - styr) * nseas + s - 1; - for (a = 0; a <= N_WTage_maxage; a++) - Wt_Age_t(t, k, g, a) = tempvec(7 + a); - for (a = N_WTage_maxage; a <= nages; a++) - Wt_Age_t(t, k, g, a) = Wt_Age_t(t, k, g, N_WTage_maxage); // fills out remaining ages, if any - if (j == y && k == f) - echoinput << "year " << y << " s " << s << " sex " << gg << " gp " << gp << " bs " << birthseas << " morph " << g << " pop/fleet " << f << " " << Wt_Age_t(t, k, g)(0, min(6, nages)) << endl; - } - } - } - } - dvar_vector junkvec2(0, nages); - for (f = -2; f <= Nfleet; f++) - for (t = styr; t <= k2 - 1; t++) - for (g = 1; g <= gmorph; g++) - for (a = 0; a <= nages; a++) - if (Wt_Age_t(t, f, g, a) == -9999.) - { - warnstream << "wtatage not assigned for: time, morph, fleet, age: " << t << " " << g << " " << f << " " << a; - write_message (WARN, 0); - } - temp = float(Bmark_Yr(2) - Bmark_Yr(1) + 1.); // get denominator - echoinput << " fill benchmark years with mean " << endl; - for (f = -2; f <= Nfleet; f++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (s = 0; s <= nseas - 1; s++) - { - junkvec2.initialize(); - for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) - { - junkvec2 += Wt_Age_t(t + s, f, g); - } - Wt_Age_t(styr - 3 * nseas + s, f, g) = junkvec2 / temp; - } - } - echoinput << "Finished reading the empirical weight at age file" << endl; - cout << "done" << endl; // Done reading the empirical weight at age file - } - else - { - N_WTage_rd = 0; - N_WTage_maxage = nages; - } - - // SS_Label_Info_6.1.2 #Initialize the dummy parameter as needed - if (Turn_off_phase <= 0) - { - dummy_parm = 0.99999999999999; - } - else - { - dummy_parm = 1.0; - } - - Cohort_Growth = 1.0; // base value for cohort growth deviations - - // SS_Label_Info_6.2 #Apply input variance adjustments to each data type - // SS_Label_Info_6.2.1 #Do variance adjustment for surveys - - echoinput << " do variance adjustment for surveys " << endl; - for (f = 1; f <= Nfleet; f++) - if (Svy_N_fleet(f) > 0) - { - for (i = 1; i <= Svy_N_fleet(f); i++) - { - Svy_se(f, i) = Svy_se_rd(f, i); // don't overwrite the input values - - if (Svy_use(f, i) > 0) - { - if (Svy_errtype(f) >= 0) // lognormal or lognormal T-dist - { - if (Svy_obs(f, i) <= 0.0) - { - warnstream << "Survey obs must be positive for lognormal error"; - write_message (FATAL, 0); // EXIT! - } - Svy_obs_log(f, i) = log(Svy_obs(f, i)); - Svy_se(f, i) += var_adjust(1, f); - if (Svy_se(f, i) <= 0.0) - Svy_se(f, i) = 0.001; - } - else if ( Svy_errtype(f) == -1 ) // normal distribution - { - Svy_se(f, i) += var_adjust(1, f); - if (Svy_se(f, i) <= 0.0) - Svy_se(f, i) = 0.001; - } - else - { - // gamma will go here - } - - } - } - } - echoinput << " survey stderr has been set-up " << endl; - - // SS_Label_Info_6.2.2 #Set up variance for discard observations - for (f = 1; f <= Nfleet; f++) - if (disc_N_fleet(f) > 0) - { - for (i = 1; i <= disc_N_fleet(f); i++) - { - if (yr_disc_use(f, i) >= 0.) - { - if (cv_disc(f, i) <= 0.0) - cv_disc(f, i) = 0.001; - if (disc_errtype(f) >= 0 || disc_errtype(f) == -3) - { - // input is CV - sd_disc(f, i) = cv_disc(f, i) * obs_disc(f, i); - } - else - { - // input is SD - sd_disc(f, i) = cv_disc(f, i); - } - - sd_disc(f, i) += var_adjust(2, f); // note that adjustment is to the sd, not the CV - if (sd_disc(f, i) < 0.001) - sd_disc(f, i) = 0.001; - } - } - } - echoinput << " discard stderr has been set-up " << endl; - - // SS_Label_Info_6.2.3 #Set up variance for mean body wt data, note different reference to array that was read - // 10 items are: 1yr, 2seas, 3fleet, 4part, 5type, 6obs, 7se, then three intermediate variance quantities - for (i = 1; i <= nobs_mnwt; i++) - { - if (mnwtdata(3, i) > 0.) // used observation - { - mnwtdata(7, i) += var_adjust(3, mnwtdata(3, i)); - if (mnwtdata(7, i) <= 0.0) - mnwtdata(7, i) = 0.001; - mnwtdata(8, i) = mnwtdata(6, i) * mnwtdata(7, i); // se = cv*obs - mnwtdata(9, i) = DF_bodywt * square(mnwtdata(8, i)); - mnwtdata(10, i) = sd_offset * log(mnwtdata(8, i)); - } - } - echoinput << " mean bodywt stderr has been set-up " << endl; - - // SS_Label_Info_6.2.4 #Do variance adjustment and compute OFFSET for length comp - if (Nobs_l_tot > 0) - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= Nobs_l(f); i++) - // if(header_l(f,i,3)>0) - { - nsamp_l(f, i) *= var_adjust(4, f); - // {if(nsamp_l(f,i)<=1.0) nsamp_l(f,i)=1.;} // adjust sample size - // calculate lencomp offsets - if (Comp_Err_L(0, f) == 0) - { - // multinomial - nsamp_l(f, i) = max(min_sample_size_L(0, f), nsamp_l(f, i)); - if (gen_l(f, i) != 2) - { - offset_l(f, i) -= nsamp_l(f, i) * - obs_l(f, i)(tails_l(f, i, 1), tails_l(f, i, 2)) * log(obs_l(f, i)(tails_l(f, i, 1), tails_l(f, i, 2))); - } - if (gen_l(f, i) >= 2 && gender == 2) - { - offset_l(f, i) -= nsamp_l(f, i) * - obs_l(f, i)(tails_l(f, i, 3), tails_l(f, i, 4)) * log(obs_l(f, i)(tails_l(f, i, 3), tails_l(f, i, 4))); - } - } - else if( (Comp_Err_L(0, f)==1) || (Comp_Err_L(0, f)==2) ) // dirichlet - { - // Dirichlet-Multinomial (either 1 = linear, 2 = saturating) - // cannot use fxn Comp_Err_Dirichlet for this calc because only need the first part here - offset_l(f, i) = gammln(nsamp_l(f, i) + 1.); - if (gen_l(f, i) != 2) - { - int z1 = tails_l(f, i, 1); - int z2 = tails_l(f, i, 2); - offset_l(f, i) -= sum(gammln(1. + nsamp_l(f, i) * obs_l(f, i)(z1, z2))); - // sum(gammln(1. + nsamp_l(f,i)*obs_l(f,i)(tails_l(f,i,3),tails_l(f,i,4)))); - } - if (gen_l(f, i) >= 2 && gender == 2) - { - int z1 = tails_l(f, i, 3); - int z2 = tails_l(f, i, 4); - offset_l(f, i) -= sum(gammln(1. + nsamp_l(f, i) * obs_l(f, i)(z1, z2))); - } - } - else if( (Comp_Err_L(0, f)==3)) // MV Tweedie - { - // no MV Tweedie offset - } - } - // echoinput<<" length_comp offset: "< 0) - { - echoinput << "Create superperiod sample weights for survey obs" << endl - << "Flt_num SuperP Obs_num Flt_code SE_input samp_wt" << endl; - for (j = 1; j <= Svy_super_N(f); j++) // do each super period - { - temp = 1.0; // relative sample weight for time period the accumulator observation - k = 0; // count of samples with real information - for (i = Svy_super_start(f, j); i <= Svy_super_end(f, j); i++) // loop obs of this super period - { - if (Svy_use(f, i) < 0) // so one of the obs to be combined - { - temp += Svy_se(f, i); - } // add in its weight relative to 1.0 for the observation with real info - else - { - k++; - } - } - if (k != 1) - { - warnstream << "There must only be 1 sample with real info in survey superperiod " << j; - write_message (FATAL, 0); // EXIT! - } - for (i = Svy_super_start(f, j); i <= Svy_super_end(f, j); i++) - { - if (Svy_use(f, i) < 0) // so one of the obs to be combined - { - Svy_super_weight(f, i) = Svy_se(f, i) / value(temp); - } - else - { - Svy_super_weight(f, i) = 1.0 / value(temp); - } - echoinput << f << " " << j << " " << i << " " << Svy_use(f, i) << " " << Svy_se(f, i) << " " << Svy_super_weight(f, i) << endl; - } - } - } - - if (N_suprper_disc(f) > 0) - { - echoinput << "Create superperiod sample weights for discard obs" << endl - << "Flt_num SuperP Obs_num Flt_code SE_input samp_wt" << endl; - for (j = 1; j <= N_suprper_disc(f); j++) // do each super period - { - temp = 1.0; // relative sample weight for time period the accumulator observation - k = 0; // count of samples with real information - for (i = suprper_disc1(f, j); i <= suprper_disc2(f, j); i++) // loop obs of this super period - { - if (yr_disc_use(f, i) < 0) // so one of the obs to be combined - { - temp += cv_disc(f, i); - } // add in its weight relative to 1.0 for the observation with real info - else - { - k++; - } - } - if (k != 1) - { - warnstream << "There must only be 1 sample with real info in survey superperiod " << j; - write_message (FATAL, 0); // EXIT! - } - for (i = suprper_disc1(f, j); i <= suprper_disc2(f, j); i++) - { - if (yr_disc_use(f, i) < 0) // so one of the obs to be combined - { - suprper_disc_sampwt(f, i) = cv_disc(f, i) / value(temp); - } - else - { - suprper_disc_sampwt(f, i) = 1.0 / value(temp); - } - echoinput << f << " " << j << " " << i << " " << yr_disc_use(f, i) << " " << cv_disc(f, i) << " " << suprper_disc_sampwt(f, i) << endl; - } - } - } - - if (N_suprper_l(f) > 0) - { - echoinput << "Create superperiod sample weights for length obs" << endl - << "Flt_num SuperP Obs_num Flt_code effN_input samp_wt" << endl; - for (j = 1; j <= N_suprper_l(f); j++) // do each super period - { - temp = 1.0; // relative sample weight for time period the accumulator observation - k = 0; // count of samples with real information - for (i = suprper_l1(f, j); i <= suprper_l2(f, j); i++) // loop obs of this super period - { - if (header_l(f, i, 3) < 0) // so one of the obs to be combined - { - temp += nsamp_l(f, i); - } - else - { - k++; - } - } - if (k > 1) - { - warnstream << "There must only be 1 sample with real info in length superperiod " << j; - write_message (FATAL, 0); // EXIT! - } - for (i = suprper_l1(f, j); i <= suprper_l2(f, j); i++) - { - if (header_l(f, i, 3) < 0) // so one of the obs to be combined - { - suprper_l_sampwt(f, i) = nsamp_l(f, i) / value(temp); - } - else - { - suprper_l_sampwt(f, i) = 1.0 / value(temp); - } - echoinput << f << " " << j << " " << i << " " << header_l(f, i, 3) << " " << nsamp_l(f, i) << " " << suprper_l_sampwt(f, i) << endl; - } - } - } - - if (N_suprper_a(f) > 0) - { - echoinput << "Create superperiod sample weights for age obs" << endl - << "Flt_num SuperP Obs_num Flt_code effN_input samp_wt" << endl; - for (j = 1; j <= N_suprper_a(f); j++) // do each super period - { - temp = 1.0; // relative sample weight for time period the accumulator observation - k = 0; // count of samples with real information - for (i = suprper_a1(f, j); i <= suprper_a2(f, j); i++) // loop obs of this super period - { - if (header_a(f, i, 3) < 0) // so one of the obs to be combined - { - temp += nsamp_a(f, i); - } - else - { - k++; - } - } - if (k != 1) - { - warnstream << "There must only be 1 sample with real info in age superperiod " << j; - write_message (FATAL, 0); // EXIT! - } - for (i = suprper_a1(f, j); i <= suprper_a2(f, j); i++) - { - if (header_a(f, i, 3) < 0) // so one of the obs to be combined - { - suprper_a_sampwt(f, i) = nsamp_a(f, i) / value(temp); - } - else - { - suprper_a_sampwt(f, i) = 1.0 / value(temp); - } // for the element holding the combined observation - echoinput << f << " " << j << " " << i << " " << header_a(f, i, 3) << " " << nsamp_a(f, i) << " " << suprper_a_sampwt(f, i) << endl; - } - } - } - if (N_suprper_ms(f) > 0) - { - echoinput << "Create superperiod sample weights for meansize obs" << endl - << "Flt_num SuperP Obs_num Flt_code effN_input samp_wt" << endl; - for (j = 1; j <= N_suprper_ms(f); j++) // do each super period - { - temp = 1.0; // relative sample weight for time period the accumulator observation - k = 0; // count of samples with real information - for (i = suprper_ms1(f, j); i <= suprper_ms2(f, j); i++) // loop obs of this super period - { - if (header_ms(f, i, 3) < 0) // so one of the obs to be combined - { - temp += header_ms(f, i, 7); - } - else - { - k++; - } - } - if (k != 1) - { - warnstream << "There must only be 1 sample with real info in meansize superperiod " << j; - write_message (FATAL, 0); // EXIT! - } - for (i = suprper_ms1(f, j); i <= suprper_ms2(f, j); i++) - { - if (header_ms(f, i, 3) < 0) // so one of the obs to be combined - { - suprper_ms_sampwt(f, i) = header_ms(f, i, 7) / value(temp); - } - else - { - suprper_ms_sampwt(f, i) = 1.0 / value(temp); - } // for the element holding the combined observation - echoinput << f << " " << j << " " << i << " " << header_ms(f, i, 3) << " " << header_ms(f, i, 7) << " " << suprper_ms_sampwt(f, i) << endl; - } - } - } - } - - // SS_Label_Info_6.2.5 #Do variance adjustment and compute OFFSET for age comp - if (Nobs_a_tot > 0) - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= Nobs_a(f); i++) - // if(header_a(f,i,3)>0) - { - nsamp_a(f, i) *= var_adjust(5, f); - // {if(nsamp_a(f,i)<=1.0) nsamp_a(f,i)=1.;} // adjust sample size - nsamp_a(f, i) = max(min_sample_size_A(f), nsamp_a(f, i)); - // calculate agecomp offsets - // multinomial - if (Comp_Err_A(f) == 0) - { - if (gen_a(f, i) != 2) - { - offset_a(f, i) -= nsamp_a(f, i) * - obs_a(f, i)(tails_a(f, i, 1), tails_a(f, i, 2)) * log(obs_a(f, i)(tails_a(f, i, 1), tails_a(f, i, 2))); - } - if (gen_a(f, i) >= 2 && gender == 2) - { - offset_a(f, i) -= nsamp_a(f, i) * - obs_a(f, i)(tails_a(f, i, 3), tails_a(f, i, 4)) * log(obs_a(f, i)(tails_a(f, i, 3), tails_a(f, i, 4))); - } - } - else if( (Comp_Err_A(f)==1) || (Comp_Err_A(f)==2) ) // dirichlet - { - // Dirichlet-Multinomial (either 1 = linear, 2 = saturating) - offset_a(f, i) = gammln(nsamp_a(f, i) + 1.); - if (gen_a(f, i) != 2) - { - int z1 = tails_a(f, i, 1); - int z2 = tails_a(f, i, 2); - offset_a(f, i) -= sum(gammln(1. + nsamp_a(f, i) * obs_a(f, i)(z1, z2))); - } - if (gen_a(f, i) >= 2 && gender == 2) - { - int z1 = tails_a(f, i, 3); - int z2 = tails_a(f, i, 4); - offset_a(f, i) -= sum(gammln(1. + nsamp_a(f, i) * obs_a(f, i)(z1, z2))); - } - } - else if( (Comp_Err_A(f)==3) ) // MV Tweedie - { - // MV Tweedie has no offset, at least yet - } - - } - // echoinput<<" agecomp offset "< 0) - { - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= Nobs_ms(f); i++) - for (b = 1; b <= n_abins2; b++) - { - if (obs_ms_n(f, i, b) > 0) - { - obs_ms_n(f, i, b) = sqrt(var_adjust(6, f) * obs_ms_n(f, i, b)); - // if(obs_ms_n(f,i,b)<=1.0) obs_ms_n(f,i,b)=1.; // adjust sample size - } - } - } - echoinput << " setup stderr for mean size-at-age: " << endl; - - // SS_Label_Info_6.2.7 #Input variance adjustment for generalized size comp - if (SzFreq_Nmeth > 0) - { - N_suprper_SzFreq = 0; // redo this counter so can use the counter - - in_superperiod = 0; - for (iobs = 1; iobs <= SzFreq_totobs; iobs++) - { - f = abs(SzFreq_obs1(iobs, 4)); - y = abs(SzFreq_obs1(iobs, 2)); - if (var_adjust(7, f) != 1.0) - { - SzFreq_sampleN(iobs) *= var_adjust(7, f); - // if (SzFreq_sampleN(iobs) < 1.0) SzFreq_sampleN(iobs) = 1.; - } - k = SzFreq_obs_hdr(iobs, 6); // get the method - f = abs(SzFreq_obs_hdr(iobs, 3)); - s = SzFreq_obs_hdr(iobs, 2); // sign used to indicate start/stop of super period - if (SzFreq_sampleN(iobs) > 0 && SzFreq_obs_hdr(iobs, 3) > 0) - { - z1 = SzFreq_obs_hdr(iobs, 7); - z2 = SzFreq_obs_hdr(iobs, 8); - g = SzFreq_LikeComponent(f, k); - if (Comp_Err_Sz(k) == 0) // Multinomial - { - offset_Sz_tot(g) -= SzFreq_sampleN(iobs) * SzFreq_obs(iobs)(z1, z2) * log(SzFreq_obs(iobs)(z1, z2)); - SzFreq_each_offset(iobs) -= SzFreq_sampleN(iobs) * SzFreq_obs(iobs)(z1, z2) * log(SzFreq_obs(iobs)(z1, z2)); - } - else if (Comp_Err_Sz(k) == 1 || Comp_Err_Sz(k) == 2 ) // Dirichlet - { - offset_Sz_tot(g) += gammln(SzFreq_sampleN(iobs) + 1.) - sum(gammln(1. + SzFreq_sampleN(iobs) * SzFreq_obs(iobs)(z1, z2))); - SzFreq_each_offset(iobs) += gammln(SzFreq_sampleN(iobs) + 1.) - sum(gammln(1. + SzFreq_sampleN(iobs) * SzFreq_obs(iobs)(z1, z2))); - } - else if (Comp_Err_Sz(k) == 3) // MV Tweedie - { - // MV Tweedie not available - } - } - // identify super-period starts and stops - if (s < 0) // start/stop a super-period ALL observations must be continguous in the file - { - if (in_superperiod == 0) - { - N_suprper_SzFreq++; - suprper_SzFreq_start(N_suprper_SzFreq) = iobs; - in_superperiod = 1; - } - else if (in_superperiod == 1) // end a super-period - { - suprper_SzFreq_end(N_suprper_SzFreq) = iobs; - in_superperiod = 0; - } - } - } - echoinput << " Sizefreq comp var adjust has been applied and offset calculated " << endl; - - if (N_suprper_SzFreq > 0) - { - echoinput << "sizefreq superperiod start obs: " << suprper_SzFreq_start << endl - << "sizefreq superperiod end obs: " << suprper_SzFreq_end << endl; - - echoinput << "Create superperiod sample weights for sizecomp obs " << endl - << "Flt_num SuperP Obs_num Sample_N_read samp_wt" << endl; - for (j = 1; j <= N_suprper_SzFreq; j++) // do each super period - { - temp = 1.0; // relative sample weight for time period the accumulator observation - k = 0; // count of samples with real information - for (iobs = suprper_SzFreq_start(j); iobs <= suprper_SzFreq_end(j); iobs++) // loop obs of this super period - { - if (SzFreq_obs_hdr(iobs, 3) < 0) // so one of the obs to be combined - { - temp += SzFreq_sampleN(iobs); - } - else - { - k++; - } // so counts the obs that are not just placeholders - } - if (k != 1) - { - warnstream << "There must only be 1 sample with real info in sizecomp superperiod " << j; - write_message (FATAL, 0); // EXIT! - } - for (iobs = suprper_SzFreq_start(j); iobs <= suprper_SzFreq_end(j); iobs++) - { - if (SzFreq_obs_hdr(iobs, 3) < 0) // so one of the obs to be combined - { - suprper_SzFreq_sampwt(iobs) = SzFreq_sampleN(iobs) / value(temp); - } - else - { - suprper_SzFreq_sampwt(iobs) = 1.0 / value(temp); - } // for the element holding the combined observation - echoinput << SzFreq_obs_hdr(iobs, 3) << " " << j << " " << iobs << " " << SzFreq_sampleN(iobs) << " " << suprper_SzFreq_sampwt(iobs) << endl; - } - } - } - } - - // SS_Label_Info_6.4 #Conditionally copy the initial parameter values read from the "CTL" file into the parameter arrays - // skip this assignment if the parameters are being read from a "SS2.PAR" file - - if (readparfile == 0) - { - echoinput << " set parms to init values in CTL file " << endl; - for (i = 1; i <= N_MGparm2; i++) - { - MGparm(i) = MGparm_RD(i); - } // set vector of initial natmort and growth parms - echoinput << " MGparms read from ctl " << MGparm << endl; - - for (i = 1; i <= N_SRparm3; i++) - { - SRparm(i) = SRparm_RD(i); - } - echoinput << " SRR_parms read from ctl " << SRparm << endl; - - if (recdev_cycle > 0) - { - for (y = 1; y <= recdev_cycle; y++) - { - recdev_cycle_parm(y) = recdev_cycle_parm_RD(y, 3); - } - } - - if (recdev_do_early > 0) recdev_early.initialize(); - if (Do_Forecast > 0 && do_recdev != 0) Fcast_recruitments.initialize(); - if (Do_Impl_Error > 0) Fcast_impl_error.initialize(); - - if (do_recdev == 1) - { - recdev1.initialize(); - } // set devs to zero - else if (do_recdev >= 2) - { - recdev2.initialize(); - } // set devs to zero - - if (recdev_read > 0) - { - for (j = 1; j <= recdev_read; j++) - { - y = recdev_input(j, 1); - if (y >= recdev_first && y <= YrMax) - { - if (y < recdev_start) - { - recdev_early(y) = recdev_input(j, 2); - } - else if (y <= recdev_end) - { - if (do_recdev == 1) - { - recdev1(y) = recdev_input(j, 2); - } - else if (do_recdev >= 2) - { - recdev2(y) = recdev_input(j, 2); - } - } - else - { - Fcast_recruitments(y) = recdev_input(j, 2); - } - } - else - { - warnstream << "Trying to specify a recdev out of allowable range of years " << y; - write_message (WARN, 0); - } - } - } - echoinput << " rec_devs read from ctl "; - if (do_recdev == 1) - echoinput << recdev1 << endl; - if (do_recdev >= 2) - echoinput << recdev2 << endl; - - // ************************************************** - if (Q_Npar2 > 0) - { - for (i = 1; i <= Q_Npar2; i++) - { - Q_parm(i) = Q_parm_RD(i); - } // set vector of initial index Q parms - echoinput << " Q_parms read from ctl " << Q_parm << endl; - } - - if (N_init_F > 0) - { - for (i = 1; i <= N_init_F; i++) - init_F(i) = init_F_RD(i); // set vector of initial parms - echoinput << " initF_parms read from ctl " << init_F << endl; - } - - //SS_Label_Info_xxx setup F as parameters - if (N_Fparm > 0) - { - if (readparfile == 0) - { - for (g = 1; g <= N_Fparm; g++) - { - f = Fparm_loc[g](1); - t = Fparm_loc[g](2); - if(catch_ret_obs(f,t) > 0.0) { - F_rate(g) = F_parm_intval(f); - Hrate(f, t) = F_parm_intval(f); - } - } - - if (F_detail > 0) - { - // note that detailed phase and catch_se have already been set in readcontrol - for (k = 1; k <= F_detail; k++) - { - f = F_setup2(k, 1); - y = F_setup2(k, 2); - s = F_setup2(k, 3); - if (y > 0) - { - y1 = y; - y2 = y; - } - else - { - y1 = -y; - y2 = endyr; - } - for (y = y1; y <= y2; y++) - { - t = styr + (y - styr) * nseas + s - 1; - g = do_Fparm_loc(f, t); - if (g > 0) - { - F_rate(g) = F_setup2(k, 4); - Hrate(f, t) = F_setup2(k, 4); - } - } - } - } - echoinput << " Fmort_parms have been set according to F_detail input" << endl; - } - else - { - echoinput << " Fmort_parms obtained from ss.par " << endl; - } - } - - for (i = 1; i <= N_selparm2; i++) - selparm(i) = selparm_RD(i); // set vector of initial selex parms - echoinput << " selex_parms read from ctl " << selparm << endl; - - if (Do_TG > 0) - { - k = Do_TG * (3 * N_TG + 2 * Nfleet1); - for (i = 1; i <= k; i++) - { - TG_parm(i) = TG_parm2(i, 3); - } - echoinput << " Tag_parms read from ctl " << TG_parm << endl; - } - checksum999 = 999.; - } - else - { - echoinput << "checksum from par file "< 0) - { - echoinput << endl - << " now check recdev_cycle bounds and priors and do jitter if requested " << endl; - for (j = 1; j <= recdev_cycle; j++) - { - recdev_cycle_parm(j) = Check_Parm(j, recdev_cycle_PH(j), recdev_cycle_LO(j), recdev_cycle_HI(j), recdev_cycle_parm_RD(j, 6), recdev_cycle_parm_RD(j, 4), recdev_cycle_parm_RD(j, 5), jitter, recdev_cycle_parm(j)); - } - echoinput << " recdev_cycle after check " << recdev_cycle_parm << endl; - recdev_cycle_use = value(recdev_cycle_parm); - } - - if (recdev_do_early > 0) - { - recdev_RD(recdev_early_start, recdev_early_end) = value(recdev_early(recdev_early_start, recdev_early_end)); - - for (y = recdev_early_start; y <= recdev_early_end; y++) - { - recdev_early(y) = Check_Parm(y, recdev_early_PH, recdev_LO, recdev_HI, 0, 0., 1., jitter, recdev_early(y)); - } - // recdev_early -=sum(recdev_early)/(recdev_early_end-recdev_early_start+1); - - recdev_use(recdev_early_start, recdev_early_end) = value(recdev_early(recdev_early_start, recdev_early_end)); - } - - if (recdev_PH > 0 && do_recdev > 0) - { - echoinput << endl - << " now check recdev bounds and priors and do jitter if requested " << endl; - if (do_recdev == 1) - { - recdev_RD(recdev_start, recdev_end) = value(recdev1(recdev_start, recdev_end)); - for (i = recdev_start; i <= recdev_end; i++) - { - recdev1(i) = Check_Parm(i, recdev_PH, recdev_LO, recdev_HI, 0, 0., 1., jitter, recdev1(i)); - } - recdev1 -= sum(recdev1) / (recdev_end - recdev_start + 1); - recdev_use(recdev_start, recdev_end) = value(recdev1(recdev_start, recdev_end)); - } - else - { - recdev_RD(recdev_start, recdev_end) = value(recdev2(recdev_start, recdev_end)); - for (i = recdev_start; i <= recdev_end; i++) - { - recdev2(i) = Check_Parm(i, recdev_PH, recdev_LO, recdev_HI, 0, 0., 1., jitter, recdev2(i)); - } - // recdev2 -=sum(recdev2)/(recdev_end-recdev_start+1); - recdev_use(recdev_start, recdev_end) = value(recdev2(recdev_start, recdev_end)); - } - } - - if (Do_Forecast >= 0 && do_recdev > 0) - { - recdev_RD(recdev_end + 1, YrMax) = value(Fcast_recruitments(recdev_end + 1, YrMax)); - recdev_use(recdev_end + 1, YrMax) = value(Fcast_recruitments(recdev_end + 1, YrMax)); - } - - echoinput << " rec_devs after check " << recdev_use << endl; - - if (Q_Npar2 > 0) - { - echoinput << endl - << " now check Qparm bounds and priors and do jitter if requested " << endl; - for (i = 1; i <= Q_Npar2; i++) - { - Q_parm(i) = Check_Parm(i, Q_parm_PH(i), Q_parm_LO(i), Q_parm_HI(i), Q_parm_PRtype(i), Q_parm_PR(i), Q_parm_CV(i), jitter, Q_parm(i)); - } - echoinput << " Q_parms after check " << Q_parm << endl; - Q_parm_use = value(Q_parm); - } - - if (N_init_F > 0) - { - echoinput << endl - << " now check init_F parm bounds and priors and do jitter if requested " << endl; - for (i = 1; i <= N_init_F; i++) - { - init_F(i) = Check_Parm(i, init_F_PH(i), init_F_LO(i), init_F_HI(i), init_F_PRtype(i), init_F_PR(i), init_F_CV(i), jitter, init_F(i)); - } - echoinput << " initF_parms after check " << init_F << endl; - init_F_use = value(init_F); - } - - if (N_Fparm > 0) - { - echoinput << endl - << " now check F parm bounds and priors and do jitter if requested " << endl; - for (i = 1; i <= N_Fparm; i++) - { - { - F_rate(i) = Check_Parm(i, Fparm_PH[i], 0., max_harvest_rate, 0, 0.05, 1., jitter, F_rate(i)); - } - } - echoinput << " F_parms after check " << F_rate << endl; - Fparm_use = value(F_rate); - } - - if (N_selparm2 > 0) - { - echoinput << endl - << " now check sel_parm bounds and priors and do jitter if requested " << endl; - for (i = 1; i <= N_selparm2; i++) - { - selparm(i) = Check_Parm(i, selparm_PH(i), selparm_LO(i), selparm_HI(i), selparm_PRtype(i), selparm_PR(i), selparm_CV(i), jitter, selparm(i)); - } - echoinput << " selex_parms after check " << selparm << endl; - selparm_use = value(selparm); - } - - if (Do_TG > 0) - { - echoinput << endl - << " now check TAG parm bounds and priors and do jitter if requested " << endl; - k = Do_TG * (3 * N_TG + 2 * Nfleet1); - for (i = 1; i <= k; i++) - { - { - TG_parm(i) = Check_Parm(i, TG_parm_PH(i), TG_parm_LO(i), TG_parm_HI(i), TG_parm2(i, 6), TG_parm2(i, 4), TG_parm2(i, 5), jitter, TG_parm(i)); - } - } - echoinput << " Tag_parms after check " << TG_parm << endl; - TG_parm_use = value(TG_parm); - } - - if (N_parm_dev > 0) - { - echoinput << endl - << " now check parmdev bounds and priors and do jitter if requested " << endl; - for (i = 1; i <= N_parm_dev; i++) - for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) - { - parm_dev_RD(i, j) = value(parm_dev(i, j)); - } - - for (i = 1; i <= N_parm_dev; i++) - if (parm_dev_PH(i) > 0) - for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) - { - parm_dev(i, j) = Check_Parm(j, parm_dev_PH(i), -10, 10, 0, 0., 1., jitter, parm_dev(i, j)); - } - for (i = 1; i <= N_parm_dev; i++) - for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) - { - parm_dev_use(i, j) = value(parm_dev(i, j)); - } - echoinput << " parm_devs after check " << parm_dev_use << endl; - } - // end bound check and jitter - if (Do_all_priors == 0 && prior_ignore_warning > 0) - { - warnstream << "Setting in starter does not request all priors, and " << prior_ignore_warning << " parameters have priors and are not estimated, so their prior not included in obj_fun."; - write_message (WARN, 0); - } - if (TwoD_AR_cnt > 0) - { - // create correlation matrix for 2D_AR approaches - // TwoD_AR_def: 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase - // 10-mindimension, 11=maxdim, 12-N_parm_dev, 13-selparm_location - cor.initialize(); - det_cor = 1.0; - inv_cor.initialize(); - - for (f = 1; f <= TwoD_AR_cnt; f++) - { - double rho_a; - double rho_y; - // location in selparm of rho - if (TwoD_AR_def[f](7) == 0) - { - echoinput << "fleet: " << f << " no 2D_AR rho " << endl; - } - else - { - if (TwoD_AR_def[f](6) < 0) - { - j = TwoD_AR_def[f](13) + 1; - } - else - { - j = TwoD_AR_def[f](13) + TwoD_AR_def[f](6) - TwoD_AR_def[f](4) + 1; - } // first sigmalocation + other sigmasels, then the rho's - rho_y = value(selparm(j)); - rho_a = value(selparm(j + 1)); - echoinput << "fleet: " << f << " 2D_AR rho in prelim for time and age/size " << rho_y << " " << rho_a << endl; - for (int i = TwoD_AR_ymin(f); i <= TwoD_AR_ymax(f); i++) - { - for (int j = TwoD_AR_amin(f); j <= TwoD_AR_amax(f); j++) - { - for (int m = TwoD_AR_ymin(f); m <= TwoD_AR_ymax(f); m++) - { - for (int n = TwoD_AR_amin(f); n <= TwoD_AR_amax(f); n++) - { - cor(f, (TwoD_AR_amax(f) - TwoD_AR_amin(f) + 1) * (i - TwoD_AR_ymin(f)) + j - TwoD_AR_amin(f) + 1, - (TwoD_AR_amax(f) - TwoD_AR_amin(f) + 1) * (m - TwoD_AR_ymin(f)) + n - TwoD_AR_amin(f) + 1) = pow(rho_a, abs(j - n)) * pow(rho_y, abs(i - m)); - } - } - } - } - inv_cor(f) = inv(cor(f)); - det_cor(f) = det(cor(f)); - echoinput << "determinant for 2D_AR cor: " << f << " is: " << det_cor(f) << endl; - } - } - } - // SS_Label_Info_6.6 #Copy the environmental data as read into the dmatrix environmental data array - // this will allow dynamic derived quantities like biomass and recruitment to be mapped into this same dmatrix - - env_data.initialize(); - - if (N_envdata > 0) - { - // raw input is in vector vector env_temp - // the fields are yr, envvar, value - // yr=-2 instructs SS3 to subtract mean before storing - // yr=-1 instructs SS3 to subtract mean and divide by stddev - - // first pass to calculate means and other summary data - for (i = 0; i <= N_envdata - 1; i++) - { - y = env_temp[i](1); - if (y >= (styr - 1) && y <= YrMax) - { - k = env_temp[i](2); - double val = env_temp[i](3); - env_data(y, k) = val; - if (env_data_do_mean(k) == 1) - env_data(y, k) -= env_data_mean(k); - if (env_data_do_stdev(k) == 1) - env_data(y, k) /= env_data_stdev(k); - } - } - echoinput << " env matrix after processing" << endl - << env_data << endl; - } - - // SS_Label_Info_6.7 #Initialize several rebuilding items - if (Rebuild_Ydecl == -1) - Rebuild_Ydecl = 1999; - if (Rebuild_Yinit == -1) - Rebuild_Yinit = endyr + 1; - - if (Rebuild_Ydecl > YrMax) - Rebuild_Ydecl = YrMax; - if (Rebuild_Yinit > YrMax) - Rebuild_Yinit = YrMax; - - migrrate.initialize(); - depletion.initialize(); - natage.initialize(); - sel_l.initialize(); - sel_a.initialize(); - retain.initialize(); - discmort.initialize(); - discmort2.initialize(); - discmort2_a.initialize(); - - for (f = 1; f <= Nfleet; f++) - for (y = styr; y <= YrMax; y++) - for (gg = 1; gg <= gender; gg++) - { - discmort2(y, f, gg) = 1.0; - discmort(y, f) = 1.0; - discmort_a(y, f) = 1.0; - retain(y, f) = 1.0; - } - Richards = 1.0; - - // check data against settings for inconsistencies - // check for composition obs with partition =1 or =2; use a new summary of obs by partition type for this test - ivector parti_cnt(0, 2); - for (f = 1; f <= Nfleet; f++) - { - // check for discard obs - if (disc_N_fleet(f) > 0 && Do_Retain(f) == 0) - { - warnstream << "Fleet: " << f << " discard data exist but retention fxn not defined"; - write_message (FATAL, 0); // EXIT! - } - - parti_cnt.initialize(); - if (Nobs_l(f) > 0) - { - for (i = 1; i <= Nobs_l(f); i++) - { - parti_cnt(abs(mkt_l(f, i)))++; - if (Do_Retain(f) == 0) mkt_l(f,i) = 0; // force to partition 0 if retention not defined - } - if (parti_cnt(1) > 0 && Do_Retain(f) == 0) - { - warnstream << "Fleet: " << f << " lencomp contains N obs with partition==1 and retention fxn not defined; N= " << parti_cnt(1); - write_message (FATAL, 0); // EXIT! - } - if (parti_cnt(2) > 0 && Do_Retain(f) == 0) - { - warnstream << "fleet: " << f << " lencomp has N obs with partition==2 (retained); changed to partition=0 because retention not defined; N= " << parti_cnt(2); - write_message (WARN, 0); - } - if (parti_cnt(2) > 0 && (fleet_type(f) == 2 || seltype(f, 2) == 3 || seltype(Nfleet + f, 2) == 3)) // error if retained catch obs are with no retention fleets - { - warnstream << "Fleet: " << f << " lencomp has obs with partition==2; but fleet does not retain any catch; N= " << parti_cnt(2); - write_message (FATAL, 0); // EXIT! - } - } - - parti_cnt.initialize(); - if (Nobs_a(f) > 0) - { - for (i = 1; i <= Nobs_a(f); i++) - { - parti_cnt(abs(mkt_a(f, i)))++; - if (Do_Retain(f) == 0) mkt_a(f,i) = 0; // force to partition 0 if retention not defined - } - if (parti_cnt(1) > 0 && Do_Retain(f) == 0) - { - warnstream << "Fleet: " << f << " agecomp contains N obs with partition==1 and retention fxn not defined; N= " << parti_cnt(1); - write_message (FATAL, 0); // EXIT! - } - if (parti_cnt(2) > 0 && Do_Retain(f) == 0) - { - warnstream << "Fleet: " << f << " agecomp has N obs with partition==2 (retained); changed to partition=0 because retention not defined; N= " << parti_cnt(2); - write_message (ADJUST, 0); - } - if (parti_cnt(2) > 0 && (fleet_type(f) == 2 || seltype(f, 2) == 3 || seltype(Nfleet + f, 2) == 3)) // error if retained catch obs are with no retention fleets - { - warnstream << "Fleet: " << f << " agecomp has obs with partition==2; but fleet does not retain any catch; N= " << parti_cnt(2); - write_message (FATAL, 0); // EXIT! - } - } - - parti_cnt.initialize(); - if (Nobs_ms(f) > 0) - { - for (i = 1; i <= Nobs_ms(f); i++) - { - parti_cnt(abs(mkt_ms(f, i)))++; - if (Do_Retain(f) == 0) mkt_ms(f, i) = 0; // force to partition 0 if retention not defined - } - if (parti_cnt(1) > 0 && Do_Retain(f) == 0) - { - warnstream << "Fleet: " << f << " size-at-age data contains obs with partition==1 and retention fxn not defined; N= " << parti_cnt(1); - write_message (FATAL, 0); // EXIT! - } - if (parti_cnt(2) > 0 && Do_Retain(f) == 0) - { - warnstream << "Fleet: " << f << " size-at-age data has N obs with partition==2 (retained); changed to partition=0 because retention not defined; N= " << parti_cnt(2); - write_message (ADJUST, 0); - } - if (parti_cnt(2) > 0 && (fleet_type(f) == 2 || seltype(f, 2) == 3 || seltype(Nfleet + f, 2) == 3)) // error if retained catch obs are with no retention fleets - { - warnstream << "Fleet: " << f << " EXIT; size-at-age data has obs with partition==2; but fleet does not retain any catch; N= " << parti_cnt(2); - write_message (FATAL, 0); // EXIT! - } - } - - parti_cnt.initialize(); - if (nobs_mnwt > 0) - { - for (i = 1; i <= nobs_mnwt; i++) - { - int f1 = mnwtdata(3, i); - if (f1 == f) - { - int parti = abs(mnwtdata(4, i)); // partition: 0=all, 1=discard, 2=retained - parti_cnt(parti)++; - if (Do_Retain(f) == 0) mnwtdata(4, i) = 0; // force to partition 0 if retention not defined - } - } - if (parti_cnt(1) > 0 && Do_Retain(f) == 0) - { - warnstream << "Fleet: " << f << " meansize data contains obs with partition==1 and retention fxn not defined; N= " << parti_cnt(1); - write_message (FATAL, 0); // EXIT! - } - if (parti_cnt(2) > 0 && Do_Retain(f) == 0) - { - warnstream << "Fleet: " << f << " meansize data has N obs with partition==2 (retained); changed to partition=0 because retention not defined; N= " << parti_cnt(2); - write_message (ADJUST, 0); - } - if (parti_cnt(2) > 0 && (fleet_type(f) == 2 || seltype(f, 2) == 3 || seltype(Nfleet + f, 2) == 3)) // error if retained catch obs are with no retention fleets - { - warnstream << "Fleet: " << f << " EXIT; meansize data has obs with partition==2; but fleet does not retain any catch; N= " << parti_cnt(2); - write_message (FATAL, 0); // EXIT! - } - } - } - - // SS_Label_Info_6.8 #Go thru biological calculations once, with do_once flag=1 to produce extra output to echoinput.sso - cout << "Evaluating biology calculations once ... "; - echoinput << "Begin evaluating biology calculations once" << endl; - ALK_subseas_update = 1; // vector to indicate if ALK needs recalculating - do_once = 1; - niter = 0; - y = styr; - yz = styr; - t_base = styr + (y - styr) * nseas - 1; - - make_timevaryparm(); - - // SS_Label_Info_6.8.1 #Call fxn get_MGsetup() to copy MGparms to working array and applies time-varying factors - get_MGsetup(styr); - echoinput << "Finished MGsetup" << endl; - - // SS_Label_Info_6.8.2 #Call fxn get_growth1() to calculate quantities that are not time-varying - get_growth1(); - echoinput << "Finished growth1" << endl; - VBK_seas = value(VBK_seas); - wtlen_seas = value(wtlen_seas); - CVLmin = value(CVLmin); - CVLmax = value(CVLmax); - - // SS_Label_Info_6.8.3 #Call fxn get_growth2() to calculate size-at-age - get_growth2(styr); // in preliminary calcs - gp = 0; - for (gg = 1; gg <= gender; gg++) - for (int GPat = 1; GPat <= N_GP; GPat++) - { - gp++; - g = g_Start(gp); // base platoon - for (settle = 1; settle <= N_settle_timings; settle++) - { - g += N_platoon; - echoinput << "sex: " << gg << "; Gpat: " << GPat << " settle: " << settle << "; L-at-Amin: " << Lmin(gp) << "; L at max age: " << Ave_Size(styr, 1, g, nages) << endl; - if (len_bins(1) > Lmin(gp)) - { - warnstream << "Minimum pop size bin:_" << len_bins(1) << "; is > L at Amin for sex: " << gg - << "; Gpat: " << GPat << "; L= " << Lmin(gp); - write_message (WARN, 0); - } - if (Ave_Size(styr, 1, g, nages) > 0.95 * len_bins(nlength)) - { - warnstream << "Maximum pop size bin:_" << len_bins(nlength) << "; is within 5% of L at maxage for sex: " << gg - << "; Gpat: " << GPat << " settle: " << settle << "; L= " << Ave_Size(styr, 1, g, nages); - write_message (WARN, 0); - } - } - } - - for (s = 1; s <= nseas; s++) // get growth here in case needed for Lorenzen - { - t = t_base + s; - for (subseas = 1; subseas <= N_subseas; subseas++) - { - ALK_idx = (s - 1) * N_subseas + subseas; - get_growth3(styr, t, s, subseas); // this will calculate the growth for all subseasons of first year - Make_AgeLength_Key(s, subseas); // ALK_idx calculated within Make_AgeLength_Key - ALK(ALK_idx) = value(ALK(ALK_idx)); - } - } - - // SS_Label_Info_6.8.5 #Call fxn get_wtlen() and get_mat_fec() to calculate weight-at-length and maturity and fecundity vectors - get_wtlen(); - get_mat_fec(); - wt_len = value(wt_len); - wt_len2 = value(wt_len2); - wt_len_fd = value(wt_len_fd); - mat_len = value(mat_len); - mat_fec_len = value(mat_fec_len); - mat_age = value(mat_age); - - // SS_Label_Info_6.8.4 #Call fxn get_natmort() - echoinput << "ready to do natmort " << endl; - get_natmort(); - - s = spawn_seas; - subseas = spawn_subseas; - ALK_idx = (s - 1) * N_subseas + subseas; - - // SS_Label_Info_6.8.6 #Call fxn get_recr_distribution() for distribution of recruitment among areas and seasons, which can be time-varying - echoinput << "do recrdist: " << endl; - get_recr_distribution(); - recr_dist(y) = value(recr_dist(y)); // so the just calculated constant values will be used unless its parms are active - - // SS_Label_Info_6.8.7 #Call fxn get_migration() - if (do_migration > 0) // set up migration rates - { - get_migration(); - migrrate = value(migrrate); - } - - // SS_Label_Info_6.8.8 #Call fxn get_age_age() transition matrix from real age to observed age' - if (N_ageerr > 0) - { - AgeKey_StartAge = 0; - AgeKey_Linear1 = 1; - AgeKey_Linear2 = 1; - for (j = 1; j <= N_ageerr; j++) - { - if (j != Use_AgeKeyZero) - { - age_err(j) = age_err_rd(j); // this is an age err definition that has been read - } - else - { - AgeKey_StartAge = int(value(mgp_adj(AgeKeyParm))); - if (mgp_adj(AgeKeyParm + 3) == 0.0000) - { - AgeKey_Linear1 = 1; - } - else - { - AgeKey_Linear1 = 0; - } - if (mgp_adj(AgeKeyParm + 6) == 0.0000) - { - AgeKey_Linear2 = 1; - } - else - { - AgeKey_Linear2 = 0; - } - } - get_age_age(j, AgeKey_StartAge, AgeKey_Linear1, AgeKey_Linear2); // call function to get the age_age key - } - age_age = value(age_age); // because these are not based on parameters - } - echoinput << " made the age_age' key " << endl; - - if (catch_mult_pointer > 0) - { - get_catch_mult(y, catch_mult_pointer); - for (j = styr; j <= YrMax; j++) // so get this value for all years, but can be overwritten by time-varying - { - catch_mult(j) = catch_mult(y); - } - } - - // SS_Label_Info_6.8.9 #Calculated values have been set equal to value() to remove derivative info and save space if their parameters are held constant - - // SS_Label_Info_6.9 #Set up headers for ParmTrace - if (Do_ParmTrace > 0) - ParmTrace << "Phase Iter ObjFun Change SSB_start SSB_end BiasAdj_st BiasAdj_max BiasAdj_end "; - if (Do_ParmTrace == 1 || Do_ParmTrace == 4) - { - for (i = 1; i <= active_count; i++) - { - ParmTrace << " " << ParmLabel(active_parm(i)); - } - ParmTrace << " Component_like_starts_here "; - } - else if (Do_ParmTrace >= 2) - { - for (i = 1; i <= ParCount; i++) - { - ParmTrace << " " << ParmLabel(i); - } - } - ParmTrace << endl; - - // SS_Label_Info_6.10 #Preliminary calcs done; Ready for estimation - cout << "done" << endl; // evaluating biology calculations once - echoinput << "Finished evaluating biology calculations once" << endl; - - if (pick_report_use(60) == "Y") - { - bodywtout << nages << " # maxage" << endl; - bodywtout << "# if Yr is negative, then fill remaining years for that Seas, growpattern, Bio_Pattern, Fleet" << endl; - bodywtout << "# if season is negative, then fill remaining fleets for that Seas, Bio_Pattern, Sex, Fleet" << endl; - bodywtout << "# will fill through forecast years, so be careful" << endl; - bodywtout << "# fleet 0 contains begin season pop WT" << endl; - bodywtout << "# fleet -1 contains mid season pop WT" << endl; - bodywtout << "# fleet -2 contains maturity*fecundity" << endl; - bodywtout << "#_year seas sex bio_pattern birthseas fleet " << age_vector << endl; - } - - if (Turn_off_phase < 0) - { - cout << "Exit requested after read with phase < 0 " << endl; - N_nudata = 1; - write_nudata(); - cout << "Finished writing data_echo.ss_new" << endl; - write_nucontrol(); - cout << "Finished writing control.ss_new" << endl; - exit(1); - } - - if (noest_flag == 1) - { - cout << endl - << "skip to final section for -noest" << endl; - N_nudata = 1; - } - else - { - echoinput << endl << endl << "Begin estimating" << endl; - } - last_objfun = 1.0e30; - } // end PRELIMINARY_CALCS_SECTION -// SS_Label_file #7. **SS_global.tpl** -// SS_Label_file # -
RUNTIME_SECTION
-// SS_Label_file # -// SS_Label_file # - not used by SS3 -// SS_Label_file # -
TOP_OF_MAIN_SECTION
-// SS_Label_file # -// SS_Label_file # - revise some memory and array constraints -// SS_Label_file # -
GLOBALS_SECTION
-// SS_Label_file # -// SS_Label_file # - open some output files -// SS_Label_file # - create needed adstring_arrays for labels -// SS_Label_file # - create vector_vector arrays that are appended to in readdata -// SS_Label_file # - two functions included here in GLOBALS because need to be used in the DATA_SECTION: -// SS_Label_file # - get_data_timing() and create_timevary() -// SS_Label_file # -
BETWEEN_PHASES_SECTION
-// SS_Label_file # -// SS_Label_file # - for F_method 2, convert F as scaling factors to F as parameters in designated phase -// SS_Label_file # -
FINAL_SECTION
-// SS_Label_file # -// SS_Label_file # - output *covar.sso* -// SS_Label_file # - set save_for_report to 1, then call: setup_recdevs(), get_initial_conditions(), get_time_series(), evaluate_the_objective_function() -// SS_Label_file # -// SS_Label_file # - call benchmark and forecast if not already done in sdphase -// SS_Label_file # - call Process_STDquant() and get_posteriors() -// SS_Label_file # - write other reports using function calls: *cumreport.sso*, *ss_summary.sso*, *ss_rebuild.sso*, *SIS_table.sso* -// SS_Label_file # - call write_big_output() to produce *report.sso* and *compreport.sso* -// SS_Label_file # -
REPORT_SECTION
-// SS_Label_file # -// SS_Label_file # - produces *ss.rep*, but see write_big_output for the more complete *report.sso* -// SS_Label_file # - -// SS_Label_Section_8 #RUNTIME_SECTION (not used in SS3) -RUNTIME_SECTION -// { -// maximum_function_evaluations 200, 200, 200, 200, 200, 200, 200, 2000; -// convergence_criteria 100, 10, 1, 0.1, 1e-4, 1e-4, 1e-4, 1e-4; -// } - -// SS_Label_Section_9 #TOP_OF_MAIN_SECTION -TOP_OF_MAIN_SECTION -// { -// SS_Label_Info_9.1 #Set array and gradient structure space - arrmblsize = 200000000; // 2e8 = about 0.2 GB. -// gradient_structure::set_GRADSTACK_BUFFER_SIZE(672647168); - gradient_structure::set_GRADSTACK_BUFFER_SIZE(20000000); // 2e7 gets multiplied by the gradstack size (usually 48), to reach about 0.9 GB. -// gradstack is not allocated unless needed by the model, but arrmblsize and cmpdif are allocated immediately -// gradient_structure::set_CMPDIF_BUFFER_SIZE(500000000); - gradient_structure::set_CMPDIF_BUFFER_SIZE(200000000); // 2e8 = about 0.2GB - gradient_structure::set_MAX_NVAR_OFFSET(5000); - gradient_structure::set_NUM_DEPENDENT_VARIABLES(10000); - gradient_structure::set_MAX_DLINKS(10000000); - -// SS_Label_Info_9.2 #Set clock start time - time(&start); //this is to see how long it takes to run -// } - -// SS_Label_Section_10. #GLOBALS_SECTION -GLOBALS_SECTION -// { - #include - #include - #include - #include - #include - #include - #define NOTE 1 // information that could be useful - #define SUGGEST 2 // a possible better way - #define PERFORM 3 // can help performance - #define WARN 4 // might be a problem, execution continues anyway - #define ADJUST 5 // adjustment has been made, execution continues - #define FATAL 6 // major problem, program will exit - adstring_array MessageIntro; - #include - #include - - - time_t start, finish; - long hour, minute, second; - double elapsed_time; - -// SS_Label_Info_10.2 #Define some adstring variables - adstring_array ParmLabel; // extendable array to hold the parameter labels - adstring_array Parm_info; // extendable array to hold the parameter labels - adstring_array SzFreq_units_label; - adstring_array SzFreq_scale_label; - adstring_array fleetname; - adstring ssnew_pathname; - adstring sso_pathname; - adstring base_modelname = "ss3"; - adstring fleetnameread; - adstring depletion_basis_label; - adstring F_report_label; - adstring SPR_report_label; - adstring onenum(4); - adstring onenum2(4); - adstring anystring; - adstring anystring2; - adstring report_sso_filename; - adstring MSY_name; // label describing what Do_MSY and MSY_units are being used - - adstring_array version_info; - adstring_array version_info2; - adstring_array Starter_Comments; - adstring_array Data_Comments; - adstring_array Control_Comments; - adstring_array Forecast_Comments; - adstring_array NumLbl; // label for numbers 1 to 199 - adstring_array NumLbl0; // label for numbers 0 to 198 (needed for ages) - adstring_array GenderLbl; // gender label - adstring_array MGtype_Lbl; // label for MGtypes, i.e. Natmort, Growth - adstring_array GP_Lbl; // gender label - adstring_array CRLF; // blank to terminate lines - adstring_array pick_report_name; // name of report - adstring_array pick_report_use; // X if used; 0 if not - -// SS_Label_Info_10.1 #Open output files using ofstream - ofstream warning; // warning.sso - where warnings, notes, etc. are put - ofstream echoinput; // echoes input (for debugging) and includes some comments - ofstream ParmTrace; - ofstream report5; // forecast-report - ofstream report2; // control.ss_new - ofstream bodywtout; - ofstream SS2out; // this is just a create - ofstream SS_compout; // this is just a create - ofstream report1; // for data output files - ofstream covarout; - ofstream rebuilder; - ofstream rebuild_dat; - ofstream posts; - ofstream der_posts; - ofstream post_vecs; - ofstream post_obj_func; - ofstream SS_smry; - ofstream SIS_table; -// declare some entities that need global access - std::stringstream warnstream; - std::string usermsg; - int ParCount; - int timevary_parm_cnt; - int N_warn = 0; // track the number of warnings and adjustments - int N_note = 0; // track the number of suggestions and notes - int styr; - int endyr; - int YrMax; - int nseas; - int Ncycle; - int seas_as_year; - int special_flag = 0; // for whenever a flag is needed - -// SS_Label_Info_10.3 #start random number generator with seed based on time - random_number_generator radm(long(time(&start))); - - std::vector Parm_minmax; - std::vector catch_read; - std::vector Svy_data; - std::vector discdata; - std::vector mnwtdata1; - std::vector lendata; - std::vector Age_Data; - std::vector sizeAge_Data; - std::vector H4010_scale_vec_rd; - std::vector Fcast_InputCatch_list; - std::vector Fcast_Catch_Allocation_list; - std::vector env_temp; - std::vector WTage_in; - std::vector var_adjust_data; - std::vector lambda_change_data; - std::vector timevary_parm_rd; - std::vector timevary_def; - std::vector TwoD_AR_def; - std::vector TwoD_AR_def_rd; - std::vector reportdetail_list; - std::vector Fparm_loc; - std::vector F_Method_4_input; - std::vector F_detail_input; - std::vector Fparm_PH; - std::vector comp_control_L; - std::vector comp_control_A; - std::vector comp_control_Sz; - std::vector fcast_mgparm_ave_rd; - -// function in GLOBALS to do the timing setup in the data section - -// SS_Label_Function_xxxa write_msg(string,int,int,int); output a message. -// options are output the string to echoinput.sso and warning.sso with an option to exit -// SS_Label_Function_xxxa # ### write_msg (string, echoflag, warnflag, exitflag) -// SS_Label_Function_xxxa # -// SS_Label_Function_xxxa # Writes a string to either echoinput.sso or warning.sso -// SS_Label_Function_xxxa # or both. The last option tells it to exit the program -// SS_Label_Function_xxxa # with appropriate output to warning.sso and cout. -// SS_Label_Function_xxxa # - void write_msg(std::string msg, int echo, int warn, int exitflag) - { - std::string totmsg; - if (msg.length() == 0) - { - msg = "unknown message"; - } - - if (echo == 1) - { - echoinput << msg << endl; - } - if (warn > 0) - { - size_t b = msg.find ("parameter", 0); - warning << msg; - if (echo == 1 && (b > 0 && b < msg.size())) - { - warning << "; search for in echoinput.sso for parm_type"; - } - warning << endl; - } - if (exitflag == 1) - { - warning.close(); - echoinput.close(); - cout << msg << endl; - cout << "Also see warning.sso" << endl; - cout << "Exiting SS3! " << endl; - exit(1); - } - } -// SS_Label_Function_xxxb write_message(int,int,int); increment warning count and output a warning with an option to exit (when fatal) -// SS_Label_Function_xxxb # ### write_message (type, echo) -// SS_Label_Function_xxxb # -// SS_Label_Function_xxxb # type is one of the following: -// SS_Label_Function_xxxb # - NOTE : information that could be useful -// SS_Label_Function_xxxb # - SUGGEST : a possible better way -// SS_Label_Function_xxxb # - PERFORM : can help performance -// SS_Label_Function_xxxb # - WARN : might be a problem, execution continues anyway -// SS_Label_Function_xxxb # - ADJUST : adjustment has been made, execution continues -// SS_Label_Function_xxxb # - FATAL : major problem, program will exit -// SS_Label_Function_xxxb # -// SS_Label_Function_xxxb # and echo is either 1 to write to echoinput.sso or 0. -// SS_Label_Function_xxxb # -// SS_Label_Function_xxxb # This writes the text in warnstream and resets it. -// SS_Label_Function_xxxb # - void write_message(int type, int echo) - { - int exitflag = 0; - int warn = 0; - std::string msg(warnstream.str()); - warnstream.str(""); - if (msg.length() == 0) - msg = "unknown condition."; - - switch (type) - { - case NOTE: - case SUGGEST: - case PERFORM: - N_note++; - warn = N_note; - warnstream << "Note " << N_note; - break; - case FATAL: - exitflag = 1; - [[fallthrough]]; - case ADJUST: - case WARN: - N_warn++; - warn = N_warn; - warnstream << "Warning " << N_warn; - break; - } - warnstream << MessageIntro(type) << msg; - write_msg(warnstream.str(), echo, warn, exitflag); - warnstream.str(""); - } - -// SS_Label_Function_xxxx #get_data_timing() called by readdata - void get_data_timing(const dvector& to_process, const ivector& timing_constants, ivector i_result, dvector r_result, const dvector& seasdur, const dvector& subseasdur_delta, const dvector& azero_seas, const dvector& surveytime) - { - // r_result(1,3) will contain: real_month, data_timing_seas, data_timing_yr, - // i_result(1,6) will contain y, t, s, f, ALK_time, use_midseas - int f, s, subseas, y; - double temp, temp1, month, data_timing_seas; - // timing_constants(1)=read_seas_mo; - // timing_constants(2)=nseas; - // timing_constants(3)=N_subseas; - // timing_constants(4)=mid_subseas; - // timing_constants(5)=styr; - // timing_constants(6)-endyr; - - y = int(to_process(1)); - month = fabs(to_process(2)); - f = abs(int(to_process(3))); - if (timing_constants(1) == 1) // reading season - { - s = int(month); - subseas = timing_constants(4); // mid subseas - if (surveytime(f) >= 0.) - { // fraction of season - data_timing_seas = surveytime(f); - i_result(6) = 1; - } - else - { // for fishing fleets; use midseason and fishery catch - data_timing_seas = 0.5; - i_result(6) = -1; // flag to use season-long fishery catch as the sample - } - month = 1.0 + azero_seas(s) * 12. + 12. * data_timing_seas * seasdur(s); - } - else // reading month.fraction - { - if (surveytime(f) < 0) // so a fishing fleet - { - if (month > 999) - { // override to allow a fishing fleet to have explicit timing - month -= 1000.; - i_result(6) = 1; - } - else - { - i_result(6) = -1; // flag to use season-long fishery catch as the sample - } - } - else - { - i_result(6) = 1; // explicit timing for all survey fleet obs - if (month > 999) - { // override to allow a fishing fleet to have explicit timing - month -= 1000.; - } - } - - if (seas_as_year == 0) - { - if (month >= 13.0) - { - warnstream << "month must be <13.0, end of year is 12.99, value read is: " << month; - write_message(FATAL, 0); - } - temp1 = max(0.00001, (month - 1.0) / 12.); // month as fraction of year - s = 1; // earlist possible seas; - subseas = 1; // earliest possible subseas in seas - temp = subseasdur_delta(s); // starting value - while (temp <= temp1 + 1.0e-9) - { - if (subseas == timing_constants(3)) - { - s++; - subseas = 1; - } - else - { - subseas++; - } - temp += subseasdur_delta(s); - } - data_timing_seas = (temp1 - azero_seas(s)) / seasdur(s); // remainder converted to fraction of season (and multiplied by seasdur when used) - } - else - { - temp1 = 0.5; - month = 0.5 * seasdur(1) * 12.; - s = 1; - subseas = timing_constants(4); - data_timing_seas = 0.5; - } - } - - // i_result(1,6) will contain y, t, s, f, ALK_time, use_midseas - // r_result(1,3) will contain: real_month, data_timing_seas*use_midseas, data_timing_yr, - // t=styr+(y-styr)*nseas+s-1; - // ALK_time=(yr-styr)*nseas*N_subseas+(s-1)*N_subseas+subseas; - i_result(1) = y; - i_result(2) = timing_constants(5) + (y - timing_constants(5)) * timing_constants(2) + s - 1; // t - i_result(3) = s; - i_result(4) = f; - - if (seas_as_year == 0) - { - if (i_result(6) >= 0) - { - i_result(5) = (y - timing_constants(5)) * timing_constants(2) * timing_constants(3) + (s - 1) * timing_constants(3) + subseas; // ALK_time - // r_result(1,3) : real_month, data_timing_seas, data_timing_yr, - r_result(1) = month; - r_result(2) = data_timing_seas * i_result(6); - r_result(3) = float(y) + (month - 1.) / 12.; // year.fraction - } - else // assign to midseason - { - i_result(5) = (y - timing_constants(5)) * timing_constants(2) * timing_constants(3) + (s - 1) * timing_constants(3) + timing_constants(4); // ALK_time - data_timing_seas = 0.5; - month = 1.0 + azero_seas(s) * 12. + 12. * data_timing_seas * seasdur(s); - r_result(1) = month; - r_result(2) = data_timing_seas * i_result(6); - r_result(3) = float(y) + (month - 1.) / 12.; // year.fraction - } - } - else - { - i_result(5) = (y - timing_constants(5)) * timing_constants(2) * timing_constants(3) + (s - 1) * timing_constants(3) + timing_constants(4); // ALK_time - r_result(1) = month; - r_result(2) = data_timing_seas * i_result(6); - r_result(3) = float(y) + 0.5; // year.fraction - } - return; - } - -// SS_Label_Function_xxxx #create_timevary() called by readdata to create timevary parameters - /* - where: - baseparm_list: vector with the base parameter which has some type of timevary characteristic - timevary_setup: vector which contains specs of all types of timevary for this base parameter - will be pushed to timevary_def cumulative across all types of base parameters - timevary_byyear: vector containing column(timevary_MG,mgp_type(j)), will be modified in create_timevary - autogen_timevary: switch to autogenerate or not - targettype: integer with type of MGparm being worked on; analogous to 2*fleet in the selectivity section - block_design_pass: block design, if any, being used - env_data_pass: matrix containing entire set of environmental data as read - N_parm_dev: integer that is incremented in create_timevary as dev vectors are created; cumulative across all types of parameters - finish_starter: End of starter file value - */ - void create_timevary(dvector& baseparm_list, ivector& timevary_setup, - ivector& timevary_byyear, int& autogen_timevary, const int& targettype, - const ivector& block_design_pass, const dvector& env_data_pass, - int& N_parm_dev, const double& finish_starter) - { - // where timevary_byyear is a selected column of a year x type matrix (e.g. timevary_MG) in read_control - // timevary_setup(1)=baseparm type; - // timevary_setup(2)=baseparm index; - // timevary_setup(3)=first timevary parm - // timevary_setup(4)=block or trend type - // timevary_setup(5)=block pattern - // timevary_setup(6)=env link type - // timevary_setup(7)=env variable - // timevary_setup(8)=dev vector used - // timevary_setup(9)=dev link type - // timevary_setup(10)=dev min year - // timevary_setup(11)=dev maxyear - // timevary_setup(12)=dev phase - // timevary_setup(13)=all parm index of baseparm - // timevary_setup(14)=continue_last dev - echoinput << "baseparm: " << baseparm_list << endl; - int j; - int g; - int y; - int a; // int f; - int k; - int z; - int Nblocks; - j = timevary_setup(13); // index of base in all parameters to get correct baseparm label - if (baseparm_list(13) != 0) // blocks or trends - { - z = baseparm_list(13); // specified block or trend definition - timevary_setup(4) = z; // block or trend type - timevary_setup(5) = baseparm_list(14); // block pattern - if (z > 0) // blocks with z as the block pattern - { - Nblocks = 0.5 * (block_design_pass.size()); - k = int(baseparm_list(14)); // block method - echoinput << "block pattern: " << z << " method " << k << " Nblocks: " << Nblocks << endl; - - g = 1; // index to list of years in block design; will increment by 2 for begin-end of block - for (a = 1; a <= Nblocks; a++) // loop blocks for block pattern z - { - timevary_parm_cnt++; - ParCount++; - echoinput << " create parm for block " << a << endl; - y = block_design_pass(g); - timevary_byyear(y) = 1; - sprintf(onenum, "%d", y); - - echoinput << " block method " << k << endl; - switch (k) - { - case 0: - { - ParmLabel += ParmLabel(j) + "_BLK" + NumLbl(z) + "mult_" + onenum + CRLF(1); - dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - echoinput << "read timevary block parameter: " << tempvec << endl; - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - tempvec.fill("{-10,10,0.,0.,5,6,4}"); - if (baseparm_list(1) <= 0.0) - { - warnstream << "cannot use multiplicative blocks for parameter with a negative lower bound; exit " << endl - << baseparm_list(1) << " " << baseparm_list(2) << " " << baseparm_list(3) << endl; - write_message(FATAL, 0); - } - tempvec(1) = log(baseparm_list(1) / baseparm_list(3)); // max negative change - tempvec(2) = log(baseparm_list(2) / baseparm_list(3)); // max positive change - // tempvec(5)=0.5*fmin(fabs(tempvec(1)),tempvec(2)); // sd of normal prior - tempvec(5) = (tempvec(2) - tempvec(1)) / 4.; // range/4 to approx sd of normal prior - echoinput << " autogen mult block: " << tempvec << endl; - } - timevary_parm_rd.push_back(tempvec); - break; - } - case 1: - { - ParmLabel += ParmLabel(j) + "_BLK" + NumLbl(z) + "add_" + onenum + CRLF(1); - dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - echoinput << "read timevary block parameter: " << tempvec << endl; - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - tempvec.fill("{-10,10,0.,0.,5,6,4}"); - tempvec(1) = baseparm_list(1) - baseparm_list(3); // max negative change - tempvec(2) = baseparm_list(2) - baseparm_list(3); // max positive change - tempvec(5) = (tempvec(2) - tempvec(1)) / 4.; // range/4 to approx sd of normal prior - echoinput << " autogen additive block: " << tempvec << endl; - } - timevary_parm_rd.push_back(tempvec); - break; - } - case 2: - { - ParmLabel += ParmLabel(j) + "_BLK" + NumLbl(z) + "repl_" + onenum + CRLF(1); - dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - echoinput << "read timevary block parameter: " << tempvec << endl; - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - for (int s = 1; s <= 7; s++) - tempvec(s) = baseparm_list(s); - if (finish_starter == 999) - { - double temp; - temp = tempvec(5); - tempvec(5) = tempvec(6); - tempvec(6) = temp; - } - echoinput << "autogen block replace: " << tempvec << endl; - } - timevary_parm_rd.push_back(tempvec); - break; - } - case 3: - { - ParmLabel += ParmLabel(j) + "_BLK" + NumLbl(z) + "delta_" + onenum + CRLF(1); - dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - echoinput << " read timevary block parm: " << tempvec << endl; - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - tempvec.fill("{-10,10,0.,0.,5,6,4}"); - tempvec(1) = baseparm_list(1) - baseparm_list(3); // max negative change - tempvec(2) = baseparm_list(2) - baseparm_list(3); // max positive change - tempvec(5) = (tempvec(2) - tempvec(1)) / 4.; // range/4 to approx sd of normal prior - echoinput << " autogen block delta: " << tempvec << endl; - } - timevary_parm_rd.push_back(tempvec); - break; - } - } - y = block_design_pass(g + 1) + 1; // first year after block - if (y <= YrMax) - timevary_byyear(y) = 1; - if (targettype == 7 && timevary_setup(1) == 1) // so doing catch_mult which needs annual values calculated for each year of the block - { - for (int z = block_design_pass(g); z <= y; z++) // where y has end year of block + 1 - { - timevary_byyear(z) = 1; - } - } - g += 2; - } - } - else // (z<0) so invoke a trend - { - echoinput << "trend " << endl; - if (baseparm_list(13) == -1) - { - ParCount++; - ParmLabel += ParmLabel(j) + "_TrendFinal_LogstOffset" + CRLF(1); - ParCount++; - ParmLabel += ParmLabel(j) + "_TrendInfl_LogstOffset" + CRLF(1); - ParCount++; - ParmLabel += ParmLabel(j) + "_TrendWidth_yrs_" + CRLF(1); - for (k = 1; k <= 3; k++) // for the 3 trend parameters - { - timevary_parm_cnt++; - dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - if (k == 1) - { - tempvec.fill("{-4.0,4.0,0.,0.,0.5,6,4}"); - } - if (k == 2) - { - tempvec.fill("{-4.0,4.0,0.,0.,0.5,6,4}"); - } - if (k == 3) - { - tempvec.fill("{1.0,20.0,3.,3.,3.0,6,4}"); - } - } - timevary_parm_rd.push_back(tempvec); - } - } - else if (baseparm_list(13) == -2) - { - ParCount++; - ParmLabel += ParmLabel(j) + "_TrendFinal_direct_" + CRLF(1); - ParCount++; - ParmLabel += ParmLabel(j) + "_TrendInfl_yr_" + CRLF(1); - ParCount++; - ParmLabel += ParmLabel(j) + "_TrendWidth_yr_" + CRLF(1); - for (k = 1; k <= 3; k++) // for the 3 trend parameters - { - timevary_parm_cnt++; - dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - if (k == 1) - { - for (a = 1; a <= 7; a++) - tempvec(a) = baseparm_list(a); - } - if (k == 2) - { - tempvec.fill("{-2.0,2.0,0.,0.,0.5,6,4}"); - tempvec(1) = styr; - tempvec(2) = endyr; - tempvec(3) = (styr + endyr) * 0.5; - tempvec(4) = tempvec(3); - } - if (k == 3) - { - tempvec.fill("{1.0,20.0,3.,3.,3.0,6,4}"); - } - } - timevary_parm_rd.push_back(tempvec); - } - } - else if (baseparm_list(13) == -3) - { - ParCount++; - ParmLabel += ParmLabel(j) + "_TrendFinal_frac_" + CRLF(1); - ParCount++; - ParmLabel += ParmLabel(j) + "_TrendInfl_frac_" + CRLF(1); - ParCount++; - ParmLabel += ParmLabel(j) + "_TrendWidth_yr_" + CRLF(1); - for (k = 1; k <= 3; k++) // for the 3 trend parameters - { - timevary_parm_cnt++; - dvector tempvec(1, 7); // temporary vector for a time-vary parameter LO HI INIT PRIOR PR_type SD PHASE - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - if (k == 1) - { - tempvec.fill("{0.0001,0.999,0.,0.,0.5,6,4}"); - tempvec(3) = (baseparm_list(3) - baseparm_list(1)) / (baseparm_list(2) - baseparm_list(1)); - tempvec(4) = tempvec(3); - } - if (k == 2) - { - tempvec.fill("{0.0001,0.999,0.5,0.5,0.5,6,4}"); - } - if (k == 3) - { - tempvec.fill("{1.0,20.0,3.,3.,3.,6,4}"); - } - } - timevary_parm_rd.push_back(tempvec); - } - } - else - { - for (int icycle = 1; icycle <= Ncycle; icycle++) - { - ParCount++; - ParmLabel += ParmLabel(j) + "_Cycle_" + NumLbl(icycle) + CRLF(1); - timevary_parm_cnt += 1; // count the cycle parameters - } - } - for (y = styr - 1; y <= YrMax; y++) - { - timevary_byyear(y) = 1; - } // all years need calculation for trends - } - } - - if (baseparm_list(8) != 0) // env effect is used - { - k = timevary_setup(6); - // if(timevary_setup(7)==99) timevary_setup(7)=-1; // for linking to rel_spawn biomass - // if(timevary_setup(7)==98) timevary_setup(7)=-2; // for linking to exp(recdev) - // if(timevary_setup(7)==97) timevary_setup(7)=-3; // for linking to rel_smrybio - // if(timevary_setup(7)==96) timevary_setup(7)=-4; // for linking to rel_smry_num - echoinput << "env link_type: " << k << " env_var: " << timevary_setup(7) << endl; - switch (k) - { - case 1: // multiplicative - { - echoinput << " do env mult for parm: " << j << " " << ParmLabel(j) << endl; - ParCount++; - ParmLabel += ParmLabel(j) + "_ENV_mult"; - timevary_parm_cnt++; - dvector tempvec(1, 7); - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - tempvec.fill("{-10.,10.0,1.0,1.0,0.5,6,4}"); - } - timevary_parm_rd.push_back(tempvec(1, 7)); - break; - } - case 2: // additive - { - echoinput << " do env additive " << endl; - ParCount++; - ParmLabel += ParmLabel(j) + "_ENV_add"; - timevary_parm_cnt++; - dvector tempvec(1, 7); - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - tempvec.fill("{-10.,10.0,1.0,1.0,0.5,6,4}"); - } - timevary_parm_rd.push_back(tempvec(1, 7)); - break; - } - case 3: // additive in logistic space to stay in min-max bounds - { - echoinput << " do env constrained " << endl; - ParCount++; - ParmLabel += ParmLabel(j) + "_ENV_add_constr"; - timevary_parm_cnt++; - dvector tempvec(1, 7); - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - tempvec.fill("{-1.8,1.8,1.0,1.0,0.5,6,4}"); - } - timevary_parm_rd.push_back(tempvec(1, 7)); - break; - } - case 4: // logistic with offset - { - ParCount++; - ParmLabel += ParmLabel(j) + "_ENV_offset"; - timevary_parm_cnt++; - dvector tempvec(1, 7); - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - tempvec.fill("{-0.9,0.9,0.0,0.0,0.5,6,4}"); - } - timevary_parm_rd.push_back(tempvec(1, 7)); - ParCount++; - ParmLabel += ParmLabel(j) + "_ENV_lgst_slope"; - timevary_parm_cnt++; - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - } - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - tempvec.fill("{-0.9,0.9,0.0,0.0,0.5,6,4}"); - } - timevary_parm_rd.push_back(tempvec(1, 7)); - break; - } - } - { - if (timevary_setup(7) > 0) - { - timevary_byyear(env_data_pass(1), env_data_pass(2) + 1) = 1; - } - else if (timevary_setup(7) < 0) // density-dependence being used - { - timevary_byyear(styr, YrMax) = 1; - } - } - } - - if (baseparm_list(9) > 0) // devs are used - { - N_parm_dev++; // count of dev vectors that are used - timevary_setup(8) = N_parm_dev; // specifies which dev vector will be used by a parameter - timevary_setup(9) = baseparm_list(9); // code for dev link type - y = baseparm_list(10); - if (y < styr) - { - warnstream << "reset parm_dev start year to styr for parm: " << j << " " << y; - write_message(ADJUST, 0); - y = styr; - } - timevary_setup(10) = y; - - y = baseparm_list(11); - if (y > YrMax) - { - warnstream << "reset parm_dev end year to YrMax for parm: " << j << " " << y; - write_message(ADJUST, 0); - y = YrMax; - } - timevary_setup(11) = y; - for (y = timevary_setup(10); y <= timevary_setup(11) + 1; y++) - { - timevary_byyear(y) = 1; - } - - ParCount++; - ParmLabel += ParmLabel(j) + "_dev_se" + CRLF(1); - timevary_parm_cnt++; - dvector tempvec(1, 7); - tempvec.initialize(); - if (autogen_timevary >= 1) // read - { - *(ad_comm::global_datafile) >> tempvec(1, 7); - } - timevary_setup(12) = baseparm_list(12); // dev phase - echoinput << "parameter dev vector created with phase set to: " << timevary_setup(12) << endl; - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec(1) == -12345)) // create or overwrite - { - tempvec.fill("{0.0001,2.0,0.5,0.5,0.5,6,-5}"); - if (finish_starter == 999) - { - tempvec(3) = baseparm_list(12); // set init to value on the 3.24 format base parameter line - tempvec(4) = baseparm_list(12); // set prior - } - // timevary_setup(12)=-5; // set reasonable phase for devs; - // baseparm_list(12)=-5; - } - timevary_parm_rd.push_back(dvector(tempvec(1, 7))); - - ParCount++; - ParmLabel += ParmLabel(j) + "_dev_autocorr" + CRLF(1); - timevary_parm_cnt++; - dvector tempvec2(1, 7); - tempvec2.initialize(); - if (autogen_timevary >= 1) - { - *(ad_comm::global_datafile) >> tempvec2(1, 7); - } // read - if (autogen_timevary == 0 || (autogen_timevary == 2 && tempvec2(1) == -12345)) // create or overwrite - { - tempvec2.fill("{-0.99,0.99,0.0,0.0,0.5,6,-6}"); - } - timevary_parm_rd.push_back(dvector(tempvec2(1, 7))); - echoinput << "dev vec: " << timevary_setup(8) << " with link: " << timevary_setup(9) << " min, max year " << timevary_setup(10, 11) << endl; - } - echoinput << "timevary_setup" << timevary_setup << endl; - return; - } - -// } // end GLOBALS_SECTION - -// SS_Label_Section_11. #BETWEEN_PHASES_SECTION -BETWEEN_PHASES_SECTION - { - int j_phase = current_phase(); // this is the phase to come - - // SS_Label_Info_11.1 #Save last value of objective function - if (j_phase > 1) - { - last_objfun = obj_fun; - } - - // SS_Label_Info_11.2 #For Fmethod=2 & 4, set parameter values (F_rate) equal to Hrate calculated using hybrid method in previous phase - if (N_Fparm > 0 && j_phase > 1) - { - for (g = 1; g <= N_Fparm; g++) - { - f = Fparm_loc[g](1); - t = Fparm_loc[g](2); - if (j_phase == F_PH_time(f, t)) - { - F_rate(g) = Hrate(f, t); - } - } - - if (F_detail > 0) - { - for (k = 1; k <= F_detail; k++) - { - f = F_setup2(k, 1); - y = F_setup2(k, 2); - s = F_setup2(k, 3); - if (y > 0) - { - y1 = y; - y2 = y; - } - else - { - y1 = -y; - y2 = endyr; - } - for (y = y1; y <= y2; y++) - { - t = styr + (y - styr) * nseas + s - 1; - g = do_Fparm_loc(f, t); - if (j_phase == F_setup2(k, 6)) // so code will be bypassed if phase is set negative - { - F_rate(g) = F_setup2(k, 4); - Hrate(f, t) = F_setup2(k, 4); - } - } - } - } - } - - } // end BETWEEN_PHASES_SECTION - -// SS_Label_Section_12. #FINAL_SECTION -FINAL_SECTION - { - // SS_Label_Info_12.1 #Get run ending time - - if (No_Report == 1) - { - cout << "MCMC finished; *.ss_new files and most .sso not written after MCMC or MCEVAL" << endl; - } - - else - { - cout << "Iterations: " << niter << endl; - echoinput << "Iterations: " << niter << endl; - if (objective_function_value::pobjfun->gmax > final_conv) - { - warnstream << "Final gradient: " << objective_function_value::pobjfun->gmax << " is larger than final_conv: " << final_conv; - write_message(WARN, 0); - } - - // SS_Label_Info_12.2 #Output the covariance matrix to covar.sso - anystring = sso_pathname + "covar.sso"; - covarout.open(anystring); - covarout << version_info << endl; - covarout << "start_time: " << ctime(&start) << endl; - covarout << active_parms << " " << CoVar_Count << endl; - covarout << "active-i active-j all-i all-j Par?-i Par?-j label-i label-j corr" << endl; - if (CoVar(1, 1) == 0.00 && CoVar(2, 2) == 0.0) - { - covarout << "Variances are 0.0 for first two elements, so do not write " << endl; - } - else - { - for (i = 1; i <= CoVar_Count; i++) - { - covarout << i << " " << 0 << " " << active_parm(i) << " " << active_parm(i); - if (i <= active_parms) - { - covarout << " Par "; - } - else - { - covarout << " Der "; - } - covarout << " Std " << ParmLabel(active_parm(i)) << " _ " << CoVar(i, 1) << endl; - for (j = 2; j <= i; j++) - { - covarout << i << " " << j - 1 << " " << active_parm(i) << " " << active_parm(j - 1); - if (i <= active_parms) - { - covarout << " Par "; - } - else - { - covarout << " Der "; - } - if ((j - 1) <= active_parms) - { - covarout << " Par "; - } - else - { - covarout << " Der "; - } - covarout << ParmLabel(active_parm(i)) << " " << ParmLabel(active_parm(j - 1)) << " " << CoVar(i, j) << endl; - } - } - if (mceval_phase() == 0) - echoinput << " finished COVAR.SSO" << endl; - } - - // SS_Label_Info_12.3 #Go thru time series calculations again to get extra output quantities - // SS_Label_Info_12.3.2 #Set save_for_report=1 then call initial_conditions and time_series to get other output quantities - if (Do_Dyn_Bzero > 0) // do dynamic Bzero - { - fishery_on_off = 0; - setup_recdevs(); - y = styr; - get_initial_conditions(); - get_time_series(); - if (Do_Forecast > 0) - { - show_MSY = 0; - Get_Forecast(); // First call to forecast - } - k = Do_Dyn_Bzero; - for (j = styr - 2; j <= YrMax; j++) - { - Extra_Std(k) = SSB_yr(j); - k++; - } - if (More_Std_Input(12) == 2) - { - for (j = styr - 2; j <= YrMax; j++) - { - Extra_Std(k) = exp_rec(j, 4); - k++; - } - } - } // end dynamic Bzero - - fishery_on_off = 1; - save_for_report = 1; - bigsaver = 1; - if (SDmode == 0 && pick_report_use(60) == "Y") - write_bodywt = 1; // turn on conditional on SDMode because SDMode=1 situation already written - y = styr; - setup_recdevs(); - get_initial_conditions(); - get_time_series(); // in final_section with save_for_report on - evaluate_the_objective_function(); - // SS_Label_Info_12.3.3 #Do benchmarks and forecast and stdquantities with save_for_report=1 - if (mceval_phase() == 0) - { - show_MSY = 1; - } - else - { - show_MSY = 0; - } // turn on reporting if not in mceval - if (pick_report_use(60) == "Y") - { - write_bodywt = 1; - } // turn on bodywt after time series - setup_Benchmark(); // calculates biology and selectivity to be used - if (Do_Benchmark > 0) - { - if (did_MSY == 0) - { - Get_Benchmarks(show_MSY); - if (mceval_phase() == 0) - { - cout << "Finished calculating benchmarks" << endl; - echoinput << "Finished calculating benchmarks" << endl; - } - } - } - if (Do_Forecast >= 0) - { - report5 << "THIS FORECAST IS FOR PURPOSES OF GETTING DISPLAY QUANTITIES" << endl; - if (did_MSY > 0) - show_MSY = 0; // so to not repeat forecast_report.sso - Get_Forecast(); - if (mceval_phase() == 0) { - cout << "Finished forecast" << endl; - echoinput << "Finished forecast" << endl; - } - } - - if (write_bodywt > 0) - { - cout << "Writing wtatage.ss_new" << endl; - echoinput << "Writing wtatage.ss_new" << endl; - bodywtout << -9999 << " " << 1 << " " << 1 << " " << 1 << " " << 1 << " " << 0 << " " << Wt_Age_mid(1, 1) << " #terminator " << endl; - bodywtout.close(); - } - write_bodywt = 0; - - // SS_Label_Info_12.3.4 #call fxn STDquant() - Process_STDquant(); - if (mceval_phase() == 0) - echoinput << "Finished StdDev quantities" << endl; - get_posteriors(); - if (mceval_phase() == 0) - { - cout << "Finished posteriors" << endl; - echoinput << "Finished posteriors" << endl; - } - - // SS_Label_Info_12.4.2 #Call fxn write_summaryoutput() - if (Do_CumReport > 0) - write_summaryoutput(); - - if (pick_report_use(56) == "Y") - { - write_SS_summary(); - } - - // SS_Label_Info_12.4.3 #Call fxn write_rebuilder_output to produce rebuilder.sso - { - if (pick_report_use(57) == "Y" && Do_Rebuilder == 1 && mceval_counter <= 1) - { - write_rebuilder_output(); - } - - if (pick_report_use(58) == "Y") - { - write_SIStable(); //note: SIStable is deprecated, but file with warning written for now - } - - // SS_Label_Info_12.4 #Do Outputs - // SS_Label_Info_12.4.1 #Call fxn write_bigoutput() - write_bigoutput(); - cout << "Finished final writing of report.sso" << endl; - echoinput << "Finished final writing of report.sso" << endl; - } - // SS_Label_Info_12.4.4 #Call fxn write_nudata() to create bootstrap data - if (N_nudata > 0) - { - cout << "Begin writing *.ss_new output files ... "; - write_nudata(); - // SS_Label_Info_12.4.5 #Call fxn write_nucontrol() to produce control.ss_new - write_nucontrol(); - cout << "Finished writing *.ss_new output files" << endl; - } - else - { - { - warnstream << "No *.ss_new and fewer *.sso files written after mceval"; - write_message(NOTE, 0); - } - } - - echoinput << "Begin final output calculations and warnings" << endl; - // SS_Label_Info_12.4.6 #Call fxn write_Bzero_output() appended to report.sso - if (pick_report_use(59) == "Y") - { - write_Bzero_output(); - } - - if (pick_report_use(54) == "Y" && Do_Benchmark > 0) - { - setup_Benchmark(); - SPR_profile(); - } - - if (pick_report_use(55) == "Y" && Do_Benchmark > 0) - { - Global_MSY(); - } - - if (parm_adjust_method == 3) - { - warnstream << "Time-vary parms not bound checked"; - write_message(WARN, 0); - } - - // SS_Label_Info_12.4.7 #Finish up with final writes to warning.sso - if (N_changed_lambdas > 0) - { - warnstream << "Reminder: Number of lambdas !=0.0 and !=1.0: " << N_changed_lambdas; - write_message(WARN, 0); - } - - if (Nparm_on_bound > 0) - { - warnstream << " N parameters that are on or within 1% of min-max bound: " << Nparm_on_bound; - cout << endl << warnstream.str() << endl; - warnstream << "; check results, variance may be suspect"; - write_message (NOTE, 0); - } - if (N_warn > 0) - { - warnstream << " " << N_warn << " warning" << (N_warn > 1? "s ": " "); - if (N_note > 0) - { - warnstream << " and " << N_note << " note" << (N_note > 1? "s ": " "); - } - } - else if (N_note > 0) - { - warnstream << " " << N_note << " note" << (N_note > 1? "s ": " "); - } - warning << warnstream.str() << endl; - - cout << endl - << "!! Run has completed !! " << endl; - if (N_warn + N_note > 0) - { - cout << "!! See warning.sso for" << warnstream.str() << endl; - } - else - { - cout << "-- No warnings or notes :) --" << endl; - } - } - } // end final section - -// SS_Label_Section_13. #REPORT_SECTION produces SS3.rep,which is less extensive than report.sso produced in final section -REPORT_SECTION - { - int k = gradients.size(); - int k1 = parm_gradients.size(); - if (k1 < k) - k = k1; - for (int i = 1; i <= k; i++) - parm_gradients(i) = gradients(i); - if (current_phase() >= max_phase && finished_minimize == 0) - finished_minimize = 1; // because REPORT occurs after minimize finished - // SS_Label_Info_13.1 #Write limited output to SS.rep - if (reportdetail > 0) - { - if (Svy_N > 0) - report << " CPUE " << surv_like << endl; - if (nobs_disc > 0) - report << " Disc " << disc_like << endl; - if (nobs_mnwt > 0) - report << " MnWt " << mnwt_like << endl; - if (Nobs_l_tot > 0) - report << " LEN " << length_like_tot << endl; - if (Nobs_a_tot > 0) - report << " AGE " << age_like_tot << endl; - if (nobs_ms_tot > 0) - report << " L-at-A " << sizeage_like << endl; - report << " EQUL " << equ_catch_like << endl; - report << " Recr " << recr_like << endl; - report << " Parm " << parm_like << endl; - report << " F_ballpark " << F_ballpark_like << endl; - if (F_Method > 1) - { - report << "Catch " << catch_like << endl; - } - else - { - report << " crash " << CrashPen << endl; - } - if (SzFreq_Nmeth > 0) - report << " sizefreq " << SzFreq_like << endl; - if (Do_TG > 0) - report << " TG-fleetcomp " << TG_like1 << endl - << " TG-negbin " << TG_like2 << endl; - report << " -log(L): " << obj_fun << " SSBio: " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)) << endl; - - report << endl - << "Year SSBio Recruitment" << endl; - report << "Virg " << SSB_yr(styr - 2) << " " << exp_rec(styr - 2, 4) << endl; - report << "Init " << SSB_yr(styr - 1) << " " << exp_rec(styr - 1, 4) << endl; - for (y = styr; y <= endyr; y++) - report << y << " " << SSB_yr(y) << " " << exp_rec(y, 4) << endl; - - report << endl - << "EXPLOITATION F_Method: "; - if (F_Method == 1) - { - report << " Pope's_approx "; - } - else - { - report << " instantaneous_annual_F "; - } - report << endl - << "X Catch_Units "; - for (f = 1; f <= Nfleet; f++) - if (catchunits(f) == 1) - { - report << " Bio "; - } - else - { - report << " Num "; - } - report << endl - << "Yr Seas"; - for (f = 1; f <= Nfleet; f++) - report << " " << f; - report << endl - << "init_yr 1 "; - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) - { - if (init_F_loc(s, f) > 0) - { - report << " " << init_F(init_F_loc(s, f)); - } - else - { - report << " NA "; - } - } - report << endl; - for (y = styr; y <= endyr; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - report << y << " " << s << " " << column(Hrate, t) << endl; - } - - report << endl - << "LEN_SELEX" << endl; - report << "Fleet Sex " << len_bins_m << endl; - for (f = 1; f <= Nfleet; f++) - { - if (seltype(f, 1) > 0) - { - for (gg = 1; gg <= gender; gg++) - report << f << "-" << fleetname(f) << gg << " " << sel_l(endyr, f, gg) << endl; - } - } - - report << endl - << "AGE_SELEX" << endl; - report << "Fleet Sex " << age_vector << endl; - for (f = 1; f <= Nfleet; f++) - { - if (seltype(f + Nfleet, 1) > 10) - { - for (gg = 1; gg <= gender; gg++) - report << f << "-" << fleetname(f) << " " << gg << " " << sel_a(endyr, f, gg) << endl; - } - } - } - - // SS_Label_Info_13.2 #Call fxn write_bigoutput() as last_phase finishes and before doing Hessian - if (last_phase() && SDmode == 1) - { - if (pick_report_use(60) == "Y") - { - write_bodywt = 1; - } - save_for_report = 1; - y = styr; - setup_recdevs(); - get_initial_conditions(); - get_time_series(); // in ADMB's report_section - evaluate_the_objective_function(); - write_bigoutput(); - echoinput << "Wrote first version of output files (before hessian, benchmark, and forecast)" << endl; - cout << "Wrote first version of output files (before hessian, benchmark, and forecast)" << endl; - save_for_report = 0; - write_bodywt = 0; - // SS2out.close(); - } - } // end standard report section -// SS_Label_file #8. **SS_proced.tpl** -// SS_Label_file # -
PROCEDURE_SECTION
-// SS_Label_file # -// SS_Label_file # - do iterations under control of ADMB, in each iteration, call: setup_recdevs(), get_initial_conditions(), get_time_series(), evaluate_the_objective_function() -// SS_Label_file # - writes to *parmtrace.sso* -// SS_Label_file # - calls get_posteriors() // to write to *posteriors.sso* -// SS_Label_file # - upon reaching convergence, or if in mceval, do Dynamic_Bzero by calling those functions again with fishery_on_off=0 -// SS_Label_file # -// SS_Label_file # - call setup_Benchmark(), Get_Benchmark(), Get_Forecast() - -// **************************************************************************************************************** -// SS_Label_Section_7.0 #PROCEDURE_SECTION -PROCEDURE_SECTION - { - Mgmt_quant.initialize(); - Extra_Std.initialize(); - CrashPen.initialize(); - Smry_Table.initialize(); - niter++; - if (mceval_phase()) - mceval_counter++; // increment the counter - - if (initial_params::mc_phase == 1) // in MCMC phase - { - if (mcmc_counter == 0) - { - SRparm(1) += MCMC_bump; - cout << mcmc_counter << " adjusted SRparm in first mcmc call " << SRparm(1) << " by " << MCMC_bump << endl; - } - - mcmc_counter++; - } - - if (mcmcFlag == 1) // so will do mcmc this run or is in mceval - { - if (Do_ParmTrace == 1) - Do_ParmTrace = 4; // to get all iterations - if (Do_ParmTrace == 2) - Do_ParmTrace = 3; // to get all iterations - if (mcmc_counter > 10 || mceval_counter > 10) - Do_ParmTrace = 0; - } - - // SS_Label_Info_7.3 #get Hrate from the parameter vector F_rate - // note that in SS_global BETWEEN_PHASES is where F_rate, which is the parameter, gets assigned a starting value Hrate from Hrate calculated by hybrid in previous PH - // be careful about phases for when this mapping occurs for a whole fleet, versus estimation phase which can be value specific - if (N_Fparm > 0) - { - for (g = 1; g <= N_Fparm; g++) - { - f = Fparm_loc[g](1); - t = Fparm_loc[g](2); - if (current_phase() >= F_PH_time(f, t)) - { - Hrate(f, t) = F_rate(g); - } - } - } - - // SS_Label_Info_7.4 #Do the time series calculations - if (mceval_counter == 0 || (mceval_counter > burn_intvl && ((double(mceval_counter) / double(thin_intvl)) - double((mceval_counter / thin_intvl)) == 0))) // check to see if burn in period is over - { - - // create bigsaver to simplfy some condition statements later - if ((save_for_report > 0) || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase == 0))) // (SAVE || ( (SD || EVAL) && (!MCMC) ) ) - { - bigsaver = 1; - } - else - { - bigsaver = 0; - } - setup_recdevs(); - y = styr; - // SS_Label_Info_7.4.1 #Call fxn get_initial_conditions() to get the virgin and initial equilibrium population - get_initial_conditions(); - if (do_once == 1) - echoinput << "Finished initial_conditions" << endl; - // SS_Label_Info_7.4.2 #Call fxn get_time_series() to do population calculations for each year and get expected values for observations - get_time_series(); // in procedure_section - if (do_once == 1) - { - echoinput << "Finished time_series" << endl; - } - - // SS_Label_Info_7.4.3 #Call fxn evaluate_the_objective_function() - evaluate_the_objective_function(); - - // SS_Label_Info_7.6 #If sdphase or mcevalphase, do benchmarks and forecast and derived quantities - if ((sd_phase() || mceval_phase()) && (initial_params::mc_phase == 0)) - { - - // SS_Label_Info_7.6.1 #Call fxn Get_Benchmarks() - if (Do_Benchmark > 0) - { - did_MSY = 0; // so that benchmarks will get calculated here - setup_Benchmark(); - Get_Benchmarks(show_MSY); - } - did_MSY = 1; // set flag to not calculate the benchmarks again in final section - - if (Do_Dyn_Bzero > 0) // do dynamic Bzero - { - fishery_on_off = 0; - setup_recdevs(); - y = styr; - get_initial_conditions(); - get_time_series(); - if (Do_Forecast > 0) - { - show_MSY = 0; - Get_Forecast(); - } - k = Do_Dyn_Bzero; - for (j = styr - 2; j <= YrMax; j++) - { - Extra_Std(k) = SSB_yr(j); - k++; - } - if (More_Std_Input(12) == 2) - { - for (j = styr - 2; j <= YrMax; j++) - { - Extra_Std(k) = exp_rec(j, 4); - k++; - } - } - } // end dynamic Bzero calculations, will write after big report - - fishery_on_off = 1; - if (mceval_phase() > 0) - save_for_report = 1; - if (mceval_phase() == 0) - { - show_MSY = 1; - } // so only show details if not in mceval - if (show_MSY == 1) - { - echoinput << "Start benchmark and forecast, if requested" << endl; - } - setup_recdevs(); - y = styr; - get_initial_conditions(); - get_time_series(); // in write_big_report - evaluate_the_objective_function(); - if (Do_Benchmark > 0) - { - setup_Benchmark(); - Get_Benchmarks(show_MSY); - } - - // SS_Label_Info_7.6.2 #Call fxn Get_Forecast() - if (Do_Forecast > 0) - { - if (show_MSY == 1) - report5 << "THIS FORECAST FOR PURPOSES OF STD REPORTING" << endl; // controls writing to forecast-report.sso - Get_Forecast(); - } - - // SS_Label_Info_7.7 #Call fxn Process_STDquant() to move calculated values into sd_containers - Process_STDquant(); - if (mceval_phase() == 0) - { - echoinput << "Finished benchmark, forecast, and sdreporting" << endl; - } - } // end of things to do in std_phase - - // SS_Label_Info_7.9 #Do screen output of procedure results from this iteration - if (current_phase() <= max_phase + 1) - phase_output(current_phase()) = value(obj_fun); - if (rundetail > 1) - { - if (Svy_N > 0) - cout << " CPUE " << surv_like << endl; - if (nobs_disc > 0) - cout << " Disc " << disc_like << endl; - if (nobs_mnwt > 0) - cout << " MnWt " << mnwt_like << endl; - if (Nobs_l_tot > 0) - cout << " Length " << length_like_tot << endl; - if (Nobs_a_tot > 0) - cout << " AGE " << age_like_tot << endl; - if (nobs_ms_tot > 0) - cout << " L-at-A " << sizeage_like << endl; - if (SzFreq_Nmeth > 0) - cout << " sizefreq " << SzFreq_like << endl; - if (Do_TG > 0) - cout << " TG-fleetcomp " << TG_like1 << endl - << " TG-negbin " << TG_like2 << endl; - cout << " Recr " << recr_like << " sum_recdev: " << sum_recdev << endl; - cout << " InitEQ_Regime " << regime_like << endl; - cout << " Parm_Priors " << parm_like << endl; - cout << " Parm_devs " << parm_dev_like << endl; - cout << " SoftBound " << SoftBoundPen << endl; - cout << " F_ballpark " << F_ballpark_like << endl; - if (F_Method > 1) - { - cout << "Catch " << sum(catch_like) << endl; - } - cout << " EQUL_catch " << sum(equ_catch_like) << endl; - cout << " crash " << CrashPen << endl; - } - if (rundetail > 0) - { - temp = norm2(recdev(recdev_start, recdev_end)); - temp = sqrt((temp + 0.0000001) / (double(recdev_end - recdev_start + 1))); - if (mcmc_counter == 0 && mceval_counter == 0) - { - cout << current_phase() << " " << niter << " -log(L): " << obj_fun << " SSBio: " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)); - } - else if (mcmc_counter > 0) - { - cout << " MCMC: " << mcmc_counter << " -log(L): " << obj_fun << " SSBio: " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)); - } - else if (mceval_counter > 0) - { - cout << " MCeval: " << mceval_counter << " -log(L): " << obj_fun << " SSBio: " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)); - } - if (F_Method > 1 && sum(catch_like) > 0.01) - { - cout << " cat " << sum(catch_like); - } - else if (CrashPen > 0.01) - { - cout << " crash " << CrashPen; - } - cout << endl; - } - // SS_Label_Info_7.10 #Write parameter values to ParmTrace - if ((Do_ParmTrace == 1 && obj_fun <= last_objfun) || Do_ParmTrace == 4) // only report active parameters - { - ParmTrace << current_phase(); - if (sd_phase()) - { - ParmTrace << "_sd"; - finished_minimize = 3; - } // so flag is no longer==2 - if (finished_minimize == 2) - ParmTrace << "_hs"; // each Hessian calculation takes 4 calls, all will get this flag, so output processor needs to create a 1-4 counter - if (finished_minimize == 1) - finished_minimize = 2; // this prevents _hs flag for the one iteration that occurs after minimizer ends and before first tweak of Hessian - if (mceval_phase()) - ParmTrace << "_mc"; - - ParmTrace << " " << niter << " "; - ParmTrace.precision(10); - ParmTrace << obj_fun << " " << obj_fun - last_objfun << " " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)); - ParmTrace.precision(2); - ParmTrace << " " << biasadj(styr) << " " << max(biasadj) << " " << biasadj(endyr); - ParmTrace.precision(7); - for (j = 1; j <= MGparm_PH.indexmax(); j++) - { - if (MGparm_PH(j) >= 0) - { - ParmTrace << " " << MGparm(j); - } - } - for (j = 1; j <= SRparm_PH.indexmax(); j++) - { - if (SRparm_PH(j) >= 0) - { - ParmTrace << " " << SRparm(j); - } - } - if (recdev_cycle > 0) - { - for (j = 1; j <= recdev_cycle; j++) - { - if (recdev_cycle_PH(j) >= 0) - { - ParmTrace << " " << recdev_cycle_parm(j); - } - } - } - if (recdev_early_PH > 0) - { - ParmTrace << " " << recdev_early; - } - if (recdev_PH > 0) - { - if (do_recdev == 1) - { - ParmTrace << " " << recdev1; - } - if (do_recdev >= 2) - { - ParmTrace << " " << recdev2; - } - } - if (Fcast_recr_PH2 > 0 && Do_Forecast > 0) - { - ParmTrace << Fcast_recruitments << " "; - if (Do_Impl_Error > 0) - ParmTrace << Fcast_impl_error << " "; - } - - for (f = 1; f <= N_init_F; f++) - { - if (init_F_PH(f) > 0) - { - ParmTrace << " " << init_F(f); - } - } - if (N_Fparm > 0) // continuous F - { - for (k = 1; k <= N_Fparm; k++) - { - if (Fparm_PH[k] > 0) - { - ParmTrace << " " << F_rate(k); - } - } - } - - for (f = 1; f <= Q_Npar2; f++) - { - if (Q_parm_PH(f) > 0) - { - ParmTrace << " " << Q_parm(f); - } - } - for (k = 1; k <= selparm_PH.indexmax(); k++) - { - if (selparm_PH(k) > 0) - { - ParmTrace << " " << selparm(k); - } - } - for (k = 1; k <= TG_parm_PH.indexmax(); k++) - { - if (TG_parm_PH(k) > 0) - { - ParmTrace << " " << TG_parm(k); - } - } - if (N_parm_dev > 0) - { - for (j = 1; j <= N_parm_dev; j++) - { - if (parm_dev_PH(j) > 0) - ParmTrace << parm_dev(j) << " "; - } - } - ParmTrace.precision(10); - k = min(current_phase(), max_lambda_phase); - if (F_Method > 1) - ParmTrace << " Catch " << catch_like * column(catch_lambda, k); - if (N_init_F > 0) - ParmTrace << " Equil_catch " << equ_catch_like * column(init_equ_lambda, k); - if (Svy_N > 0) - ParmTrace << " Survey " << k << " " << surv_like * column(surv_lambda, k) << " " << elem_prod(surv_like, column(surv_lambda, k)); - if (nobs_disc > 0) - ParmTrace << " Discard " << disc_like * column(disc_lambda, k) << " " << elem_prod(disc_like, column(disc_lambda, k)); - if (nobs_mnwt > 0) - ParmTrace << " Mean_body_wt " << mnwt_like * column(mnwt_lambda, k) << " " << elem_prod(mnwt_like, column(mnwt_lambda, k)); - if (Nobs_l_tot > 0) - ParmTrace << " Length " << length_like_tot * column(length_lambda, k) << " " << elem_prod(length_like_tot, column(length_lambda, k)); - if (Nobs_a_tot > 0) - ParmTrace << " Age " << age_like_tot * column(age_lambda, k) << " " << elem_prod(age_like_tot, column(age_lambda, k)); - if (nobs_ms_tot > 0) - ParmTrace << " Size_at_age " << sizeage_like * column(sizeage_lambda, k) << " " << elem_prod(sizeage_like, column(sizeage_lambda, k)); - if (SzFreq_Nmeth > 0) - ParmTrace << " SizeFreq " << SzFreq_like * column(SzFreq_lambda, k) << " " << elem_prod(SzFreq_like, column(SzFreq_lambda, k)); - if (Do_Morphcomp > 0) - ParmTrace << " Morph " << Morphcomp_lambda(k) * Morphcomp_like; - if (Do_TG > 0) - ParmTrace << " Tag_comp " << TG_like1 * column(TG_lambda1, k) << " " << elem_prod(TG_like1, column(TG_lambda1, k)); - if (Do_TG > 0) - ParmTrace << " Tag_negbin " << TG_like2 * column(TG_lambda2, k) << " " << elem_prod(TG_like2, column(TG_lambda2, k)); - ParmTrace << " Recr_dev " << recr_like * recrdev_lambda(k); - ParmTrace << " Regime " << regime_like * regime_lambda(k); - ParmTrace << " Fore_Recdev " << Fcast_recr_like; - ParmTrace << " Parm_priors " << parm_like * parm_prior_lambda(k); - if (SoftBound > 0) - ParmTrace << " Softbounds " << SoftBoundPen; - if (N_parm_dev > 0) - ParmTrace << " Parm_devs " << (sum(parm_dev_like)) * parm_dev_lambda(k); - if (F_ballpark_yr > 0) - ParmTrace << " F_Ballpark " << F_ballpark_lambda(k) * F_ballpark_like; - ParmTrace << endl; - } - else if ((Do_ParmTrace == 2 && obj_fun <= last_objfun) || Do_ParmTrace == 3) // report active and inactive parameters - { - ParmTrace << current_phase() << " " << niter << " " << obj_fun << " " << obj_fun - last_objfun - << " " << value(SSB_yr(styr)) << " " << value(SSB_yr(endyr)) << " " << biasadj(styr) << " " << max(biasadj) << " " << biasadj(endyr); - ParmTrace << " " << MGparm << " "; - ParmTrace << SRparm << " "; - if (recdev_cycle > 0) - ParmTrace << recdev_cycle_parm; - if (recdev_do_early > 0) - ParmTrace << recdev_early << " "; - if (do_recdev == 1) - { - ParmTrace << recdev1 << " "; - } - if (do_recdev >= 2) - { - ParmTrace << recdev2 << " "; - } - if (Do_Forecast > 0) - ParmTrace << Fcast_recruitments << " "; - if (Do_Impl_Error > 0) - ParmTrace << Fcast_impl_error << " "; - if (N_init_F > 0) - ParmTrace << init_F << " "; - if (N_Fparm > 0) - ParmTrace << F_rate << " "; - if (Q_Npar > 0) - ParmTrace << Q_parm << " "; - ParmTrace << selparm << " "; - if (Do_TG > 0) - ParmTrace << TG_parm << " "; - if (N_parm_dev > 0) - { - for (j = 1; j <= N_parm_dev; j++) - { - ParmTrace << parm_dev(j); - } - } - ParmTrace << endl; - } - if (obj_fun <= last_objfun) - last_objfun = obj_fun; - docheckup = 0; // turn off reporting to checkup.sso - // SS_Label_Info_7.11 #Call fxn get_posteriors if in mceval_phase - if (mceval_phase()) - { - get_posteriors(); - - //SS_Label_Info_7.12 #write report_mce_XXXX.sso and compreport_mce_XXXX.sso for each MCEVAL - // warning<= 2) - { - write_bodywt = 0; - pick_report_use(54) = 0; - pick_report_use(55) = 0; - save_for_report = 1; - write_bigoutput(); - if (Do_Dyn_Bzero > 0) - write_Bzero_output(); - save_for_report = 0; - write_bodywt = 0; - } - } - } // end doing of the calculations - if (mceval_phase() || initial_params::mc_phase == 1) - { - No_Report = 1; // flag to skip output reports after MCMC and McEVAL - } - } -// SS_Label_Info_7.13 #End of PROCEDURE_SECTION - -// SS_Label_file #9. **SS_biofxn.tpl** -// SS_Label_file # * get_MGsetup() // get parameter values for this year -// SS_Label_file # * get_growth1() // prep growth quantities -// SS_Label_file # * get_growth2() // growth to beginning of each season of upcoming year -// SS_Label_file # * get_growth3() // growth to particular time point in a season -// SS_Label_file # * get_natmort() -// SS_Label_file # * get_recr_distribution() -// SS_Label_file # * get_wtlen() -// SS_Label_file # * get_mat_fec() -// SS_Label_file # * get_Hermaphro() -// SS_Label_file # * get_migration() -// SS_Label_file # * get_saveGparm() -// SS_Label_file # * - -//********************************************************************* - /* SS_Label_Function_14 #Get_MGsetup: apply time-varying factors this year to the MG parameters to create mgp_adj vector */ -FUNCTION void get_MGsetup(const int yz) - { - mgp_adj = MGparm; // set all to base parm value - // int y1; - - for (f = 1; f <= N_MGparm; f++) - { - if (MGparm_timevary(f) > 0) // timevary - { - mgp_adj(f) = parm_timevary(MGparm_timevary(f), yz); - if (parm_adjust_method == 1 && (save_for_report > 0 || do_once == 1)) - { - if (mgp_adj(f) < MGparm_1(f, 1) || mgp_adj(f) > MGparm_1(f, 2)) - { - warnstream << "adjusted MGparm out of base parm bounds. Phase: " << current_phase() - << "; Inter: " << niter << "; parm#: " << f << "; y: " << yz << "; min: " - << MGparm_1(f, 1) << "; max: " << MGparm_1(f, 2) << "; base: " << MGparm(f) - << " timevary_val: " << mgp_adj(f) << " " << ParmLabel(f); - write_message (WARN, 0); - } - } - } - } // end parm loop - - // SS_Label_Info_14.5 #if MGparm method =1 (no offsets), then do direct assignment if parm value is 0.0. (only for natMort and growth parms) - if (MGparm_def == 1) - { - for (j = 1; j <= N_MGparm; j++) - { - if (MGparm_offset(j) > 0) - mgp_adj(j) = mgp_adj(MGparm_offset(j)); - } - } - // SS_Label_Info_19.1 #set wtlen and maturity/fecundity factors equal to annual values from mgp_adj - gp = 0; - for (gg = 1; gg <= gender; gg++) - for (GPat = 1; GPat <= N_GP; GPat++) - { - gp++; - if (gg == 1) - { - for (f = 1; f <= 6; f++) - { - wtlen_p(GPat, f) = mgp_adj(MGparm_point(gg, GPat) + N_M_Grow_parms + f - 1); - } - } - else - { - for (f = 7; f <= 8; f++) - { - wtlen_p(GPat, f) = mgp_adj(MGparm_point(gg, GPat) + N_M_Grow_parms + (f - 6) - 1); - } - } - if (do_once == 1) - echoinput << "get wtlen parms sex: " << gg << " Gpat: " << GPat << " sex*Gpat: " << gp << " " << wtlen_p(GPat) << endl; - } - if (save_for_report > 0) - mgp_save(yz) = value(mgp_adj); - } - -//******************************************************************** - /* SS_Label_FUNCTION 15 get_growth1; calc some seasonal and CV_growth biology factors that cannot be time-varying */ -FUNCTION void get_growth1() - { - // SS_Label_Info_15.1 #create seasonal effects for growth K, and for wt_len parameters - if (MGparm_doseas > 0) - { - if (MGparm_seas_effects(10) > 0) // for seasonal K - { - VBK_seas(0) = 0.0; - for (s = 1; s <= nseas; s++) - { - VBK_seas(s) = mfexp(MGparm(MGparm_seas_effects(10) + s)); - VBK_seas(0) += VBK_seas(s) * seasdur(s); - } - } - else - { - VBK_seas = sum(seasdur); // set vector to null effect - } - for (gp = 1; gp <= N_GP; gp++) - for (j = 1; j <= 8; j++) - { - #ifdef DO_ONCE - { - if (do_once == 1) - echoinput << j << " wt_len seas " << MGparm_seas_effects(j) << endl; - } - #endif - if (MGparm_seas_effects(j) > 0) - { - wtlen_seas(0, gp, j) = 0.0; - for (s = 1; s <= nseas; s++) - { - wtlen_seas(s, gp, j) = mfexp(MGparm(MGparm_seas_effects(j) + s)); - wtlen_seas(0, gp, j) += wtlen_seas(s, gp, j) * seasdur(s); // this seems not to be used - } - } - else - { - for (s = 0; s <= nseas; s++) - { - wtlen_seas(s, gp, j) = 1.0; - } - } - } - } - else - { - VBK_seas = sum(seasdur); // set vector to null effect - for (s = 1; s <= nseas; s++) - wtlen_seas(s) = 1.0; // set vector to null effect - } - - // SS_Label_Info_15.2 #create variability of size-at-age factors using direct assignment or offset approaches - gp = 0; - for (gg = 1; gg <= gender; gg++) - for (g = 1; g <= N_GP; g++) - { - gp++; - Ip = MGparm_point(gg, g); - j = Ip + N_M_Grow_parms - 2; // index for CVmin - k = j + 1; // index for CVmax - switch (MGparm_def) // for CV of size-at-age - { - case 1: // direct - { - if (MGparm(j) > 0) - { - CVLmin(gp) = MGparm(j); - } - else - { - CVLmin(gp) = MGparm(N_M_Grow_parms - 1); - } - if (MGparm(k) > 0) - { - CVLmax(gp) = MGparm(k); - } - else - { - CVLmax(gp) = MGparm(N_M_Grow_parms); - } - break; - } - case 2: // offset - { - if (gp == 1) - { - CVLmin(gp) = MGparm(j); - CVLmax(gp) = MGparm(k); - } - else - { - CVLmin(gp) = CVLmin(1) * mfexp(MGparm(j)); - CVLmax(gp) = CVLmax(1) * mfexp(MGparm(k)); - } - break; - } - case 3: // offset like SS2 V1.23 - { - if (gp == 1) - { - CVLmin(gp) = MGparm(j); - CVLmax(gp) = CVLmin(1) * mfexp(MGparm(k)); - } - else - { - CVLmin(gp) = CVLmin(1) * mfexp(MGparm(j)); - CVLmax(gp) = CVLmin(gp) * mfexp(MGparm(k)); - } - break; - } - } // end switch - if ((CVLmin(gp) != CVLmax(gp)) || active(MGparm(N_M_Grow_parms)) || active(MGparm(k))) - { - CV_const(gp) = 1; - } - else - { - CV_const(gp) = 0; - } - } - } - -//******************************************************************** - /* SS_Label_Function_ 16 #get_growth2; (do seasonal growth calculations for a selected year) */ -FUNCTION void get_growth2(const int y) - { - // called at beginning of each year, so y is known - // if y=styr, then does equilibrium size-at-age according to start year growth parameters - // for any year, calculates for each season the size at the beginning of the next season, with growth increment calculated according to that year's parameters - - //Growth Cessation Model code added by Mark Maunder October 2018 - //The growth cessation model is described in - //Maunder, M.N., Deriso, R.B., Schaefer, K.M., Fuller, D.W., Aires-da-Silva, A.M., Minte‑Vera, C.V., Campana, S.E. 2018. The growth cessation model: a growth model for species showing a near cessation in growth with application to bigeye tuna (Thunnus obesus). Marine Biology (2018) 165:76. - //Ian Taylor derived the formula for Linf - - int k2; - int add_age; - int ALK_idx2; // beginning of first subseas of next season - dvariable plusgroupsize; - dvariable current_size; - dvariable VBK_temp; - dvariable VBK_temp2; // with VBKseas(s) multiplied - dvariable LminR; - dvariable LmaxR; - dvariable LinfR; - dvariable inv_Richards; - dvariable t50; - // SS_Label_Info_16.1 #Create Cohort_Growth offset for the cohort borne (age 0) this year - if (CGD_onoff > 0) // cohort specific growth multiplier - { - temp = mgp_adj(MGP_CGD); - k = min(nages, (YrMax - y)); - for (a = 0; a <= k; a++) - { - Cohort_Growth(y + a, a) = temp; - } // so this multiplier on growth_increment is stored on a diagonal into the future - } - - // SS_Label_Info_16.2 #Loop growth patterns (sex*N_GP) - gp = 0; - #ifdef DO_ONCE - { - if (do_once == 1) - echoinput << "GROWTH, yr= " << y << endl; - } - #endif - for (gg = 1; gg <= gender; gg++) - for (GPat = 1; GPat <= N_GP; GPat++) - { - gp++; - Ip = MGparm_point(gg, GPat) + N_natMparms; - switch (Grow_type) // create specific growth parameters from the mgp_adj list of current MGparms - { - case 7: // empirical length - { - break; - } - - default: // process parameters for all other grow_type - { - // SS_Label_Info_16.2.1 #set Lmin, Lmax, VBK, Richards to this year's values for mgp_adj - if (MGparm_def > 1 && gp > 1) // do offset approach - { - Lmin(gp) = Lmin(1) * mfexp(mgp_adj(Ip)); - Lmax_temp(gp) = Lmax_temp(1) * mfexp(mgp_adj(Ip + 1)); - VBK(gp) = VBK(1) * mfexp(mgp_adj(Ip + 2)); // assigns to all ages for which VBK is defined - } - else - { - Lmin(gp) = mgp_adj(Ip); - Lmax_temp(gp) = mgp_adj(Ip + 1); // size at A2; could be 999 to indicate Linf - VBK(gp) = -mgp_adj(Ip + 2); // because always used as negative; assigns to all ages for which VBK is defined - } - VBK_temp = VBK(gp, 0); // will be reset to VBK(gp,nages) if using age-specific K - - // SS_Label_Info_16.2.2 #Set up age specific k - if (Grow_type == 3) // age specific k - { - j = 1; - for (a = 1; a <= nages; a++) - { - if (a == Age_K_points(j)) - { - VBK(gp, a) = VBK(gp, a - 1) * mgp_adj(Ip + 2 + j); - if (j < Age_K_count) - j++; - } - else - { - VBK(gp, a) = VBK(gp, a - 1); - } - } - VBK_temp = VBK(gp, nages); - } - else if (Grow_type == 4) // age specific k reverse order, so age_k_points need to be descending - { - j = 1; - VBK(gp, nages) = VBK_temp; - for (a = nages - 1; a >= 0; a--) - { - if (a == Age_K_points(j)) - { - VBK(gp, a) = VBK(gp, a + 1) * mgp_adj(Ip + 2 + j); - if (j < Age_K_count) - j++; - } - else - { - VBK(gp, a) = VBK(gp, a + 1); - } - } - } - else if (Grow_type == 5) // age specific k replacement, so age_k_points need to be descending - { - j = 1; - for (a = nages; a >= 0; a--) - { - if (a == Age_K_points(j)) - { - VBK(gp, a) = mgp_adj(Ip + 2 + j) * VBK_temp; - if (j < Age_K_count) - j++; - } - else - { - VBK(gp, a) = VBK_temp; - } - } - VBK_temp = VBK(gp, nages); - } - - // get Linf from Lmax - // get Richards or growth cessation parameter if appropriate - if (Grow_type == 2) // Richards - { - if (MGparm_def > 1 && gp > 1) - { - Richards(gp) = Richards(1) * mfexp(mgp_adj(Ip + 3)); - } - else - { - Richards(gp) = mgp_adj(Ip + 3); - } - LminR = pow(Lmin(gp), Richards(gp)); - inv_Richards = 1.0 / Richards(gp); - if (AFIX2 == 999) - { - L_inf(gp) = Lmax_temp(gp); - LinfR = pow(L_inf(gp), Richards(gp)); - } - else - { - LmaxR = pow(Lmax_temp(gp), Richards(gp)); - LinfR = LminR + (LmaxR - LminR) / (1. - mfexp(VBK_temp * VBK_seas(0) * (AFIX_delta))); - L_inf(gp) = pow(LinfR, inv_Richards); - } - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " linf " << L_inf(gp) << " VBK: " << VBK_temp << endl; - #endif - } - else if (Grow_type == 8) - { - if (MGparm_def > 1 && gp > 1) - { - Richards(gp) = Richards(1) * mfexp(mgp_adj(Ip + 3)); - } - else - { - Richards(gp) = mgp_adj(Ip + 3); - } - L_inf(gp) = Lmax_temp(gp); - VBK_temp = -VBK(gp, 0) * VBK_seas(0); - // t50 is the calculated inflection age for the decline in K - t50 = log(exp((L_inf(gp) - Lmin(gp)) * Richards(gp) / VBK_temp) - 1.0) / Richards(gp); - } - else - { - if (AFIX2 == 999) - { - L_inf(gp) = Lmax_temp(gp); - } - else - { - L_inf(gp) = Lmin(gp) + (Lmax_temp(gp) - Lmin(gp)) / (1. - mfexp(VBK_temp * VBK_seas(0) * (AFIX_delta))); - #ifdef DO_ONCE - if (do_once == 1) - echoinput << VBK_temp << " " << VBK_seas(0) << " " << VBK_temp * VBK_seas(0) << " " << Lmax_temp(gp) << " " << L_inf(gp) << endl; - #endif - } - } - - // SS_Label_Info_16.2.3 #Set up Lmin and Lmax in Start Year - if (y == styr) - { - Cohort_Lmin(gp) = Lmin(gp); // sets for all years and ages - } - else if (timevary_MG(y, 2) > 0) // using time-vary growth - { - k = min(nages, (YrMax - y)); - for (a = 0; a <= k; a++) - { - Cohort_Lmin(gp, y + a, a) = Lmin(gp); - } // sets for future years so cohort remembers its size at birth; with Lmin(gp) being size at birth this year - } - } // end setup of parametric growth parameters - } // end switch between parametric and non-parametric growth - #ifdef DO_ONCE - if (do_once == 1) - { - echoinput << "sex: " << gg << " GP: " << gp << " Lmin: " << Lmin(gp) << " Linf: " << L_inf(gp) << " VBK_temp: " << VBK_temp << " VBK@age: " << -VBK(gp) << endl; - if (Grow_type == 2) - echoinput << " Richards: " << Richards(gp) << endl; - if (Grow_type == 8) - echoinput << " Cessation_decay: " << Richards(gp) << endl; - } - #endif - // SS_Label_Info_16.2.4 #Loop settlement events because growth starts at time of settlement - g = g_Start(gp); // base platoon - for (settle = 1; settle <= N_settle_timings; settle++) - { - g += N_platoon; // increment by N_platoon because only middle platoon has growth modeled - if (use_morph(g) > 0) - { - if (y == styr) - { - switch (Grow_type) - { - case 7: // non-parametric - { - break; - } - default: - { - // SS_Label_Info_16.2.4.1 #set up the delta in growth variability across ages if needed - if (CV_const(gp) > 0) - { - if (CV_depvar_a == 0) - { - CV_delta(gp) = (CVLmax(gp) - CVLmin(gp)) / (Lmax_temp(gp) - Lmin(gp)); - } - else - { - CV_delta(gp) = (CVLmax(gp) - CVLmin(gp)) / (AFIX2_forCV - AFIX); - } - } - else - { - CV_delta(gp) = 0.0; - CV_G(gp) = CVLmin(gp); // sets all seasons and whole age range - } - } - } - - // SS_Label_Info_16.2.4.1.1 #if y=styr, get size-at-age in first subseason of first season of this first year - switch (Grow_type) - { - case 1: - { - VBK_temp2 = VBK_temp * VBK_seas(0); - for (a = 0; a <= nages; a++) - { - // Ave_Size(styr,1,g,a) = Lmin(gp) + (Lmin(gp)-L_inf(gp))* (mfexp(VBK_temp2*(real_age(g,1,a)-AFIX))-1.0); - Ave_Size(styr, 1, g, a) = L_inf(gp) + (Lmin(gp) - L_inf(gp)) * mfexp(VBK_temp2 * (real_age(g, 1, a) - AFIX)); - } // done ageloop - break; - } - case 2: // Richards - { - Ave_Size(styr, 1, g)(0, first_grow_age(g)) = Lmin(gp); - VBK_temp2 = VBK_temp * VBK_seas(0); - for (a = first_grow_age(g); a <= nages; a++) - { - temp = LinfR + (LminR - LinfR) * mfexp(VBK_temp2 * (real_age(g, 1, a) - AFIX)); - Ave_Size(styr, 1, g, a) = pow(temp, inv_Richards); - } // done ageloop - break; - } - case 5: - { - } - case 4: - { - } - case 3: // age-specific K, so need age-by-age calculations - { - ALK_idx = 1; - //VBK_seas(0) accounts for season duration - for (a = 0; a <= nages; a++) - { - k2 = a - 1; - if (lin_grow(g, ALK_idx, a) >= -1.0) // linear segment, or first time point beyond AFIX; - { - Ave_Size(styr, 1, g, a) = Lmin(gp) + (Lmin(gp) - L_inf(gp)) * (mfexp(VBK(gp, 0) * VBK_seas(0) * (real_age(g, 1, a) - AFIX)) - 1.0); - } - else - { - Ave_Size(styr, 1, g, a) = Ave_Size(styr, 1, g, k2) + (mfexp(VBK(gp, k2) * VBK_seas(0)) - 1.0) * (Ave_Size(styr, 1, g, k2) - L_inf(gp)); - } - // echoinput< -997.) // decay rate has been read; uses same code for Richards and standard - { - temp1 = 1.0; - temp4 = 1.0; - temp = current_size; - temp2 = mfexp(-Linf_decay); // cannot use natM or Z because growth is calculated first - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " L_inf " << L_inf(gp) << " size@exactly maxage " << current_size << endl; - #endif - if (Grow_type < 3) - { - VBK_temp2 = VBK(gp, 0); - } - else - { - VBK_temp2 = VBK(gp, nages); - } - VBK_temp2 = (1.0 - mfexp(VBK_temp2 * VBK_seas(0))); - for (a = nages + 1; a <= 3 * nages; a++) - { - temp4 *= temp2; // decay numbers at age by exp(-0.xxx) - current_size += (L_inf(gp) - current_size) * VBK_temp2; - temp += temp4 * current_size; - temp1 += temp4; // accumulate numbers to create denominator for mean size calculation - } - Ave_Size(styr, 1, g, nages) = temp / temp1; // this is weighted mean size at nages - } - else if (Linf_decay == -999.) // mimic SS3.24 - { - temp = 0.0; - temp1 = 0.0; - temp2 = mfexp(-0.2); // cannot use natM or Z because growth is calculated first - temp3 = L_inf(gp) - current_size; // delta between linf and the size at nages - // frac_ages = age/nages, so is fraction of a lifetime - temp4 = 1.0; - for (a = 0; a <= nages; a++) - { - temp += temp4 * (current_size + frac_ages(a) * temp3); // so grows linearly from size at nages to size at nages+nages - temp1 += temp4; // accumulate numbers to create denominator for mean size calculation - temp4 *= temp2; // decay numbers at age by exp(-0.2) - } - Ave_Size(styr, 1, g, nages) = temp / temp1; // this is weighted mean size at nages - } - else - { - // no adjustment - } - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " adjusted size at maxage " << Ave_Size(styr, 1, g, nages) << " using decay of: " << Linf_decay << endl; - #endif - } // end initial year calcs - - // SS_Label_Info_16.2.4.2 #loop seasons for growth calculation - for (s = 1; s <= nseas; s++) - { - t = t_base + s; - ALK_idx = s * N_subseas; // last subseas of season; so checks to see if still in linear phase at end of this season - if (s == nseas) - { - ALK_idx2 = 1; // first subseas of next year - } - else - { - ALK_idx2 = s * N_subseas + 1; // for the beginning of first subseas of next season - } - if (s == nseas) - add_age = 1; - else - add_age = 0; // advance age or not - // growth to next season - VBK_temp2 = (mfexp(VBK_temp * seasdur(s) * VBK_seas(s)) - 1.0); - // warning< 0 && t2 > -1.) - { - join1 = 1.0 / (1.0 + mfexp(-(50. * t2 / (1.0 + fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function - t2 *= (1. - join1); // trap to prevent decrease in size-at-age - } - - // SS_Label_info_16.2.4.2.1.1 #calc size at end of the season, which will be size at begin of next season using current seasons growth parms - // with k2 adding an age if at the end of the year - if ((a < nages || s < nseas)) - Ave_Size(t + 1, 1, g, k2) = Ave_Size(t, 1, g, a) + VBK_temp2 * t2 * Cohort_Growth(y, a); - if (a == nages && s == nseas) - { - plusgroupsize = Ave_Size(t, 1, g, nages) + VBK_temp2 * t2 * Cohort_Growth(y, nages); - } - } - else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season - { - Ave_Size(t + 1, 1, g, k2) = Cohort_Lmin(gp, y, a) + (Cohort_Lmin(gp, y, a) - L_inf(gp)) * (mfexp(VBK_temp * (real_age(g, ALK_idx2, k2) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); - } - else // in linear phase - { - Ave_Size(t + 1, 1, g, k2) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); - } - // if(y==1990 && g==1) warning< 0 && t2 > -1.) - { - join1 = 1.0 / (1.0 + mfexp(-(50. * t2 / (1.0 + fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function - t2 *= (1. - join1); // trap to prevent decrease in size-at-age - } - - // SS_Label_info_16.2.4.2.1.1 #calc size at end of the season, which will be size at begin of next season using current seasons growth parms - // with k2 adding an age if at the end of the year - if ((a < nages || s < nseas)) - Ave_Size(t + 1, 1, g, k2) = Ave_Size(t, 1, g, a) + (mfexp(VBK(gp, a) * seasdur(s) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, a); - if (a == nages && s == nseas) - plusgroupsize = Ave_Size(t, 1, g, nages) + (mfexp(VBK(gp, nages) * seasdur(s) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, nages); - } - else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season - { - Ave_Size(t + 1, 1, g, k2) = Cohort_Lmin(gp, y, a) + (Cohort_Lmin(gp, y, a) - L_inf(gp)) * (mfexp(VBK(gp, a) * (real_age(g, ALK_idx2, k2) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); - } - else // in linear phase - { - Ave_Size(t + 1, 1, g, a) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); - } - } // done ageloop - break; - } - } - - // SS_Label_Info_16.2.4.2.1.2 #after age loop, if(s=nseas) get weighted average for size_at_maxage from carryover fish and fish newly moving into this age - // this code needs to execute every year, so need to move to ss_popdyn. Positioned here, it is only updated in years in which growth changes - if (s == nseas) - { - if (y > styr && Linf_decay != -998.) - { - -// 3.24 code - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " plus group calc: " - << " N _entering: " << natage(t, 1, g, nages - 1) << " N_inplus: " << natage(t, 1, g, nages) << " size in: " << Ave_Size(t + 1, 1, g, nages) << " old size: " << plusgroupsize << " "; - #endif - temp = ((natage(t, 1, g, nages - 1) + 0.01) * Ave_Size(t + 1, 1, g, nages) + (natage(t, 1, g, nages) + 0.01) * plusgroupsize) / (natage(t, 1, g, nages - 1) + natage(t, 1, g, nages) + 0.02); - Ave_Size(t + 1, 1, g, nages) = temp; - #ifdef DO_ONCE - if (do_once == 1 && g == 1) - echoinput << " final_val " << Ave_Size(t + 1, 1, g, nages) << endl; - #endif - // early 3.30 code - // temp4= square(natage(t,1,g,nages-1)+0.00000001)/(natage(t-1,1,g,nages-2)+0.00000001); - // temp=temp4*Ave_Size(t+1,1,g,nages)+(natage(t,1,g,nages)-temp4+0.00000001)*plusgroupsize; - // if(do_once==1&&g==1) echoinput<0) - } // end loop of settlements - Ip += N_M_Grow_parms; - } // end loop of growth patterns, gp - } // end do growth - -// ******************************************************************************************************* -// SS_Label_Function_16.5 #get_growth3 which calculates mean size-at-age for selected subseason -FUNCTION void get_growth3(const int y, const int t, const int s, const int subseas) - { - // progress mean growth through time series, accounting for seasonality and possible change in parameters - // get mean size at the beginning and end of the season - dvariable LinfR; - dvariable LminR; - dvariable inv_Richards; - dvariable t50; - dvariable VBK_temp2; - - ALK_idx = (s - 1) * N_subseas + subseas; // note that this changes a global value - for (g = g_Start(1) + N_platoon; g <= gmorph; g += N_platoon) // looping the middle platoons for each sex*gp - { - if (use_morph(g) > 0) - { - gp = GP(g); - switch (Grow_type) - { - case 1: // regular von B - { - for (a = 0; a <= nages; a++) - { - // SS_Label_Info_16.5.1 #calc subseas size-at-age from begin season size-at-age, accounting for transition from linear to von Bert as necessary - // subseasdur is cumulative time to start of this subseas - if (lin_grow(g, ALK_idx, a) == -2.0) // so doing growth curve - { - t2 = Ave_Size(t, 1, g, a) - L_inf(gp); // remaining growth potential from first subseas - // the constant in join needs to be at least 30 to get rapid transition - // the consequence of (t2>-1.) should be investigated for effect on gradient - if (timevary_MG(y, 2) > 0 && t2 > -1.) - { - join1 = 1.0 / (1.0 + mfexp(-(50. * t2 / (1.0 + fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function - t2 *= (1. - join1); // trap to prevent decrease in size-at-age - } - Ave_Size(t, subseas, g, a) = Ave_Size(t, 1, g, a) + (mfexp(VBK(gp, 0) * subseasdur(s, subseas) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, a); - } - else if (lin_grow(g, ALK_idx, a) >= 0.0) // in linear phase for subseas - { - Ave_Size(t, subseas, g, a) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); - } - // NOTE: there is no seasonal interpolation, age-specific K uses calendar age, not real age. Maybe someday.... - else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season - { - Ave_Size(t, subseas, g, a) = Cohort_Lmin(gp, y, a) + (Cohort_Lmin(gp, y, a) - L_inf(gp)) * (mfexp(VBK(gp, 0) * (real_age(g, ALK_idx, a) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); - } - } - break; - } - case 2: // Richards - { - LinfR = pow(L_inf(gp), Richards(gp)); - LminR = pow(Lmin(gp), Richards(gp)); - inv_Richards = 1.0 / Richards(gp); - // uses VBK(nages) because age-specific K not allowed - // and Cohort_Lmin has already had the power function applied - for (a = 0; a <= nages; a++) - { - if (lin_grow(g, ALK_idx, a) == -2.0) // so doing growth curve - { - temp = pow(Ave_Size(t, 1, g, a), Richards(gp)); - t2 = temp - LinfR; // remaining growth potential - // disable the shrinkage trap because Richard's parameter could be negative - // join1=1.0/(1.0+mfexp(-(50.*t2/(1.0+fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function - // t2*=(1.-join1); // trap to prevent decrease in size-at-age - temp += (mfexp(VBK(gp, 0) * subseasdur(s, subseas) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, a); - Ave_Size(t, subseas, g, a) = pow(temp, inv_Richards); - } - else if (lin_grow(g, ALK_idx, a) >= 0.0) // in linear phase for subseas - { - Ave_Size(t, subseas, g, a) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); - } - else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season - { - // temp=Cohort_Lmin(gp,y,a) + (Cohort_Lmin(gp,y,a)-LinfR)* - temp = LminR + (LminR - LinfR) * (mfexp(VBK(gp, 0) * (real_age(g, ALK_idx, a) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); - Ave_Size(t, subseas, g, a) = pow(temp, inv_Richards); - } - } // done ageloop - break; - } // done Richards - case 8: // Cessation - { - // VBK_temp2=-VBK_temp*seasdur(s); // negative to restore positive - // t50 is the calculated inflection age for the decline in K - dvariable VBK_temp = -VBK(gp, 0); - t50 = log(exp((L_inf(gp) - Lmin(gp)) * Richards(gp) / (VBK_temp)) - 1.0) / Richards(gp); - for (a = 0; a <= nages; a++) - { - // calculate a full year's growth increment, then multiple by seasdur(s) - Ave_Size(t, subseas, g, a) = Ave_Size(t, 1, g, a) + - (VBK_temp - (VBK_temp / Richards(gp)) * (log(exp(Richards(gp) * (real_age(g, ALK_idx, a) + 1 - t50)) + 1) - log(exp(Richards(gp) * (real_age(g, ALK_idx, a) - t50)) + 1))) * subseasdur(s, subseas); - } // done ageloop - break; - } - case 5: // von B with age-specific K - { - } - case 4: // von B with age-specific K - { - } - case 3: // von B with age-specific K - { - for (a = 0; a <= nages; a++) - { - // SS_Label_Info_16.5.1 #calc subseas size-at-age from begin season size-at-age, accounting for transition from linear to von Bert as necessary - // subseasdur is cumulative time to start of this subseas - if (lin_grow(g, ALK_idx, a) == -2.0) // so doing growth curve - { - t2 = Ave_Size(t, 1, g, a) - L_inf(gp); // remaining growth potential from first subseas - // the constant in join needs to be at least 30 to get rapid transition - // the consequence of (t2>-1.) should be investigated for effect on gradient - if (timevary_MG(y, 2) > 0 && t2 > -1.) - { - join1 = 1.0 / (1.0 + mfexp(-(50. * t2 / (1.0 + fabs(t2))))); // note the logit transform is not perfect, so growth near Linf will not be exactly same as with native growth function - t2 *= (1. - join1); // trap to prevent decrease in size-at-age - } - Ave_Size(t, subseas, g, a) = Ave_Size(t, 1, g, a) + (mfexp(VBK(gp, a) * subseasdur(s, subseas) * VBK_seas(s)) - 1.0) * t2 * Cohort_Growth(y, a); - } - else if (lin_grow(g, ALK_idx, a) >= 0.0) // in linear phase for subseas - { - Ave_Size(t, subseas, g, a) = len_bins(1) + lin_grow(g, ALK_idx, a) * (Cohort_Lmin(gp, y, a) - len_bins(1)); - } - // NOTE: there is no seasonal interpolation, age-specific K uses calendar age, not real age. Maybe someday.... - else if (lin_grow(g, ALK_idx, a) == -1.0) // first time point beyond AFIX; lin_grow will stay at -1 for all remaining subseas of this season - { - Ave_Size(t, subseas, g, a) = Cohort_Lmin(gp, y, a) + (Cohort_Lmin(gp, y, a) - L_inf(gp)) * (mfexp(VBK(gp, a) * (real_age(g, ALK_idx, a) - AFIX) * VBK_seas(s)) - 1.0) * Cohort_Growth(y, a); - } - } - break; - } - } // done switch - } // end need this platoon - } // done platoon - } // end calc size-at-age at a particular subseason - -FUNCTION void get_natmort() - { - // SS_Label_Function #17 get_natmort for all seasons given this year's parameters - dvariable Loren_M1; - dvariable Loren_temp; - dvariable Loren_temp2; - dvariable Maunder_Mjuv; - dvariable Maunder_lambda; - dvariable Maunder_Lmat; - dvariable Maunder_Mmat; - dvariable Maunder_beta; - dvariable Maunder_L50; - dvar_vector XX_mature(0, nages); - dvariable t_age; - int gpi; - int Do_AveAge; - int K_index; - K_index = VBK(1).indexmax(); - Do_AveAge = 0; - t_base = styr + (yz - styr) * nseas - 1; // so looping s=1 to nseas; t=t_base + s - Ip = -N_M_Grow_parms; // start counter for MGparms - // SS_Label_Info_17.1 #loop growth patterns in each gender - gp = 0; - for (gg = 1; gg <= gender; gg++) - for (GPat = 1; GPat <= N_GP; GPat++) - { - gp++; - Ip = MGparm_point(gg, GPat) - 1; - if (N_natMparms > 0) - { - // SS_Label_Info_17.1.1 #Copy parameter values from mgp_adj to natMparms(gp), doing direct or offset for gp>1 - for (j = 1; j <= N_natMparms; j++) - { - natMparms(j, gp) = mgp_adj(Ip + j); - } - switch (MGparm_def) // switch for natmort parms - { - case 1: // direct - { - for (j = 1; j <= N_natMparms; j++) - { - if (natMparms(j, gp) < 0) - natMparms(j, gp) = natMparms(j, 1); - } - break; - } - case 2: // offset - { - if (gp > 1) - { - for (j = 1; j <= N_natMparms; j++) - { - natMparms(j, gp) = natMparms(j, 1) * mfexp(natMparms(j, gp)); - } - } - break; - } - case 3: // offset like SS2 V1.23 - { - if (gp > 1) - natMparms(1, gp) = natMparms(1, 1) * mfexp(natMparms(1, gp)); - if (N_natMparms > 1) - { - for (j = 2; j <= N_natMparms; j++) - { - natMparms(j, gp) = natMparms(j - 1, gp) * mfexp(natMparms(j, gp)); - } - } - break; - } - } // end switch - } // end have natmort parms - - g = g_Start(gp); // base platoon - for (settle = 1; settle <= N_settle_timings; settle++) - { - // SS_Label_Info_17.1.2 #loop settlements - g += N_platoon; - gpi = GP3(g); // GP*gender*settlement - if (use_morph(g) > 0) - { - switch (natM_type) - { - // SS_Label_Info_17.1.2.0 #case 0: constant M - case 0: // constant M - { - for (s = 1; s <= nseas; s++) - { - natM(t_base + s, 0, gpi) = natMparms(1, gp); - } - break; - } - - // SS_Label_Info_17.1.2.1 #case 1: N breakpoints - case 1: // breakpoints - { - dvariable natM_A; - dvariable natM_B; - for (s = 1; s <= nseas; s++) - { - if (s >= Bseas(g)) - { - a = 0; - t_age = azero_seas(s) - azero_G(g); - } - else - { - a = 1; - t_age = 1.0 + azero_seas(s) - azero_G(g); - } - natM_amax = NatM_break(1); - natM_B = natMparms(1, gp); - k = a; - - for (loop = 1; loop <= N_natMparms + 1; loop++) - { - natM_amin = natM_amax; - natM_A = natM_B; - if (loop <= N_natMparms) - { - natM_amax = NatM_break(loop); - natM_B = natMparms(loop, gp); - } - else - { - natM_amax = r_ages(nages) + 1.; - } - if (natM_amax > natM_amin) - { - temp = (natM_B - natM_A) / (natM_amax - natM_amin); - } // calc the slope - else - { - temp = 0.0; - } - while (t_age < natM_amax && a <= nages) - { - natM(t_base + s, 0, gpi, a) = natM_A + (t_age - natM_amin) * temp; - t_age += 1.0; - a++; - } - } - if (k == 1) - natM(t_base + s, 0, gpi, 0) = natM(t_base + s, 0, gpi, 1); - } // end season - break; - } // end natM_type==1 - - // SS_Label_Info_17.1.2.2 #case 2: lorenzen M - case 2: // Lorenzen M - { - Loren_temp2 = L_inf(gp) * (mfexp(-VBK(gp, K_index) * VBK_seas(0)) - 1.); // need to verify use of VBK_seas here - Loren_temp = Ave_Size(styr, mid_subseas, g, int(natM_amin)); // uses mean size in middle of season 1 for the reference age - Loren_M1 = natMparms(1, gp) / log(Loren_temp / (Loren_temp + Loren_temp2)); - for (s = nseas; s >= 1; s--) - { - int Loren_t = styr + (yz - styr) * nseas + s - 1; - natM(t_base + s, 0, gpi)(0, nages) = log( - elem_div(Ave_Size(Loren_t, mid_subseas, g)(0, nages), (Ave_Size(Loren_t, mid_subseas, g)(0, nages) + Loren_temp2))) * - Loren_M1; - if (s < Bseas(g)) - {natM(t_base + s, 0, gpi, 0) = natM(t_base + s + 1, 0, gpi, 0);} - } - break; - } - - // SS_Label_Info_17.1.2.3 #case 3: set to empirical M as read from file, no seasonal interpolation - case (3): // read age_natmort as constant - { - for (s = 1; s <= nseas; s++) - { - natM(t_base + s, 0, gpi) = Age_NatMort(gp); - } - break; - } - - // SS_Label_Info_17.1.2.4 #case 4: read age_natmort as constant and interpolate to seasonal real age - case (4): - { - for (s = 1; s <= nseas; s++) - { - if (s >= Bseas(g)) - { - k = 0; - t_age = azero_seas(s) - azero_G(g); - for (a = k; a <= nages - 1; a++) - { - natM(t_base + s, 0, gpi, a) = Age_NatMort(gp, a) + t_age * (Age_NatMort(gp, a + 1) - Age_NatMort(gp, a)); - } // end age - } - else - { - k = 1; - t_age = azero_seas(s) + (1. - azero_G(g)); - for (a = k; a <= nages - 1; a++) - { - natM(t_base + s, 0, gpi, a) = Age_NatMort(gp, a) + t_age * (Age_NatMort(gp, a + 1) - Age_NatMort(gp, a)); - } // end age - natM(t_base + s, 0, gpi, 0) = natM(t_base + s, 0, gpi, 1); - } - natM(t_base + s, 0, gpi, nages) = Age_NatMort(gp, nages); - } // end season - break; - } - // SS_Label_Info_17.1.2.5 #case 5: age and gender specific M linked to maturity (developed by Mark Maunder and contributed to the SS project in Feb 2021). - case 5: - { - Maunder_Mjuv = natMparms(1, gp); // - Maunder_lambda = natMparms(2, gp); // - Maunder_Lmat = natMparms(3, gp); // constant for juvenile mort - Maunder_Mmat = natMparms(4, gp); // - if (natM_5_opt <= 2) - { //use the SS mat50% and mat_slope parameters - Maunder_L50 = wtlen_p(GPat, 3); //mat50% - Maunder_beta = wtlen_p(GPat, 4); //slope - // XX_mature=make_mature_numbers(gpi); // will be same for all seasons THIS LINE SEEMS UNNECESSARY - } - else if (natM_5_opt == 3) - { //use two new parameters mat50% and mat_slope, which can be Gpat and sex specific. - Maunder_L50 = natMparms(5, gp); - Maunder_beta = natMparms(6, gp); - } - for (s = 1; s <= nseas; s++) - { - t = t_base + s; - // using the most recent spawn season's age-maturity for females, unless doing option 3 here - // this code uses the length maturity parameters for females, and the ave_size for the current sex in the current season - XX_mature.initialize(); - XX_mature(First_Mature_Age, nages) = 1. / (1. + mfexp(Maunder_beta * (Ave_Size(t, mid_subseas, g)(First_Mature_Age, nages) - Maunder_L50))); - { - // original equation had: - // natM(t_base + s,gpi,a) = Maunder_Mjuv*pow(Ave_Size(t,ALK_idx,g,a)/Maunder_Lmat,Maunder_lambda) + - // (Maunder_Mmat-Maunder_Mjuv*pow(Ave_Size(t,ALK_idx,g,a)/Maunder_Lmat,Maunder_lambda))*XXmaturity_Fem(a)XX; - natM(t_base + s, 0, gpi) = Maunder_Mjuv * pow((Ave_Size(t, mid_subseas, g) / Maunder_Lmat), Maunder_lambda); - natM(t_base + s, 0, gpi) += elem_prod((Maunder_Mmat - natM(t_base + s, 0, gpi)), XX_mature); - } - if (do_once == 1) - { - echoinput << " seas " << s << " sex*GP " << gpi << endl - << "M_juv: " << Maunder_Mjuv << "; M_mat: " << Maunder_Mmat << "; lambda: " << Maunder_lambda << endl; - echoinput << " L50 " << Maunder_L50 << " beta " << Maunder_beta << " Len_mat " << Maunder_Lmat << endl; - echoinput << "Age_mature_for_Maunder_M: " << XX_mature << endl; - echoinput << "avesize " << Ave_Size(t, mid_subseas, g) << endl; - echoinput << "avesize/Lmat " << Ave_Size(t, mid_subseas, g) / Maunder_Lmat << endl; - echoinput << " natM_juv: " << Maunder_Mjuv * pow((Ave_Size(t, mid_subseas, g) / Maunder_Lmat), Maunder_lambda) << endl; - echoinput << " natM_mat: " << (Maunder_Mmat)*XX_mature << endl; - echoinput << " natM_combined: " << natM(t_base + s, 0, gpi) << endl; - } - } - break; - } - // SS_Label_Info_17.1.2.6 #case 6: Calculate lorenzen M from survivorship over fixed age range - case 6: // Survivorship based Lorenzen M - { - Loren_temp2 = L_inf(gp) * (mfexp(-VBK(gp, K_index) * VBK_seas(0)) - 1.); // need to verify use of VBK_seas here - Loren_M1 = (natMparms(1, gp)); //This is the user specified average M over the input range of ages. - for (s = nseas ; s >= 1; s--) - { - int Loren_t = styr + (yz - styr) * nseas + s - 1; - dvariable loren_scale_extra = 0; //start with no extra scaler. This will be used if the maximum reference age is greater than nages. - int ref_age = int(natM_amax); //start with reference age equal to the input maximum age. This will be adjusted below to equal nages if the maximum age is greater than nages. - if (ref_age > nages)//if reference age is greater than accumulator age need math to approximate the unknown size/age bins - { - int extra_years = ref_age - nages;//determine how many extra ages will be included between accumulator age and reference age - - //The following code is a simple difference approach to approximate the first and second rate of change in relative M to estimate approximate M for ages older than nages - //calculate proportional change in lorenzen M between second to last and last age group - dvariable d1 = 1 + (log((Ave_Size(Loren_t, mid_subseas, g)(nages)) / (Ave_Size(Loren_t, mid_subseas, g)(nages) + Loren_temp2)) - - log((Ave_Size(Loren_t, mid_subseas, g)(nages - 1)) / (Ave_Size(Loren_t, mid_subseas, g)(nages-1) + Loren_temp2))) / - log((Ave_Size(Loren_t, mid_subseas, g)(nages)) / (Ave_Size(Loren_t, mid_subseas, g)(nages) + Loren_temp2)); - - //calculate proportional change in lorenzen M between third to last and second to last age group - dvariable d2 = 1 + (log((Ave_Size(Loren_t, mid_subseas, g)(nages - 1))/(Ave_Size(Loren_t, mid_subseas, g)(nages - 1) + Loren_temp2)) - - log((Ave_Size(Loren_t, mid_subseas, g)(nages - 2)) / (Ave_Size(Loren_t, mid_subseas, g)(nages - 2) + Loren_temp2))) / - log((Ave_Size(Loren_t, mid_subseas, g)(nages - 1)) / (Ave_Size(Loren_t, mid_subseas, g)(nages - 1) + Loren_temp2)); - - //calculate the second order proportional change in proportional changes during the last two age pairs - dvariable d3 = 1 + (d1 - d2) / d1; - - //project total proportion of last years M that will occur in all ages older than nages - for (int ey = 1; ey <= extra_years; ey++) - { - d1 = d1 * d3;//each year adjust the first order proportion by the second order proportion - loren_scale_extra += d1;//add that proportion to a scaler that will be multiplied by the nages M value - } - ref_age = nages; //set reference age to nages to use all available Ave_Size values - } - - //Calculate loren_temp multiplier that achieves target average M - Loren_temp = (Loren_M1 * (natM_amax - natM_amin + 1)) / (sum(log( - elem_div(Ave_Size(Loren_t, mid_subseas, g)(natM_amin, ref_age), (Ave_Size(Loren_t, mid_subseas, g)(natM_amin, ref_age) + Loren_temp2)) - )) + loren_scale_extra * log((Ave_Size(Loren_t, mid_subseas, g)(ref_age)) / (Ave_Size(Loren_t, mid_subseas, g)(ref_age) + Loren_temp2))); - - natM(t_base + s, 0, gpi)(0, nages) = log( - elem_div(Ave_Size(Loren_t, mid_subseas, g)(0, nages), - (Ave_Size(Loren_t, mid_subseas, g)(0, nages) + Loren_temp2))) - * Loren_temp; - if (s < Bseas(g)) - { - natM(t_base + s, 0, gpi, 0) = natM(t_base + s + 1, 0, gpi, 0); - } - } - break; - } - } // end natM_type switch - - // SS_Label_Info_17.2 #calc an ave_age for the first gp as a scaling factor in logL for initial recruitment (R1) deviation - if (Do_AveAge == 0) - { - Do_AveAge = 1; - ave_age = 1.0 / natM(t_base+1, 0, gpi, nages / 2) - 0.5; - } - - #ifdef DO_ONCE - if (do_once == 1) - { - for (s = 1; s <= nseas; s++) - echoinput << "Natmort seas:" << s << " sex:" << gg << " Gpat:" << GPat << " sex*Gpat:" << gp << " settlement:" << settle << " gpi:" << gpi << endl - << " M: " << natM(t_base + s, 0, gpi) << endl; - } - #endif - } // end use of this morph - } // end settlement - } // end growth pattern x gender loop - for (s = 1; s <= nseas; s++) - for (p = 1; p <= pop; p++) - { - natM(t_base + s, p) = natM(t_base + s, 0); // copy M1 to eack area's M; - // p=0 holds that M1 as the base M with no predators - // pred_M2 will be added later on area-specific basis - } - } // end nat mort - -FUNCTION void get_recr_distribution() - { - /* SS_Label_Function_18 #get_recr_distribution among areas and morphs */ - - // SS_Label_Info_18.15 #get fraction female - // fracfemale_mult is not used to distribute recruits; it is a multiplier used in the SSB calc and has default value of 1, and value of femfrac if requested in 1 sex setup - if (frac_female_pointer > 0) - { - Ip = frac_female_pointer - 1; - for (gp = 1; gp <= N_GP; gp++) - { - femfrac(gp) = mgp_adj(Ip + gp); - if (gender == 2) - femfrac(N_GP + gp) = 1.0 - femfrac(gp); - } - } - else - { - femfrac(1, N_GP) = fracfemale; - if (gender == 2) - femfrac(N_GP, 2 * N_GP) = 1.0 - fracfemale; - } - if (gender_rd == -1) - { - fracfemale_mult = value(femfrac(1)); - } - - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " femfrac " << femfrac << endl; - #endif - if (finish_starter == 999) - { - k = MGP_CGD - recr_dist_parms + nseas; - } - else - { - k = MGP_CGD - recr_dist_parms; - } - dvar_vector recr_dist_parm(1, k); - - // recr_dist.initialize(); - // SS_Label_Info_18.1 #set rec_dist_parms = exp(mgp_adj) for this year - Ip = recr_dist_parms - 1; - for (f = 1; f <= MGP_CGD - recr_dist_parms; f++) - { - recr_dist_parm(f) = mfexp(mgp_adj(Ip + f)); - } - // SS_Label_Info_18.2 #loop gp * settlements * area and multiply together the recr_dist_parm values - switch (recr_dist_method) - { - - case 2: - { - for (gp = 1; gp <= N_GP; gp++) - for (settle = 1; settle <= N_settle_timings; settle++) - for (p = 1; p <= pop; p++) - if (recr_dist_pattern(gp, settle, p) > 0) - { - recr_dist(y, gp, settle, p) = femfrac(gp) * recr_dist_parm(gp) * recr_dist_parm(N_GP + p) * recr_dist_parm(N_GP + pop + settle); - if (gender == 2) - recr_dist(y, gp + N_GP, settle, p) = femfrac(gp + N_GP) * recr_dist_parm(gp) * recr_dist_parm(N_GP + p) * recr_dist_parm(N_GP + pop + settle); //males - } - // SS_Label_Info_18.3 #if recr_dist_interaction is chosen, then multiply these in also - if (recr_dist_inx == 1) - { - f = N_GP + pop + N_settle_timings; - for (gp = 1; gp <= N_GP; gp++) - for (settle = 1; settle <= N_settle_timings; settle++) - for (p = 1; p <= pop; p++) - { - f++; - if (recr_dist_pattern(gp, settle, p) > 0) - { - recr_dist(y, gp, settle, p) *= recr_dist_parm(f); - if (gender == 2) - recr_dist(y, gp + N_GP, settle, p) *= recr_dist_parm(f); - } - } - } - break; - } - case 3: - { - for (settle = 1; settle <= N_settle_assignments; settle++) - { - gp = settlement_pattern_rd(settle, 1); - settle_time = settle_assignments_timing(settle); - p = settlement_pattern_rd(settle, 3); - recr_dist(y, gp, settle_time, p) = femfrac(gp) * recr_dist_parm(settle); - if (gender == 2) - recr_dist(y, gp + N_GP, settle_time, p) = femfrac(gp + N_GP) * recr_dist_parm(settle); //males - } - break; - } - case 4: - { - recr_dist(y, 1, 1, 1) = femfrac(1); - if (gender == 2) - recr_dist(y, 2, 1, 1) = femfrac(2); - break; - } - case 1: // only used for sstrans - { - for (gp = 1; gp <= N_GP; gp++) - for (p = 1; p <= pop; p++) - for (s = 1; s <= N_settle_timings; s++) - { - if (recr_dist_pattern(gp, s, p) > 0) - { - recr_dist(y, gp, s, p) = femfrac(gp) * recr_dist_parm(gp) * recr_dist_parm(N_GP + p) * recr_dist_parm(N_GP + pop + s); - if (gender == 2) - recr_dist(y, gp + N_GP, s, p) = femfrac(gp + N_GP) * recr_dist_parm(gp) * recr_dist_parm(N_GP + p) * recr_dist_parm(N_GP + pop + s); //males - } - } - // SS_Label_Info_18.3 #if recr_dist_interaction is chosen, then multiply these in also - if (recr_dist_inx == 1) - { - f = N_GP + nseas + pop; - for (gp = 1; gp <= N_GP; gp++) - for (p = 1; p <= pop; p++) - for (s = 1; s <= N_settle_timings; s++) - { - f++; - if (recr_dist_pattern(gp, s, p) > 0) - { - recr_dist(y, gp, s, p) *= recr_dist_parm(f); - if (gender == 2) - recr_dist(y, gp + N_GP, s, p) *= recr_dist_parm(f); - } - } - } - break; - } - } - // SS_Label_Info_18.4 #scale the recr_dist matrix to sum to 1.0 - recr_dist(y) /= sum(recr_dist(y)); - if (y < YrMax) - { - k = y + 1; - while (timevary_MG(k, 4) == 0 && k <= YrMax) - { - recr_dist(k) = recr_dist(k - 1); - k++; - } - } -// if(y==styr) -// {for(int yz=styr+1; yz<=YrMax;yz++) recr_dist(yz)=recr_dist(styr);} - - #ifdef DO_ONCE - if (do_once == 1) - { - echoinput << "recruitment distribution in year: " << y << endl - << "GP Seas Area Use? female_recr_dist" << endl; - for (gp = 1; gp <= N_GP; gp++) - for (s = 1; s <= N_settle_timings; s++) - for (p = 1; p <= pop; p++) - { - echoinput << gp << " " << s << " " << p << " " << recr_dist_pattern(gp, s, p) << " " << recr_dist(y, gp, s, p); - echoinput << endl; - } - } - #endif - } - -//******************************************************************* - /* SS_Label_Function 19 get_wtlen, maturity, fecundity, hermaphroditism */ -FUNCTION void get_wtlen() - { - // SS_Label_Info_19.1 #set wtlen and maturity/fecundity factors equal to annual values from mgp_adj - gp = 0; - for (gg = 1; gg <= gender; gg++) - for (GPat = 1; GPat <= N_GP; GPat++) - { - gp++; - - for (s = 1; s <= nseas; s++) - { - // SS_Label_Info_19.2 #loop seasons for wt-len calc - t = styr + (y - styr) * nseas + s - 1; - // SS_Label_Info_19.2.1 #calc wt_at_length for each season to include seasonal effects on wtlen - - // NOTES wt_len is by gp, but wt_len2 and wt_len_low have males stacked after females - // so referenced by GPat - - if (gg == 1) - { - if (MGparm_seas_effects(1) > 0 || MGparm_seas_effects(2) > 0) // get seasonal effect on FEMALE wtlen parameters - { - wt_len(s, gp) = (wtlen_p(GPat, 1) * wtlen_seas(s, GPat, 1)) * pow(len_bins_m(1, nlength), (wtlen_p(GPat, 2) * wtlen_seas(s, GPat, 2))); - wt_len_low(s, GPat)(1, nlength) = (wtlen_p(GPat, 1) * wtlen_seas(s, GPat, 1)) * pow(len_bins2(1, nlength), (wtlen_p(GPat, 2) * wtlen_seas(s, GPat, 2))); - } - else - { - wt_len(s, gp) = wtlen_p(GPat, 1) * pow(len_bins_m(1, nlength), wtlen_p(GPat, 2)); - wt_len_low(s, GPat)(1, nlength) = wtlen_p(GPat, 1) * pow(len_bins2(1, nlength), wtlen_p(GPat, 2)); - } - wt_len2(s, GPat)(1, nlength) = wt_len(s, gp)(1, nlength); - } - // SS_Label_Info_19.2.2 #calculate male weight_at_length - else - { - if (MGparm_seas_effects(7) > 0 || MGparm_seas_effects(8) > 0) // get seasonal effect on male wt-len parameters - { - wt_len(s, gp) = (wtlen_p(GPat, 7) * wtlen_seas(s, GPat, 7)) * pow(len_bins_m(1, nlength), (wtlen_p(GPat, 8) * wtlen_seas(s, GPat, 8))); - wt_len_low(s, GPat)(nlength1, nlength2) = (wtlen_p(GPat, 7) * wtlen_seas(s, GPat, 7)) * pow(len_bins2(nlength1, nlength2), (wtlen_p(GPat, 8) * wtlen_seas(s, GPat, 8))); - } - else - { - wt_len(s, gp) = wtlen_p(GPat, 7) * pow(len_bins_m(1, nlength), wtlen_p(GPat, 8)); - wt_len_low(s, GPat)(nlength1, nlength2) = wtlen_p(GPat, 7) * pow(len_bins2(nlength1, nlength2), wtlen_p(GPat, 8)); - } - wt_len2(s, GPat)(nlength1, nlength2) = wt_len(s, gp).shift(nlength1); - wt_len(s, gp).shift(1); - } - - // SS_Label_Info_19.2.3 #calculate first diff of wt_len for use in generalized sizp comp bin calculations - if (gg == gender) - { - wt_len2_sq(s, GPat) = elem_prod(wt_len2(s, GPat), wt_len2(s, GPat)); - wt_len_fd(s, GPat) = first_difference(wt_len_low(s, GPat)); - if (gender == 2) - wt_len_fd(s, GPat, nlength) = wt_len_fd(s, GPat, nlength - 1); - #ifdef DO_ONCE - if (do_once == 1) - echoinput << "wtlen2 " << endl - << wt_len2 << endl - << "wtlen2^2 " << wt_len2_sq << endl - << "wtlen2:firstdiff " << wt_len_fd << endl; - #endif - } - } - } - } -FUNCTION void get_mat_fec(); - { - // SS_Label_Info_19.2.4 #calculate maturity and fecundity if seas = spawn_seas - // these calculations are done in spawn_seas, but are not affected by spawn_time within that season - // so age-specific inputs will assume to be at correct timing already; size-specific will later be adjusted to use size-at-age at the exact correct spawn_time_seas - // SPAWN-RECR: calculate maturity and fecundity vectors - - make_mature_numbers.initialize(); - int s = spawn_seas; // makes a local version of "s" as this gets called inside a "s" loop - int ALK_idx = (spawn_seas - 1) * N_subseas + spawn_subseas; - - for (g = 1; g <= gmorph; g++) - if (sx(g) == 1 && use_morph(g) > 0) - { - GPat = GP4(g); - gg = sx(g); - gp = GPat; // - if (WTage_rd == 1) - { - fec(g) = Wt_Age_t(t, -2, g); - make_mature_numbers(g)(First_Mature_Age, nages) = 1.0; - // all other vectors set to contant value of 0.5 - } - else - { - if (do_fec_len == 1) - { - // make fecundity from biology - - if (do_once == 1) - echoinput << "fecundity option: " << Fecund_Option << " parms: " << wtlen_p(GPat)(5, 6) << endl; - // fec_len should only get calculated in maturity option = 1, 2, 3, or 6 - // maturity option 4 and 5 bypass maturity and read empirical fecundity-at-age - - switch (Fecund_Option) - { - case 1: // as eggs/kg (SS original configuration) - { - fec_len(gp) = wtlen_p(GPat, 5) + wtlen_p(GPat, 6) * wt_len(s, gp); - fec_len(gp) = elem_prod(wt_len(s, gp), fec_len(gp)); - break; - } - case 2: - { // as eggs = f(length) - fec_len(gp) = wtlen_p(GPat, 5) * pow(len_bins_m, wtlen_p(GPat, 6)); - break; - } - case 3: - { // as eggs = f(body weight) - fec_len(gp) = wtlen_p(GPat, 5) * pow(wt_len(s, gp), wtlen_p(GPat, 6)); - break; - } - case 4: - { // as eggs = a + b*Len - fec_len(gp) = wtlen_p(GPat, 5) + wtlen_p(GPat, 6) * len_bins_m; - if (wtlen_p(GPat, 5) < 0.0) - { - z = 1; - while (fec_len(gp, z) < 0.0) - { - fec_len(gp, z) = 0.0; - z++; - } - } - break; - } - case 5: - { // as eggs = a + b*Wt - fec_len(gp) = wtlen_p(GPat, 5) + wtlen_p(GPat, 6) * wt_len(s, gp); - if (wtlen_p(GPat, 5) < 0.0) - { - z = 1; - while (fec_len(gp, z) < 0.0) - { - fec_len(gp, z) = 0.0; - z++; - } - } - break; - } - } - } - if (do_once == 1) - echoinput << "maturity option: " << Maturity_Option << " parms: " << wtlen_p(GPat)(3, 4) << endl; - - switch (Maturity_Option) - { - case 1: // Maturity_Option=1 length logistic - { - mat_len(GPat) = 1. / (1. + mfexp(wtlen_p(GPat, 4) * (len_bins_m(1, nlength) - wtlen_p(GPat, 3)))); - mat_fec_len(gp) = elem_prod(mat_len(gp), fec_len(gp)); - make_mature_numbers(g)(First_Mature_Age, nages) = 1.0; - make_mature_numbers(g) = elem_prod(make_mature_numbers(g), ALK(ALK_idx, g) * mat_len(GPat)); // covers both age and length dimension - break; - } - case 2: // Maturity_Option=2 age logistic - { - mat_age(GPat)(0, First_Mature_Age) = 0.0; - mat_age(GPat)(First_Mature_Age, nages) = 1. / (1. + mfexp(wtlen_p(GPat, 4) * (r_ages(First_Mature_Age, nages) - wtlen_p(GPat, 3)))); - mat_fec_len(gp) = elem_prod(mat_len(gp), fec_len(gp)); - make_mature_numbers(g) = mat_age(GPat); - break; - } - case 3: // Maturity_Option=3 read age-maturity - { - mat_age(GPat) = Age_Maturity(GPat); - mat_fec_len(gp) = elem_prod(mat_len(gp), fec_len(gp)); - make_mature_numbers(g) = mat_age(GPat); - break; - } - case 4: // Maturity_Option=4 read age-fecundity, so no age-maturity - { - if (do_once == 1) - echoinput << "age-fecundity as read from control file" << endl - << Age_Maturity(gp) << endl; - break; - } - case 6: // Maturity_Option=6 read length-maturity - { - mat_len(GPat) = Length_Maturity(GPat); - mat_fec_len(gp) = elem_prod(mat_len(gp), fec_len(gp)); - make_mature_numbers(g)(First_Mature_Age, nages) = 1.0; - make_mature_numbers(g) = elem_prod(make_mature_numbers(g), ALK(ALK_idx, g) * mat_len(GPat)); // covers both age and length dimension - break; - } - case 5: // Maturity_Option=5 read age-fecundity from wtatage.ss disabled different flag now used - { - break; - } - } - switch (Maturity_Option) - { - case 4: // Maturity_Option=4 read age-fecundity into age-maturity - { - fec(g) = Age_Maturity(GPat); - make_mature_numbers(g) = fec(g); // not defined - make_mature_bio(g) = fec(g); // not defined - break; - } - case 5: // Maturity_Option=5 read age-fecundity from wtatage.ss - { - fec(g) = Wt_Age_t(t, -2, GP3(g)); - make_mature_numbers(g) = fec(g); // not defined - make_mature_bio(g) = fec(g); // not defined - break; - } - default: - { - for (a = First_Mature_Age; a <= nages; a++) - { - tempvec_a(a) = ALK(ALK_idx, g, a)(1, nlength) * mat_fec_len(GPat)(1, nlength); - } - fec(g)(First_Mature_Age, nages) = elem_prod(tempvec_a(First_Mature_Age, nages), mat_age(GPat)(First_Mature_Age, nages)); // reproductive output at age - make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age - make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age - } - } - if (t >= styr && WTage_rd == 0) - Wt_Age_t(t, -2, g) = fec(g); // save sel_num and save fecundity for output - if (y == endyr && WTage_rd == 0) - Wt_Age_t(t + nseas, -2, g) = fec(g); - #ifdef DO_ONCE - if (do_once == 1) - { - echoinput << "gp: " << GPat << " g " << g << endl - << "mat_len: " << mat_len(GPat) << endl - << " fec_len: " << fec_len(GPat) << endl - << " mat_fec_len: " << mat_fec_len(GPat) << endl - << " mat_age: " << mat_age(GPat) << endl - << " mat_len_age: " << make_mature_numbers(g) << endl - << " fecundity_age: " << fec(g) << endl; - } - #endif - } - } // end g loop - // end maturity and fecundity in spawn_seas - } - -FUNCTION void get_Hermaphro() - { - // SS_Label_Info_19.2.5 #Do Hermaphroditism (no seasonality and no gp differences) - // should build seasonally component here - // only one hermaphroditism definition is allowed (3 parameters), but it is stored by Gpat, so referenced by GP4(g) - dvariable infl; // inflection - dvariable stdev; // standard deviation - dvariable maxval; // max value - - infl = mgp_adj(MGparm_Hermaphro); // inflection - stdev = mgp_adj(MGparm_Hermaphro + 1); // standard deviation - maxval = mgp_adj(MGparm_Hermaphro + 2); // max value - Hermaphro_val.initialize(); - // minval is 0.0; - temp2 = cumd_norm((0.0 - infl) / stdev); // cum_norm at age 0 // could change to Hermaphro_firstage - temp = maxval / (cumd_norm((r_ages(nages) - infl) / stdev) - temp2); // delta in cum_norm between styr and endyr - for (a = Hermaphro_firstage; a <= nages; a++) - { - Hermaphro_val(1, a) = 0.0 + temp * (cumd_norm((r_ages(a) - infl) / stdev) - temp2); - } - if (N_GP > 1) - { - for (gp = 2; gp <= N_GP; gp++) - { - Hermaphro_val(gp) = Hermaphro_val(1); - } - } - return; - } - -FUNCTION void get_migration() - { - //******************************************************************* - // SS_Label_FUNCTION 20 #get_migration - Ip = MGP_CGD; // base counter for movement parms - // SS_Label_20.1 loop the needed movement rates - for (k = 1; k <= do_migr2; k++) // loop all movement rates for this year (includes seas, morphs) - { - t = styr + (yz - styr) * nseas + move_def2(k, 1) - 1; - if (k <= do_migration) // so an explicit movement rate - { - // set some movement rates same as the first movement rate - if (mgp_adj(Ip + 1) == -9999.) - mgp_adj(Ip + 1) = mgp_adj(MGP_CGD + 1); - if (mgp_adj(Ip + 2) == -9999.) - mgp_adj(Ip + 2) = mgp_adj(MGP_CGD + 2); - // set movement rate same for all ages - if (mgp_adj(Ip + 2) == -9998.) - mgp_adj(Ip + 2) = mgp_adj(Ip + 1); - - // SS_Label_Info_20.1.1 #age-specific movement strength based on parameters for selected area pairs - temp = 1. / (move_def2(k, 6) - move_def2(k, 5)); - temp1 = temp * (mgp_adj(Ip + 2) - mgp_adj(Ip + 1)); - for (a = 0; a <= nages; a++) - { - if (a <= move_def2(k, 5)) - { - migrrate(yz, k, a) = mgp_adj(Ip + 1); - } - else if (a >= move_def2(k, 6)) - { - migrrate(yz, k, a) = mgp_adj(Ip + 2); - } - else - { - migrrate(yz, k, a) = mgp_adj(Ip + 1) + (r_ages(a) - move_def2(k, 5)) * temp1; - } - } // end age loop - migrrate(yz, k) = mfexp(migrrate(yz, k)); - Ip += 2; - } - else - // SS_Label_Info_20.1.2 #default movement strength =1.0 for other area pairs - { - migrrate(yz, k) = 1.; - } - } - - // SS_Label_Info_20.2 #loop seasons, GP, source areas - for (s = 1; s <= nseas; s++) - { - t = styr + (yz - styr) * nseas + s - 1; - for (gp = 1; gp <= N_GP; gp++) - { - for (p = 1; p <= pop; p++) - { - tempvec_a.initialize(); // zero out the summation vector - for (p2 = 1; p2 <= pop; p2++) - { - // SS_Label_Info_20.2.1 #for each destination area, adjust movement rate by season duration and sum across all destination areas - k = move_pattern(s, gp, p, p2); - if (k > 0) - { - if (p2 != p && nseas > 1) - migrrate(yz, k) *= seasdur(move_def2(k, 1)); // fraction leaving an area is reduced if the season is short - tempvec_a += migrrate(yz, k); // sum of all movement weights for the p2 fish - } - } //end destination area - // SS_Label_Info_20.2.2 #now normalize for all movement from source area p - for (p2 = 1; p2 <= pop; p2++) - { - k = move_pattern(s, gp, p, p2); - if (k > 0) - { - migrrate(yz, k) = elem_div(migrrate(yz, k), tempvec_a); - // SS_Label_Info_20.2.3 #Set rate to 0.0 (or 1.0 for stay rates) below the start age for migration - if (migr_start(s, gp) > 0) - { - if (p != p2) - { - migrrate(yz, k)(0, migr_start(s, gp) - 1) = 0.0; - } - else - { - migrrate(yz, k)(0, migr_start(s, gp) - 1) = 1.0; - } - } - } - } - } // end source areas loop - } // end growth pattern - } // end season - - // SS_Label_Info_20.2.4 #Copy annual migration rates forward until first year with time-varying migration rates - if (yz < YrMax) - { - k = yz + 1; - while (timevary_MG(k, 5) == 0 && k <= YrMax) - { - migrrate(k) = migrrate(k - 1); - k++; - } - } - // end migration - return; - } - -FUNCTION void get_migration2() - { - //******************************************************************* - // SS_Label_FUNCTION 20 #get_migration - // for use with new movement approach - // each defined movedef rate (1 to do_migr2) has a min age, max age, functional form - // each move_pattern(GP, sex, settlement, seas, source, sink) selects rate it uses - // so all could point to just 1 rate definition, or a complex setup could be created - // to ease creation of setups of moderate complexity, use 0 to select all of that dimension - // for example, 0 in the sex field would assign the specified rate to both sexes - // for example, 0 in all fields would assign the same rate to everything - - Ip = MGP_CGD; // base counter for movement parms - dvariable move1; // movement rate for young fish - dvariable move2; // movement rate for old fish - - // SS_Label_20.1 loop the needed movement rates - for (k = 1; k <= do_migr2; k++) // loop all movement rates for this year (includes seas, morphs) - { - // seems not used t=styr+(yz-styr)*nseas+move_def2(k,1)-1; - if (k <= do_migration) // so an explicit movement rate - { - // set some movement rates same as the first movement rate - move1 = mgp_adj(Ip + 1); - if (mgp_adj(Ip + 1) == -9999.) - move1 = mgp_adj(MGP_CGD + 1); - move2 = mgp_adj(Ip + 1); - if (mgp_adj(Ip + 2) == -9999.) - move2 = mgp_adj(MGP_CGD + 2); - // set movement rate same for all ages - if (mgp_adj(Ip + 2) == -9998.) - move2 = move1; - - // SS_Label_Info_20.1.1 #age-specific movement strength based on parameters for selected area pairs - temp = 1. / (move_def2(k, 6) - move_def2(k, 5)); - temp1 = temp * (move2 - move1); - migrrate(yz, k) = move1 + (r_ages - move_def2(k, 5)) * temp1; - migrrate(yz, k)(0, move_def2(k, 5)) = move1; - migrrate(yz, k)(move_def2(k, 5), nages) = move2; - migrrate(yz, k) = mfexp(migrrate(yz, k)); - Ip += 2; - } - else - // SS_Label_Info_20.1.2 #default movement strength =1.0 for other area pairs - { - migrrate(yz, k) = 1.; - } - } - - // SS_Label_Info_20.2 #loop seasons, GP, source areas - for (s = 1; s <= nseas; s++) - { - t = styr + (yz - styr) * nseas + s - 1; - for (gp = 1; gp <= N_GP; gp++) - { - for (p = 1; p <= pop; p++) - { - tempvec_a.initialize(); // zero out the summation vector - for (p2 = 1; p2 <= pop; p2++) - { - // SS_Label_Info_20.2.1 #for each destination area, adjust movement rate by season duration and sum across all destination areas - k = move_pattern(s, gp, p, p2); - if (k > 0) - { - if (p2 != p && nseas > 1) - migrrate(yz, k) *= seasdur(move_def2(k, 1)); // fraction leaving an area is reduced if the season is short - tempvec_a += migrrate(yz, k); // sum of all movement weights for the p2 fish - } - } //end destination area - // SS_Label_Info_20.2.2 #now normalize for all movement from source area p - for (p2 = 1; p2 <= pop; p2++) - { - k = move_pattern(s, gp, p, p2); - if (k > 0) - { - migrrate(yz, k) = elem_div(migrrate(yz, k), tempvec_a); - // SS_Label_Info_20.2.3 #Set rate to 0.0 (or 1.0 for stay rates) below the start age for migration - if (migr_start(s, gp) > 0) - { - if (p != p2) - { - migrrate(yz, k)(0, migr_start(s, gp) - 1) = 0.0; - } - else - { - migrrate(yz, k)(0, migr_start(s, gp) - 1) = 1.0; - } - } - } - } - } // end source areas loop - } // end growth pattern - } // end season - - // SS_Label_Info_20.2.4 #Copy annual migration rates forward until first year with time-varying migration rates - if (yz < endyr) - { - k = yz + 1; - while (timevary_MG(k, 5) == 0 && k <= endyr) - { - migrrate(k) = migrrate(k - 1); - k++; - } - } - // end migration - return; - } - -FUNCTION void get_saveGparm() - { - //********************************************************************* - /* SS_Label_Function_21 #get_saveGparm */ - gp = 0; - for (gg = 1; gg <= gender; gg++) - for (GPat = 1; GPat <= N_GP; GPat++) - { - gp++; - g = g_Start(gp); // base platoon - for (settle = 1; settle <= N_settle_timings; settle++) - { - g += N_platoon; - save_gparm++; - save_G_parm(save_gparm, 1) = save_gparm; - save_G_parm(save_gparm, 2) = y; - save_G_parm(save_gparm, 3) = g; - save_G_parm(save_gparm, 4) = AFIX; - save_G_parm(save_gparm, 5) = AFIX2; - save_G_parm(save_gparm, 6) = value(Lmin(gp)); - save_G_parm(save_gparm, 7) = value(Lmax_temp(gp)); - if (do_ageK == 1) - { - save_G_parm(save_gparm, 8) = value(-VBK(gp, nages) * VBK_seas(0)); - save_G_parm(save_gparm, 9) = value(-log(L_inf(gp) / (L_inf(gp) - Lmin(gp))) / (-VBK(gp, nages) * VBK_seas(0)) + AFIX + azero_G(g)); - } - else - { - save_G_parm(save_gparm, 8) = value(-VBK(gp, 0) * VBK_seas(0)); - save_G_parm(save_gparm, 9) = value(-log(L_inf(gp) / (L_inf(gp) - Lmin(gp))) / (-VBK(gp, 0) * VBK_seas(0)) + AFIX + azero_G(g)); - } - - save_G_parm(save_gparm, 10) = value(L_inf(gp)); - save_G_parm(save_gparm, 11) = value(CVLmin(gp)); - save_G_parm(save_gparm, 12) = value(CVLmax(gp)); - save_G_parm(save_gparm, 13) = natM_amin; - save_G_parm(save_gparm, 14) = natM_amax; - save_G_parm(save_gparm, 15) = value(natM(t_base+1, 0, GP3(g), 0)); - save_G_parm(save_gparm, 16) = value(natM(t_base+1, 0, GP3(g), nages)); - if (gg == 1) - { - for (k = 1; k <= 6; k++) - save_G_parm(save_gparm, 16 + k) = value(wtlen_p(GPat, k)); - } - else - { - for (k = 1; k <= 2; k++) - save_G_parm(save_gparm, 16 + k) = value(wtlen_p(GPat, k + 6)); - } - save_gparm_print = save_gparm; - } - if (MGparm_doseas > 0) - { - for (s = 1; s <= nseas; s++) - { - for (k = 1; k <= 8; k++) - { - save_seas_parm(s, k) = value(wtlen_p(GPat, k) * wtlen_seas(s, GPat, k)); - } - save_seas_parm(s, 9) = value(Lmin(1)); - if (Grow_type <= 2 || Grow_type == 8) - save_seas_parm(s, 10) = value(VBK(1, 0) * VBK_seas(s)); - if (Grow_type >= 3 && Grow_type <= 5) - save_seas_parm(s, 10) = value(VBK(1, nages) * VBK_seas(s)); - } - } - } - } // end save_gparm - -// this function is no longer used. It has been moved into get_mat_fec() - -FUNCTION void Make_Fecundity() - { - //******************************************************************** - // this Make_Fecundity function does the dot product of the distribution of length-at-age (ALK) with maturity and fecundity vectors - // to calculate the mean fecundity at each age - // SS_Label_31.1 FUNCTION Make_Fecundity - // SPAWN-RECR: here is the make_Fecundity function - fec.initialize(); - ALK_idx = (spawn_seas - 1) * N_subseas + spawn_subseas; - for (g = 1; g <= gmorph; g++) - if (sx(g) == 1 && use_morph(g) > 0) - { - GPat = GP4(g); - gg = sx(g); - switch (Maturity_Option) - { - case 4: // Maturity_Option=4 read age-fecundity into age-maturity - { - fec(g) = Age_Maturity(GPat); - break; - } - case 5: // Maturity_Option=5 read age-fecundity from wtatage.ss - { - fec(g) = Wt_Age_t(t, -2, GP3(g)); - break; - } - default: - { - for (a = First_Mature_Age; a <= nages; a++) - { - tempvec_a(a) = ALK(ALK_idx, g, a)(1, nlength) * mat_fec_len(GPat)(1, nlength); - } - fec(g)(First_Mature_Age, nages) = elem_prod(tempvec_a(First_Mature_Age, nages), mat_age(GPat)(First_Mature_Age, nages)); // reproductive output at age - } - } - if (t >= styr) - Wt_Age_t(t, -2, g) = fec(g); // save sel_num and save fecundity for output - if (y == endyr) - Wt_Age_t(t + nseas, -2, g) = fec(g); - - if (bigsaver == 1) - { - switch (Maturity_Option) - { - case 1: // Maturity_Option=1 length logistic - { - make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age - make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age - - break; - } - case 2: // Maturity_Option=2 age logistic - { - make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age - make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age - break; - } - case 3: // Maturity_Option=3 read age-maturity - { - make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age (Age_Maturity already copied to mat_age) - make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age - break; - } - case 4: // Maturity_Option=4 read age-fecundity, so no age-maturity - { - make_mature_numbers(g) = fec(g); // not defined - make_mature_bio(g) = fec(g); // not defined - break; - } - case 5: // Maturity_Option=5 read age-fecundity from wtatage.ss - { - make_mature_numbers(g) = fec(g); // not defined - make_mature_bio(g) = fec(g); // not defined - break; - } - case 6: // Maturity_Option=6 read length-maturity - { - make_mature_numbers(g) = elem_prod(ALK(ALK_idx, g) * mat_len(GPat), mat_age(GPat)); // mature numbers at age (Length_Maturity already copied to mat_len) - make_mature_bio(g) = elem_prod(ALK(ALK_idx, g) * elem_prod(mat_len(GPat), wt_len(s, GP(g))), mat_age(GPat)); // mature biomass at age - break; - } - } - } - } - } -// SS_Label_file #10. **SS_miscfxn.tpl** -// SS_Label_file # * Join_Fxn() // joins line segments in differentiable way -// SS_Label_file # * get_age_age() // for ageing error -// SS_Label_file # * get_catch_mult() -// SS_Label_file # - -//******************************************************************** - /* SS_Label_FUNCTION 42 Join_Fxn */ -FUNCTION dvariable Join_Fxn(const prevariable& MinPoss, const prevariable& MaxPoss, const prevariable& Inflec, const prevariable& Xvar, const prevariable& Y1, const prevariable& Y2) - { - RETURN_ARRAYS_INCREMENT(); - dvariable Yresult; - dvariable join; - join = 1.000 / (1.000 + mfexp(1000.0 * (Xvar - Inflec) / (MaxPoss - MinPoss))); // steep joiner at the inflection - Yresult = Y1 * (join) + Y2 * (1.000 - join); - RETURN_ARRAYS_DECREMENT(); - return Yresult; - } - -//******************************************************************** - /* SS_Label_FUNCTION 45 get_age_age */ -FUNCTION void get_age_age(const int Keynum, const int AgeKey_StartAge, const int AgeKey_Linear1, const int AgeKey_Linear2) - { - // FUTURE: calculate adjustment to oldest age based on continued ageing of old fish - age_age(Keynum).initialize(); - dvariable age; - dvar_vector age_err_parm(1, 7); - dvariable temp; - - if (Keynum == Use_AgeKeyZero) - { - // SS_Label_45.1 set age_err_parm to mgp_adj, so can be time-varying according to MGparm options - for (a = 1; a <= 7; a++) - { - age_err_parm(a) = mgp_adj(AgeKeyParm - 1 + a); - } - age_err(Use_AgeKeyZero, 1)(0, AgeKey_StartAge) = r_ages(0, AgeKey_StartAge) + 0.5; - age_err(Use_AgeKeyZero, 2)(0, AgeKey_StartAge) = age_err_parm(5) * (r_ages(0, AgeKey_StartAge) + 0.5) / (age_err_parm(1) + 0.5); - // SS_Label_45.3 calc ageing bias - if (AgeKey_Linear1 == 0) - { - age_err(Use_AgeKeyZero, 1)(AgeKey_StartAge, nages) = 0.5 + r_ages(AgeKey_StartAge, nages) + age_err_parm(2) + (age_err_parm(3) - age_err_parm(2)) * (1.0 - mfexp(-age_err_parm(4) * (r_ages(AgeKey_StartAge, nages) - age_err_parm(1)))) / (1.0 - mfexp(-age_err_parm(4) * (r_ages(nages) - age_err_parm(1)))); - } - else - { - age_err(Use_AgeKeyZero, 1)(AgeKey_StartAge, nages) = 0.5 + r_ages(AgeKey_StartAge, nages) + age_err_parm(2) + (age_err_parm(3) - age_err_parm(2)) * (r_ages(AgeKey_StartAge, nages) - age_err_parm(1)) / (r_ages(nages) - age_err_parm(1)); - } - // SS_Label_45.4 calc ageing variance - if (AgeKey_Linear2 == 0) - { - age_err(Use_AgeKeyZero, 2)(AgeKey_StartAge, nages) = age_err_parm(5) + (age_err_parm(6) - age_err_parm(5)) * (1.0 - mfexp(-age_err_parm(7) * (r_ages(AgeKey_StartAge, nages) - age_err_parm(1)))) / (1.0 - mfexp(-age_err_parm(7) * (r_ages(nages) - age_err_parm(1)))); - } - else - { - age_err(Use_AgeKeyZero, 2)(AgeKey_StartAge, nages) = age_err_parm(5) + (age_err_parm(6) - age_err_parm(5)) * (r_ages(AgeKey_StartAge, nages) - age_err_parm(1)) / (r_ages(nages) - age_err_parm(1)); - } - } - - // SS_Label_45.5 calc distribution of age' for each age - for (a = 0; a <= nages; a++) - { - if (age_err(Keynum, 1, a) <= -1) - { - age_err(Keynum, 1, a) = r_ages(a) + 0.5; - } - age = age_err(Keynum, 1, a); - - for (b = 2; b <= n_abins; b++) // so the lower tail is accumulated into the first age' bin - age_age(Keynum, b, a) = cumd_norm((age_bins(b) - age) / age_err(Keynum, 2, a)); - - for (b = 1; b <= n_abins - 1; b++) - age_age(Keynum, b, a) = age_age(Keynum, b + 1, a) - age_age(Keynum, b, a); - - age_age(Keynum, n_abins, a) = 1. - age_age(Keynum, n_abins, a); // so remainder is accumulated into the last age' bin - } - - if (gender == 2) // copy ageing error matrix into male location also - { - L2 = n_abins; - A2 = nages + 1; - for (b = 1; b <= n_abins; b++) - for (a = 0; a <= nages; a++) - { - age_age(Keynum, b + L2, a + A2) = age_age(Keynum, b, a); - } - } - return; - } // end age_age key - -FUNCTION void get_catch_mult(int y, int catch_mult_pointer) - { - /* SS_Label_FUNCTION 47 catch_multiplier */ - int j; - j = 0; - for (f = 1; f <= Nfleet; f++) - { - if (need_catch_mult(f) == 1) - { - catch_mult(y, f) = mgp_adj(catch_mult_pointer + j); - j++; - } - } - return; - } - -//******************************************************************** - /* SS_Label_FUNCTION 4XX Comp_logL */ -FUNCTION dvariable Comp_logL_multinomial(const double& Nsamp, const dvector& obs_comp, const dvar_vector& exp_comp) - { - dvariable logL; -// logL = - Nsamp * obs_comp(tail_L, tail_H) * log(exp_comp(tail_L, tail_H)); -// the call to this function does the subsetting to tail_L and tail_H, so this function can operate cleanly on the entirety of the passed vector - logL = - Nsamp * obs_comp * log(exp_comp); - return (logL); - } - -FUNCTION dvariable Comp_logL_Dirichlet(const double& Nsamp, const dvariable& dirichlet_Parm, const dvector& obs_comp, const dvar_vector& exp_comp) - { - dvariable logL; - logL = sum(gammln(Nsamp * obs_comp + dirichlet_Parm * exp_comp)) - sum(gammln(dirichlet_Parm * exp_comp)); - return (logL); - } -// SS_Label_file #11. **SS_selex.tpl** -// SS_Label_file # * get_selectivity() // does length and age selectivity and retention for all fleets -// SS_Label_file # * make_fish_selex() // for all fleets in a particular season, does the dot product of length distribution with length selectivity and retention vectors to calculate equivalent mean quantities at age for each platoon - -FUNCTION void get_selectivity() - { - //******************************************************************* - /* SS_Label_Function_22 #get_selectivity */ - // SS_Label_Info_22.01 #define local variables for selectivity - int fs; // = f-Nfleet to allow reference of actual fleet when looping to 2*Nfleet for the age selectivity calculations - int scaling_offset = 0; - dvariable t1; - dvariable t2; - dvariable t3; - dvariable t4; - dvariable Apical_Selex; - dvariable t1min; - dvariable t1max; - dvariable t1power; - dvariable t2min; - dvariable t2max; - dvariable t2power; - dvariable final; - dvariable sel_maxL; - dvariable lastsel; - dvariable lastSelPoint; - dvariable SelPoint; - dvariable finalSelPoint; - dvariable asc; - dvariable dsc; - - dvar_vector sp(1, 199); // temporary vector for selex parms - - Ip = 0; - // SS_Label_Info_22.2 #Loop all fisheries and surveys twice; first for size selectivity, then for age selectivity - for (f = 1; f <= 2 * Nfleet; f++) - { - fs = f - Nfleet; //index for saving age selex in the fleet arrays - // SS_Label_Info_22.2.1 #recalculate selectivity for any fleets or surveys with time-vary flag set for this year - if (timevary_sel(y, f) == 1 || save_for_report > 0) - { // recalculate the selex in this year x type - if (N_selparmvec(f) > 0) // type has parms, so look for adjustments - { - for (j = 1; j <= N_selparmvec(f); j++) - { - if (selparm_timevary(Ip + j) == 0) - { - sp(j) = selparm(Ip + j); - } - else // time-varying - { - sp(j) = parm_timevary(selparm_timevary(Ip + j), y); - - if (parm_adjust_method == 1 && (save_for_report > 0 || do_once == 1)) - { - if (sp(j) > -999 && (sp(j) < selparm_1(Ip + j, 1) || sp(j) > selparm_1(Ip + j, 2))) - { - warnstream << "Adjusted selparm out of base parm bounds. Phase: " << current_phase() << "; Inter: " << niter << "; fleet: " << f << "; base_parm#: " << Ip + j << "; y: " << y << "; min: " << selparm_1(Ip + j, 1) << "; max: " << selparm_1(Ip + j, 2) << "; base: " << selparm(Ip + j) << " timevary_val: " << sp(j) << " " << ParmLabel(firstselparm + Ip + j); - write_message (ADJUST, 0); - } - } - } - } // end j parm loop - if (docheckup == 1 && f <= Nfleet) - echoinput << " len selex parms for fleet: " << f << " " << endl - << sp(1, N_selparmvec(f)) << endl; - if (docheckup == 1 && f > Nfleet) - echoinput << " age selex parms for fleet: " << f - Nfleet << " " << endl - << sp(1, N_selparmvec(f)) << endl; - if (save_for_report > 0 || do_once == 1) - { - for (j = 1; j <= N_selparmvec(f); j++) - save_sp_len(y, f, j) = sp(j); - } - } - - if (f <= Nfleet) // do size selectivity, retention, discard mort - { - for (gg = 1; gg <= gender; gg++) - { - if (gg == 1 || (gg == 2 && seltype(f, 3) >= 3)) - { - // SS_Label_Info_22.3 #Switch on size selectivity type - switch (seltype(f, 1)) // select the selectivity pattern - { - // SS_Label_Info_22.3.0 #case 0 constant size selectivity - case 0: // *********** constant - { - sel = 1.; - break; - } - // SS_Label_Info_22.3.1 #case 1 logistic size selectivity - case 1: - { - if (seltype(f, 3) < 3 || (gg == 1 && seltype(f, 3) == 3) || (gg == 2 && seltype(f, 3) == 4)) // do the primary gender - { - sel = 1. / (1. + mfexp(neglog19 * (len_bins_m - sp(1)) / sp(2))); - } - else // do the offset gender - { - temp = sp(1) + sp(Maleselparm(f)); - temp1 = sp(2) + sp(Maleselparm(f) + 1); - sel = sp(Maleselparm(f) + 2) / (1. + mfexp(neglog19 * (len_bins_m - temp) / temp1)); - } - break; - } - - // SS_Label_Info_22.3.2 #case 2 size selectivity using double_normal_plateau and lots of bells and whistles; old version of 24 available for back compatibility - case 2: - // SS_Label_Info_22.3.24 #case 24 size selectivity using double_normal_plateau and lots of bells and whistles - case 24: - { - if (seltype(f, 3) < 3 || (gg == 1 && seltype(f, 3) == 3) || (gg == 2 && seltype(f, 3) == 4)) - { - peak = sp(1); - upselex = mfexp(sp(3)); - downselex = mfexp(sp(4)); - final = sp(6); - Apical_Selex = 1.; - } - else - { // offset male parameters if seltype(f,3)==3, female parameters if seltype(f,3)==4 - peak = sp(1) + sp(Maleselparm(f)); - upselex = mfexp(sp(3) + sp(Maleselparm(f) + 1)); - downselex = mfexp(sp(4) + sp(Maleselparm(f) + 2)); - if (sp(6) > -999.) - final = sp(6) + sp(Maleselparm(f) + 3); - Apical_Selex = sp(Maleselparm(f) + 4); - } - - if (sp(5) < -1000.) - { - j1 = -1001 - int(value(sp(5))); // selex is nil thru bin j1, so set sp(5) equal to first bin with selex (e.g. -1002 to start selex at bin 2) - sel(1, j1) = 1.0e-06; - } - else - { - j1 = startbin - 1; // start selex at bin equal to min sizecomp databin (=j1+1) - if (sp(5) > -999) - { - point1 = 1.0 / (1.0 + mfexp(-sp(5))); - t1min = mfexp(-(square(len_bins_m(startbin) - peak) / upselex)); // fxn at first bin - } - } - if (sp(6) < -1000.) - { - j2 = -1000 - int(value(sp(6))); // selex is constant beyond this sizebin, so set sp(6) equal to last bin with estimated selex - } - else - { - j2 = nlength; - } - peak2 = peak + binwidth2 + (0.99 * len_bins_m(j2) - peak - binwidth2) / (1. + mfexp(-sp(2))); - if (sp(6) > -999) - { - if (seltype(f, 1) == 24) - { - point2 = Apical_Selex / (1.0 + mfexp(-final)); // The newer way of doing this - } - else - { - point2 = 1.0 / (1.0 + mfexp(-final)); // For back compatibility (old (3.30.18 and earlier) version of pattern 24, now available as 2) - #ifdef DO_ONCE - if (do_once == 1) - { - warnstream << "Selectivity 2 is a back-compatible (SS 3.30.18 and earlier) version of selectivity 24. Recommend using 24."; - write_message (SUGGEST, 0); - } - #endif - } - t2min = mfexp(-(square(len_bins_m(j2) - peak2) / downselex)); // fxn at last bin - } - for (j = j1 + 1; j <= j2; j++) - { - t1 = len_bins_m(j) - peak; - t2 = len_bins_m(j) - peak2; - join1 = 1.0 / (1.0 + mfexp(-(20. * t1 / (1.0 + fabs(t1))))); // note the logit transform on t1 causes range of mfexp to be over -20 to 20 - join2 = 1.0 / (1.0 + mfexp(-(20. * t2 / (1.0 + fabs(t2))))); - if (sp(5) > -999) - { - asc = point1 + (Apical_Selex - point1) * (mfexp(-square(t1) / upselex) - t1min) / (1.0 - t1min); - } - else - { - asc = Apical_Selex * mfexp(-square(t1) / upselex); - } - if (sp(6) > -999) - { - dsc = Apical_Selex + (point2 - Apical_Selex) * (mfexp(-square(t2) / downselex) - 1.0) / (t2min - 1.0); - } - else - { - dsc = Apical_Selex * mfexp(-square(t2) / downselex); - } - sel(j) = asc * (1.0 - join1) + join1 * (Apical_Selex * (1.0 - join2) + dsc * join2); - } - if (startbin > 1 && sp(5) >= -1000.) - { - for (j = 1; j <= startbin - 1; j++) - { - sel(j) = square(len_bins_m(j) / len_bins_m(startbin)) * sel(startbin); - } - } - - if (j2 < nlength) - { - sel(j2 + 1, nlength) = sel(j2); - } - break; - } - - // SS_Label_Info_22.3.3 #case 3 discontinued - case 3: - { - warnstream << "Selectivity pattern 3 discontinued. Use a different pattern."; - write_message (FATAL, 0); // EXIT! - break; - } - - // SS_Label_Info_22.3.4 #case 4 discontinued; use pattern 30 to get spawning biomass - case 4: - { - warnstream << "Selectivity pattern 4 discontinued; use pattern 0 and special survey units 30 in data file instead."; - write_message (FATAL, 0); // EXIT! - break; - } - - // SS_Label_Info_22.3.5 #case 5 mirror another fleets size selectivity for specified bin range - // use only the specified bin range using mirror_mask created upon read - // must refer to a lower numbered type (f) - case 5: - { - sel = elem_prod(mirror_mask(f), sel_l(y, seltype(f, 4), 1)); - break; - } - - // SS_Label_Info_22.3.15 #case 15 mirror another fleets size selectivity for all size bins - case 15: - { - sel = sel_l(y, seltype(f, 4), 1); - break; - } - - // SS_Label_Info_22.3.6 #case 6 non-parametric size selex pattern - // #43 non-parametric size selex scaled by average of values at low bin through high bin - case 43: - scaling_offset = 2; - [[fallthrough]]; - case 6: - { - lastsel = -10.0; // log(selex) for first bin; - lastSelPoint = len_bins_m(1); // first size - finalSelPoint = value(sp(2 + scaling_offset)); // size beyond which selex is constant - SelPoint = value(sp(1 + scaling_offset)); // first size that will get a parameter. Value will get incremented by step interval (temp1) - z = 3 + scaling_offset; // parameter counter - temp1 = (finalSelPoint - SelPoint) / (seltype(f, 4) - 1.0); // step interval - - for (j = 1; j <= nlength; j++) - { - if (len_bins_m(j) < SelPoint) - { - tempvec_l(j) = lastsel + (len_bins_m(j) - lastSelPoint) / (SelPoint - lastSelPoint) * (sp(z) - lastsel); - } - else if (len_bins_m(j) == SelPoint) - { - tempvec_l(j) = sp(z); - lastsel = sp(z); - lastSelPoint = SelPoint; - SelPoint += temp1; - if (SelPoint <= finalSelPoint) - { - z++; - } - else - { - SelPoint = finalSelPoint; - } - } - else if (len_bins_m(j) <= finalSelPoint) - { - lastsel = sp(z); - lastSelPoint = SelPoint; - SelPoint += temp1; - if (SelPoint <= finalSelPoint) - { - z++; - } - else - { - SelPoint = finalSelPoint; - } - tempvec_l(j) = lastsel + (len_bins_m(j) - lastSelPoint) / (SelPoint - lastSelPoint) * (sp(z) - lastsel); - } - else - { - tempvec_l(j) = sp(z); - } - #ifdef DO_ONCE - if (do_once == 1) - echoinput << "selex42 " << j << " " << len_bins_m(j) << " " << SelPoint << " " << tempvec_l(j) << endl; - #endif - } - if (scaling_offset == 0) - { - temp = max(tempvec_l); - } - else - { - int low_bin = int(value(sp(1))); - int high_bin = int(value(sp(2))); - if (low_bin < 1) - { - low_bin = 1; - warnstream << "Selex pattern 43; value for low bin is less than 1, so set to 1 "; - write_message (ADJUST, 0); - } - if (high_bin > nlength) - { - high_bin = nlength; - warnstream << " selex pattern 43; value for high bin is greater than " << nlength << ", so set to " << nlength; - write_message (ADJUST, 0); - } - if (high_bin < low_bin) - high_bin = low_bin; - if (low_bin > high_bin) - low_bin = high_bin; - sp(1) = low_bin; - sp(2) = high_bin; - temp = mean(tempvec_l(low_bin, high_bin)); - scaling_offset = 0; // reset scaling offset - } - sel = mfexp(tempvec_l - temp); - break; - } - - // SS_Label_Info_22.3.7 #case 7 discontinued; use pattern 8 for double logistic - case 7: - { - warnstream << "Selectivity pattern 7 discontinued; use pattern 8 instead for double logistic, but recommend pattern 24. "; - write_message (FATAL, 0); // EXIT! - break; - } - - // SS_Label_Info_22.3.8 #case 8 double logistic with eight parameters - case 8: - - // 1=peak, 2=init, 3=infl, 4=slope, 5=final, 6=infl2, 7=slope2 8=binwidth; Mirror=1===const_above_Linf - { - - #ifdef DO_ONCE - if (do_once == 1) - { - warnstream << "Selectivity pattern 24 is recommended over pattern 8 because it has fewer parameters."; - write_message (SUGGEST, 0); - } - #endif - - t1 = minL + (1. / (1. + mfexp(-sp(3)))) * (sp(1) - minL); // INFL - t1min = 1. / (1. + mfexp(-mfexp(sp(4)) * (minL - t1))) * 0.9999; // asc value at minsize - t1max = 1. / (1. + mfexp(-mfexp(sp(4)) * (sp(1) - t1))) * 1.0001; // asc value at peak - t1power = log(0.5) / log((0.5 - t1min) / (t1max - t1min)); // so the parameter will actual correspond to 50% point - - if (seltype(f, 4) == 0) - { - sel_maxL = maxL; - } - else - { - sel_maxL = Ave_Size(styr, 1, 1, nages); - } - t2 = (sp(1) + sp(8)) + (1. / (1. + mfexp(-sp(6)))) * (sel_maxL - (sp(1) + sp(8))); // INFL - t2min = 1. / (1. + mfexp(-mfexp(sp(7)) * (sp(1) + sp(8) - t2))) * 0.9999; // asc value at peak+ - t2max = 1. / (1. + mfexp(-mfexp(sp(7)) * (sel_maxL - t2))) * 1.0001; // asc value at maxL - t2power = log(0.5) / log((0.5 - t2min) / (t2max - t2min)); - final = 1. / (1. + mfexp(-sp(5))); - for (j = 1; j <= nlength; j++) //calculate the value over length bins - { - join1 = 1. / (1. + mfexp(10. * (len_bins_m(j) - sp(1)))); - join2 = 1. / (1. + mfexp(10. * (len_bins_m(j) - (sp(1) + sp(8))))); - join3 = 1. / (1. + mfexp(10. * (len_bins_m(j) - sel_maxL))); - upselex = sp(2) + (1. - sp(2)) * pow(((1. / (1. + mfexp(-mfexp(sp(4)) * (len_bins_m(j) - t1))) - t1min) / (t1max - t1min)), t1power); - downselex = (1. + (final - 1.) * pow(fabs((((1. / (1. + mfexp(-mfexp(sp(7)) * (len_bins_m(j) - t2))) - t2min) / (t2max - t2min)))), t2power)); - sel(j) = ((((upselex * join1) + 1.0 * (1.0 - join1)) * join2) + downselex * (1 - join2)) * join3 + final * (1 - join3); - } // end size bin loop - break; - } // end New double logistic - - // SS_Label_Info_22.3.9 #case 9 old double logistic with 4 parameters - case 9: - { - k1 = int(value(sp(5))); - if (k1 > 1) - sel(1, k1 - 1) = 0.0; - sel(k1, nlength) = elem_prod((1 / (1 + mfexp(-sp(2) * (len_bins_m(k1, nlength) - sp(1))))), - (1 - 1 / (1 + mfexp(-sp(4) * (len_bins_m(k1, nlength) - (sp(1) * sp(6) + sp(3))))))); - sel += 1.0e-6; - sel /= max(sel); - break; - } - - // SS_Label_Info_22.3.11 #case 11 selex=1.0 within a range of lengths - case 11: - { - sel = mirror_mask(f); // (y,f,1) - break; - } - // SS_Label_Info_22.3.21 #case 21 non-parametric size selectivity - /* N points; where the first N parameters is vector of sizes for the line segment ends - and second N parameters is selectivity at that size (no transformations) */ - case 21: // *******New non-parametric - { - j = 1; - z = 1; - k = seltype(f, 4); // N points - lastsel = 0.0; - lastSelPoint = 0.0; - - #ifdef DO_ONCE - if (do_once == 1) - { - if (sp(k) > len_bins(nlength)) - { - warnstream << "Selex21: cannot have max selpoint > max_pop_lenbin"; - write_message (FATAL, 0); // EXIT! - } - if (sp(k - 1) > len_bins(nlength - 1)) - { - warnstream << "Selex21: should not have selpoint(n-1) > pop_lenbin(nlength-1)"; - write_message (WARN, 0); - } - } - #endif - - while (j <= nlength) - { - if (len_bins(j) <= sp(z)) - { - sel(j) = lastsel + (len_bins(j) - lastSelPoint) / (sp(z) - lastSelPoint) * (sp(z + k) - lastsel); - j++; - } - else if (z <= k) - { - lastSelPoint = sp(z); - lastsel = sp(z + k); - z++; - } - else // for sizes beyond last point - { - sel(j) = sp(k + k); - j++; - } - } - break; - } - - // SS_Label_Info_22.3.22 #case 22 size selectivity using double_normal_plateau (similar to CASAL) - case 22: - { - peak2 = sp(1) + (0.99 * len_bins(nlength) - sp(1)) / (1. + mfexp(-sp(2))); - upselex = mfexp(sp(3)); - downselex = mfexp(sp(4)); - for (j = 1; j <= nlength; j++) - { - t1 = len_bins_m(j); - if (t1 < sp(1)) - { - sel(j) = mfexp(-square(t1 - sp(1)) / upselex); - } - else if (t1 <= peak2) - { - sel(j) = 1.0; - } - else - { - sel(j) = mfexp(-square(t1 - peak2) / downselex); - } - } - break; - } - - // SS_Label_Info_22.3.23 #case 23 size selectivity double_normal_plateau where final value can be greater than 1.0 - /* cannot be used with Pope's because can cause selex to be >1.0 */ - case 23: - { - if (seltype(f, 3) < 3 || (gg == 1 && seltype(f, 3) == 3) || (gg == 2 && seltype(f, 3) == 4)) - { - peak = sp(1); - upselex = mfexp(sp(3)); - downselex = mfexp(sp(4)); - final = sp(6); - } - else - { // offset male parameters if seltype(f,3)==3 - peak = sp(1) + sp(Maleselparm(f)); - upselex = mfexp(sp(3) + sp(Maleselparm(f) + 1)); - downselex = mfexp(sp(4) + sp(Maleselparm(f) + 2)); - if (sp(6) > -999.) - final = sp(6) + sp(Maleselparm(f) + 3); - } - - if (sp(5) < -1000.) - { - j1 = -1001 - int(value(sp(5))); // selex is nil thru bin j1, so set sp(5) equal to first bin with selex (e.g. -1002 to start selex at bin 2) - sel(1, j1) = 1.0e-06; - } - else - { - j1 = startbin - 1; // start selex at bin equal to min sizecomp databin (=j1+1) - if (sp(5) > -999) - { - point1 = 1.0 / (1.0 + mfexp(-sp(5))); - t1min = mfexp(-(square(len_bins_m(startbin) - peak) / upselex)); // fxn at first bin - } - } - if (sp(6) < -1000.) - { - j2 = -1000 - int(value(sp(6))); // selex is constant beyond this sizebin, so set sp(6) equal to last bin with estimated selex - } - else - { - j2 = nlength; - } - peak2 = peak + binwidth2 + (0.99 * len_bins_m(j2) - peak - binwidth2) / (1. + mfexp(-sp(2))); - if (sp(6) > -999) - { - point2 = final; - t2min = mfexp(-(square(len_bins_m(j2) - peak2) / downselex)); // fxn at last bin - } - for (j = j1 + 1; j <= j2; j++) - { - t1 = len_bins_m(j) - peak; - t2 = len_bins_m(j) - peak2; - join1 = 1.0 / (1.0 + mfexp(-(20. * t1 / (1.0 + fabs(t1))))); // note the logit transform on t1 causes range of mfexp to be over -20 to 20 - join2 = 1.0 / (1.0 + mfexp(-(20. * t2 / (1.0 + fabs(t2))))); - if (sp(5) > -999) - { - asc = point1 + (1.0 - point1) * (mfexp(-square(t1) / upselex) - t1min) / (1.0 - t1min); - } - else - { - asc = mfexp(-square(t1) / upselex); - } - if (sp(6) > -999) - { - dsc = 1.0 + (point2 - 1.0) * (mfexp(-square(t2) / downselex) - 1.0) / (t2min - 1.0); - } - else - { - dsc = mfexp(-square(t2) / downselex); - } - sel(j) = asc * (1.0 - join1) + join1 * (1.0 - join2 + dsc * join2); - } - if (startbin > 1 && sp(5) >= -1000.) - { - for (j = 1; j <= startbin - 1; j++) - { - sel(j) = square(len_bins_m(j) / len_bins_m(startbin)) * sel(startbin); - } - } - - if (j2 < nlength) - { - sel(j2 + 1, nlength) = sel(j2); - } - break; - } - - // SS_Label_Info_22.3.25 #case 25 size selectivity using exponential-logistic - case 25: - { - peak = len_bins_m(1) + sp(2) * (len_bins_m(nlength) - len_bins_m(1)); - for (j = 1; j <= nlength; j++) - { - sel(j) = mfexp(sp(3) * sp(1) * (peak - len_bins_m(j))) / (1.0 - sp(3) * (1.0 - mfexp(sp(1) * (peak - len_bins_m(j))))); - } - break; - } - - // SS_Label_Info_22.3.27 #case 27 size selectivity using cubic spline - // #42 size selectivity using cubic spline scaled by average of values at low bin through high bin - /* first N parameters are the spline knots; second N parameters are ln(selex) at the knot */ - /* uses max(raw vector) to achieve scale to 1.0 */ - case 42: - scaling_offset = 2; - [[fallthrough]]; - case 27: - { - int j2; - // define vectors which form the basis for cubic spline selectivity - // IMPORTANT: these vectors might need to be expanded to fit values for multiple fleets - dvector splineX(1, 200); - dvar_vector splineY(1, 200); - splineX.initialize(); - splineY.initialize(); - k = seltype(f, 4); // n points to include in cubic spline - for (i = 1; i <= k; i++) - { - splineX(i) = value(sp(i + 3 + scaling_offset)); // "value" required to avoid error, but values should be always fixed anyway - splineY(i) = sp(i + 3 + k + scaling_offset); - } - // calculate last size bin before first knot - z = 1; - while (len_bins_m(z) < splineX(1)) - { - z++; - } - j1 = z - 1; // last size bin before first knot - // calculate first size bin beyond last knot - z = nlength; - while (len_bins_m(z) > splineX(k)) - { - z--; - } - j2 = z + 1; // first size bin beyond last knot - - vcubic_spline_function splinefn = vcubic_spline_function(splineX(1, k), splineY(1, k), sp(2 + scaling_offset), sp(3 + scaling_offset)); - tempvec_l = splinefn(len_bins_m); // interpolate selectivity at the mid-point of each population size bin - if (scaling_offset == 0) - { - temp = max(tempvec_l(1, j2)); - // if spline code on first parameter line is 10, 11, or 12, then - // scale only based on interval between knots (unless first knot is at first bin) - if ((sp(1) >= 10) & (j1 >= 1)) - { - temp = max(tempvec_l(j1, j2)); - } - } - else - { - int low_bin = int(value(sp(1))); - int high_bin = int(value(sp(2))); - if (low_bin < 1) - { - low_bin = 1; - warnstream << "Selex pattern 42; value for low bin is less than 1, so set to 1 "; - write_message (ADJUST, 0); - } - if (high_bin > nlength) - { - high_bin = nlength; - warnstream << "Selex pattern 42; value for high bin is greater than " << nlength << ", so set to " << nlength; - write_message (ADJUST, 0); - } - if (high_bin < low_bin) - high_bin = low_bin; - if (low_bin > high_bin) - low_bin = high_bin; - sp(1) = low_bin; - sp(2) = high_bin; - temp = mean(tempvec_l(low_bin, high_bin)); - } - tempvec_l -= temp; // rescale to get max of 0.0 - tempvec_l(j2 + 1, nlength) = tempvec_l(j2); // set constant above last knot - sel = mfexp(tempvec_l); - // if spline code on third parameter line is 10, 11, or 12, then - // set to zero before the first knot (unless first knot is at first bin) - if ((sp(1 + scaling_offset) >= 10) & (j1 >= 1)) - { - sel(1, j1) = 0; // set to 0 before first knot - } - scaling_offset = 0; // reset scaling offset - break; - } // end length-based cubic spline (type 42 or 27) - case 30: - { - warnstream << "Selectivity pattern 30 not valid. Please set up in survey units instead and use pattern 0 for selectivity."; - write_message (FATAL, 0); // EXIT! - break; - } - default: // Selectivity pattern not found - { - warnstream << "Length Selectivity Pattern " << seltype(f, 1) << " not valid."; - write_message (FATAL, 0); // EXIT! - break; - } - } // end select the selectivity pattern - sel_l(y, f, gg) = sel; // Store size-selex in year*type array - } // end direct calc of selex from parameters - - // SS_Label_Info_22.4 #Do male relative to female selex - if (gg == 2) // males exist and am now in the male loop - { - if (seltype(f, 1) == 4) - { - sel_l(y, f, 2) = 0.; - } // set males to zero for spawning biomass - else if (seltype(f, 1) == 5) // set males equal to mirrored males - { - // i=int(value(sp(1))); if(i<=0) i=1; - // j=int(value(sp(2))); if(j<=0) j=nlength; - sel_l(y, f, 2) = elem_prod(mirror_mask(f), sel_l(y, seltype(f, 4), 2)); - } - else if (seltype(f, 1) == 15) // set males equal to mirrored males - { - sel_l(y, f, 2) = sel_l(y, seltype(f, 4), 2); - } - else if (seltype(f, 3) == 1 || seltype(f, 3) == 2) // do gender selex as offset - { - // k=seltype_Nparam(seltype(f,1)) + 1; - // if(seltype(f,2)>0) k+=seltype(f,2)*4; // first gender offset parm (skip over the retention parameters - // if(seltype(f,1)==6) k += seltype(f,4); // for non-parametric in which N parm is stored in special column - k = Maleselparm(f); - temp = sp(k); - temp1 = 1.; - switch (seltype(f, 3)) - { - case 1: - { // do males relative to females - for (j = 1; j <= nlength; j++) - { - if (len_bins_m(j) <= temp) - { - sel(j) *= mfexp(sp(k + 1) + (len_bins_m(j) - minL_m) / (temp - minL_m) * (sp(k + 2) - sp(k + 1))); - } - else - { - sel(j) *= mfexp(sp(k + 2) + (len_bins_m(j) - temp) / (maxL - temp) * (sp(k + 3) - sp(k + 2))); - } - // if(sel(j)>temp1) temp1=sel(j); - } - sel_l(y, f, 2) = sel; - tempvec_a(1) = max(sel_l(y, f, 1)); - tempvec_a(2) = max(sel_l(y, f, 2)); - temp1 = max(tempvec_a(1, 2)); - sel_l(y, f) /= temp1; - break; - } - case 2: - { // do females relative to males - sel_l(y, f, 2) = sel; - for (j = 1; j <= nlength; j++) - { - if (len_bins_m(j) <= temp) - { - sel(j) *= mfexp(sp(k + 1) + (len_bins_m(j) - minL_m) / (temp - minL_m) * (sp(k + 2) - sp(k + 1))); - } - else - { - sel(j) *= mfexp(sp(k + 2) + (len_bins_m(j) - temp) / (maxL - temp) * (sp(k + 3) - sp(k + 2))); - } - // if(sel(j)>temp1) temp1=sel(j); - } - sel_l(y, f, 1) = sel; - tempvec_a(1) = max(sel_l(y, f, 1)); - tempvec_a(2) = max(sel_l(y, f, 2)); - temp1 = max(tempvec_a(1, 2)); - sel_l(y, f) /= temp1; - break; - } - } // end switch - } // end do gender selex as offset from other gender - // SS_Label_Info_22.5 #Calculate size-specific retention and discard mortality - else if (seltype(f, 3) != 3 && seltype(f, 3) != 4) // where the "3" and "4" option do the male offset as direct parameters, rathen than do selex as offset - { - sel_l(y, f, 2) = sel; - } - } // end doing males - if (docheckup == 1) - echoinput << gg << " sel-len" << sel_l(y, f, gg) << endl; - - } // end loop of genders - - // apply 2D_AR adjustment to sex-specific length selectivity - // TwoD_AR_def: read: 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase; 10-before_yrs, 11=after_yrs, - // calc quantities: 12-N_parm_dev, 13-selparm_location - - if (TwoD_AR_use(f) > 0) - { - j = TwoD_AR_use(f); // get index for this fleet's effect - if (TwoD_AR_def[j](8) == 1) // age vs length flag - { - z = TwoD_AR_def[j](12); // index of dev vector used - if (docheckup == 1) - echoinput << "2dar for fleet: " << f << " 2DAR: " << j << " dev: " << z << endl; - - if (y == styr && (TwoD_AR_before(j) == 3 || TwoD_AR_after(j) == 3)) // if needed, calculate average dev for each length over the range of years - { - TwoD_AR_ave(j).initialize(); - for (int yyy = TwoD_AR_ymin(j); yyy <= TwoD_AR_ymax(j); yyy++) - { - k = (yyy - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); // index of 1st dev in vector created from year and length index - for (int ll = TwoD_AR_amin(j); ll <= TwoD_AR_amax(j); ll++) - { - k++; - TwoD_AR_ave(j, ll) += parm_dev(z, k); // sum devs for each length - } - } - TwoD_AR_ave(j) /= (TwoD_AR_ymax(j) - TwoD_AR_ymin(j) + 1.0); - #ifdef DO_ONCE - if (do_once == 1) - echoinput << "mean 2D AR dev for fleet: " << f << " means: " << TwoD_AR_ave(j) << endl; - #endif - } - - if (y < TwoD_AR_ymin(j)) // early years - { - if (TwoD_AR_before(j) == 0) // apply no devs - { - k = -2; - } - else if (TwoD_AR_before(j) == 1) // use first year devs - { - // k=(TwoD_AR_ymin(j)-TwoD_AR_ymin(j))*(TwoD_AR_amax(j)-TwoD_AR_amin(j)+1); // index of 1st dev in vector created from year and length index - k = 0; - } - else if (TwoD_AR_before(j) == 3) // use mean length-specific devs - { - k = -1; - } - } - else if (y <= TwoD_AR_ymax(j)) // in year range for annual devs - { - k = (y - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); // index of 1st dev in vector created from year and length index - } - else // later years - { - if (TwoD_AR_after(j) == 0) // apply no devs - { - k = -2; - } - else if (TwoD_AR_after(j) == 1) // use last year devs - { - k = (TwoD_AR_ymax(j) - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); - } // index of 1st dev in vector created from year and length index - else if (TwoD_AR_after(j) == 3) // use mean length-specific devs - { - k = -1; - } - } - - if (docheckup == 1) - echoinput << "K value for first dev to use: " << k << endl; - if (k > -2) - { - a1 = TwoD_AR_def[j](13) - 1; // parameter number-1 for sigmasel - dvariable sigmasel; - for (a = TwoD_AR_amin(j); a <= TwoD_AR_amax(j); a++) // loop lengths, using "a" as index - { - if (a <= TwoD_AR_def[j](6)) // so get sigmasel for this length bin - { - a1++; - sigmasel = selparm(a1); - } - if (k >= 0) - { - k++; - if (docheckup == 1) - echoinput << a << " sigmasel: " << sigmasel << endl; - sel_l(y, f, 1, a) *= mfexp(sigmasel * parm_dev(z, k)); - if (gender == 2) - sel_l(y, f, 2, a) *= mfexp(sigmasel * parm_dev(z, k)); - } - else // use mean devs - { - sel_l(y, f, 1, a) *= mfexp(sigmasel * TwoD_AR_ave(j, a)); - if (gender == 2) - sel_l(y, f, 2, a) *= mfexp(sigmasel * TwoD_AR_ave(j, a)); - } - } - } - if (docheckup == 1) - echoinput << "len selex after 2D_AR" << endl - << sel_l(y, f) << endl; - } - } - - // SS_Label_Info_22.5.1 #Calculate discmort - // discmort is the size-specific fraction of discarded fish that die - // discmort2 is size-specific fraction that die from being retained or are dead discard - // = elem_prod(sel,(retain + (1-retain)*discmort)) */ - - if (seltype(f, 2) == 0) // no discard, all retained - { - retain(y, f) = 1.0; - sel_l_r(y, f) = sel_l(y, f); - discmort(y, f) = 1.0; - discmort2(y, f) = sel_l(y, f); - if (gender == 2) - { - discmort_M = 1.0; - retain_M = 1.0; - } - } - else if (seltype(f, 2) == 3) // none retained; all dead - { - retain(y, f) = 0.0; - discmort(y, f) = 1.0; - sel_l_r(y, f) = 0.0; - discmort2(y, f) = sel_l(y, f); - if (gender == 2) - { - discmort_M = 1.0; - retain_M = 0.0; - } - } - else - { - if (seltype(f, 2) < 0) // mirror - { - k = -seltype(f, 2); - retain(y, f) = retain(y, k); - discmort(y, f) = discmort(y, k); - if (seltype(k, 2) == 1) - { - discmort2(y, f) = sel_l(y, f); // all selected fish are dead; this statement does both genders implicitly - } - else - { - discmort2(y, f, 1) = elem_prod(sel_l(y, f, 1), retain(y, f)(1, nlength) + elem_prod((1. - retain(y, f)(1, nlength)), discmort(y, f)(1, nlength))); - } - } - else - { - k = RetainParm(f); - if (sp(k + 2) == -999.) - { - temp1 = 0.0; - } - else if (sp(k + 2) == 999.) - { - temp1 = 1.0; - } - else - { - temp1 = 1.0 / (1.0 + mfexp(-sp(k + 2))); - } - // where maleoffset is a vector of 2*nbins with 0 in length bins for females and 1 for male bins - retain(y, f) = temp1 / (1. + mfexp(-(len_bins_m2 - (sp(k) + male_offset * sp(k + 3))) / sp(k + 1))); // males are at end of vector, so automatically get done - if (seltype(f, 2) == 4) - { - // allow for dome-shaped retention in 3.30 only - retain(y, f) = elem_prod(retain(y, f), (1. - (1. / (1. + mfexp(-(len_bins_m2 - (sp(k + 4) + male_offset * sp(k + 6))) / sp(k + 5)))))); - } - if (docheckup == 1 && y == styr) - { - echoinput << "retention parms start at #: " << k << " infl: " << sp(k) << " slope: " << sp(k + 1) << " male_offset " << sp(k + 3) << " asymptote: " << temp1; - if (seltype(f, 2) == 4) - { - // additional dome-shaped retention parameters - echoinput << " " << sp(k + 4) << " " << sp(k + 5) << " " << sp(k + 6); - } - echoinput << "retention " << retain(y, f) << endl; - } - - if (seltype(f, 2) == 1) // all discards are dead - { - discmort(y, f) = 1.0; - discmort2(y, f) = sel_l(y, f); // all selected fish are dead; this statement does both genders implicitly - } - else - { - k += N_ret_parm(seltype(f, 2)); // first discard mortality parm - temp = 1. - sp(k + 2); - temp1 = posfun(temp, 0.0, CrashPen); - discmort(y, f) = (1. - temp1 / (1 + mfexp(-(len_bins_m2 - (sp(k) + male_offset * sp(k + 3))) / sp(k + 1)))); // males are at end of vector, so automatically get done - if (docheckup == 1 && y == styr) - echoinput << "discmort " << discmort(y, f) << endl; - discmort2(y, f, 1) = elem_prod(sel_l(y, f, 1), retain(y, f)(1, nlength) + elem_prod((1. - retain(y, f)(1, nlength)), discmort(y, f)(1, nlength))); - } - } - - sel_l_r(y, f, 1) = elem_prod(sel_l(y, f, 1), retain(y, f)(1, nlength)); - if (gender == 2) - { - discmort_M.shift(nlength1) = discmort(y, f)(nlength1, nlength2); - retain_M.shift(nlength1) = retain(y, f)(nlength1, nlength2); - sel_l_r(y, f, 2) = elem_prod(sel_l(y, f, 2), retain_M.shift(1)); - discmort2(y, f, 2) = elem_prod(sel_l(y, f, 2), retain_M.shift(1) + elem_prod((1. - retain_M.shift(1)), discmort_M.shift(1))); // V3.21f - } - } - if (docheckup == 1 && y == styr) - echoinput << "sel-len-r " << sel_l_r(y, f) << endl; - if (docheckup == 1 && y == styr) - echoinput << " dead " << discmort2(y, f) << endl; - - } // end loop of fleets for size selex and retention and discard mortality - - // SS_Label_Info_22.6 #Do age-selectivity - else - { - for (gg = 1; gg <= gender; gg++) - { - if (gg == 1 || (gg == 2 && seltype(f, 3) >= 3) || (gg == 2 && (seltype(f, 1) == 44 || seltype(f, 1) == 45))) // in age selex - { - // SS_Label_Logic_22.7 #Switch depending on the age-selectivity pattern selected - switch (seltype(f, 1)) - { - - // SS_Label_Info_22.7.0 #Constant age-specific selex for ages 0 to nages - case 0: - { - sel_a(y, fs, 1)(0, nages) = 1.00; - break; - } - - // SS_Label_Info_22.7.10 #Constant age-specific selex for ages 1 to nages - case 10: - { - sel_a(y, fs, 1)(1, nages) = 1.00; - break; - } - - // SS_Label_Info_22.7.11 #Constant age-specific selex for specified age range - case 11: // selex=1.0 within a range of ages - { - // echoinput<nages) {a=nages;} - // sel_a(y,fs,1)(int(value(sp(1))),a)=1.; - sel_a(y, fs, 1) = mirror_mask_a(fs); - break; - } - - // SS_Label_Info_22.7.12 #age selectivity - logistic - case 12: - { - sel_a(y, fs, 1).initialize(); - sel_a(y, fs, 1)(Min_selage(fs), nages) = 1. / (1. + mfexp(neglog19 * (r_ages(Min_selage(fs), nages) - sp(1)) / sp(2))); - break; - } - - // SS_Label_Info_22.7.13 #age selectivity - double logistic - case 13: - // 1=peak, 2=init, 3=infl, 4=slope, 5=final, 6=infl2, 7=slope2, 8=plateau - { - #ifdef DO_ONCE - if (do_once == 1) - { - warnstream << "Age selectivity pattern 13 used; suggest using pattern 18 instead. "; - write_message (SUGGEST, 0); - } - #endif - sel_a(y, fs, 1).initialize(); - t1 = 0. + (1. / (1. + mfexp(-sp(3)))) * (sp(1) - 0.); // INFL - t1min = 1. / (1. + mfexp(-sp(4) * (0. - t1))) * 0.9999999; // asc value at minage - t1max = 1. / (1. + mfexp(-sp(4) * (sp(1) - t1))) * 1.00001; // asc value at peak - t1power = log(0.5) / log((0.5 - t1min) / (t1max - t1min)); - - t2 = (sp(1) + sp(8)) + (1. / (1. + mfexp(-sp(6)))) * (r_ages(nages) - (sp(1) + sp(8))); // INFL - t2min = 1. / (1. + mfexp(-sp(7) * (sp(1) + sp(8) - t2))) * 0.9999; // asc value at peak+ - t2max = 1. / (1. + mfexp(-sp(7) * (r_ages(nages) - t2))) * 1.00001; // asc value at maxage - t2power = log(0.5) / log((0.5 - t2min) / (t2max - t2min)); - final = 1. / (1. + mfexp(-sp(5))); - k1 = int(value(sp(1))); - k2 = int(value(sp(1) + sp(8))); - - for (a = Min_selage(fs); a <= nages; a++) //calculate the value over ages - { - if (a < k1) // ascending limb - { - sel_a(y, fs, 1, a) = sp(2) + (1. - sp(2)) * pow(((1. / (1. + mfexp(-sp(4) * (r_ages(a) - t1))) - t1min) / (t1max - t1min)), t1power); - } - else if (a > k2) // descending limb - { - sel_a(y, fs, 1, a) = 1. + (final - 1.) * pow(((1. / (1. + mfexp(-sp(7) * (r_ages(a) - t2))) - t2min) / (t2max - t2min)), t2power); - } - else // at the peak - { - sel_a(y, fs, 1, a) = 1.0; - } - } // end age loop - break; - } // end double logistic - - // SS_Label_Info_22.7.14 #age selectivity - separate parm for each age - case 14: - { - temp = 9. - max(sp(1, nages + 1)); // this forces at least one age to have selex weight equal to 9 - sel_a(y, fs, 1).initialize(); - for (a = Min_selage(fs); a <= nages; a++) - { - if (sp(a + 1) > -999) - { - sel_a(y, fs, 1, a) = 1. / (1. + mfexp(-(sp(a + 1) + temp))); - } - else - { - sel_a(y, fs, 1, a) = sel_a(y, fs, 1, a - 1); - } - } - break; - } - - // SS_Label_Info_22.7.15 #age selectivity - mirror selex for lower numbered fleet - // must refer to a lower numbered type (f) - case 15: - { - sel_a(y, fs) = sel_a(y, seltype(f, 4)); - break; - } - - // SS_Label_Info_22.7.16 #age selectivity: Coleraine - Gaussian - case 16: - { - t1 = 1 / (1 + mfexp(-sp(1))) * nages; - sel_a(y, fs, 1).initialize(); - for (a = Min_selage(fs); a <= nages; a++) - { - if (a < t1) - { - sel_a(y, fs, 1, a) = mfexp(-square(r_ages(a) - t1) / mfexp(sp(2))); - } - else - { - sel_a(y, fs, 1, a) = 1.0; - } - } - break; - } - - // SS_Label_Info_22.7.17 #age selectivity: each age has parameter as random walk - // #41 each age has parameter as random walk scaled by average of values at low age through high age - // transformation as selex=exp(parm); some special codes */ - case 41: - scaling_offset = 2; - [[fallthrough]]; - case 17: // - { - lastsel = 0.0; // value is the change in log(selex); this is the reference value for age 0 - tempvec_a = -999.; - tempvec_a(0) = 0.0; // so do not try to estimate the first value - int lastage; - if (seltype(f, 4) == 0) - { - lastage = nages; - } - else - { - lastage = abs(seltype(f, 4)); - } - for (a = 1; a <= lastage; a++) - { - // with use of -999, lastsel stays constant until changed, so could create a linear change in ln(selex) - // use of (a+1) is because the first element, sp(1), is for age zero - if (sp(a + 1 + scaling_offset) > -999.) - { - lastsel = sp(a + 1 + scaling_offset); - } - tempvec_a(a) = tempvec_a(a - 1) + lastsel; // cumulative log(selex) -// warning << a << "SP: " << sp(a + 1 + scaling_offset) << " cumul: " << tempvec_a(a) << endl; - } - if (scaling_offset == 0) - { - temp = max(tempvec_a); // find max so at least one age will have selex=1. - } - else - { - int low_bin = int(value(sp(1))); - int high_bin = int(value(sp(2))); - // checks and adjustments below should happen in readcontrol - if (low_bin < 0) - { - low_bin = 0; - warnstream << "Selex pattern 41; value for low bin is less than 0, so set to 0 "; - write_message (ADJUST, 0); - } - if (high_bin > nages) - { - high_bin = nages; - warnstream << "Selex pattern 41; value for high bin is greater than " << nages << ", so set to " << nages; - write_message (ADJUST, 0); - } - if (high_bin < low_bin) - high_bin = low_bin; - if (low_bin > high_bin) - low_bin = high_bin; - sp(1) = low_bin; - sp(2) = high_bin; - temp = mean(tempvec_a(low_bin, high_bin)); -// warning << tempvec_a(low_bin, high_bin) << endl; -// warning << low_bin << " " << high_bin << " mean " << temp << endl; - } - sel_a(y, fs, 1) = mfexp(tempvec_a - temp); - a = 0; - while (sp(a + 1 + scaling_offset) == -1000) // reset range of young ages to selex=0.0 - { - sel_a(y, fs, 1, a) = 0.0; - a++; - } - scaling_offset = 0; // reset scaling offset - if (lastage < nages) - { - for (a = lastage + 1; a <= nages; a++) - { - if (seltype(f, 4) > 0) - { - sel_a(y, fs, 1, a) = sel_a(y, fs, 1, a - 1); - } - else - { - sel_a(y, fs, 1, a) = 0.0; - } - } - } - break; - } - - case 44: // like age selex 17 but with separate parameters for males and with revised controls - { - // sp(1) is first age with non-zero selectivity; can be age 0 - // seltype(f,4) is number of selectivity change parameters beginning at age=first_age+1 - // sp(2) is first age for which mean selex=1 - // sp(3) is last age for which mean selex=1 - // sp(4) is male mean selex relative to female mean. - // -999 code means to keep the change unchanged from previous age (so keeps same rate of change) - // -1000 code is only for males and sets the male change to be same as female change - // gg is the index for sex, where 1=female, 2=male - sel_a(y, fs, gg).initialize(); - dvariable seldelta = 0.0; // value is the change in log(selex) - tempvec_a.initialize(); // null value for vector - // echoinput<<" sp "< -999.) - { - seldelta = sp(j); - } // so allows for seldelta to remain unchanged - else if (gg == 2 && sp(j) == -1000.) // more options for male selectivity - { - seldelta = sp(j - seltype(f, 4)); - } // use female delta for the male delta at this age - tempvec_a(a) = tempvec_a(a - 1) + seldelta; // cumulative log(selex) - } - int low_bin = int(value(sp(2))); - int high_bin = int(value(sp(3))); - #ifdef DO_ONCE - if (do_once == 1) // this should move to readcontrol! - { - if (low_bin < 0) - { - low_bin = 0; - warnstream << "Selex pattern 44; value for low bin is less than 0, so set to 0 "; - write_message (ADJUST, 0); - } - if (high_bin > nages) - { - high_bin = nages; - warnstream << "Selex pattern 44; value for high bin is greater than " << nages << ", so set to " << nages; - write_message (ADJUST, 0); - } - if (high_bin < low_bin) - high_bin = low_bin; - if (low_bin > high_bin) - low_bin = high_bin; - sp(2) = low_bin; - sp(3) = high_bin; - } - #endif - temp = mean(tempvec_a(low_bin, high_bin)); - sel_a(y, fs, gg)(first_age, last_age) = mfexp(tempvec_a(first_age, last_age) - temp); - if (gg == 2) - sel_a(y, fs, gg)(first_age, last_age) *= mfexp(sp(4)); // apply male ratio - if (last_age < nages) - { - sel_a(y, fs, gg)(last_age + 1, nages) = sel_a(y, fs, gg, last_age); - } - scaling_offset = 0; - break; - } - - case 45: // like age selex 14 but with separate parameters for males and with revised controls - { - // parameter value is logit(selectivity) - // peak selex in logit space is penalized towards value of 8.0, which gives selex near 1.0 - // sp(1) is first age with non-zero selectivity; can be age 0 - // seltype(f,4) is number of selectivity parameters beginning at age=first_age - // sp(2) is first age in mean for peak selex - // sp(3) is last age in mean for peak selex - // sp(4) is male mean selex relative to female mean. - // -999 code means to keep the selex same as previous age - // -1000 code is only for males and sets the male selex to be same as female selex - // gg is the index for sex, where 1=female, 2=male - sel_a(y, fs, gg).initialize(); - tempvec_a.initialize(); // null value for vector - int first_age = int(value(sp(1))); - int last_age = first_age + seltype(f, 4) - 1; // because seltype(f,4) contains the number of ages with selex parameter - if (gg == 1) - { - scaling_offset = 2 + gender; - } - else - { - scaling_offset = 2 + gender + seltype(f, 4); - } // to get male vs female starting point for parameters - j = scaling_offset; - for (a = first_age; a <= last_age; a++) - { - j++; - if (sp(j) > -999) - { - tempvec_a(a) = sp(j); - } - else if (gg == 2 && sp(j) == -1000.) // set male selectivity raw value same as female - { - tempvec_a(a) = sp(j - seltype(f, 4)); - } // use female parameter for males - else // so value is -999 so set to next younger age - { - tempvec_a(a) = tempvec_a(a - 1); - } - } - int low_bin = int(value(sp(2))); - int high_bin = int(value(sp(3))); - #ifdef DO_ONCE - if (do_once == 1) // this should move to readcontrol! - { - if (low_bin < 0) - { - low_bin = 0; - warnstream << "Selex pattern 44; value for low bin is less than 0, so set to 0 "; - write_message (ADJUST, 0); - } - if (high_bin > nages) - { - high_bin = nages; - warnstream << "Selex pattern 44; value for high bin is greater than " << nages << ", so set to " << nages; - write_message (ADJUST, 0); - } - if (high_bin < low_bin) - high_bin = low_bin; - if (low_bin > high_bin) - low_bin = high_bin; - } - #endif - temp = 8. - mean(tempvec_a(low_bin, high_bin)); - // CrashPen+=temp*temp; - sel_a(y, fs, gg)(first_age, last_age) = 1. / (1. + mfexp(-(tempvec_a(first_age, last_age) + temp))); - if (gg == 2) - { - sel_a(y, fs, gg)(first_age, last_age) *= mfexp(sp(4)); - } // apply male ratio - if (last_age < nages) - { - sel_a(y, fs, gg)(last_age + 1, nages) = sel_a(y, fs, gg, last_age); - } - scaling_offset = 0; - break; - } - - // SS_Label_Info_22.7.18 #age selectivity: double logistic with smooth transition - case 18: - // 1=peak, 2=init, 3=infl, 4=slope, 5=final, 6=infl2, 7=slope2 - { - - #ifdef DO_ONCE - if (do_once == 1) - { - warnstream << "Selectivity pattern 20 is recommended over pattern 18 because it has fewer parameters."; - write_message (SUGGEST, 0); - } - #endif - - sel_a(y, fs, 1).initialize(); - t1 = 0. + (1. / (1. + mfexp(-sp(3)))) * (sp(1) - 0.); // INFL - t1min = 1. / (1. + mfexp(-sp(4) * (0. - t1))) * 0.9999; // asc value at minsize - t1max = 1. / (1. + mfexp(-sp(4) * (sp(1) - t1))) * 1.00001; // asc value at peak - t1power = log(0.5) / log((0.5 - t1min) / (t1max - t1min)); - - t2 = (sp(1) + sp(8)) + (1. / (1. + mfexp(-sp(6)))) * (r_ages(nages) - (sp(1) + sp(8))); // INFL - t2min = 1. / (1. + mfexp(-sp(7) * (sp(1) + sp(8) - t2))) * 0.9999; // asc value at peak+ - t2max = 1. / (1. + mfexp(-sp(7) * (r_ages(nages) - t2))) * 1.00001; // asc value at maxage - t2power = log(0.5) / log((0.5 - t2min) / (t2max - t2min)); - final = 1. / (1. + mfexp(-sp(5))); - for (a = Min_selage(fs); a <= nages; a++) //calculate the value over ages - { - sel_a(y, fs, 1, a) = - (( - (sp(2) + (1. - sp(2)) * pow(((1. / (1. + mfexp(-sp(4) * (r_ages(a) - t1))) - t1min) / (t1max - t1min)), t1power)) / (1.0 + mfexp(30. * (r_ages(a) - sp(1)))) // scale ascending side - + - 1. / (1. + mfexp(-30. * (r_ages(a) - sp(1)))) // flattop, with scaling - ) / - (1. + mfexp(30. * (r_ages(a) - (sp(1) + sp(8))))) // scale combo of ascending and flattop - + - (1. + (final - 1.) * pow(fabs(((1. / (1. + mfexp(-sp(7) * (r_ages(a) - t2))) - t2min) / (t2max - t2min))), t2power)) / (1. + mfexp(-30. * (r_ages(a) - (sp(1) + sp(8))))) // scale descending - ); - } // end age loop - break; - } // end double logistic with smooth transition - - // SS_Label_Info_22.7.19 #age selectivity: old double logistic - case 19: - { - k1 = int(value(sp(5))); - sel_a(y, fs, 1)(k1, nages) = elem_prod((1. / (1. + mfexp(-sp(2) * (r_ages(k1, nages) - sp(1))))), - (1. - 1. / (1. + mfexp(-sp(4) * (r_ages(k1, nages) - (sp(1) * sp(6) + sp(3))))))); - sel_a(y, fs, 1)(k1, nages) /= max(sel_a(y, fs, 1)(k1, nages)); - if (k1 > 0) - sel_a(y, fs, 1)(0, k1 - 1) = 1.0e-6; - break; - } - - // SS_Label_Info_22.7.20 #age selectivity: double normal with plateau - case 20: // *******double_normal_plateau - { - if (seltype(f, 3) < 3 || (gg == 1 && seltype(f, 3) == 3) || (gg == 2 && seltype(f, 3) == 4)) - { - peak = sp(1); - upselex = mfexp(sp(3)); - downselex = mfexp(sp(4)); - final = sp(6); - Apical_Selex = 1.0; - } - else - { // offset male parameters if seltype(f,3)==3 - peak = sp(1) + sp(Maleselparm(f)); - upselex = mfexp(sp(3) + sp(Maleselparm(f) + 1)); - downselex = mfexp(sp(4) + sp(Maleselparm(f) + 2)); - if (sp(6) > -999.) - final = sp(6) + sp(Maleselparm(f) + 3); - Apical_Selex = sp(Maleselparm(f) + 4); - } - if (sp(5) < -1000.) - { - j = -1001 - int(value(sp(5))); // selex is nil thru age j, so set sp(5) equal to first age with selex (e.g. -1002 to start selex at age 2) - sel_a(y, fs, gg)(0, j) = 1.0e-06; - } - else - { - j = Min_selage(fs) - 1; // start selex at Min_selage - if (sp(5) > -999) - { - point1 = 1. / (1. + mfexp(-sp(5))); - t1min = mfexp(-(square(0. - peak) / upselex)); // fxn at first bin - } - } - if (sp(6) < -1000.) - { - j2 = -1000 - int(value(sp(6))); // selex is constant beyond this age, so set sp(6) equal to last age with estimated selex - // (e.g. -1008 to be constant beyond age 8) - } - else - { - j2 = nages; - } - - peak2 = peak + 1. + (0.99 * r_ages(j2) - peak - 1.) / (1. + mfexp(-sp(2))); // note, this uses age=j2 as constraint on range of "peak2" - // peak2=peak+.1+(0.99*r_ages(j2)-peak-.1)/(1.+mfexp(-sp(2))); // note, this uses age=j2 as constraint on range of "peak2" - if (sp(6) > -999) - { - point2 = 1. / (1. + mfexp(-final)); - t2min = mfexp(-(square(r_ages(nages) - peak2) / downselex)); // fxn at last bin - } - - for (a = j + 1; a <= j2; a++) - { - t1 = r_ages(a) - peak; - t2 = r_ages(a) - peak2; - join1 = 1. / (1. + mfexp(-(20. / (1. + fabs(t1))) * t1)); - join2 = 1. / (1. + mfexp(-(20. / (1. + fabs(t2))) * t2)); - if (sp(5) > -999) - { - asc = point1 + (Apical_Selex - point1) * (mfexp(-square(t1) / upselex) - t1min) / (1. - t1min); - } - else - { - asc = Apical_Selex * mfexp(-square(t1) / upselex); - } - if (sp(6) > -999) - { - dsc = Apical_Selex + (point2 - Apical_Selex) * (mfexp(-square(t2) / downselex) - 1.) / (t2min - 1.); - } - else - { - dsc = Apical_Selex * mfexp(-square(t2) / downselex); - } - sel_a(y, fs, gg, a) = asc * (1. - join1) + join1 * (Apical_Selex * (1. - join2) + dsc * join2); - } - if (j2 < nages) - { - sel_a(y, fs, gg)(j2 + 1, nages) = sel_a(y, fs, gg, j2); - } - break; - } - - // SS_Label_Info_22.7.26 #age selectivity: exponential logistic - case 26: - { - // peak = r_ages(0) + sp(2)*(r_ages(nages)-r_ages(0)); - sel_a(y, fs, 1).initialize(); - peak = sp(2) * r_ages(nages); - for (a = Min_selage(fs); a <= nages; a++) - { - sel_a(y, fs, 1, a) = mfexp(sp(3) * sp(1) * (peak - r_ages(a))) / (1.0 - sp(3) * (1.0 - mfexp(sp(1) * (peak - r_ages(a))))); - } - break; - } - - // SS_Label_Info_22.7.27 #age selectivity: cubic spline - // #42 cubic spline scaled by average of values at low age through high age - case 42: - scaling_offset = 2; - [[fallthrough]]; - case 27: - { - // define vectors which form the basis for cubic spline selectivity - // IMPORTANT: these vectors might need to be expanded to fit values for multiple fleets - dvector splineX(1, 200); - dvar_vector splineY(1, 200); - splineX.initialize(); - splineY.initialize(); - sel_a(y, fs, 1).initialize(); - k = seltype(f, 4); // n points to include in cubic spline - for (i = 1; i <= k; i++) - { - splineX(i) = value(sp(i + 3 + scaling_offset)); // "value" required to avoid error, but values should be always fixed anyway - splineY(i) = sp(i + 3 + k + scaling_offset); - } - // calculate last age before first knot - z = 0; - while (r_ages(z) < splineX(1)) - { - z++; - } - j1 = z - 1; // last age before first knot - - // calculate first age beyond last knot - z = nages; - while (r_ages(z) > splineX(k)) - { - z--; - } - j2 = z + 1; // first age beyond last knot - - vcubic_spline_function splinefn = vcubic_spline_function(splineX(1, k), splineY(1, k), sp(2 + scaling_offset), sp(3 + scaling_offset)); - tempvec_a = splinefn(r_ages); // interpolate selectivity at each age - if (scaling_offset == 0) - { - temp = max(tempvec_a(0, j2)); - // if spline code on first parameter line is 10, 11, or 12, then - // scale only based on interval between knots (unless first knot is at age 0) - if ((sp(1) >= 10) & (j1 >= 0)) - { - temp = max(tempvec_a(j1, j2)); - } - } - else - { - int low_bin = int(value(sp(1))); - int high_bin = int(value(sp(2))); - if (low_bin < Min_selage(fs)) - { - low_bin = Min_selage(fs); - warnstream << "Selex pattern 42; value for low bin is less than min_selage, so set to " << Min_selage(fs); - write_message (ADJUST, 0); - } - if (high_bin > nages) - { - high_bin = nages; - warnstream << "Selex pattern 42; value for high bin is greater than " << nages << ", so set to " << nages; - write_message (ADJUST, 0); - } - if (high_bin < low_bin) - high_bin = low_bin; - if (low_bin > high_bin) - low_bin = high_bin; - sp(1) = low_bin; - sp(2) = high_bin; - temp = mean(tempvec_a(low_bin, high_bin)); - } - tempvec_a -= temp; // rescale to get max of 0.0 - tempvec_a(j2 + 1, nages) = tempvec_a(j2); // set constant above last knot - sel_a(y, fs, 1)(Min_selage(fs), nages) = mfexp(tempvec_a)(Min_selage(fs), nages); - // if spline code on third parameter line is 10, 11, or 12, then - // set to zero before the first knot (unless first knot is at age 0) - if ((sp(1 + scaling_offset) >= 10) & (j1 >= 0)) - { - sel_a(y, fs, 1)(0, j1) = 0; // set to 0 before first knot (unless first knot is at 0) - } - scaling_offset = 0; // reset scaling offset - break; - } // end age-based cubic spline (type 42 or 27) - - default: // seltype not found. But really need this check earlier when the N selex parameters are being processed. - { - warnstream << "Age selectivity option " << seltype(f, 1) << " not valid."; - write_message (FATAL, 0); // EXIT! - break; - } - - } // end last age selex pattern - } // end direct calc of selex from parameters - - // SS_Label_Info_22.8 #age selectivity: one sex selex as offset from other sex - if (gg == 2) // males exist - { - if (seltype(f, 3) == 1 || seltype(f, 3) == 2) // do gender selex as offset - { - k = Maleselparm(f); // first male parm - temp = sp(k) - 0.00001; - temp1 = 1.; - switch (seltype(f, 3)) - { - case 1: - { // do males relative to females - for (a = Min_selage(fs); a <= nages; a++) // - { - if (r_ages(a) <= temp) - { - sel_a(y, fs, 2, a) = sel_a(y, fs, 1, a) * mfexp(sp(k + 1) + (r_ages(a) - 0.) / (temp - 0.) * (sp(k + 2) - sp(k + 1))); - } - else - { - sel_a(y, fs, 2, a) = sel_a(y, fs, 1, a) * mfexp(sp(k + 2) + (r_ages(a) - temp) / (double(nages) - temp) * (sp(k + 3) - sp(k + 2))); - } - // if(sel_a(y,fs,2,a)>temp1) temp1=sel_a(y,fs,2,a); - } - tempvec_a(1) = max(sel_a(y, fs, 1)); - tempvec_a(2) = max(sel_a(y, fs, 2)); - temp1 = max(tempvec_a(1, 2)); - sel_a(y, fs) /= temp1; - break; - } - case 2: - { // do females relative to males - sel_a(y, fs, 2) = sel_a(y, fs, 1); - for (a = Min_selage(fs); a <= nages; a++) // - { - if (r_ages(a) <= temp) - { - sel_a(y, fs, 1, a) = sel_a(y, fs, 2, a) * mfexp(sp(k + 1) + (r_ages(a) - 0.) / (temp - 0.) * (sp(k + 2) - sp(k + 1))); - } - else - { - sel_a(y, fs, 1, a) = sel_a(y, fs, 2, a) * mfexp(sp(k + 2) + (r_ages(a) - temp) / (double(nages) - temp) * (sp(k + 3) - sp(k + 2))); - } - // if(sel_a(y,fs,1,a)>temp1) temp1=sel_a(y,fs,1,a); - } - // sel_a(y,fs)/=temp1; - tempvec_a(1) = max(sel_a(y, fs, 1)); - tempvec_a(2) = max(sel_a(y, fs, 2)); - temp1 = max(tempvec_a(1, 2)); - sel_a(y, fs) /= temp1; - - break; - } - } - } - else if (seltype(f, 3) != 3 && seltype(f, 3) != 4 && seltype(f, 1) != 15 && seltype(f, 1) != 44 && seltype(f, 1) != 45) - { - sel_a(y, fs, 2) = sel_a(y, fs, 1); - } // set males = females - if (docheckup == 1) - echoinput << " sel-age " << sel_a(y, fs) << endl; - } - } // end gender loop - - // apply 2D_AR adjustment to sex-specific age selectivity - // TwoD_AR_def: read: 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase; 10-before_yrs, 11=after_yrs, - // calc quantities: 12-N_parm_dev, 13-selparm_location - - if (TwoD_AR_use(f) > 0) - { - j = TwoD_AR_use(f); // get index for this fleet's effect - if (TwoD_AR_def[j](8) == 2) // age (2) vs length (1) flag - { - z = TwoD_AR_def[j](12); // index of dev vector used - if (docheckup == 1) - echoinput << "age-based 2DAR for fleet: " << f << " 2DAR: " << j << " using dev_vector: " << z << endl; - - if (y == styr && (TwoD_AR_before(j) == 3 || TwoD_AR_after(j) == 3)) // if needed, calculate average dev for each age over the range of years - { - TwoD_AR_ave(j).initialize(); - for (int yyy = TwoD_AR_ymin(j); yyy <= TwoD_AR_ymax(j); yyy++) - { - k = (yyy - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); // index of 1st dev in vector created from year and age index - for (int ll = TwoD_AR_amin(j); ll <= TwoD_AR_amax(j); ll++) - { - k++; - TwoD_AR_ave(j, ll) += parm_dev(z, k); // sum devs for each age - } - } - TwoD_AR_ave(j) /= (TwoD_AR_ymax(j) - TwoD_AR_ymin(j) + 1.0); - #ifdef DO_ONCE - if (do_once == 1) - echoinput << "mean 2D AR dev for fleet: " << f << " means: " << TwoD_AR_ave(j) << endl; - #endif - } - - if (y < TwoD_AR_ymin(j)) // early years - { - if (TwoD_AR_before(j) == 0) // apply no devs - { - k = -2; - } - else if (TwoD_AR_before(j) == 1) // use first year devs - { - // k=(TwoD_AR_ymin(j)-TwoD_AR_ymin(j))*(TwoD_AR_amax(j)-TwoD_AR_amin(j)+1); // index of 1st dev in vector created from year and age index - k = 0; - } - else if (TwoD_AR_before(j) == 3) // use mean age-specific devs - { - k = -1; - } - } - else if (y <= TwoD_AR_ymax(j)) // in year range for annual devs - { - k = (y - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); // index of 1st dev in vector created from year and age index - } - else // later years - { - if (TwoD_AR_after(j) == 0) // apply no devs - { - k = -2; - } - else if (TwoD_AR_after(j) == 1) // use last year devs - { - k = (TwoD_AR_ymax(j) - TwoD_AR_ymin(j)) * (TwoD_AR_amax(j) - TwoD_AR_amin(j) + 1); - } // index of 1st dev in vector created from year and age index - else if (TwoD_AR_after(j) == 3) // use mean length-specific devs - { - k = -1; - } - } - - if (docheckup == 1) - echoinput << "K value for first dev to use: " << k << endl; - if (k > -2) - { - a1 = TwoD_AR_def[j](13) - 1; // parameter number-1 for sigmasel - dvariable sigmasel; - for (a = TwoD_AR_amin(j); a <= TwoD_AR_amax(j); a++) // loop lengths, using "a" as index - { - if (a <= TwoD_AR_def[j](6)) // so get sigmasel for this length bin - { - a1++; - sigmasel = selparm(a1); - } - if (k >= 0) - { - k++; -// if (docheckup == 1) - temp = sel_a(y, fs, 1, a); - sel_a(y, fs, 1, a) *= mfexp(sigmasel * parm_dev(z, k)); - if (gender == 2) - sel_a(y, fs, 2, a) *= mfexp(sigmasel * parm_dev(z, k)); - } - else // use mean devs - { - sel_a(y, fs, 1, a) *= mfexp(sigmasel * TwoD_AR_ave(j, a)); - if (gender == 2) - sel_a(y, fs, 2, a) *= mfexp(sigmasel * TwoD_AR_ave(j, a)); - } - } - } - if (docheckup == 1) - echoinput << "age selex after 2D_AR" << endl - << sel_a(y, fs) << endl; - } - } - - { // calculation of age retention and discard mortality here - // SS_Label_Info_22.5.1 #Calculate age-specific retention and discmort - // discmort_a is the fraction of discarded fish that die - // discmort2_a is fraction that die from being retained or are dead discard - // = elem_prod(sel_a,(retain_a + (1-retain_a)*discmort_a)) */ - if (seltype(f, 2) == 0) // no discard, all retained - { - retain_a(y, fs) = 1.0; - sel_a_r(y, fs) = sel_a(y, fs); - discmort_a(y, fs) = 1.0; - discmort2_a(y, fs) = sel_a(y, fs); - } - else if (seltype(f, 2) == 3) // none retained; all dead - { - retain_a(y, fs) = 0.0; - discmort_a(y, fs) = 1.0; - sel_a_r(y, fs) = 0.0; - discmort2_a(y, fs) = sel_a(y, fs); - } - else - { - if (seltype(f, 2) < 0) // mirror - { - k = -seltype(f, 2); - retain_a(y, fs) = retain_a(y, k); - discmort_a(y, fs) = discmort_a(y, k); - if (seltype(k, 2) == 1) - { - discmort2_a(y, fs) = sel_a(y, fs); // all selected fish are dead; this statement does both genders implicitly - } - else - { - discmort2_a(y, fs, 1) = elem_prod(sel_a(y, fs, 1), retain_a(y, fs, 1) + elem_prod((1. - retain_a(y, fs, 1)), discmort_a(y, fs, 1))); - if (gender == 2) - discmort2_a(y, fs, 2) = elem_prod(sel_a(y, fs, 2), retain_a(y, fs, 2) + elem_prod((1. - retain_a(y, fs, 2)), discmort_a(y, fs, 2))); - } - } - else - { - k = RetainParm(fs); - if (sp(k + 2) == -999.) - { - temp1 = 0.0; - } - else if (sp(k + 2) == 999.) - { - temp1 = 1.0; - } - else - { - temp1 = 1.0 / (1.0 + mfexp(-sp(k + 2))); - } - - // temp=1.-sp(k+2); - // temp1=1.-posfun(temp,0.0,CrashPen); - - retain_a(y, fs, 1) = temp1 / (1. + mfexp(-(r_ages - (sp(k))) / sp(k + 1))); - if (seltype(f, 2) == 4) - { - // allow for dome-shaped retention in 3.30 only - retain_a(y, fs, 1) = elem_prod(retain_a(y, fs, 1), (1. - (1. / (1. + mfexp(-(r_ages - (sp(k + 4))) / sp(k + 5)))))); - } - if (gender == 2) - { - // males - retain_a(y, fs, 2) = temp1 / (1. + mfexp(-(r_ages - (sp(k) + sp(k + 3))) / sp(k + 1))); - if (seltype(f, 2) == 4) - { - retain_a(y, fs, 2) = elem_prod(retain_a(y, fs, 2), (1. - (1. / (1. + mfexp(-(r_ages - (sp(k + 4) + sp(k + 6))) / sp(k + 5)))))); - } - } - if (docheckup == 1 && y == styr) - { - echoinput << "age_retention parms: inflec: " << sp(k) << " width: " << sp(k + 1) << " male_offset: " << sp(k + 3) << " asymptote: " << temp1; - if (seltype(f, 2) == 4) - { - echoinput << " " << sp(k + 4) << " " << sp(k + 5) << " " << sp(k + 6); - } - echoinput << endl - << "ages " << r_ages << endl; - echoinput << "retention " << retain_a(y, fs) << endl; - } - - if (seltype(f, 2) == 1) // all discards are dead - { - discmort_a(y, fs) = 1.0; - discmort2_a(y, fs) = sel_a(y, fs); // all selected fish are dead; - } - else - { - k += N_ret_parm(seltype(f, 2)); // first discard mortality parm - temp = 1. - sp(k + 2); - temp1 = posfun(temp, 0.0, CrashPen); - discmort_a(y, fs, 1) = (1. - temp1 / (1 + mfexp(-(r_ages - (sp(k))) / sp(k + 1)))); - if (gender == 2) - { - // males - discmort_a(y, fs, 2) = (1. - temp1 / (1 + mfexp(-(r_ages - (sp(k) + sp(k + 3))) / sp(k + 1)))); - } - if (docheckup == 1 && y == styr) - echoinput << "discmort " << discmort_a(y, fs) << endl; - discmort2_a(y, fs, 1) = elem_prod(sel_a(y, fs, 1), retain_a(y, fs, 1) + elem_prod((1. - retain_a(y, fs, 1)), discmort_a(y, fs, 1))); - if (gender == 2) - discmort2_a(y, fs, 2) = elem_prod(sel_a(y, fs, 2), retain_a(y, fs, 2) + elem_prod((1. - retain_a(y, fs, 2)), discmort_a(y, fs, 2))); - } - } - - sel_a_r(y, fs, 1) = elem_prod(sel_a(y, fs, 1), retain_a(y, fs, 1)); - if (gender == 2) - { - sel_a_r(y, fs, 2) = elem_prod(sel_a(y, fs, 2), retain_a(y, fs, 2)); - } - } - if (docheckup == 1 && y == styr) - echoinput << "sel-age-ret " << sel_a_r(y, fs) << endl; - if (docheckup == 1 && y == styr) - echoinput << " dead " << discmort2_a(y, fs) << endl; - // end age discard - } - } // end calc of age selex - } // end recalc of selex - - else - // SS_Label_Info_22.9 #Carryover selex from last year because not time-varying - { - if (f <= Nfleet) - { - sel_l(y, f) = sel_l(y - 1, f); // this does both genders - sel_l_r(y, f) = sel_l_r(y - 1, f); - retain(y, f) = retain(y - 1, f); - discmort(y, f) = discmort(y - 1, f); - discmort2(y, f) = discmort2(y - 1, f); - } - else // age - { - sel_a(y, fs) = sel_a(y - 1, fs); // does both genders - retain_a(y, fs) = retain_a(y - 1, fs); - } - } - - Ip += N_selparmvec(f); - - } // end fleet loop for selectivity - } // end selectivity FUNCTION - -FUNCTION void Make_FishSelex() - { - // Similar to Make_Fecundity, this function does the dot product of length distribution with length selectivity and retention vectors - // to calculate equivalent mean quantities at age for each platoon (g) - //******************************************************************** - /* SS_Label_FUNCTION 32 Make_FishSelex */ - // where: - // 4darray sel_bio(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected * wt - // 4darray sel_ret_bio(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected * retained * wt - // 4darray sel_num(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected numbers - // 4darray sel_ret_num(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected * retained numbers - // 4darray sel_dead_num(1,nseas,1,gmorph,1,Nfleet,0,nages); // sel * (retain + (1-retain)*discmort) - // 4darray sel_dead_bio(1,nseas,1,gmorph,1,Nfleet,0,nages); // sel * (retain + (1-retain)*discmort) * wt - - ALK_idx = (s - 1) * N_subseas + mid_subseas; //for midseason - dvar_matrix ALK_w = ALK(ALK_idx, g); // shallow copy - dvar_vector sel_l_r_w(1, nlength); // temp vector for retained contribution to weight-at-age - dvar_vector disc_wt(1, nlength); - int yf; - int tz; - gg = sx(g); - // if(y>endyr) {yz=endyr; } else {yz=y;} // not used - if (y > endyr + 1 && Fcast_timevary_Selex == 1) // do means - { - yf = endyr + 1; - } - else - { - yf = y; - } // yf stores in endyr+1 the average selex from a range of years if Fcast_timevary_Selex==1 - tz = styr + (y - styr) * nseas + s - 1; // can use y, not yf, because Wt_Age_t values are read in and can extend into forecast - for (f = 1; f <= Nfleet; f++) - { - if (timevary_sel(yf, f) > 0 || timevary_sel(yf, f + Nfleet) > 0 || WTage_rd == 1 || save_for_report > 0) - { - makefishsel_yr = yf; - if (WTage_rd == 1 || (seltype(f, 1) == 0 && seltype(f, 2) == 0)) // empirical wt-at-age or no size-selectivity; so no size-based calculations - { - if (WTage_rd == 1) - { - sel_bio(s, f, g) = elem_prod(sel_a(yf, f, gg), Wt_Age_t(tz, f, g)); // selected wt-at-age - } - else - { - sel_bio(s, f, g) = elem_prod(sel_a(yf, f, gg), Wt_Age_mid(s, g)); // selected wt-at-age - Wt_Age_t(tz, f, g) = Wt_Age_mid(s, g); - } - sel_num(s, f, g) = sel_a(yf, f, gg); // selected numbers - int j = seltype(f + Nfleet, 2); - int k = j; - if (j < 0) // invokes mirror - { - j = -j; // fleet number being mirrored for retention - k = seltype(j + Nfleet, 2); // discard approach for fleet j - // note that retain_a and discmort2_a have already been mirrored earlier in this fxn - } - switch (k) // age-retention function - { - case 0: // no discarding, so just copy the selected quantities - { - sel_ret_bio(s, f, g) = sel_bio(s, f, g); // retained wt-at-age - sel_ret_num(s, f, g) = sel_num(s, f, g); // retained numbers - sel_dead_bio(s, f, g) = sel_bio(s, f, g); // dead wt - sel_dead_num(s, f, g) = sel_num(s, f, g); // dead numbers - break; - } - case 1: // age-based retention function is used; all discarded fish assumed dead and have same bodywt as retained fish - { - sel_ret_bio(s, f, g) = elem_prod(sel_bio(s, f, g), retain_a(y, f, gg)); // retained wt-at-age - sel_ret_num(s, f, g) = elem_prod(sel_num(s, f, g), retain_a(y, f, gg)); // retained numbers - sel_dead_bio(s, f, g) = sel_ret_bio(s, f, g); // dead wt - sel_dead_num(s, f, g) = sel_ret_num(s, f, g); // dead numbers - break; - } - case 2: // age-based retention and discard mortality, same body wt as retained fish - { - // details of retention and mortality already taken into account with calc of discmort2_a - sel_ret_bio(s, f, g) = elem_prod(sel_bio(s, f, g), retain_a(y, f, gg)); // retained wt-at-age - sel_ret_num(s, f, g) = elem_prod(sel_num(s, f, g), retain_a(y, f, gg)); // retained numbers - sel_dead_bio(s, f, g) = elem_prod(Wt_Age_t(tz, f, g), discmort2_a(y, f, gg)); // dead wt - sel_dead_num(s, f, g) = discmort2_a(y, f, gg); // dead numbers -// if (y == styr) warning << f << " sel_ret " << sel_ret_bio(s, f, g) << endl << " sel_dead " << sel_dead_bio(s, f, g) << endl; - break; - } - case 3: // all selected fish are dead; use this for a discard only fleet - { - sel_ret_bio(s, f, g) = 0.0; // retained wt-at-age - sel_ret_num(s, f, g) = 0.0; // retained numbers - sel_dead_bio(s, f, g) = sel_bio(s, f, g); // dead wt - sel_dead_num(s, f, g) = sel_num(s, f, g); // dead numbers - break; - } - } - if (docheckup == 1 && y == styr && do_once == 1) - { - echoinput << f << " sel_ret_bio " << sel_ret_bio(s, f, g) << endl - << f << "retain_a " << retain_a(y, f, gg) << endl - << f << " sel_dead_bio " << sel_dead_bio(s, f, g) << endl; - } - } - - else // size_selectivity and possible size retention - { - tempvec_l = elem_prod(sel_l(yf, f, gg), wt_len(s, GP(g))); // combine size selex and wt_at_len to get selected contribution to weight-at-age - if (seltype(f, 2) != 0) - sel_l_r_w = elem_prod(sel_l_r(yf, f, gg), wt_len(s, GP(g))); - if (seltype(f, 2) >= 2) - disc_wt = elem_prod(discmort2(yf, f, gg), wt_len(s, GP(g))); - for (a = 0; a <= nages; a++) - { - int llo = 1; - int lhi = nlength; - sel_bio(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * tempvec_l(llo, lhi)); - sel_num(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * sel_l(yf, f, gg)(llo, lhi)); - Wt_Age_t(tz, f, g, a) = (ALK_w(a)(llo, lhi) * tempvec_l(llo, lhi)) / (ALK_w(a)(llo, lhi) * sel_l(yf, f, gg)(llo, lhi)); - if (seltype(f, 2) != 0) // size discard, so need retention function - { - sel_ret_bio(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * sel_l_r_w(llo, lhi)); - sel_ret_num(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * sel_l_r(yf, f, gg)(llo, lhi)); - } - else if (a == nages) - { - sel_ret_bio(s, f, g) = sel_bio(s, f, g); - sel_ret_num(s, f, g) = sel_num(s, f, g); - } - - if (seltype(f, 2) >= 2) // calc discard mortality - { - sel_dead_num(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * discmort2(yf, f, gg)(llo, lhi)); // selected dead by numbers - sel_dead_bio(s, f, g, a) = sel_a(yf, f, gg, a) * (ALK_w(a)(llo, lhi) * disc_wt(llo, lhi)); // selected dead by weight - } - else if (a == nages) - { - sel_dead_bio(s, f, g) = sel_bio(s, f, g); - sel_dead_num(s, f, g) = sel_num(s, f, g); - } - - } // end age loop - } - if (write_bodywt > 0 && ishadow(GP2(g)) == 0) - { - bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) - << " " << f << " " << Wt_Age_t(tz, f, g) << " #wt_flt_" << f << endl; - } - } // end need to do it - save_sel_num(t, f, g) = sel_num(s, f, g); // save sel_num in save_fecundity array for output - - } // end fleet loop for mortality, retention - } // end Make_FishSelex -// SS_Label_file #12. **SS_popdyn.tpl** -// SS_Label_file # * setup_recdevs() -// SS_Label_file # * get_initial_conditions() // does virgin and initial year by calling SSBpR_Calc() with F=0, then F=init_F -// SS_Label_file # * get_time_series() // loops the years, calling biology, selectivity and spawn-recr functions as needed -// SS_Label_file # * SSBpR_Calc() // does per-recruit calculations and returns SSB/R and Y/R -// SS_Label_file # - -FUNCTION void setup_recdevs() - { - // SS_Label_Info_7.1 #Set up recruitment bias_adjustment vector - sigmaR = SRparm(N_SRparm(SR_fxn) + 1); - two_sigmaRsq = 2.0 * sigmaR * sigmaR; - half_sigmaRsq = 0.5 * sigmaR * sigmaR; - - biasadj.initialize(); - - if (SR_fxn == 4 || do_recdev == 0) - { - // keep all at 0.0 if not using SR fxn - } - // else if (mceval_phase() || initial_params::mc_phase==1 || recdev_adj(5)<0.0) - else if (mceval_phase() || initial_params::mc_phase == 1) - { - // biasadj=1.0; - biasadj = recdev_doit; // sets to 1.0 for the years or initial ages with estimated recruitments - } - else - { - if (recdev_do_early > 0 && recdev_options(2) >= 0) // do logic on basis of recdev_options(2), which is read, not recdev_PH which can be reset to a neg. value - { - for (i = recdev_early_start; i <= recdev_early_end; i++) - { - if (i >= styr - nages) - biasadj(i) = biasadj_full(i); - } - } - if (do_recdev > 0 && recdev_PH_rd >= 0) - { - for (i = recdev_start; i <= recdev_end; i++) - { - if (i >= styr - nages) - biasadj(i) = biasadj_full(i); - } - } - if (Do_Forecast > 0 && recdev_options(3) >= 0) - { - for (i = recdev_end + 1; i <= YrMax; i++) - { - biasadj(i) = biasadj_full(i); - } - } - if (recdev_read > 0) - { - for (j = 1; j <= recdev_read; j++) - { - y = recdev_input(j, 1); - if (y >= recdev_first && y <= YrMax) - biasadj(y) = biasadj_full(y); - } - } - } - sd_offset_rec = sum(biasadj) * sd_offset; - // SS_Label_Info_7.2 #Copy recdev parm vectors into full time series vector - if (recdev_do_early > 0) - { - recdev(recdev_early_start, recdev_early_end) = recdev_early(recdev_early_start, recdev_early_end); - } - if (do_recdev == 1) - { - recdev(recdev_start, recdev_end) = recdev1(recdev_start, recdev_end); - } - else if (do_recdev >= 2) - { - recdev(recdev_start, recdev_end) = recdev2(recdev_start, recdev_end); - } - if (Do_Forecast > 0 && do_recdev > 0) - recdev(recdev_end + 1, YrMax) = Fcast_recruitments(recdev_end + 1, YrMax); // only needed here for reporting - } // end setup for recdevs - -FUNCTION void get_initial_conditions() - { - //********************************************************************* - /* SS_Label_Function_23 #get_initial_conditions */ - natage.initialize(); - catch_fleet.initialize(); - annual_catch.initialize(); - annual_F.initialize(); - Recr.initialize(); - save_gparm = 0; // index for saving time-varying changes to biology quantities - - if (SzFreq_Nmeth > 0) - SzFreq_exp.initialize(); - - // SS_Label_Info_23.1 #call biology and selectivity functions for the initial year - // SS_Label_Info_23.1.1 #These rate are calculated once in PRELIMINARY_CALCS_SECTION, so only recalculate if active according to MG_active - y = styr; - yz = styr; - t_base = styr - 1; - recr_dist_unf.initialize(); - - // Create time varying parameters - // following call is to routine that does this for all timevary parameters - // that are then copied over to replace the base parameter for MG, SRR, Q, Selex, or Tag as needed - make_timevaryparm(); // this fills array parm_timevary for all years; densitydependence must be done year-by-year later - if (MG_active(0) > 0 || save_for_report > 0) - { - get_MGsetup(y); - } - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " MGsetup OK " << endl; - #endif - if (MG_active(2) > 0) - get_growth1(); // seasonal effects and CV - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " growth1 OK" << endl; - #endif - if (MG_active(2) > 0 || do_once == 1) - { - ALK_subseas_update = 1; // to indicate that all ALKs need calculation - get_growth2(y); - t = styr - 1; - for (s = 1; s <= nseas; s++) - { - t++; - for (subseas = 1; subseas <= N_subseas; subseas++) // do all subseasons in first year - { - get_growth3(y, t, s, subseas); // in case needed for Lorenzen M - Make_AgeLength_Key(s, subseas); - } - } - - // SS_Label_Info_16.2.4.3 #propagate Ave_Size from early years forward until first year that has time-vary growth - k = styr + 1; - do - { - for (s = 1; s <= nseas; s++) - { - t = styr + (k - styr) * nseas + s - 1; - Ave_Size(t, 1) = Ave_Size(t - nseas, 1); - } // end season loop - k++; - } while (timevary_MG(k, 2) == 0 && k <= YrMax); - if (k <= YrMax) - { - t = styr + (k - styr) * nseas; - Ave_Size(t, 1) = Ave_Size(t - nseas, 1); // prep for time-vary next yr - } - } - if (MG_active(3) > 0) - get_wtlen(); // stores values for all seasons - get_mat_fec(); // does just spawn season and subseason using ALK calculated just above - if (Hermaphro_Option != 0) - get_Hermaphro(); - - if (do_once>0 || MG_active(1) > 0) - { - get_natmort(); // gets base M (e.g. M1) by season and stores it in natM(t,0). Later, pred_M2 is added by area - for (s = 1; s <= nseas; s++) - { - natM(t_base - 2 * nseas + s) = natM(t_base + s); // copy to virgin - natM(t_base - nseas + s) = natM(t_base + s); // then to init_conditions year - } - } - - #ifdef DO_ONCE - if (do_once == 1) - echoinput << "natmort OK" << endl; - #endif - - if (MG_active(4) > 0) - get_recr_distribution(); - if (y >= Bmark_Yr(7) && y <= Bmark_Yr(8)) - { - for (gp = 1; gp <= N_GP; gp++) - for (p = 1; p <= pop; p++) - for (settle = 1; settle <= N_settle_timings; settle++) - if (recr_dist_pattern(gp, settle, p) > 0) - { - recr_dist_unf(gp, settle, p) += recr_dist(y, gp, settle, p); - if (gender == 2) - recr_dist_unf(gp + N_GP, settle, p) += recr_dist(y, gp + N_GP, settle, p); - } - } - - if (MG_active(5) > 0) - get_migration(); - #ifdef DO_ONCE - if (do_once == 1) - { - echoinput << "migr OK" << endl; - } - #endif - if (MG_active(7) > 0) - { - get_catch_mult(y, catch_mult_pointer); - for (j = styr + 1; j <= YrMax; j++) - { - catch_mult(j) = catch_mult(y); - } - } - - if (Use_AgeKeyZero > 0) - { - if (MG_active(6) > 0) - get_age_age(Use_AgeKeyZero, AgeKey_StartAge, AgeKey_Linear1, AgeKey_Linear2); // call function to get the age_age key - if (save_for_report == 1 && store_agekey_add > 0) - { - save_agekey_count = N_ageerr + 1; // first blank key after the used keys - age_age(save_agekey_count) = age_age(Use_AgeKeyZero); - age_err(save_agekey_count) = age_err(Use_AgeKeyZero); - } - #ifdef DO_ONCE - if (do_once == 1) - { - echoinput << "age_err key recalc in " << y << endl; - } - #endif - } - - if (save_for_report > 0) - { - get_saveGparm(); - } - - // SS_Label_Info_23.2 #Calculate selectivity in the initial year - get_selectivity(); - #ifdef DO_ONCE - if (do_once == 1) - { - echoinput << "selectivity OK" << endl; - echoinput << "Calculate ALK" << endl; - } - #endif - - // SS_Label_Info_23.3 #Loop seasons and subseasons - t = styr - 1; - for (s = 1; s <= nseas; s++) - { - t++; - - if (WTage_rd > 0) - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Wt_Age_beg(s, g) = Wt_Age_t(t, 0, g); - Wt_Age_mid(s, g) = Wt_Age_t(t, -1, g); - if (s == spawn_seas) - fec(g) = Wt_Age_t(t, -2, g); - } - } - else if (MG_active(2) > 0 || MG_active(3) > 0 || save_for_report > 0 || do_once == 1) - { - // Make_Fecundity(); - if (s == spawn_seas && spawn_seas == 1) - get_mat_fec(); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - subseas = 1; - ALK_idx = (s - 1) * N_subseas + subseas; - Wt_Age_beg(s, g) = (ALK(ALK_idx, g) * wt_len(s, GP(g))); // wt-at-age at beginning of period - subseas = mid_subseas; - ALK_idx = (s - 1) * N_subseas + subseas; - Wt_Age_mid(s, g) = ALK(ALK_idx, g) * wt_len(s, GP(g)); // use for fisheries with no size selectivity - } - } - - Wt_Age_t(t, 0) = Wt_Age_beg(s); - Wt_Age_t(t, -1) = Wt_Age_mid(s); - - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - // SS_Label_Info_23.3.3 #for each platoon, combine size_at_age distribution with length selectivity and weight-at-length to get combined selectivity vectors - Make_FishSelex(); - } - - // SS_Label_Info_23.3.4 #add predator M2 to M1 to update seasonal, areal natM in styr and calc surv for use in Pope's - - if(N_pred>0) - { -// rebase natM to M1, which is stored in the p=0 section of array - for(p = 1; p <= pop; p++) - { - natM(t, p) = natM(t,0); - } -// calc M2 - for (f1 = 1; f1 <= N_pred; f1++) - { - f = predator(f1); - pred_M2(f1, t) = mgp_adj(predparm_pointer(f1)); // base with no seasonal effect - if (nseas > 1) - pred_M2(f1, t) *= mgp_adj(predparm_pointer(f1) + s); - pred_M2(f1, t-nseas) = pred_M2(f1, t); - pred_M2(f1, t-nseas-nseas) = pred_M2(f1, t); - p = fleet_area(f); // area this predator occurs in - - // a new array for indexing g and gpi could simplify below - // for (gp = 1; gp <= N_GP * gender * N_settle_timings; gp++) - // add each M2 to get total M - for (gp = 1; gp <= N_GP * gender; gp++) - { - g = g_Start(gp); // base platoon - for (settle = 1; settle <= N_settle_timings; settle++) - { - g += N_platoon; - int gpi = GP3(g); // GP*gender*settlement - natM(t, p,gpi) += pred_M2(f1, t) * sel_num(s, f, g); - if (do_once == 1 && p == 1) - echoinput << "init " << y << " s " << s << " t " << t << " area " << 0 << " gp " << gpi << " M1: " << natM(t,0, gpi) << endl; - if (do_once == 1) - echoinput << "init " << y << " s " << s << " t " << t << " area " << p << " gp " << gpi << " M1+M2: " << natM(t, p, gpi) << endl; - } - } - } - natM(t-nseas) = natM(t); //for initial equilibrium - natM(t-nseas-nseas) = natM(t); // for virgin - } - - for(p = 1; p <= pop; p++) - { - int s1 = (p - 1) * nseas + s; - surv1(s1) = mfexp( - natM(t,p) * seasdur_half(s)); - surv2(s1) = square(surv1(s1)); - } - } // end season (s) loop in biology, mortality and selectivity calcs in initial year - - #ifdef DO_ONCE - if (do_once == 1) - echoinput << "Begin calculating virgin age struc " << endl; - #endif - // SS_Label_Info_23.4 #calculate unfished (virgin) numbers-at-age - eq_yr = styr - 2; - bio_yr = styr; - Fishon = 0; - virg_fec = fec; - Recr.initialize(); // will store recruitment by area - - // SPAWN-RECR: get expected recruitment globally or by area - if (recr_dist_area == 1 || pop == 1) // do global spawn_recruitment calculations - { - equ_Recr = 1.0; - SSBpR_Calc(equ_Recr); // call function to do per recruit calculation. Returns SPR because R = 1.0 - SSBpR_virgin = SSB_equil; // spawners per recruit. Needed for Sr_fxn = 10 - if(SR_fxn == 10) // B-H with a,b - { - // WHAM based on R = A*S/(1+B*S) - // log_SR_a = log(4 * SR_h/(exp(log_SPR0)*(1 - SR_h))); - // log_SR_b = log((5*SR_h - 1)/((1-SR_h)*SR_R0*exp(log_SPR0))); - // h = a * SPR0 / (4. + a * SPR0) - // R0 = 1/b * (a-1/SPR0) - - alpha = mfexp(SRparm(3)); - beta = mfexp(SRparm(4)); - steepness = alpha * SSBpR_virgin / (4. + alpha * SSBpR_virgin); - Recr_virgin = 1. / beta * (alpha - (1. / SSBpR_virgin)); - SRparm(1) = log(Recr_virgin); - SRparm(2) = steepness; - } - else - { - Recr_virgin = mfexp(SRparm(1)); - } - - for (int i = 1; i <= N_SRparm2; i++) - { - SRparm_byyr(eq_yr, i) = SRparm(i); - SRparm_virg(i) = SRparm(i); - SRparm_work(i) = SRparm(i); - } -// if (SR_fxn == 3) warning << "tester_A: " << SRparm_work(1) << " base: " << SRparm(1) << endl; -// if (SR_fxn == 10) warning << "tester_A: " << SRparm_work(4) << " base: " << SRparm(4) << endl; - equ_Recr = Recr_virgin; - exp_rec(eq_yr, 1) = Recr_virgin; // expected Recr from s-r parms - exp_rec(eq_yr, 2) = Recr_virgin; - exp_rec(eq_yr, 3) = Recr_virgin; - exp_rec(eq_yr, 4) = Recr_virgin; - SSBpR_Calc(equ_Recr); // call function to do per recruit calculation - SSB_virgin = SSB_equil; - if(Do_Benchmark==0) // assign values that would be created in benchmark section - { - SSB_unf = SSB_virgin; - Mgmt_quant(1) = SSB_unf; // will be overwritten in benchmark - Recr_unf = Recr_virgin; // will be overwritten in benchmark - Mgmt_quant(2) = totbio; // from Do_Equil_Calc - Mgmt_quant(3) = smrybio; // from Do_Equil_Calc - Mgmt_quant(4) = Recr_virgin; - } - Smry_Table(styr - 2, 1) = totbio; // from equil calcs - Smry_Table(styr - 2, 2) = smrybio; // from equil calcs - Smry_Table(styr - 2, 3) = smrynum; // from equil calcs - SSB_pop_gp(eq_yr) = SSB_equil_pop_gp; // dimensions of pop x N_GP - if (Hermaphro_Option != 0) - MaleSSB(eq_yr) = MaleSSB_equil_pop_gp; - SSB_yr(eq_yr) = SSB_equil; - SRparm_byyr(eq_yr, N_SRparm2 + 1) = SSB_equil; - SRparm_virg(N_SRparm2 + 1) = SSB_equil; - SRparm_work(N_SRparm2 + 1) = SSB_equil; - t = styr - 2 * nseas - 1; - for (s = 1; s <= nseas; s++) - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - { - if (use_morph(g) > 0) - { - natage(t + s, p, g)(0, nages) = equ_numbers(s, p, g)(0, nages); - Z_rate(t + s, p, g)(0, nages) = equ_Z(s, p, g)(0, nages); - } - } - } - if (save_for_report > 0) - { - SSB_B_yr(eq_yr).initialize(); - SSB_N_yr(eq_yr).initialize(); - for (s = 1; s <= nseas; s++) - { - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (s == spawn_seas && sx(g) == 1) - { - SSB_B_yr(eq_yr) += make_mature_bio(GP4(g)) * natage(t + s, p, g); - SSB_N_yr(eq_yr) += make_mature_numbers(GP4(g)) * natage(t + s, p, g); - } - Save_PopAge(t + s, p, g) = natage(t + s, p, g); - Save_PopAge(t + s, p + pop, g) = elem_prod(natage(t + s, p, g), mfexp(-Z_rate(t + s, p, g) * 0.5 * seasdur(s))); - if (Settle_seas(settle_g(g)) == s) - Recr(p, t + 1 + Settle_seas_offset(settle_g(g))) += equ_Recr * recr_dist(y, GP(g), settle_g(g), p) * platoon_distr(GP2(g)); - Save_PopBio(t + s, p, g) = elem_prod(natage(t + s, p, g), Wt_Age_beg(s, g)); - Save_PopBio(t + s, p + pop, g) = elem_prod(Save_PopAge(t + s, p + pop, g), Wt_Age_mid(s, g)); - } - for (int ff = 1; ff <= N_pred; ff++) - { - f = predator(ff); - for (g = 1; g <= 6; g++) - { - catch_fleet(t + s, f, g) = equ_catch_fleet(g, s, f); - } - for (g = 1; g <= gmorph; g++) - { - catage(t + s, f, g) = equ_catage(s, f, g); - } - } - } - } - } - else // area-specific spawn-recruitment - { - } - -// SS_Label_Info_23.5 #Calculate equilibrium using initial F - #ifdef DO_ONCE - if (do_once == 1) - echoinput << "Begin calculating initial age structure" << endl; - #endif - eq_yr = styr - 1; - bio_yr = styr; - if (fishery_on_off == 1) - { - Fishon = 1; - } - else - { - Fishon = 0; - } - - for (f = 1; f <= N_SRparm2; f++) - { - if (SRparm_timevary(f) == 0) - { - // no change to SRparm_work - } - else - { - SRparm_work(f) = parm_timevary(SRparm_timevary(f), eq_yr); -// warning << "tester_B: " << SRparm_work(f) << " timevary " << " base " << SRparm(f) < 0) - { - Hrate(f, t) = init_F(init_F_loc(s, f)); - } - } - } - // for the initial equilibrium, R0 and steepness will remain same as for virgin, but a regime shift is allowed - // change with 3.30.12 to allow R0 to change according to a timevary effect - // exp_rec(eq_yr,1)=Recr_virgin; - // R1_exp=Recr_virgin; - R1_exp = mfexp(SRparm_work(1)); - exp_rec(eq_yr, 1) = R1_exp; - // SS_Label_Info_23.5.1 #Apply adjustments to the recruitment level - // SPAWN-RECR: adjust recruitment for the initial equilibrium - regime_change = 1.0; - if (SRparm_timevary(N_SRparm2 - 1) > 0) // timevary regime exists - { - regime_change = mfexp(SRparm_work(N_SRparm2 - 1)); - } - - if (init_equ_steepness == 0) // Adjustments do not include spawner-recruitment steepness - { - // R1=Recr_virgin*regime_change; - R1 = R1_exp * regime_change; - exp_rec(eq_yr, 2) = R1; - exp_rec(eq_yr, 3) = R1; - exp_rec(eq_yr, 4) = R1; - equ_Recr = R1; // equ_Recr is used inside of SSBpR_Calc - SSBpR_Calc(equ_Recr); - CrashPen += Equ_penalty; - } - else - { - // SS_Label_Info_23.5.1.2 #Adjustments include spawner-recruitment function - // do initial equilibrium with R1 based on offset from spawner-recruitment curve, using same approach as the benchmark calculations - // first get SPR for this init_F - // SPAWN-RECR: calc initial equilibrium pop, SSB, Recruitment - // equ_Recr=Recr_virgin; -// equ_Recr = R1_exp * regime_change; // NOTE: seems wrong to apply regime here - equ_Recr = R1_exp; - SSBpR_Calc(equ_Recr); - CrashPen += Equ_penalty; - SSBpR_temp = SSB_equil / equ_Recr; // spawners per recruit at initial F - // get equilibrium SSB and recruitment from SSBpR_temp, Recr_virgin and virgin steepness - // this is the initial year, so no time-vary effects available, so uses _virgin quantities for spawner-recruitment - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_work, SSB_virgin, Recr_virgin, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - R1_exp = Equ_SpawnRecr_Result(2); // set the expected recruitment equal to this equilibrium - exp_rec(eq_yr, 1) = R1_exp; - - equ_Recr = R1_exp * regime_change; - exp_rec(eq_yr, 2) = equ_Recr; - exp_rec(eq_yr, 3) = equ_Recr; - exp_rec(eq_yr, 4) = equ_Recr; - R1 = equ_Recr; - SSBpR_Calc(equ_Recr); // calculated SSB_equil - CrashPen += Equ_penalty; - } - Smry_Table(styr - 1, 1) = totbio; // from equil calcs - Smry_Table(styr - 1, 2) = smrybio; // from equil calcs - Smry_Table(styr - 1, 3) = smrynum; // from equil calcs - - SSB_pop_gp(eq_yr) = SSB_equil_pop_gp; // dimensions of pop x N_GP - if (Hermaphro_Option != 0) - MaleSSB(eq_yr) = MaleSSB_equil_pop_gp; - SSB_yr(eq_yr) = SSB_equil; - SRparm_byyr(eq_yr, N_SRparm2 + 1) = SSB_equil; - SRparm_work(N_SRparm2 + 1) = SSB_equil; - SSB_yr(styr) = SSB_equil; - env_data(styr - 1, -1) = 0.0; - env_data(styr - 1, -2) = 0.0; - env_data(styr - 1, -3) = 0.0; - env_data(styr - 1, -4) = 0.0; - - /* - // save est_equ_catch which has units (biomass vs numbers) according to that fleet; used in objfun - for (s = 1; s <= nseas; s++) - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (catchunits(f) == 1) - { - est_equ_catch(s, f) = equ_catch_fleet(2, s, f); - } - else - { - est_equ_catch(s, f) = equ_catch_fleet(5, s, f); - } - } - */ -// if (save_for_report > 0) - { - for (s = 1; s <= nseas; s++) - { - t = styr - nseas - 1 + s; - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - for (g = 1; g <= 6; g++) - { - catch_fleet(t, f, g) = equ_catch_fleet(g, s, f); - annual_catch(styr - 1, g) += equ_catch_fleet(g, s, f); - } - for (g = 1; g <= gmorph; g++) - { - catage(t, f, g) = equ_catage(s, f, g); - } - } - for (int ff = 1; ff <= N_pred; ff++) - { - f = predator(ff); - for (g = 1; g <= 6; g++) - { - catch_fleet(t, f, g) = equ_catch_fleet(g, s, f); - } - for (g = 1; g <= gmorph; g++) - { - catage(t, f, g) = equ_catage(s, f, g); - } - } - } - for (k = 1; k <= 3; k++) - { - Smry_Table(styr - 1, k + 3) = annual_catch(styr - 1, k); - } - } - - for (s = 1; s <= nseas; s++) - { - t = styr - nseas - 1 + s; - a = styr - 1 + s; - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - { - natage(t, p, g)(0, nages) = equ_numbers(s, p, g)(0, nages); - natage(a, p, g)(0, nages) = equ_numbers(s, p, g)(0, nages); - Z_rate(t, p, g) = equ_Z(s, p, g); - } - } - - if (save_for_report > 0) - { - t = styr - nseas - 1; - SSB_B_yr(eq_yr).initialize(); - SSB_N_yr(eq_yr).initialize(); - for (s = 1; s <= nseas; s++) - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (s == spawn_seas && sx(g) == 1) - { - SSB_B_yr(eq_yr) += make_mature_bio(GP4(g)) * natage(t + s, p, g); - SSB_N_yr(eq_yr) += make_mature_numbers(GP4(g)) * natage(t + s, p, g); - } - Save_PopAge(t + s, p, g) = natage(t + s, p, g); - Save_PopAge(t + s, p + pop, g) = elem_prod(natage(t + s, p, g), mfexp(-Z_rate(t + s, p, g) * 0.5 * seasdur(s))); - Save_PopBio(t + s, p, g) = elem_prod(natage(t + s, p, g), Wt_Age_beg(s, g)); - Save_PopBio(t + s, p + pop, g) = elem_prod(Save_PopAge(t + s, p + pop, g), Wt_Age_mid(s, g)); - if (Settle_seas(settle_g(g)) == s) - Recr(p, t + 1 + Settle_seas_offset(settle_g(g))) += equ_Recr * recr_dist(y, GP(g), settle_g(g), p) * platoon_distr(GP2(g)); - } - } - - if (docheckup == 1) - echoinput << " init equil age comp for styr " << styr << endl - << natage(styr) << endl - << endl; - - // if recrdevs start before styr, then use them to adjust the initial agecomp - // apply a fraction of the bias adjustment, so bias adjustment gets less linearly as proceed back in time - if (recdev_first < styr) - { - if (do_recdev <= 2 && SR_fxn != 4) - { - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - for (a = styr - recdev_first; a >= 1; a--) - { - j = styr - a; - natage(styr, p, g, a) *= mfexp(recdev(j) - biasadj(j) * half_sigmaRsq); - } - } - else - { - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - for (a = styr - recdev_first; a >= 1; a--) - { - j = styr - a; - natage(styr, p, g, a) *= mfexp(recdev(j)); - } - } - } - SSB_pop_gp(styr) = SSB_pop_gp(styr - 1); // placeholder in case not calculated early in styr - - // note: the above keeps SSB_pop_gp(styr) = SSB_equil. It does not adjust for initial agecomp, but probably should - } // end initial_conditions - -//********************************************************************* -FUNCTION void get_time_series() - { - /* SS_Label_Function_24 get_time_series */ - dvariable crashtemp; - dvariable crashtemp1; - dvariable interim_tot_catch; - dvariable Z_adjuster; - - if (Do_Morphcomp > 0) - Morphcomp_exp.initialize(); - - // SS_Label_Info_24.0 #Retrieve spawning biomass and recruitment from the initial equilibrium - // SPAWN-RECR: begin of time series, retrieve last SSBio and recruitment - SSB_current = SSB_yr(styr); // need these initial assignments in case recruitment distribution occurs before spawnbio&recruits - if (recdev_doit(styr - 1) > 0) - { - Recruits = R1 * mfexp(recdev(styr - 1) - biasadj(styr - 1) * half_sigmaRsq); - } - else - { - Recruits = R1; - } - - // SS_Label_Info_24.1 #Loop the years - for (y = styr; y <= endyr; y++) - { - yz = y; - if (STD_Yr_Reverse_F(y) > 0) - F_std(STD_Yr_Reverse_F(y)) = 0.0; - t_base = styr + (y - styr) * nseas - 1; - - for (f = 1; f <= N_SRparm2; f++) - { - if (SRparm_timevary(f) == 0) - { - // no change to SRparm_work - } - else - { - SRparm_work(f) = parm_timevary(SRparm_timevary(f), y); -// warning << "tester_C: " << SRparm_work(f) << " timevary_year " << endl; - } - SRparm_byyr(y, f) = SRparm_work(f); - } - - // SS_Label_Info_24.1.1 #store begin of year quantities for use in density-dependent processes - { - env_data(y, -1) = log(SSB_current / SSB_yr(styr - 1)); - if (recdev_doit(y) > 0) - { - env_data(y, -2) = recdev(y); - } // store so can do density-dependence - else - { // should be 0.0 - } - t = t_base + 1; // first season - s = 1; - if (WTage_rd > 0) - { - Wt_Age_beg(s) = Wt_Age_t(t, 0); - Wt_Age_mid(s) = Wt_Age_t(t, -1); - } - else if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || save_for_report == 1) - { - get_growth3(y, t, 1, 1); // before season loop, used for summary biomass - ALK_subseas_update(1) = 1; // do 1st subseas of 1st season; ADD THIS LINE for 3.30.17 - Make_AgeLength_Key(s, 1); // this will give wt_age_beg before any time-varying parameter changes for this year - ALK_idx = (s - 1) * N_subseas + 1; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Wt_Age_beg(s, g) = (ALK(ALK_idx, g) * wt_len(s, GP(g))); // wt-at-age at beginning of period - } - } - smrybio = 0.0; - smrynum = 0.0; - // do not do totbio here because new recruits have not yet occurred - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - { - smrybio += natage(t, p, g)(Smry_Age, nages) * Wt_Age_beg(1, g)(Smry_Age, nages); // calc before recruitment and time-vary biology applied - smrynum += sum(natage(t, p, g)(Smry_Age, nages)); //sums to accumulate across platoons and settlements - } - } - env_data(y, -3) = log(smrybio / Smry_Table(styr - 1, 2)); - env_data(y, -4) = log(smrynum / Smry_Table(styr - 1, 3)); - - Smry_Table(y, 2) = smrybio; // gets used as demoninator for some F_std options - Smry_Table(y, 3) = smrynum; - } - - // SS_Label_Info_24.1.1 #skip biology updating if y=styr because already done - if (y > styr) - { - if (do_densitydependent == 1) - make_densitydependent_parm(y); // call to adjust for density dependence - - // SS_Label_Info_24.1.1 #Update the time varying biology factors if necessary - if (timevary_MG(y, 0) > 0 || save_for_report > 0) - get_MGsetup(y); - if (timevary_MG(y, 2) > 0) - { - ALK_subseas_update = 1; // indicate that all ALKs will need re-estimation - get_growth2(y); // propagates growth to each season this year and to begin next year - get_growth3(y, t, 1, 1); // cleans up the linear growth range for begin of this year - } - if (timevary_MG(y, 3) > 0) - { - get_wtlen(); // stores values for all seasons - // note that get_mat_fec() will get called in the season loop because it may need the ALK for a later season - // but Maunder's M in get_natmort() may use the fecundity vector, so would be using the most recently calculated Problem?? - if (Hermaphro_Option != 0) - get_Hermaphro(); - } - if (timevary_MG(y, 1) > 0) - { - get_natmort(); - } - else - { - for (s = 1; s <= nseas; s++) - { - natM(t_base + s) = natM(t_base - nseas + s); - } // set M equal to last year's; - // does all areas (p), but if there are predators, then add of pred_M2 occurs in season loop below - } - - if (timevary_MG(y, 4) > 0) - get_recr_distribution(); - if (y >= Bmark_Yr(7) && y <= Bmark_Yr(8)) - { - for (gp = 1; gp <= N_GP; gp++) - for (p = 1; p <= pop; p++) - for (settle = 1; settle <= N_settle_timings; settle++) - if (recr_dist_pattern(gp, settle, p) > 0) - { - recr_dist_unf(gp, settle, p) += recr_dist(y, gp, settle, p); - if (gender == 2) - recr_dist_unf(gp + N_GP, settle, p) += recr_dist(y, gp + N_GP, settle, p); - } - } - if (timevary_MG(y, 5) > 0) - get_migration(); - if (timevary_MG(y, 7) > 0) - { - get_catch_mult(y, catch_mult_pointer); - } - - if (Use_AgeKeyZero > 0) - { - if (timevary_MG(y, 6) > 0) - { - get_age_age(Use_AgeKeyZero, AgeKey_StartAge, AgeKey_Linear1, AgeKey_Linear2); // call function to get the age_age key - if (save_for_report == 1 && store_agekey_add > 0) - { - save_agekey_count++; // next blank key after the used keys - age_age(save_agekey_count) = age_age(Use_AgeKeyZero); - age_err(save_agekey_count) = age_err(Use_AgeKeyZero); - } - - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " ageerr_key recalc in " << y << endl; - #endif - } - } - - if (save_for_report > 0) - { - if (timevary_MG(y, 1) > 0 || timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0) - { - get_saveGparm(); - } - } - } - - // SS_Label_Info_24.2 #Loop the seasons - for (s = 1; s <= nseas; s++) - { - if (docheckup == 1) - echoinput << endl - << "************************************" << endl - << " year, seas " << y << " " << s << endl; - // SS_Label_Info_24.1.2 #Call selectivity, which does its own internal check for time-varying changes - // note that Make_Fish_selex is called later after the ALK's have been updated - if (s == 1 && y > styr) - get_selectivity(); - t = t_base + s; - - // SS_Label_Info_24.2.1 #Update the age-length key and the fishery selectivity for this season - - // if(timevary_MG(y,2)>0 || timevary_MG(y,3)>0 || save_for_report==1 || WTage_rd>0) - if (timevary_MG(y, 2) > 0 || save_for_report == 1) - { - get_growth3(y, t, s, 1); // first subseas of season=s - Make_AgeLength_Key(s, 1); - - get_growth3(y, t, s, mid_subseas); // for midseason - Make_AgeLength_Key(s, mid_subseas); - // SPAWN-RECR: call Make_Fecundity in time series - if (s == spawn_seas) - { - if (spawn_subseas != 1 && spawn_subseas != mid_subseas) - { - subseas = spawn_subseas; - get_growth3(y, t, s, subseas); - Make_AgeLength_Key(s, subseas); // spawn subseas - } - } - } - if (WTage_rd > 0) - { - Wt_Age_beg(s) = Wt_Age_t(t, 0); - Wt_Age_mid(s) = Wt_Age_t(t, -1); - if (s == spawn_seas) - { - fec = Wt_Age_t(t, -2); - } - } - else if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || save_for_report > 0 || do_once == 1) - { - if (s == spawn_seas) - get_mat_fec(); - // Make_Fecundity(); - ALK_idx = (s - 1) * N_subseas + 1; // subseas=1 - int ALK_idx2 = (s - 1) * N_subseas + mid_subseas; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Wt_Age_beg(s, g) = (ALK(ALK_idx, g) * wt_len(s, GP(g))); // wt-at-age at beginning of period - Wt_Age_mid(s, g) = ALK(ALK_idx2, g) * wt_len(s, GP(g)); // use for fisheries with no size selectivity - } - } - - Wt_Age_t(t, 0) = Wt_Age_beg(s); - Wt_Age_t(t, -1) = Wt_Age_mid(s); - - if (y > styr) // because styr is done as part of initial conditions - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Make_FishSelex(); - } - -// rebase natM to M1 - for(p = 1; p <= pop; p++) - { - natM(t, p) = natM(t,0); - } - // SS_Label_Info_24.x.x #add predator M2 inside the yr,seas loop - if(N_pred>0) - { - // add pred_M2 by area - for (f1 = 1; f1 <= N_pred; f1++) - { - f = predator(f1); - pred_M2(f1, t) = mgp_adj(predparm_pointer(f1)); // base with no seasonal effect - if (nseas > 1) - pred_M2(f1, t) *= mgp_adj(predparm_pointer(f1) + s); - p = fleet_area(f); // area this predator occurs in - - // a new array for indexing g and gpi could simplify below - // for (gp = 1; gp <= N_GP * gender * N_settle_timings; gp++) - - for (gp = 1; gp <= N_GP * gender; gp++) - { - g = g_Start(gp); // base platoon - for (settle = 1; settle <= N_settle_timings; settle++) - { - g += N_platoon; - int gpi = GP3(g); // GP*gender*settlement - natM(t, p,gpi) += pred_M2(f1, t) * sel_num(s, f, g); - if (do_once == 1 && p == 1) - echoinput << y << " s " << s << " t " << t << " area " << 0 << " gp " << gpi << " M1: " << natM(t,0, gpi) << endl; - if (do_once == 1) - echoinput << y << " s " << s << " t " << t << " area " << p << " gp " << gpi << " M1+M2: " << natM(t, p, gpi) << endl; - } - } - } - } - - for(p = 1; p <= pop; p++) - { - int s1 = (p - 1) * nseas + s; - surv1(s1) = mfexp(-natM(t,p) * seasdur_half(s)); - surv2(s1) = square(surv1(s1)); - } - } - // SS_Label_Info_24.2.2 #Compute spawning biomass if this is spawning season so recruits could occur later this season - // SPAWN-RECR: calc SSB in time series if spawning is at beginning of the season - if (s == spawn_seas && spawn_time_seas < 0.0001) // compute spawning biomass if spawning at beginning of season so recruits could occur later this season - { - SSB_pop_gp(y).initialize(); - SSB_B_yr(y).initialize(); - SSB_N_yr(y).initialize(); - Smry_Table(y, 15) = 0.0; - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 1 && use_morph(g) > 0) // female - { - SSB_pop_gp(y, p, GP4(g)) += fracfemale_mult * fec(g) * natage(t, p, g); // accumulates SSB by area and by growthpattern - SSB_B_yr(y) += fracfemale_mult * make_mature_bio(GP4(g)) * natage(t, p, g); - SSB_N_yr(y) += fracfemale_mult * make_mature_numbers(GP4(g)) * natage(t, p, g); - Smry_Table(y, 15) += fracfemale_mult * natage(t, p, g) * elem_prod(fec(g), r_ages); // for mean age of female spawners = GenTime - // SSB_pop_gp(y,p,GP4(g)) += fec(g)*natage(t,p,g); // accumulates SSB by area and by growthpattern - // SSB_B_yr(y) += make_mature_bio(GP4(g))*natage(t,p,g); - // SSB_N_yr(y) += make_mature_numbers(GP4(g))*natage(t,p,g); - } - } - SSB_current = sum(SSB_pop_gp(y)); - SSB_yr(y) = SSB_current; - - if (Hermaphro_Option != 0) // get male biomass - { - MaleSSB(y).initialize(); - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 2 && use_morph(g) > 0) // male; all assumed to be mature - { - MaleSSB(y, p, GP4(g)) += Wt_Age_t(t, 0, g) * natage(t, p, g); // accumulates SSB by area and by growthpattern - } - } - if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB - { - SSB_current += Hermaphro_maleSSB * sum(MaleSSB(y)); - SSB_yr(y) = SSB_current; - } - } - - // SS_Label_Info_24.2.3 #Get the total recruitment produced by this spawning biomass at the beginning of the season - // SPAWN-RECR: calc recruitment in time series - if (timevary_SRparm(y) == 0) // SRparm use virgin values (but regime still could be) - { - R0_use = Recr_virgin; - SSB_use = SSB_virgin; -// warning << y << " virgin_SRR; SSB_use: "< 0) - { - settle = settle_g(g); - for (p = 1; p <= pop; p++) - { - if (y == styr) - natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) = 0.0; // to negate the additive code - natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) += - Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * - mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); - Recr(p, t + Settle_seas_offset(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)); - // the adjustment for mortality increases recruit value for elapsed time since begin of season because M will then be applied from beginning of season - if (docheckup == 1) - echoinput << y << " Recruits, dist, surv, result " << Recruits << " " << recr_dist(y, GP(g), settle, p) << " " << mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)) << " " << natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) << " M "< 0) - { - // SS_Label_Info_24.3.1 #Get middle of season numbers-at-age from M only; - int s1 = (p - 1) * nseas + s; - Nmid(g) = elem_prod(natage(t, p, g), surv1(s1, GP3(g))); // get numbers-at-age(g,a) surviving to middle of time period - if (docheckup == 1) - echoinput << p << " " << g << " " << GP3(g) << " area & morph " << endl - << "N-at-age " << natage(t, p, g)(0, min(6, nages)) << endl - << "survival " << surv1(s, GP3(g))(0, min(6, nages)) << endl; - if (save_for_report == 1) - { - // SS_Label_Info_24.3.2 #Store some beginning of season quantities - Save_PopLen(t, p, g) = 0.0; - Save_PopLen(t, p + pop, g) = 0.0; // later put midseason here - Save_PopWt(t, p, g) = 0.0; - Save_PopWt(t, p + pop, g) = 0.0; // later put midseason here - Save_PopAge(t, p, g) = 0.0; - Save_PopAge(t, p + pop, g) = 0.0; // later put midseason here - Save_PopBio(t, p, g) = 0.0; - Save_PopBio(t, p + pop, g) = 0.0; // later put midseason here - ALK_idx = (s - 1) * N_subseas + 1; - for (a = 0; a <= nages; a++) - { - Save_PopLen(t, p, g) += value(natage(t, p, g, a)) * value(ALK(ALK_idx, g, a)); - Save_PopWt(t, p, g) += value(natage(t, p, g, a)) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); - Save_PopAge(t, p, g, a) = value(natage(t, p, g, a)); - Save_PopBio(t, p, g, a) = value(natage(t, p, g, a)) * value(Wt_Age_beg(s, g, a)); - } // close age loop - if (s == 1) - { - totbio += natage(t, p, g)(0, nages) * Wt_Age_beg(s, g)(0, nages); - smrybio += natage(t, p, g)(Smry_Age, nages) * Wt_Age_beg(s, g)(Smry_Age, nages); - smrynum += sum(natage(t, p, g)(Smry_Age, nages)); //sums to accumulate across platoons and settlements - } - } - } - - // SS_Label_Info_24.3.3 #Do fishing mortality - catage_tot.initialize(); - - if ((catch_seas_area(t, p, 0) == 1 && fishery_on_off == 1)) - { - if (F_Method > 1) // not Pope's - { - // SS_Label_Info_24.3.3.3 #use the hybrid F method by selected fleets - // hybrid F_method - k = current_phase(); - if (k < F_PH_time(0, t)) // some fleet needs hybrid this phase - { - // SS_Label_Info_24.3.3.3.1 #Start by doing a Pope's approximation - for (int ff = 1; ff <= N_catchfleets(p); ff++) // loop fleets in this area (p) - { - f = fish_fleet_area(p, ff); - if (k < F_PH_time(f, t)) // do hybrid F for this fleet - { - vbio.initialize(); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (catchunits(f) == 1) - { - vbio += Nmid(g) * sel_ret_bio(s, f, g); - } // retained catch bio - else - { - vbio += Nmid(g) * sel_ret_num(s, f, g); - } // retained catch numbers - } //close gmorph loop - // SS_Label_Info_24.3.3.3.2 #Apply constraint so that no fleet's initial calculation of harvest rate would exceed 95% - temp = catch_ret_obs(f, t) / (vbio + 0.1 * catch_ret_obs(f, t)); // Pope's rate robust - join1 = 1. / (1. + mfexp(30. * (temp - 0.95))); // steep logistic joiner at harvest rate of 0.95 - temp1 = join1 * temp + (1. - join1) * 0.95; - // SS_Label_Info_24.3.3.3.3 #Convert the harvest rate to a starting value for F - Hrate(f, t) = -log(1. - temp1) / seasdur(s); // initial estimate of F (even though labelled as Hrate) - } - } - - // SS_Label_Info_24.3.3.3.4 #Do a specified number of loops to tune up these F values to more closely match the observed catch - for (int tune_F = 1; tune_F <= F_Tune - 1; tune_F++) - { - // SS_Label_Info_24.3.3.3.5 #add F+M to get Z - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Z_rate(t, p, g) = natM(t, p, GP3(g)); // already includes predators - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - Z_rate(t, p, g) += sel_dead_num(s, f, g) * Hrate(f, t); - } - - Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); - } - - // SS_Label_Info_24.3.3.3.6 #Now calc adjustment to Z based on changes to be made to Hrate - { - interim_tot_catch = 0.0; // this is the expected total catch that would occur with the current Hrates and Z - // totcatch_byarea(t,p) is now recalculated here just for the fleets doing hybrid in this phase - double target_catch = 0.0; - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - - if (current_phase() < F_PH_time(f, t)) // so still doing hybrid; skips bycatch fleets - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (catchunits(f) == 1) - { - interim_tot_catch += catch_mult(y, f) * Hrate(f, t) * elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); // biomass basis - } - else - { - interim_tot_catch += catch_mult(y, f) * Hrate(f, t) * elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); // numbers basis - } - } //close gmorph loop - target_catch += catch_ret_obs(f, t); - } - } // close fishery - Z_adjuster = target_catch / (interim_tot_catch + 0.0001); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Z_rate(t, p, g) = natM(t, p, GP3(g)) + Z_adjuster * (Z_rate(t, p, g) - natM(t, p, GP3(g))); // find adjusted Z - Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); - } - - for (int ff = 1; ff <= N_catchfleets(p); ff++) //loop over fishing fleets with input catch - { - f = fish_fleet_area(p, ff); -// if (fleet_type(f) == 1) - { - if (current_phase() < F_PH_time(f, t)) // skips bycatch fleets and fixed F values - { - vbio = 0.; // now use this to calc the selected vulnerable biomass (numbers) to each fishery with the adjusted Zrate2 - // since catch = N * F*sel * (1-e(-Z))/Z - // so F = catch / (N*sel * (1-e(-Z)) /Z ) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (catchunits(f) == 1) - { - vbio += elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); - } - else - { - vbio += elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); - } - } //close gmorph loop - temp = catch_ret_obs(f, t) / (catch_mult(y, f) * vbio + 0.0001); // prototype new F - join1 = 1. / (1. + mfexp(30. * (temp - 0.95 * max_harvest_rate))); - Hrate(f, t) = join1 * temp + (1. - join1) * max_harvest_rate; // new F value for this fleet - } // close fishery - } - } - } - } - } // end hybrid F_Method - - // SS_Label_Info_24.3.3.2 #Use a parameter for continuoous F - // continuous F_method - { - // SS_Label_Info_24.3.3.2.1 #For each platoon, loop fleets to calculate Z = M+sum(F) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Z_rate(t, p, g) = natM(t, p, GP3(g)); // already includes predators M2 - - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - if (catch_seas_area(t, p, f) == 1) - { - Z_rate(t, p, g) += sel_dead_num(s, f, g) * Hrate(f, t); - } - } - Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); - } - - // SS_Label_Info_24.3.3.2.2 #For each fleet, loop platoons and accumulate catch - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (catch_seas_area(t, p, f) == 1) - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - catch_fleet(t, f, 1) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_bio(s, f, g)) * Zrate2(p, g); - catch_fleet(t, f, 2) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)) * Zrate2(p, g); - catch_fleet(t, f, 3) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); // retained bio - catch_fleet(t, f, 4) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_num(s, f, g)) * Zrate2(p, g); - catch_fleet(t, f, 5) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_dead_num(s, f, g)) * Zrate2(p, g); - catch_fleet(t, f, 6) += Hrate(f, t) * elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); // retained numbers - catage(t, f, g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_dead_num(s, f, g)), Zrate2(p, g)); - if (Do_Retain(f) > 0) - { - disc_age(t, disc_fleet_list(f), g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_num(s, f, g)), Zrate2(p, g)); // selected numbers - disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_ret_num(s, f, g)), Zrate2(p, g)); // selected numbers - } - } //close gmorph loop - } - } // close fishery - } // end continuous F method - } - else // doing F with Pope's approximation. Predators cannot be used - { - // SS_Label_Info_24.3.3.1 #Use F_Method=1 for Pope's approximation - // SS_Label_Info_24.3.3.1.1 #note that pred_M2 not implemented for Pope's - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - if (catch_seas_area(t, p, f) == 1) - { - dvar_matrix catage_w = catage(t, f); // do shallow copy - - // SS_Label_Info_24.3.3.1.2 #loop over platoons and calculate the vulnerable biomass for each fleet - vbio.initialize(); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - // use sel_l to get total catch and use sel_l_r to get retained vbio - // note that vbio in numbers can be used for both survey abund and fishery available "biomass" - // vbio is for retained catch only; harvest rate = retainedcatch/vbio; - // then harvestrate*catage_w = total kill by this fishery for this morph - - if (catchunits(f) == 1) - { - vbio += Nmid(g) * sel_ret_bio(s, f, g); - } // retained catch bio - else - { - vbio += Nmid(g) * sel_ret_num(s, f, g); - } // retained catch numbers - - } //close gmorph loop - if (docheckup == 1) - echoinput << "fleet vbio obs_catch catch_mult vbio*catchmult" << f << " " << vbio << " " << catch_ret_obs(f, t) << " " << catch_mult(y, f) << " " << catch_mult(y, f) * vbio << endl; - // SS_Label_Info_24.3.3.1.3 #Calculate harvest rate for each fleet from catch/vulnerable biomass - crashtemp1 = 0.; - crashtemp = max_harvest_rate - catch_ret_obs(f, t) / (catch_mult(y, f) * vbio + NilNumbers); - crashtemp1 = posfun(crashtemp, 0.000001, CrashPen); - harvest_rate = max_harvest_rate - crashtemp1; - if (crashtemp < 0. && rundetail >= 2) - { - cout << y << " " << f << " crash vbio*catchmult " << catch_ret_obs(f, t) / (catch_mult(y, f) * (vbio + NilNumbers)) << " " << crashtemp << " " << crashtemp1 << " " << CrashPen << " " << harvest_rate << endl; - } - Hrate(f, t) = harvest_rate; - - // SS_Label_Info_24.3.3.1.4 #Store various catch quantities in catch_fleet - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - catage_w(g) = harvest_rate * elem_prod(Nmid(g), sel_dead_num(s, f, g)); // total kill numbers at age - if (docheckup == 1) - echoinput << "killrate " << sel_dead_num(s, f, g)(0, min(6, nages)) << endl; - catage_tot(g) += catage_w(g); //catch at age for all fleets - catch_fleet(t, f, 2) += Hrate(f, t) * Nmid(g) * sel_dead_bio(s, f, g); // total fishery kill in biomass - catch_fleet(t, f, 5) += Hrate(f, t) * Nmid(g) * sel_dead_num(s, f, g); // total fishery kill in numbers - catch_fleet(t, f, 1) += Hrate(f, t) * Nmid(g) * sel_bio(s, f, g); // total fishery encounter in biomass - catch_fleet(t, f, 3) += Hrate(f, t) * Nmid(g) * sel_ret_bio(s, f, g); // retained fishery kill in biomass - catch_fleet(t, f, 4) += Hrate(f, t) * Nmid(g) * sel_num(s, f, g); // encountered numbers - catch_fleet(t, f, 6) += Hrate(f, t) * Nmid(g) * sel_ret_num(s, f, g); // retained fishery kill in numbers - } // end g loop - } - } // close fishery - - // SS_Label_Info_24.3.3.1.5 #Check for catch_total across fleets being greater than population numbers - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (a = 0; a <= nages; a++) // check for negative abundance, starting at age 1 - { - if (natage(t, p, g, a) > 0.0) - { - crashtemp = max_harvest_rate - catage_tot(g, a) / (Nmid(g, a) + 0.0000001); - crashtemp1 = posfun(crashtemp, 0.000001, CrashPen); - if (crashtemp < 0. && rundetail >= 2) - { - cout << " crash age " << catage_tot(g, a) / (Nmid(g, a) + 0.0000001) << " " << crashtemp << " " << crashtemp1 << " " << CrashPen << " " << (max_harvest_rate - crashtemp1) * Nmid(g, a) << endl; - } - if (crashtemp < 0. && docheckup == 1) - { - echoinput << " crash age " << catage_tot(g, a) / (Nmid(g, a) + 0.0000001) << " " << crashtemp << " " << crashtemp1 << " " << CrashPen << " " << (max_harvest_rate - crashtemp1) * Nmid(g, a) << endl; - } - catage_tot(g, a) = (max_harvest_rate - crashtemp1) * Nmid(g, a); - - temp = natage(t, p, g, a) * surv2(s, GP3(g), a) - catage_tot(g, a) * surv1(s, GP3(g), a); - Z_rate(t, p, g, a) = -log(temp / natage(t, p, g, a)) / seasdur(s); - } - else - { - Z_rate(t, p, g, a) = -log(surv2(s, GP3(g), a)) / seasdur(s); - } - } - if (docheckup == 1) - echoinput << y << " " << s << "total catch-at-age for morph " << g << " " << catage_tot(g)(0, min(6, nages)) << " Z: " << Z_rate(t, p, g)(0, min(6, nages)) << endl; - } - } // end Pope's approx - } // end have some catch in this seas x area - else - { - // SS_Label_Info_24.3.3.4 #No catch or fishery turned off, so set Z=M - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Z_rate(t, p, g) = natM(t, p, GP3(g)); // includes predators - Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); - } - } - - // SS_Label_Info_24.3.3.4 #save vulnerable biomass and numbers. Use middle of season - if (bigsaver == 1) - { - vuln_bio(t) = 0.0; - vuln_num(t) = 0.0; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (f = 1; f<= Nfleet; f++) - { - vuln_bio(t, f) += sel_bio(s, f, g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * 0.5 * seasdur(s))); - vuln_num(t, f) += sel_num(s, f, g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * 0.5 * seasdur(s))); - } - } - } - for (f1 = 1; f1 <= N_pred; f1++) - { - f = predator(f1); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - catch_fleet(t, f, 1) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_bio(s, f, g)) * Zrate2(p, g); - catch_fleet(t, f, 2) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)) * Zrate2(p, g); - catch_fleet(t, f, 3) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); // retained bio - catch_fleet(t, f, 4) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_num(s, f, g)) * Zrate2(p, g); - catch_fleet(t, f, 5) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_dead_num(s, f, g)) * Zrate2(p, g); - catch_fleet(t, f, 6) += pred_M2(f1, t) * elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); // retained numbers - catage(t, f, g) = pred_M2(f1, t) * elem_prod(elem_prod(natage(t, p, g), sel_dead_num(s, f, g)), Zrate2(p, g)); - } //close gmorph loop - } - } //close area loop - if (s == 1 && save_for_report == 1) - { - Smry_Table(y, 1) = totbio; - Smry_Table(y, 2) = smrybio; - Smry_Table(y, 3) = smrynum; - } - // SS_Label_Info_24.3.4 #Compute spawning biomass if occurs after start of current season - // SPAWN-RECR: calc spawn biomass in time series if after beginning of the season - if (s == spawn_seas && spawn_time_seas >= 0.0001) // compute spawning biomass - { - SSB_pop_gp(y).initialize(); - SSB_B_yr(y).initialize(); - SSB_N_yr(y).initialize(); - Smry_Table(y, 15) = 0.0; - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 1 && use_morph(g) > 0) // female - { - SSB_pop_gp(y, p, GP4(g)) += fracfemale_mult * fec(g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); // accumulates SSB by area and by growthpattern - SSB_B_yr(y) += fracfemale_mult * make_mature_bio(GP4(g)) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); - SSB_N_yr(y) += fracfemale_mult * make_mature_numbers(GP4(g)) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); - Smry_Table(y, 15) += fracfemale_mult * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)) * elem_prod(fec(g), r_ages); // for mean age of female spawners = GenTime - } - } - SSB_current = sum(SSB_pop_gp(y)); - SSB_yr(y) = SSB_current; - if (Hermaphro_Option != 0) // get male biomass - { - MaleSSB(y).initialize(); - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 2 && use_morph(g) > 0) // male; all assumed to be mature - { - MaleSSB(y, p, GP4(g)) += Wt_Age_t(t, 0, g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); // accumulates SSB by area and by growthpattern - } - } - if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB - { - SSB_current += Hermaphro_maleSSB * sum(MaleSSB(y)); - SSB_yr(y) = SSB_current; - } - } - // SS_Label_Info_24.3.4.1 #Get recruitment from this spawning biomass at some time during the season - // SPAWN-RECR: calc recruitment in time series; need to make this area-specific - // SR_fxn - if (timevary_SRparm(y) == 0) // SRparm use virgin values (but regime still could be) - { - R0_use = Recr_virgin; - SSB_use = SSB_virgin; -// warning << y << " virgin_SRR; SSB_use: "< 0) - { - settle = settle_g(g); - for (p = 1; p <= pop; p++) - { - if (y == styr) - natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) = 0.0; // to negate the additive code - - natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * - mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); - Recr(p, t + Settle_seas_offset(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)); - if (docheckup == 1) - echoinput << y << " Recruits, dist, surv, result" << Recruits << " " << recr_dist(y, GP(g), settle, p) << " " << mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)) << " " << natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) << endl; - } - } - } - - // SS_Label_Info_24.6 #Survival to next season and saving midseason numbers and biomass - for (p = 1; p <= pop; p++) - { - if (s == nseas) - { - k = 1; - } - else - { - k = 0; - } // advance age or not - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - settle = settle_g(g); - - { - j = Settle_age(settle); - if (s < nseas && Settle_seas(settle) <= s) - { - natage(t + 1, p, g, j) = natage(t, p, g, j) * mfexp(-Z_rate(t, p, g, j) * seasdur(s)); // advance new recruits within year - } - for (a = j + 1; a < nages; a++) - { - natage(t + 1, p, g, a) = natage(t, p, g, a - k) * mfexp(-Z_rate(t, p, g, a - k) * seasdur(s)); - } - natage(t + 1, p, g, nages) = natage(t, p, g, nages) * mfexp(-Z_rate(t, p, g, nages) * seasdur(s)); // plus group - if (s == nseas) - natage(t + 1, p, g, nages) += natage(t, p, g, nages - 1) * mfexp(-Z_rate(t, p, g, nages - 1) * seasdur(s)); - if (save_for_report == 1) - { - j = p + pop; - ALK_idx = (s - 1) * N_subseas + mid_subseas; - for (a = 0; a <= nages; a++) - { - Save_PopLen(t, j, g) += value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(ALK(ALK_idx, g, a)); - Save_PopWt(t, j, g) += value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); - Save_PopAge(t, j, g, a) = value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))); - Save_PopBio(t, j, g, a) = value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(Wt_Age_mid(s, g, a)); - } // close age loop - } - } - if (docheckup == 1) - { - echoinput << g << " natM: " << natM(t, p, GP3(g))(0, min(6, nages)) << endl; - echoinput << g << " Z: " << Z_rate(t, p, g)(0, min(6, nages)) << endl; - echoinput << g << " N_surv: " << natage(t + 1, p, g)(0, min(6, nages)) << endl; - } - } // close gmorph loop - } - - // SS_Label_Info_24.7 #call to Get_expected_values - Get_expected_values(y, t); - // SS_Label_Info_24.8 #hermaphroditism - if (Hermaphro_Option != 0) - { - if (Hermaphro_seas == -1 || Hermaphro_seas == s) - { - k = gmorph / 2; // because first half of the "g" are females - for (p = 1; p <= pop; p++) // area - for (g = 1; g <= k; g++) // loop females - if (use_morph(g) > 0) - { - if (Hermaphro_Option == 1) - { - for (a = 1; a < nages; a++) - { - natage(t + 1, p, g + k, a) += natage(t + 1, p, g, a) * Hermaphro_val(GP4(g), a - 1); // increment males with females - natage(t + 1, p, g, a) *= (1. - Hermaphro_val(GP4(g), a - 1)); // decrement females - } - } - else if (Hermaphro_Option == -1) - { - for (a = 1; a < nages; a++) - { - natage(t + 1, p, g, a) += natage(t + 1, p, g + k, a) * Hermaphro_val(GP4(g + k), a - 1); // increment females with males - natage(t + 1, p, g + k, a) *= (1. - Hermaphro_val(GP4(g + k), a - 1)); // decrement males - } - } - } - } - } - - // SS_Label_Info_24.9 #migration - //do migration between populations, for each gmorph and age PROBLEM need new container so future recruits not wiped out! - if (do_migration > 0) // movement between areas in time series - { - natage_temp = natage(t + 1); - natage(t + 1) = 0.0; - for (p = 1; p <= pop; p++) // source population - for (p2 = 1; p2 <= pop; p2++) // destination population - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - k = move_pattern(s, GP4(g), p, p2); - if (k > 0) - natage(t + 1, p2, g) += elem_prod(natage_temp(p, g), migrrate(y, k)); - } - } // end migration - - // SS_Label_Info_24.10 #save selectivity*Hrate for tag-recapture - if (Do_TG > 0 && t >= TG_timestart) - { - for (g = 1; g <= gmorph; g++) - for (f = 1; f <= Nfleet; f++) - { - Sel_for_tag(t, f, g) = sel_ret_num(s, f, g) * Hrate(f, t); - } - } - - // SS_Label_Info_24.11 #calc annual F quantities - double countN; - dvariable tempbase; - dvariable tempM; - dvariable tempZ; - if (fishery_on_off == 1 && (bigsaver == 1 || (F_ballpark_yr >= styr))) - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - for (k = 1; k <= 6; k++) - { - annual_catch(y, k) += catch_fleet(t, f, k); - if (k <= 3) - Smry_Table(y, k + 3) = annual_catch(y, k); - } - if (F_Method == 1) - { - annual_F(y, 1) += Hrate(f, t); - } - else - { - annual_F(y, 1) += Hrate(f, t) * seasdur(s); - } - } - - if (s == nseas) - { - // sum across p and g the number of survivors to end of the year - // also project from the initial numbers and M, the number of survivors without F - // then F = ln(n+1/n)(M+F) - ln(n+1/n)(M only), but ln(n) cancels out, so only need the ln of the ratio of the two ending quantities - - // calculated average F weighted by numbers (option 5 is unweighted) - if (F_reporting != 5) - { - tempbase = 0.0; - tempM = 0.0; - tempZ = 0.0; - annual_F(y, 2) = 0.; - annual_F(y, 3) = 0.; - // accumulate numbers across ages, morphs, sexes, areas - for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - { - tempbase += natage(t - nseas + 1, p, g, a); // sum of numbers at beginning of year - tempZ += natage(t + 1, p, g, a + 1); // numbers at beginning of next year - temp3 = natage(t - nseas + 1, p, g, a); // numbers at begin of year - for (j = 1; j <= nseas; j++) - { - temp3 *= mfexp(-seasdur(j) * natM(t - nseas + j, p, GP3(g), a)); - } - tempM += temp3; // survivors if just M operating - } - } - } - annual_F(y, 2) = log(tempM) - log(tempZ); // F=Z-M - annual_F(y, 3) = log(tempbase) - log(tempM); // M - } // end if F_reporting!=5 - - else - { // F_reporting==5 (ICES-style arithmetic mean across ages) - // like option 4 above, but F is calculated 1 age at a time to get a - // unweighted average across ages within each year - countN = 0.0; // used for count of Fs included in average - for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator - { - tempbase = 0.0; - tempM = 0.0; - tempZ = 0.0; - // accumulate numbers across all morphs, sexes, and areas - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - { - tempbase += natage(t - nseas + 1, p, g, a); // sum of numbers at beginning of year - tempZ += natage(t + 1, p, g, a + 1); // numbers at beginning of next year - temp3 = natage(t - nseas + 1, p, g, a); // numbers at begin of year - for (j = 1; j <= nseas; j++) - { - temp3 *= mfexp(-seasdur(j) * natM(t - nseas + j, p, GP3(g), a)); - } - tempM += temp3; // survivors if just M operating - } - } - // calc F and M for this age and add to the total - countN += 1; // increment count of values included in average - annual_F(y, 2) += log(tempM) - log(tempZ); // F=Z-M - annual_F(y, 3) += log(tempbase) - log(tempM); // M - } - annual_F(y, 3) /= countN; // M - annual_F(y, 2) /= countN; // F - } // end F_reporting==5 - - if (STD_Yr_Reverse_F(y) > 0) // save selected std quantity - { - if (F_reporting <= 1) - { - F_std(STD_Yr_Reverse_F(y)) = annual_catch(y, 2) / Smry_Table(y, 2); // dead catch biomass/summary biomass - // does not exactly correspond to F, which is for total catch - } - else if (F_reporting == 2) - { - F_std(STD_Yr_Reverse_F(y)) = annual_catch(y, 5) / Smry_Table(y, 3); // dead catch numbers/summary numbers - } - else if (F_reporting == 3) - { - F_std(STD_Yr_Reverse_F(y)) = annual_F(y, 1); - } - else if (F_reporting == 4 || F_reporting == 5) - { - F_std(STD_Yr_Reverse_F(y)) = annual_F(y, 2); - } - } - } // end s==nseas - } - if (write_bodywt > 0) - { - for (g = 1; g <= gmorph; g++) - { - gg = sx(g); - - if (ishadow(GP2(g)) == 0) - { - if (s == spawn_seas) - bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << -2 << " " << fec(g) << " #fecundity " << endl; - bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << 0 << " " << Wt_Age_beg(s, g) << " #popwt_beg " << endl; - bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << -1 << " " << Wt_Age_mid(s, g) << " #popwt_mid " << endl; - } - } - } - } //close season loop - // SS_Label_Info_24.12 #End loop of seasons - - // SS_Label_Info_24.13 #Use current F intensity to calculate the equilibrium SPR for this year - // if( (save_for_report>0) || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase==0)) ) - if (bigsaver == 1) - { - eq_yr = y; - equ_Recr = Recr_virgin; - bio_yr = y; - Fishon = 0; - SSBpR_Calc(equ_Recr); // call function to do per recruit calculation with current year's biology - Smry_Table(y, 11) = SSB_equil; - Smry_Table(y, 13) = GenTime; - if( SR_fxn == 10 ) - { - temp = SSB_equil / Recr_virgin; // current year's SSB/R with current biology at age - alpha = mfexp(SRparm_work(3)); - beta = mfexp(SRparm_work(4)); - SRparm_byyr(y, 2) = alpha * temp / (4. + alpha * temp); // implied steepness - SRparm_byyr(y, 1) = log( 1. / beta * (alpha - (1. / temp))); // implied ln_R0 - } - Fishon = 1; - SSBpR_Calc(equ_Recr); // call function to do per recruit calculation with current year's biology and F - if (STD_Yr_Reverse_Ofish(y) > 0) - { - SPR_std(STD_Yr_Reverse_Ofish(y)) = SSB_equil / Smry_Table(y, 11); - } - Smry_Table(y, 9) = (totbio); - Smry_Table(y, 10) = (smrybio); - Smry_Table(y, 12) = (SSB_equil); - Smry_Table(y, 14) = (YPR_dead); - } - } //close year loop - - // average quantities accumulated during the time series - if (Do_Benchmark > 0) - { - recr_dist(styr - 3) = recr_dist_unf / float(Bmark_Yr(8) - Bmark_Yr(7) + 1); - } - - if (Do_TG > 0) - Tag_Recapture(); - - } // end time_series - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " finished time series " << endl; - #endif - -// SS_Label_Info_24.16 # end of time series function - -//******************************************************************** - /* SS_Label_FUNCTION 30 Do_Equil_Calc */ - // This function does per recruit calculations, so produces an age composition that is in equilibrium with M+F -FUNCTION void SSBpR_Calc(const prevariable& equ_Recr) - { - int t_base; - int t; - int s; - dvariable N_mid; - dvariable N_beg; - dvariable tempM, countN, tempZ, tempbase, temp3; - dvariable Fishery_Survival; - dvariable crashtemp; - dvariable crashtemp1; - dvar_matrix Survivors(1, pop, 1, gmorph); - dvar_matrix Survivors2(1, pop, 1, gmorph); - - t_base = styr + (eq_yr - styr) * nseas - 1; - GenTime.initialize(); - Equ_penalty.initialize(); - SSB_equil_pop_gp.initialize(); - if (Hermaphro_Option != 0) - MaleSSB_equil_pop_gp.initialize(); - equ_mat_bio = 0.0; - equ_mat_num = 0.0; - equ_catch_fleet.initialize(); - equ_numbers.initialize(); - equ_catage.initialize(); - equ_F_std = 0.0; - equ_M_std = 0.0; - totbio = 0.0; - smrybio = 0.0; - smryage = 0.0; - smrynum = 0.0; - GenTime = 0.0; - - // first seed the recruits; seems redundant - for (g = 1; g <= gmorph; g++) - { - if (use_morph(g) > 0) - { - settle = settle_g(g); - - for (p = 1; p <= pop; p++) - { - equ_numbers(Settle_seas(settle), p, g, Settle_age(settle)) = equ_Recr * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * - mfexp(natM(t_base + Settle_seas(settle), p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); - } - } - } - - for (a = 0; a <= 3 * nages; a++) // go to 3x nages to approximate the infinite tail, then add the infinite tail - { - if (a <= nages) - { - a1 = a; - } - else - { - a1 = nages; - } // because selex and biology max out at nages - - for (s = 1; s <= nseas; s++) - { - t = t_base + s; - - for (g = 1; g <= gmorph; g++) // need to loop g inside of a because of hermaphroditism - if (use_morph(g) > 0) - { - gg = sx(g); // gender - settle = settle_g(g); - - for (p = 1; p <= pop; p++) - { - if (s == Settle_seas(settle) && a == Settle_age(settle)) - { - equ_numbers(Settle_seas(settle), p, g, Settle_age(settle)) = equ_Recr * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * - mfexp(natM(t_base + Settle_seas(settle), p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); - } - - if (equ_numbers(s, p, g, a) > 0.0) // will only be zero if not yet settled - { - N_beg = equ_numbers(s, p, g, a); - if (F_Method == 1) // Pope's approx - { - N_mid = N_beg * surv1(s, GP3(g), a1); // numbers at middle of season - Nsurvive = N_mid; // initial number of fishery survivors - if (Fishon == 1) - { // remove catch this round - // check to see if total harves would exceed max_harvest_rate - crashtemp = 0.; - harvest_rate = 1.0; - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - crashtemp += Hrate(f, t) * sel_dead_num(s, f, g, a1); - } - - if (crashtemp > 0.20) // only worry about this if the exploit rate is at all high - { - join1 = 1. / (1. + mfexp(40.0 * (crashtemp - max_harvest_rate))); // steep joiner logistic curve at limit - upselex = 1. / (1. + mfexp(Equ_F_joiner * (crashtemp - 0.2))); // value of a shallow logistic curve that goes through the limit - harvest_rate = join1 + (1. - join1) * upselex / (crashtemp); // ratio by which all Hrates will be adjusted - } - - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - temp = N_mid * Hrate(f, t) * harvest_rate; // numbers that would be caught if fully selected - Nsurvive -= temp * sel_dead_num(s, f, g, a1); // survival from fishery kill - equ_catch_fleet(2, s, f) += temp * sel_dead_bio(s, f, g, a1); - equ_catch_fleet(5, s, f) += temp * sel_dead_num(s, f, g, a1); - equ_catch_fleet(3, s, f) += temp * sel_ret_bio(s, f, g, a1); // retained fishery kill in biomass - - equ_catch_fleet(1, s, f) += temp * sel_bio(s, f, g, a1); // total fishery encounter in biomass - equ_catch_fleet(4, s, f) += temp * sel_num(s, f, g, a1); // total fishery encounter in numbers - equ_catch_fleet(6, s, f) += temp * sel_ret_num(s, f, g, a1); // retained fishery kill in numbers - equ_catage(s, f, g, a1) += temp * sel_dead_num(s, f, g, a1); // dead catch numbers per recruit (later accumulate N in a1) - } - } // end removing catch - - Nsurvive *= surv1(s, GP3(g), a1); // decay to end of season - - if (a <= a1) - { - equ_Z(s, p, g, a1) = -(log((Nsurvive + 1.0e-13) / (N_beg + 1.0e-10))) / seasdur(s); - Fishery_Survival = equ_Z(s, p, g, a1) - natM(t, p, GP3(g), a1); - } - - } // end Pope's approx - - else // Continuous F for method 2 or 3 - { - equ_Z(s, p, g, a1) = natM(t, p, GP3(g), a1); - if (Fishon == 1) - { - if (a1 <= nages) - { - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - equ_Z(s, p, g, a1) += sel_dead_num(s, f, g, a1) * Hrate(f, t); - } - } - } - Nsurvive = N_beg * mfexp(-seasdur(s) * equ_Z(s, p, g, a1)); - } // end F method - Survivors(p, g) = Nsurvive; - } - else - { - equ_Z(s, p, g, a1) = natM(t, p, GP3(g), a1); - } - } // end pop - } // end morph - - if (Hermaphro_Option != 0) - { - if (Hermaphro_seas == -1 || Hermaphro_seas == s) - { - for (p = 1; p <= pop; p++) - { - k = gmorph / 2; - for (g = 1; g <= k; g++) - if (use_morph(g) > 0) - { - if (Hermaphro_Option == 1) - { - Survivors(p, g + k) += Survivors(p, g) * Hermaphro_val(GP4(g), a1); // increment males with females - Survivors(p, g) *= (1. - Hermaphro_val(GP4(g), a1)); // decrement females - } - else if (Hermaphro_Option == -1) - { - Survivors(p, g) += Survivors(p, g + k) * Hermaphro_val(GP4(g + k), a1); // increment females with males - Survivors(p, g + k) *= (1. - Hermaphro_val(GP4(g + k), a1)); // decrement males - } - } - } - } - } - if (do_migration > 0) // movement between areas in equil calcs - { - Survivors2.initialize(); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - for (p2 = 1; p2 <= pop; p2++) - { - k = move_pattern(s, GP4(g), p, p2); - if (k > 0) - Survivors2(p2, g) += Survivors(p, g) * migrrate(bio_yr, k, a1); - } // end destination pop - } - Survivors = Survivors2; - } // end do migration - - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - { - if (s == nseas) // into next age at season 1 - { - if (a == 3 * nages) - { - // end of the cohort - } - else if (a == (3 * nages - 1)) // do infinite tail; note that it uses Z from nseas as if it applies annually - { - if (F_Method == 1) - { - equ_numbers(1, p, g, a + 1) = Survivors(p, g) / (1. - exp(-equ_Z(nseas, p, g, nages))); - } - else - { - equ_numbers(1, p, g, a + 1) = Survivors(p, g) / (1. - exp(-equ_Z(nseas, p, g, nages))); - } - } - else - { - equ_numbers(1, p, g, a + 1) = Survivors(p, g); - } - } - else - { - equ_numbers(s + 1, p, g, a) = Survivors(p, g); // same age, next season - } - } - } - } // end season - } // end age - - // now calc contribution to catch and ssb - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - gg = sx(g); - for (s = 1; s <= nseas; s++) - for (p = 1; p <= pop; p++) - { - t = t_base + s; - Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * equ_Z(s, p, g))), equ_Z(s, p, g)); - equ_numbers(s, p, g, nages) += sum(equ_numbers(s, p, g)(nages + 1, 3 * nages)); - if (Fishon == 1) - { - if (F_Method >= 2) - { - if (s < Bseas(g)) - Zrate2(p, g, 0) = 0.0; - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - equ_catch_fleet(2, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_bio(s, f, g)) * Zrate2(p, g); // dead catch bio - equ_catch_fleet(5, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_num(s, f, g)) * Zrate2(p, g); // deadfish catch numbers - equ_catch_fleet(3, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_ret_bio(s, f, g)) * Zrate2(p, g); // retained catch bio - equ_catch_fleet(1, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_bio(s, f, g)) * Zrate2(p, g); // encountered catch bio - equ_catch_fleet(4, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_num(s, f, g)) * Zrate2(p, g); // encountered catch bio - equ_catch_fleet(6, s, f) += Hrate(f, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_ret_num(s, f, g)) * Zrate2(p, g); // retained catch numbers - equ_catage(s, f, g) = Hrate(f, t) * elem_prod(elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_num(s, f, g)), Zrate2(p, g)); - } - } - else // F_method=1 - { - // already done in the age loop - } - } - - for (f1 = 1; f1 <= N_pred; f1++) - { - f = predator(f1); - equ_catch_fleet(2, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_bio(s, f, g)) * Zrate2(p, g); // dead catch bio - equ_catch_fleet(5, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_num(s, f, g)) * Zrate2(p, g); // deadfish catch numbers - equ_catch_fleet(3, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_ret_bio(s, f, g)) * Zrate2(p, g); // retained catch bio - equ_catch_fleet(1, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_bio(s, f, g)) * Zrate2(p, g); // encountered catch bio - equ_catch_fleet(4, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_num(s, f, g)) * Zrate2(p, g); // encountered catch bio - equ_catch_fleet(6, s, f) += pred_M2(f1, t) * elem_prod(equ_numbers(s, p, g)(0, nages), sel_ret_num(s, f, g)) * Zrate2(p, g); // retained catch numbers - equ_catage(s, f, g) = pred_M2(f1, t) * elem_prod(elem_prod(equ_numbers(s, p, g)(0, nages), sel_dead_num(s, f, g)), Zrate2(p, g)); - } - - if (s == 1) - { - totbio += equ_numbers(s, p, g)(0, nages) * Wt_Age_beg(s, g)(0, nages); - smrybio += equ_numbers(s, p, g)(Smry_Age, nages) * Wt_Age_beg(s, g)(Smry_Age, nages); - smrynum += sum(equ_numbers(s, p, g)(Smry_Age, nages)); - smryage += equ_numbers(s, p, g)(Smry_Age, nages) * r_ages(Smry_Age, nages); - } - // SPAWN-RECR: calc generation time, etc. - if (s == spawn_seas) - { - if (gg == 1) // compute equilibrium spawning biomass for females - { - tempvec_a = elem_prod(equ_numbers(s, p, g)(0, nages), mfexp(-spawn_time_seas * equ_Z(s, p, g)(0, nages))); - SSB_equil_pop_gp(p, GP4(g)) += fracfemale_mult * tempvec_a * fec(g); - equ_mat_bio += fracfemale_mult * elem_prod(equ_numbers(s, p, g)(0, nages), mfexp(-spawn_time_seas * equ_Z(s, p, g)(0, nages))) * make_mature_bio(GP4(g)); - equ_mat_num += fracfemale_mult * elem_prod(equ_numbers(s, p, g)(0, nages), mfexp(-spawn_time_seas * equ_Z(s, p, g)(0, nages))) * make_mature_numbers(GP4(g)); - GenTime += fracfemale_mult * tempvec_a * elem_prod(fec(g), r_ages); - // SSB_equil_pop_gp(p,GP4(g))+=tempvec_a*fec(g); - // equ_mat_bio+=elem_prod(equ_numbers(s,p,g)(0,nages),mfexp(-spawn_time_seas*equ_Z(s,p,g)(0,nages)))*make_mature_bio(GP4(g)); - // equ_mat_num+=elem_prod(equ_numbers(s,p,g)(0,nages),mfexp(-spawn_time_seas*equ_Z(s,p,g)(0,nages)))*make_mature_numbers(GP4(g)); - // GenTime+=tempvec_a*elem_prod(fec(g),r_ages); - } - else if (Hermaphro_Option != 0 && gg == 2) - { - tempvec_a = elem_prod(equ_numbers(s, p, g)(0, nages), mfexp(-spawn_time_seas * equ_Z(s, p, g)(0, nages))); - MaleSSB_equil_pop_gp(p, GP4(g)) += tempvec_a * Wt_Age_beg(s, g)(0, nages); - } - } - } - } - - // MSY_units: quantity to be maximized: (1) dead catch biomass (status quo); (2) retained catch biomass; or (3) retained catch profits"< 0) - { - for (p = 1; p <= pop; p++) - { - tempbase += equ_numbers(1, p, g, a); // sum of numbers at beginning of year - tempZ += equ_numbers(1, p, g, a + 1); // numbers at beginning of next year - temp3 = equ_numbers(1, p, g, a); // numbers at begin of year - for (int kkk = 1; kkk <= nseas; kkk++) - { - temp3 *= mfexp(-seasdur(kkk) * natM(t_base+kkk, p, GP3(g), a)); - } - tempM += temp3; // survivors if just M operating - } - } - } - equ_F_std = log(tempM) - log(tempZ); // F=Z-M - equ_M_std = log(tempbase) - log(tempM); // M - } - else if (F_reporting == 5) - { - // F_reporting==5 (ICES-style arithmetic mean across ages) - // like option 4 above, but F is calculated 1 age at a time to get a - // unweighted average across ages within each year - // Need to put area loop within age loop - countN = 0.0; // used for count of Fs included in average - for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator - { - tempbase = 0.0; - tempM = 0.0; - tempZ = 0.0; - // accumulate numbers across all morphs, sexes, and areas - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - { - tempbase += equ_numbers(1, p, g, a); // sum of numbers at beginning of year - tempZ += equ_numbers(1, p, g, a + 1); // numbers at beginning of next year - temp3 = equ_numbers(1, p, g, a); // numbers at begin of year - for (int kkk = 1; kkk <= nseas; kkk++) - { - temp3 *= mfexp(-seasdur(kkk) * natM(t_base+kkk, p, GP3(g), a)); - } - tempM += temp3; // survivors if just M operating - } - } - // add F-at-age to tally - countN += 1.; // increment count of values included in average - equ_F_std += log(tempM) - log(tempZ); // F=Z-M - equ_M_std += log(tempbase) - log(tempM); // M - } - equ_F_std /= countN; - equ_M_std /= countN; - } // end F_reporting==5 - } - - Cost = 0; - for (f = 1; f <= Nfleet; f++) - { - if (YPR_mask(f) == 1) - { - for (s = 1; s <= nseas; s++) - { - Cost += CostPerF(f) * Hrate(f, t_base + s); - } - } - } - - SSB_equil = sum(SSB_equil_pop_gp); - GenTime /= SSB_equil; - smryage /= smrynum; - if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB - { - SSB_equil += Hermaphro_maleSSB * sum(MaleSSB_equil_pop_gp); - } - } // end equil calcs - -// SS_Label_file #13. **SS_recruit.tpl** -// SS_Label_file # * Spawn_Recr() // gets expected mean recruits from input spawning biomass -// SS_Label_file # * apply_recdev() // applies recdev to the expected mean recruits -// SS_Label_file # * Equil_Spawn_Recr_Fxn() // gets equilibrium recruitment and spawning biomass from an input SPR - -//******************************************************************** - /* SS_Label_FUNCTION 43 Spawner-recruitment function */ -// SPAWN-RECR: function: to calc R from S -FUNCTION dvariable Spawn_Recr(const dvar_vector& SRparm_work, const prevariable& SSB_virgin_use, const prevariable& Recr_virgin_use, const prevariable& SSB_current) - { - RETURN_ARRAYS_INCREMENT(); - dvariable NewRecruits; - dvariable SSB_BH1; - dvariable recdev_offset; - dvariable steepness; - dvariable Shepherd_c; - dvariable Shepherd_c2; - dvariable Hupper; - dvariable steep2; - dvariable SSB_curr_adj; - dvariable join; - dvariable SRZ_0; - dvariable srz_min; - dvariable SRZ_surv; -// warning << y << " Tester_R0 " << Recr_virgin_use << " SSB0 " << SSB_virgin_use << " SSB_curr: " << SSB_current << endl; - - // SS_Label_43.1 add 0.1 to input spawning biomass value to make calculation more rebust - SSB_curr_adj = SSB_current + 0.100; // robust - - regime_change = SRparm_work(N_SRparm2 - 1); // this is a persistent deviation off the S/R curve - - // SS_Label_43.3 calculate expected recruitment from the input spawning biomass and the SR curve - // functions below use Recr_virgin_use,SSB_virgin_use which could have been adjusted adjusted above from R0,SSB_virgin - switch (SR_fxn) - { - case 1: // previous placement for B-H constrained - { - warnstream << "B-H constrained curve is now Spawn-Recr option #6"; - write_message (FATAL, 0); // EXIT! - break; - } - // SS_Label_43.3.2 Ricker - case 2: // ricker - { - steepness = SRparm_work(2); - NewRecruits = Recr_virgin_use * SSB_curr_adj / SSB_virgin_use * mfexp(steepness * (1. - SSB_curr_adj / SSB_virgin_use)); - break; - } - // SS_Label_43.3.3 Beverton-Holt - case 3: // Beverton-Holt - { - steepness = SRparm_work(2); - NewRecruits = (4. * steepness * Recr_virgin_use * SSB_curr_adj) / - (SSB_virgin_use * (1. - steepness) + (5. * steepness - 1.) * SSB_curr_adj); - break; - } - - case 10: // Beverton-Holt with alpha beta per WHAM: R = A*S/(1+B*S) - { - dvariable alpha = mfexp(SRparm_work(3)); - dvariable beta = mfexp(SRparm_work(4)); - NewRecruits = (alpha * SSB_curr_adj) / (1.0 + beta * SSB_curr_adj); - break; - } - - // SS_Label_43.3.4 constant expected recruitment - case 4: // none - { - NewRecruits = Recr_virgin_use; - break; - } - // SS_Label_43.3.5 Hockey stick - case 5: // hockey stick where "steepness" is now the fraction of B0 below which recruitment declines linearly - // the 3rd parameter allows for a minimum recruitment level - { - steepness = SRparm_work(2); - temp = SRparm_work(3) * Recr_virgin_use + SSB_curr_adj / (steepness * SSB_virgin_use) * (Recr_virgin_use - SRparm_work(3) * Recr_virgin_use); // linear decrease below steepness*SSB_virgin_use - NewRecruits = Join_Fxn(0.0 * SSB_virgin_use, SSB_virgin_use, steepness * SSB_virgin_use, SSB_curr_adj, temp, Recr_virgin_use); - break; - } - - // SS_Label_43.3.6 Beverton-Holt, with constraint to have constant R about Bzero - case 6: //Beverton-Holt constrained - { - steepness = SRparm_work(2); -// dvariable SPR = SSB_virgin_use / Recr_virgin; -// alpha = ((4.0 * steepness) / (1. - steepness)) / SPR ; -// beta = (1.0 / Recr_virgin) * (alpha - (1.0 / SPR)); - if (SSB_curr_adj > SSB_virgin_use) - { - SSB_BH1 = SSB_virgin_use; - } - else - { - SSB_BH1 = SSB_curr_adj; - } - NewRecruits = (4. * steepness * Recr_virgin_use * SSB_BH1) / (SSB_virgin_use * (1. - steepness) + (5. * steepness - 1.) * SSB_BH1); - break; - } - - // SS_Label_43.3.7 survival based - case 7: // survival based, so constrained such that recruits cannot exceed fecundity - { - // PPR_0=SSB_virgin_use/Recr_virgin_use; // pups per recruit at virgin - // Surv_0=1./PPR_0; // recruits per pup at virgin - // Pups_0=SSB_virgin_use; // total population fecundity is the number of pups produced - // Sfrac=SRparm(2); - SRZ_0 = log(1.0 / (SSB_virgin_use / Recr_virgin_use)); - steepness = SRparm_work(2); - srz_min = SRZ_0 * (1.0 - steepness); - SRZ_surv = mfexp((1. - pow((SSB_curr_adj / SSB_virgin_use), SRparm_work(3))) * (srz_min - SRZ_0) + SRZ_0); // survival - NewRecruits = SSB_curr_adj * SRZ_surv; - exp_rec(y, 1) = NewRecruits; // expected arithmetic mean recruitment - // SS_Label_43.3.7.1 Do variation in recruitment by adjusting survival - // if(SR_env_target==1) SRZ_surv*=mfexp(SRparm(N_SRparm2-2)* env_data(y,SR_env_link)); // environ effect on survival - if (recdev_cycle > 0) - { - gg = y - (styr + (int((y - styr) / recdev_cycle)) * recdev_cycle) + 1; - SRZ_surv *= mfexp(recdev_cycle_parm(gg)); - } - exp_rec(y, 2) = SSB_curr_adj * SRZ_surv; - exp_rec(y, 2) *= mfexp(regime_change); // adjust for regime which includes env and block effects; and forecast adjustments - SRZ_surv *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment - exp_rec(y, 3) = SSB_curr_adj * SRZ_surv; - if (y <= recdev_end) - { - if (recdev_doit(y) > 0) - SRZ_surv *= mfexp(recdev(y)); // recruitment deviation - } - else if (Do_Forecast > 0) - { - SRZ_surv *= mfexp(Fcast_recruitments(y)); - } - join = 1. / (1. + mfexp(100 * (SRZ_surv - 1.))); - SRZ_surv = SRZ_surv * join + (1. - join) * 1.0; - NewRecruits = SSB_curr_adj * SRZ_surv; - exp_rec(y, 4) = NewRecruits; - break; - } - - // SS_Label_43.3.8 Shepherd - case 8: // Shepherd 3-parameter SRR. per Punt & Cope 2017 - { - Shepherd_c = SRparm_work(3); - Shepherd_c2 = pow(0.2, SRparm_work(3)); - Hupper = 1.0 / (5.0 * Shepherd_c2); - steepness = 0.2 + (SRparm_work(2) - 0.2) / (0.8) * (Hupper - 0.2); - temp = (SSB_curr_adj) / (SSB_virgin_use); - NewRecruits = (5. * steepness * Recr_virgin_use * (1. - Shepherd_c2) * temp) / - (1.0 - 5.0 * steepness * Shepherd_c2 + (5. * steepness - 1.) * pow(temp, Shepherd_c)); - break; - } - - // SS_Label_43.3.8 Ricker-power - case 9: // Ricker power 3-parameter SRR. per Punt & Cope 2017 - { - steepness = SRparm_work(2); - dvariable RkrPower = SRparm_work(3); - temp = SSB_curr_adj / SSB_virgin_use; - temp2 = posfun(1.0 - temp, 0.0000001, temp3); - temp = 1.0 - temp2; // Rick's new line to stabilize recruitment at R0 if B>B0 - dvariable RkrTop = log(5.0 * steepness) * pow(temp2, RkrPower) / pow(0.8, RkrPower); - NewRecruits = Recr_virgin_use * temp * mfexp(RkrTop); - break; - } - - } - RETURN_ARRAYS_DECREMENT(); - return NewRecruits; - } // end spawner_recruitment - -FUNCTION void apply_recdev(prevariable& NewRecruits, const prevariable& Recr_virgin_use) - { - RETURN_ARRAYS_INCREMENT(); - // SS_Label_43.4 For non-survival based SRR, get recruitment deviations by adjusting recruitment itself - exp_rec(y, 1) = NewRecruits; // expected arithmetic mean recruitment - // exp_rec(y,2) is with regime shift or other env effect; - // exp_rec(y,3) is with bias adjustment - // exp_rec(y,4) is with dev - regime_change = SRparm_work(N_SRparm2 - 1); // this is a persistent deviation off the S/R curve - - if (recdev_cycle > 0) - { - gg = y - (styr + (int((y - styr) / recdev_cycle)) * recdev_cycle) + 1; - NewRecruits *= mfexp(recdev_cycle_parm(gg)); - } - NewRecruits *= mfexp(regime_change); // adjust for regime which includes env and block effects; and forecast adjustments - exp_rec(y, 2) = NewRecruits; // adjusted for env and special forecast conditions - if (SR_fxn != 4) - NewRecruits *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment - exp_rec(y, 3) = NewRecruits; - - if (y <= recdev_end) - { - if (recdev_doit(y) > 0) - { - if (do_recdev >= 3) - { - NewRecruits = Recr_virgin_use * mfexp(recdev(y)); // recruitment deviation - } - else if (SR_fxn != 7) - { - NewRecruits *= mfexp(recdev(y)); // recruitment deviation - } - } - } - - else if (Do_Forecast > 0) - { - switch (int(Fcast_Loop_Control(3))) - { - case 0: - { - NewRecruits = exp_rec(y, 2); - if (SR_fxn != 4) - NewRecruits *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment - exp_rec(y, 3) = NewRecruits; - break; - } - case 1: - { - exp_rec(y, 2) *= Fcast_Loop_Control(4); // apply fcast multiplier to the regime-adjusted expected value - NewRecruits = exp_rec(y, 2); - if (SR_fxn != 4) - NewRecruits *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment - exp_rec(y, 3) = NewRecruits; - break; - } - case 2: // use multiplier of R0 - { - exp_rec(y, 2) = Recr_virgin_use * Fcast_Loop_Control(4); // apply fcast multiplier to the virgin recruitment - NewRecruits = exp_rec(y, 2); - if (SR_fxn != 4) - NewRecruits *= mfexp(-biasadj(y) * half_sigmaRsq); // bias adjustment - exp_rec(y, 3) = NewRecruits; - break; - } - case 4: - { - // fall through to case 3 - // case 3 also will do averaging of recr_dist in another section of code - } - case 3: // use recent mean - { - // values going into the mean have already been bias adjusted and had dev applied, so take straight mean - NewRecruits = 0.0; - for (j = Fcast_Rec_yr1; j <= Fcast_Rec_yr2; j++) - { - NewRecruits += exp_rec(j, 4); - } - NewRecruits /= (Fcast_Rec_yr2 - Fcast_Rec_yr1 + 1); - if(Fcast_Loop_Control(3) == 4) NewRecruits *= Fcast_Loop_Control(4); // apply multiplier - exp_rec(y, 2) = NewRecruits; - exp_rec(y, 3) = NewRecruits; // store in the bias-adjusted field - break; - } - } - // note that if user requests "mean" as base forecast recr, then devs are still applied - // so, phase for forecast recdevs must be <0 to assure that forecast recr do not get added variability - if (do_recdev > 0) - NewRecruits *= mfexp(Fcast_recruitments(y)); // recruitment deviation - } - exp_rec(y, 4) = NewRecruits; - RETURN_ARRAYS_DECREMENT(); - } // end spawner_recruitment - -//******************************************************************** - /* SS_Label_FUNCTION 44 Equil_Spawn_Recr_Fxn */ -// SPAWN-RECR: function Equil_Spawn_Recr_Fxn -FUNCTION dvar_vector Equil_Spawn_Recr_Fxn(const dvar_vector& SRparm, - const prevariable& SSB_virgin_use, const prevariable& Recr_virgin_use, const prevariable& SSBpR_current) - { - RETURN_ARRAYS_INCREMENT(); - dvar_vector Equil_Spawn_Recr_Calc(1, 2); // values to return 1 is B_equil, 2 is R_equil - dvariable B_equil; - dvariable R_equil; - dvariable temp; - dvariable steepness; - dvariable join; - dvariable Shepherd_c; - dvariable Shepherd_c2; - dvariable SRZ_0; - dvariable srz_min; - dvariable SRZ_surv; - dvariable SSBpR_virgin_use; - - SSBpR_virgin_use = SSB_virgin_use / Recr_virgin_use; - steepness = SRparm(2); // common usage but some different - // SS_Label_44.1 calc equilibrium SpawnBio and Recruitment from input SSBpR_current, which is spawning biomass per recruit at some given F level - switch (SR_fxn) - { - case 1: // previous placement for B-H constrained - { - warnstream << "B-H constrained curve is now Spawn-Recr option #6"; - write_message (FATAL, 0); // EXIT! - break; - } - - // SS_Label_44.1.2 Ricker - case 2: // Ricker - { - B_equil = SSB_virgin_use * (1. + (log(Recr_virgin_use / SSB_virgin_use) + log(SSBpR_current)) / steepness); - R_equil = Recr_virgin_use * B_equil / SSB_virgin_use * mfexp(steepness * (1. - B_equil / SSB_virgin_use)); - - break; - } - // SS_Label_44.1.1 Beverton-Holt - case 6: //Beverton-Holt with flattop beyond Bzero, but no flattop in equil calcs - { - } - // SS_Label_44.1.3 Beverton-Holt - case 3: // same as case 6 - { - // from WHAM per Tim Miller: - // WHAM based on R = A*S/(1+B*S) - // log_SR_a = log(4 * SR_h/(exp(log_SPR0)*(1 - SR_h))); - // log_SR_b = log((5*SR_h - 1)/((1-SR_h)*SR_R0*exp(log_SPR0))); - - // SS3 previously used alternative formulation: R = A*S/(B+S) - // converting SS3 to align with WHAM - alpha = 4.0 * steepness / (SSBpR_virgin_use * (1. - steepness)); - beta = (5.0 * steepness - 1.0) / ((1 - steepness) * SSB_virgin_use); - // " h " << steepness << " derive " << alpha * SSBpR_virgin / (4. + alpha * SSBpR_virgin) << " " << endl; - // " R0 " << Recr_virgin_use << " derive " << 1. / beta * (alpha - 1./SSBpR_virgin) << endl; -// report5 <<" SSB_unf "<setup_Benchmark()
// calculates average biology and selectivity over specified range of years for use in benchmark -// SS_Label_file # * get_benchmark() // searches for Fspr, Fmsy, etc. conditioned on average biology and selectivity conditions -// SS_Label_file # * get_forecast() // calculates forecast quantities, includes all popdy characteristics of the time series, writes forecast-report.sso -// SS_Label_file # - -// Terminology -// SSB refers to spawning stock biomass, calculated from reproductive output at age (fec()) and numbers-at-age at spawn_month in spawn_seas -// SSBpR refers to SSB per recruit calculated with equilibrium age composition in equil_calc -// SPR refers to spawner potential ratio which is the ratio of SSBpR at some level of F to SSBpR with F = 0 - -// SSBpR_virgin is calculated in popdyn using the start year biology -// SSBpR_virgin used to get alpha in equil_spawn_recr B-H - -FUNCTION void setup_Benchmark() // and forecast - { - // SS_Label_Info_7.5 #Get averages from selected years to use in forecasts - - if (Do_Forecast > 0) - { - if (Fcast_timevary_Selex == 1) - { - // SS_Label_Info_7.5.1 #Calc average selectivity to use in forecast; store in endyr+1 - temp = float(Fcast_Sel_yr2 - Fcast_Sel_yr1 + 1.); - for (gg = 1; gg <= gender; gg++) - for (f = 1; f <= Nfleet; f++) - { - tempvec_l.initialize(); - for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) - { - tempvec_l += sel_l(y, f, gg); - } - for (y = endyr + 1; y <= YrMax; y++) - { - sel_l(y, f, gg) = tempvec_l / temp; - } - - tempvec_l.initialize(); - for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) - { - tempvec_l += sel_l_r(y, f, gg); - } - for (y = endyr + 1; y <= YrMax; y++) - { - sel_l_r(y, f, gg) = tempvec_l / temp; - } - - tempvec_l.initialize(); - for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) - { - tempvec_l += discmort2(y, f, gg); - } - for (y = endyr + 1; y <= YrMax; y++) - { - discmort2(y, f, gg) = tempvec_l / temp; - } - - if (gg == gender) // vectors processed here have males stacked after females in same row - { - exp_l_temp.initialize(); - for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) - { - exp_l_temp += retain(y, f); - } - for (y = endyr + 1; y <= YrMax; y++) - { - retain(y, f) = exp_l_temp / temp; - } - - exp_l_temp.initialize(); - for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) - { - exp_l_temp += discmort(y, f); - } - for (y = endyr + 1; y <= YrMax; y++) - { - discmort(y, f) = exp_l_temp / temp; - } - } - - tempvec_a.initialize(); - for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) - { - tempvec_a += sel_a(y, f, gg); - } - for (y = endyr + 1; y <= YrMax; y++) - { - sel_a(y, f, gg) = tempvec_a / temp; - } - - tempvec_a.initialize(); - for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) - { - tempvec_a += discmort2_a(y, f, gg); - } - for (y = endyr + 1; y <= YrMax; y++) - { - discmort2_a(y, f, gg) = tempvec_a / temp; - } - if (seltype(f + Nfleet, 2) != 0) // using age retention - { - tempvec_a.initialize(); - for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) - { - tempvec_a += retain_a(y, f, gg); - } - for (y = endyr + 1; y <= YrMax; y++) - { - retain_a(y, f, gg) = tempvec_a / temp; - } - tempvec_a.initialize(); - for (y = Fcast_Sel_yr1; y <= Fcast_Sel_yr2; y++) - { - tempvec_a += discmort_a(y, f, gg); - } - for (y = endyr + 1; y <= YrMax; y++) - { - discmort_a(y, f, gg) = tempvec_a / temp; - } - } - } - } - t = styr + (endyr + 1 - styr) * nseas + spawn_seas - 1; -// fec = Wt_Age_t(t, -2); this will always be overwritten, so deleting - - if (Fcast_Loop_Control(3) == 3) // using mean recr_dist from range of years - { - warnstream << "This option (mean recruitment) may be deprecated; same as forecast option(5), averaging parameters, type 4."; - write_message(WARN, 0); - //get average and store in each fcast years - recr_dist_endyr.initialize(); - for (y = Fcast_Rec_yr1; y <= Fcast_Rec_yr2; y++) - for (gp = 1; gp <= N_GP * gender; gp++) - { - recr_dist_endyr(gp) += recr_dist(y, gp); - } - recr_dist_endyr /= float(Fcast_Rec_yr2 - Fcast_Rec_yr1 + 1); - for (y = endyr + 1; y <= YrMax; y++) - { - if (timevary_MG(y, 4) > 0) - { - warnstream << "mean recr_dist for forecast is incompatible with timevary recr_dist in forecast yr: " << y << "; user must adjust manually"; - write_message(WARN, 0); - } - recr_dist(y) = recr_dist_endyr; - } - } - else // provide placeholder - { - recr_dist_endyr = recr_dist(endyr); - } - - // create average of selected MGparms for use in forecast - for (int parm_type = 1; parm_type <= 12; parm_type++) - { - if(Fcast_MGparm_ave(parm_type, 2) == 1) // do averaging of derived factor - { - double ave_styr = Fcast_MGparm_ave(parm_type,3); - double ave_endyr = Fcast_MGparm_ave(parm_type,4); - double N_ave_yrs = ave_endyr - ave_styr + 1.; // get denominator - switch (parm_type) - { - case 1: // 1=Natural mortality (M), - for (int s = 1; s <= nseas; s++) - for (int g = 1; g <= gmorph; g++) - { - int gpi = GP3(g); - for (int p = 0; p <= pop; p++) // question. Perhaps only do this for area 0 as others filled in later in code - { - tempvec_a.initialize(); - for (y = ave_styr; y <= ave_endyr; y++) - { - t = styr + (y - styr) * nseas - 1 + s; - tempvec_a += natM(t, p, gpi); - } - tempvec_a /= N_ave_yrs; - for (int y = endyr + 1; y <= YrMax; y++) - { - t = styr + (y - styr) * nseas - 1 + s; - natM(t, p, gpi) = tempvec_a; - } - } - } - break; - - case 2: // 2=growth, - tempvec_a.initialize(); - warnstream << "Growth params averaging is not implemented, execution continues. " ; - write_message (WARN, 1); - break; - - case 3: // 3=wtlen, - tempvec_a.initialize(); - warnstream << "Weight/Length params averaging is not implemented, execution continues. " ; - write_message (WARN, 1); - break; - - case 4: // 4=recr_dist&femfrac, - //get average and store in each fcast years - recr_dist_endyr.initialize(); - for (y = ave_styr; y <= ave_endyr; y++) - for (gp = 1; gp <= N_GP * gender; gp++) - { - recr_dist_endyr(gp) += recr_dist(y, gp); - } - recr_dist_endyr /= N_ave_yrs; - for (y = endyr + 1; y <= YrMax; y++) - { - if (timevary_MG(y, 4) > 0) - { - warnstream << "mean recr_dist for forecast is incompatible with timevary recr_dist in forecast yr: " << y << "; user must adjust manually"; - write_message(WARN, 0); - } - recr_dist(y) = recr_dist_endyr; - } - break; - - case 5: // 5=migration, - for (j = 1; j <= do_migr2; j++) - { - tempvec_a.initialize(); - for (y = ave_styr; y <= ave_endyr; y++) - { - tempvec_a += migrrate(y, j); - } - tempvec_a /= N_ave_yrs; - for (y = endyr + 1; y <= YrMax; y++) - migrrate(y, j) = tempvec_a; - } - break; - - case 6: // 6=ageerror, - tempvec_a.initialize(); - warnstream << "Age Error params averaging is not implemented, execution continues. " ; - write_message (WARN, 1); - break; - - case 7: // 7=catchmult, - tempvec_a.initialize(); - warnstream << "Catch mult params averaging is not implemented, execution continues. " ; - write_message (WARN, 1); - break; - - case 8: // 8=hermaphroditism, and - tempvec_a.initialize(); - warnstream << "Hermaphroditism params averaging is not implemented, execution continues. " ; - write_message (WARN, 1); - break; - - case 9: // 9=maturity&fecundity - tempvec_a.initialize(); - warnstream << "Maturity & fecundity params averaging is not implemented, execution continues. " ; - write_message (WARN, 1); - break; - - case 10: // 9=selectivity - tempvec_a.initialize(); - break; - - } - } - } - - // SS_Label_Info_7.5.2 #Set-up relative F among fleets and seasons for forecast - if (Fcast_RelF_Basis == 1) // set allocation according to range of years - { - temp = 0.0; - Fcast_RelF_Use.initialize(); - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - for (y = Fcast_RelF_yr1; y <= Fcast_RelF_yr2; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - Fcast_RelF_Use(s, f) += Hrate(f, t); - } - } - } - temp = sum(Fcast_RelF_Use); - if (temp > 0.0) - { - Fcast_RelF_Use /= temp; - Fcurr_Fmult = temp / float(Fcast_RelF_yr2 - Fcast_RelF_yr1 + 1); - } - else - { - Fcast_RelF_Use(1, 1) = 1.0; - Fcurr_Fmult = 0.0; - } - } - else // Fcast_RelF_Basis==2 so set to values that were read - { - temp = 0.0; - for (f = 1; f <= Nfleet; f++) - for (s = 1; s <= nseas; s++) - { - temp += Fcast_RelF_Input(s, f); - Fcast_RelF_Use(s, f) = Fcast_RelF_Input(s, f); - } - // Fcast_RelF_Use=Fcast_RelF_Input/temp; - Fcast_RelF_Use /= temp; - Fcurr_Fmult = temp; - } - if (N_bycatch > 0) - { - for (f = 1; f <= Nfleet; f++) - for (s = 1; s <= nseas; s++) - { - if (Fcast_RelF_Use(s, f) == 0. && bycatch_setup(f, 3) > 0) - { - Fcast_RelF_Use(s, f) = 1.0e-6; - warnstream << "setting positive forecast relF for bycatch fleet: " << f; - write_message(ADJUST, 0); - } - } - } - if (N_Fcast_Input_Catches > 0) - { - for (f = 1; f <= Nfleet; f++) - for (s = 1; s <= nseas; s++) - { - if (Fcast_RelF_special(s, f) == 1 && Fcast_RelF_Use(s, f) == 0.0) - { - Fcast_RelF_Use(s, f) = 1.0e-6; - warnstream << "setting positive forecast relF for forecast only fleet: " << f; - write_message(ADJUST, 0); - } - } - } - } // end getting quantities for forecasts - - // SS_Label_Info_7.5.3 #Calc average selectivity to use in benchmarks; store in styr-3 - // Bmark_Yr(1,6)<<" Benchmark years: beg-end bio; beg-end selex; beg-end alloc"< 0) - { - // if(save_for_report>0 || last_phase() || current_phase()==max_phase || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase==0))) - { - // calc average biology to use in equil; store in styr-3 - temp = float(Bmark_Yr(2) - Bmark_Yr(1) + 1.); // get denominator - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (s = 0; s <= nseas - 1; s++) // note -1 baked into the loop index - { - tempvec_a.initialize(); - for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) - { - tempvec_a += Ave_Size(t + s, 1, g); - } - Ave_Size(styr - 3 * nseas + s, 1, g) = tempvec_a / temp; - tempvec_a.initialize(); - for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) - { - tempvec_a += Ave_Size(t + s, mid_subseas, g); - } - Ave_Size(styr - 3 * nseas + s, mid_subseas, g) = tempvec_a / temp; - - // get mean natM - int gpi=GP3(g); - for (int p = 0; p <= pop; p++) - { - tempvec_a.initialize(); - for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) - { - tempvec_a += natM(t + s, p, gpi); - } - natM(styr - 3 * nseas + s, p, gpi) = tempvec_a / temp; - if(p>0) - { - int s1 = (p - 1)*nseas + s + 1; - surv1(s1, gpi) = mfexp(-natM(styr - 3 * nseas + s, p, gpi) * seasdur_half(s + 1)); // does all the gpi and ages - surv2(s1, gpi) = square(surv1(s1, gpi)); - } - } - - for (int kk = -2; kk <= 0; kk++) // get mean fecundity and pop body wt - { - tempvec_a.initialize(); - for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) - { - tempvec_a += Wt_Age_t(t + s, kk, g); - } - Wt_Age_t(styr - 3 * nseas + s, kk, g) = tempvec_a / temp; - } - for (f = 1; f <= Nfleet; f++) - { - tempvec_a.initialize(); - for (t = Bmark_t(1); t <= Bmark_t(2); t += nseas) - { - tempvec_a += save_sel_num(t + s, f, g); - } - save_sel_num(styr - 3 * nseas + s, f, g) = tempvec_a / temp; - } - } - } - - if (pop > 0) - { - if (do_migration > 0) - { - temp = float(Bmark_Yr(8) - Bmark_Yr(7) + 1.); // get denominator - for (j = 1; j <= do_migr2; j++) - { - tempvec_a.initialize(); - for (y = Bmark_Yr(7); y <= Bmark_Yr(8); y++) - { - tempvec_a += migrrate(y, j); - } - migrrate(styr - 3, j) = tempvec_a / temp; - } - } - // recr_dist_unf is accumulated while doing the time_series - // then its mean is calculated in Get_Benchmarks and assigned to recr_dist - // the SRparm_bench is calculated from Bmark_yrs 9-10 in benchmark code using values stored in SRparm_byyr - } - - // calc average selectivity to use in equil; store in styr-3 - temp = float(Bmark_Yr(4) - Bmark_Yr(3) + 1.); // get denominator - for (gg = 1; gg <= gender; gg++) - for (f = 1; f <= Nfleet; f++) - { - tempvec_l.initialize(); - for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) - { - tempvec_l += sel_l(y, f, gg); - } - sel_l(styr - 3, f, gg) = tempvec_l / temp; - - tempvec_l.initialize(); - for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) - { - tempvec_l += sel_l_r(y, f, gg); - } - sel_l_r(styr - 3, f, gg) = tempvec_l / temp; - - if (gg == gender) - { - exp_l_temp.initialize(); // use because dimensioned to nlength2 - for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) - { - exp_l_temp += retain(y, f); - } - retain(styr - 3, f) = exp_l_temp / temp; - exp_l_temp.initialize(); - for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) - { - exp_l_temp += discmort(y, f); - } - discmort(styr - 3, f) = exp_l_temp / temp; - } - - tempvec_l.initialize(); - for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) - { - tempvec_l += discmort2(y, f, gg); - } - discmort2(styr - 3, f, gg) = tempvec_l / temp; - - tempvec_a.initialize(); - for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) - { - tempvec_a += sel_a(y, f, gg); - } - sel_a(styr - 3, f, gg) = tempvec_a / temp; - - tempvec_a.initialize(); - for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) - { - tempvec_a += discmort2_a(y, f, gg); - } - discmort2_a(styr - 3, f, gg) = tempvec_a / temp; - if (seltype(f + Nfleet, 2) != 0) // using age retention - { - tempvec_a.initialize(); - for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) - { - tempvec_a += retain_a(y, f, gg); - } - retain_a(styr - 3, f, gg) = tempvec_a / temp; - tempvec_a.initialize(); - for (y = Bmark_Yr(3); y <= Bmark_Yr(4); y++) - { - tempvec_a += discmort_a(y, f, gg); - } - discmort_a(styr - 3, f, gg) = tempvec_a / temp; - } - } - - // set-up relative F among fleets and seasons - if (Bmark_RelF_Basis == 1) // set allocation according to range of years - { - temp = 0.0; - Bmark_RelF_Use.initialize(); - Bmark_HistF.initialize(); - for (y = Bmark_Yr(5); y <= Bmark_Yr(6); y++) - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - Bmark_HistF(s, f) += Hrate(f, t); - Bmark_RelF_Use(s, f) += Hrate(f, t); - } - Bmark_HistF /= float(Bmark_Yr(6) - Bmark_Yr(5) + 1.); // average F(s,f) across benchmark years - temp = sum(Bmark_RelF_Use); - - // note that the relF calculation below is not conditional on whether a fleet is not bycatch and not non-optimized - // Fmult later calculated as multiplier times Bmark_relF_use and will compensate automatically - if (temp > 0.0) - { - Bmark_RelF_Use /= temp; - } - else - { - Bmark_RelF_Use(1, 1) = 1.0; - } - } - else // Bmark_RelF_Basis==2 so set same as forecast - { - Bmark_RelF_Use = Fcast_RelF_Use; - } - } // end being in a phase for these calcs - } // end getting quantities for benchmarks - } - -FUNCTION void Get_Benchmarks(const int show_MSY) - { - //******************************************************************** - /* SS_Label_FUNCTION 34 Get_Benchmarks(Find Fspr, MSY) */ - int jj; - int Nloops; - int Nloops2; - // int bio_t; - int bio_t_base; - dvariable last_F1; - dvariable Closer; - dvariable Vbio1_unfished; - dvariable SSBpR_unf; - dvariable Vbio_MSY; - dvariable Vbio1_MSY; - dvariable junk; - dvariable Nmid_c; - - dvariable df; - dvariable BestYield; - dvariable BestF1; - dvariable FF; - dvariable dyld; - dvariable dyldp; - dvariable Fmax; - dvariable bestF1; - dvariable bestF2; - dvariable F01_origin; - dvariable F01_second; - dvariable F01_actual; - dvar_vector F1(1, 3); - dvar_vector F2(1, 3); - dvar_vector yld1(1, 3); - dvar_vector Fmult_save(1, 3); - write_bodywt_save = write_bodywt; - write_bodywt = 0; - - Nloops2 = 0; - - y = styr - 3; // the average biology from specified benchmark years is stored here - yz = y; - bio_yr = y; - eq_yr = y; - t_base = y + (y - styr) * nseas - 1; - bio_t_base = styr + (bio_yr - styr) * nseas - 1; - // set the Hrate for bycatch fleets so not scaled with other fleets - // bycatch_F(f,s) is created here for use in forecast - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 2 && bycatch_setup(f, 3) == 2) // set rate to input value - { - for (s = 1; s <= nseas; s++) - { - t = bio_t_base + s; - Hrate(f, t) = bycatch_setup(f, 4); - bycatch_F(f, s) = bycatch_setup(f, 4); - } - } - else if (fleet_type(f) == 2 && bycatch_setup(f, 3) == 3) // set rate to historical mean - { - for (s = 1; s <= nseas; s++) - { - t = bio_t_base + s; - Hrate(f, t) = 0.0; - for (int yy = bycatch_setup(f, 4); yy <= bycatch_setup(f, 5); yy++) - { - Hrate(f, t) += Hrate(f, styr + (yy - styr) * nseas + s - 1); - } - Hrate(f, t) /= (bycatch_setup(f, 5) - bycatch_setup(f, 4) + 1.); - bycatch_F(f, s) = Hrate(f, t); - } - } - else - { - for (s = 1; s <= nseas; s++) - { - t = bio_t_base + s; - Hrate(f, t) = 0.0; - } - } - } - - if (show_MSY == 1) - { - report5 << version_info << endl - << ctime(&start); - report5 << "Bmark_relF(by_fleet_&seas) (excluding non-scaled bycatch fleets)" << endl - << Bmark_RelF_Use << endl - << "#" << endl; - report5 << "Bmark_histF(by_fleet_&seas)" << endl - << Bmark_HistF << endl - << "#" << endl; - report5 << "Bycatch_F" << endl - << trans(bycatch_F) << endl - << "#" << endl; - report5 << "YPR_mask for including catch: " << endl - << YPR_mask << endl; - } - if (show_MSY == 2) - { - // do not recalc the age-specific vectors - } - else // recalc age specific biology and selectivity. NOTE: not density-dependent!! - { - for (s = 1; s <= nseas; s++) - { - t = styr - 3 * nseas + s - 1; - subseas = 1; // for begin of season - ALK_idx = (s - 1) * N_subseas + subseas; - ALK_subseas_update(ALK_idx) = 1; // new in 3.30.12 force updating - Make_AgeLength_Key(s, subseas); // begin season - - subseas = mid_subseas; - ALK_idx = (s - 1) * N_subseas + subseas; - ALK_subseas_update(ALK_idx) = 1; // new in 3.30.12 force updating - Make_AgeLength_Key(s, subseas); - - // SPAWN-RECR: call make_fecundity for benchmarks - // this means that any calculation of SSB in benchmark will use the updated fec - if (s == spawn_seas) - { - { - fec = Wt_Age_t(styr - 3 * nseas + s - 1, -2); - } - } - Wt_Age_beg(s) = Wt_Age_t(styr - 3 * nseas + s - 1, 0); - } - // following uses the values of sel_l, sel_a, etc. stored in yr=styr-3 - for (s = 1; s <= nseas; s++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - ALK_idx = (s - 1) * N_subseas + mid_subseas; // for midseason - Make_FishSelex(); // including sel_dead_num - } - if (show_MSY == 1) - { - report5 << version_info << endl - << ctime(&start); - report5 << "Bmark_relF(by_fleet_&seas) (excluding non-scaled bycatch fleets)" << endl - << Bmark_RelF_Use << endl - << "#" << endl; - report5 << "Bmark_histF(by_fleet_&seas)" << endl - << Bmark_HistF << endl - << "#" << endl; - report5 << "Bycatch_F" << endl - << trans(bycatch_F) << endl - << "#" << endl; - report5 << "YPR_mask for including catch: " << endl - << YPR_mask << endl; - report5 << "Fecundity: " << fec(1) << endl; - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - { - for (s = 1; s <= nseas; s++) - { - report5 << f << " " << s << " sel_bio: " << sel_bio(s, f, 1) << endl; - report5 << f << " " << s << " sel_dead_bio: " << sel_dead_bio(s, f, 1) << endl; - } - } - } - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - { - for (s = 1; s <= nseas; s++) - report5 << f << " " << s << " sel_num: " << sel_num(s, f, 1) << endl; - } - } - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - { - for (s = 1; s <= nseas; s++) - report5 << f << " " << s << " sel_dead_num: " << sel_dead_num(s, f, 1) << endl; - } - } - } - } - - maxpossF.initialize(); - for (g = 1; g <= gmorph; g++) - { - for (s = 1; s <= nseas; s++) - { - tempvec_a.initialize(); - for (f = 1; f <= Nfleet; f++) - { - tempvec_a += Bmark_RelF_Use(s, f) * sel_dead_num(s, f, g); - } - temp = max(tempvec_a); - if (temp > maxpossF) - maxpossF = temp; - } - } - maxpossF = max_harvest_rate / maxpossF; // applies to any F_method - - // SPAWN-RECR: notes regarding virgin vs. benchmark biology usage in spawn-recr - // the spawner-recruitment function has Bzero based on virgin biology, not benchmark biology - // need to deal with possibility that with time-varying biology, the SSB_virgin calculated from virgin conditions will differ from the SSB_virgin used for benchmark conditions - - // note that recr_dist(styr-3), updated at end of ss_popdyn. - - for (j = 1; j <= N_SRparm2; j++) - { - if (SRparm_timevary(j) == 0) - { - SRparm_bench(j) = SRparm(j); - } - else - { - temp = 0.; - for (int y = Bmark_Yr(9); y <= Bmark_Yr(10); y++) - { - temp += SRparm_byyr(y, j); - } - SRparm_bench(j) = temp / (Bmark_Yr(10) - Bmark_Yr(9) + 1.); - } - } - SRparm_bench = SRparm_work; - - /* - Flags: - timevary_MG_firstyr == YrMax // means that no biology is time-varying - timevary_SRparm_first > 0 // means that R0 or h (i.e. any except regime, sigmaR, autocorr) is time-varying, so SSBpR0 gets updated for time series and for bench - timevary_bio_4SRR is new user selected flag: 0 for legacy, vs 1 for improved use of timevary biology in SRR calcs - - Legacy approach: - SSBpR0 set at start year using start year biology - SSBpR0 is not itself saved; instead R0_4_SRR and SSB0_4_SRR are saved and passed to the spawn_recruit functions - SSBpR0 updated during time series if there is time-varying R0, but does not call equil_spawn_recr_calc - SSBpR with benchmark biology used in benchmark calculations - SSBpR0 for benchmark always uses bench biology, which is incorrect - SSB_bench (aka SSB_unf) does not call equil_spawn_recr_calc, it is just R * SSBpR, so is incomplete accounting for effect of timevary bio - Btgttgt is a fraction of SSB_bench (no options) - Btgttgt2 can be fraction of SSB_MSY or fraction of SSB_virgin, but not SSB_bench - HCR inflection is a fraction of SSB_bench (no options) - depletion basis is user-selected as SSB_virgin or SSB_msy - SSB_msy uses equil_spawn_recr_calc in its creation, but SSB_bench does not. So they are inconsistent - none of the above is an issue if there is no timevarying biology - ------- - Improved approach - SSBpR0 set at start year using start year biology - SSBpR0 updated during time series if there is time-varying R0; PLUS NEW: equil_spawn_recr_calc called to get new equilibrium R0, SSB0 - SSBpR0 for benchmark stays at virgin unless timevary_bio_4SRR == 0, or if timevary_SRparm_first > 0 - Btgttgt can now use either frac*SSB_bench or frac*SSB_virgin by using the existing flag for depletion basis - Btgttgt2 can be fraction of SSB_MSY, of SSB_virgin, or of SSB_bench - HCR inflection adds option to use SSB_virgin or SSB_bench - depletion adds option to use SSB_bench - */ - Recr_unf = Recr_virgin; // default - SSB0_4_SRR = SSB_virgin; // default - R0_4_SRR = Recr_virgin; - Fishon = 0; - SSBpR_Calc(Recr_unf); // this returns SSB_equil using benchmark biology - // provides basis for values needed below - SSB_unf = SSB_equil; - SSBpR_bench = SSB_equil / Recr_unf; - - if(timevary_SRparm_first == 0) // no timevary SRR parms - { - if( timevary_MG_firstyr == YrMax && WTage_rd == 0) // no time-varying biology - { - R0_4_SRR = Recr_virgin; - SSB0_4_SRR = SSB_virgin; - SSB_unf = SSB_virgin; - } - else // there is time-varying biology - { - R0_4_SRR = Recr_virgin; // same as Recr_virgin because no timevary SRparms - if( timevary_bio_4SRR == 0) // legacy approach; this switch is read from starter.ss - { - SSB_unf = SSB_equil; - SSB0_4_SRR = SSB_equil; // this is inaccurate legacy, as it moves equil off the SRR, rather than along the SRR - } - else - { - // get new equilibrium point using original SRR and SSBpR_bench - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB_virgin, Recr_virgin, SSBpR_bench); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - SSB_unf = Equ_SpawnRecr_Result(1); - Recr_unf = Equ_SpawnRecr_Result(2); - if (show_MSY == 1) report5 << " use virgin SSBpR0 in SRR - SSB: " << SSB_virgin << " Recr: " << Recr_virgin << " SPR: " << SSB_virgin / Recr_virgin << " bench SPR: " << SSBpR_bench << " new equil: " << Equ_SpawnRecr_Result << endl; - } - SSBpR_bench = SSB_unf / Recr_unf; - } - } - else // there are timevary SRR parms; use same code regardless of timevary biology. Legacy approach does not include new equilibrium - { - Recr_unf = mfexp(SRparm_bench(1)); // R0 to be used - // note that steepness will get updated when SRparm_bench is used in Equ_SpawnRecr_Result - SSBpR_Calc(Recr_unf); // this returns SSB_equil using benchmark biology - SSB_unf = SSB_equil; - SSBpR_bench = SSB_equil / Recr_unf; - if( timevary_bio_4SRR == 0) // legacy approach; this switch is read from starter.ss - { - R0_4_SRR = Recr_unf; - SSB0_4_SRR = SSB_equil; // this is legacy, but incorrect, as it moves equil off the SRR, rather than along the SRR - } - else // use improved approach with updated SRparms and benchmark biology - { - // get new equilibrium point for the benchmark SRR - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB_equil, Recr_unf, SSBpR_bench); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - SSB_unf = Equ_SpawnRecr_Result(1); - SSB0_4_SRR = Equ_SpawnRecr_Result(1); - Recr_unf = Equ_SpawnRecr_Result(2); - R0_4_SRR = Equ_SpawnRecr_Result(2); - - if (show_MSY == 1) report5 << " use bench SSBpR0 in SRR - SSB: " << SSB_unf << " Recr: " << Recr_unf << " SPR: " << SSBpR_bench << " new equil: " << Equ_SpawnRecr_Result << endl; - } - } - - if (show_MSY == 1) - { - SRparm_bench(N_SRparm2 + 1) = SSB_unf; - Mgmt_quant(1) = SSB_unf; - Mgmt_quant(2) = totbio; // this is calculated in Do_Equil_Calc - Mgmt_quant(3) = smrybio; - Mgmt_quant(4) = Recr_unf; - report5 << "SRparms for benchmark: " << SRparm_bench << endl - << "Benchmark biology averaged over years: " << Bmark_Yr(1) << " " << Bmark_Yr(2) << endl << endl; - Mgmt_quant(19) = SSB_unf; // placeholder for depletion denominator - Mgmt_quant(20) = SSB_unf; // placeholder to be replaced by SSB_HCR_infl - Mgmt_quant(21) = R0_4_SRR; - Mgmt_quant(22) = SSB0_4_SRR; - } - - // find Fspr SS_Label_710 - { - if (show_MSY == 1) - { - report5 << "#" << endl - << "find_target_SPR" << endl; - report5 << "SPR_is_spawner_potential_ratio=(fishedSSB/R)/(unfishedSSB/R))" << endl; - report5 << "Iter Fmult ann_F SPR tot_catch"; - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " SSB_Area:" << p << "_GP:" << gp; - } - report5 << endl; - } - Fmult = 0.; - Nloops = 18; - Closer = 1.; - F1(1) = log(1.0e-3); - last_calc = 0.; - Fchange = -4.0; - - equ_Recr = 1.0; // so calls to Do_Equil_Calc will return values of SSBpR - Fishon = 0; - dvariable SPR_target100; - SPR_target100 = SPR_target * 100.; - - SSBpR_Calc(equ_Recr); // where equ_Recr has been set to 1.0 - SSBpR_unf = SSB_equil / equ_Recr; // this corresponds to the biology for benchmark average years, not the virgin SSB_virgin - Vbio1_unfished = smrybio; // gets value from equil_calc - if (show_MSY == 1) - { - report5 << "0 0 0 1 0"; - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " " << SSB_equil_pop_gp(p, gp); - } - report5 << endl; - } - - df = 1.e-5; - Fishon = 1; - for (j = 1; j <= Nloops; j++) // loop find Fspr - { - if (fabs(Fchange) <= 0.25) - { - jj = 3; - F1(2) = F1(1) + df * .5; - F1(3) = F1(2) - df; - } - else - { - jj = 1; - } - - for (int ii = jj; ii >= 1; ii--) - { - Fmult = 40.00 / (1.0 + mfexp(-F1(ii))); - - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - for (int s = 1; s <= nseas; s++) - { - Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); - } - } - // else Hrate for bycatch fleets already set - } - - Fishon = 1; - SSBpR_Calc(equ_Recr); - yld1(ii) = 100. * SSB_equil / SSBpR_unf; // spawning potential ratio - } - SPR_actual = yld1(1); // spawning potential ratio - - if (jj == 3) - { - Closer *= 0.5; - dyld = (yld1(2) - yld1(3)) / df; // First derivative (to find the root of this) - if (dyld != 0.) - { - last_F1 = F1(1); - F1(1) += (SPR_target100 - SPR_actual) / (dyld + 0.001); - F1(1) = (1. - Closer) * F1(1) + Closer * last_F1; - } // averages with last good value to keep from changing too fast - else - { - F1(1) = (F1(1) + last_F1) * 0.5; - } // go halfway back towards previous value - } - else - { - // if((last_calc-SPR_target)*(SPR_actual-SPR_target)<0.0) {Fchange*=-0.5;} // changed sign, so reverse search direction - temp = (last_calc - SPR_target100) * (SPR_actual - SPR_target100) / (sfabs(last_calc - SPR_target100) * sfabs(SPR_actual - SPR_target100)); // values of -1 or 1 - temp1 = temp - 1.; // values of -2 or 0 - Fchange *= exp(temp1 / 4.) * temp; - F1(1) += Fchange; - last_calc = SPR_actual; - } - - if (show_MSY == 1) - { - report5 << j << " " << Fmult << " " << equ_F_std << " " << SPR_actual / 100. << " " << sum(equ_catch_fleet(2)); - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " " << SSB_equil_pop_gp(p, gp); - } - report5 << endl; - } - } // end search loop - - if (show_MSY == 1) - { - if (fabs(SPR_actual - SPR_target100) >= 0.1) - { - warnstream << "poor convergence in Fspr search " << SPR_target << " " << SPR_actual / 100.; - write_message(WARN, 0); - } - if (SPR_actual / SPR_target100 >= 1.01) - { - warnstream << "Fmult = " << Fmult << " cannot get high enough to achieve low SPR target: " << SPR_target << "; SPR achieved is: " << SPR_actual / 100.; - write_message(WARN, 0); - } - - report5 << "seas fleet Hrate encB deadB retB encN deadN retN: " << endl; - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); - for (g = 1; g <= 6; g++) - { - report5 << " " << equ_catch_fleet(g, s, f); - } - report5 << endl; - } - } - - // SPAWN-RECR: calc equil spawn-recr in YPR; need to make this area-specific - SSBpR_temp = SSB_equil; // based on most recent call to Do_Equil_Calc - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - - Bspr = Equ_SpawnRecr_Result(1); - Bspr_rec = Equ_SpawnRecr_Result(2); - YPR_spr_enc = YPR_enc; // total encountered yield per recruit - YPR_spr_dead = YPR_dead; // total dead yield per recruit - YPR_spr_N_dead = YPR_N_dead; - YPR_spr_ret = YPR_ret; - YPR_spr_cost = Cost; - YPR_spr_revenue = (PricePerF * YPR_val_vec) * Equ_SpawnRecr_Result(2); // vector*vector*scalar - YPR_spr_profit = YPR_spr_revenue - Cost; - SPR_Fmult = Fmult; - if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - { - echoinput << "Calculated Fspr " << SPR_Fmult << " " << SPR_actual / 100. << endl; - } - Vbio_spr = totbio; - Vbio1_spr = smrybio; - Mgmt_quant(10) = equ_F_std; - Mgmt_quant(9) = Equ_SpawnRecr_Result(1); - Mgmt_quant(11) = YPR_dead * Equ_SpawnRecr_Result(2); - } // end finding Fspr - - if (Do_Benchmark == 2) // Find F0.1 - { - equ_Recr = 1.0; - Fishon = 1; - // get slope at origin - // Fmult=0.000001; - Fmult = 0.001; - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - for (int s = 1; s <= nseas; s++) - { - Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); - } - } - // else Hrate for bycatch fleets already set - } - SSBpR_Calc(equ_Recr); - F01_origin = YPR_opt / Fmult; - - BTGT_frac = 0.1; // now relative to Bmark - Btgttgt = F01_origin * 0.1; - if (show_MSY == 1) - { - report5 << "#" << endl - << "#Find_F0.1; slope_at_origin_wrt_Fmult: " << F01_origin << " " << YPR_opt << " " << Hrate(1, bio_t_base + 3) << endl; - report5 << "Iter Fmult ann_F SPR YPR YPR_slope YPR_curvature" << endl; - } - - Nloops = 20; - Closer = 0.75; - F1(1) = SPR_Fmult * 0.1; - for (j = 1; j <= Nloops; j++) // loop to find F0.1 - { - df = 0.01 * F1(1); - F1(2) = F1(1) + df * .5; - F1(3) = F1(2) - df; - for (int ii = 3; ii >= 1; ii--) - { - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - for (int s = 1; s <= nseas; s++) - { - Hrate(f, bio_t_base + s) = F1(ii) * Bmark_RelF_Use(s, f); - } - } // else Hrate for bycatch fleets set above - } - SSBpR_Calc(equ_Recr); - yld1(ii) = YPR_opt; - } - - F01_actual = (yld1(2) - yld1(3)) / (F1(2) - F1(3)); - F01_second = ((yld1(2) - yld1(1)) / (F1(2) - F1(1)) - (yld1(1) - yld1(3)) / (F1(1) - F1(3))) / (F1(2) - F1(3)); - - last_F1 = F1(1); - if (show_MSY == 1) - { - report5 << j << " " << F1(1) << " " << equ_F_std << " " << SSB_equil / SSBpR_unf << " " << YPR_opt << " " << F01_actual << " " << F01_second << " last F1 " << last_F1 << " Closer " << Closer << " delta " << (F01_origin * 0.1 - F01_actual) / (F01_second) << endl; - } - F1(1) += (F01_origin * 0.1 - F01_actual) / (F01_second); - F1(1) = (1. - Closer) * F1(1) + Closer * last_F1; - Closer *= 0.75; - } // end search loop - - if (show_MSY == 1) - { - if (sfabs(F01_origin * 0.1 - F01_actual) >= 0.001) - { - warnstream << "poor convergence in F0.1 search target= " << F01_origin * 0.1 << " actual= " << F01_actual; - write_message(WARN, 0); - } - report5 << "seas fleet Hrate encB deadB retB encN deadN retN): " << endl; - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); - for (g = 1; g <= 6; g++) - { - report5 << " " << equ_catch_fleet(g, s, f); - } - report5 << endl; - } - } - - Btgt_Fmult = F1(1); - if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - echoinput << "Calculated F0.1: " << Btgt_Fmult << endl; - SSBpR_temp = SSB_equil; - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - Btgt = Equ_SpawnRecr_Result(1); - Btgt_Rec = Equ_SpawnRecr_Result(2); - YPR_Btgt_enc = YPR_enc; // total encountered yield per recruit - YPR_Btgt_dead = YPR_dead; // total dead yield per recruit - YPR_Btgt_N_dead = YPR_N_dead; // total dead yield per recruit - YPR_Btgt_ret = YPR_ret; - YPR_Btgt_cost = Cost; - YPR_Btgt_revenue = (PricePerF * YPR_val_vec) * Btgt_Rec; // vector*vector*scalar - // YPR_Btgt_revenue = Price*YPR_ret*Btgt_Rec; - YPR_Btgt_profit = YPR_Btgt_revenue - Cost; - SPR_Btgt = SSB_equil / SSBpR_unf; - Vbio_Btgt = totbio; - Vbio1_Btgt = smrybio; - Mgmt_quant(7) = equ_F_std; - Mgmt_quant(5) = SSB_equil / SSB_unf * Btgt_Rec; - Mgmt_quant(6) = SSB_equil / SSB_unf; - Mgmt_quant(8) = YPR_dead * Btgt_Rec; - - } // end F0.1 - - else // find F giving Btarget SS_Label_720 - { - // ****************************************************** - - if (depletion_basis == 1 && timevary_bio_4SRR != 0) - {Btgttgt = BTGT_frac * SSB_virgin;} - else - {Btgttgt = BTGT_frac * SSB_unf;} // current SS3 approach uses benchmark biology - - if (show_MSY == 1) - { - report5 << "#" << endl; - if (depletion_basis == 1 && timevary_bio_4SRR != 0) - {report5 << "Find_target_SSB as fraction: " << BTGT_frac << " of Virgin SSB:" << SSB_virgin << endl;} - else - {report5 << "Find_target_SSB as fraction: " << BTGT_frac << " of SSB_unf: "<< SSB_unf << endl;} - report5 << "Iter Fmult ann_F SPR Catch SSB Recruits SSB/Bzero Tot_catch"; - - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " SSB_Area:" << p << "_GP:" << gp; - } - report5 << endl; - } - - F1(1) = log(1.0e-3); - last_calc = 0.; - Fchange = -4.0; - df = 1.e-5; - Closer = 1.; - dvariable Closer2; - if (SR_fxn == 5) - { - Closer2 = 0.001; - Nloops = 40; - } - else - { - Closer2 = 0.10; - Nloops = 28; - } - - for (j = 0; j <= Nloops; j++) // loop find Btarget - { - if (fabs(Fchange) <= Closer2) - { - jj = 3; - F1(2) = F1(1) + df * .5; - F1(3) = F1(2) - df; - } - else - { - jj = 1; - } - for (int ii = jj; ii >= 1; ii--) - { - if (j == 0) - { - Fmult = 0.0; - } - else - { - Fmult = 40.00 / (1.00 + mfexp(-F1(ii))); - } - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - for (int s = 1; s <= nseas; s++) - { - Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); - } - } - // else Hrate for bycatch fleets already set - } - SSBpR_Calc(equ_Recr); // where equ_Recr=1.0, so returned SSB_equil is in units of SSB/R, - SSBpR_temp = SSB_equil; -// warning << equ_Recr << " " << SSB_equil << " " << SRparm_bench << " " << SSBpR_temp << endl; - SPR_Btgt = SSBpR_temp / SSBpR_unf; // where SSBpR_unf = SSB_unf / Recr_unf so units of SSB/R; so result is SPR_Btgt = (fished SSB/R) / (unfished SSB/R) - // SPAWN-RECR: calc equil spawn-recr for Btarget calcs; need to make area-specific - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR -// warning << SSB0_4_SRR << " " << R0_4_SRR << Equ_SpawnRecr_Result << endl; - yld1(ii) = Equ_SpawnRecr_Result(1); - } - - Btgt = Equ_SpawnRecr_Result(1); // so uses benchmark average years - - if (jj == 3) - { - Closer *= 0.5; - dyld = (yld1(2) - yld1(3)) / df; // First derivative - if (dyld != 0.) - { - last_F1 = F1(1); - F1(1) -= (Btgt - Btgttgt) / (dyld + 0.001); - F1(1) = (1. - Closer) * F1(1) + (Closer)*last_F1; - } // weighted average with last good value to keep from changing too fast - else - { - F1(1) = (F1(1) + last_F1) * 0.5; - } // go halfway back towards previous value - } - else - { - temp = (last_calc - Btgttgt) * (Btgt - Btgttgt) / (sfabs(last_calc - Btgttgt) * sfabs(Btgt - Btgttgt)); // values of -1 or 1 - temp1 = temp - 1.; // values of -2 or 0 - Fchange *= exp(temp1 / 4.) * temp; - F1(1) += Fchange; - last_calc = Btgt; - } - - if (show_MSY == 1) - { - report5 << j << " " << Fmult << " " << equ_F_std << " " << SPR_Btgt << " " << YPR_dead * Equ_SpawnRecr_Result(2) << " " << Btgt << " " << Equ_SpawnRecr_Result(2) - << " " << Btgt / (Btgttgt / BTGT_frac) << " " << sum(equ_catch_fleet(2)) * Equ_SpawnRecr_Result(2); - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " " << SSB_equil_pop_gp(p, gp) * Equ_SpawnRecr_Result(2); - } - report5 << endl; - } - } // end search loop - - Btgt_Rec = Equ_SpawnRecr_Result(2); - - if (show_MSY == 1) - { - if (fabs(log(Btgt / Btgttgt)) >= 0.001) - { - warnstream << "poor convergence in Btarget search " << Btgttgt << " " << Btgt; - write_message (WARN, 0); - } - report5 << "seas fleet Hrate encB deadB retB encN deadN retN): " << endl; - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); - for (g = 1; g <= 6; g++) - { - report5 << " " << Btgt_Rec * equ_catch_fleet(g, s, f); - } - report5 << endl; - } - } - - Btgt_Fmult = Fmult; - if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - { - echoinput << "Calculated Btgt: " << Btgt_Fmult << " " << Btgt / SSB_unf << endl; - } - YPR_Btgt_enc = YPR_enc; // total encountered yield per recruit - YPR_Btgt_dead = YPR_dead; // total dead yield per recruit - YPR_Btgt_N_dead = YPR_N_dead; // total dead yield per recruit - YPR_Btgt_ret = YPR_ret; - YPR_Btgt_cost = Cost; - // YPR_Btgt_revenue = Price*YPR_ret*Btgt_Rec; - YPR_Btgt_revenue = (PricePerF * YPR_val_vec) * Btgt_Rec; - YPR_Btgt_profit = YPR_Btgt_revenue - Cost; - Vbio_Btgt = totbio; - Vbio1_Btgt = smrybio; - Mgmt_quant(7) = equ_F_std; - Mgmt_quant(5) = Btgt; - Mgmt_quant(6) = SPR_Btgt; - Mgmt_quant(8) = YPR_dead * Btgt_Rec; - } // end finding F for Btarget - - // ****************************************************** - // start finding Fmsy SS_Label_730 - if (Do_MSY == 0) - { - Fmax = 1.; - MSY = -1; - Bmsy = -1; - Recr_msy = -1; - MSY_SPR = -1; - Yield = -1; - totbio = 1; - smrybio = 1.; - MSY_Fmult = -1.; // use these values if MSY is not calculated - if (show_MSY == 1) - report5 << "MSY_not_calculated;_ignore_values" << endl; - } - else - { - if (F_Method >= 2) - { - Fmax = 3.00 * Btgt_Fmult; - } - - switch (Do_MSY) // set conditions for the MSY search loops - { - case 1: // set Fmsy=Fspr - { - Fmult = SPR_Fmult; - if (F_Method == 1) - { - Fmax = SPR_Fmult * 1.1; - } - F1(1) = -log(Fmax / SPR_Fmult - 1.); - last_calc = 0.; - Fchange = 1.0; - Closer = 1.; - Nloops = 0; - Nloops2 = 0; - F2(1) = -log(Fmax / SPR_Fmult - 1.); - break; - } - case 3: // set Fmsy=Fbtgt - { - Fmult = Btgt_Fmult; - if (F_Method == 1) - { - Fmax = Btgt_Fmult * 1.1; - } - F1(1) = -log(Fmax / Btgt_Fmult - 1.); - last_calc = 0.; - Fchange = 1.0; - Closer = 1.0; - Nloops = 0; - Nloops2 = 0; - F2(1) = -log(Fmax / SPR_Fmult - 1.); - break; - } - case 4: // set fmult for Fmsy to 1 - { - Fmult = 1; - Fmax = 1.1; - F1(1) = -log(Fmax / Fmult - 1.); - last_calc = 0.; - Fchange = 1.0; - Closer = 1.0; - Nloops = 0; - Nloops2 = 0; - F2(1) = -log(Fmax / SPR_Fmult - 1.); - break; - } - case 2: // calc Fmsy - { - // proceed to case 5 - } - case 5: // calc Fmey - { - last_calc = 0.; - Fchange = 0.51; - Closer = 1.0; - if (SR_fxn == 5) - { - Nloops2 = 40; - } - else - { - Nloops2 = 19; - } - if (F_Method == 1) - { - Fmax = (Btgt_Fmult + SPR_Fmult) * 0.5 * SRparm_bench(2) / 0.05; - } // previously /0.18 - F1(1) = -log(Fmax / Btgt_Fmult - 1.); - F2(1) = -log(Fmax / Btgt_Fmult - 1.); - break; - } - } - - // Compute stats for saving (a bit of a trick) - if (Do_MSY == 1 || Do_MSY == 3 || Do_MSY == 4) // Fmsy set to existing quantity, so not estimated - { - if (show_MSY == 1) // report some headers - { - report5 << "#" << endl - << MSY_name << endl - << "Iter Fmult ann_F SPR Catch SSB Recruits SSB/Bzero Gradient Curvature Tot_Ret_Catch"; - for (f = 1; f <= Nfleet; f++) - report5 << " Ret_Catch:" << f << " "; - report5 << "Cost Revenue Profit "; - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " Area:" << p << "_GP:" << gp; - } - report5 << endl; - } - // Fmult=Fmax/(1.00+mfexp(-F1(1))); // using the F1 calculated in previous section - for (f = 1; f <= Nfleet; f++) - { - // if(YPR_mask(f)==1) // incorrect usage, should use bycatch_setup(f,3) per replacement line below - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - for (int s = 1; s <= nseas; s++) - { - Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); - } - } - // else Hrate for bycatch fleets already set - } - - SSBpR_Calc(equ_Recr); - // SPAWN-RECR: calc spawn-recr for MSY calcs; need to make area-specific - MSY_SPR = SSB_equil / SSBpR_unf; - SSBpR_temp = SSB_equil; - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - Bmsy = Equ_SpawnRecr_Result(1); // with MSY set to SPR, not directly estimated - Recr_msy = Equ_SpawnRecr_Result(2); - yld1(1) = YPR_opt * Recr_msy; - YPR_msy_enc = YPR_enc; - YPR_msy_dead = YPR_dead; // total dead yield - YPR_msy_N_dead = YPR_N_dead; // total dead yield - YPR_msy_ret = YPR_ret; // total retained yield - YPR_msy_cost = Cost; - YPR_msy_revenue = (PricePerF * YPR_val_vec) * Recr_msy; // vector*vector*scalar - YPR_msy_profit = YPR_msy_revenue - Cost; - MSY = yld1(1); - MSY_Fmult = Fmult; - if (show_MSY == 1) - { - report5 << 1 << " " << Fmult << " " << equ_F_std << " " << MSY_SPR << " " << yld1(1) << " " << Bmsy << " " << Recr_msy << " " << Bmsy / SSB_unf << " " - << " na " - << " na " << YPR_msy_ret * Recr_msy; - report5 << value(equ_catch_fleet(3) * Recr_msy) << " " << Cost << " " << YPR_msy_revenue << " " << Profit << " "; - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " " << SSB_equil_pop_gp(p, gp) * Recr_msy; - } - report5 << endl; - } - - Mgmt_quant(12) = Bmsy; - Mgmt_quant(13) = MSY_SPR; - Mgmt_quant(14) = equ_F_std; - Mgmt_quant(15) = yld1(1); - Mgmt_quant(16) = YPR_ret * Recr_msy; - Mgmt_quant(17) = Bmsy / SSB_unf; - Mgmt_quant(18) = Recr_msy; - Vbio1_MSY = smrybio; - Vbio_MSY = totbio; - } - - else // (Do_MSY==2 || Do_MSY==5) // search for FMSY, then optionally for FMEY; FMEY embedded inside this section - { - if (show_MSY == 1) // report some headers - { - report5 << endl - << MSY_name << endl; - report5 << "Iter Fmult ann_F SPR Opt_Catch_Profit SSB Recruits SSB/Bzero Gradient Curvature Tot_Ret_Catch"; - for (f = 1; f <= Nfleet; f++) - report5 << " Ret_Catch:" << f << " "; - report5 << "Cost Revenue Profit "; - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " Area:" << p << "_GP:" << gp; - } - report5 << endl; - } - bestF1.initialize(); - bestF2.initialize(); - df = 0.050; - jj = 3; - Fishon = 1; - Closer = 1.0; - for (j = 0; j <= Nloops2; j++) // loop to find Fmsy - { - df *= .95; - Closer *= 0.8; - F2(2) = F2(1) + df * .5; - F2(3) = F2(2) - df; - for (int ii = jj; ii >= 1; ii--) - { - Fmult = Fmax / (1.00 + mfexp(-F2(ii))); - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - if (AdjustBenchF(f) == 1) - { - for (int s = 1; s <= nseas; s++) - { - Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); - } - } - else - { - for (int s = 1; s <= nseas; s++) - { - Hrate(f, bio_t_base + s) = Bmark_HistF(s, f); - } - } - } // else Hrate for bycatch fleets set above - } - SSBpR_Calc(equ_Recr); - // SPAWN-RECR: calc spawn-recr for MSY calcs; need to make area-specific - MSY_SPR = SSB_equil / SSBpR_unf; - SSBpR_temp = SSB_equil; - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - Bmsy = Equ_SpawnRecr_Result(1); // MSY is directly estimated - Recr_msy = Equ_SpawnRecr_Result(2); - Profit = (PricePerF * YPR_val_vec) * Recr_msy - Cost; - if (Do_MSY == 2) // dead catch without excluded bycatch fleets - { - yld1(ii) = YPR_opt * Recr_msy; - } - - // else using the bioecon options that depend on MSY_units - else if (MSY_units == 2) // retained catch without excluded bycatch fleets, but still with size/age discard - { - yld1(ii) = YPR_opt * Recr_msy; - } - else if (MSY_units == 1) // dead catch - { - yld1(ii) = YPR_dead * Recr_msy; - } - else if (MSY_units == 3) // retained catch - { - yld1(ii) = YPR_ret * Recr_msy; - } - else // profit - { - yld1(ii) = (PricePerF * YPR_val_vec) * Recr_msy - Cost; - } - - bestF1 += F2(ii) * (pow(mfexp(yld1(ii) / 1.0e08), 5) - 1.); - bestF2 += pow(mfexp(yld1(ii) / 1.0e08), 5) - 1.; - } // end gradient calc - dyld = (yld1(2) - yld1(3)) / df; // First derivative (to find the root of this) - temp = (yld1(2) + yld1(3) - 2. * yld1(1)) / (.25 * df * df); // Second derivative (for Newton Raphson) - dyldp = -sqrt(temp * temp + 1.); // add 1 to keep curvature reasonably large - last_F1 = F2(1); - temp = F2(1) - dyld * (1. - Closer) / (dyldp); - if (show_MSY == 1) - { - report5 << j << " " << Fmult << " " << equ_F_std << " " << MSY_SPR << " " << yld1(1) << " " << Bmsy << " " << Recr_msy << " " << Bmsy / SSB_unf << " " - << dyld << " " << dyldp << " " << value(sum(equ_catch_fleet(3)) * Recr_msy) << " "; - report5 << " " << value(colsum(equ_catch_fleet(3)) * Recr_msy) << " " << Cost << " " << PricePerF * YPR_val_vec * Recr_msy << " " << Profit << " "; - // colsum above sums across seasons so reports annual catch for each fleet, including survey fleets - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " " << SSB_equil_pop_gp(p, gp) * Recr_msy; - } - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - report5 << " " << Hrate(f, bio_t_base + 1) << " "; - } - report5 << endl; - } - if (j <= 9) - { - F2(1) = (1. - Closer) * temp + Closer * (bestF1 / bestF2); - } // averages with best value to keep from changing too fast - else - { - F2(1) = temp; - } - } // end search loop - - YPR_msy_enc = YPR_enc; - YPR_msy_dead = YPR_dead; // total dead yield - YPR_msy_N_dead = YPR_N_dead; // total dead yield - YPR_msy_ret = YPR_ret; // total retained yield - YPR_msy_cost = Cost; - YPR_msy_revenue = (PricePerF * YPR_val_vec) * Recr_msy; // vector*vector*scalar - YPR_msy_profit = YPR_msy_revenue - Cost; - MSY = yld1(1); - MSY_Fmult = Fmult; - Mgmt_quant(12) = Bmsy; - Mgmt_quant(13) = MSY_SPR; - Mgmt_quant(14) = equ_F_std; - Mgmt_quant(15) = yld1(1); - Mgmt_quant(16) = YPR_ret * Recr_msy; - Mgmt_quant(17) = Bmsy / SSB_unf; - Mgmt_quant(18) = Recr_msy; - - Vbio1_MSY = smrybio; - Vbio_MSY = totbio; - - if (show_MSY == 1) - { - if (fabs(dyld / dyldp) >= 0.001) - { - warnstream << "poor convergence in Fmsy, final dy/dy2= " << dyld / dyldp; - write_message (WARN, 0); - } - report5 << "seas fleet Hrate encB deadB retB encN deadN retN): " << endl; - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); - for (g = 1; g <= 6; g++) - { - report5 << " " << Recr_msy * equ_catch_fleet(g, s, f); - } - report5 << endl; - } - report5 << "Equil_N_at_age_at_MSY_each" << endl - << "Seas Area GP Sex subM" << age_vector << endl; - for (s = 1; s <= nseas; s++) - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - { - if (use_morph(g) > 0) - report5 << s << " " << p << " " << GP4(g) << " " << sx(g) << " " << GP2(g) << " " << Recr_msy * equ_numbers(s, p, g)(0, nages) << endl; - } - - report5 << "Equil_N_at_age_at_MSY_sum" << endl - << "GP Sex N/Z" << age_vector << endl; - for (gg = 1; gg <= gender; gg++) - for (gp = 1; gp <= N_GP; gp++) - { - tempvec_a.initialize(); - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (GP4(g) == gp && sx(g) == gg) - tempvec_a += value(Recr_msy * equ_numbers(1, p, g)(0, nages)); - } - if (nseas > 1) - { - tempvec_a(0) = 0.; - for (s = 1; s <= nseas; s++) - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0 && Bseas(g) == s) - { - if (GP4(g) == gp && sx(g) == gg) - tempvec_a(0) += value(Recr_msy * equ_numbers(1, p, g, 0)); - } - } - report5 << gp << " " << gg << " N " << tempvec_a << endl; - report5 << gp << " " << gg << " Z "; - for (a = 0; a <= nages - 2; a++) - { - report5 << -log(tempvec_a(a + 1) / tempvec_a(a)) << " "; - } - report5 << " NA NA" << endl; - } - - Fishon = 0; - SSBpR_Calc(equ_Recr); - report5 << "Equil_N_at_age_M_only_Recr_MSY" << endl - << "Seas Area GP Sex subM" << age_vector << endl; - for (s = 1; s <= nseas; s++) - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - { - if (use_morph(g) > 0) - report5 << s << " " << p << " " << GP4(g) << " " << sx(g) << " " << GP2(g) << " " << Recr_msy * equ_numbers(s, p, g)(0, nages) << endl; - } - - report5 << "Equil_N_at_age_M_only_sum" << endl - << "GP Sex N/Z " << age_vector << endl; - for (gg = 1; gg <= gender; gg++) - for (gp = 1; gp <= N_GP; gp++) - { - tempvec_a.initialize(); - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (GP4(g) == gp && sx(g) == gg) - tempvec_a += value(Recr_msy * equ_numbers(1, p, g)(0, nages)); - } - if (nseas > 1) - { - tempvec_a(0) = 0.; - for (s = 1; s <= nseas; s++) - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0 && Bseas(g) == s) - { - if (GP4(g) == gp && sx(g) == gg) - tempvec_a(0) += value(Recr_msy * equ_numbers(1, p, g, 0)); - } - } - report5 << gp << " " << gg << " N " << tempvec_a << endl; - report5 << gp << " " << gg << " Z "; - for (a = 0; a <= nages - 2; a++) - { - report5 << -log(tempvec_a(a + 1) / tempvec_a(a)) << " "; - } - report5 << " NA NA" << endl; - } - - Fishon = 1; - - if (Fmult * 3.0 <= SPR_Fmult) - { - warnstream << "Fmsy/mey is <1/3 of Fspr are you sure? check for convergence "; - write_message (WARN, 0); - } - if (Fmult / 3.0 >= SPR_Fmult) - { - warnstream << "Fmsy/mey is >3x of Fspr are you sure? check for convergence "; - write_message (WARN, 0); - } - if (Fmult / 0.98 >= Fmax) - { - warnstream << "Fmsy.mey is close to max allowed; check for convergence "; - write_message (WARN, 0); - } - report5 << "end Seach for MSY" << endl; - } // end Do_MSY = 2 - } - } - - if (Do_Benchmark == 3) // find F giving B as fraction of Bmsy - { - if (show_MSY == 1) - { - report5 << "#" << endl - << "Find_target_SSB/Blimit; where Blimit is a fraction of Bmsy" << Blim_frac << endl - << "Iter Fmult ann_F SPR Catch SSB Recruits SSB/Bzero Tot_catch"; - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " SSB_Area:" << p << "_GP:" << gp; - } - report5 << endl; - } - - F1(1) = log(1.0e-3); - last_calc = 0.; - Fchange = -4.0; - df = 1.e-5; - Closer = 1.; - dvariable Closer2; - if (SR_fxn == 5) - { - Closer2 = 0.001; - Nloops = 40; - } - else - { - Closer2 = 0.10; - Nloops = 28; - } - - // Btgttgt=BTGT_frac*SSB_virgin; // this is relative to virgin, not to the average biology from benchmark years - double Blim_report; - if (Blim_frac > 0.0) - { - Btgttgt2 = Blim_frac * Bmsy; - Blim_report = value(Bmsy); - } - else if (depletion_basis == 1) - { - Btgttgt2 = -Blim_frac * SSB_virgin; - Blim_report = value(SSB_virgin); - } - else - { - Btgttgt2 = -Blim_frac * SSB_unf; - Blim_report = value(SSB_unf); - } - - for (j = 0; j <= Nloops; j++) // loop find Btarget - { - if (fabs(Fchange) <= Closer2) - { - jj = 3; - F1(2) = F1(1) + df * .5; - F1(3) = F1(2) - df; - } - else - { - jj = 1; - } - for (int ii = jj; ii >= 1; ii--) - { - if (j == 0) - { - Fmult = 0.0; - } - else - { - Fmult = 40.00 / (1.00 + mfexp(-F1(ii))); - } - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - for (int s = 1; s <= nseas; s++) - { - Hrate(f, bio_t_base + s) = Fmult * Bmark_RelF_Use(s, f); - } - } - // else Hrate for bycatch fleets already set - } - SSBpR_Calc(equ_Recr); - SPR_Btgt2 = SSB_equil / SSBpR_unf; - // SPAWN-RECR: calc equil spawn-recr for Btarget calcs; need to make area-specific - SSBpR_temp = SSB_equil; - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - yld1(ii) = Equ_SpawnRecr_Result(1); - } - - Btgt2 = Equ_SpawnRecr_Result(1); // so uses benchmark average years - - if (jj == 3) - { - Closer *= 0.5; - dyld = (yld1(2) - yld1(3)) / df; // First derivative - if (dyld != 0.) - { - last_F1 = F1(1); - F1(1) -= (Btgt2 - Btgttgt2) / (dyld + 0.001); - F1(1) = (1. - Closer) * F1(1) + (Closer)*last_F1; - } // weighted average with last good value to keep from changing too fast - else - { - F1(1) = (F1(1) + last_F1) * 0.5; - } // go halfway back towards previous value - } - else - { - temp = (last_calc - Btgttgt2) * (Btgt2 - Btgttgt2) / (sfabs(last_calc - Btgttgt2) * sfabs(Btgt2 - Btgttgt2)); // values of -1 or 1 - temp1 = temp - 1.; // values of -2 or 0 - Fchange *= exp(temp1 / 4.) * temp; - F1(1) += Fchange; - last_calc = Btgt2; - } - - if (show_MSY == 1) - { - report5 << j << " " << Fmult << " " << equ_F_std << " " << SPR_Btgt2 << " " << YPR_dead * Equ_SpawnRecr_Result(2) << " " << Btgt2 << " " << Equ_SpawnRecr_Result(2) - << " " << Btgt2 / Blim_report << " " << sum(equ_catch_fleet(2)) * Equ_SpawnRecr_Result(2); - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - report5 << " " << SSB_equil_pop_gp(p, gp) * Equ_SpawnRecr_Result(2); - } - report5 << endl; - } - } // end search loop - - Btgt_Rec2 = Equ_SpawnRecr_Result(2); - - if (show_MSY == 1) - { - if (fabs(log(Btgt2 / Btgttgt2)) >= 0.001) - { - warnstream << "poor convergence in Blimit search " << Btgttgt2 << " " << Btgt2 ; - write_message (WARN, 0); - } - report5 << "seas fleet Hrate encB deadB retB encN deadN retN): " << endl; - for (s = 1; s <= nseas; s++) - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - report5 << s << " " << f << " " << Hrate(f, bio_t_base + s); - for (g = 1; g <= 6; g++) - { - report5 << " " << Btgt_Rec2 * equ_catch_fleet(g, s, f); - } - report5 << endl; - } - } - - Btgt_Fmult2 = Fmult; - if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - echoinput << "Calculated F_Blimit " << Btgt_Fmult2 << " " << Btgt2 / Blim_report << endl; - Mgmt_quant(N_STD_Mgmt_Quant - 2) = Btgt2; - Mgmt_quant(N_STD_Mgmt_Quant - 1) = equ_F_std; - Mgmt_quant(N_STD_Mgmt_Quant) = sum(equ_catch_fleet(2)) * Equ_SpawnRecr_Result(2); - } // end finding F for Blimit - - if (rundetail > 0 && mceval_counter == 0 && show_MSY == 1) - echoinput << "Calculated Fmsy " << MSY_Fmult << " " << MSY << endl; - - // ***************** show management report SS_Label_740 - if (show_MSY == 1) - { - report5 << "#" << endl - << "Management_report" << endl; - report5 << "Virgin: Steepness_Recr_SSB " << SRparm(2) << " " << Recr_virgin << " " << SSB_virgin << endl; - report5 << "Bench: Steepness_Recr_SSB " << SRparm_bench(2) << " " << R0_4_SRR << " " << SSB0_4_SRR << endl; - report5 << "unf : Steepness_Recr_SSB " << SRparm_bench(2) << " " << Recr_unf << " " << SSB_unf << endl; - report5 << "#" << endl - << "Summary_age: " << Smry_Age << endl; - report5 << "#_Bmark_years: beg_bio, end_bio, beg_selex, end_selex, beg_relF, end_relF, beg_recr_dist, end_recr_dist, beg_SRparm, end_SRparm" << endl - << Bmark_Yr << endl; - if (N_bycatch > 0) - { - report5 << "Bycatch_Fleets: " << column(bycatch_setup, 1) << endl; - report5 << "Fleets_in_optimized_catch: " << YPR_mask << endl; - report5 << "Bycatch_Fleets_F_scaling: " << column(bycatch_setup, 3) << endl; - } - report5 << "#" << endl - << "Element Value Value/Recr" << endl; - report5 << "Recr_unfished(Bmark) " << Recr_unf << endl; - report5 << "SSB_unfished(Bmark) " << SSB_unf << " " << SSB_unf / Recr_unf << endl; - report5 << "BIO_Smry_unfished(Bmark) " << Vbio1_unfished * Recr_unf << " " << Vbio1_unfished << endl; - report5 << "#" << endl - << "Spawner_Potential_Ratio_as_target" << endl; - - report5 << "SPR_target " << SPR_target << endl; - report5 << "SPR_calc " << SPR_actual / 100. << endl; - report5 << "Fmult " << SPR_Fmult << endl; - report5 << "ann_F " << Mgmt_quant(10) << endl; - report5 << "Exploit(Catch_dead/B_smry) " << YPR_spr_dead / Vbio1_spr << endl; - report5 << "Recruits " << Bspr_rec << endl; - report5 << "SSBio " << Bspr << " " << Bspr / Bspr_rec << endl; - report5 << "Catch_encountered " << YPR_spr_enc * Bspr_rec << " " << YPR_spr_enc << endl; - report5 << "Catch_dead " << YPR_spr_dead * Bspr_rec << " " << YPR_spr_dead << endl; - report5 << "Catch_retain " << YPR_spr_ret * Bspr_rec << " " << YPR_spr_ret << endl; - report5 << "Revenue " << YPR_spr_revenue << endl; - report5 << "Cost " << YPR_spr_cost << endl; - report5 << "Profit " << YPR_spr_profit << endl; - report5 << "Biomass_Smry " << Vbio1_spr * Bspr_rec << " " << Vbio1_spr << endl; - - if (Do_Benchmark == 2) // F0.1 - { - report5 << "#" << endl - << "F0.1_as_target" << endl; - report5 << "slope_target: " << F01_origin * 0.1 << endl; - report5 << "slope_calc: " << F01_actual << endl; - report5 << "SPR@F0.1 " << SPR_Btgt << endl; - report5 << "Fmult " << Btgt_Fmult << endl; - report5 << "ann_F " << Mgmt_quant(7) << endl; - report5 << "Exploit(Catch_dead/B_smry) " << YPR_Btgt_dead / Vbio1_Btgt << endl; - report5 << "Recruits@F0.1 " << Btgt_Rec << endl; - report5 << "SSBio " << Btgt << " " << Btgt / Btgt_Rec << endl; - report5 << "Catch_encountered " << YPR_Btgt_enc * Btgt_Rec << " " << YPR_Btgt_enc << endl; - report5 << "Catch_dead " << YPR_Btgt_dead * Btgt_Rec << " " << YPR_Btgt_dead << endl; - report5 << "Catch_retain " << YPR_Btgt_ret * Btgt_Rec << " " << YPR_Btgt_ret << endl; - report5 << "Revenue " << YPR_Btgt_revenue << endl; - report5 << "Cost " << YPR_Btgt_cost << endl; - report5 << "Profit " << YPR_Btgt_profit << endl; - report5 << "Biomass_Smry " << Vbio1_Btgt * Btgt_Rec << " " << Vbio1_Btgt << endl; - } - else - { - report5 << "#" << endl - << "Ratio_SSB/B0_as_target" << endl; - report5 << "Ratio_target " << BTGT_frac << endl; - report5 << "Ratio_calc " << Btgt / SSB_unf << endl; - report5 << "SPR@Btgt " << SPR_Btgt << endl; - report5 << "Fmult " << Btgt_Fmult << endl; - report5 << "ann_F " << Mgmt_quant(7) << endl; - report5 << "Exploit(Catch_dead/B_smry) " << YPR_Btgt_dead / Vbio1_Btgt << endl; - report5 << "Recruits " << Btgt_Rec << endl; - report5 << "SSBio " << Btgt << " " << Btgt / Btgt_Rec << endl; - report5 << "Catch_encountered " << YPR_Btgt_enc * Btgt_Rec << " " << YPR_Btgt_enc << endl; - report5 << "Catch_dead " << YPR_Btgt_dead * Btgt_Rec << " " << YPR_Btgt_dead << endl; - report5 << "Catch_retain " << YPR_Btgt_ret * Btgt_Rec << " " << YPR_Btgt_ret << endl; - report5 << "Revenue " << YPR_Btgt_revenue << endl; - report5 << "Cost " << YPR_Btgt_cost << endl; - report5 << "Profit " << YPR_Btgt_profit << endl; - report5 << "Biomass_Smry " << Vbio1_Btgt * Btgt_Rec << " " << Vbio1_Btgt << endl; - } - - report5 << "#" << endl - << MSY_name << endl; - report5 << "SPR@MSY " << MSY_SPR << endl; - report5 << "Fmult " << MSY_Fmult << endl; - report5 << "ann_F " << Mgmt_quant(14) << endl; - report5 << "Exploit(Catch/Bsmry) " << MSY / (Vbio1_MSY * Recr_msy) << endl; - report5 << "Recruits@MSY " << Recr_msy << endl; - report5 << "SSBmsy " << Bmsy << " " << Bmsy / Recr_msy << endl; - report5 << "SSBmsy/SSB_virgin " << Bmsy / SSB_virgin << endl; - report5 << "SSBmsy/SSB_unfished " << Bmsy / SSB_unf << endl; - report5 << "MSY_for_optimize " << MSY << " " << MSY / Recr_msy << endl; - report5 << "MSY_encountered " << YPR_msy_enc * Recr_msy << " " << YPR_msy_enc << endl; - report5 << "MSY_dead " << YPR_msy_dead * Recr_msy << " " << YPR_msy_dead << endl; - report5 << "MSY_retain " << YPR_msy_ret * Recr_msy << " " << YPR_msy_ret << endl; - report5 << "MSY_revenue " << YPR_msy_revenue << endl; - report5 << "MSY_cost " << YPR_msy_cost << endl; - report5 << "MSY_profit " << YPR_msy_profit << endl; - report5 << "Biomass_Smry " << Vbio1_MSY * Recr_msy << " " << Vbio1_MSY << endl - << "#" << endl; - } - else if (show_MSY == 2) // do brief output - { - SS2out << SPR_actual / 100. << " " << SPR_Fmult << " " << Mgmt_quant(10) << " " << YPR_spr_dead / Vbio1_spr << " " << Bspr_rec << " " - << Bspr << " " << YPR_spr_dead * Bspr_rec << " " << YPR_spr_ret * Bspr_rec - << " " << Vbio1_spr * Bspr_rec << " # "; - - SS2out << SPR_Btgt << " " << Btgt / SSB_unf << " " << Btgt_Fmult << " " << Mgmt_quant(7) << " " << YPR_Btgt_dead / Vbio1_Btgt << " " << Btgt_Rec << " " - << Btgt << " " << YPR_Btgt_dead * Btgt_Rec << " " << YPR_Btgt_ret * Btgt_Rec - << " " << Vbio1_Btgt * Btgt_Rec << " # "; - - SS2out << MSY_SPR << " " << Bmsy / SSB_unf << " " << MSY_Fmult << " " << Mgmt_quant(14) << " " << MSY / (Vbio1_MSY * Recr_msy) << " " << Recr_msy << " " - << Bmsy << " " << MSY << " " << YPR_msy_dead * Recr_msy << " " << YPR_msy_ret * Recr_msy - << " " << Vbio1_MSY * Recr_msy << " # " << endl; - } - write_bodywt = write_bodywt_save; -// report5 << "Repro_output_by_age_for_morph_1_after_benchmark: " << fec(1) << endl; - } // end benchmarks - -FUNCTION void Get_Forecast() - { - //******************************************************************** - /* SS_Label_FUNCTION 35 Get_Forecast */ - t_base = styr + (endyr - styr) * nseas - 1; - int adv_age; - dvariable OFL_catch; - dvariable Fcast_Crash; - dvariable totcatch; - dvar_matrix catage_w(1, gmorph, 0, nages); - dvar_vector tempcatch(1, Nfleet); - imatrix Do_F_tune(t_base, TimeMax_Fcast_std, 1, Nfleet); // flag for doing F from catch - dvar_matrix Fcast_Catch_Store(t_base, TimeMax_Fcast_std, 1, Nfleet); - dvar_vector Fcast_Catch_Calc_Annual(1, Nfleet); - dvar_vector Fcast_Catch_Allocation_Group(1, Fcast_Catch_Allocation_Groups); - dvar_vector Fcast_Catch_ByArea(1, pop); - - dvar_vector H_temp(1, Nfleet); - dvar_vector C_temp(1, Nfleet); - dvar_vector H_old(1, Nfleet); - dvar_vector C_old(1, Nfleet); - int Tune_F; - int Tune_F_loops; - - int ABC_Loop_start = 1; - int ABC_Loop_end = 3; - - Do_F_tune.initialize(); - - if (fishery_on_off == 1) - { - switch (Do_Forecast) - { - case 1: - { - - Fcast_Fmult = SPR_Fmult; - if (show_MSY == 1) - report5 << "1: Forecast_using_Fspr: " << Fcast_Fmult << endl; - break; - } - case 2: - { - Fcast_Fmult = MSY_Fmult; - if (show_MSY == 1) - report5 << "2: Forecast_using_Fmsy: " << Fcast_Fmult << endl; - break; - } - case 3: - { - Fcast_Fmult = Btgt_Fmult; - if (show_MSY == 1) - report5 << "3: Forecast_using_F(Btarget): " << Fcast_Fmult << endl; - break; - } - case 4: - { - Fcast_Fmult = 0.0; - for (y = Fcast_RelF_yr1; y <= Fcast_RelF_yr2; y++) - for (s = 1; s <= nseas; s++) - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - t = styr + (y - styr) * nseas + s - 1; - Fcast_Fmult += Hrate(f, t); - } - } - Fcast_Fmult /= float(Fcast_RelF_yr2 - Fcast_RelF_yr1 + 1); - Fcurr_Fmult = Fcast_Fmult; - if (show_MSY == 1) - report5 << "4: Forecast_using_ave_F_from:_" << Fcast_RelF_yr1 << "_" << Fcast_RelF_yr2 << " value: " << Fcast_Fmult << endl; - break; - } - case 5: - { - Fcast_Fmult = Fcast_Flevel; - if (show_MSY == 1) - report5 << "5: Forecast_using_input_F " << Fcast_Flevel << endl; - break; - } - } - join1 = 1. / (1. + mfexp(30. * (Fcast_Fmult - max_harvest_rate))); - Fcast_Fmult = join1 * Fcast_Fmult + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate - if (join1 < 0.999) - { - warnstream << "Forecast F capped by max possible F from control file" << max_harvest_rate; - report5 << warnstream.str() << endl; - write_message (WARN, 0); - } - } - else - { - Fcast_Fmult = 0.0; - } - if (show_MSY == 1) // write more headers - { - report5 << "Annual_Forecast_Fmult: " << Fcast_Fmult << endl; - report5 << "Fmultiplier_during_selected_relF_years_was: " << Fcurr_Fmult << endl; - report5 << "Selectivity_averaged_over_yrs:_" << Fcast_Sel_yr1 << "_to_" << Fcast_Sel_yr2 << endl; - -// Fcast_Loop_Control(3) need to embellish this to report all options - if (Fcast_Loop_Control(3) == 1) - { - report5 << "Forecast_base_recruitment_from_spawn_recr_with_multiplier: " << Fcast_Loop_Control(4) << endl; - } - else if (Fcast_Loop_Control(3) == 2) - { - report5 << "Forecast_base_recruitment_is_adjusted_R0_with_multiplier: " << Fcast_Loop_Control(4) << endl; - } - else if (Fcast_Loop_Control(3) == 4) - { - report5 << "Forecast_base_recruitment_mean_from_yrs:_" << Fcast_Rec_yr1 << "_to_" << Fcast_Rec_yr2 << endl; - } - - report5 << "Cap_totalcatch_by_fleet " << endl - << Fcast_MaxFleetCatch << endl; - report5 << "Cap_totalcatch_by_area " << endl - << Fcast_MaxAreaCatch << endl; - report5 << "Assign_fleets_to_allocation_groups_(0_means_not_in_a_group) " << endl - << Allocation_Fleet_Assignments << endl; - report5 << "Calculated_number_of_allocation_groups " << Fcast_Catch_Allocation_Groups << endl; - if (Fcast_Catch_Allocation_Groups > 0) - { - report5 << "Year "; - for (f = 1; f <= Fcast_Catch_Allocation_Groups; f++) - report5 << " group_" << f; - report5 << endl; - for (y = endyr + 1; y <= YrMax; y++) - { - report5 << y << " " << Fcast_Catch_Allocation(y - endyr) << endl; - } - } - if (Fcast_Catch_Basis == 2) - { - report5 << "2:_Caps_&_Alloc_use_dead_catchbio" << endl; - } - else if (Fcast_Catch_Basis == 3) - { - report5 << "3:_Caps_&_Alloc_use_retained_catchbio" << endl; - } - else if (Fcast_Catch_Basis == 5) - { - report5 << "5:_Caps_&_Alloc_use_dead_catchnum" << endl; - } - else if (Fcast_Catch_Basis == 6) - { - report5 << "6:_Caps_&_Alloc_use_retained_catchnum" << endl; - } - if (N_Fcast_Input_Catches > 0) - { - report5 << "-1 #Input_fixed_catches_or_F_with_fleet/time_specific_values (3 for retained catch; 2 for dead catch; 99 for F); NOTE: bio vs. num based on fleet's catchunits" << endl; - } - report5 << "#_Relative_F_among_fleets" << endl; - if (Fcast_RelF_Basis == 1) - { - report5 << "based_on_years:_" << Fcast_RelF_yr1 << " _to_ " << Fcast_RelF_yr2 << endl; - } - else - { - report5 << "read_from_input_file" << endl; - } - if (F_Method == 1) - { - report5 << "Pope's_midseason_exploitation_rate=Fmult*Alloc" << endl; - report5 << "seas seas_dur "; - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - report5 << " fleet:" << f; - } - report5 << endl; - for (s = 1; s <= nseas; s++) - { - report5 << s << " " << seasdur(s); - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - report5 << " " << Fcast_Fmult * Fcast_RelF_Use(s, f); - } - else if (fleet_type(f) == 2) - { - report5 << " " << bycatch_F(f, s); - } - } - report5 << endl; - } - } - else - { - report5 << "Seasonal_apicalF=Fmult*Alloc*seas_dur_(can_be>ann_F_because_of_selex)" << endl; - report5 << "seas seas_dur "; - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - report5 << " " << fleetname(f); - } - report5 << endl; - for (s = 1; s <= nseas; s++) - { - report5 << s << " " << seasdur(s); - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - report5 << " " << Fcast_Fmult * Fcast_RelF_Use(s, f) * seasdur(s); - } - else if (fleet_type(f) == 2) - { - report5 << " " << bycatch_F(f, s) * seasdur(s); - } - } - report5 << endl; - } - } - - if (Fcast_Loop_Control(5) == 1) - {HCR_anchor = SSB_virgin;} - else if (Fcast_Loop_Control(5) == 2) - {HCR_anchor = SSB_unf;} - else if (Fcast_Loop_Control(5) == 3) - {HCR_anchor = Bmsy;} // so H4010_top_rd should be 1.0; - - if (H4010_top_rd < 0.0) // legacy approach. This has already been converted to new approach in readdata - { - H4010_top = Bmsy / HCR_anchor; // convert to fraction of anchor - if (H4010_bot > 0.25) - { - warnstream << "control rule cutoff is large (" << H4010_bot << "); so may not be < calculated Bmsy/SSB_unf (" << H4010_top << ")"; - write_message (WARN, 0); - } - } - else - { - H4010_top = H4010_top_rd; - } - if (Fcast_Loop_Control(5) == 3 && H4010_top_rd != 1.0) - { - warnstream << "HCR_anchor is BMSY; so H4010_top normally is 1.0; are you sure you want: " << H4010_top; - write_message (WARN, 0); - } - - Mgmt_quant(20) = H4010_top * HCR_anchor; - report5 << "#" << endl; - report5 << "N_forecast_yrs: " << N_Fcast_Yrs << endl; - report5 << "OY_Control_Rule: Inflection: " << H4010_top << " Intercept: " << H4010_bot << " Scale: " << H4010_scale_vec(endyr + 1) << endl - << "Control_rule_anchor_approach: " << Fcast_Loop_Control(5) << " HCR_anchor: " << HCR_anchor << endl - << "intercept(SSB): " << H4010_bot * HCR_anchor << endl - << "Inflection(SSB): " << H4010_top * HCR_anchor << endl - << "#" << endl; - - switch (HarvestPolicy) - { - case 0: // none - { - report5 << "Policy (0): no ramp or buffer; F_ABC=F_limit" << endl; - break; - } - case 1: // west coast - { - report5 << "Policy (1): ramp scales catch as f(B) and buffer (H4010_scale) applied to F" << endl; - break; - } - case 2: // Alaska - // - { - report5 << "Policy (2): ramp scales F as f(B) and buffer (H4010_scale) applied to F" << endl; - break; - } - case 3: // west coast - { - report5 << "Policy (3): ramp scales catch as f(B) and buffer (H4010_scale) applied to catch after applying ramp" << endl; - break; - } - case 4: // Alaska - { - report5 << "Policy (4): ramp scales F as f(B) and buffer (H4010_scale) applied to catch after applying ramp" << endl; - break; - } - } - } - - int jloop; - if (fishery_on_off == 1 || Do_Dyn_Bzero > 0) - { - jloop = Fcast_Loop_Control(1); - } - else - { - jloop = 1; - } - write_bodywt_save = write_bodywt; // save initial value so can be restored in last loop - - for (int Fcast_Loop1 = 1; Fcast_Loop1 <= jloop; Fcast_Loop1++) // for different forecast conditions - { -// report5 << Fcast_Loop1 << " y: " << 0 << " Repro_output_by_age_for_morph_1 top_forecast: " << fec(1) << endl; - - switch (Fcast_Loop1) // select which ABC_loops to use - { - case 1: // do OFL only - { - ABC_Loop_start = 1; - ABC_Loop_end = 1; - if (show_MSY == 1) - report5 << "FORECAST:_With_Constant_F=Fofl;_No_Input_Catches_or_Adjustments;_Equil_Recr;_No_inpl_error" << endl; - break; - } - case 2: // for each year: do 3 calculations: (1) OFL, (2) calc ABC and apply caps and allocations, (3) get F from catch _impl - { - ABC_Loop_start = 1; - ABC_Loop_end = 3; - if (show_MSY == 1) - report5 << "FORECAST:_With_F=Fabc;_With_Input_Catches_and_Catch_Adjustments;_Equil_Recr;_No_inpl_error" << endl; - break; - } - case 3: // just need to get F from stored adjusted catch (after modifying stored catch by implementation error). - { - ABC_Loop_start = 3; - ABC_Loop_end = 3; - if (show_MSY == 1) - report5 << "FORECAST:_With_F_to_match_adjusted_catch;_With_Input_Catches_and_Catch_Adjustments;_Stochastic_Recr;_With_inpl_error" << endl; - break; - } - } - if (show_MSY == 1) - { - if (HarvestPolicy == 0) - report5 << "pop year ABC_Loop season No_buffer bio-all bio-Smry SpawnBio Depletion recruit-0 "; - if (HarvestPolicy <= 2) - report5 << "pop year ABC_Loop season Ramp&Buffer Buffer2 bio-all bio-Smry SpawnBio Depletion recruit-0 "; - if (HarvestPolicy >= 3) - report5 << "pop year ABC_Loop season Ramp bio-all bio-Smry SpawnBio Depletion recruit-0 "; - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - report5 << " sel(B):_" << f << " dead(B):_" << f << " retain(B):_" << f << " sel(N):_" << f << " dead(N):_" << f << " retain(N):_" << f << " F:_" << f << " R/C"; - } - report5 << " Catch_Cap Total_Catch ann_F" << endl; - } - - // note that spawnbio and Recruits need to retain their value from calculation in endyr, - // so can be used to distribute recruitment in year endyr+1 if recruitment distribution occurs before spawning season - // would be better to back up to last mainrecrdev and start with begin of forecast - SSB_current = SSB_yr(endyr); - Recruits = exp_rec(endyr, 4); - // need to distribute these recruits forward into endyr+1 - - // refresh quantities that might have changed in benchmark. - // some of these might be change within forecast also - // recr_dist(endyr)=recr_dist_endyr; - // natM=natM_endyr; - - y = endyr; - { - ALK_subseas_update = 1; // to indicate that all ALKs need calculation - // if(MG_active(2) - get_growth2(y); - t = styr + (y - styr) * nseas - 1; - - for (s = 1; s <= nseas; s++) - { - t++; - for (subseas = 1; subseas <= N_subseas; subseas++) // do all subseasons in first year - { - get_growth3(y, t, s, subseas); // in case needed for Lorenzen M - Make_AgeLength_Key(s, subseas); // which also updates Wt_Age_beg, etc. - } -// if (s == spawn_seas) // - { - if (WTage_rd == 1) - { - Wt_Age_beg(s) = Wt_Age_t(t, 0); // used for smrybio - Wt_Age_mid(s) = Wt_Age_t(t, -1); - if (s == spawn_seas) - fec = Wt_Age_t(t, -2); - } - else - { - get_mat_fec(); // does spawnseas and stores in wt_Age_t(t, -2) - } - } - } - } -// report5 << Fcast_Loop1 << " y: " << y << " updated_Repro_output_by_age_for_morph_1 endyr: " << fec(1) << endl; - for (y = endyr + 1; y <= YrMax; y++) - { - t_base = styr + (y - styr) * nseas - 1; - for (f = 1; f <= N_SRparm2; f++) - { - if (SRparm_timevary(f) == 0) - { - // no change to SRparm_work - } - else - { - SRparm_work(f) = parm_timevary(SRparm_timevary(f), y); - } - SRparm_byyr(y, f) = SRparm_work(f); - } - env_data(y, -1) = log(SSB_current / SSB_yr(styr - 1)); // store most recent value for density-dependent effects, NOTE - off by a year if recalc'ed at beginning of season 1 - env_data(y, -2) = recdev(y); // store for density-dependent effects - - if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || save_for_report > 0 || WTage_rd > 0) - { - s = 1; - t = t_base + s; - subseas = 1; // begin season note that ALK_idx re-calculated inside get_growth3 - ALK_idx = (s - 1) * N_subseas + subseas; // redundant with calc inside get_growth3 ???? - get_growth3(y, t, s, subseas); // not needed because size-at-age already has been propagated to seas 1 subseas 1 - Make_AgeLength_Key(s, subseas); // this will give wt_age_beg before any time-varying parameter changes for this year - } - - smrybio = 0.0; - smrynum = 0.0; - s = 1; - t = t_base + 1; - for (g = 1; g <= gmorph; g++) - { - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - { - smrybio += natage(t, p, g)(Smry_Age, nages) * Wt_Age_beg(s, g)(Smry_Age, nages); - smrynum += sum(natage(t, p, g)(Smry_Age, nages)); //sums to accumulate across platoons and settlements - } - } - } - env_data(y, -3) = log(smrybio / Smry_Table(styr - 1, 2)); - env_data(y, -4) = log(smrynum / Smry_Table(styr - 1, 3)); - Smry_Table(y).initialize(); - Smry_Table(y, 2) = smrybio; // in forecast - Smry_Table(y, 3) = smrynum; //sums to accumulate across platoons and settlements - - if (Fcast_Loop1 == 3 && Do_Impl_Error > 0) // apply implementation error, which is a random variable, so adds variance to forecast - // in future, could do this a fleet-specific implementation error - { - for (s = 1; s <= nseas; s++) - { - t = t_base + s; - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - Fcast_Catch_Store(t, f) *= mfexp(Fcast_impl_error(y)); // should this be bias adjusted? - } - } - } - - // do biology for this year - // yz=endyr+1; // biology year for parameters - yz = y; - if (do_densitydependent == 1) - make_densitydependent_parm(y); // call to adjust for density dependence - - if (timevary_MG(y, 0) > 0 || save_for_report > 0) - get_MGsetup(y); - if (timevary_MG(y, 2) > 0) - { - ALK_subseas_update = 1; - get_growth2(y); - } - // "MG_type: 1=M, 2=growth, 3=wtlen, 4=recr_dist&femfrac, 5=migration, 6=ageerror, 7=catchmult, 8=hermaphroditism" << endl - if (Fcast_MGparm_ave(1, 2) == 1) - { - // array has been filled with averages already - } - else if (timevary_MG(y, 1) > 0 || N_pred > 0) - { - get_natmort(); - } - else - { - t_base = styr + (y - styr) * nseas - 1; - for (s = 1; s <= nseas; s++) - { - natM(t_base + s) = natM(t_base - nseas + s); - } - } - if (timevary_MG(y, 3) > 0) - { - get_wtlen(); - if (Hermaphro_Option != 0) - get_Hermaphro(); - } - if (Fcast_Loop_Control(3) == 3 || Fcast_MGparm_ave(4, 1) == 1) - { - // already filled with averages - } - else if (timevary_MG(y, 4) > 0 || timevary_MG(endyr + 1, 4) > 0) - { - get_recr_distribution(); - } - if (Fcast_MGparm_ave(5, 2) == 1) - { - // already filled with averages - } - else if (timevary_MG(y, 5) > 0) - get_migration(); - if (timevary_MG(y, 7) > 0) - get_catch_mult(y, catch_mult_pointer); - - if (save_for_report > 0 && Fcast_Loop1 == Fcast_Loop_Control(1)) - { - if (timevary_MG(y, 1) > 0 || timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0) - { - get_saveGparm(); - } - } - // SS_Label_Info_24.1.2 #Call selectivity, which does its own internal check for time-varying changes - if (Fcast_timevary_Selex == 0) - get_selectivity(); - - // ABC_loop: 1=get OFL; 2=get_ABC, use input catches; 3=recalc with caps and allocations - for (int ABC_Loop = ABC_Loop_start; ABC_Loop <= ABC_Loop_end; ABC_Loop++) - { - totcatch = 0.; - if (ABC_Loop == 1) - Mgmt_quant(Fcast_catch_start + N_Fcast_Yrs + y - endyr) = 0.0; // for OFL - Mgmt_quant(Fcast_catch_start + y - endyr) = 0.0; // for ABC - if (max(Do_Retain) > 0) - Mgmt_quant(Fcast_catch_start + 2 * N_Fcast_Yrs + y - endyr) = 0.0; // for retained ABC - if (STD_Yr_Reverse_F(y) > 0) - F_std(STD_Yr_Reverse_F(y)) = 0.0; - // consider move get_growth2 here so it can be responsive to mortality within the plus group as F changes between ABCloops - for (s = 1; s <= nseas; s++) - { - t = t_base + s; - if (ABC_Loop == ABC_Loop_start) // do seasonal ALK and fishery selex - { - if (timevary_MG(y, 2) > 0 || save_for_report > 0) - { - subseas = 1; // for begin of season ALK_idx calculated within Make_AgeLength_Key - get_growth3(y, t, s, subseas); - Make_AgeLength_Key(s, subseas); // begin season - - subseas = mid_subseas; - get_growth3(y, t, s, subseas); - Make_AgeLength_Key(s, subseas); // for middle of season (begin of 3rd quarter) - - // SPAWN-RECR: call Make_Fecundity in forecast - if (s == spawn_seas) - { - subseas = spawn_subseas; - if (spawn_subseas != 1 && spawn_subseas != mid_subseas) - { - get_growth3(y, t, s, subseas); - Make_AgeLength_Key(s, subseas); // spawn subseas - } - } - } - - if (WTage_rd == 1) - { - Wt_Age_beg(s) = Wt_Age_t(t, 0); - Wt_Age_mid(s) = Wt_Age_t(t, -1); - if (s == spawn_seas) - fec = Wt_Age_t(t, -2); - } - else if (timevary_MG(y, 2) > 0 || timevary_MG(y, 3) > 0 || bigsaver == 1) - { - // Make_Fecundity(); - get_mat_fec(); // does just spawn season and subseason using ALK calculated just above - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - subseas = 1; - ALK_idx = (s - 1) * N_subseas + subseas; - Wt_Age_beg(s, g) = (ALK(ALK_idx, g) * wt_len(s, GP(g))); // wt-at-age at beginning of period - - subseas = mid_subseas; - ALK_idx = (s - 1) * N_subseas + subseas; - Wt_Age_mid(s, g) = ALK(ALK_idx, g) * wt_len(s, GP(g)); // use for fisheries with no size selectivity - } - } -// report5 << Fcast_Loop1 << " y: " << y << " updated_Repro_output_by_age_for_morph_1 annual: " << fec(1) << endl; - Wt_Age_t(t, 0) = Wt_Age_beg(s); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Make_FishSelex(); // calcs fishery selex by current season, all fleets, current gmorph - } - if(N_pred>0) - { -// rebase natM to M1 - for(p = 1; p <= pop; p++) - { - natM(t, p) = natM(t, 0); - } - for (f1 = 1; f1 <= N_pred; f1++) - { - f = predator(f1); - pred_M2(f1, t) = mgp_adj(predparm_pointer(f1)); // base with no seasonal effect - if (nseas > 1) - pred_M2(f1, t) *= mgp_adj(predparm_pointer(f1) + s); - p = fleet_area(f); // area this predator occurs in - - // a new array for indexing g and gpi could simplify below - // for (gp = 1; gp <= N_GP * gender * N_settle_timings; gp++) - - for (gp = 1; gp <= N_GP * gender; gp++) - { - g = g_Start(gp); // base platoon - for (settle = 1; settle <= N_settle_timings; settle++) - { - g += N_platoon; - int gpi = GP3(g); // GP*gender*settlement - natM(t, p, gpi) += pred_M2(f1, t) * sel_num(s, f, g); - } - } - } - } - - for(p = 1; p <= pop; p++) - { - int s1 = (p - 1) * nseas + s; - surv1(s1) = mfexp(-natM(t, p) * seasdur_half(s)); - surv2(s1) = square(surv1(s1)); - } - - } // end of seasonal biology - - if (s == nseas) - { - adv_age = 1; - } - else - { - adv_age = 0; - } // advance age or not when doing survivorship - - // SPAWN-RECR: calc area-specific spawning biomass in forecast - if (s == spawn_seas && spawn_time_seas < 0.0001) // get spawnbio in a forecast year - { - SSB_pop_gp(y).initialize(); - SSB_B_yr(y).initialize(); - SSB_N_yr(y).initialize(); - Smry_Table(y, 15) = 0.0; - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 1 && use_morph(g) > 0) // female - { - // SSB_pop_gp(y,p,GP4(g)) += fec(g)*elem_prod(natage(t,p,g),mfexp(-Z_rate(t,p,g)*spawn_time_seas)); // accumulates SSB by area and by growthpattern - // SSB_B_yr(y) += make_mature_bio(GP4(g))*elem_prod(natage(t,p,g),mfexp(-Z_rate(t,p,g)*spawn_time_seas)); - // SSB_N_yr(y) += make_mature_numbers(GP4(g))*elem_prod(natage(t,p,g),mfexp(-Z_rate(t,p,g)*spawn_time_seas)); - natage(t, p, g, 0) = 0.0; // these fish should not exist at beginning of year. They are created after spawning. Are here in array only due to Fcast_Loop1 - SSB_pop_gp(y, p, GP4(g)) += fracfemale_mult * fec(g) * natage(t, p, g); // accumulates SSB by area and by growthpattern - SSB_B_yr(y) += fracfemale_mult * make_mature_bio(GP4(g)) * natage(t, p, g); - SSB_N_yr(y) += fracfemale_mult * make_mature_numbers(GP4(g)) * natage(t, p, g); - Smry_Table(y, 15) += fracfemale_mult * natage(t, p, g) * elem_prod(fec(g), r_ages); // for mean age of female spawners = GenTime - } - } - SSB_current = sum(SSB_pop_gp(y)); - SSB_yr(y) = SSB_current; - - if (Hermaphro_Option != 0) // get male biomass - { - MaleSSB(y).initialize(); - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 2 && use_morph(g) > 0) // male; all assumed to be mature - { - natage(t, p, g, 0) = 0.0; // these fish do not yet exist - MaleSSB(y, p, GP4(g)) += Wt_Age_t(t, 0, g) * natage(t, p, g); // accumulates SSB by area and by growthpattern - } - } - if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB - { - SSB_current += Hermaphro_maleSSB * sum(MaleSSB(y)); - SSB_yr(y) = SSB_current; - } - } - // SPAWN-RECR: get recruitment in at beginning of a season in forecast; - if (timevary_SRparm(y) == 0) // SRparm use virgin values (but regime still could be) - { - R0_use = Recr_virgin; - SSB_use = SSB_virgin; -// warning << y << " virgin_SRR; SSB_use: "< 0) - { - settle = settle_g(g); // get settlement event - for (p = 1; p <= pop; p++) - { - // if(y==endyr+1) natage(t+Settle_seas_offset(settle),p,g,Settle_age(settle))=0.0; // to negate the additive code - natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) = Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * - mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); - if (Fcast_Loop1 == jloop && ABC_Loop == ABC_Loop_end) - { -// if (Settle_seas(settle) == s) // delete because logic is flawed - Recr(p, t + Settle_seas_offset(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)); - } - // the adjustment for mortality increases recruit value for elapsed time since begin of season because M will then be applied from beginning of season - } - } - } // end of spawner-recruitment calculations - // SPAWN-RECR: total spawn bio used in F policy. Make this area-specific too? - if (ABC_Loop == 1) // doing OFL this loop - { - ABC_buffer(y) = 1.0; - } - else if (ABC_Loop == 2 && s == 1) // Calc the buffer in season 1, will use last year's spawnbio if multiseas and spawnseas !=1 - { - - join1 = 1. / (1. + mfexp(100. * (SSB_current - H4010_bot * HCR_anchor))); - join2 = 1. / (1. + mfexp(100. * (SSB_current - H4010_top * HCR_anchor))); - - switch (HarvestPolicy) - { - case 0: - { - ABC_buffer(y) = 1.0; - break; - } - case 1: // west coast - // ramp scales catch as f(B) and buffer (H4010_scale) applied to F - { - ABC_buffer(y) = H4010_scale_vec(y) * - ((0.0001 * SSB_current / (H4010_bot * HCR_anchor)) * (join1) // low - + (0.0001 + (1.0 - 0.0001) * (H4010_top * HCR_anchor / SSB_current) * (SSB_current - H4010_bot * HCR_anchor) / (H4010_top * HCR_anchor - H4010_bot * HCR_anchor)) * (1.0 - join1) // curve - ) * - (join2) // scale combo - + - (H4010_scale_vec(y)) * (1.0 - join2); // scale right side - break; - } - case 2: // Alaska - // ramp scales F as f(B) and buffer (H4010_scale) applied to F - { - ABC_buffer(y) = H4010_scale_vec(y) * - ((0.0001 * SSB_current / (H4010_bot * HCR_anchor)) * (join1) // low - + (0.0001 + (1.0 - 0.0001) * (SSB_current - H4010_bot * HCR_anchor) / (H4010_top * HCR_anchor - H4010_bot * HCR_anchor)) * (1.0 - join1) // curve - ) * - (join2) // scale combo - + - (H4010_scale_vec(y)) * (1.0 - join2); // scale right side - break; - } - case 3: // west coast - // ramp scales catch as f(B) and buffer (H4010_scale) applied to catch - { - ABC_buffer(y) = 1.0 * - ((0.0001 * SSB_current / (H4010_bot * HCR_anchor)) * (join1) // low - + (0.0001 + (1.0 - 0.0001) * (H4010_top * HCR_anchor / SSB_current) * (SSB_current - H4010_bot * HCR_anchor) / (H4010_top * HCR_anchor - H4010_bot * HCR_anchor)) * (1.0 - join1) // curve - ) * - (join2) // scale combo - + - (1.0) * (1.0 - join2); // scale right side - break; - } - case 4: // Alaska - // ramp scales F as f(B) and buffer (H4010_scale) applied to catch - { - ABC_buffer(y) = 1.0 * - ((0.0001 * SSB_current / (H4010_bot * HCR_anchor)) * (join1) // low - + (0.0001 + (1.0 - 0.0001) * (SSB_current - H4010_bot * HCR_anchor) / (H4010_top * HCR_anchor - H4010_bot * HCR_anchor)) * (1.0 - join1) // curve - ) * - (join2) // scale combo - + - (1.0) * (1.0 - join2); // scale right side - break; - } - } - } // end calc of ABC buffer - else - { // ABC buffer remains at previously calculated value - } - - totbio.initialize(); - for (p = 1; p <= pop; p++) // loop areas - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - gg = sx(g); - - if (save_for_report > 0) - { - totbio += natage(t, p, g) * Wt_Age_beg(s, g); - Save_PopLen(t, p, g) = 0.0; - Save_PopLen(t, p + pop, g) = 0.0; // later put midseason here - Save_PopWt(t, p, g) = 0.0; - Save_PopWt(t, p + pop, g) = 0.0; // later put midseason here - Save_PopAge(t, p, g) = value(natage(t, p, g)); - for (a = 0; a <= nages; a++) - { - Save_PopLen(t, p, g) += value(natage(t, p, g, a)) * value(ALK(ALK_idx, g, a)); - Save_PopWt(t, p, g) += value(natage(t, p, g, a)) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); - Save_PopBio(t, p, g, a) = value(natage(t, p, g, a)) * value(Wt_Age_beg(s, g, a)); - } // close age loop - } - } - Tune_F_loops = 1; - - int s1 = (p - 1) * nseas + s; // stacks season inside area (p) for use with surv1 - - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); // calc the Hrates given the HarvestPolicy, and find which catches are fixed or adjustable - switch (ABC_Loop) - { - case 1: // apply Fmsy and get OFL - { - if (bycatch_setup(f, 3) <= 1) - { - Hrate(f, t) = Fcast_Fmult * Fcast_RelF_Use(s, f); - } - else - { - Hrate(f, t) = bycatch_F(f, s); - } - break; // no action, keep Hrate - } - case 2: // apply ABC control rule and store catches - { - if (bycatch_setup(f, 3) <= 1) - { - Hrate(f, t) = ABC_buffer(y) * Fcast_Fmult * Fcast_RelF_Use(s, f); - } - else - { - Hrate(f, t) = bycatch_F(f, s); - } - // if HarvestPolicy==3 or 4, then H4010_scale is not in ABC_buffer and will need to be applied to catch in first stage of the tuning process below - if (N_Fcast_Input_Catches > 0) - if (Fcast_InputCatch(t, f, 1) > -1.0) // have an input - { - if (Fcast_InputCatch(t, f, 2) <= 3) // input is catch - { - if (Fcast_InputCatch(t, f, 1) == 0.0) - { - Hrate(f, t) = 0.0; - Do_F_tune(t, f) = 0; - } - else - { - Tune_F_loops = 8; - if (Fcast_RelF_Use(s, f) > 0.0) - Do_F_tune(t, f) = 1; - } - } - else - { - Hrate(f, t) = Fcast_InputCatch(t, f, 1); - } // input is as Hrate (F), but do not need tuning - } - break; - } - case 3: // always get F to match catch when in ABC_Loop==3 - { - Tune_F_loops = 8; - if (Fcast_RelF_Use(s, f) > 0.0) - Do_F_tune(t, f) = 1; - break; - } - } - } - - if (F_Method == 1) // calculate catch, survival and F using Fmethod==1 (Pope's) - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - Nmid(g) = elem_prod(natage(t, p, g), surv1(s1, GP3(g))); - } - - for (Tune_F = 1; Tune_F <= Tune_F_loops; Tune_F++) - { - for (int ff = 1; ff <= N_catchfleets(p); ff++) // get calculated catch - { - f = fish_fleet_area(p, ff); - temp = 0.0; - if (Do_F_tune(t, f) == 1) - { - if (ABC_Loop == 2 && N_Fcast_Input_Catches > 0) // tune to input catch if in ABC_loop 2 - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (catchunits(f) == 1) // catch in weight - { - if (Fcast_InputCatch(t, f, 2) == 2) - { - temp += Nmid(g) * sel_dead_bio(s, f, g); - } // dead catch bio - else if (Fcast_InputCatch(t, f, 2) == 3) - { - temp += Nmid(g) * sel_ret_bio(s, f, g); - } // retained catch bio - } - else // catch in numbers - { - if (Fcast_InputCatch(t, f, 2) == 2) - { - temp += Nmid(g) * sel_dead_num(s, f, g); - } // deadfish catch numbers - else if (Fcast_InputCatch(t, f, 2) == 3) - { - temp += Nmid(g) * sel_ret_num(s, f, g); - } // retained catch numbers - } - } //close gmorph loop - temp1 = Fcast_InputCatch(t, f, 1) / (temp + NilNumbers); - join1 = 1. / (1. + mfexp(30. * (temp1 - max_harvest_rate))); - Hrate(f, t) = join1 * temp1 + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate - } - else if (fishery_on_off == 1) // tune to adjusted catch calculated from ABC_Loop=2 - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (Fcast_Catch_Basis == 2) - { - temp += Nmid(g) * sel_dead_bio(s, f, g); - } // dead catch bio - else if (Fcast_Catch_Basis == 3) - { - temp += Nmid(g) * sel_ret_bio(s, f, g); - } // retained catch bio - else if (Fcast_Catch_Basis == 5) - { - temp += Nmid(g) * sel_dead_num(s, f, g); - } // deadfish catch numbers - else if (Fcast_Catch_Basis == 6) - { - temp += Nmid(g) * sel_ret_num(s, f, g); - } // retained catch numbers - } //close gmorph loop - temp1 = Fcast_Catch_Store(t, f) / (temp + NilNumbers); - join1 = 1. / (1. + mfexp(30. * (temp1 - max_harvest_rate))); - Hrate(f, t) = join1 * temp1 + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate - } - } // end have fixed catch to be matched - } // end fishery loop - } // end finding the Hrates - - // now get catch details and survivorship - Nsurv = Nmid; // initialize the number of survivors - for (int ff = 1; ff <= N_catchfleets(p); ff++) // get calculated catch - { - f = fish_fleet_area(p, ff); - catch_fleet(t, f).initialize(); - // if(ABC_Loop==2 && bycatch_setup(f,3)<=1 && HarvestPolicy>=3) // fleet has scalable catch and policy applies to catch, not F - // {Hrate(f,t)*=H4010_scale;} - // here for Pope's, ok to do scale adjustment to Hrate; will have to be on catch for continuous F - - temp = Hrate(f, t); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - catch_fleet(t, f, 1) += Nmid(g) * sel_bio(s, f, g); // encountered catch bio - catch_fleet(t, f, 2) += Nmid(g) * sel_dead_bio(s, f, g); // dead catch bio - catch_fleet(t, f, 3) += Nmid(g) * sel_ret_bio(s, f, g); // retained catch bio - catch_fleet(t, f, 4) += Nmid(g) * sel_num(s, f, g); // encountered catch numbers - catch_fleet(t, f, 5) += Nmid(g) * sel_dead_num(s, f, g); // deadfish catch numbers - catch_fleet(t, f, 6) += Nmid(g) * sel_ret_num(s, f, g); // retained catch numbers - catage_w(g) = temp * elem_prod(Nmid(g), sel_dead_num(s, f, g)); - Nsurv(g) -= catage_w(g); - if (Do_Retain(f) > 0) - { - disc_age(t, disc_fleet_list(f), g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_num(s, f, g)), Zrate2(p, g)); // selected numbers - disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_ret_num(s, f, g)), Zrate2(p, g)); // selected numbers - } - } //close gmorph loop - catch_fleet(t, f) *= temp; - } // close fishery - - // calculate survival within area within season with Fmethod ==1 - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - settle = settle_g(g); // get settlement event - j = Settle_age(settle); - if (s < nseas && Settle_seas(settle) <= s) - { - natage(t + 1, p, g, j) = Nsurv(g, j) * surv1(s1, GP3(g), j); - } // advance age zero within year - for (a = j + 1; a < nages; a++) - { - natage(t + 1, p, g, a) = Nsurv(g, a - adv_age) * surv1(s1, GP3(g), a - adv_age); - Z_rate(t, p, g, a) = -log(natage(t + 1, p, g, a) / natage(t, p, g, a - adv_age)) / seasdur(s); - } - natage(t + 1, p, g, nages) = Nsurv(g, nages) * surv1(s1, GP3(g), nages); // plus group - if (s == nseas) - natage(t + 1, p, g, nages) += Nsurv(g, nages - 1) * surv1(s1, GP3(g), nages - 1); - if (save_for_report > 0) - { - j = p + pop; - for (a = 0; a <= nages; a++) - { - Save_PopLen(t, j, g) += value(0.5 * (Nmid(g, a) + Nsurv(g, a))) * value(ALK(ALK_idx, g, a)); - Save_PopWt(t, j, g) += value(0.5 * (Nmid(g, a) + Nsurv(g, a))) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); - Save_PopAge(t, j, g, a) = value(0.5 * (Nmid(g, a) + Nsurv(g, a))); - Save_PopBio(t, j, g, a) = value(0.5 * (Nmid(g, a) + Nsurv(g, a))) * value(Wt_Age_beg(s, g, a)); - } // close age loop - } - } - } // end Fmethod=1 pope - - else //calculate catch, survival and F using Fmethod== 2 or 3; continuous F - { - for (Tune_F = 1; Tune_F <= Tune_F_loops; Tune_F++) // tune F to match catch - { - for (g = 1; g <= gmorph; g++) //loop over fishing fleets to get Z=M+sum(F) - if (use_morph(g) > 0) - { - Z_rate(t, p, g) = natM(t, p, GP3(g)); - for (int ff = 1; ff <= N_catchfleets(p); ff++) // get calculated catch - { - f = fish_fleet_area(p, ff); - if (Fcast_RelF_Use(s, f) > 0.0) - { - Z_rate(t, p, g) += sel_dead_num(s, f, g) * Hrate(f, t); - } - } - Zrate2(p, g) = elem_div((1. - mfexp(-seasdur(s) * Z_rate(t, p, g))), Z_rate(t, p, g)); - } // end morph - - for (int ff = 1; ff <= N_catchfleets(p); ff++) // get calculated catch - { - f = fish_fleet_area(p, ff); - C_temp(f) = 0.0; // will hold fleet's calculated catch - if (Do_F_tune(t, f) == 1) // have an input catch or in ABC_loop 3, so get expected catch from F and Z - { - - if (ABC_Loop == 2) // tune to input catch in ABCloop 2; Do_F_tune(t,f) is only turned on if there is input catch - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (catchunits(f) == 1) // catch in weight - { - if (Fcast_InputCatch(t, f, 2) == 2) - { - C_temp(f) += elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)) * Zrate2(p, g); - } // dead catch bio - else if (Fcast_InputCatch(t, f, 2) == 3) - { - C_temp(f) += elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); - } // retained catch bio - } - else // catch in numbers - { - if (Fcast_InputCatch(t, f, 2) == 2) - { - C_temp(f) += elem_prod(natage(t, p, g), sel_dead_num(s, f, g)) * Zrate2(p, g); - } // deadfish catch numbers - else if (Fcast_InputCatch(t, f, 2) == 3) - { - C_temp(f) += elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); - } // retained catch numbers - } - } //close gmorph loop - C_temp(f) *= Hrate(f, t); // where temp was the available biomass or numbers calculated above and convert to catch here - H_temp(f) = Hrate(f, t); - temp = Hrate(f, t); - if (Tune_F < 3) - { - temp *= (Fcast_InputCatch(t, f, 1) + 1.0) / (C_temp(f) + 1.0); // apply adjustment using ratio of target to calculated catch - } - else - { - temp = H_old(f) + (H_temp(f) - H_old(f)) / (C_temp(f) - C_old(f) + 1.0e-6) * (Fcast_InputCatch(t, f, 1) - C_old(f)); - } - join1 = 1. / (1. + mfexp(30. * (temp - 0.95 * max_harvest_rate))); - Hrate(f, t) = join1 * temp + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate - C_old(f) = C_temp(f); - H_old(f) = H_temp(f); - } - else if (fishery_on_off == 1) // tune to adjusted catch calculated in ABC_Loop=2 (note different basis for catch) - { - C_temp(f) = 0.0; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - if (Fcast_Catch_Basis == 2) - { - C_temp(f) += elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)) * Zrate2(p, g); - } // dead catch bio - else if (Fcast_Catch_Basis == 3) - { - C_temp(f) += elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)) * Zrate2(p, g); - } // retained catch bio - else if (Fcast_Catch_Basis == 5) - { - C_temp(f) += elem_prod(natage(t, p, g), sel_dead_num(s, f, g)) * Zrate2(p, g); - } // deadfish catch numbers - else if (Fcast_Catch_Basis == 6) - { - C_temp(f) += elem_prod(natage(t, p, g), sel_ret_num(s, f, g)) * Zrate2(p, g); - } // retained catch numbers - } //close gmorph loop - C_temp(f) *= Hrate(f, t); - H_temp(f) = Hrate(f, t); - temp = Hrate(f, t); - if (Tune_F < 3) - { - temp *= (Fcast_Catch_Store(t, f) + 1.0) / (C_temp(f) + 1.0); // adjust Hrate using catch stored from ABCloop2 - } - else - { - temp = (H_old(f) + (H_temp(f) - H_old(f)) / (C_temp(f) - C_old(f) + 1.0e-6) * (Fcast_Catch_Store(t, f) - C_old(f))); - } - join1 = 1. / (1. + mfexp(30. * (temp - 0.95 * max_harvest_rate))); - Hrate(f, t) = join1 * temp + (1. - join1) * max_harvest_rate; // new F value for this fleet, constrained by max_harvest_rate - C_old(f) = C_temp(f); - H_old(f) = H_temp(f); - } - } // end have fixed catch to be matched - } // end fishery loop - } // done tuning F - - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - catch_fleet(t, f).initialize(); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - tempvec_a = Hrate(f, t) * Zrate2(p, g); - catch_fleet(t, f, 1) += tempvec_a * elem_prod(natage(t, p, g), sel_bio(s, f, g)); // encountered catch bio - catch_fleet(t, f, 2) += tempvec_a * elem_prod(natage(t, p, g), sel_dead_bio(s, f, g)); // dead catch bio - catch_fleet(t, f, 3) += tempvec_a * elem_prod(natage(t, p, g), sel_ret_bio(s, f, g)); // retained catch bio - catch_fleet(t, f, 4) += tempvec_a * elem_prod(natage(t, p, g), sel_num(s, f, g)); // encountered catch numbers - catch_fleet(t, f, 5) += tempvec_a * elem_prod(natage(t, p, g), sel_dead_num(s, f, g)); // deadfish catch numbers - catch_fleet(t, f, 6) += tempvec_a * elem_prod(natage(t, p, g), sel_ret_num(s, f, g)); // retained catch numbers - catage(t, f, g) = elem_prod(elem_prod(natage(t, p, g), sel_dead_num(s, f, g)), tempvec_a); - if (Do_Retain(f) > 0) - { - disc_age(t, disc_fleet_list(f), g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_num(s, f, g)), Zrate2(p, g)); // selected numbers - disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) = Hrate(f, t) * elem_prod(elem_prod(natage(t, p, g), sel_ret_num(s, f, g)), Zrate2(p, g)); // selected numbers - } - } //close gmorph loop - } // close fishery - - // calculate survival within area within season with Fmethod >=2 - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - settle = settle_g(g); // get settlement event - j = Settle_age(settle); - if (s < nseas && Settle_seas(settle) <= s) - { - natage(t + 1, p, g, j) = natage(t, p, g, j) * mfexp(-Z_rate(t, p, g, j) * seasdur(s)); - } // advance new recruits within year - for (a = j + 1; a < nages; a++) - { - natage(t + 1, p, g, a) = natage(t, p, g, a - adv_age) * mfexp(-Z_rate(t, p, g, a - adv_age) * seasdur(s)); - } - - natage(t + 1, p, g, nages) = natage(t, p, g, nages) * mfexp(-Z_rate(t, p, g, nages) * seasdur(s)); // plus group - if (s == nseas) - natage(t + 1, p, g, nages) += natage(t, p, g, nages - 1) * mfexp(-Z_rate(t, p, g, nages - 1) * seasdur(s)); - if (save_for_report > 0) - { - j = p + pop; - for (a = 0; a <= nages; a++) - { - Save_PopLen(t, j, g) += value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(ALK(ALK_idx, g, a)); - Save_PopWt(t, j, g) += value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(elem_prod(ALK(ALK_idx, g, a), wt_len(s, GP(g)))); - Save_PopAge(t, j, g, a) = value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))); - Save_PopBio(t, j, g, a) = value(natage(t, p, g, a) * mfexp(-Z_rate(t, p, g, a) * 0.5 * seasdur(s))) * value(Wt_Age_mid(s, g, a)); - } // close age loop - } - } // end morph loop - } // end continuous F - - // SS_Label_106 call to Get_expected_values - write_bodywt = 0; - if (ABC_Loop == ABC_Loop_end && Fcast_Loop1 == Fcast_Loop_Control(1)) - { - write_bodywt = write_bodywt_save; - } - if (show_MSY == 1) - { - report5 << p << " " << y << " " << ABC_Loop << " " << s << " " << ABC_buffer(y) << " " << H4010_scale_vec(y) << " " << totbio << " " << smrybio << " "; - if (s == spawn_seas) - { - report5 << SSB_current << " "; - report5 << SSB_current / SSB_unf << " " << Recruits; - } - else - { - report5 << 0 << " " << 0 << " " << 0; - } - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_area(f) == p) - { - if (F_Method == 1) - { - report5 << " " << catch_fleet(t, f)(1, 6) << " " << Hrate(f, t); - } - else - { - report5 << " " << catch_fleet(t, f)(1, 6) << " " << Hrate(f, t) * seasdur(s); - } - } - else - { - report5 << " - - - - - - - "; - } - - if (N_Fcast_Input_Catches == 0) - { - report5 << " R "; - } - else - { - if (Fcast_InputCatch(t, f, 1) < 0.0) - { - report5 << " R "; - } - else - { - report5 << " C "; - } - } - } - if (s == nseas && Fcast_MaxAreaCatch(p) > 0.) - { - report5 << " " << Fcast_MaxAreaCatch(p); - } - else - { - report5 << " NA "; - } // a max catch has been set for this area - } - if (p < pop && show_MSY == 1) - report5 << endl; - } // end loop of areas - if (s == 1 && Fcast_Loop1 == Fcast_Loop_Control(1)) - { - Smry_Table(y, 1) = totbio; - } - - if (ABC_Loop == ABC_Loop_end && Fcast_Loop1 == Fcast_Loop_Control(1)) - { - if (y < endyr + 50) - Get_expected_values(y, t); - } - - // SS_Label_Info_24.3.4 #Compute spawning biomass if occurs after start of current season - // SPAWN-RECR: calc spawn biomass in time series if after beginning of the season - if (s == spawn_seas && spawn_time_seas >= 0.0001) // compute spawning biomass - { - SSB_pop_gp(y).initialize(); - SSB_B_yr(y).initialize(); - SSB_N_yr(y).initialize(); - Smry_Table(y, 15) = 0.0; - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 1 && use_morph(g) > 0) // female - { - SSB_pop_gp(y, p, GP4(g)) += fracfemale_mult * fec(g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); // accumulates SSB by area and by growthpattern - SSB_B_yr(y) += fracfemale_mult * make_mature_bio(GP4(g)) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); - SSB_N_yr(y) += fracfemale_mult * make_mature_numbers(GP4(g)) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); - Smry_Table(y, 15) += fracfemale_mult * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)) * elem_prod(fec(g), r_ages); // for mean age of female spawners = GenTime - } - } - SSB_current = sum(SSB_pop_gp(y)); - SSB_yr(y) = SSB_current; - - if (Hermaphro_Option != 0) // get male biomass - { - MaleSSB(y).initialize(); - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 2 && use_morph(g) > 0) // male; all assumed to be mature - { - MaleSSB(y, p, GP4(g)) += Wt_Age_t(t, 0, g) * elem_prod(natage(t, p, g), mfexp(-Z_rate(t, p, g) * spawn_time_seas)); // accumulates SSB by area and by growthpattern - } - } - if (Hermaphro_maleSSB > 0.0) // add MaleSSB to female SSB - { - SSB_current += Hermaphro_maleSSB * sum(MaleSSB(y)); - SSB_yr(y) = SSB_current; - } - } - // SS_Label_Info_24.3.4.1 #Get recruitment from this spawning biomass after start of the season - // SPAWN-RECR - if (timevary_SRparm(y) == 0) // SRparm use virgin values (but regime still could be) - { - R0_use = Recr_virgin; - SSB_use = SSB_virgin; - } - else if (timevary_SRparm(y) == 1) // update R0_use and SSB_use in this year - // values will carry forward into subsequent years - { - R0_use = mfexp(SRparm_work(1)); - // timevary steepness is in SRparm_work(2) and will be applied inside of Equil_Spawn_Recr_Fxn() and Spawn_Recr() - equ_Recr = R0_use; - Fishon = 0; - eq_yr = y; - bio_yr = y; - SSBpR_Calc(R0_use); // call function to do per recruit calculation with current year's biology and adjusted R0 - SSB_use = SSB_equil; -// warning << y << " update_SRR; SSB_use: "< 0) - { - settle = settle_g(g); - for (p = 1; p <= pop; p++) - { - // if(y==endyr+1) natage(t+Settle_seas_offset(settle),p,g,Settle_age(settle))=0.0; // to negate the additive code - // natage(t+Settle_seas_offset(settle),p,g,Settle_age(settle)) += Recruits*recr_dist(y,GP(g),settle,p)*platoon_distr(GP2(g))* - natage(t + Settle_seas_offset(settle), p, g, Settle_age(settle)) = Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)) * - mfexp(natM(t, p, GP3(g), Settle_age(settle)) * Settle_timing_seas(settle)); - if (Fcast_Loop1 == jloop && ABC_Loop == ABC_Loop_end) - { -// if (Settle_seas(settle) == s) // delete because logic is flawed - Recr(p, t + Settle_seas_offset(settle)) += Recruits * recr_dist(y, GP(g), settle, p) * platoon_distr(GP2(g)); - } - } - } - } - if (Hermaphro_Option != 0) //hermaphroditism - { - if (Hermaphro_seas == -1 || Hermaphro_seas == s) - { - k = gmorph / 2; - for (p = 1; p <= pop; p++) - for (g = 1; g <= k; g++) // loop females - if (use_morph(g) > 0) - { - if (Hermaphro_Option == 1) - { - for (a = 1; a < nages; a++) - { - natage(t + 1, p, g + k, a) += natage(t + 1, p, g, a) * Hermaphro_val(GP4(g), a - 1); // increment males with females - natage(t + 1, p, g, a) *= (1. - Hermaphro_val(GP4(g), a - 1)); // decrement females - } - } - else if (Hermaphro_Option == -1) - { - for (a = 1; a < nages; a++) - { - natage(t + 1, p, g, a) += natage(t + 1, p, g + k, a) * Hermaphro_val(GP4(g + k), a - 1); // increment females with males - natage(t + 1, p, g + k, a) *= (1. - Hermaphro_val(GP4(g + k), a - 1)); // decrement males - } - } - } - } - } - if (do_migration > 0) // movement between areas in forecast - { - natage_temp = natage(t + 1); - natage(t + 1).initialize(); - for (p = 1; p <= pop; p++) // source population - for (p2 = 1; p2 <= pop; p2++) // destination population - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - k = move_pattern(s, GP4(g), p, p2); - if (k > 0) - natage(t + 1, p2, g) += elem_prod(natage_temp(p, g), migrrate(bio_yr, k)); - } - } - if (bigsaver == 1) - { - - if ((Fcast_Loop1 == 2 || Fcast_Loop_Control(1) == 1) && ABC_Loop == 1) // get variance in OFL - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1) - { - Mgmt_quant(Fcast_catch_start + N_Fcast_Yrs + y - endyr) += catch_fleet(t, f, 2); - } - else if (bycatch_setup(f, 2) == 1) // bycatch - { - Mgmt_quant(Fcast_catch_start + N_Fcast_Yrs + y - endyr) += catch_fleet(t, f, 2); - } - } - } - - if (Fcast_Loop1 == Fcast_Loop_Control(1) && ABC_Loop == ABC_Loop_end) // in final loop, so do variance quantities - { - double countN; - dvariable tempbase; - dvariable tempM; - dvariable tempZ; - if (F_reporting != 5 && s == nseas) - { - tempbase = 0.0; - tempM = 0.0; - tempZ = 0.0; - // accumulate numbers across ages, morphs, sexes, areas - for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator - { - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - { - tempbase += natage(t - nseas + 1, p, g, a); // sum of numbers at beginning of year - tempZ += natage(t + 1, p, g, a + 1); // numbers at beginning of next year - temp3 = natage(t - nseas + 1, p, g, a); // numbers at begin of year - for (j = 1; j <= nseas; j++) - { - temp3 *= mfexp(-seasdur(j) * natM(t - nseas + j, p, GP3(g), a)); - } - tempM += temp3; // survivors if just M operating - } - } - } - annual_F(y, 2) += log(tempM) - log(tempZ); // F=Z-M - annual_F(y, 3) += log(tempbase) - log(tempM); // M - } - - if (F_reporting == 5 && s == nseas) - { // F_reporting==5 (ICES-style arithmetic mean across ages) - // like option 4 above, but F is calculated 1 age at a time to get a - // unweighted average across ages within each year - countN = 0.0; // used for count of Fs included in average - for (a = F_reporting_ages(1); a <= F_reporting_ages(2); a++) // should not let a go higher than nages-2 because of accumulator - { - tempbase = 0.0; - tempM = 0.0; - tempZ = 0.0; - // accumulate numbers across all morphs, sexes, and areas - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - { - tempbase += natage(t - nseas + 1, p, g, a); // sum of numbers at beginning of year - tempZ += natage(t + 1, p, g, a + 1); // numbers at beginning of next year - temp3 = natage(t - nseas + 1, p, g, a); // numbers at begin of year - for (j = 1; j <= nseas; j++) - { - temp3 *= mfexp(-seasdur(j) * natM(t - nseas + j, p, GP3(g), a)); - } - tempM += temp3; // survivors if just M operating - } - } - // calc F and M for this age and add to the total - countN += 1; // increment count of values included in average - annual_F(y, 2) += log(tempM) - log(tempZ); // F=Z-M - annual_F(y, 3) += log(tempbase) - log(tempM); // M - } - annual_F(y, 3) /= countN; // M - annual_F(y, 2) /= countN; // F - } // end F_reporting==5 - - if (STD_Yr_Reverse_F(y) > 0) - { - if (F_reporting <= 1) - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1) - { - F_std(STD_Yr_Reverse_F(y)) += catch_fleet(t, f, 2); - } // add up dead catch biomass - else if (bycatch_setup(f, 2) == 1) // bycatch - { - F_std(STD_Yr_Reverse_F(y)) += catch_fleet(t, f, 2); - } // add up dead catch biomass - } - if (s == nseas) - F_std(STD_Yr_Reverse_F(y)) /= Smry_Table(y, 2); - } - else if (F_reporting == 2) - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1) - { - F_std(STD_Yr_Reverse_F(y)) += catch_fleet(t, f, 5); - } // add up dead catch numbers - else if (bycatch_setup(f, 2) == 1) // bycatch - { - F_std(STD_Yr_Reverse_F(y)) += catch_fleet(t, f, 5); - } // add up dead catch numbers - } - if (s == nseas) - F_std(STD_Yr_Reverse_F(y)) /= Smry_Table(y, 3); - } - else if (F_reporting == 3) - { - if (F_Method == 1) - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - F_std(STD_Yr_Reverse_F(y)) += Hrate(f, t); - } - } - else - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - F_std(STD_Yr_Reverse_F(y)) += Hrate(f, t) * seasdur(s); - } - } - } - else - { - F_std(STD_Yr_Reverse_F(y)) = annual_F(y, 2); - } - - } - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1) - { - Mgmt_quant(Fcast_catch_start + y - endyr) += catch_fleet(t, f, 2); - if (max(Do_Retain) > 0) - Mgmt_quant(Fcast_catch_start + 2 * N_Fcast_Yrs + y - endyr) += catch_fleet(t, f, 3); - } - else if (bycatch_setup(f, 2) == 1) // bycatch - { - Mgmt_quant(Fcast_catch_start + y - endyr) += catch_fleet(t, f, 2); - if (max(Do_Retain) > 0) - Mgmt_quant(Fcast_catch_start + 2 * N_Fcast_Yrs + y - endyr) += catch_fleet(t, f, 3); - } - } - if (write_bodywt > 0) - { - for (g = 1; g <= gmorph; g++) - { - gg = sx(g); - - if (ishadow(GP2(g)) == 0) - { - if (s == spawn_seas) - bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << -2 << " " << fec(g) << " #fecundity " << endl; - bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << 0 << " " << Wt_Age_beg(s, g) << " #popwt_beg " << endl; - bodywtout << y << " " << s << " " << gg << " " << GP4(g) << " " << Bseas(g) << " " << -1 << " " << Wt_Age_mid(s, g) << " #popwt_mid " << endl; - } - } - } - } - } - - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1) - { - if (ABC_Loop == 2 && HarvestPolicy >= 3) // alternative ABC_buffer approach - { - catch_fleet(t, f) *= H4010_scale_vec(y); - } - // if(Fcast_InputCatch(t,f,2)==2 || Fcast_InputCatch(t,f,2)==3) // have input catch - // {Fcast_Catch_Store(t,f)=Fcast_InputCatch(t,f,1);} // copy input catch to stored catch - // else - { - Fcast_Catch_Store(t, f) = catch_fleet(t, f, Fcast_Catch_Basis); - } // copy calculated catch to stored catch - totcatch += Fcast_Catch_Store(t, f); - } - else // bycatch - { - if (ABC_Loop == 2 && HarvestPolicy >= 3 && bycatch_setup(f, 3) <= 1) - { - catch_fleet(t, f) *= H4010_scale_vec(y); - } - // if(Fcast_InputCatch(t,f,2)==2 || Fcast_InputCatch(t,f,2)==3) // have input catch - // {Fcast_Catch_Store(t,f)=Fcast_InputCatch(t,f,1);} // copy input catch to stored catch - // else - { - Fcast_Catch_Store(t, f) = catch_fleet(t, f, Fcast_Catch_Basis); - } // copy calculated catch to stored catch - if (bycatch_setup(f, 2) == 1) - totcatch += Fcast_Catch_Store(t, f); - } - } - - if (show_MSY == 1) - { - if (s == nseas) - { - report5 << " " << totcatch << " "; - } - else - { - report5 << " NA "; - } - if (s == nseas && STD_Yr_Reverse_F(y) > 0) - { - report5 << F_std(STD_Yr_Reverse_F(y)); - } - else - { - report5 << " NA "; - } - // report5<<" numbers "< 0 && y >= Fcast_Cap_FirstYear) // adjust ABC catch to fleet caps - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (Fcast_MaxFleetCatch(f) > 0.) - { - temp = Fcast_Catch_Calc_Annual(f) / Fcast_MaxFleetCatch(f); - join1 = 1. / (1. + mfexp(1000. * (temp - 1.0))); // steep logistic joiner at adjustment of 1.0 - temp1 = join1 * 1.0 + (1. - join1) * temp; - Fcast_Catch_Calc_Annual(f) /= temp1; - for (s = 1; s <= nseas; s++) - { - Fcast_Catch_Store(t_base + s, f) /= temp1; - } - } - } - } - if (Fcast_Do_Area_Cap > 0 && y >= Fcast_Cap_FirstYear) // scale down if Totcatch exceeds Fcast_MaxAreaCatch (in this area) - { - if (pop == 1) // one area - { - Fcast_Catch_ByArea(1) = sum(Fcast_Catch_Calc_Annual(1, Nfleet)); - } - else - { - Fcast_Catch_ByArea = 0.0; - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - Fcast_Catch_ByArea(fleet_area(f)) += Fcast_Catch_Calc_Annual(f); - } - } - for (p = 1; p <= pop; p++) - if (Fcast_MaxAreaCatch(p) > 0.0) - { - temp = Fcast_Catch_ByArea(p) / Fcast_MaxAreaCatch(p); - join1 = 1. / (1. + mfexp(1000. * (temp - 1.0))); // steep logistic joiner at adjustment of 1.0 - temp1 = join1 * 1.0 + (1. - join1) * temp; - for (int ff = 1; ff <= N_catchfleets(p); ff++) - { - f = fish_fleet_area(p, ff); - Fcast_Catch_Calc_Annual(f) /= temp1; // adjusts total for the year - for (s = 1; s <= nseas; s++) - { - Fcast_Catch_Store(t_base + s, f) /= temp1; - } - } - } - // report5< 0 && y >= Fcast_Cap_FirstYear) // adjust to get a specific fleet allocation - { - Fcast_Catch_Allocation_Group.initialize(); - for (g = 1; g <= Fcast_Catch_Allocation_Groups; g++) - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (Allocation_Fleet_Assignments(f) == g) - { - Fcast_Catch_Allocation_Group(g) += Fcast_Catch_Calc_Annual(f); - } - } - temp = sum(Fcast_Catch_Allocation_Group); // total catch for all fleets that are part of the allocation scheme - temp1 = sum(Fcast_Catch_Allocation(y - endyr)); // total of all allocation fractions for all fleets that are part of the allocation scheme - for (g = 1; g <= Fcast_Catch_Allocation_Groups; g++) - { - temp2 = (Fcast_Catch_Allocation(y - endyr, g) / temp1) / (Fcast_Catch_Allocation_Group(g) / temp); - - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (Allocation_Fleet_Assignments(f) == g) - { - Fcast_Catch_Calc_Annual(f) *= temp2; - for (s = 1; s <= nseas; s++) - { - Fcast_Catch_Store(t_base + s, f) *= temp2; - } - } - } - } - } // end allocation among groups - } - } // end ABC_Loop - - if ((Fcast_Loop1 == Fcast_Loop_Control(1) && (save_for_report > 0)) || ((sd_phase() || mceval_phase()) && (initial_params::mc_phase == 0))) - { - Smry_Table(y, 4) = Mgmt_quant(Fcast_catch_start + y - endyr); - eq_yr = y; - equ_Recr = Recr_unf; - bio_yr = y; - Fishon = 0; - SSBpR_Calc(equ_Recr); // call function to do per recruit calculation - - Smry_Table(y, 11) = SSB_equil; - Smry_Table(y, 13) = GenTime; - if( SR_fxn == 10 ) - { - temp = SSB_equil / equ_Recr; // current year's SSB/R with current biology at age - alpha = mfexp(SRparm_work(3)); - beta = mfexp(SRparm_work(4)); - SRparm_byyr(y, 2) = alpha * temp / (4. + alpha * temp); // implied steepness - SRparm_byyr(y, 1) = log( 1. / beta * (alpha - (1. / temp))); // implied ln_R0 - } - Fishon = 1; - SSBpR_Calc(equ_Recr); // call function to do per recruit calculation - if (STD_Yr_Reverse_Ofish(y) > 0) - {SPR_std(STD_Yr_Reverse_Ofish(y)) = SSB_equil / Smry_Table(y, 11);} - Smry_Table(y, 9) = totbio; - Smry_Table(y, 10) = smrybio; - Smry_Table(y, 12) = SSB_equil; - Smry_Table(y, 14) = YPR_dead; - } - } // end year loop - } // end Fcast_Loop1 for the different stages of the forecast - } -// end forecast function -// SS_Label_file #15. **SS_expval.tpl** -// SS_Label_file # * Get_expected_values() // for a specified season and subseason that has data, updates the ALK for that time and calculates expected values for any type of data from any fleet/survey -// SS_Label_file # - -//******************************************************************** - /* SS_Label_FUNCTION 46 Get_expected_values: check for data */ -FUNCTION void Get_expected_values(const int y, const int t); - { - dvariable temp1; - dvar_vector age_exp(0, nages2); - for (subseas = 1; subseas <= N_subseas; subseas++) - { - // make age-length key if needed - ALK_idx = (s - 1) * N_subseas + subseas; - ALK_time = (y - styr) * nseas * N_subseas + (s - 1) * N_subseas + subseas; - if (ALK_subseas_update(ALK_idx) == 1 || have_data(ALK_time, 0, 0, 0) > 0) // need ALK update for growth reasons or for data reasons - { - get_growth3(y, t, s, subseas); - Make_AgeLength_Key(s, subseas); - } - for (f = 1; f <= Nfleet; f++) - { - if (have_data(ALK_time, f, 0, 0) > 0) - { - p = fleet_area(f); - timing = data_time(ALK_time, f, 2) * seasdur(s); // within season elapsed time same for all datatypes of this fleet x time - // make selected age-length sample for this fleet and with this timing - { - exp_AL.initialize(); - exp_AL_ret.initialize(); - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - gg = sx(g); - if (gg == 2) - { - L1 = nlength1; - L2 = nlength2; - A2 = nages + 1; - } // move over on length dimension to store males - else - { - L1 = 1; - L2 = nlength; - A2 = 0; - } - - /* - if(F_Method==1 && surveytime(f)<0.0) // Pope's approximation - {tempvec_a=elem_prod(Nmid(g),sel_a(y,f,gg));} // CHECK Nmid may not exist correctly unless still within the area loop - else if(surveytime(f)<0.0) // mimic fishery catch, but without Hrate so gets available numbers - {tempvec_a=elem_prod(natage(t,p,g),elem_prod(Zrate2(p,g),sel_a(y,f,gg)));} - else // explicit timing - {tempvec_a=elem_prod(natage(t,p,g),elem_prod(mfexp(-Z_rate(t,p,g)*timing),sel_a(y,f,gg)));} - */ - if (timing >= 0.0) - { - tempvec_a = elem_prod(natage(t, p, g), elem_prod(mfexp(-Z_rate(t, p, g) * timing), sel_a(y, f, gg))); - } // explicit timing - else - { - if (F_Method > 1) // mimic fishery catch, so gets mean available numbers - { - tempvec_a = elem_prod(natage(t, p, g), elem_prod(Zrate2(p, g), sel_a(y, f, gg))); - } - else // Pope's approximation - { - Nmid(g) = elem_prod(natage(t, p, g), surv1(s, GP3(g))); // numbers-at-age(g,a) surviving to middle of time period - tempvec_a = elem_prod(Nmid(g), sel_a(y, f, gg)); - } - } - tempvec_a = elem_prod(tempvec_a, keep_age(g, ALK_idx)); - - if (Do_Retain(f) == 0) - { - if (dolen(f) == 1) - { - for (a = 0; a <= nages; a++) - { - temp = tempvec_a(a); - for (z = 1; z <= nlength; z++) - { - exp_AL(a + A2, L1 - 1 + z) += temp * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z); - ; // note that A2 and L1 depend on what sex g is - } - } - } - else - { - for (a = 0; a <= nages; a++) - { - temp = tempvec_a(a); - for (z = 1; z <= nlength; z++) - { - exp_AL(a + A2, L1 - 1 + z) += temp * ALK(ALK_idx, g, a, z); - } - } - } - exp_AL_ret = exp_AL; // in case user has retain code 2 rather than 0 - } - else // need retain matrix - { - if (dolen(f) == 1) // need retention and length - { - for (a = 0; a <= nages; a++) - { - temp = tempvec_a(a); - temp1 = tempvec_a(a) * retain_a(y, f, gg, a); - for (z = 1; z <= nlength; z++) - { - exp_AL(a + A2, L1 - 1 + z) += temp * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z); // note that A2 and L1 depend on what sex g is - exp_AL_ret(a + A2, L1 - 1 + z) += temp1 * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z) * retain(y, f, L1 - 1 + z); // note that A2 and L1 depend on what sex g is - } - } - } - else // need retention, but no length selex - { - for (a = 0; a <= nages; a++) - { - temp = tempvec_a(a); - temp1 = tempvec_a(a) * retain_a(y, f, gg, a); - for (z = 1; z <= nlength; z++) - { - exp_AL(a + A2, L1 - 1 + z) += temp * ALK(ALK_idx, g, a, z); - exp_AL_ret(a + A2, L1 - 1 + z) += temp1 * ALK(ALK_idx, g, a, z) * retain(y, f, L1 - 1 + z); - } - } - } - } - - // code below once erroneously built up catch by morph from exp_AL - // that approach is incorrect, because exp_AL already accumulates the morphs!!!!! - // putting a morph accumulation into the code above would slow computations for everyone in order to have this rarely used feature - // so instead, replicate the above to store directly into morphcomp_exp, rather than into the exp_AL matrix - // note that partition is read with morphcomp data, but it is not used - // fleets with no defined retention function base morphcomp off total catch - // fleets with retention defined, use retained catch - if (have_data(ALK_time, f, 8, 0) > 0) // morphcomp observation - { - int j = have_data(ALK_time, f, 8, 1); // observation number - // {Morphcomp_exp(j,5+GP4(g))+=sum(exp_AL); - - if (Do_Retain(f) == 0) - { - if (dolen(f) == 1) // uses length selectivity - { - for (a = 0; a <= nages; a++) - { - temp = tempvec_a(a); - for (z = 1; z <= nlength; z++) - { - Morphcomp_exp(j, 5 + GP4(g)) += temp * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z); - ; // note that A2 and L1 depend on what sex g is - } - } - } - else - { - for (a = 0; a <= nages; a++) - { - temp = tempvec_a(a); - for (z = 1; z <= nlength; z++) - { - Morphcomp_exp(j, 5 + GP4(g)) += temp * ALK(ALK_idx, g, a, z); - } - } - } - } - else // must base sample on retained catch from a fleet that has retention defined - { - if (dolen(f) == 1) // need retention and length - { - for (a = 0; a <= nages; a++) - { - temp = tempvec_a(a); - temp1 = tempvec_a(a) * retain_a(y, f, gg, a); - for (z = 1; z <= nlength; z++) - { - Morphcomp_exp(j, 5 + GP4(g)) += temp1 * ALK(ALK_idx, g, a, z) * sel_l(y, f, gg, z) * retain(y, f, L1 - 1 + z); // note that A2 and L1 depend on what sex g is - } - } - } - else // need retention, but no length selex - { - for (a = 0; a <= nages; a++) - { - temp = tempvec_a(a); - temp1 = tempvec_a(a) * retain_a(y, f, gg, a); - for (z = 1; z <= nlength; z++) - { - Morphcomp_exp(j, 5 + GP4(g)) += temp1 * ALK(ALK_idx, g, a, z) * retain(y, f, L1 - 1 + z); - } - } - } - } - if (g == gmorph) - { - k = 5 + Morphcomp_nmorph; - Morphcomp_exp(j)(6, k) /= sum(Morphcomp_exp(j)(6, k)); - Morphcomp_exp(j)(6, k) += Morphcomp_mincomp; - Morphcomp_exp(j)(6, k) /= 1. + Morphcomp_mincomp * Morphcomp_nmorph; - } - } - } //close gmorph loop - - exp_l_temp = colsum(exp_AL); // total size composition - agetemp = rowsum(exp_AL); // total age composition - #ifdef DO_ONCE - if (do_once == 1) - echoinput << "yr " << y << ", seas: " << s << ", fleet:" << f << endl - << " sampled size " << exp_l_temp << endl - << " sampled age " << agetemp << endl; - #endif - if (Do_Retain(f) > 0) - { - exp_l_temp_ret = colsum(exp_AL_ret); - exp_truea_ret = rowsum(exp_AL_ret); - #ifdef DO_ONCE - if (do_once == 1) - echoinput << " retained size " << exp_l_temp_ret << endl - << " retained age " << exp_truea_ret << endl; - ; - #endif - } - else - { - exp_truea_ret = agetemp; // covers cases where retention not used, but observations have partition=2 - exp_l_temp_ret = exp_l_temp; - } - - // end creation of selected A-L - } - - if (sum(exp_l_temp) < 1.0e-8) - { - if (do_once == 1) - { - warnstream << current_phase() << " " << niter - << "warn in first call: Nil selected fish for year, seas, fleet " << y << " " << s << " " << f - << "; SS may recover; suggest check initial parm. values for selectivity and growth"; - write_message (WARN, 0); - } - exp_l_temp += 1.0e-09; - } - for (data_type = 1; data_type <= 9; data_type++) - { - switch (data_type) - { - case (1): // surveyindex - { - /* SS_Label_46.1 expected abundance index */ - // NOTE that the Q scaler is factored in later on - j = have_data(ALK_time, f, data_type, 0); // number of observations for this time,f,type - if (j > 0) - { - j = have_data(ALK_time, f, data_type, 1); // for now, only one observations is allowed for surveys - switch (Svy_units(f)) - { - case 1: // biomass - { - if (WTage_rd == 1) // using empirical wt-at-age; note that this cannot use GP specific bodyweights - // should sum over all g, but the g is already subsummed when agetemp is created by gender - { - vbio = 0.0; -// warning<= parm_dev_minyr(k) && y <= parm_dev_maxyr(k)) - { - vbio = parm_dev(k, y); - // can the mean dev for years with surveys be calculated here? - } - else - { - vbio = 0.0; - } - break; - } - } - Svy_selec_abund(f, j) = vbio; // e.g. the abundance that has been selected through selectivity or other assignment process - - // get catchability - // for "float" q, the calculations cannot be done on a year-by-year basis. The calc is done for the whole time series in SS_objfunc.tpl - if (Q_setup(f, 1) == 2) // mirror Q from lower numbered survey - { - Svy_log_q(f, j) = Svy_log_q(Q_setup(f, 2), 1); - Q_parm(Q_setup_parms(f, 1)) = Svy_log_q(f, 1); // base Q So this sets parameter equal to the scaling coefficient and can then have a prior - } - else if (Q_setup(f, 1) == 4) // mirror Q plus an offset - { - Svy_log_q(f, j) = Svy_log_q(Q_setup(f, 2), 1) + Q_parm(Q_setup_parms(f, 1) + 1); - Q_parm(Q_setup_parms(f, 1)) = Svy_log_q(f, 1); // base Q So this sets parameter equal to the scaling coefficient and can then have a prior - } - else // Q from parameter - { - if (Qparm_timevary(Q_setup_parms(f, 1)) == 0) // not time-varying - { - Svy_log_q(f, j) = Q_parm(Q_setup_parms(f, 1)); // set to base parameter value - } - else - { - Svy_log_q(f, j) = parm_timevary(Qparm_timevary(Q_setup_parms(f, 1)), Svy_yr(f, j)); - } - } - - // SS_Label_Info_25.1.3 #log or not - if (Svy_errtype(f) == -1) // normal - { - Svy_q(f) = Svy_log_q(f); // q already in arithmetic space - } - else if (Svy_errtype(f) >= 0 ) // lognormal, or T-dist - { - Svy_q(f) = mfexp(Svy_log_q(f)); // get q in arithmetic space - } - - // Q transformations and offsets - // option 5: add offset, useful when survey units are deviations - // option 3: use power function - // option 6: add offset, then use power function - if (Q_setup(f, 1) == 5 || Q_setup(f, 1) == 6 ) // add offset - { - vbio += Q_parm(Q_setup_parms(f, 1) + 1); - } - if (Q_setup(f, 1) == 3) // link is power function - { - vbio = pow(vbio, 1.0 + Q_parm(Q_setup_parms(f, 1) + 1)); - } - if (Q_setup(f, 1) == 6 ) // link is power function - { - vbio = pow(vbio, 1.0 + Q_parm(Q_setup_parms(f, 1) + 2)); // note that this is 2nd parameter after q - } - - if (Svy_errtype(f) >= 0) // lognormal or T-distribution - { - Svy_est(f, j) = log(vbio + 0.000001); - } - else - { - Svy_est(f, j) = vbio; - } - - // apply catchability, except if float is used. - // With float, catchability is calculated in ss_objfun after all obs have a value for svy_selec_abund - if (Q_setup(f, 5) == 0 || y > endyr) // apply Q if float is not used - // except if y is in forecast, then float Q has already been calculated so can be applied here - { - if (Svy_errtype(f) >= 0) // lognormal or T-dist - { - Svy_est(f, j) += Svy_log_q(f, j); - } - else - { - Svy_est(f, j) *= Svy_q(f, j); - } - } - } - break; - } // end survey index - - case (2): // DISCARD_OUTPUT - /* SS_Label_46.2 expected discard amount */ - { - if (have_data(ALK_time, f, data_type, 0) > 0) // number of observations - { - j = have_data(ALK_time, f, data_type, 1); // only getting first observation for now - if (fleet_type(f) <= 2) - { - if (catch_ret_obs(f, t) > 0.0 || y > endyr) - { - if (disc_units(f) == 3) // numbers regardless of catchunits for retained catch - { - exp_disc(f, j) = catch_fleet(t, f, 4) - catch_fleet(t, f, 6); - } - else if (catchunits(f) == 1) // biomass units for retained and discarded catch - { - exp_disc(f, j) = catch_fleet(t, f, 1) - catch_fleet(t, f, 3); // discard in biomass - if (disc_units(f) == 2) - exp_disc(f, j) /= (catch_fleet(t, f, 1) + 0.0000001); - } - else // numbers for retained and discarded catch - { - exp_disc(f, j) = catch_fleet(t, f, 4) - catch_fleet(t, f, 6); // discard in numbers - if (disc_units(f) == 2) - exp_disc(f, j) /= (catch_fleet(t, f, 4) + 0.0000001); - } - if (exp_disc(f, j) < 0.0) - { - warnstream << "negative discard occurred for fleet: " << f << "; obs: " << j << "; usually ephemeral issue with bad iteration"; - write_message (WARN, 0); - } - } - else - { - exp_disc(f, j) = -1.; - } - } - else if (fleet_type(f) == 4) // predator consumption stored in discard - { - if (disc_units(f) == 3) // numbers - { - exp_disc(f, j) = catch_fleet(t, f, 4); // consumption in numbers - } - else - { - exp_disc(f, j) = catch_fleet(t, f, 1); // consumption in biomass - } - } - else - { - exp_disc(f, j) = -1.; - } - } - break; - } // end discard - - case (3): // mean body weight - /* SS_Label_46.3 expected mean body weight */ - { - if (have_data(ALK_time, f, data_type, 0) > 0) // number of observations - { - for (int reps = 1; reps <= have_data(ALK_time, f, data_type, 0); reps++) - { - j = have_data(ALK_time, f, data_type, reps); // observation number in overall list - z = mnwtdata(5, j); // type 1=length, 2=weight - int parti = mnwtdata(4, j); // parrtition: 0=all, 1=discard, 2=retained - switch (parti) - { - case 0: - { - if (z == 2) - { - exp_mnwt(j) = (exp_l_temp * wt_len2(s, 1)) / sum(exp_l_temp); - } // total sample - else - { - exp_mnwt(j) = (exp_l_temp * len_bins_m2) / sum(exp_l_temp); - } - break; - } - case 1: - { - if (z == 2) - exp_mnwt(j) = (exp_l_temp - exp_l_temp_ret) * wt_len2(s, 1) / (sum(exp_l_temp) - sum(exp_l_temp_ret)); // discard sample - else - { - exp_mnwt(j) = (exp_l_temp - exp_l_temp_ret) * len_bins_m2 / (sum(exp_l_temp) - sum(exp_l_temp_ret)); - } - break; - } - case 2: - { - if (z == 2) - exp_mnwt(j) = (exp_l_temp_ret * wt_len2(s, 1)) / sum(exp_l_temp_ret); // retained only - else - { - exp_mnwt(j) = (exp_l_temp_ret * len_bins_m2) / sum(exp_l_temp_ret); - } - break; - } - } - } - } - break; - } - - case (4): // length composition - /* SS_Label_46.4 length composition */ - { - if (have_data(ALK_time, f, data_type, 0) > 0) - { - for (j = 1; j <= have_data(ALK_time, f, data_type, 0); j++) // loop all obs of this type - { - i = have_data(ALK_time, f, data_type, j); - if (LenBin_option > 1) - { - if (mkt_l(f, i) == 0) - { - exp_l(f, i) = make_len_bin * exp_l_temp; - } // expected size comp MAtrix * vector = vector - else if (mkt_l(f, i) == 1) - { - exp_l(f, i) = make_len_bin * (exp_l_temp - exp_l_temp_ret); - } // discard sample - else - { - exp_l(f, i) = make_len_bin * exp_l_temp_ret; - } // retained only - } - else // using data_bins same as pop_bins - { - if (mkt_l(f, i) == 0) - { - exp_l(f, i) = exp_l_temp; - } // expected size comp MAtrix * vector = vector - else if (mkt_l(f, i) == 1) - { - exp_l(f, i) = (exp_l_temp - exp_l_temp_ret); - } // discard sample - else - { - exp_l(f, i) = exp_l_temp_ret; - } // retained only - } - if (docheckup == 1) - echoinput << " len obs " << mkt_l(f, i) << " " << tails_l(f, i) << endl - << obs_l(f, i) << endl - << exp_l(f, i) << endl; - // code for tail compression, etc in the likelihood section to allow for superyear combinations // mkt=0 Do nothing - } // end lengthcomp loop - } - break; - } // end length composition - - case (5): // age composition - /* SS_Label_46.5 age composition */ - { - if (have_data(ALK_time, f, data_type, 0) > 0) - { - for (j = 1; j <= have_data(ALK_time, f, data_type, 0); j++) // loop all obs of this type - { - i = have_data(ALK_time, f, data_type, j); - k = ageerr_type_a(f, i); // age-err type - if (use_Lbin_filter(f, i) == 0) - { // sum across all length bins - if (mkt_a(f, i) == 0) - age_exp = agetemp; - if (mkt_a(f, i) == 1) - age_exp = agetemp - exp_truea_ret; // discard sample - if (mkt_a(f, i) == 2) - age_exp = exp_truea_ret; // retained only - } - else - { // only use ages from specified range of size bins - // Lbin_filter is a vector with 0 for unselected size bins and 1 for selected bins - if (mkt_a(f, i) == 0) - age_exp = exp_AL * Lbin_filter(f, i); - if (mkt_a(f, i) == 1) - age_exp = (exp_AL - exp_AL_ret) * Lbin_filter(f, i); // discard sample - if (mkt_a(f, i) == 2) - age_exp = exp_AL_ret * Lbin_filter(f, i); // retained only - } - exp_a(f, i) = age_age(k) * age_exp; - if (docheckup == 1) - echoinput << "Lbin " << Lbin_filter(f, i) << endl - << " obs " << obs_a(f, i) << endl - << "expected " << age_exp << endl - << "exp with ageerr " << exp_a(f, i) << endl; - // add code here to store exp_a_true(f,i)=age_exp - // then in data generation the sample can be from true age before ageing error is applied - - // if(docheckup==1) echoinput<<" real age "< 0) // have some sizefreq data - { - - if (have_data(ALK_time, f, data_type, 0) > 0) - { - for (j = 1; j <= have_data(ALK_time, f, data_type, 0); j++) // loop all obs of this type - { - iobs = have_data(ALK_time, f, data_type, j); // observation index - SzFreqMethod = SzFreq_obs_hdr(iobs, 6); - SzFreqMethod_seas = nseas * (SzFreqMethod - 1) + s; // index that combines sizefreqmethod and season and used in SzFreqTrans - if (SzFreq_obs_hdr(iobs, 9) > 0) // first occurrence of this method at this time is with fleet = f - { - if (do_once == 1 || (MG_active(3) > 0 && (timevary_MG(y, 3) > 0))) // calc matrix because wtlen parameters have changed - { - for (gg = 1; gg <= gender; gg++) - { - if (gg == 1) - { - z1 = 1; - z2 = nlength; - ibin = 0; - ibinsave = 0; - } // female - else - { - z1 = nlength1; - z2 = nlength2; - ibin = 0; - ibinsave = SzFreq_Nbins(SzFreqMethod); - } // male - topbin = 0.; - botbin = 0.; - - // NOTE: wt_len_low is calculated separately for each growth pattern (GPat) - // but the code below still just uses GPat=1 for calculation of the sizefreq transition matrix - - switch (SzFreq_units(SzFreqMethod)) // biomass vs. numbers are accumulated in the bins - { - case (1): // units are biomass, so accumulate body weight into the bins; Assume that bin demarcations are also in biomass - { - if (SzFreq_Omit_Small(SzFreqMethod) == 1) - { - while (wt_len_low(s, 1, z1 + 1) < SzFreq_bins(SzFreqMethod, 1) && z1 < z2) - { - z1++; - } - } // ignore tiny fish - if (z1 + 1 >= z2) - { - warnstream << "max population size " << wt_len_low(s, 1, z1) << " is less than first data bin " << SzFreq_bins(SzFreqMethod, 1) << " for SzFreqMethod " << SzFreqMethod; - write_message (FATAL, 0); // EXIT! - } - - if (wt_len_low(s, 1, nlength2) < SzFreq_bins(SzFreqMethod, SzFreq_Nbins(SzFreqMethod))) - { - warnstream << "max population size " << wt_len_low(s, 1, nlength2) << " is less than max data bin " << SzFreq_bins(SzFreqMethod, SzFreq_Nbins(SzFreqMethod)) << " for SzFreqMethod " << SzFreqMethod; - write_message (FATAL, 0); // EXIT! - } - - for (z = z1; z <= z2; z++) - { - if (ibin == SzFreq_Nbins(SzFreqMethod)) - { - SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = wt_len2(s, 1, z); - } - else - { - if (wt_len_low(s, 1, z) >= topbin) - { - ibin++; - ibinsave++; - } - if (ibin > 1) - { - botbin = SzFreq_bins2(SzFreqMethod, ibin); - } - if (ibin == SzFreq_Nbins(SzFreqMethod)) - { - SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = wt_len2(s, 1, z); - topbin = 99999.; - } - else - { - topbin = SzFreq_bins2(SzFreqMethod, ibin + 1); - if (wt_len_low(s, 1, z) >= botbin && wt_len_low(s, 1, z + 1) <= topbin) - { - SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = wt_len2(s, 1, z); - } - else - { - temp = (wt_len_low(s, 1, z + 1) - topbin) / wt_len_fd(s, 1, z); // frac in pop bin above (data bin +1) - temp1 = wt_len_low(s, 1, z) + (1. - temp * 0.5) * wt_len_fd(s, 1, z); // approx body wt for these fish - temp2 = wt_len_low(s, 1, z) + (1. - temp) * 0.5 * wt_len_fd(s, 1, z); // approx body wt for fish below - SzFreqTrans(SzFreqMethod_seas, z, ibinsave + 1) = temp * temp1; - SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = (1. - temp) * temp2; - } - } - } - } - if (SzFreq_scale(SzFreqMethod) == 2 && gg == gender) // convert to pounds - { - SzFreqTrans(SzFreqMethod_seas) /= 0.4536; - } - break; - } // end of units in biomass - // NOTE: even though the transition matrix is currently in units of biomass distribution, there is no need to - // normalize to sum to 1.0 here because the normalization will occur after it gets used to create SzFreq_exp - - case (2): // units are numbers - { - if (SzFreq_scale(SzFreqMethod) <= 2) // bin demarcations are in weight units (1=kg, 2=lbs), so uses wt_len to compare to bins - { - if (SzFreq_Omit_Small(SzFreqMethod) == 1) - { - while (wt_len_low(s, 1, z1 + 1) < SzFreq_bins(SzFreqMethod, 1) && z1 < z2) - { - z1++; - } - } // ignore tiny fish - if (z1 + 1 >= z2) - { - warnstream << "max population size " << wt_len_low(s, 1, z1) << " is less than first data bin " << SzFreq_bins(SzFreqMethod, 1) << " for SzFreqMethod " << SzFreqMethod; - write_message (FATAL, 0); // EXIT! - } - if (wt_len_low(s, 1, nlength2) < SzFreq_bins(SzFreqMethod, SzFreq_Nbins(SzFreqMethod))) - { - warnstream << "max population size " << wt_len_low(s, 1, nlength2) << " is less than max data bin " << SzFreq_bins(SzFreqMethod, SzFreq_Nbins(SzFreqMethod)) << " for SzFreqMethod " << SzFreqMethod; - write_message (FATAL, 0); // EXIT! - } - - for (z = z1; z <= z2; z++) - { - if (ibin == SzFreq_Nbins(SzFreqMethod)) - { - SzFreqTrans(SzFreqMethod_seas, z, ibinsave) = 1.; - } //checkup<<" got to last ibin, so put rest of popbins here"<= topbin) - { - ibin++; - ibinsave++; - } //checkup<<" incr ibin "< 1) - { - botbin = SzFreq_bins2(SzFreqMethod, ibin); - } - if (ibin == SzFreq_Nbins(SzFreqMethod)) // checkup<<" got to last ibin, so put rest of popbins here"<= botbin && wt_len_low(s, 1, z + 1) <= topbin) //checkup<<" pop inside dat, put here"<= topbin) - { - ibin++; - ibinsave++; - } //checkup<<" incr ibin "< 1) - { - botbin = SzFreq_bins2(SzFreqMethod, ibin); - } - if (ibin == SzFreq_Nbins(SzFreqMethod)) // checkup<<" got to last ibin, so put rest of popbins here"<= botbin && len_bins2(z + 1) <= topbin) //checkup<<" pop inside dat, put here"< 0.0) - { - SzFreq_exp(iobs)(1, k) += SzFreq_mincomp(SzFreqMethod); - SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); - } - break; - } - case (1): // female only - { - SzFreq_exp(iobs)(k + 1, 2 * k) = 0.0; // zero out the males so will not interfere with data generation - SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); - if (SzFreq_mincomp(SzFreqMethod) > 0.0) - { - SzFreq_exp(iobs)(1, k) += SzFreq_mincomp(SzFreqMethod); - SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); - } - break; - } - case (2): // male only - { - ibin = SzFreq_obs_hdr(iobs, 7); - SzFreq_exp(iobs)(1, ibin - 1) = 0.0; // zero out the females so will not interfere with data generation - SzFreq_exp(iobs)(ibin, k) /= sum(SzFreq_exp(iobs)(ibin, k)); - if (SzFreq_mincomp(SzFreqMethod) > 0.0) - { - SzFreq_exp(iobs)(ibin, k) += SzFreq_mincomp(SzFreqMethod); - SzFreq_exp(iobs)(ibin, k) /= sum(SzFreq_exp(iobs)(ibin, k)); - } - break; - } - case (3): // each gender - { - SzFreq_exp(iobs) /= sum(SzFreq_exp(iobs)); - if (SzFreq_mincomp(SzFreqMethod) > 0.0) - { - SzFreq_exp(iobs) += SzFreq_mincomp(SzFreqMethod); - SzFreq_exp(iobs) /= sum(SzFreq_exp(iobs)); - } - break; - } - } // end gender switch - } // end have 2 genders - else - { - k = SzFreq_obs_hdr(iobs, 8); // max bins for this method - SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); - if (SzFreq_mincomp(SzFreqMethod) > 0.0) - { - SzFreq_exp(iobs)(1, k) += SzFreq_mincomp(SzFreqMethod); - SzFreq_exp(iobs)(1, k) /= sum(SzFreq_exp(iobs)(1, k)); - } - } - #ifdef DO_ONCE - if (do_once == 1) - echoinput << y << " " << f << " szfreq_exp_final " << SzFreq_exp(iobs) << endl; - #endif - } // end loop of obs for fleet = f - } // end having some obs for this method in this fleet - } // end use of generalized size freq data - break; - } // end generalized size composition - - case (7): // mean size-at-age - /* SS_Label_46.7 mean size at age */ - { - if (have_data(ALK_time, f, data_type, 0) > 0) - { - for (j = 1; j <= have_data(ALK_time, f, data_type, 0); j++) // loop all obs of this type - { - i = have_data(ALK_time, f, data_type, j); - k = abs(ageerr_type_ms(f, i)); // age-err type where the sign selects length vs. weight - if (ageerr_type_ms(f, i) > 0) // values are length at age - { - if (mkt_ms(f, i) == 0) // total catch - { - exp_a_temp = age_age(k) * agetemp; // numbers at binned age - exp_ms(f, i) = age_age(k) * (exp_AL * len_bins_m2); // numbers * length - exp_ms_sq(f, i) = age_age(k) * (exp_AL * len_bins_sq); // numbers * length^2 - } - if (mkt_ms(f, i) == 1) // discard - { - // exp_a_temp = age_age(k) * (exp_AL * (1-retain(y,f))); // numbers at binned age = age_age(bins,age) * sum(age) - // exp_ms(f,i) = age_age(k) * (exp_AL * elem_prod((1-retain(y,f)),len_bins_m2)); // numbers * length - // exp_ms_sq(f,i) = age_age(k) * (exp_AL * elem_prod((1-retain(y,f)),len_bins_sq)); // numbers * length^2 - exp_a_temp = age_age(k) * (agetemp - exp_truea_ret); - exp_ms(f, i) = age_age(k) * ((exp_AL - exp_AL_ret) * len_bins_m2); // numbers * length - exp_ms_sq(f, i) = age_age(k) * ((exp_AL - exp_AL_ret) * len_bins_sq); // numbers * length^2 - } - if (mkt_ms(f, i) == 2) // retained - { - exp_a_temp = age_age(k) * exp_truea_ret; // numbers at binned age = age_age(bins,age) * sum(age) - exp_ms(f, i) = age_age(k) * (exp_AL_ret * len_bins_m2); // numbers * length - exp_ms_sq(f, i) = age_age(k) * (exp_AL_ret * len_bins_sq); // numbers * length^2 - } - } - else // values are weight at age - { - if (mkt_ms(f, i) == 0) - { - exp_a_temp = age_age(k) * agetemp; // numbers at binned age = age_age(bins,age) * sum(age) - exp_ms(f, i) = age_age(k) * (exp_AL * wt_len2(s, 1)); // numbers * bodywt - exp_ms_sq(f, i) = age_age(k) * (exp_AL * wt_len2_sq(s, 1)); // numbers * bodywt^2 - } - if (mkt_ms(f, i) == 1) - { - exp_a_temp = age_age(k) * (agetemp - exp_truea_ret); // numbers at binned age = age_age(bins,age) * sum(age) - exp_ms(f, i) = age_age(k) * ((exp_AL - exp_AL_ret) * wt_len2(s, 1)); // numbers * bodywt - exp_ms_sq(f, i) = age_age(k) * ((exp_AL - exp_AL_ret) * wt_len2_sq(s, 1)); // numbers * bodywt^2 - } - if (mkt_ms(f, i) == 2) - { - exp_a_temp = age_age(k) * exp_truea_ret; // numbers at binned age = age_age(bins,age) * sum(age) - exp_ms(f, i) = age_age(k) * (exp_AL_ret * wt_len2(s, 1)); // numbers * bodywt - exp_ms_sq(f, i) = age_age(k) * (exp_AL_ret * wt_len2_sq(s, 1)); // numbers * bodywt^2 - } - } - exp_ms(f, i) += 1.0e-6; - exp_a_temp += 1.0e-6; - exp_ms_sq(f, i) += 1.0e-6; - exp_ms_sq(f, i) = sqrt( - elem_div( - (exp_ms_sq(f, i) - elem_div(elem_prod(exp_ms(f, i), exp_ms(f, i)), exp_a_temp)), - exp_a_temp)) + - 0.000001; //std.err. of size at binned age = sqrt( (P2-P1*P1/P0) / P0 ) - exp_ms(f, i) = elem_div(exp_ms(f, i), exp_a_temp); // mean size at binned age - } - } // endl size-at-age - break; - } // end mean size-at-age - - } // end switch(data_type) - } // end loop for types of data - } - } // end loop of fleets - } // end loop of subseasons - return; - } // end function -// SS_Label_file #16. **SS_objfunc.tpl** -// SS_Label_file # * evaluate_the_objective_function() -// SS_Label_file # * Process_STDquant() // move info like SSB to the sd_vectors -// SS_Label_file # * Check_Parm() // check parameter against its bounds and do jitter if requested -// SS_Label_file # * Get_Prior() // calc the prior likelihood for a parameter -// SS_Label_file # * get_posteriors() // writes posteriors.sso and other MCMC relevant outputs -// SS_Label_file # - -//******************************************************************** -// FUNCTIONS in file: SS_objfunc.tpl -// evaluate_the_objective_function -// Process_STDquant -// Check_Parm -// Get_Prior -// get_posteriors - - /* SS_Label_FUNCTION 25 evaluate_the_objective_function */ -FUNCTION void evaluate_the_objective_function() - { - surv_like.initialize(); - Svy_like_I.initialize(); - Q_dev_like.initialize(); - disc_like.initialize(); - length_like.initialize(); - age_like.initialize(); - sizeage_like.initialize(); - parm_like.initialize(); - parm_dev_like.initialize(); - noBias_recr_like.initialize(); - mnwt_like.initialize(); - equ_catch_like.initialize(); - recr_like.initialize(); - Fcast_recr_like.initialize(); - catch_like.initialize(); - Morphcomp_like.initialize(); - TG_like1.initialize(); - TG_like2.initialize(); - length_like_tot.initialize(); - age_like_tot.initialize(); - regime_like.initialize(); - obj_fun = 0.0; - SoftBoundPen = 0.0; - - int k_phase = current_phase(); - if (k_phase > max_lambda_phase) - k_phase = max_lambda_phase; - - //Q_setup for 3.30 - // 1: link type - // 2: extra input for link, i.e. mirror fleet - // 3: 0/1 to select extra sd parameter - // 4: 0/1 for biasadj or not - // 5: 0/1 to float k=4; - - // Link types - // 1 simple q, 1 parm - // 2 mirror simple q, 1 mirrored parameter - // 3 q and power, 2 parm - - if (Svy_N > 0) - { - for (f = 1; f <= Nfleet; f++) - { - if (Svy_N_fleet(f) > 0) - { - Svy_se_use(f) = Svy_se(f); - if (Q_setup(f, 3) > 0) - { - Svy_se_use(f) += Q_parm(Q_setup_parms(f, 2)); // add extra stderr - } - // SS_Label_Info_25.1.1 #combine for super-periods - for (j = 1; j <= Svy_super_N(f); j++) - { - temp = 0.0; - for (i = Svy_super_start(f, j); i <= Svy_super_end(f, j); i++) - { - temp += Svy_est(f, i) * Svy_super_weight(f, i); - } // combine across range of observations - // sampwt sums to 1.0, so temp contains the weighted average - for (i = Svy_super_start(f, j); i <= Svy_super_end(f, j); i++) - { - Svy_est(f, i) = temp; - } // assign average to each obs - } - - // SS_Label_Info_25.1.2 #apply catchability, Q - if (Q_setup(f, 5) > 0) // do float Q - { // NOTE: cannot use float option if error type is normal - temp = 0.; - temp1 = 0.; - temp2 = 0.; - Svy_log_q(f) = 0.0; - Svy_q(f) = 0.0; - if (Svy_N_fleet_use(f) > 0) // be sure that some observation is being used - { - for (i = 1; i <= Svy_N_fleet(f); i++) - { - if (Svy_use(f, i) > 0) - { - Svy_est(f, i) = log( Svy_selec_abund(f, i) ); // before q is applied - temp2 += (Svy_obs_log(f, i) - Svy_est(f, i)) / square(Svy_se_use(f, i)); - temp += 1.0 / square(Svy_se_use(f, i)); - temp1 += 1.; - } - } - - // calc q and apply to all obs - if (Q_setup(f, 4) == 0) // mean q, with no bias adjustment - { - Svy_log_q(f) = temp2 / temp; - Svy_est(f) += temp2 / temp; - } - else // any value mean q with variance bias adjustment - { - Svy_log_q(f) = (temp2 + temp1 * 0.5) / temp; - Svy_est(f) += (temp2 + temp1 * 0.5) / temp; - } - Svy_q(f) = mfexp(Svy_log_q(f)); // get q in arithmetic space - Q_parm(Q_setup_parms(f, 1)) = Svy_log_q(f, 1); // base Q So this sets parameter equal to the scaling coefficient and can then have a prior - } - else // no observations - { - Q_parm(Q_setup_parms(f, 1)) = Svy_log_q(f, 1); - } - } - - // SS_Label_Info_25.1.4 #calc the logL - for (i = 1; i <= Svy_N_fleet(f); i++) { - if (Svy_use(f, i) > 0) - { - if (Svy_errtype(f) == 0) { // lognormal - Svy_like_I(f,i) = 0.5 * square((Svy_obs_log(f, i) - Svy_est(f, i)) / Svy_se_use(f, i)) - + sd_offset * log(Svy_se_use(f, i)); - } - else if (Svy_errtype(f) == 1) { // lognormal with bias adjustment - Svy_like_I(f,i) = 0.5 * square((Svy_obs_log(f, i) - Svy_est(f, i) + 0.5 * square(Svy_se_use(f, i))) / Svy_se_use(f, i)) - + sd_offset * log(Svy_se_use(f, i)); - } - else if (Svy_errtype(f) > 1) { // T-dist - dvariable df = Svy_errtype(f); - Svy_like_I(f,i) = ((df + 1.) / 2.) * log((1. + square((Svy_obs_log(f, i) - Svy_est(f, i))) / (df * square(Svy_se_use(f, i))))) - + sd_offset * log(Svy_se_use(f, i)); - } - else if (Svy_errtype(f) == -1) { // normal - Svy_like_I(f,i) = 0.5 * square((Svy_obs(f, i) - Svy_est(f, i)) / Svy_se_use(f, i)) - + sd_offset * log(Svy_se_use(f, i)); - } - else if (Svy_errtype(f) == -2) { - // gamma option will go here - } - else { - // values <-2 are trapped in readdata - } - } - } // end loop of obs - surv_like(f) = sum(Svy_like_I(f)); - } // end having obs for this survey - } - if (do_once == 1) - echoinput << "Finished survey obj_fun " << surv_like << endl; - } - - // SS_Label_Info_25.2 #Fit to discard - if (nobs_disc > 0) - { - for (f = 1; f <= Nfleet; f++) - if (disc_lambda(f, k_phase) > 0.0 || save_for_report > 0) - { - if (disc_N_fleet(f) > 0) - { - for (j = 1; j <= N_suprper_disc(f); j++) // do super years - { - temp = 0.0; - for (i = suprper_disc1(f, j); i <= suprper_disc2(f, j); i++) - { - temp += exp_disc(f, i) * suprper_disc_sampwt(f, i); - } // combine across range of observations - for (i = suprper_disc1(f, j); i <= suprper_disc2(f, j); i++) - { - exp_disc(f, i) = temp; - } // assign back to each obs - } - - if (disc_errtype(f) >= 1) // T -distribution - { - for (i = 1; i <= disc_N_fleet(f); i++) - if (yr_disc_use(f, i) >= 0.0) - { - disc_like(f) += 0.5 * (disc_errtype(f) + 1.) * log((1. + square(obs_disc(f, i) - exp_disc(f, i)) / (disc_errtype(f) * square(sd_disc(f, i))))) + sd_offset * log(sd_disc(f, i)); - } - } - else if (disc_errtype(f) == 0) // normal error, with input CV - { - for (i = 1; i <= disc_N_fleet(f); i++) - if (yr_disc_use(f, i) >= 0.0) - { - disc_like(f) += 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)) + sd_offset * log(sd_disc(f, i)); - } - } - else if (disc_errtype(f) == -1) // normal error with input se - { - for (i = 1; i <= disc_N_fleet(f); i++) - if (yr_disc_use(f, i) >= 0.0) - { - disc_like(f) += 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)) + sd_offset * log(sd_disc(f, i)); - } - } - else if (disc_errtype(f) == -2) // lognormal where input cv_disc must contain se in log space - { - for (i = 1; i <= disc_N_fleet(f); i++) - if (yr_disc_use(f, i) >= 0.0) - { - disc_like(f) += 0.5 * square(log(obs_disc(f, i) / exp_disc(f, i)) / sd_disc(f, i)) + sd_offset * log(sd_disc(f, i)); - } - } - else if (disc_errtype(f) == -3) // trunc normal error, with input CV - { - for (i = 1; i <= disc_N_fleet(f); i++) - if (yr_disc_use(f, i) >= 0.0) - { - disc_like(f) += 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)) - log(cumd_norm((1 - exp_disc(f, i)) / sd_disc(f, i)) - cumd_norm((0 - exp_disc(f, i)) / sd_disc(f, i))); - } - } - else - { - warnstream << "discard error type for fleet " << f << " = " << disc_errtype(f) << " should be -3, -2, -1, 0, or >=1"; - write_message (FATAL, 0); // EXIT! - } - } - } - if (do_once == 1) - { - echoinput << "Finished discard obj_fun " << disc_like << endl; - } - } - - // SS_Label_Info_25.3 #Fit to mean body wt - if (nobs_mnwt > 0) - { - for (i = 1; i <= nobs_mnwt; i++) - if (mnwtdata(3, i) > 0.) - { - mnwt_like(mnwtdata(3, i)) += 0.5 * (DF_bodywt + 1.) * log(1. + square(mnwtdata(6, i) - exp_mnwt(i)) / mnwtdata(9, i)) + mnwtdata(10, i); - } - if (do_once == 1) - echoinput << " Finished meanwt obj_fun " << mnwt_like << endl; - } - - // SS_Label_Info_25.4 #Fit to length comp - if (Nobs_l_tot > 0) - { - for (f = 1; f <= Nfleet; f++) - if (length_lambda(f, k_phase) > 0.0 || save_for_report > 0) - { - if (Nobs_l(f) >= 1) - { - - for (j = 1; j <= N_suprper_l(f); j++) // do each super period - { - exp_l_temp_dat.initialize(); - for (i = suprper_l1(f, j); i <= suprper_l2(f, j); i++) - { - exp_l_temp_dat += exp_l(f, i) * suprper_l_sampwt(f, i); // combine across range of observations - } - // exp_l_temp_dat/=sum(exp_l_temp_dat); // normalize not needed because converted to proportions later - for (i = suprper_l1(f, j); i <= suprper_l2(f, j); i++) - { - exp_l(f, i) = exp_l_temp_dat; // assign back to all obs - } - } - - for (i = 1; i <= Nobs_l(f); i++) - { - length_like(f, i) = -offset_l(f, i); // so a perfect fit will approach 0.0 - int parti = mkt_l(f, i); // discard vs retained - if (gender == 2) - { - if (gen_l(f, i) == 0) - { - for (z = 1; z <= nlen_bin; z++) - { - exp_l(f, i, z) += exp_l(f, i, z + nlen_bin); - } - exp_l(f, i)(nlen_binP, nlen_bin2) = 0.00; - } - else if (gen_l(f, i) == 1) // female only - { - exp_l(f, i)(nlen_binP, nlen_bin2) = 0.00; - } - else if (gen_l(f, i) == 2) // male only - { - exp_l(f, i)(1, nlen_bin) = 0.00; - } - else if (gen_l(f, i) == 3 && CombGender_L(parti, f) > 0) - { - for (z = 1; z <= CombGender_L(parti, f); z++) - { - exp_l(f, i, z) += exp_l(f, i, z + nlen_bin); - exp_l(f, i, z + nlen_bin) = 0.00; - } - } - } - exp_l(f, i) /= sum(exp_l(f, i)); - tails_w = ivector(tails_l(f, i)); - - if (gen_l(f, i) != 2) - { - if (tails_w(1) > 1) - { - exp_l(f, i, tails_w(1)) = sum(exp_l(f, i)(1, tails_w(1))); - exp_l(f, i)(1, tails_w(1) - 1) = 0.; - } - if (tails_w(2) < nlen_bin) - { - exp_l(f, i, tails_w(2)) = sum(exp_l(f, i)(tails_w(2), nlen_bin)); - exp_l(f, i)(tails_w(2) + 1, nlen_bin) = 0.; - } - exp_l(f, i)(tails_w(1), tails_w(2)) += min_comp_L(mkt_l(f, i), f); - } - - if (gender == 2 && gen_l(f, i) >= 2) - { - if (tails_w(3) > nlen_binP) - { - exp_l(f, i, tails_w(3)) = sum(exp_l(f, i)(nlen_binP, tails_w(3))); - exp_l(f, i)(nlen_binP, tails_w(3) - 1) = 0.; - } - if (tails_w(4) < nlen_bin2) - { - exp_l(f, i, tails_w(4)) = sum(exp_l(f, i)(tails_w(4), nlen_bin2)); - exp_l(f, i)(tails_w(4) + 1, nlen_bin2) = 0.; - } - exp_l(f, i)(tails_w(3), tails_w(4)) += min_comp_L(mkt_l(f, i), f); - } - exp_l(f, i) /= sum(exp_l(f, i)); - - if (header_l(f, i, 3) > 0 || save_for_report == 1) - { - if (Comp_Err_L(parti, f) == 0) // multinomial - { - // get female or combined sex logL - // logL functions are at end of file SS_miscfxn.tpl - if (gen_l(f, i) != 2) - length_like(f, i) += Comp_logL_multinomial( nsamp_l(f, i), obs_l(f, i)(tails_w(1), tails_w(2)), exp_l(f, i)(tails_w(1), tails_w(2)) ); - // add male logL - if (gen_l(f, i) >= 2 && gender == 2) - length_like(f, i) += Comp_logL_multinomial( nsamp_l(f, i), obs_l(f, i)(tails_w(3), tails_w(4)), exp_l(f, i)(tails_w(3), tails_w(4)) ); - } - else if( (Comp_Err_L(parti, f)==1) || (Comp_Err_L(parti, f)==2) ) // dirichlet - { - /* from Thorson: NLL -= gammln(A) - gammln(ninput_t(t)+A) + sum(gammln(ninput_t(t)*extract_row(pobs_ta,t) + A*extract_row(pexp_ta,t))) - sum(lgamma(A*extract_row(pexp_ta,t))) \ - in option 1, dirichlet_Parm = Theta*n from equation (10) of Thorson et al. 2016 - in option 2, dirichlet_Parm = Beta from equation (4) of Thorson et al. 2016 */ - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f),1))); - if (Comp_Err_L(parti, f) == 1) - dirichlet_Parm *= nsamp_l(f, i); - - // note: first term in equations (4) and (10) is calculated - // as offset_l in SS_prelim.tpl and already included in length_like - // now add second term which is only dependent on parameters and sample size - temp = gammln(dirichlet_Parm) - gammln(nsamp_l(f, i) + dirichlet_Parm); - // get female or combined sex logL - // third and final term in equations (4) and (10) - if (gen_l(f, i) != 2) { // so not male only - temp += Comp_logL_Dirichlet( nsamp_l(f, i), dirichlet_Parm, obs_l(f, i)(tails_w(1), tails_w(2)), exp_l(f, i)(tails_w(1), tails_w(2)) ); - } - // add male logL - if (gen_l(f, i) >= 2 && gender == 2) { - temp += Comp_logL_Dirichlet( nsamp_l(f, i), dirichlet_Parm, obs_l(f, i)(tails_w(3), tails_w(4)), exp_l(f, i)(tails_w(3), tails_w(4)) ); - } - length_like(f, i) -= temp; - } else // multivariate-Tweedie - { - dvariable tweedie_Phi; - dvariable tweedie_power; - // Exponentiate [PARAMETER_1] - int k1 = Comp_Err_parmloc(Comp_Err_L2(parti, f),1); - tweedie_Phi = mfexp(selparm(k1)); - // One plus logistic-transform [PARAMETER_1] - tweedie_power = 1.0 + mfexp(selparm(k1+1)) / (1.0+mfexp(selparm(k1+1))); - if(gen_l(f,i) !=2) // so not male only - { - // dtweedie( Type y, Type mu, Type phi, Type p, int give_log=0 ) - for (int tail_index=tails_w(1); tail_index<=tails_w(2); tail_index++){ - temp += 1.; // dtweedie( nsamp_l(f,i)*obs_l(f,i)(tail_index), nsamp_l(f,i)*exp_l(f,i)(tail_index), tweedie_Phi, tweedie_power, true ); - } - } - // add male logL - if(gen_l(f,i) >=2 && gender==2) - { - // dtweedie( Type y, Type mu, Type phi, Type p, int give_log=0 ) - for (int tail_index=tails_w(3); tail_index<=tails_w(4); tail_index++){ - temp += 1.; // dtweedie( nsamp_l(f,i)*obs_l(f,i)(tail_index), nsamp_l(f,i)*exp_l(f,i)(tail_index), tweedie_Phi, tweedie_power, true ); - } - } - length_like(f,i)-=temp; - } - if (header_l(f, i, 3) > 0) - length_like_tot(f) += length_like(f, i); - } - } - } - } - if (do_once == 1) - echoinput << "Finished lencomp obj_fun " << length_like_tot << endl; - } - - // SS_Label_Info_25.5 #Fit to age composition - if (Nobs_a_tot > 0) - { - for (f = 1; f <= Nfleet; f++) - if (age_lambda(f, k_phase) > 0.0 || save_for_report > 0) - { - if (Nobs_a(f) >= 1) - { - for (j = 1; j <= N_suprper_a(f); j++) // do super years Max of 20 allowed per type(f) - { - exp_a_temp.initialize(); - for (i = suprper_a1(f, j); i <= suprper_a2(f, j); i++) - { - exp_a_temp += exp_a(f, i) * suprper_a_sampwt(f, i); // combine across range of observations - } - // exp_a_temp/=(1.0e-15+sum(exp_a_temp)); // normalize - for (i = suprper_a1(f, j); i <= suprper_a2(f, j); i++) - exp_a(f, i) = exp_a_temp; // assign back to each original obs - } - - for (i = 1; i <= Nobs_a(f); i++) - { - age_like(f, i) = -offset_a(f, i); // so a perfect fit will approach 0.0 - if (gender == 2) - { - if (gen_a(f, i) == 0) // combined sex observation - { - for (z = 1; z <= n_abins; z++) - { - exp_a(f, i, z) += exp_a(f, i, z + n_abins); - } - exp_a(f, i)(n_abins1, n_abins2) = 0.00; - } - else if (gen_a(f, i) == 1) // female only - { - exp_a(f, i)(n_abins1, n_abins2) = 0.00; - } - else if (gen_a(f, i) == 2) // male only - { - exp_a(f, i)(1, n_abins) = 0.00; - } - else if (gen_a(f, i) == 3 && CombGender_A(f) > 0) - { - for (z = 1; z <= CombGender_A(f); z++) - { - exp_a(f, i, z) += exp_a(f, i, z + n_abins); - exp_a(f, i, z + n_abins) = 0.00; - } - } - } - exp_a(f, i) /= (1.0e-15 + sum(exp_a(f, i))); // proportion at binned age - - tails_w = ivector(tails_a(f, i)); - if (gen_a(f, i) != 2) - { - if (tails_w(1) > 1) - { - exp_a(f, i, tails_w(1)) = sum(exp_a(f, i)(1, tails_w(1))); - exp_a(f, i)(1, tails_w(1) - 1) = 0.; - } - if (tails_w(2) < n_abins) - { - exp_a(f, i, tails_w(2)) = sum(exp_a(f, i)(tails_w(2), n_abins)); - exp_a(f, i)(tails_w(2) + 1, n_abins) = 0.; - } - exp_a(f, i)(tails_w(1), tails_w(2)) += min_comp_A(f); - } - - if (gender == 2 && gen_a(f, i) >= 2) - { - if (tails_w(3) > n_abins1) - { - exp_a(f, i, tails_w(3)) = sum(exp_a(f, i)(n_abins1, tails_w(3))); - exp_a(f, i)(n_abins1, tails_w(3) - 1) = 0.; - } - if (tails_w(4) < n_abins2) - { - exp_a(f, i, tails_w(4)) = sum(exp_a(f, i)(tails_w(4), n_abins2)); - exp_a(f, i)(tails_w(4) + 1, n_abins2) = 0.; - } - exp_a(f, i)(tails_w(3), tails_w(4)) += min_comp_A(f); - } - - exp_a(f, i) /= (1.0e-15 + sum(exp_a(f, i))); - - if (header_a(f, i, 3) > 0 || save_for_report == 1) - { - if (Comp_Err_A(f) == 0) // multinomial - { - if (gen_a(f, i) != 2) - age_like(f, i) += Comp_logL_multinomial( nsamp_a(f, i), obs_a(f, i)(tails_w(1), tails_w(2)), exp_a(f, i)(tails_w(1), tails_w(2)) ); -// age_like(f, i) -= nsamp_a(f, i) * -// obs_a(f, i)(tails_w(1), tails_w(2)) * log(exp_a(f, i)(tails_w(1), tails_w(2))); - if (gen_a(f, i) >= 2 && gender == 2) - age_like(f, i) += Comp_logL_multinomial( nsamp_a(f, i), obs_a(f, i)(tails_w(3), tails_w(4)), exp_a(f, i)(tails_w(3), tails_w(4)) ); -// age_like(f, i) -= nsamp_a(f, i) * -// obs_a(f, i)(tails_w(3), tails_w(4)) * log(exp_a(f, i)(tails_w(3), tails_w(4))); - } - else if( (Comp_Err_A(f)==1) || (Comp_Err_A(f)==2) ) // dirichlet - { - /* from Thorson: NLL -= gammln(A) - gammln(ninput_t(t)+A) + sum(gammln(ninput_t(t)*extract_row(pobs_ta,t) + A*extract_row(pexp_ta,t))) - sum(lgamma(A*extract_row(pexp_ta,t))) \ - in option 1, dirichlet_Parm = Theta*n from equation (10) of Thorson et al. 2016 - in option 2, dirichlet_Parm = Beta from equation (4) of Thorson et al. 2016 - */ - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); - if (Comp_Err_A(f) == 1) - dirichlet_Parm *= nsamp_a(f, i); - // note: first term in equations (4) and (10) is calculated - // as offset_a in SS_prelim.tpl and already included in age_like - // now add second term which is only dependent on parameters and sample size - // second term in equations (4) and (10) which is only dependent on parameters and sample size - temp = gammln(dirichlet_Parm) - gammln(nsamp_a(f, i) + dirichlet_Parm); - // get female or combined sex logL - // final term in equations (4) and (10) - if (gen_a(f, i) != 2) { // so not male only - temp += Comp_logL_Dirichlet( nsamp_a(f, i), dirichlet_Parm, obs_a(f, i)(tails_w(1), tails_w(2)), exp_a(f, i)(tails_w(1), tails_w(2)) ); - } - // add male logL - if (gen_a(f, i) >= 2 && gender == 2) { - temp += Comp_logL_Dirichlet( nsamp_a(f, i), dirichlet_Parm, obs_a(f, i)(tails_w(3), tails_w(4)), exp_a(f, i)(tails_w(3), tails_w(4)) ); - } - age_like(f, i) -= temp; - } - } - else // MV_Tweedie - { - } - if (header_a(f, i, 3) > 0) - age_like_tot(f) += age_like(f, i); - } - } - } - if (do_once == 1) - echoinput << "Finished agecomp obj_fun " << age_like_tot << endl; - } - - // SS_Label_Info_25.6 #Fit to mean size@age - if (nobs_ms_tot > 0) - { - for (f = 1; f <= Nfleet; f++) - if ((Nobs_ms(f) > 0 && sizeage_lambda(f, k_phase) > 0.0) || save_for_report > 0) - { - for (j = 1; j <= N_suprper_ms(f); j++) - { - exp_a_temp.initialize(); - for (i = suprper_ms1(f, j); i <= suprper_ms2(f, j); i++) - { - exp_a_temp += exp_ms(f, i) * suprper_ms_sampwt(f, i); - } // combine across range of observations - for (i = suprper_ms1(f, j); i <= suprper_ms2(f, j); i++) - exp_ms(f, i) = exp_a_temp; // assign back to each original obs - } - - for (i = 1; i <= Nobs_ms(f); i++) - if (header_ms(f, i, 3) > 0) - { - for (b = 1; b <= n_abins2; b++) - { - if (obs_ms_n(f, i, b) > 0 && obs_ms(f, i, b) > 0) - { - sizeage_like(f) += 0.5 * square((obs_ms(f, i, b) - exp_ms(f, i, b)) / (exp_ms_sq(f, i, b) / obs_ms_n(f, i, b))) + sd_offset * log(exp_ms_sq(f, i, b) / obs_ms_n(f, i, b)); - // where: obs_ms_n(f,i,b)=sqrt(var_adjust(6,f)*obs_ms_n(f,i,b)); - } - } - } - } - if (do_once == 1) - echoinput << "Finished meanlength obj_fun " << sizeage_like << endl; - } - - // SS_Label_Info_25.7 #Fit to generalized Size composition - dvariable temp_logL; - if (SzFreq_Nmeth > 0) // have some sizefreq data - { - // create super-period expected values - for (j = 1; j <= N_suprper_SzFreq; j++) - { - a = suprper_SzFreq_start(j); // get observation index - SzFreq_exp(a) *= suprper_SzFreq_sampwt(a); // start creating weighted average - for (iobs = a + 1; iobs <= suprper_SzFreq_end(j); iobs++) - { - SzFreq_exp(a) += SzFreq_exp(iobs) * suprper_SzFreq_sampwt(iobs); - } // combine into the first obs of this superperiod - for (iobs = a + 1; iobs <= suprper_SzFreq_end(j); iobs++) - { - SzFreq_exp(iobs) = SzFreq_exp(a); - } // assign back to all obs - } - - SzFreq_like = -offset_Sz_tot; // initializes for each Sz_Method - for (iobs = 1; iobs <= SzFreq_totobs; iobs++) - { - if (SzFreq_obs_hdr(iobs, 3) > 0) - { - k = SzFreq_obs_hdr(iobs, 6); - f = abs(SzFreq_obs_hdr(iobs, 3)); - z1 = SzFreq_obs_hdr(iobs, 7); - z2 = SzFreq_obs_hdr(iobs, 8); - int Sz_method = SzFreq_obs1(iobs, 1); // sizecomp method - int logL_method = Comp_Err_Sz(Sz_method); - temp_logL = 0.0; - switch (logL_method) - { - case 0: // multinomial - { - temp_logL += Comp_logL_multinomial( SzFreq_sampleN(iobs), SzFreq_obs(iobs)(z1, z2), SzFreq_exp(iobs)(z1, z2)); - break; - } - case 1: // dirichlet with theta*n - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(Sz_method),1))) * SzFreq_sampleN(iobs); // theta * n - temp_logL -= gammln(dirichlet_Parm) - gammln( SzFreq_sampleN(iobs) + dirichlet_Parm ); - temp_logL -= Comp_logL_Dirichlet( SzFreq_sampleN(iobs), dirichlet_Parm, SzFreq_obs(iobs)(z1, z2), SzFreq_exp(iobs)(z1, z2)); - break; - } - case 2: // dirichlet with beta - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(Sz_method),1))); // beta - temp_logL -= gammln(dirichlet_Parm) - gammln( SzFreq_sampleN(iobs) + dirichlet_Parm ); - temp_logL -= Comp_logL_Dirichlet( SzFreq_sampleN(iobs), dirichlet_Parm, SzFreq_obs(iobs)(z1, z2), SzFreq_exp(iobs)(z1, z2)); - break; - } - case 3: // MV Tweedie - { - break; - } - } - SzFreq_like(SzFreq_LikeComponent(f, k)) += temp_logL; - SzFreq_eachlike(iobs) = value(temp_logL) - SzFreq_each_offset(iobs); - } - } - - if (do_once == 1) - echoinput << " did sizefreq obj_fun: " << SzFreq_like << " base: " << offset_Sz_tot << endl; - } - - // SS_Label_Info_25.8 #Fit to morph composition - if (Do_Morphcomp > 0) - { - for (iobs = 1; iobs <= Morphcomp_nobs; iobs++) - { - k = 5 + Morphcomp_nmorph; - if (Morphcomp_obs(iobs, 3) > 0.) - Morphcomp_like -= Morphcomp_obs(iobs, 5) * Morphcomp_obs(iobs)(6, k) * log(elem_div(Morphcomp_exp(iobs)(6, k), Morphcomp_obs(iobs)(6, k))); - } - if (do_once == 1) - echoinput << "Finished morphcomp obj_fun " << Morphcomp_like << endl; - } - - // SS_Label_Info_25.9 #Fit to tag-recapture - if (Do_TG > 0) - { - k = 1 + 2 * N_TG; - for (TG = 1; TG <= N_TG; TG++) - { - if (TG_use(TG) >= TG_min_recap) - { - j = TG + 2 * N_TG; - if (TG_parm_PH(j) == -1000.) - { - } // do nothing keep k at same value - else - { - if (TG_parm_PH(j) > -1000.) - { - k = j; - } - else - { - k = -1000 - TG_parm_PH(j) + 2 * N_TG; - } - } - overdisp = TG_parm(k); - for (TG_t = TG_mixperiod; TG_t <= TG_endtime(TG); TG_t++) - { - TG_recap_exp(TG, TG_t)(1, Nfleet) += 1.0e-6; // add a tiny amount - TG_recap_exp(TG, TG_t, 0) = sum(TG_recap_exp(TG, TG_t)(1, Nfleet)); - TG_recap_exp(TG, TG_t)(1, Nfleet) /= TG_recap_exp(TG, TG_t, 0); - if (Nfleet > 1) - TG_like1(TG) -= TG_recap_obs(TG, TG_t, 0) * (TG_recap_obs(TG, TG_t)(1, Nfleet) * log(TG_recap_exp(TG, TG_t)(1, Nfleet))); - TG_like2(TG) -= log_negbinomial_density(TG_recap_obs(TG, TG_t, 0), TG_recap_exp(TG, TG_t, 0), overdisp); - } - } - } - if (do_once == 1) - echoinput << "Finished tag obj_fun " << TG_like1 << endl - << TG_like2 << endl; - } - - /* - // SS_Label_Info_25.10 #Fit to initial equilibrium catch - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 1 && obs_equ_catch(s, f) > 0.0 && (init_equ_lambda(f, k_phase) > 0.0 || save_for_report > 0)) - { - equ_catch_like(f) += 0.5 * square((log(1.1 * obs_equ_catch(s, f)) - log(est_equ_catch(s, f) * catch_mult(styr - 1, f) + 0.1 * obs_equ_catch(s, f))) / catch_se(styr - 1, f)); - } - } - if (do_once == 1) - echoinput << " initequ_catch -log(L) " << equ_catch_like << endl; - */ - - // SS_Label_Info_25.11 #Fit to catch by fleet/season - if (F_Method > 1) // so not doing Pope's - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (fleet_type(f) == 1) // fleet has retained catch, so bypassing bycatch and predator fleets - { - i = 3 * catchunits(f); // because catchunits is 1 for bio and 2 for numbers - for (y = styr-1; y <= endyr; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas - 1 + s; - if (catch_ret_obs(f, t) > 0.0) - { - // catch_like(f) += 0.5*square( (log(catch_ret_obs(f,t)) -log(catch_fleet(t,f,i)+0.000001)) / catch_se(t,f)); - temp = 0.5 * square((log(1.1 * catch_ret_obs(f, t)) - log(catch_fleet(t, f, i) * catch_mult(y, f) + 0.1 * catch_ret_obs(f, t))) / catch_se(t, f)); - if (y == styr - 1) - {equ_catch_like(f) += temp;} - else - {catch_like(f) += temp;} -// echoinput<0) - // for (i=styr_rec+1;i<=endyr;i++) - // rec_like(1) += square((chi(i)- rho*chi(i-1)) /(sqrt(1.-rho*rho))) / (2.*sigmaRsq) + log(sigr); - // else - // rec_like(1) = (norm2( chi + sigmaRsq/2. ) / (2*sigmaRsq)) / (2.*sigmaRsq) + size_count(chi)*log(sigr); - - if ((recrdev_lambda(k_phase) > 0.0 || save_for_report > 0) && (do_recdev > 0 || recdev_do_early > 0)) - { - recr_like = sd_offset_rec * log(sigmaR); - // where sd_offset_rec takes account for the number of recruitment years fully estimated - // this is calculated as the sum of the biasadj vector - if (do_recdev < 3) - { - if (SR_autocorr == 0) - { - recr_like += norm2(recdev(recdev_first, recdev_end)) / two_sigmaRsq; - } - else - { - rho = SRparm(N_SRparm2); - recr_like += square(recdev(recdev_first)) / two_sigmaRsq; - for (y = recdev_first + 1; y <= recdev_end; y++) - { - recr_like += square(recdev(y) - rho * recdev(y - 1)) / ((1.0 - rho * rho) * two_sigmaRsq); - } - } - sum_recdev = sum(recdev); - } - else - { - rho = SRparm(N_SRparm2); - dvariable dev; - dvariable dev_last; - if (recdev_first >= styr) - { - dev_last = log(exp_rec(recdev_first, 4) / exp_rec(recdev_first, 3)); - } - else - { - dev_last = recdev(recdev_first); // so use devs for initial agecomp directly - } - recr_like += square(dev_last) / two_sigmaRsq; - sum_recdev = dev_last; - for (y = recdev_first + 1; y <= recdev_end; y++) - { - if (y >= styr) - { - dev = log(exp_rec(y, 4) / exp_rec(y, 3)); - } - else - { - dev = recdev(y); // so use devs for initial agecomp directly - } - recr_like += square(dev - rho * dev_last) / ((1.0 - rho * rho) * two_sigmaRsq); - dev_last = dev; - sum_recdev += dev; // get sum of devs - } - } - noBias_recr_like = recr_like - sd_offset_rec * log(sigmaR) + (recdev_end - recdev_first + 1.) * log(sigmaR); - regime_like = 0.5 * square(log(R1 / R1_exp) / (sigmaR / ave_age)); - if (do_recdev == 4) - regime_like += square(sum_recdev); - if (do_once == 1) - echoinput << "Finished recruitdev obj_fun " << recr_like << " " << sd_offset_rec << " " << two_sigmaRsq << endl; - } - if (Do_Forecast > 0 && do_recdev > 0) - { - if (recdev_end < endyr) - { - Fcast_recr_like = Fcast_recr_lambda * (norm2(Fcast_recruitments(recdev_end + 1, endyr))) / two_sigmaRsq; - // Fcast_recr_like += sd_offset_fore*log(sigmaR); this is now part of the recr_liker logL calculated above - } - if (SR_autocorr == 0) - { - Fcast_recr_like += (norm2(Fcast_recruitments(endyr + 1, YrMax))) / two_sigmaRsq; - } - else - { - Fcast_recr_like += square(Fcast_recruitments(recdev_end + 1) - rho * recdev(recdev_end)) / ((1.0 - rho * rho) * two_sigmaRsq); // for the transition year - for (y = recdev_end + 2; y <= YrMax; y++) - { - Fcast_recr_like += square(Fcast_recruitments(y) - rho * Fcast_recruitments(y - 1)) / ((1.0 - rho * rho) * two_sigmaRsq); - } - } - } - if (Do_Impl_Error > 0) - Fcast_recr_like += (norm2(Fcast_impl_error(endyr + 1, YrMax))) / (2.0 * Impl_Error_Std * Impl_Error_Std); // implementation error - - // SS_Label_Info_25.13 #Penalty for the parameter priors - dvariable mu; - dvariable tau; - dvariable Aprior; - dvariable Bprior; - dvariable Pconst; - Pconst = 0.0001; - - if (parm_prior_lambda(k_phase) > 0.0 || Do_all_priors > 0 || save_for_report > 0) - { - for (i = 1; i <= N_MGparm2; i++) - if (MGparm_PRtype(i) > 0 && (active(MGparm(i)) || Do_all_priors > 0)) - { - MGparm_Like(i) = Get_Prior(MGparm_PRtype(i), MGparm_LO(i), MGparm_HI(i), MGparm_PR(i), MGparm_CV(i), MGparm(i)); - parm_like += MGparm_Like(i); - } - for (i = 1; i <= N_init_F; i++) - if (init_F_PRtype(i) > 0 && (active(init_F(i)) || Do_all_priors > 0)) - { - init_F_Like(i) = Get_Prior(init_F_PRtype(i), init_F_LO(i), init_F_HI(i), init_F_PR(i), init_F_CV(i), init_F(i)); - parm_like += init_F_Like(i); - } - - for (i = 1; i <= Q_Npar2; i++) - if (Q_parm_PRtype(i) > 0 && (active(Q_parm(i)) || Do_all_priors > 0)) - { - Q_parm_Like(i) = Get_Prior(Q_parm_PRtype(i), Q_parm_LO(i), Q_parm_HI(i), Q_parm_PR(i), Q_parm_CV(i), Q_parm(i)); - parm_like += Q_parm_Like(i); - } - - for (i = 1; i <= N_selparm2; i++) - if (selparm_PRtype(i) > 0 && (active(selparm(i)) || Do_all_priors > 0)) - { - selparm_Like(i) = Get_Prior(selparm_PRtype(i), selparm_LO(i), selparm_HI(i), selparm_PR(i), selparm_CV(i), selparm(i)); - parm_like += selparm_Like(i); - } - if (Do_TG > 0) - { - k = 3 * N_TG + 2 * Nfleet1; - for (i = 1; i <= k; i++) - if (TG_parm2(i, 5) > 0 && (active(TG_parm(i)) || Do_all_priors > 0)) - { - TG_parm_Like(i) = Get_Prior(TG_parm2(i, 6), TG_parm_LO(i), TG_parm_HI(i), TG_parm2(i, 4), TG_parm2(i, 5), TG_parm(i)); - parm_like += TG_parm_Like(i); - } - } - - for (i = 1; i <= N_SRparm3; i++) - if (SRparm_PRtype(i) > 0 && (active(SRparm(i)) || Do_all_priors > 0)) - { - SRparm_Like(i) = Get_Prior(SRparm_PRtype(i), SRparm_LO(i), SRparm_HI(i), SRparm_PR(i), SRparm_CV(i), SRparm(i)); - parm_like += SRparm_Like(i); - } - // SS_Label_Info_25.14 #logL for recdev_cycle - if (recdev_cycle > 0) - { - temp = 0.0; - temp1 = 0.0; - for (i = 1; i <= recdev_cycle; i++) - { - if (recdev_cycle_parm_RD(i, 5) > 0 && (active(recdev_cycle_parm(i)) || Do_all_priors > 0)) - { - recdev_cycle_Like(i) = Get_Prior(recdev_cycle_parm_RD(i, 6), recdev_cycle_parm_RD(i, 1), recdev_cycle_parm_RD(i, 2), recdev_cycle_parm_RD(i, 4), recdev_cycle_parm_RD(i, 5), recdev_cycle_parm(i)); - parm_like += recdev_cycle_Like(i); - temp += mfexp(recdev_cycle_parm(i)); // accumulate values that should each be near 1.0 if there is no cycle effect - temp1 += 1.0; // accumulate N - } - } - temp -= temp1; // should be near zero - parm_like += 10000. * temp * temp; // similar to ADMB's approach to getting zero-centered dev_vectors - } - } - // SS_Label_Info_25.15 #logL for parameter process errors (devs) - { - for (i = 1; i <= N_parm_dev; i++) - { - if (parm_dev_lambda(k_phase) > 0.0 || save_for_report > 0) - { - if (parm_dev_type(i) == 1) // in timevary the adjusted parm is: p'=p+dev*se; so assumes that the devs are distributed as unit normal - { - dvariable temp; - if (parm_dev_use_rho(i) == 0) // no rho - { - temp = 0.5; // temp=1.00 / (2.000*square(1.0)); - parm_dev_like(i, 1) = square(parm_dev(i, parm_dev_minyr(i))); // first year - for (j = parm_dev_minyr(i) + 1; j <= parm_dev_maxyr(i); j++) - { - parm_dev_like(i, 1) += square(parm_dev(i, j)); - } - } - else - { - temp = 0.5 / ((1.0 - parm_dev_rho(i) * parm_dev_rho(i))); // temp=1.00 / (2.000*(1.0-parm_dev_rho(i)*parm_dev_rho(i))*square(1.0)); - parm_dev_like(i, 1) += square(parm_dev(i, parm_dev_minyr(i))); // first year - for (j = parm_dev_minyr(i) + 1; j <= parm_dev_maxyr(i); j++) - { - parm_dev_like(i, 1) += square(parm_dev(i, j) - parm_dev_rho(i) * (parm_dev(i, j - 1))); - } - } - parm_dev_like(i, 1) *= temp; - parm_dev_like(i, 2) = 0.0; // += float(parm_dev_maxyr(i)-parm_dev_minyr(i)+1.)*log(1.0); - // parm_dev_like(i,2), is included in the total parm_dev_like by user setting: sd_offset=1.0 - } - else if (parm_dev_type(i) == 3) // for testing only and compatibility with 3.30.12 and earlier 3.30 - { - dvariable temp; - temp = 1.00 / (2.000 * (1.0 - parm_dev_rho(i) * parm_dev_rho(i)) * square(1.00)); - parm_dev_like(i, 1) += square(parm_dev(i, parm_dev_minyr(i))); // first year - for (j = parm_dev_minyr(i) + 1; j <= parm_dev_maxyr(i); j++) - { - parm_dev_like(i, 1) += square(parm_dev(i, j) - parm_dev_rho(i) * parm_dev(i, j - 1)); - } - parm_dev_like(i, 1) *= temp; - parm_dev_like(i, 2) += float(parm_dev_maxyr(i) - parm_dev_minyr(i) + 1.) * log(parm_dev_stddev(i)); - // include parm_dev_like(i,2) in the total, or not, using sd_offset - } - else if (parm_dev_type(i) == 4) // for testing only - { - dvariable temp; - temp = 0.5 / ((1.0 - parm_dev_rho(i) * parm_dev_rho(i))); // temp=1.00 / (2.000*(1.0-parm_dev_rho(i)*parm_dev_rho(i))*square(1.0)); - parm_dev_like(i, 1) += square(parm_dev(i, parm_dev_minyr(i))); // first year - for (j = parm_dev_minyr(i) + 1; j <= parm_dev_maxyr(i); j++) - { - parm_dev_like(i, 1) += square(parm_dev(i, j) - parm_dev_rho(i) * (parm_dev(i, j - 1))); - } - parm_dev_like(i, 1) *= temp; - parm_dev_like(i, 2) = square(10. * (1.0 - (sumsq(parm_dev(i) + 1.0e-9) / float(parm_dev_maxyr(i) - parm_dev_minyr(i) + 1.)))); - } - else // 2D_AR devs - { -// TwoD_AR_def: 1-fleet, 2-ymin, 3-ymax, 4-amin, 5-amax, 6-sigma_amax, 7-use_rho, 8-age/len, 9-dev_phase -// 10-mindimension, 11=maxdim, 12-N_parm_dev, 13-selparm_location - - f = parm_dev_info(i); // pointer from list of devvectors to 2DAR list - dvariable sigmasel = selparm(TwoD_AR_def[f](13)); - parm_dev_stddev(i) = sigmasel; - parm_dev_rho(i) = 0.0; - parm_dev_like(i, 1) -= -0.5 * log(det_cor(f)); - if (TwoD_AR_def[f](6) <= TwoD_AR_def[f](4)) // only one sigmasel by age - { - // nll -= - 0.5*log(det(cor)) - 0.5*nages*nyears*log(2.0*PI ) - 0.5*S_hat_vec*inv(cor)*S_hat_vec/pow(sigmaS,2) - 0.5*2*nages*nyears*log(sigmaS); - if (TwoD_AR_def[f](7) == 0) // do not use rho - { - parm_dev_like(i, 1) -= -0.5 * TwoD_AR_degfree(f) * log(2.0 * PI) - 0.5 * sumsq(parm_dev(i)) / pow(sigmasel, 2); - parm_dev_like(i, 2) -= -TwoD_AR_degfree(f) * log(sigmasel); - } - else - { - parm_dev_like(i, 1) -= -0.5 * TwoD_AR_degfree(f) * log(2.0 * PI) - 0.5 * parm_dev(i) * inv_cor(f) * parm_dev(i) / pow(sigmasel, 2); - parm_dev_like(i, 2) -= -TwoD_AR_degfree(f) * log(sigmasel); - } - } - else // some age-specific sigmasel - // note that devs are organized as list with age nested within year - { - int devcnt; - for (a = TwoD_AR_def[f](4); a <= TwoD_AR_def[f](5); a++) - { - dvariable sigmasel = selparm(TwoD_AR_def[f](13) + min(a, TwoD_AR_def[f](6)) - TwoD_AR_def[f](4)); - dvariable degfree = TwoD_AR_degfree(f) / (TwoD_AR_def[f](5) - TwoD_AR_def[f](4) + 1.0); // df per age - // if(TwoD_AR_def[f](7)==0) // do not use rho - { - parm_dev_like(i, 1) -= -0.5 * degfree * log(2.0 * PI); - parm_dev_like(i, 2) -= -degfree * log(sigmasel); - temp = 0.0; - devcnt = a - TwoD_AR_def[f](4) + 1.0; // dev counter in first year - j = TwoD_AR_def[f](5) - TwoD_AR_def[f](4) + 1; // n ages - for (int y = TwoD_AR_def[f](2); y <= TwoD_AR_def[f](3); y++) - { - temp += square(parm_dev(i, devcnt)); // ignore rho for now; need indexing for inv_cor() - devcnt += j; - } - parm_dev_like(i, 1) -= -0.5 * temp / (sigmasel * sigmasel); - } - } - // nll -= - 0.5*log(det(cor)) - 0.5*nages*nyears*log(2.0*PI ) - 0.5*S_hat_vec*inv(cor)*S_hat_vec/pow(sigmaS,2) - 0.5*2*nages*nyears*log(sigmaS); - } - } - } - } - } - - for (f = 1; f <= Nfleet; f++) - if (Q_setup(f, 4) == 3) - { - // parm_dev_like += Q_dev_like(f,1); // mean component for dev approach (var component is already in the parm priors) - // do not include for randwalk (Qsetup==4) - } - - // SS_Label_Info_25.16 #Penalty for F_ballpark - if (F_ballpark_yr >= styr) - { - if (F_Method == 1) - { - temp = annual_F(F_ballpark_yr, 1); - } - else - { - temp = annual_F(F_ballpark_yr, 2); - } - // in future, could allow specification of a range of years for averaging the F statistic - F_ballpark_like = 0.5 * square(log((F_ballpark + 1.0e-6) / (temp + 1.0e-6)) / 1.0) + sd_offset * log(1.0); - } - else - { - F_ballpark_like = 0.0; - } - - // SS_Label_Info_25.17 #Penalty for soft boundaries, uses the symmetric beta prior code - if (SoftBound > 0) - { - for (i = 1; i <= N_selparm2; i++) - { - if (selparm_PH_soft(i) > 0) - { - SoftBoundPen += Get_Prior(1, selparm_LO(i), selparm_HI(i), 1., 0.001, selparm(i)); - } - } - } - - // SS_Label_Info_25.18 #Crash penalty - // CrashPen = square(1.0+CrashPen)-1.0; this was used until V3.00L 7/10/2008 - CrashPen = square(1.0 + (1000. * CrashPen / (1000. + CrashPen))) - 1.0; - // SS_Label_Info_25.19 #Sum the likelihood components weighted by lambda factors - // cout<<" obj_fun start "< 0) - obj_fun += SzFreq_like * column(SzFreq_lambda, k_phase); - // cout<<" obj_fun sizefreq "< 0) - obj_fun += Morphcomp_lambda(k_phase) * Morphcomp_like; - if (Do_TG > 0 && Nfleet > 1) - obj_fun += TG_like1 * column(TG_lambda1, k_phase); - if (Do_TG > 0) - obj_fun += TG_like2 * column(TG_lambda2, k_phase); - // cout<<" obj_fun final "< 2.0) - { - warnstream << "1st iteration warning: annual F in endyr > 2.0; check configuration; suggest start with larger R0"; - write_message (WARN, 0); - } - if (sum(catch_like) > 0.5 * obj_fun && F_Method != 2) - { - warnstream << "1st iteration warning: catch logL > 50% total logL; check configuration; suggest start with larger R0"; - write_message (WARN, 0); - } - do_once = 0; - } - } // end objective_function - -//******************************************************************** - /* SS_Label_FUNCTION 26 Process_STDquant */ -FUNCTION void Process_STDquant() - { - for (y = styr - 2; y <= YrMax; y++) - { - if (STD_Yr_Reverse(y) > 0) - { - SSB_std(STD_Yr_Reverse(y)) = SSB_yr(y); - recr_std(STD_Yr_Reverse(y)) = exp_rec(y, 4); - } - if (STD_Yr_Reverse_Dep(y) > 0) - { - depletion(STD_Yr_Reverse_Dep(y)) = SSB_yr(y); - } - } - - switch (SPR_reporting) - { - case 0: // no scaling. this option skips SPR_reporting - { - break; - } - case 1: // compare to SPR - { - // SPR_std = (1.-SPR_std)/(1.-SPR_actual); - SPR_std = (1. - SPR_std) / (1. - SPR_target); - break; - } - case 2: // compare to SPR_MSY - { - SPR_std = (1. - SPR_std) / (1. - MSY_SPR); - break; - } - case 3: // compare to SPR_Btarget - { - SPR_std = (1. - SPR_std) / (1. - SPR_Btgt); - break; - } - case 4: // 1-%SPR - { - SPR_std = 1. - SPR_std; - break; - } - case 5: // raw %SPR - { - break; - } - } - - switch (depletion_basis) - { - case 0: - { - depletion /= SSB_virgin; - break; - } - case 1: - { - depletion /= (depletion_level * SSB_virgin); - Mgmt_quant(19) = SSB_virgin; - break; - } - case 2: - { - depletion /= (depletion_level * Bmsy); - Mgmt_quant(19) = Bmsy; - break; - } - case 3: - { - depletion /= (depletion_level * SSB_yr(styr)); - Mgmt_quant(19) = SSB_yr(styr); - break; - } - case 4: - { - depletion /= (depletion_level * SSB_yr(endyr)); - Mgmt_quant(19) = SSB_yr(endyr); - break; - } - case 5: // dynamic Bzero - { - for (y = first_catch_yr; y <= YrMax; y++) - if (STD_Yr_Reverse_Dep(y) > 0) - { -// warning< 1) - { - for (y = endyr; y >= first_catch_yr + 1; y--) - { - temp = depletion(STD_Yr_Reverse_Dep(y)); // initialize - for (y1 = y - 1; y1 > max(first_catch_yr, y - depletion_multi); y1--) - { - temp += depletion(STD_Yr_Reverse_Dep(y1)); - } - depletion(STD_Yr_Reverse_Dep(y)) = temp / (y - y1); - } - } - - // Use the selected F method for the forecast as the denominator for the F_std ratio - switch (F_std_basis) - { - case 0: // keep as raw value - { - break; - } - case 1: // compare to SPR - { - F_std /= Mgmt_quant(10); - break; - } - case 2: // compare to SPR_MSY - { - F_std /= Mgmt_quant(14); - break; - } - case 3: // compare to SPR_Btarget - { - F_std /= Mgmt_quant(7); - break; - } - } - if (F_std_log == 1) - F_std = log(F_std); - - // Do multi-year average of F_std if requested; assumes that F_std is NOT custom, so exists for all years - // otherwise, would need to check for positive value for STD_Yr_Reverse_F(y) and need to deal with averaging across not-reporting years = MESSY - // note that averaging starts in endyr, not endyr+N_forecast; otherwise the averaging could span endyr. - if (F_std_multi > 1) - { - for (y = endyr; y >= styr + 1; y--) - { - temp = F_std(STD_Yr_Reverse_F(y)); // initialize - for (y1 = y - 1; y1 > max(styr, y - F_std_multi); y1--) - { - temp += F_std(STD_Yr_Reverse_F(y1)); - } - F_std(STD_Yr_Reverse_F(y)) = temp / (y - y1); - } - } - - // SS_Label_7.8 get extra std quantities - // selectivity - // f = Do_Selex_Std - if (Selex_Std_Cnt > 0) - { - for (i = 1; i <= Selex_Std_Cnt; i++) - { - j = Selex_Std_Pick(i); - if (Selex_Std_AL == 1) - { - Extra_Std(i) = sel_l(Selex_Std_Year, Do_Selex_Std, 1, j); - if (gender == 2) - Extra_Std(i + Selex_Std_Cnt) = sel_l(Selex_Std_Year, Do_Selex_Std, 2, j); - } - else if (Selex_Std_AL == 2) - { - Extra_Std(i) = sel_a(Selex_Std_Year, Do_Selex_Std, 1, j); - if (gender == 2) - Extra_Std(i + Selex_Std_Cnt) = sel_a(Selex_Std_Year, Do_Selex_Std, 2, j); - } - else if (Selex_Std_AL == 3) - { - // 4darray sel_num(1,nseas,1,gmorph,1,Nfleet,0,nages); // selected numbers - // 4darray save_sel_num(styr-3*nseas,TimeMax_Fcast_std+nseas,0,Nfleet,1,gmorph,0,nages) // save sel_num (Asel_2) and save fecundity for output; +nseas covers no forecast setups - - int t_write = styr + (Selex_Std_Year - styr) * nseas; // season 1 of selected year - g = g_Start(1) + N_platoon; // mid morph for first GP for females - Extra_Std(i) = save_sel_num(t_write, Do_Selex_Std, g, j); - if (gender == 2) - { - g = g_Start(1 + N_GP) + N_platoon; // mid morph for first GP for males - Extra_Std(i + Selex_Std_Cnt) = save_sel_num(t_write, Do_Selex_Std, g, j); - } - } - } - } - - // growth - if (Growth_Std_Cnt > 0) - { - int t_write = styr + (endyr - styr) * nseas; // season 1 of endyr - for (i = 1; i <= Growth_Std_Cnt; i++) - { - j = Growth_Std_Pick(i); // selected age - k = g_finder(Do_Growth_Std, 1); // selected GP and gender gp3 - Extra_Std(gender * Selex_Std_Cnt + i) = Ave_Size(t_write, mid_subseas, k, j); - if (gender == 2) - { - k = g_finder(Do_Growth_Std, 2); // selected GP and gender gp3 - Extra_Std(gender * Selex_Std_Cnt + Growth_Std_Cnt + i) = Ave_Size(t_write, mid_subseas, k, j); - } - } - } - - // numbers at age - if (NatAge_Std_Cnt > 0) - { - if (Do_NatAge_Std < 0) // sum all areas - { - p1 = 1; - p2 = pop; - } - else // selected area - { - p1 = Do_NatAge_Std; - p2 = Do_NatAge_Std; - } - y = NatAge_Std_Year; - t = styr + (y - styr) * nseas; // first season of selected year - for (i = 1; i <= NatAge_Std_Cnt; i++) - { - a = NatAge_Std_Pick(i); // selected age - temp = 0.; - for (p = p1; p <= p2; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 1 && use_morph(g) > 0) - { - temp += natage(t, p, g, a); // note, uses season 1 only - } - } - Extra_Std(gender * (Selex_Std_Cnt + Growth_Std_Cnt) + i) = temp; - if (gender == 2) - { - temp = 0.; - for (p = p1; p <= p2; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == 2 && use_morph(g) > 0) - { - temp += natage(t, p, g, a); // note, uses season 1 only - } - } - Extra_Std(gender * (Selex_Std_Cnt + Growth_Std_Cnt) + NatAge_Std_Cnt + i) = temp; - } - } - } - - // NatM - // shortcut natM( doing area 1 only - if (NatM_Std_Cnt > 0) - { - t = styr + (endyr - styr) * nseas; // first season of selected year - for (i = 1; i <= NatM_Std_Cnt; i++) - { - j = NatM_Std_Pick(i); // selected age - k = g_finder(Do_NatM_Std, 1); // selected GP and gender gp3 - Extra_Std(gender * (Selex_Std_Cnt + Growth_Std_Cnt + NatAge_Std_Cnt) + i) = natM(t, 1, k, j); - if (gender == 2) - { - k = g_finder(Do_NatM_Std, 2); // selected GP and gender gp3 - Extra_Std(gender * (Selex_Std_Cnt + Growth_Std_Cnt + NatAge_Std_Cnt) + NatM_Std_Cnt + i) = natM(t, 1, k, j); - } - } - } - - // ln(SSB) - Extra_Std(Do_se_LnSSB) = log(SSB_yr(styr)); - Extra_Std(Do_se_LnSSB + 1) = log(SSB_yr(int((styr + endyr) / 2))); - Extra_Std(Do_se_LnSSB + 2) = log(SSB_yr(endyr)); - - if (Do_se_smrybio > 0) // do stderr of SmryBio - { - k = Do_se_smrybio; - for (j = styr - 2; j <= YrMax; j++) - { - Extra_Std(k) = Smry_Table(j, 2); - k++; - } - } - - if (Svy_N > 0) - { - int Svy_sdreport_counter = 1; - for (f = 1; f <= Nfleet; f++) - { - if (Svy_sdreport(f) > 0) - { - for (i = 1; i <= Svy_N_fleet(f); i++) - { - Svy_sdreport_est(Svy_sdreport_counter) = Svy_est(f, i); - ++Svy_sdreport_counter; - } - } - } - } - } - -//******************************************************************** - /* SS_Label_FUNCTION 27 Check_Parm */ -FUNCTION dvariable Check_Parm(const int iparm, const int& PrPH, const double& Pmin, const double& Pmax, const int& Prtype, const double& Pr, const double& Psd, const double& jitter, const prevariable& Pval) - { - RETURN_ARRAYS_INCREMENT(); - const double bound = 0.001; - const dvariable zmin = inv_cumd_norm(bound); // z value for Pmin - const dvariable zmax = inv_cumd_norm((1.0 - bound)); // z value for Pmax - const dvariable Pmean = (Pmin + Pmax) / 2.0; - dvariable NewVal; - // dvariable temp; - dvariable Psigma, zval, kval, kjitter, zjitter, temp; - - NewVal = Pval; - if (Pval > -900) - { - if (Pmin > Pmax) - { - warnstream << "parameter min > parameter max " << Pmin << " > " << Pmax << " for parm: " << iparm; - write_message(FATAL, 1); // EXIT! - } - else if (Pmin == Pmax && PrPH >= 0) - { - warnstream << "parameter min is same as parameter max: " << Pmin << " = " << Pmax << " for parm: " << iparm ; - write_message (WARN, 1); - } - else if (Pval < Pmin) - { - warnstream << "parameter init value is less than parameter min " << Pval << " < " << Pmin << " for parm: " << iparm; - write_message (WARN, 1); - if (Prtype > 0) - exit(1); - } - else if (Pval > Pmax) - { - warnstream << "parameter init value is greater than parameter max " << Pval << " > " << Pmax << " for parm: " << iparm; - write_message (WARN, 1); - if (Prtype > 0) - exit(1); - } - - if (jitter > 0.0 && PrPH >= 0) - { - if ((Pmin <= -99 || Pmax >= 999)) - { - warnstream << "jitter not done unless parameter min & max are in reasonable parameter range " << Pmin << " " << Pmax; - write_message (WARN, 0); - } - else - { - // generate jitter value from cumulative normal given Pmin and Pmax - Psigma = (Pmax - Pmean) / zmax; // Psigma should also be equal to (Pmin - Pmean) / zmin; - if (Psigma < 0.00001) // how small a sigma is too small? - { - warnstream << "in Check_Parm jitter: Psigma < 0.00001 " << Psigma; - write_message (FATAL, 0); // EXIT! - } - zval = (Pval - Pmean) / Psigma; // current parm value converted to zscore - kval = cumd_norm(zval); - temp = randu(radm); - kjitter = kval + (jitter * ((2.00 * temp) - 1.)); // kjitter is between kval - jitter and kval + jitter - if (kjitter < bound) - { - NewVal = Pmin + 0.1 * (Pval - Pmin); - } - else if (kjitter > (1.0 - bound)) - { - NewVal = Pmax - 0.1 * (Pmax - Pval); - } - else - { - zjitter = inv_cumd_norm(kjitter); - NewVal = (Psigma * zjitter) + Pmean; - } - echoinput << "jitter (min, max, old, new): " << Pmin << " " << Pmax << " " << Pval << " " << NewVal << endl; - } - } - // now check prior - if (Prtype > 0) - { - if (Psd <= 0.0) - { - warnstream << "A prior is selected but prior sd is zero. Prtype: " << Prtype << " Prior: " << Pr << " Pr_sd: " << Psd << " for parm: " << iparm << " ; see echoinput for parm_type"; - write_message (FATAL, 0); // EXIT! - } - if (PrPH < 0) - { - prior_ignore_warning++; - } - } - } - else - { - // checking ignored for inputs that are special codes - } - - RETURN_ARRAYS_DECREMENT(); - return NewVal; - } - -//******************************************************************** - /* SS_Label_FUNCTION 29 Get_Prior */ -FUNCTION dvariable Get_Prior(const int T, const double& Pmin, const double& Pmax, const double& Pr, const double& Psd, const prevariable& Pval) - { - RETURN_ARRAYS_INCREMENT(); - dvariable Prior_Like = 0.; - dvariable mu; - dvariable tau; - dvariable Pconst = 0.0001; - dvariable Bprior; - dvariable Aprior; - switch (T) - { - case 0: // none - { - Prior_Like = 0.; - break; - } - case 6: // normal - { - Prior_Like = 0.5 * square((Pval - Pr) / Psd); - break; - } - case 1: // symmetric beta value of Psd must be >0.0 - { - mu = -(Psd * (log((Pmax + Pmin) * 0.5 - Pmin))) - (Psd * (log(0.5))); - Prior_Like = -(mu + (Psd * (log(Pval - Pmin + Pconst))) + (Psd * (log(1. - ((Pval - Pmin - Pconst) / (Pmax - Pmin)))))); - break; - } - case 2: // CASAL's Beta; check to be sure that Aprior and Bprior are OK before running SS2! - { - mu = (Pr - Pmin) / (Pmax - Pmin); // CASAL's v - tau = (Pr - Pmin) * (Pmax - Pr) / square(Psd) - 1.0; - Bprior = tau * mu; - Aprior = tau * (1.0 - mu); // CASAL's m and n - if (Bprior <= 1.0 || Aprior <= 1.0) - { - warnstream << "Bad Beta prior " << Pval << " " << Pr; - write_message (WARN, 0); - } - Prior_Like = (1.0 - Bprior) * log(Pconst + Pval - Pmin) + (1.0 - Aprior) * log(Pconst + Pmax - Pval) - (1.0 - Bprior) * log(Pconst + Pr - Pmin) - (1.0 - Aprior) * log(Pconst + Pmax - Pr); - break; - } - case 3: // lognormal without bias correction - { - if (Pmin > 0.0) - { - Prior_Like = 0.5 * square((log(Pval) - Pr) / Psd); - } - else - { - warnstream << "Cannot do prior in log space for parm with min <=0.0" ; - write_message (WARN, 0); - } - break; - } - case 4: //lognormal with bias correction (from Larry Jacobson) - { - if (Pmin > 0.0) - Prior_Like = 0.5 * square((log(Pval) - Pr + 0.5 * square(Psd)) / Psd); - else - { - warnstream << "Cannot do prior in log space for parm with min <=0.0"; - write_message (WARN, 0); - } - break; - } - case 5: //gamma (from Larry Jacobson) - { - double warnif = 1e-15; - if (Pmin < 0.0) - { - warnstream << "Lower bound for gamma prior must be >=0. Suggest " << warnif * 10.0; - write_message (WARN, 0); - } - else - { - //Gamma is defined over [0,+inf) but x=zero causes trouble for some mean/variance combos. - if (Pval < warnif) - { - warnstream << "Pval too close to zero in gamma prior - can not guarantee reliable calculations. Suggest rescaling data (e.g. * 1000)? "; - write_message (WARN, 0); - } - else - { - dvariable scale = square(Psd) / Pr; // gamma parameters by method of moments - dvariable shape = Pr / scale; - Prior_Like = -1 * (-shape * log(scale) - gammln(shape) + (shape - 1.0) * log(Pval) - Pval / scale); - } - } - break; - } - } - RETURN_ARRAYS_DECREMENT(); - return Prior_Like; - } - -FUNCTION void get_posteriors() - { - //******************************************************************** - /* SS_Label_FUNCTION 33 get_posteriors (MCMC eval) */ - if (rundetail > 1) - { - cout << "mceval counter: " << mceval_counter << endl; - } - if (rundetail == 0 && double(mceval_counter) / 200. == double(mceval_counter / 200.)) - { - cout << "mceval counter: " << mceval_counter << endl; - } - if (mceval_header == 0 && mceval_phase()) // first pass through the mceval phase - { - // delete any old mcmc output files - // will generate a warning if no files exist - // but will play through just fine - // NOTE: "del" works on Windows only; use "rm" on other operating systems - // solution here is to open file to the first record - rebuilder.open(sso_pathname + "rebuild.sso", ios::out); - posts.open(sso_pathname + "posteriors.sso", ios::out); - der_posts.open(sso_pathname + "derived_posteriors.sso", ios::out); - post_vecs.open(sso_pathname + "posterior_vectors.sso", ios::out); - post_obj_func.open(sso_pathname + "posterior_obj_func.sso", ios::out); - } - else - { - // define the mcmc output files; - rebuilder.open(sso_pathname + "rebuild.sso", ios::app); - posts.open(sso_pathname + "posteriors.sso", ios::app); - der_posts.open(sso_pathname + "derived_posteriors.sso", ios::app); - post_vecs.open(sso_pathname + "posterior_vectors.sso", ios::app); - post_obj_func.open(sso_pathname + "posterior_obj_func.sso", ios::app); - } - - if (mceval_header == 0) // first pass through the mceval phase - { - mceval_header = 1; - // produce the appropriate headers for the posteriors.rep - // and derived_posteriors.rep files - // parameters.rep matches "PARAMETERS" section in Report.SSO file - posts << "Iter Objective_function "; - for (i = 1; i <= active_count; i++) - { - posts << " " << ParmLabel(active_parm(i)); - } - posts << endl; - - // derived quantities - // derived_parameters.rep matches "DERIVED_PARAMETERS" section in Report.SSO file - NP = ParCount; - der_posts << "Iter Objective_function "; - for (j = 1; j <= N_STD_Yr; j++) // spawning biomass - { - NP++; - der_posts << ParmLabel(NP) << " "; - } - for (j = 1; j <= N_STD_Yr; j++) // recruitment - { - NP++; - der_posts << ParmLabel(NP) << " "; - } - for (j = 1; j <= N_STD_Yr_Ofish; j++) // SPRratio - { - NP++; - der_posts << ParmLabel(NP) << " "; - } - for (j = 1; j <= N_STD_Yr_F; j++) // F - { - NP++; - der_posts << ParmLabel(NP) << " "; - } - for (j = 1; j <= N_STD_Yr_Dep; j++) // depletion (Bratio) - { - NP++; - der_posts << ParmLabel(NP) << " "; - } - for (j = 1; j <= N_STD_Mgmt_Quant; j++) // Management quantities - { - NP++; - der_posts << ParmLabel(NP) << " "; - } - for (j = 1; j <= Extra_Std_N; j++) - { - NP++; - der_posts << ParmLabel(NP) << " "; - } - der_posts << endl; - if (depletion_basis != 2) - post_vecs << "depletion_basis_is_not_=2;_so_info_below_is_not_B/Bmsy" << endl; - if (F_std_basis != 2) - post_vecs << "F_std_basis_is_not_=2;_so_info_below_is_not_F/Fmsy" << endl; - post_vecs << "Endyr+1= " << endyr + 1 << endl; - post_vecs << "run mceval objfun Numbers Area Sex Ages:" << age_vector << endl; - post_vecs << "run mceval objfun F_yr "; - for (y = styr - 1; y <= YrMax; y++) - { - if (STD_Yr_Reverse_F(y) > 0) - post_vecs << y << " "; - } - post_vecs << endl; - post_vecs << "run mceval objfun B_yr "; - for (y = styr - 1; y <= YrMax; y++) - { - if (STD_Yr_Reverse_Dep(y) > 0) - post_vecs << y << " "; - } - post_vecs << endl; - - if (mcmc_output_detail > 0) - { - std::stringstream iter_labels; - std::stringstream lambda_labels; - - iter_labels << "Iter | Objective_function"; - lambda_labels << "---- | Lambdas"; - - if (F_Method > 1) - { - iter_labels << " | Catch"; - lambda_labels << " | " << column(catch_lambda, max_lambda_phase); - } - - iter_labels << " | Equil_catch"; - lambda_labels << " | " << column(init_equ_lambda, max_lambda_phase); - - if (Svy_N > 0) - { - iter_labels << " | Survey"; - lambda_labels << " | " << column(surv_lambda, max_lambda_phase); - } - if (nobs_disc > 0) - { - iter_labels << " | Discard"; - lambda_labels << " | " << column(disc_lambda, max_lambda_phase); - } - if (nobs_mnwt > 0) - { - iter_labels << " | Mean_body_wt"; - lambda_labels << " | " << column(mnwt_lambda, max_lambda_phase); - } - if (Nobs_l_tot > 0) - { - iter_labels << " | Length_comp"; - lambda_labels << " | " << column(length_lambda, max_lambda_phase); - } - if (Nobs_a_tot > 0) - { - iter_labels << " | Age_comp"; - lambda_labels << " | " << column(age_lambda, max_lambda_phase); - } - if (nobs_ms_tot > 0) - { - iter_labels << " | Size_at_age"; - lambda_labels << " | " << column(sizeage_lambda, max_lambda_phase); - } - if (SzFreq_Nmeth > 0) - { - iter_labels << " | SizeFreq"; - lambda_labels << " | " << column(SzFreq_lambda, max_lambda_phase); - } - if (Do_Morphcomp > 0) - { - iter_labels << " | Morphcomp"; - lambda_labels << " | " << Morphcomp_lambda(max_lambda_phase); - } - if (Do_TG > 0) - { - iter_labels << " | Tag_comp | Tag_negbin"; - lambda_labels << " | " << column(TG_lambda1, max_lambda_phase) << " | " << column(TG_lambda2, max_lambda_phase); - } - - iter_labels << " | Recruitment"; - lambda_labels << " | " << recrdev_lambda(max_lambda_phase); - - iter_labels << " | Forecast_Recruitment"; - lambda_labels << " | " << Fcast_recr_lambda; - - iter_labels << " | Parm_priors"; - lambda_labels << " | " << parm_prior_lambda(max_lambda_phase); - - if (SoftBound > 0) - { - iter_labels << " | Parm_softbounds"; - lambda_labels << " | NA"; - } - - iter_labels << " | Parm_devs"; - lambda_labels << " | " << parm_dev_lambda(max_lambda_phase); - - if (F_ballpark_yr > 0) - { - iter_labels << " | F_Ballpark"; - lambda_labels << " | " << F_ballpark_lambda(max_lambda_phase); - } - - iter_labels << " | Crash_Pen "; - lambda_labels << " | " << CrashPen_lambda(max_lambda_phase); - - post_obj_func << iter_labels.str() << endl; - post_obj_func << lambda_labels.str() << endl; - } - }; // end writing headers for mceval_counter==1 - - // produce standard output of all estimated parameters - posts << mceval_counter << " " << obj_fun << " "; - for (j = 1; j <= N_MGparm2; j++) - { - if (active(MGparm(j))) - posts << MGparm(j) << " "; - } - for (i = 1; i <= N_SRparm3; i++) - { - if (active(SRparm(i))) - posts << SRparm(i) << " "; - } - - if (recdev_cycle > 0) - { - for (i = 1; i <= recdev_cycle; i++) - { - if (active(recdev_cycle_parm(i))) - posts << recdev_cycle_parm(i) << " "; - } - } - if (recdev_do_early > 0) - { - for (i = recdev_early_start; i <= recdev_early_end; i++) - { - if (active(recdev_early)) - posts << recdev(i) << " "; - } - } - if (do_recdev > 0) - { - for (i = recdev_start; i <= recdev_end; i++) - { - if (active(recdev1) || active(recdev2)) - posts << recdev(i) << " "; - } - if (Do_Forecast > 0 && active(Fcast_recruitments)) - { - for (i = recdev_end + 1; i <= YrMax; i++) - { - posts << Fcast_recruitments(i) << " "; - } - } - } - if (Do_Impl_Error > 0) - { - for (i = endyr + 1; i <= YrMax; i++) - { - posts << Fcast_impl_error(i) << " "; - } - } - for (i = 1; i <= N_init_F; i++) - { - if (active(init_F(i))) - posts << init_F(i) << " "; - } - if (N_Fparm > 0) - { - for (i = 1; i <= N_Fparm; i++) - { - if (active(F_rate(i))) - posts << F_rate(i) << " "; - } - } - for (i = 1; i <= Q_Npar2; i++) - { - if (active(Q_parm(i))) - posts << Q_parm(i) << " "; - } - for (j = 1; j <= N_selparm2; j++) - { - if (active(selparm(j))) - posts << selparm(j) << " "; - } - if (Do_TG > 0) - { - k = 3 * N_TG + 2 * Nfleet1; - for (j = 1; j <= k; j++) - { - if (active(TG_parm(j))) - posts << TG_parm(j) << " "; - } - } - if (N_parm_dev > 0) - { - for (i = 1; i <= N_parm_dev; i++) - for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) - { - if (parm_dev_PH(i) > 0) - posts << parm_dev(i, j) << " "; - } - } - posts << endl; - - // derived quantities - der_posts << mceval_counter << " " << obj_fun << " "; - for (j = 1; j <= N_STD_Yr; j++) // spawning biomass - { - der_posts << SSB_std(j) << " "; - } - for (j = 1; j <= N_STD_Yr; j++) // recruitment - { - der_posts << recr_std(j) << " "; - } - for (j = 1; j <= N_STD_Yr_Ofish; j++) // SPRratio - { - der_posts << SPR_std(j) << " "; - } - for (j = 1; j <= N_STD_Yr_F; j++) // F - { - der_posts << F_std(j) << " "; - } - for (j = 1; j <= N_STD_Yr_Dep; j++) // depletion (Bratio) - { - der_posts << depletion(j) << " "; - } - for (j = 1; j <= N_STD_Mgmt_Quant; j++) // Management quantities - { - der_posts << Mgmt_quant(j) << " "; - } - for (j = 1; j <= Extra_Std_N; j++) - { - der_posts << Extra_Std(j) << " "; - } - - der_posts << endl; - - if (Do_Rebuilder == 1) - write_rebuilder_output(); - - // derived vectors quantities - t = styr + (endyr + 1 - styr) * nseas; - for (p = 1; p <= pop; p++) - { - for (gg = 1; gg <= gender; gg++) - { - tempvec_a.initialize(); - for (g = 1; g <= gmorph; g++) - if (sx(g) == gg && use_morph(g) > 0) - { - tempvec_a += natage(t, p, g); - } - post_vecs << runnumber << " " << mceval_counter << " " << obj_fun << " N_at_Age " - << " " << p << " " << gg << " " << tempvec_a << endl; - } - } - post_vecs << runnumber << " " << mceval_counter << " " << obj_fun << " F/Fmsy " << F_std << endl; - post_vecs << runnumber << " " << mceval_counter << " " << obj_fun << " B/Bmsy " << depletion << endl; - - // output objective function components - if (mcmc_output_detail > 0) - { - post_obj_func << mceval_counter << " | " << obj_fun; - - if (F_Method > 1) - post_obj_func << " | " << catch_like; - post_obj_func << " | " << sum(equ_catch_like); - if (Svy_N > 0) - post_obj_func << " | " << surv_like; - if (nobs_disc > 0) - post_obj_func << " | " << disc_like; - if (nobs_mnwt > 0) - post_obj_func << " | " << mnwt_like; - if (Nobs_l_tot > 0) - post_obj_func << " | " << length_like_tot; - if (Nobs_a_tot > 0) - post_obj_func << " | " << age_like_tot; - if (nobs_ms_tot > 0) - post_obj_func << " | " << sizeage_like; - if (SzFreq_Nmeth > 0) - post_obj_func << " | " << SzFreq_like; - if (Do_Morphcomp > 0) - post_obj_func << " | " << Morphcomp_like; - if (Do_TG > 0) - post_obj_func << " | " << TG_like1 << " | " << TG_like2; - post_obj_func << " | " << recr_like + regime_like; - post_obj_func << " | " << Fcast_recr_like; - post_obj_func << " | " << parm_like; - if (SoftBound > 0) - post_obj_func << " | " << SoftBoundPen; - post_obj_func << " | " << (sum(parm_dev_like)); - if (F_ballpark_yr > 0) - post_obj_func << " | " << F_ballpark_like; - post_obj_func << " | " << CrashPen; - - post_obj_func << endl; - } - posts.close(); - der_posts.close(); - post_vecs.close(); - post_obj_func.close(); - } // end get_posteriors -// SS_Label_file #17. **SS_write.tpl** -// SS_Label_file # * write_summaryoutput() // append writes to *cumreport.sso* -// SS_Label_file # * write_SS_summary() // writes *ss_summary.sso* -// SS_Label_file # * write_rebuilder_output() // special output -// SS_Label_file # * write_SIStable() // deprecated, see new r4ss routines -// SS_Label_file # * write_Bzero_output() // -// SS_Label_file # * Report_Parm() // used by write_big_report in writing *report.sso* -// SS_Label_file # - - /* SS_Label_FUNCTION 36 write_summaryoutput; Writes in append mode to cumreport.sso */ -FUNCTION void write_summaryoutput() - { - random_number_generator radm(long(time(&finish))); - time(&finish); - elapsed_time = difftime(finish, start); - report2 << runnumber << " -logL: " << obj_fun << " SSB(Vir_Start_End): " << SSB_yr(styr - 2) << " " << SSB_yr(styr) << " " << SSB_yr(endyr) << endl; - report2 << runnumber << " Files: " << datfilename << " " << ctlfilename; - if (readparfile >= 1) - report2 << " Start_from_ss.par"; - report2 << endl - << runnumber << " N_iter: " << niter << " runtime(sec): " << elapsed_time << " starttime: " << ctime(&start); - report2 << runnumber << version_info(1) << version_info(2) << version_info(3) << endl; - report2 << runnumber << " F_Method: " << F_Method << " Retro_YR: " << retro_yr << " Forecast_Type: " << Do_Forecast << " MSY_Type: " << Do_MSY << endl; - if (N_SC > 0) - { - for (j = 1; j <= N_SC; j++) - report2 << runnumber << " Comment S_" << j << " " << Starter_Comments(j) << endl; - } - if (N_DC > 0) - { - for (j = 1; j <= N_DC; j++) - report2 << runnumber << " Comment D_" << j << " " << Data_Comments(j) << endl; - } - if (N_CC > 0) - { - for (j = 1; j <= N_CC; j++) - report2 << runnumber << " Comment C_" << j << " " << Control_Comments(j) << endl; - } - if (N_FC > 0) - { - for (j = 1; j <= N_FC; j++) - report2 << runnumber << " Comment F_" << j << " " << Forecast_Comments(j) << endl; - } - k = current_phase(); - if (k > max_lambda_phase) - k = max_lambda_phase; - report2 << runnumber << " Like_Emph Total 1 " << endl - << runnumber << " Like_Value Total " << obj_fun << endl; - if (Svy_N > 0) - report2 << runnumber << " Like_Emph Indices All " << column(surv_lambda, k) << endl - << runnumber << " Like_Value Indices " << surv_like * column(surv_lambda, k) << " " << surv_like << endl; - if (nobs_disc > 0) - report2 << runnumber << " Like_Emph Discard All " << column(disc_lambda, k) << endl - << runnumber << " Like_Value Discard " << disc_like * column(disc_lambda, k) << " " << disc_like << endl; - if (nobs_mnwt > 0) - report2 << runnumber << " Like_Emph MeanBodyWt All " << column(mnwt_lambda, k) << endl - << runnumber << " Like_Value MeanBodyWt " << mnwt_like * column(mnwt_lambda, k) << " " << mnwt_like << endl; - if (Nobs_l_tot > 0) - report2 << runnumber << " Like_Emph LenComp All " << column(length_lambda, k) << endl - << runnumber << " Like_Value LenComp " << length_like_tot * column(length_lambda, k) << " " << length_like_tot << endl; - if (Nobs_a_tot > 0) - report2 << runnumber << " Like_Emph AgeComp All " << column(age_lambda, k) << endl - << runnumber << " Like_Value AgeComp " << age_like_tot * column(age_lambda, k) << " " << age_like_tot << endl; - if (nobs_ms_tot > 0) - report2 << runnumber << " Like_Emph MeanLAA All " << column(sizeage_lambda, k) << endl - << runnumber << " Like_Value MeanLAA " << sizeage_like * column(sizeage_lambda, k) << " " << sizeage_like << endl; - - if (F_Method > 1) - report2 << runnumber << " Like_Emph Catch All " << column(catch_lambda, k) << endl - << runnumber << " Like_Value Catch " << catch_like * column(catch_lambda, k) << " " << catch_like << endl; - - report2 << runnumber << " Like_Emph init_equ All " << column(init_equ_lambda, k) << endl - << runnumber << " Like_Value Init_Equ " << equ_catch_like * column(init_equ_lambda, k) << " " << catch_like << endl; - - if (SzFreq_Nmeth > 0) - report2 << runnumber << " Like_Emph WeightFreq All " << column(SzFreq_lambda, k) << endl - << runnumber << " Like_Value WeightFreq " << SzFreq_like * column(SzFreq_lambda, k) << " " << SzFreq_like << endl; - if (Do_Morphcomp > 0) - report2 << runnumber << " Like_Emph Morphcomp All " << Morphcomp_lambda(k) << endl - << runnumber << " Like_Value Morphcomp " << Morphcomp_like * Morphcomp_lambda(k) << " " << Morphcomp_like << endl; - if (Do_TG > 0) - report2 << runnumber << " Like_Emph Tag_comp All " << column(TG_lambda1, k) << endl - << runnumber << " Like_Value Tag_comp " << TG_like1 * column(TG_lambda1, k) << " " << TG_like1 << endl; - if (Do_TG > 0) - report2 << runnumber << " Like_Emph Tag_negbin All " << column(TG_lambda2, k) << endl - << runnumber << " Like_Value Tag_negbin " << TG_like2 * column(TG_lambda2, k) << " " << TG_like2 << endl; - - report2 << runnumber << " Like_Comp Recruits Regime Fcast_Recr Biasadj Priors ParmDevs CrashPen" << endl; - report2 << runnumber << " Like_Emph " << recrdev_lambda(k) << " " << regime_lambda(k) << " " << Fcast_recr_lambda << " " - << parm_prior_lambda(k) << " " << parm_dev_lambda(k) << " " << CrashPen_lambda(k) << endl; - report2 << runnumber << " Like_Value*Emph " << recr_like * recrdev_lambda(k) << " " << regime_like * regime_lambda(k) << " " - << Fcast_recr_like << " " << parm_like * parm_prior_lambda(k) << " " << sum(parm_dev_like) * parm_dev_lambda(k) << " " << CrashPen * CrashPen_lambda(k) << endl; - - report2 << runnumber << " TimeSeries Yr Vir Equ " << years << " "; - k = YrMax; - if (k == endyr) - k = endyr + 1; - for (y = endyr + 1; y <= k; y++) - { - report2 << y << "F "; - } - report2 << endl; - report2 << runnumber << " Timeseries SpawnBio " << SSB_yr(styr - 2, YrMax) << endl; - report2 << runnumber << " Timeseries Recruit " << column(exp_rec, 4) << endl; - report2 << runnumber << " Timeseries TotBio " << column(Smry_Table, 1) << endl; - report2 << runnumber << " Timeseries SmryBio-" << Smry_Age << " " << column(Smry_Table, 2) << endl; - report2 << runnumber << " Timeseries TotCatch " << column(Smry_Table, 4) << endl; - report2 << runnumber << " Timeseries RetCatch " << column(Smry_Table, 5) << endl; - j = 0; - if (max(Do_Retain) > 0) - j = 1; - if (Do_Benchmark > 0) - report2 << runnumber << " Mgmt_Quant " << Mgmt_quant(1, 6 + j) << endl; - - report2 << runnumber << " Parm Labels "; - for (i = 1; i <= ParCount; i++) - { - report2 << " " << ParmLabel(i); - } - report2 << endl; - report2 << runnumber << " Parm Values "; - report2 << " " << MGparm << " "; - if (N_parm_dev > 0) - { - for (j = 1; j <= N_parm_dev; j++) - report2 << parm_dev(j) << " "; - } - report2 << SRparm << " "; - if (recdev_cycle > 0) - report2 << recdev_cycle_parm << " "; - if (recdev_do_early > 0) - report2 << recdev_early << " "; - if (do_recdev == 1) - { - report2 << recdev1 << " "; - } - if (do_recdev == 2) - { - report2 << recdev2 << " "; - } - if (Do_Forecast > 0) - report2 << Fcast_recruitments << " "; - if (Do_Impl_Error > 0) - report2 << Fcast_impl_error << " "; - if (N_init_F > 0) - report2 << init_F << " "; - if (N_Fparm > 0) - report2 << " " << F_rate; - if (Q_Npar2 > 0) - report2 << Q_parm << " "; - if (N_selparm2 > 0) - report2 << selparm << " "; - // if(N_selparm_dev>0) report2< 0) - report2 << TG_parm << " "; - report2 << endl; - - NP = 0; // count of number of parameters - report2 << runnumber << " MG_parm "; - for (j = 1; j <= N_MGparm2; j++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " MG_parm " << MGparm << endl; - - if (N_parm_dev > 0) - { - report2 << runnumber << " MG_parm_dev "; - for (i = 1; i <= N_parm_dev; i++) - { - for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " MG_parm_dev " << parm_dev(i) << endl; - } - } - - report2 << runnumber << " SRparm "; - for (i = 1; i <= N_SRparm3 + recdev_cycle; i++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " SRparm " << SRparm << " "; - if (recdev_cycle > 0) - report2 << recdev_cycle_parm; - report2 << endl; - - if (recdev_do_early > 0) - { - report2 << runnumber << " Recr_early "; - for (i = recdev_early_start; i <= recdev_early_end; i++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " Recr_early "; - for (i = recdev_early_start; i <= recdev_early_end; i++) - report2 << " " << recdev(i); - report2 << endl; - } - - if (do_recdev > 0) - { - report2 << runnumber << " Recr_main "; - for (i = recdev_start; i <= recdev_end; i++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " Recr_main "; - for (i = recdev_start; i <= recdev_end; i++) - report2 << " " << recdev(i); - report2 << endl; - } - - if (Do_Forecast > 0) - { - if (do_recdev > 0) - { - report2 << runnumber << " Recr_fore "; - for (i = recdev_end + 1; i <= YrMax; i++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " Recr_fore "; - for (i = recdev_end + 1; i <= YrMax; i++) - report2 << " " << recdev(i); - report2 << endl; - } - if (Do_Impl_Error > 0) - { - report2 << runnumber << " Impl_err "; - for (i = endyr + 1; i <= YrMax; i++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " Impl_err "; - for (i = endyr + 1; i <= YrMax; i++) - report2 << " " << Fcast_impl_error(i); - report2 << endl; - } - } - - report2 << runnumber << " init_F "; - for (i = 1; i <= N_init_F; i++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " init_F "; - for (i = 1; i <= N_init_F; i++) - report2 << " " << init_F(i); - report2 << endl; - - if (N_Fparm > 0) - { - report2 << runnumber << " F_rate "; - for (i = 1; i <= N_Fparm; i++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " F_rate "; - for (i = 1; i <= N_Fparm; i++) - report2 << " " << F_rate(i); - report2 << endl; - } - - if (Q_Npar2 > 0) - { - report2 << runnumber << " Q_parm "; - for (i = 1; i <= Q_Npar2; i++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " Q_parm "; - for (i = 1; i <= Q_Npar2; i++) - report2 << " " << Q_parm(i); - report2 << endl; - } - - if (N_selparm2 > 0) - { - report2 << runnumber << " Sel_parm "; - for (i = 1; i <= N_selparm2; i++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " Sel_parm " << selparm << endl; - } - - if (Do_TG > 0) - { - report2 << runnumber << " Tag_parm "; - for (f = 1; f <= 3 * N_TG + 2 * Nfleet1; f++) - { - NP++; - report2 << " " << ParmLabel(NP); - } - report2 << endl - << runnumber << " Tag_parm " << TG_parm << endl; - } - - if (Do_CumReport == 2) - { - if (Svy_N > 0) - for (f = 1; f <= Nfleet; f++) - if (Svy_N_fleet(f) > 0) - { - report2 << runnumber << " Index:" << f << " Yr "; - for (i = 1; i <= Svy_N_fleet(f); i++) - { - ALK_time = Svy_ALK_time(f, i); - report2 << data_time(ALK_time, f, 3) << " "; - } - report2 << endl - << runnumber << " Index:" << f << " OBS " << Svy_obs(f) << endl; - if (Svy_errtype(f) >= 0) // lognormal or lognormal T-dist - { - report2 << runnumber << " Index:" << f << " EXP " << mfexp(Svy_est(f)) << endl; - } - else // normal error - { - report2 << runnumber << " Index:" << f << " EXP " << Svy_est(f) << endl; - } - } - - data_type = 4; - for (f = 1; f <= Nfleet; f++) - if (Nobs_l(f) > 0) - { - report2 << runnumber << " Len:" << f << " YR "; - for (i = 1; i <= Nobs_l(f); i++) - { - t = Len_time_t(f, i); - ALK_time = Len_time_ALK(f, i); - report2 << data_time(ALK_time, f, 3) << " "; - } - report2 << endl - << runnumber << " Len:" << f << " effN " << neff_l(f) << endl; - } - - data_type = 5; - for (f = 1; f <= Nfleet; f++) - if (Nobs_a(f) > 0) - { - report2 << runnumber << " Age:" << f << " YR "; - for (i = 1; i <= Nobs_a(f); i++) - { - t = Age_time_t(f, i); - ALK_time = Age_time_ALK(f, i); - report2 << data_time(ALK_time, f, 3) << " "; - } - report2 << endl - << runnumber << " Age:" << f << " effN " << neff_a(f) << endl; - } - } - report2 << endl; - cout << " finished appending to cumreport.sso " << endl; - } - -FUNCTION void write_SS_summary() - { - SS_smry.open(sso_pathname + "ss_summary.sso"); - SS_smry << version_info(1) << version_info(2) << version_info(3) << endl; - SS_smry << datfilename << " #_DataFile " << endl; - SS_smry << ctlfilename << " #_Control " << endl; - SS_smry << "Run_Date: " << ctime(&start); - SS_smry << "Final_phase: " << current_phase() << " N_iterations: " << niter << endl; - k = current_phase(); - if (k > max_lambda_phase) - k = max_lambda_phase; - SS_smry << "#_LIKELIHOOD " << endl; - SS_smry << "Label logL*Lambda" << endl; - SS_smry << "TOTAL_LogL " << obj_fun << endl; - if (F_Method > 1) - { - SS_smry << "Catch " << catch_like * column(catch_lambda, k) << endl; - } - if (N_init_F > 0) - SS_smry << "Equil_catch " << equ_catch_like * column(init_equ_lambda, k) << endl; - if (Svy_N > 0) - SS_smry << "Survey " << surv_like * column(surv_lambda, k) << endl; - if (nobs_disc > 0) - SS_smry << "Discard " << disc_like * column(disc_lambda, k) << endl; - if (nobs_mnwt > 0) - SS_smry << "Mean_body_wt " << mnwt_like * column(mnwt_lambda, k) << endl; - if (Nobs_l_tot > 0) - SS_smry << "Length_comp " << length_like_tot * column(length_lambda, k) << endl; - if (Nobs_a_tot > 0) - SS_smry << "Age_comp " << age_like_tot * column(age_lambda, k) << endl; - if (nobs_ms_tot > 0) - SS_smry << "Size_at_age " << sizeage_like * column(sizeage_lambda, k) << endl; - if (SzFreq_Nmeth > 0) - SS_smry << "Gen_Size_Comp " << SzFreq_like * column(SzFreq_lambda, k) << endl; - if (Do_Morphcomp > 0) - SS_smry << "Morphcomp " << Morphcomp_lambda(k) * Morphcomp_like << endl; - if (Do_TG > 0) - { - SS_smry << "Tag_Data_1 " << TG_like1 * column(TG_lambda1, k) << endl; - SS_smry << "Tag_Data_2 " << TG_like2 * column(TG_lambda2, k) << endl; - } - SS_smry << "Recruitment " << recr_like * recrdev_lambda(k) << endl; - SS_smry << "InitEQ_regime " << regime_like * regime_lambda(k) << endl; - SS_smry << "Sum_recdevs " << sum_recdev << endl; - SS_smry << "Forecast_Recruitment " << Fcast_recr_like << endl; - SS_smry << "Parm_priors " << parm_like * parm_prior_lambda(k) << endl; - SS_smry << "Parm_softbounds " << SoftBoundPen << endl; - SS_smry << "Parm_devs " << sum(parm_dev_like) * parm_dev_lambda(k) << endl; - SS_smry << "F_Ballpark " << F_ballpark_lambda(k) * F_ballpark_like << endl; - SS_smry << "Crash_Pen " << CrashPen_lambda(k) * CrashPen << endl; - - SS_smry << "#_PARAMETERS" << endl - << "#label value se active? range" << endl; - NP = 0; // count of number of parameters - active_count = 0; - SS_smry << "#_BIOLOGY" << endl; - for (j = 1; j <= N_MGparm2; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << MGparm(j) << " "; - if (active(MGparm(j))) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (MGparm(j) - MGparm_LO(j)) / (MGparm_HI(j) - MGparm_LO(j) + 1.0e-6) << endl; - } - SS_smry << "#_SPAWN_RECR" << endl; - for (j = 1; j <= N_SRparm3; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << SRparm(j) << " "; - if (active(SRparm(j))) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (SRparm(j) - SRparm_LO(j)) / (SRparm_HI(j) - SRparm_LO(j) + 1.0e-6) << endl; - } - - if (recdev_cycle > 0) - { - for (j = 1; j <= recdev_cycle; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << recdev_cycle_parm(j) << " "; - if (active(recdev_cycle_parm(j))) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (recdev_cycle_parm(j) - recdev_cycle_LO(j)) / (recdev_cycle_HI(j) - recdev_cycle_LO(j) + 1.0e-6) << endl; - } - } - - if (recdev_do_early > 0) - { - for (j = recdev_early_start; j <= recdev_early_end; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << recdev(j) << " "; - if (active(recdev_early)) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (recdev(j) - recdev_LO) / (recdev_HI - recdev_LO + 1.0e-6) << endl; - } - } - - if (do_recdev > 0) - { - for (j = recdev_start; j <= recdev_end; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << recdev(j) << " "; - if (active(recdev1) || active(recdev2)) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (recdev(j) - recdev_LO) / (recdev_HI - recdev_LO + 1.0e-6) << endl; - } - } - - if (Do_Forecast > 0 && do_recdev > 0) - { - for (j = recdev_end + 1; j <= YrMax; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << Fcast_recruitments(j) << " "; - if (active(Fcast_recruitments)) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (Fcast_recruitments(j) - recdev_LO) / (recdev_HI - recdev_LO + 1.0e-6) << endl; - } - - if (Do_Impl_Error > 0) - { - for (j = endyr + 1; j <= YrMax; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << Fcast_impl_error(j) << " "; - if (active(Fcast_impl_error)) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (Fcast_impl_error(j) - (-1.)) / (1.0 - (-1.0) + 1.0e-6) << endl; - } - } - } - - if (N_init_F > 0) - { - SS_smry << "#_Init_F" << endl; - for (j = 1; j <= N_init_F; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << init_F(j) << " "; - if (active(init_F(j))) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (init_F(j) - init_F_LO(j)) / (init_F_HI(j) - init_F_LO(j) + 1.0e-6) << endl; - } - } - - if (N_Fparm > 0) - { - SS_smry << "#_F" << endl; - for (j = 1; j <= N_Fparm; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << F_rate(j) << " "; - if (active(F_rate(j))) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (F_rate(j) - 0.) / (max_harvest_rate - 0 + 1.0e-6) << endl; - } - } - - if (Q_Npar2 > 0) - { - SS_smry << "#_Catchability" << endl; - for (j = 1; j <= Q_Npar2; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << Q_parm(j) << " "; - if (active(Q_parm(j))) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (Q_parm(j) - Q_parm_LO(j)) / (Q_parm_HI(j) - Q_parm_LO(j) + 1.0e-6) << endl; - } - } - - SS_smry << "#_Selectivity" << endl; - if (N_selparm2 > 0) - for (j = 1; j <= N_selparm2; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << selparm(j) << " "; - if (active(selparm(j))) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (selparm(j) - selparm_LO(j)) / (selparm_HI(j) - selparm_LO(j) + 1.0e-6) << endl; - } - - if (Do_TG > 0) - { - SS_smry << "#_Tag_Recapture" << endl; - for (j = 1; j <= 3 * N_TG + 2 * Nfleet1; j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << TG_parm(j) << " "; - if (active(TG_parm(j))) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " Act "; - } - else - { - SS_smry << 0.0 << " Fix "; - } - SS_smry << (TG_parm(j) - TG_parm_LO(j)) / (TG_parm_HI(j) - TG_parm_LO(j) + 1.0e-6) << endl; - } - } - - if (N_parm_dev > 0) - { - SS_smry << "#_Parm_Dev" << endl; - for (i = 1; i <= N_parm_dev; i++) - for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) - { - NP++; - SS_smry << ParmLabel(NP) << " " << parm_dev(i, j) << " "; - if (parm_dev_PH(i) > 0) - { - active_count++; - SS_smry << CoVar(active_count, 1) << " ACT "; - } - else - { - SS_smry << 0.0 << " FIX "; - } - SS_smry << (parm_dev(i, j) - (-10.)) / (10. - (-10) + 1.0e-6) << endl; - } - } - - SS_smry << "#_Derived_Quantities" << endl; - SS_smry << "#_Spawn_Bio" << endl; - for (j = 1; j <= N_STD_Yr; j++) - { - NP++; - active_count++; - SS_smry << ParmLabel(NP) << " " << SSB_std(j) << " " << CoVar(active_count, 1) << endl; - } - - SS_smry << "#_Recruitment" << endl; - for (j = 1; j <= N_STD_Yr; j++) - { - NP++; - active_count++; - SS_smry << ParmLabel(NP) << " " << recr_std(j) << " " << CoVar(active_count, 1) << endl; - } - - SS_smry << "#_SPR Basis= " << SPR_report_label << endl; - for (j = 1; j <= N_STD_Yr_Ofish; j++) - { - NP++; - active_count++; - SS_smry << ParmLabel(NP) << " " << SPR_std(j) << " " << CoVar(active_count, 1) << endl; - } - - SS_smry << "#_F Basis= " << F_report_label << endl; - for (j = 1; j <= N_STD_Yr_F; j++) - { - NP++; - active_count++; - SS_smry << ParmLabel(NP) << " " << F_std(j) << " " << CoVar(active_count, 1) << endl; - } - - SS_smry << "#_Depletion Basis= " << depletion_basis_label << endl; - for (j = 1; j <= N_STD_Yr_Dep; j++) - { - NP++; - active_count++; - SS_smry << ParmLabel(NP) << " " << depletion(j) << " " << CoVar(active_count, 1) << endl; - } - - SS_smry << "#_Mgmt_Quantity" << endl; - for (j = 1; j <= N_STD_Mgmt_Quant; j++) - { - NP++; - active_count++; - SS_smry << ParmLabel(NP) << " " << Mgmt_quant(j) << " " << CoVar(active_count, 1) << endl; - } - - SS_smry << "#_Extra_stdev" << endl; - for (j = 1; j <= Extra_Std_N; j++) - { - NP++; - active_count++; - SS_smry << ParmLabel(NP) << " " << Extra_Std(j) << " " << CoVar(active_count, 1) << endl; - } - - if (Do_se_smrybio == 0) - { - SS_smry << "SmryBio_Virgin " << Smry_Table(styr - 2, 2) << " 0.0" << endl; - SS_smry << "SmryBio_Initial " << Smry_Table(styr - 1, 2) << " 0.0" << endl; - for (y = styr; y <= YrMax; y++) - { - SS_smry << "SmryBio_" << y << " " << Smry_Table(y, 2) << " 0.0" << endl; - } - } - - SS_smry << "#_survey_stdev " << Svy_N_sdreport << endl; - if (Svy_N_sdreport > 0) - { - k = 0; - for (f = 1; f <= Nfleet; ++f) - { - if (Svy_sdreport(f) > 0) - { - for (j = 1; j <= Svy_N_fleet(f); j++) - { - active_count++; - k++; - NP++; - if (Svy_errtype(f) == -1) - { - SS_smry << ParmLabel(NP) << " " << Svy_sdreport_est(k) << " " << CoVar(active_count, 1) << " #: " << Svy_est(f, j) << " q: " << Svy_q(f, j) << endl; - } - else - { - SS_smry << ParmLabel(NP) << " " << Svy_sdreport_est(k) << " " << CoVar(active_count, 1) << " #exp(): " << mfexp(Svy_est(f, j)) << " q: " << Svy_q(f, j) << endl; - } - } - } - } - } - - SS_smry << "#_Biomass" << endl; - SS_smry << "TotBio_Virgin " << Smry_Table(styr - 2, 1) << " 0.0" << endl; - SS_smry << "TotBio_Initial " << Smry_Table(styr - 1, 1) << " 0.0" << endl; - for (y = styr; y <= YrMax; y++) - { - SS_smry << "TotBio_" << y << " " << Smry_Table(y, 1) << " 0.0" << endl; - } - - SS_smry << "TotCatch_Virgin " << Smry_Table(styr - 2, 4) << " 0.0" << endl; - SS_smry << "TotCatch_Initial " << Smry_Table(styr - 1, 4) << " 0.0" << endl; - for (y = styr; y <= YrMax; y++) - { - SS_smry << "TotCatch_" << y << " " << Smry_Table(y, 4) << " 0.0" << endl; - } - - // report2 < 0 && mceval_counter == 0) - cout << " produce output for rebuilding package" << endl; - rebuilder.open(sso_pathname + "rebuild.sso", ios::app); - rebuild_dat.open(sso_pathname + "rebuild.dat"); - - if (mceval_counter == 0) // writing to rebuild.dat - { - rebuild_dat << "#Title, #runnumber: " << runnumber << " " << datfilename << " " << ctlfilename << " " << obj_fun << " " << SSB_yr(styr - 2) << " " << SSB_yr(endyr + 1) << " StartTime: " << ctime(&start); - rebuild_dat << "SSv3_default_rebuild.dat" << endl; - rebuild_dat << "# Number of sexes" << endl - << gender << endl; - rebuild_dat << "# Age range to consider (minimum age; maximum age)" << endl - << 0 << " " << nages << endl; - rebuild_dat << "# Number of fleets" << endl - << Nfleet1 << endl; - rebuild_dat << "# First year of projection (Yinit)" << endl - << Rebuild_Yinit << endl; - rebuild_dat << "# First Year of rebuilding period (Ydecl)" << endl - << Rebuild_Ydecl << endl; - rebuild_dat << "# Number of simulations" << endl - << 1000 << endl; - rebuild_dat << "# Maximum number of years" << endl - << 500 << endl; - rebuild_dat << "# Conduct projections with multiple starting values (0=No;else yes)" << endl - << 0 << endl; - rebuild_dat << "# Number of parameter vectors" << endl - << 1000 << endl; - rebuild_dat << "# Is the maximum age a plus-group (1=Yes;2=No)" << endl - << 1 << endl; - rebuild_dat << "# Generate future recruitments using historical recruitments (1) historical recruits/spawner (2) or a stock-recruitment (3)" << endl - << 3 << endl; - rebuild_dat << "# Constant fishing mortality (1) or constant Catch (2) projections" << endl - << 1 << endl; - rebuild_dat << "# Fishing mortality based on SPR (1) or actual rate (2)" << endl - << 1 << endl; - rebuild_dat << "# Pre-specify the year of recovery (or -1) to ignore" << endl - << -1 << endl; - rebuild_dat << "# Fecundity-at-age" << endl; - } - - // stuff written to both rebuild.dat and rebuild.SSO - //a. "blank line" with run info - if (mceval_phase()) - rebuilder << "# mceval phase, cnt=" << mceval_counter << ", StartTime: " << ctime(&start); - else - rebuilder << "# in maximization mode, StartTime: " << ctime(&start); - - if (mceval_counter == 0) - rebuild_dat << "#" << age_vector << " #runnumber: " << runnumber << " " << datfilename << " " << ctlfilename << " " << obj_fun << " " << SSB_yr(styr - 2) << " " << SSB_yr(endyr + 1) << endl; - - //b. fecundity-at-age - t = styr + (Rebuild_Yinit - styr) * nseas; - dvar_vector tempvec2(0, nages); - dvar_vector tempvec3(0, nages); - tempvec_a.initialize(); - tempvec2.initialize(); - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (sx(g) == 1) - { - // NEED to adjust for spawning timing within season - tempvec_a += elem_prod(fec(g), natage(t + spawn_seas - 1, p, g)); - tempvec2 += natage(t + spawn_seas - 1, p, g); - } - tempvec_a = elem_div(tempvec_a, tempvec2); - rebuilder << tempvec_a << " #female fecundity; weighted by N in year Y_init across morphs and areas" << endl; - if (mceval_counter == 0) - { - rebuild_dat << tempvec_a << " #female fecundity; weighted by N in year Y_init across morphs and areas" << endl; - rebuild_dat << "# Age specific selectivity and weight adjusted for discard and discard mortality" << endl; - } - - //c. Weight-at-age and selectivity-at-age (ordered by sex and fleet). - // use the deadfish vectors that account for discard and for mortality of discards - // average across morphs and areas using N_at_Age in year Yinit and across seasons using Fcast_RelF - for (gg = 1; gg <= gender; gg++) - for (f = 1; f <= Nfleet1; f++) - { - tempvec_a.initialize(); - tempvec2.initialize(); - tempvec3.initialize(); - j = 0; - for (s = 1; s <= nseas; s++) - for (p = 1; p <= pop; p++) - if (fleet_area(f) == p && Fcast_RelF_Use(s, f) > 0.0) // active fishery in this area in endyr - { - j = 1; - for (g = 1; g <= gmorph; g++) - if (sx(g) == gg) - { - tempvec_a += elem_prod(Wt_Age_t(t, f, g), natage(t + s - 1, p, g) * Fcast_RelF_Use(s, f)); // body wt - tempvec2 += elem_prod(sel_num(s, f, g), natage(t + s - 1, p, g) * Fcast_RelF_Use(s, f)); //no wt - tempvec3 += natage(t + s - 1, p, g) * Fcast_RelF_Use(s, f); - } - } - if (j == 1) - { - tempvec_a = elem_div(tempvec_a, tempvec3); - tempvec2 = elem_div(tempvec2, tempvec3); - rebuilder << tempvec_a << " #bodywt for gender,fleet: " << gg << " / " << f << " " << fleetname(f) << endl; - rebuilder << tempvec2 << " #selex for gender,fleet: " << gg << " / " << f << " " << fleetname(f) << endl; - if (mceval_counter == 0) - { - rebuild_dat << " #wt and selex for gender,fleet: " << gg << " " << f << " " << fleetname(f) << endl; - rebuild_dat << tempvec_a << endl - << tempvec2 << endl; - } - } - } - - if (mceval_counter == 0) - { - rebuild_dat << "# Sex ratio correction" << endl; - if (gender_rd < 0) - {rebuild_dat << fracfemale << endl;} // where fracfemale is set to the sexratio parameter value - else - {rebuild_dat << "1" << endl;} // value to indicate not used - } - - //d. Natural mortality and numbers-at-age for year Yinit (females then males). - if (mceval_counter == 0) - rebuild_dat << "# M and current age-structure in year Yinit: " << Rebuild_Yinit << endl; - - for (gg = 1; gg <= gender; gg++) - { - tempvec_a.initialize(); - tempvec2.initialize(); - tempvec3.initialize(); - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == gg && use_morph(g) > 0) - { - tempvec_a += elem_prod(natM(t, p, GP3(g)), natage(t, p, g)); - tempvec2 += natage(t, p, g); // note, uses season 1 only - } - } - tempvec_a = elem_div(tempvec_a, tempvec2); - rebuilder << tempvec_a << " #mean M for year Yinit: " << Rebuild_Yinit << " sex: " << gg << endl; - rebuilder << tempvec2 << " #numbers for year Yinit: " << Rebuild_Yinit << " sex: " << gg << endl; - if (mceval_counter == 0) - rebuild_dat << " # gender = " << gg << endl - << tempvec_a << endl - << tempvec2 << endl; - } - - //e. Numbers-at-age for year Ydecl (females then males). - t = styr + (Rebuild_Ydecl - styr) * nseas; - if (mceval_counter == 0) - rebuild_dat << "# Age-structure at Ydeclare= " << Rebuild_Ydecl << endl; - for (gg = 1; gg <= gender; gg++) - { - tempvec_a.initialize(); - tempvec2.initialize(); - tempvec3.initialize(); - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (sx(g) == gg && use_morph(g) > 0) - { - tempvec2 += natage(t, p, g); - } - } - rebuilder << tempvec2 << " #numbers for year Ydeclare: " << Rebuild_Ydecl << " sex: " << gg << endl; - if (mceval_counter == 0) - rebuild_dat << tempvec2 << endl; - } - - k = endyr; - if (Rebuild_Yinit > k) - k = Rebuild_Yinit; - - //f. "blank line" used for header for following lines - rebuilder << "#R0 " << years << " #years" << endl; - - //g. recruitment - rebuilder << exp_rec(styr - 2, 4) << " "; - for (y = styr; y <= k; y++) - { - rebuilder << exp_rec(k, 4) << " "; - } - rebuilder << " #Recruits" << endl; - - //h. spawnbio - rebuilder << SSB_yr(styr - 2) << " " << SSB_yr(styr, k) << " #SpawnBio" << endl; - - //i. steepness; SigmaR; rho - rebuilder << SRparm(2) << " " << sigmaR << " " << SRparm(N_SRparm2) << " # spawn-recr steepness, sigmaR, autocorr" << endl; - - if (mceval_counter == 0) - { - rebuild_dat << "# Year for Tmin Age-structure (set to Ydecl by SS)" << endl - << Rebuild_Ydecl << endl; - - rebuild_dat << "# recruitment and biomass" << endl - << "# Number of historical assessment years" << endl - << k - styr + 2 << endl; - rebuild_dat << "# Historical data" << endl - << "# year recruitment spawner in B0 in R project in R/S project" << endl; - rebuild_dat << styr - 1 << " " << years; - if (Rebuild_Yinit > endyr) - rebuild_dat << " " << Rebuild_Yinit; - rebuild_dat << " #years (with first value representing R0)" << endl; - rebuild_dat << exp_rec(styr - 2, 4) << " "; - for (y = styr; y <= k; y++) - { - rebuild_dat << exp_rec(y, 4) << " "; - } - rebuild_dat << " #recruits; first value is R0 (virgin)" << endl; - rebuild_dat << SSB_yr(styr - 2) << " " << SSB_yr(styr, k) << " #SSBio; first value is SSB_virgin (virgin)" << endl; - rebuild_dat << 1 << " "; - for (y = styr; y <= k; y++) - rebuild_dat << 0 << " "; - rebuild_dat << " # in Bzero" << endl; - rebuild_dat << 0 << " "; - for (y = styr; y <= k - 3; y++) - rebuild_dat << 1 << " "; - rebuild_dat << " 0 0 0 # in R project" << endl; - rebuild_dat << 0 << " "; - for (y = styr; y <= k - 3; y++) - rebuild_dat << 1 << " "; - rebuild_dat << " 0 0 0 # in R/S project" << endl; - rebuild_dat << "# Number of years with pre-specified catches" << endl - << 0 << endl; - rebuild_dat << "# catches for years with pre-specified catches go next" << endl; - // rebuild_dat<<"# Number of future recruitments to override"<= Rebuild_Ydecl + 1) - { - for (y = Rebuild_Ydecl + 1; y <= Rebuild_Yinit; y++) - rebuild_dat << y << " " << 1 << " " << y << endl; - } - - rebuild_dat << "# Which probability to product detailed results for (1=0.5; 2=0.6; etc.)" << endl - << 3 << endl; - rebuild_dat << "# Steepness sigma-R Auto-correlation" << endl - << SRparm(2) << " " << sigmaR << " " << 0 << endl; - rebuild_dat << "# Target SPR rate (FMSY Proxy); manually change to SPR_MSY if not using SPR_target" << endl - << SPR_target << endl; - rebuild_dat << "# Discount rate (for cumulative catch)" << endl - << 0.1 << endl; - rebuild_dat << "# Truncate the series when 0.4B0 is reached (1=Yes)" << endl - << 0 << endl; - rebuild_dat << "# Set F to FMSY once 0.4B0 is reached (1=Yes)" << endl - << 0 << endl; - rebuild_dat << "# Maximum possible F for projection (-1 to set to FMSY)" << endl - << -1 << endl; - rebuild_dat << "# Defintion of recovery (1=now only;2=now or before)" << endl - << 2 << endl; - rebuild_dat << "# Projection type" << endl - << 4 << endl; - rebuild_dat << "# Definition of the 40-10 rule" << endl - << 10 << " " << 40 << endl; - rebuild_dat << "# Sigma Assessment Error (Base, Year1, Slope, MaxSigma)" << endl - << "1.0 " << endyr + 1 << " 0.075 2.0" << endl; - rebuild_dat << "# Pstar" << endl - << 0.45 << endl; - rebuild_dat << "# Constrain catches by the ABC (1=yes, 2=no)" << endl - << 2 << endl; - rebuild_dat << "# Implementation Error (0=no; 1=lognormal; 2=uniform)" << endl - << 0 << endl; - rebuild_dat << "#Parameters of Implementaion Error" << endl - << "1 0.3" << endl; - rebuild_dat << "# Calculate coefficients of variation (1=Yes)" << endl - << 0 << endl; - rebuild_dat << "# Number of replicates to use" << endl - << 10 << endl; - rebuild_dat << "# Random number seed" << endl - << -99004 << endl; - rebuild_dat << "# File with multiple parameter vectors " << endl - << "rebuild.SSO" << endl; - rebuild_dat << "# User-specific projection (1=Yes); Output replaced (1->9)" << endl - << "0 5" << endl; - rebuild_dat << "# Catches and Fs (Year; 1/2/3 (F or C or SPR); value); Final row is -1" << endl; - rebuild_dat << k << " 1 1" << endl - << "-1 -1 -1" << endl; - rebuild_dat << "# Fixed catch project (1=Yes); Output replaced (1->9); Approach (-1=Read in else 1-9)" << endl; - rebuild_dat << "0 2 -1" << endl; - rebuild_dat << "# (48a) Special catch options (1-Yes) [CUT_OFF, Emsy, distribution, MAXCAT, Add, replace_code]" << endl - << "0 0.18 1.00 1.00 0 6" << endl; - rebuild_dat << "# (48b) B1Target" << endl - << 150000 << endl; - tempvec_a(1, Nfleet) = colsum(Fcast_RelF_Use); - rebuild_dat << "# Split of Fs" << endl; - rebuild_dat << Rebuild_Yinit << " "; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - rebuild_dat << " " << tempvec_a(f) << endl; - } - rebuild_dat << "-1 "; - for (f = 1; f <= Nfleet; f++) - rebuild_dat << " 1"; - rebuild_dat << endl; - rebuild_dat << "# Yrs to define T_target for projection type 4 (a.k.a. 5 pre-specified inputs)" << endl; - rebuild_dat << endyr + 6 << " " << endyr + 7 << " " << endyr + 8 << " " << endyr + 9 << " " << endyr + 10 << " " << endl; - rebuild_dat << "# Year for probability of recovery" << endl; - rebuild_dat << endyr + 10 << " " << endyr + 11 << " " << endyr + 12 << " " << endyr + 13 << " " << endyr + 14 << " " << endyr + 15 << " " << endyr + 16 << " " << endyr + 17 << endl; - rebuild_dat << "# Time varying weight-at-age (1=Yes;0=No)" << endl - << 0 << endl; - rebuild_dat << "# File with time series of weight-at-age data" << endl - << "none" << endl; - rebuild_dat << "# Use bisection (0) or linear interpolation (1)" << endl - << 1 << endl; - rebuild_dat << "# Target Depletion" << endl - << 0.4 << endl; - rebuild_dat << "# CV of implementation error" << endl - << 0 << endl; - } - } // end output of rebuilding quantities - -FUNCTION void write_SIStable() //Note: deprecated, but add a message for now. - { - SIS_table.open(sso_pathname + "SIS_table.sso"); - SIS_table << "Note: SIS_table.sso is deprecated, please use the r4ss function get_SIS_info() instead" << endl; - } -//******************************************************************** - /* SS_Label_FUNCTION 41 write_Bzero_output */ -FUNCTION void write_Bzero_output() - { - // output annual time series for beginning of year and summing across areas for each GP and gender - if (SS2out.is_open()) - SS2out.close(); - SS2out.open(report_sso_filename, ios::app); - for (fishery_on_off = 1; fishery_on_off >= 0; fishery_on_off--) - { - - /* - in first pass, fishery is on (1) so just report current values - in second pass, rerun the time series with no fishery, then do the same reporting - */ - SS2out << endl - << pick_report_name(59) << endl; - SS2out << "Spawning_Biomass_Report"; - if (fishery_on_off == 0) - { - SS2out << "_1 No_fishery_for_Z=M_and_dynamic_Bzero"; - } - else - { - SS2out << "_2 With_fishery"; - } - SS2out << endl - << "Yr Area: "; - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - SS2out << p << " "; - } - SS2out << endl - << "xxxx GP: "; - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - SS2out << gp << " "; - } - SS2out << endl; - - if (fishery_on_off == 0) - { - setup_recdevs(); - get_initial_conditions(); - get_time_series(); // in write_big_report - - if (Do_Forecast > 0) - { - show_MSY = 0; - report5 << "#" << endl - << " FORECAST: in Bzero report with fishery onoff= " << fishery_on_off << endl; - Get_Forecast(); - } - } - - for (y = styr - 2; y <= YrMax; y++) - { - SS2out << y; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - SS2out << " " << SSB_pop_gp(y, p, gp); - } - SS2out << endl; - } - - SS2out << endl - << "NUMBERS_AT_AGE_Annual"; - if (fishery_on_off == 0) - { - SS2out << "_1 No_fishery_for_Z=M_and_dynamic_Bzero"; - } - else - { - SS2out << "_2 With_fishery"; - } - SS2out << endl; - SS2out << "Bio_Pattern Sex Yr " << age_vector << endl; - dvector tempvec2(1, nages); // holds summed survivors - tempvec2.initialize(); - for (gg = 1; gg <= gender; gg++) - for (gp = 1; gp <= N_GP; gp++) - for (y = styr; y <= YrMax; y++) - { - tempvec_a.initialize(); - t = styr + (y - styr) * nseas; // first season only - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0 && GP4(g) == gp && sx(g) == gg) - { - tempvec_a += value(natage(t, p, g)); - if (nseas > 1) - { - // add in age 0 fish recruiting in later seasons - for (s = 2; s <= nseas; s++) - if (Bseas(g) == s) - tempvec_a(0) += value(natage(t + s - 1, p, g, 0)); - } - } - SS2out << gp << " " << gg << " " << y << " " << tempvec_a << endl; - } - SS2out << endl - << "Z_AT_AGE_Annual"; - if (fishery_on_off == 0) - { - SS2out << "_1 No_fishery_for_Z=M_and_dynamic_Bzero"; - } - else - { - SS2out << "_2 With_fishery"; - } - if (Hermaphro_Option != 0) - SS2out << ";_hermaphrodites_combined_sex_output"; - if (N_pred > 0 && fishery_on_off == 0) - SS2out << ";_reported_M_includes_PredM2"; - SS2out << endl; - SS2out << "Bio_Pattern Sex Yr " << age_vector << endl; - for (gg = 1; gg <= gender; gg++) - for (gp = 1; gp <= N_GP; gp++) - { - tempvec2.initialize(); - for (y = styr; y <= YrMax; y++) - { - tempvec_a.initialize(); - t = styr + (y - styr) * nseas; // first season only - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0 && GP4(g) == gp && sx(g) == gg) - { - tempvec_a += value(natage(t, p, g)); - if (nseas > 1) - { - for (s = 2; s <= nseas; s++) - if (Bseas(g) == s) - { - tempvec_a(0) += value(natage(t + s - 1, p, g, 0)); - } - } - } - if (y > styr) - { - SS2out << gp << " " << gg << " " << y - 1 << " " << log(elem_div(tempvec2(1, nages), tempvec_a(1, nages))) << " _ " << endl; - } - for (a = 0; a <= nages - 1; a++) - tempvec2(a + 1) = value(tempvec_a(a)); - tempvec2(nages) += value(tempvec_a(nages)); - } - } - - SS2out << endl - << "Report_Z_by_area_morph_platoon"; - if (fishery_on_off == 0) - { - SS2out << "_1 No_fishery_for_Z=M_and_dynamic_Bzero"; - } - else - { - SS2out << "_2 With_fishery"; - } - SS2out << endl; - SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era" << age_vector << endl; - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (y = styr - 2; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - temp = double(y) + azero_seas(s); - SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " _ "; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Z_rate(t, p, g) << endl; - } - } - } - SS2out << " Note: Z calculated as -ln(Nt+1 / Nt)" << endl; - SS2out << " Note: Z calculation for maxage not possible, for maxage-1 includes numbers at maxage, so is approximate" << endl; - if (nseas > 1) - SS2out << " Z for age zero fish is not correct here if recruitment occurs in season after season 1" << endl; - - fishery_on_off = 1; - /* - SS2out<=0;fishery_on_off--) - { - if(fishery_on_off==0) {SS2out<<"_1 No_fishery_for_Z=M";} else {SS2out<<"_2 With_fishery";} - save_gparm=0; - setup_recdevs(); - get_initial_conditions(); - get_time_series(); // in write_big_report - if(Do_Forecast>0) - { - show_MSY=0; - report5<<"#"<0) - { - for (y=styr-2;y<=YrMax;y++) - for (s=1;s<=nseas;s++) - { - t = styr+(y-styr)*nseas+s-1; - temp=double(y)+azero_seas(s); - SS2out < 0) - { - parmvar = CoVar(AC, 1); - parmgrad = parm_gradients(AC); - - SS2out << " " << AC << " " << PH << " " << Pmin << " " << Pmax << " " << RD << " " << Jitter; - if (Pval == RD) - { - SS2out << " NO_MOVE "; - } - else - { - temp = (Pval - Pmin) / (Pmax - Pmin); - if (temp == 0.0 || temp == 1.0) - { - SS2out << " BOUND "; - Nparm_on_bound++; - } - else if (temp < 0.01) - { - SS2out << " LO "; - Nparm_on_bound++; - } - else if (temp >= 0.99) - { - SS2out << " HI "; - Nparm_on_bound++; - } - else - { - SS2out << " OK "; - } - } - SS2out << " " << parmvar; - - SS2out << " " << parmgrad; - } - else - { - SS2out << " _ " << PH << " " << Pmin << " " << Pmax << " " << RD << " " << Jitter << " NA _ _ "; - } - if (PR_T > 0) - { - switch (PR_T) - { - case 6: - { - SS2out << " Normal "; - break; - } - case 1: - { - SS2out << " Sym_Beta "; - break; - } - case 2: - { - SS2out << " Full_Beta "; - break; - } - case 3: - { - SS2out << " Log_Norm "; - break; - } - case 4: - { - SS2out << " Log_Norm_w/biasadj "; - break; - } - case 5: - { - SS2out << " Gamma "; - break; - } - } - SS2out << " " << PR << " " << CV << " " << Like << " "; - i = 1; - parm_val(i) = Pval; - prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, Pval); - i = 2; - temp = Pval - 1.96 * parmvar; - if (temp < Pmin) - temp = Pmin; - parm_val(i) = temp; - prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); - - i = 3; - temp = Pval + 1.96 * parmvar; - if (temp > Pmax) - temp = Pmax; - parm_val(i) = temp; - prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); - - i = 4; - temp = Pmin + 0.01 * (Pmax - Pmin); - parm_val(i) = temp; - prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); - i = 14; - temp = Pmax - 0.01 * (Pmax - Pmin); - parm_val(i) = temp; - prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); - - for (int i = 5; i <= 13; i++) - { - temp = Pmin + float(i - 4) / 10.0 * (Pmax - Pmin); - parm_val(i) = temp; - prior_val(i) = Get_Prior(PR_T, Pmin, Pmax, PR, CV, temp); - } - SS2out << parm_val << " " << prior_val; - } - else - { - SS2out << " No_prior "; - } - SS2out << endl; - } - -// SS_Label_file #18. **SS_write_ssnew.tpl** -// SS_Label_file # * write_nudata() // produces *starter.ss_new*, *forecast.ss_new*, *data_echo.ss_new*, *data_expval.ss*, bootstraps -// SS_Label_file # * write_nucontrol() // produces *control.ss_new* -// SS_Label_file # - -//******************************************************************** - /* SS_Label_FUNCTION 38 write_nudata */ -FUNCTION void write_nudata() - { - // code for multinomial distribution developed by Ian Stewart, Oct 2005 - - dvector temp_mult(1, 50000); - dvector temp_probs(1, nlen_bin2); - int compindex = 0; - dvector temp_probs2(1, n_abins2); - int Nudat = 0; - int Nubootdat = 0; - int Nsamp_DM = 0; - adstring newdatfilename; - adstring datinfostring; - // create bootstrap data files; except first file just replicates the input and second is the estimate without error - if (irand_seed < 0) - irand_seed = long(time(&start)); - - random_number_generator radm(irand_seed); - for (i = 1; i <= 1234; i++) - { - temp = randn(radm); - } - - for (Nudat = 1; Nudat <= N_nudata; Nudat++) - { - if (Nudat == 1) - { - echoinput << "Begin writing data_echo.ss_new file" << endl; - newdatfilename = "data_echo.ss_new"; - datinfostring = "echo_input_data"; - } - else if (Nudat == 2) - { - echoinput << "Begin writing data_expval.ss file" << endl; - newdatfilename = "data_expval.ss"; - datinfostring = "expected_values"; - } - else // data_boot files - { - echoinput << "Begin writing bootstrap data file(s)" << endl; - Nubootdat = Nudat - 2; - anystring2 = " "; - sprintf(anystring2, "%d", Nubootdat); - if (Nubootdat < 10) - { - newdatfilename = "data_boot_00" + anystring2 + ".ss"; - } - else if (Nubootdat < 100) - { - newdatfilename = "data_boot_0" + anystring2 + ".ss"; - } - else // Nubootdat > 99 - { - newdatfilename = "data_boot_" + anystring2 + ".ss"; - } - datinfostring = "bootstrap"; - } - anystring = ssnew_pathname + newdatfilename; - report1.open(anystring); - report1 << version_info(1) << version_info(2) << version_info(3) << endl - << version_info2 << endl - << "#_Start_time: " << ctime(&start); - report1 << "#_" << datinfostring << endl; - report1 << Data_Comments << endl; - if (Nudat > 2) - report1 << "#_bootstrap file: " << Nubootdat << " irand_seed: " << irand_seed << " first rand#: " << randn(radm) << endl; - - report1 << version_info(1) << version_info(2) << version_info(3) << endl; - report1 << styr << " #_StartYr" << endl; - report1 << endyr << " #_EndYr" << endl; - report1 << nseas << " #_Nseas" << endl; - report1 << 12. * seasdur << " #_months/season" << endl; - report1 << N_subseas << " #_Nsubseasons (even number, minimum is 2)" << endl; - report1 << spawn_month << " #_spawn_month" << endl; - report1 << gender_rd << " #_Nsexes: 1, 2, -1 (use -1 for 1 sex setup with SSB multiplied by female_frac parameter)" << endl; - report1 << nages << " #_Nages=accumulator age, first age is always age 0" << endl; - report1 << pop << " #_Nareas" << endl; - report1 << Nfleet << " #_Nfleets (including surveys)" << endl; - report1 << "#_fleet_type: 1=catch fleet; 2=bycatch only fleet; 3=survey; 4=predator(M2) " << endl; - report1 << "#_sample_timing: -1 for fishing fleet to use season-long catch-at-age for observations, or 1 to use observation month; (always 1 for surveys)" << endl; - report1 << "#_fleet_area: area the fleet/survey operates in " << endl; - report1 << "#_units of catch: 1=bio; 2=num (ignored for surveys; their units read later)" << endl; - report1 << "#_catch_mult: 0=no; 1=yes" << endl; - report1 << "#_rows are fleets" << endl - << "#_fleet_type fishery_timing area catch_units need_catch_mult fleetname" << endl; - for (f = 1; f <= Nfleet; f++) - { - report1 << fleet_setup(f) << " " << fleetname(f) << " # " << f << endl; - } - report1 << "#Bycatch_fleet_input_goes_next" << endl; - report1 << "#a: fleet index" << endl; - report1 << "#b: 1=include dead bycatch in total dead catch for F0.1 and MSY optimizations and forecast ABC; 2=omit from total catch for these purposes (but still include the mortality)" << endl; - report1 << "#c: 1=Fmult scales with other fleets; 2=bycatch F constant at input value; 3=bycatch F from range of years" << endl; - report1 << "#d: F or first year of range" << endl; - report1 << "#e: last year of range" << endl; - report1 << "#f: not used" << endl; - report1 << "# a b c d e f " << endl; - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) == 2) - report1 << bycatch_setup(f) << " # " << fleetname(f) << endl; - } - - if (Nudat == 1) // report back the input data - { - - report1 << "#_Catch data: year, seas, fleet, catch, catch_se" << endl; - report1 << "#_catch_se: standard error of log(catch)" << endl; - report1 << "#_NOTE: catch data is ignored for survey fleets" << endl; - k = 0; - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - { - for (y = styr - 1; y <= endyr; y++) - { - for (s = 1; s <= nseas; s++) - { - k++; - t = styr + (y - styr) * nseas + s - 1; - if (y == styr - 1) - { - g = -999; - } - else - { - g = y; - } - report1 << g << " " << s << " " << f << " " << catch_ret_obs(f, t) << " " << catch_se(t, f) << endl; - } - } - } - } - report1 << "-9999 0 0 0 0" << endl - << "#" << endl; - - report1 << "#_CPUE_and_surveyabundance_and_index_observations" << endl; - report1 << "#_units: 0=numbers; 1=biomass; 2=F; 30=spawnbio; 31=exp(recdev); 36=recdev; 32=spawnbio*recdev; 33=recruitment; 34=depletion(&see Qsetup); 35=parm_dev(&see Qsetup)" << endl; - report1 << "#_errtype: -1=normal; 0=lognormal; 1=lognormal with bias correction; >1=df for T-dist" << endl; - report1 << "#_SD_report: 0=not; 1=include survey expected value with se" << endl; - report1 << "#_note that link functions are specified in Q_setup section of control file" << endl; - report1 << "#_dataunits = 36 and 35 should use Q_type 5 to provide offset parameter" < 0) - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= Svy_N_fleet(f); i++) - { - t = Svy_time_t(f, i); - ALK_time = Svy_ALK_time(f, i); - report1 << Show_Time(t, 1) << " " << Svy_super(f, i) * data_time(ALK_time, f, 1) << " " << f * Svy_use(f, i) << " "; - report1 << Svy_obs(f, i) << " " << Svy_se_rd(f, i) << " #_ " << fleetname(f) << endl; - } - report1 << "-9999 1 1 1 1 # terminator for survey observations " << endl; - - report1 << "#" << endl - << Ndisc_fleets << " #_N_fleets_with_discard" << endl; - report1 << "#_discard_units (1=same_as_catchunits(bio/num); 2=fraction; 3=numbers)" << endl; - report1 << "#_discard_errtype: >0 for DF of T-dist(read CV below); 0 for normal with CV; -1 for normal with se; -2 for lognormal; -3 for trunc normal with CV" << endl; - report1 << "# note: only enter units and errtype for fleets with discard " << endl; - report1 << "# note: discard data is the total for an entire season, so input of month here must be to a month in that season" << endl; - report1 << "#_fleet units errtype" << endl; - if (Ndisc_fleets > 0) - { - for (f = 1; f <= Nfleet; f++) - if (disc_units(f) > 0) - report1 << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << endl; - report1 << "#_year month fleet obs stderr" << endl; - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= disc_N_fleet(f); i++) - { - ALK_time = disc_time_ALK(f, i); - report1 << Show_Time(disc_time_t(f, i), 1) << " " << yr_disc_super(f, i) * data_time(ALK_time, f, 1) << " " << f * yr_disc_use(f, i) << " "; - report1 << obs_disc(f, i) << " " << cv_disc(f, i) << " #_ " << fleetname(f) << endl; - } - } - else - { - report1 << "# "; - } - report1 << "-9999 0 0 0.0 0.0 # terminator for discard data " << endl; - - report1 << "#" << endl - << do_meanbodywt << " #_use meanbodysize_data (0/1)" << endl; - if (nobs_mnwt_rd == 0) - report1 << "#_COND_"; - report1 << DF_bodywt << " #_DF_for_meanbodysize_T-distribution_like" << endl; - report1 << "# note: type=1 for mean length; type=2 for mean body weight " << endl; - report1 << "#_year month fleet part type obs stderr" << endl; - if (nobs_mnwt > 0) - { - for (i = 1; i <= nobs_mnwt; i++) - { - f = abs(mnwtdata(3, i)); - report1 << Show_Time(mnwtdata(1, i), 1) << " " << mnwtdata(2, i) << " " << mnwtdata(3, i) << " " << mnwtdata(4, i) << " " << mnwtdata(5, i) << " " << mnwtdata(6, i) << " " << mnwtdata(7, i) - var_adjust(3, f) << " #_ " << fleetname(f) << endl; - } - } - if (do_meanbodywt == 0) - report1 << "# "; - report1 << " -9999 0 0 0 0 0 0 # terminator for mean body size data " << endl; - - report1 << "#" << endl - << "# set up population length bin structure (note - irrelevant if not using size data and using empirical wtatage" << endl; - report1 << LenBin_option << " # length bin method: 1=use databins; 2=generate from binwidth,min,max below; 3=read vector" << endl; - if (LenBin_option == 1) - { - report1 << "# no additional input for option 1" << endl; - report1 << "# read binwidth, minsize, lastbin size for option 2" << endl; - report1 << "# read N poplen bins, then vector of bin lower boundaries, for option 3" << endl; - } - else if (LenBin_option == 2) - { - report1 << binwidth2 << " # binwidth for population size comp " << endl; - report1 << minLread << " # minimum size in the population (lower edge of first bin and size at age 0.00) " << endl; - report1 << maxLread << " # maximum size in the population (lower edge of last bin) " << endl; - } - else - { - report1 << nlength << " # number of population size bins " << endl; - report1 << len_bins << endl; - } - - report1 << use_length_data << " # use length composition data (0/1/2) where 2 invokes new comp_control format" << endl; - if (use_length_data > 0) - { - report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; - report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; - report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; - report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; - report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; - report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; - report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; - report1 << "#" << endl; - if(use_length_data == 1) - { - report1 << "#_Using old format for composition controls" << endl; - report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (f = 1; f <= Nfleet; f++) - { - report1 << min_tail_L(0, f) << " " << min_comp_L(0, f) << " " << CombGender_L(0, f) << " " << AccumBin_L(0, f) << " " << Comp_Err_L(0, f) << " " << Comp_Err_L2(0, f) << " " << min_sample_size_L(0, f) << " #_fleet:" << f << "_" << fleetname(f) << endl; - } - } - else if (use_length_data == 2) - { - report1 << "#_Using new list format for composition controls" << endl; - report1 << "#_use negative fleet value to fill for all higher numbered fleets (recommended!)" << endl; - report1 << "#_must enter in fleet, partition order; but only need to enter for used combos" << endl; - report1 << "#_fleet = -9999 to terminate list" << endl; - report1 << "#_fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (int i = 0; i <= comp_control_L_count; i++) - report1 << comp_control_L[i] << endl; - } - - report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; - report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; - report1 << nlen_bin << " #_N_LengthBins; then enter lower edge of each length bin" << endl - << len_bins_dat << endl; - // report1< 0) - { - for (i = 0; i <= nobsl_rd - 1; i++) - { - report1 << lendata[i] << endl; - } - } - report1 << -9999. << " "; - for (j = 2; j <= 6 + nlen_bin2; j++) - report1 << "0 "; - report1 << endl; - } - else - { - report1 << "# see manual for format of length composition data " << endl; - } - - report1 << "#" << endl - << n_abins << " #_N_age_bins" << endl; - if (n_abins > 0) - { - report1 << age_bins1 << endl; - } - else - { - report1 << "# "; - } - report1 << N_ageerr << " #_N_ageerror_definitions" << endl; - if (N_ageerr > 0) - report1 << age_err_rd << endl; - - report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; - report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; - report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; - report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; - report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; - report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; - report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; - report1 << "#" << endl; - report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (n_abins <= 0) - report1 << "# "; - report1 << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_fleet:" << f << "_" << fleetname(f) << endl; - } - - if (n_abins <= 0) - report1 << "# "; - report1 << Lbin_method << " #_Lbin_method_for_Age_Data: 1=poplenbins; 2=datalenbins; 3=lengths" << endl; - report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; - report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; - report1 << "#_year month fleet sex part ageerr Lbin_lo Lbin_hi Nsamp datavector(female-male)" << endl; - if (nobsa_rd > 0) - { - for (i = 0; i <= nobsa_rd - 1; i++) - { - report1 << Age_Data[i] << endl; - } - } - f = exp_a_temp.size() + 8; - if (n_abins <= 0) - report1 << "# "; - report1 << "-9999 "; - for (i = 1; i <= f; i++) - report1 << " 0"; - report1 << endl; - - report1 << "#" << endl - << use_meansizedata << " #_Use_MeanSize-at-Age_obs (0/1)" << endl; - if (use_meansizedata > 0) - { - report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; - report1 << "# partition codes: 0=combined; 1=discard; 2=retained" << endl; - report1 << "# ageerr codes: positive means mean length-at-age; negative means mean bodywt_at_age" << endl; - report1 << "#_year month fleet sex part ageerr ignore datavector(female-male)" << endl; - report1 << "# samplesize(female-male)" << endl; - if (nobs_ms_rd > 0) - { - if (finish_starter == 999) - { - for (i = 1; i <= nobs_ms_rd; i++) - { - report1 << sizeAge_Data[i] << endl; - } - } - else - { - for (i = 0; i <= nobs_ms_rd - 1; i++) - { - report1 << sizeAge_Data[i] << endl; - } - } - report1 << "-9999 "; - for (j = 1; j <= 6 + 2 * n_abins2; j++) - report1 << " 0"; - report1 << endl; - } - } - - report1 << "#" << endl - << N_envvar << " #_N_environ_variables" << endl; - report1 << "# -2 in year will subtract mean for that env_var; -1 will subtract mean and divide by stddev (e.g. Z-score)" << endl; - report1 << "#_year variable value" << endl; - if (N_envvar > 0) - { - for (i = 0; i <= N_envdata - 1; i++) - report1 << env_temp[i] << endl; - report1 << "-9999 0 0" << endl; - } - - report1 << "#" << endl << "# Sizefreq data. Defined by method because a fleet can use multiple methods" << endl; - report1 << SzFreq_Nmeth_rd << " # N sizefreq methods to read (or -1 for expanded options)" << endl; - if (SzFreq_Nmeth_rd < 0) { - report1 << SzFreq_Nmeth << " # N sizefreq methods to read" << endl; - } - if (SzFreq_Nmeth != 0) - { - report1 << "# each row below has entry for each sizefreq method " << endl; - report1 << "#_ "; - for (int j = 1; j <= SzFreq_Nmeth; j++ ) - { report1 << j << " ";} - report1 << " # Method" << endl; - report1 << SzFreq_Nbins << " #_Sizefreq N bins" << endl; - report1 << SzFreq_units << " #_Sizefreq units(1=bio/2=num)" << endl; - report1 << SzFreq_scale << " #_Sizefreq scale(1=kg/2=lbs/3=cm/4=inches)" << endl; - report1 << SzFreq_mincomp << " #_Sizefreq: small constant to add to comps" << endl; - report1 << SzFreq_nobs << " #_Sizefreq number of obs per method" << endl; - if (SzFreq_Nmeth_rd < 0) { - report1 << Comp_Err_Sz << " #_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; - report1 << Comp_Err_Sz2 << " #_ParmSelect: consecutive index for dirichlet or MV_Tweedie comp_error" << endl; - } - report1 << "#_Sizefreq bins. one row for each method" << endl - << "#Note: negative value for first bin makes it accumulate all smaller fish vs. truncate small fish" << endl; - for (i = 1; i <= SzFreq_Nmeth; i++) - { report1 << SzFreq_Omit_Small(i) * SzFreq_bins1(i, 1) << SzFreq_bins1(i)(2, SzFreq_Nbins(i)) << endl; } - report1 << "#_method year month fleet sex part Nsamp " << endl << SzFreq_obs1 << endl; - } - - // begin tagging data section #1 (observed data) - report1 << "# " << endl - << Do_TG_rd << " # do tags (0/1/2); where 2 allows entry of TG_min_recap" << endl; - if (Do_TG_rd > 0) - { - // info on dimensions of tagging data - report1 << N_TG << " # N tag groups" << endl; - report1 << N_TG_recap << " # N recap events" << endl; - report1 << TG_mixperiod << " # TG_mixperiod ## (latency) is the first period in which logL is calculated for this tag group (0 = release period)" << endl; - report1 << TG_maxperiods << " # max periods ## to track recaptures (units=seasons), after which tags are still read into this accumulator period" << endl; - if (Do_TG_rd == 2) - { - report1 << TG_min_recap << " # TG_min_recap ## tag group's N recaps >=mixperiod must be >= min_recap to include tag group in logL)" << endl; - } - else - { - report1 << "# COND: TG_min_recap ## use Do_TG=2 to invoke reading TG_min_recap after TG_maxperiods" << endl; - } - - // tag releases - report1 << "# Release data for each tag group. Tags are considered to be released at the beginning of a season (period)" << endl; - report1 << "# area year seas sex age Nrelease (note that the TG and tfill values are placeholders and are replaced by program generated values)" << endl; - report1 << TG_release << endl; - - // tag recaptures - report1 << "#_TG year seas fleet Nrecap" << endl; - for (j = 1; j <= N_TG_recap; j++) - { - // fill in first 4 columns: - for (k = 1; k <= 5; k++) - report1 << TG_recap_data(j, k) << " "; - report1 << endl; - } - } - // end tagging data section #1 (observed data) - - report1 << "#" << endl - << Do_Morphcomp << " # morphcomp data(0/1) " << endl; - if (Do_Morphcomp > 0) - { - report1 << Morphcomp_nobs_rd << " # Nobs" << endl; - report1 << Morphcomp_nmorph << " # Nmorphs" << endl; - report1 << Morphcomp_mincomp << " # add_to_comp" << endl; - report1 << "#_year, month, fleet, null, Nsamp, datavector_by_Nmorphs" << endl; - for (i = 1; i <= Morphcomp_nobs_rd; i++) - { - report1 << Morphcomp_obs_rd << endl; - } - } - else - { - report1 << "# Nobs, Nmorphs, mincomp" << endl; - report1 << "#_year, seas, type, partition, Nsamp, datavector_by_Nmorphs" << endl; - } - - report1 << "#" << endl - << Do_SelexData << " # Do dataread for selectivity priors(0/1)" << endl; - report1 << "#_year, seas, fleet, age/size, bin, selex_prior, prior_sd" << endl; - report1 << "# feature not yet implemented" << endl; - - report1 << "#" << endl - << "999" << endl - << endl; - } - - else if (Nudat == 2) // report expected value with no added error - { - - report1 << "#_Catch data: year, seas, fleet, catch, catch_se" << endl; - report1 << "#_catch_se: standard error of log(catch)" << endl; - report1 << "#_NOTE: catch data is ignored for survey fleets" << endl; - k = 0; - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - { - for (y = styr - 1; y <= endyr; y++) - { - for (s = 1; s <= nseas; s++) - { - k++; - t = styr + (y - styr) * nseas + s - 1; - if (y == styr - 1) - { report1 << -999 << " "; } - else - { report1 << y << " "; } - report1 << s << " " << f << " "; - if (fleet_type(f) == 2 && catch_ret_obs(f, t) > 0.0) - { - report1 << 0.1 << " " << catch_se(t, f) << endl; // for bycatch only fleet - } - else if (catchunits(f) == 1) - { - report1 << catch_fleet(t, f, 3) << " " << catch_se(t, f) << endl; - } - else - { - report1 << catch_fleet(t, f, 6) << " " << catch_se(t, f) << endl; - } - } - } - } - } - report1 << "-9999 0 0 0 0" << endl - << "#" << endl; - - report1 << "#_CPUE_and_surveyabundance_and_index_observations" << endl; - report1 << "#_units: 0=numbers; 1=biomass; 2=F; 30=spawnbio; 31=exp(recdev); 36=recdev; 32=spawnbio*recdev; 33=recruitment; 34=depletion(&see Qsetup); 35=parm_dev(&see Qsetup)" << endl; - report1 << "#_errtype: -1=normal; 0=lognormal; 1=lognormal with bias correction; >1=df for T-dist" << endl; - report1 << "#_SD_report: 0=not; 1=include survey expected value with se" << endl; - report1 << "#_note that link functions are specified in Q_setup section of control file" << endl; - report1 << "#_dataunits = 36 and 35 should use Q_type 5 to provide offset parameter" < 0) - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= Svy_N_fleet(f); i++) - { - t = Svy_time_t(f, i); - ALK_time = Svy_ALK_time(f, i); - report1 << Show_Time(t, 1) << " " << Svy_super(f, i) * data_time(ALK_time, f, 1) << " " << f * Svy_use(f, i) << " "; - if (Svy_errtype(f) == -1) // normal - { - report1 << Svy_est(f, i); - } - else if (Svy_errtype(f) == -2) // gamma - { - // need gamma here - } - else - { - report1 << mfexp(Svy_est(f, i)); // lognormal or T-dist or lognormal w/bias - } - report1 << " " << Svy_se_rd(f, i) << " #_orig_obs: " << Svy_obs(f, i) << " " << fleetname(f) << endl; - } - report1 << "-9999 1 1 1 1 # terminator for survey observations " << endl; - - report1 << "#" << endl - << Ndisc_fleets << " #_N_fleets_with_discard" << endl; - report1 << "#_discard_units (1=same_as_catchunits(bio/num); 2=fraction; 3=numbers)" << endl; - report1 << "#_discard_errtype: >0 for DF of T-dist(read CV below); 0 for normal with CV; -1 for normal with se; -2 for lognormal; -3 for trunc normal with CV" << endl; - report1 << "# note: only enter units and errtype for fleets with discard " << endl; - report1 << "# note: discard data is the total for an entire season, so input of month here must be to a month in that season" << endl; - report1 << "#_fleet units errtype" << endl; - if (Ndisc_fleets > 0) - { - for (f = 1; f <= Nfleet; f++) - if (disc_units(f) > 0) - report1 << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << endl; - report1 << "#_year month fleet obs stderr" << endl; - for (f = 1; f <= Nfleet; f++) - if (disc_N_fleet(f) > 0) - for (i = 1; i <= disc_N_fleet(f); i++) - { - ALK_time = disc_time_ALK(f, i); - report1 << Show_Time(disc_time_t(f, i), 1) << " " << yr_disc_super(f, i) * data_time(ALK_time, f, 1) << " " << f * yr_disc_use(f, i) << " "; - { - report1 << exp_disc(f, i); - } - report1 << " " << cv_disc(f, i) << " #_orig_obs: " << obs_disc(f, i) << " #_ " << fleetname(f) << endl; - } - } - else - { - report1 << "# "; - } - report1 << "-9999 0 0 0.0 0.0 # terminator for discard data " << endl; - - report1 << "#" << endl - << do_meanbodywt << " #_use meanbodysize_data (0/1)" << endl; - - if (nobs_mnwt_rd == 0) - report1 << "#_COND_"; - report1 << DF_bodywt << " #_DF_for_meanbodysize_T-distribution_like" << endl; - report1 << "# note: type=1 for mean length; type=2 for mean body weight " << endl; - report1 << "#_year month fleet part type obs stderr" << endl; - if (nobs_mnwt > 0) - { - for (i = 1; i <= nobs_mnwt; i++) - { - f = abs(mnwtdata(3, i)); - report1 << Show_Time(mnwtdata(1, i), 1) << " " << mnwtdata(2, i) << " " << mnwtdata(3, i) << " " << mnwtdata(4, i) << " " << mnwtdata(5, i) << " " << exp_mnwt(i) << " " << mnwtdata(7, i) - var_adjust(3, f) << " #_orig_obs: " << mnwtdata(6, i) << " #_ " << fleetname(f) << endl; - } - } - if (do_meanbodywt == 0) - report1 << "# "; - report1 << " -9999 0 0 0 0 0 0 # terminator for mean body size data " << endl; - - report1 << "#" << endl - << "# set up population length bin structure (note - irrelevant if not using size data and using empirical wtatage" << endl; - report1 << LenBin_option << " # length bin method: 1=use databins; 2=generate from binwidth,min,max below; 3=read vector" << endl; - if (LenBin_option == 1) - { - report1 << "# no additional input for option 1" << endl; - report1 << "# read binwidth, minsize, lastbin size for option 2" << endl; - report1 << "# read N poplen bins, then vector of bin lower boundaries, for option 3" << endl; - } - else if (LenBin_option == 2) - { - report1 << binwidth2 << " # binwidth for population size comp " << endl; - report1 << minLread << " # minimum size in the population (lower edge of first bin and size at age 0.00) " << endl; - report1 << maxLread << " # maximum size in the population (lower edge of last bin) " << endl; - } - else - { - report1 << nlength << " # number of population size bins " << endl; - report1 << len_bins << endl; - } - - report1 << use_length_data << " # use length composition data (0/1/2) where 2 invokes new comp_comtrol format" << endl; - if (use_length_data > 0) - { - report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; - report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; - report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; - report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; - report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; - report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; - report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; - report1 << "#" << endl; - if(use_length_data == 1) - { - report1 << "#_Using old format for composition controls" << endl; - report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (f = 1; f <= Nfleet; f++) - { - report1 << min_tail_L(0, f) << " " << min_comp_L(0, f) << " " << CombGender_L(0, f) << " " << AccumBin_L(0, f) << " " << Comp_Err_L(0, f) << " " << Comp_Err_L2(0, f) << " " << min_sample_size_L(0, f) << " #_fleet:" << f << "_" << fleetname(f) << endl; - } - } - else if (use_length_data == 2) - { - report1 << "#_Using new list format for composition controls" << endl; - report1 << "#_use negative fleet value to fill for all higher numbered fleets (recommended!)" << endl; - report1 << "#_must enter in fleet, partition order; but only need to enter for used combos" << endl; - report1 << "#_fleet = -9999 to terminate list" << endl; - report1 << "#_fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (int i = 0; i <= comp_control_L_count; i++) - report1 << comp_control_L[i] << endl; - } - - report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; - report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; - report1 << nlen_bin << " #_N_LengthBins" << endl - << len_bins_dat << endl; - // report1< 0) - { - for (i = 1; i <= Nobs_l(f); i++) - { - k = 1000; - if (nsamp_l(f, i) < k) - k = nsamp_l(f, i); - exp_l_temp_dat = nsamp_l(f, i) * value(exp_l(f, i) / sum(exp_l(f, i))); - report1 << header_l_rd(f, i)(1, 3) << " " << gen_l(f, i) << " " << header_l_rd(f, i)(5) << " " << nsamp_l(f, i) << " " << exp_l_temp_dat << endl; - } - } - } - report1 << -9999. << " "; - for (j = 2; j <= 6 + nlen_bin2; j++) - report1 << "0 "; - report1 << endl; - } - else - { - report1 << "# see manual for format of length composition data " << endl; - } - - report1 << "#" << endl - << n_abins << " #_N_age_bins" << endl; - if (n_abins > 0) - { - report1 << age_bins1 << endl; - } - else - { - report1 << "# "; - } - report1 << N_ageerr << " #_N_ageerror_definitions" << endl; - if (N_ageerr > 0) - report1 << age_err_rd << endl; - - report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; - report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; - report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; - report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; - report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; - report1 << "#_ParmSelect: parm number for dirichlet or MV_Tweedie" << endl; - report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; - report1 << "#" << endl; - report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (n_abins <= 0) - report1 << "# "; - report1 << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_fleet:" << f << "_" << fleetname(f) << endl; - } - - if (n_abins <= 0) - report1 << "# "; - report1 << Lbin_method << " #_Lbin_method_for_Age_Data: 1=poplenbins; 2=datalenbins; 3=lengths" << endl; - report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; - report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; - report1 << "#_year month fleet sex part ageerr Lbin_lo Lbin_hi Nsamp datavector(female-male)" << endl; - if (Nobs_a_tot > 0) - for (f = 1; f <= Nfleet; f++) - { - if (Nobs_a(f) >= 1) - { - for (i = 1; i <= Nobs_a(f); i++) - { - k = 1000; - if (nsamp_a(f, i) < k) - k = nsamp_a(f, i); // note that nsamp is adjusted by var_adjust, so var_adjust - // should be reset to 1.0 in control files that read the nudata.dat files - exp_a_temp = nsamp_a(f, i) * value(exp_a(f, i) / sum(exp_a(f, i))); - report1 << header_a(f, i)(1) << " " << header_a_rd(f, i)(2, 3) << " " << header_a(f, i)(4, 8) << " " << nsamp_a(f, i) << " " << exp_a_temp << endl; - } - } - } - f = exp_a_temp.size() + 8; - if (n_abins <= 0) - report1 << "# "; - report1 << "-9999 "; - for (i = 1; i <= f; i++) - report1 << " 0"; - report1 << endl; - - report1 << "#" << endl - << use_meansizedata << " #_Use_MeanSize-at-Age_obs (0/1)" << endl; - if (use_meansizedata > 0) - { - report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; - report1 << "# partition codes: 0=combined; 1=discard; 2=retained" << endl; - report1 << "# ageerr codes: positive means mean length-at-age; negative means mean bodywt_at_age" << endl; - report1 << "#_year month fleet sex part ageerr ignore datavector(female-male)" << endl; - report1 << "# samplesize(female-male)" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (Nobs_ms(f) > 0) - { - for (i = 1; i <= Nobs_ms(f); i++) - { - report1 << header_ms(f, i)(1) << " " << header_ms_rd(f, i)(2, 3) << " " << header_ms(f, i)(4, 7); - for (a = 1; a <= n_abins2; a++) - { - report1 << " "; - temp = exp_ms(f, i, a); - if (temp <= 0.) - { - temp = 0.0001; - } - report1 << temp; - } - report1 << endl - << obs_ms_n_read(f, i) << endl; - } - } - } - report1 << "-9999 "; - for (j = 1; j <= 6 + n_abins2; j++) - report1 << " 0"; - report1 << endl; - for (j = 1; j <= n_abins2; j++) - report1 << " 0"; - report1 << endl; - } - - report1 << "#" << endl - << N_envvar << " #_N_environ_variables" << endl; - report1 << "# -2 in year will subtract mean for that env_var; -1 will subtract mean and divide by stddev (e.g. Z-score)" << endl; - report1 << "#_year variable value" << endl; - if (N_envvar > 0) - { - for (i = 0; i <= N_envdata - 1; i++) - report1 << env_temp[i] << endl; - report1 << "-9999 0 0" << endl; - } - - report1 << "#" << endl << "# Sizefreq data. Defined by method because a fleet can use multiple methods" << endl; - report1 << SzFreq_Nmeth_rd << " # N sizefreq methods to read (or -1 for expanded options)" << endl; - if (SzFreq_Nmeth_rd < 0) { - report1 << SzFreq_Nmeth << " # N sizefreq methods to read" << endl; - } - if (SzFreq_Nmeth != 0) - { - report1 << "# each row below has entry for each sizefreq method " << endl; - report1 << "#_ "; - for (int j = 1; j <= SzFreq_Nmeth; j++ ) - { report1 << j << " ";} - report1 << " # Method" << endl; - report1 << SzFreq_Nbins << " #_Sizefreq N bins" << endl; - report1 << SzFreq_units << " #_Sizefreq units(1=bio/2=num)" << endl; - report1 << SzFreq_scale << " #_Sizefreq scale(1=kg/2=lbs/3=cm/4=inches)" << endl; - report1 << SzFreq_mincomp << " #_Sizefreq: small constant to add to comps" << endl; - report1 << SzFreq_nobs << " #_Sizefreq number of obs per method" << endl; - if (SzFreq_Nmeth_rd < 0) { - report1 << Comp_Err_Sz << " #_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; - report1 << Comp_Err_Sz2 << " #_ParmSelect: consecutive index for dirichlet or MV_Tweedie comp_error" << endl; - } - report1 << "#_Sizefreq bins. one row for each method" << endl - << "#Note: negative value for first bin makes it accumulate all smaller fish vs. truncate small fish" << endl; - for (i = 1; i <= SzFreq_Nmeth; i++) - { report1 << SzFreq_Omit_Small(i) * SzFreq_bins1(i, 1) << SzFreq_bins1(i)(2, SzFreq_Nbins(i)) << endl; } - report1 << "#_method year month fleet sex part Nsamp " << endl; - for (iobs = 1; iobs <= SzFreq_totobs; iobs++) { - report1 << SzFreq_obs1(iobs)(1, 7) << " " << SzFreq_exp(iobs) << endl; - } - } - - // begin tagging data section #2 (expected values) - report1 << "#" << endl - << Do_TG << " # do tags (0/1)" << endl; - if (Do_TG > 0) - { - // info on dimensions of tagging data - report1 << N_TG << " # N tag groups" << endl; - report1 << N_TG_recap << " # N recap events" << endl; - report1 << TG_mixperiod << " # mixing latency period: N periods to delay before comparing observed to expected recoveries (0 = release period)" << endl; - report1 << TG_maxperiods << " # max periods (seasons) to track recoveries, after which tags enter accumulator" << endl; - - // tag releases - report1 << "# Release data for each tag group. Tags are considered to be released at the beginning of a season (period)" << endl; - report1 << "# area year seas sex age Nrelease (note that the TG and tfill values are placeholders and are replaced by program generated values)" << endl; - report1 << TG_release << endl; - - // tag recaptures - report1 << "#_Note: Expected values for tag recaptures are reported only for the same combinations of" << endl; - report1 << "# group, year, area, and fleet that had observed recaptures. " << endl; - report1 << "#_TG year seas fleet Nrecap" << endl; - for (j = 1; j <= N_TG_recap; j++) - { - // fill in first 4 columns: - for (k = 1; k <= 4; k++) - report1 << TG_recap_data(j, k) << " "; - // fill in 5th column with bootstrap values - TG = TG_recap_data(j, 1); - overdisp = TG_parm(2 * N_TG + TG); - t = styr + int((TG_recap_data(j, 2) - styr) * nseas + TG_recap_data(j, 3) - 1) - TG_release(TG, 5); // find elapsed time in terms of number of seasons - if (t > TG_maxperiods) - t = TG_maxperiods; - report1 << value(TG_recap_exp(TG, t, 0)) << " #_overdisp: " << value(overdisp) << endl; - } - } - // end tagging data section #2 (expected values) - - report1 << "#" << endl - << Do_Morphcomp << " # morphcomp data(0/1) " << endl; - if (Do_Morphcomp > 0) - { - report1 << "# note that raw data, not bootstrap are reported here " << endl; - report1 << Morphcomp_nobs << " # Nobs" << endl; - report1 << Morphcomp_nmorph << " # Nmorphs" << endl; - report1 << Morphcomp_mincomp << " # add_to_comp" << endl; - report1 << "#_year, month, fleet, null, Nsamp, datavector_by_Nmorphs" << endl; - for (i = 1; i <= Morphcomp_nobs; i++) - { - report1 << Morphcomp_obs(i)(1, 5) << " " << Morphcomp_exp(i) << endl; - } - } - else - { - report1 << "# Nobs, Nmorphs, mincomp" << endl; - report1 << "#_year, seas, type, partition, Nsamp, datavector_by_Nmorphs" << endl; - } - - report1 << "#" << endl - << Do_SelexData << " # Do dataread for selectivity priors(0/1)" << endl; - report1 << "#_year, seas, fleet, age/size, bin, selex_prior, prior_sd" << endl; - report1 << "# feature not yet implemented" << endl; - - report1 << "#" << endl - << "999" << endl - << endl; - } - - else // create bootstrap data - { - - report1 << "#_Catch data: year, seas, fleet, catch, catch_se" << endl; - report1 << "#_catch_se: standard error of log(catch)" << endl; - report1 << "#_NOTE: catch data is ignored for survey fleets" << endl; - k = 0; - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - { - for (y = styr - 1; y <= endyr; y++) - { - for (s = 1; s <= nseas; s++) - { - k++; - t = styr + (y - styr) * nseas + s - 1; - if (y == styr - 1) - { report1 << -999 << " "; } - else - { report1 << y << " "; } - report1 << s << " " << f << " "; - if (fleet_type(f) == 2 && catch_ret_obs(f, t) > 0.0) - { - report1 << 0.1 << " " << catch_se(t, f) << endl; // for bycatch only fleet - } - else if (catchunits(f) == 1) - { - report1 << catch_fleet(t, f, 3) * mfexp(randn(radm) * catch_se(t, f) - 0.5 * catch_se(t, f) * catch_se(t, f)) - << " " << catch_se(t, f) << endl; - } - else - { - report1 << catch_fleet(t, f, 6) * mfexp(randn(radm) * catch_se(t, f) - 0.5 * catch_se(t, f) * catch_se(t, f)) - << " " << catch_se(t, f) << endl; - } - } - } - } - } - report1 << "-9999 0 0 0 0" << endl - << "#" << endl; - - report1 << "#_CPUE_and_surveyabundance_and_index_observations" << endl; - report1 << "#_units: 0=numbers; 1=biomass; 2=F; 30=spawnbio; 31=exp(recdev); 36=recdev; 32=spawnbio*recdev; 33=recruitment; 34=depletion(&see Qsetup); 35=parm_dev(&see Qsetup)" << endl; - report1 << "#_errtype: -1=normal; 0=lognormal; 1=lognormal with bias correction; >1=df for T-dist" << endl; - report1 << "#_SD_report: 0=not; 1=include survey expected value with se" << endl; - report1 << "#_note that link functions are specified in Q_setup section of control file" << endl; - report1 << "#_dataunits = 36 and 35 should use Q_type 5 to provide offset parameter" < 0) - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= Svy_N_fleet(f); i++) - { - t = Svy_time_t(f, i); - ALK_time = Svy_ALK_time(f, i); - double newobs = 0.0; - report1 << Show_Time(t, 1) << " " << Svy_super(f, i) * data_time(ALK_time, f, 1) << " " << f * Svy_use(f, i) << " "; - if (Svy_errtype(f) == -1) // normal error - { - newobs = value(Svy_est(f, i) + randn(radm) * Svy_se_use(f, i)); // uses Svy_se_use, not Svy_se_rd to include both effect of input var_adjust and extra_sd - } - if (Svy_errtype(f) == 0) // lognormal - { - newobs = value(mfexp(Svy_est(f, i) + randn(radm) * Svy_se_use(f, i))); // uses Svy_se_use, not Svy_se_rd to include both effect of input var_adjust and extra_sd - } - else if (Svy_errtype(f) > 1000) // T-dist - { - dvariable df = Svy_errtype(f) - 1000.; - temp = sqrt((df + 1.) / df); - newobs = value(mfexp(Svy_est(f, i) + randn(radm) * Svy_se_use(f, i) * temp)); // adjusts the sd by the df sample size - } - if (Svy_minval(f) >= 0.0 && Svy_errtype(f) != 0) // this logic may need adjustment - newobs = max(newobs, 0.5 * Svy_minval(f)); - report1 << newobs << " " << Svy_se_rd(f, i) << " #_orig_obs: " << Svy_obs(f, i) << " " << fleetname(f) << endl; - } - report1 << "-9999 1 1 1 1 # terminator for survey observations " << endl; - - report1 << "#" << endl - << Ndisc_fleets << " #_N_fleets_with_discard" << endl; - report1 << "#_discard_units (1=same_as_catchunits(bio/num); 2=fraction; 3=numbers)" << endl; - report1 << "#_discard_errtype: >0 for DF of T-dist(read CV below); 0 for normal with CV; -1 for normal with se; -2 for lognormal; -3 for trunc normal with CV" << endl; - report1 << "# note: only enter units and errtype for fleets with discard " << endl; - report1 << "# note: discard data is the total for an entire season, so input of month here must be to a month in that season" << endl; - report1 << "#_Fleet units errtype" << endl; - if (Ndisc_fleets > 0) - { - for (f = 1; f <= Nfleet; f++) - if (disc_units(f) > 0) - report1 << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << endl; - report1 << "#_year month fleet obs stderr" << endl; - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= disc_N_fleet(f); i++) - { - ALK_time = disc_time_ALK(f, i); - report1 << Show_Time(disc_time_t(f, i), 1) << " " << yr_disc_super(f, i) * data_time(ALK_time, f, 1) << " " << f * yr_disc_use(f, i) << " "; - if (disc_errtype(f) >= 1) - { - temp = exp_disc(f, i) + randn(radm) * sd_disc(f, i) * sqrt((disc_errtype(f) + 1.) / disc_errtype(f)) * exp_disc(f, i); - if (temp < 0.001) - temp = 0.001; - } - else if (disc_errtype(f) == 0) - { - temp = exp_disc(f, i) + randn(radm) * sd_disc(f, i); - if (temp < 0.001) - temp = 0.001; - } - else if (disc_errtype(f) == -1) - { - temp = exp_disc(f, i) + randn(radm) * sd_disc(f, i); - if (temp < 0.001) - temp = 0.001; - } - else if (disc_errtype(f) == -2) - { - temp = exp_disc(f, i) * mfexp(randn(radm) * sd_disc(f, i)); - } - else if (disc_errtype(f) == -3) - { - temp = exp_disc(f, i) + randn(radm) * (sd_disc(f, i) / sqrt(cumd_norm((1 - exp_disc(f, i)) / sd_disc(f, i)) - cumd_norm((0 - exp_disc(f, i)) / sd_disc(f, i)))); - if (temp < 0.001) - temp = 0.001; - } - if (disc_minval(f) >= 0.0) - temp = max(value(temp), 0.5 * disc_minval(f)); - - report1 << " " << temp << " " << cv_disc(f, i) << " #_orig_obs: " << obs_disc(f, i) << " #_ " << fleetname(f) << endl; - } - } - else - { - report1 << "# "; - } - report1 << "-9999 0 0 0.0 0.0 # terminator for discard data " << endl; - - report1 << "#" << endl - << do_meanbodywt << " #_use meanbodysize_data (0/1)" << endl; - if (do_meanbodywt == 0) - report1 << "#_COND_"; - report1 << DF_bodywt << " #_DF_for_meanbodysize_T-distribution_like" << endl; - report1 << "# note: type=1 for mean length; type=2 for mean body weight " << endl; - report1 << "#_year month fleet part type obs stderr" << endl; - - // NOTE, the se stored in mnwtdata(7,i) was adjusted in prelim calc to include the input var_adjustment - // so var_adjust is subtracted here when the observation is written - if (nobs_mnwt > 0) - { - for (i = 1; i <= nobs_mnwt; i++) - { - temp = exp_mnwt(i) + randn(radm) * mnwtdata(7, i) * sqrt((DF_bodywt + 1.) / DF_bodywt) * exp_mnwt(i); - if (temp <= 0.0) - { - temp = 0.0001; - } - f = abs(mnwtdata(3, i)); - report1 << Show_Time(mnwtdata(1, i), 1) << " " << mnwtdata(2, i) << " " << mnwtdata(3, i) << " " << mnwtdata(4, i) << " " << mnwtdata(5, i) << " " << temp << " " << mnwtdata(7, i) - var_adjust(3, f) << " #_orig_obs: " << mnwtdata(6, i) << " #_ " << fleetname(f) << endl; - } - } - if (do_meanbodywt == 0) - report1 << "# "; - report1 << " -9999 0 0 0 0 0 0 # terminator for mean body size data " << endl; - - report1 << "#" << endl - << "# set up population length bin structure (note - irrelevant if not using size data and using empirical wtatage" << endl; - report1 << LenBin_option << " # length bin method: 1=use databins; 2=generate from binwidth,min,max below; 3=read vector" << endl; - if (LenBin_option == 1) - { - report1 << "# no additional input for option 1" << endl; - report1 << "# read binwidth, minsize, lastbin size for option 2" << endl; - report1 << "# read N poplen bins, then vector of bin lower boundaries, for option 3" << endl; - } - else if (LenBin_option == 2) - { - report1 << binwidth2 << " # binwidth for population size comp " << endl; - report1 << minLread << " # minimum size in the population (lower edge of first bin and size at age 0.00) " << endl; - report1 << maxLread << " # maximum size in the population (lower edge of last bin) " << endl; - } - else - { - report1 << nlength << " # number of population size bins " << endl; - report1 << len_bins << endl; - } - - report1 << use_length_data << " # use length composition data (0/1/2) where 2 invokes new comp_comtrol format" << endl; - if (use_length_data > 0) - { - report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; - report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; - report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; - report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; - report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; - report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; - report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; - report1 << "#" << endl; - if(use_length_data == 1) - { - report1 << "#_Using old format for composition controls" << endl; - report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (f = 1; f <= Nfleet; f++) - { - report1 << min_tail_L(0, f) << " " << min_comp_L(0, f) << " " << CombGender_L(0, f) << " " << AccumBin_L(0, f) << " " << Comp_Err_L(0, f) << " " << Comp_Err_L2(0, f) << " " << min_sample_size_L(0, f) << " #_fleet:" << f << "_" << fleetname(f) << endl; - } - } - else if (use_length_data == 2) - { - report1 << "#_Using new list format for composition controls" << endl; - report1 << "#_use negative fleet value to fill for all higher numbered fleets (recommended!)" << endl; - report1 << "#_must enter in fleet, partition order; but only need to enter for used combos" << endl; - report1 << "#_fleet = -9999 to terminate list" << endl; - report1 << "#_fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (int i = 0; i <= comp_control_L_count; i++) - report1 << comp_control_L[i] << endl; - } - - report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; - report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; - report1 << nlen_bin << " #_N_LengthBins" << endl - << len_bins_dat << endl; - report1 << "#_year month fleet sex part Nsamp datavector(female-male)" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (Nobs_l(f) > 0) - { - for (i = 1; i <= Nobs_l(f); i++) - { - int parti = mkt_l(f, i); - switch (Comp_Err_L(parti, f)) - { - case 0: - { - Nsamp_DM = nsamp_l(f, i); - break; - } - case 1: // Dirichlet #1 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f), 1))); // Thorson's theta from eq 10 - // effN_DM = 1/(1+theta) + n*theta/(1+theta) - Nsamp_DM = value(1. / (1. + dirichlet_Parm) + nsamp_l(f, i) * dirichlet_Parm / (1. + dirichlet_Parm)); - break; - } - case 2: // Dirichlet #2 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti,f), 1))); // Thorson's beta from eq 12 - // effN_DM = (n+n*beta)/(n+beta) - Nsamp_DM = value((nsamp_l(f, i) + dirichlet_Parm * nsamp_l(f, i)) / (dirichlet_Parm + nsamp_l(f, i))); - break; - } - case 3: // MV_Tweedie - { - // need MV_tweedie - break; - } - } - Nsamp_DM = min(Nsamp_DM, 50000); - Nsamp_DM = max(Nsamp_DM, 1); - exp_l_temp_dat.initialize(); - temp_probs = value(exp_l(f, i)); - temp_mult.fill_multinomial(radm, temp_probs); // create multinomial draws with prob = expected values - for (compindex = 1; compindex <= Nsamp_DM; compindex++) // cumulate the multinomial draws by index in the new data - { - exp_l_temp_dat(temp_mult(compindex)) += 1.0; - } - - report1 << header_l_rd(f, i)(1, 5) << " " << Nsamp_DM << " " << exp_l_temp_dat << endl; -// report1 << header_l_rd(f, i)(1, 3) << " " << gen_l(f, i) << " " << header_l_rd(f, i)(5) << " " << Nsamp_DM << " " << exp_l_temp_dat << endl; - } - } - } - report1 << -9999. << " "; - for (j = 2; j <= 6 + nlen_bin2; j++) - report1 << "0 "; - report1 << endl; - } - else - { - report1 << "# see manual for format of length composition data " << endl; - } - - report1 << "#" << endl - << n_abins << " #_N_age_bins" << endl; - if (n_abins > 0) - { - report1 << age_bins1 << endl; - } - else - { - report1 << "# "; - } - report1 << N_ageerr << " #_N_ageerror_definitions" << endl; - if (N_ageerr > 0) - report1 << age_err_rd << endl; - - report1 << "#_mintailcomp: upper and lower distribution for females and males separately are accumulated until exceeding this level." << endl; - report1 << "#_addtocomp: after accumulation of tails; this value added to all bins" << endl; - report1 << "#_combM+F: males and females treated as combined sex below this bin number " << endl; - report1 << "#_compressbins: accumulate upper tail by this number of bins; acts simultaneous with mintailcomp; set=0 for no forced accumulation" << endl; - report1 << "#_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; - report1 << "#_ParmSelect: consecutive index for dirichlet or MV_Tweedie" << endl; - report1 << "#_minsamplesize: minimum sample size; set to 1 to match 3.24, minimum value is 0.001" << endl; - report1 << "#" << endl; - report1 << "#_mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (n_abins <= 0) - report1 << "# "; - report1 << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_fleet:" << f << "_" << fleetname(f) << endl; - } - - if (n_abins <= 0) - report1 << "# "; - report1 << Lbin_method << " #_Lbin_method_for_Age_Data: 1=poplenbins; 2=datalenbins; 3=lengths" << endl; - report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; - report1 << "# partition codes: (0=combined; 1=discard; 2=retained" << endl; - - report1 << "#_year month fleet sex part ageerr Lbin_lo Lbin_hi Nsamp datavector(female-male)" << endl; - if (Nobs_a_tot > 0) - for (f = 1; f <= Nfleet; f++) - { - if (Nobs_a(f) > 0) - { - for (i = 1; i <= Nobs_a(f); i++) - { - switch (Comp_Err_A(f)) - { - case 0: - { - Nsamp_DM = nsamp_a(f, i); - break; - } - case 1: // Dirichlet #1 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); // Thorson's theta from eq 10 - // effN_DM = 1/(1+theta) + n*theta/(1+theta) - Nsamp_DM = value(1. / (1. + dirichlet_Parm) + nsamp_a(f, i) * dirichlet_Parm / (1. + dirichlet_Parm)); - break; - } - case 2: // Dirichlet #2 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); // Thorson's beta from eq 12 - // effN_DM = (n+n*beta)/(n+beta) computed in Fit_LenComp - Nsamp_DM = value((nsamp_a(f, i) + dirichlet_Parm * nsamp_a(f, i)) / (dirichlet_Parm + nsamp_a(f, i))); - break; - } - case 3: // MV_Tweedie - { - // need MV_tweedie - break; - } - } - Nsamp_DM = min(Nsamp_DM, 50000); - Nsamp_DM = max(Nsamp_DM, 1); - exp_a_temp.initialize(); - temp_probs2 = value(exp_a(f, i)); - temp_mult.fill_multinomial(radm, temp_probs2); // create multinomial draws with prob = expected values - for (compindex = 1; compindex <= Nsamp_DM; compindex++) // cumulate the multinomial draws by index in the new data - { - exp_a_temp(temp_mult(compindex)) += 1.0; - } - - report1 << header_a(f, i)(1) << " " << header_a_rd(f, i)(2, 3) << " " << header_a(f, i)(4, 8) << " " << Nsamp_DM << " " << exp_a_temp << endl; - } - } - } - f = exp_a_temp.size() + 8; - if (n_abins <= 0) - report1 << "# "; - report1 << "-9999 "; - for (i = 1; i <= f; i++) - report1 << " 0"; - report1 << endl; - - report1 << "#" << endl - << use_meansizedata << " #_Use_MeanSize-at-Age_obs (0/1)" << endl; - if (use_meansizedata > 0) - { - report1 << "# sex codes: 0=combined; 1=use female only; 2=use male only; 3=use both as joint sex*length distribution" << endl; - report1 << "# partition codes: 0=combined; 1=discard; 2=retained" << endl; - report1 << "# ageerr codes: positive means mean length-at-age; negative means mean bodywt_at_age" << endl; - report1 << "#_year month fleet sex part ageerr ignore datavector(female-male)" << endl; - report1 << "# samplesize(female-male)" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (Nobs_ms(f) > 0) - { - for (i = 1; i <= Nobs_ms(f); i++) - { - report1 << header_ms(f, i)(1) << " " << header_ms_rd(f, i)(2, 3) << " " << header_ms(f, i)(4, 7); - for (a = 1; a <= n_abins2; a++) - { - report1 << " "; - temp = exp_ms(f, i, a) + randn(radm) * exp_ms_sq(f, i, a) / obs_ms_n(f, i, a); - if (temp <= 0.) - { - temp = 0.0001; - } - report1 << temp; - } - report1 << endl - << obs_ms_n_read(f, i) << endl; - } - } - } - report1 << "-9999 "; - for (j = 1; j <= 6 + n_abins2; j++) - report1 << " 0"; - report1 << endl; - for (j = 1; j <= n_abins2; j++) - report1 << " 0"; - report1 << endl; - } - - report1 << "#" << endl - << N_envvar << " #_N_environ_variables" << endl; - report1 << "# -2 in year will subtract mean for that env_var; -1 will subtract mean and divide by stddev (e.g. Z-score)" << endl; - report1 << "#_year variable value" << endl; - if (N_envvar > 0) - { - for (i = 0; i <= N_envdata - 1; i++) - report1 << env_temp[i] << endl; - report1 << "-9999 0 0" << endl; - } - - report1 << "#" << endl << "# Sizefreq data. Defined by method because a fleet can use multiple methods" << endl; - report1 << SzFreq_Nmeth_rd << " # N sizefreq methods to read (or -1 for expanded options)" << endl; - if (SzFreq_Nmeth_rd < 0) { - report1 << SzFreq_Nmeth << " # N sizefreq methods to read" << endl; - } - if (SzFreq_Nmeth != 0) - { - report1 << "# each row below has entry for each sizefreq method " << endl; - report1 << "#_ "; - for (int j = 1; j <= SzFreq_Nmeth; j++ ) - { report1 << j << " ";} - report1 << " # Method" << endl; - report1 << SzFreq_Nbins << " #_Sizefreq N bins" << endl; - report1 << SzFreq_units << " #_Sizefreq units(1=bio/2=num)" << endl; - report1 << SzFreq_scale << " #_Sizefreq scale(1=kg/2=lbs/3=cm/4=inches)" << endl; - report1 << SzFreq_mincomp << " #_Sizefreq: small constant to add to comps" << endl; - report1 << SzFreq_nobs << " #_Sizefreq number of obs per method" << endl; - if (SzFreq_Nmeth_rd < 0) { - report1 << Comp_Err_Sz << " #_Comp_Error: 0=multinomial, 1=dirichlet using Theta*n, 2=dirichlet using beta, 3=MV_Tweedie" << endl; - report1 << Comp_Err_Sz2 << " #_ParmSelect: consecutive index for dirichlet or MV_Tweedie comp_error" << endl; - } - report1 << "#_Sizefreq bins. one row for each method" << endl - << "#Note: negative value for first bin makes it accumulate all smaller fish vs. truncate small fish" << endl; - for (i = 1; i <= SzFreq_Nmeth; i++) - { report1 << SzFreq_Omit_Small(i) * SzFreq_bins1(i, 1) << SzFreq_bins1(i)(2, SzFreq_Nbins(i)) << endl; } - report1 << "#_method year month fleet sex part Nsamp " << endl; - j = 2 * max(SzFreq_Nbins); - dvector temp_probs3(1, j); - dvector SzFreq_newdat(1, j); - for (iobs = 1; iobs <= SzFreq_totobs; iobs++) - { - f = SzFreq_obs1(iobs, 1); // sizefreq method - double Nsamp_dat = 50000; - if (SzFreq_obs1(iobs, 7) < Nsamp_dat) - Nsamp_dat = SzFreq_obs1(iobs, 7); - SzFreq_newdat.initialize(); - - switch (Comp_Err_Sz(f)) - { - case 0: - { - Nsamp_DM = Nsamp_dat; - break; - } - case 1: // Dirichlet #1 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(f),1))); // Thorson's theta from eq 10 - // effN_DM = 1/(1+theta) + n*theta/(1+theta) - Nsamp_DM = value(1. / (1. + dirichlet_Parm) + Nsamp_dat * dirichlet_Parm / (1. + dirichlet_Parm)); - break; - } - case 2: // Dirichlet #2 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(f),1))); // Thorson's beta from eq 12 - // effN_DM = (n+n*beta)/(n+beta) computed in Fit_LenComp - Nsamp_DM = value((nsamp_l(f, i) + dirichlet_Parm * nsamp_l(f, i)) / (dirichlet_Parm + Nsamp_dat)); - break; - } - case 3: // MV_Tweedie - { - // need MV_tweedie - break; - } - } - - temp_probs3(1, SzFreq_Setup2(iobs)) = value(SzFreq_exp(iobs)); - temp_mult.fill_multinomial(radm, temp_probs3(1, SzFreq_Setup2(iobs))); // create multinomial draws with prob = expected values - for (compindex = 1; compindex <= j; compindex++) // cumulate the multinomial draws by index in the new data - { - SzFreq_newdat(temp_mult(compindex)) += 1.0; - } - - report1 << SzFreq_obs1(iobs)(1, 7) << " " << SzFreq_newdat(1, SzFreq_Setup2(iobs)) << endl; - } - } - - // begin tagging data section #3 (bootstrap data) - report1 << "#" << endl - << Do_TG << " # do tags (0/1)" << endl; - if (Do_TG > 0) - { - dvector temp_negbin(1, 50000); - - // changes authored by Gavin Fay in June 2016 in SS3 3.24Y - TG_recap_gen.initialize(); - int N_TG_recap_gen = 0; - for (TG = 1; TG <= N_TG; TG++) - { - overdisp = TG_parm(2 * N_TG + TG); - - dvector TG_fleet_probs(1, Nfleet); - dvector temp_tags(1, Nfleet); - // problem: TG_recap_exp only dimensioned to TG_endtime - for (t = 0; t <= min(TG_maxperiods, TG_endtime(TG)); t++) - { - if (value(TG_recap_exp(TG, t, 0)) > 0) - { - temp_negbin.initialize(); - temp_negbin.fill_randnegbinomial(value(TG_recap_exp(TG, t, 0)), value(overdisp), radm); - //cout << TG << " " << t << " " << temp_negbin << " " << TG_recap_exp(TG,t,0) << " " << value(overdisp) << endl; - if (temp_negbin(1) > 0) - { - TG_fleet_probs = value(TG_recap_exp(TG, t)(1, Nfleet)) / temp_negbin(1); - temp_tags = 0.0; - temp_mult.fill_multinomial(radm, TG_fleet_probs); - for (compindex = 1; compindex <= temp_negbin(1); compindex++) // cumulate the multinomial draws by index in the new data - { - temp_tags(temp_mult(compindex)) += 1.0; - } - for (f = 1; f <= Nfleet; f++) - { - if (temp_tags(f) > 0) - { - N_TG_recap_gen += 1; - TG_recap_gen(N_TG_recap_gen, 1) = TG; - TG_recap_gen(N_TG_recap_gen, 2) = TG_release(TG, 3) + int((t + TG_release(TG, 4) - 1) / nseas); - int k = TG_release(TG, 4); - TG_recap_gen(N_TG_recap_gen, 3) = ((t + k - 1) % nseas) + 1; - TG_recap_gen(N_TG_recap_gen, 4) = f; - TG_recap_gen(N_TG_recap_gen, 5) = temp_tags(f); - } - } - } - } - } - } - - // info on dimensions of tagging data - report1 << N_TG << " # N tag groups" << endl; - // //report1< area year seas sex age Nrelease (note that the TG and tfill values are placeholders and are replaced by program generated values)" << endl; - report1 << TG_release << endl; - - // tag recaptures - report1 << "#_Note: Bootstrap values for tag recaptures are produced only for the same combinations of" << endl; - report1 << "# group, year, area, and fleet that had observed recaptures. " << endl; - report1 << "#_TG year seas fleet Nrecap" << endl; - for (j = 1; j <= N_TG_recap_gen; j++) - { - report1 << TG_recap_gen(j) << endl; - } - } - // end tagging data section #3 (bootstrap data) - - report1 << "#" << endl - << Do_Morphcomp << " # morphcomp data(0/1) " << endl; - if (Do_Morphcomp > 0) - { - report1 << "# note that raw data, not bootstrap are reported here " << endl; - report1 << Morphcomp_nobs << " # Nobs" << endl; - report1 << Morphcomp_nmorph << " # Nmorphs" << endl; - report1 << Morphcomp_mincomp << " # add_to_comp" << endl; - report1 << "#_year, month, fleet, null, Nsamp, datavector_by_Nmorphs (no error added!!!)" << endl; - for (i = 1; i <= Morphcomp_nobs; i++) - { - report1 << Morphcomp_obs(i)(1, 5) << " " << Morphcomp_exp(i) << endl; - } - } - else - { - report1 << "# Nobs, Nmorphs, mincomp" << endl; - report1 << "#_year, seas, type, partition, Nsamp, datavector_by_Nmorphs" << endl; - } - - report1 << "#" << endl - << Do_SelexData << " # Do dataread for selectivity priors(0/1)" << endl; - report1 << "#_year, seas, fleet, age/size, bin, selex_prior, prior_sd" << endl; - report1 << "# feature not yet implemented" << endl; - - report1 << "#" << endl - << "999" << endl - << endl; - } - report1.close(); - } - - // report1 << "ENDDATA" << endl; - return; - } // end of write data - -//******************************************************************** - /* SS_Label_FUNCTION 39 write_nucontrol write new control file and starter file */ -FUNCTION void write_nucontrol() - { - echoinput << "Write starter.ss_new file " << endl; - anystring = ssnew_pathname + "starter.ss_new"; - ofstream NuStart(anystring); - NuStart << version_info(1) << version_info(2) << version_info(3) << endl - << version_info2 << endl; - if (N_SC > 0) - NuStart << Starter_Comments << endl; - NuStart << datfilename << " #_datfile" << endl - << ctlfilename << " #_ctlfile" << endl; - NuStart << readparfile << " #_init_values_src: 0 (use init values in control file); 1 (use ss3.par)" << endl; - NuStart << rundetail << " #_screen_display: 0 (minimal); 1 (one line per iter); 2 (each logL)" << endl; - NuStart << reportdetail << " #_report_table_selection: 0 (minimal; no wtatage.ss_new); 1 (all tables); 2 (brief), 3 (custom, read list) " << endl; - if (reportdetail == 3) - { - NuStart << "# custom report options: -100 to start with minimal; -101 to start with all; -number to remove, +number to add, -999 to end" << endl; - for (unsigned j = 0; j <= reportdetail_list.size() - 1; j++) - { - NuStart << reportdetail_list[j](1) << endl; - } - } - else - { - NuStart << "# COND: custom report options: -100 to start with minimal; -101 to start with all; -number to remove, +number to add, -999 to end" << endl; - } - - NuStart << docheckup << " #_checkup: write more 1st iteration age-specific details to echoinput.sso file (0,1) " << endl; - NuStart << Do_ParmTrace << " #_parmtrace: write parm values to ParmTrace.sso: 0 (no); 1 (good_iter,active_parms); 2 (good,all); 3 (every,all); 4 (every,active)" << endl; - NuStart << Do_CumReport << " #_cumreport: write to cumreport.sso: 0 (no); 1 (like×eries); 2 (add survey fits)" << endl; - NuStart << Do_all_priors << " #_prior_like: include prior_like for non-estimated parameters (0,1) " << endl; - NuStart << SoftBound << " #_soft_bounds: Use Soft Boundaries to aid convergence (0,1) (recommended)" << endl; - NuStart << "#" << endl - << N_nudata_read << " #_N_bootstraps: Number of datafiles to produce: 0 turns off all *.ss_new; 1st is data_echo.ss_new, 2nd is data_expval.ss, 3rd and higher are data_boot_**N.ss," << endl; - NuStart << Turn_off_phase_rd << " #_last_estimation_phase: turn off estimation for parameters entering after this phase" << endl; - NuStart << "#" << endl - << burn_intvl << " #_MCMCburn" << endl; - NuStart << thin_intvl << " #_MCMCthin" << endl; - NuStart << jitter << " # jitter_fraction: jitter within parameter bounds" << endl; - - NuStart << STD_Yr_min_rd << " #_minyr_sdreport: min year for sdreport outputs (-1 for styr); #_" << STD_Yr_min << endl; - NuStart << STD_Yr_max_rd << " #_maxyr_sdreport: max year for sdreport outputs (-1 for endyr+1; -2 for endyr+Nforecastyrs); #_" << STD_Yr_max << endl; - NuStart << N_STD_Yr_RD << " #_N_STD_yrs: N individual STD years " << endl; - NuStart << "#COND: vector of year values if N>0" << endl - << STD_Yr_RD << endl; - - NuStart << final_conv << " #_converge_criterion: (e.g. 1.0e-04) " << endl; - NuStart << retro_yr - endyr << " #_retro_yr: retrospective year relative to end year (e.g. -4)" << endl; - NuStart << Smry_Age << " #_min_age_summary_bio" << endl; - NuStart << depletion_basis_rd << " #_depl_basis: Depletion denom is: 0=skip; 1=X*SSB_virgin; 2=X*SSB_msy; 3=X*SSB_styr; 4=X*SSB_endyr; 5=X*dyn_Bzero; 6=X*SSB_unf_bmark; values>=11 invoke N multiyr with 10s & 100s digit; append .1 to invoke log(ratio); e.g. 122.1 produces log(12 yr trailing average of B/Bmsy)" << endl; - NuStart << "# If value = 1, then Btarget in benchmark will be a fraction of SSB_virgin, else will be a fraction of SSB_benchmark" << endl; - NuStart << depletion_level << " #_depl_denom_frac: fraction (X) for Depletion denominator (e.g. 0.4)" << endl; - NuStart << SPR_reporting << " #_SPR_basis: 0 (skip); 1 (1-SPR)/(1-SPR_tgt); 2 (1-SPR)/(1-SPR_MSY); 3 (1-SPR)/(1-SPR_Btarget); 4 (1-SPR); 5 (SPR)" << endl; - NuStart << F_reporting << " # F_std_units: 0 (skip); 1 (exploitation(Bio)); 2 (exploitation(Num)); 3 (sum(Apical_F's)); 4 (mean F for range of ages (numbers weighted)); 5 (unweighted mean F for range of ages)" << endl; - if (F_reporting == 4 || F_reporting == 5) - { - NuStart << F_reporting_ages << " # min and max age over which mean F will be calculated, with F=Z-M" << endl; - } - else - { - NuStart << "#COND 10 15 #_min and max age over which mean F will be calculated with F_reporting=4 or 5" << endl; - } - NuStart << F_std_basis_rd << " # F_std_basis: 0=no scaling; 1 (F/Fspr); 2 (F/Fmsy); 3 (F/Fbtgt); where F means annual F_std, Fmsy means F_std@msy; values >=11 invoke N multiyr using 10s and 100s digit; append .1 to invoke log(ratio)" << endl; - NuStart << double(mcmc_output_detail) + MCMC_bump << " #_MCMC_output_detail: integer part (0=default; 1=adds obj func components; 2= +write_report_for_each_mceval); and decimal part (added to SR_LN(R0) on first call to mcmc)" << endl; - NuStart << ALK_tolerance << " #_deprecated: ALK tolerance ***disabled in code" << endl; - NuStart << irand_seed_rd << " #_seed: random number seed for bootstrap data (-1 to use long(time) as seed): # " << irand_seed << endl; - NuStart << timevary_bio_4SRR << " #_Compatibility: flag for legacy (0) vs improved (1) impact of timevary biology on benchmark SRR calcs >=3.30.24" << endl; - NuStart << "3.30 #_final: check value for end of file and for version control" << endl; - NuStart.close(); - - echoinput << "Write forecast.ss_new file " << endl; - anystring = ssnew_pathname + "forecast.ss_new"; - ofstream NuFore(anystring); - NuFore << version_info(1) << version_info(2) << version_info(3) << endl; - if (N_FC > 0) - NuFore << Forecast_Comments << endl; - NuFore << "# for all year entries except rebuilder; enter either: actual year, -999 for styr, 0 for endyr, neg number for rel. endyr" << endl; - NuFore << Do_Benchmark << " # Benchmarks: 0=skip; 1=calc F_spr,F_Btgt,F_msy; 2=calc F_spr,F0.1,F_msy; 3=add F_Blimit; " << endl; - NuFore << Do_MSY << " # Do_MSY: 1= set to F(SPR); 2=calc F(MSY); 3=set to F(Btgt) or F0.1; 4=set to F(endyr); 5=calc F(MEY) with MSY_unit options" << endl; - NuFore << "# if Do_MSY=5, enter MSY_Units; then list fleet_ID, cost/F, price/mt, include_in_Fmey_scaling; # -fleet_ID to fill; -9999 to terminate" << endl; - if (Do_MSY == 5) - { - NuFore << MSY_units << " # MSY_units: 1=dead biomass, 2=dead biomass w/o excluded bycatch fleet, 3=retained biomass; 4=profits using price and costs" << endl; - NuFore << "# Note: if a fleet's catch is excluded from the Fmey search, its catch or profits are still included in the MSY value using historical F levels from Bmark_years" << endl; - NuFore << "# Fleet Cost_per_F Price_per_F include_in_Fmey_search" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (YPR_mask(f) > 0.0) - NuFore << f << " " << CostPerF(f) << " " << PricePerF(f) << " " << AdjustBenchF(f) << endl; - } - NuFore << "-9999 1 1 1 # terminate list of fleet costs and prices" << endl; - } - - NuFore << SPR_target << " # SPR target (e.g. 0.40)" << endl; - NuFore << BTGT_frac << " # Biomass target (e.g. 0.40) as fraction of SSB_virgin if depletion basis = 1 or time_vary compatibility = 0, else as fraction of SSB_unfished in benchmark" << endl; - if (Do_Benchmark != 3) NuFore << "#"; - NuFore << Blim_frac << " # COND: Do_Benchmark==3; Blimit as fraction of Bmsy (neg value to use as frac of SSB_virgin or SSB_unfished) (e.g. 0.50)"; - NuFore << "#" << endl << "# Bmark_years: beg_bio, end_bio, beg_selex, end_selex, beg_relF, end_relF, beg_recr_dist, end_recr_dist, beg_SRparm, end_SRparm (enter actual year, or values of 0 or -integer to be rel. endyr)" << endl - << Bmark_Yr_rd << endl - << "# " << Bmark_Yr << endl; - NuFore << "# value <0 convert to endyr-value; except -999 converts to start_yr; must be >=start_yr and <=endyr" << endl; - NuFore << Bmark_RelF_Basis << " # Bmark_relF_Basis: 1 = use year range; 2 = set relF same as forecast below" << endl; - NuFore << "#" << endl - << Do_Forecast_rd << " # Forecast: -1=none; 0=simple_1yr; 1=F(SPR); 2=F(MSY) 3=F(Btgt) or F0.1; 4=Ave F (uses first-last relF yrs); 5=input annual F scalar" << endl; - NuFore << "# where none and simple require no input after this line; simple sets forecast F same as end year F" << endl; - NuFore << N_Fcast_Yrs << " # N forecast years " << endl; - NuFore << Fcast_Flevel << " # Fmult (only used for Do_Forecast==5) such that apical_F(f)=Fmult*relF(f)" << endl; - anystring = ""; - if(Fcast_yr_rd(1) != -12345) - { // write in old format - NuFore << "#_Fcast_years for averaging: beg_selex, end_selex, beg_relF, end_relF, beg_mean recruits, end_recruits (enter actual year, or values of 0 or -integer to be rel. endyr)" << endl - << Fcast_yr_rd << endl - << "# " << Fcast_yr << endl; - NuFore << Fcast_timevary_Selex_rd << " # Forecast selectivity (0=fcast selex is mean from year range; 1=fcast selectivity from time-vary parms). NOTE: logic reverses in new format" << endl; - // - NuFore << "# A revised protocol for the Fcast_yr specification is available and recommended. Template is below." << endl; - warnstream << "A revised protocol for the Fcast_yr specification is available and recommended."; - write_message (NOTE, 1); - anystring = "#"; - } -// else - { // new list based format for Fcast years - NuFore << anystring << endl << anystring << " -12345 # code to invoke new format for expanded fcast year controls" << endl - << "# biology and selectivity vectors are updated annually in the forecast according to timevary parameters, so check end year of blocks and dev vectors" << endl - << "# input in this section directs creation of means over historical years to override any time_vary changes" << endl - << "# Factors implemented so far: 1=M, 4=recr_dist, 5=migration, 10=selectivity, 11=rel_F, 12=recruitment" << endl - << "# rel_F and Recruitment also have additional controls later in forecast.ss" << endl - << "# input as list: Factor, method (0, 1), st_yr, end_yr" << endl - << "# Terminate with -9999 for Factor" << endl - << "# st_yr and end_yr input can be actual year; <=0 sets rel. to timeseries endyr; Except -999 for st_yr sets to first year if time series" << endl -// << "#_Factor: 1=M, 2=growth, 3=wtlen, 4=recr_dist&femfrac, 5=migration, 6=ageerror, 7=catchmult, 8=hermaphroditism" << endl - << "# Method = 0 (or omitted) continue using time_vary parms; 1 use mean of derived factor over specified year range"< 0) - { - NuFore << anystring << Fcast_MGparm_ave_rd(i) << " # " << MGtype_Lbl(i) << "; use: " << Fcast_MGparm_ave(i) << endl; - } - - NuFore << anystring << "-9999 0 0 0" << endl << "#" < control rule cutoff" << endl; - NuFore << H4010_bot << " # Control rule cutoff for no F (as frac of HCR_anchor, e.g. 0.10) " << endl; - NuFore << H4010_scale_rd << " # Buffer: enter Control rule target as fraction of Flimit (e.g. 0.75), negative value invokes list of [year, scalar]. -year fills from year to YrMax " << endl; - NuFore << "# Also see HCR_anchor below to use virgin vs benchmark SSB or Bmsy as basis for inflection and cutoff" << endl; - if (H4010_scale_rd < 0) - { - j = H4010_scale_vec_rd.size() - 1; - for (int s = 0; s <= j; s++) - { - NuFore << H4010_scale_vec_rd[s] << endl; - } - } - - NuFore << "#" << endl << Fcast_Loop_Control(1) << " #_N forecast loops (1=OFL only; 2=ABC; 3=get F from forecast ABC catch with allocations applied)" << endl; - NuFore << Fcast_Loop_Control(2) << " # First forecast loop with stochastic recruitment" << endl; - NuFore << Fcast_Loop_Control(3) << " # Forecast base recruitment: 0= spawn_recr; 1=mult*spawn_recr_fxn; 2=mult*VirginRecr; 3=deprecated; 4=mult*mean_over_yr_range" << endl; - NuFore << "# for option 4, set phase for fore_recr_devs to -1 in control to get constant mean in MCMC, else devs will be applied" << endl; - if (Fcast_Loop_Control(3) == 0) - { - NuFore << 1.0 << " # Value multiplier is ignored" << endl; - } - else - { - NuFore << Fcast_Loop_Control(4) << " # multiplier on base recruitment " << endl; - } - NuFore << Fcast_Loop_Control(5) << " # HCR_anchor: 0 or 2 uses unfished benchmark SSB (old hardwired approach); 1 = virgin SSB; 3 = BMSY" << endl << "#" << endl; - - NuFore << Fcast_Cap_FirstYear << " # FirstYear for caps and allocations (should be after years with fixed inputs) " << endl; - - NuFore << Impl_Error_Std << " # stddev of log(realized catch/target catch) in forecast (set value>0.0 to cause active impl_error)" << endl; - - NuFore << Do_Rebuilder << " # Do West Coast gfish rebuilder output: 0=no; 1=yes " << endl; - NuFore << Rebuild_Ydecl << " # Rebuilder: first year catch could have been set to zero (Ydecl)(-1 to set to 1999)" << endl; - NuFore << Rebuild_Yinit << " # Rebuilder: year for current age structure (Yinit) (-1 to set to endyear+1)" << endl; - - NuFore << Fcast_RelF_Basis << " # fleet relative F: 1=use mean over year range; 2=read seas, fleet, alloc list below" << endl; - NuFore << "# Note that fleet allocation values is used directly as F if Do_Forecast=4 " << endl; - - NuFore << Fcast_Catch_Basis << " # basis for fcast catch tuning and for fcast catch caps and allocation (2=deadbio; 3=retainbio; 5=deadnum; 6=retainnum); NOTE: same units for all fleets" << endl; - - NuFore << "# Conditional input if relative F choice = 2" << endl; - NuFore << "# enter list of: season, fleet, relF; if used, terminate with season=-9999" << endl; - { - for (s = 1; s <= nseas; s++) - for (f = 1; f <= Nfleet; f++) - { - if (Fcast_RelF_Use(s, f) > 0.0) - { - if (Fcast_RelF_Basis == 1) - NuFore << "# "; - NuFore << s << " " << f << " " << Fcast_RelF_Use(s, f) << endl; - } - } - if (Fcast_RelF_Basis == 1) - NuFore << "# "; - NuFore << "-9999 0 0 # terminator for list of relF" << endl; - } - - NuFore << "# enter list of: fleet number, max annual catch for fleets with a max; terminate with fleet=-9999" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (Fcast_MaxFleetCatch(f) > -1 && fleet_type(f) == 1) - NuFore << f << " " << Fcast_MaxFleetCatch(f) << endl; - } - NuFore << "-9999 -1" << endl; - - NuFore << "# enter list of area ID and max annual catch; terminate with area=-9999" << endl; - for (p = 1; p <= pop; p++) - { - if (Fcast_MaxAreaCatch(p) > -1) - NuFore << p << " " << Fcast_MaxAreaCatch(p) << endl; - } - NuFore << "-9999 -1" << endl; - - NuFore << "# enter list of fleet number and allocation group assignment, if any; terminate with fleet=-9999" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (Allocation_Fleet_Assignments(f) > 0) - NuFore << f << " " << Allocation_Fleet_Assignments(f) << endl; - } - NuFore << "-9999 -1" << endl; - - NuFore << "#_if N allocation groups >0, list year, allocation fraction for each group " << endl; - NuFore << "# list sequentially because read values fill to end of N forecast" << endl; - NuFore << "# terminate with -9999 in year field " << endl; - - if (Fcast_Catch_Allocation_Groups > 0) - { - if (finish_starter == 999) - { - NuFore << endyr + 1 << " " << Fcast_Catch_Allocation(1) << endl; - } - else - { - j = Fcast_Catch_Allocation_list.size() - 1; - for (k = 0; k <= j - 1; k++) - NuFore << Fcast_Catch_Allocation_list[k] << endl; - } - NuFore << " -9999 "; - for (j = 1; j <= Fcast_Catch_Allocation_Groups; j++) - { - NuFore << " 1 "; - } - NuFore << endl; - } - else - { - NuFore << "# no allocation groups" << endl; - } - - NuFore << "#" << endl; - NuFore << Fcast_InputCatch_Basis << " # basis for input Fcast catch: -1=read basis with each obs; 2=dead catch; 3=retained catch; 99=input apical_F; NOTE: bio vs num based on fleet's catchunits" << endl; - - NuFore << "#enter list of Fcast catches or Fa; terminate with line having year=-9999" << endl; - NuFore << "#_year seas fleet catch(or_F)"; - if (Fcast_InputCatch_Basis == -1) - NuFore << " Basis "; - NuFore << endl; - for (j = 1; j <= N_Fcast_Input_Catches; j++) - { - NuFore << Fcast_InputCatch_rd(j) << endl; - } - NuFore << "-9999 1 1 0 "; - if (Fcast_InputCatch_Basis == -1) - NuFore << " 2 "; - NuFore << endl; - NuFore << "#" << endl - << 999 << " # verify end of input " << endl; - NuFore.close(); - - //********************************************************** - echoinput << "Write control.ss_new file " << endl; - - ofstream report4("control.ss_new"); - report4 << version_info(1) << version_info(2) << version_info(3) << endl; - report4 << version_info2 << endl; - if (N_CC > 0) - report4 << Control_Comments << endl; - report4 << "#_data_and_control_files: " << datfilename << " // " << ctlfilename << endl; - report4 << WTage_rd << " # 0 means do not read wtatage.ss; 1 means read and use wtatage.ss and also read and use growth parameters" << endl; - report4 << N_GP << " #_N_Growth_Patterns (Growth Patterns, Morphs, Bio Patterns, GP are terms used interchangeably in SS3)" << endl; - report4 << N_platoon << " #_N_platoons_Within_GrowthPattern " << endl; - if (N_platoon == 1) - report4 << "#_Cond "; - else - sd_ratio_rd = (sd_ratio_rd < 0)? -platoon_sd_ratio: platoon_sd_ratio; - report4 << sd_ratio_rd << " #_Platoon_within/between_stdev_ratio (no read if N_platoons=1)" << endl; - report4 << "#_Cond sd_ratio_rd < 0: platoon_sd_ratio parameter required after movement params." << endl; - if (N_platoon == 1) - report4 << "#_Cond "; - report4 << platoon_distr(1, N_platoon) << " #vector_platoon_dist_(-1_in_first_val_gives_normal_approx)" << endl; - report4 << "#" << endl; - if (finish_starter == 999) - { - report4 << 2 << " # recr_dist_method for parameters: 2=main effects for GP, Settle timing, Area; 3=each Settle entity; 4=none, only when N_GP*Nsettle*pop==1" << endl; - } - else - { - report4 << recr_dist_method << " # recr_dist_method for parameters: 2=main effects for GP, Area, Settle timing; 3=each Settle entity; 4=none (only when N_GP*Nsettle*pop==1)" << endl; - } - report4 << recr_dist_area << " # not yet implemented; Future usage: Spawner-Recruitment: 1=global; 2=by area" << endl; - report4 << N_settle_assignments << " # number of recruitment settlement assignments " << endl; - report4 << 0 << " # unused option" << endl; - report4 << "#GPattern month area age (for each settlement assignment)" << endl - << settlement_pattern_rd << endl - << "#" << endl; - if (pop == 1) - { - report4 << "#_Cond 0 # N_movement_definitions goes here if Nareas > 1" << endl - << "#_Cond 1.0 # first age that moves (real age at begin of season, not integer) also cond on do_migration>0" << endl - << "#_Cond 1 1 1 2 4 10 # example move definition for seas=1, morph=1, source=1 dest=2, age1=4, age2=10" << endl; - } - else - { - report4 << do_migration << " #_N_movement_definitions" << endl; - if (do_migration > 0) - { - report4 << migr_firstage << " # first age that moves (real age at begin of season, not integer)" << endl - << "# seas,GP,source_area,dest_area,minage,maxage" << endl - << move_def << endl; - } - else - { - report4 << "#_Cond 1.0 # first age that moves (real age at begin of season, not integer) if do_migration>0" << endl - << "#_Cond 1 1 1 2 4 10 # example move definition for seas=1, GP=1, source=1 dest=2, age1=4, age2=10" << endl; - } - } - report4 << "#" << endl; - report4 << N_Block_Designs << " #_Nblock_Patterns" << endl; - if (N_Block_Designs > 0) - { - report4 << Nblk << " #_blocks_per_pattern " << endl - << "# begin and end years of blocks" << endl - << Block_Design << endl; - } - else - { - report4 << "#_Cond " << 0 << " #_blocks_per_pattern " << endl - << "# begin and end years of blocks" << endl; - } - report4 << "#" << endl; - report4 << "# controls for all timevary parameters " << endl; - report4 << parm_adjust_method << " #_time-vary parm bound check (1=warn relative to base parm bounds; 3=no bound check); Also see env (3) and dev (5) options to constrain with base bounds" << endl - << "#" << endl; - report4 << "# AUTOGEN" << endl; - report4 << autogen_timevary << " # autogen: 1st element for biology, 2nd for SR, 3rd for Q, 4th reserved, 5th for selex" << endl; - report4 << "# where: 0 = autogen time-varying parms of this category; 1 = read each time-varying parm line; 2 = read then autogen if parm min==-12345" << endl; - - report4 << "#" << endl - << "#_Available timevary codes" << endl; - report4 << "#_Block types: 0: P_block=P_base*exp(TVP); 1: P_block=P_base+TVP; 2: P_block=TVP; 3: P_block=P_block(-1) + TVP" << endl; - report4 << "#_Block_trends: -1: trend bounded by base parm min-max and parms in transformed units (beware); -2: endtrend and infl_year direct values; -3: end and infl as fraction of base range" << endl; - - report4 << "#_EnvLinks: 1: P(y)=P_base*exp(TVP*env(y)); 2: P(y)=P_base+TVP*env(y); 3: P(y)=f(TVP,env_Zscore) w/ logit to stay in min-max; 4: P(y)=2.0/(1.0+exp(-TVP1*env(y) - TVP2))" << endl; - report4 << "#_DevLinks: 1: P(y)*=exp(dev(y)*dev_se; 2: P(y)+=dev(y)*dev_se; 3: random walk; 4: zero-reverting random walk with rho; 5: like 4 with logit transform to stay in base min-max" << endl - << "#_DevLinks(more): 21-25 keep last dev for rest of years" << endl - << "#" << endl; - report4 << "#_Prior_codes: 0=none; 6=normal; 1=symmetric beta; 2=CASAL's beta; 3=lognormal; 4=lognormal with biascorr; 5=gamma" << endl; - report4 << "#" << endl - << "# setup for M, growth, wt-len, maturity, fecundity, (hermaphro), recr_distr, cohort_grow, (movement), (age error), (catch_mult), sex ratio " << endl; - report4 << "#_NATMORT" << endl - << natM_type << " #_natM_type:_0=1Parm; 1=N_breakpoints;_2=Lorenzen;_3=agespecific;_4=agespec_withseasinterpolate;_5=BETA:_Maunder_link_to_maturity;_6=Lorenzen_range" << endl; - if (natM_type == 0) - { - report4 << " #_no additional input for selected M option; read 1P per morph" << endl; - } - else if (natM_type == 1) - { - report4 << N_natMparms << " #_N_breakpoints" << endl - << NatM_break << " # age(real) at M breakpoints" << endl; - } - else if (natM_type == 2) - { - report4 << natM_amin << " #_reference age for Lorenzen M; read 1P per morph" << endl; - } - else if (natM_type == 6) - { - report4 << natM_amin << " #_minimum age for Lorenzen" << endl - << natM_amax << " #_maximum age for Lorenzen; read 1P per morph" << endl; - } - else if (natM_type >= 3 && natM_type < 5) - { - report4 << " #_Age_natmort_by sex x growthpattern (nest GP in sex)" << endl - << Age_NatMort << endl; - } - else - { - report4 << natM_5_opt << " #_Maunder_M suboptions: 1 (4 parm per sex*GP, using age_maturity), 2 (4 parm, same), 3 (6 parm)" << endl; - report4 << "#_Note:_parm2(young_fish_power)_has_neg_value_(plaus._range:~-3_to_0.0);linear_@_-1.0; const_@_0.0" << endl; - } - report4 << "#" << endl; - report4 << Grow_type << " # GrowthModel: 1=vonBert with L1&L2; 2=Richards with L1&L2; 3=age_specific_K_incr; 4=age_specific_K_decr; 5=age_specific_K_each; 6=NA; 7=NA; 8=growth cessation" << endl; - if (Grow_type <= 5 || Grow_type == 8) - { - report4 << AFIX << " #_Age(post-settlement) for L1 (aka Amin); first growth parameter is size at this age; linear growth below this" << endl - << AFIX2 << " #_Age(post-settlement) for L2 (aka Amax); 999 to treat as Linf" << endl - << Linf_decay << " #_exponential decay for growth above maxage (value should approx initial Z; -999 replicates 3.24; -998 to not allow growth above maxage)" << endl; - report4 << "0 #_placeholder for future growth feature" << endl; - if (Grow_type >= 3 && Grow_type <= 5) - { - report4 << Age_K_count << " # number of K multipliers to read" << endl - << Age_K_points << " # ages for K multiplier" << endl; - } - } - else - { - report4 << " #_growth type not implemented" << endl; - } - report4 << "#" << endl; - report4 << SD_add_to_LAA << " #_SD_add_to_LAA (set to 0.1 for SS2 V1.x compatibility)" << endl; // constant added to SD length-at-age (set to 0.1 for compatibility with SS2 V1.x - report4 << CV_depvar << " #_CV_Growth_Pattern: 0 CV=f(LAA); 1 CV=F(A); 2 SD=F(LAA); 3 SD=F(A); 4 logSD=F(A)" << endl; - report4 << "#" << endl; - report4 << Maturity_Option << " #_maturity_option: 1=length logistic; 2=age logistic; 3=read age-maturity matrix by growth_pattern; 4=read age-fecundity; 5=disabled; 6=read length-maturity" << endl; - if (Maturity_Option == 3) - { - report4 << "#_Age_Maturity by growth pattern" << endl - << Age_Maturity << endl; - } - else if (Maturity_Option == 4) - { - report4 << "#_Age_Fecundity by growth pattern" << endl - << Age_Maturity << endl; - } - else if (Maturity_Option == 5) - { - report4 << "#_Age_Fecundity by growth pattern from wt-at-age.ss now invoked by read bodywt flag" << endl; - } - else if (Maturity_Option == 6) - { - report4 << "#_Length_Maturity by growth pattern" << endl - << Length_Maturity << endl; - } - report4 << First_Mature_Age << " #_First_Mature_Age" << endl; - if (Maturity_Option == 4 || Maturity_Option == 5) { - report4 << "# NOTE: maturity options 4 and 5 cause fecundity_at_length to be ignored, but parameters still needed " << endl; - } - report4 << Fecund_Option << " #_fecundity_at_length option:(1)eggs=Wt*(a+b*Wt);(2)eggs=a*L^b;(3)eggs=a*Wt^b; (4)eggs=a+b*L; (5)eggs=a+b*W" << endl; - report4 << Hermaphro_Option << " #_hermaphroditism option: 0=none; 1=female-to-male age-specific fxn; -1=male-to-female age-specific fxn" << endl; - if (Hermaphro_Option != 0) - { - report4 << Hermaphro_seas_rd << " # Hermaphro_season.first_age (seas=-1 means all seasons; first_age must be 0 to 9)" << endl - << Hermaphro_maleSSB << " # fraction_of_maleSSB_added_to_total_SSB " << endl; - } - - report4 << MGparm_def << " #_parameter_offset_approach for M, G, CV_G: 1- direct, no offset**; 2- male=fem_parm*exp(male_parm); 3: male=female*exp(parm) then old=young*exp(parm)" << endl; - report4 << "#_** in option 1, any male parameter with value = 0.0 and phase <0 is set equal to female parameter" << endl; - report4 << "#" << endl; - report4 << "#_growth_parms"; - if (N_GP > 1) - report4 << "; if N_GP>1, then nest GP within sex in parameters below"; - report4 << endl; - report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE env_var&link dev_link dev_minyr dev_maxyr dev_PH Block Block_Fxn" << endl; - NP = 0; - for (gg = 1; gg <= gender; gg++) - { - for (gp = 1; gp <= N_GP; gp++) - { - report4 << "# Sex: " << gg << " BioPattern: " << gp << " NatMort" << endl; - for (k = 1; k <= N_natMparms; k++) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - report4 << "# Sex: " << gg << " BioPattern: " << gp << " Growth" << endl; - for (k = 1; k <= N_growparms; k++) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - report4 << "# Sex: " << gg << " BioPattern: " << gp << " WtLen" << endl; - for (k = 1; k <= 2; k++) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - if (gg == 1) - { - report4 << "# Sex: " << gg << " BioPattern: " << gp << " Maturity&Fecundity" << endl; - for (k = 1; k <= 4; k++) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - } - } - } - report4 << "# Hermaphroditism" << endl; - if (Hermaphro_Option != 0) - { - for (k = 1; k <= 3; k++) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - } - - report4 << "# Recruitment Distribution " << endl; - j = NP + 1; - if (MGP_CGD > j) - { - for (k = j; k <= MGP_CGD - 1; k++) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - } - - report4 << "# Cohort growth dev base" << endl; - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - - report4 << "# Movement" << endl; - if (do_migration > 0) - { - for (k = 1; k <= 2 * do_migration; k++) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - } - - report4 << "# Platoon StDev Ratio " << endl; - if (N_platoon > 1 && sd_ratio_rd < 0) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - - report4 << "# Age Error from parameters" << endl; - if (Use_AgeKeyZero > 0) - { - for (k = 1; k <= 7; k++) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - } - - report4 << "# catch multiplier" << endl; - if (catch_mult_pointer > 0) - { - for (k = 1; k <= Nfleet; k++) - if (need_catch_mult(k) == 1) - { - NP++; - MGparm_1(NP, 3) = value(MGparm(NP)); - report4 << MGparm_1(NP) << " # " << ParmLabel(NP) << endl; - } - } - - // for (f=1;f<=N_MGparm;f++) - // { - // NP++; - // MGparm_1(f,3)=value(MGparm(f)); - // report4< 0) - { - report4 << "# timevary MG parameters " << endl - << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE" << endl; - for (f = 1; f <= timevary_parm_cnt_MG; f++) - { - NP++; - timevary_parm_rd[f](3) = value(timevary_parm(f)); - report4 << timevary_parm_rd[f] << " # " << ParmLabel(NP) << endl; - } - report4 << "# info on dev vectors created for MGparms are reported with other devs after tag parameter section " << endl; - } - else - { - report4 << "#_no timevary MG parameters" << endl; - } - - report4 << "#" << endl; - report4 << "#_seasonal_effects_on_biology_parms" << endl - << MGparm_seas_effects << " #_femwtlen1,femwtlen2,mat1,mat2,fec1,fec2,Malewtlen1,malewtlen2,L1,K" << endl; - report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE" << endl; - if (MGparm_doseas > 0) - { - for (f = 1; f <= N_MGparm_seas; f++) - { - NP++; - j++; - MGparm_seas_1(f, 3) = value(MGparm(j)); - report4 << MGparm_seas_1(f) << " # " << ParmLabel(NP) << endl; - } - } - else - { - report4 << "#_Cond -2 2 0 0 -1 99 -2 #_placeholder when no seasonal MG parameters" << endl; - } - - report4 << "#" << endl; - report4 << SR_fxn << " #_Spawner-Recruitment; Options: 1=NA; 2=Ricker; 3=std_B-H; 4=SCAA; 5=Hockey; 6=B-H_flattop; 7=survival_3Parm; 8=Shepherd_3Parm; 9=RickerPower_3parm; 10=B-H_ab" << endl; - report4 << init_equ_steepness << " # 0/1 to use steepness in initial equ recruitment calculation" << endl; - report4 << " 0 # not_used" << endl; - report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE env-var use_dev dev_mnyr dev_mxyr dev_PH Block Blk_Fxn # parm_name" << endl; - report4.unsetf(std::ios_base::fixed); - report4.unsetf(std::ios_base::floatfield); - for (f = 1; f <= N_SRparm2; f++) - { - NP++; - SRparm_1(f, 3) = value(SRparm(f)); - for (j = 1; j <= 6; j++) - report4 << setw(14) << SRparm_1(f, j); - for (j = 7; j <= 14; j++) - report4 << setw(11) << SRparm_1(f, j); - report4 << " # " << ParmLabel(NP) << endl; - } - report4.unsetf(std::ios_base::fixed); - report4.unsetf(std::ios_base::floatfield); - if (N_SRparm3 > N_SRparm2) - { - report4 << "# timevary SR parameters" << endl; - for (f = timevary_SRparm_first; f <= timevary_parm_SR_last; f++) - { - NP++; - timevary_parm_rd[f](3) = value(timevary_parm(f)); - report4 << timevary_parm_rd[f] << " # " << ParmLabel(NP) << endl; - } - report4.precision(6); - report4.unsetf(std::ios_base::fixed); - report4.unsetf(std::ios_base::floatfield); - } - else - { - report4 << "#_no timevary SR parameters" << endl; - } - - report4 << do_recdev << " #do_recdev: 0=none; 1=devvector (R=F(SSB)+dev); 2=deviations (R=F(SSB)+dev); 3=deviations (R=R0*dev; dev2=R-f(SSB)); 4=like 3 with sum(dev2) adding penalty" << endl; - report4 << recdev_start << " # first year of main recr_devs; early devs can precede this era" << endl; - report4 << recdev_end << " # last year of main recr_devs; forecast devs start in following year" << endl; - report4 << recdev_PH_rd << " #_recdev phase " << endl; - report4 << recdev_adv << " # (0/1) to read 13 advanced options" << endl; - if (recdev_adv == 0) - { - onenum = "#_Cond "; - } - else - { - onenum = " "; - } - report4 << onenum << recdev_early_start_rd << " #_recdev_early_start (0=none; neg value makes relative to recdev_start)" << endl; - report4 << onenum << recdev_early_PH_rd << " #_recdev_early_phase" << endl; - report4 << onenum << Fcast_recr_PH_rd << " #_forecast_recruitment phase (incl. late recr) (0 value resets to maxphase+1)" << endl; - report4 << onenum << Fcast_recr_lambda << " #_lambda for Fcast_recr_like occurring before endyr+1" << endl; - report4 << onenum << recdev_adj(1) << " #_last_yr_nobias_adj_in_MPD; begin of ramp" << endl; - report4 << onenum << recdev_adj(2) << " #_first_yr_fullbias_adj_in_MPD; begin of plateau" << endl; - report4 << onenum << recdev_adj(3) << " #_last_yr_fullbias_adj_in_MPD" << endl; - report4 << onenum << recdev_adj(4) << " #_end_yr_for_ramp_in_MPD (can be in forecast to shape ramp, but SS3 sets bias_adj to 0.0 for fcast yrs)" << endl; - report4 << onenum << recdev_adj(5) << " #_max_bias_adj_in_MPD (typical ~0.8; -3 sets all years to 0.0; -2 sets all non-forecast yrs w/ estimated recdevs to 1.0; -1 sets biasadj=1.0 for all yrs w/ recdevs)" << endl; - report4 << onenum << recdev_cycle << " #_period of cycles in recruitment (N parms read below)" << endl; - report4 << onenum << recdev_LO << " #min rec_dev" << endl; - report4 << onenum << recdev_HI << " #max rec_dev" << endl; - report4 << onenum << recdev_read << " #_read_recdevs" << endl; - report4 << "#_end of advanced SR options" << endl; - report4 << "#" << endl; - if (recdev_cycle > 0) - { - for (y = 1; y <= recdev_cycle; y++) - { - NP++; - recdev_cycle_parm_RD(y, 3) = value(recdev_cycle_parm(y)); - report4 << recdev_cycle_parm_RD(y) << " # " << ParmLabel(NP) << endl; - } - } - else - { - report4 << "#_placeholder for full parameter lines for recruitment cycles" << endl; - } - if (recdev_read > 0) - { - report4 << "# Specified recr devs to read" << endl; - report4 << "#_year Input_value # Final_value" << endl; - for (j = 1; j <= recdev_read; j++) - { - y = recdev_input(j, 1); - report4 << recdev_input(j) << " # "; - if (y >= recdev_first) - { - report4 << recdev(y) << endl; - } - else - { - report4 << " not used " << endl; - } - } - } - else - { - report4 << "# read specified recr devs" << endl; - report4 << "#_year Input_value" << endl; - } - report4 << "#" << endl; - report4 << "# all recruitment deviations" << endl - << "# "; - if (recdev_do_early > 0) - { - for (y = recdev_early_start; y <= recdev_early_end; y++) - { - report4 << " " << y << "E"; - } - } - if (do_recdev > 0) - { - for (y = recdev_start; y <= recdev_end; y++) - { - report4 << " " << y << "R"; - } - } - if (Do_Forecast > 0) - { - for (y = recdev_end + 1; y <= YrMax; y++) - { - report4 << " " << y << "F"; - } - } - report4 << endl - << "# "; - if (recdev_do_early > 0) - { - for (y = recdev_early_start; y <= recdev_early_end; y++) - { - NP++; - report4 << " " << recdev(y); - } - } - - if (do_recdev > 0) - { - for (y = recdev_start; y <= recdev_end; y++) - { - NP++; - report4 << " " << recdev(y); - } - } - - if (Do_Forecast > 0 && do_recdev > 0) - { - for (y = recdev_end + 1; y <= YrMax; y++) - { - NP++; - report4 << " " << recdev(y); - } - report4 << endl; - if (Do_Impl_Error > 0) - { - report4 << "# implementation error by year in forecast: "; - for (y = endyr + 1; y <= YrMax; y++) - { - NP++; - report4 << " " << Fcast_impl_error(y); - } - report4 << endl; - } - } - report4 << "#" << endl; - report4 << "#Fishing Mortality info " << endl; - report4 << F_ballpark << " # F ballpark value in units of annual_F" << endl; - report4 << F_ballpark_yr << " # F ballpark year (neg value to disable)" << endl; - - report4 << F_Method << " # F_Method: 1=Pope midseason rate; 2=F as parameter; 3=F as hybrid; 4=fleet-specific parm/hybrid (#4 is superset of #2 and #3 and is recommended)" << endl; - report4 << max_harvest_rate << " # max F (methods 2-4) or harvest fraction (method 1)" << endl; - if (F_Method == 1) - { - report4 << "# F_Method 1: no additional input needed" << endl; - } - else if (F_Method == 2) - { - report4 << F_parm_intval(1) << " # overall start F value (all fleets; used if start phase = 1 and not reading parfile)" << endl; - report4 << F_Method_PH(1) << " # start phase for parms (does hybrid in early phases)" << endl; - report4 << F_detail << " # N detailed inputs to read" << endl; - report4 << "# detailed setup for F_Method=2; -Yr to fill remaining years; -999 for phase or se ignores keeps default for those fields " << endl; - report4 << "#_fleet year seas F_value se phase" << endl; - if (F_detail > 0) - report4 << F_setup2 << endl; - } - else if (F_Method == 3) - { - report4 << F_Tune << " # N iterations for tuning in hybrid mode; recommend 3 (faster) to 5 (more precise if many fleets)" << endl; - } - else if (F_Method == 4) - { - report4 << "# Read list of fleets that do F as parameter; unlisted fleets stay hybrid, bycatch fleets must be included with start_PH=1, high F fleets should switch early" << endl; - report4 << "# (A) fleet;" << endl <<"# (B) F_starting_value (ignored if start_PH=1 or reading from ss3.par);" << - endl << "# (C) start_PH for fleet's Fparms (99 to stay in hybrid, <0 to stay at starting value)" << endl << - "# Terminate list with -9999 for fleet" << endl << - "# or terminate with -9998 to invoke reading fleet-time specific F values after first reading N hybrid tune loops)" << endl; - report4 << "# (A) (B) (C)" << endl; - for (unsigned j = 1; j <= F_Method_4_input.size() - 2; j++) - { - report4 << F_Method_4_input[j] << " # " << fleetname(F_Method_4_input[j](1)) << endl; - } - if (F_detail <=0 ) - {report4 << -9999 << " 1 1 # end of list" << endl << - "#F_detail template: fleet year seas F_value catch_se phase" << endl; } - else - {report4 << -9998 << " 1 1 # end of list, triggers reading F_detail" << endl; } - report4 << F_Tune << " #_number of loops for hybrid tuning; 4 precise; 3 faster; 2 enough if switching to parms is enabled" << endl; - if (F_detail > 0) - { - report4 << "# F_detail: List of fleet-time specific F related values to read; enter -Yr to fill remaining years&seasons; -999 for phase or catch_se keeps base value for the run" << endl; - report4 << "#fleet year seas F_value catch_se phase" << endl; - report4 << F_setup2 << endl; - report4 << "-9999 1 1 1 1 1 # end of F_detail" << endl; - } - } - - report4 << "#" << endl; - report4 << "#_initial_F_parms; for each fleet x season that has init_catch; nest season in fleet; count = " << N_init_F2 << endl; - report4 << "#_for unconstrained init_F, use an arbitrary initial catch and set lambda=0 for its logL" << endl; - report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE" << endl; - if (finish_starter == 999) - { - for (f = 1; f <= Nfleet1; f++) - { - NP++; - init_F_parm_1(f, 3) = value(init_F(f)); - if (obs_equ_catch(1, f) != 0.) - report4 << init_F_parm_1(f) << " # " << ParmLabel(NP) << endl; - } - } - else if (N_init_F2 > 0) - { - for (f = 1; f <= N_init_F2; f++) - { - NP++; - init_F_parm_1(f, 3) = value(init_F(f)); - report4 << init_F_parm_1(f) << " # " << ParmLabel(NP) << endl; - } - } - - report4 << "#" << endl - << "# F rates by fleet x season" << endl; - report4 << "#_year: "; - for (y = styr; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - report4 << " " << y; - } - report4 << endl - << "# seas: "; - for (y = styr; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - report4 << " " << s; - } - report4 << endl; - j = styr + (YrMax - styr) * nseas + nseas - 1; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - report4 << "# " << fleetname(f) << Hrate(f)(styr, j) << endl; - } - NP += N_Fparm; - report4 << "#" << endl; - report4 << "#_Q_setup for fleets with cpue or survey or deviation data" << endl; - report4 << "#_1: fleet number" << endl; - report4 << "#_2: link type: 1=simple q; 2=mirror; 3=power (+1 parm); 4=mirror with scale (+1p); 5=offset (+1p); 6=offset & power (+2p)" << endl; - report4 << "#_ where power is applied as y = q * x ^ (1 + power); so a power value of 0 has null effect" << endl; - report4 << "#_ and with the offset included it is y = q * (x + offset) ^ (1 + power)" << endl; - report4 << "#_3: extra input for link, i.e. mirror fleet# or dev index number" << endl; - report4 << "#_4: 0/1 to select extra sd parameter" << endl; - report4 << "#_5: 0/1 for biasadj or not" << endl; - report4 << "#_6: 0/1 to float" << endl; - if (depletion_fleet > 0) // special code for depletion, so prepare to adjust phases and lambdas - { - f = depletion_fleet; - report4 << "#_survey: " << f << " " << fleetname(f) << " is a depletion fleet" << endl; - if (depletion_type == 0) - report4 << "#_Q_setup(f,2)=0; add 1 to phases of all parms; only R0 active in new phase 1" << endl; - if (depletion_type == 1) - report4 << "#_Q_setup(f,2)=1 only R0 active in phase 1; then exit; useful for data-limited draws of other fixed parameter" << endl; - if (depletion_type == 2) - report4 << "#_Q_setup(f,2)=2 no phase adjustments, can be used when profiling on fixed R0" << endl; - } - - report4 << "#_ fleet link link_info extra_se biasadj float # fleetname" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (Svy_N_fleet(f) > 0) - { - report4 << " " << setw(9) << f; - for (j = 1; j <= 5; j++) - report4 << setw(10) << Q_setup(f, j); - report4 << " # " << fleetname(f) << endl; - } - } - report4 << "-9999 0 0 0 0 0" << endl - << "#" << endl; - - report4 << "#_Q_parameters" << endl; - if (Q_Npar > 0) - { - report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE env-var use_dev dev_mnyr dev_mxyr dev_PH Block Blk_Fxn # parm_name" << endl; - report4.unsetf(std::ios_base::fixed); - report4.unsetf(std::ios_base::floatfield); - for (f = 1; f <= Q_Npar; f++) - { - NP++; - Q_parm_1(f, 3) = value(Q_parm(f)); - for (j = 1; j <= 6; j++) - report4 << setw(14) << Q_parm_1(f, j); - for (j = 7; j <= 14; j++) - report4 << setw(11) << Q_parm_1(f, j); - report4 << " # " << ParmLabel(NP) << endl; - } - report4.unsetf(std::ios_base::fixed); - report4.unsetf(std::ios_base::floatfield); - - if (timevary_parm_start_Q > 0) - { - report4 << "# timevary Q parameters " << endl; - report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE # parm_name" << endl; - for (f = timevary_parm_start_Q; f <= timevary_parm_cnt_Q; f++) - { - NP++; - timevary_parm_rd[f](3) = value(timevary_parm(f)); - for (j = 1; j <= 6; j++) - report4 << setw(14) << timevary_parm_rd[f](j); - report4 << " " << timevary_parm_rd[f](7) << " # " << ParmLabel(NP) << endl; - } - report4 << "# info on dev vectors created for Q parms are reported with other devs after tag parameter section " << endl; - } - else - { - report4 << "#_no timevary Q parameters" << endl; - } - report4.unsetf(std::ios_base::fixed); - report4.unsetf(std::ios_base::floatfield); - } - report4 << "#" << endl; - report4 << "#_size_selex_patterns" << endl; - - report4 << "#Pattern:_0; parm=0; selex=1.0 for all sizes" << endl; - report4 << "#Pattern:_1; parm=2; logistic; with 95% width specification" << endl; - report4 << "#Pattern:_5; parm=2; mirror another size selex; PARMS pick the min-max bin to mirror" << endl; - report4 << "#Pattern:_11; parm=2; selex=1.0 for specified min-max population length bin range" << endl; - report4 << "#Pattern:_15; parm=0; mirror another age or length selex" << endl; - report4 << "#Pattern:_6; parm=2+special; non-parm len selex" << endl; - report4 << "#Pattern:_43; parm=2+special+2; like 6, with 2 additional param for scaling (mean over bin range)" << endl; - report4 << "#Pattern:_8; parm=8; double_logistic with smooth transitions and constant above Linf option" << endl; - report4 << "#Pattern:_9; parm=6; simple 4-parm double logistic with starting length; parm 5 is first length; parm 6=1 does desc as offset" << endl; - report4 << "#Pattern:_21; parm=2*special; non-parm len selex, read as N break points, then N selex parameters" << endl; - report4 << "#Pattern:_22; parm=4; double_normal as in CASAL" << endl; - report4 << "#Pattern:_23; parm=6; double_normal where final value is directly equal to sp(6) so can be >1.0" << endl; - report4 << "#Pattern:_24; parm=6; double_normal with sel(minL) and sel(maxL), using joiners" << endl; - report4 << "#Pattern:_2; parm=6; double_normal with sel(minL) and sel(maxL), using joiners, back compatibile version of 24 with 3.30.18 and older" << endl; - report4 << "#Pattern:_25; parm=3; exponential-logistic in length" << endl; - report4 << "#Pattern:_27; parm=special+3; cubic spline in length; parm1==1 resets knots; parm1==2 resets all " << endl; - report4 << "#Pattern:_42; parm=special+3+2; cubic spline; like 27, with 2 additional param for scaling (mean over bin range)" << endl; - - report4 << "#_discard_options:_0=none;_1=define_retention;_2=retention&mortality;_3=all_discarded_dead;_4=define_dome-shaped_retention" << endl; - report4 << "#_Pattern Discard Male Special" << endl; - for (f = 1; f <= Nfleet; f++) - report4 << seltype_rd(f) << " # " << f << " " << fleetname(f) << endl; - report4 << "#" << endl; - - report4 << "#_age_selex_patterns" << endl; - report4 << "#Pattern:_0; parm=0; selex=1.0 for ages 0 to maxage" << endl; - report4 << "#Pattern:_10; parm=0; selex=1.0 for ages 1 to maxage" << endl; - report4 << "#Pattern:_11; parm=2; selex=1.0 for specified min-max age" << endl; - report4 << "#Pattern:_12; parm=2; age logistic" << endl; - report4 << "#Pattern:_13; parm=8; age double logistic. Recommend using pattern 18 instead." << endl; - report4 << "#Pattern:_14; parm=nages+1; age empirical" << endl; - report4 << "#Pattern:_15; parm=0; mirror another age or length selex" << endl; - report4 << "#Pattern:_16; parm=2; Coleraine - Gaussian" << endl; - report4 << "#Pattern:_17; parm=nages+1; empirical as random walk N parameters to read can be overridden by setting special to non-zero" << endl; - report4 << "#Pattern:_41; parm=2+nages+1; // like 17, with 2 additional param for scaling (mean over bin range)" << endl; - report4 << "#Pattern:_18; parm=8; double logistic - smooth transition" << endl; - report4 << "#Pattern:_19; parm=6; simple 4-parm double logistic with starting age" << endl; - report4 << "#Pattern:_20; parm=6; double_normal,using joiners" << endl; - report4 << "#Pattern:_26; parm=3; exponential-logistic in age" << endl; - report4 << "#Pattern:_27; parm=3+special; cubic spline in age; parm1==1 resets knots; parm1==2 resets all " << endl; - report4 << "#Pattern:_42; parm=2+special+3; // cubic spline; with 2 additional param for scaling (mean over bin range)" << endl; - report4 << "#Age patterns entered with value >100 create Min_selage from first digit and pattern from remainder" << endl; - report4 << "#_Pattern Discard Male Special" << endl; - for (f = 1; f <= Nfleet; f++) - report4 << seltype_rd(f + Nfleet) << " # " << f << " " << fleetname(f) << endl; - report4 << "#" << endl; - - report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE env-var use_dev dev_mnyr dev_mxyr dev_PH Block Blk_Fxn # parm_name" << endl; - - // set back to default configuration for output - report4.unsetf(std::ios_base::fixed); - report4.unsetf(std::ios_base::floatfield); - - { - k = 0; - for (f = 1; f <= 2 * Nfleet; f++) - { - if (f > Nfleet) - { - f1 = f - Nfleet; - anystring = "AgeSelex"; - } - else - { - f1 = f; - anystring = "LenSelex"; - } - report4 << "# " << f1 << " " << fleetname(f1) << " " << anystring << endl; - for (j = 1; j <= N_selparmvec(f); j++) - { - NP++; - k++; - selparm_1(k)(3) = value(selparm(k)); - for (z = 1; z <= 6; z++) - report4 << setw(14) << selparm_1(k, z); - for (z = 7; z <= 14; z++) - report4 << setw(11) << selparm_1(k, z); - report4 << " # " << ParmLabel(NP) << endl; - } - } - if (Comp_Err_ParmCount > 0) - { - report4 << "#_Dirichlet and/or MV Tweedie parameters for composition error" << endl; - report4 << "#_multiple_fleets_can_refer_to_same_parm;_but_list_cannot_have_gaps" << endl; - k = Comp_Err_Parm_Start; - for (f = 1; f <= Comp_Err_ParmCount; f++) - { - k++; - NP++; - selparm_1(k)(3) = value(selparm(k)); - for (z = 1; z <= 6; z++) - report4 << setw(14) << selparm_1(k, z); - for (z = 7; z <= 14; z++) - report4 << setw(11) << selparm_1(k, z); - report4 << " # " << ParmLabel(NP) << endl; - } - } - else - { - report4 << "#_No_Dirichlet parameters" << endl; - } - - if (N_selparm3 > N_selparm) - { - report4 << "# timevary selex parameters " << endl; - report4 << "#_ LO HI INIT PRIOR PR_SD PR_type PHASE # parm_name" << endl; - // for (f=timevary_parm_start_sel;f<=timevary_parm_cnt_sel;f++) - for (int f = timevary_parm_start_sel; f <= timevary_parm_start_sel + N_selparm3 - N_selparm - 1; f++) - { - NP++; - timevary_parm_rd[f](3) = value(timevary_parm(f)); - for (j = 1; j <= 6; j++) - report4 << setw(14) << timevary_parm_rd[f](j); - report4 << " " << timevary_parm_rd[f](7) << " # " << ParmLabel(NP) << endl; - } - report4 << "# info on dev vectors created for selex parms are reported with other devs after tag parameter section " << endl; - } - else - { - report4 << "#_no timevary selex parameters" << endl; - } - - report4 << "#" << endl - << TwoD_AR_do << " # use 2D_AR1 selectivity? (0/1)" << endl; - if (TwoD_AR_do > 0) - { - k = timevary_parm_start_sel + N_selparm3 - N_selparm - 1; // starting point in timevary_parm_rd - report4 << "#_specifications for 2D_AR1 and associated parameters" << endl; - report4 << "#_specs: fleet, ymin, ymax, amin, amax, sigma_amax, use_rho, len1/age2, devphase, before_range, after_range" << endl; - report4 << "#_sigma_amax>amin means create sigma parm for each bin from min to sigma_amax; sigma_amax<0 means just one sigma parm is read and used for all bins" << endl; - for (j = 1; j <= TwoD_AR_cnt; j++) - { - ivector tempvec(1, 13); // fleet, ymin, ymax, amin, amax, sigma_amax, use_rho, len1/age2, devphase - tempvec(1, 13) = TwoD_AR_def[j](1, 13); - tempvec(6) = TwoD_AR_def_rd[j](6); // restore the read value in case it got changed - int isigmasel = TwoD_AR_def[j](13); // index of first sigmasel parm in selparm - if (tempvec(8) == 1) - { - anystring = "LEN"; - } - else - { - anystring = "AGE"; - } - - report4 << tempvec(1, 11) << " # 2D_AR specs for fleet: " << fleetname(tempvec(1)) << " " << anystring << endl; - int sigma_amax = tempvec(6); - int use_rho = tempvec(7); - int amin = tempvec(4); - int kmax = sigma_amax; - if (kmax < 0) kmax = amin; - for (a = amin; a <= kmax; a++) - { - dvector dtempvec(1, 7); // Lo, Hi, init, prior, prior_sd, prior_type, phase; - k++; - dtempvec = timevary_parm_rd[k](1, 7); - dtempvec(3) = value ( selparm(isigmasel + a - amin) ); - report4 << dtempvec << " # sigma_sel for fleet:_" << tempvec(1) << "; " << anystring << "_" << a <amin means create sigma parm for each bin from min to sigma_amax; sigma_amax<0 means just one sigma parm is read and used for all bins" << endl; - report4 << "#_needed parameters follow each fleet's specifications"< 0) - { - report4 << 1 << " # TG_custom: 0=no read and autogen if tag data exist; 1=read" << endl; - report4 << "#_Note - tag parameters cannot be time-varying" << endl; - report4 << "#_Note - phase=-1000 sets parm value to previous parm; phase=-100X sets to parm(X) value" << endl; - for (f = 1; f <= 3 * N_TG + 2 * Nfleet1; f++) - { - NP++; - report4 << TG_parm2(f)(1, 2) << " " << TG_parm(f) << " " << TG_parm2(f)(4, 14) << " # " << ParmLabel(NP) << endl; - } - } - else - { - report4 << "0 # TG_custom: 0=no read and autogen if tag data exist; 1=read" << endl - << "#_Cond -6 6 1 1 2 0.01 -4 0 0 0 0 0 0 0 #_placeholder if no parameters" << endl; - ; - } - report4 << "#" << endl; - if (timevary_cnt == 0) - { - report4 << "# no timevary parameters" << endl - << "#" << endl; - } - else - { - report4 << "# deviation vectors for timevary parameters" << endl - << "# base base first block block env env dev dev dev dev dev" << endl - << "# type index parm trend pattern link var vectr link _mnyr mxyr phase dev_vector" << endl; - - for (j = 1; j <= timevary_cnt; j++) - { - // report4.precision(6); - // report4.unsetf(std::ios_base::fixed); - // report4.unsetf(std::ios_base::floatfield); - report4 << setw(2) << "# "; - report4 << setw(5) << timevary_def[j](1, 12); - if (timevary_def[j](8) > 0) // now show devs - { - report4 << setw(6) << parm_dev(timevary_def[j](8)); - } - report4 << setw(6) << endl; - } - } - - report4 << "#" << endl - << "# Input variance adjustments factors: " << endl; - report4 << " #_1=add_to_survey_CV" << endl; - report4 << " #_2=add_to_discard_stddev" << endl; - report4 << " #_3=add_to_bodywt_CV" << endl; - report4 << " #_4=mult_by_lencomp_N" << endl; - report4 << " #_5=mult_by_agecomp_N" << endl; - report4 << " #_6=mult_by_size-at-age_N" << endl; - report4 << " #_7=mult_by_generalized_sizecomp" << endl; - report4 << "#_factor fleet value" << endl; - { - if (var_adjust_data.size() > 0) - for (f = 1; f <= Do_Var_adjust; f++) - report4 << setw(6) << var_adjust_data[f - 1](1, 2) << " " << setw(9) << var_adjust_data[f - 1](3) << endl; - } - report4 << " -9999 1 0 # terminator" << endl; - - report4.precision(6); - report4.unsetf(std::ios_base::fixed); - report4.unsetf(std::ios_base::floatfield); - - report4 << "#" << endl - << max_lambda_phase << " #_maxlambdaphase" << endl; - report4 << sd_offset << " #_sd_offset; must be 1 if any growthCV, sigmaR, or survey extraSD is an estimated parameter" << endl; - - report4 << "# read " << N_lambda_changes << " changes to default Lambdas (default value is 1.0)" << endl; - report4 << "# Like_comp codes: 1=surv; 2=disc; 3=mnwt; 4=length; 5=age; 6=SizeFreq; 7=sizeage; 8=catch; 9=init_equ_catch; " << endl - << "# 10=recrdev; 11=parm_prior; 12=parm_dev; 13=CrashPen; 14=Morphcomp; 15=Tag-comp; 16=Tag-negbin; 17=F_ballpark; 18=initEQregime" << endl - << "#like_comp fleet phase value sizefreq_method" << endl; - - if (N_lambda_changes > 0) - report4 << Lambda_changes << endl; - report4 << "-9999 1 1 1 1 # terminator" << endl; - - report4 << "#" << endl - << "# lambdas (for info only; columns are phases)" << endl; - if (Svy_N > 0) - { - for (f = 1; f <= Nfleet; f++) - report4 << "# " << surv_lambda(f) << " #_CPUE/survey:_" << f << endl; - } - if (nobs_disc > 0) - { - for (f = 1; f <= Nfleet; f++) - report4 << "# " << disc_lambda(f) << " #_discard:_" << f << endl; - } - if (nobs_mnwt > 0) - { - for (f = 1; f <= Nfleet; f++) - report4 << "# " << mnwt_lambda(f) << " #_meanbodywt:" << f << endl; - } - if (Nobs_l_tot > 0) - { - for (f = 1; f <= Nfleet; f++) - report4 << "# " << length_lambda(f) << " #_lencomp:_" << f << endl; - } - if (Nobs_a_tot > 0) - { - for (f = 1; f <= Nfleet; f++) - report4 << "# " << age_lambda(f) << " #_agecomp:_" << f << endl; - } - if (SzFreq_Nmeth > 0) - for (f = 1; f <= SzFreq_N_Like; f++) - report4 << "# " << SzFreq_lambda(f) << " #_sizefreq:_" << f << endl; - if (nobs_ms_tot > 0) - { - for (f = 1; f <= Nfleet; f++) - report4 << "# " << sizeage_lambda(f) << " #_size-age:_" << f << endl; - } - for (f = 1; f <= Nfleet; f++) - report4 << "# " << init_equ_lambda(f) << " #_init_equ_catch" << f << endl; - report4 << "# " << recrdev_lambda << " #_recruitments" << endl; - report4 << "# " << parm_prior_lambda << " #_parameter-priors" << endl; - report4 << "# " << parm_dev_lambda << " #_parameter-dev-vectors" << endl; - if (Do_TG > 0) - { - for (TG = 1; TG <= N_TG; TG++) - report4 << "# " << TG_lambda1(TG) << " #_TG-comp_group:_" << TG << endl; - for (TG = 1; TG <= N_TG; TG++) - report4 << "# " << TG_lambda2(TG) << " #_TG-negbin_group:_" << TG << endl; - } - report4 << "# " << CrashPen_lambda << " #_crashPenLambda" << endl; - if (Do_Morphcomp > 0) - report4 << "# " << Morphcomp_lambda << " #_Morphcomplambda" << endl; - report4 << "# " << F_ballpark_lambda << " # F_ballpark_lambda" << endl; - - report4 << Do_More_Std << " # (0/1/2) read specs for more stddev reporting: 0 = skip, 1 = read specs for reporting stdev for selectivity, size, and numbers, 2 = add options for M,Dyn. Bzero, SmryBio" << endl; - - //3868 Do_Selex_Std=More_Std_Input(1); - //3869 Selex_Std_AL=More_Std_Input(2); - //3870 Selex_Std_Year=More_Std_Input(3); - //3872 Selex_Std_Cnt=More_Std_Input(4); - //3873 Do_Growth_Std=More_Std_Input(5); - //3875 Growth_Std_Cnt=More_Std_Input(6); - //3876 Do_NatAge_Std=More_Std_Input(7); - //3877 NatAge_Std_Year=More_Std_Input(8); - //3879 NatAge_Std_Cnt=More_Std_Input(9); - - if (Do_More_Std == 0) // empty/dummy values when extra stddev reporting not used - { - report4 << " # 0 2 0 0 # Selectivity: (1) fleet, (2) 1=len/2=age/3=both, (3) year, (4) N selex bins" << endl; - report4 << " # 0 0 # Growth: (1) growth pattern, (2) growth ages" << endl; - report4 << " # 0 0 0 # Numbers-at-age: (1) area(-1 for all), (2) year, (3) N ages" << endl; - report4 << " # -1 # list of bin #'s for selex std (-1 in first bin to self-generate)" << endl; - report4 << " # -1 # list of ages for growth std (-1 in first bin to self-generate)" << endl; - report4 << " # -1 # list of ages for NatAge std (-1 in first bin to self-generate)" << endl; - } - if (Do_More_Std > 0) // these outputs needed for options 1 and 2 - { - // report4< 0) // vectors associated with options 1 and 2 - { - if (Do_Selex_Std > 0) - { - report4 << Selex_Std_Pick << " # vector with selex std bins (-1 in first bin to self-generate)" << endl; - } - else - { - report4 << " # -1 # list of bin #'s for selex std (-1 in first bin to self-generate)" << endl; - } - // if(Do_Growth_Std>0){ - if (More_Std_Input(5) > 0) - { - report4 << Growth_Std_Pick << " # vector with growth std ages picks (-1 in first bin to self-generate)" << endl; - } - else - { - report4 << " # -1 # list of ages for growth std (-1 in first bin to self-generate)" << endl; - } - if (Do_NatAge_Std != 0) - { - report4 << NatAge_Std_Pick << " # vector with NatAge std ages (-1 in first bin to self-generate)" << endl; - } - else - { - report4 << " # -1 # list of ages for NatAge std (-1 in first bin to self-generate)" << endl; - } - if (Do_More_Std == 2) // additional output when option 2 is selected - { - if (Do_NatM_Std > 0) - { - report4 << NatM_Std_Pick << " # vector with NatM std ages picks (-1 in first bin to self-generate)" << endl; - } - else - { - report4 << " # -1 # list of ages for NatM std (-1 in first bin to self-generate)" << endl; - } - } - } - report4 << fim << endl - << endl; // end of file indicator - return; - } // end of write nucontrol - -// SS_Label_file #19. **SS_write_report.tpl** -// SS_Label_file # * write_bigoutput() // produces *report.sso* and *compreport.sso* -// SS_Label_file # * SPR_profile() // calls SSBpR_Calc() and Equil_Spawn_Recr_Fxn() over a range of F to get SPR, YPR, and SSB and catch curves -// SS_Label_file # * global_MSY() // similar to SPR_profile but first changes all selectivities to knife edge and profiles on age-at-entry -// SS_Label_file # - -//******************************************************************** - /* SS_Label_FUNCTION 40 write_bigoutput */ -FUNCTION void write_bigoutput() - { - if (mceval_counter == 0) - { - anystring = sso_pathname + "Report.sso"; - report_sso_filename = anystring; - if (SS2out.is_open()) - SS2out.close(); - SS2out.open(anystring); // this file was created in globals so accessible to the report_parm function - anystring = sso_pathname + "CompReport.sso"; - if (SS_compout.is_open()) - SS_compout.close(); - SS_compout.open(anystring); - } - else - { - anystring = " "; - sprintf(anystring, "%d", mceval_counter); - if (SS2out.is_open()) - SS2out.close(); - if (SS_compout.is_open()) - SS_compout.close(); - anystring2 = sso_pathname + "Report_mce_"; - if (mceval_counter < 10) - { - anystring2 += "000"; - } - else if (mceval_counter < 100) - { - anystring2 += "00"; - } - else if (mceval_counter < 1000) - { - anystring2 += "0"; - } - anystring2 += anystring + ".sso"; - SS2out.open(anystring2); - report_sso_filename = anystring2; // save so can be reopened in append mode - anystring2 = sso_pathname + "CompReport_mce_"; - if (mceval_counter < 10) - { - anystring2 += "000"; - } - else if (mceval_counter < 100) - { - anystring2 += "00"; - } - else if (mceval_counter < 1000) - { - anystring2 += "0"; - } - anystring2 += anystring + ".sso"; - SS_compout.open(anystring2); - } - - SS2out << version_info(1) << version_info(2) << version_info(3) << endl - << version_info2 << endl; - time(&finish); - SS_compout << version_info(1) << version_info(2) << version_info(3) << endl - << "StartTime: " << ctime(&start); - - SS2out << "StartTime: " << ctime(&start); - SS2out << "EndTime: " << ctime(&finish); - elapsed_time = difftime(finish, start); - hour = long(elapsed_time) / 3600; - minute = long(elapsed_time) % 3600 / 60; - second = (long(elapsed_time) % 3600) % 60; - SS2out << "This run took: " << hour << " hours, " << minute << " minutes, " << second << " seconds." << endl; - SS2out << "Data_File: " << datfilename << endl; - SS2out << "Control_File: " << ctlfilename << endl; - if (readparfile >= 1) - {SS2out << "Start_parm_values_from_SS.PAR" << endl;} - else - {SS2out << "Start_parm_values_from_control_file" << endl;} - SS2out << endl - << "Convergence_Level: " << objective_function_value::pobjfun->gmax << " is_final_gradient" << endl; - temp = get_ln_det_value(); - if (SDmode == 0) - { - SS2out << "Hessian: Not requested." << endl; - } - else // (SDmode == 1) - { - if (temp > 0) - { - SS2out << "Hessian: " << temp << " is ln(determinant)." << endl; - } - if (temp <= 0) - { - SS2out << "Hessian: " << temp << " is ln(determinant). Hessian is not positive definite, so don't trust variance estimates." << endl; - } - } - SS2out << "Final_phase: " << current_phase() << endl; - SS2out << "N_iterations: " << niter << endl; - SS2out << "total_LogL: " << obj_fun << endl; - - if (N_SC > 0) - { - SS2out << endl - << "Starter_Comments" << endl - << Starter_Comments << endl; - } - if (N_DC > 0) - { - SS2out << endl - << "Data_Comments" << endl - << Data_Comments << endl; - } - if (N_CC > 0) - { - SS2out << endl - << "Control_Comments" << endl - << Control_Comments << endl; - } - if (N_FC > 0) - { - SS2out << endl - << "Forecast_Comments" << endl - << Forecast_Comments << endl; - } - - if (N_parm_dev == 0) - pick_report_use(4) = "N"; - if (SzFreq_Nmeth == 0) - pick_report_use(12) = "N"; - if (do_migration == 0) - pick_report_use(13) = "N"; - if (Svy_N == 0) - pick_report_use(21) = "N"; - if (Svy_N == 0) - pick_report_use(22) = "N"; - if (Svy_N == 0) - pick_report_use(23) = "N"; - if (nobs_disc == 0) - pick_report_use(24) = "N"; - if (nobs_disc == 0) - pick_report_use(25) = "N"; - if (nobs_mnwt == 0) - pick_report_use(26) = "N"; - if (Nobs_l_tot == 0) - pick_report_use(27) = "N"; - if (Nobs_a_tot == 0) - pick_report_use(28) = "N"; - if (SzFreq_Nmeth == 0) - pick_report_use(29) = "N"; - if (N_envvar == 0) - pick_report_use(33) = "N"; - if (Do_TG == 0) - pick_report_use(34) = "N"; - if (Grow_type < 3 || Grow_type > 6) - pick_report_use(44) = "N"; - if (MGparm_doseas == 0) - pick_report_use(46) = "N"; - if (N_ageerr == 0) - pick_report_use(51) = "N"; - if (use_length_data == 0) - pick_report_use(46) = "N"; - - SS2out << endl - << "#_KeyWords_of_tables_available_in_report_sso" << endl; - SS2out << "#_NOTE: table_number_is_order_in_which_tables_are_output" << endl; - SS2out << "#_List_Tables_related_to_basic_input_pre-processing_and_output" << endl; - k = 1; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DEFINITIONS" - k = 6; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DERIVED_QUANTITIES" - k = 33; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // ENVIRONMENTAL_DATA" - k = 3; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Input_Variance_Adjustment" - k = 2; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // LIKELIHOOD - k = 7; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MGparm_By_Year_after_adjustments - k = 11; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MORPH_INDEXING (defines_associations_for_sex_growth_pattern_platoons_settlements) - k = 30; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // OVERALL_COMPS (average_length_and_age_composition_observed_by_each_fleet) - k = 5; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // PARAMETERS - k = 4; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // parmdevs_detail - - SS2out << endl - << "# List_Tables_related_to_timeseries_output" << endl; - k = 36; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // BIOMASS_AT_AGE - k = 38; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // BIOMASS_AT_LENGTH - k = 15; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // CATCH - k = 41; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DISCARD_AT_AGE - k = 14; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // EXPLOITATION (showing_F_rates_by_fleet) - k = 40; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // CATCH_AT_AGE - k = 39; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // F_AT_AGE - k = 49; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MEAN_SIZE_TIMESERIES (body length) - k = 35; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // NUMBERS_AT_AGE - k = 37; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // NUMBERS_AT_LENGTH - k = 19; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SPAWN_RECRUIT - k = 20; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SPAWN_RECRUIT_CURVE - k = 17; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SPR_series (equilibrium_SPR_and_YPR_calculations_for_each_year) - k = 16; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // TIME_SERIES - k = 61; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // ANNUAL_TIME_SERIES - - SS2out << endl - << "# List_Tables_related_to_fit_to_data" << endl; - k = 52; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // composition database - k = 24; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DISCARD specification - k = 25; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // DISCARD - k = 21; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // INDEX, CPUE, effort - k = 22; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // INDEX, obs - k = 23; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // INDEX, Q - k = 27; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // FIT_LEN_COMPS - k = 28; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // FIT_AGE_COMPS - k = 29; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // FIT_SIZE_COMPS - k = 26; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MEAN_BODY_WT - k = 34; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // TAG_Recapture - - SS2out << endl - << "# List_Tables_related_to_selectivity_and_discard" << endl; - k = 32; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // AGE_SELEX - k = 31; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // LEN_SELEX - k = 8; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // selparm(Size)_By_Year_after_adjustments - k = 9; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // selparm(Age)_By_Year_after_adjustments - k = 53; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // selex database - - SS2out << endl - << "#_List_Tables_related_to_biology" << endl; - k = 51; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // AGE_AGE'_KEY" - k = 50; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // AGE_LENGTH_KEY - k = 44; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Age-Specific k - k = 42; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // BIOLOGY - k = 47; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Biology-at-age - k = 45; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Growth_parameters - k = 48; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // mean body wt time series - k = 13; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // MOVEMENT (fraction_moving_between_areas) - k = 43; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Natural_Mortality - k = 10; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // RECRUITMENT_DIST (distribution_of_recruits_among_morphs_areas_settlement_time) - k = 46; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Seasonal effects - k = 12; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SIZEFREQ_TRANSLATION (If_using_generalized_size_comp) - - SS2out << endl - << "# List_Tables_related_to_equilibrium_reference_points;_also_see_forecast_report.sso" << endl; - k = 59; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Dynamic_Bzero - k = 55; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // GLOBAL_MSY (including_knife-edge_selex_and_slot-age_selex) - k = 18; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // Kobe_Plot - k = 54; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SPR/YPR_PROFILE - - SS2out << endl - << "# List_Additional_Tables" << endl; - k = 56; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // ss_summary - k = 57; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // rebuilder - k = 58; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // SIS_table - k = 60; - SS2out << pick_report_use(k) << " " << pick_report_name(k) << endl; // wt-at-age.ss - - SS2out << endl - << "# vector_with_report_usage" << endl; - for (k = 1; k <= 60; k++) - { - SS2out << " " << pick_report_use(k); - } - SS2out << endl - << endl; - - // REPORT_KEYWORD 1 DEFINITIONS - if (pick_report_use(1) == "Y") - { - SS2out << endl - << pick_report_name(1) << endl; - SS2out << "N_seasons: " << nseas << endl; - SS2out << "N_sub_seasons: " << N_subseas << endl; - SS2out << "Sum_of_months_on_read_was:_ " << sumseas << " rescaled_to_sum_to: " << sum(seasdur) << endl; - SS2out << "Season_Durations: " << seasdur << endl; - SS2out << "Spawn_month: " << spawn_month << endl - << "Spawn_seas: " << spawn_seas << endl - << "spawntiming as frac. of year: " << spawn_time_seas << endl; - SS2out << "N_areas: " << pop << endl; - SS2out << "Start_year: " << styr << endl; - SS2out << "End_year: " << endyr << endl; - SS2out << "Retro_year: " << retro_yr << endl; - SS2out << "N_forecast_yrs: " << N_Fcast_Yrs << endl; - SS2out << "N_areas: " << pop << endl; - SS2out << "N_sexes: " << gender << endl; - SS2out << "Max_age: " << nages << endl; - SS2out << "Empirical_wt_at_age(0,1): " << WTage_rd << endl; - SS2out << "N_bio_patterns: " << N_GP << endl; - SS2out << "N_platoons: " << N_platoon << endl; - SS2out << "NatMort: " << natM_type << " # options:_(0)1Parm;_(1)N_breakpoints;_(2)Lorenzen;_(3)agespecific;_(4)agespec_withseasinterpolate" << endl; - SS2out << "GrowthModel: " << Grow_type << " # options:_(1)vonBert with L1&L2;_(2)Richards with L1&L2;_(3)age_specific_K_incr;_(4)age_specific_K_decr; (5)age_specific_K_each; (6)not implemented" << endl; - SS2out << "Maturity: " << Maturity_Option << " # options:_(1)length logistic;_(2)age logistic;_(3)read age-maturity;_(4)read age-fecundity;_(5)disabled;_(6)read length-maturity" << endl; - SS2out << "Fecundity: " << Fecund_Option << " # options:_(1)eggs=Wt*(a+b*Wt);_(2)eggs=a*L^b;_(3)eggs=a*Wt^b;_(4)eggs=a+b*L;_(5)eggs=a+b*W" << endl; - SS2out << "Start_from_par(0,1): " << readparfile << endl; - SS2out << "Do_all_priors(0,1): " << Do_all_priors << endl; - SS2out << "Use_softbound(0,1): " << SoftBound << endl; - SS2out << "N_nudata: " << N_nudata << endl; - SS2out << "Max_phase: " << max_phase << endl; - SS2out << "Current_phase: " << current_phase() << endl; - SS2out << "Jitter: " << jitter << endl; - SS2out << "ALK_tolerance: " << ALK_tolerance << endl; - - if (use_length_data > 0) - { - SS2out << "#" << endl << "Length_comp_error_controls" << endl << "Fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize " << endl; - for (f = 1; f <= Nfleet; f++) - if (Nobs_l(f) > 0) - { - int parti_lo = 0; - int parti_hi = 0; - if (Do_Retain(f) == 1) parti_hi = 2; - for (int parti = parti_lo; parti <= parti_hi ; parti++) - { - SS2out << f << " " << parti << " " << min_tail_L(parti, f) << " " << min_comp_L(parti, f) << " " << CombGender_L(parti, f) << " " << AccumBin_L(parti, f) << " " << Comp_Err_L(parti, f) << " " << Comp_Err_L2(parti, f) << " " << min_sample_size_L(parti, f) << " #_ " << fleetname(f) << endl; - } - } - } - - if (n_abins > 0) - { - SS2out << "#" << endl << "Age_comp_error_controls" << endl << "Fleet mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize " << endl; - for (f = 1; f <= Nfleet; f++) - if (Nobs_a(f) > 0) - { - SS2out << f << " " << min_tail_A(f) << " " << min_comp_A(f) << " " << CombGender_A(f) << " " << AccumBin_A(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << min_sample_size_A(f) << " #_ " << fleetname(f) << endl; - } - } - - if(SzFreq_Nmeth > 0) - { - SS2out << "#" << endl << "Size_comp_error_controls" << endl << "#_Sz_method error_type error_parm_ID " << endl; - for (f = 1; f <= SzFreq_Nmeth; f++) - { - SS2out << f << " " << Comp_Err_Sz(f) << " " << Comp_Err_Sz2(f) << endl; - } - } - - SS2out << "#" << endl; - SS2out << "Fleet fleet_type timing area catch_units catch_mult survey_units survey_error Fleet_name" << endl; - for (f = 1; f <= Nfleet; f++) - { - SS2out << f << " " << fleet_setup(f) << " " << Svy_units(f) << " " << Svy_errtype(f) << " " << fleetname(f) << endl; - } - } // end DEFINITIONS - - // REPORT_KEYWORD 2 LIKELIHOOD - if (pick_report_use(2) == "Y") - { - k = current_phase(); - if (k > max_lambda_phase) - k = max_lambda_phase; - SS2out << endl - << pick_report_name(2) << " " << obj_fun << endl; //SS_Label_310 - SS2out << "Component logL*Lambda Lambda" << endl; - SS2out << "TOTAL " << obj_fun << " NA" << endl; - if (F_Method > 1) - SS2out << "Catch " << catch_like * column(catch_lambda, k) << " NA" << endl; - SS2out << "Equil_catch " << equ_catch_like * column(init_equ_lambda, k) << " NA" << endl; - if (Svy_N > 0) - SS2out << "Survey " << surv_like * column(surv_lambda, k) << " NA" << endl; - if (nobs_disc > 0) - SS2out << "Discard " << disc_like * column(disc_lambda, k) << " NA" << endl; - if (nobs_mnwt > 0) - SS2out << "Mean_body_wt " << mnwt_like * column(mnwt_lambda, k) << " NA" << endl; - if (Nobs_l_tot > 0) - SS2out << "Length_comp " << length_like_tot * column(length_lambda, k) << " NA" << endl; - if (Nobs_a_tot > 0) - SS2out << "Age_comp " << age_like_tot * column(age_lambda, k) << " NA" << endl; - if (nobs_ms_tot > 0) - SS2out << "Size_at_age " << sizeage_like * column(sizeage_lambda, k) << " NA" << endl; - if (SzFreq_Nmeth > 0) - SS2out << "SizeFreq " << SzFreq_like * column(SzFreq_lambda, k) << " NA" << endl; - if (Do_Morphcomp > 0) - SS2out << "Morphcomp " << Morphcomp_lambda(k) * Morphcomp_like << " " << Morphcomp_lambda(k) << endl; - if (Do_TG > 0) - SS2out << "Tag_comp " << TG_like1 * column(TG_lambda1, k) << " NA" << endl; - if (Do_TG > 0) - SS2out << "Tag_negbin " << TG_like2 * column(TG_lambda2, k) << " NA" << endl; - SS2out << "Recruitment " << recr_like * recrdev_lambda(k) << " " << recrdev_lambda(k) << endl; - SS2out << "InitEQ_Regime " << regime_like * regime_lambda(k) << " " << regime_lambda(k) << endl; - SS2out << "Forecast_Recruitment " << Fcast_recr_like << " " << Fcast_recr_lambda << endl; - SS2out << "Parm_priors " << parm_like * parm_prior_lambda(k) << " " << parm_prior_lambda(k) << endl; - if (SoftBound > 0) - SS2out << "Parm_softbounds " << SoftBoundPen << " " - << " NA" << endl; - SS2out << "Parm_devs " << (sum(parm_dev_like)) * parm_dev_lambda(k) << " " << parm_dev_lambda(k) << endl; - if (F_ballpark_yr > 0) - SS2out << "F_Ballpark " << F_ballpark_lambda(k) * F_ballpark_like << " " << F_ballpark_lambda(k) << endl; - if (F_ballpark_yr > 0) - SS2out << "F_Ballpark(info_only)_" << F_ballpark_yr << "_estF_tgtF " << annual_F(F_ballpark_yr, 2) << " " << F_ballpark << endl; - // if(F_ballpark_yr>0) SS2out <<"F_Ballpark "< 1) - SS2out << "Catch_lambda: _ " << column(catch_lambda, k) << endl - << "Catch_like: " << catch_like * column(catch_lambda, k) << " " << catch_like << endl; - SS2out << "Init_equ_lambda: _ " << column(init_equ_lambda, k) << endl - << "Init_equ_like: " << equ_catch_like * column(init_equ_lambda, k) << " " << equ_catch_like << endl; - if (Svy_N > 0) - { - SS2out << "Surv_lambda: _ " << column(surv_lambda, k) << endl - << "Surv_like: " << surv_like * column(surv_lambda, k) << " " << surv_like << endl; - SS2out << "Surv_N_use: _ " << Svy_N_fleet_use << endl; - SS2out << "Surv_N_skip: _ " << (Svy_N_fleet - Svy_N_fleet_use) << endl; - } - if (nobs_disc > 0) - { - SS2out << "Disc_lambda: _ " << column(disc_lambda, k) << endl - << "Disc_like: " << disc_like * column(disc_lambda, k) << " " << disc_like << endl; - SS2out << "Disc_N_use: _ " << disc_N_fleet_use << endl; - SS2out << "Disc_N_skip: _ " << (disc_N_fleet - disc_N_fleet_use) << endl; - } - if (nobs_mnwt > 0) - { - SS2out << "mnwt_lambda: _ " << column(mnwt_lambda, k) << endl; - SS2out << "mnwt_like: " << mnwt_like * column(mnwt_lambda, k) << " " << mnwt_like << endl; - SS2out << "mnwt_N_use: _ " << mnwt_N_fleet_use << endl; - SS2out << "mnwt_N_skip: _ " << (mnwt_N_fleet - mnwt_N_fleet_use) << endl; - } - if (Nobs_l_tot > 0) - { - SS2out << "Length_lambda: _ " << column(length_lambda, k) << endl; - SS2out << "Length_like: " << length_like_tot * column(length_lambda, k) << " " << length_like_tot << endl; - SS2out << "Length_N_use: _ " << Nobs_l_use << endl; - SS2out << "Length_N_skip: _ " << (Nobs_l - Nobs_l_use) << endl; - } - if (Nobs_a_tot > 0) - { - SS2out << "Age_lambda: _ " << column(age_lambda, k) << endl; - SS2out << "Age_like: " << age_like_tot * column(age_lambda, k) << " " << age_like_tot << endl; - SS2out << "Age_N_use: _ " << Nobs_a_use << endl; - SS2out << "Age_N_skip: _ " << (Nobs_a - Nobs_a_use) << endl; - } - if (nobs_ms_tot > 0) - { - SS2out << "Sizeatage_lambda: _ " << column(sizeage_lambda, k) << endl; - SS2out << "sizeatage_like: " << sizeage_like * column(sizeage_lambda, k) << " " << sizeage_like << endl; - SS2out << "sizeatage_N_use: _ " << Nobs_ms_use << endl; - SS2out << "sizeatage_N_skip: _ " << (Nobs_ms - Nobs_ms_use) << endl; - } - - // Parm_devs_detail - // (only reported if there are parameter deviations) - if (pick_report_use(4) == "Y") - { - SS2out << endl - << pick_report_name(4) << endl; - SS2out << "Index Phase MinYr MaxYr N stddev Rho Like_devs Like_se mean rmse var sqrt(var) est_rho D-W" << endl; - for (i = 1; i <= N_parm_dev; i++) - { - dvector for_AR1(parm_dev_minyr(i), parm_dev_maxyr(i)); - dvector for_var(parm_dev_minyr(i), parm_dev_maxyr(i)); - int y1 = parm_dev_minyr(i); - int y2 = parm_dev_maxyr(i); - double count; - count = float(y2 - y1 + 1.); - double mean; - mean = value(sum(parm_dev(i)) / count); - for (j = y1 + 1; j <= y2; j++) - { - for_AR1(j) = value(parm_dev(i, j - 1)) - mean; - } - for_var = value(parm_dev(i)) - mean; - double cross; - double Durbin; - double var; - var = sumsq(for_var); - cross = 0.; - Durbin = 0; - for (j = y1 + 1; j <= y2; j++) - { - cross += for_var(j) * for_AR1(j); - Durbin += square(for_var(j) - for_AR1(j)); - } - cross /= (count - 1.); - Durbin /= (var + 1.0e-09); - var /= count; - SS2out << i << " " << parm_dev_PH(i) << " " << y1 << " " << y2 << " " << count << " " << parm_dev_stddev(i) << " " << parm_dev_rho(i) << " " << parm_dev_like(i) << " " << sum(parm_dev(i)) / count << " " << sqrt(1.0e-09 + sumsq(parm_dev(i)) / (count)) << " " << var << " " << sqrt(1.0e-09 + var) << " " << cross / (1.0e-09 + var) << " " << Durbin << " " << endl; - } - } - if (SzFreq_Nmeth > 0) - { - for (j = 1; j <= SzFreq_Nmeth; j++) - { - SS2out << "SizeFreq_lambda:_" << j << "; "; - if (j == 1) - { - SS2out << "_ "; - } - else - { - SS2out << "_ "; - } - for (f = 1; f <= Nfleet; f++) - { - if (SzFreq_LikeComponent(f, j) > 0) - { - SS2out << SzFreq_lambda(SzFreq_LikeComponent(f, j), k) << " "; - } - else - { - SS2out << " NA "; - } - } - SS2out << endl; - SS2out << "SizeFreq_like:_" << j << "; "; - if (j == 1) - { - SS2out << SzFreq_like * column(SzFreq_lambda, k) << " "; - } - else - { - SS2out << "_ "; - } - for (f = 1; f <= Nfleet; f++) - { - if (SzFreq_LikeComponent(f, j) > 0) - { - SS2out << SzFreq_like(SzFreq_LikeComponent(f, j)) << " "; - } - else - { - SS2out << " NA "; - } - } - SS2out << endl; - } - // SS2out< 0) - { - SS2out << "#" << endl - << "Tag_Group: ALL "; - for (f = 1; f <= N_TG; f++) - SS2out << f << " "; - SS2out << endl; - SS2out << "Tag_comp_Lambda _ " << column(TG_lambda1, k) << endl - << "Tag_comp_Like " << TG_like1 * column(TG_lambda1, k) << " " << TG_like1 << endl; - SS2out << "Tag_negbin_Lambda _ " << column(TG_lambda2, k) << endl - << "Tag_negbin_Like " << TG_like2 * column(TG_lambda2, k) << " " << TG_like2 << endl; - } - SS2out << endl; - - SS2out << endl - << pick_report_name(3) << endl; - SS2out << "Fleet "; - for (i = 1; i <= Nfleet; i++) - { - SS2out << " " << i; - } - SS2out << endl; - SS2out << "Index_extra_CV " << var_adjust(1) << endl; - SS2out << "Discard_extra_CV " << var_adjust(2) << endl; - SS2out << "MeanBodyWt_extra_CV " << var_adjust(3) << endl; - SS2out << "effN_mult_Lencomp " << var_adjust(4) << endl; - SS2out << "effN_mult_Agecomp " << var_adjust(5) << endl; - SS2out << "effN_mult_Len_at_age " << var_adjust(6) << endl; - SS2out << "effN_mult_generalized_sizecomp " << var_adjust(7) << endl; - - SS2out << "MG_parms_Using_offset_approach_#:_" << MGparm_def << " (1=none, 2= M, G, CV_G as offset from female_GP1, 3=like SS2 V1.x)" << endl; - } - - // REPORT_KEYWORD 5 PARAMETERS - if (pick_report_use(5) == "Y") - { - SS2out << endl - << pick_report_name(5) << endl; - SS2out << "Num Label Value Active_Cnt Phase Min Max Init Used Status Parm_StDev Gradient Pr_type Prior Pr_SD Pr_Like Value_again Value-1.96*SD Value+1.96*SD V_1% V_10% V_20% V_30% V_40% V_50% V_60% V_70% V_80% V_90% V_99% P_val P_lowCI P_hiCI P_1% P_10% P_20% P_30% P_40% P_50% P_60% P_70% P_80% P_90% P_99%" << endl; - - NP = 0; // count of number of parameters - active_count = 0; - Nparm_on_bound = 0; - int Activ; - for (j = 1; j <= N_MGparm2; j++) - { - NP++; - Activ = 0; - if (active(MGparm(j))) - { - active_count++; - Activ = 1; - } - Report_Parm(NP, active_count, Activ, MGparm(j), MGparm_LO(j), MGparm_HI(j), MGparm_RD(j), MGparm_use(j), MGparm_PR(j), MGparm_CV(j), MGparm_PRtype(j), MGparm_PH(j), MGparm_Like(j)); - } - - for (j = 1; j <= N_SRparm3; j++) - { - NP++; - Activ = 0; - if (active(SRparm(j))) - { - active_count++; - Activ = 1; - } - Report_Parm(NP, active_count, Activ, SRparm(j), SRparm_LO(j), SRparm_HI(j), SRparm_RD(j), SRparm_use(j), SRparm_PR(j), SRparm_CV(j), SRparm_PRtype(j), SRparm_PH(j), SRparm_Like(j)); - } - - if (recdev_cycle > 0) - { - for (j = 1; j <= recdev_cycle; j++) - { - NP++; - Activ = 0; - if (active(recdev_cycle_parm(j))) - { - active_count++; - Activ = 1; - } - Report_Parm(NP, active_count, Activ, recdev_cycle_parm(j), recdev_cycle_parm_RD(j, 1), recdev_cycle_parm_RD(j, 2), recdev_cycle_parm_RD(j, 3), recdev_cycle_use(j), recdev_cycle_parm_RD(j, 4), recdev_cycle_parm_RD(j, 5), recdev_cycle_parm_RD(j, 6), recdev_cycle_parm_RD(j, 7), recdev_cycle_Like(j)); - } - } - - if (recdev_do_early > 0) - { - for (i = recdev_early_start; i <= recdev_early_end; i++) - { - NP++; - SS2out << NP << " " << ParmLabel(NP) << " " << recdev(i); - if (active(recdev_early)) - { - active_count++; - SS2out << " " << active_count << " " << recdev_early_PH << " " << recdev_LO << " " << recdev_HI << " " << recdev_RD(i) << " " << recdev_use(i) << " act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); - } - else - { - SS2out << " _ _ _ _ _ _ NA _ _ "; - } - SS2out << " dev " << endl; - } - } - - if (do_recdev > 0) - { - for (i = recdev_start; i <= recdev_end; i++) - { - NP++; - SS2out << NP << " " << ParmLabel(NP) << " " << recdev(i); - if (active(recdev1) || active(recdev2)) - { - active_count++; - SS2out << " " << active_count << " " << recdev_PH << " " << recdev_LO << " " << recdev_HI << " " << recdev_RD(i) << " " << recdev_use(i) << " act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); - } - else - { - SS2out << " _ _ _ _ _ _ NA _ _ "; - } - SS2out << " dev " << endl; - } - } - - if (Do_Forecast > 0 && do_recdev > 0) - { - for (i = recdev_end + 1; i <= YrMax; i++) - { - NP++; - SS2out << NP << " " << ParmLabel(NP) << " " << Fcast_recruitments(i); - if (active(Fcast_recruitments)) - { - active_count++; - SS2out << " " << active_count << " " << Fcast_recr_PH2 << " " << recdev_LO << " " << recdev_HI << " " << recdev_RD(i) << " " << recdev_use(i) << " act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); - } - else - { - SS2out << " _ _ _ _ _ _ NA _ _ "; - } - SS2out << " dev " << endl; - } - } - - if (Do_Impl_Error > 0) - { - for (i = endyr + 1; i <= YrMax; i++) - { - NP++; - SS2out << NP << " " << ParmLabel(NP) << " " << Fcast_impl_error(i); - if (Fcast_recr_PH2 > 0) // intentionally using recdev phase - { - active_count++; - SS2out << " " << active_count << " " << Fcast_recr_PH2 << " -1 1 0 0 act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); - } - else - { - SS2out << " _ _ _ _ _ _ NA _ _ "; - } - SS2out << " dev " << endl; - } - } - for (j = 1; j <= N_init_F; j++) - { - NP++; - Activ = 0; - if (active(init_F(j))) - { - active_count++; - Activ = 1; - } - Report_Parm(NP, active_count, Activ, init_F(j), init_F_LO(j), init_F_HI(j), init_F_RD(j), init_F_use(j), init_F_PR(j), init_F_CV(j), init_F_PRtype(j), init_F_PH(j), init_F_Like(j)); - } - - if (N_Fparm > 0) - { - for (i = 1; i <= N_Fparm; i++) - { - NP++; - Activ = 0; - SS2out << NP << " " << ParmLabel(NP) << " " << F_rate(i); - if (active(F_rate(i))) - { - active_count++; - Activ = 1; - SS2out << " " << active_count << " " << Fparm_PH[i] << " 0.0 " << max_harvest_rate << " " << F_parm_intval(Fparm_loc[i](1)) << " " << Fparm_use(i) << " act " << CoVar(active_count, 1) << " " << parm_gradients(active_count); - } - else - { - SS2out << " _ _ _ _ _ _ NA _ _ "; - } - SS2out << " F " << endl; - } - } - - for (j = 1; j <= Q_Npar2; j++) - { - NP++; - Activ = 0; - if (active(Q_parm(j))) - { - active_count++; - Activ = 1; - } - Report_Parm(NP, active_count, Activ, Q_parm(j), Q_parm_LO(j), Q_parm_HI(j), Q_parm_RD(j), Q_parm_use(j), Q_parm_PR(j), Q_parm_CV(j), Q_parm_PRtype(j), Q_parm_PH(j), Q_parm_Like(j)); - } - - for (j = 1; j <= N_selparm2; j++) - { - NP++; - Activ = 0; - if (active(selparm(j))) - { - active_count++; - Activ = 1; - } - Report_Parm(NP, active_count, Activ, selparm(j), selparm_LO(j), selparm_HI(j), selparm_RD(j), selparm_use(j), selparm_PR(j), selparm_CV(j), selparm_PRtype(j), selparm_PH(j), selparm_Like(j)); - } - - if (Do_TG > 0) - { - k = 3 * N_TG + 2 * Nfleet1; - for (j = 1; j <= k; j++) - { - NP++; - Activ = 0; - if (active(TG_parm(j))) - { - active_count++; - Activ = 1; - } - Report_Parm(NP, active_count, Activ, TG_parm(j), TG_parm_LO(j), TG_parm_HI(j), TG_parm2(j, 3), TG_parm_use(j), TG_parm2(j, 4), TG_parm2(j, 5), TG_parm2(j, 6), TG_parm_PH(j), TG_parm_Like(j)); - } - } - - if (N_parm_dev > 0) - { - for (i = 1; i <= N_parm_dev; i++) - for (j = parm_dev_minyr(i); j <= parm_dev_maxyr(i); j++) - { - NP++; - SS2out << NP << " " << ParmLabel(NP) << " " << parm_dev(i, j); - if (parm_dev_PH(i) > 0) - { - active_count++; - SS2out << " " << active_count << " " << parm_dev_PH(i) << " -10 10 " << parm_dev_RD(i, j) << " " << parm_dev_use(i, j); - temp = (parm_dev(i, j) - (-10)) / (20); - if (temp <= 0.0 || temp >= 1.0) - { - SS2out << " BOUND "; - Nparm_on_bound++; - } - else if (temp < 0.01) - { - SS2out << " LO "; - Nparm_on_bound++; - } - else if (temp >= 0.99) - { - SS2out << " HI "; - Nparm_on_bound++; - } - else if (parm_dev(i, j) == parm_dev_use(i, j) && parm_dev_PH(i) > 0) - { - SS2out << " NO_MOVE "; - } - else - { - SS2out << " act "; - } - SS2out << CoVar(active_count, 1) << " " << parm_gradients(active_count) << " dev " << endl; - } - else - { - SS2out << " _ _ _ _ _ _ NA _ _ dev" << endl; - } - } - } - - SS2out << "#" << endl - << "Number_of_parameters: " << NP << endl; - SS2out << "Active_count: " << active_count << endl; - SS2out << "Number_of_active_parameters_on_or_within_1%_of_min-max_bound: " << Nparm_on_bound << endl; - } - - // REPORT_KEYWORD 6 DERIVED_QUANTITIES - if (pick_report_use(6) == "Y") - { - SS2out << endl - << pick_report_name(6) << endl; - SS2out << "SPR_std_report_basis: " << SPR_report_label << endl; - SS2out << "F_std_report_basis: " << F_report_label << endl; - SS2out << "B_ratio_denominator: " << depletion_basis_label << endl; - NP = deriv_start; - active_count = deriv_covar_start; - SS2out << "Label Value StdDev (Val-1.0)/Stddev CumNorm" << endl; - for (j = 1; j <= N_STD_Yr; j++) - { - NP++; - SS2out << ParmLabel(NP) << " " << SSB_std(j); - active_count++; - SS2out << " " << CoVar(active_count, 1) << endl; - } - for (j = 1; j <= N_STD_Yr; j++) - { - NP++; - SS2out << ParmLabel(NP) << " " << recr_std(j); - active_count++; - SS2out << " " << CoVar(active_count, 1) << endl; - } - for (j = 1; j <= N_STD_Yr_Ofish; j++) - { - NP++; - SS2out << ParmLabel(NP) << " " << SPR_std(j); - active_count++; - SS2out << " " << CoVar(active_count, 1); - if (CoVar(active_count, 1) > 0.0) - { - temp = value((SPR_std(j) - 1.0) / CoVar(active_count, 1)); - SS2out << " " << temp << " " << cumd_norm(temp); - } - SS2out << endl; - } - post_vecs << runnumber << " 0 " << obj_fun << " F/Fmsy_stdev "; - for (j = 1; j <= N_STD_Yr_F; j++) - { - NP++; - SS2out << ParmLabel(NP) << " " << F_std(j); - active_count++; - SS2out << " " << CoVar(active_count, 1); - post_vecs << CoVar(active_count, 1) << " "; - if (CoVar(active_count, 1) > 0.0) - { - temp = value((F_std(j) - 1.0) / CoVar(active_count, 1)); - SS2out << " " << temp << " " << cumd_norm(temp); - } - SS2out << endl; - } - post_vecs << endl; - post_vecs << runnumber << " 0 " << obj_fun << " B/Bmsy_stdev "; - - for (j = 1; j <= N_STD_Yr_Dep; j++) - { - NP++; - SS2out << ParmLabel(NP) << " " << depletion(j); - active_count++; - SS2out << " " << CoVar(active_count, 1); - post_vecs << CoVar(active_count, 1) << " "; - if (CoVar(active_count, 1) > 0.0) - { - temp = value((depletion(j) - 1.0) / CoVar(active_count, 1)); - SS2out << " " << temp << " " << cumd_norm(temp); - } - SS2out << endl; - } - post_vecs << endl; - for (j = 1; j <= N_STD_Mgmt_Quant; j++) - { - NP++; - active_count++; - SS2out << ParmLabel(NP) << " " << Mgmt_quant(j); - - SS2out << " " << CoVar(active_count, 1) << endl; - } - - for (j = 1; j <= Extra_Std_N; j++) - { - NP++; - active_count++; - SS2out << ParmLabel(NP) << " " << Extra_Std(j); - SS2out << " " << CoVar(active_count, 1) << endl; - } - - if (Svy_N_sdreport > 0) - { - k = 0; - for (f = 1; f <= Nfleet; ++f) - { - if (Svy_sdreport(f) > 0) - { - for (j = 1; j <= Svy_N_fleet(f); j++) - { - active_count++; - k++; - SS2out << fleetname(f) << "_" << Svy_yr(f, j) << " "; - SS2out << Svy_est(f, j) << " " << CoVar(active_count, 1) << " " << Svy_sdreport_est(k) << endl; - } - } - } - } - } - - // REPORT_KEYWORD 7 MGPARM_BY_YEAR - if (pick_report_use(7) == "Y") - { - k1 = YrMax; - SS2out << endl - << pick_report_name(7) << endl; - SS2out << "Yr Change? "; - for (i = 1; i <= N_MGparm2; i++) - SS2out << " " << ParmLabel(i); - SS2out << endl; - for (y = styr; y <= k1; y++) - SS2out << y << " " << timevary_MG(y, 0) << " " << mgp_save(y) << endl; - SS2out << endl; - } - - // REPORT_KEYWORD 8 SELPARM_SIZE_BY_YEAR - if (pick_report_use(8) == "Y") - { - k1 = YrMax; - if (Fcast_timevary_Selex == 0) - { - SS2out << "forecast_selectivity_averaged_over_years:_" << Fcast_Sel_yr1 << "_to_" << Fcast_Sel_yr2 << endl; - } - else - { - SS2out << "forecast_selectivity_from_time-varying_parameters " << endl; - } - SS2out << endl - << pick_report_name(8) << endl; - SS2out << "Fleet Yr Change? Parameters" << endl; - for (f = 1; f <= Nfleet; f++) - for (y = styr; y <= k1; y++) - { - k = N_selparmvec(f); - if (k > 0) - SS2out << f << " " << y << " " << timevary_sel(y, f) << " " << save_sp_len(y, f)(1, k) << endl; - } - } - - // REPORT_KEYWORD 9 SELPARM_AGE_BY_YEAR - if (pick_report_use(9) == "Y") - { - k1 = YrMax; - SS2out << endl - << pick_report_name(9) << endl; - SS2out << "Fleet Yr Change? Parameters" << endl; - for (f = Nfleet + 1; f <= 2 * Nfleet; f++) - for (y = styr; y <= k1; y++) - { - k = N_selparmvec(f); - if (k > 0) - SS2out << f - Nfleet << " " << y << " " << timevary_sel(y, f) << " " << save_sp_len(y, f)(1, k) << endl; - } - } - - // REPORT_KEYWORD 10 RECRUITMENT_DISTRIBUTION - if (pick_report_use(10) == "Y") - { - SS2out << endl - << pick_report_name(10) << endl; - SS2out << "Settle# settle_timing# G_pattern Area Settle_Month Seas Age Time_w/in_seas recr_dist_F recr_dist_M" << endl; - for (settle = 1; settle <= N_settle_assignments; settle++) - { - gp = settlement_pattern_rd(settle, 1); // growth patterns - p = settlement_pattern_rd(settle, 3); // settlement area - settle_time = settle_assignments_timing(settle); - SS2out << settle << " " << settle_time << " " << gp << " " << p << " " << Settle_month(settle_time) << " " << Settle_seas(settle_time) << " " << Settle_age(settle_time) << " " << Settle_timing_seas(settle_time) << " " << recr_dist(styr, gp, settle_time, p); - if (gender == 2) {SS2out << " " << recr_dist(styr, gp + N_GP, settle_time, p) << endl;} else {SS2out << " NA" << endl; } - } - SS2out << "#" << endl - << "RECRUITMENT_DIST_Bmark" << endl - << "Settle# settle_timing# G_pattern Area Settle_Month Seas Age Time_w/in_seas recr_dist_F recr_dist_M" << endl; - for (settle = 1; settle <= N_settle_assignments; settle++) - { - gp = settlement_pattern_rd(settle, 1); // growth patterns - p = settlement_pattern_rd(settle, 3); // settlement area - settle_time = settle_assignments_timing(settle); - SS2out << settle << " " << settle_time << " " << gp << " " << p << " " << Settle_month(settle_time) << " " << Settle_seas(settle_time) << " " << Settle_age(settle_time) << " " << Settle_timing_seas(settle_time) << " " << recr_dist_unf(gp, settle_time, p) / (Bmark_Yr(8) - Bmark_Yr(7) + 1); - if (gender == 2) {SS2out << " " << recr_dist_unf(gp + N_GP, settle_time, p) / (Bmark_Yr(8) - Bmark_Yr(7) + 1) << endl;} else {SS2out << " NA" << endl; } - } - SS2out << "#" << endl - << "RECRUITMENT_DIST_endyr" << endl - << "Settle# settle_timing# G_pattern Area Settle_Month Seas Age Time_w/in_seas recr_dist_F recr_dist_M" << endl; - for (settle = 1; settle <= N_settle_assignments; settle++) - { - gp = settlement_pattern_rd(settle, 1); // growth patterns - p = settlement_pattern_rd(settle, 3); // settlement area - settle_time = settle_assignments_timing(settle); - SS2out << settle << " " << settle_time << " " << gp << " " << p << " " << Settle_month(settle_time) << " " << Settle_seas(settle_time) << " " << Settle_age(settle_time) << " " << Settle_timing_seas(settle_time) << " " << recr_dist_endyr(gp, settle_time, p); - if (gender == 2) {SS2out << " " << recr_dist(endyr, gp + N_GP, settle_time, p) << endl;} else {SS2out << " NA" << endl; } - } - - SS2out << "#" << endl; - SS2out << "RECRUITMENT_DIST_TIMESERIES" << endl; - SS2out << "GP: "; - for (gp = 1; gp <= N_GP; gp++) - for (settle = 1; settle <= N_settle_timings; settle++) - for (p = 1; p <= pop; p++) - for (int sex = 1; sex <= gender; sex++) - if (recr_dist_pattern(gp, settle, p) == 1) SS2out << gp << " "; - SS2out << endl; - SS2out << "settle_timing: "; - for (gp = 1; gp <= N_GP; gp++) - for (settle = 1; settle <= N_settle_timings; settle++) - for (p = 1; p <= pop; p++) - for (int sex = 1; sex <= gender; sex++) - if (recr_dist_pattern(gp, settle, p) == 1) SS2out << settle << " "; - SS2out << endl; - SS2out << "area: "; - for (gp = 1; gp <= N_GP; gp++) - for (settle = 1; settle <= N_settle_timings; settle++) - for (p = 1; p <= pop; p++) - for (int sex = 1; sex <= gender; sex++) - if (recr_dist_pattern(gp, settle, p) == 1) SS2out << p << " "; - SS2out << endl; - SS2out << "sex: "; - for (gp = 1; gp <= N_GP; gp++) - for (settle = 1; settle <= N_settle_timings; settle++) - for (p = 1; p <= pop; p++) - for (int sex = 1; sex <= gender; sex++) - {if (recr_dist_pattern(gp, settle, p) == 1) SS2out << sex << " ";} - SS2out << endl; - - SS2out << "Year recr_dist" << endl; - for (y = styr; y <= YrMax; y++) - { - SS2out << y << " "; - for (gp = 1; gp <= N_GP; gp++) - for (settle = 1; settle <= N_settle_timings; settle++) - for (p = 1; p <= pop; p++) - for (int sex = 1; sex <= gender; sex++) - if (recr_dist_pattern(gp, settle, p) == 1) - { - SS2out << " " << recr_dist(y, gp + (sex -1) * N_GP, settle, p); - } - SS2out << endl; - } - } - - // REPORT_KEYWORD 11 MORPH_INDEXING - if (pick_report_use(11) == "Y") - { - SS2out << endl - << pick_report_name(11) << endl; - SS2out << "Index GP Sex BirthSeas Platoon Platoon_Dist Sex*GP Sex*GP*Settle BirthAge_Rel_Jan1" << endl; - for (g = 1; g <= gmorph; g++) - { - SS2out << g << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << GP2(g) << " " << platoon_distr(GP2(g)) << " " << GP(g) << " " << GP3(g) << " " << azero_G(g) << endl; - } - } - - // REPORT_KEYWORD 12 SIZEFREQ_TRANSLATION - // 3darray SzFreqTrans(1,SzFreq_Nmeth*nseas,1,nlength2,1,SzFreq_Nbins_seas_g); - if (pick_report_use(12) == "Y" && SzFreq_Nmeth > 0) - { - SS2out << endl - << pick_report_name(12) << endl; - SS2out << "#_NOTE: rows_are_population_length_bins;_columns_are_recipient_size_bins_according_to_the_specified_method" << endl; - for (SzFreqMethod = 1; SzFreqMethod <= SzFreq_Nmeth; SzFreqMethod++) - { - SS2out << SzFreqMethod << " gp seas len mid-len "; - if (SzFreq_scale(SzFreqMethod) == 1) - { - SS2out << " mid-kg "; - } - else if (SzFreq_scale(SzFreqMethod) == 2) - { - SS2out << " mid-lbs "; - } - else if (SzFreq_scale(SzFreqMethod) == 3) - { - SS2out << " mid-cm "; - } - else - { - SS2out << " mid-inch "; - } - SS2out << SzFreq_bins1(SzFreqMethod); - if (gender == 2) - SS2out << SzFreq_bins1(SzFreqMethod); - SS2out << endl - << SzFreqMethod << " gp seas len mid-len metric " << SzFreq_bins(SzFreqMethod) << endl; - ; - for (gp = 1; gp <= N_GP; gp++) - for (s = 1; s <= nseas; s++) - { - SzFreqMethod_seas = nseas * (SzFreqMethod - 1) + s; // index that combines sizefreqmethod and season and used in SzFreqTrans - for (z = 1; z <= nlength2; z++) - { - SS2out << SzFreqMethod << " " << gp << " " << s << " " << len_bins2(z) << " " << len_bins_m2(z) << " "; - if (SzFreq_scale(SzFreqMethod) == 1) - { - SS2out << wt_len2(s, gp, z) << " "; - } - else if (SzFreq_scale(SzFreqMethod) == 2) - { - SS2out << wt_len2(s, gp, z) / 0.4536 << " "; - } - else if (SzFreq_scale(SzFreqMethod) == 3) - { - SS2out << len_bins_m2(z) << " "; - } - else - { - SS2out << len_bins_m2(z) / 2.54 << " "; - } - for (j = 1; j <= gender * SzFreq_Nbins(SzFreqMethod); j++) - { - SS2out << SzFreqTrans(SzFreqMethod_seas, z, j) << " "; - if (SzFreqTrans(SzFreqMethod_seas, z, j) < 0.0) - { - warnstream << "Bin widths narrower than pop len bins caused negative allocation in sizefreq method:"; - warnstream << " method, season, size, bin: " << SzFreqMethod << " " << s << " " << len_bins2(z) << " " << j; - write_message (FATAL, 0); // EXIT! - } - } - SS2out << endl; - } - } - } - } - - // REPORT_KEYWORD 13 MOVEMENT - - if (pick_report_use(13) == "Y" && do_migration > 0) - { - SS2out << endl - << pick_report_name(13) << endl; - SS2out << " Seas GP Source_area Dest_area minage maxage " << age_vector << endl; - for (k = 1; k <= do_migr2; k++) - { - SS2out << move_def2(k) << " " << migrrate(endyr, k) << endl; - } - } - - // REPORT_KEYWORD 14 EXPLOITATION - if (pick_report_use(14) == "Y") - { - SS2out << endl - << pick_report_name(14) << endl; - SS2out << "NOTE: Displays.various.annual.F.statistics.and.displays.apical.F.for.each.fleet.by.season" << endl; - SS2out << "NOTE: F_Method:=" << F_Method; - if (F_Method == 1) - { - SS2out << ";.Pope's_approx,.fleet.F.is.mid-season.exploitation.fraction "; - } - else - { - SS2out << ";.Continuous_F;.fleet.F.will.be.multiplied.by.season.duration.when.it.is.used.and.in.the.F_std.calculation"; - } - SS2out << endl - << "NOTE: Displayed.fleet-specific.F.values.are.the.F.for.ages.with.compound.age-length-sex.selectivity=1.0" << endl; - SS2out << "NOTE: F_std_basis: " << F_report_label << endl; - SS2out << "F_std averaged over N years: " << F_std_multi << endl; - if (F_reporting >= 4) - { - SS2out << "NOTE: Annual_F.shown.here.is.done.by.the.Z-M.method.for.ages:." << F_reporting_ages(1) << "-" << F_reporting_ages(2) << endl; - } - else - { - SS2out << "NOTE: Annual_F.shown.here.is.done.by.the.Z-M.method.for.nages/2=" << nages / 2 << endl; - } - SS2out << "#" << endl; - SS2out << "Yr Seas Seas_dur F_std annual_F annual_M "; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - SS2out << " " << fleetname(f); - } - SS2out << endl; - SS2out << "Catchunits: _ _ _ _ _ "; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - if (catchunits(f) == 1) - { - SS2out << " Bio "; - } - else - { - SS2out << " Num "; - } - } - SS2out << endl - << "FleetType: _ _ _ _ _ "; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - if (fleet_type(f) == 1) - { - SS2out << " Catch "; - } - else - { - SS2out << " Bycatch "; - } - } - SS2out << endl - << "FleetArea: _ _ _ _ _ "; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - SS2out << " " << fleet_area(f); - } - SS2out << endl - << "FleetID: _ _ _ _ _ "; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - SS2out << " " << f; - } - SS2out << endl; - if (N_init_F > 0) - { - for (s = 1; s <= nseas; s++) - { - SS2out << "INIT " << s << " " << seasdur(s) << " _ _ _ "; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - if (init_F_loc(s, f) > 0) - { - SS2out << " " << init_F(init_F_loc(s, f)); - } - else - { - SS2out << " _ "; - } - } - SS2out << endl; - } - } - - for (y = styr; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - SS2out << y << " " << s << " " << seasdur(s); - if (s == 1 && STD_Yr_Reverse_F(y) > 0) - { - SS2out << " " << F_std(STD_Yr_Reverse_F(y)); - } - else - { - SS2out << " _ "; - } - SS2out << " " << annual_F(y)(2, 3); - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - SS2out << " " << Hrate(f, t); - } - SS2out << endl; - } - } - - // REPORT_KEYWORD 15 CATCH - if (pick_report_use(15) == "Y") - { - SS2out << endl - << pick_report_name(15) << endl; - SS2out << "# where vuln_ is mid-season selected bio or numbers; sel_ is selected total catch; dead_ is catch without live discards; ret_ is retained catch" << endl; - SS2out << "Fleet Fleet_Name Area Yr Seas Time Obs Exp Mult Exp*Mult se F Like vuln_bio sel_bio dead_bio ret_bio vuln_num sel_num dead_num ret_num" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - { - for (y = styr - 1; y <= endyr; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - if (catchunits(f) == 1) - { - gg = 3; - } // biomass - else - { - gg = 6; - } // numbers - temp = float(y) + 0.01 * int(100. * (azero_seas(s) + seasdur_half(s))); - SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " "; - if (y < styr) - { - SS2out << "INIT "; - } - else - { - SS2out << y << " "; - } - SS2out << s << " " << temp << " " << catch_ret_obs(f, t) << " " << catch_fleet(t, f, gg) << " " << catch_mult(y, f) << " " << catch_mult(y, f) * catch_fleet(t, f, gg); - SS2out << " " << catch_se(t, f) << " " << Hrate(f, t) << " "; - if (fleet_type(f) == 1) - { - if (catch_ret_obs(f, t) > 0 && F_Method > 1) - { - SS2out << 0.5 * square((log(1.1 * catch_ret_obs(f, t)) - log(catch_fleet(t, f, gg) * catch_mult(y, f) + 0.1 * catch_ret_obs(f, t))) / catch_se(t, f)); - } - else - { - SS2out << " NA"; - } - } - else - { - SS2out << "BYCATCH"; - } - SS2out << " " << vuln_bio(t, f) << " " << catch_fleet(t, f)(1,3) << " " << vuln_num(t, f) << " " << catch_fleet(t, f)(4,6) << endl; - } - } - } - } - int bio_t; - dvector Bio_Comp(1, N_GP * gender); - dvector Num_Comp(1, N_GP * gender); - // REPORT_KEYWORD 16 TIME_SERIES - // Fleet Fleet_Name Area Yr Era Seas Subseas Month Time - if (pick_report_use(16) == "Y") - { - SS2out << endl - << pick_report_name(16); - SS2out << " BioSmry_age:_" << Smry_Age; // SS_Label_320 - if (F_Method == 1) - { - SS2out << " Pope's_approx" << endl; - } - else - { - SS2out << " Continuous_F" << endl; - } - SS2out << "Area Yr Era Seas Bio_all Bio_smry SpawnBio Recruit_0 "; - for (gp = 1; gp <= N_GP; gp++) - SS2out << " SpawnBio_GP:" << gp; - if (Hermaphro_Option != 0) - { - for (gp = 1; gp <= N_GP; gp++) - SS2out << " MaleSpawnBio_GP:" << gp; - } - for (gg = 1; gg <= gender; gg++) - for (gp = 1; gp <= N_GP; gp++) - { - SS2out << " SmryBio_SX:" << gg << "_GP:" << gp; - } - - for (gg = 1; gg <= gender; gg++) - { - for (gp = 1; gp <= N_GP; gp++) - { - SS2out << " SmryNum_SX:" << gg << "_GP:" << gp; - } - } - SS2out << " mature_bio mature_num "; - - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - SS2out << " sel(B):_" << f << " dead(B):_" << f << " retain(B):_" << f << " sel(N):_" << f << " dead(N):_" << f << " retain(N):_" << f << " obs_cat:_" << f; - if (F_Method == 1) - { - SS2out << " Hrate:_" << f; - } - else - { - SS2out << " F:_" << f; - } - } - - SS2out << " SSB_vir_LH ABC_buffer" << endl; - for (p = 1; p <= pop; p++) - { - for (y = styr - 2; y <= YrMax; y++) - { - if (p == 1) - { - Smry_Table(y)(16, 17).initialize(); - } - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - bio_t = t; - if (y <= styr) - { - bio_t = styr - 1 + s; - } - Bio_Comp.initialize(); - Num_Comp.initialize(); - totbio.initialize(); - smrybio.initialize(); - smrynum.initialize(); - SSB_vir_LH.initialize(); - smryage.initialize(); - // Recr(p,y)=0; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - // if(s==Bseas(g)) Recr(p,y)+=natage(t,p,g,0); - gg = sx(g); - temp = natage(t, p, g)(Smry_Age, nages) * Wt_Age_t(bio_t, 0, g)(Smry_Age, nages); - Bio_Comp(GP(g)) += value(temp); //sums to accumulate across platoons and settlements - Num_Comp(GP(g)) += value(sum(natage(t, p, g)(Smry_Age, nages))); //sums to accumulate across platoons and settlements - totbio += natage(t, p, g) * Wt_Age_t(bio_t, 0, g); - smrybio += temp; - smrynum += sum(natage(t, p, g)(Smry_Age, nages)); - smryage += natage(t, p, g)(Smry_Age, nages) * r_ages(Smry_Age, nages); - SSB_vir_LH += natage(t, p, g) * virg_fec(g); - { - for (f = 1; f <= Nfleet; f++) - { - if (fleet_area(f) == p && y >= styr - 1 && fleet_type(f) <= 2) - { - Smry_Table(y, 16) += sum(catage(t, f, g)); // temporary storage spot - Smry_Table(y, 17) += catage(t, f, g) * r_ages; - } - } - } - } //close gmorph loop - Smry_Table(y, 17) /= ( Smry_Table(y, 16) + 1.0e-06 ); // mean age of catch - Smry_Table(y, 16) = smryage / smrynum; // mean age of summary numbers - if (gender_rd == -1) - SSB_vir_LH *= femfrac(1); - SS2out << p << " " << y; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - - SS2out << s << " " << totbio << " " << smrybio << " "; - if (s == spawn_seas) - { - temp = sum(SSB_pop_gp(y, p)); - if (Hermaphro_maleSSB > 0) - temp += Hermaphro_maleSSB * sum(MaleSSB(y, p)); - SS2out << temp; - } - else - { - SS2out << " _ "; - } - SS2out << " " << Recr(p, t) << " "; - if (s == spawn_seas) - { - SS2out << SSB_pop_gp(y, p); - if (Hermaphro_Option != 0) - SS2out << MaleSSB(y, p); - } - else - { - for (gp = 1; gp <= N_GP; gp++) - { - SS2out << " _ "; - } - if (Hermaphro_Option != 0) - { - for (gp = 1; gp <= N_GP; gp++) - { - SS2out << " _ "; - } - } - } - SS2out << " " << Bio_Comp << " " << Num_Comp; - SS2out << " " << SSB_B_yr(y) << " " << SSB_N_yr(y); - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - if (fleet_area(f) == p && y >= styr - 1) - { - SS2out << " " << catch_fleet(t, f) << " "; - if (y <= endyr) - { - SS2out << catch_ret_obs(f, t) << " " << Hrate(f, t); - } - else - { - SS2out << " _ " << Hrate(f, t); - } - // if(y<=endyr) {Smry_Table(y,4)+=catch_fleet(t,f,1); Smry_Table(y,5)+=catch_fleet(t,f,2); Smry_Table(y,6)+=catch_fleet(t,f,3);} - } - else - { - SS2out << " 0 0 0 0 0 0 0 0 "; - } - } - if (s == spawn_seas) - { - SS2out << " " << SSB_vir_LH; - } - else - { - SS2out << " _"; - } - if (y <= endyr) - { - SS2out << " NA"; - } - else - { - SS2out << " " << ABC_buffer(y); - } - SS2out << endl; - } - } - } - } - // REPORT_KEYWORD 17 SPR_SERIES (equilibrium_SPR_and_YPR_calculations_for_each_year) - // 1=totbio, 2=smrybio, 3=smrynum, 4=enc_catch, 5=dead_catch, 6=ret_catch, 7=spbio, 8=recruit, - // 9=equ_totbio, 10=equ_smrybio, 11=equ_SSB_virgin, 12=equ_S1, 13=Gentime, 14=YPR, 15=meanage_spawners, 16=meanage_smrynums, 17=meanage_catch - - if (pick_report_use(17) == "Y") - { - SS2out << endl - << pick_report_name(17) << endl; - SS2out << "#_NOTE: reports_per_recruit_quantities_using_current_year_biology;_using_same_equil_calc_routine_used_for_reference_points" << endl; - SS2out << "#_NOTE: current_year_biology_is_current_at-age_biology_from_time_series;_not_recalc_biology_from_current_growth_parameters" << endl; - SS2out << "#_NOTE: uses_R0= " << Recr_virgin << endl; - SS2out << "#_NOTE: YPR_unit_is_Dead_Biomass" << endl; - SS2out << "#_NOTE: gentime_is_mean_age_of_female_spawners_weighted_by_reproductive_value-at-age_(fec(g))" << endl; - - SS2out << "Yr Era Bio_all_eq Bio_Smry_eq SSB_unfished_eq SSBfished_eq SSBfished/R SPR YPR GenTime" << endl; - - for (y = styr; y <= YrMax; y++) - { - if (y <= endyr) - { - SS2out << y << " TIME "; - } - else - { - SS2out << y << " FORE "; - } - SS2out << Smry_Table(y)(9, 12) << " " << (Smry_Table(y, 12) / Recr_virgin) << " " << Smry_Table(y, 12) / Smry_Table(y, 11) << " "; - SS2out << (Smry_Table(y, 14) / Recr_virgin) << " " << Smry_Table(y, 13) << endl; - } // end year loop - // end SPR time series - } - - if (pick_report_use(61) == "Y") // ANNUAL_TIME_SERIES report:61 - { - SS2out << endl - << pick_report_name(61) << endl; - SS2out << "#_NOTE: MnAgeSmry_is_numbers_weighted_meanage_at_and_above_smryage:_" << Smry_Age << endl; - SS2out << "#_NOTE:_mean_age_of_catch_is_numbers-weighted_and_based_on_catage_which_is_the_dead_catch_and_comes_from:_sel_dead_num_=_sel_*_(retain_+_(1-retain)*discmort)" << endl; - SS2out << "#_NOTE: Depletion_basis: " << depletion_basis << " # " << depletion_basis_label << endl; - SS2out << "#_NOTE: F_std_report_basis: " << F_reporting << " # " << F_report_label << endl; - SS2out << "#_NOTE: SPR_std_report_basis: " << SPR_reporting << " # " << SPR_report_label << endl; - SS2out << "#_NOTE: tot_exploit:_is_dead_catch_B/bio_smry" << endl; - SS2out << "#_NOTE: sum_fleet_F:_is_simple_sum_of_full_Fs_among_all_fleets_ignoring_seasonal_and_area_modifiers" << endl; - SS2out << "#_NOTE: suffix:_an_emphasizes_that_quantity_is_annual_and_all_areas" << endl; - - SS2out << "year Era Bio_all_an Bio_Smry_an Num_Smry_an SSB recruits sel_catch_B_an dead_catch_B_an retain_catch_B_an sel_catch_N_an dead_catch_N_an retain_catch_N_an" << - " tot_exploit sum_fleet_F F=Z-M M mn_age_SSB mn_age_smry mn_age_catch SPR_std Depletion_std F_std" << endl; - // 1=totbio, 2=smrybio, 3=smrynum, 4=enc_catch, 5=dead_catch, 6=ret_catch, 7=spbio, 8=recruit, - // 9=equ_totbio, 10=equ_smrybio, 11=equ_SSB_virgin, 12=equ_S1, 13=Gentime, 14=YPR, 15=meanage_spawners, 16=meanage_smrynums, 17=meanage_catch - - for (y = styr; y <= YrMax; y++) - { - if (y <= endyr) - { - SS2out << y << " TIME "; - } - else - { - SS2out << y << " FORE "; - } - SS2out << Smry_Table(y)(1, 3) << " " << SSB_yr(y) << " " << exp_rec(y, 4) << " "; - SS2out << annual_catch(y) << " " << Smry_Table(y, 5) / Smry_Table(y, 2) << " " << annual_F(y) << " " << Smry_Table(y, 15) / SSB_yr(y) << " " << Smry_Table(y, 16) << " " << Smry_Table(y, 17) << " "; // - // gentime - if (STD_Yr_Reverse_Ofish(y) > 0) - { - SS2out << SPR_std(STD_Yr_Reverse_Ofish(y)) << " "; - } - else - { - SS2out << " _ "; - } - if (STD_Yr_Reverse_Dep(y) > 0) - { - SS2out << depletion(STD_Yr_Reverse_Dep(y)) << " "; - } - else - { - SS2out << " _ "; - } - if (y >= styr && STD_Yr_Reverse_F(y) > 0) - { - SS2out << F_std(STD_Yr_Reverse_F(y)); - } - else - { - SS2out << " _ "; - } - SS2out << endl; - } // end year loop - // end ANNUAL_TIME_SERIES - } - - // REPORT_KEYWORD 18 Kobe_Plot - if (pick_report_use(18) == "Y") - { - SS2out << endl - << pick_report_name(18) << endl; - if (F_std_basis != 2) - SS2out << "F_report_basis_is_not_=2;_so_info_below_is_not_F/Fmsy" << endl; - SS2out << "MSY_basis:_" << MSY_name << endl; - SS2out << "Yr B/Bmsy F/Fmsy" << endl; - for (y = styr; y <= YrMax; y++) - { - SS2out << y << " " << SSB_yr(y) / Bmsy << " "; - if (y >= styr && STD_Yr_Reverse_F(y) > 0) - { - SS2out << " " << F_std(STD_Yr_Reverse_F(y)); - } - else - { - SS2out << " _ "; - } - SS2out << endl; - } - } - - // ****************************************************************************** - k = Nfleet; - if (k < 4) - k = 4; - // quantities to store summary statistics - dvector rmse(1, k); // used in the SSBio, Index, Lencomp and Agecomp reports - dvector Hrmse(1, k); - dvector Rrmse(1, k); - dvector n_rmse(1, k); - // following vectors used for index-related quantities - dvector mean_CV(1, k); - - dvector mean_CV2(1, k); - - dvector mean_CV3(1, k); - - // vectors to store mean sample sizes for comp data - dvector mean_Nsamp_in(1, k); - dvector mean_Nsamp_adj(1, k); - dvector mean_Nsamp_DM(1, k); - // SS_Label_330 - - // REPORT_KEYWORD 19 SPAWN_RECRUIT - if (pick_report_use(19) == "Y") - { - - rmse = 0.0; - n_rmse = 0.0; - double cross = 0.0; - double Durbin = 0.0; - double var = 0.0; - - for (y = recdev_first; y <= recdev_end; y++) - { - temp1 = recdev(y); - if (y < recdev_start) // so in early period - { - rmse(3) += value(square(temp1)); - n_rmse(3) += 1.; - rmse(4) += biasadj(y); - } - else - { - var += value(square(temp1)); - if (y > recdev_start) // so not first year - { - cross += value(temp1 * recdev(y - 1)); - Durbin += value(square(temp1 - recdev(y - 1))); - } - rmse(1) += value(square(temp1)); - n_rmse(1) += 1.; - rmse(2) += biasadj(y); - } - } - if (n_rmse(1) > 0. && rmse(1) > 0.) - rmse(1) = sqrt(rmse(1) / n_rmse(1)); // rmse during main period - if (n_rmse(1) > 0.) - rmse(2) = rmse(2) / n_rmse(1); // mean biasadj during main period - if (n_rmse(3) > 0. && rmse(3) > 0.) - rmse(3) = sqrt(rmse(3) / n_rmse(3)); //rmse during early period - if (n_rmse(3) > 0.) - rmse(4) = rmse(4) / n_rmse(3); // mean biasadj during early period - if (n_rmse(1) >= 2.) - { - cross /= (n_rmse(1) - 1.); - } - else - { - cross = 0.0; - } - Durbin /= (var + 1.0e-09); - var /= (n_rmse(1) + 1.0e-09); - - dvariable steepness = SRparm(2); - SS2out << endl - << pick_report_name(19); - SS2out << " Function: " << SR_fxn << " RecDev_method: " << do_recdev << " sum_recdev: " << sum_recdev << endl - << SRparm(1) << " Ln(R0) " << mfexp(SRparm(1)) << endl - << steepness << " steepness" << endl - << Bmsy / SSB_virgin << " Bmsy/Bzero "; - if (SR_fxn == 8) - { - dvariable Shepherd_c; - dvariable Shepherd_c2; - dvariable Hupper; - Shepherd_c = SRparm(3); - Shepherd_c2 = pow(0.2, Shepherd_c); - Hupper = 1.0 / (5.0 * Shepherd_c2); - temp = 0.2 + (SRparm(2) - 0.2) / (0.8) * (Hupper - 0.2); - SS2out << " Shepherd_c: " << Shepherd_c << " steepness_limit: " << Hupper << " Adjusted_steepness: " << temp; - } - else if (SR_fxn == 9) - { - SS2out << " Ricker_Power: " << SRparm(3); - } - - SS2out << endl; - SS2out << sigmaR << " sigmaR" << endl; - SS2out << init_equ_steepness << " # 0/1 to use steepness in initial equ recruitment calculation" << endl; - - SS2out << SRparm(N_SRparm2 - 1) << " init_eq: see below" << endl - << recdev_start << " " << recdev_end << " main_recdev:start_end" << endl - << recdev_adj(1) << " " << recdev_adj(2, 5) << " breakpoints_for_bias_adjustment_ramp " << endl; - - temp = sigmaR * sigmaR; // sigmaR^2 - SS2out << "ERA N RMSE RMSE^2/sigmaR^2 mean_BiasAdj est_rho Durbin-Watson" << endl; - SS2out << "main " << n_rmse(1) << " " << rmse(1) << " " << square(rmse(1)) / temp << " " << rmse(2) << " " << cross / var << " " << Durbin; - if (wrote_bigreport == 0) // first time writing bigreport - { - if (rmse(1) < 0.5 * sigmaR && rmse(2) > (0.01 + 2.0 * square(rmse(1)) / temp)) - { - warnstream << "Main recdev biasadj is >2 times ratio of rmse to sigmaR"; - SS2out << " # " << warnstream.str() ; - write_message (WARN, 0); - } - } - SS2out << endl; - - SS2out << "early " << n_rmse(3) << " " << rmse(3) << " " << square(rmse(3)) / temp << " " << rmse(4); - if (wrote_bigreport == 0) // first time writing bigreport - { - if (rmse(3) < 0.5 * sigmaR && rmse(4) > (0.01 + 2.0 * square(rmse(3)) / temp)) - { - warnstream << "Early recdev biasadj is >2 times ratio of rmse to sigmaR"; - SS2out << " # " << warnstream.str(); - write_message (WARN, 0); - } - } - SS2out << endl; - - SS2out << "Yr SpawnBio exp_recr with_regime bias_adjusted pred_recr dev biasadjuster era mature_bio mature_num raw_dev" << endl; - SS2out << "S/Rcurve " << SSB_virgin << " " << Recr_virgin << endl; - y = styr - 2; - SS2out << "Virg " << SSB_yr(y) << " " << exp_rec(y) << " - " << 0.0 << " Virg " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " 0.0 " << endl; - y = styr - 1; - SS2out << "Init " << SSB_yr(y) << " " << exp_rec(y) << " - " << 0.0 << " Init " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << 0.0 << endl; - - if (recdev_first < styr) - { - for (y = recdev_first; y <= styr - 1; y++) - { - SS2out << y << " " << SSB_yr(styr - 1) << " " << exp_rec(styr - 1, 1) << " " << exp_rec(styr - 1, 2) << " " << exp_rec(styr - 1, 3) * mfexp(-biasadj(y) * half_sigmaRsq) << " " << exp_rec(styr - 1, 3) * mfexp(recdev(y) - biasadj(y) * half_sigmaRsq) << " " - << recdev(y) << " " << biasadj(y) << " Init_age " << SSB_B_yr(styr - 1) << " " << SSB_N_yr(styr - 1) << " " << recdev(y) << endl; // newdev approach uses devs for initial agecomp directly - } - } - for (y = styr; y <= YrMax; y++) - { - SS2out << y << " " << SSB_yr(y) << " " << exp_rec(y) << " "; - if (recdev_do_early > 0 && y >= recdev_early_start && y <= recdev_early_end) - { - SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y) << " Early " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << recdev(y); - } - else if (y >= recdev_start && y <= recdev_end) - { - SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y) << " Main " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << recdev(y); - } - else if (Do_Forecast > 0 && y > recdev_end) - { - SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y); - if (y <= endyr) - { - SS2out << " Late "; - } - else - { - SS2out << " Fore "; - } - SS2out << SSB_B_yr(y) << " " << SSB_N_yr(y) << " "; - if (do_recdev > 0) - { - SS2out << Fcast_recruitments(y); - } - else - { - SS2out << " 0.0"; - } - } - else - { - SS2out << " _ _ Fixed"; - } - SS2out << endl; - } - - SS2out << endl << "#Expanded_Spawn_Recr_report" << endl << pick_report_name(19) << endl; - SS2out << SR_fxn << " # SR_Function" << endl; - SS2out << N_SRparm2 << " # N_SRparms" << endl; - SS2out << "#" << endl << "#_SRparm parm_label value phase TV_year" << endl; - for (int j = 1; j <=N_SRparm2; j++) - { - SS2out << "# " << j << " " << ParmLabel(firstSRparm + j) << " " << SRparm(j) << " " << SRparm_PH(j); - if (SRparm_timevary(j) > 0 && j <= 4 ) // timevary SRparm exists - {SS2out << " " << timevary_SRparm_first_yr;} else {SS2out << " -";} - SS2out << endl; - } - SS2out << "#" << endl; - if (SRparm_timevary(N_SRparm2 - 1) > 0) // timevary regime exists - {SS2out << " #_Regime_used_to_offset_from_SRR";} - SS2out << timevary_bio_4SRR << " # timevary_bio_4SRR #_Compatibility_flag_for_legacy_(0)_vs_improved_(1)_impact_of_timevary_biology_on_benchmark_SRR_calcs" << endl; - if( timevary_MG_firstyr == YrMax) - { SS2out << " #_No_timevary_MGparm" << endl; } - else - { SS2out << timevary_MG_firstyr << " #_first year_timevary_MGparm_(or_any_year_EWAA) " << endl; } - - SS2out << "#" << endl << "Quantities for MSY and other benchmark calculations " << endl - << "Benchmark_index: 1 2 3 4 5 6 7 8 9 10" << endl - << "Benchmark_label: beg_bio end_bio beg_selex end_selex beg_relF end_relF beg_recr_dist end_recr_dist beg_SRparm end_SRparm" << endl - << "Benchmark_years: " << Bmark_Yr << endl; - for ( int k = 1; k <=9; k+=2) - { if (Bmark_Yr(k+1) > Bmark_Yr(k)) - {SS2out << "#_NOTE:_using_range_of_years_can_reduce_standard_error_of_result;_do_this_only_when_timevarying_makes_necessary: " << k << " " << Bmark_Yr(k) << " " << Bmark_Yr(k+1) << endl;} - } - SS2out << "SSBpR0_virgin: " << SSBpR_virgin << " #_uses_biology_from_start_year: " << styr < (0.01 + 2.0 * square(rmse(1)) / temp)) - { - warnstream << "Main recdev biasadj is >2 times ratio of rmse to sigmaR"; - SS2out << " # " << warnstream.str() ; - write_message (WARN, 0); - } - } - SS2out << endl; - - SS2out << "early " << n_rmse(3) << " " << rmse(3) << " " << square(rmse(3)) / temp << " " << rmse(4); - if (wrote_bigreport == 0) // first time writing bigreport - { - if (rmse(3) < 0.5 * sigmaR && rmse(4) > (0.01 + 2.0 * square(rmse(3)) / temp)) - { - warnstream << "Early recdev biasadj is >2 times ratio of rmse to sigmaR"; - SS2out << " # " << warnstream.str(); - write_message (WARN, 0); - } - } - SS2out << endl << "#" << endl << init_equ_steepness << " # Initial_equilibrium:_0/1_to_use_spawner-recruitment_in_initial_equ_recruitment_calculation" << endl << "#" << endl; - SS2out << "Yr SpawnBio exp_recr with_regime bias_adjusted pred_recr dev biasadjuster era mature_bio mature_num raw_dev SSBpR(yr) " << endl; - - y = styr - 2; - SS2out << "Virg " << SSB_yr(y) << " " << exp_rec(y) << " _ " << 0.0 << " Virg " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " _ " << SSBpR_virgin << endl; - y = styr - 1; - SS2out << "Init " << SSB_yr(y) << " " << exp_rec(y) << " _ " << 0.0 << " Init " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " _ " << SSBpR_virgin << endl; - - if (recdev_first < styr) - { - for (y = recdev_first; y <= styr - 1; y++) - { - SS2out << y << " " << SSB_yr(styr - 1) << " " << exp_rec(styr - 1, 1) << " " << exp_rec(styr - 1, 2) << " " << exp_rec(styr - 1, 3) * mfexp(-biasadj(y) * half_sigmaRsq) << " " << exp_rec(styr - 1, 3) * mfexp(recdev(y) - biasadj(y) * half_sigmaRsq) << " " - << recdev(y) << " " << biasadj(y) << " Init_age " << SSB_B_yr(styr - 1) << " " << SSB_N_yr(styr - 1) << " " << recdev(y) << endl; // newdev approach uses devs for initial agecomp directly - } - } - for (y = styr; y <= YrMax; y++) - { - SS2out << y << " " << SSB_yr(y) << " " << exp_rec(y) << " "; - if (recdev_do_early > 0 && y >= recdev_early_start && y <= recdev_early_end) - { - SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y) << " Early " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << recdev(y); - } - else if (y >= recdev_start && y <= recdev_end) - { - SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y) << " Main " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " " << recdev(y); - } - else if (Do_Forecast > 0 && y > recdev_end) - { - SS2out << log(exp_rec(y, 4) / exp_rec(y, 3)) << " " << biasadj(y); - if (y <= endyr) - { - SS2out << " Late "; - } - else - { - SS2out << " Fore "; - } - SS2out << SSB_B_yr(y) << " " << SSB_N_yr(y) << " "; - if (do_recdev > 0) - { - SS2out << Fcast_recruitments(y); - } - else - { - SS2out << " 0.0"; - } - } - else - { - SS2out << " _ _ Fixed " << SSB_B_yr(y) << " " << SSB_N_yr(y) << " _ "; - } - SS2out << " " << Smry_Table(y, 11) / Recr_virgin << endl; - } - - // REPORT_KEYWORD SPAWN_RECR_CURVE - if (pick_report_use(20) == "Y") - { - { - SRparm_work = SRparm_byyr(styr); - y = styr; - SS2out << endl - << pick_report_name(20) << endl - << "# using_virgin_SR_parameters: " << SRparm_work << endl; - SS2out << "SSB/SSB_virgin SSB Recruitment" << endl; - for (f = 1; f <= 120; f++) - { - SSB_current = double(f) / 100. * SSB_virgin; - temp = Spawn_Recr(SRparm_work, SSB_virgin, Recr_virgin, SSB_current); - SS2out << SSB_current / SSB_virgin << " " << SSB_current << " " << temp << endl; - } - SS2out << endl - << "SPAWN_RECR_CURVE report:20 Benchmark" << endl // revise this name per r4ss needs - << "# using_benchmark_SR_parameters: " << SRparm_bench << endl; - SS2out << "SSB/SSB_benchmark SSB Recruitment" << endl; - for (f = 1; f <= 120; f++) - { - SSB_current = double(f) / 100. * SSB0_4_SRR; - temp = Spawn_Recr(SRparm_bench, SSB0_4_SRR, R0_4_SRR, SSB_current); - SS2out << SSB_current / SSB0_4_SRR << " " << SSB_current << " " << temp << endl; - } - - } - } - - // REPORT_KEYWORD 22 INDEX_2 Survey Observations by Year - if (pick_report_use(22) == "Y" && Svy_N > 0) - { - SS2out << endl - << pick_report_name(22) << endl; - SS2out << "NOTE: Calc_Q is Q_base with devs, so does not include power; eff_Q includes effect of Power" << endl; - // where show_time(t) contains: yr, seas - // data_time(ALK,f) has real month; 2nd is timing within season; 3rd is year.fraction - // show_time2(ALK) has yr, seas, subseas - rmse = 0.0; - n_rmse = 0.0; - mean_CV = 0.0; - mean_CV2 = 0.0; - mean_CV3 = 0.0; - SS2out << "Fleet Fleet_name Area Yr Seas Subseas Month Time Vuln_bio Obs Exp Calc_Q Eff_Q SE SE_input Dev Like Like+log(s) SuprPer Use" << endl; - for (f = 1; f <= Nfleet; f++) - { - in_superperiod = 0; - for (i = 1; i <= Svy_N_fleet(f); i++) - { - t = Svy_time_t(f, i); - ALK_time = Svy_ALK_time(f, i); - SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " << Svy_selec_abund(f, i) << " " << Svy_obs(f, i) << " "; - if (Svy_errtype(f) >= 0) // lognormal or T-dist - { - temp = mfexp(Svy_est(f, i)); - SS2out << temp << " " << Svy_q(f, i) << " " << temp / Svy_selec_abund(f, i) << " " << Svy_se_use(f, i) << " " << Svy_se(f, i); - if (Svy_use(f, i) > 0) - { - SS2out << " " << Svy_obs_log(f, i) - Svy_est(f, i) << " "; - SS2out << Svy_like_I(f, i) - log(Svy_se_use(f, i)) << " " << Svy_like_I(f,i) << " "; - rmse(f) += value(square(Svy_obs_log(f, i) - Svy_est(f, i))); - n_rmse(f) += 1.; - mean_CV(f) += Svy_se_rd(f, i); - mean_CV3(f) += Svy_se(f, i); - mean_CV2(f) += value(Svy_se_use(f, i)); - } - else - { - SS2out << " _ _ _ "; - } - } - else // normal - { - SS2out << Svy_est(f, i) << " " << Svy_q(f, i) << " " << "NA" << " " << Svy_se_use(f, i) << " " << Svy_se(f, i); - if (Svy_use(f, i) > 0) - { - SS2out << " " << Svy_obs(f, i) - Svy_est(f, i) << " "; - SS2out << Svy_like_I(f, i) - log(Svy_se_use(f, i)) << " " << Svy_like_I(f,i) << " "; - rmse(f) += value(square(Svy_obs(f, i) - Svy_est(f, i))); - n_rmse(f) += 1.; - mean_CV(f) += Svy_se_rd(f, i); - mean_CV3(f) += Svy_se(f, i); - mean_CV2(f) += value(Svy_se_use(f, i)); - } - else - { - SS2out << " _ _ _ "; - } - } - if (Svy_super(f, i) < 0 && in_superperiod == 0) - { - in_superperiod = 1; - SS2out << " beg_SuprPer "; - } - else if (Svy_super(f, i) < 0 && in_superperiod == 1) - { - in_superperiod = 0; - SS2out << " end_SuprPer "; - } - else if (in_superperiod == 1) - { - SS2out << " in_SuprPer "; - } - else - { - SS2out << " _ "; - } - SS2out << Svy_use(f, i); - SS2out << endl; - } - if (n_rmse(f) > 0) - { - rmse(f) = sqrt((rmse(f) + 1.0e-9) / n_rmse(f)); - mean_CV(f) /= n_rmse(f); - mean_CV3(f) /= n_rmse(f); - mean_CV2(f) /= n_rmse(f); - } - } - } - - // REPORT_KEYWORD 21 INDEX_1 Survey Fit Summary - SS2out << endl - << pick_report_name(21) << endl; - SS2out << "Fleet Link Link+ ExtraStd BiasAdj Float Qbase Num=0/Bio=1 Err_type" - << " N Npos RMSE logL mean_input_SE Input+VarAdj Input+VarAdj+extra VarAdj New_VarAdj penalty_mean_Qdev rmse_Qdev Offset Power fleetname" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (Svy_N_fleet(f) > 0) - { - SS2out << f << " " << Q_setup(f) - << " " << Svy_q(f, 1) << " " << Svy_units(f) << " " << Svy_errtype(f) - << " " << Svy_N_fleet(f) << " " << n_rmse(f) << " " << rmse(f)<< " " << surv_like(f) - << " " << mean_CV(f) << " " << mean_CV3(f) << " " << mean_CV2(f) << " " << var_adjust(1, f) - << " " << var_adjust(1, f) + rmse(f) - mean_CV(f) - << " " << Q_dev_like(f, 1) << " " << Q_dev_like(f, 2) << " "; - if (Q_setup(f, 1) >= 5) - {SS2out << " " << Q_parm(Q_setup_parms(f, 1) + 1);} // offset - else - {SS2out << " NA ";} - if (Q_setup(f,1) == 3) - {SS2out << " " << Q_parm(Q_setup_parms(f, 1) + 1) << " ";} // power - else - if (Q_setup(f,1) == 6) - {SS2out << " " << Q_parm(Q_setup_parms(f, 1) + 2) << " ";} // power - else - {SS2out << " NA ";} - SS2out << fleetname(f) << endl; - } - } - if (depletion_fleet > 0) // special code for depletion, so prepare to adjust phases and lambdas - { - f = depletion_fleet; - SS2out << "#_survey: " << f << " " << fleetname(f) << " is a depletion fleet" << endl; - if (depletion_type == 0) - SS2out << "#_Q_setup(f,2)=0; add 1 to phases of all parms; only R0 active in new phase 1" << endl; - if (depletion_type == 1) - SS2out << "#_Q_setup(f,2)=1 only R0 active in phase 1; then exit; useful for data-limited draws of other fixed parameter" << endl; - if (depletion_type == 2) - SS2out << "#_Q_setup(f,2)=2 no phase adjustments, can be used when profiling on fixed R0" << endl; - } - - SS2out << "RMSE_Qdev_not_in_logL" << endl - << "penalty_mean_Qdev_not_in_logL_in_randwalk_approach" << endl; - - // REPORT_KEYWORD 23 INDEX_3 Survey_Q_setup - SS2out << endl - << pick_report_name(23) << endl; - SS2out << "#" << endl - << "Fleet Q_parm_assignments" << endl; - for (f = 1; f <= Nfleet; f++) - { - SS2out << f << " " << Q_setup_parms(f, 1) << " _ " << Q_setup_parms(f, 2) << " _ " << Q_setup_parms(f)(3, 4) << " " << fleetname(f) << endl; - } - } - - // REPORT_KEYWORD 24 DISCARD_SPECIFICATION - if (pick_report_use(24) == "Y" && nobs_disc > 0) - { - SS2out << endl - << pick_report_name(24) << endl; - SS2out << "Discard_units_options" << endl; - SS2out << "1: discard_in_biomass(mt)_or_numbers(1000s)_to_match_catchunits_of_fleet" << endl; - SS2out << "2: discard_as_fraction_of_total_catch(based_on_bio_or_num_depending_on_fleet_catchunits)" << endl; - SS2out << "3: discard_as_numbers(1000s)_regardless_of_fleet_catchunits" << endl; - SS2out << "Discard_errtype_options" << endl; - SS2out << ">1: log(L)_based_on_T-distribution_with_specified_DF" << endl; - SS2out << "0: log(L)_based_on_normal_with_Std_in_as_CV" << endl; - SS2out << "-1: log(L)_based_on_normal_with_Std_in_as_stddev" << endl; - SS2out << "-2: log(L)_based_on_lognormal_with_Std_in_as_stddev_in_logspace" << endl; - SS2out << "-3: log(L)_based_on_trunc_normal_with_Std_in_as_CV" << endl; - - SS2out << "#_Fleet units errtype" << endl; - if (Ndisc_fleets > 0) - { - for (int ff = 1; ff <= N_catchfleets(0); ff++) - { - f = fish_fleet_area(0, ff); - if (disc_units(f) > 0) - SS2out << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << endl; - } - } - for (int ff = 1; ff <= N_pred; ff++) - { - f = predator(ff); - SS2out << f << " " << disc_units(f) << " " << disc_errtype(f) << " # " << fleetname(f) << " is_M2_fleet" << endl; - } - - // REPORT_KEYWORD 25 DISCARD_OUTPUT Discard observations by year - SS2out << endl - << pick_report_name(25) << endl; - SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Obs Exp Std_in Std_use Dev Like Like+log(s) SuprPer Use Obs_cat Exp_cat catch_mult exp_cat*catch_mult F_rate" << endl; - data_type = 2; - if (nobs_disc > 0) - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2 || fleet_type(f) == 4) - { - for (i = 1; i <= disc_N_fleet(f); i++) - { - t = disc_time_t(f, i); - y = Show_Time(t, 1); - ALK_time = disc_time_ALK(f, i); - if (catchunits(f) == 1) - { - gg = 3; - } // biomass - else - { - gg = 6; - } // numbers - SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) - << " " << obs_disc(f, i) << " " << exp_disc(f, i) << " " - << " " << cv_disc(f, i) << " " << sd_disc(f, i); - - if (yr_disc_use(f, i) >= 0.0) - { - if (disc_errtype(f) >= 1) // T -distribution - { - temp = 0.5 * (disc_errtype(f) + 1.) * log((1. + square(obs_disc(f, i) - exp_disc(f, i)) / (disc_errtype(f) * square(sd_disc(f, i))))); - SS2out << " " << obs_disc(f, i) - exp_disc(f, i) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); - } - else if (disc_errtype(f) == 0) // normal error, with input CV - { - temp = 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)); - SS2out << " " << obs_disc(f, i) - exp_disc(f, i) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); - } - else if (disc_errtype(f) == -1) // normal error with input se - { - temp = 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)); - SS2out << " " << obs_disc(f, i) - exp_disc(f, i) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); - } - else if (disc_errtype(f) == -2) // lognormal where input cv_disc must contain se in log space - { - temp = 0.5 * square(log(obs_disc(f, i) / exp_disc(f, i)) / sd_disc(f, i)); - SS2out << " " << log(obs_disc(f, i) / exp_disc(f, i)) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); - } - else if (disc_errtype(f) == -3) // trunc normal error, with input CV - { - temp = 0.5 * square((obs_disc(f, i) - exp_disc(f, i)) / sd_disc(f, i)) - log(cumd_norm((1 - exp_disc(f, i)) / sd_disc(f, i)) - cumd_norm((0 - exp_disc(f, i)) / sd_disc(f, i))); - SS2out << " " << obs_disc(f, i) - exp_disc(f, i) << " " << temp << " " << temp + sd_offset * log(sd_disc(f, i)); - } - } - else - { - SS2out << " _ _ _ "; - } - if (yr_disc_super(f, i) < 0 && in_superperiod == 0) - { - in_superperiod = 1; - SS2out << " beg_SuprPer "; - } - else if (yr_disc_super(f, i) < 0 && in_superperiod == 1) - { - in_superperiod = 0; - SS2out << " end_SuprPer "; - } - else if (in_superperiod == 1) - { - SS2out << " in_SuprPer "; - } - else - { - SS2out << " _ "; - } - SS2out << yr_disc_use(f, i); - SS2out << " " << catch_ret_obs(f, t) << " " << catch_fleet(t, f, gg) << " " << catch_mult(y, f) << " " << catch_mult(y, f) * catch_fleet(t, f, gg) << " " << Hrate(f, t); - SS2out << endl; - } - } - } - - // REPORT_KEYWORD 26 MEAN_BODY_WT_OUTPUT - if (pick_report_use(26) == "Y" && nobs_mnwt > 0) - { - SS2out << endl - << pick_report_name(26) << endl; - SS2out << "log(L)_based_on_T_distribution_with_DF=_" << DF_bodywt << endl; - SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Part Type Obs Exp CV Dev NeglogL Neg(logL+log(s)) Use" << endl; - // 10 items are: 1yr, 2seas, 3fleet, 4part, 5type, 6obs, 7se, then three intermediate variance quantities - for (i = 1; i <= nobs_mnwt; i++) - { - t = mnwtdata(1, i); - f = abs(mnwtdata(3, i)); - ALK_time = mnwtdata(11, i); - SS2out << mnwtdata(3, i) << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " - << mnwtdata(4, i) << " " << mnwtdata(5, i) << " " << mnwtdata(6, i) << " " << exp_mnwt(i) << " " << mnwtdata(7, i); - if (mnwtdata(3, i) > 0.) - { - SS2out << " " << mnwtdata(6, i) - exp_mnwt(i) << " " << 0.5 * (DF_bodywt + 1.) * log(1. + square(mnwtdata(6, i) - exp_mnwt(i)) / mnwtdata(9, i)) << " " << 0.5 * (DF_bodywt + 1.) * log(1. + square(mnwtdata(6, i) - exp_mnwt(i)) / mnwtdata(9, i)) + mnwtdata(10, i) << " " << 1; - } - else - { - SS2out << " NA NA NA -1"; - } - SS2out << endl; - } - } - - dvar_vector more_comp_info(1, 20); - dvariable cumdist; - dvariable cumdist_save; - double Nsamp_DM; // equals Nsamp_adj when not using Dirichlet-Multinomial or Tweedie likelihood - double Nsamp_adj; // input sample size after input variance adjustment - double Nsamp_in; // input sample size - dvector minsamp(1, Nfleet); - dvector maxsamp(1, Nfleet); - - // REPORT_KEYWORD 27 FIT_LEN_COMPS - if (pick_report_use(27) == "Y" && Nobs_l_tot > 0) - { - SS2out << endl - << pick_report_name(27) << endl; - SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Sexes Part SuprPer Use Nsamp_in Nsamp_adj Nsamp_DM effN Like Method DM_parm MV_T_parm "; - SS2out << " All_obs_mean All_exp_mean All_delta All_exp_5% All_exp_95% All_DurWat"; - if (gender == 2) - SS2out << " F_obs_mean F_exp_mean F_delta F_exp_5% F_exp_95% F_DurWat M_obs_mean M_exp_mean M_delta M_exp_5% M_exp_95% M_DurWat %F_obs %F_exp "; - SS2out << endl; - rmse = 0.0; - n_rmse = 0.0; - mean_Nsamp_in = 0.0; - mean_Nsamp_adj = 0.0; - mean_Nsamp_DM = 0.0; - Hrmse = 0.0; - Rrmse = 0.0; - neff_l.initialize(); - in_superperiod = 0; - data_type = 4; - minsamp = 10000.; - maxsamp = 0.; - //mean_all_obs; 1 - //mean_all_exp; 2 - //mean_all_delta; 3 - //5%_all_exp; 4 - //95%_all_exp; 5 - //Durbin-Watson_all; 6 - //mean_F_obs; 7 - //mean_F_exp; 8 - //mean_F_delta; 9 - //5%_F_exp; 10 - //95%_F_exp; 11 - //Durbin-Watson_F; 12 - //mean_M_obs; 13 - //mean_M_exp; 14 - //mean_M_delta; 15 - //5%_M_exp; 16 - //95%_M_exp; 17 - //Durbin-Watson_M; 18 - //sexratio_obs; 19 - //sexratio_exp; 20 - - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= Nobs_l(f); i++) - { - t = Len_time_t(f, i); - ALK_time = Len_time_ALK(f, i); - more_comp_info.initialize(); - neff_l(f, i) = exp_l(f, i) * (1 - exp_l(f, i)) + 1.0e-06; // constant added for stability - neff_l(f, i) /= (obs_l(f, i) - exp_l(f, i)) * (obs_l(f, i) - exp_l(f, i)) + 1.0e-06; - // store sample sizes - Nsamp_in = nsamp_l_read(f, i); - Nsamp_adj = nsamp_l(f, i); - dvector tempvec_l(1, exp_l(f, i).size()); - tempvec_l = value(exp_l(f, i)); - more_comp_info = process_comps(gender, gen_l(f, i), len_bins_dat2, len_bins_dat_m2, tails_l(f, i), obs_l(f, i), tempvec_l); - Nsamp_DM = Nsamp_adj; // Will remain this if not used - int parti = mkt_l(f, i); - dirichlet_Parm = 0.0; // default gets reported if using multinomial - double Tweedie_Parm = 0.0; // default gets reported if not using MV Tweedie - if (Comp_Err_L(parti, f) == 1) // Dirichlet #1 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f),1))); // Thorson's theta from eq 10 - // effN_DM = 1/(1+theta) + n*theta/(1+theta) - Nsamp_DM = value(1. / (1. + dirichlet_Parm) + nsamp_l(f, i) * dirichlet_Parm / (1. + dirichlet_Parm)); - } - else if (Comp_Err_L(parti, f) == 2) // Dirichlet #2 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f),1))); // Thorson's beta from eq 12 - // effN_DM = (n+n*beta)/(n+beta) - Nsamp_DM = value((nsamp_l(f, i) + dirichlet_Parm * nsamp_l(f, i)) / (dirichlet_Parm + nsamp_l(f, i))); - } - else if (Comp_Err_L(parti, f) == 3) // MV Tweedie - { - // TBD - } - - if (header_l(f, i, 3) > 0) - { - n_rmse(f) += 1.; - rmse(f) += value(neff_l(f, i)); - mean_Nsamp_in(f) += Nsamp_in; - mean_Nsamp_adj(f) += Nsamp_adj; - mean_Nsamp_DM(f) += Nsamp_DM; - Hrmse(f) += value(1. / neff_l(f, i)); - Rrmse(f) += value(neff_l(f, i) / Nsamp_adj); - if (Nsamp_adj < minsamp(f)) - minsamp(f) = Nsamp_adj; - if (Nsamp_adj > maxsamp(f)) - maxsamp(f) = Nsamp_adj; - } - - // SS2out<<"Fleet Fleet_Name Area Yr Month Seas Subseas Time Sexes Part SuprPer Use Nsamp_adj Nsamp_in Nsamp_DM effN Like"; - // temp=abs(header_l_rd(f,i,2)); - // if(temp>999) temp-=1000; - SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " << gen_l(f, i) << " " << mkt_l(f, i); - if (header_l(f, i, 2) < 0 && in_superperiod == 0) - { - SS2out << " start "; - in_superperiod = 1; - } - else if (header_l(f, i, 2) < 0 && in_superperiod == 1) - { - SS2out << " end "; - in_superperiod = 0; - } - else if (in_superperiod == 1) - { - SS2out << " in "; - } - else - { - SS2out << " _ "; - } - if (header_l(f, i, 3) < 0) - { - SS2out << " skip "; - } - else - { - SS2out << " _ "; - } - SS2out << Nsamp_in << " " << Nsamp_adj << " " << Nsamp_DM << " " << neff_l(f, i) << " " << length_like(f, i) << " "; - SS2out << Comp_Err_L(parti, f) << " " << dirichlet_Parm << " " << Tweedie_Parm << " "; - SS2out << more_comp_info(1, 6); - if (gender == 2) - SS2out << " " << more_comp_info(7, 20); - SS2out << endl; - } // end loops over observation i and fleet f - - //Fleet N Npos mean_effN mean(inputN*Adj) HarMean(effN) Mean(effN/inputN) MeaneffN/MeaninputN Var_Adj - //long ago, Ian Stewart had the proto-r4ss add a column called "HarEffN/MeanInputN" which was the ratio of the columns "HarMean(effN)" column and the "mean(inputN*Adj)" and has been used as the multiplier on the adjustment factor in the status-quo NWFSC tuning approach. - //My suggestion would be to remove the columns "Mean(effN/inputN)" and "MeaneffN/MeaninputN" if those are not recommended values for tuning (I don't get the impression that they are) and have SS3 internally produce the "HarEffN/MeanInputN" column so that it's available to all users. - //It might also be good to add a keyword to the top of those lower tables which could simplify the logic of parsing them separately from the FIT_..._COMPS tables above them and therefore be more robust to changes in format. - - SS2out << "#" << endl - << "Length_Comp_Fit_Summary" << endl - << "Data_type Fleet Recommend_var_adj # N Npos min_Nsamp max_Nsamp mean_Nsamp_in mean_Nsamp_adj mean_Nsamp_DM err_method err_index par1 val1 par2 val2 mean_effN HarMean_effN Curr_Var_Adj Fleet_name" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (n_rmse(f) > 0) - { - // calculate summary statistics - rmse(f) /= n_rmse(f); - Hrmse(f) = n_rmse(f) / Hrmse(f); - Rrmse(f) /= n_rmse(f); - mean_Nsamp_in(f) /= n_rmse(f); - mean_Nsamp_adj(f) /= n_rmse(f); - mean_Nsamp_DM(f) /= n_rmse(f); - // write values to file - SS2out << "4 " << f << " "; - if (Comp_Err_L(0, f) == 0) - { // standard multinomial - SS2out << Hrmse(f) / mean_Nsamp_adj(f) * var_adjust(4, f); - } - else - { // Dirichlet-multinomial (Recommend_var_adj = 1) - SS2out << "1"; - } - SS2out << " # " << Nobs_l(f) << " " << n_rmse(f) << " " << minsamp(f) << " " << maxsamp(f) << " " << mean_Nsamp_in(f) << " " << mean_Nsamp_adj(f); - - switch (Comp_Err_L(0, f)) - { - case 0: - { // standard multinomial - // placeholders for mean_Nsamp_DM and DM_theta (not used) - SS2out << " NA 0 NA multinomial NA NA NA "; - break; - } - case 1: // Dirichlet-multinomial - { - } - case 2: // Dirichlet-multinomial - { - // mean_Nsamp_DM and DM_theta - SS2out << " " << mean_Nsamp_DM(f) << " " << Comp_Err_L(0, f) << " " << Comp_Err_L2(0, f) << " " << ParmLabel(Comp_Err_parmloc(Comp_Err_L2(0, f),2)) << " " << mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(0, f),1))) << " NA "<< " NA "; - break; - } - case 3: // MV Tweedie - { - SS2out << " NA 3 NA NA NA NA NA "; - break; - } - } - SS2out << rmse(f) << " " << Hrmse(f) << " " << var_adjust(4, f) << " " << fleetname(f) << endl; - } - } - } - - // REPORT_KEYWORD 28 FIT_AGE_COMPS - if (pick_report_use(28) == "Y" && Nobs_a_tot > 0) - { - SS2out << endl - << pick_report_name(28) << endl; - SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Sexes Part Ageerr Lbin_lo Lbin_hi SuprPer Use Nsamp_in Nsamp_adj Nsamp_DM effN Like "; - SS2out << " All_obs_mean All_exp_mean All_delta All_exp_5% All_exp_95% All_DurWat"; - if (gender == 2) - SS2out << " F_obs_mean F_exp_mean F_delta F_exp_5% F_exp_95% F_DurWat M_obs_mean M_exp_mean M_delta M_exp_5% M_exp_95% M_DurWat %F_obs %F_exp "; - SS2out << endl; - rmse = 0.0; - n_rmse = 0.0; - mean_Nsamp_in = 0.0; - mean_Nsamp_adj = 0.0; - mean_Nsamp_DM = 0.0; - Hrmse = 0.0; - Rrmse = 0.0; - minsamp = 10000.; - maxsamp = 0.; - for (f = 1; f <= Nfleet; f++) - for (i = 1; i <= Nobs_a(f); i++) - { - t = Age_time_t(f, i); - ALK_time = Age_time_ALK(f, i); - more_comp_info.initialize(); - neff_a(f, i) = exp_a(f, i) * (1 - exp_a(f, i)) + 1.0e-06; // constant added for stability - neff_a(f, i) /= (obs_a(f, i) - exp_a(f, i)) * (obs_a(f, i) - exp_a(f, i)) + 1.0e-06; - // store sample sizes - Nsamp_in = nsamp_a_read(f, i); - Nsamp_adj = nsamp_a(f, i); - dvector tempvec_a(1, exp_a(f, i).size()); - tempvec_a = value(exp_a(f, i)); - more_comp_info = process_comps(gender, gen_a(f, i), age_bins, age_bins_mean, tails_a(f, i), obs_a(f, i), tempvec_a); - - Nsamp_DM = Nsamp_adj; // Will stay at this val for multinomial - if (Comp_Err_A(f) == 1) // Dirichlet #1 - { - dirichlet_Parm =mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); // Thorson's theta from eq 10 - // effN_DM = 1/(1+theta) + n*theta/(1+theta) - Nsamp_DM = value(1. / (1. + dirichlet_Parm) + nsamp_a(f, i) * dirichlet_Parm / (1. + dirichlet_Parm)); - } - else if (Comp_Err_A(f) == 2) // Dirichlet #2 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); // Thorson's beta from eq 12 - // effN_DM = (n+n*beta)/(n+beta) - Nsamp_DM = value((nsamp_a(f, i) + dirichlet_Parm * nsamp_a(f, i)) / (dirichlet_Parm + nsamp_a(f, i))); - } - - if (header_a(f, i, 3) > 0) - { - n_rmse(f) += 1.; - rmse(f) += value(neff_a(f, i)); - mean_Nsamp_in(f) += Nsamp_in; - mean_Nsamp_adj(f) += Nsamp_adj; - mean_Nsamp_DM(f) += Nsamp_DM; - Hrmse(f) += value(1. / neff_a(f, i)); - Rrmse(f) += value(neff_a(f, i) / Nsamp_adj); - if (Nsamp_adj < minsamp(f)) - minsamp(f) = Nsamp_adj; - if (Nsamp_adj > maxsamp(f)) - maxsamp(f) = Nsamp_adj; - } - - // SS2out<<"Fleet Fleet_Name Area Yr Seas Subseas Month Time Sexes Part Ageerr Lbin_lo Lbin_hi Nsamp_in Nsamp_adj Nsamp_DM effN Like SuprPer Use"; - temp = abs(header_a_rd(f, i, 2)); - if (temp > 999) - temp -= 1000; - SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " << gen_a(f, i) << " " << mkt_a(f, i) << " " << ageerr_type_a(f, i) << " " << len_bins(Lbin_lo(f, i)) << " " << len_bins(Lbin_hi(f, i)) << " "; - if (header_a(f, i, 2) < 0 && in_superperiod == 0) - { - SS2out << " start "; - in_superperiod = 1; - } - else if (header_a(f, i, 2) < 0 && in_superperiod == 1) - { - SS2out << " end "; - in_superperiod = 0; - } - else if (in_superperiod == 1) - { - SS2out << " in "; - } - else - { - SS2out << " _ "; - } - if (header_a(f, i, 3) < 0 || nsamp_a(f, i) < 0) - { - SS2out << " skip "; - } - else - { - SS2out << " _ "; - } - SS2out << Nsamp_in << " " << Nsamp_adj << " " << Nsamp_DM << " " - << " " << neff_a(f, i) << " " << age_like(f, i) << " " << more_comp_info(1, 6); - if (gender == 2) - SS2out << " " << more_comp_info(7, 20); - SS2out << endl; - } - - SS2out << "#" << endl - << "Age_Comp_Fit_Summary" << endl - << "Data_type Fleet Recommend_var_adj # N Npos min_Nsamp max_Nsamp mean_Nsamp_in mean_Nsamp_adj mean_Nsamp_DM err_method err_index par1 val1 par2 val2 mean_effN HarMean_effN Curr_Var_Adj Fleet_name" << endl; - for (f = 1; f <= Nfleet; f++) - { - if (n_rmse(f) > 0) - { - // calculate summary statistics - rmse(f) /= n_rmse(f); - Hrmse(f) = n_rmse(f) / Hrmse(f); - Rrmse(f) /= n_rmse(f); - mean_Nsamp_in(f) /= n_rmse(f); - mean_Nsamp_adj(f) /= n_rmse(f); - mean_Nsamp_DM(f) /= n_rmse(f); - // write values to file - SS2out << "5 " << f << " "; - if (Comp_Err_A(f) == 0) - { // standard multinomial - SS2out << Hrmse(f) / mean_Nsamp_adj(f) * var_adjust(5, f); - } - else - { // Dirichlet-multinomial (Recommend_var_adj = 1) - SS2out << "1"; - } - SS2out << " # " << Nobs_a(f) << " " << n_rmse(f) << " " << minsamp(f) << " " << maxsamp(f) << " " << mean_Nsamp_in(f) << " " << mean_Nsamp_adj(f); - switch (Comp_Err_A(f)) - { - case 0: - { // standard multinomial - // placeholders for mean_Nsamp_DM and DM_theta (not used) - SS2out << " NA 0 NA multinomial NA NA NA "; - break; - } - case 1: // Dirichlet-multinomial - { - } - case 2: // Dirichlet-multinomial - { - // mean_Nsamp_DM and DM_theta - SS2out << " " << mean_Nsamp_DM(f) << " " << Comp_Err_A(f) << " " << Comp_Err_A2(f) << " " << ParmLabel(Comp_Err_parmloc(Comp_Err_A2(f),2)) << " " << mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))) << " NA "<< " NA "; - break; - } - case 3: // MV Tweedie - { - SS2out << " NA 3 NA NA NA NA NA "; - break; - } - } - SS2out << rmse(f) << " " << Hrmse(f) << " " << var_adjust(5, f) << " " << fleetname(f) << endl; - } - } - } - - // REPORT_KEYWORD 29 FIT_SIZE_COMPS - if (pick_report_use(29) == "Y" && SzFreq_Nmeth > 0) - { - SS2out << endl - << pick_report_name(29) << endl; - - SzFreq_effN.initialize(); - for (int sz_method = 1; sz_method <= SzFreq_Nmeth; sz_method++) - { - SS2out << "#Method: " << sz_method; - SS2out << " #Units: " << SzFreq_units_label(SzFreq_units(sz_method)); - SS2out << " #Scale: " << SzFreq_scale_label(SzFreq_scale(sz_method)); - SS2out << " #Add_to_comp: " << SzFreq_mincomp(sz_method) << " #N_bins: " << SzFreq_Nbins(sz_method) << endl; - SS2out << "Fleet Fleet_Name Area Yr Seas Subseas Month Time Sexes Part SuprPer Use Nsamp_in Nsamp_adj Nsamp_DM effN Like"; - SS2out << " All_obs_mean All_exp_mean All_delta All_exp_5% All_exp_95% All_DurWat"; - if (gender == 2) - SS2out << " F_obs_mean F_exp_mean F_delta F_exp_5% F_exp_95% F_DurWat M_obs_mean M_exp_mean M_delta M_exp_5% M_exp_95% M_DurWat %F_obs %F_exp "; - SS2out << endl; - rmse = 0.0; - n_rmse = 0.0; - mean_Nsamp_in = 0.0; - mean_Nsamp_adj = 0.0; - mean_Nsamp_DM = 0.0; - Hrmse = 0.0; - Rrmse = 0.0; - - dvector sz_tails(1, 4); - sz_tails(1) = 1; - sz_tails(2) = SzFreq_Nbins(sz_method); - sz_tails(3) = SzFreq_Nbins(sz_method) + 1; - sz_tails(4) = 2 * SzFreq_Nbins(sz_method); - for (f = 1; f <= Nfleet; f++) - { - in_superperiod = 0; - for (iobs = 1; iobs <= SzFreq_totobs; iobs++) - { - more_comp_info.initialize(); - k = SzFreq_obs_hdr(iobs, 6); - if (k == sz_method && abs(SzFreq_obs_hdr(iobs, 3)) == f) - { - if (SzFreq_obs_hdr(iobs, 1) >= styr) // year is positive, so use this obs - { - y = SzFreq_obs_hdr(iobs, 1); - t = SzFreq_time_t(iobs); - ALK_time = SzFreq_time_ALK(iobs); - gg = SzFreq_obs_hdr(iobs, 4); // gender - if (gender == 2 && (gg == 3 || gg == 2)) - { - sz_tails(3) = SzFreq_Nbins(sz_method) + 1; - sz_tails(4) = 2 * SzFreq_Nbins(sz_method); - } - else - { - sz_tails(3) = 1; - sz_tails(4) = SzFreq_Nbins(sz_method); - } - p = SzFreq_obs_hdr(iobs, 5); // partition - z1 = SzFreq_obs_hdr(iobs, 7); - z2 = SzFreq_obs_hdr(iobs, 8); - temp = 0.0; - temp1 = 0.0; - for (z = z1; z <= z2; z++) - { - SzFreq_effN(iobs) += value(SzFreq_exp(iobs, z) * (1.0 - SzFreq_exp(iobs, z))); - temp += square(SzFreq_obs(iobs, z) - SzFreq_exp(iobs, z)); - temp1 += SzFreq_obs(iobs, z) * log(SzFreq_obs(iobs, z)) - SzFreq_obs(iobs, z) * log(SzFreq_exp(iobs, z)); - } - SzFreq_effN(iobs) = (SzFreq_effN(iobs) + 1.0e-06) / value((temp + 1.0e-06)); - temp1 *= SzFreq_sampleN(iobs); - dvector tempvec_l(1, SzFreq_exp(iobs).size()); - tempvec_l = value(SzFreq_exp(iobs)); - more_comp_info = process_comps(gender, gg, SzFreq_bins(sz_method), SzFreq_means(sz_method), sz_tails, SzFreq_obs(iobs), tempvec_l); - Nsamp_DM = SzFreq_sampleN(iobs); // Will remain this if not used; there is no "adjusted" sample size for sizwfreq - if (Comp_Err_Sz(sz_method) == 1) // Dirichlet #1 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(sz_method),1))); // Thorson's theta from eq 10 - // effN_DM = 1/(1+theta) + n*theta/(1+theta) - Nsamp_DM = value(1. / (1. + dirichlet_Parm) + SzFreq_sampleN(iobs) * dirichlet_Parm / (1. + dirichlet_Parm)); - } - else if (Comp_Err_Sz(sz_method) == 2) // Dirichlet #2 - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(sz_method),1))); // Thorson's beta from eq 12 - // effN_DM = (n+n*beta)/(n+beta) - Nsamp_DM = value((SzFreq_sampleN(iobs) + dirichlet_Parm * SzFreq_sampleN(iobs)) / (dirichlet_Parm + SzFreq_sampleN(iobs))); - } - if (SzFreq_obs_hdr(iobs, 3) > 0) // dheck for -fleet that is an ignored obs - { - n_rmse(f) += 1.; - rmse(f) += SzFreq_effN(iobs); - mean_Nsamp_in(f) += SzFreq_sampleN(iobs); - mean_Nsamp_adj(f) += SzFreq_sampleN(iobs); - if (SzFreq_sampleN(iobs) < minsamp(f)) - minsamp(f) = SzFreq_sampleN(iobs); - if (SzFreq_sampleN(iobs) > maxsamp(f)) - maxsamp(f) = SzFreq_sampleN(iobs); - Hrmse(f) += 1. / SzFreq_effN(iobs); - Rrmse(f) += SzFreq_effN(iobs) / SzFreq_sampleN(iobs); - mean_Nsamp_DM(f) += Nsamp_DM; - } - else - { - SzFreq_effN(iobs) = 0.; - } - temp = SzFreq_obs1(iobs, 3); // use original input value because - if (temp > 999) - temp -= 1000.; - SS2out << f << " " << fleetname(f) << " " << fleet_area(f) << " " << Show_Time2(ALK_time) << " " << data_time(ALK_time, f, 1) << " " << data_time(ALK_time, f, 3) << " " << gg << " " << p; - if (SzFreq_obs_hdr(iobs, 2) < 0 && in_superperiod == 0) - { - SS2out << " start "; - in_superperiod = 1; - } - else if (SzFreq_obs_hdr(iobs, 2) < 0 && in_superperiod == 1) - { - SS2out << " end "; - in_superperiod = 0; - } - else if (in_superperiod == 1) - { - SS2out << " in "; - } - else - { - SS2out << " _ "; - } - if (SzFreq_obs_hdr(iobs, 3) < 0) - { - SS2out << " skip "; - } - else - { - SS2out << " _ "; - } - SS2out << " " << SzFreq_sampleN(iobs) << " " << SzFreq_sampleN(iobs) << " " << Nsamp_DM << " " << SzFreq_effN(iobs) << " " << SzFreq_eachlike(iobs) << " " << more_comp_info(1, 6); - if (gender == 2) - SS2out << " " << more_comp_info(7, 20); - SS2out << endl; - } // end finding observation that is being used - } // end observation matching selected method - } // end loop of observations - } // end fleet loop - // SS2out<<"Fleet N Npos mean_effN mean(inputN*Adj) HarMean(effN) Mean(effN/inputN) MeaneffN/MeaninputN Var_Adj"< 0) - { - // calculate summary statistics - rmse(f) /= n_rmse(f); - Hrmse(f) = n_rmse(f) / Hrmse(f); - Rrmse(f) /= n_rmse(f); - mean_Nsamp_in(f) /= n_rmse(f); - mean_Nsamp_adj(f) /= n_rmse(f); - mean_Nsamp_DM(f) /= n_rmse(f); - // write values to file - SS2out << "6 " << f << " "; - if (Comp_Err_Sz(sz_method) == 0) - { // standard multinomial - SS2out << Hrmse(f) / mean_Nsamp_adj(f) * var_adjust(6, f); - } - else - { // Dirichlet-multinomial (Recommend_var_adj = 1) - SS2out << "1"; - } - SS2out << " # " << n_rmse(f) << " " << n_rmse(f) << " " << minsamp(f) << " " << maxsamp(f) << " " << mean_Nsamp_in(f) << " " << mean_Nsamp_adj(f); - - switch (Comp_Err_Sz(sz_method)) - { - case 0: - { // standard multinomial - // placeholders for mean_Nsamp_DM and DM_theta (not used) - SS2out << " NA 0 NA multinomial NA NA NA "; - break; - } - case 1: // Dirichlet-multinomial - { - } - case 2: // Dirichlet-multinomial - { - // mean_Nsamp_DM and DM_theta - SS2out << " " << mean_Nsamp_DM(f) << " " << Comp_Err_Sz(sz_method) << " " << Comp_Err_Sz2(sz_method) << " " << ParmLabel(Comp_Err_parmloc(Comp_Err_Sz2(sz_method),2)) << " " << mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(sz_method),1))) << " NA "<< " NA "; - break; - } - case 3: // MV Tweedie - { - SS2out << " NA 3 NA NA NA NA NA "; - break; - } - } - SS2out << rmse(f) << " " << Hrmse(f) << " " << var_adjust(4, f) << " " << fleetname(f) << endl; - } - } - } // end loop of methods - } // end have sizecomp - - // REPORT_KEYWORD 30 OVERALL_COMPS average composition for all observations - if (pick_report_use(30) == "Y") - { - SS2out << endl - << pick_report_name(30) << endl; - SS2out << "area seas Fleet N_obs len_bins " << len_bins_dat << endl; - - for (f = 1; f <= Nfleet; f++) - { - for (k = 1; k <= 4; k++) - { - dvector templen(1, nlen_bin); - templen.initialize(); - for (s = 1; s <= nseas; s++) - { - templen += obs_l_all(k, s, f); - } - obs_l_all(k, 0, f) = templen / (float(nseas)); - } - } - int kseas = 1; - if (nseas > 1) - kseas = 0; - for (f = 1; f <= Nfleet; f++) - for (s = kseas; s <= nseas; s++) - { - if (Nobs_l(f) > 0) - { - SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_l(f) << " freq " << obs_l_all(1, s, f) << endl; - SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_l(f) << " cum " << obs_l_all(2, s, f) << endl; - if (gender == 2) - { - SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_l(f) << " female " << obs_l_all(2, s, f) << endl; - SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_l(f) << " male " << obs_l_all(2, s, f) << endl; - } - } - } - - SS2out << "area seas Fleet N_obs age_bins "; - if (n_abins > 1) - { - SS2out << age_bins(1, n_abins) << endl; - for (f = 1; f <= Nfleet; f++) - for (s = kseas; s <= nseas; s++) - { - if (Nobs_a(f) > 0) - { - SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_a(f) << " freq " << obs_a_all(1, s, f) << endl; - SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_a(f) << " cum " << obs_a_all(2, s, f) << endl; - if (gender == 2) - { - SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_a(f) << " female " << obs_a_all(2, s, f) << endl; - SS2out << fleet_area(f) << " " << s << " " << f << " " << Nobs_a(f) << " male " << obs_a_all(2, s, f) << endl; - } - } - } - } - else - { - SS2out << "No_age_bins_defined" << endl; - } - } - - // REPORT_KEYWORD 31 LEN_SELEX - if (pick_report_use(31) == "Y") - { - SS2out << endl - << pick_report_name(31) << endl; - SS2out << "Lsel_is_length_selectivity" << endl; // SS_Label_370 - SS2out << "RET_is_retention" << endl; // SS_Label_390 - SS2out << "MORT_is_discard_mortality" << endl; // SS_Label_390 - SS2out << "KEEP_is_sel*retain" << endl; // SS_Label_370 - SS2out << "DEAD_is_sel*(retain+(1-retain)*discmort)"; // SS_Label_370 - SS2out << "; Year_styr-3_(" << styr - 3 << ")_stores_average_used_for_benchmark" << endl; - SS2out << "Factor Fleet Yr Sex Label " << len_bins_m << endl; - for (f = 1; f <= Nfleet; f++) - { - k = styr - 3; - j = YrMax; - for (y = k; y <= j; y++) - for (gg = 1; gg <= gender; gg++) - if (y == styr - 3 || y == endyr || y == YrMax || (y >= styr && (timevary_sel(y, f) > 0 || timevary_sel(y + 1, f) > 0))) - { - SS2out << "Lsel " << f << " " << y << " " << gg << " " << y << "_" << f << "_Lsel"; - for (z = 1; z <= nlength; z++) - { - SS2out << " " << sel_l(y, f, gg, z); - } - SS2out << endl; - } - } - - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - for (y = styr - 3; y <= YrMax; y++) - for (gg = 1; gg <= gender; gg++) - if (y == styr - 3 || y == endyr || y == YrMax || (y >= styr && (timevary_sel(y, f) > 0 || timevary_sel(y + 1, f) > 0))) - { - // if(y>=styr && y<=endyr) - // { - SS2out << "Ret " << f << " " << y << " " << gg << " " << y << "_" << f << "_Ret"; - if (gg == 1) - { - for (z = 1; z <= nlength; z++) - { - SS2out << " " << retain(y, f, z); - } - } - else - { - for (z = nlength1; z <= nlength2; z++) - { - SS2out << " " << retain(y, f, z); - } - } - SS2out << endl; - SS2out << "Mort " << f << " " << y << " " << gg << " " << y << "_" << f << "_Mort"; - if (gg == 1) - { - for (z = 1; z <= nlength; z++) - { - SS2out << " " << discmort(y, f, z); - } - } - else - { - for (z = nlength1; z <= nlength2; z++) - { - SS2out << " " << discmort(y, f, z); - } - } - SS2out << endl; - // } - SS2out << "Keep " << f << " " << y << " " << gg << " " << y << "_" << f << "_Keep"; - for (z = 1; z <= nlength; z++) - { - SS2out << " " << sel_l_r(y, f, gg, z); - } - SS2out << endl; - SS2out << "Dead " << f << " " << y << " " << gg << " " << y << "_" << f << "_Dead"; - for (z = 1; z <= nlength; z++) - { - SS2out << " " << discmort2(y, f, gg, z); - } - SS2out << endl; - } - } - - // REPORT_KEYWORD 32 AGE_SELEX - if (pick_report_use(32) == "Y") - { - dmatrix selmax(1,Nfleet,1,3); // max selectivity for each fleet and year, season - SS2out << endl - << pick_report_name(32) << endl; - SS2out << "Asel_is_age_selectivity_alone" << endl; - SS2out << "Asel2_is_Asel*(selL*size_at_age(ALK)); Q and F parameters may appear higher than expected because Asel2 may have max < 1.0; " << endl; - SS2out << "Aret_is_age_retention" << endl; - SS2out << "COMBINED_ALK*selL*selA*wtlen*ret*discmort_in_makefishsel_yr: " << makefishsel_yr << " With_MeanSel_From: " << Fcast_Sel_yr1 << " - " << Fcast_Sel_yr2; // SS_Label_380 - SS2out << "; Year_styr-3_(" << styr - 3 << ")_stores_average_used_for_benchmark" << endl; - - SS2out << "Factor Fleet Yr Seas Sex Morph Label "; - for (a = 0; a <= nages; a++) - { - SS2out << " " << a; - } - SS2out << endl; - for (f = 1; f <= Nfleet; f++) - { - k = styr - 3; - j = YrMax; - for (y = k; y <= j; y++) - for (gg = 1; gg <= gender; gg++) - if (y == styr - 3 || y == endyr || y == YrMax || (y >= styr && (timevary_sel(y, f + Nfleet) > 0 || timevary_sel(y + 1, f + Nfleet) > 0))) - { - SS2out << "Asel " << f << " " << y << " 1 " << gg << " 1 " << y << "_" << f << "Asel " << sel_a(y, f, gg) << endl; - } - } - for (f = 1; f <= Nfleet; f++) - { - if (seltype(f + Nfleet, 2) != 0) // using age retention - { - for (y = styr - 3; y <= YrMax; y++) - for (gg = 1; gg <= gender; gg++) - if (y == styr - 3 || y == endyr || y == YrMax || (y >= styr && (timevary_sel(y, f + Nfleet) > 0 || timevary_sel(y + 1, f + Nfleet) > 0))) - { - SS2out << "Aret " << f << " " << y << " 1 " << gg << " 1 " << y << "_" << f << "Aret " << retain_a(y, f, gg) << endl; - SS2out << "Amort " << f << " " << y << " 1 " << gg << " 1 " << y << "_" << f << "Amort " << discmort_a(y, f, gg) << endl; - } - } - } - - if (Do_Forecast > 0) - { - k = YrMax; - } - else - { - k = endyr; - } - - selmax = 100.0; // set to big number - - for (y = styr - 3; y <= k; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0 && (y == styr - 3 || y >= styr)) - { - if (s == spawn_seas && (sx(g) == 1 || Hermaphro_Option != 0)) - SS2out << "Fecund " - << " NA " - << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" - << "Fecund" << Wt_Age_t(t, -2, g) << endl; - for (f = 1; f <= Nfleet; f++) - { - SS2out << "Asel2 " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_Asel2" << save_sel_num(t, f, g) << endl; - temp = max(save_sel_num(t, f, g)); - if (temp < selmax(f, 3) && y >= styr) - {selmax(f, 3) = value(temp); - selmax(f, 1) = float(y); - selmax(f, 2) = float(s);} // save y.s - - if (fleet_type(f) <= 2) - SS2out << "F " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_F" << Hrate(f, t) * save_sel_num(t, f, g) << endl; - SS2out << "bodywt " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_bodywt" << Wt_Age_t(t, f, g) << endl; - } - } - } - y = makefishsel_yr; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - for (s = 1; s <= nseas; s++) - { - SS2out << "sel*wt " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_sel*wt" << sel_bio(s, f, g) << endl; - SS2out << "sel*ret*wt " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_sel*ret*wt" << sel_ret_bio(s, f, g) << endl; - SS2out << "sel_nums " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_sel_nums" << sel_num(s, f, g) << endl; - SS2out << "sel*ret_nums " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_sel*ret_nums" << sel_ret_num(s, f, g) << endl; - SS2out << "dead_nums " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_dead_nums" << sel_dead_num(s, f, g) << endl; - SS2out << "dead*wt " << f << " " << y << " " << s << " " << sx(g) << " " << g << " " << y << "_" << f << "_dead*wt" << sel_dead_bio(s, f, g) << endl; - } - SS2out << "#" << endl << "maximum_ASEL2" << endl << "Fleet fleet_name year seas max" << endl; - for (f = 1; f <=Nfleet; f++) - {SS2out << f << " " << fleetname(f) << selmax(f) << endl;} - } - - // REPORT_KEYWORD 33 ENVIRONMENTAL_DATA - if (pick_report_use(33) == "Y" && N_envvar > 0) - { - SS2out << endl - << pick_report_name(33) << endl; - SS2out << "#_Begins.in.startyr-1.which.for.model.generated.columns.shows.the.base.value.to.which.other.years.are.scaled" << endl; - SS2out << "#_Ninput.vectors " << N_envvar << endl; - SS2out << "#_statistics.for.each.inout.env.vector.where.mc.is.to.meancenter.and.Zscore.also.divides.by.stdev" << endl; - SS2out << "Index N minyr maxyr mean stdev mc Zscore" << endl; - for (k = 1; k <= N_envvar; k++) - { - SS2out << k << " " << env_data_N(k) << " " << env_data_minyr(k) << " " << env_data_maxyr(k) << " " << env_data_mean(k) << " " << env_data_stdev(k) << " " << env_data_do_mean(k) << " " << env_data_do_stdev(k) << endl; - } - - SS2out << endl - << "Yr rel_smrynum rel_smrybio exp(recdev) rel_SSB null "; - for (i = 1; i <= N_envvar; i++) - SS2out << " env:_" << i; - SS2out << endl; - for (y = styr - 1; y <= YrMax; y++) - { - SS2out << y << " " << env_data(y) << endl; - } - SS2out << endl; - } - - // REPORT_KEYWORD 34 TAG_Recapture - if (pick_report_use(34) == "Y" && Do_TG > 0) - { - SS2out << endl - << pick_report_name(34) << endl; - SS2out << TG_mixperiod << " First period to use recaptures in likelihood" << endl; - SS2out << TG_maxperiods << " Accumulation period" << endl; - - SS2out << " Tag_release_info" << endl; - SS2out << "TAG Area Yr Seas Time Sex Age Nrelease Init_Loss Chron_Loss" << endl; - ; - for (TG = 1; TG <= N_TG; TG++) - { - SS2out << TG << " " << TG_release(TG)(2, 8) << " " << TG_save(TG)(1, 2) << endl; - } - SS2out << "Tags_Alive "; - k = max(TG_endtime); - for (t = 0; t <= k; t++) - SS2out << t << " "; - SS2out << endl; - for (TG = 1; TG <= N_TG; TG++) - { - SS2out << TG << " " << TG_save(TG)(3, 3 + TG_endtime(TG)) << endl; - } - SS2out << "Total_recaptures "; - for (t = 0; t <= k; t++) - SS2out << t << " "; - SS2out << endl; - for (TG = 1; TG <= N_TG; TG++) - { - SS2out << TG << " "; - for (TG_t = 0; TG_t <= TG_endtime(TG); TG_t++) - SS2out << TG_recap_exp(TG, TG_t, 0) << " "; - SS2out << endl; - } - - SS2out << endl - << "Reporting_Rates_by_Fishery" << endl - << "Fleet Init_Reporting Report_Decay" << endl; - for (f = 1; f <= Nfleet; f++) - SS2out << f << " " << TG_report(f) << " " << TG_rep_decay(f) << endl; - SS2out << "See_composition_data_output_for_tag_recapture_details" << endl; - } - - // ************************ SS_Label_400 - // REPORT_KEYWORD 35 NUMBERS_AT_AGE - if (pick_report_use(35) == "Y") - { - SS2out << endl - << pick_report_name(35) << endl; - SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era" << age_vector << endl; - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (y = styr - 2; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - temp = double(y) + azero_seas(s); - SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " B"; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Save_PopAge(t, p, g) << endl; - temp = double(y) + azero_seas(s) + seasdur_half(s); - SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " M"; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Save_PopAge(t, p + pop, g) << endl; - } - } - } - - // REPORT_KEYWORD 36 BIOMASS_AT_AGE - if (pick_report_use(36) == "Y") - { - SS2out << endl - << pick_report_name(36) << endl; - SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era" << age_vector << endl; - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (y = styr - 2; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - temp = double(y) + azero_seas(s); - SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " B"; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Save_PopBio(t, p, g) << endl; - temp = double(y) + azero_seas(s) + seasdur_half(s); - SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " M"; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Save_PopBio(t, p + pop, g) << endl; - } - } - } - - // REPORT_KEYWORD 37 NUMBERS_AT_LENGTH - if (pick_report_use(37) == "Y") - { - SS2out << endl - << pick_report_name(37) << endl; - SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era " << len_bins << endl; - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (y = styr; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - temp = double(y) + azero_seas(s); - SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " B "; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Save_PopLen(t, p, g) << endl; - temp = double(y) + azero_seas(s) + seasdur_half(s); - SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " M "; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Save_PopLen(t, p + pop, g) << endl; - } - } - } - - // REPORT_KEYWORD 38 BIOMASS_AT_LENGTH - if (pick_report_use(38) == "Y") - { - SS2out << endl - << pick_report_name(38) << endl; - SS2out << "Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era " << len_bins << endl; - for (p = 1; p <= pop; p++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (y = styr; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - temp = double(y) + azero_seas(s); - SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " B "; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Save_PopWt(t, p, g) << endl; - temp = double(y) + azero_seas(s) + seasdur_half(s); - SS2out << p << " " << GP4(g) << " " << sx(g) << " " << Bseas(g) << " " << settle_g(g) << " " << GP2(g) << " " << g << " " << y << " " << s << " " << temp << " M "; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Save_PopWt(t, p + pop, g) << endl; - } - } - } - - // REPORT_KEYWORD 39 F_AT_AGE - if (pick_report_use(39) == "Y") - { - SS2out << endl - << pick_report_name(39) << endl; - SS2out << "Area Fleet Sex Morph Yr Seas Era" << age_vector << endl; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - for (g = 1; g <= gmorph; g++) - { - if (use_morph(g) > 0) - { - for (y = styr - 1; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - SS2out << fleet_area(f) << " " << f << " " << sx(g) << " " << g << " " << y << " " << s; - if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << Hrate(f, t) * save_sel_num(t, f, g) << endl; - } - } - } - } - - // REPORT_KEYWORD 40 CATCH_AT_AGE - if (pick_report_use(40) == "Y") - { - SS2out << endl - << pick_report_name(40) << endl; - SS2out << "#_NOTE: catage is based on: sel_dead_num = sel * (retain + (1-retain)*discmort)" << endl; - SS2out << "Area Fleet Sex XX XX Type Morph Yr Seas XX Era" << age_vector << endl; - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2 || fleet_type(f) == 4) - for (g = 1; g <= gmorph; g++) - { - if (use_morph(g) > 0) - { - for (y = styr - 1; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX dead " << g << " " << y << " " << s; - if (y == styr - 1) - { - SS2out << " XX INIT "; - } - else if (y <= endyr) - { - SS2out << " XX TIME "; - } - else - { - SS2out << " XX FORE "; - } - SS2out << catage(t, f, g) << endl; - } - } - } - } - - // REPORT_KEYWORD 41 DISCARD_AT_AGE - if (pick_report_use(41) == "Y") - { - SS2out << endl - << pick_report_name(41) << endl; - SS2out << "Area Fleet Sex XX XX Type Morph Yr Seas XX Era" << age_vector << endl; - for (f = 1; f <= Nfleet; f++) - // if((fleet_type(f)<=2 && Do_Retain(f)>0) || fleet_type(f)==4) - if ((fleet_type(f) <= 2 && Do_Retain(f) > 0)) - for (g = 1; g <= gmorph; g++) - { - if (use_morph(g) > 0) - { - for (y = styr - 1; y <= YrMax; y++) - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX dead " << g << " " << y << " " << s; - if (y == styr - 1) - { - SS2out << " XX INIT "; - } - else if (y <= endyr) - { - SS2out << " XX TIME "; - } - else - { - SS2out << " XX FORE "; - } - SS2out << catage(t, f, g) << endl; - SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX sel " << g << " " << y << " " << s; - if (y == styr - 1) - { - SS2out << " XX INIT "; - } - else if (y <= endyr) - { - SS2out << " XX TIME "; - } - else - { - SS2out << " XX FORE "; - } - SS2out << disc_age(t, disc_fleet_list(f), g) << endl; - - SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX ret " << g << " " << y << " " << s; - if (y == styr - 1) - { - SS2out << " XX INIT "; - } - else if (y <= endyr) - { - SS2out << " XX TIME "; - } - else - { - SS2out << " XX FORE "; - } - SS2out << disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) << endl; - - SS2out << fleet_area(f) << " " << f << " " << sx(g) << " XX XX disc " << g << " " << y << " " << s; - if (y == styr - 1) - { - SS2out << " XX INIT "; - } - else if (y <= endyr) - { - SS2out << " XX TIME "; - } - else - { - SS2out << " XX FORE "; - } - SS2out << disc_age(t, disc_fleet_list(f), g) - disc_age(t, disc_fleet_list(f) + N_retain_fleets, g) << endl; - } - } - } - } - - // REPORT_KEYWORD 42 BIOLOGY - if (pick_report_use(42) == "Y") - { - SS2out << endl - << pick_report_name(42) << endl; - SS2out << sum(use_morph) << " " << nlength << " " << nages << " " << nseas << " N_Used_morphs;_lengths;_ages;_season;_by_season_in_endyr" << endl; - if (gender == 2) - { - SS2out << "GP Bin Len_lo Len_mean Wt_F Mat Mat*Fec Wt_M Fec"; - } - else - { - SS2out << "GP Bin Len_lo Len_mean Wt_F Mat Mat*Fec Fec"; - } - if(Maturity_Option == 4 || Maturity_Option == 5) { - SS2out << " // [Mat, Mat*Fec, and Fec reported as 0.5 because maturity option directly reads age_fecundity]"; - } - SS2out << endl; - for (gp = 1; gp <= N_GP; gp++) - for (z = 1; z <= nlength; z++) - { - SS2out << gp << " " << z << " " << len_bins(z) << " " << len_bins_m(z) << " " << wt_len(1, gp, z) << " " << mat_len(gp, z) << " " << mat_fec_len(gp, z); - if (gender == 2) - { - SS2out << " " << wt_len(1, N_GP + gp, z); - } - SS2out << " " << fec_len(gp, z) << endl; - } - } - - // REPORT_KEYWORD 43 NATURAL_MORTALITY - if (pick_report_use(43) == "Y") - { - SS2out << endl - << pick_report_name(43) << endl; - SS2out << "Method: " << natM_type << endl; - int hide_M1 = 1; - if(N_pred > 0) - { - SS2out<< "area 0 shows M1 only, numbered areas have M1+M2"< 0) - { - SS2out << endl - << "Predator_(M2); Values_are_apical_M2; total_M-at-age_(M1+M2)_reported_in_table_No_fishery_for_Z=M " << endl - << "Yr Era seas "; - for (f1 = 1; f1 <= N_pred; f1++) - { - f = predator(f1); - SS2out << fleetname(f) << "_M2 comsume_Bio consume_Num"; - } - SS2out << endl; - for (y = styr - 2; y <= YrMax; y++) - { - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - SS2out << y; - if (y == styr - 2) - { - SS2out << " VIRG "; - } - else if (y == styr - 1) - { - SS2out << " INIT "; - } - else if (y <= endyr) - { - SS2out << " TIME "; - } - else - { - SS2out << " FORE "; - } - SS2out << s << " "; - for (f1 = 1; f1 <= N_pred; f1++) - { - SS2out << pred_M2(f1, t) << " " << catch_fleet(t, predator(f1), 1) << " " << catch_fleet(t, predator(f1), 4) << " "; - } - SS2out << endl; - } - } - } - } - // REPORT_KEYWORD 44 AGE_SPECIFIC_K - if (pick_report_use(44) == "Y" && Grow_type >= 3 && Grow_type <= 6) - { - SS2out << endl - << pick_report_name(44) << endl; - SS2out << "Bio_Pattern Sex " << age_vector << endl; - g = 0; - for (gg = 1; gg <= gender; gg++) - for (gp = 1; gp <= N_GP; gp++) - { - g++; - SS2out << gp << " " << gg << " " << -VBK(g) << endl; - } - } - - // REPORT_KEYWORD 45 GROWTH_PARAMETERS_derived - if (pick_report_use(45) == "Y") - { - SS2out << endl - << pick_report_name(45) << endl; - SS2out << " Count Yr Sex Platoon A1 A2 L_a_A1 L_a_A2 K A_a_L0 Linf CVmin CVmax natM_amin natM_max M_age0 M_nages" - << " WtLen1 WtLen2 Mat1 Mat2 Fec1 Fec2" << endl; - for (g = 1; g <= save_gparm_print; g++) - { - SS2out << save_G_parm(g)(1, 2) << " " << sx(save_G_parm(g, 3)) << " " << save_G_parm(g)(3, 22) << endl; - } - } - // REPORT_KEYWORD 46 SEASONAL_BIOLOGY - if (pick_report_use(46) == "Y" && MGparm_doseas > 0) - { - SS2out << endl - << pick_report_name(46) << endl; - SS2out << "Seas F_wtlen1 F_wtlen2 F_mat1 F_mat2 F_fec1 F_fec2 M_wtlen1 M_wtlen2 L_a_A1 VBK" << endl; - for (s = 1; s <= nseas; s++) - { - SS2out << s << " " << save_seas_parm(s) << endl; - } - } - - // restore_AgeLength_Key to endyr, otherwise it will have ALK from end of forecast - // NOT SURE why this code is here - if (timevary_MG(endyr, 2) > 0 || timevary_MG(endyr, 3) > 0 || WTage_rd > 0) - { - y = endyr; - t_base = styr + (y - styr) * nseas - 1; - for (s = 1; s <= nseas; s++) - { - t = t_base + s; - bio_t = styr + (endyr - styr) * nseas + s - 1; - subseas = 1; - ALK_idx = (s - 1) * N_subseas + subseas; - get_growth3(styr, t, s, subseas); - Make_AgeLength_Key(s, subseas); // for begin season - subseas = mid_subseas; - ALK_idx = (s - 1) * N_subseas + subseas; - get_growth3(styr, t, s, subseas); - Make_AgeLength_Key(s, subseas); // for midseason - if (s == spawn_seas) - { - subseas = spawn_subseas; - ALK_idx = (s - 1) * N_subseas + subseas; - if (spawn_subseas != 1 && spawn_subseas != mid_subseas) - { - get_growth3(styr, t, s, subseas); - Make_AgeLength_Key(s, subseas); // spawn subseas - } - get_mat_fec(); - } - } - } - - dvariable Herma_Cum; - // REPORT_KEYWORD 47 Biology_at_age_by_morph - if (pick_report_use(47) == "Y") - { - SS2out << endl - << pick_report_name(47) << endl; - SS2out << "in_endyr_with_"; - switch (CV_depvar) - { - case 0: - { - SS2out << "CV=f(LAA)"; - break; - } - case 1: - { - SS2out << "CV=F(A)"; - break; - } - case 2: - { - SS2out << "SD=F(LAA)"; - break; - } - case 3: - { - SS2out << "SD=F(A)"; - break; - } - case 4: - { - SS2out << "logSD=f(A)"; - break; - } - } - - SS2out << endl; - SS2out << "Seas Morph Bio_Pattern Sex Settlement Platoon int_Age Real_Age Age_Beg Age_Mid M Len_Beg Len_Mid SD_Beg SD_Mid Wt_Beg Wt_Mid Len_Mat Age_Mat Mat*Fecund Mat_F_wtatage Mat_F_Natage"; - if (Hermaphro_Option != 0) - { - SS2out << " Herma_Trans "; - } - if (gender == 2) - { - for (p = 1; p <=pop; p++) - SS2out << " sex_ratio_area:_" << p ; - } - for (f = 1; f <= Nfleet; f++) - SS2out << " Len:_" << f << " SelWt:_" << f << " RetWt:_" << f; - SS2out << endl; - for (s = 1; s <= nseas; s++) - { - t = styr + (endyr - styr) * nseas + s - 1; - ALK_idx = (s - 1) * N_subseas + 1; // for first subseas of season - ALK_idx_mid = (s - 1) * N_subseas + mid_subseas; // for midsubseas of the season - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (a = 0; a <= nages; a++) - { - SS2out << s << " " << g << " " << GP4(g) << " " << sx(g) << " " << settle_g(g) << " " << GP2(g) << " " << a << " " << real_age(g, ALK_idx, a) << " " << calen_age(g, ALK_idx, a) << " " << calen_age(g, ALK_idx_mid, a); - SS2out << " " << natM(t, 1, GP3(g), a) << " " << Ave_Size(t, 1, g, a) << " " << Ave_Size(t, mid_subseas, g, a) << " " - << Sd_Size_within(ALK_idx, g, a) << " " << Sd_Size_within(ALK_idx_mid, g, a) << " " - << Wt_Age_beg(s, g, a) << " " << Wt_Age_mid(s, g, a) << " " << ALK(ALK_idx, g, a) * mat_len(GP4(g)) << " "; - if (Maturity_Option <= 2) - { - SS2out << mat_age(GP4(g), a); - } - else if (sx(g) == 1 && Maturity_Option < 5) - { - SS2out << Age_Maturity(GP4(g), a); - } - else - { - SS2out << -1.; - } - SS2out << " " << fec(g, a) << " " << make_mature_bio(g, a) << " " << make_mature_numbers(g, a); - if (Hermaphro_Option == 1) - { - if (sx(g) == 1) - { - SS2out << " " << Hermaphro_val(GP4(g), a) << " "; - } - else - { - SS2out << " NA "; - } - } - else if (Hermaphro_Option == -1) - { - if (sx(g) == 2) - { - SS2out << " " << Hermaphro_val(GP4(g), a) << " "; - } - else - { - SS2out << " NA "; - } - } - // write sex ratio in endyr for each area using natage - // small constant added to denominator so that morph-area combos with no fish will display a value of 0.0, rather than "nan" - // because natage is used, the reported sex ratio values will be responsive to hermaphroditism, and to sex-specific mortality - if (gender == 2) - { - if (sx(g) == 1) - { - for (p = 1; p <= pop; p++) - SS2out << " " << natage(t, p, g, a) / (natage(t, p, g, a) + natage(t, p, g + gmorph / 2, a) + 1.0e-07) << " "; - } - else - { - for (p = 1; p <= pop; p++) - SS2out << " " << natage(t, p, g, a) / (natage(t, p, g, a) + natage(t, p, g - gmorph / 2, a) + 1.0e-07) << " "; - } - } - if (WTage_rd == 0) - { - for (f = 1; f <= Nfleet; f++) - SS2out << " " << ALK(ALK_idx_mid, g, a) * elem_prod(sel_l(endyr, f, sx(g)), len_bins_m) / (ALK(ALK_idx_mid, g, a) * sel_l(endyr, f, sx(g))) << " " << ALK(ALK_idx_mid, g, a) * elem_prod(sel_l(endyr, f, sx(g)), wt_len(s, GP(g))) / (ALK(ALK_idx_mid, g, a) * sel_l(endyr, f, sx(g))) << " " << ALK(ALK_idx_mid, g, a) * elem_prod(sel_l_r(endyr, f, sx(g)), wt_len(s, GP(g))) / (ALK(ALK_idx_mid, g, a) * sel_l_r(endyr, f, sx(g))); - } - else - { - for (f = 1; f <= Nfleet; f++) - SS2out << " " << ALK(ALK_idx_mid, g, a) * elem_prod(sel_l(endyr, f, sx(g)), len_bins_m) / (ALK(ALK_idx_mid, g, a) * sel_l(endyr, f, sx(g))) << " " << Wt_Age_t(t, f, g, a) << " " << Wt_Age_t(t, f, g, a); - } - SS2out << endl; - } - } - } - } - - // REPORT_KEYWORD 48 MEAN_BODY_WT by year - if (pick_report_use(48) == "Y") - { - SS2out << endl - << pick_report_name(48) << endl; - if (WTage_rd > 0) - SS2out << " as read from wtatage.ss"; - SS2out << "#_NOTE: yr=_" << styr - 3 << "_stores_values_for_benchmark" << endl; - SS2out << "Morph Yr Seas" << age_vector << endl; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (y = styr - 3; y <= YrMax; y++) - { - yz = y; - if (yz > endyr + 2) - yz = endyr + 2; - // if(y==styr-3 || y==styr || timevary_MG(yz,2)>0 || timevary_MG(yz,3)>0 || WTage_rd>0) // if growth or wtlen parms have changed - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - SS2out << g << " " << y << " " << s << " " << Wt_Age_t(t, 0, g) << endl; - } - } - } - } - - // REPORT_KEYWORD 49 MEAN_SIZE_TIMESERIES body length - if (pick_report_use(49) == "Y") - { - SS2out << endl - << pick_report_name(49) << endl; - SS2out << "Morph Yr Seas SubSeas" << age_vector << endl; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (y = styr - 3; y <= YrMax; y++) - { - yz = y; - if (yz > endyr + 2) - yz = endyr + 2; - // if(y==styr-3 || y==styr || timevary_MG(yz,2)>0) - { - for (s = 1; s <= nseas; s++) - { - t = styr + (y - styr) * nseas + s - 1; - for (i = 1; i <= N_subseas; i++) - { - SS2out << g << " " << y << " " << s << " " << i << " " << Ave_Size(t, i, g) << endl; - } - } - } - } - } - s = 1; - for (i = 1; i <= gender; i++) - { - SS2out << "#" << endl - << "mean_size_Jan_1_for_sex: " << i << "#NOTE: combines_all_settlements_areas_GP_and_platoons" << endl; - SS2out << "Sex Yr Seas Beg " << age_vector << endl; - for (y = styr; y <= YrMax; y++) - { - yz = y; - if (yz > endyr + 2) - yz = endyr + 2; - if (y <= styr || timevary_MG(yz, 2) > 0 || N_platoon > 1) - { - t = styr + (y - styr) * nseas + s - 1; - SS2out << i << " " << y << " " << s << " " << 0; - for (a = 0; a <= nages; a++) - { - temp = 0.0; - temp1 = 0.0; - for (g = 1; g <= gmorph; g++) - { - if (sx(g) == i && use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) - { - temp += natage(t, p, g, a); - temp1 += Ave_Size(t, 1, g, a) * natage(t, p, g, a); - } // end loop of areas - } // end need to use this gender/platoon - } // end loop of all platoons - if (temp > 0.0) - { - SS2out << " " << temp1 / temp; - } - else - { - SS2out << " __"; - } - } // end loop of ages - SS2out << endl; - } // end need to report this year - } // end year loop - } // end gender loop - } // end do report detail - - // REPORT_KEYWORD 50 AGE_LENGTH_KEY - if (pick_report_use(50) == "Y") - { - SS2out << endl - << pick_report_name(50) << endl; - if (Grow_logN == 1) - SS2out << " #Lognormal "; - SS2out << "#" << endl; // SS_Label_460 - SS2out << " sdratio " << platoon_sd_ratio << endl; - SS2out << " sdwithin " << sd_within_platoon << endl; - SS2out << " sdbetween " << sd_between_platoon << endl; - for (s = 1; s <= nseas; s++) - for (subseas = 1; subseas <= N_subseas; subseas++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - t = styr + (endyr - styr) * nseas + s - 1; - ALK_idx = (s - 1) * N_subseas + subseas; - SS2out << "#" << endl - << " Seas: " << s << " Sub_Seas: " << subseas << " Morph: " << g << endl; - SS2out << "Age:"; - for (a = 0; a <= nages; a++) - SS2out << " " << a; - SS2out << endl; - for (z = nlength; z >= 1; z--) - { - SS2out << len_bins2(z) << " "; - for (a = 0; a <= nages; a++) - SS2out << ALK(ALK_idx, g, a, z) << " "; - SS2out << endl; - } - SS2out << "mean " << Ave_Size(t, subseas, g) << endl; - SS2out << "sdsize " << Sd_Size_within(ALK_idx, g) << endl; - } - } - - // REPORT_KEYWORD 51 AGE_AGE_KEY - if (pick_report_use(51) == "Y" && N_ageerr > 0) - { - SS2out << endl - << pick_report_name(51) << endl; - for (k = 1; k <= N_ageerr + store_agekey_add; k++) - { - SS2out << "KEY: " << k << endl - << "mean " << age_err(k, 1) << endl - << "SD " << age_err(k, 2) << endl; - for (b = n_abins; b >= 1; b--) - { - SS2out << age_bins(b) << " "; - for (a = 0; a <= nages; a++) - SS2out << age_age(k, b, a) << " "; - SS2out << endl; - } - if (gender == 2) - { - L2 = n_abins; - A2 = nages + 1; - for (b = n_abins; b >= 1; b--) - { - SS2out << age_bins(b) << " "; - for (a = 0; a <= nages; a++) - SS2out << age_age(k, b + L2, a + A2) << " "; - SS2out << endl; - } - } - } - } - - // REPORT_KEYWORD 52 COMPOSITION_DATABASE - /* SS_Label_xxx report the composition database to CompReport.sso */ - int last_t; - if (pick_report_use(52) == "Y") - { - SS_compout << endl - << "Size_Bins_pop;_(Pop_len_mid_used_for_calc_of_selex_and_bio_quantities)" << endl; - SS_compout << "Pop_Bin: "; - for (j = 1; j <= nlength; j++) - SS_compout << " " << j; - SS_compout << endl - << "Length: " << len_bins << endl; - SS_compout << "Len_mid: " << len_bins_m << endl; - SS_compout << "Size_Bins_dat;_(Data_len_mid_for_reporting_only)" << endl; - SS_compout << "Data_Bin: "; - for (j = 1; j <= nlen_bin; j++) - SS_compout << " " << j; - SS_compout << endl - << "Length: " << len_bins_dat << endl; - SS_compout << "Len_mid: " << len_bins_dat_m << endl; - - SS_compout << "Combine_males_with_females_thru_sizedata_bin " << CombGender_L << endl; - // SS_compout<<"Size:"< 999) - real_month -= 1000.; - - if (ALK_time == last_t) - { - repli++; - } - else - { - repli = 1; - last_t = ALK_time; - } - in_superperiod = determine_speriod(in_superperiod, anystring, header_l(f, i, 2), header_l(f, i, 3)); - -// count bins - nbins = 0; - for (gg = 1; gg <= gender ; gg ++) - { - if (gen_l(f, i) != 2 && gg == 1) - { - z_lo = tails_l(f, i, 1); - z_hi = tails_l(f, i, 2); - nbins += z_hi - z_lo + 1; - } - else if (gen_l(f, i) >= 2 && gg == 2) // do males - { - z_lo = tails_l(f, i, 3); - z_hi = tails_l(f, i, 4); - nbins += z_hi - z_lo + 1; - } - } - - int gender2 = gender; - if (gen_l(f, i) == 0) gender2 = 1; - for (gg = 1; gg <= gender2 ; gg ++) - { - if (gen_l(f, i) != 2 && gg == 1) - { - s_off = 1; - z_lo = tails_l(f, i, 1); - z_hi = tails_l(f, i, 2); - } - else if (gen_l(f, i) >= 2 && gg == 2) // do males - { - s_off = 2; - z_lo = tails_l(f, i, 3); - z_hi = tails_l(f, i, 4); - } - // temp = gammln(dirichlet_Parm) - gammln(nsamp_l(f, i) + dirichlet_Parm); - nsamp = fabs(nsamp_l(f, i)); - for (z = z_lo; z <= z_hi; z++) - { - ocomp = obs_l(f, i, z); - ecomp = value( exp_l(f, i, z) ); - // Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin Obs Exp - SS_compout << header_l(f, i, 1) << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gen_l(f, i) << " LEN " << mkt_l(f, i) << " 0 " << s_off << " " << 1 << " " << 1 << " " << len_bins_dat2(z) << " " << ocomp << " " << ecomp << " "; - // Pearson Nsamp_adj Nsamp_in effN Like - temp2 += ocomp; - temp1 += ecomp; - if (nsamp > 0 && header_l(f, i, 3) > 0 && (ecomp != 0.0 && ecomp != 1.0) && nbins > 0 ) // check for values to include - { - int parti = mkt_l(f, i); - if (Comp_Err_L(parti,f) == 0) - { - show_Pearson = (ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp ); // Pearson for multinomial - show_logL = ocomp * log( (ocomp + 1.0e-12) / ( ecomp + 1.0e-12) ) * nsamp; // logL - } - if (Comp_Err_L(parti, f) == 1 || Comp_Err_L(parti, f) == 2) - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_L2(parti, f),1))); - if (Comp_Err_L(parti, f) == 1 ) - { dirichlet_Parm *= nsamp; } - show_Pearson = value((ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp * (nsamp + dirichlet_Parm) / (1. + dirichlet_Parm))); // Pearson for Dirichlet-multinomial using negative-exponential parameterization - show_logL = -offset_l(f,i) / nbins - - value( gammln(nsamp * ocomp + dirichlet_Parm * ecomp) - gammln(dirichlet_Parm * ecomp)) - - value( ( gammln(dirichlet_Parm) - gammln(nsamp + dirichlet_Parm))) / nbins; - } - if (Comp_Err_L(parti, f) == 3 ) // MV Tweedie - { - } - SS_compout << show_Pearson << " " << nsamp << " " << nsamp_l_read(f, i) << " " << neff_l(f, i) << " " << show_logL; - } - else // sample size zero or skip - { - SS_compout << " NA " << " " << nsamp << " " << nsamp_l_read(f, i) << " NA NA "; // placeholder - } - // Cum_obs Cum_exp SuprPer Used? - SS_compout << " " << temp2 << " " << temp1 << " " << anystring < 999) - real_month -= 1000.; - - if (ALK_time == last_t) - { - repli++; - } - else - { - repli = 1; - last_t = ALK_time; - } - in_superperiod = determine_speriod(in_superperiod, anystring, header_a(f, i, 2), header_a(f, i, 3)); - -// count bins - nbins = 0; - for (gg = 1; gg <= gender ; gg ++) - { - if (gen_a(f, i) != 2 && gg == 1) - { - z_lo = tails_a(f, i, 1); - z_hi = tails_a(f, i, 2); - nbins += z_hi - z_lo + 1; - } - else if (gen_a(f, i) >= 2 && gg == 2) // do males - { - z_lo = tails_a(f, i, 3); - z_hi = tails_a(f, i, 4); - nbins += z_hi - z_lo + 1; - } - } - - int gender2 = gender; - if (gen_a(f, i) == 0) gender2 = 1; - for (gg = 1; gg <= gender2 ; gg ++) - { - if (gen_a(f, i) != 2 && gg == 1) - { - s_off = 1; - z_lo = tails_a(f, i, 1); - z_hi = tails_a(f, i, 2); - } - else if (gen_a(f, i) >= 2 && gg == 2) // do males - { - s_off = 2; - z_lo = tails_a(f, i, 3); - z_hi = tails_a(f, i, 4); - } - // temp = gammln(dirichlet_Parm) - gammln(nsamp_l(f, i) + dirichlet_Parm); - nsamp = fabs(nsamp_a(f, i)); - for (z = z_lo; z <= z_hi; z++) - { - ocomp = obs_a(f, i, z); - ecomp = value( exp_a(f, i, z) ); - // Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin Obs Exp - SS_compout << header_a(f, i, 1) << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gen_a(f, i) << " AGE " << mkt_a(f, i) << " " << ageerr_type_a(f, i) - << " " << s_off << " " << len_bins(Lbin_lo(f, i)) << " " << len_bins(Lbin_hi(f, i)) << " " << age_bins(z) << " " << ocomp << " " << ecomp << " "; - // Pearson Nsamp_adj Nsamp_in effN Like - temp2 += ocomp; - temp1 += ecomp; - - if (nsamp > 0 && header_a(f, i, 3) > 0 && (ecomp != 0.0 && ecomp != 1.0) && nbins > 0 ) // check for values to include - { - if (Comp_Err_A(f) == 0) - { - show_Pearson = (ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp ); // Pearson for multinomial - show_logL = ocomp * log( (ocomp + 1.0e-12) / ( ecomp + 1.0e-12) ) * nsamp; // logL - } - if (Comp_Err_A(f) == 1 || Comp_Err_A(f) == 2) - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_A2(f),1))); - if (Comp_Err_A(f) == 1 ) - { dirichlet_Parm *= nsamp; } - show_Pearson = value((ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp * (nsamp + dirichlet_Parm) / (1. + dirichlet_Parm))); // Pearson for Dirichlet-multinomial using negative-exponential parameterization - show_logL = -offset_a(f,i) / nbins - - value( gammln(nsamp * ocomp + dirichlet_Parm * ecomp) - gammln(dirichlet_Parm * ecomp)) - - value( ( gammln(dirichlet_Parm) - gammln(nsamp + dirichlet_Parm))) / nbins; - } - if (Comp_Err_A(f) == 3 ) // MV Tweedie - { - } - SS_compout << show_Pearson << " " << nsamp << " " << nsamp_a_read(f, i) << " " << neff_a(f, i) << " " << show_logL; - } - else // sample size zero or skip - { - SS_compout << " NA " << " " << nsamp << " " << nsamp_a_read(f, i) << " NA NA "; // placeholder - } - // Cum_obs Cum_exp SuprPer Used? - SS_compout << " " << temp2 << " " << temp1 << " " << anystring < 999) - real_month -= 1000.; - if (ALK_time == last_t) - { - repli++; - } - else - { - repli = 1; - last_t = ALK_time; - } - in_superperiod = determine_speriod(in_superperiod, anystring, header_ms(f, i, 2), header_ms(f, i, 3)); - - for (z = 1; z <= n_abins2; z++) - { - if (z <= n_abins) - s_off = 1; - else - s_off = 2; - t1 = obs_ms_n(f, i, z); - // where: obs_ms_n(f,i,z)=sqrt(var_adjust(6,f)*obs_ms_n(f,i,z)); - if (ageerr_type_ms(f, i) > 0) - { - anystring2 = " L@A "; - } - else - { - anystring2 = " W@A "; - } - if (t1 > 0.) - t1 = square(t1); - SS_compout << header_ms(f, i, 1) << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gen_ms(f, i) << anystring2 << mkt_ms(f, i) << " " << ageerr_type_ms(f, i) << " " << s_off << " " << exp_ms_sq(f, i, z) << " " << nlen_bin << " " << age_bins(z) << " " << obs_ms(f, i, z) << " " << exp_ms(f, i, z) << " "; - if (obs_ms(f, i, z) > 0. && t1 > 0. && header_ms(f, i, 3) > 0) - { - SS_compout << (obs_ms(f, i, z) - exp_ms(f, i, z)) / (exp_ms_sq(f, i, z) / obs_ms_n(f, i, z)) << " "; // Pearson - SS_compout << t1 << " "; // sample size - SS_compout << "NA "; // placeholder for input sample size - //SS_compout< 0) // have some sizefreq data - { - repli = 0; - in_superperiod = 0; - last_t = -999; - for (iobs = 1; iobs <= SzFreq_totobs; iobs++) - { - y = SzFreq_obs_hdr(iobs, 1); - if (y >= styr) // flag for obs that are used - { - N_out++; - temp2 = 0.0; - temp1 = 0.0; - real_month = abs(SzFreq_obs1(iobs, 3)); // month - if (real_month > 999) - real_month -= 1000.; - f = abs(SzFreq_obs_hdr(iobs, 3)); - gg = SzFreq_obs_hdr(iobs, 4); // gender - int Sz_method = SzFreq_obs1(iobs, 1); // sizecomp method - int logL_method = Comp_Err_Sz(Sz_method); - - in_superperiod = determine_speriod(in_superperiod, anystring, SzFreq_obs_hdr(iobs, 2), SzFreq_obs_hdr(iobs, 3)); - - p = SzFreq_obs_hdr(iobs, 5); // partition - z_lo = SzFreq_obs_hdr(iobs, 7); - z_hi = SzFreq_obs_hdr(iobs, 8); - nbins = z_hi - z_lo +1; - t = SzFreq_time_t(iobs); - ALK_time = SzFreq_time_ALK(iobs); - nsamp = SzFreq_sampleN(iobs); - temp2 = 0.0; - temp1 = 0.0; - if (ALK_time == last_t) - { - repli++; - } - else - { - repli = 1; - last_t = ALK_time; - } - for (z = z_lo; z <= z_hi; z++) - { - ocomp = SzFreq_obs(iobs, z); - ecomp = value( SzFreq_exp(iobs, z)); - if (z > SzFreq_Nbins(Sz_method)) - {s_off = 2;} - else - {s_off = 1;} - // Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin Obs Exp - SS_compout << SzFreq_obs_hdr(iobs, 1) << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gg << " SIZE " << p << " " << Sz_method; - SS_compout << " " << s_off << " " << SzFreq_units(Sz_method) << " " << SzFreq_scale(Sz_method) << " "; - if (s_off == 1) - { - SS_compout << SzFreq_bins1(Sz_method, z); - } - else - { - SS_compout << SzFreq_bins1(Sz_method, z - SzFreq_Nbins(Sz_method)); - } - SS_compout << " " << ocomp << " " << ecomp << " "; - temp2 += ocomp; - temp1 += ecomp; - - // Pearson Nsamp_adj Nsamp_in effN Like - if (nsamp > 0 && SzFreq_obs_hdr(iobs, 3) && (ecomp != 0.0 && ecomp != 1.0) && nbins > 0 ) // check for values to include - { - if (logL_method == 0) - { - show_Pearson = (ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp ); // Pearson for multinomial - show_logL = ocomp * log( (ocomp + 1.0e-12) / ( ecomp + 1.0e-12) ) * nsamp; // logL - } - if (logL_method == 1 || logL_method == 2) - { - dirichlet_Parm = mfexp(selparm(Comp_Err_parmloc(Comp_Err_Sz2(Sz_method),1))); - if (logL_method == 1 ) - { dirichlet_Parm *= nsamp; } - show_Pearson = value((ocomp - ecomp) / sqrt(ecomp * (1.0 - ecomp) / nsamp * (nsamp + dirichlet_Parm) / (1. + dirichlet_Parm))); // Pearson for Dirichlet-multinomial using negative-exponential parameterization - show_logL = -SzFreq_each_offset(iobs) / nbins - - value( gammln(nsamp * ocomp + dirichlet_Parm * ecomp) - gammln(dirichlet_Parm * ecomp)) - - value( ( gammln(dirichlet_Parm) - gammln(nsamp + dirichlet_Parm))) / nbins; - } - if (logL_method == 3 ) // MV Tweedie - { - } - SS_compout << show_Pearson << " " << nsamp << " " << SzFreq_sampleN(iobs) << " " << SzFreq_effN(iobs) << " " << show_logL; - } - else // sample size zero or skip - { - SS_compout << " NA " << " " << nsamp << " " << SzFreq_sampleN(iobs) << " NA NA "; // placeholder - } - // Cum_obs Cum_exp SuprPer Used? - SS_compout << " " << temp2 << " " << temp1 << " " << anystring < SzFreq_Nbins(k)) - s_off = 2; - SS_compout << " " << s_off << " " << SzFreq_units(k) << " " << SzFreq_scale(k) << " "; - if (s_off == 1) - { - SS_compout << SzFreq_bins1(k, z); - } - else - { - SS_compout << SzFreq_bins1(k, z - SzFreq_Nbins(k)); - } - SS_compout << " " << SzFreq_obs(iobs, z) << " " << SzFreq_exp(iobs, z) << " "; - temp2 += SzFreq_obs(iobs, z); - temp1 += SzFreq_exp(iobs, z); - // next add Pearson column - if (SzFreq_obs_hdr(iobs, 3) > 0) - { - if (SzFreq_exp(iobs, z) != 0.0 && SzFreq_exp(iobs, z) != 1.0) - { - SS_compout << (SzFreq_obs(iobs, z) - SzFreq_exp(iobs, z)) / sqrt(SzFreq_exp(iobs, z) * (1. - SzFreq_exp(iobs, z)) / SzFreq_sampleN(iobs)); - } - else - { - SS_compout << " NA "; - } - // next add the following columns: - // Nsamp_adj, Nsamp_in (temporarily "NA"), effN - SS_compout << " " << SzFreq_sampleN(iobs) << " NA " << SzFreq_effN(iobs) << " "; - // next add Like column - if (SzFreq_obs(iobs, z) != 0.0 && SzFreq_exp(iobs, z) != 0.0) - { - SS_compout << " " << SzFreq_obs(iobs, z) * log(SzFreq_obs(iobs, z) / SzFreq_exp(iobs, z)) * SzFreq_sampleN(iobs); - } - else - { - SS_compout << " NA "; - } - } - else // sample size zero or skip - { - SS_compout << " NA "; // placeholder for Pearson - SS_compout << " " << SzFreq_sampleN(iobs) << " NA"; // Nsamp_adj and Nsamp_in (NA for now) - SS_compout << " NA NA "; // placeholder for effN and Like - } - // next add the following columns: - // Cum_obs Cum_exp SuprPer Used? - SS_compout << " " << temp2 << " " << temp1 << " " << anystring << endl; - // single row representing info from previous bin-specific rows - if (z == z2 || z == SzFreq_Nbins(k)) - SS_compout << SzFreq_obs_hdr(iobs, 1) << " " << SzFreq_obs_hdr(iobs, 2) << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " " << repli << " " << gg << " SIZE " << p << " " << k << " " << s_off << " " << 1 << " " << 2 << endl; - } - */ - } - } - } - - // Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin Obs Exp Pearson N effN Like Cum_obs Cum_exp SuprPer Used? - if (Do_Morphcomp > 0) - { - for (iobs = 1; iobs <= Morphcomp_nobs; iobs++) - { - N_out++; - y = Morphcomp_obs(iobs, 1); - real_month = Morphcomp_obs(iobs, 2); - ALK_time = Morphcomp_obs(iobs, 5 + 1 + Morphcomp_nmorph); - f = Morphcomp_obs(iobs, 3); - k = 5 + Morphcomp_nmorph; - for (z = 6; z <= k; z++) - { - SS_compout << y << " " << real_month << " " << Show_Time2(ALK_time)(2, 3) << " " << data_time(ALK_time, f, 3) << " " << f << " " << fleet_area(f) << " 1 1 " - << " GP% "; - SS_compout << " 0 0 0 0 0 " << z - 5 << " " << Morphcomp_obs(iobs, z) << " " << Morphcomp_exp(iobs, z) << " NA " << Morphcomp_obs(iobs, 5) << " NA NA NA NA _ _ " << endl; - } - } - } - - if (Do_TG > 0) - { - for (TG = 1; TG <= N_TG; TG++) - { - y = TG_release(TG, 3); - s = TG_release(TG, 4); - for (TG_t = 0; TG_t <= TG_endtime(TG); TG_t++) - { - N_out++; - t = styr + (y - styr) * nseas + s - 1; - temp1 = s - 1.; - // temp=float(y)+temp1/float(nseas); - temp = float(y) + 0.01 * int(100. * (azero_seas(s) + seasdur_half(s))); - // Fill in columns for: Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi Bin - SS_compout << y << " NA " << s << " NA " << temp << " NA " << TG_release(TG, 2) << " " << TG << " " << TG_release(TG, 6) << " TAG2 NA NA NA NA NA " << - // TAG2 values (total recaptures) - // Fill in columns for: Obs Exp Pearson Nsamp_adj Nsamp_in effN Like Cum_obs Cum_exp SuprPer Used? - TG_t << " " << TG_recap_obs(TG, TG_t, 0) << " " << TG_recap_exp(TG, TG_t, 0) << " NA NA NA NA NA NA NA NA "; - if (TG_t >= TG_mixperiod && TG_use(TG) >= TG_min_recap) - { - SS_compout << "_" << endl; - } - else - { - SS_compout << " skip" << endl; - } - // TAG1 values (proportions for each fleet) associated with the above TAG2 output - if (Nfleet > 1) - for (f = 1; f <= Nfleet; f++) - { - // Fill in columns for: Yr Month Seas Subseas Time Fleet Area Repl. Sexes Kind Part Ageerr Sex Lbin_lo Lbin_hi - SS_compout << y << " NA " << s << " NA " << temp << " " << f << " " << fleet_area(f) << " " << TG << " " << TG_release(TG, 6) << " TAG1 NA NA NA NA NA " << - // Fill in columns for:: Bin Obs Exp Pearson Nsamp_adj Nsamp_in - f << " " << TG_recap_obs(TG, TG_t, f) << " " << TG_recap_exp(TG, TG_t, f) << " NA " << TG_recap_obs(TG, TG_t, 0) << " NA " - << " NA NA NA NA NA "; // NA values are for: effN Like Cum_obs Cum_exp SuprPer - // Fill in Used? column - if (TG_t >= TG_mixperiod && TG_use(TG) >= TG_min_recap) - { - SS_compout << "_" << endl; - } - else - { - SS_compout << " skip" << endl; - } - } - s++; - if (s > nseas) - { - s = 1; - y++; - } - } - } - } - - if (N_out == 0) - SS_compout << styr << " -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1" << endl; - SS_compout << styr << " -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1" << endl - << " End_comp_data" << endl; - } - - // REPORT_KEYWORD 53 SELEX_database - if (pick_report_use(53) == "Y") - { - SS2out << endl - << pick_report_name(53) << endl; - SS2out << "Fleet Yr Kind Sex Bin Selex" << endl; - for (f = 1; f <= Nfleet; f++) - for (y = styr - 3; y <= endyr; y++) - { - if (y == styr - 3 || y == endyr || (timevary_sel(y, f) > 0 || timevary_sel(y + 1, f) > 0)) - { - for (gg = 1; gg <= gender; gg++) - { - for (z = 1; z <= nlength; z++) - { - SS2out << f << " " << y << " L " << gg << " " << len_bins(z) << " " << sel_l(y, f, gg, z) << endl; - } - if (seltype(f, 2) != 0) - { - if (gg == 1) - { - for (z = 1; z <= nlength; z++) - { - SS2out << f << " " << y << " D " << gg << " " << len_bins(z) << " " << retain(y, f, z) << endl; - } - } - else - { - for (z = 1; z <= nlength; z++) - { - SS2out << f << " " << y << " D " << gg << " " << len_bins(z) << " " << retain(y, f, z + nlength) << endl; - } - } - } - if (seltype(f, 2) == 2) - { - if (gg == 1) - { - for (z = 1; z <= nlength; z++) - { - SS2out << f << " " << y << " DM " << gg << " " << len_bins(z) << " " << discmort(y, f, z) << endl; - } - } - else - { - for (z = 1; z <= nlength; z++) - { - SS2out << f << " " << y << " DM " << gg << " " << len_bins(z) << " " << discmort(y, f, z + nlength) << endl; - } - } - } - } - } - if (timevary_sel(y, f + Nfleet) > 0) - { - for (gg = 1; gg <= gender; gg++) - for (a = 0; a <= nages; a++) - { - SS2out << f << " " << y << " A " << gg << " " << a << " " << sel_a(y, f, gg, a) << endl; - } - } - } - SS2out << " end selex output " << endl; - } // end do report detail - wrote_bigreport++; - // SS2out.close(); - // SS_compout.close(); - return; - } // end write_bigoutput - -FUNCTION void SPR_profile() - { - // REPORT_KEYWORD 54 SPR/YPR_Profile - int SPRloop; - int bio_t_base; - dvariable Fmult2 = maxpossF; - dvariable Fcrash = Fmult2; - dvariable Fmultchanger0 = Fmult2 / 39.; - dvariable Fmultchanger1; - dvariable Fmultchanger2; - dvariable Btgt_prof; - dvariable Btgt_prof_rec; - dvariable SPR_last; - dvariable SPR_trial; - dvariable YPR_last; - - SS2out << endl - << pick_report_name(54) << endl; - y = styr - 3; - yz = y; - bio_yr = y; - eq_yr = y; - t_base = y + (y - styr) * nseas - 1; - bio_t_base = styr + (bio_yr - styr) * nseas - 1; - - // SPAWN-RECR: call make_fecundity for benchmark bio for SPR loop - - for (s = 1; s <= nseas; s++) - { - t = styr - 3 * nseas + s - 1; - Wt_Age_beg(s) = Wt_Age_t(t, 0); // used for smrybio - Wt_Age_mid(s) = Wt_Age_t(t, -1); // used in global MSY - if (s == spawn_seas) - { - fec = Wt_Age_t(t, -2); - SS2out << " repro_output for SPR/YPR: " << fec(1) << endl;} - } -// do not recalculate here so force using values from benchmark - SS2out << "unfished values for SRR: SSB " << SSB0_4_SRR << " R " << R0_4_SRR << " SSBpR " << " SSBpR: " << SSB0_4_SRR / R0_4_SRR << endl; - SS2out << "SPRloop Iter Bycatch Fmult F_std SSBpR YpR_dead YpR_dead*Recr YpR_ret*Recr Revenue Cost Profit SSB Recruits SSB/Bzero Tot_Catch "; - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - SS2out << " " << fleetname(f) << "(" << f << ")Dead"; - } - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - SS2out << " " << fleetname(f) << "(" << f << ")Ret"; - } - for (f = 1; f <= Nfleet; f++) - { - if (fleet_type(f) <= 2) - SS2out << " " << fleetname(f) << "(" << f << ")Age"; - } - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - SS2out << " SSB_Area:" << p << "_GP:" << gp; - } - SS2out << endl; - equ_Recr = 1.0; - Fishon = 0; - int SPRloop1_end; - if (Do_Benchmark == 3) - { - SPRloop1_end = 8; - } - else - { - SPRloop1_end = 7; - } - int SPRloops; - SSBpR_Calc(equ_Recr); - if (N_bycatch == 0) - { - k = 0; - } - else - { - k = 1; - } - for (int with_BYC = 0; with_BYC <= k; with_BYC++) - for (int SPRloop1 = -1; SPRloop1 <= SPRloop1_end; SPRloop1++) - { - Fmultchanger1 = value(pow(0.0001 / Fcrash, 0.025)); - Fmultchanger2 = value(Fcrash / 39.); - SPRloops = 40; - switch (SPRloop1) - { - case -1: - { - SPRloops = 1; - Fmult2 = 0.0; - break; - } - case 0: - { - SPRloops = 40; - Fmult2 = maxpossF; - break; - } - case 1: - { - SPRloops = 40; - Fmult2 = Fcrash; - break; - } - case 3: - { - Fmult2 = 1; - SPRloops = 1; - break; - } - case 4: - { - Fmult2 = SPR_Fmult; - SPRloops = 1; - break; - } - case 5: - { - Fmult2 = Btgt_Fmult; - SPRloops = 1; - break; - } - case 6: - { - Fmult2 = MSY_Fmult; - SPRloops = 1; - break; - } - case 8: - { - Fmult2 = Btgt_Fmult2; - SPRloops = 1; - break; - } - case 7: - { - Fmult2 = MSY_Fmult; - SPRloops = 40; - SPR_trial = value(SSB_equil / SSB_virgin); - SPR_last = SPR_trial * 2.; - YPR_last = -1.; - break; - } - } - for (SPRloop = 1; SPRloop <= SPRloops; SPRloop++) - { - if (SPRloop1 == 7 && SPRloop > 1) - { - if (F_Method > 1) - { - Fmult2 *= 1.05; - } - else - { - Fmult2 = Fmult2 + (1.0 - Fmult2) * 0.05; - } - if (SPR_trial <= 0.001) - SPRloop = 1001; - SPR_last = SPR_trial; - YPR_last = YPR_dead; - } - - for (f = 1; f <= Nfleet; f++) - for (s = 1; s <= nseas; s++) - { - t = bio_t_base + s; - if (fleet_type(f) == 1 || (fleet_type(f) == 2 && bycatch_setup(f, 3) == 1)) - { - if (SPRloop1 != 3) - { - Hrate(f, t) = Fmult2 * Bmark_RelF_Use(s, f); - } - else - { - a = styr + (endyr - styr) * nseas + s - 1; - Hrate(f, t) = Hrate(f, a); - } - } - else if (fleet_type(f) == 2 && bycatch_setup(f, 3) > 1) - { - Hrate(f, t) = double(with_BYC) * bycatch_F(f, s); - } - else - { - Hrate(f, t) = 0.0; - } - } - Fishon = 1; - - SSBpR_Calc(equ_Recr); - // SPAWN-RECR: calc equil spawn-recr in the SPR loop - SSBpR_temp = SSB_equil; - Equ_SpawnRecr_Result = Equil_Spawn_Recr_Fxn(SRparm_bench , SSB0_4_SRR, R0_4_SRR, SSBpR_temp); // returns 2 element vector containing equilibrium biomass and recruitment at this SPR - Btgt_prof = Equ_SpawnRecr_Result(1); - Btgt_prof_rec = Equ_SpawnRecr_Result(2); - if (Btgt_prof < 0.001 || Btgt_prof_rec < 0.001) - { - Btgt_prof_rec = 0.0; - Btgt_prof = 0.; - if (SPRloop1 == 0) - Fcrash = Fmult2; - } - SS2out << SPRloop1 << " " << SPRloop << " " << with_BYC << " " << Fmult2 << " " << equ_F_std << " " << SSB_equil / (SSB0_4_SRR / R0_4_SRR) << " " << YPR_dead << " " - << YPR_dead * Btgt_prof_rec << " " << YPR_ret * Btgt_prof_rec << " " << (PricePerF * YPR_val_vec) * Btgt_prof_rec - << " " << Cost << " " << (PricePerF * YPR_val_vec) * Btgt_prof_rec - Cost << " " << Btgt_prof << " " << Btgt_prof_rec << " " << Btgt_prof / SSB0_4_SRR - << " " << value(sum(equ_catch_fleet(2)) * Btgt_prof_rec); - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - temp = 0.0; - for (s = 1; s <= nseas; s++) - { - temp += equ_catch_fleet(2, s, f); - } - SS2out << " " << temp * Btgt_prof_rec; - } - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - temp = 0.0; - for (s = 1; s <= nseas; s++) - { - temp += equ_catch_fleet(3, s, f); - } - SS2out << " " << temp * Btgt_prof_rec; - } - // report mean age of CATCH of non-bycatch fleets - for (f = 1; f <= Nfleet; f++) - if (fleet_type(f) <= 2) - { - temp = 0.0; - temp2 = 0; - for (s = 1; s <= nseas; s++) - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - temp += equ_catage(s, f, g) * r_ages; - temp2 += sum(equ_catage(s, f, g)); - } - if (temp2 > 0.0) - { - SS2out << " " << temp / temp2; - } - else - SS2out << " NA"; - } - - for (p = 1; p <= pop; p++) - for (gp = 1; gp <= N_GP; gp++) - { - SS2out << " " << SSB_equil_pop_gp(p, gp) * Btgt_prof_rec; - } - SS2out << endl; - if (SPRloop1 == 0) - { - Fmult2 -= Fmultchanger0; - if (Fmult2 < 0.0) - Fmult2 = 1.0e-6; - } - else if (SPRloop1 == 1) - { - Fmult2 *= Fmultchanger1; - } - else if (SPRloop1 == 2) - { - Fmult2 += Fmultchanger2; - } - } - } - - SS2out << "Finish SPR/YPR profile" << endl; - SS2out << "#Profile 0 is descending additively from max possible F: " << maxpossF << endl; - SS2out << "#Profile 1 is descending multiplicatively half of max possible F" << endl; - SS2out << "#Profile 2 is additive back to Fcrash: " << Fcrash << endl; - SS2out << "#value 3 uses endyr F, which has different fleet allocation than benchmark" << endl; - SS2out << "#value 4 is Fspr: " << SPR_Fmult << endl; - SS2out << "#value 5 is Fbtgt: " << Btgt_Fmult << endl; - SS2out << "#value 6 is Fmsy: " << MSY_Fmult << endl; - if (Do_Benchmark == 3) - SS2out << "#value 8 is F_Blimit: " << Btgt_Fmult2 << endl; - SS2out << "#Profile 7 increases from Fmsy to Fcrash" << endl; - SS2out << "#_NOTE: meanage_of_catch_is_for_total_catch_of_fleet_type==1_or_bycatch_fleets_with_scaled_Hrate" << endl; - // end SPR/YPR_Profile - return; - } - -FUNCTION void Global_MSY() - { - // REPORT_KEYWORD 55 GLOBAL_MSY - // GLOBAL_MSY with knife-edge age selection, then slot-age selection - SS2out << endl - << pick_report_name(55) << endl; - y = styr - 3; // stores the averaged biology and selectivity, etc. from benchmark - yz = y; - bio_yr = y; - eq_yr = y; - t_base = y + (y - styr) * nseas - 1; - - for (int MSY_loop = 0; MSY_loop <= 2; MSY_loop++) - { - if (MSY_loop == 0) - { - SS2out << "#" << endl - << "ACTUAL_SELECTIVITY_MSY with MSY units as: " << MSY_name << endl; - } - else if (MSY_loop == 1) - { - SS2out << "#" << endl - << "KNIFE_AGE_SELECTIVITY_MSY " << endl; - } - else - { - SS2out << "#" << endl - << "SLOT_AGE_SELECTIVITY_MSY " << endl; - } - SS2out << "------ SPR SPR SPR SPR SPR SPR SPR SPR SPR # BTGT BTGT BTGT BTGT BTGT BTGT BTGT BTGT BTGT BTGT # " - << " MSY MSY MSY MSY MSY MSY MSY MSY MSY MSY MSY" << endl - << "Age SPR Fmult Fstd Exploit Recruit SSB Y_dead Y_ret VBIO # SPR B/B0 Fmult Fstd Exploit Recruit SSB Y_dead Y_ret VBIO " - << " # SPR B/B0 Fmult Fstd Exploit Recruit SSB Y_MSY Y_dead Y_ret VBIO " << endl; - - if (MSY_loop > 0) - { - for (int SPRloop1 = 1; SPRloop1 <= nages - 1; SPRloop1++) - { - sel_bio.initialize(); - sel_ret_bio.initialize(); - sel_num.initialize(); - sel_ret_num.initialize(); - sel_dead_num.initialize(); - sel_dead_bio.initialize(); - SS2out << SPRloop1 << " "; - for (s = 1; s <= nseas; s++) - { - t = styr - 3 * nseas + s - 1; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (f = 1; f <= Nfleet; f++) - { - if (MSY_loop == 1) - { - sel_bio(s, f, g)(SPRloop1, nages) = Wt_Age_mid(s, g)(SPRloop1, nages); // selected * wt - sel_ret_bio(s, f, g)(SPRloop1, nages) = Wt_Age_mid(s, g)(SPRloop1, nages); // selected * retained * wt - sel_num(s, f, g)(SPRloop1, nages) = 1.00; // selected numbers - sel_ret_num(s, f, g)(SPRloop1, nages) = 1.00; // selected * retained numbers - sel_dead_num(s, f, g)(SPRloop1, nages) = 1.00; // sel * (retain + (1-retain)*discmort) - sel_dead_bio(s, f, g)(SPRloop1, nages) = Wt_Age_mid(s, g)(SPRloop1, nages); // sel * (retain + (1-retain)*discmort) * wt - } - else - { - sel_bio(s, f, g, SPRloop1) = Wt_Age_mid(s, g, SPRloop1); // selected * wt - sel_ret_bio(s, f, g, SPRloop1) = Wt_Age_mid(s, g, SPRloop1); // selected * retained * wt - sel_num(s, f, g, SPRloop1) = 1.00; // selected numbers - sel_ret_num(s, f, g, SPRloop1) = 1.00; // selected * retained numbers - sel_dead_num(s, f, g, SPRloop1) = 1.00; // sel * (retain + (1-retain)*discmort) - sel_dead_bio(s, f, g, SPRloop1) = Wt_Age_mid(s, g, SPRloop1); // sel * (retain + (1-retain)*discmort) * wt - } - } - } - } - show_MSY = 2; // invokes just brief output in benchmark - did_MSY = 0; - Get_Benchmarks(show_MSY); - did_MSY = 0; - } - } - else - { - SS2out << "Actual "; - show_MSY = 2; // invokes just brief output in benchmark - did_MSY = 0; -// report5 << 0 << " y: " << y << " updated_Repro_output global_1: " << fec(1) << endl; - Get_Benchmarks(show_MSY); -// report5 << 0 << " y: " << y << " updated_Repro_output global_2: " << fec(1) << endl; - did_MSY = 0; - } - } - SS2out << endl; - return; - } - -// note that FUNCTION write_Bzero_output() is found in file SS_write.tpl -FUNCTION dvector process_comps(const int sexes, const int sex, dvector& bins, dvector& means, const dvector& tails, - dvector& obs, dvector& exp) - { - dvector more_comp_info(1, 20); - double cumdist; - double cumdist_save; - double temp, temp1, temp2; - int z; - more_comp_info.initialize(); - // sexes is 1 or 2 for numbers of sexes in model - // sex is 0, 1, 2, 3 for range of sexes used in this sample - int nbins = bins.indexmax() / sexes; // find number of bins - // do both sexes tails(4) has been set to tails(2) if males not in this sample - if ((sex == 3 && sexes == 2) || sex == 0 || sexes == 1) - { - more_comp_info(1) = obs(tails(1), tails(4)) * means(tails(1), tails(4)); - more_comp_info(2) = exp(tails(1), tails(4)) * means(tails(1), tails(4)); - more_comp_info(3) = more_comp_info(1) - more_comp_info(2); - // calc tails of distribution and Durbin-Watson for autocorrelation - temp1 = 0.0; - temp2 = 0.0; - cumdist_save = 0.0; - cumdist = 0.0; - for (z = 1; z <= nbins; z++) - { - cumdist += exp(z); - if (sexes == 2) - cumdist += exp(z + nbins); // add males and females - if (cumdist >= 0.05 && cumdist_save < 0.05) // found bin for 5% - { - if (z == 1) - { - more_comp_info(4) = bins(z); - } // set to lower edge - else - { - more_comp_info(4) = bins(z) + (bins(min(z + 1, nbins)) - bins(z)) * (0.05 - cumdist_save) / (cumdist - cumdist_save); - } - } - if (cumdist >= 0.95 && cumdist_save < 0.95) // found bin for 95% - { - more_comp_info(5) = bins(z) + (bins(min(z + 1, nbins)) - bins(z)) * (0.95 - cumdist_save) / (cumdist - cumdist_save); - } - cumdist_save = cumdist; - - temp = obs(z) - exp(z); // obs-exp - if (z > tails(1)) - { - more_comp_info(6) += square(temp2 - temp); - temp1 += square(temp); - } - temp2 = temp; - } - - if (sex == 3 && sexes == 2) // do sex ratio - { - more_comp_info(19) = sum(obs(tails(1), tails(2))); // sum obs female fractions = %female - more_comp_info(20) = sum(exp(tails(1), tails(2))); // sum exp female fractions = %female - for (z = tails(3); z <= tails(4); z++) - { - temp = obs(z) - exp(z); // obs-exp - if (z > tails(3)) - { - more_comp_info(6) += square(temp2 - temp); - temp1 += square(temp); - } - temp2 = temp; - } - } - more_comp_info(6) = (more_comp_info(6) / temp1) - 2.0; - } - - if (sex == 1 || (sex == 3 && sexes == 2)) // need females - { - // where means() holds midpoints of the data length bins - more_comp_info(7) = (obs(tails(1), tails(2)) * means(tails(1), tails(2))) / sum(obs(tails(1), tails(2))); - more_comp_info(8) = (exp(tails(1), tails(2)) * means(tails(1), tails(2))) / sum(exp(tails(1), tails(2))); - more_comp_info(9) = more_comp_info(7) - more_comp_info(8); - // calc tails of distribution and Durbin-Watson for autocorrelation - temp1 = 0.0; - temp2 = 0.0; - cumdist_save = 0.0; - cumdist = 0.0; - for (z = tails(1); z <= tails(2); z++) - { - cumdist += exp(z); - if (cumdist >= 0.05 * more_comp_info(20) && cumdist_save < 0.05 * more_comp_info(20)) // found bin for 5% - { - if (z == 1) - { - more_comp_info(10) = bins(z); - } // set to lower edge - else - { - more_comp_info(10) = bins(z) + (bins(min(z + 1, nlen_bin)) - bins(z)) * (0.05 * more_comp_info(20) - cumdist_save) / (cumdist - cumdist_save); - } - } - if (cumdist >= 0.95 * more_comp_info(20) && cumdist_save < 0.95 * more_comp_info(20)) // found bin for 95% - { - more_comp_info(11) = bins(z) + (bins(min(z + 1, nlen_bin)) - bins(z)) * (0.95 * more_comp_info(20) - cumdist_save) / (cumdist - cumdist_save); - } - cumdist_save = cumdist; - - temp = obs(z) - exp(z); // obs-exp - if (z > tails(1)) - { - more_comp_info(12) += square(temp2 - temp); - temp1 += square(temp); - } - temp2 = temp; // save current delta - } - more_comp_info(12) = (more_comp_info(12) / temp1) - 2.0; - } - if (sex >= 2 && sexes == 2) // need males - { - more_comp_info(13) = (obs(tails(3), tails(4)) * means(tails(3), tails(4))) / sum(obs(tails(3), tails(4))); - more_comp_info(14) = (exp(tails(3), tails(4)) * means(tails(3), tails(4))) / sum(exp(tails(3), tails(4))); - more_comp_info(15) = more_comp_info(13) - more_comp_info(14); - // calc tails of distribution and Durbin-Watson for autocorrelation - temp1 = 0.0; - temp2 = 0.; - cumdist_save = 0.0; - cumdist = 0.0; - // where (1-more_comp_info(20)) is the total of male fractions - for (z = tails(3); z <= tails(4); z++) - { - cumdist += exp(z); - if (cumdist >= 0.05 * (1.0 - more_comp_info(20)) && cumdist_save < 0.05 * (1.0 - more_comp_info(20))) // found bin for 5% - { - if (z == nbins + 1) - { - more_comp_info(16) = bins(z); - } // set to lower edge - else - { - more_comp_info(16) = bins(z) + (bins(min(z + 1, 2 * nbins)) - bins(z)) * (0.05 * more_comp_info(20) - cumdist_save) / (cumdist - cumdist_save); - } - } - if (cumdist >= 0.95 * (1.0 - more_comp_info(20)) && cumdist_save < 0.95 * (1.0 - more_comp_info(20))) // found bin for 95% - { - more_comp_info(17) = bins(z) + (bins(min(z + 1, 2 * nbins)) - bins(z)) * (0.95 * (1.0 - more_comp_info(20)) - cumdist_save) / (cumdist - cumdist_save); - } - cumdist_save = cumdist; - - temp = obs(z) - exp(z); // obs-exp - if (z > tails(3)) - { - more_comp_info(18) += square(temp2 - temp); - temp1 += square(temp); - } - temp2 = temp; // save current delta - } - more_comp_info(18) = (more_comp_info(18) / temp1) - 2.0; - } - - return more_comp_info; - } - -FUNCTION int determine_speriod(int s_period, adstring a_string, dvariable var2, dvariable var3) - { - if (var2 < 0 && s_period == 0) - { - s_period = 1; - a_string = "Sup"; - } - else if (var2 < 0 && s_period > 0) - { - s_period = 0; - a_string = "Sup"; - } - else if (s_period > 0) - { - s_period++; - a_string = "Sup"; - } - else - { - a_string = "_"; - } - if (var3 < 0) - { - a_string += " skip"; - } - else - { - a_string += " _"; - } - return s_period; - } -// SS_Label_file #20. **SS_ALK.tpl** -// SS_Label_file # * Make_AgeLength_Key() // calculates age-length key for a particular season and subseason; uses calc_ALK or calc_ALK_log -// SS_Label_file # * calc_ALK_range() // allows for condensing range of lengths for each age, but no longer used -// SS_Label_file # * calc_ALK() // calculates normal distribution of length-at-age -// SS_Label_file # * calc_ALK_log() // for lognormal distribution of length-at-age -// SS_Label_file # - -FUNCTION void Make_AgeLength_Key(const int s, const int subseas) - { - //******************************************************************** - /* SS_Label_FUNCTION 31 Make_AgeLength_Key */ - // this is called for each subseason of each year - // checks to see if a re-calc of the ALK is needed for that time step - // if it is, then it loops through all possible biological entities "g" (sex, growth pattern, settlement event, platoon) - // then it retrieves the previously calculated and stored mean size-at-age from Ave_Size(t,subseas,gstart) - // moves these mean sizes into a _W working vector - // then it calls calc_ALK to make and store the age-length key for that subseason for each biological entity - - int gstart = 0; - dvariable dvar_platoon_ratio = platoon_sd_ratio; - dvariable dvar_between_platoon = sd_between_platoon; - dvariable dvar_within_platoon = sd_within_platoon; - dvar_vector use_Ave_Size_W(0, nages); - dvar_vector use_SD_Size(0, nages); - imatrix ALK_range_use(0, nages, 1, 2); - ALK_idx = (s - 1) * N_subseas + subseas; - if (ALK_subseas_update(ALK_idx) == 1) // so need to calculate - { - ALK_subseas_update(ALK_idx) = 0; // reset to 0 to indicate update has been done - gp = 0; - // calculate the between and within stdev ratio - // when sd_ratio_rd is > 0, values are constant and calculations are already done. - if (sd_ratio_rd < 0) - { - dvar_platoon_ratio = MGparm(sd_ratio_param_ptr); - dvar_between_platoon = sqrt(1. / (1. + dvar_platoon_ratio * dvar_platoon_ratio)); - dvar_within_platoon = dvar_platoon_ratio * dvar_between_platoon; - platoon_sd_ratio = value(dvar_platoon_ratio); - sd_between_platoon = value(dvar_between_platoon); - sd_within_platoon = value(dvar_within_platoon); - } - - for (int sex = 1; sex <= gender; sex++) - for (GPat = 1; GPat <= N_GP; GPat++) - { - gp = gp + 1; - gstart = g_Start(gp); // base platoon - for (settle = 1; settle <= N_settle_timings; settle++) - { - gstart += N_platoon; - if (recr_dist_pattern(GPat, settle, 0) > 0) - { - - // update the sd_within and sb_between here. Used to be in growth2 function - // SS_Label_Info_16.5.2 #do calculations related to std.dev. of size-at-age - // SS_Label_Info_16.5.3 #if (y=styr), calc CV_G(gp,s,a) by interpolation on age or LAA - // doing this just at y=styr prevents the CV from changing as time-vary growth updates over time - g = gstart; - if (CV_const(gp) > 0 && y == styr) - { - for (a = 0; a <= nages; a++) - { - if (real_age(g, ALK_idx, a) < AFIX) - { - CV_G(gp, ALK_idx, a) = CVLmin(gp); - } - else if (real_age(g, ALK_idx, a) >= AFIX2_forCV) - { - CV_G(gp, ALK_idx, a) = CVLmax(gp); - } - else if (CV_depvar_a == 0) - { - CV_G(gp, ALK_idx, a) = CVLmin(gp) + (Ave_Size(t, subseas, g, a) - Lmin(gp)) * CV_delta(gp); - } - else - { - CV_G(gp, ALK_idx, a) = CVLmin(gp) + (real_age(g, ALK_idx, a) - AFIX) * CV_delta(gp); - } - } // end age loop - } - else - { - // already set constant to CVLmi - } - // SS_Label_Info_16.5.4 #calc stddev of size-at-age from CV_G(gp,s,a) and Ave_Size(t,g,a) - if (CV_depvar_b == 0) - { - Sd_Size_within(ALK_idx, g) = SD_add_to_LAA + elem_prod(CV_G(gp, ALK_idx), Ave_Size(t, subseas, g)); - } - else - { - Sd_Size_within(ALK_idx, g) = SD_add_to_LAA + CV_G(gp, ALK_idx); - } - // SS_Label_Info_16.3.5 #if platoons being used, calc the stddev between platoons - if (N_platoon > 1) - { - Sd_Size_between(ALK_idx, g) = Sd_Size_within(ALK_idx, g) * dvar_between_platoon; - Sd_Size_within(ALK_idx, g) *= dvar_within_platoon; - } - - if (docheckup == 1) - { - echoinput << "with lingrow; subseas: " << subseas << " sex: " << sx(g) << " gp: " << GP4(g) << " g: " << g << endl; - echoinput << "size " << Ave_Size(t, subseas, g)(0, min(6, nages)) << " @nages " << Ave_Size(t, subseas, g, nages) << endl; - if (CV_depvar_b == 0) - echoinput << "CV " << CV_G(gp, ALK_idx)(0, min(6, nages)) << " @nages " << CV_G(gp, ALK_idx, nages) << endl; - echoinput << "sd " << Sd_Size_within(ALK_idx, g)(0, min(6, nages)) << " @nages " << Sd_Size_within(ALK_idx, g, nages) << endl; - } - - // end sd_within updating - - for (gp2 = 1; gp2 <= N_platoon; gp2++) // loop the platoons - { - g = gstart + ishadow(gp2); - - use_Ave_Size_W = Ave_Size(t, subseas, gstart); - use_SD_Size = Sd_Size_within(ALK_idx, gstart); - if (N_platoon > 1) - { - use_Ave_Size_W += shadow(gp2) * Sd_Size_between(ALK_idx, gstart); - Ave_Size(t, subseas, g) = use_Ave_Size_W; // only needed for reporting because use_Ave_Size_W used for calcs - Sd_Size_within(ALK_idx, g) = use_SD_Size; // ditto; also same sd is used for all platoons - } - - if (Grow_logN == 0) - { - ALK(ALK_idx, g) = calc_ALK(len_bins, use_Ave_Size_W, use_SD_Size); - } - else - { - ALK(ALK_idx, g) = calc_ALK_log(log_len_bins, use_Ave_Size_W, use_SD_Size); - } - } // end platoon loop - } - } // end settle loop - } // end growth pattern&gender loop - } - } // end Make_AgeLength_Key - -FUNCTION imatrix calc_ALK_range(const dvector& len_bins, const dvar_vector& mean_len_at_age, const dvar_vector& sd_len_at_age, - const double ALK_tolerance) - { - // SS_Label_FUNCTION_31.2 # calc_ALK_range finds the range for the distribution of length for each age - int a, z = 0; // declare indices - int nlength = len_bins.indexmax(); // find number of lengths - int nages = mean_len_at_age.indexmax(); // find number of ages - imatrix ALK_range(0, nages, 1, 2); // stores minimum and maximum - dvariable len_dev; - double ALK_tolerance_2; - ALK_tolerance_2 = 1.0 - ALK_tolerance; - for (a = 0; a <= nages; a++) - { - if (ALK_tolerance == 0.00) - { - ALK_range(a, 1) = 1; - ALK_range(a, 2) = nlength; - } - else - { - z = 1; - temp = 0.0; - while (temp < ALK_tolerance && z < nlength) - { - len_dev = (len_bins(z) - mean_len_at_age(a)) / (sd_len_at_age(a)); - temp = cumd_norm(len_dev); - z++; - } - ALK_range(a, 1) = z; - temp = 0.0; - while (temp < ALK_tolerance_2 && z < nlength) - { - len_dev = (len_bins(z) - mean_len_at_age(a)) / (sd_len_at_age(a)); - temp = cumd_norm(len_dev); - z++; - } // end length loop - ALK_range(a, 2) = min(z, nlength); - } - } // end age loop - return (ALK_range); - } - -// the function calc_ALK is called by Make_AgeLength_Key to calculate the distribution of length for each age -FUNCTION dvar_matrix calc_ALK(const dvector& len_bins, const dvar_vector& mean_len_at_age, const dvar_vector& sd_len_at_age) - { - // the function calc_ALK is called by Make_AgeLength_Key to calculate the distribution of length for each age - RETURN_ARRAYS_INCREMENT(); - // SS_Label_FUNCTION_31.2 #Calculate the ALK - int a, z; // declare indices - int nlength = len_bins.indexmax(); // find number of lengths - int nages = mean_len_at_age.indexmax(); // find number of ages - dvar_matrix ALK_w(0, nages, 1, nlength); // create matrix to return with length vectors for each age - dvar_vector AL(1, nlength + 1); // create temporary vector - dvariable len_dev; - // ALK_count++; - ALK_w.initialize(); - for (a = 0; a <= nages; a++) - { - AL.initialize(); - for (z = 1; z <= nlength; z++) - { - len_dev = (len_bins(z) - mean_len_at_age(a)) / (sd_len_at_age(a)); - AL(z) = cumd_norm(len_dev); - } - AL(nlength + 1, nlength + 1) = 1.0; - ALK_w(a) = first_difference(AL); - ALK_w(a, 1) += AL(1); // because first bin is from cumulative calc - } // end age loop - - RETURN_ARRAYS_DECREMENT(); - return (ALK_w); - } - -FUNCTION dvar_matrix calc_ALK_log(const dvector& len_bins, const dvar_vector& mean_len_at_age, const dvar_vector& sd_len_at_age) - { - RETURN_ARRAYS_INCREMENT(); - //SS_Label_FUNCTION_31.3 #Calculate the ALK with lognormal error, called when Grow_logN==1 - int a, z; // declare indices - int nlength = len_bins.indexmax(); // find number of lengths - int nages = mean_len_at_age.indexmax(); // find number of ages - dvar_matrix ALK_w(0, nages, 1, nlength); // create matrix to return with length vectors for each age - dvar_vector AL(1, nlength + 1); // create temporary vector - dvariable len_dev; - dvariable temp; - - AL(1) = 0.0; - AL(nlength + 1) = 1.0; // terminal values that are not recalculated - - for (a = 0; a <= nages; a++) - { - temp = log(mean_len_at_age(a)) - 0.5 * sd_len_at_age(a) * sd_len_at_age(a); - for (z = 2; z <= nlength; z++) - { - len_dev = (len_bins(z) - temp) / (sd_len_at_age(a)); - AL(z) = cumd_norm(len_dev); - } // end length loop - ALK_w(a) = first_difference(AL); - } // end age loop - RETURN_ARRAYS_DECREMENT(); - return (ALK_w); - } - -// SS_Label_file #21. **SS_timevaryparm.tpl** -// SS_Label_file # * make_timevaryparm() // makes parameters a function of input environmental data time series -// SS_Label_file # * make_densitydependent_parm() // for the current year, changes a parameter value as a function of summary bio or recruitment at beginning of this year -// SS_Label_file # - -//********************************************************************* - /* SS_Label_Function_14 #make_timevaryparm(): create trend and block time series */ -FUNCTION void make_timevaryparm() - { - dvariable baseparm; - baseparm_min = -999.; // fill array with default - baseparm_max = 999; // fill array with default - dvariable endtrend; - dvariable infl_year; - dvariable slope; - dvariable norm_styr; - // note: need to implement the approach that keeps within bounds of base parameter - - int timevary_parm_cnt_all; - timevary_parm_cnt_all = 0; - if (do_once == 1) - echoinput << endl - << "**********************" << endl - << "number of parameters with timevary: " << timevary_cnt << endl; - - for (int tvary = 1; tvary <= timevary_cnt; tvary++) - { - ivector timevary_setup(1, 14); - timevary_setup(1, 14) = timevary_def[tvary](1, 14); - if (do_once == 1) - echoinput << "timevary #: " << tvary << endl - << "setup: " << timevary_setup << endl; - // what type of parameter is being affected? get the baseparm and its bounds - switch (timevary_setup(1)) // parameter type - { - case 1: // MG - { - baseparm = MGparm(timevary_setup(2)); // index of base parm - baseparm_min(tvary) = MGparm_LO(timevary_setup(2)); - baseparm_max(tvary) = MGparm_HI(timevary_setup(2)); - if (do_once == 1) - echoinput << "base MGparm " << baseparm << endl; - for (j = timevary_setup(3); j < timevary_def[tvary + 1](3); j++) - { - timevary_parm_cnt_all++; - timevary_parm(timevary_parm_cnt_all) = MGparm(N_MGparm + j); - if (do_once == 1) - echoinput << j << " timevary_parm: " << timevary_parm(timevary_parm_cnt_all) << endl; - } - parm_timevary(tvary) = baseparm; // fill timeseries with base parameter, just in case - break; - } - case 2: // SR - { - baseparm = SRparm(timevary_setup(2)); // index of base parm - baseparm_min(tvary) = SRparm_LO(timevary_setup(2)); - baseparm_max(tvary) = SRparm_HI(timevary_setup(2)); - if (do_once == 1) - echoinput << "base SRparm " << baseparm << endl; - for (j = timevary_setup(3); j < timevary_def[tvary + 1](3); j++) - { - timevary_parm_cnt_all++; - timevary_parm(timevary_parm_cnt_all) = SRparm(N_SRparm(SR_fxn) + 3 + j - timevary_SRparm_first + 1); - if (do_once == 1) - echoinput << j << " timevary_parm: " << timevary_parm(timevary_parm_cnt_all) << endl; - } - parm_timevary(tvary) = baseparm; // fill timeseries with base parameter, just in case - break; - } - case 3: // Q - { - baseparm = Q_parm(timevary_setup(2)); // index of base parm - baseparm_min(tvary) = Q_parm_LO(timevary_setup(2)); - baseparm_max(tvary) = Q_parm_HI(timevary_setup(2)); - if (do_once == 1) - echoinput << "base Qparm " << baseparm << endl; - for (j = timevary_setup(3); j < timevary_def[tvary + 1](3); j++) - { - timevary_parm_cnt_all++; - timevary_parm(timevary_parm_cnt_all) = Q_parm(Q_Npar + j - timevary_parm_start_Q + 1); - if (do_once == 1) - echoinput << j << " timevary_parm: " << timevary_parm(timevary_parm_cnt_all) << endl; - } - parm_timevary(tvary) = baseparm; // fill timeseries with base parameter, just in case - break; - } - case 5: // selex - { - baseparm = selparm(timevary_setup(2)); // index of base parm - baseparm_min(tvary) = selparm_LO(timevary_setup(2)); - baseparm_max(tvary) = selparm_HI(timevary_setup(2)); - if (do_once == 1) - echoinput << "base selparm " << baseparm << endl; - for (j = timevary_setup(3); j < timevary_def[tvary + 1](3); j++) - { - timevary_parm_cnt_all++; - timevary_parm(timevary_parm_cnt_all) = selparm(N_selparm + j - timevary_parm_start_sel + 1); - if (do_once == 1) - echoinput << j << " timevary_parm: " << timevary_parm(timevary_parm_cnt_all) << endl; - } - parm_timevary(tvary) = baseparm; // fill timeseries with base parameter, just in case - break; - } - } - - timevary_parm_cnt = timevary_setup(3); // first parameter used to create timevary effect on baseparm - if (timevary_setup(4) > 0) // block - { - if (do_once == 1) - echoinput << "block pattern " << z << endl; - z = timevary_setup(4); // specified block pattern - g = 1; - temp = baseparm; - for (a = 1; a <= Nblk(z); a++) - { - switch (timevary_setup(5)) - { - case 0: - { - temp = baseparm * mfexp(timevary_parm(timevary_parm_cnt)); - timevary_parm_cnt++; - break; - } - case 1: - { - temp = baseparm + timevary_parm(timevary_parm_cnt); - timevary_parm_cnt++; - break; - } - case 2: - { - temp = timevary_parm(timevary_parm_cnt); // direct assignment of block value - timevary_parm_cnt++; - break; - } - case 3: - { - temp += timevary_parm(timevary_parm_cnt); // block as offset from previous block - timevary_parm_cnt++; - break; - } - } - - for (int y1 = Block_Design(z, g); y1 <= Block_Design(z, g + 1); y1++) // loop years for this block - { - parm_timevary(tvary, y1) = temp; - } - g += 2; - } - // timevary_parm_cnt--; // back out last increment - } // end uses blocks - - else if (timevary_setup(4) < 0) // trend - { - // timevary_parm(timevary_parm_cnt+0) = offset for the trend at endyr; 3 options available below - // timevary_parm(timevary_parm_cnt+1) = inflection year; 2 options available - // timevary_parm(timevary_parm_cnt+2) = stddev of normal at inflection year - // calc endyr value, - if (do_once == 1) - echoinput << "logistic trend over time " << endl; - if (timevary_setup(4) == -1) // use logistic transform to keep with bounds of the base parameter - { - endtrend = log((baseparm_max(tvary) - baseparm_min(tvary) + 0.0000002) / (baseparm - baseparm_min(tvary) + 0.0000001) - 1.) / (-2.); // transform the base parameter - endtrend += timevary_parm(timevary_parm_cnt); // add the offset Note that offset value is in the transform space - endtrend = baseparm_min(tvary) + (baseparm_max(tvary) - baseparm_min(tvary)) / (1. + mfexp(-2. * endtrend)); // backtransform - infl_year = log(0.5) / (-2.); // transform the base parameter - infl_year += timevary_parm(timevary_parm_cnt + 1); // add the offset Note that offset value is in the transform space - infl_year = r_years(styr) + (r_years(endyr) - r_years(styr)) / (1. + mfexp(-2. * infl_year)); // backtransform - } - else if (timevary_setup(4) == -2) // set ending value directly - { - endtrend = timevary_parm(timevary_parm_cnt); - infl_year = timevary_parm(timevary_parm_cnt + 1); - } - else if (timevary_setup(4) == -3) // use parm as fraction of way between bounds - { - endtrend = baseparm_min(tvary) + (baseparm_max(tvary) - baseparm_min(tvary)) * timevary_parm(timevary_parm_cnt); - infl_year = r_years(styr) + (r_years(endyr) - r_years(styr)) * timevary_parm(timevary_parm_cnt + 1); - } - slope = timevary_parm(timevary_parm_cnt + 2); - timevary_parm_cnt += 3; - - norm_styr = cumd_norm((r_years(styr) - infl_year) / slope); - temp = (endtrend - baseparm) / (cumd_norm((r_years(endyr) - infl_year) / slope) - norm_styr); // delta in cum_norm between styr and endyr - - for (int y1 = styr; y1 <= YrMax; y1++) - { - if (y1 <= endyr) - { - parm_timevary(tvary, y1) = baseparm + temp * (cumd_norm((r_years(y1) - infl_year) / slope) - norm_styr); - } - else - { - parm_timevary(tvary, y1) = parm_timevary(tvary, endyr); - } - } - parm_timevary(tvary, styr - 1) = baseparm; - } - - if (timevary_setup(7) > 0) // env link (negative value indicates density-dependence which is calculated year-by-year in different function) - { - if (do_once == 1) - echoinput << "env_link to env_variable: " << timevary_setup(7) << " using link_type " << timevary_setup(6) << endl; - switch (int(timevary_setup(6))) - { - case 1: // exponential env link - { - for (int y1 = styr - 1; y1 <= YrMax; y1++) - { - parm_timevary(tvary, y1) *= mfexp(timevary_parm(timevary_parm_cnt) * (env_data(y1, timevary_setup(7)))); - } - timevary_parm_cnt++; - break; - } - case 2: // linear env link - { - for (int y1 = styr - 1; y1 <= YrMax; y1++) - { - parm_timevary(tvary, y1) += timevary_parm(timevary_parm_cnt) * env_data(y1, timevary_setup(7)); - } - timevary_parm_cnt++; - break; - } - case 3: // result constrained by baseparm_min-max; input values are unit normal - { - dvariable temp; - double p_range = baseparm_max(tvary) - baseparm_min(tvary); - - for (int y1 = env_data_minyr(timevary_setup(7)); y1 <= env_data_maxyr(timevary_setup(7)); y1++) - { - temp = log((parm_timevary(tvary, y1) - baseparm_min(tvary) + 1.0e-7) / (baseparm_max(tvary) - parm_timevary(tvary, y1) + 1.0e-7)); - temp += timevary_parm(timevary_parm_cnt) * env_data(y1, timevary_setup(7)); - parm_timevary(tvary, y1) = baseparm_min(tvary) + p_range / (1.0 + exp(-temp)); - } - timevary_parm_cnt++; - break; - } - case 4: // logistic env link - { - // first parm is offset; second is slope - for (int y1 = styr - 1; y1 <= YrMax; y1++) - { - parm_timevary(tvary, y1) *= 2.00000 / (1.00000 + mfexp(-timevary_parm(timevary_parm_cnt + 1) * (env_data(y1, timevary_setup(7)) - timevary_parm(timevary_parm_cnt)))); - } - timevary_parm_cnt += 2; - break; - } - } - } - // SS_Label_Info_14.3 #Create parm dev randwalks if needed - if (timevary_setup(8) > 0) // devs - { - k = timevary_setup(8); // dev used - if (do_once == 1) - echoinput << "dev vector #: " << k << endl; - parm_dev_stddev(k) = timevary_parm(timevary_parm_cnt); - parm_dev_rho(k) = timevary_parm(timevary_parm_cnt + 1); - int picker = timevary_setup(9); // selects the method for creating time-vary parameter from dev vector - - switch (picker) - { - case 1: - { - for (j = timevary_setup(10); j <= timevary_setup(11); j++) - { - parm_timevary(tvary, j) *= mfexp(parm_dev(k, j) * parm_dev_stddev(k)); - } - break; - } - case 2: - { - for (j = timevary_setup(10); j <= timevary_setup(11); j++) - { - parm_timevary(tvary, j) += parm_dev(k, j) * parm_dev_stddev(k); - } - break; - } - case 3: - { - parm_dev_rwalk(k, timevary_setup(10)) = parm_dev(k, timevary_setup(10)) * parm_dev_stddev(k); - parm_timevary(tvary, timevary_setup(10)) += parm_dev_rwalk(k, timevary_setup(10)); - for (j = timevary_setup(10) + 1; j <= timevary_setup(11); j++) - { - parm_dev_rwalk(k, j) = parm_dev_rwalk(k, j - 1) + parm_dev(k, j) * parm_dev_stddev(k); - parm_timevary(tvary, j) += parm_dev_rwalk(k, j); - } - break; - } - case 4: // mean reverting random walk - { - parm_dev_rwalk(k, timevary_setup(10)) = parm_dev(k, timevary_setup(10)) * parm_dev_stddev(k); // 1st yr dev - parm_timevary(tvary, timevary_setup(10)) += parm_dev_rwalk(k, timevary_setup(10)); // add dev to current value - for (j = timevary_setup(10) + 1; j <= timevary_setup(11); j++) - { - // =(1-rho)*mean + rho*prevval + dev // where mean = 0.0 - parm_dev_rwalk(k, j) = parm_dev_rho(k) * parm_dev_rwalk(k, j - 1) + parm_dev(k, j) * parm_dev_stddev(k); // update MRRW using annual dev - parm_timevary(tvary, j) += parm_dev_rwalk(k, j); // add dev to current value of annual parameter, which may previously be adjusted by block or env - } - break; - } - case 6: // mean reverting random walk with penalty to keep rmse near 1.0 - { - parm_dev_rwalk(k, timevary_setup(10)) = parm_dev(k, timevary_setup(10)) * parm_dev_stddev(k); // 1st yr dev - parm_timevary(tvary, timevary_setup(10)) += parm_dev_rwalk(k, timevary_setup(10)); // add dev to current value - for (j = timevary_setup(10) + 1; j <= timevary_setup(11); j++) - { - // =(1-rho)*mean + rho*prevval + dev // where mean = 0.0 - parm_dev_rwalk(k, j) = parm_dev_rho(k) * parm_dev_rwalk(k, j - 1) + parm_dev(k, j) * parm_dev_stddev(k); // update MRRW using annual dev - parm_timevary(tvary, j) += parm_dev_rwalk(k, j); // add dev to current value of annual parameter, which may previously be adjusted by block or env - } - break; - } - case 5: // mean reverting random walk constrained by base parameter's min-max: - { - // NOTE: if the stddev parameter is greater than 1.8, the distribution of adjusted parameters will become U-shaped - dvariable temp; - double p_range = baseparm_max(tvary) - baseparm_min(tvary); - int j = timevary_setup(10); - parm_dev_rwalk(k, j) = parm_dev(k, j) * parm_dev_stddev(k); // 1st yr dev - // p_base=(parm_timevary(tvary,j)-baseparm_min(tvary))/(baseparm_max(tvary)-baseparm_min(tvary)); // convert parm to (0,1) scale - // temp=log(p_base/(1.-p_base)) + parm_dev_rwalk(k,j); // convert to logit and add dev; so dev must be in units of the logit - temp = log((parm_timevary(tvary, j) - baseparm_min(tvary) + 1.0e-7) / (baseparm_max(tvary) - parm_timevary(tvary, j) + 1.0e-7)); - parm_timevary(tvary, j) = baseparm_min(tvary) + p_range / (1.0 + exp(-temp - parm_dev_rwalk(k, j))); - for (j = timevary_setup(10) + 1; j <= timevary_setup(11); j++) - { - // =(1-rho)*mean + rho*prevval + dev // where mean = 0.0 - parm_dev_rwalk(k, j) = parm_dev_rho(k) * parm_dev_rwalk(k, j - 1) + parm_dev(k, j) * parm_dev_stddev(k); // update MRRW using annual dev - temp = log((parm_timevary(tvary, j) - baseparm_min(tvary) + 1.0e-7) / (baseparm_max(tvary) - parm_timevary(tvary, j) + 1.0e-7)); - parm_timevary(tvary, j) = baseparm_min(tvary) + p_range / (1.0 + exp(-temp - parm_dev_rwalk(k, j))); - } - break; - } - } - if (timevary_setup(14) == 1) // continue_last - { - for (j = timevary_setup(11) + 1; j <= YrMax; j++) - parm_timevary(tvary, j) = parm_timevary(tvary, timevary_setup(11)); - } - } - if (do_once == 1) - echoinput << "result by year: " << parm_timevary(tvary) << endl; - } - } // end timevary_parm setup for all years - -FUNCTION void make_densitydependent_parm(int const y1) - { - - for (int tvary = 1; tvary <= timevary_cnt; tvary++) - { - ivector timevary_setup(1, 13); - timevary_setup(1, 13) = timevary_def[tvary](1, 13); - if (timevary_setup(7) < 0) // density-dependent - { - int env_var = timevary_setup(7); - timevary_parm_cnt = timevary_setup(3); // link parameter index - if (do_once == 1) - echoinput << y1 << " density-dependent to env_variable: " << env_var << " using link_type " - << timevary_setup(6) << " env: " << env_data(y1, env_var) << " parm: " << timevary_parm(timevary_parm_cnt) << endl; - switch (int(timevary_setup(6))) - { - case 1: // exponential env link - { - parm_timevary(tvary, y1) *= mfexp(timevary_parm(timevary_parm_cnt) * env_data(y1, env_var)); - break; - } - case 2: // linear env link - { - parm_timevary(tvary, y1) += timevary_parm(timevary_parm_cnt) * env_data(y1, env_var); - break; - } - case 3: // result constrained by baseparm_min-max; input values are unit normal - { - dvariable temp; - double p_range = baseparm_max(tvary) - baseparm_min(tvary); - temp = log((parm_timevary(tvary, y1) - baseparm_min(tvary) + 1.0e-7) / (baseparm_max(tvary) - parm_timevary(tvary, y1) + 1.0e-7)); - temp += timevary_parm(timevary_parm_cnt) * env_data(y1, env_var); - parm_timevary(tvary, y1) = baseparm_min(tvary) + p_range / (1.0 + exp(-temp)); - break; - } - case 4: // logistic env link - { - // first parm is offset ; second is slope - parm_timevary(tvary, y1) = 2.00000 / (1.00000 + mfexp(-timevary_parm(timevary_parm_cnt + 1) * (env_data(y1, env_var) - timevary_parm(timevary_parm_cnt)))); - break; - } - } - } - } - } - -// SS_Label_file #22. **SS_tagrecap.tpl** -// SS_Label_file # * Tag_Recapture() // calculates expected values for number of tags returned by each fleet(and area), in each time step, for each tag release group -// SS_Label_file # - -FUNCTION void Tag_Recapture() - { - // SS_Label_Info_24.15 #do tag mortality, movement and recapture revise 7/10/2019 - dvariable TG_init_loss; - dvariable TG_chron_loss; - TG_recap_exp.initialize(); - - // get reporting rates by fleet that will be used for all Tag Groups - for (f = 1; f <= Nfleet1; f++) - { - j = 3 * N_TG + f; - if (TG_parm_PH(j) == -1000.) - { - TG_report(f) = TG_report(f - 1); - } // do nothing keep same value - else - { - if (TG_parm_PH(j) > -1000.) - { - k = j; - } - else - { - k = -1000 - TG_parm_PH(j); - } - TG_report(f) = mfexp(TG_parm(k)) / (1. + mfexp(TG_parm(k))); - } - j += Nfleet1; - if (TG_parm_PH(j) == -1000.) - { - TG_rep_decay(f) = TG_rep_decay(f - 1); - } // do nothing keep same value - else - { - if (TG_parm_PH(j) > -1000.) - { - k = j; - } - else - { - k = -1000 - TG_parm_PH(j); - } - TG_rep_decay(f) = TG_parm(k); - } - } - for (TG = 1; TG <= N_TG; TG++) - { - firstseas = int(TG_release(TG, 4)); // release season - t = int(TG_release(TG, 5)); // release t index calculated in data section from year and season of release - p = int(TG_release(TG, 2)); // release area - gg = int(TG_release(TG, 6)); // gender (1=fem; 2=male; 0=both - a1 = int(TG_release(TG, 7)); // age at release - - TG_alive.initialize(); - if (gg == 0) - { - for (g = 1; g <= gmorph; g++) - { - TG_alive(p, g) = natage(t, p, g, a1); - } // gets both genders - } - else - { - for (g = 1; g <= gmorph; g++) - { - if (sx(g) == gg) - { - TG_alive(p, g) = natage(t, p, g, a1); - } // only does the selected gender - } - } - if (TG_parm_PH(TG) == -1000.) - { - } // do nothing keep same TG_init_loss - else - { - if (TG_parm_PH(TG) > -1000.) - { - k = TG; - } - else - { - k = -1000 - TG_parm_PH(TG); - } - TG_init_loss = mfexp(TG_parm(k)) / (1. + mfexp(TG_parm(k))); - } - - // get chronic loss parameter - j = TG + N_TG; - if (TG_parm_PH(j) == -1000.) - { - } // do nothing keep same value - else - { - if (TG_parm_PH(j) > -1000.) - { - k = j; - } - else - { - k = -1000 - TG_parm_PH(j) + N_TG; - } - TG_chron_loss = mfexp(TG_parm(k)) / (1. + mfexp(TG_parm(k))); - } - TG_alive /= sum(TG_alive); // proportions across morphs at age a1 in release area p at time of release t - TG_alive *= TG_release(TG, 8); // number released as distributed across morphs - TG_alive *= (1. - TG_init_loss); // initial mortality - if (save_for_report > 0) - { - TG_save(TG, 1) = value(TG_init_loss); - TG_save(TG, 2) = value(TG_chron_loss); - } - TG_t = 0; - for (y = TG_release(TG, 3); y <= endyr; y++) - { - for (s = firstseas; s <= nseas; s++) - { - if (save_for_report > 0 && TG_t <= TG_endtime(TG)) - { - TG_save(TG, 3 + TG_t) = value(sum(TG_alive)); - } // OK to do simple sum because only selected morphs are populated - - for (p = 1; p <= pop; p++) - { - for (g = 1; g <= gmorph; g++) - if (TG_use_morph(TG, g) > 0) - { - for (f = 1; f <= Nfleet; f++) - if (fleet_area(f) == p) - { - // calculate recaptures by fleet - // NOTE: Sel_for_tag(t,f,g,a1) = sel_ret_num(s,f,g,a1)*Hrate(f,t) - if (F_Method == 1) - { - TG_recap_exp(TG, TG_t, f) += TG_alive(p, g) // tags recaptured - * mfexp(-(natM(t, p, GP3(g), a1) + TG_chron_loss) * seasdur_half(s)) * Sel_for_tag(t, f, g, a1) * TG_report(f) * mfexp(TG_t * TG_rep_decay(f)); - } - else // use for method 2 and 3 - { - TG_recap_exp(TG, TG_t, f) += TG_alive(p, g) * Sel_for_tag(t, f, g, a1) / (Z_rate(t, p, g, a1) + TG_chron_loss) * (1. - mfexp(-seasdur(s) * (Z_rate(t, p, g, a1) + TG_chron_loss))) * TG_report(f) * mfexp(TG_t * TG_rep_decay(f)); - } - - if (docheckup == 1) - echoinput << " TG_" << TG << " y_" << y << " s_" << s << " area_" << p << " g_" << g << " GP3_" << GP3(g) << " f_" << f << " a1_" << a1 << " Sel_" << Sel_for_tag(t, f, g, a1) << " TG_alive_" << TG_alive(p, g) << " TG_obs_" << TG_recap_obs(TG, TG_t, f) << " TG_exp_" << TG_recap_exp(TG, TG_t, f) << endl; - } // end fleet loop for recaptures - TG_alive(p, g) *= mfexp(-seasdur(s) * (Z_rate(t, p, g, a1) + TG_chron_loss)); - } // end morph loop - } // end area loop - - if (Hermaphro_Option != 0) - { - if (Hermaphro_seas == -1 || Hermaphro_seas == s) - { - k = gmorph / 2; - for (p = 1; p <= pop; p++) // area - for (g = 1; g <= k; g++) // loop females - if (use_morph(g) > 0) - { - if (Hermaphro_Option == 1) - { - TG_alive(p, g + k) += TG_alive(p, g) * Hermaphro_val(GP4(g), a1); // increment males with females - TG_alive(p, g) *= (1. - Hermaphro_val(GP4(g), a1)); // decrement females - } - else if (Hermaphro_Option == -1) - { - TG_alive(p, g) += TG_alive(p, g + k) * Hermaphro_val(GP4(g + k), a1); // increment females with males - TG_alive(p, g + k) *= (1. - Hermaphro_val(GP4(g + k), a1)); // decrement males - } - } - } - } - - if (do_migration > 0) // movement between areas of tags - { - TG_alive_temp = TG_alive; - TG_alive = 0.0; - for (g = 1; g <= gmorph; g++) - if (use_morph(g) > 0) - { - for (p = 1; p <= pop; p++) // source population - for (p2 = 1; p2 <= pop; p2++) // destination population - { - k = move_pattern(s, GP4(g), p, p2); - if (k > 0) - TG_alive(p2, g) += TG_alive_temp(p, g) * migrrate(y, k, a1); - } - } - if (docheckup == 1) - echoinput << " Tag_alive after survival and movement " << endl - << TG_alive << endl; - } - t++; // increment seasonal time counter - if (TG_t < TG_endtime(TG)) - TG_t++; - if (s == nseas && a1 < nages) - a1++; - } // end seasons - firstseas = 1; // so start with season 1 in year following the tag release - } // end years - } // end loop of tag groups - } // end having tag groups - diff --git a/n_warn.txt b/n_warn.txt deleted file mode 100644 index 57d0089f..00000000 --- a/n_warn.txt +++ /dev/null @@ -1,2 +0,0 @@ -"x" -"1" 0 From 2052d21dee0a9b63c20f7ec6dec6a27923f09074 Mon Sep 17 00:00:00 2001 From: Elizabeth Perl Date: Thu, 24 Jul 2025 17:49:50 +0000 Subject: [PATCH 8/8] try updated with new static build --- .github/workflows/build-ss3-warnings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-ss3-warnings.yml b/.github/workflows/build-ss3-warnings.yml index 4e218903..51cf60cd 100644 --- a/.github/workflows/build-ss3-warnings.yml +++ b/.github/workflows/build-ss3-warnings.yml @@ -66,7 +66,7 @@ jobs: - name: Use R to parse warnings output and determine if amount of warnings has changed run: | txt <- readLines("warnings.txt", encoding = "UTF-8") - warn_line <- grep(pattern = "g++ -c -std=c++17 -O3 -Wall -Wextra -D_USE_MATH_DEFINES -DUSE_ADMB_CONTRIBS", x = txt, fixed = TRUE) + warn_line <- grep(pattern = "g++ -c -std=c++17 -O3 -Wall -Wextra -static-libstdc++ -static-libgcc -D_USE_MATH_DEFINES -DUSE_ADMB_CONTRIBS", x = txt, fixed = TRUE) end_warn_line <- grep(pattern = "*** Linking: ss3.obj ", x = txt, fixed = TRUE) if (length(warn_line) == 1 & length(end_warn_line) == 1) { txt <- txt[(warn_line+3):(end_warn_line-1)]

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

xCg?CKnYDl^Q^dW{N0V_<=p) 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

xCg?CKnYDl^Q^dW{N0V_<=p) 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