docs: def hmcorrelation(sites_or_distances, imt, uncertainty_multiplier=0):
      """
      Returns the Heresi-Miranda correlation model.
  
      :param sites_or_distances:
          SiteCollection instance o distance matrix
      :param imt:
          Intensity Measure Type (PGA or SA)
      :param uncertainty_multiplier:
          Value to be multiplied by the uncertainty in the correlation parameter
          beta. If uncertainty_multiplier = 0 (default), the median value is
          used as a constant value.
      """
      if hasattr(sites_or_distances, 'mesh'):
          distances = sites_or_distances.mesh.get_distance_matrix()
      else:
          distances = sites_or_distances
  
      period = imt.period
  
      # Eq. (9)
      if period < 1.37:
          Med_b = 4.231 * period * period - 5.180 * period + 13.392
      else:
          Med_b = 0.140 * period * period - 2.249 * period + 17.050
  
      # Eq. (10)
      Std_b = (4.63e-3 * period*period + 0.028 * period + 0.713)
  
      # Obtain realization of b
      if uncertainty_multiplier == 0:
          beta = Med_b
      else:
          beta = numpy.random.lognormal(
              numpy.log(Med_b), Std_b * uncertainty_multiplier)
  
      # Eq. (8)
      return numpy.exp(-numpy.power((distances / beta), 0.55))