Skip to content

Conversation

@kandersolar
Copy link
Member

@kandersolar kandersolar commented Oct 2, 2025

  • I am familiar with the contributing guidelines
  • 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`).
  • 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:

@kandersolar kandersolar added this to the v0.13.2 milestone Oct 3, 2025
@kandersolar kandersolar marked this pull request as ready for review October 3, 2025 14:54
@kandersolar kandersolar merged commit cf4e06e into pvlib:main Oct 7, 2025
20 of 21 checks passed
@kandersolar kandersolar deleted the sdm-userguide branch October 7, 2025 18:26
+------------------+------------+-----------+-------------------------+
| ``chandrupatla`` | iterative | fast | yes |
+------------------+------------+-----------+-------------------------+
| ``lambertw`` | explicit | medium | yes |
Copy link
Contributor

Choose a reason for hiding this comment

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

In terms of "Guaranteed convergence", I would caution here that lambertw-based solvers can suffer from numerical issues in some regimes. IIRC, this was a main issue that Ken Roberts tried to solve in https://arxiv.org/abs/1504.01964. (A second would be a method that converges faster than lambertw.) See also #1856. Speaking of which, would you be interested in any help getting the LogWright based solvers across the finish line @kandersolar? Review, testing, inter-comparisons, ...?

Copy link
Contributor

Choose a reason for hiding this comment

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

Also, the use of "explicit" here is subject to debate, as I wouldn't be surprised if there is an iterative solver hiding underneath scipy's implementation.

Copy link
Member

Choose a reason for hiding this comment

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

I'm fairly sure scipy uses Halley's method under the hood. The point about "explicit" is that the solution of the diode equation is explicit, not that calculation of its value doesn't require an iterative method. Maybe that distinction is unclear in the table headings.

Ken's paper is about avoiding numerical overflow at very large arguments, which can occur in the "v_from_i" calculation. pvlib handles those in a manner similar to Ken's, by solving for log(W(x)) rather than W(x).

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.

3 participants