BESS Degradation Model

This document explains how battery degradation is calculated in the BESS sizing and simulation code.


Scope of the Degradation Model

The degradation model estimates the loss of usable energy capacity over time. Power capability degradation is explicitly modeled and represented as a reduction in available energy capacity (MWh).

Two degradation mechanisms are modeled:

  • Calendar aging
  • Cycle aging

Both mechanisms are assumed to be additive and independent.


State Variables

At any simulation step t , the battery state is defined as:

Nominal (nameplate) energy capacity:

E0[MWh]E_0 \quad [\text{MWh}]

Remaining usable energy capacity:

Et[MWh]E_t \quad [\text{MWh}]

State of Health (SoH):

SoHt=EtE0\text{SoH}_t = \frac{E_t}{E_0}

Battery degradation reduces Et monotonically over time.


Degradation Flow Overview

At each simulation step, degradation is computed using the following sequence:

  1. Elapsed calendar time is evaluated
  2. Energy throughput from charging and discharging is accumulated
  3. Energy throughput is converted to equivalent full cycles
  4. Calendar aging increment is calculated
  5. Cycle aging increment is calculated
  6. Remaining usable capacity is updated

Calendar Aging Model

Calendar aging represents capacity loss that occurs independently of cycling, driven by time-dependent electrochemical processes.

A linear annual degradation model is applied:

Ξ”Ecalendar(t)=E0β‹…rcalβ‹…Ξ”t\Delta E_{\text{calendar}}(t) = E_0 \cdot r_{\text{cal}} \cdot \Delta t

Where:

  • r_cal is the calendar degradation rate {fraction per year}
  • (delta_t) is the elapsed time in years for the simulation step

Typical parameter range:

rcal∈[0.005,β€…β€Š0.015]r_{\text{cal}} \in [0.005,\; 0.015]

Calendar degradation accumulates continuously over the full simulation horizon.


Cycle Aging Model

Cycle aging represents degradation caused by energy throughput during charging and discharging.

Energy Throughput

For each time step, total energy throughput is computed as:

Ethroughput(t)=Echarge(t)+Edischarge(t)E_{\text{throughput}}(t) = E_{\text{charge}}(t) + E_{\text{discharge}}(t)

Cumulative throughput over time:

Ethroughput,cum=βˆ‘tEthroughput(t)E_{\text{throughput,cum}} = \sum_t E_{\text{throughput}}(t)

Equivalent Full Cycles (EFC)

Rather than counting discrete cycles, degradation is based on equivalent full cycles (EFC):

EFC(t)=Ethroughput,cum2β‹…E0\text{EFC}(t) = \frac{E_{\text{throughput,cum}}}{2 \cdot E_0}

This formulation correctly accounts for partial cycling and varying depth of discharge.

Incremental EFC for a time step:

Ξ”EFC(t)=Ethroughput(t)2β‹…E0\Delta \text{EFC}(t) = \frac{E_{\text{throughput}}(t)}{2 \cdot E_0}

Cycle Degradation Calculation

Cycle-related capacity loss is calculated as:

Ξ”Ecycle(t)=E0β‹…rcycleβ‹…Ξ”EFC(t)\Delta E_{\text{cycle}}(t) = E_0 \cdot r_{\text{cycle}} \cdot \Delta \text{EFC}(t)

Where:

  • r_cycle is degradation per equivalent full cycle {fraction per year}

Typical parameter range:

rcycle∈[0.0002,β€…β€Š0.0005]r_{\text{cycle}} \in [0.0002,\; 0.0005]

These values correspond to approximately 2,000–5,000 full cycles to 80% SoH, consistent with grid-scale lithium-ion warranties.


Total Degradation Update

Total degradation per time step is computed as the sum of calendar and cycle contributions:

Ξ”Et=Ξ”Ecalendar(t)+Ξ”Ecycle(t)\Delta E_t = \Delta E_{\text{calendar}}(t) + \Delta E_{\text{cycle}}(t)

Remaining usable energy capacity is updated as:

Et+1=max⁑(Etβˆ’Ξ”Et,β€…β€ŠEmin)E_{t+1} = \max \left( E_t - \Delta E_t,\; E_{\text{min}} \right)

Where E_min is a lower bound on usable capacity to prevent non-physical negative values.


Model Assumptions and Simplifications

The following modeling assumptions are intentionally applied:

  • Battery temperature is not explicitly modeled
  • C-rate–dependent degradation effects are not differentiated
  • Depth-of-discharge dependence is approximated through EFCs
  • Power capability degradation is not modeled separately
  • Degradation is path-independent and memoryless

These assumptions are appropriate for system-level planning, sizing, and revenue studies, but not for electrochemical design or warranty validation.


Literature and Reference Basis

The degradation structure and parameter ranges are aligned with established literature and standards, including:

  • Schmalstieg et al., A holistic aging model for Li(NiMnCo)Oβ‚‚ based 18650 lithium-ion batteries, Journal of Power Sources, 2014
  • Keil & Jossen, Calendar aging of lithium-ion batteries, Journal of The Electrochemical Society, 2017
  • EPRI, Battery Energy Storage Overview, 2020
  • NREL, Battery Lifetime Analysis and Degradation Modeling, 2019
  • IEC 62933-2-1, Electrical Energy Storage Systems – Unit Parameters and Testing

Where explicit numerical values are not defined, mid-range industry values commonly used in grid-scale feasibility studies are applied.


Summary

The degradation model combines calendar aging and cycle aging using a transparent, throughput-based formulation.

It balances physical realism with computational simplicity, making it suitable for energy system modeling where traceability and clarity are more important than electrochemical detail.

Example: BESS Degradation


Fundamentals Model
Fig 1. Degradation Graph

Asset Definition

Battery Energy Storage System (BESS):

  • Power rating: 10 MW
  • Energy capacity: 20 MWh
  • Nominal duration: 2 hours
  • Cycling intensity: 1.5 cycles per day
  • Simulation resolution: annual
  • Degradation model: linear EFC-based (conservative)

Initial state at beginning of life (BOL):

  • Nominal energy capacity:
E0=20β€…β€ŠMWhE_0 = 20 \; \mathrm{MWh}
  • Nominal power capacity:
P0=10β€…β€ŠMWP_0 = 10 \; \mathrm{MW}
  • Initial State of Health:
SoH0=1.0\mathrm{SoH}_0 = 1.0

Degradation Model Configuration

The project uses the following default degradation parameters:

Cycle degradation

  • Linear EFC model enabled.
  • Fade per equivalent full cycle:
kEFC=0.206000=3.333Γ—10βˆ’5k_{\mathrm{EFC}} = \frac{0.20}{6000} = 3.333 \times 10^{-5}
  • Default depth-of-discharge factor:
DoDmodel=0.50\mathrm{DoD}_{\text{model}} = 0.50

Important:

The model does not assume 80% DoD by default.

Unless a degradation curve is provided, 50% DoD is default.

Depending on the markets selected or trading strategy selected, the model uses the following assumed Depth of Discharge (DoD) (as a percentage):

  • If the asset participates in FCR + aFRR + mFRR + Day-ahead + Intraday, we assume 50% DoD.
  • If the asset participates in FCR + aFRR + mFRR + Day-ahead, but not Intraday, we assume 40% DoD.
  • If the asset participates in Day-ahead only (no Intraday and no balancing services like FCR/aFRR/mFRR), we assume 60% DoD.
  • If the asset participates in Day-ahead + Intraday only (no balancing services like FCR/aFRR/mFRR), we assume 60% DoD.
  • In all other cases, we assume 60% DoD.

We assume a DoD for a quick analysis although the actual DoD could vary year over year.

Calendar degradation

  • Annual calendar fade:
rcal=0.007(0.7%/year)Β r_{\mathrm{cal}} = 0.007 \quad (0.7\%/\text{year})Β 

End-of-life

  • Minimum State of Health:
SoHEOL=0.60\mathrm{SoH}_{\text{EOL}} = 0.60

Step 1: Cycles per Year

From the operational assumption:

cyclesΒ perΒ day=1.5Β \text{cycles per day} = 1.5Β cyclesΒ perΒ year=1.5β‹…365=547.5\text{cycles per year} = 1.5 \cdot 365 = 547.5

This value is passed directly into the degradation model.


Step 2: Equivalent Full Cycles per Year (Model Logic)

The model computes effective EFCs as:

EFCyear=cyclesΒ perΒ yearβ‹…DoDmodel\mathrm{EFC}_{\text{year}} = \text{cycles per year} \cdot \mathrm{DoD}_{\text{model}}EFCyear=547.5β‹…0.50=273.75\mathrm{EFC}_{\text{year}}=547.5 \cdot 0.50=273.75

Cycle degradation is computed as a fractional SoH loss:

Ξ”SoHcycle=kEFCβ‹…EFCyear\Delta \mathrm{SoH}_{\text{cycle}}=k_{\mathrm{EFC}} \cdot \mathrm{EFC}_{\text{year}}Ξ”SoHcycle=3.333Γ—10βˆ’5β‹…273.75=0.00913\Delta \mathrm{SoH}_{\text{cycle}}=3.333 \times 10^{-5} \cdot 273.75=0.00913

That is:

0.913%Β SoHΒ lossΒ perΒ yearΒ fromΒ cycling\boxed{0.913\% \text{ SoH loss per year from cycling}}

Step 4: Annual Calendar Degradation

Calendar degradation is applied linearly:

Ξ”SoHcalendar=0.007\Delta \mathrm{SoH}_{\text{calendar}} = 0.0070.7%Β SoHΒ lossΒ perΒ yearΒ fromΒ calendarΒ aging\boxed{0.7\% \text{ SoH loss per year from calendar aging}}

Step 5: Total Annual SoH Degradation

Ξ”SoHyear=0.00913+0.007=0.01613\Delta \mathrm{SoH}_{\text{year}}=0.00913 + 0.007=0.016131.61%Β totalΒ SoHΒ lossΒ perΒ year\boxed{1.61\% \text{ total SoH loss per year}}

Step 6: SoH and Energy Capacity Over Time

State of Health after ( n ) years:

SoHn=1.0βˆ’nβ‹…0.01613\mathrm{SoH}_n = 1.0 - n \cdot 0.01613

Example: Year 8 (β‰ˆ 2031 in chart)

SoH8=1.0βˆ’8β‹…0.01613=0.871\mathrm{SoH}_8 = 1.0 - 8 \cdot 0.01613 = 0.871

Remaining energy capacity:

E8=E0β‹…SoH8E_8 = E_0 \cdot \mathrm{SoH}_8E8=20β‹…0.871=17.42β€…β€ŠMWhE_8 = 20 \cdot 0.871 = 17.42 \; \mathrm{MWh}

This aligns with the gradual stair-step decline in the energy curve.


Step 7: Power Degradation (Model Logic)

Power does not degrade one-to-one with energy.

The model applies a slower power fade using:

Pt=P0β‹…(1βˆ’Ξ³powerβ‹…(1βˆ’SoHt))P_t = P_0 \cdot \left( 1 - \gamma_{\mathrm{power}} \cdot (1 - \mathrm{SoH}_t) \right)

Where:

Ξ³power=0.20\gamma_{\mathrm{power}} = 0.20

At ~80% SoH:

  • Energy β‰ˆ 16–17 MWh
  • Power β‰ˆ 9.5–9.6 MW

This matches the tooltip values in the degradation chart.



Interpretation

For a 10 MW / 20 MWh BESS operating at 1.5 cycles per day, the model produces:

  • Effective EFCs: ~274 per year
  • Annual SoH degradation: ~1.6%
  • Gradual energy decline with slower power derating
  • End-of-life triggered once SoH reaches 60%

All values shown in the degradation chart are a direct consequence of these calculations.