Skip to content

Add Bill Marion's diffuse IAM integration method? #983

@kandersolar

Description

@kandersolar

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
    """

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions