#If needed, please rename this file as "BNM.JAG"

model{
#-----------#
#Catch model#
#-----------#
#Lakes with stocking
for(i in 1:8) {
for(j in JS1[S1[i]]:JE1[S1[i]]){
    logY[j] ~ dnorm(muY[j], TauY.G)
    muY[j] <- BetaYs[i,1] + BetaYs[i,2] * muT[j] + BetaYs[i,3] * muL[j] + BetaYs[i,4] * muC[j] + BetaYs[i,5] * logST[j] + BetaYs[i,6] * logEFF[j]}}

#Lakes without stocking
for(i in 1:23) {
for(j in JS1[S0[i]]:JE1[S0[i]]){
    logY[j] ~ dnorm(muY[j], TauY.G)
    muY[j] <- BetaY[i,1]  + BetaY[i,2] * muT[j] + BetaY[i,3] * muL[j] + BetaY[i,4] * muC[j] + BetaY[i,5] * logEFF[j]}}

#-----------------------#
#Lake environment models#
#-----------------------#
for(i in 1:31) {
for(j in JS1[i]:JE2[i]){
    WT[j]   ~ dnorm(muT[j], TauT.G)
    muT[j]  <- BetaT[i,1] + BetaT[i,2] * AT[j]

    dWL[j]  ~  dnorm(muL[j], TauL.G)
    muL[j]<- BetaL[i,1] + BetaL[i,2] * PRE[j] + BetaL[i,3] * PE[j] + BetaL[i,4] * LUag[j] * PE[j] 

    logChl[j]~ dnorm(muC[j], TauC.G)
    muC[j] <- BetaC[i,1] + BetaC[i,2] * logPRE[j] + BetaC[i,3] * logLUag[j] + BetaC[i,4] * muL[j] + BetaC[i,5] * muT[j]
}}

#-----------------------------------------#
#Lake environment model coefficient priors#
#-----------------------------------------#
#Sigma
for (i in 1:31){
  sigma.T[i] <- sigma.hatT[i] * sqrt(DFflat/chisqT[i]); chisqT[i]  ~  dchisqr(DFflat)
  sigma.L[i] <- sigma.hatL[i] * sqrt(DFflat/chisqL[i]); chisqL[i]  ~  dchisqr(DFflat)
  sigma.C[i] <- sigma.hatC[i] * sqrt(DFflat/chisqC[i]); chisqC[i]  ~  dchisqr(DFflat)}

#Tau
for (i in 1:31){
  for (j in 1:kT){
  for (k in 1:kT){
    SigmaT[(j + (i-1)*kT), k] <- pow(sigma.T[i], 2) * VT[(j + (i-1)*kT), k]}}
  for (j in 1:kL){
  for (k in 1:kL){
    SigmaL[(j + (i-1)*kL), k] <- pow(sigma.L[i], 2) * VL[(j + (i-1)*kL), k]}}
  for (j in 1:kC){
  for (k in 1:kC){
    SigmaC[(j + (i-1)*kC), k] <- pow(sigma.C[i], 2) * VC[(j + (i-1)*kC), k]}}}
  
for (i in 1:31){
  Ot  [(1 + (i-1)*kT):(i*kT), 1:kT] <- inverse(SigmaT[(1 + (i-1)*kT):(i*kT), 1:kT]) 
  TauT[(1 + (i-1)*kT):(i*kT), 1:kT] <- 0.5 *      (Ot[(1 + (i-1)*kT):(i*kT), 1:kT]+ t(Ot[(1 + (i-1)*kT):(i*kT), 1:kT]))
  Ol  [(1 + (i-1)*kL):(i*kL), 1:kL] <- inverse(SigmaL[(1 + (i-1)*kL):(i*kL), 1:kL]) 
  TauL[(1 + (i-1)*kL):(i*kL), 1:kL] <- 0.5 *      (Ol[(1 + (i-1)*kL):(i*kL), 1:kL]+ t(Ol[(1 + (i-1)*kL):(i*kL), 1:kL]))
  Oc  [(1 + (i-1)*kC):(i*kC), 1:kC] <- inverse(SigmaC[(1 + (i-1)*kC):(i*kC), 1:kC]) 
  TauC[(1 + (i-1)*kC):(i*kC), 1:kC] <- 0.5 *      (Oc[(1 + (i-1)*kC):(i*kC), 1:kC]+ t(Oc[(1 + (i-1)*kC):(i*kC), 1:kC]))}

#Beta
for (i in 1:31){
  BetaT[i,1:kT] ~ dmnorm(Beta.hatT[i, 1:kT],TauT[(1 + (i-1)*kT):(i*kT), 1:kT])
  BetaL[i,1:kL] ~ dmnorm(Beta.hatL[i, 1:kL],TauL[(1 + (i-1)*kL):(i*kL), 1:kL])
  BetaC[i,1:kC] ~ dmnorm(Beta.hatC[i, 1:kC],TauC[(1 + (i-1)*kC):(i*kC), 1:kC])}

#------------------------------#
#Catch model coefficient priors#
#------------------------------#
#Sigma
for (i in 1:23){sigma.Y[i] <- sigma.hatY[i] * sqrt(DFflat/chisqY[i]) ; chisqY[i]  ~  dchisqr(DFflat)}
for (i in 1:8) {sigma.Ys[i]<- sigma.hatYs[i]* sqrt(DFflat/chisqYs[i]); chisqYs[i] ~  dchisqr(DFflat)}

#Tau
for (i in 1:23){
  for (j in 1:kY){
  for (k in 1:kY){
    SigmaY[(j + (i-1)*kY), k] <- pow(sigma.Y[i], 2) * VY[(j + (i-1)*kY), k]}}}
for (i in 1:8){
  for (j in 1:kYs){
  for (k in 1:kYs){
    SigmaYs[(j + (i-1)*kYs), k] <- pow(sigma.Ys[i], 2) * VYs[(j + (i-1)*kYs), k]}}}
  
for (i in 1:23){
  Oy  [(1 + (i-1)*kY):(i*kY), 1:kY] <- inverse(SigmaY[(1 + (i-1)*kY):(i*kY), 1:kY]) 
  TauY[(1 + (i-1)*kY):(i*kY), 1:kY] <- 0.5 *      (Oy[(1 + (i-1)*kY):(i*kY), 1:kY]+ t(Oy[(1 + (i-1)*kY):(i*kY), 1:kY]))}
for (i in 1:8){
  Oys  [(1 + (i-1)*kYs):(i*kYs), 1:kYs] <- inverse(SigmaYs[(1 + (i-1)*kYs):(i*kYs), 1:kYs]) 
  TauYs[(1 + (i-1)*kYs):(i*kYs), 1:kYs] <- 0.5 *      (Oys[(1 + (i-1)*kYs):(i*kYs), 1:kYs]+ t(Oys[(1 + (i-1)*kYs):(i*kYs), 1:kYs]))}

#Beta
for (i in 1:23){BetaY[i,1:kY]  ~ dmnorm(Beta.hatY [i, 1:kY], TauY[(1 + (i-1)*kY):(i*kY), 1:kY])}
for (i in 1:8) {BetaYs[i,1:kYs]~ dmnorm(Beta.hatYs[i, 1:kYs],TauYs[(1 + (i-1)*kYs):(i*kYs), 1:kYs])}

#-----------------------------------#
#Global Tau priors (non-informative)#
#-----------------------------------#
for (i in 1:4){Sig[i] ~ dunif(0,100)}

TauT.G <- pow(Sig[1], -2)
TauL.G <- pow(Sig[2], -2)
TauC.G <- pow(Sig[3], -2)
TauY.G <- pow(Sig[4], -2)
}
