PyBaMM 25.1 has now been released! We would like to thank all the contributors who made this release possible.
The full list of changes can be found in the CHANGELOG file, but here we provide a deeper overview of the main features of this release.
Implemented by Alec Bills (Ionworks) and Simon O’Kane
Several submodels have been updated to enhance the compatibility with other submodels. The new compatibilities are:
This means that almost all submodels are cross-compatible!
Implemented by Valentin Sulzer (Ionworks)
All SEI models in PyBaMM are now defined for a single layer SEI, and the double layer SEI models have been removed. Note that by double layer we mean an SEI with inner and outer SEI layers, not the interface capacitance double layer. This change should make SEI models easier to understand and compare.
Implemented by Kawa Manmi (University of Warwick)
Two new SEI models have been added to PyBaMM: the "tunnelling limited"
model (from Tang et al (2012)) and the "VonKolzenberg2020"
model (from Von Kolzenberg et al (2020)). These models can be enabled by passing the relevant "SEI"
in the model options dictionary. Note that additional parameters are required for this model, and the parameter set dictionary needs to be updated manually.
search
method in PyBaMM dictionaries#Implemented by Medha Bhardwaj (IIIT Lucknow)
The search
method in PyBaMM dictionaries, for example in a ParameterValues
or a model.variables
dictionary, has been enhanced so it can take lists of strings. This allows for more flexibility when searching for variables or parameters in a dictionary. For example, if we want to search for all variables related to potentials in the negative electrode, we can now do
model.variables.search(["negative", "potential"])
Implemented by Alec Bills (Ionworks)
PyBaMM now includes SymbolicUniform1DSubMesh
, which allows for the definition of geometric parameters as input parameters without need to rebuild the model. The mesh is internally defined to be defined between 0 and 1, and the discretised operators take care of the contribution of the domain lengths.
This mesh does not work straight out of the box with default models, but it can be used in custom-built models.
Implemented by Eric Kratz (Ionworks)
The C/C++ solvers included in PyBaMM (e.g. IDAKLUSolver
) have been moved to a standalone package called pybammsolvers
. This change makes PyBaMM a pure Python package, simplifying significantly the installation process from source (including Windows), which benefits PyBaMM developers and contributors.
Implemented by Saransh Chopra (ARC, University College London RSE)
The conda-forge distribution has been migrated to a noarch
recipe, making it platform independent. Additionally, a new conda-forge package, pybamm-base
, has been developed to enable installing PyBaMM only with required dependencies. The pybamm
package on conda-forge has been updated to include all the available optional dependencies (equivalent to pybamm[all,jax]
on PyPI). Similar to the PyPI change, these changes simplify the installation process for both users and developers.
Implemented by Martin Robinson (Oxford RSE)
The state variables of a PyBaMM model are now automatically included as output variables, if they are not already present. This makes the process of building custom models more robust avoiding, for example, errors with the set_initial_conditions_from
method when output variables were not correctly defined.
Implemented by Eric Kratz (Ionworks)
PyBaMM now supports BPX 0.5.0, which was released in December 2024. This version of BPX uses Pydantic v2.