pub struct BatteryModel {
pub capacity_ah: f64,
pub soc: f64,
pub r0: f64,
pub r1: f64,
pub c1: f64,
pub u_rc: f64,
}Expand description
Battery equivalent-circuit model with internal resistance and one RC pair.
Topology: V_oc − R0 − (R1 ∥ C1) = V_terminal.
The RC pair captures diffusion / charge-transfer relaxation dynamics.
Fields§
§capacity_ah: f64Nominal capacity [Ah]
soc: f64State of charge (0 = empty, 1 = full)
r0: f64Series (ohmic) resistance R₀ [Ω]
r1: f64RC branch resistance R₁ [Ω]
c1: f64RC branch capacitance C₁ [F]
u_rc: f64Voltage across the RC branch (state variable) [V]
Implementations§
Source§impl BatteryModel
impl BatteryModel
Sourcepub fn new(capacity_ah: f64, r0: f64, r1: f64, c1: f64) -> Self
pub fn new(capacity_ah: f64, r0: f64, r1: f64, c1: f64) -> Self
Create a fully charged battery model.
§Arguments
capacity_ah— capacity [Ah]r0— series resistance [Ω]r1— RC branch resistance [Ω]c1— RC branch capacitance [F]
Sourcepub fn open_circuit_voltage(&self) -> f64
pub fn open_circuit_voltage(&self) -> f64
Open-circuit voltage from a piecewise-linear SOC-OCV curve.
Uses a simplified linear model: V_oc = 3.0 + 1.2 · SOC (LFP-like).
Sourcepub fn terminal_voltage(&self, current_a: f64) -> f64
pub fn terminal_voltage(&self, current_a: f64) -> f64
Terminal voltage under load [V].
V = V_oc − R0 · I − U_rc
Sourcepub fn step(&mut self, current_a: f64, dt_s: f64)
pub fn step(&mut self, current_a: f64, dt_s: f64)
Advance simulation by dt_s seconds at current current_a [A].
Updates SOC and RC branch voltage via first-order Euler integration.
Sourcepub fn is_depleted(&self) -> bool
pub fn is_depleted(&self) -> bool
Returns true when the cell is considered depleted (SOC < 5 %).
Trait Implementations§
Source§impl Clone for BatteryModel
impl Clone for BatteryModel
Source§fn clone(&self) -> BatteryModel
fn clone(&self) -> BatteryModel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more