pvlib-python
pvlib-python copied to clipboard
Add iam function based on Schlick 1994
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)
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.
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.
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!)
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.