Source code for pybamm.models.submodels.particle.total_particle_concentration

#
# Class to calculate total particle concentrations
#
import pybamm

from .base_particle import BaseParticle


[docs] class TotalConcentration(BaseParticle): """ Class to calculate total particle concentrations Parameters ---------- param : parameter class The parameters to use for this submodel domain : str The domain of the model either 'Negative' or 'Positive' options: dict A dictionary of options to be passed to the model. See :class:`pybamm.BaseBatteryModel` phase : str, optional Phase of the particle (default is "primary") """
[docs] def get_coupled_variables(self, variables): domain, Domain = self.domain_Domain phase = self.phase phase_name = self.phase_name c_s_rav = variables[ f"R-averaged {domain} {phase_name}particle concentration [mol.m-3]" ] eps_s = variables[ f"{Domain} electrode {phase_name}active material volume fraction" ] eps_s_av = pybamm.x_average(eps_s) c_s_vol_av = pybamm.x_average(eps_s * c_s_rav) / eps_s_av c_scale = self.phase_param.c_max L = self.domain_param.L A = self.param.A_cc variables.update( { f"{Domain} electrode {phase_name}stoichiometry": c_s_vol_av / c_scale, f"{Domain} electrode {phase_name}volume-averaged " "concentration": c_s_vol_av / c_scale, f"{Domain} electrode {phase_name}volume-averaged " "concentration [mol.m-3]": c_s_vol_av, f"Total lithium in {phase} phase in {domain} electrode [mol]" "": pybamm.yz_average(c_s_vol_av * eps_s_av) * L * A, } ) return variables