pvlib / pvlib-python

A set of documented functions for simulating the performance of photovoltaic energy systems.
https://pvlib-python.readthedocs.io
BSD 3-Clause "New" or "Revised" License
1.17k stars 993 forks source link

ENH: model pvsyst thin-film recombination for CdTe and a:Si in pvsystem.singlediode() #517

Open mikofski opened 6 years ago

mikofski commented 6 years ago

Problem This request was initially made in #163 and is also related to #470. As of #504 bishop88 can accept the thin-film recombination parameters: d2mutau and vbi to output IV curve and its gradients, but there is no propagation of this ability to the proxies that use it such as pvsystem.singlediode()

Solution Here is a proposed list of methods that should now be able to use these new terms:

Alternatives Please suggest alternative solutions. There has been discussion of refactoring calcparams_pvsyst or even creating model specific singlediode_pvsyst methods. Is that desired?

Additional context this is a follow on to #504

mikofski commented 5 years ago

@adriesse didn't #762 and #763 already address this? I think this can be closed right?

I think the other functions in the list above have a Lambert-W which I don't think has a way to handle the thin-film recombination terms yet.

Can I close this issue?

cwhanse commented 5 years ago

I think this issue should stay open, or, be closed and replaced by several smaller issues that cover the scope:

  1. finish implementation in pvsystem functions (see below)
  2. implementation for PVSystem methods
  3. implementation for ModelChain methods

Implementation in pvlib.singlediode is complete by #763. bishop88 functions accept the arguments. The lambertw functions don't use the arguments and shouldn't; the method can't solve the single diode equation with the recombination term.

For the first item above, pvlib.pvsystem.max_power_point accepts the arguments by #763. The following functions could (and should) accept the arguments:

These functions have a method kwarg which defaults to lambertw, but could be set to newton or brentq and thus d2mutau could be used.