Source code for pybamm.models.submodels.equivalent_circuit_elements.ocv_element
import pybamm
[docs]
class OCVElement(pybamm.BaseSubModel):
"""
Open-circuit Voltage (OCV) element for
equivalent circuits.
Parameters
----------
param : parameter class
The parameters to use for this submodel
options : dict, optional
A dictionary of options to be passed to the model.
"""
def __init__(self, param, options=None):
super().__init__(param)
self.model_options = options
[docs]
def get_fundamental_variables(self):
soc = pybamm.Variable("SoC")
ocv = self.param.ocv(soc)
variables = {"SoC": soc, "Open-circuit voltage [V]": ocv}
return variables
[docs]
def get_coupled_variables(self, variables):
current = variables["Current [A]"]
ocv = variables["Open-circuit voltage [V]"]
T_cell = variables["Cell temperature [degC]"]
dUdT = self.param.dUdT(ocv, T_cell)
T_cell_kelvin = variables["Cell temperature [K]"]
Q_rev = -current * T_cell_kelvin * dUdT
variables.update(
{
"Entropic change [V/K]": dUdT,
"Reversible heat generation [W]": Q_rev,
}
)
return variables
[docs]
def set_rhs(self, variables):
soc = variables["SoC"]
current = variables["Current [A]"]
cell_capacity = self.param.cell_capacity
self.rhs = {soc: -current / cell_capacity / 3600}
[docs]
def set_initial_conditions(self, variables):
soc = variables["SoC"]
self.initial_conditions = {soc: self.param.initial_soc}
[docs]
def add_events_from(self, variables):
soc = variables["SoC"]
self.events += [
pybamm.Event("Minimum SoC", soc),
pybamm.Event("Maximum SoC", 1 - soc),
]