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? - * https://pvpmc.sandia.gov https://github.com/sandialabs/MATLAB_PV_LIB Matlab BSD 3
PVLib Python General purpose PV modeling 2013 - * https://pvlib-python.readthedocs.io https://github.com/pvlib/pvlib-python Python BSD 3
System Advisor Model (SAM) Desktop app for PV, wind, CSP modeling, financial 2004 - * https://sam.nrel.gov https://github.com/NREL/SAM C++ Mixed MIT/GPL 3
ssc Compute modules for SAM 2004 - * https://sam.nrel.gov https://github.com/nrel/ssc C, C++ Mixed MIT/GPL 3
RdTools Technical analysis of PV timeseries data 2016 - * https://rdtools.readthedocs.io https://github.com/NREL/rdtools Python MIT
PVFree API for obtaining PV modeling parameters 2015 - * https://pvfree.azurewebsites.net https://github.com/BreakingBytes/pvfree Python BSD 2
SolarUtils Python wrappers of C solar position and spectral decomposition 2016 https://sunpower.github.io/SolarUtils/ https://github.com/SunPower/SolarUtils Python BSD 3
Pecos Performance monitoring 2016 - * https://pecos.readthedocs.io https://github.com/sandialabs/pecos Python BSD 3
Solpy General purpose PV modeling 2011-2015 https://solpy.readthedocs.io https://github.com/nrcharles/solpy Python LGPL 2.1
PVMismatch IV curve calculator for mismatched cells 2012 - * https://sunpower.github.io/PVMismatch/ https://github.com/SunPower/PVMismatch Python BSD 3
photovoltaic General purpose PV modeling 2017 - * https://github.com/pvedu/photovoltaic https://github.com/pvedu/photovoltaic Python GPL 3
feedinlib PV timeseries modeling 2015 - * https://feedinlib.readthedocs.io https://github.com/oemof/feedinlib Python GPL 3
CASSYS PV system modeling 2015 - * https://github.com/CanadianSolar/CASSYS https://github.com/CanadianSolar/CASSYS Excel, C# BSD 3
Bifacial PV View Factor model Bifacial modeling 2017 - * https://bifacialvf.readthedocs.io https://github.com/NREL/bifacialvf Python Unknown
solaR General purpose PV modeling 2010 - * https://jstatsoft.org/article/view/v050i09 https://github.com/oscarperpinan/solar R GPL 3
pvfactors Diffuse shading and bifacial irradiance modeling 2016 - * https://sunpower.github.io/pvfactors/ https://github.com/SunPower/pvfactors Python BSD 3
pvcaptest Capacity testing per ASTM E2848 2017 - https://pvcaptest.readthedocs.io/ https://github.com/pvcaptest/pvcaptest Python MIT
SolarData Accessing public solar datasets 2018 - https://github.com/dazhiyang/SolarData https://github.com/dazhiyang/SolarData R GPL 2
SolCore modelling solar cells and semiconductor materials 2017 – * https://www.solcore.solar https://github.com/qpv-research-group/solcore5 Python LGPL 3
PVplr analysis of Performance Loss Rates 2020 – * https://doi.org/10.1109/PVSC45281.2020.9300807 https://cran.r-project.org/package=PVplr R BSD 3
PVAnalytics PV data QA and analysis 2020 - * https://pvanalytics.readthedocs.io https://github.com/pvlib/pvanalytics Python MIT
twoaxistracking Two-axis tracker shading 2021 - * https://twoaxistracking.readthedocs.io https://github.com/pvlib/twoaxistracking Python BSD 3
pvOps Fusion of text-based data with PV production data 2021 - * https://pvops.readthedocs.io https://github.com/sandialabs/pvOps Python BSD 3