Battery#

Configuration, indoor temperature modelling, and the calendar and cycle degradation primitives used by the energy balance.

The default calendar model, naumann_lam_field_calibrated, maps to the v1 field-calibrated parameters. naumann_lam_field_calibrated_v1 is the explicit alias. naumann_lam_field_calibrated_v2 selects the v2 field-calibrated fit with Lam Ea/n fixed and k0/b fitted to field data.

Configuration#

breos.battery.BatteryConfig(nominal_energy_wh)

Configuration parameters for battery simulation.

Temperature model#

The indoor temperature model couples ambient air temperature to a damped indoor series — relevant for calendar aging, which is strongly temperature dependent.

breos.battery.apply_indoor_temperature_model(...)

Transform outdoor temperature to indoor temperature for battery simulation.

breos.battery.compute_cell_temperature(...)

Compute battery cell temperature using a quasi-steady-state lumped thermal model.

Cycle detection#

breos.battery.detect_cycles_rainflow(...[, ...])

Detect charge/discharge cycles using rainflow counting (ASTM E1049).

breos.battery.detect_half_cycles_from_soc_series(...)

Detect charge/discharge half-cycles using local extrema logic.

breos.battery.compute_halfcycle_energy_throughput(hc, ...)

Compute energy throughput (Wh) for a half-cycle.

Degradation primitives#

Low-level update functions that the energy balance loop calls each timestep. Use these directly only when reproducing or critiquing the degradation model.

breos.battery.update_battery_soc(...)

Calculate normalized and absolute SOC.

breos.battery.update_battery_soh_calendar(...)

Generalized calendar aging using power law physics (Naumann / Lam 2025).

breos.battery.update_battery_soh_cyclewise(...)

Calculate cycle-induced degradation using Naumann's semi-empirical model.

breos.battery.update_battery_resistance_calendar(...)

Calculate calendar-induced resistance growth using Naumann's model.

breos.battery.update_battery_resistance_cyclewise(...)

Calculate cycle-induced resistance growth using Naumann's model.

breos.battery.resistance_to_efficiency(...)

Convert resistance growth to effective charge/discharge efficiencies.