-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Add guidance about IAM to User Guide #2683
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+107
−0
Merged
Changes from 6 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
d51b86e
first draft
kandersolar 9c6a0cd
tweaks
kandersolar 6f09542
Apply suggestions from code review
kandersolar cf10fc8
Further edits from review
kandersolar ddd6b75
whatsnew
kandersolar 3a107d5
fix PR number in whatsnew
kandersolar 1fa8147
Apply suggestions from code review
kandersolar File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,100 @@ | ||
| .. _iam: | ||
|
|
||
|
|
||
| Incidence angle modifier | ||
| ======================== | ||
|
|
||
| Some fraction of the light incident on a PV module surface is reflected away or | ||
| absorbed before it reaches the PV cell. This irradiance reduction depends | ||
| on the angle at which the light strikes the module (the angle of incidence, | ||
| :term:`AOI <aoi>`) and the optical properties of the module. | ||
|
|
||
| Some reduction occurs at all angles of incidence, even normal incidence. | ||
| However, because PV modules are rated with irradiance at normal incidence, | ||
| the reduction at normal incidence is implicit in the PV module's power rating | ||
| and does not need to be accounted for separately in a performance model. | ||
| Therefore, only the extra reduction at non-normal incidence should be modeled. | ||
|
|
||
| This is done using incidence angle modififer (:term:`IAM`) models. | ||
| Conceptually, IAM is the fraction of incident light that is | ||
| transmitted to the PV cell, normalized to the value at normal incidence: | ||
|
|
||
| .. math:: | ||
|
|
||
| IAM(\theta) = \frac{T(\theta)}{T(0)}, | ||
|
|
||
| where :math:`T(\theta)` represents the transmitted light fraction at AOI :math:`\theta`. | ||
| IAM equals (by definition) 1.0 when AOI is zero and typically approaches zero | ||
| as AOI approaches 90°. The shape of the IAM profile at intermediate AOI | ||
| is nonlinear and depends on the module's optical properties. | ||
|
|
||
| IAM may also depend on the wavelength of the light, the polarization of the light, | ||
| and which side of the module the light comes from. However, IAM models usually | ||
| neglect these minor effects. | ||
|
|
||
| In pvlib, IAM is a unitless quantity (values from 0–1) and IAM functions take | ||
kandersolar marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| input angles in degrees. | ||
kandersolar marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
|
|
||
| Types of models | ||
| --------------- | ||
|
|
||
| Because total in-plane irradiance is the combination of light from many | ||
| directions, IAM values are computed for each component separately: | ||
|
|
||
| - *direct IAM*: IAM computed for the AOI of direct irradiance | ||
| - *circumsolar IAM*: typically approximated as equal to the direct IAM | ||
| - *diffuse IAM*: IAM integrated across the ranges of AOI spanning the sky and/or | ||
| ground surfaces | ||
|
|
||
| Because diffuse light can be thought of as a field of many small beams of | ||
| direct light, diffuse IAM can then be understood as the IAM averaged across | ||
| those individual beams. This averaging can be done explicitly or empirically. | ||
|
|
||
| In principle, IAM should be applied to all components of incident irradiance. | ||
| In practice, IAM is sometimes applied only to the direct component of in-plane | ||
| irradiance, as the direct component is often the largest contributor to total | ||
| in-plane irradiance and has a highly variable AOI across the day and year. | ||
|
|
||
| The IAM models currently available in pvlib are summarized in the | ||
| following table: | ||
|
|
||
| +-------------------------------------------+---------+-------------------------------------------+ | ||
| | Model | Type | Notes | | ||
| +===========================================+=========+===========================================+ | ||
| | :py:func:`~pvlib.iam.ashrae` | direct | Once common, now less used | | ||
| +-------------------------------------------+---------+-------------------------------------------+ | ||
| | :py:func:`~pvlib.iam.martin_ruiz` | direct | Used in the IEC 61853 standard | | ||
| +-------------------------------------------+---------+-------------------------------------------+ | ||
| | :py:func:`~pvlib.iam.martin_ruiz_diffuse` | diffuse | Used in the IEC 61853 standard | | ||
| +-------------------------------------------+---------+-------------------------------------------+ | ||
| | :py:func:`~pvlib.iam.physical` | direct | Physics-based; optional AR coating | | ||
| +-------------------------------------------+---------+-------------------------------------------+ | ||
| | :py:func:`~pvlib.iam.sapm` | direct | Can be non-monotonic and exceed 1.0 | | ||
| +-------------------------------------------+---------+-------------------------------------------+ | ||
| | :py:func:`~pvlib.iam.schlick` | direct | Does not take module-specific parameters | | ||
| +-------------------------------------------+---------+-------------------------------------------+ | ||
| | :py:func:`~pvlib.iam.schlick_diffuse` | diffuse | Does not take module-specific parmaeters | | ||
| +-------------------------------------------+---------+-------------------------------------------+ | ||
|
|
||
| In addition to the core models above, pvlib provides several other functions | ||
| for IAM modeling: | ||
|
|
||
| - :py:func:`~pvlib.iam.interp`: interpolate between points on a measured IAM profile | ||
| - :py:func:`~pvlib.iam.marion_diffuse` and :py:func:`~pvlib.iam.marion_integrate`: | ||
| numerically integrate any IAM model across AOI to compute sky, horizon, and ground IAMs | ||
|
|
||
|
|
||
| Model parameters | ||
| ---------------- | ||
|
|
||
| Some IAM model functions provide default values for their parameters. | ||
| However, these generic values may not be suitable for all PV modules. | ||
| It should be noted that using the default parameter values for each | ||
| model generally leads to different IAM profiles. | ||
|
|
||
| Module-specific values can be obtained via testing. For example, IEC 61853-2 | ||
| testing produces measured IAM values across the range of AOI and a corresponding | ||
| parameter value for the Martin-Ruiz model. Parameter values for other models can | ||
| be determined using :py:func:`pvlib.iam.fit`. Parameter values can also be approximately | ||
| converted between models using :py:func:`pvlib.iam.convert`. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.