pvlib-python icon indicating copy to clipboard operation
pvlib-python copied to clipboard

Add iam function based on Schlick 1994

Open adriesse opened this issue 2 years ago • 5 comments

Is your feature request related to a problem? Please describe.

Equation 15 in Schlick 1994 gives an efficient approximation equation for surface reflectance as a function of incidence angle that could be used as the basis for an iam function.

Equation 4 in Xie 2022 gives an analytical integration of the Schlick equation over the portion of an isotropic sky that is visible from a tilted surface.

Equation 6 in Xie 2022 gives an analytical integration of the Schlick equation over the portion of an isotropic ground that is visible from a tilted surface.

Describe the solution you'd like A new function called schlick in the iam module. The equation would be:

iam = 1 - (1 - cos(aoi)) ** 5

This equation has no parameters for fitting to iam measurements or to represent different types of PV module glass.

A second new function called schlick_diffuse in the iam module (similar to the function martin_ruiz_diffuse) which implements Equations 4 and 6 from Xie 2022 (excluding the empirical weighting factor w, or in other words, with w=1).

References

Schlick, C. An inexpensive BRDF model for physically-based rendering. Computer graphics forum 13 (1994). Xie, Y. et al. The 'Fresnel Equations' for Diffuse radiation on Inclined photovoltaic Surfaces (FEDIS). J.RSER (2022)

adriesse avatar Oct 02 '22 19:10 adriesse

If I understand right, the new schlick equation quantifies the fraction of beam irradiance that enters the front material at the air/front interface. It would not account for extinction within the front material, which is the role of the exponential factor in the physical iam model. Is that the proper understanding @adriesse ?

The schlick approximation may have been the motivation for Dave King's fifth order polynomial (fitted to IAM measurements) but that's just speculation on my part.

cwhanse avatar Oct 03 '22 15:10 cwhanse

Extinction in the glass is negligible so we can ignore that part. The point is that when the original Schlick reflectance function is changed to a normalized iam function, the refractive index (which is only used to determine the normal incidence reflectance) drops out. Thus to see refractive index reappear in the sky-integrated iam is, well, surprising. But if we implement the iam function here, then we can compare numerical and analytical integration and see what's up.

adriesse avatar Oct 03 '22 17:10 adriesse

Thus to see refractive index reappear in the sky-integrated iam is, well, surprising.

I assume this is in reference to FEDIS (#1562) rather than schlick. If I understand correctly, this is because FEDIS is calculating transmittance relative to readings from a pyranometer with its own, presumably different, refractive index. Because of that, FEDIS is perhaps not exactly an IAM model, at least if IAM is defined strictly as $\tau(\theta) / \tau(0)$ with $\tau$ corresponding to the same device in the numerator and denominator. I suppose it's a sort of "IAM mismatch" correction?

What confuses me is that I didn't think accounting for pyranometer reflection was necessary in the first place. Aren't field pyranometers calibrated such that their readings already account for reflection off the dome?

(Also, github comments now support mathjax!)

kandersolar avatar Oct 05 '22 19:10 kandersolar

(Also, github comments now support mathjax!)

Nice!

cwhanse avatar Oct 05 '22 21:10 cwhanse

Please note that I have expanded this feature request to include a function for the diffuse iam factors. These two functions could in fact be done in a separate PR to form a base layer for FEDIS.

I actually wrote and ran them and compared to schlick integrated with marion and they converge well.

adriesse avatar Oct 13 '22 14:10 adriesse