pvlib.iam.marion_integrate(function, surface_tilt, region, num=None)[source]#

Integrate an incidence angle modifier (IAM) function over solid angle to determine a diffuse irradiance correction factor using Marion’s method.

This lower-level function actually performs the IAM integration for the specified solid angle region.

  • function (callable(aoi)) – The IAM function to evaluate across solid angle. The function must be vectorized and 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).

  • region ({'sky', 'horizon', 'ground'}) –

    The region to integrate over. Must be one of:

    • ’sky’: radiation from the sky dome (zenith <= 90)

    • ’horizon’: radiation from the region of the sky near the horizon (89.5 <= zenith <= 90)

    • ’ground’: radiation reflected from the ground (zenith >= 90)

    See 1 for a detailed description of each class.

  • num (int, optional) –

    The number of increments in the zenith integration. If not specified, N will follow the values used in 1:

    • ’sky’ or ‘ground’: num = 180

    • ’horizon’: num = 1800


iam (numeric) – AOI diffuse correction factor for the specified region.



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


>>> marion_integrate(pvlib.iam.ashrae, 20, 'sky')
>>> from functools import partial
>>> f = partial(pvlib.iam.physical, n=1.3)
>>> marion_integrate(f, [20, 30], 'sky')
array([0.96225034, 0.9653219 ])