Question about Perez model when apparent zenith >90 degrees

95 views
Skip to first unread message

Mark Campanelli

unread,
Aug 12, 2023, 3:03:39 PM8/12/23
to pvlib-python
Greetings,

  I have a modeling workflow that breaks up broadband measured POA irradiance into components as follows--
1) Converts measured broadband POA irradiance (POA_meas) to GHI, DNI, and DHI components using pvlib.irradiance.gti_dirint.
2) Detects NaN values in the above output (typically near sunrise/sunset) and, as a workaround approximation, for these timestamps sets DNI zero and GHI = DHI = POA_meas.
3) Computes the components of POA irradiance using pvlib.irradiance.perez (with return_components=True) and pvlib.irradiance.get_ground_diffuse.

  The issue is that when the apparent zenith is >90, the pvlib.irradiance.perez does not "back compute" the sky diffuse anywhere close to the measured POA irradiance. Instead, it is zero. (The remaining ground diffuse component is much less than total POA irradiance.) I have not see this discrepancy when the apparent zenith is <=90.

  I'm not sure if I am doing something wrong, expecting too much from the Perez model, or if it could be a bug in pvlib.irradiance.perez.

-Mark Campanelli

Brighton Mabasa

unread,
Aug 12, 2023, 4:04:18 PM8/12/23
to Mark Campanelli, pvlib-python
Greetings, 
Filter out apparent zenith angle greater than 85 degrees.
Regards,

--
You received this message because you are subscribed to the Google Groups "pvlib-python" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pvlib-python...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pvlib-python/6731ce06-034b-4ef3-8ae2-53a77d7839dbn%40googlegroups.com.

Anton Driesse

unread,
Aug 12, 2023, 6:20:41 PM8/12/23
to pvlib-...@googlegroups.com

Hi Mark,

I can't think of any model that handles twilight conditions, i.e. irradiance > 0 with zenith > 90.  So you would be expecting too much from any of the models, not just Perez.

Anton

--
You received this message because you are subscribed to the Google Groups "pvlib-python" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pvlib-python...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pvlib-python/6731ce06-034b-4ef3-8ae2-53a77d7839dbn%40googlegroups.com.
-- 
PV Performance Labs
Emmy-Noether-Str. 2
79110 Freiburg
Germany

+49-761-8973-5603 (Office)
+49-174-532-7677 (Mobile)

www.pvperformancelabs.com

Mark Campanelli

unread,
Aug 12, 2023, 7:13:58 PM8/12/23
to pvlib-python
Anton,

  That is fair enough. All that I see in the docstring for pvlib.irradiance.perez is:
  • solar_zenith (numeric) – apparent (refraction-corrected) zenith angles in decimal degrees. solar_zenith must be >=0 and <=180.

I'm not sure if a note/warning about solar_zenith >90 deg would be warranted? (This type of warning exists in pvlib.irradiance.gti_dirint.)

  I have decided to assign the measured POA minus the calculated ground diffuse to the isotropic sky diffuse for the >90 angles, lest I throw out a couple data points for each day. Of course, what the POA pyranometer is measuring vs. what the PV and downstream system are doing at twilight is debatable (on cloudy vs. clear days, no less). Even if experience/studies show that, for PV, these timestamps should simply be filtered out, it appears to me that the irradiance model would be more consistent if it made sensible approximate assignments to the non-circumsolar diffuse POA irradiance components when the apparent azimuth >90 deg.

  Of course, I'd be curious what a reference PV module would measure for F = Isc/Isc0 under these conditions :).

-Mark

Anton Driesse

unread,
Aug 13, 2023, 2:58:37 PM8/13/23
to pvlib-...@googlegroups.com

Hi Mark,

There may be a collective half-expectation that I am going to respond again, but to make it more interesting I am going to wait and see whether anyone else has thoughts on this topic.

Cheers!

Anton

cwh...@sandia.gov

unread,
Aug 14, 2023, 10:44:41 AM8/14/23
to pvlib-python
Mark,

  • solar_zenith (numeric) – apparent (refraction-corrected) zenith angles in decimal degrees. solar_zenith must be >=0 and <=180.

I'm 98% certain that text about angle limits is held over from the original port from Matlab. It appears in many of the transposition models because cut/paste is easy and promotes a common description for the same variable in different functions. Why was it in Matlab to begin with? I don't know - could have been a cut/paste from solar position calculations. In any case, it's not adding much value for any user here. There's no numerical barrier to putting solar_zenith > 180 (or <0) into the perez function (or probably, into other transposition models). The results will likely be nonsense as it's certain that these models are calibrated for 90 > solar_zenith > 0. But I would expect a modeler to know that.

As to a warning for 90 < solar_zenith < 95 (or whatever nautical twilight is), I agree with Anton - that's expecting more than is intended. We could only warn that we don't **think** the model is accurate, but, perhaps it could be if only by accident. So I'd prefer to say nothing since we can't with confidence state it's inaccurate (or is accurate).

(This type of warning exists in pvlib.irradiance.gti_dirint.)

I see a warning about AOI > 80, but not for solar_zenith values.

Cliff
Reply all
Reply to author
Forward
0 new messages