docs: def get_relative_airmass(altitude, model='kastenyoung1989'):
      """
      Gives the relative (not pressure-corrected) airmass.
  
      Gives the airmass at sea-level when given a sun altitude angle (in
      degrees). The ``model`` variable allows selection of different
      airmass models (described below). If ``model`` is not included or is
      not valid, the default model is 'kastenyoung1989'.
  
      Note:
          [1] Fritz Kasten. "A New Table and Approximation Formula for the
          Relative Optical Air Mass". Technical Report 136, Hanover, N.H.:
          U.S. Army Material Command, CRREL.
          [2] A. T. Young and W. M. Irvine, "Multicolor Photoelectric
          Photometry of the Brighter Planets," The Astronomical Journal, vol.
          72, pp. 945-950, 1967.
          [3] Fritz Kasten and Andrew Young. "Revised optical air mass tables
          and approximation formula". Applied Optics 28:4735-4738
          [4] C. Gueymard, "Critical analysis and performance assessment of
          clear sky solar irradiance models using theoretical and measured
          data," Solar Energy, vol. 51, pp. 121-138, 1993.
          [5] A. T. Young, "AIR-MASS AND REFRACTION," Applied Optics, vol. 33,
          pp. 1108-1110, Feb 1994.
          [6] Keith A. Pickering. "The Ancient Star Catalog". DIO 12:1, 20,
          [7] Matthew J. Reno, Clifford W. Hansen and Joshua S. Stein, "Global
          Horizontal Irradiance Clear Sky Models: Implementation and Analysis"
          Sandia Report, (2012).
  
      Args:
          altitude: numeric
              Altitude angle of the sun in degrees. Note that some models use
              the apparent (refraction corrected) altitude angle, and some
              models use the true (not refraction-corrected) altitude angle. See
              model descriptions to determine which type of altitude angle is
              required. Apparent altitude angles must be calculated at sea level.
          model: string, default 'kastenyoung1989'
              Available models include the following:
              * 'simple' - secant(apparent altitude angle) -
                Note that this gives -inf at altitude=0
              * 'kasten1966' - See reference [1] -
                requires apparent sun altitude
              * 'youngirvine1967' - See reference [2] -
                requires true sun altitude
              * 'kastenyoung1989' - See reference [3] -
                requires apparent sun altitude
              * 'gueymard1993' - See reference [4] -
                requires apparent sun altitude
              * 'young1994' - See reference [5] -
                requries true sun altitude
              * 'pickering2002' - See reference [6] -
                requires apparent sun altitude
  
      Returns:
          airmass_relative: numeric
              Relative airmass at sea level. Will return None for any
              altitude angle smaller than 0 degrees.
      """
      if altitude < 0:
          return None
      else:
          alt_rad = math.radians(altitude)
          model = model.lower()
  
          if 'kastenyoung1989' == model:
              am = (1.0 / (math.sin(alt_rad) +
                    0.50572*(((6.07995 + altitude) ** - 1.6364))))
          elif 'kasten1966' == model:
              am = 1.0 / (math.sin(alt_rad) + 0.15*((3.885 + altitude) ** - 1.253))
          elif 'simple' == model:
              am = 1.0 / math.sin(altitude)
          elif 'pickering2002' == model:
              am = (1.0 / (math.sin(math.radians(altitude +
                    244.0 / (165 + 47.0 * altitude ** 1.1)))))
          elif 'youngirvine1967' == model:
              sec_zen = 1.0 / math.sin(alt_rad)
              am = sec_zen * (1 - 0.0012 * (sec_zen * sec_zen - 1))
          elif 'young1994' == model:
              am = ((1.002432*((math.sin(alt_rad)) ** 2) +
                    0.148386*(math.sin(alt_rad)) + 0.0096467) /
                    (math.sin(alt_rad) ** 3 +
                    0.149864*(math.sin(alt_rad) ** 2) +
                    0.0102963*(math.sin(alt_rad)) + 0.000303978))
          elif 'gueymard1993' == model:
              am = (1.0 / (math.sin(alt_rad) +
                    0.00176759*(90 - altitude)*(
                        (94.37515 - (90 - altitude)) ** - 1.21563)))
          else:
              raise ValueError('%s is not a valid model for relativeairmass', model)
      return am