-
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
Google Summer of Code project summary: Implementing new spectral corrections in pvlib #2065
Comments
As part of the documentation of a growing number of methods, it might be helpful if a “overview” table of spectral-correction method vs. required+optional inputs were added. This way consumers would be able to get a quicker idea of what information/data is needed to apply each correction. The timescale over which the correction is applied could also be a factor (although maybe they are all the same at this point). |
@markcampanelli I think that is a good suggestion. I tried to achieve something similar with Table 10 in this study; is that the sort of thing you had in mind? Timescale is a good point too. I have had a paper examining this issue under review for a while so maybe/hopefully something will come out of that soon that I can implement into this work. |
@RDaxini Yes. Depending on your time, you could at a bare minimum reference your paper with table 10. If time permits, then you could perhaps provide a “translation” of that table into something more specific to pvlib’s variable names and functions. BTW: Your timescale-focused paper also sounds like an interesting read 🙂. Good luck working it through the process! |
@RDaxini #2088 got automatically linked to this issue based on its description, so merging that PR automatically closed this issue. Check out https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword Try "see also #XXX" or some other phrasing to prevent the automatic linkage next time :) |
I suggest adding the following to pvlib also:
|
@adriesse thanks for your suggestions
I was actually just thinking about this when I opened #2126 (and #2125 to an extent). Will definitely work on this.
Unfortunately, the SR curves for the specific modules analysed in the paper are not available. The three curves presented in Figure 7 of the paper are from a different set of devices; the figure is reproduced from the reference provided just to give the reader a rough idea of the overall curve shape for devices of the same/similar technology. Aside: in the near future, I'll be working on some extended validation of this model using simulated spectral irradiance data and devices for which SR curves are available. |
Big thumbs down. I propose we reject all spectral mismatch models that are developed using secret spectral response curves starting today! That includes the new one from FirstSolar. I wish the journals did the same. |
@adriesse Spectral response curves were not used at any stage in the development or validation of the spectral mismatch model in the referenced paper. I think you have misunderstood the methodology. |
If you are proposing to reject spectral mismatch models if the SR for the cells/modules used for development/validation are not available, that's rather extreme. We'd probably reject all spectral models in use today, if that was a rule. If you are saying to reject models that integrate the product of spectral irradiance and SR, but with hidden SR values, then yes I agree. |
+1 Just for clarity here, in the APE/e model paper, spectral mismatch is represented by a normalised form of the short-circuit current (see Section 2.2), for which the data required were measured in the field and are publicly available. Similar to the representation of spectral mismatch in the SAPM model and others. |
My bad. I didn't read the paper thoroughly and it was a while back. I assumed that if you had spectra and SR curves you would have multiplied them.
I did not find any indication in the paper that these curves are only "to give a rough idea", therefore, it seems like any reader would conclude that these curves are for the actual modules or module types whose data you used. Now that I have looked at the paper a bit more closely, I still object to the model entering pvlib for two reasons:
|
I understand your points @adriesse. Thanks for your input. I think limitations with the built-in coefficients could potentially impact user experience in the near term but, equally, I think this issue a) can be mitigated; b) is not of such gravity as to warrant disqualifying the model entirely from implementation. My thoughts:
Correct. No model is perfect and, in the case of this model, this IAM limitation is highlighted openly the paper. The decision was between a smaller and potentially less reliable dataset through which AOI effects could be isolated, or using a larger dataset without being able to isolate these effects. I don't think this should disqualify the model from pvlib entirely for the following reasons. The primary objective of the paper is to develop and validate a new spectral factor model focusing on testing the use of two new variables (new as in not used in this way before), investigating different spectral bands for the second variable, and parameterising the x-y-z relation. Not accounting for AOI effects does, on the other hand, have a systematic impact the final module coefficients presented for these three specific devices. Seasonal bias in AOI (and other) effects is avoided by using samples of data extracted from throughout the full year for the model development and for the model validation. At the time of writing, I thought users of any model would mostly use their own module-specific coefficients, hence this is not really an issue, but it has since been brought to my attention that in pvlib at least most people probably just use the built-in coefficients for the same PV technology that they have. I understand this is therefore a limitation, but I think sufficient mitigation can be achieved since: a) It can be highlighted in the notes and that the published coefficients already contain AOI effects. Although this does not mean the an IAM has been perfectly applied, the user would at least be aware that they should not re-apply an AOI correction. Finally, if I have understood the papers correctly, it is not uncommon for spectral correction function literature to omit AOI effects, including some already in pvlib-python e.g. pvlib.spectrum.spectral_factor_caballero. Summary: model concept and parameterisation are still valid, notes can inform user of the IAM limitation, user can still provide their own coefficients since the physical model is unaffected by this limitation.
Firstly, save for the SAPM f(AMa), which I think has a (regularly?) maintained coefficient database, none of the current spectral factor models in pvlib-python (or anywhere?) use modules that are representative of today's PV technologies. Even the most recently published model in pvlib-python (and outside?), the PVSPEC model from 2020, presents coefficients for First Solar series 4 modules from around 7-8 years ago, which have been superseded by several iterations of new FS modules now. The other models were published in 2018 and prior, and use modules from years prior to publication. |
Unfortunately, IAM effects are generally larger than spectral effects, which undermines your main conclusions. But, I should take time out from this discussion now and let others comment. |
@adriesse I got this far investigating the concern you raise. I suspect you know all this but thought I'd put my views here for others. pvlib hosts four models for the spectral mismatch factor: sapm, firstsolar, caballero, pvspec, and (proposed) Dax's model.
I've temporarily lost access to journal articles so I haven't looked at the other models. |
Zis is a problem, but ve have vays to find zem! |
It seems to me that the main concern here is regarding the technology-specific coefficient values supplied in the reference rather than the model itself. I see a few alternatives for how to proceed:
Option 1 seems like it is giving users a way to shoot themselves in the foot. Option 2 seems like giving users a function that the vast majority cannot use, unless they go dig up the shoot-themselves-in-the-foot coefficients for themselves. Option 3 is a bit of a shame, but it seems like the best option to me. |
Considering the value and usefulness of a model in pvlib without suitable coefficients, Option 3 makes sense to me too. I will direct some of my work towards developing new coefficients for the model in the near future. I will close PR #2126 for now and return to it once a published reference with coefficients is available. |
Continuing with my investigation of models already presented in pvlib:
My conclusion - pvlib doesn't host spectral mismatch models that conflates AOI loss with spectral mismatch. If I'm wrong about this I'm very happy to be corrected. I concur with @adriesse's objection about the APE/e model. Is it practical to consider adjusting the irradiance used to development the APE/e for AOI loss, similar to what was done for I'm for Option 3 proposed by @kandersolar |
It looks like this discussion was somehow productive and led to a conclusion that has acceptance. I'm glad about that. Personally, I really don't enjoy interrupting other people's work in progress, and would much prefer to have scientific and/or strategic assessments for pvlib occur earlier in the feature proposal/planning process. |
Closing this issue now as my GSoC project is complete. |
Introduction
This issue summarises the ongoing and completed work for the GSoC 2024 programme with pvlib.
The project I am undertaking relates to an issue raised earlier this year. The official abstract for the project can be found here. This project is being carried out under the supervision of @AdamRJensen and @kandersolar
In summary, the aim of the project is to implement new spectral correction models in pvlib, as well as examples of their application and use. In addition to updating this issue as the project progresses, detailed updates on the project will also be shared in blog posts. Major milestone updates will be shared on my LinkedIn page as well.
Plan
The current overall project plan is described below.
As the project develops I will link these tasks to individual issues and pull requests.
Issues
Open:
Closed:
#2065 (this one)
#2135 (create average photon energy function)
#2125 (suggestion to split
mismatch.py
)#1950 (general issue, add new spectral factor models)
#2087 (add JRC spectral factor model)
#2115 (update SAPM spectral factor docs)
#2107 (add spectral factor example),
#2086 (update
spectral_factor_firstsolar
)PRs
test_spectrum.py
Split test_spectrum.py #2151pvlib/spectrum
restructure pvlib/spectrum #2136Any feedback on the project is certainly more than welcome. Using github and contributing to open-source software is completely new to me so I am looking forward to learning about this so that I can contribute to pvlib not only through this project but also in future.
Dax
The text was updated successfully, but these errors were encountered: