Source code for pybamm.models.submodels.equivalent_circuit_elements.rc_element

import pybamm


[docs] class RCElement(pybamm.BaseSubModel): """ Parallel Resistor-Capacitor (RC) element for equivalent circuits. Parameters ---------- param : parameter class The parameters to use for this submodel element_number: int The number of the element (i.e. whether it is the first, second, third, etc. element) options : dict, optional A dictionary of options to be passed to the model. """ def __init__(self, param, element_number, options=None): super().__init__(param) self.element_number = element_number self.model_options = options
[docs] def get_fundamental_variables(self): vrc = pybamm.Variable(f"Element-{self.element_number} overpotential [V]") variables = {f"Element-{self.element_number} overpotential [V]": vrc} return variables
[docs] def get_coupled_variables(self, variables): T_cell = variables["Cell temperature [degC]"] current = variables["Current [A]"] soc = variables["SoC"] r = self.param.rcr_element( f"R{self.element_number} [Ohm]", T_cell, current, soc ) c = self.param.rcr_element(f"C{self.element_number} [F]", T_cell, current, soc) tau = r * c vrc = variables[f"Element-{self.element_number} overpotential [V]"] Q_irr = -current * vrc variables.update( { f"R{self.element_number} [Ohm]": r, f"C{self.element_number} [F]": c, f"tau{self.element_number} [s]": tau, f"Element-{self.element_number} " + "irreversible heat generation [W]": Q_irr, } ) return variables
[docs] def set_rhs(self, variables): vrc = variables[f"Element-{self.element_number} overpotential [V]"] current = variables["Current [A]"] r = variables[f"R{self.element_number} [Ohm]"] tau = variables[f"tau{self.element_number} [s]"] self.rhs = { vrc: -vrc / (tau) - current * r / tau, }
[docs] def set_initial_conditions(self, variables): vrc = variables[f"Element-{self.element_number} overpotential [V]"] self.initial_conditions = { vrc: self.param.initial_rc_overpotential(self.element_number) }