Key takeaways
- Sandia’s PVPMC defines DHI as irradiance on a horizontal surface "scattered or diffused by the atmosphere". It "does not come from the beam of the sun". A shaded pyranometer or a shadow band reads it.
- The Erbs model in pvlib sets DHI = diffuse fraction × GHI. The fraction falls from 1.0 at clearness index 0 to 0.165 above 0.8.
- In a Miami typical-year file bundled with pvlib, DHI is 45.2% of annual GHI (809.5 of 1,792.6 kWh/m²). Erbs runs 2.3% above the file’s DHI.
- Shade removes beam light, not sky light. In our example, a 25° plane with its beam blocked keeps 98% of its light at GHI 150 and 12% at GHI 750.
If your weather file has only GHI, the simulator splits it into DHI. To compare how tools handle that, see the best solar simulation software. For shade losses, see the best solar shading analysis software.
DHI at a glance
DHI is the sky part of sunlight on a level surface. The beam is left out.
| Item | Detail |
|---|---|
| Formula | In decomposition models, DHI = diffuse fraction × GHI (pvlib’s erbs function). The closure with DNI is on the GHI page. |
| Unit and range | W/m². The diffuse fraction (DHI ÷ GHI) runs from 0 to about 1. |
| Where it matters | Sky-diffuse transposition, shaded planes, bifacial rear light and weather-file checks. |
| Standard or rule | BSRN (status 1 April 2017) lists diffuse radiation as obligatory and recommends a shading ball, not a band. |
| In software | pvlib’s erbs returns DHI. HelioScope needs a DHI column. PVsyst estimates DHI when it is not measured. |
Why DHI matters for installers
A shadow that blocks only the beam does not remove DHI. It sets how much a shaded, steep or bifacial surface still receives. Every sky-diffuse model needs it.
A file with GHI only forces a model to split it. The split changes the answer. PVsyst’s help says: "To compute shading losses, global irradiance must be decomposed into diffuse and direct components." See shading analysis and the best solar shading analysis software.
Bifacial rear sides collect sky light too. Our bifacial modelling page records IEA PVPS Task 13 (April 2021). It says gain rises with albedo, diffuse fraction, array height, row spacing and module gaps. See bifacial module and albedo.
What decides the diffuse share of GHI?
The clearness index, kt. It is GHI divided by the extraterrestrial irradiance on a horizontal plane. It is low when the atmosphere passes little light, as under thick cloud.
The Erbs model turns kt into a diffuse fraction (DF). The pvlib docs give DHI = DF × GHI. As pvlib’s own next step, DNI = (GHI − DHI) ÷ cos(Z). They cite Erbs, Klein and Duffie (1982). The pieces below are as printed in the pvlib 0.16.1 source.
- kt = GHI ÷ (E0 × cos Z). E0 is the extraterrestrial normal irradiance. pvlib floors cos Z at 0.065 and caps kt at 1.
- DF = 1 − 0.09 kt, when kt is 0.22 or less.
- DF = 0.9511 − 0.1604 kt + 4.388 kt² − 16.638 kt³ + 12.336 kt⁴, when kt is above 0.22 and up to 0.8.
- DF = 0.165, when kt is above 0.8.
Figure 1 plots the curve against hourly values from a Miami typical-year file.

Figure 1. The Erbs diffuse fraction falls from 1.0 to 0.165 as kt rises. Hourly values in a Miami typical-year file follow it with a mean gap of 0.098.
Table 1. Diffuse fraction by clearness index in the Miami typical-year file (pvlib’s bundled TMY2, WBAN 12839).
| kt range | Hours | Share of GHI energy | DHI ÷ GHI in file | DHI ÷ GHI from Erbs |
|---|---|---|---|---|
| 0 to 0.2 | 147 | 1% | 1.001 | 0.986 |
| 0.2 to 0.4 | 775 | 10% | 0.867 | 0.919 |
| 0.4 to 0.6 | 1,458 | 33% | 0.559 | 0.612 |
| 0.6 to 0.8 | 1,431 | 56% | 0.296 | 0.273 |
| 0.8 to 1 | 5 | under 1% | 0.204 | 0.165 |
The table counts 3,816 hours with zenith below 80° and GHI above 20 W/m². The 45.2% annual share above uses all 8,760 hours. Monthly shares in that file run from 37.1% (February) to 53.3% (August).
Fractions are energy-weighted. A value above 1.000 means DHI slightly exceeds GHI in that range. Erbs runs above the file at kt 0.2 to 0.6 and below it elsewhere. Hours with kt 0.2 to 0.6 supply 61% of the file’s DHI and carry 43% of its GHI.
The file’s DHI is a typical-year value. So the 0.098 mean gap in diffuse fraction compares a model with a file value, and it is not a validation.
How is DHI measured?
A pyranometer measures DHI when its sensor is kept in the shade of the sun’s beam. A ball or disc on a sun tracker is the most accurate option. A fixed shadow band or ring needs no tracker but needs a correction.
Table 2. Four routes to a DHI number.
| Route | How it works |
|---|---|
| Ball or disc on a tracker | A shade follows the sun and covers only the sensor. |
| Shadow band or ring | A band or ring shades the sensor all day, or rotates over it. |
| Fixed photodiode array | A shadow mask keeps at least one photodiode fully shaded. |
| Derived or modelled | Subtract the beam from GHI, or estimate DHI from GHI with a model. |
The pages say this about each route.
- Ball or disc on a tracker: Sandia: the ball or disc "only removes the 5° cone around the sun" and "must utilize a tracker". Hukseflux (note V2505) calls a tracker "the most accurate method available" but says it "introduces significant acquisition and O&M costs".
- Shadow band or ring: Sandia: a horizontal band needs no tracker, a vertical band needs a horizontal tracker. Bands are "generally less accurate as they remove some of the diffuse light". Data "should be measured and corrected" by a location- and time-dependent factor. Hukseflux: a ring must be aligned to solar azimuth and zenith and has "relatively low acquisition costs". A rotating band has "increased acquisition costs and decreased accuracy".
- Fixed photodiode array: Hukseflux (note V2505): no moving parts. It rates this route "+" for accuracy, against "+++" for a tracker.
- Derived or modelled: Hukseflux: a shaded sensor allows "cross-checking using the equation for GHI". pvlib’s gallery compares DISC, DIRINT, Erbs and Boland. It warns that TMY3 DNI and DHI are themselves model outputs.
The Baseline Surface Radiation Network (BSRN) requirements overview (status 1 April 2017) makes diffuse radiation obligatory, with one-minute averages. "For DIF measurements pyranometers should be used with a solar tracker and a shading ball (not a shading ring or band)," it says.
Sandia counts light inside the 5° cone around the sun as beam. It is not in DHI. The circumsolar term in sky-diffuse models is a separate modelling step (see below).
The Hukx library summarises de Simón-Martín et al. (2016, Solar Energy 139). That study compared four correction methods for shaded-band data and found the LeBaron method best. See the pyranometer page for the sensor itself and the DNI page for the pyrheliometer route.
Worked example: one decomposition, five skies
The same sun position can give very different DHI. The split depends on how much light gets through.
All inputs are example: day 172 (extraterrestrial normal irradiance 1,321.6 W/m²), zenith 50°, GHI from 150 to 750 W/m². The plane tilts 25° and faces the sun’s azimuth. Albedo is 0.20 and the sky is isotropic. DHI and DNI come from the Erbs steps above.
Table 3. Erbs split and plane light for five example hours (irradiance in W/m²).
| GHI | kt / DF | DHI / DNI | Plane total | Left if beam blocked |
|---|---|---|---|---|
| 150 | 0.177 / 0.984 | 147.6 / 3.7 | 145.5 | 97.7% |
| 300 | 0.353 / 0.901 | 270.2 / 46.3 | 302.4 | 86.1% |
| 450 | 0.530 / 0.596 | 268.1 / 283.1 | 516.3 | 50.3% |
| 600 | 0.706 / 0.234 | 140.7 / 714.6 | 787.3 | 17.7% |
| 750 | 0.883 / 0.165 | 123.8 / 974.3 | 1,008.0 | 12.4% |
DHI is not highest in the dullest hour. It is 270.2 at GHI 300 and 268.1 at GHI 450, against 147.6 at GHI 150. At GHI 750 the beam supplies most of the plane light. So a shadow removes at least 87% of it.
The last column is an upper bound. It assumes an obstruction removes only the beam, but a real one also hides some sky. The isotropic formula is on the solar irradiance page, and the component split is on the plane-of-array page.
Calculator: DHI and the light left in shade
Enter GHI, zenith and day of year. You get kt, the Erbs DHI and DNI, plane light, and the share left when the beam is blocked. You can type a measured DHI instead. Presets are the example hours in Table 3.
Which sky-diffuse models need DHI?
pvlib’s get_sky_diffuse takes dhi, dni and ghi for every model, and lists seven models with isotropic as the default. Every one of them needs DHI.
Sandia’s PVPMC splits sky diffuse light into three parts. The isotropic part is "the uniform irradiance from the sky dome". The others are a circumsolar part, from forward scattering near the sun, and horizon brightening. Use tilt angle and a trusted dataset such as NSRDB to keep the inputs consistent.
How solar software handles DHI
All four tools we read in October 2026 use DHI: pvlib, HelioScope and PVsyst document it, and PV*SOL estimates it from GHI.
Table 4. Documented DHI use in four tools.
| Software | Documented DHI use |
|---|---|
| pvlib python | Yes |
| HelioScope | Yes |
| PVsyst | Yes |
| PV*SOL premium | Yes |
Yes: the page we cite documents DHI use.
How each tool uses DHI, with notes:
- pvlib python: erbs returns dhi, dni and kt. get_sky_diffuse requires dhi. Open-source library, not a design tool. pvlib docs "latest" and 0.16.1 source.
- HelioScope: A weather file needs GHI (column E) and DHI (column K) as required standard values. DNI (column H) is optional. Help page "Error Parsing Weather File", no date shown.
- PVsyst: When diffuse is not measured, "it should be estimated". Custom imports use ENGERER2. Erbs was used alone until version 8.1 and was replaced for hourly runs from 8.1.6. Help page "Diffuse Irradiance model", no date shown.
- PV*SOL premium: "The global radiation on the horizontal GHI is divided into the direct and the diffuse components." Hofmann is the default model and Erbs is listed. DHI is estimated from GHI. Help page "diffuse irradiation", no date shown. No DHI input documented.
The best solar simulation software list ranks the tools whose sky models need DHI.
Common mistakes with DHI
FAQs
Can DHI be estimated from GHI alone?
Yes, with a decomposition model. Erbs and Boland return DHI directly. DISC and DIRINT return DNI, and DHI follows from the closure on the GHI page. The answer is an estimate, so label the model beside any DHI you report.
Why does a shadow band read low?
The band also blocks part of the diffuse sky, not only the beam. Sandia says the data need a location- and time-dependent correction.
Is DHI the same as sky diffuse light on a tilted panel?
No. DHI is on a level surface. A model such as isotropic or Perez converts it to the panel plane. See plane-of-array irradiance and GTI.
Which datasets carry DHI?
The NSRDB does. NREL’s developer page says it includes GHI, DNI and DHI, and one product has 4 km and 30-minute steps. Check each file’s columns. See weather and solar resource data and TMY.
Related terms
- GHI: all sunlight on a level surface, and the closure equation.
- DNI: beam light measured facing the sun.
- pvlib: the open-source library whose Erbs function this page uses.
Next step: when a shaded array underperforms, test its sky-diffuse inputs in the best solar simulation software. To review the obstruction, use the best solar shading analysis software.
Sources
NREL (the National Renewable Energy Laboratory) was renamed the National Laboratory of the Rockies (NLR) in December 2025. Its nrel.gov pages retired in May 2026. This page links to the current nlr.gov addresses and keeps the name NREL where it describes the NSRDB’s long-standing programme.
- Sandia PVPMC, Diffuse Horizontal Irradiance (page metadata 9 November 2022, approval tag SAND2023-00205W, checked 30 October 2026).
- Sandia PVPMC, POA sky diffuse (page metadata 13 November 2022, checked October 2026).
- Hukseflux, note: what is a diffusometer (V2505, checked October 2026).
- Hukx, correction factor for using shadowed pyranometers (no date shown, checked October 2026).
- BSRN station requirements overview (status 1 April 2017, checked October 2026).
- pvlib documentation, "latest": erbs and get_sky_diffuse. The diffuse fraction example (stable). Coefficients and numbers: pvlib 0.16.1 source, irradiance.erbs (checked October 2026).
- PVsyst help, Diffuse Irradiance model and Irradiation models (no dates shown, checked 30 October 2026).
- HelioScope help, Error Parsing Weather File and PV*SOL help, diffuse irradiation (no dates shown, checked October 2026).
- NREL developer network, NSRDB (no date shown, checked October 2026).
Numbers: model script with example inputs and the Miami file bundled with pvlib 0.16.1. Last updated 30 October 2026. Next scheduled review: 30 January 2027.