-
Notifications
You must be signed in to change notification settings - Fork 1.1k
implement PVWatts #195
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
implement PVWatts #195
Conversation
Hi Will, pdc and power_dc are intuitive enough, I think either works. Appending a 0 or _stc should indicate a value at STC conditions. Eta is the conventional symbol for efficiency, I’d stick with it. But I’d add _inv (eta_inv) to indicate the inverter efficiency because eta is also used for cell efficiency (sunlight to current). I’d use gamma_pdc for the temperature coefficient. Its conventional to use alpha for current temperature coefficients (e.g., alpha_isc), beta for voltage and gamma for power. But some literature also use gamma for the diode factor. Its crucial to note somewhere that in PVWatts gamma_pdc has units of 1/C, not W/C. I don’t care for irrad_trans or Itr. However, this is a grey area and there’s no convention I know of. G is most commonly used for broadband irradiance (e.g., Gpoa) and E for effective irradiance (adjusted for spectral content). In PVWatts, Itr represents Gpoa reduced by reflections. I wouldn’t use I for irradiance, so perhaps Gtransmitted? Cliff |
Thanks for the helpful comments. eta (without the _nom or _ref) is actually only used within the pvwatts_ac function. The function arguments would become eta_inv_nom/eta_nom_inv and eta_inv_ref/eta_ref_inv. I've never cared much for G, but maybe I should learn to live with it. Is irradiance_transmitted too long for an argument name? In principle, one could apply a spectral correction modifier to the irradiance before passing it into the function. I'll let this sit for a day or two so that other people can comment, too. |
I'm definitely not a fan of irradiance_transmitted, in any form, long or As you might guess, I am more comfortable with PVsyst terminology, which I agree with Cliff's comments on gamma_pdc and eta_inv. (I'd go eta_inv_nom On Wed, Jun 22, 2016 at 2:24 PM, Will Holmgren [email protected]
|
This PR is totally separate from ModelChain. I'm just implementating two simple equations from pvwatts. |
Ok, I guess I was confused by your first comment of "There are some other On Wed, Jun 22, 2016 at 1:05 PM, Will Holmgren [email protected]
|
@jforbess I updated my first comment to make it less specific. The point I was trying to make is that there may be additional cases in pvlib where the important thing is the irradiance after accounting for reflection losses. Now is a great time to change any names that you don't like, but I'll suggest making a new issue for it if they're not specific to these two functions. |
I added pvwatts_losses and PVSystem.pvwatts_losses. The function uses a keyword argument with a default value for each of the PVWatts loss parameters. Here's a link to the readthedocs build for this branch: http://wholmgren-pvlib-python-new.readthedocs.io/en/pvwatts/modules.html#pvlib.pvsystem.pvwatts_ac A few more notes here regarding the PVWatts model for future reference:
|
I'll merge this on Monday unless I hear objections. |
I implemented the PVWatts module and inverter models as described in http://pvwatts.nrel.gov/downloads/pvwattsv5.pdf
I originally proposed something like this for ModelChains in #143, and @cwhanse wisely suggested adding PVWatts. It's probably best to first add the basic functions so that they don't get tied up in ModelChain land.
I'm looking for feedback on the function signatures and variable names so that we can try to maintain consistency throughout the library. I've mostly used the exact names from the PVWatts documentation, but we should consider changing at least a few of them. Keep in mind that we do have a variable/style guide, but also that it's not set in stone:
(e.g. calcparams_desoto)that currently use poa_global but that perhaps should use this instead.To do: