code: def _matrix_sigma_eta(self, donor_catchments):
          
          p = len(donor_catchments)
          sigma = 0.1175 * np.ones((p, p))
          for i in range(p):
              for j in range(p):
                  if i != j:
                      sigma[i, j] *= self._model_error_corr(donor_catchments[i], donor_catchments[j])
          return sigma
docs: Return model error coveriance matrix Sigma eta
  
          Methodology source: Kjelsen, Jones & Morris 2014, eqs 2 and 3
  
          :param donor_catchments: Catchments to use as donors
          :type donor_catchments: list of :class:`Catchment`
          :return: 2-Dimensional, symmetric covariance matrix
          :rtype: :class:`numpy.ndarray`