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.5.1-cp313-cp313-win_amd64.whl (593.2 kB view details)

Uploaded CPython 3.13Windows x86-64

pv_circuit_model-0.5.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.5.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.5.1-cp313-cp313-macosx_11_0_arm64.whl (594.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pv_circuit_model-0.5.1-cp312-cp312-win_amd64.whl (593.2 kB view details)

Uploaded CPython 3.12Windows x86-64

pv_circuit_model-0.5.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.5.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.5.1-cp312-cp312-macosx_11_0_arm64.whl (595.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pv_circuit_model-0.5.1-cp311-cp311-win_amd64.whl (595.4 kB view details)

Uploaded CPython 3.11Windows x86-64

pv_circuit_model-0.5.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.5.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.5.1-cp311-cp311-macosx_11_0_arm64.whl (598.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7a82143cde39cdb6bdba3fe9dfff1f2c8e7110e91d6be16635751d98a9733400
MD5 d9393d6ae30443dde36c326b76e7ae5a
BLAKE2b-256 0ce748cbcdfa4d77a6baf827519d2891f7d446d2c6c0228e628ef4ca94ad793e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 50169d7eb716711e3ade4ca9522965097c6cc07b64e0da0b0a35858c59f7aadc
MD5 3685841285752bd10fc45987736649ef
BLAKE2b-256 a292e1e3551be3e7124694072f87a25787c24516e223e249245ee64db7a9f8b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 790b9de898a81b790715779983f2675aadfe03414704351042a30c02d427f6ba
MD5 eb99e990545b320b119543d88547120a
BLAKE2b-256 6d63fff156ca545de7163f042e88558073afcde9650445d5d686cf89cb52c0ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae8e5a8874698e49a6f6f818c3877d8b599660d799e8f07cd2c03d3dde4b2a21
MD5 91551f7fee76dc8026d80d79a2592c5a
BLAKE2b-256 940f5e44b93551db3f340b4cb75ecd61c6dbc7d27c4af7d35b59c428ad654713

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ed3435e69452591c71d125d75b06b7fe75b34ced5b056066158d90bc569ad325
MD5 5c3675e73f3e2dc8b2040edb43fce317
BLAKE2b-256 02d839be39ce8541703bc4529e777305dcf21f147822d82e683cc812684089ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e1e5f11a1180a8c6e84352ca036af3bf197b2ce43815cca1a2f9f256cf0a0c91
MD5 0a6d7e6471c10987bd18bfcc7f2ba660
BLAKE2b-256 57fa4caacd23fadc238b52e2429452faba83daad6dd6adcf189a219d011a9343

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 53bb2103031d9481fd7ec1227b9f206760111202e76be95cf96199eafbf0ab3d
MD5 dbfaeabcf3992429f2dc3dfd2b0bb148
BLAKE2b-256 db2ce2da7d4eaaa71eb2812d37fdcc5435b386dd1410a146d8c71b524e6a6d63

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 02da2753e4e9b16fbf48bb773b20578d8eebd0a65ef41263080458f95df999cb
MD5 685c7b1fad7f8e497b6c7d7533d2c234
BLAKE2b-256 6a636b861a1b920d461db41ca7de4f7c8dd47f2befde90ff7dc47501d928cf81

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3c8d449d554fe35a47c624f9753834ec556959770e3b010526a08db739dfa89e
MD5 2093a6c65bcd7f71e555c66806a94cf2
BLAKE2b-256 133759a858617f2cb4234efdffa18a55e9c9dd44366b04fc034dfd74768cda6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ad15a2542f961aad32324c89238def48dbf5f98e5a93e6ffb9bd314784ad71ef
MD5 5a4e87f0e284c59e8f10497c49b5f79f
BLAKE2b-256 2447fa169c47afc1f5c3349f94c314d2b4ffd3b4c7f1d818fad5a1f1e84347cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5e1e9068aa3f573edf15ec2f7be8c04c1595a153330f5e6024dcd1bd7baa727c
MD5 feb59bb2a2c6a76b876aa4e67d161a95
BLAKE2b-256 67fab827f8e4386047a1691e2e3951ac53a10da0faf24ca7f03ae39073894aca

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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.5.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pv_circuit_model-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 87b320299291bacfbd92f2f24bc40d801cccedb21f5f0fde0efd6f46b4ccfb72
MD5 58868b529d8677032ffb40363d009b41
BLAKE2b-256 db8f16ae35547139878549dae951499b87943497ed076f8edf8c3f1e780fb6bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pv_circuit_model-0.5.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