Skip to content

Add guidance about IAM to User Guide#2683

Open
kandersolar wants to merge 2 commits intopvlib:mainfrom
kandersolar:iam-doc
Open

Add guidance about IAM to User Guide#2683
kandersolar wants to merge 2 commits intopvlib:mainfrom
kandersolar:iam-doc

Conversation

@kandersolar
Copy link
Member

@kandersolar kandersolar commented Feb 5, 2026

  • [ ] Closes #xxxx
  • I am familiar with the contributing guidelines
  • [ ] Tests added
  • [ ] Updates entries in docs/sphinx/source/reference for API changes.
  • Adds description and name entries in the appropriate "what's new" file in docs/sphinx/source/whatsnew for all changes. Includes link to the GitHub Issue with :issue:`num` or this Pull Request with :pull:`num`. Includes contributor name and/or GitHub username (link with :ghuser:`user`).
  • [ ] New code is fully documented. Includes numpydoc compliant docstrings, examples, and comments where necessary.
  • Pull request is nearly complete and ready for detailed review.
  • Maintainer: Appropriate GitHub Labels (including remote-data) and Milestone are assigned to the Pull Request and linked Issue.

Continuing in a broader thrust of developing our user guide section. Previously:

See also:

Docs build: https://pvlib-python--2683.org.readthedocs.build/en/2683/user_guide/modeling_topics/iam.html

@kandersolar kandersolar added this to the v0.15.1 milestone Feb 5, 2026
Copy link
Member

@RDaxini RDaxini left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice job @kandersolar , this is great. Thank you for putting this together! I left some comments on a few relatively minor things, but besides those few points this LGTM

+-------------------------------------------+---------+-------------------------------------------+
| :py:func:`~pvlib.iam.physical` | direct | Physics-based; optional AR coating |
+-------------------------------------------+---------+-------------------------------------------+
| :py:func:`~pvlib.iam.sapm` | direct | Can exhibit "wiggles" in the curve |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think some clarification on what this "wiggles" comment means exactly might be helpful

Types of models
---------------

IAM is sometimes applied only to the beam component of in-plane irradiance, as
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the target audience of this guide, it might not be obvious that "direct" (seen in the table under "type") is the same as "beam" (written here in the description). Let's equate the two somewhere/somehow, or just the same word.


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 degrees. The shape of the IAM profile at intermediate AOI
Copy link
Member

@RDaxini RDaxini Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
as AOI approaches 90 degrees. The shape of the IAM profile at intermediate AOI
as AOI approaches 90°. The shape of the IAM profile at intermediate AOI

If you get double spaces, then I get to say use the symbol with a number.
(I don't actually mind the double spaces, rumor is I actually like it, but you know I like teasing you for it regardless :D)

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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
be determined using :py:func:`pvlib.iam.fit`. Parameter values can also be (approximately)
be determined using :py:func:`pvlib.iam.fit`. Parameter values can also be approximately

Small thing but I'd vote to lose the parentheses... no room for grammatical nuances and soft qualifications in pvlib—let's be direct ;)

disclaimer: I won't die on that hill, leave them in if you prefer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants