# pvl_reindl_1

Estimate Direct Normal Irradiance from Global Horizontal Irradiance using the Reindl-1 model

## Contents

- Syntax
- Description
- Inputs
- Outputs
- Example
- References
- See also

## Syntax

`DNI = pvl_reindl_1(GHI,Z, doy)`

## Description

The Reindl-1 model estimates the diffuse fraction DF from global horizontal irradiance through an empirical relationship between DF and the ratio of GHI to extraterrestrial irradiance, Kt. `pvl_reindl_1` uses the diffuse fraction to compute DHI as

and direct normal irradiance (DNI) is computed as

where is the true solar zenith angle.

## Inputs

- `GHI` - a scalar or vector of global horizontal irradiance in W/m^2. If `GHI` is a vector it must be of the same size as all other vector inputs. `GHI` must be >=0.
- `Z` - a scalar or vector of true (not refraction-corrected) zenith angles in decimal degrees. If `Z` is a vector it must be of the same size as all other vector inputs. `Z` must be >=0 and <=180.
- `doy` - a scalar or vector of values providing the day of the year. If `doy` is a vector it must be of the same size as all other vector inputs. `doy` must be >= 1 and < 367.

## Outputs

- `DNI` - the modeled direct normal irradiance in W/m^2.
- `DNI` - the modeled direct normal irradiance in W/m^2.
- `Kt` - Ratio of global to extraterrestrial irradiance on a horizontal plane.

## Example

This example compares DHI for August 6 from the TMY3 file for Albuquerque, NM, with DHI estimated from GHI from the TMY3 file, using the Reindl-1 model.

    TMYData = pvl_readtmy3('723650TY.csv');
    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;
    Location = pvl_makelocationstruct(TMYData.SiteLatitude,TMYData.SiteLongitude,...
    TMYData.SiteElevation); %Altitude is optional
    PresPa = TMYData.Pressure*100; %Convert pressure from mbar to Pa

    % Models that rely on sun position that are run at specific time steps
    % (e.g., hourly) run into numerical problems during timesteps when the sun
    % straddles the horizon (i.e., spends part of the timestep above and part
    % below the horizon).  Since in this example we use TMY day, which is
    % hourly and reported at the end of the hour, we adjust the sun position in
    % the following two ways.  (1) For hours when the sun is above the horizon
    % we adjust sun position so it is for the middle of the hour.  For example,
    % sun position reported at 4PM is the sun position at 3:30 PM.  (2) For
    % hours where the sun straddles the horizon, we report the position half
    % way between the horizon and the position of the sun at the end of the
    % hour.  This is appropriate because the GHI data is essentially a sum of the GHI
    % measurements made in the past hour.
    %
    %Run sun position twice:  Once for end of hour positions.
    % A second time for mid hour positions.
    % Adjust sun elevation and GHI for hours when the sun traverses the horizon
    % Include these adjusted values in the mid hour positions
    %
    [~, ~, AppSunEl, ~] = pvl_ephemeris(Time,Location,PresPa,TMYData.DryBulb);
    Time.hour = Time.hour-.5; % shift times back 1/2 hour for sun position calculation because of tmy
    % timestamps
    [~, ~, AppSunEla, ~] = pvl_ephemeris(Time,Location,PresPa,TMYData.DryBulb);

    A=diff(sign(AppSunEl)); %identifies hour before sun straddles horizon (2,-2)
    ind1 = find(A==2)+1; % AM hour where sun straddles horizon
    ind2 = find(A==-2)+1; % PM hour where sun straddles horizon
    %AM Adjustment
        AppSunEl(ind1) = AppSunEl(ind1)/2; %change sun elevation to mid way above the horizon
     %PM Adjustment
        AppSunEl(ind2) = AppSunEl(ind2)/2; %change sun elevation to mid way above the horizon
    AppSunEla(ind1)=  AppSunEl(ind1);
    AppSunEla(ind2)=  AppSunEl(ind2);

    [DNI_model, DHI_model, ~] = pvl_reindl_1(GHI,90-AppSunEla, dayofyear);

    figure
    tfilter = and(Time.month == 8,Time.day == 6);
    plot(Time.hour(tfilter),DHI_model(tfilter),'-s')
    hold all
    plot(Time.hour(tfilter),DHI(tfilter),'-o')
    xlim([0 25])
    legend('DHI (Reindl-1 Model)','DHI (TMY3)','Location','NE')
    xlabel('Hour of Day')
    ylabel('Irradiance (W/m^2)')
    title({'Diffuse Horizontal Irradiance Comparison';'Albuquerque, Aug 6'},'FontSize',14)

## References

[1] Reindl D.T., Beckman W.A., Duffie J.A., 1990. Diffuse fraction correlations. Solar Energy v45, pp. 1-7.

## See also

`pvl_disc` , `pvl_dirint` , `pvl_erbs` , `pvl_louche` , `pvl_orgill_hollands` , `pvl_reindl_2` , `pvl_ephemeris` , `pvl_date2doy` , `pvl_alt2pres`

Copyright 2014 Sandia National Laboratories