Model zoo#
Community- and partner-contributed PyBaMM models. Each entry is one self-contained folder with its own maintainer, tests, examples, and citation; the table below is generated from those folders’ manifests.
The zoo is a separate distribution, released independently of PyBaMM, so
pip install pybamm does not provide it. Install it from
PyPI:
pip install pybamm-model-zoo
A model with third-party dependencies of its own declares them as an extra
named zoo-<slug>, and the zoo-all extra installs every model’s:
pip install "pybamm-model-zoo[zoo-all]"
Zoo models are then reached through the zoo’s registry, not the pybamm
namespace:
import pybamm
import pybamm_model_zoo as zoo
model = zoo.load(zoo.list_models()[0])()
solution = pybamm.Simulation(model).solve([0, 3600])
Models in the core tier are covered by PyBaMM’s merge gate. Models in the community tier are tested on every pull request too, but their results are advisory: a red community model never blocks a PyBaMM merge. See contributing a model to add your own.
Model |
Tier |
Maintainer |
Added |
|---|---|---|---|
community |
2026-10-06 |
||
Single Particle Model with a linearised open-circuit potential |
core |
@pybamm-team/maintainers |
2026-08-20 |
Multilayer pouch cell stack with a 3D temperature field in every zone |
community |
2026-09-28 |
Compatibility#
Every model shares one PyBaMM floor: the zoo’s own pybamm requirement, which
pip enforces when it installs the zoo. The model_zoo_status workflow
refreshes the table below weekly, running every model against main, the
oldest PyBaMM release the zoo supports, and the most recent releases
(scripts/matrix.py --releases sets how many). A cell reading missing is one
whose job never reported, not a pass.
Model |
Results |
Last passing |
|---|---|---|
dual_continuum |
not yet run |
— |
linearised_spm |
|
26.10.1.1 |
multilayer_3d_thermal |
|
26.10.1.1 |