from pydantic import BaseModel, Field class NPCalcInput(BaseModel): cathode_name: str Q_anode_raw: float = Field(..., description="Specific capacity of anode (mAh/g)") m_anode: float = Field(..., description="Anode active mass (g or mg/cm²)") SEI_loss_fraction: float = Field(..., description="Fractional SEI loss (e.g. 0.1 for 10%)") Q_cathode_raw: float = Field(..., description="Specific capacity of cathode (mAh/g)") m_cathode: float = Field(..., description="Cathode active mass (g or mg/cm²)") vacancy_loss_fraction: float = Field(..., description="Fractional vacancy loss in cathode") # recommended loading Q_areal: float = Field(..., description="Target full‑cell areal capacity (mAh/cm²)") # — new CE inputs — Q_charge_anode: float = Field(..., description="Anode charge capacity (mAh)") Q_discharge_anode: float = Field(..., description="Anode discharge capacity (mAh)") Q_charge_cathode: float = Field(..., description="Cathode charge capacity (mAh)") Q_discharge_cathode: float = Field(..., description="Cathode discharge capacity (mAh)") Q_charge_full: float = Field(..., description="Full‑cell charge capacity (mAh)") Q_discharge_full: float = Field(..., description="Full‑cell discharge capacity (mAh)")