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.

Table of Open Source PV Tools. A * denotes that the project is under active development.
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