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.
- 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).