Source code for pybamm.models.submodels.electrolyte_conductivity.full_conductivity

#
# Class for electrolyte conductivity employing stefan-maxwell
#
import pybamm

from .base_electrolyte_conductivity import BaseElectrolyteConductivity


[docs] class Full(BaseElectrolyteConductivity): """Full model for conservation of charge in the electrolyte employing the Stefan-Maxwell constitutive equations. (Full refers to unreduced by asymptotic methods) 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, options=options)
[docs] def get_fundamental_variables(self): phi_e_dict = {} variables = {} for domain in self.options.whole_cell_domains: Dom = domain.capitalize().split()[0] name = f"{Dom} electrolyte potential [V]" phi_e_k = pybamm.Variable( name, domain=domain, auxiliary_domains={"secondary": "current collector"}, reference=-self.param.n.prim.U_init, ) phi_e_k.print_name = f"phi_e_{domain[0]}" phi_e_dict[domain] = phi_e_k variables["Electrolyte potential [V]"] = pybamm.concatenation( *phi_e_dict.values() ) variables.update(self._get_standard_potential_variables(phi_e_dict)) return variables
[docs] def get_coupled_variables(self, variables): T = variables["Cell temperature [K]"] tor = variables["Electrolyte transport efficiency"] c_e = variables["Electrolyte concentration [mol.m-3]"] phi_e = variables["Electrolyte potential [V]"] i_e = (self.param.kappa_e(c_e, T) * tor) * ( self.param.chiRT_over_Fc(c_e, T) * pybamm.grad(c_e) - pybamm.grad(phi_e) ) # Override print_name i_e.print_name = "i_e" variables.update(self._get_standard_current_variables(i_e)) variables.update(self._get_electrolyte_overpotentials(variables)) return variables
[docs] def set_algebraic(self, variables): phi_e = variables["Electrolyte potential [V]"] i_e = variables["Electrolyte current density [A.m-2]"] # Variable summing all of the interfacial current densities sum_a_j = variables["Sum of volumetric interfacial current densities [A.m-3]"] # Override print_name sum_a_j.print_name = "aj" # multiply by Lx**2 to improve conditioning self.algebraic = {phi_e: self.param.L_x**2 * (pybamm.div(i_e) - sum_a_j)}
[docs] def set_initial_conditions(self, variables): phi_e = variables["Electrolyte potential [V]"] self.initial_conditions = {phi_e: -self.param.n.prim.U_init}