Skip to content

Commit

Permalink
Add manuscript files for 2023 JOSS publication (#1855)
Browse files Browse the repository at this point in the history
* move 2018 files to subdirectory

* initial files for 2023 manuscript

* add joss build job

* Apply suggestions from code review (@AdamRJensen)

Co-authored-by: Adam R. Jensen <[email protected]>

* Apply suggestions from code review (@cwhanse)

Co-authored-by: Cliff Hansen <[email protected]>

* typo and core developers

* Apply suggestions from code review (@wholmgren)

Co-authored-by: Will Holmgren <[email protected]>

* 2015 -> 2013

* remove scripts

* Apply suggestions from code review (@adriesse)

Co-authored-by: Anton Driesse <[email protected]>

* order authors by commit count since last paper

https://github.com/pvlib/pvlib-python/graphs/contributors?from=2018-09-07&to=2023-09-18&type=c

* s/foundation in/foundation on/

---------

Co-authored-by: Adam R. Jensen <[email protected]>
Co-authored-by: Cliff Hansen <[email protected]>
Co-authored-by: Will Holmgren <[email protected]>
Co-authored-by: Anton Driesse <[email protected]>
Co-authored-by: Mark Mikofski <[email protected]>
  • Loading branch information
6 people authored Sep 18, 2023
1 parent cb4c135 commit 7fe065f
Show file tree
Hide file tree
Showing 9 changed files with 682 additions and 200 deletions.
26 changes: 26 additions & 0 deletions .github/workflows/joss-pdf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# temporary job to rebuild the PDF while coauthors review the manuscript.
# TODO: delete before merging this PR

on: [push]

jobs:
paper:
runs-on: ubuntu-latest
name: Paper Draft
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build draft PDF
uses: openjournals/openjournals-draft-action@master
with:
journal: joss
# This should be the path to the paper within your repo.
paper-path: paper/paper.md
- name: Upload
uses: actions/upload-artifact@v1
with:
name: paper
# This is the output path where Pandoc will write the compiled
# PDF. Note, this should be the same directory as the input
# paper.md
path: paper/paper.pdf
File renamed without changes.
110 changes: 110 additions & 0 deletions paper/2018/paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
@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}}
124 changes: 124 additions & 0 deletions paper/2018/paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
---
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
Binary file added paper/community.pdf
Binary file not shown.
Binary file added paper/functions_06_010.pdf
Binary file not shown.
Loading

0 comments on commit 7fe065f

Please sign in to comment.