Please read my disclaimer.
SunPower Corp., my employer, has open sourced a solar panel mismatch estimation tool called PVMismatch at the Python Package Index with a standard 3-clause BSD license. The documentation, source code and releases are also available at the SunPower Organization GitHub page.
PVMismatch can be used to simulate mismatch between cells, modules and strings in a PV system. Mismatch can be caused be differences in irradiance, say by shading or by changes to the electrical characteristics of the cells such as series resistance or dark current, and these changes can lead to a difference in the current-voltage relation of the cell (aka its I-V curve). For a module made from solar cells in series, the cells must carry the same current, leading to different voltages in each cell, and so the effective I-V curve of the panel will differ from an individual cell. In some cases a cell may be forced to operate in reverse bias in order to pass the current imposed on it.
There is a detailed example in the Quickstart section of the documentation, but here's a shorter demonstration of the basic features and usage:
from pvmismatch import * # this imports pvcell, pvmodule, pvstring and pvsystem # create a default PV system from 10 strings of 10 300[W] panels each pvsys = pvsystem.PVsystem() f = pvsys.plotSys() # plot the system f.show()
If you find any issues, please report them on GitHub. Also, if you want to contribute, there's lots to do, so please fork the repo.