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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

pv_circuit_model-0.5.0-cp312-cp312-win_amd64.whl (589.4 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

pv_circuit_model-0.5.0-cp311-cp311-win_amd64.whl (591.6 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 341e36e1a1d3c3942f19db535cd1d232a73efe15b6d6f47845564dcc3f276ba3
MD5 df50a36900a6df522507df10dc89c42e
BLAKE2b-256 bdf12ffbd1b54099af3f00204b43c1f13f53327be5872943d11a19ea99c80a94

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4fb0917c366ac5c9ea067beb2251aa141734b444f3842e9591a5696da8d95cd6
MD5 736e5d676be16332d3e6274827285e98
BLAKE2b-256 a3bec5e83a05d727a6bcb43af624b3e3963f466cbd420fe6edbf124c8bedaa47

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 04cd81ef41b2d504a02a1c2e7bfbe2617caab2e393a5eaff0e7ba98903916162
MD5 91b6575ed2a872525e32199f309dfaec
BLAKE2b-256 6d19f39cd0151acc902959eba135683ca864d8ed23a2c5e91ab01afd39c555f2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84816d2e0d2cd695f4b9458e8c0575890dc8e7b6febbe6caa0b4a15c1440388f
MD5 cecefcf9fbc6cec3db3df73d6f96e5a4
BLAKE2b-256 3c281bc466c100acc2cd32dcc17aadc86bb75857fa84fe9b764943c7f12dcfb0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e62fa45468b551bcf4b1953485bba2f3a773d53e8f00a0d6e816c506c4d85e38
MD5 4f30a15f3e294ad646b0c41616c20685
BLAKE2b-256 c7d0814c8203e17f69b77b533cee5e0eec840315ce293aa2cff8656841188ae9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0c99397c5396ebb9f813ca441230bd7a0f24eec769bb4fc8329c54df750bff85
MD5 1bb3be0be7000809744c064d987bc4af
BLAKE2b-256 a4abbb8ea090904d78f8ed23a66ce9657a2cdf46bc02f08f6e68fb8f2349aa7b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 59bbbbaae2bb4acc6dd54729afedc9cfc482546b6f3b7da753f43b4920132525
MD5 11d79b522788366123c6582d5579350b
BLAKE2b-256 d364973a753d96c14ac0918f8b916b8f1e76eb16248ec99f8fd8800bd1a3dd58

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1529c0aff618af2829d33fe566320a5d8acc2e21233474312fa854eb35d66cf
MD5 2e685f0d0675d9f3bfa495bcf11c4b2b
BLAKE2b-256 1f24cc6dca1a2ea43cf89df812aa6591f0eddc92a7f96200fdee0de7aaeaad26

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 372400ffa7531f6647a7ab63ab11baf835a33c44a7ba0142d84fa0d3eb131432
MD5 4dc9092be893786d37139ee320fd63b9
BLAKE2b-256 59c9e2160062e043bf6a82eab88746da5786f60c9fe61106b34ac7663f652782

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 933948f4106dd42058c333b9baae5ab0546a019aaa16b3a058803dddb11bfefe
MD5 7a7e31bc968f10bad19400400560d5f3
BLAKE2b-256 0089d85e21449f01e475987930260df5d58dd45f76ca3f085e6b56494c678c7d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 387d89aaf7108d1e2c823b90e93f4bb65738cd29c05d3840789e595ebee40933
MD5 9b48a64bb14399753f462208c6a1a745
BLAKE2b-256 dfa6fab563ce59e701b9b0a56a8475ed70a01cb2389ef9859c491930ed217474

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pv_circuit_model-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 436541ac0f35224db080fec4f0fdfda50cc948ec851b88f8014aa051206ead23
MD5 23a83096e033917532b5c2b5410ddd71
BLAKE2b-256 8b8daa051f51c48014388a691df9c09405cb8d0e2b65ffb7db8e0502a428e184

See more details on using hashes here.

Provenance

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