model
{
  # Loop over all individuals for inference of error precision
  for(i in 1 : n) {
    Y[i] ~ dnorm(mu[i], tau.err)
  }
  # Loop over founders for inference of additive values and precision
  for (i in 1 : f){
    mu[i] <- mean(beta[]) + add[i]
    add[i] ~ dnorm(0, tau.add)
  }
  # Loop over descendants for inference of additive values and precision
  for (i in f1 : n){
    mu[i] <- beta[X[i]] + add[i]
    par.add[i] <- (add[FID[i]] + add[MID[i]])/2.0
    add[i] ~ dnorm(par.add[i], prec.add)
  }
  # Specification of prior distributions
  for (i in 1: m){
    beta[i] ~ dnorm(0.0, 1.0E-6)
  }
  tau.add <- 1 / sigma2.add
  sigma.add ~ dunif(0, sd.u.add)
  sigma2.add <- sigma.add * sigma.add
  tau.err <- 1 / sigma2.err
  sigma.err ~ dunif(0, sd.u.err)
  sigma2.err <- sigma.err * sigma.err
  prec.add <- 2 * tau.add
  # Specification of functions of model parameters of inferential interest
  h2 <- sigma2.add / (sigma2.add + sigma2.err)
}
