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

#
# External circuit with explicit equations for control
#
import pybamm

from .base_external_circuit import BaseModel


[docs] class ExplicitCurrentControl(BaseModel): """External circuit with current control."""
[docs] def get_fundamental_variables(self): # Current is given as a function of time i_cell = self.param.current_density_with_time I = self.param.current_with_time variables = { "Current variable [A]": I, "Total current density [A.m-2]": i_cell, "Current [A]": I, "C-rate": I / self.param.Q, } if self.options.get("voltage as a state") == "true": V = pybamm.Variable("Voltage [V]") variables.update({"Voltage [V]": V}) return variables
[docs] def set_initial_conditions(self, variables): if self.options.get("voltage as a state") == "true": V = variables["Voltage [V]"] self.initial_conditions[V] = self.param.ocv_init
[docs] def set_algebraic(self, variables): if self.options.get("voltage as a state") == "true": V = variables["Voltage [V]"] V_expression = variables["Voltage expression [V]"] self.algebraic[V] = V - V_expression
[docs] class ExplicitPowerControl(BaseModel): """External circuit with current set explicitly to hit target power."""
[docs] def get_coupled_variables(self, variables): # Current is given as applied power divided by voltage V = variables["Voltage [V]"] P = pybamm.FunctionParameter("Power function [W]", {"Time [s]": pybamm.t}) I = P / V # Update derived variables i_cell = I / (self.param.A_cc) variables = { "Total current density [A.m-2]": i_cell, "Current [A]": I, "C-rate": I / self.param.Q, } return variables
[docs] class ExplicitResistanceControl(BaseModel): """External circuit with current set explicitly to hit target resistance."""
[docs] def get_coupled_variables(self, variables): # Current is given as applied voltage divided by resistance V = variables["Voltage [V]"] R = pybamm.FunctionParameter( "Resistance function [Ohm]", {"Time [s]": pybamm.t} ) I = V / R # Update derived variables i_cell = I / self.param.A_cc variables = { "Total current density [A.m-2]": i_cell, "Current [A]": I, "C-rate": I / self.param.Q, } return variables