PyBaMM 25.4 has been released!

PyBaMM 25.4 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.

IDAKLU solver as default#

Implemented by Martin Robinson (Oxford RSE)

From 25.4.1 the default solver for differential equations is the IDAKLUSolver rather than the CasadiSolver. For the large majority of situations the IDAKLU solver is faster and more robust than the Casadi solver, so existing code should see better performance. There might be some very niche cases in which the Casadi solver works better. In those cases, the user can still use the Casadi solver by passing solver=pybamm.CasadiSolver() to the simulation.

Mechanical models compatible with particle size distributions#

Implemented by Alec Bills (Ionworks)

Continuing the work from the previous release, on cross-compatibility of submodels, the mechanical models in PyBaMM are now compatible with particle size distributions. This means that the mechanical models can be used with any of the particle size distribution models available in PyBaMM, for example

pybamm.lithium_ion.MPM(
    options={"particle mechanics": "swelling and cracking"}
)

Hysteresis model from Axen et al (2022)#

Implemented by chtamar

A new hysteresis submodel has been added to PyBaMM, based on the work of Axen et al (2022). This model can be accessed via the model options, e.g.

pybamm.lithium_ion.DFN(
    {
        "open-circuit potential": (("single", "Axen"), "single"),
        "particle phases": ("2", "1"),
    }
)

For more information on this and the other hysteresis models available in PyBaMM, see the hysteresis notebook.

Experiments compatible with input parameters#

Implemented by Rishab Kumar Jha

Input parameters can now be used when defining experiment steps. This improves performance when testing multiple operation conditions as the input parameter is only evaluated at the solving stage, so the model does not need to be processed again. For example, to define a current step with the value as an input parameter we can use:

step = pybamm.step.current(
    pybamm.InputParameter("I_app"),
    termination="< 2.5 V",
)

pchip method for interpolants#

Implemented by Rishab Kumar Jha

The pchip method is now available in pybamm.Interpolant in addition to linear and cubic. This interpolator preserves monotonicity in the interpolation data and does not overshoot if the data is not smooth.

Summary variables dictionary#

Implemented by Pip Liggins (Oxford RSE)

The method get_summary_variables is now available to return a dictionary of all degradation summary variables in the model versus cycle number. This is useful for further processing of the degradation data.

On this page