Source code for pybamm.models.submodels.electrode.ohm.surface_form_ohm
#
# Class for ohmic electrodes in the surface potential formulation
#
import pybamm
from .base_ohm import BaseModel
[docs]
class SurfaceForm(BaseModel):
"""A submodel for the electrode with Ohm's law in the surface potential
formulation.
Parameters
----------
param : parameter class
The parameters to use for this submodel
domain : str
Either 'negative' or 'positive'
options : dict, optional
A dictionary of options to be passed to the model.
"""
def __init__(self, param, domain, options=None):
super().__init__(param, domain, options=options)
[docs]
def get_coupled_variables(self, variables):
Domain = self.domain.capitalize()
x_n = pybamm.standard_spatial_vars.x_n
x_p = pybamm.standard_spatial_vars.x_p
i_boundary_cc = variables["Current collector current density [A.m-2]"]
i_e = variables[f"{Domain} electrolyte current density [A.m-2]"]
tor = variables[f"{Domain} electrode transport efficiency"]
phi_s_cn = variables["Negative current collector potential [V]"]
T = variables[f"{Domain} electrode temperature [K]"]
conductivity = self.domain_param.sigma(T) * tor
i_s = i_boundary_cc - i_e
if self.domain == "negative":
phi_s = phi_s_cn - pybamm.IndefiniteIntegral(i_s / conductivity, x_n)
elif self.domain == "positive":
phi_e_s = variables["Separator electrolyte potential [V]"]
delta_phi_p = variables[
"Positive electrode surface potential difference [V]"
]
phi_s = -pybamm.IndefiniteIntegral(i_s / conductivity, x_p) + (
pybamm.boundary_value(phi_e_s, "right")
+ pybamm.boundary_value(delta_phi_p, "left")
)
variables.update(self._get_standard_potential_variables(phi_s))
variables.update(self._get_standard_current_variables(i_s))
if (
self.options.electrode_types["negative"] == "planar"
or "Negative electrode current density [A.m-2]" in variables
) and "Positive electrode current density [A.m-2]" in variables:
variables.update(self._get_standard_whole_cell_variables(variables))
return variables