Source code for pybamm.models.submodels.external_circuit.discharge_throughput

#
# Variables related to discharge and throughput capacity and energy
#
import pybamm

from .base_external_circuit import BaseModel


[docs] class DischargeThroughput(BaseModel): """Model calculate discharge and throughput capacity and energy."""
[docs] def get_fundamental_variables(self): Q_Ah = pybamm.Variable("Discharge capacity [A.h]") Q_Ah.print_name = "Q_Ah" # Throughput capacity (cumulative) Qt_Ah = pybamm.Variable("Throughput capacity [A.h]") Qt_Ah.print_name = "Qt_Ah" variables = { "Discharge capacity [A.h]": Q_Ah, "Throughput capacity [A.h]": Qt_Ah, } if self.options["calculate discharge energy"] == "true": Q_Wh = pybamm.Variable("Discharge energy [W.h]") # Throughput energy (cumulative) Qt_Wh = pybamm.Variable("Throughput energy [W.h]") variables.update( { "Discharge energy [W.h]": Q_Wh, "Throughput energy [W.h]": Qt_Wh, } ) else: variables.update( { "Discharge energy [W.h]": pybamm.Scalar(0), "Throughput energy [W.h]": pybamm.Scalar(0), } ) return variables
[docs] def set_initial_conditions(self, variables): Q_Ah = variables["Discharge capacity [A.h]"] Qt_Ah = variables["Throughput capacity [A.h]"] self.initial_conditions[Q_Ah] = pybamm.Scalar(0) self.initial_conditions[Qt_Ah] = pybamm.Scalar(0) if self.options["calculate discharge energy"] == "true": Q_Wh = variables["Discharge energy [W.h]"] Qt_Wh = variables["Throughput energy [W.h]"] self.initial_conditions[Q_Wh] = pybamm.Scalar(0) self.initial_conditions[Qt_Wh] = pybamm.Scalar(0)
[docs] def set_rhs(self, variables): # ODEs for discharge capacity and throughput capacity Q_Ah = variables["Discharge capacity [A.h]"] Qt_Ah = variables["Throughput capacity [A.h]"] I = variables["Current [A]"] self.rhs[Q_Ah] = I / 3600 # Returns to zero after a complete cycle self.rhs[Qt_Ah] = abs(I) / 3600 # Increases with each cycle if self.options["calculate discharge energy"] == "true": Q_Wh = variables["Discharge energy [W.h]"] Qt_Wh = variables["Throughput energy [W.h]"] V = variables["Voltage [V]"] self.rhs[Q_Wh] = I * V / 3600 # Returns to zero after a complete cycle self.rhs[Qt_Wh] = abs(I * V) / 3600 # Increases with each cycle