hydesign.battery_degradation

Classes

battery_degradation

Battery degradation model to predict the degradation of the battery throughout the lifetime of the plant

battery_loss_in_capacity_due_to_temp

Battery non-permanent loss of capacity due to low temp

Functions

incerase_resolution(ii_time, SoH, life, nn[, ...])

battery_replacement(rf_DoD, rf_SoC, rf_count, ...[, ...])

Battery degradation in steps and battery replacement

degradation(rf_DoD, rf_SoC, rf_count, rf_i_start, avr_tem)

Calculating the new level of capacity of the battery.

Linear_Degfun(rf_DoD, rf_SoC, rf_count, rf_i_start, ...)

Linear degradation function.

RFcount(SoC)

thermal_loss_of_storage(air_temp_C_t)

Battery temporary loss of storage at low temperatures. Simple piecewise linear fit from:

Module Contents

class hydesign.battery_degradation.battery_degradation(weather_fn, num_batteries=1, life_y=25, intervals_per_hour=1, weeks_per_season_per_year=None, battery_deg=True)[source]

Bases: openmdao.api.ExplicitComponent

Battery degradation model to predict the degradation of the battery throughout the lifetime of the plant

Parameters:
  • b_E_SOC_t (battery energy SOC time series)

  • min_LoH (minimum level of health before death of battery)

Returns:

SoH

Return type:

battery state of health at discretization levels

life_h = 219000[source]
life_intervals = 219000[source]
yearly_intervals = 8760[source]
num_batteries = 1[source]
weather_fn[source]
battery_deg = True[source]
battery_rf_matrix = None[source]
air_temp_K_t[source]
setup()[source]

Declare inputs and outputs.

Available attributes:

name pathname comm options

compute(inputs, outputs)[source]

Compute outputs given inputs. The model is assumed to be in an unscaled state.

Parameters:
  • inputs (Vector) – Unscaled, dimensional input variables read via inputs[key].

  • outputs (Vector) – Unscaled, dimensional output variables read via outputs[key].

  • discrete_inputs (dict or None) – If not None, dict containing discrete input values.

  • discrete_outputs (dict or None) – If not None, dict containing discrete output values.

class hydesign.battery_degradation.battery_loss_in_capacity_due_to_temp(weather_fn, num_batteries=1, life_y=25, intervals_per_hour=1, weeks_per_season_per_year=None, battery_deg=True)[source]

Bases: openmdao.api.ExplicitComponent

Battery non-permanent loss of capacity due to low temp

Parameters:

SoH (battery state of health at discretization levels)

Returns:

SoH_all

Return type:

battery state of health at discretization levels

life_h = 219000[source]
yearly_intervals = 8760[source]
life_intervals = 219000[source]
num_batteries = 1[source]
weather_fn[source]
battery_deg = True[source]
air_temp_C_t[source]
setup()[source]

Declare inputs and outputs.

Available attributes:

name pathname comm options

compute(inputs, outputs)[source]

Compute outputs given inputs. The model is assumed to be in an unscaled state.

Parameters:
  • inputs (Vector) – Unscaled, dimensional input variables read via inputs[key].

  • outputs (Vector) – Unscaled, dimensional output variables read via outputs[key].

  • discrete_inputs (dict or None) – If not None, dict containing discrete input values.

  • discrete_outputs (dict or None) – If not None, dict containing discrete output values.

hydesign.battery_degradation.incerase_resolution(ii_time, SoH, life, nn, hourly_intervals=1)[source]
hydesign.battery_degradation.battery_replacement(rf_DoD, rf_SoC, rf_count, rf_i_start, avr_tem, min_LoH, n_steps_in_LoH=30, num_batteries=2)[source]

Battery degradation in steps and battery replacement

Parameters:
  • rf_DoD (depth of discharge after rainflow counting)

  • rf_SoC (mean SoC after rainflow counting)

  • rf_count (half or full cycle after rainflow counting, ethier 0.5 or 1)

  • rf_i_start (time index for the cycles [in hours])

  • avr_tem (average temperature in the location, yearly or more long. default value is 20)

  • min_LoH (minimum level of health before death of battery)

  • n_steps_in_LoH (number of discretizations in battery state of health)

  • num_batteries (number of battery replacements)

Returns:

  • LoC (battery level of capacity)

  • ind_q (time indices for constant health levels)

  • ind_q_last (time index for battery replacement)

hydesign.battery_degradation.degradation(rf_DoD, rf_SoC, rf_count, rf_i_start, avr_tem, LLoC_0=0)[source]

Calculating the new level of capacity of the battery.

Xu, B., Oudalov, A., Ulbig, A., Andersson, G., and Kirschen, D. S.: Modeling of lithium-ion battery degradation for cell life assessment, IEEE Transactions on Smart Grid, 9, 1131–1140, 2016.

Parameters:
  • rf_DoD (depth of discharge after rainflow counting)

  • rf_SoC (mean SoC after rainflow counting)

  • rf_count (half or full cycle after rainflow counting, ethier 0.5 or 1)

  • rf_i_start (time index for the cycles [in hours])

  • avr_tem (average temperature in the location, yearly or more long. default value is 20)

Returns:

  • LoC (battery level of capacity)

  • LoC1

  • LLoC

hydesign.battery_degradation.Linear_Degfun(rf_DoD, rf_SoC, rf_count, rf_i_start, avr_tem)[source]

Linear degradation function.

Xu, B., Oudalov, A., Ulbig, A., Andersson, G., and Kirschen, D. S.: Modeling of lithium-ion battery degradation for cell life assessment, IEEE Transactions on Smart Grid, 9, 1131–1140, 2016.

Parameters:
  • rf_DoD (depth of discharge after rainflow counting)

  • rf_SoC (mean SoC after rainflow counting)

  • rf_count (half or full cycle after rainflow counting, ethier 0.5 or 1)

  • rf_i_start (time index for the cycles [in hours])

  • avr_tem (average temperature in the location, yearly or more long. default value is 20)

Return type:

np.array(LLoC_hist)

hydesign.battery_degradation.RFcount(SoC)[source]
hydesign.battery_degradation.thermal_loss_of_storage(air_temp_C_t)[source]

Battery temporary loss of storage at low temperatures. Simple piecewise linear fit from:

Lv, S., Wang, X., Lu, W., Zhang, J., & Ni, H. (2021). The influence of temperature on the capacity of lithium ion batteries with different anodes. Energies, 15(1), 60.