Sunshine on a Perfectly Cloudless Day

Where and When

Diurnal Cycle of Insolation

MODEL DESCRIPTION

This is a very simple model of incoming solar radiation at the Earth’s surface, intended to be used for teaching and learning about weather and climate.

The user specifies the season (month and day), the latitude, and the pressure. The program then uses simple spherical geometry to calculate the incident solar radiation on a horizontal plane, accounting for atmospheric attentuaion by absorption and scattering using a very simple expoential function suitable for clear skies. There’s no way to account for clouds in this simple model!

The model follows the discussion in Bonan (Chapter 4). in the absence of atmospheric scattering and absorption, the power of the Sun’s radiation incident on a horizontal surface is given by Bonan’s equation 4.4:

\[\begin{aligned}
S_H = \frac{S_C}{r_v^2}cos Z
\end{aligned}\]

where \(S_C\) = 1367 W m-2 is the “solar constant,” \(r_v\) is the “radius vector” (the ratio of the actual distance between the Sun and the Earth to its annual average), and \(cosZ\) is the cosine of the solar zenith angle. When the cosine of the solar zenith angle is negative, the Sun is below the horizon and we can just set the incoming solar radiation to zero.

The cosine of the solar zenith angle is given by Bonan’s equation 4.1:

where is latitude, \(\delta\) is declination (the latitude where the Sun is directly overhead at noon), and \(h\) is the hour angle (\(h = 0\) at noon, \(h = \pi/2\) at 6 PM, \(h = \pi\) at midnight, and \(h = 3\pi/2\) at 6 AM).

To calculate the hour angle, simply compute

\[
\begin{aligned}
h = -\pi + \frac{LST}{24} 2 \pi
\end{aligned}
\]

where LST is local solar time (or local standard time, same thing).

Declination (latitude of the sub-Solar point) is given by

\[
\begin{aligned}
\delta = \epsilon sin \theta
\end{aligned}
\]

where \(\epsilon\) is the tilt of the Earth’s axis (currently \(\epsilon = 0.4091\) radians) and \(\theta\) is the angular (seasonal) position of Earth in it’s orbit. The seasonal position angle \(\theta\) is measured from the vernal equinox (March 21), so that \(\theta = \pi/2\) at the June solstice, \(\theta = \pi\) at the autumnal equinox (Sept 21), and \(\theta = 3\pi/2\) at the December solstice.

The radius vector (normalized Earth-Sun distance) depends on both the position of the Earth in its orbit and the “shape” of the orbit itself according to:

where \(R_0\) is the average Sun-Earth distance, \(R_E\) is the actual Sun-Earth distance, \(e\) is the eccentricity of Earth’s orbit (deviation from a perfect circle), \(\theta\) is the seasonal position angle (see above), and \(\omega\) is the angle between the orbital position of the Earth’s perihelion and the vernal equinox. The “Milankovitch” orbital parameters\(\epsilon\), \(e\), and \(\omega\)vary quasi-periodically over geologic time due to the gravitational influences of the other planets. Present-day values are \(\epsilon\) = 0.4091, \(e\) = 0.0167 and \(\omega\) = 1.7963. See http://en.wikipedia.org/wiki/Insolation for a derivation and discussion.

The solar beam is also attenuated by atmospheric scattering and absorption. In a clear sky, incoming solar radiation at the Earth’s surface can be approximated using Bonan’s equation 4.6 as:

\[
\begin{aligned}
S = S_H \tau^m
\end{aligned}
\]

where \(S_H\) is the incident solar radiation on a horizontal surface above the atmosphere (defined above), \(\tau\) is the atmospheric transmissivity, and \(m\) is the “air mass”" through which the solar beam must pass. For this problem, assume \(\tau\) = 0.7. The air mass is given by Bonan’s eqn 4.7:

\[
\begin{aligned}
m = \frac{1}{cos Z} \frac{P}{P_S}
\end{aligned}
\]

where \(cos Z\) is the cosine of the solar zenith angle (defined above), \(P\) is atmospheric pressure and \(P_S\) = 1013.25 mb is the atmospheric pressure at sea level.

The program that does the calculation is very simple, and the code that controls this website is surprisingly simple too! It is all written in the programming language R. You can read all about it on the “Website Code” tab to the right.

How this website works (including all the code!)

This website is controlled using the R package
“shiny.”
There are four important components: