Jump to content

Question about diffuse horizon shadings calculation


Recommended Posts


I work for a solar company in California that uses PVsyst heavily. We have created an in-house solar production model and are working on implementing a horizons shading calculation into that model. To calculate the diffuse component of horizon shading, we implemented some code that takes in a horizon profile, calculates the area under the profile using an integration, and subtracts that from the visible sky dome.

We've been trying to use PVsyst to validate our approach, but consistently get disagreement, sometimes as large as an order of magnitude. In the case where we run the same horizon through a fixed tilt system with an azimuth of 0 and a tilt of 0 in PVsyst and our model, we get errors of ~.5% and ~5%, respectively. Our python code, in a simplified form, appears below:

(scipy.integrate.quad(np.sin(theta), hrz['azimuth'].iloc[0], hrz['azimuth'].iloc[-1])[0])/(2*math.pi)

Essentially, we've generated a set of azimuths (phi) and altitudes (theta), expressed in radians, that describe our horizon profile. To get the area under the profile, we simply integrate the function sin(theta) between our first horizon azimuth (hrz['azimuth'].iloc[0]) and last (hrz['azimuth'].iloc[-1]). We then divide this area by 2 pi, half the surface area of a sphere, assuming the radii cancel each other out in this situation.

We intentionally chose a large profile. This one corresponds to a site in Colorado with a mountain to its southwest. The mountains are 11 degrees (.2 radians) in height, and so we expected to see a substantial loss.

We are worried that either our formula is off and that we are not fully understanding how PVsyst calculates far shadings. Any insight would be a great help. Thank you!


Joe Hack

Cypress Creek Renewables

Link to comment
Share on other sites

  • 2 months later...

The integral for the diffuse involves an incidence factor of each irradiance ray on the receiving surface.

I.e. each "cell" of irradiance should be multiplied by cos(i) (i = incidence angle).


- the effect depends on the plane orientation

- It cannot be approximated by surfaces on the sphere.

Link to comment
Share on other sites

  • 9 months later...

Hello M. Mermoud,

Thank you for this answer.

I looked at the horizon shading loss in my PVsyst simulations and found strange results. I used the latest version, 6.8.6.

I took a constant horizon height at 12° and I'm simulating a horizontal single axis tracker.

For north-south rows (azimut = 0), everything looks fine, horizon shading loss on diffuse begins at around 4% (relative to diffuse incoming radiation) for horizontal panels and goes upwards with the tilt angle.

When I take an azimut of -32° for the trackers though, horizon shading loss on diffuse begins at around 16%, goes down to 9% for tilts of around 30°, and then goes back up.

For an azimut of +32°, shading loss on diffuse is 6% for horizontal panels instead of 4%.

Do you also observe this strange behavior ?

Thank you in advance,


Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...