Skip to main content

Summary

PlantPredict calculates rear-side irradiance for PV modules using a 2D model based on Marion et al. (2017). The model assumes infinite row length, an infinite number of identical rows, and flat terrain. It discretizes the ground between rows into 100 intervals and calculates sky view factors and ground shading for each interval. Module irradiance is then computed at six evenly spaced positions across the module height by integrating contributions from sky diffuse, , ground-reflected, module-reflected, and direct beam + components over a 180° field of view. Rear-side irradiance is combined with front-side irradiance weighted by the to calculate effective .

Inputs

NameSymbolUnitsDescription
Module Tilt Angleβ\betadegreesTilt angle of module from horizontal
Module Azimuthγ\gammadegreesAzimuth angle of module surface normal, measured clockwise from North
Post Heighthposth_{post}mHeight of the module center above ground level (hub height for trackers)
Row PitchppmHorizontal distance between rows
Collector Width\ellmWidth of collector perpendicular to axis
Albedoρ\rhoGround reflectance (0–1)
Transmission Factorτ\tauFraction of direct irradiance transmitted through the module to the shaded ground below (0 = opaque, 1 = fully transparent)
DNIDNIDNIW/m²Direct normal irradiance
DHIDHIDHIW/m²Diffuse horizontal irradiance
Solar Zenith Angleθz\theta_zdegreesAngle between sun and vertical
Solar Azimuth Angleγs\gamma_sdegreessun azimuth, measured clockwise from North
Structure Shadingfstrf_{str}%Rear-side structure shading loss
Backside MismatchfMM,rearf_{MM,rear}%Rear-side irradiance mismatch loss
Bifaciality Factorϕ\phiRatio of rear-to-front efficiency (0–1)

Outputs

NameSymbolUnitsDescription
Rear-Side POA ContributionGPOA,rear,effG_{POA,rear,eff}W/m²Rear irradiance contribution to effective POA (after bifaciality, structure shading, and mismatch losses)

Detailed Description

Geometry and Coordinate System

The model uses a 2D cross-section with origin (x,y)=(0,0)(x, y) = (0, 0) at ground level below the front edge of the reference row, positive xx toward the rear and positive yy upward. The front edge of the row behind the reference row is at x=px = p; the front edge of the row in front of the reference row is at x=px = -p. All ground calculations are performed over the interval [0,p][0, p]; positions outside this interval are mapped back using periodicity. Three derived geometric quantities (all in meters) define the module profile:
  • v=sin(β)\ell_v = \ell \sin(\beta) — vertical projection of the collector width
  • h=cos(β)\ell_h = \ell \cos(\beta) — horizontal projection of the collector width
  • c=hpostv/2=hpostsin(β)/2c = h_{post} - \ell_v / 2 = h_{post} - \ell \sin(\beta) / 2 — ground clearance at the lower edge
For single-axis trackers, β\beta varies at each timestep, so v\ell_v, h\ell_h, and cc are recalculated accordingly.

Sky View Factors

The ground between x=0x = 0 and x=px = p is divided into 100 intervals of width Δ=p/100\Delta = p / 100 (m). For each interval ii, the sky view factor is calculated at the midpoint x=(i+0.5)Δx = (i + 0.5) \cdot \Delta by determining what fraction of the hemisphere above is visible sky versus obstructed by adjacent rows. All rows are treated as interior rows (rows on both sides). Six elevation angles are computed from each ground point to the edges of the three nearest rows. Each row has two edges visible from below: the top-rear edge (at height v+c\ell_v + c) and the bottom-front edge (at height cc). The angles sweep from the far side (positive x) to the near side (negative x): α1=max[arctanv+c2p+hx,arctanc2px]\alpha_1 = \max\left[\arctan\frac{\ell_v+c}{2p + \ell_h - x}, \arctan\frac{c}{2p - x}\right] α2=min[arctanv+cp+hx,arctancpx]\alpha_2 = \min\left[\arctan\frac{\ell_v+c}{p + \ell_h - x}, \arctan\frac{c}{p - x}\right] α3=max[arctanv+cp+hx,arctancpx]\alpha_3 = \max\left[\arctan\frac{\ell_v+c}{p + \ell_h - x}, \arctan\frac{c}{p - x}\right] α4=arctanv+chx\alpha_4 = \arctan\frac{\ell_v+c}{\ell_h - x} α5=arctancx\alpha_5 = \arctan\frac{c}{-x} α6=arctanv+chpx\alpha_6 = \arctan\frac{\ell_v+c}{\ell_h - p - x} where:
  • α1\alpha_1 = effective upper boundary of the row two pitches behind (whichever edge projects higher)
  • α2\alpha_2 = effective lower boundary of the adjacent row behind (whichever edge projects lower)
  • α3\alpha_3 = effective upper boundary of the adjacent row behind
  • α4\alpha_4 = top-rear edge of the reference row
  • α5\alpha_5 = bottom-front edge of the reference row
  • α6\alpha_6 = top-rear edge of the row in front
All angles are adjusted to the range [0,π][0, \pi] when negative. The max\max/min\min operations on α1\alpha_1α3\alpha_3 select the effective obstruction boundary, which may be a row’s top-rear or bottom-front edge depending on the ground point’s position. The six angles form three consecutive pairs, each defining the potential sky gap between two adjacent rows:
  • (α1,α2)(\alpha_1, \alpha_2): gap between the second row behind and the adjacent row behind
  • (α3,α4)(\alpha_3, \alpha_4): gap between the adjacent row behind and the reference row
  • (α5,α6)(\alpha_5, \alpha_6): gap between the reference row and the row in front
Within each pair, the odd-indexed angle marks the near edge of one row and the even-indexed angle marks the far edge of the next. If the gap is negative (the two rows overlap as seen from the ground point), the corresponding view factor is clamped to 0. Only the three nearest gaps are considered — gaps beyond the second row behind and beyond the row in front are neglected, as they subtend smaller solid angles and project onto the ground at increasingly oblique angles, making minor irradiance contributions. The total sky view factor Fsky[i]F_{sky}[i] for ground interval ii is the fraction of the sky hemisphere visible from that point, computed as the sum of the three gap view factors: Fsky[i]=F1+F2+F3F_{sky}[i] = F_1 + F_2 + F_3 F1=max[0,  12(cosα1cosα2)]F_1 = \max\left[0,\; \tfrac{1}{2}(\cos\alpha_1 - \cos\alpha_2)\right] F2=max[0,  12(cosα3cosα4)]F_2 = \max\left[0,\; \tfrac{1}{2}(\cos\alpha_3 - \cos\alpha_4)\right] F3=max[0,  12(cosα5cosα6)]F_3 = \max\left[0,\; \tfrac{1}{2}(\cos\alpha_5 - \cos\alpha_6)\right]

Ground Shading

The 3D sun position is projected onto the 2D cross-sectional plane as an effective θz,eff\theta_{z,eff}: tan(θz,eff)=tan(θz)cos(γγs)\tan(\theta_{z,eff}) = \tan(\theta_z) \cos(\gamma - \gamma_s) The horizontal shadow cast by a point at position (x0,y0)(x_0, y_0) falls on the ground at x0+y0tan(θz,eff)x_0 + y_0 \tan(\theta_{z,eff}). The shaded region is bounded by the shadow of the module’s bottom-front edge at (0,c)(0, c) and top-rear edge at (h,v+c)(\ell_h, \ell_v + c): xbot=ctan(θz,eff)x_{bot} = c \tan(\theta_{z,eff}) xtop=h+(v+c)tan(θz,eff)x_{top} = \ell_h + (\ell_v + c) \tan(\theta_{z,eff}) Shadow positions falling outside [0,p][0, p] wrap around using periodicity. Each of the 100 ground intervals is flagged as shaded (S[i]=1S[i] = 1) or sunlit (S[i]=0S[i] = 0) based on whether its midpoint falls within the shadow region. If the total shadow width xtopxbot=h+vtan(θz,eff)|x_{top} - x_{bot}| = |\ell_h + \ell_v \tan(\theta_{z,eff})| exceeds the row pitch pp, the ground is completely shaded and S[i]=1S[i] = 1 for all ii.

Ground Irradiance

The bifacial model always uses the Perez model internally—regardless of which transposition model is selected for the front-side calculation—because it requires the individual diffuse components. The Perez decomposition provides:
  • GisotropicG_{isotropic}: sky diffuse
  • GbeamG_{beam}, GcircumsolarG_{circumsolar}: beam and circumsolar irradiance on the horizontal surface
  • GhorizonG_{horizon}: horizon brightening
The isotropic and horizon components characterize the atmospheric radiance distribution and are independent of surface orientation. They are re-integrated per-degree with the model’s own view factors and correction in the sections below. Beam and circumsolar are applied as direct projections onto the relevant surface. Ground irradiance at each interval combines these components with the sky view factor and shading: Ggnd[i]=GisotropicFsky[i]+(Gbeam+Gcircumsolar)(1S[i]+τS[i])G_{gnd}[i] = G_{isotropic} \cdot F_{sky}[i] + (G_{beam} + G_{circumsolar}) \cdot (1 - S[i] + \tau \cdot S[i]) where τ\tau is the transmission factor representing light passing through the semi-transparent module. When sunlit (S[i]=0S[i] = 0), the ground receives the full beam and circumsolar irradiance; when shaded (S[i]=1S[i] = 1), only the fraction τ\tau transmitted through the module reaches the ground.

Rear Surface Irradiance

The rear surface is sampled at 6 evenly spaced positions across the module height, at coordinates: xj=hj+0.56,yj=c+vj+0.56x_j = \ell_h \cdot \frac{j + 0.5}{6}, \qquad y_j = c + \ell_v \cdot \frac{j + 0.5}{6} From each position j=0,1,,5j = 0, 1, \ldots, 5, irradiance is integrated over a 180° field of view (looking outward from the rear surface) using 1-degree increments. The adjacent row behind has its bottom-front edge at (p,c)(p, c) and its top-rear edge at (p+h,v+c)(p + \ell_h, \ell_v + c). The elevation angles from the position jj to these edges, rounded to the nearest integer degree, define the boundaries of three angular regions: θsky,j=round ⁣(βarctan(v+c)yj(p+h)xj)\theta_{sky,j} = \text{round}\!\left(\beta - \arctan\frac{(\ell_v + c) - y_j}{(p + \ell_h) - x_j}\right) θgnd,j=round ⁣(β+arctanyjcpxj)\theta_{gnd,j} = \text{round}\!\left(\beta + \arctan\frac{y_j - c}{p - x_j}\right) The field of view is divided into sky (0° to θsky,j\theta_{sky,j}), module behind (θsky,j\theta_{sky,j} to θgnd,j\theta_{gnd,j}), and ground (θgnd,j\theta_{gnd,j} to 180°). Five irradiance components are computed:

Isotropic sky diffuse

For each degree kk in the sky region: Gsky,j=Gisotropick=0θsky,j112(cos(k)cos(k+1))UIAM,B[k]G_{sky,j} = G_{isotropic} \sum_{k=0}^{\theta_{sky,j}-1} \frac{1}{2}(\cos(k) - \cos(k+1)) \cdot U_{IAM,B}[k] where UIAM,B[k]U_{IAM,B}[k] is the Physical IAM model evaluated at each 1-degree increment, with no anti-reflective coating and no glass absorption (α=0\alpha = 0), using n=1.526n = 1.526 as the of glass.

Horizon brightening

In the Perez model, horizon brightening is concentrated in a 6° band above the horizon. From the rear surface, this band may be partially or fully blocked by the adjacent row. The number of visible horizon degrees at position jj is: nhor,j=max ⁣(0,  round ⁣(6arctan(v+c)yj(p+h)xj))n_{hor,j} = \max\!\left(0,\; \text{round}\!\left(6 - \arctan\frac{(\ell_v + c) - y_j}{(p + \ell_h) - x_j}\right)\right) where the arctan term is the obstruction angle (in degrees) of the adjacent row above the local horizon. When this obstruction exceeds 6°, no horizon is visible and nhor,j=0n_{hor,j} = 0. The Perez model provides GhorizonG_{horizon} as a total irradiance integrated over the horizon band. To apply per-degree IAM correction, the model assumes uniform radiance within the band: dividing GhorizonG_{horizon} by the band’s view factor 12(cos(84°)cos(90°))\frac{1}{2}(\cos(84°) - \cos(90°)) yields the radiance, which is then re-integrated degree by degree with UIAM,B[k]U_{IAM,B}[k] weighting over the nhor,jn_{hor,j} visible degrees nearest the horizon: Ghor,j=Ghorizon12(cos(84°)cos(90°))k=θsky,jnhor,jθsky,j112(cos(k)cos(k+1))UIAM,B[k]G_{hor,j} = \frac{G_{horizon}}{\frac{1}{2}(\cos(84°) - \cos(90°))} \sum_{k=\theta_{sky,j}-n_{hor,j}}^{\theta_{sky,j}-1} \frac{1}{2}(\cos(k) - \cos(k+1)) \cdot U_{IAM,B}[k]

Ground-reflected

Each 1° angular band in the ground field-of-view region (θgnd,j\theta_{gnd,j} to 180°) projects onto a range of ground from position xgnd(k+1)x_{gnd}(k+1) to xgnd(k)x_{gnd}(k), where: xgnd(k)=xj+yjtan(kβ)x_{gnd}(k) = x_j + \frac{y_j}{\tan(k - \beta)} The ground irradiance for that band is the area-weighted average over the projected range: Ggnd(k)=1xgnd(k)xgnd(k+1)xgnd(k+1)xgnd(k)Ggnd(x)dx\overline{G}_{gnd}(k) = \frac{1}{x_{gnd}(k) - x_{gnd}(k+1)} \int_{x_{gnd}(k+1)}^{x_{gnd}(k)} G_{gnd}(x) \, dx where Ggnd(x)G_{gnd}(x) is the piecewise-constant ground irradiance from the 100-element array, extended periodically beyond [0,p][0, p]. The total ground-reflected irradiance at position jj, accounting for the ground albedo ρ\rho, is then: Ggnd,j=ρk=θgnd,j17912(cos(k)cos(k+1))UIAM,B[k]Ggnd(k)G_{gnd,j} = \rho \sum_{k=\theta_{gnd,j}}^{179} \frac{1}{2}(\cos(k) - \cos(k+1)) \cdot U_{IAM,B}[k] \cdot \overline{G}_{gnd}(k)

Reflected irradiance from front module surface

In the Physical IAM model, the Fresnel reflectance at incidence angle θ\theta is related to the IAM transmittance by: R(θ)=1UIAM,B(θ)(1R0)R(\theta) = 1 - U_{IAM,B}(\theta) \cdot (1 - R_0) First, reflected is computed at 6 evenly spaced positions on the front surface of the row behind. At each front position, sky, horizon, and ground-reflected irradiance are integrated using the same view factor approach as above, but weighted by the Fresnel reflectance R(θ)R(\theta) instead of UIAM,BU_{IAM,B}. Beam, circumsolar, and secondary back-surface reflections are not included. Then, from each rear position jj, the module field-of-view region (θsky,j\theta_{sky,j} to θgnd,j\theta_{gnd,j}) is integrated degree by degree. Each 1° angular band projects onto a range along the front module slope, and Grefl,front(k)\overline{G}_{refl,front}(k) is the length-weighted average of the 6 front-surface reflected values within that projected range — identical in structure to Ggnd(k)\overline{G}_{gnd}(k), but over 6 positions on the sloped module surface instead of 100 on the ground. The reflected irradiance at position jj is then: Grefl,j=k=θsky,jθgnd,j112(cos(k)cos(k+1))UIAM,B[k]Grefl,front(k)G_{refl,j} = \sum_{k=\theta_{sky,j}}^{\theta_{gnd,j}-1} \frac{1}{2}(\cos(k) - \cos(k+1)) \cdot U_{IAM,B}[k] \cdot \overline{G}_{refl,front}(k)

Direct beam and circumsolar

The Perez model is called with the rear-facing orientation (tilt 180°β180° - \beta, γ180°\gamma - 180°) to project beam and circumsolar onto the rear surface, yielding Gbeam,rearG_{beam,rear} and Gcircumsolar,rearG_{circumsolar,rear}. The on the rear surface is: cos(θinc,rear)=sin(θz)sin(β)cos(γsγ)cos(θz)cos(β)\cos(\theta_{inc,rear}) = -\sin(\theta_z)\sin(\beta)\cos(\gamma_s - \gamma) - \cos(\theta_z)\cos(\beta) If the sun is visible from the rear surface (θinc,rear<90°\theta_{inc,rear} < 90°): Gbeam,j=(Gbeam,rear+Gcircumsolar,rear)UIAM,B(θinc,rear)G_{beam,j} = (G_{beam,rear} + G_{circumsolar,rear}) \cdot U_{IAM,B}(\theta_{inc,rear}) Otherwise (θinc,rear90°\theta_{inc,rear} \geq 90°) Gbeam,j=0G_{beam,j} = 0. Inter-row shading of the rear surface by the row behind is neglected; the direct component is uniform across all 6 positions.

Structure Shading and Mismatch

The five components are summed to give the total rear irradiance at each sampled position: Grear,j=Gsky,j+Ghor,j+Grefl,j+Ggnd,j+Gbeam,jG_{rear,j} = G_{sky,j} + G_{hor,j} + G_{refl,j} + G_{gnd,j} + G_{beam,j} The average rear irradiance is the mean of the 6 values: Grear=16j=05Grear,j\overline{G}_{rear} = \frac{1}{6}\sum_{j=0}^{5} G_{rear,j} Structure shading and mismatch losses are then applied to the average: Version 9 and earlier: only structure shading is applied at this stage: GPOA,rear=Grear(1fstr)G_{POA,rear} = \overline{G}_{rear} \cdot (1 - f_{str}). Backside mismatch is applied separately downstream as a weighted factor in the DC system losses combined coefficient. Version 10 and later: both structure shading and backside mismatch are applied here: GPOA,rear=Grear(1fstr)(1fMM,rear)G_{POA,rear} = \overline{G}_{rear} \cdot (1 - f_{str}) \cdot (1 - f_{MM,rear}). Backside mismatch is no longer included in the DC system losses combined coefficient.

Effective POA Irradiance

The contribution of rear irradiance to effective POA is: GPOA,rear,eff=ϕGPOA,rearG_{POA,rear,eff} = \phi \cdot G_{POA,rear} where ϕ\phi is the bifaciality factor (ratio of rear-to-front efficiency).

User-Specified Backside POAI

If the user provides rear-side irradiance directly (bypassing the model above), the measured or externally computed value Grear,userG_{rear,user} replaces the calculated Grear\overline{G}_{rear}. The same structure shading and mismatch treatment applies: Version 9 and earlier: GPOA,rear=Grear,user(1fstr)G_{POA,rear} = G_{rear,user} \cdot (1 - f_{str}) (backside mismatch applied downstream in DC system losses) Version 10 and later: GPOA,rear=Grear,user(1fstr)(1fMM,rear)G_{POA,rear} = G_{rear,user} \cdot (1 - f_{str}) \cdot (1 - f_{MM,rear}) The bifaciality factor is then applied as above: GPOA,rear,eff=ϕGPOA,rearG_{POA,rear,eff} = \phi \cdot G_{POA,rear}.

References

  • Marion, B., MacAlpine, S., Deline, C., Asgharzadeh, A., Toor, F., Riley, D., Stein, J., & Hansen, C. (2017). A practical irradiance model for bifacial PV modules. 2017 IEEE 44th Photovoltaic Specialist Conference (PVSC), 1537–1542. DOI: 10.1109/PVSC.2017.8366263
  • Perez, R., Ineichen, P., Seals, R., Michalsky, J., & Stewart, R. (1990). Modeling daylight availability and irradiance components from direct and global irradiance. Solar Energy, 44(5), 271–289.
  • Duffie, J. A., & Beckman, W. A. (2013). Solar Engineering of Thermal Processes (4th ed.). Wiley.
  • Deline, C., Ayala Pelaez, S., MacAlpine, S., & Olalla, C. (2020). Bifacial PV system mismatch loss estimation and parameterization. 2020 47th IEEE Photovoltaic Specialists Conference (PVSC), 2281–2286.