# pvlib.iam.marion_integrate¶

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.

Parameters
• 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

Returns

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

References

1(1,2)

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

Examples

>>> marion_integrate(pvlib.iam.ashrae, 20, 'sky')
0.9596085829811408

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