The open-source engine for solar simulation.
BREOS is the research-grade core behind Verlantis: physics-based PV, battery and economics modelling. Available now on GitHub.
Five modules, one simulation.
BREOS chains five modules into a single physics-based run: weather drives PV, PV and the load profile meet at the energy balance, and the balance resolves into economics.
Built like research, shipped like software.
An engine you can inspect, extend and trust.
Open source
BSD-3-Clause and public on GitHub. No black boxes, no lock-in.
Research-grade
Born from PhD work at the University of Porto, validated against peer-reviewed models.
Modular Python
A clean App facade over composable modules. pip install and call simulate().
Multi-objective sizing
NSGA-II balances NPV, self-sufficiency and cost to size PV and storage.
Honest physics, not a rule of thumb.
Each module is a real model, wired so the assumptions stay visible end to end.
- Multi-array roofs — east-west and mixed pitches are modelled separately, never collapsed to one surface.
- pvlib transposition — industry-standard irradiance and cell-temperature models.
- Battery aging — calendar and cycle degradation after Naumann and Lam.
- NSGA-II sizing — multi-objective optimisation of PV and storage.
- Uncertainty tooling — Monte Carlo and sensitivity utilities for risk-aware studies.
- Economics — NPV, LCOE, payback, yearly cashflows and emissions.
Validated the same way the science was.
No black box. Every model is published, every result is reproducible, and the whole engine is open to audit.
- PV physics
- pvlib (Sandia / NREL lineage)
- Battery aging
- Naumann et al. · Lam et al.
- Optimisation
- NSGA-II (Deb et al.)
- Origin
- PhD research · University of Porto
- License
- BSD-3-Clause
Bring your own everything.
Sensible defaults to start, full control when you need it. Swap in the modules, consumption data, site and tariffs your project actually uses — none of it is hard-coded.
- Your PV modules — pick from the catalogue or set each array's module, tilt and azimuth.
- Your load profiles — feed your own metered consumption CSVs, not just standard curves.
- Your site & weather — any latitude and longitude, with historical weather fetched automatically.
- Your economics — cost presets, inflation and discount rates you control.
From pip install to results.
The run loop is short: install, hand the engine a config, simulate, read the result. The modelling work lives in that config: your arrays, battery, tariffs and weather source.
$ pip install breos
from breos import App app = App(config) # arrays, battery, tariffs, weather app.simulate() # run the physics res = app.result() # production · payback · NPV · LCOE · emissions
It's open. Read it, run it, build on it.
BREOS is free and public today. Star it, file an issue, or wire it into your own tools. Subscribe to hear when new releases land.