pvlib.irradiance.haydavies#

pvlib.irradiance.haydavies(surface_tilt, surface_azimuth, dhi, dni, dni_extra, solar_zenith=None, solar_azimuth=None, projection_ratio=None, return_components=False)[source]#

Determine diffuse irradiance from the sky on a tilted surface using Hay & Davies’ 1980 model

\[I_{d} = DHI ( A R_b + (1 - A) (\frac{1 + \cos\beta}{2}) )\]

Hay and Davies’ 1980 model determines the diffuse irradiance from the sky (ground reflected irradiance is not included in this algorithm) on a tilted surface using the surface tilt angle, surface azimuth angle, diffuse horizontal irradiance, direct normal irradiance, extraterrestrial irradiance, sun zenith angle, and sun azimuth angle.

Parameters
  • surface_tilt (numeric) – Surface tilt angles in decimal degrees. The tilt angle is defined as degrees from horizontal (e.g. surface facing up = 0, surface facing horizon = 90)

  • surface_azimuth (numeric) – Surface azimuth angles in decimal degrees. The azimuth convention is defined as degrees east of north (e.g. North=0, South=180, East=90, West=270).

  • dhi (numeric) – Diffuse horizontal irradiance in W/m^2.

  • dni (numeric) – Direct normal irradiance in W/m^2.

  • dni_extra (numeric) – Extraterrestrial normal irradiance in W/m^2.

  • solar_zenith (numeric, optional) – Solar apparent (refraction-corrected) zenith angles in decimal degrees. Must supply solar_zenith and solar_azimuth or supply projection_ratio.

  • solar_azimuth (numeric, optional) – Solar azimuth angles in decimal degrees. Must supply solar_zenith and solar_azimuth or supply projection_ratio.

  • projection_ratio (numeric, optional) – Ratio of angle of incidence projection to solar zenith angle projection. Must supply solar_zenith and solar_azimuth or supply projection_ratio.

  • return_components (bool, default False) – Flag used to decide whether to return the calculated diffuse components or not.

Returns

  • numeric, OrderedDict, or DataFrame – Return type controlled by return_components argument. If return_components=False, sky_diffuse is returned. If return_components=True, diffuse_components is returned.

  • sky_diffuse (numeric) – The sky diffuse component of the solar radiation on a tilted surface.

  • diffuse_components (OrderedDict (array input) or DataFrame (Series input)) –

    Keys/columns are:
    • sky_diffuse: Total sky diffuse

    • isotropic

    • circumsolar

    • horizon

Notes

When supplying projection_ratio, consider constraining its values when zenith angle approaches 90 degrees or angle of incidence projection is negative. See code for details.

References

1

Loutzenhiser P.G. et. al. “Empirical validation of models to compute solar irradiance on inclined surfaces for building energy simulation” 2007, Solar Energy vol. 81. pp. 254-267

2

Hay, J.E., Davies, J.A., 1980. Calculations of the solar radiation incident on an inclined surface. In: Hay, J.E., Won, T.K. (Eds.), Proc. of First Canadian Solar Radiation Data Workshop, 59. Ministry of Supply and Services, Canada.