Bifacial Modules

*There is a general shortage of utility-scale field validation of bifacial prediction models in industry and this model is no different. Unlike the core monofacial PlantPredict models, this new bifacial performance model has not been validated and benchmarked at scale against measured data.

2D View Factor Backside Irradiance Model for Bifacial Modules

This function derives backside effective irradiance: …using the 2D view factor model developed by Bill Marion, et al. at NREL (v0.1.3 code available on github at Some modifications were made to be consistent with PlantPredict’s existing internal algorithms (i.e. use of the same implementation of the solar position and Perez tilt models, described in earlier sections). Simple calculations are also performed to make PlantPredict inputs consistent with the original function inputs (i.e. post height vs. ground clearance).

A number of defaults are also assumed at this time to simplify the calculation and integration as indicated below.

  • The row type is set to ‘interior’, indicating that the calculation does not take first/last row differences into account at this time. This default, along with the simplifications inherent to the 2D approach (i.e. no edge effects), make this algorithm most applicable for utility scale calculations.
  • The cellRows input indicates the number of horizontal calculation points along the module, which is defaulted in this implementation to 6. In the future, this feature could enable a more detailed backside mismatch calculation.
  • PVfrontsurface and PVbacksurface indicate the physical characteristics of the front and back surfaces of the module for reflection/refraction calculations for the different components of irradiance. The current implementation defaults to ‘glass’, which assumes an index of refraction of 1.526.
  • The 1-degree hemispherical segment AOI correction factor array is calculated using the method referenced in Marion 2017, with an index of refraction of 1.526 and the air-glass model (as provided in the github code). Future improvements may integrate the IAM response from the module file for more precise corrections.



Defaulted Inputs






Backside Irradiance Calculation

  1. Calculate sky configuration factors (CF_sky) for points on the ground from the leading edge of one row of panels to the leading edge of the next row behind (divided into 100 segments) and classify each segment as shaded/unshaded. This sky configuration factor represents the fraction of the isotropic diffuse sky radiation (unobstructed) that is present on the ground when partially obstructed by the rows of PV panels. Note that these sky configuration factors are only calculated once for a fixed tilt system; for a tracking system, these configuration factors must be calculated for each time step as the module tilt angles change. [applicable references from github code: getSkyConfigurationFactors, getGroundShadeFactors]
  2. Determine irradiance received by the ground (G_T,ground) by summing over the 100 segments. Add the diffuse sky component multiplied by sky configuration factors. If unshaded, add the beam and circumsolar component. If shaded, add the beam and circumsolar components transmitted through the module. [applicable references from github code: perezComp and loop]
  3. Calculate the irradiance received by the backside of the PV module by summing the irradiance from the sky, the irradiance reflected from the ground, the irradiance reflected from the front surface of the row behind, and the irradiance from the sun and circumsolar region of the sky (AOI<90 degrees).

The backside irradiance diffuse component (BSIdif) is summed by dividing the field of view into 180 one-degree segments and summing the product of each segment’s view factor (CF), AOI correction (AOIcorr), and the value of the source’s irradiance (I) – sky, horizon, ground-reflected, or PV module-reflected:


The backside irradiance direct component (BSIdir) is added:

Summing the diffuse and direct components of the backside irradiance gives the final result:

[applicable references from github code: getFrontSurfaceIrradiances, getBackSurfaceIrradiances]


Bifacial Loss Terms

The backside irradiance calculated above is reduced by the bifaciality factor of the module and the structure shading loss. It is then added to the effective front side irradiance and calculations proceed through the simulation as normal. The backside mismatch is subtracted following regular mismatch loss, weighted by the backside effective irradiance/frontside effective irradiance.



Marion B., et al. “A practical irradiance model for bifacial PV modules”, 44th IEEE Photovoltaic Specialist Conference, 2017. Washington, DC. Online.

Marion B., “Numerical method for angle-of-incidence correction factors for diffuse radiation incident photovoltaic modules”, Solar Energy 147: 344–348, 2017.

PVLib v0.1.3. Accessed 2018 on github at