-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Consider allowing return_components
in all transposition model functions
#1553
Comments
Hey @kanderso-nrel - thanks for setting this up. I think this is a great idea, and it is something I have somewhat already done in my code. I am happy to work on some of these implementations so that they have a As I understand this, regardless of the model type, all returns will have separate components for Going forward, and barring objection, I will work on the |
Yes, this is what I am imagining. By having all models return the same structure (with all components, even if a particular model doesn't produce all of them), higher-level functionality like ModelChain can use their return values equally without having to have special cases for the simpler models. Once |
This has suddenly become a very important issue to me. The diffuse sky on the backside is very sensitive to the amount of circumsolar. For example during the middle of the day, circumsolar could be coming from nearly overhead, and would be unlikely to reach the rear of the modules, but in the current formulation if returned as diffuse then the backside irradiance is overpredicted! |
Hey all, I was playing with the perez function with return_components = True and noticed that is possible for the some of the components to give negative values. For example:
A negative horizon band does not make physical sense to me, but then again the model from my understand is meant to be empirical, so setting the minimum horizon band to zero may throw off the empirical fits. I was wondering if any of you had thoughts on what the proper way to treat these components may be. |
I think that's intentional, at least for the horizon component: #1238 |
This is indeed intentional. Since the 1987 version of the Perez model a negative F2 coefficient has been possible:
and
and from the 1990 Perez model:
|
Very informative, thank you all! |
Would the powers that be be willing to make the component name’s consistent across all model functions? For example, perez returns sky_diffuse, while poa_components returns poa_sky_diffuse. It also seems that poa_circumsolar, etc. would be more consistent and descriptive for those diffuse components. (A counter argument might be than the underlying plane need not necessarily be for a solar PV array.) In addition, would it be possible/premature to add the return_components option to get_total_irradiance? |
Access to sky diffuse irradiance in component form (typically, isotropic + circumsolar + horizon) is needed for diffuse IAM and shading/view factor loss modeling.
pvlib.irradiance.perez
has the ability to return separate in-plane sky diffuse components in addition to the combined quantitysky_diffuse
, but currentlyperez
is the only transposition function with that ability. Adding thisreturn_components
option to more models was briefly discussed in #434 but it was decided to limit it toperez
at that time. I'd like to pick up that discussion in the context of pvlib's current and future expanded capabilities regarding diffuse IAM and shade modeling.As I understand them, the
isotropic
,haydavies
,klucher
, andreindl
models can all be considered as fitting naturally into the sameisotropic
/circumsolar
/horizon
organization asperez
(though the simpler models might have one or two of those components equal to zero). I'm not sure about theking
model. So, with the possible exception ofking
, it seems that there is no conceptual barrier to extending the other models with areturn_components
option to return the same components asperez
does.In addition to making the function level of pvlib more useful on its own, a uniform interface for diffuse components across all (or most) transposition functions would enable improvements to the higher-level constructs
ModelChain
andinfinite_sheds
:infinite_sheds
could be generalized to make use of anisotropic transposition models (Hay and Davies Modification for infinite_sheds #1551)ModelChain
could apply the same IAM to thecircumsolar
component that it does topoa_direct
, as well as make use of other component-specific IAMs from e.g.marion_diffuse
One concern about extending
return_components
to all models in #434 was the API (returning a DataFrame, e.g.). I think I'm okay with what is currently used inperez
, but bring it up for discussion here.The text was updated successfully, but these errors were encountered: