Source code for pybamm.models.full_battery_models.lithium_ion.mpm
#
# Many-Particle Model (MPM)
#
import pybamm
from .spm import SPM
[docs]
class MPM(SPM):
"""
Many-Particle Model (MPM) of a lithium-ion battery with particle-size
distributions for each electrode, from :footcite:t:`Kirk2020`.
See :class:`pybamm.lithium_ion.BaseModel` for more details.
Examples
--------
>>> model = pybamm.lithium_ion.MPM()
>>> model.name
'Many-Particle Model'
"""
def __init__(self, options=None, name="Many-Particle Model", build=True):
# Necessary/default options
options = options or {}
if "particle size" in options and options["particle size"] != "distribution":
raise pybamm.OptionError(
"particle size must be 'distribution' for MPM not '{}'".format(
options["particle size"]
)
)
elif "surface form" in options and options["surface form"] == "false":
raise pybamm.OptionError(
"surface form must be 'algebraic' or 'differential' for MPM not 'false'"
)
else:
surface_form = options.get("surface form", "algebraic")
options.update(
{"particle size": "distribution", "surface form": surface_form}
)
super().__init__(options, name, build)
pybamm.citations.register("Kirk2020")
pybamm.citations.register("Kirk2021")
@property
def default_parameter_values(self):
default_params = super().default_parameter_values
default_params = pybamm.get_size_distribution_parameters(
default_params, working_electrode=self.options["working electrode"]
)
return default_params