THE BEEHIVE OBSERVATORY

ATMOSPHERIC EXTINCTION FORMULA PAGE
November 2021

 Home Page 

When you see a star close to the horizon, the light has had to pass through more air to get to you than if it were overhead. That causes the light to be scattered more and so the star seems dimmer. We need to be able to estimate the amount of dimming if we want to estimate the magnitude of an object. The following gives a first estimate of dimming but it is no substitute for comparing brightnesses of stars at the same altitude, including standard candles.
Here's my formula for this, using some crude, simplifying assumptions. Dimming is very small near the zenith, but becomes about 3 magnitudes near the horizon.

A C language version...

   // Returns the magnitudes of dimming caused by a simple atmosphere.
   // Angles in radians (1 radian = 180/Pi degrees).
   // m = 2.512 log10(exp(k(cos(z)r(sqr(1+(2r+1)/cos(z)/cos(z)/r/r)-1)-1)))
   // where z is the zenith angle, r=105, k=0.227.
   public double AtmosphericExtinction(double Altitude)
   {
   double mag = 0;
      if (Altitude > Math.PI / 2 || Altitude < 0)
      {
      }
      else
      {
      double r = 105.0;
      double S = Math.Cos(ZenithAngleFromAltitude(Altitude));
      double m = Math.Sqrt(1 + ((2 * r + 1) / S / S / r / r)) - 1;
         m = 2.512 * Math.Log10(Math.Exp(0.227 * (m * S * r - 1)));
         mag = Math.Round(m, 1);
      }
      return mag;
   }
   public double ZenithAngleFromAltitude(double Altitude)
   {
      return Math.PI / 2.0 - Altitude;
   }

If you prefer PowerShell (that's a grandiose command line scripting language from Windows) then here is a sample...

    # Returns the magnitudes of dimming caused by a simple atmosphere.
    # Angles in radians (1 radian = 180/Pi degrees).
    # m = 2.512 log10(exp(k(cos(z)r(sqr(1+(2r+1)/cos(z)/cos(z)/r/r)-1)-1)))
    # where z is the zenith angle, r=105, k=0.227.
    Function ZenithAngleFromAltitude($Altitude)
    {
       return [math]::PI / 2.0 - $Altitude;
    }
    Function Extinction($Altitude)
    {
       $mag = 0;
       if ($Altitude -gt [math]::PI / 2 -or $Altitude -lt 0)
       {
       }
       else
       {
          $r = 105.0
          $z = ZenithAngleFromAltitude($Altitude)
          $S = [math]::Cos($z)
          $m = [math]::Sqrt(1 + ((2 * $r + 1) / $S / $S / $r / $r)) - 1
          $m = 2.512 * [math]::Log10([math]::Exp(0.227 * ($m * $S * $r - 1)))
          $mag = [math]::Round($m, 1)
       }
       return $mag;
    }
    Function Dimming($degreesAltitude)
    {
       return Extinction($degreesAltitude * [math]::PI / 180)
    }


Formulae like that can give a rough idea of the likely scale of dimming to be expected but to be more general we would have to allow for aerosols (e.g. saharan dust, salt dust, water droplets, smoke, volcanic plume) up to and at the altitude, the wavelengths of interest, content of air with altitude and temperature and pressure. So, we have to measure actual extinction by measuring the magnitudes of non-variable stars at appropriate altitudes. When it comes to infrared observations, absorption (and so scattering) is hugely dependent on wavelength. Here it's nice to know that about a third of summer nights at Teide Observatory in the Canaries are affected by saharan dust, but that hardly ever happens in Cumbria.

 Home Page