Key takeaways
- In our invented instant (DNI 700, DHI 120 W/m²), POA is 799.3 W/m² against a GHI of 641.0. Beam is 659.6 of that, or 82.5%.
- Sandia’s PVPMC writes EPOA = Eb + Eg + Ed: beam, ground-reflected and sky-diffuse.
- The sky-diffuse part depends on the model you pick. At the same inputs, pvlib’s isotropic, Hay-Davies and Perez models gave 114.4, 133.7 and 148.7 W/m² of sky light, so POA ranged from 779.9 to 814.2 W/m².
- Effective irradiance is POA after optical losses. Sandia lists angle of incidence, soiling and spectral mismatch.
- Performance ratio divides by POA, not GHI. In an example month, the same energy gives a PR of 75.6% on POA and 86.7% on GHI.
To model POA for a real roof, see the best solar simulation software.
POA at a glance
POA is the light the modules face. It is the starting point for module power. It is also the denominator of performance ratio. It depends on the sun, the sky and the plane.
| Item | Detail |
|---|---|
| Formula | POA = beam + sky diffuse + ground reflected. Beam = DNI × cos(AOI), where AOI is the angle of incidence. |
| Unit | W/m² (power). Summed over time it is kWh/m² (energy). GTI is the same quantity under another name. |
| Where it matters | Yield simulation, effective-irradiance reports, sensor checks, performance ratio and guarantees. |
| Standard | IEC 61724-1:2021, clause 3.13, defines in-plane irradiance as "sum of direct, diffuse, and ground-reflected irradiance incident upon the front side of an inclined surface". |
| In software | Simulators compute it (best solar simulation software). Monitoring tools read a sensor (best solar performance analytics software). |
"Front side" matters for bifacial modules, whose rear-side light is counted separately.
How is POA built from beam, sky-diffuse and ground-reflected light?
Each part has its own source: the sun’s direct rays, the sky dome and the ground. The beam part is geometry. The sky part needs a model. The ground part needs albedo.
- Beam. DNI × cos(AOI), set to zero when the sun is behind the plane. The DNI page works the cosine through a day. The solar irradiance page gives the AOI formula.
- Sky diffuse. Light from the dome, from DHI. pvlib’s get_total_irradiance accepts seven models: isotropic, klucher, haydavies, reindl, king, perez and perez-driesse. The GHI page works the isotropic case.
- Ground reflected. pvlib’s get_ground_diffuse gives GHI × albedo × (1 − cos tilt) ÷ 2. Its default albedo is 0.25. See albedo for typical values.
The Hay-Davies model splits the sky part in two. pvlib writes it as DHI × (A × Rb + (1 − A) × (1 + cos tilt) ÷ 2). A is DNI divided by the extraterrestrial normal irradiance. Rb is cos(AOI) divided by cos(zenith). The first term is the circumsolar light near the sun. The second term is the isotropic dome.
Figure 1. In this example instant, beam supplies 82.5% of POA light, and the example 2% soiling costs nearly eight times more than IAM on the beam.
Worked example: one instant, four parts, two losses
The example is an example south-east roof face at 10:00 on a spring morning. Every number below is example except the sun position. We worked that out with pvlib for an example site (40° N, 0° E, 10 April 2026, 10:00 UTC) and rounded it.
| Input | Value |
|---|---|
| DNI, DHI | 700, 120 W/m² |
| Zenith, sun azimuth | 41.9°, 131.5° |
| Tilt, panel azimuth | 25°, 150° |
| Albedo | 0.20 |
| Extraterrestrial normal irradiance, day 100 | 1,360.8 W/m² (pvlib default method and solar constant 1,366.1 W/m²) |
GHI comes from the closure on the GHI page: 700 × cos 41.9° + 120 = 641.0 W/m². The anisotropy index A is 700 ÷ 1,360.8 = 0.514. AOI is 19.6°, so cos(AOI) is 0.942.
| Part | W/m² | Share of POA |
|---|---|---|
| Beam: 700 × 0.942 | 659.6 | 82.5% |
| Sky diffuse, isotropic part | 55.5 | 6.9% |
| Sky diffuse, circumsolar part | 78.1 | 9.8% |
| Ground reflected | 6.0 | 0.8% |
| POA (Hay-Davies) | 799.3 | 100% |
POA is 1.25 times GHI. The figures match pvlib 0.16.1 on every row. The ground part is small because the tilt is low and the sky is clear. Albedo 0.1, 0.2 and 0.4 would give 3.0, 6.0 and 12.0 W/m² here, at most 1.5% of POA.
The sky model changes the answer. We ran the same inputs through three pvlib models.
| Sky model | Sky diffuse (W/m²) | POA (W/m²) |
|---|---|---|
| Isotropic | 114.4 | 779.9 |
| Hay-Davies | 133.7 | 799.3 |
| Perez (allsitescomposite1990) | 148.7 | 814.2 |
The spread is 4.4% at one instant. PVsyst’s help says Perez typically gives yearly averages 0% to 2% above Hay. That depends on climate and orientation.
Next come the losses that tools apply before module power. For beam IAM we used pvlib’s ASHRAE model. It is IAM = 1 − b × (sec AOI − 1), with its default b of 0.05. At 19.6° the factor is 0.997, which removes 2.0 W/m². We applied it to the beam only to keep the sum short. HelioScope’s CSV also gives effective diffuse and reflected columns, so some tools apply IAM to every part.
This example’s 2% soiling applies to every part and removes 15.9 W/m². Effective irradiance is 781.3 W/m², which is 2.2% below POA. The IAM and soiling pages cover those models.
A plane facing away gets far less. With the panel azimuth changed to 330° and nothing else, POA is 380.1 W/m², or 0.59 of GHI.
POA vs GHI
GHI is measured on a flat horizontal surface. POA is on the tilted module surface. POA can be higher or lower.
| Case (example) | GHI (W/m²) | POA (W/m²) | POA / GHI |
|---|---|---|---|
| 25° tilt facing 150° | 641.0 | 799.3 | 1.25 |
| 25° tilt facing 330° | 641.0 | 380.1 | 0.59 |
How is POA measured?
Mount a sensor in the array plane. Sandia’s PVPMC says you can measure POA directly with a pyranometer. Reference cells or modules mounted in the array’s orientation also work.
The two sensor types differ on reflection. Sandia says a matched reference cell probably has the same reflective properties as the array. So reflective losses are "inherently included in the measured value". A second IAM step would count them twice.
An NREL conference paper (November 2016) describes two SAM options for measured POA. The reference-cell option assumes the sensor sees the same AOI effects as the cells. The pyranometer option assumes it sees none. For most systems the paper reports a smaller RMSE with measured POA than with irradiance components. It cites earlier work that puts transposition error between a few percent and upwards of ten percent. The text gives no single error figure. See pyranometer and irradiance sensor.
Why is POA the denominator of performance ratio?
PR compares energy with what the light on the modules could give. That light is POA. Horizontal light would blend the tilt gain into a number meant to show system quality.
Hukseflux writes PR = Yf ÷ Yr = (Eout ÷ P0) ÷ (Hi ÷ Gi,ref). It cites IEC 61724-1. The page defines Gi as in-plane irradiance, also called POA. PVsyst’s PR page divides energy by GlobInc, "incident irradiance at the simulation time step", times nominal STC power. The page lists optical losses (shadings, IAM, soiling) among the losses PR captures. They sit in the energy, not in the denominator. For bifacial systems, PVsyst adds a rear-side term to the denominator. See bifacial module.
Consider an example month for a 10 kW array. The system made 1,300 kWh AC. The month had 172 kWh/m² POA, 150 kWh/m² GHI and an example 4% IAM and soiling loss.
| Denominator | kWh/m² | PR |
|---|---|---|
| GHI (wrong plane) | 150.0 | 86.7% |
| POA | 172.0 | 75.6% |
| POA after IAM and soiling | 165.1 | 78.7% |
Only the POA row follows the usual definition. The GHI row flatters the system by 11 points. The last row hides optical losses that PR is meant to show. The performance ratio page covers the formula and temperature correction.
Calculator: POA parts and PR denominators
Part A splits POA into its parts for Hay-Davies or isotropic sky. It then applies beam IAM and soiling. Part B repeats the PR table. All presets are example.
How solar software handles POA
pvlib, HelioScope and SAM report POA by name, while PVsyst and PV*SOL describe the same step in other words. The table asks whether each page splits POA into parts, names a sky model and says where IAM and soiling apply.
| Software | Reports POA? | What the page says | Page read |
|---|---|---|---|
| pvlib python | Yes | get_total_irradiance returns poa_global, poa_direct, poa_diffuse, poa_sky_diffuse and poa_ground_diffuse. Default sky model is isotropic. | pvlib docs "latest" (0.16.2.dev), October 2026. Our example ran on 0.16.1. |
| HelioScope | Yes | The hourly CSV has poa_direct, poa_diffuse and poa_reflected, then shaded_, effective_ (after shading and IAM) and soiled_irradiance columns, in W/m². | Hourly Production Report CSV (no date shown), October 2026 |
| PVsyst | Partly | The PR page divides by GlobInc, "incident irradiance at the simulation time step". It never uses "plane of array". | PR and transposition pages (no date shown), October 2026 |
| SAM | Yes | The PVWatts module outputs poa, described as "Plane of array irradiance" in W/m2, and poa_monthly, in kWh/m2. | NREL PySAM 3.0.1 docs, Pvwattsv1 module, October 2026. NREL/CP-6A20-66465, November 2016 |
| PV*SOL premium | Partly | The calculation page lists "Calculation of irradiation on the inclined plane". It does not use the words "plane of array" or "POA". | PV*SOL help, irradiation page (no date, footer 2026), October 2026 |
Partly: the page describes the step in other words. The PVsyst transposition page says transposition converts horizontal data to a tilted plane. An NREL paper also describes a SAM option for measured POA.
For tools that report POA parts and name the sky model, see the best solar simulation software.
Common mistakes with POA
FAQs
Is POA the same as GTI?
Yes, for a fixed array. GTI (global tilted irradiance) and POA both mean total irradiance on the tilted module surface, under different names. On a tracker the plane tilts through the day, so the value is for the tracked plane at each step. See GTI for the naming across datasets.
Can POA be lower than GHI?
Yes. A plane facing away from the sun can get far less light. In our example case, a 330° azimuth gave 380.1 W/m² against a GHI of 641.0 W/m².
Does POA include shading, IAM and soiling?
Not by the usual definition. In HelioScope’s CSV the poa_ columns come first, then shaded_, effective_ (shading and IAM) and soiled_irradiance. A measured POA from a matched reference cell includes reflection effects already.
Which sky-diffuse model should I use?
Start with your tool’s default, and keep the same model for every design you compare. pvlib’s get_total_irradiance defaults to the isotropic model. The worked example shows how far 3 models differ at one instant. Whichever you use, name it beside every POA figure.
Related terms
- GHI: sunlight on a flat horizontal surface, and the closure equation.
- Albedo: the ground reflectance that sets the ground-reflected part.
- Performance ratio: AC energy divided by the energy POA light would give at nameplate.
Next step: model your roof’s POA with the best solar simulation software. To compare it with a sensor, use the best solar performance analytics software.
Sources
- Sandia PVPMC, Plane of Array (POA) Irradiance (page metadata 26 July 2023, checked October 2026).
- Sandia PVPMC, Effective Irradiance (page metadata 19 February 2024, checked October 2026).
- IEC 61724-1:2021, clause 3.13 (wording read on a publisher’s sample copy and confirmed against Hukseflux’s citation of clause 3.13, checked October 2026).
- NREL PySAM 3.0.1, Pvwattsv1 module (checked October 2026).
- Sandia PVPMC, Calculating POA Irradiance (page metadata 19 September 2022, checked October 2026).
- pvlib documentation, "latest" (0.16.2.dev): get_total_irradiance, haydavies, get_ground_diffuse, iam.ashrae and get_extra_radiation (checked October 2026). Numbers were run on pvlib 0.16.1.
- Hukseflux, how to calculate PV performance ratio and performance index (cites IEC 61724-1:2021, no article date shown, checked October 2026).
- PVsyst help, performance ratio and transposition model (no date shown, checked October 2026).
- HelioScope help, Hourly Production Report CSV (no date shown, checked October 2026).
- NREL, Using Measured Plane-of-Array Data Directly in Photovoltaic Modeling, NREL/CP-6A20-66465 (November 2016, checked October 2026).
- PV*SOL help, irradiation (no date, footer 2026, checked October 2026).
- Numbers: a model run with example inputs.
Last updated 30 October 2026. Next scheduled review: 30 January 2027.