pub struct ElectrodeKinetics {
pub i0: f64,
pub alpha_a: f64,
pub alpha_c: f64,
pub temperature: f64,
pub n_electrons: usize,
}Expand description
Electrode kinetics using the Butler-Volmer formulation.
Computes exchange current density, Tafel slope, and EIS (electrochemical impedance spectroscopy) charge-transfer resistance.
Fields§
§i0: f64Exchange current density [A/m²].
alpha_a: f64Anodic charge-transfer coefficient (dimensionless).
alpha_c: f64Cathodic charge-transfer coefficient (dimensionless).
temperature: f64Temperature [K].
n_electrons: usizeNumber of electrons transferred per reaction step.
Implementations§
Source§impl ElectrodeKinetics
impl ElectrodeKinetics
Sourcepub fn new(
i0: f64,
alpha_a: f64,
alpha_c: f64,
temperature: f64,
n_electrons: usize,
) -> Self
pub fn new( i0: f64, alpha_a: f64, alpha_c: f64, temperature: f64, n_electrons: usize, ) -> Self
Construct a new ElectrodeKinetics.
Sourcepub fn symmetric(i0: f64, temperature: f64) -> Self
pub fn symmetric(i0: f64, temperature: f64) -> Self
Construct with symmetric transfer coefficients (α_a = α_c = 0.5).
Sourcepub fn current_density(&self, eta: f64) -> f64
pub fn current_density(&self, eta: f64) -> f64
Butler-Volmer current density [A/m²] at overpotential eta [V].
j = i₀ × (exp(αa·F·η / (R·T)) − exp(−αc·F·η / (R·T)))
Sourcepub fn anodic_tafel_slope(&self) -> f64
pub fn anodic_tafel_slope(&self) -> f64
Anodic Tafel slope [V/decade].
b_a = 2.303 R T / (α_a F)
Sourcepub fn cathodic_tafel_slope(&self) -> f64
pub fn cathodic_tafel_slope(&self) -> f64
Cathodic Tafel slope [V/decade].
b_c = 2.303 R T / (α_c F)
Sourcepub fn charge_transfer_resistance(&self) -> f64
pub fn charge_transfer_resistance(&self) -> f64
Linearised charge-transfer resistance [Ω·m²] (valid for small η).
From linearisation of Butler-Volmer: R_ct = R T / (n F i₀)
Sourcepub fn eis_impedance(&self, omega: f64) -> (f64, f64)
pub fn eis_impedance(&self, omega: f64) -> (f64, f64)
EIS impedance at angular frequency omega [rad/s].
Returns (Z_real, Z_imag) [Ω·m²] using the Randles circuit approximation:
- Charge-transfer resistance
R_ctin parallel with double-layer capacitanceC_dl Z = R_ct / (1 + (ω R_ct C_dl)²)(real) and-ω R_ct² C_dl / (1 + (ω R_ct C_dl)²)(imag)
Assumes C_dl = 0.2 F/m² (typical double-layer capacitance).
Sourcepub fn eis_magnitude(&self, omega: f64) -> f64
pub fn eis_magnitude(&self, omega: f64) -> f64
EIS impedance magnitude [Ω·m²] at angular frequency omega.
Sourcepub fn tafel_overpotential_anodic(&self, j: f64) -> f64
pub fn tafel_overpotential_anodic(&self, j: f64) -> f64
Overpotential [V] required to achieve current density j [A/m²].
Uses high-overpotential Tafel approximation (anodic branch):
η ≈ b_a × log10(j / i₀) for large positive j.
Sourcepub fn nernst_correction(&self, e_ref: f64, c_ratio: f64) -> f64
pub fn nernst_correction(&self, e_ref: f64, c_ratio: f64) -> f64
Open-circuit potential correction (Nernst) [V].
E = E_ref − (R T / n F) ln(c_ox/c_red) where c_ratio = c_ox/c_red.
Trait Implementations§
Source§impl Clone for ElectrodeKinetics
impl Clone for ElectrodeKinetics
Source§fn clone(&self) -> ElectrodeKinetics
fn clone(&self) -> ElectrodeKinetics
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more