Skip to main content

📦 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).

Metadata

Release files for PV-Circuit-Model 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for PV-Circuit-Model 0.6.0
File
pv_circuit_model-0.6.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pv_circuit_model-0.6.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
pv_circuit_model-0.6.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
pv_circuit_model-0.6.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pv_circuit_model-0.6.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pv_circuit_model-0.6.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
pv_circuit_model-0.6.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
pv_circuit_model-0.6.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pv_circuit_model-0.6.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pv_circuit_model-0.6.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
pv_circuit_model-0.6.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
pv_circuit_model-0.6.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 16.8 MB

Release files / pv_circuit_model-0.6.0-cp313-cp313-win_amd64.whl

Download URL pv_circuit_model-0.6.0-cp313-cp313-win_amd64.whl
Size 592.1 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
758d69f9504ceedb826ba452fd4f0187f3f657b9c80ae0a4408f96dcddf6434b
BLAKE2b-256 checksum
How to use checksums
05a8a995c796f4218a2c70299b29e77c831c52ca1127fd8e6ae1a20a88adcaee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pv_circuit_model-0.6.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
29ea15734095d83be929ca0bde32a1a6aa39556c911bea8e83ef6b724b9e5563
BLAKE2b-256 checksum
How to use checksums
58aea03a37cc9d97f077059ce0fddecc5077eadf9fdc66ad90ba11fdc0df50dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pv_circuit_model-0.6.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5ca23ea18ea96593f73975a2786dadf54566f59bb42ccda6a14011c1b2c46de4
BLAKE2b-256 checksum
How to use checksums
6339f255b2bdbbb0c0dc219c523203fb331ac39b9b286029bd9899953bd9f2c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL pv_circuit_model-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
Size 593.4 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ce97aa66db3fbf25486b52f4eb6d8c0e119b8a686c5ee96ed8759c831cec1a11
BLAKE2b-256 checksum
How to use checksums
fe89c29506fca172100d9ba48cb6bd14e480fa270dd090ac493363a9625d9ff3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp312-cp312-win_amd64.whl

Download URL pv_circuit_model-0.6.0-cp312-cp312-win_amd64.whl
Size 592.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
61693b600a9fd76efe9c1f14115e202ff8fb58019942ecea1f0e47c776bc8390
BLAKE2b-256 checksum
How to use checksums
70223f8865dfe0415e2cafa48f1d622f6ff7538968c3a2fa23dd8353e40da583
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pv_circuit_model-0.6.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
8ac5abfc1bb3e535d5de37ac9e98af463f449eebf362e38a53b0484a83c4a0ba
BLAKE2b-256 checksum
How to use checksums
f1095edf6f3a66835599e5c654b7c8852038dd1950ef1634c3dc2ba2964f8650
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pv_circuit_model-0.6.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
529ac21d7c8f8a4601debd6311baf3b680e7738b0a06831e654f48c06134c819
BLAKE2b-256 checksum
How to use checksums
ca33e39cd942fd7ebfc09e029bf93a2e71e876bf75a557039fdb23c9184d830a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL pv_circuit_model-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
Size 594.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
54cabb81308ab348224552cbf42b3e42eca8191ff7f306762a00aae13f4ef101
BLAKE2b-256 checksum
How to use checksums
012523bf3fff27cd5081a6010ad4d7144854dc01020f6352a4295f9590efe244
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp311-cp311-win_amd64.whl

Download URL pv_circuit_model-0.6.0-cp311-cp311-win_amd64.whl
Size 594.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
04d5803736e835cbf5f341e2e26b9820ec4cbd281af512b235e35f53fb7cb8a5
BLAKE2b-256 checksum
How to use checksums
fce67e83abff8f9faef2dfe69e7eb075917fb57be534f8030880af42fd7d8926
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pv_circuit_model-0.6.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
94f36df0d088a85d10dc3cf0389ace3149166c8b344b2d0b5d1691ec738748a8
BLAKE2b-256 checksum
How to use checksums
b970ea41dfcaff87c31747acf540819070aeae9d434f12e6b87268d9512997fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pv_circuit_model-0.6.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
19e5dc805b7c2dd87e564f3ba655c01296ccdf6d8be4006ff53d962fe53f15dd
BLAKE2b-256 checksum
How to use checksums
564a39d8288483fb6c32f8c2773a1a0933e59207ce068bb2ff3372b017b5e655
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Release files / pv_circuit_model-0.6.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL pv_circuit_model-0.6.0-cp311-cp311-macosx_11_0_arm64.whl
Size 597.7 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8d9e0dbfa1d1c71cc27a46e58887433283404a8f92e120d7b0ab5831c6e4a22c
BLAKE2b-256 checksum
How to use checksums
9ed638d7d742fafe2737d19f2ae0a28487e8d459f12d2ca853552fe045b86077
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

Security for PV-Circuit-Model 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 12 files in this release have been uploaded with provenance metadata.

Select from 12 files

Attestation for pv_circuit_model-0.6.0-cp313-cp313-win_amd64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 28, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page