diff --git a/paper/2018/codemeta.json b/paper/2018/codemeta.json deleted file mode 100644 index 4a28b03cb6..0000000000 --- a/paper/2018/codemeta.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "@context": "https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld", - "@type": "Code", - "author": [ - { - "@id": "https://orcid.org/0000-0001-6218-9767", - "@type": "Person", - "name": "William F. Holmgren", - "affiliation": "Department of Hydrology and Atmospheric Sciences, University of Arizona" - }, - { - "@id": "https://orcid.org/0000-0002-8620-5378", - "@type": "Person", - "name": "Clifford W. Hansen", - "affiliation": "Sandia National Laboratories" - }, - { - "@id": "https://orcid.org/0000-0001-8001-8582", - "@type": "Person", - "name": "Mark A. Mikofski", - "affiliation": "DNV-GL" - } - ], - "identifier": "http://doi.org/10.5281/zenodo.1246152", - "codeRepository": "https://github.com/pvlib/pvlib-python", - "datePublished": "2018-08-02", - "dateModified": "2018-08-02", - "dateCreated": "2018-08-02", - "description": "pvlib python is a community-supported open source tool that provides a set of functions and classes for simulating the performance of photovoltaic energy systems.", - "keywords": "Python, solar energy, photovoltaics, renewable energy", - "license": "BSD 3 Clause", - "title": "pvlib python", - "version": "v0.5.2" -} diff --git a/paper/2018/paper.bib b/paper/2018/paper.bib deleted file mode 100644 index b79882d004..0000000000 --- a/paper/2018/paper.bib +++ /dev/null @@ -1,110 +0,0 @@ -@inproceedings{Andrews2014, - Author = {R. W. Andrews and J. S. Stein and C. Hansen and D. Riley}, - Booktitle = {2014 IEEE 40th Photovoltaic Specialist Conference (PVSC)}, - doi = {10.1109/PVSC.2014.6925501}, - Title = {Introduction to the open source PV LIB for python Photovoltaic system modelling package}, - Year = {2014}} - -@online{DOESF2, - author = {Department of Energy}, - title = {Solar Forecasting 2}, - year = 2018, - url = {https://www.energy.gov/eere/solar/solar-forecasting-2}, - urldate = {2018-08-02}} - -@article{Gagne2017, - Author = {Gagne II, David John and McGovern, Amy and Haupt, Sue Ellen and Williams, John K.}, - Journal = {Solar Energy}, - Pages = {383- 393}, - doi = {10.1016/j.solener.2017.04.031}, - Title = {Evaluation of statistical learning configurations for gridded solar irradiance forecasting}, - Volume = {150}, - Year = {2017}} - -@inproceedings{Holmgren2015, - Author = {W. F. Holmgren and R. W. Andrews and A. T. Lorenzo and J. S. Stein}, - Booktitle = {2015 IEEE 42nd Photovoltaic Specialist Conference (PVSC)}, - Month = {June}, - Pages = {1-5}, - Title = {PVLIB Python 2015}, - Year = {2015}, - doi = {10.1109/PVSC.2015.7356005}} - -@inproceedings{Holmgren2016, - Author = {W. F. Holmgren and D. G. Groenendyk}, - Booktitle = {2016 IEEE 43rd Photovoltaic Specialists Conference (PVSC)}, - Month = {June}, - Pages = {0972-0975}, - Title = {An open source solar power forecasting tool using PVLIB-Python}, - Year = {2016}, - doi = {10.1109/PVSC.2016.7749755}} - -@inproceedings{Holmgren2017, - Author = {William F. Holmgren and Antonio T. Lorenzo and Clifford Hansen}, - Booktitle = {2017 IEEE 44th Photovoltaic Specialists Conference}, - Title = {A Comparison of PV Power Forecasts Using PVLib-Python}, - Year = {2017}, - doi = {10.5281/zenodo.1400857}} - -@inproceedings{Holmgren2018, - Author = {William F. Holmgren and Clifford W. Hansen and Joshua S. Stein and Mark A. Mikofski}, - Booktitle = {2018 IEEE 45th Photovoltaic Specialists Conference}, - Title = {Review of open source tools for PV modeling}, - Year = {2018}, - doi = {10.5281/zenodo.1401378}} - -@article{Louwen2017, - Author = {Atse Louwen and Ruud E.I. Schropp and Wilfried G.J.H.M. van Sark and Andr{\'e} P.C. Faaij}, - Journal = {Solar Energy}, - Pages = {1339 - 1353}, - Title = {Geospatial analysis of the energy yield and environmental footprint of different photovoltaic module technologies}, - Volume = {155}, - Year = {2017}, - doi = {10.1016/j.solener.2017.07.056}} - -@inproceedings{Mikofski2016, - Author = {M. Mikofski and A. Oumbe and C. Li and B. Bourne}, - Booktitle = {2016 IEEE 43rd Photovoltaic Specialists Conference (PVSC)}, - Month = {June}, - Pages = {1357-1362}, - Title = {Evaluation and correction of the impact of spectral variation of irradiance on PV performance}, - Year = {2016}, - doi = {10.1109/PVSC.2016.7749837}} - -@inproceedings{Mikofski2017, - Author = {Mark A. Mikofski and Clifford W. Hansen and William F. Holmgren and Gregory M. Kimball}, - Booktitle = {2017 IEEE 44th Photovoltaic Specialists Conference}, - Title = {Use of Measured Aerosol Optical Depth and Precipitable Water to Model Clear Sky Irradiance}, - Year = {2017}, - doi = {10.5281/zenodo.1403238}} - -@article{Polo2016, - Author = {J. Polo, S. Garcia-Bouhaben, M. C. Alonso-Garcia}, - Journal = {Journal of Renewable and Sustainable Energy}, - Title = {A comparative study of the impact of horizontal-to-tilted solar irradiance conversion in modelling small PV array performance}, - Year = {2016}, - doi = {10.1063/1.4964363}} - -@misc{pvlibZenodo, - author = {pvlib python Contributors}, - title = {pvlib python}, - doi = {10.5281/zenodo.1246152}, - howpublished = {\url{http://doi.org/10.5281/zenodo.1246152}}} - -@inproceedings{Stein2012, - Author = {J. S. Stein}, - Booktitle = {2012 38th IEEE Photovoltaic Specialists Conference}, - Month = {June}, - Pages = {003048-003052}, - Title = {The photovoltaic Performance Modeling Collaborative (PVPMC)}, - Year = {2012}, - doi = {10.1109/PVSC.2012.6318225}} - -@inproceedings{Stein2016, - Author = {J. S. Stein and W. F. Holmgren and J. Forbess and C. W. Hansen}, - Booktitle = {2016 IEEE 43rd Photovoltaic Specialists Conference (PVSC)}, - Month = {June}, - Pages = {3425-3430}, - Title = {PVLIB: Open source photovoltaic performance modeling functions for Matlab and Python}, - Year = {2016}, - doi = {10.1109/PVSC.2016.7750303}} diff --git a/paper/2018/paper.md b/paper/2018/paper.md deleted file mode 100644 index b144818943..0000000000 --- a/paper/2018/paper.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: 'pvlib python: a python package for modeling solar energy systems' -tags: - - Python - - solar energy - - photovoltaics - - renewable energy -authors: - - name: William F. Holmgren - orcid: 0000-0001-6218-9767 - affiliation: 1 - - name: Clifford W. Hansen - orcid: 0000-0002-8620-5378 - affiliation: 2 - - name: Mark A. Mikofski - orcid: 0000-0001-8001-8582 - affiliation: 3 -affiliations: - - name: Department of Hydrology and Atmospheric Sciences, University of Arizona - index: 1 - - name: Sandia National Laboratories - index: 2 - - name: DNV-GL - index: 3 -date: 2 August 2018 -bibliography: paper.bib ---- - -# Summary - -pvlib python is a community-supported open source tool that provides a -set of functions and classes for simulating the performance of -photovoltaic energy systems. pvlib python aims to provide reference -implementations of models relevant to solar energy, including for -example algorithms for solar position, clear sky irradiance, irradiance -transposition, DC power, and DC-to-AC power conversion. pvlib python is -an important component of a growing ecosystem of open source tools for -solar energy [@Holmgren2018]. - -pvlib python is developed on GitHub by contributors from academia, -national laboratories, and private industry. pvlib python is released -with a BSD 3-clause license allowing permissive use with attribution. -pvlib python is extensively tested for functional and algorithm -consistency. Continuous integration services check each pull request on -multiple platforms and Python versions. The pvlib python API is -thoroughly documented and detailed tutorials are provided for many -features. The documentation includes help for installation and -guidelines for contributions. The documentation is hosted at -readthedocs.org as of this writing. A Google group and StackOverflow tag -provide venues for user discussion and help. - -The pvlib python API was designed to serve the various needs of the many -subfields of solar power research and engineering. It is implemented in -three layers: core functions, the ``Location`` and ``PVSystem`` classes, -and the ``ModelChain`` class. The core API consists of a collection of -functions that implement algorithms. These algorithms are typically -implementations of models described in peer-reviewed publications. The -functions provide maximum user flexibility, however many of the function -arguments require an unwieldy number of parameters. The next API level -contains the ``Location`` and ``PVSystem`` classes. These abstractions -provide simple methods that wrap the core function API layer. The method -API simplification is achieved by separating the data that represents -the object (object attributes) from the data that the object methods -operate on (method arguments). For example, a ``Location`` is -represented by a latitude, longitude, elevation, timezone, and name, -which are ``Location`` object attributes. Then a ``Location`` object -method operates on a ``datetime`` to get the corresponding solar -position. The methods combine these data sources when calling the -function layer, then return the results to the user. The final level of -API is the ``ModelChain`` class, designed to simplify and standardize -the process of stitching together the many modeling steps necessary to -convert a time series of weather data to AC solar power generation, -given a PV system and a location. - -pvlib python was ported from the PVLib MATLAB toolbox in 2014 -[@Stein2012, @Andrews2014]. Efforts to make the project more pythonic -were undertaken in 2015 [@Holmgren2015]. Additional features continue to -be added, see, for example [@Stein2016, @Holmgren2016] and the -documentation's "What's New" section. - -pvlib python has been used in numerous studies, for example, of solar -power forecasting [@Gagne2017, @Holmgren2017], development of solar -irradiance models [@Polo2016], and estimation of photovoltaic energy -potential [@Louwen2017]. Mikofski et. al. used pvlib python to study -the accuracy of clear sky models with different aerosol optical depth -and precipitable water data sources [@Mikofski2017] and to determine the -effects of spectral mismatch on different PV devices [@Mikofski2016]. -pvlib python is a foundational piece of an award, "An Open Source -Evaluation Framework for Solar Forecasting," made under the Department -of Energy Solar Forecasting 2 program [@DOESF2]. - -Plans for pvlib python development includes the implementation of new -and existing models, addition of functionality to assist with -input/output, and improvements to API consistency. - -The source code for each pvlib python version is archived with Zenodo -[@pvlibZenodo]. - -# Acknowledgements - -The authors acknowledge and thank the code, documentation, and -discussion contributors to the project. - -WH acknowledges support from the Department of Energy's Energy -Efficiency and Renewable Energy Postdoctoral Fellowship Program -(2014-2016), Tucson Electric Power, Arizona Public Service, and Public -Service Company of New Mexico (2016-2018), and University of Arizona -Institute for Energy Solutions (2017-2018). - -CH acknowledges support from the U.S. Department of Energy's Solar -Energy Technology Office. - -WH and CH acknowledge support from the Department of Energy Solar -Forecasting 2 program. - -MM acknowledges support from SunPower Corporation (2016-2017). - -Sandia National Laboratories is a multi-mission laboratory managed and -operated by National Technology and Engineering Solutions of Sandia, -LLC., a wholly owned subsidiary of Honeywell International, Inc., for -the U.S. Department of Energy's National Nuclear Security Administration -under contract DE-NA-0003525. - -# References diff --git a/paper/paper.bib b/paper/paper.bib index 9389eff8c6..a02b8c7a3e 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -18,9 +18,10 @@ @inproceedings{pvpmc_2023_update @inproceedings{pvpmc2022_pvlib_update, title = {{pvlib} python 2022 update}, author = {Anderson, Kevin and Holmgren, Will and Hansen, Clifford and Mikofski, Mark and Jensen, Adam R. and Driesse, Anton}, - url = {https://www.osti.gov/biblio/1886878}, + url = {https://doi.org/10.2172/2004407}, booktitle = {PV Performance Modeling and Monitoring Workshop}, year = {2022}, + doi = {10.2172/2004407}, } @inproceedings{pvpmc2022_pvanalytics_update, @@ -66,12 +67,83 @@ @article{pvlibjoss2018 @inproceedings{Holmgren2018, Author = {William F. Holmgren and Clifford W. Hansen and Joshua S. Stein and Mark A. Mikofski}, - Booktitle = {IEEE 45th Photovoltaic Specialists Conference}, + Booktitle = {45th IEEE Photovoltaic Specialists Conference}, Title = {Review of open source tools for PV modeling}, Year = {2018}, doi = {10.5281/zenodo.1401378} } +@inproceedings{Andrews2014, + doi = {10.1109/pvsc.2014.6925501}, + url = {https://doi.org/10.1109/pvsc.2014.6925501}, + year = {2014}, + month = jun, + publisher = {{IEEE}}, + author = {Robert W. Andrews and Joshua S. Stein and Clifford Hansen and Daniel Riley}, + title = {Introduction to the open source {PV} {LIB} for python Photovoltaic system modelling package}, + booktitle = {40th IEEE Photovoltaic Specialists Conference} +} + +@inproceedings{Mermoud1994, + title = {{PVSYST}: a user-friendly software for {PV}-systems simulation}, + booktitle = {Twelfth European Photovoltaic Solar Energy Conference}, + year = {1994}, + author = {André Mermoud} +} + +@inproceedings{Mikofski2018, + title = {Accurate Performance Predictions of Large PV Systems with Shading using Submodule Mismatch Calculation}, + url = {http://dx.doi.org/10.1109/PVSC.2018.8547323}, + DOI = {10.1109/pvsc.2018.8547323}, + booktitle = {7th World Conference on Photovoltaic Energy Conversion (WCPEC)}, + publisher = {IEEE}, + author = {Mikofski, Mark A. and Lynn, Matthew and Byrne, James and Hamer, Mike and Neubert, Anja and Newmiller, Jeff}, + year = {2018}, + month = jun +} + +@inproceedings{Passow2017, + title = {PlantPredict: Solar Performance Modeling Made Simple}, + url = {http://dx.doi.org/10.1109/PVSC.2017.8366450}, + DOI = {10.1109/pvsc.2017.8366450}, + booktitle = {44th IEEE Photovoltaic Specialists Conference (PVSC)}, + publisher = {IEEE}, + author = {Passow, Kendra and Ngan, Lauren and Rich, Geoffrey and Lee, Mitch and Kaplan, Stephen}, + year = {2017}, + month = jun +} + +@techreport{Gilman2018, + title = {SAM Photovoltaic Model Technical Reference 2016 Update}, + url = {http://dx.doi.org/10.2172/1429291}, + DOI = {10.2172/1429291}, + institution = {Office of Scientific {and} Technical Information (OSTI)}, + author = {Gilman, Paul and DiOrio, Nicholas A. and Freeman, Janine M. and Janzou, Steven and Dobos, Aron and Ryberg, David}, + year = {2018}, + month = mar +} + +@misc{pysam, + doi = {10.11578/DC.20190903.1}, + url = {https://www.osti.gov/doecode/biblio/29023}, + author = {Gilman, Paul and Janzou, Steven and Guittet, Darice and Freeman, Janine and DiOrio, Nicholas and Blair, Nathan and Boyd, Matthew and Neises, Ty and Wagner, Michael}, + language = {en}, + title = {PySAM (Python Wrapper for System Advisor Model "SAM") [SWR-19-57]}, + publisher = {National Renewable Energy Laboratory (NREL), Golden, CO (United States)}, + year = {2019} +} + +@inproceedings{Pai2016, + title = {Introducing CASSYS: An open-source software for simulation of grid-connected photovoltaic systems}, + url = {http://dx.doi.org/10.1109/PVSC.2016.7749839}, + DOI = {10.1109/pvsc.2016.7749839}, + booktitle = {43rd IEEE Photovoltaic Specialists Conference}, + publisher = {IEEE}, + author = {Pai, Abhijeet and Thevenard, Didier}, + year = {2016}, + month = jun +} + @techreport{Augspurger2023, author = {Tobias Augspurger and Eirini Malliaraki and Josh Hopkins and Dan Brown}, title = {The Open Source Sustainability Ecosystem}, @@ -80,11 +152,17 @@ @techreport{Augspurger2023 institution = {The Linux Foundation} } -@article{pvlibiotools, +@article{Jensen2023, + doi = {10.1016/j.solener.2023.112092}, + url = {https://doi.org/10.1016/j.solener.2023.112092}, + year = {2023}, + month = dec, + publisher = {Elsevier {BV}}, + volume = {266}, + pages = {112092}, author = {Adam R. Jensen and Kevin S. Anderson and William F. Holmgren and Mark A. Mikofski and Clifford W. Hansen and Leland J. Boeman and Roel Loonen}, - title = {{pvlib} iotools - open-source Python functions for seamless access to solar irradiance data}, - year = {submitted}, - journal = {Solar Energy}, + title = {{pvlib} iotools{\textemdash}Open-source Python functions for seamless access to solar irradiance data}, + journal = {Solar Energy} } @Article{ numpy, diff --git a/paper/paper.md b/paper/paper.md index 3936e3c1ce..fad216c130 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -6,7 +6,7 @@ tags: - photovoltaics - renewable energy authors: - - name: Kevin S. Anderson + - name: Kevin S. Anderson[^*] orcid: 0000-0002-1166-7957 affiliation: 1 - name: Clifford W. Hansen @@ -15,12 +15,12 @@ authors: - name: William F. Holmgren orcid: 0000-0001-6218-9767 affiliation: 2 - - name: Mark A. Mikofski - orcid: 0000-0001-8001-8582 - affiliation: 2 - name: Adam R. Jensen orcid: 0000-0002-5554-9856 affiliation: 3 + - name: Mark A. Mikofski + orcid: 0000-0001-8001-8582 + affiliation: 2 - name: Anton Driesse orcid: 0000-0003-3023-2155 affiliation: 4 @@ -38,6 +38,7 @@ date: 13 September 2023 bibliography: paper.bib --- +[^*]: Author order is sorted by code commits to the project's main branch from 2018-09-07 to 2023-12-18. # Summary @@ -73,26 +74,42 @@ of the global solar energy industry demands correspondingly more capable models. Per the United States Department of Energy, "the importance of accurate modeling is hard to overstate" [@seto2022]. -Compared with other PV modeling tools, pvlib python stands out in several +Compared with other modern PV system modeling tools, pvlib python stands out in several key aspects. One is its toolbox design, providing the user a -level of flexibility and customization beyond that of other tools. Rather than organizing -the user interface around pre-built modeling workflows, pvlib python -makes the individual "building blocks" of PV performance models accessible to -the user. This allows the user to assemble their own model workflows, including +level of flexibility and customization beyond that of other tools. Other PV +system modeling tools like SAM [@Gilman2018], PVsyst [@Mermoud1994], +SolarFarmer [@Mikofski2018], PlantPredict [@Passow2017], and +CASSYS [@Pai2016]—to name a few software tools with comparable breadth of +modeling capability—organize the user interface around pre-built modeling workflows. +Instead, pvlib python makes the individual "building blocks" of PV system performance +models accessible to the user. +This allows the user to assemble their own model workflows, including the ability of incorporating custom modeling steps. This flexibility -is essential for applications in both academia and industry. - -Another key aspect of pvlib python is that it is used via -a general-purpose programming language (Python), which +is essential for applications in both academia and industry. To our knowledge, +the only other PV system modeling software with such a toolbox design is the +original MATLAB version of pvlib [@Andrews2014]. pvlib python began as +a translation of that code base and has since surpassed it in terms of +capability, community uptake, and development attention. + +Another key aspect of pvlib python is that it is both implemented and operated +with a general-purpose programming language (Python), which allows pvlib python functions to be combined with capabilities in other Python packages, such as database query, data manipulation, numerical optimization, -plotting, and reporting packages. +plotting, and reporting packages. In contrast, most other PV system modeling +tools are used via some form of GUI. Some of these other tools are also accessible +from Python via web APIs or wrapper libraries [@pysam], but these +"black box" interfaces offer only limited ability to combine the PV models +with functionality from other Python packages. A final key aspect of pvlib python is its open peer review approach and foundation on published scientific research, allowing it to be developed by a decentralized and diverse community of PV researchers and practitioners without compromising its focus on transparent and reliable model -implementations. +implementations. This is in contrast to the inherent opaqueness of closed-source +commercial software, which prevents users from inspecting the source code +to ensure a model implementation's validity or traceability to a reference. +It is also in contrast to other open-source PV projects, where code review +and contributions typically come from a single institution. These key aspects, along with sustained contributions from a passionate and committed community, have led to pvlib python's widespread adoption across the PV @@ -123,8 +140,7 @@ a capability enhancement of particular note is the inclusion of models for simul irradiance on the rear side of PV modules. Other notable additions include methods of fitting empirical PV performance models to measurements and models for performance loss mechanisms like soiling and snow -coverage. -\autoref{fig:functions-comparison} summarizes the number of models (or functions) +coverage. \autoref{fig:functions-comparison} summarizes the number of models (or functions) per module for pvlib python versions 0.6.0 (released 2018-09-17) and 0.10.1 (released 2023-07-03), showing a substantial capability expansion over the last five years. @@ -137,11 +153,11 @@ the complexity of emerging system designs, including heterogeneous systems whose subsystems differ in mounting or electrical configuration and systems that require custom orientation/tracking models. -Third, the creation of `pvlib.iotools`, a sub-package for fetching and importing +Third, a new subpackage `pvlib.iotools` has been created for fetching and importing datasets relevant to PV modeling. These functions provide a standardized interface for reading data files in various complex data formats, offering -conveniences like optionally standardizing the dataset variable names and units -to pvlib's conventions [@pvlibiotools]. As of version 0.10.1, `pvlib.iotools` contains +conveniences like the option to standardize dataset variable names and units +to pvlib's conventions [@Jensen2023]. As of version 0.10.1, `pvlib.iotools` contains functions to download data from over ten online data providers, plus file reading/parsing functions for a dozen solar resource file formats. @@ -160,7 +176,7 @@ the community as a whole. First, we examine contributors to pvlib python's code repository. The project's use of version control software enables easy quantification of -repository additions (to code, documentation, tests, etc) over time. The +repository additions (to code, documentation, tests, etc.) over time. The project's repository currently comprises contributions from over 100 people spanning industry, academia, and government research institutions. \autoref{fig:community} (left) shows the number of unique repository @@ -212,7 +228,7 @@ funding sources, including: - The U.S. Department of Energy’s Solar Energy Technology Office, through the PV Performance Modeling Collaborative (PVPMC) and other projects -- The Danish Energy Agency through grant nos. 64020-1082 and 134232-510237 +- The Danish Energy Agency through grant nos. 134223-496801 and 134232-510237 - NumFOCUS's Small Development Grant program - Google's Summer of Code program