Source code for pybamm.models.submodels.electrode.ohm.base_ohm
#
# Base class for Ohm's law submodels
#
import pybamm
from pybamm.models.submodels.electrode.base_electrode import BaseElectrode
[docs]
class BaseModel(BaseElectrode):
"""A base class for electrode submodels that employ
Ohm's law.
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, set_positive_potential=True):
super().__init__(param, domain, options, set_positive_potential)
[docs]
def set_boundary_conditions(self, variables):
Domain = self.domain.capitalize()
if self.options.electrode_types["negative"] == "planar":
return
if self.domain == "negative":
phi_s_cn = variables["Negative current collector potential [V]"]
lbc = (phi_s_cn, "Dirichlet")
rbc = (pybamm.Scalar(0), "Neumann")
elif self.domain == "positive":
lbc = (pybamm.Scalar(0), "Neumann")
i_boundary_cc = variables["Current collector current density [A.m-2]"]
T_p = variables["Positive electrode temperature [K]"]
sigma_eff = (
self.param.p.sigma(T_p)
* variables["Positive electrode transport efficiency"]
)
rbc = (
i_boundary_cc / pybamm.boundary_value(-sigma_eff, "right"),
"Neumann",
)
phi_s = variables[f"{Domain} electrode potential [V]"]
self.boundary_conditions[phi_s] = {"left": lbc, "right": rbc}