# How to calculate incident solar energy on earth in a given day with a spectral filter

The daily solar radiation irradiation is often quoted as being between $3.2 \text{ kW hours}/\text{m}^2$ and $7 \text{kW hours}/\text{m}^2$ per day . If you filter out a range of wavelengths, how can you calculate the energy from the remaining wavelengths?

To make it concrete, say we filter everything below 450nm or alternatively above 700nm.

• I'm not sure what you're asking "The energy from daylight is often quoted as being between 3.2 kW h/m^2 and 7 kW h/m^2 " Is 'h' supposed to indicate hours, as in, kW-hours? And if so, do you mean to ask how much energy is incident on a given area for a particular duration of time?
– Joe
Jun 7, 2013 at 19:26
• h is hours so you get the amount of energy per square meter. This is normally given when discussing the efficiency of solar water heating. The two different figures are for temperate climates and the tropics I think. Jun 7, 2013 at 19:46
• Google "standard solar spectra". It is given in units of W/m^2/nm usually normalized to 1000W/m^2 or something, and it is in numerical form an easy to integrate. Note that there exists several with different definitions, so pick the one which is close to your application. pveducation.org/pvcdrom/appendices/standard-solar-spectra Jan 24, 2016 at 13:38

The temperature of the sun is about 5778 K. You could treat it as a black body.

The energy per unit time per unit area per unit wavelength emitted from the surface of a black body is given by Planck's Law

$$B(\lambda, T) = \frac{2\ hc^2}{\lambda^5}\frac{1}{e^{hc/\lambda k T}-1}$$

In other words, the total power (energy per unit time) radiated by the sun per unit area is given by:

$$P (T) = \int_{0}^{\infty} B_\lambda(\lambda,T)\mathrm d\lambda$$

We must account for the total surface area of the sun, which is $SA_\text{sun} \approx 6.1 \times 10 ^{18}$ meters$^2$.

Thus the total energy emitted by the sun is given by:

$$P_\text{Tot}(T) = SA_\text{sun} \int_{0}^{\infty} B_\lambda(\lambda,T)\mathrm d\lambda$$

Now, you want to know how much sunlight is seen by a square meter on the surface of earth. This is where solid angle comes into play. What fraction of the sun's radiated power will be seen by a square meter on the surface of Earth?

Divide 1 square meter by the surface area of an enormous sphere the surrounds the sun with a radius equal to the distance the earth is from the sun (which varies but is on average $D \approx 1.50 \times 10 ^{11}$ meters). The surface area of such a sphere is $4\pi D^2$. The fraction that we need is $$\frac{1\text{ meter}^2}{4\pi D^2}$$

In other words, the power from the sun that reaches a given square meter of earth is:

$$P_\text{Tot}(T) = \frac{1\text{ meter}^2}{4\pi D^2}SA_\text{sun} \int_{0}^{\infty} B_\lambda(\lambda,T)\mathrm d\lambda \approx 1300\text{ Watts}$$

You probably noticed that this is about 30% over what is usually quoted as the solar flux on earth: about 1000 Watts per meter squared. This is because the atmosphere does not transmit all wavelengths equally. To account for this, you need to consider a transmission function: $\tau_\text{atmosphere}(\lambda)$:

$$P_\text{Tot}(T) = \frac{1\text{ meter}^2}{4\pi D^2}SA_\text{sun} \int_{0}^{\infty}\tau_\text{atmosphere}(\lambda) B_\lambda(\lambda,T)\mathrm d\lambda \approx 1000\text{ Watts}$$

The transmission function of the atmosphere is not a simple algebraic expression so you will need to integrate numerically and import a table of atmosphere transmission levels as a function of wavelength.

Now, to account for your own filter, you can simply apply another transmission function, $\tau_\text{Custom Filter}(\lambda)$, such that:

$$P_\text{Tot}(T) = \frac{1\text{ meter}^2}{4\pi D^2}SA_\text{sun} \int_{0}^{\infty}\tau_{\text{Custom Filter}}(\lambda)\tau_\text{atmosphere}(\lambda) B_\lambda(\lambda,T)\mathrm d\lambda$$

In the case of a simple band pass filter (a filter that passes light between $\lambda_\text{min}$ and $\lambda_\text{max}$) this will just mean you change the limits of your integral function:

$$P_\text{Tot}(T) = \frac{1\text{ meter}^2}{4\pi D^2}SA_\text{sun} \int_{\lambda_\text{min}}^{\lambda_\text{max}}\tau_\text{atmosphere}(\lambda) B_\lambda(\lambda,T)\mathrm d\lambda$$

This gives the amount of power incident on a surface that is normal to the incident sunlight (e.g. at high noon). The incident power will, however, vary throughout the day as sun's elevation angle fluctuates.

Suppose that in the summer on the equator you will have twelve hours of sunlight and the sun moves at a linear rate from horizon to horizon. The 'elevation angle' of the sun will then be given by $\theta = \omega t$ where $\omega = \frac{2\pi}{24\text{ hours}} = 72 \mu ~\mathrm{rad /sec}\;.$ The power irradiating the surface of the earth then fluctuates with the sine squared of the sun's elevation angle:

$$P = P_\text{Tot}(\theta,T) = \sin^2\theta\frac{1\text{ meter}^2}{4\pi D^2}SA_\text{sun} \int_{\lambda_\text{min}}^{\lambda_\text{max}}\tau_\text{atmosphere}(\lambda) B_\lambda(\lambda,T) \mathrm d\lambda$$

We have a known relationship between $\theta$ and $t$ ($\theta = \omega t$) and hence our power fluctuated with time:

$$P = P_\text{Tot}(T,t) = \sin^2(\omega t)\frac{1\text{ meter}^2}{4\pi D^2}SA_\text{sun} \int_{\lambda_\text{min}}^{\lambda_\text{max}}\tau_\text{atmosphere}(\lambda) B_\lambda(\lambda,T)\mathrm d\lambda$$

To compute energy, you must now integrate over time. Consider integrating over a 12 hour period (daylight)

$$E = \int_0^{12\text{ Hrs}} P_\text{Tot}(T,t) \mathrm dt = \int_{0}^{12\text{ Hrs}}\sin^2(\omega t)\frac{1\text{ meter}^2}{4\pi D^2}SA_\text{sun} \int_{\lambda_\text{min}}^{\lambda_\text{max}}\tau_\text{atmosphere}(\lambda) B_\lambda(\lambda,T)\mathrm d\lambda \mathrm dt$$

Entering this into a matlab code (ignoring the custom filter and assuming the atmosphere is 100% transmissive) I come up with 8.22 kW hours per meter squared per day. This is about 20% over the maximum power you quoted.

My computations give me an overestimate for two reasons: I assumed that your are exactly on the equator (maximum sunlight). I also assumed that the atmosphere is perfectly transmissive. It is not transmissive and in fact fluctuates with time of day (the sunlight from the horizon has to pass through more 'atmosphere' than the sunlight at noon).

A better estimate can be done by accounting for your latitude, percentage of cloud cover, and atmospheric transmission. In the mean time, this will be a good starting point.

• That's very nice but do you get the same basic figures I quoted in my question this way? I can't tell yet. Jun 7, 2013 at 19:44
• Where do you get your figures from -- I'm confused what the units are. (see my comment on your original question). Usually the solar flux of daylight is quoted as 1000 W/m^2.
– Joe
Jun 7, 2013 at 19:45
• See en.wikipedia.org/wiki/… for one place that has these figures. I see I may have made a mistake however as insolation seemly measure something different. Jun 7, 2013 at 19:49
• this helps: I will update shortly
– Joe
Jun 7, 2013 at 19:57
• Thank you. Would you mind posting the matlab code please so I can translate it to python and add the wavelength filter. Jun 8, 2013 at 5:17