|  | 
|  | 1 | +--- | 
|  | 2 | +title: 'pvlib python: a python package for modeling solar energy systems' | 
|  | 3 | +tags: | 
|  | 4 | +  - Python | 
|  | 5 | +  - solar energy | 
|  | 6 | +  - photovoltaics | 
|  | 7 | +  - renewable energy | 
|  | 8 | +authors: | 
|  | 9 | +  - name: William F. Holmgren | 
|  | 10 | +    orcid: 0000-0001-6218-9767 | 
|  | 11 | +    affiliation: 1 | 
|  | 12 | +  - name: Clifford W. Hansen | 
|  | 13 | +    orcid: 0000-0002-8620-5378 | 
|  | 14 | +    affiliation: 2 | 
|  | 15 | +  - name: Mark A. Mikofski | 
|  | 16 | +    orcid: 0000-0001-8001-8582 | 
|  | 17 | +    affiliation: 3 | 
|  | 18 | +affiliations: | 
|  | 19 | + - name: Department of Hydrology and Atmospheric Sciences, University of Arizona | 
|  | 20 | +   index: 1 | 
|  | 21 | + - name: Sandia National Laboratories | 
|  | 22 | +   index: 2 | 
|  | 23 | + - name: DNV-GL | 
|  | 24 | +   index: 3 | 
|  | 25 | +date: 2 August 2018 | 
|  | 26 | +bibliography: paper.bib | 
|  | 27 | +--- | 
|  | 28 | + | 
|  | 29 | +# Summary | 
|  | 30 | + | 
|  | 31 | +pvlib python is a community-supported open source tool that provides a | 
|  | 32 | +set of functions and classes for simulating the performance of | 
|  | 33 | +photovoltaic energy systems. pvlib python aims to provide reference | 
|  | 34 | +implementations of models relevant to solar energy, including for | 
|  | 35 | +example algorithms for solar position, clear sky irradiance, irradiance | 
|  | 36 | +transposition, DC power, and DC-to-AC power conversion. pvlib python is | 
|  | 37 | +an important component of a growing ecosystem of open source tools for | 
|  | 38 | +solar energy [@Holmgren2018]. | 
|  | 39 | + | 
|  | 40 | +pvlib python is developed on GitHub by contributors from academia, | 
|  | 41 | +national laboratories, and private industry. pvlib python is released | 
|  | 42 | +with a BSD 3-clause license allowing permissive use with attribution. | 
|  | 43 | +pvlib python is extensively tested for functional and algorithm | 
|  | 44 | +consistency. Continuous integration services check each pull request on | 
|  | 45 | +multiple platforms and Python versions. The pvlib python API is | 
|  | 46 | +thoroughly documented and detailed tutorials are provided for many | 
|  | 47 | +features. The documentation includes help for installation and | 
|  | 48 | +guidelines for contributions. The documentation is hosted at | 
|  | 49 | +readthedocs.org as of this writing. A Google group and StackOverflow tag | 
|  | 50 | +provide venues for user discussion and help. | 
|  | 51 | + | 
|  | 52 | +The pvlib python API was designed to serve the various needs of the many | 
|  | 53 | +subfields of solar power research and engineering. It is implemented in | 
|  | 54 | +three layers: core functions, the ``Location`` and ``PVSystem`` classes, | 
|  | 55 | +and the ``ModelChain`` class. The core API consists of a collection of | 
|  | 56 | +functions that implement algorithms. These algorithms are typically | 
|  | 57 | +implementations of models described in peer-reviewed publications. The | 
|  | 58 | +functions provide maximum user flexibility, however many of the function | 
|  | 59 | +arguments require an unwieldy number of parameters. The next API level | 
|  | 60 | +contains the ``Location`` and ``PVSystem`` classes. These abstractions | 
|  | 61 | +provide simple methods that wrap the core function API layer. The method | 
|  | 62 | +API simplification is achieved by separating the data that represents | 
|  | 63 | +the object (object attributes) from the data that the object methods | 
|  | 64 | +operate on (method arguments). For example, a ``Location`` is | 
|  | 65 | +represented by a latitude, longitude, elevation, timezone, and name, | 
|  | 66 | +which are ``Location`` object attributes. Then a ``Location`` object | 
|  | 67 | +method operates on a ``datetime`` to get the corresponding solar | 
|  | 68 | +position. The methods combine these data sources when calling the | 
|  | 69 | +function layer, then return the results to the user. The final level of | 
|  | 70 | +API is the ``ModelChain`` class, designed to simplify and standardize | 
|  | 71 | +the process of stitching together the many modeling steps necessary to | 
|  | 72 | +convert a time series of weather data to AC solar power generation, | 
|  | 73 | +given a PV system and a location. | 
|  | 74 | + | 
|  | 75 | +pvlib python was ported from the PVLib MATLAB toolbox in 2014 | 
|  | 76 | +[@Stein2012, @Andrews2014]. Efforts to make the project more pythonic | 
|  | 77 | +were undertaken in 2015 [@Holmgren2015]. Additional features continue to | 
|  | 78 | +be added, see, for example [@Stein2016, @Holmgren2016] and the | 
|  | 79 | +documentation's "What's New" section. | 
|  | 80 | + | 
|  | 81 | +pvlib python has been used in numerous studies, for example, of solar | 
|  | 82 | +power forecasting [@Gagne2017, @Holmgren2017], development of solar | 
|  | 83 | +irradiance models [@Polo2016], and estimation of photovoltaic energy | 
|  | 84 | +potential [@Louwen2017]. Mikofski et. al. used pvlib python to study | 
|  | 85 | +the accuracy of clear sky models with different aerosol optical depth | 
|  | 86 | +and precipitable water data sources [@Mikofski2017] and to determine the | 
|  | 87 | +effects of spectral mismatch on different PV devices [@Mikofski2016]. | 
|  | 88 | +pvlib python is a foundational piece of an award, "An Open Source | 
|  | 89 | +Evaluation Framework for Solar Forecasting," made under the Department | 
|  | 90 | +of Energy Solar Forecasting 2 program [@DOESF2]. | 
|  | 91 | + | 
|  | 92 | +Plans for pvlib python development includes the implementation of new | 
|  | 93 | +and existing models, addition of functionality to assist with | 
|  | 94 | +input/output, and improvements to API consistency. | 
|  | 95 | + | 
|  | 96 | +The source code for each pvlib python version is archived with Zenodo | 
|  | 97 | +[@pvlibZenodo]. | 
|  | 98 | + | 
|  | 99 | +# Acknowledgements | 
|  | 100 | + | 
|  | 101 | +The authors acknowledge and thank the code, documentation, and | 
|  | 102 | +discussion contributors to the project. | 
|  | 103 | + | 
|  | 104 | +WH acknowledges support from the Department of Energy's Energy | 
|  | 105 | +Efficiency and Renewable Energy Postdoctoral Fellowship Program | 
|  | 106 | +(2014-2016), Tucson Electric Power, Arizona Public Service, and Public | 
|  | 107 | +Service Company of New Mexico (2016-2018), and University of Arizona | 
|  | 108 | +Institute for Energy Solutions (2017-2018). | 
|  | 109 | + | 
|  | 110 | +CH acknowledges support from the U.S. Department of Energy's Solar | 
|  | 111 | +Energy Technology Office. | 
|  | 112 | + | 
|  | 113 | +WH and CH acknowledge support from the Department of Energy Solar | 
|  | 114 | +Forecasting 2 program. | 
|  | 115 | + | 
|  | 116 | +MM acknowledges support from SunPower Corporation (2016-2017). | 
|  | 117 | + | 
|  | 118 | +Sandia National Laboratories is a multi-mission laboratory managed and | 
|  | 119 | +operated by National Technology and Engineering Solutions of Sandia, | 
|  | 120 | +LLC., a wholly owned subsidiary of Honeywell International, Inc., for | 
|  | 121 | +the U.S. Department of Energy's National Nuclear Security Administration | 
|  | 122 | +under contract DE-NA-0003525. | 
|  | 123 | + | 
|  | 124 | +# References | 
0 commit comments