Open Source PV Modeling Tools¶
The table below shows a summary of the open source PV modeling tools known to the authors as of this writing. Here, we briefly describe each tool.
PVLib Matlab is a general purpose PV modeling toolkit for the Matlab platform. It is primarily developed at Sandia National Laboratories, but contains contributions from members of the PV Performance Modeling Collaborative (PVPMC; see www.pvpmc.org). PVLib Matlab includes extensive documentation and extensive examples.
PVLib Python is a general purpose PV modeling toolkit written in Python. PVLib Python originated as a port of PVLib Matlab and contains many of the Matlab project’s features. The PVLib Python and Matlab projects are developed independently, but some developers contribute to both projects. PVLib Python is a dependency of other open source tools. PVLib Python includes extensive function-level documentation, and a collection of examples in its online documentation and Jupyter notebooks.
System Advisory Model is a popular desktop application for PV, CSP, wind, and financial modeling. It is developed at the National Renewable Energy Laboratory. SAM has a MIT license for commercial entities and a GPL 3 license for national labs, universities, and non-profits. The SAM Simulation Core (SSC) is the computational library for SAM. NREL has also developed the SAM SDK for writing scripts to interact with SAM and the SSC.
rdtools is a library for PV degradation analysis. It is developed at NREL and written in Python. It includes a Jupyter notebook with an example analysis. rdtools uses PVLib Python.
PVFree is a web application and API for obtaining PV modeling parameters.
SolarUtils is a package that contains Python wrappers for NREL’s solar position and spectral decomposition packages (written in C). It was developed by SunPower.
Pecos is a performance monitoring tool originally developed for PV but with applications to other systems. Pecos includes online documentation and examples. Pecos uses PVLib Python. It is developed at Sandia and written in Python.
SolPy is a general purpose PV modeling tool.
PVMismatch is a tool for IV curves for modules with heterogeneous cells. It is developed at SunPower and written in Python.
photovoltaic is a general purpose PV modeling package. It is developed at Arizona State University for educational use. It is written in Python.
feedinlib is a tool for PV time series modeling. It is part of the Open Energy Modelling Framework.
CASSYS is a simulation tool for grid-tied PV systems. CASSYS is developed by Canadian Solar O&M Inc. The user interface is a Microsoft Excel spreadsheet, and the calculations are run by a program. CASSYS includes a user guide, a model-description document (useful for general PV modeling), and a comparison to PVSyst document.
Name | Purpose | Years developed | Documentation Website | Development Website | Primary Language | License |
---|---|---|---|---|---|---|
PVLib Matlab | General purpose PV modeling | 2012? - * | pvpmc.sandia.gov | github.com/sandialabs/MATLAB_PV_LIB | Matlab | BSD 3 |
PVLib Python | General purpose PV modeling | 2013 - * | pvlib-python.readthedocs.io | github.com/pvlib/pvlib-python | Python | BSD 3 |
System Advisor Model | Desktop app for PV, wind, CSP modeling, financial | 2004 - * | sam.nrel.gov | github.com/NREL/SAM | C++ | Mixed MIT/GPL 3 |
ssc | Compute modules for SAM | 2004 - * | sam.nrel.gov | github.com/nrel/ssc | C, C++ | Mixed MIT/GPL 3 |
rdtools | PV degradation | 2017 - * | github.com/NREL/rdtools | github.com/NREL/rdtools | Python | MIT |
PVFree | API for obtaining PV modeling parameters | 2015 - * | pvfree.herokuapp.com | github.com/BreakingBytes/pvfree | Python | BSD 2 |
SolarUtils | Python wrappers of C solar position and spectral decomposition | 2016 | github.com/SunPower/SolarUtils | github.com/SunPower/SolarUtils | Python | BSD 3 |
Pecos | Performance monitoring | 2016 - * | pecos.readthedocs.io | github.com/sandialabs/pecos | Python | BSD 3 |
Solpy | General purpose PV modeling | 2011-2015 | solpy.readthedocs.io | github.com/nrcharles/solpy | Python | LGPL 2.1 |
PVMismatch | IV curve calculator for mismatched cells | 2012 - * | sunpower.github.io/PVMismatch/ | github.com/SunPower/PVMismatch | Python | BSD 3 |
photovoltaic | General purpose PV modeling | 2017 - * | github.com/trautsned/photovoltaic | github.com/trautsned/photovoltaic | Python | GPL 3 |
feedinlib | PV timeseries modeling | 2015 - * | github.com/oemof/feedinlib | github.com/oemof/feedinlib | Python | GPL 3 |
CASSYS | PV system modeling | 2015 - * | github.com/CanadianSolar/CASSYS | github.com/CanadianSolar/CASSYS | Excel, C# | BSD 3 |
Bifacial PV View Factor model | Bifacial modeling | 2017 - * | github.com/NREL/bifacialvf | github.com/NREL/bifacialvf | Python | Unknown |