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

Dual Continuum Model

community

@isaacbasil

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

@mleot

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.0: pass, 26.10.1.1: pass, main: pass

26.10.1.1

multilayer_3d_thermal

26.10.1.0: pass, 26.10.1.1: pass, main: pass

26.10.1.1