Source code for pybamm.models.submodels.electrolyte_conductivity.leading_order_conductivity
#
# Class for the leading-order electrolyte potential employing stefan-maxwell
#
import pybamm
from .base_electrolyte_conductivity import BaseElectrolyteConductivity
[docs]
class LeadingOrder(BaseElectrolyteConductivity):
"""Leading-order model for conservation of charge in the electrolyte
employing the Stefan-Maxwell constitutive equations. (Leading refers
to leading-order in the asymptotic reduction)
Parameters
----------
param : parameter class
The parameters to use for this submodel
domain : str, optional
The domain in which the model holds
options : dict, optional
A dictionary of options to be passed to the model.
"""
def __init__(self, param, domain=None, options=None):
super().__init__(param, domain, options=options)
[docs]
def get_coupled_variables(self, variables):
if "negative electrode" not in self.options.whole_cell_domains:
phi_e_av = variables["Lithium metal interface electrolyte potential [V]"]
else:
# delta_phi = phi_s - phi_e
delta_phi_n_av = variables[
"X-averaged negative electrode surface potential difference [V]"
]
phi_s_n_av = variables["X-averaged negative electrode potential [V]"]
phi_e_av = phi_s_n_av - delta_phi_n_av
i_boundary_cc = variables["Current collector current density [A.m-2]"]
L_n = self.param.n.L
L_p = self.param.p.L
L_x = self.param.L_x
x_n = pybamm.standard_spatial_vars.x_n
x_p = pybamm.standard_spatial_vars.x_p
if "negative electrode" not in self.options.whole_cell_domains:
i_e_n = None
else:
i_e_n = i_boundary_cc * x_n / L_n
phi_e_dict = {
domain: pybamm.PrimaryBroadcast(phi_e_av, domain)
for domain in self.options.whole_cell_domains
}
i_e_s = pybamm.PrimaryBroadcast(i_boundary_cc, ["separator"])
i_e_p = i_boundary_cc * (L_x - x_p) / L_p
i_e = pybamm.concatenation(i_e_n, i_e_s, i_e_p)
variables.update(self._get_standard_potential_variables(phi_e_dict))
variables.update(self._get_standard_current_variables(i_e))
# concentration overpotential
eta_c_av = pybamm.PrimaryBroadcast(0, "current collector")
# ohmic losses
delta_phi_e_av = pybamm.PrimaryBroadcast(0, "current collector")
variables.update(self._get_split_overpotential(eta_c_av, delta_phi_e_av))
return variables