PVL_TestScript2

Example script to demonstrate the modeling of a PV system using only global horizontal irradiance data.

This script demonstrates how to use the PV_LIB Toolbox to estimate the standard irradiance inputs given only global horizontal irradiance. The input data used in this example is read in from a Typical Meteorological Year 3 (TMY3) formatted file that contains one year of hourly-averaged data for Albuquerque, NM. While the DNI and DHI data from this TMY3 file are not used in this analysis for calculating DNI or DHI, the TMY3 data values are used to evaluate the results.

Contents

PV_LIB Functions used in this example

clear all; %clear memory before running script
close all; %close all files and figure

Step 1: Irradiance and Weather

Read in weather data from Albuquerque TMY3 file: 723650TY.csv. This step uses the PV_LIB function pvl_readtmy3 to read in data from this TMY3 formatted file.

TMYData = pvl_readtmy3('723650TY.csv');

1.1 Define Time and Irradiance Variabiles

TimeMatlab = TMYData.DateNumber;
Time = pvl_maketimestruct(TimeMatlab, ones(size(TimeMatlab))*TMYData.SiteTimeZone);
dayofyear = pvl_date2doy(Time.year, Time.month, Time.day);
DNI = TMYData.DNI; % Read in for comparison with results
DHI = TMYData.DHI; % Read in for comparison with results
GHI = TMYData.GHI;
%

Let's examine GHI irradiance for a sample day (August 2)

figure
tfilter = and(Time.month == 8,Time.day == 2);
plot(Time.hour(tfilter),GHI(tfilter),'-*')

legend('GHI')
xlabel('Hour of Day')
ylabel('Irradiance (W/m^2)')
title('Albuquerque TMY3 - Aug 2','FontSize',14)

This plot shows that this day was generally clear, with possible minor clouds in the afternoon.

1.2 Define the Site Location

Create a Location structure using the PV_LIB function pvl_makelocationstruct.

Location = pvl_makelocationstruct(TMYData.SiteLatitude,TMYData.SiteLongitude,TMYData.SiteElevation) %Altitude is optional
Location = 

     latitude: 35.0400
    longitude: -106.6200
     altitude: 1619

1.3 Calculate Sun Position

Calculate sun position using PV_LIB function pvl_ephemeris. If Pressure and Temperature are specifiec they must be in units of Pa and deg C, respectively.

PresPa = TMYData.Pressure*100; %Convert pressure from mbar to Pa
[SunAz, SunEl, AppSunEl, SolarTime] = pvl_ephemeris(Time,Location,PresPa,TMYData.DryBulb);

Let's examine a plot of sun position for our site on August 2

figure
tfilter = and(Time.month == 8,Time.day == 2);
plot(Time.hour(tfilter),90-SunEl(tfilter),'-s')
hold all
plot(Time.hour(tfilter),SunAz(tfilter),'-o')
legend('Zenith angle','Azimuth Angle')
xlabel('Hour of Day')
ylabel('Angle (deg)')
title('Albuquerque Sun Position - Aug 2','FontSize',14)

1.4 Estimate DNI using the DISC Model

This step estimates the direct normal irradiance from the global horizontal irradiance using the PV_LIB function pvl_disc. Note that this function takes as input GHI and the solar zenith angle (actual rather than aparent)

DNI_model = pvl_disc(GHI,90-SunEl, dayofyear, PresPa);

Let's examine a plot comparing DNI estimated with the DISC model and that from the TMY3 dataset our site on August 2

figure
tfilter = and(Time.month == 8,Time.day == 2);
plot(Time.hour(tfilter),DNI_model(tfilter),'-s')
hold all
plot(Time.hour(tfilter),DNI(tfilter),'-o')
legend('DNI (DISC Model)','DNI (TMY3)')
xlabel('Hour of Day')
ylabel('Irradiance (W/m^2)')
title('Albuquerque Direct Normal Irradiance Comparison - Aug 2','FontSize',14)

1.6 Calculate DHI_model from DNI_model, GHI, and Zenith Angle

DHI_model = GHI - cosd(90-SunEl).*DNI_model;

Let's examine a plot comparing modeled DHI to DHI from the TMY3 dataset our site on August 2

figure
tfilter = and(Time.month == 8,Time.day == 2);
plot(Time.hour(tfilter),DHI_model(tfilter),'-s')
hold all
plot(Time.hour(tfilter),DHI(tfilter),'-o')
legend('DHI (modeled from GHI)','DNI (TMY3)')
xlabel('Hour of Day')
ylabel('Irradiance (W/m^2)')
title('Albuquerque Diffuse Horizontal Irradiance Comparison - Aug 2','FontSize',14)

Next Steps

At this point in the calculation we have demonstrated how to use PV_LIB function to estimate the standard irradiance inputs (DNI and DHI) starting with just GHI as an input. Refer to PVL_TestScript1.m for an example of how to use these standard irradiance inputs in a PV modeling analysis using the Sandia PV Performance Model.

Copyright 2014 Sandia National Laboratories