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.

View 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.

WEATHER irradiance · temp PVGIS · Open-Meteo G,T PV · PVLIB multi-array production model kWh RLP · LOAD representative demand profile load ENERGY BALANCE dispatch + storage battery & aging self-consumption · grid FINANCIAL NPV · LCOE payback · emissions

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
Source
github.com/Str4vinci/BREOS ↗

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.

shell
$ pip install breos
run.py
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.

View on GitHub
v0.3.4BSD-3-ClausePython ≥ 3.11