Skip to content

v24.5

Compare
Choose a tag to compare
@kratman kratman released this 26 Jul 00:13
· 276 commits to main since this release
d026075

Features

  • Added new parameters "f{pref]Initial inner SEI on cracks thickness [m]" and "f{pref]Initial outer SEI on cracks thickness [m]", instead of hardcoding these to L_inner_0 / 10000 and L_outer_0 / 10000. (#4168)
  • Added pybamm.DataLoader class to fetch data files from pybamm-data and store it under local cache. (#4098)
  • Added time as an option for Experiment.termination. Now allows solving up to a user-specified time while also allowing different cycles and steps in an experiment to be handled normally. (#4073)
  • Added plot_thermal_components to plot the contributions to the total heat generation in a battery (#4021)
  • Added functions for normal probability density function (pybamm.normal_pdf) and cumulative distribution function (pybamm.normal_cdf) (#3999)
  • "Basic" models are now compatible with experiments (#3995)
  • Updates multiprocess Pool in BaseSolver.solve() to be constructed with context fork. Adds small example for multiprocess inputs. (#3974)
  • Lithium plating now works on composite electrodes (#3919)
  • Added lithium plating parameters to Ecker2015 and Ecker2015_graphite_halfcell parameter sets (#3919)
  • Added custom experiment steps (#3835)
  • MSMR open-circuit voltage model now depends on the temperature (#3832)
  • Added support for macOS arm64 (M-series) platforms. (#3789)
  • Added the ability to specify a custom solver tolerance in get_initial_stoichiometries and related functions (#3714)
  • Modified step function to take an array of time t_eval as an argument and deprecated use of npts. (#3627)
  • Renamed "electrode diffusivity" to "particle diffusivity" as a non-breaking change with a deprecation warning (#3624)
  • Add support for BPX version 0.4.0 which allows for blended electrodes and user-defined parameters in BPX(#3414)
  • Added by_submodel feature in print_parameter_info method to allow users to print parameters and types of submodels in a tabular and readable format (#3628)
  • Added WyciskOpenCircuitPotential for differential capacity hysteresis state open-circuit potential submodel (#3593)
  • Transport efficiency submodel has new options from the literature relating to different tortuosity factor models and also a new option called "tortuosity factor" for specifying the value or function directly as parameters (#3437)
  • Heat of mixing source term can now be included into thermal models (#2837)
  • Added a JAX interface to the IDAKLU solver (#3658)

Bug Fixes

  • Fixed bug where passing deprecated electrode diffusivity parameter resulted in a breaking change and/or the corresponding diffusivity parameter not updating. Improved the deprecated translation around BPX. (#4176)
  • Fixed a bug where a factor of electrode surface area to volume ratio is missing in the rhs of the LeadingOrderDifferential conductivity model (#4139)
  • Fixes the breaking changes caused by #3624, specifically enables the deprecated parameter electrode diffusivity to be used by ParameterValues.update({name:value}) and Solver.solve(inputs={name:value}). Fixes parameter translation from old name to new name, with corrected tests. (#4072
  • Set the remove_independent_variables_from_rhs to False by default, and moved the option from Discretisation.process_model to Discretisation.__init__. This fixes a bug related to the discharge capacity, but may make the simulation slower in some cases. To set the option to True, use Simulation(..., discretisation_kwargs={"remove_independent_variables_from_rhs": True}). (#4020)
  • Fixed a bug where independent variables were removed from models even if they appeared in events (#4019)
  • Fix bug with upwind and downwind schemes producing the wrong discretised system (#3979)
  • Allow evaluation of an Interpolant object with a number (#3932)
  • Added scale to dead lithium variable (#3919)
  • plot_voltage_components now works even if the time does not start at 0 (#3915)
  • Fixed bug where separator porosity was used in calculation instead of transport efficiency (#3905)
  • Initial voltage can now match upper or lower cut-offs exactly (#3842)
  • Fixed a bug where 1+1D and 2+1D models would not work with voltage or power controlled experiments(#3829)
  • Update IDAKLU solver to fail gracefully when a variable is requested that was not in the solves output_variables list (#3803)
  • Updated _steps_util.py to throw a specific exception when drive cycle starts at t>0 (#3756)
  • Updated plot_voltage_components.py to support both Simulation and Solution objects. Added new methods in both Simulation and Solution classes for allow the syntax simulation.plot_voltage_components and solution.plot_voltage_components. Updated test_plot_voltage_components.py to reflect these changes (#3723).
  • The SEI thickness decreased at some intervals when the 'electron-migration limited' model was used. It has been corrected (#3622)
  • Allow input parameters in ESOH model (#3921)
  • Use casadi MX.interpn_linear function instead of plugin to fix casadi_interpolant_linear.dll not found on Windows (#4077)

Optimizations

  • Sped up initialization of a ProcessedVariable by making the internal xarray.DataArray initialization lazy (only gets created if interpolation is needed) (#3862)

Breaking changes

  • Functions that are created using pybamm.Function(function_object, children) can no longer be differentiated symbolically (e.g. to compute the Jacobian). This should affect no users, since function derivatives for all "standard" functions are explicitly implemented (#4196)
  • Removed data files under pybamm/input and released them in a separate repository upstream at pybamm-data. Note that data files under pybamm/input/parameters have not been removed. (#4098)
  • Removed check_model argument from Simulation.solve. To change the check_model option, use Simulation(..., discretisation_kwargs={"check_model": False}). (#4020)
  • Removed multiple Docker images. Here on, a single Docker image tagged pybamm/pybamm:latest will be provided with both solvers (IDAKLU and JAX) pre-installed. (#3992)
  • Removed support for Python 3.8 (#3961)
  • Renamed "ocp_soc_0_dimensional" to "ocp_soc_0" and "ocp_soc_100_dimensional" to "ocp_soc_100" (#3942)
  • The ODES solver was removed due to compatibility issues. Users should use IDAKLU, Casadi, or JAX instead. (#3932)
  • Integrated the [pandas] extra into the core PyBaMM package, deprecating the pybamm[pandas] optional dependency. Pandas is now a required dependency and will be installed upon installing PyBaMM (#3892)
  • Renamed "have_optional_dependency" to "import_optional_dependency" (#3866)
  • Integrated the [latexify] extra into the core PyBaMM package, deprecating the pybamm[latexify] set of optional dependencies. SymPy is now a required dependency and will be installed upon installing PyBaMM (#3848)
  • Renamed "testing" argument for plots to "show_plot" and flipped its meaning (show_plot=True is now the default and shows the plot) (#3842)
  • Dropped support for BPX version 0.3.0 and below (#3414)
  • The function get_spatial_var in pybamm.QuickPlot.py is made private. (#3755)