Skip to main content

BREOS logo

BREOS - Building Renewable Energy Optimization Software

Tests PyPI Docs License: BSD-3 Python 3.11+

BREOS is a Python library for simulating and optimizing PV + battery energy systems (weather, PV production, battery aging, economics, emissions, and multi-objective sizing) behind one stable breos.App facade, with lower-level modules for building custom study pipelines. The PV modeling is powered by pvlib python, which supplies the solar position, irradiance, cell-temperature, and single-diode physics BREOS builds its production pipeline on.

📖 Full documentation: breos.readthedocs.io

Features

  • Weather: TMY from PVGIS, local weather files, and historical data from Open-Meteo at hourly or 15-minute resolution.
  • PV production — pvlib CEC single-diode model, with a small example module catalog to get started.
  • Multi-array systems — combine multiple faces/orientations (e.g. an east-west roof) at the DC stage instead of one representative tilt.
  • Battery — energy balance with calendar + cycle aging (Naumann 2020, Lam 2025) and field-calibrated LFP parameters, or one of 14 vendored BLAST-Lite aging models.
  • Battery control — greedy self-consumption by default; opt-in fixed-target grid charging and discharge-only windows under time-of-use prices.
  • Economics — NPV, LCOE, breakeven, and cost projections with flat or time-of-use tariffs, a separate tariff for the no-system baseline, and separate price escalators.
  • Monte Carlo — weather-year and demand resampling for NPV, payback, grid-independence, LCOE, and SoH distributions.
  • Optimization — multi-objective PV/battery sizing and orientation (pymoo NSGA-II), and parameter-grid sweeps.
  • Emissions — CO2 savings and projections.
  • Visualization — plots for energy balances, degradation, breakeven, Monte Carlo distributions, sweep heatmaps, orientation landscapes and Pareto fronts.
  • Bring your own data — every layer accepts custom inputs: PV module parameters, battery degradation coefficients, weather CSVs, load profiles, and cost/tariff/emissions assumptions. The packaged presets are starting points, not fixed defaults.

Installation

pip install breos

Or with uv:

uv add breos          # as a project dependency
uvx breos --version   # run the CLI without installing

Verify the installation and inspect a complete resolved configuration without creating a file, fetching weather, or running a simulation:

breos run --location porto --n-modules 10 \
  --annual-consumption-kwh 4000 --dry-run

The default install is a lean core. Some workflows need optional extras (e.g. optimization, historical weather, plots):

pip install "breos[optimization,weather,plots]"

See the installation guide for the full list of extras and a source/uv setup.

Quick Start

import breos

app = breos.App({
    "location": "porto",              # preset or {"latitude": ..., "longitude": ..., "timezone": ...}
    "n_modules": 10,
    "annual_consumption_kwh": 4000,
    "battery_kwh": 5.0,               # 0 for no battery
    "cost_preset": "residential_pt",
    "emissions_country": "PT",
})

app.simulate()
result = app.result()

print(f"Grid independence: {result['grid_independence_pct']:.1f}%")
print(f"Payback: {result['payback_year']} years")
print(f"NPV savings: {result['npv_savings']:,.0f} EUR")

result() returns a plain JSON-serializable dict. Money fields are in the currency recorded in result["provenance"]["currency"] (EUR for the bundled cost presets). The configuration reference lists every option, and interpreting results documents every output field.

For real studies, bring your own weather and API access where required, licensed load profiles, and your own cost/tariff assumptions. The packaged defaults make the tool runnable, not project-grade.

Command Line

Run a simulation without writing Python:

breos run --location porto --n-modules 10 --annual-consumption-kwh 4000 \
  --battery-kwh 5.0 --cost-preset residential-pt --emissions-country pt \
  --output result.json

The CLI also drives config files, parameter sweeps, and Monte Carlo studies, and breos list <category> shows bundled presets (locations, modules, cost presets, …). See the how-to guides and the case examples.

Citation

If you use BREOS in your research, please cite the software and the version you used. GitHub's "Cite this repository" button reads the metadata in CITATION.cff, or use:

@software{rodrigues_breos,
  author = {Rodrigues, Leonardo},
  title  = {{BREOS}: Building Renewable Energy Optimization Software},
  url    = {https://github.com/Str4vinci/breos},
  note   = {Version X.Y.Z}
}

BREOS results that depend on PV production also depend on pvlib. Please cite it alongside BREOS:

@article{anderson2023pvlib,
  author  = {Anderson, K. and Hansen, C. and Holmgren, W. and Jensen, A. and Mikofski, M. and Driesse, A.},
  title   = {pvlib python: 2023 project update},
  journal = {Journal of Open Source Software},
  volume  = {8},
  number  = {92},
  pages   = {5994},
  year    = {2023},
  doi     = {10.21105/joss.05994}
}

pvlib additionally asks that you cite the Zenodo DOI for the specific pvlib version you used.

Acknowledgements

BREOS stands on work done by others:

  • pvlib python — the PV modeling foundation: solar position, irradiance transposition, IAM, cell temperature, CEC single-diode evaluation, PVWatts losses, tracking, and inverter helpers. BREOS composes these into a production pipeline with staged losses, degradation, and multi-array handling; the underlying physics is pvlib's.
  • BLAST-Lite (NREL) — vendored battery life models.
  • demandlib — basis for the bundled example H0 load profiles.
  • pymoo — NSGA-II multi-objective optimization.
  • PVGIS (EU JRC) and Open-Meteo: weather and solar resource data.

Model choices, defaults, and any errors in how these are combined are BREOS's own, not those of the upstream projects. See ATTRIBUTIONS.md for the full list with licenses and terms.

Contributing

See CONTRIBUTING.md. Feature work happens on branches off develop and merges via pull request; main tracks stable releases only.

Contact

Usage questions and feature ideas: GitHub Discussions. Bugs: issues. Research collaboration or private enquiries: lrodrigues@fe.up.pt.

License

BSD 3-Clause. See LICENSE.

Metadata

Release files for breos 0.7.0

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

Source distribution (sdist)

Source distribution for breos 0.7.0
File Size Uploaded
breos-0.7.0.tar.gz 3.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for breos 0.7.0
File Interpreter ABI Platform
breos-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 4.5 MB

Release files / breos-0.7.0.tar.gz

Download URL breos-0.7.0.tar.gz
Size 3.5 MB
Tags Source
SHA-256 checksum
How to use checksums
ef21b718f4f9a1f3c7fd7c99ea96ebc89c1c94bcdcc8b390139f8e784c350471
BLAKE2b-256 checksum
How to use checksums
7b152763ea2262a6c98dc39a01c4bbc3173062d347813943353542f4ddfac228
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 2, 2026.

Transparency log

Release files / breos-0.7.0-py3-none-any.whl

Download URL breos-0.7.0-py3-none-any.whl
Size 938.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a8ee63c3dc4af4ea5ee0254a57928653fb4f3759fa316d99e7d8a557bbcc7418
BLAKE2b-256 checksum
How to use checksums
7f419fdae950e97f4a9a088d735f9ca89f33b67b44d6b007579310a23a745f03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

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