Source code for pybamm.models.submodels.particle_mechanics.swelling_only
#
# Class for swelling only (no cracking)
#
import pybamm
from .base_mechanics import BaseMechanics
[docs]
class SwellingOnly(BaseMechanics):
"""
Class for swelling only (no cracking), from :footcite:t:`Ai2019`.
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")
"""
def __init__(self, param, domain, options, phase="primary"):
super().__init__(param, domain, options, phase)
pybamm.citations.register("Ai2019")
pybamm.citations.register("Deshpande2012")
[docs]
def get_fundamental_variables(self):
domain, Domain = self.domain_Domain
zero = pybamm.FullBroadcast(
pybamm.Scalar(0), f"{domain} electrode", "current collector"
)
zero_av = pybamm.x_average(zero)
variables = self._get_standard_variables(zero)
variables.update(
{
f"{Domain} particle cracking rate [m.s-1]": zero,
f"X-averaged {domain} particle cracking rate [m.s-1]": zero_av,
}
)
return variables
[docs]
def get_coupled_variables(self, variables):
variables.update(self._get_standard_surface_variables(variables))
variables.update(self._get_mechanical_results(variables))
if self.size_distribution:
variables.update(self._get_mechanical_size_distribution_results(variables))
return variables