Skip to content

Releases: pybamm-team/PyBaMM

v22.7

05 Aug 10:27
5f4913d
Compare
Choose a tag to compare

Features

  • Moved general code about submodels to BaseModel instead of BaseBatteryModel, making it easier to build custom models from submodels. (#2169)
  • Events can now be plotted as a regular variable (under the name "Event: event_name", e.g. "Event: Minimum voltage [V]") (#2158)
  • Added example showing how to print whether a model is compatible with a parameter set (#2112)
  • Added SEI growth on cracks (#2104)
  • Added Arrhenius temperature dependence of SEI growth (#2104)
  • The "Inner SEI reaction proportion" parameter actually gets used now (#2104)
  • New OKane2022 parameter set replaces Chen2020_plating (#2104)
  • SEI growth, lithium plating and porosity change can now be set to distributed in SPMe. There is an additional option called x-average side reactions which allows to set this (note that for SPM it is always x-averaged). (#2099)

Optimizations

  • Improved eSOH calculations to be more robust (#2192,#2199)
  • The (2x2x2=8) particle diffusion submodels have been consolidated into just three submodels (Fickian diffusion, polynomial profile, and x-averaged polynomial profile) with optional x-averaging and size distribution. Polynomial profile and x-averaged polynomial profile are still two separate submodels, since they deal with surface concentration differently.
  • Added error for when solution vector gets too large, to help debug solver errors (#2138)

Bug fixes

  • Fixed error reporting for simulation with experiment (#2213)
  • Fixed a bug in Simulation that caused initial conditions to change when solving an experiment multiple times (#2204)
  • Fixed labels and ylims in plot_voltage_components(#2183)
  • Fixed 2D interpolant (#2180)
  • Fixes a bug where the SPMe always builds even when build=False (#2169)
  • Some events have been removed in the case where they are constant, i.e. can never be reached (#2158)
  • Raise explicit NotImplementedError if trying to call bool() on a pybamm Symbol (e.g. in an if statement condition) (#2141)
  • Fixed bug causing cut-off voltage to change after setting up a simulation with a model (#2138)
  • A single solution cycle can now be used as a starting solution for a simulation (#2138)

Breaking changes

  • Exchange-current density functions (and some other functions) now take an additional argument, the maximum particle concentration for that phase (#2134)
  • Loss of lithium to SEI on cracks is now a degradation variable, so setting a particle mechanics submodel is now compulsory (NoMechanics will suffice)

v22.6

30 Jun 08:01
7c5b44e
Compare
Choose a tag to compare

Features

  • Added open-circuit potential as a separate submodel (#2094)
  • Added partially reversible lithium plating model and new OKane2022 parameter set to go with it (#2043)
  • Added __eq__ and __hash__ methods for Symbol objects, using .id (#1978)

Optimizations

  • Stoichiometry inputs to OCP functions are now bounded between 1e-10 and 1-1e-10, with singularities at 0 and 1 so that OCP goes to +- infinity (#2095)

Breaking changes

  • Changed some dictionary keys to Symbol instead of Symbol.id (internal change only, should not affect external facing functions) (#1978)

v22.5

30 May 20:14
e1f52ff
Compare
Choose a tag to compare

Features

  • Added functionality to generate Julia expressions from a model. See PyBaMM.jl for how to use these (#1942))
  • Added basic callbacks to the Simulation class, and a LoggingCallback (#1880))

Bug fixes

  • Corrected legend order in "plot_voltage_components.py", so each entry refers to the correct overpotential. (#2061)

Breaking changes

  • Changed domain-specific parameter names to a nested attribute, e.g. param.c_n_max is now param.n.c_max (#2063)

v22.4

03 May 19:36
3b8d775
Compare
Choose a tag to compare

v22.4 - 2022-04-30

Features

  • Added a casadi version of the IDKLU solver, which is used for model.convert_to_format = "casadi" (#2002)

Bug fixes

  • Remove old deprecation errors, including those in parameter_values.py that caused the simulation if, for example, the reaction rate is re-introduced manually (#2022)

v22.3

30 Mar 06:34
dd0d4b5
Compare
Choose a tag to compare

Features

  • Added "Discharge energy [W.h]", which is the integral of the power in Watts, as an optional output. Set the option "calculate discharge energy" to "true" to get this output ("false" by default, since it can slow down some of the simple models) (#1969))
  • Added an option "calculate heat source for isothermal models" to choose whether or not the heat generation terms are computed when running models with the option thermal="isothermal" (#1958)

Bug fixes

  • Fix bug where sensitivity calculation failed if len of calculate_sensitivities was less than inputs (#1897)
  • Fixed a bug in the eSOH variable calculation when OCV is given as data (#1975)
  • Fixed a bug where isothermal models did not compute any heat source terms (#1958)

Breaking changes

  • Dropped support for Windows 32-bit architecture (#1964)

v22.2

01 Mar 11:07
233d476
Compare
Choose a tag to compare

Features

  • Isothermal models now compute heat source terms (but the temperature remains constant). The models now also account for current collector heating when dimensionality=0 (#1929)
  • Added new models for power control and resistance control (#1917)
  • Initial concentrations can now be provided as a function of r as well as x (#1866)

Bug fixes

  • Fixed a bug where thermal submodels could not be used with half-cells (#1929)
  • Parameters can now be imported from a directory having "pybamm" in its name (#1919)
  • scikit.odes and SUNDIALS can now be installed using pybamm_install_odes (#1916)

Breaking changes

  • The domain setter and auxiliary_domains getter have been deprecated, domains setter/getter should be used instead. The domain getter is still active. We now recommend creating symbols with domains={...} instead of domain=..., auxiliary_domains={...}, but the latter is not yet deprecated (#1866)

v22.1

04 Feb 05:42
0216c38
Compare
Choose a tag to compare

Features

  • Half-cell models can now be run with "surface form" (#1913)
  • Added option for different kinetics on anode and cathode (#1913)
  • Allow pybamm.Solution.save_data() to return a string if filename is None, and added json to_format option (#1909)
  • Added an option to force install compatible versions of jax and jaxlib if already installed using CLI (#1881)

Optimizations

  • The Symbol nodes no longer subclasses anytree.NodeMixIn. This removes some checks that were not really needed (#1912)

Bug fixes

  • Parameters can now be imported from any given path in Windows (#1900)
  • Fixed initial conditions for the EC SEI model (#1895)
  • Fixed issue in extraction of sensitivites (#1894)

v21.12

31 Dec 17:01
7f4bf87
Compare
Choose a tag to compare

Features

  • Added new kinetics models for asymmetric Butler-Volmer, linear kinetics, and Marcus-Hush-Chidsey (#1858)
  • Experiments can be set to terminate when a voltage is reached (across all steps) (#1832)
  • Added cylindrical geometry and finite volume method (#1824)

Bug fixes

  • PyBaMM is now importable in Linux systems where jax is already installed (#1874)
  • Simulations with drive cycles now support initial_soc (#1842)
  • Fixed bug in expression tree simplification (#1831)
  • Solid tortuosity is now correctly calculated with Bruggeman coefficient of the respective electrode (#1773)

v21.11

01 Dec 09:29
15992b3
Compare
Choose a tag to compare

Features

  • The name of a parameter set can be passed to ParameterValues as a string, e.g. ParameterValues("Chen2020") (#1822)
  • Reformatted SEI growth models into a single submodel with conditionals (#1808)
  • Stress-induced diffusion is now a separate model option instead of being automatically included when using the particle mechanics submodels (#1797)
  • Experiments with drive cycles can be solved (#1793)
  • Added surface area to volume ratio as a factor to the SEI equations (#1790)
  • Half-cell SPM and SPMe have been implemented (#1731)

Bug fixes

  • Fixed sympy operators for Arctan and Exponential (#1786)
  • Fixed finite volume discretization in spherical polar coordinates (#1782)
  • Fixed bug when using Experiment with a pouch cell model (#1707)
  • Fixed bug when using Experiment with a plating model (#1707)
  • Fixed hack for potentials in the SPMe model (#1707)

Breaking changes

  • The chemistry keyword argument in ParameterValues has been deprecated. Use ParameterValues(chem) instead of ParameterValues(chemistry=chem) (#1822)
  • Raise error when trying to convert an Interpolant with the "pchip" interpolator to CasADI (#1791)
  • Raise error if Concatenation is used directly with Variable objects (concatenation should be used instead) (#1789)
  • Made jax, jaxlib and the PyBaMM JaxSolver optional (#1767)

v21.10

31 Oct 22:04
aa8be73
Compare
Choose a tag to compare

Features

  • Summary variables can now be user-determined (#1759)
  • Added all_first_states to the Solution object for a simulation with experiment (#1759)
  • Added a new method (create_gif) in QuickPlot, Simulation and BatchStudy to create a GIF of a simulation (#1754)
  • Added more examples for the BatchStudy class (#1747)
  • SEI models can now be included in the half-cell model (#1705)

Bug fixes

  • Half-cell model and lead-acid models can now be simulated with Experiments (#1759)
  • Removed in-place modification of the solution objects by QuickPlot (#1747)
  • Fixed vector-vector multiplication bug that was causing errors in the SPM with constant voltage or power (#1735)