Skip to content

Battery Energy Storage (BatteryBESS)

Class: BatteryBESS | Module: energysim.models.storage | Validation benchmarks | Units

Overview

Lithium-ion Battery Energy Storage System (BESS), Rint equivalent circuit.

The pack is a Rint model: an open-circuit voltage source Voc(SoC) in series with an internal resistance Rin(SoC) (no RC / Thevenin polarisation branches). Models:

  • OCV curve Voc(SoC) and internal resistance Rin(SoC)
  • inverter efficiency eta(P/P_rated)
  • SoC integrates the stored chemical power VocI, so joule heat I^2Rin is accounted for: P_dc = VocI + I^2Rin (energy in = stored + heat)
  • 1-state thermal balance: C_th * dT/dt = I^2 * Rin - (T - T_amb) / R_th
  • calendar fade (Arrhenius-scaled) and cyclic fade (full equivalent cycles)

Parameters

Parameter Type Default Unit Description
name str 'BESS' - -
capacity_mwh float 1.0 MWh Nominal energy capacity in MWh.
p_max_mw float 0.5 MW Maximum charge/discharge power in MW (AC side).
soc_init float 0.5 1 Initial state of charge [0.0, 1.0].
soc_min float 0.05 1 Operating SoC window; requests are scaled so SoC never leaves it.
soc_max float 0.95 1 Operating SoC window; requests are scaled so SoC never leaves it.
nominal_voltage_v float 800.0 V Pack nominal DC voltage in Volts.
c_th_kj_k float 50000.0 kJ/K Lumped thermal capacitance of pack in kJ/K.
r_th_k_w float 0.002 K/W Thermal resistance to ambient in K/W.
t_init_c float 25.0 degC Initial battery temperature in degrees C.
ocv_curve Optional[Curve1D] None - -
rin_curve Optional[Curve1D] None - -
inverter_curve Optional[Curve1D] None - -
step_size float 1.0 s -
calendar_fade_pct_per_year_25c float 2.0 %/year Calendar capacity fade per year at 25 C (Arrhenius scaled, Ea = 25 kJ/mol).
cycle_life_to_eol float 4000.0 - Full equivalent cycles (2 x nominal capacity of DC throughput) to reach eol_fade.
eol_fade float 0.2 - Cyclic capacity fade at cycle_life_to_eol (0.20 -> 80 % SOH).

Inputs

Variable Unit Description
P_cmd MW Active power setpoint (positive = charge, negative = discharge)
T_amb degC Ambient surrounding temperature for convective cooling

Outputs

Variable Unit Description
P_actual MW Actual active power delivered to or absorbed from the grid
SoC 1 Current battery state of charge fraction
T_batt degC Internal lumped battery pack temperature
SOH 1 Remaining battery state of health capacity fraction
V_terminal V DC bus terminal voltage across the cell string
I_current A DC battery current (positive = charging)
Q_heat_kW kW Ohmic joule heat dissipation generated inside the pack

Validity and notes

Validity: meaningful for roughly 0-45 C pack temperature, SoC between ~5 and 95 %, and |P| <= p_max_mw. SOH is floored at 0.5. Q_heat_kW is DC joule heat only (inverter losses are not included).

Usage example

from energysim import world
from energysim.models import BatteryBESS

sim = world(start_time=0, stop_time=3600, t_macro=900)
sim.add_model('batterybess', model=BatteryBESS(), outputs=['P_actual', 'SoC', 'T_batt'], step_size=60)
res = sim.simulate()
print(res['batterybess'].tail(2))