Skip to content

Irradiance Module

schmager edited this page May 27, 2021 · 1 revision

This module calculates realistic irradiation data, which is used as input for the energy yield calculations. For this the TMY3 data sets, available from the National Renewable Energy Laboratory (NREL), are used. They contain statistically representative and hourly resolved meteorological / irradiation data of many locations spread over the USA, representing all relevant climatic zones. For each location, they contain measured atmospheric properties like dry-bulb temperature, pressure, precipitable water, aerosol optical depth and albedo. Based on all these properties, the irradiance and the sun’s position, the spectrally resolved (280 nm - 4000 nm) clear sky irradiance is calculated with SMARTS. In SMARTS, we use the Shettle and Fenn’s urban aerosol model and the US standard reference atmosphere.

The obtained clear sky irradiance is further enhanced by a simple cloud model. For this, the cloud cover, which is available in the TMY3 dataset is used. This simple cloud model assumes no spectral change for the direct irradiation. The diffuse irradiation however, is assumed to be composed by the direct and diffuse clear sky irradiance weighted by the cloud cover. The normalized spectral data is finally scaled to the measured diffuse irradiance of the TMY3 data.

img

img

Usage

Loading the irradiance data according to the example in the main.m file, we can analyze the spectral and hourly resolved data.

CodeLocation  = '722020TYA';
AliasLocation = 'Miami';

load(['Irradiance/Spectra_',num2str(CodeLocation),'_',num2str(AliasLocation),'/TMY3_',num2str(CodeLocation),'_',num2str(AliasLocation),'.mat']);

For example, the direct and diffuse horizontal irradiance can be plotted. To show the irradiance for the full exemplary year for each hour of the day, we take for simplicity the sum over the spectral data.

t = 1:8760;
lambda = irradiance.Irr_spectra_clouds_wavelength;
Idir = irradiance.Irr_spectra_clouds_direct_horizontal;
Idiff = irradiance.Irr_spectra_clouds_diffuse_horizontal;

figure;
plot(t,sum(Idir,2),'DisplayName','direct horizontal'); hold on
plot(t,sum(Idiff,2),'DisplayName','diffuse horizontal'); hold off
xlim([0 8760])
xlabel('Hour of year'); ylabel('Sum of spectral irradiance');
legend('show')

This brings us:

Next, we have a look to the spectral shape of the direct and diffuse irradiance for 3 different hours on an exemplary day. Here we choose 12. May, at 7:00, 12:00 and 17:00. These hours are indexed as follows: 3151:5:3161.

figure;
ax = axes;
plot(lambda,Idir(3151:5:3161,:)); hold on
plot(lambda,Idiff(3151:5:3161,:)); hold off
ax.ColorOrder = [ 0.0667 0.2980 0.4824; 0.0745 0.5216 0.7098; 0.1725 0.7647 0.9176;...
    0.6588 0.1843 0.1804; 0.8235 0.3176 0.3216; 0.9843 0.4510 0.4784];
xlim([300 1300])
legend({'direct 7:00', 'direct 12:00', 'direct 17:00',...
    'diffuse 7:00', 'diffuse 12:00', 'diffuse 17:00'})
xlabel('Wavelength (nm)'); ylabel('Irradiance (Wh m^{-2}nm^{-1})');

The influence of time and clouds can be clearly observed.

A more detailed analysis is also possible. Using again the sum over the spectral data, we can display the sun's azimuth and zenith angles together with the diffuse and direct horizontal irradiance over the course of one day.

thetasun = irradiance.Data_TMY3(:,7);
phisun = irradiance.Data_TMY3(:,8);
 
figure;
ax = axes;
plot(1:23,sum(Idir(3145:3167,:),2),'DisplayName','direct horizontal'); hold on
plot(1:23,sum(Idiff(3145:3167,:),2),'DisplayName','diffuse horizontal');
ylabel('Sum of spectral irradiance');
yyaxis right
plot(1:23, thetasun(3145:3167),'DisplayName','zenith angle')
plot(1:23, phisun(3145:3167),'DisplayName','azimuth angle'); hold off
xlabel('Hour'); ylabel('Sun angles'); legend('show')
xlim([1 23])

Clone this wiki locally