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

Uploaded CPython 3.13Windows x86-64

pv_circuit_model-0.6.0-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.6.0-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.6.0-cp313-cp313-macosx_11_0_arm64.whl (593.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pv_circuit_model-0.6.0-cp312-cp312-win_amd64.whl (592.1 kB view details)

Uploaded CPython 3.12Windows x86-64

pv_circuit_model-0.6.0-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.6.0-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.6.0-cp312-cp312-macosx_11_0_arm64.whl (594.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pv_circuit_model-0.6.0-cp311-cp311-win_amd64.whl (594.3 kB view details)

Uploaded CPython 3.11Windows x86-64

pv_circuit_model-0.6.0-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.6.0-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.6.0-cp311-cp311-macosx_11_0_arm64.whl (597.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 758d69f9504ceedb826ba452fd4f0187f3f657b9c80ae0a4408f96dcddf6434b
MD5 bd3c1ec02b1e128ad6879fb0edc7e59f
BLAKE2b-256 05a8a995c796f4218a2c70299b29e77c831c52ca1127fd8e6ae1a20a88adcaee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 29ea15734095d83be929ca0bde32a1a6aa39556c911bea8e83ef6b724b9e5563
MD5 4c3b18083c4588f94506d60bfcbbdd7c
BLAKE2b-256 58aea03a37cc9d97f077059ce0fddecc5077eadf9fdc66ad90ba11fdc0df50dc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5ca23ea18ea96593f73975a2786dadf54566f59bb42ccda6a14011c1b2c46de4
MD5 5ff3ee8e967109316933585da73257c0
BLAKE2b-256 6339f255b2bdbbb0c0dc219c523203fb331ac39b9b286029bd9899953bd9f2c5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce97aa66db3fbf25486b52f4eb6d8c0e119b8a686c5ee96ed8759c831cec1a11
MD5 2104b05a9e4aab0858324af7dc839ff9
BLAKE2b-256 fe89c29506fca172100d9ba48cb6bd14e480fa270dd090ac493363a9625d9ff3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 61693b600a9fd76efe9c1f14115e202ff8fb58019942ecea1f0e47c776bc8390
MD5 2c4a02d6cc5922fe780560fc1fbe5ed3
BLAKE2b-256 70223f8865dfe0415e2cafa48f1d622f6ff7538968c3a2fa23dd8353e40da583

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8ac5abfc1bb3e535d5de37ac9e98af463f449eebf362e38a53b0484a83c4a0ba
MD5 647955e26d6bc78b4760d392bbf13700
BLAKE2b-256 f1095edf6f3a66835599e5c654b7c8852038dd1950ef1634c3dc2ba2964f8650

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 529ac21d7c8f8a4601debd6311baf3b680e7738b0a06831e654f48c06134c819
MD5 3d0ffcb13b4da64f0d77ebddcae7df76
BLAKE2b-256 ca33e39cd942fd7ebfc09e029bf93a2e71e876bf75a557039fdb23c9184d830a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 54cabb81308ab348224552cbf42b3e42eca8191ff7f306762a00aae13f4ef101
MD5 78b853bd1b8d5ecd5ed4c818dc0192ee
BLAKE2b-256 012523bf3fff27cd5081a6010ad4d7144854dc01020f6352a4295f9590efe244

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 04d5803736e835cbf5f341e2e26b9820ec4cbd281af512b235e35f53fb7cb8a5
MD5 f7bfbe2e1fc1637c3d1361c09ecb6fef
BLAKE2b-256 fce67e83abff8f9faef2dfe69e7eb075917fb57be534f8030880af42fd7d8926

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 94f36df0d088a85d10dc3cf0389ace3149166c8b344b2d0b5d1691ec738748a8
MD5 f7d53cafbaf54d32cbac5497a45286d2
BLAKE2b-256 b970ea41dfcaff87c31747acf540819070aeae9d434f12e6b87268d9512997fd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19e5dc805b7c2dd87e564f3ba655c01296ccdf6d8be4006ff53d962fe53f15dd
MD5 26c2e63b082d6ac8c2e6ad6bfb40f937
BLAKE2b-256 564a39d8288483fb6c32f8c2773a1a0933e59207ce068bb2ff3372b017b5e655

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d9e0dbfa1d1c71cc27a46e58887433283404a8f92e120d7b0ab5831c6e4a22c
MD5 9be2f84a259e29d7d0fa045fe0402cba
BLAKE2b-256 9ed638d7d742fafe2737d19f2ae0a28487e8d459f12d2ca853552fe045b86077

See more details on using hashes here.

Provenance

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