-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
Milestone
Description
Is there interest in an implementation of Bill Marion's "Numerical method for angle-of-incidence correction factors for diffuse radiation incident photovoltaic modules" https://doi.org/10.1016/j.solener.2017.03.027 ?
Since the method itself just integrates an arbitrary AOI correction model over the relevant portion of the sky, I'm imagining a function like this that you could pass the other IAM functions into:
def marion_integrate(function, surface_tilt, region, N=180):
"""
Integrate an incidence angle modifier (IAM) function over solid angle
to determine a diffuse irradiance correction factor using Marion's method.
Parameters
----------
function : callable func(aoi)
The IAM function to evaluate across solid angle. Must take only one
parameter, the angle of incidence in degrees.
surface_tilt : numeric
Surface tilt angles in decimal degrees.
The tilt angle is defined as degrees from horizontal
(e.g. surface facing up = 0, surface facing horizon = 90)
surface_tilt must be in the range [0, 180]
region : {'sky', 'horizon', 'ground'}
The region to integrate over. See [1]_ for details.
N : int, default 180
The number of increments in the zenith integration.
Returns
-------
iam : numeric
The incident angle modifier for the specified region.
References
----------
.. [1] B. Marion "Numerical method for angle-of-incidence correction
factors for diffuse radiation incident photovoltaic modules",
Solar Energy, Volume 147, Pages 344-348. 2017.
DOI: 10.1016/j.solener.2017.03.027
"""