Skip to content

Calculate IV curve for series-connected devices - #2718

Open
cwhanse wants to merge 11 commits into
pvlib:mainfrom
cwhanse:mismatch_series
Open

Calculate IV curve for series-connected devices #2718
cwhanse wants to merge 11 commits into
pvlib:mainfrom
cwhanse:mismatch_series

Conversation

@cwhanse

@cwhanse cwhanse commented Mar 12, 2026

Copy link
Copy Markdown
Member
  • Closes #xxxx
  • I am familiar with the contributing guidelines
  • I attest that all AI-generated material has been vetted for accuracy and is in compliance with the pvlib license
  • 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.

Uses a simplified reverse bias model (vertical asymptote at breakdown voltage), rather than the differentiable model in the bishop88 functions. The simplified model is used for speed and reliability but comes at the cost of some precision for devices with nearly equal short-circuit currents.

@cwhanse cwhanse added this to the v0.16.0 milestone Aug 19, 2026
@cwhanse
cwhanse marked this pull request as ready for review August 19, 2026 12:39
@cwhanse

cwhanse commented Aug 19, 2026

Copy link
Copy Markdown
Member Author

This is ready for some feedback. Some questions in my mind:

  • I'm not sure about the interface. The new function (intended to be public) takes in single diode equation parameters (output from one of the pvsystem.calcparams_* functions) and returns the series IV curve. It does not anticipate "adding" IV curves represented by arrays of current and voltage.
  • I intend to add a maximum power point to that curve; that is not yet done. As it is now, this function acts as an alternative for pvsystem.i_from_v (compute an IV curve). The IV curve is returned (rather than Isc, Imp, Vmp, Voc as are returned by pvsystem. singlediode) because this function is intended to feed the next stage: compute the IV curve for parallel strings.
  • I've put this is a new module called mismatch. If that's too general (there's also spectral mismatch) this would be electrical mismatch.

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.

1 participant