Skip to main content

Reference calculator for PV soiling loss and water-fed pole cleaning ROI in Canada.

Project description

Solar Panel Cleaning Yield Recovery

Reference calculator, datasets, and working paper on photovoltaic (PV) soiling loss, water-fed pole (WFP) cleaning engineering, and cleaning ROI for PV systems in Canada.

PyPI npm Crates.io License: MIT Docs: CC BY 4.0

What this is

A companion toolkit to the working paper Solar Panel Cleaning Yield Recovery: Soiling Loss, Water-Fed Pole Engineering, and Cleaning ROI for Photovoltaic Systems in Canada (v0.1.0, April 2026). The paper and this repository cover:

  • Soiling physics: how fast transmittance drops as dust accumulates, by climate zone and panel tilt
  • Water-fed pole engineering: deionized resin capacity as a function of inlet TDS, PV geometry to pole-length mapping, brush technique, and the fall-protection argument for grade-based operation
  • Regional solar resource: monthly irradiance for six Ontario cities
  • Cleaning economics: annual yield recovered vs cleaning interval for residential, commercial, and utility-scale systems
  • Regulatory crosswalk: OSHA, CSA, IEC, ASTM, Health Canada, NRCan, ECCC

Repository layout

datasets/        7 CSVs + generator + HF dataset card
pdfs/            Working paper (31 pages) + generator
docs/            Sphinx documentation (ReadTheDocs)
engines/         8 language implementations:
  python/        FastAPI + CLI reference engine (PyPI)
  rust/          Actix-web server (Crates.io)
  java/          Maven-packaged JAR (Maven Central)
  ruby/          Gem (RubyGems)
  elixir/        Mix package (Hex.pm)
  php/           Composer library (Packagist)
  go/            Go module (pkg.go.dev)
  nostr/         Long-form article publisher (6 relays)
notebooks/       Jupyter notebook (GitHub browse)
kaggle/          Same notebook + Kaggle metadata
observable/      ObservableHQ notebook markdown
public/          PHP form + JS calculator
SOURCES.md       Bibliography

Quick start (Python)

pip install solar-panel-yield-2026
python -c "from engine import calculate, _canonical_vector; print(calculate(_canonical_vector()))"

Or run the reference engine against the canonical test vector from the source tree:

python engines/python/engine.py sample

Or start the HTTP server:

python engines/python/engine.py serve --port 8000
curl -X POST http://127.0.0.1:8000/calculate -H 'Content-Type: application/json' -d '{
  "system_capacity_kwp": 5.0,
  "ghi_annual_avg": 3.54,
  "days_since_cleaning": 30
}'

Cross-language parity

All eight engines produce identical output for the canonical test vector:

Input Value
system_capacity_kwp 5.0
ghi_annual_avg 3.54 (Sudbury)
days_since_cleaning 30
soil_class medium
climate_zone temperate
panel_tilt_deg 15
electricity_price_cad_per_kwh 0.14
cleaning_visit_cost_cad 120.00
tap_water_tds_ppm 180
panel_height_ft 12
Output Value
current_loss_pct.expected 4.3485 %
lost_cad_per_day.expected 0.0862 CAD
clean_annual_kwh 5,168.4
never_clean_annual_loss_cad 86.83
wfp_pole_ft 10
wfp_cartridge 1L_cartridge
water_per_cleaning_l 15.2
ro_prestage_recommended false

Datasets

Seven CSVs published under CC BY 4.0; see datasets/README.md.

Working paper

31-page working paper, CC BY 4.0. Build from source:

pip install reportlab
python pdfs/generate_pdfs.py

License

  • Code: MIT (see LICENSE)
  • Datasets, PDF, dataset card: CC BY 4.0

Maintainer

Dave Cook, Binx Professional Cleaning, North Bay, Ontario, Canada. Contact: dave@binx.ca.

Project details


Download files

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

Source Distribution

solar_panel_yield_2026-0.1.0.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

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

solar_panel_yield_2026-0.1.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file solar_panel_yield_2026-0.1.0.tar.gz.

File metadata

  • Download URL: solar_panel_yield_2026-0.1.0.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for solar_panel_yield_2026-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6bfc363456e4386f2637e02c588637eff503fcc7526f09ac6ba63bd9e429ffce
MD5 a14f0ecd3e434d0d33f179ea70bea91d
BLAKE2b-256 cfe79a20930f8f323b796255803cc1929732fef6254deee4ad046cf8775ea36e

See more details on using hashes here.

File details

Details for the file solar_panel_yield_2026-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for solar_panel_yield_2026-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8b0f94f9fe6c9244f44d104d896a5976a37f8aa824bb7bbf2c2aba42b24cda09
MD5 768365172acd87a0aead5288d39af1b2
BLAKE2b-256 6a0cab26e6e76afaa7cf91dafedbc8f63b96eb88afa16d7a64b6d812c664689b

See more details on using hashes here.

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