Published August 4, 2025
| Version v25.8.0
Software
Open
Python Battery Mathematical Modelling (PyBaMM)
Authors/Creators
Description
Features
- Added
plot_3d_cross_section&plot_3d_heatmapfunctions to support plotting for 3D thermal simulations. (#5130) - Added a
Basic3DThermalSPMwith two way coupling. (#5112) - Enables the passing of
inputsthroughoutset_initial_soc. (#5122) - Adds
on_failureoption toBaseSolverwith options for"warn","ignore", and"raise"to change behaviour on solver failure. Defaults to "raise" to retain historic functionality. (#5105) - Creates a boundary mesh size object that returns the distance from the center of the leftmost/rightmost control volume to the boundary of the domain (#5108)
- Introduced entry points for models, similar to parameter sets, and moved entry point handling to
pybamm.dispatch.entry_points. There is now experimental support for loading third-party models outside of the PyBaMM framework viapybamm.Model("model_name"). This API is currently unstable until further notice and may be subject to change without warning. (#4490) - Allow for overriding the spatial method's extrapolation and for using constant extrapolation of boundary values (#5107)
- Creates
BaseProcessedVariableto enable object combination when adding solutions together (#5076) - Added a
Constantsymbol for named constants. This is a subclass ofScalarand is used to represent named constants such as the gas constant. This avoids constants being simplified out when constructing expressions. (#5070) - Generalise
pybamm.DiscreteTimeSumto allow it to be embedded in other expressions (#5044) - Adds
allkey-value pair tooutput_variablessensitivity dictionaries, accessible throughsolution[var].sensitivities['all']. Aligns shape with conventional solution sensitivities object. (#5067) - Added a new
BaseHysteresisOpenCircuitPotentialclass that sets variables for the lithiation and delithiation OCP and the hysteresis voltage (H = U_lith - U_delith). Allow the initial hysteresis state to be a function of position through the electrode. Allow the hysteresis decay rates of the Axen and Wycisk models to be a function of stoichiometry and temperature. Added a heat source term in each active material phaseQ_hys = i_vol * (U - U_eq)wherei_volis the volumetric interfacial current density,Uis the OCP (i.e. includes hysteresis), andU_eqis the "equilibrium OCP". Renamed the open-circuit potential models to be more descriptive. The options "Axen" and "Wycisk" are now "one-state hysteresis" and "one-state differential capacity hysteresis". The old option names still work but will raise a warning. (#4893) - Add support for
output_variablestopybamm.DiscreteTimeSumandpybamm.ExplicitTimeIntegralexpressions. (#5071) - Added 3D FEM and meshes supporting rectangular and cylindrical geometries (#5009)
Bug fixes
- Fix non-deterministic ShapeError in 3D FEM gradient method (#5143)
- Fixes negative electrode boundary values for half-cell voltage contributions. (#5139)
- Makes
A_ccL_z * L_y * number of layers (#5138) - Fixes
TimeIntegralexpression node summation when dependent on an input parameter. (#5119) - Fixed a bug that ignored the default duration of drive cycles for
CRatesteps and a bug that overwrote customperiodarguments for drive cycles. (#5090) - Converts sensitivities to numpy objects, fixing bug in
DiscreteTimeSumsensitivity calculation (#5037) - Raises error if
pybamm.Interpolantgiven 1D x values that are not strictly increasing (#5061) - Fixes inconsistency of the returned shape of a
pybamm.DiscreteTimeSumvariable depending onoutput_variablesbeing set or not. (#5098) - Fixed a bug where simplifications cause heavisides to evaluate as booleans (#4893)
- Fixed a bug in the
WyciskOpenCircuitPotentialmodel where the differential capacity was not being evaluated correctly. (#4893)
Breaking changes
- Changed behavior of drive cycle steps in
pybamm.Experiments to treat each time point as a discontinuity, consistent with how input interpolants work. This ensures more accurate simulation of drive cycles with rapid changes. (#5141) - Removed the IREE code from the IDAKLU solver (#5080)
- Removed support for Python 3.9 (#5052)
- In OCP hysteresis models, users need to explicitly give the equilibrium, delithiation, and lithiation OCPs when using a hysteresis model. E.g., you must provide all three of "Negative electrode OCP [V]", "Negative electrode delithiation OCP [V]", and "Negative electrode lithiation OCP [V]". (#4893)
Notes
Files
pybamm-team/PyBaMM-v25.8.0.zip
Files
(8.9 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:599da641b0b0f2e6281ff847df5a0964
|
8.9 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/pybamm-team/PyBaMM/tree/v25.8.0 (URL)
Software
- Repository URL
- https://github.com/pybamm-team/PyBaMM