from typing import List from pydantic import BaseModel, Field class AllBInput(BaseModel): cathode_name: str # ─── V–Q & dQ/dV inputs ─────────────────────────────────────── V: List[float] = Field(..., description="Measured voltage at each time step (V)") I: float = Field(..., description="Applied current (mA/g)") t: List[float] = Field(..., description="Time array matching V (h or s)") # ─── Rate capability inputs ─────────────────────────────────── Q_nominal: float = Field(..., description="Nominal low‑rate capacity (mAh/g)") C_rates: List[float] = Field(..., description="List of C‑rates (e.g. [0.1,0.5,1,2,5])") t_discharge: List[float] = Field(..., description="Discharge times at each C‑rate (hours)") # ─── CC–CV charge time inputs ──────────────────────────────── Q_nominal_mAh: float = Field(..., description="Nominal cell capacity (mAh or Ah)") I_lim: float = Field(..., description="Constant current limit during CC (A or mA)") alpha: float = Field(..., description="Fraction of total capacity charged at CC (0.0–1.0)") I_end: float = Field(..., description="End‐of‐charge current for CV termination (A or mA)") tau: float = Field(..., description="Time constant for CV current decay (seconds)") # ─── GITT‑style diffusion inputs ─────────────────────────────── L: float = Field(..., description="Diffusion length (cm)") tau_pulse: float = Field(..., description="Pulse duration τ (s)") delta_E_tau: List[float] = Field(..., description="Voltage change during pulse ΔEτ (V)") delta_E_s: List[float] = Field(..., description="Steady‑state voltage change ΔEs (V)")