docs: def zhang_huang_solar(alt, cloud_cover, relative_humidity,
                        dry_bulb_present, dry_bulb_t3_hrs, wind_speed,
                        irr_0=1355):
      """Calculate global horizontal solar irradiance using the Zhang-Huang model.
  
      Note:
          [1] Zhang, Q.Y. and Huang, Y.J. 2002. "Development of typical year weather files
          for Chinese locations", LBNL-51436, ASHRAE Transactions, Vol. 108, Part 2.
  
      Args:
          alt: A solar altitude in degrees.
          cloud_cover: A float value between 0 and 10 that represents the sky cloud cover
              in tenths (0 = clear; 10 = completely overcast)
          relative_humidity: A float value between 0 and 100 that represents
              the relative humidity in percent.
          dry_bulb_present: A float value that represents the dry bulb
              temperature at the time of interest (in degrees C).
          dry_bulb_t3_hrs: A float value that represents the dry bulb
              temperature at three hours before the time of interest (in degrees C).
          wind_speed: A float value that represents the wind speed in m/s.
          irr_0 = Optional extraterrestrial solar constant (W/m2).
              Default is to use the average value over the earth's orbit (1355).
  
      Returns:
          glob_ir: A global horizontall radiation value in W/m2.
      """
      # zhang-huang solar model regression constants
      C0, C1, C2, C3, C4, C5, D_COEFF, K_COEFF = 0.5598, 0.4982, \
          -0.6762, 0.02842, -0.00317, 0.014, -17.853, 0.843
  
      # start assuming night time
      glob_ir = 0
  
      if alt > 0:
          # get sin of the altitude
          sin_alt = math.sin(math.radians(alt))
  
          # shortened and converted versions of the input parameters
          cc, rh, n_temp, n3_temp, w_spd = cloud_cover / 10.0, \
              relative_humidity, dry_bulb_present, dry_bulb_t3_hrs, wind_speed
  
          # calculate zhang-huang global radiation
          glob_ir = ((irr_0 * sin_alt *
                      (C0 + (C1 * cc) + (C2 * cc**2) +
                       (C3 * (n_temp - n3_temp)) +
                       (C4 * rh) + (C5 * w_spd))) + D_COEFF) / K_COEFF
          if glob_ir < 0:
              glob_ir = 0
  
      return glob_ir