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 – 2018

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

BSD 3

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 – 2021

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

cpvlib

Simulation of concentrator photovoltaic energy systems

2020 – *

https://cpvlib.readthedocs.io

https://github.com/isi-ies-group/cpvlib

Python

BSD 3