Skip to main content

Summary

Ground-reflected shading accounts for the reduction in ground-reflected irradiance reaching a module due to neighboring array rows blocking portions of the ground plane. Unlike sky diffuse shading, this calculation includes effects, since ground reflection arrives at oblique angles. This model uses a 2D representation of the PV array, analyzing geometry in the plane perpendicular to the row axis.

Inputs

NameSymbolUnitsDescription
Row PitchppmHorizontal distance between tracker rotation axes
Collector Width\ellmTracker bay width perpendicular to rotation axis
Module Tilt Angleβ\betadegreesTilt angle of module from horizontal
Module Azimuthγ\gammadegreesAzimuth angle of module surface normal, measured clockwise from North
Solar Zenith Angleθz\theta_zdegreesAngle between sun and vertical
Solar Azimuthγs\gamma_sdegreessun azimuth, measured clockwise from North
Albedoρ\rhoGround reflectance
IAM Parameterb0b_0ASHRAE IAM coefficient

Outputs

NameSymbolUnitsDescription
Ground Diffuse Shading FactorUshd,GdU_{shd,Gd}Shading factor for ground-reflected irradiance from diffuse-illuminated ground (0-1)
Ground Direct Shading FactorUshd,GbU_{shd,Gb}Shading factor for ground-reflected irradiance from sunlit ground (0-1)
Combined Ground Shading FactorUshd,GU_{shd,G}Combined shading factor for all ground-reflected irradiance (0-1)

Detailed Description

Ground-reflected irradiance reaching the front of the module depends on which portions of the ground between rows are visible from the module surface and whether those portions are sunlit or shaded. The model separates this into two components:
  • Sunlit ground: Receives direct and
  • Shaded ground: Receives only diffuse irradiance
The model uses numerical integration across the row spacing to calculate what fraction of each ground type is visible from the module.

Step 1: Define Integration Geometry

The algorithm integrates over the ground strip between rows, from x1x_1 to x2x_2. Using a coordinate system centered at the module’s rotation axis:
  • x1=px_1 = -p: Adjacent row’s rotation axis (integration start)
  • x2=k/tan(β)x_2 = -k / \tan(\beta): Limit of module’s downward field of view, where the assumed module center height is k=2sin(45°)+1k = \frac{\ell}{2} \sin(45°) + 1 m (1 meter ground clearance, 45° max tilt)
Using x1=px_1 = -p is a simplification—the exact geometric view angle would extend beyond the adjacent row. This conservative approximation slightly underestimates ground-reflected irradiance.

Step 2: Calculate Shadow Boundary

The shadow boundary ss marks where direct beam irradiance begins on the ground. Beyond ss, the ground is sunlit; before ss, the ground is shaded by the adjacent row. Project the sun into the cross-axis plane: The shadow calculation is performed in 2D, looking along the row axis (tracker or fixed-tilt). The sun’s position in 3D (zenith θz\theta_z, azimuth γs\gamma_s) must be projected onto this cross-axis plane. The angle between the sun’s and the row axis is (γsγ)(\gamma_s - \gamma). The effective solar in the cross-axis plane is: tan(θz,eff)=tan(θz)cos(γsγ)\tan(\theta_{z,eff}) = \tan(\theta_z) \cdot |\cos(\gamma_s - \gamma)| The shadow cast by a vertical object of height hh extends horizontally in the cross-axis direction by: Lshadow=htan(θz,eff)=htan(θz)cos(γsγ)L_{shadow} = h \cdot \tan(\theta_{z,eff}) = h \cdot \tan(\theta_z) \cdot |\cos(\gamma_s - \gamma)| Locate the shadow-casting edge: The top edge of the adjacent front row casts the shadow boundary. This edge is located at:
  • Horizontal position: xadj,top=p+2cos(β)x_{adj,top} = -p + \frac{\ell}{2} \cos(\beta)
  • Height above ground: htop=k+2sin(β)h_{top} = k + \frac{\ell}{2} \sin(\beta)
Shadow boundary position: The shadow boundary is located at the shadow-casting edge plus the projected shadow length: s=xadj,top+Lshadow=(p+2cos(β))+(k+2sin(β))tan(θz)cos(γsγ)s = x_{adj,top} + L_{shadow} = \left( -p + \frac{\ell}{2} \cos(\beta) \right) + \left( k + \frac{\ell}{2} \sin(\beta) \right) \tan(\theta_z) |\cos(\gamma_s - \gamma)| Rearranging: s=(k+2sin(β))tan(θz)cos(γsγ)p+2cos(β)s = \left( k + \frac{\ell}{2} \sin(\beta) \right) \tan(\theta_z) |\cos(\gamma_s - \gamma)| - p + \frac{\ell}{2} \cos(\beta) The shadow boundary is clamped to the integration limits: if s<x1s < x_1, all visible ground is sunlit; if s>x2s > x_2, all visible ground is shaded.

Step 3: Calculate Sky View Factor

The sky view factor at ground position xx is the angular extent of sky visible from that point, bounded by the current row (above) and the adjacent row (in front): fsky(x)=σadj,top(x)σtop(x)f_{sky}(x) = \sigma_{adj,top}(x) - \sigma_{top}(x) The angle to the top edge of the current row is: σtop(x)=atan(htopxtopx)\sigma_{top}(x) = \text{atan}\left( \frac{h_{top}}{x_{top} - x} \right) The angle to the top edge of the adjacent row is: σadj,top(x)=atan(htopxadj,topx)\sigma_{adj,top}(x) = \text{atan}\left( \frac{h_{top}}{x_{adj,top} - x} \right) where xtop=2cos(β)x_{top} = \frac{\ell}{2} \cos(\beta) is the horizontal position of the current row’s top edge and xadj,top=p+2cos(β)=xtoppx_{adj,top} = -p + \frac{\ell}{2} \cos(\beta) = x_{top} - p is the horizontal position of the adjacent row’s top edge.

Step 4: Calculate IAM Factor

The incidence angle for light traveling from ground position xx to the module center, measured from the module surface normal, is: θinc(x)=π2+atan(kx)β\theta_{inc}(x) = \frac{\pi}{2} + \text{atan}\left( \frac{k}{|x|} \right) - \beta The ASHRAE IAM factor is then: fIAM(x)=1b0(1cos(θinc)1)f_{IAM}(x) = 1 - b_0 \left( \frac{1}{\cos(\theta_{inc})} - 1 \right) with fIAM=0f_{IAM} = 0 when θinc>87°\theta_{inc} > 87°.

Step 5: Integrate Shading Factors

The algorithm divides the ground between rows into 100 segments and integrates to calculate: Ground diffuse shading factor — Accounts for sky view factor and IAM effects on diffuse-illuminated ground, integrated over the entire ground strip: Ushd,Gd=1x2x1x1x2fsky(x)fIAM(x)dxU_{shd,Gd} = \frac{1}{|x_2 - x_1|} \int_{x_1}^{x_2} f_{sky}(x) \cdot f_{IAM}(x) \, dx Ground direct shading factor — Accounts for IAM effects on sunlit ground, integrated from the shadow boundary ss to the field-of-view limit: Ushd,Gb=1x2x1sx2fIAM(x)dxU_{shd,Gb} = \frac{1}{|x_2 - x_1|} \int_{s}^{x_2} f_{IAM}(x) \, dx Diffuse irradiance originates from the entire sky hemisphere (extended source), so fsky(x)f_{sky}(x) is needed to determine what portion of the sky each ground position can see. Direct beam irradiance comes from a single direction (point source), so we only need to determine if ground is sunlit (starting integration at ss) and apply the IAM correction.

Step 6: Combine Ground Shading Factors

The two ground shading factors are applied separately to the diffuse () and direct () components of horizontal irradiance before transposition: GH,eff=Ushd,GdDHI+Ushd,GbDNIcos(θz)G_{H,eff} = U_{shd,Gd} \cdot \text{DHI} + U_{shd,Gb} \cdot \text{DNI} \cdot \cos(\theta_z) This effective horizontal irradiance is then transposed to the tilted plane using the standard ground-reflected formula with ρ\rho: Ggnd,POA=ρGH,eff1cos(β)2G_{gnd,POA} = \rho \cdot G_{H,eff} \cdot \frac{1 - \cos(\beta)}{2} A combined ground shading factor Ushd,GU_{shd,G} is back-calculated for reporting: Ushd,G=Ggnd,POAGgnd,POA,unshadedU_{shd,G} = \frac{G_{gnd,POA}}{G_{gnd,POA,unshaded}} where Ggnd,POA,unshaded=ρGHI1cos(β)2G_{gnd,POA,unshaded} = \rho \cdot \text{GHI} \cdot \frac{1 - \cos(\beta)}{2} is the ground-reflected irradiance without shading effects. Here is the total horizontal irradiance and refers to plane-of-array irradiance on the tilted module surface. Substituting the definitions of Ggnd,POAG_{gnd,POA} and GH,effG_{H,eff}: Ushd,G=Ushd,GdDHI+Ushd,GbDNIcos(θz)GHIU_{shd,G} = \frac{U_{shd,Gd} \cdot \text{DHI} + U_{shd,Gb} \cdot \text{DNI} \cdot \cos(\theta_z)}{\text{GHI}} This combined factor is what users see in output reports and represents the net effect of both shaded and sunlit ground contributions.