Degradation

Classes for defining capacity fade mechanisms.

class src.rfbzero.degradation.DegradationMechanism(**c_products: float)[source]

Abstract base class to be implemented by specific degradation mechanisms.

abstract degrade(c_ox: float, c_red: float, time_step: float) tuple[float, float][source]

Applies desired degradation mechanisms to oxidized/reduced species at each time step.

class src.rfbzero.degradation.ChemicalDegradationOxidized(rate_order: int, rate_constant: float)[source]

Provides an N-th order chemical degradation mechanism for an oxidized species.

Parameters:
  • rate_order (int) – Rate order for chemical degradation reaction.

  • rate_constant (float) – N-th order rate constant of chemical degradation of oxidized species (unit is rate order-dependent).

degrade(c_ox: float, c_red: float, time_step: float) tuple[float, float][source]

Applies N-th order chemical degradation of N*[redox-active species] –> [redox-inactive species] at each time step. Returns updated concentrations; concentration may be unchanged if species does not degrade.

Parameters:
  • c_ox (float) – Concentration of oxidized species (M).

  • c_red (float) – Concentration of reduced species (M).

  • time_step (float) – Time interval size (s).

Returns:

  • delta_ox (float) – Change in concentration of oxidized species (M).

  • delta_red (float) – Change in concentration of reduced species (M). This will always be zero.

class src.rfbzero.degradation.ChemicalDegradationReduced(rate_order: int, rate_constant: float)[source]

Provides an N-th order chemical degradation mechanism for a reduced species.

Parameters:
  • rate_order (int) – Rate order for chemical degradation reaction.

  • rate_constant (float) – N-th order rate constant of chemical degradation of reduced species (unit is rate order-dependent).

degrade(c_ox: float, c_red: float, time_step: float) tuple[float, float][source]

Applies N-th order chemical degradation of N*[redox-active species] –> [redox-inactive species] at each time step. Returns updated concentrations; concentration may be unchanged if species does not degrade.

Parameters:
  • c_ox (float) – Concentration of oxidized species (M).

  • c_red (float) – Concentration of reduced species (M).

  • time_step (float) – Time interval size (s).

Returns:

  • delta_ox (float) – Change in concentration of oxidized species (M). This will always be zero.

  • delta_red (float) – Change in concentration of reduced species (M).

class src.rfbzero.degradation.AutoOxidation(rate_constant: float, c_oxidant: float = 0.0, oxidant_stoich: int = 0)[source]

Provides a 1st order auto-oxidation mechanism, (red –> ox) with no loss of active material. This can be thought of as a chemical oxidation of the redox-active, balanced by an oxidant e.g., water splitting (HER). This could occur in a low-potential negolyte and be considered a self-discharge. If it is desired for the concentration of the oxidant to affect the chemical oxidation rate, the initial oxidant concentration and the stoichiometric factor i.e., red + n*oxidant –> ox + …, can be input. This could simulate the effect of H2 leaving the system.

Parameters:
  • rate_constant (float) – First order rate of auto-oxidation (1/s).

  • c_oxidant (float) – Initial concentration of oxidant, defaults to 0.0 (M).

  • oxidant_stoich (int) – Number of oxidants involved in the chemical oxidation of the redox-active species, defaults to 0.

degrade(c_ox: float, c_red: float, time_step: float) tuple[float, float][source]

Applies an auto-oxidation mechanism to oxidized/reduced species at each time step. Defaults to first order process: red –> ox.

Parameters:
  • c_ox (float) – Concentration of oxidized species (M).

  • c_red (float) – Concentration of reduced species (M).

  • time_step (float) – Time interval size (s).

Returns:

  • delta_ox (float) – Change in concentration of oxidized species (M).

  • delta_red (float) – Change in concentration of reduced species (M).

class src.rfbzero.degradation.AutoReduction(rate_constant: float, c_reductant: float = 0.0, reductant_stoich: int = 0)[source]

Provides a 1st order auto-reduction mechanism, (ox –> red) with no loss of active material. This can be thought of as a chemical reduction of the redox-active, balanced by a reductant e.g., water splitting (OER). This could occur in a high-potential posolyte and be considered a self-discharge. If it is desired for the concentration of the reductant to affect the chemical reduction rate, the initial reductant concentration and the stoichiometric factor i.e., ox + n*reductant –> red + …, can be input. This could simulate the effect of O2 leaving the system.

Parameters:
  • rate_constant (float) – First order rate of auto-reduction (1/s).

  • c_reductant (float) – Initial concentration of reductant, defaults to 0.0 (M).

  • reductant_stoich (int) – Number of reductants involved in the chemical reduction of the redox-active species, defaults to 0.

degrade(c_ox: float, c_red: float, time_step: float) tuple[float, float][source]

Applies an auto-reduction mechanism to oxidized/reduced species at each time step. Defaults to first order process: ox –> red.

Parameters:
  • c_ox (float) – Concentration of oxidized species (M).

  • c_red (float) – Concentration of reduced species (M).

  • time_step (float) – Time interval size (s).

Returns:

  • delta_ox (float) – Change in concentration of oxidized species (M).

  • delta_red (float) – Change in concentration of reduced species (M).

class src.rfbzero.degradation.Dimerization(forward_rate_constant: float, backward_rate_constant: float, c_dimer: float = 0.0)[source]

Provides a reversible dimerization mechanism: ox + red <–> dimer.

Parameters:
  • forward_rate_constant (float) – Second order rate constant for forward reaction (1/(M s)).

  • backward_rate_constant (float) – First order rate constant for backward reaction (1/s).

  • c_dimer (float) – Initial concentration of dimer, defaults to 0.0 (M).

degrade(c_ox: float, c_red: float, time_step: float) tuple[float, float][source]

Applies a reversible dimerization mechanism to oxidized/reduced species at each time step. Returns updated concentrations.

Parameters:
  • c_ox (float) – Concentration of oxidized species (M).

  • c_red (float) – Concentration of reduced species (M).

  • time_step (float) – Time interval size (s).

Returns:

  • delta_ox (float) – Change in concentration of oxidized species (M).

  • delta_red (float) – Change in concentration of reduced species (M).

class src.rfbzero.degradation.MultiDegradationMechanism(mechanisms: list[src.rfbzero.degradation.DegradationMechanism])[source]

Provides usage of multiple degradation mechanisms that implement the DegradationMechanism abstract base class. Allows for different and/or multiple mechanisms to be applied to reduced and/or oxidized species. Degradation mechanisms are applied in the same order as the input list.

Parameters:

mechanisms (list[DegradationMechanism]) – List of degradation mechanism subclass instances. Note that multiple instances of the same mechanism type cannot be used in the same MultiDegradationMechanism.

degrade(c_ox: float, c_red: float, time_step: float) tuple[float, float][source]

Applies multiple degradation mechanisms to oxidized/reduced species at each time step. Concentration may be unchanged if species does not degrade.

Parameters:
  • c_ox (float) – Concentration of oxidized species (M).

  • c_red (float) – Concentration of reduced species (M).

  • time_step (float) – Time interval size (s).

Returns:

  • delta_ox (float) – Change in concentration of oxidized species (M).

  • delta_red (float) – Change in concentration of reduced species (M).