Skip to main content

PV Circuit model for cells, modules and components with additional tools for simulations and model fits to measurement data

Project description

📦 PV Circuit Model – Overview

Solar cells are often arranged in a hierarchical network of series and parallel connections. Here's is an example representation of a solar cell modeled using this structure:

PV_circuit_model

To simulate the I–V curve of any photovoltaic (PV) system—whether it is a single cell or a utility-scale array consisting of over 100,000 cells—one simply adds the voltages of components connected in series and the currents of components connected in parallel. This direct hierarchical composition approach is orders of magnitude faster than SPICE-based simulations, which rely on iterative Newton solvers. Moreover, the performance gap grows rapidly as circuit size increases.

PV Circuit Model is a Python library that implements this approach, and we refer to this hierarchical I–V composition method as CurveStack. CurveStack includes several useful numerical tools, such as:

  • Adaptive remeshing near a desired operating point (e.g., maximum power point)
  • Computation of tight upper and lower bounds on the I–V curve
  • High-precision error estimation of derived I–V parameters—often reaching 10 parts-per-million accuracy, even for very large systems

In addition to CurveStack, PV Circuit Model also provides tools to simulate and analyze standard PV measurements (e.g., I–V curves, Suns-Voc), along with workflows for fitting circuit models to experimental data. It also provides built-in functionalities like the dark current due to intrinsic silicon recombination, and luminescence coupling in tandem cells, which make it convenient to do various calculations related to solar cells.

🛠️ Getting Started

  1. Install the package in development mode: pip install -e .

  2. Run example code You can test the package functionality by executing the example script inside the examples/ directory:

⚙️ Platform Support & Build Requirements

Current Support Status

Windows: Supported (CI-tested on GitHub Actions)
Linux: Supported (CI-tested on GitHub Actions)
macOS (Apple Silicon): Supported (CI-tested on GitHub Actions; OpenMP disabled by default)

Python versions: Tested on Python 3.11, 3.12, 3.13

Build Requirements (Mandatory)

PV Circuit Model includes compiled C++/Cython extensions A native build toolchain must be available at installation time.

  • Windows: Microsoft Visual C++ Build Tools (MSVC)
  • Linux: A C/C++ compiler toolchain (e.g. gcc, g++, make) with OpenMP support
  • macOS: A C/C++ compiler toolchain (e.g. Xcode Command Line Tools) will be required once macOS support is validated Precompiled wheels are not yet provided for all platforms; building from source is currently required.

Validation / Benchmarking

Since v0.2.0, PV Circuit Model calculation outputs are compared to LTspice Version (x64): 24.0.12 as part of the test plan. See test/a05-a10 cases. All I-V curves points agree to within 0.01% (1e-4) and the Pmax agree to within 0.001% (1e-5).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pv_circuit_model-0.4.1-cp313-cp313-win_amd64.whl (567.5 kB view details)

Uploaded CPython 3.13Windows x86-64

pv_circuit_model-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pv_circuit_model-0.4.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pv_circuit_model-0.4.1-cp313-cp313-macosx_11_0_arm64.whl (569.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pv_circuit_model-0.4.1-cp312-cp312-win_amd64.whl (567.5 kB view details)

Uploaded CPython 3.12Windows x86-64

pv_circuit_model-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pv_circuit_model-0.4.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pv_circuit_model-0.4.1-cp312-cp312-macosx_11_0_arm64.whl (570.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pv_circuit_model-0.4.1-cp311-cp311-win_amd64.whl (569.7 kB view details)

Uploaded CPython 3.11Windows x86-64

pv_circuit_model-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pv_circuit_model-0.4.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pv_circuit_model-0.4.1-cp311-cp311-macosx_11_0_arm64.whl (573.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file pv_circuit_model-0.4.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9559e5edbc3e4165f2991dfe6884510782369afa962dc2ce7469c45966003a10
MD5 cd6e46987c6a98eb963d31136a4a4edb
BLAKE2b-256 274ee93b53cefd4129e3d94948d7b6eb1ab71d6d1a20b1be134baa2c52b7565c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4d6e9c1ccdb8b8b4b92a88e904d01901e57f31ac51eb0515106fe1907cb96b2f
MD5 b00b8b25769896e3b175e1523cf72999
BLAKE2b-256 b00b2ba041d29300e50cfce51f139fc4b686d184c4869fd2d8b0748a6f0d42ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f2912430b64c954f4af0431f06148f0f1e0537719ba88d652587b8401ca4037c
MD5 01e77f7f76dc0ff48e537b2a21cced43
BLAKE2b-256 82a765c30ee0915091aa80de3a97000219261ea3b927caf5897ea298b09eddf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ad46092abbc7de9f244eb64ea771d56d81aee63b52e9704057ecbd1db80c423
MD5 3f4f61a9d418b1ec2a236f7daf9bf79a
BLAKE2b-256 2b3d09fdd1fff01bbdaea3cce54394801ee09194f6a8cb34561092d2bbd1ce8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0e6abe77f19e486cea608d814021e28c3cf5677f94c40ed84fae581748e3468b
MD5 b38473074d1c05780f97de9ba050d45e
BLAKE2b-256 692760f8381a527f963170f01ad1dc2c6e6eb817a00152bf7bc79642a9952b38

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3f2d97d681ad9082435f5ffb0e7d1e0ac5787ce9970bfb4492037aca95f482ae
MD5 994e46f446ea4116dff55c4e7e463156
BLAKE2b-256 d76c882da4ed6b489b01a25ddd468ccf1e3de7697f9bda5e53b56774d31116e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 991938c164934196c0e0fd18c3dc493a093c94873e59960c2f49d218dda290da
MD5 7d5ab7fc6d96ebd6aca0d1edaf58d5ce
BLAKE2b-256 5a09a8e77f8e7a4992ae85a304b0f20ab2fdc014ae2b843d58ceafadbbf25620

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 237733288ba7854f715545a7c0b64120256d50bfaa062ba91eb79564c81f510a
MD5 ac5372090cc9aeb43accca23523785c9
BLAKE2b-256 472c4d08da80ef05cb0dcf1af4678a7dcfad8423f54c42866505e03e623e02eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7e1782460605851d15a80eb5e6f51febeb0df3224fc3a46447b35ecdc48118d5
MD5 ba3f0ea6af8dcfb4a1df0c45c6c57fb1
BLAKE2b-256 047bcfbf694d5d332d2f03bc1e8045bcbbac1dcdac035f5f5f58d9173594e8fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0d4d1dc0eb597191121b5ddfc4a746c6dff459cbe954345bad349273c1feadaa
MD5 543ce63eaafd9fdf087bed99c0c51ff3
BLAKE2b-256 445339028660e02b917826e2dda40402416d887209f755150500c67fe1103d05

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 15d3defa7c1bae85b7013a3665db433ab48ee4b085b61c8ae21c55b87caab521
MD5 df705f0556ff54e4ad64893940547729
BLAKE2b-256 adeddc085554fe23bde0295d3472eba63be9a9416bcf8a93945631705d29013f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pv_circuit_model-0.4.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b3cb777ad9b1c56df956721c40cc6a5245582cd21f9a04bd43e8298298207eba
MD5 7c0d2013370b2ce7d7873531ab6e4e80
BLAKE2b-256 8260900c96e9c21db33342a305e5fa19c40695fd8916ec0da1a6007036e06259

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.4.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on griddler-j/PV_circuit_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page