HAYDAVIES
This function computes the diffuse irradiance on a tilted surface using the Hay and Davies (1980) transposition model.
The model estimates the sky diffuse irradiance using surface orientation, sun angles, and irradiance components. Note that ground-reflected irradiance is not included in this output.
Excel Usage
=HAYDAVIES(surface_tilt, surface_azimuth, dhi, dni, dni_extra, solar_zenith, solar_azimuth)
surface_tilt(float, required): Panel tilt from the horizontal (degrees).surface_azimuth(float, required): Panel azimuth (degrees).dhi(float, required): Diffuse horizontal irradiance (W/m^2).dni(float, required): Direct normal irradiance (W/m^2).dni_extra(float, required): Extraterrestrial normal irradiance (W/m^2).solar_zenith(float, required): Solar apparent zenith angle (degrees).solar_azimuth(float, required): Solar azimuth angle (degrees).
Returns (float): The sky diffuse component (W/m^2), or an error string.
Example 1: Calculate sky diffuse for basic inputs
Inputs:
| surface_tilt | surface_azimuth | dhi | dni | dni_extra | solar_zenith | solar_azimuth |
|---|---|---|---|---|---|---|
| 30 | 180 | 100 | 800 | 1367 | 40 | 180 |
Excel formula:
=HAYDAVIES(30, 180, 100, 800, 1367, 40, 180)
Expected output:
113.934
Example 2: Hay-Davies sky diffuse for east-facing array
Inputs:
| surface_tilt | surface_azimuth | dhi | dni | dni_extra | solar_zenith | solar_azimuth |
|---|---|---|---|---|---|---|
| 20 | 90 | 120 | 650 | 1321 | 50 | 110 |
Excel formula:
=HAYDAVIES(20, 90, 120, 650, 1321, 50, 110)
Expected output:
137.217
Example 3: Hay-Davies sky diffuse for steep winter tilt
Inputs:
| surface_tilt | surface_azimuth | dhi | dni | dni_extra | solar_zenith | solar_azimuth |
|---|---|---|---|---|---|---|
| 60 | 180 | 80 | 500 | 1412 | 65 | 170 |
Excel formula:
=HAYDAVIES(60, 180, 80, 500, 1412, 65, 170)
Expected output:
104.73
Example 4: Hay-Davies sky diffuse for west-facing afternoon case
Inputs:
| surface_tilt | surface_azimuth | dhi | dni | dni_extra | solar_zenith | solar_azimuth |
|---|---|---|---|---|---|---|
| 35 | 270 | 140 | 700 | 1335 | 45 | 250 |
Excel formula:
=HAYDAVIES(35, 270, 140, 700, 1335, 45, 250)
Expected output:
160.269
Python Code
Show Code
from pvlib.irradiance import haydavies as result_func
def haydavies(surface_tilt, surface_azimuth, dhi, dni, dni_extra, solar_zenith, solar_azimuth):
"""
Determine diffuse irradiance from the sky on a tilted surface using the Hay and Davies model.
See: https://pvlib-python.readthedocs.io/en/stable/reference/generated/pvlib.irradiance.haydavies.html
This example function is provided as-is without any representation of accuracy.
Args:
surface_tilt (float): Panel tilt from the horizontal (degrees).
surface_azimuth (float): Panel azimuth (degrees).
dhi (float): Diffuse horizontal irradiance (W/m^2).
dni (float): Direct normal irradiance (W/m^2).
dni_extra (float): Extraterrestrial normal irradiance (W/m^2).
solar_zenith (float): Solar apparent zenith angle (degrees).
solar_azimuth (float): Solar azimuth angle (degrees).
Returns:
float: The sky diffuse component (W/m^2), or an error string.
"""
try:
tilt = float(surface_tilt)
azim = float(surface_azimuth)
dh = float(dhi)
dn = float(dni)
dn_e = float(dni_extra)
zen = float(solar_zenith)
s_azim = float(solar_azimuth)
res = result_func(
surface_tilt=tilt,
surface_azimuth=azim,
dhi=dh,
dni=dn,
dni_extra=dn_e,
solar_zenith=zen,
solar_azimuth=s_azim,
return_components=False
)
return float(res)
except Exception as e:
return f"Error: {str(e)}"Online Calculator
Panel tilt from the horizontal (degrees).
Panel azimuth (degrees).
Diffuse horizontal irradiance (W/m^2).
Direct normal irradiance (W/m^2).
Extraterrestrial normal irradiance (W/m^2).
Solar apparent zenith angle (degrees).
Solar azimuth angle (degrees).