Skip to content

Releases: pybamm-team/PyBaMM

v25.1.1

21 Jan 18:14
817ac83
Compare
Choose a tag to compare

Features

  • Added Operators to current and voltage termination events. (#4770)

Bug fixes

  • Fixed a bug which caused the ec-reaction limited SEI model to give
    incorrect results (#4774)

v25.1.0

15 Jan 14:18
590fdfe
Compare
Choose a tag to compare

Features

  • Added a dt_min option to the (IDAKLUSolver). (#4736)
  • Automatically add state variables of the model to the output variables if they are not already present (#4700)
  • Enabled using SEI models with particle size distributions. (#4693)
  • Added symbolic mesh which allows for using InputParameters for geometric parameters (#4665)
  • Enhanced the search method to accept multiple search terms in the form of a string or a list. (#4650)
  • Made composite electrode model compatible with particle size distribution (#4687)
  • Added Symbol.post_order() method to return an iterable that steps through the tree in post-order fashion. (#4684)
  • Porosity change now works for composite electrode (#4417)
  • Added two more submodels (options) for the SEI: Lars von Kolzenberg (2020) model and Tunneling Limit model (#4394)

Breaking changes

  • Updated BPX to v0.5.0 and made changes for the switch to Pydantic V2 (#4701)
  • Summary variables now calculated only when called, accessed via a class in the same manner as other variables rather than a dictionary. (#4621)
  • The conda distribution (pybamm) now installs all optional dependencies available on conda-forge. Use the new pybamm-base conda
    package to install PyBaMM with only the required dependencies. (conda-forge/pybamm-feedstock#70)
  • Separated extrapolation options for pybamm.BoundaryValue and pybamm.BoundaryGradient, and updated the default to be "linear" for the value and "quadratic" for the gradient. (#4614)
  • Double-layer SEI models have been removed (with the corresponding parameters). All models assume now a single SEI layer. (#4470)
  • Moved the IDAKLU solver to a standalone pybammsolvers package. This will
    make PyBaMM a pure Python package and make installing and using the solver
    easier. (#4487)
  • Wycisk OCP model now requires an parameter to set the initial condition. (#4374)

Bug fixes

  • Fixed bug when using stoichiometry-dependent diffusivity with the DFN model with a particle size distribution. (#4726)
  • Remove internal use of deprecated set_parameters function in the Simulation class which caused warnings. (#4638)
  • Provide default value for Symbol.mesh attribute to avoid errors when adding variables after discretisation. (#4644)

v24.11.2

27 Nov 19:35
f73e056
Compare
Choose a tag to compare

Bug fixes

  • Reverted modifications to quickplot from #4529 which caused issues with the plots displaying correct variable names. (#4622)

v24.11.1

23 Nov 03:00
9d59593
Compare
Choose a tag to compare

Features

  • Modified quick_plot.plot to accept a list of times and generate superimposed graphs for specified time points. (#4529)

Bug Fixes

  • Added some dependencies which were left out of the pyproject.toml file (#4602)

v24.11.0

21 Nov 14:23
5b1ef70
Compare
Choose a tag to compare

Features

  • Added CoupledVariable which provides a placeholder variable whose equation can be elsewhere in the model. (#4556)
  • Adds support to pybamm.Experiment for the output_variables option in the IDAKLUSolver. (#4534)
  • Adds an option "voltage as a state" that can be "false" (default) or "true". If "true" adds an explicit algebraic equation for the voltage. (#4507)
  • Improved QuickPlot accuracy for simulations with Hermite interpolation. (#4483)
  • Added Hermite interpolation to the (IDAKLUSolver) that improves the accuracy and performance of post-processing variables. (#4464)
  • Added basic telemetry to record which functions are being run. See Telemetry section in the User Guide for more information. (#4441)
  • Added BasicDFN model for sodium-ion batteries (#4451)
  • Added sensitivity calculation support for pybamm.Simulation and pybamm.Experiment (#4415)
  • Added OpenMP parallelization to IDAKLU solver for lists of input parameters (#4449)
  • Added phase-dependent particle options to LAM (#4369)
  • Added a lithium ion equivalent circuit model with split open circuit voltages for each electrode (SplitOCVR). (#4330)
  • Added the pybamm.DiscreteTimeSum expression node to sum an expression over a sequence of data times, and accompanying pybamm.DiscreteTimeData class to store the data times and values (#4501)

Optimizations

  • Performance refactor of JAX BDF Solver with default Jax method set to "BDF". (#4456)
  • Improved performance of initialization and reinitialization of ODEs in the (IDAKLUSolver). (#4453)
  • Removed the start_step_offset setting and disabled minimum dt warnings for drive cycles with the (IDAKLUSolver). (#4416)

Bug Fixes

  • Added error for binary operators on two concatenations with different numbers of children. Previously, the extra children were dropped. Also fixed bug where Q_rxn was dropped from the total heating term in half-cell models. (#4562)
  • Fixed bug where Q_rxn was set to 0 for the negative electrode in half-cell models. (#4557)
  • Fixed bug in post-processing solutions with infeasible experiments using the (IDAKLUSolver). (#4541)
  • Disabled IREE on MacOS due to compatibility issues and added the CasADI
    path to the environment to resolve issues on MacOS and Linux. Windows
    users may still experience issues with interpolation. (#4528)
  • Added _from_json() functionality to Sign which was erroneously omitted previously. (#4517)
  • Fixed bug where IDAKLU solver failed when output variables were specified and an extrapolation event is present. (#4440)

Breaking changes

  • Deprecated pybamm.Simulation.set_parameters and pybamm.Simulation.set_up_and_parameterise_experiment functions in pybamm/simulation.py. (#3752)
  • Removed all instances of param = self.param and now directly access self.param across the codebase. This change simplifies parameter references and enhances readability. (#4484)
  • Removed the deprecation warning for the chemistry argument in
    pybamm.ParameterValues (#4466)
  • The parameters "... electrode OCP entropic change [V.K-1]" and "... electrode volume change" are now expected to be functions of stoichiometry only instead of functions of both stoichiometry and maximum concentration (#4427)
  • Renamed set_events function to add_events_from to better reflect its purpose. (#4421)

v24.9.0

03 Sep 19:54
0e50894
Compare
Choose a tag to compare

Features

  • Added additional user-configurable options to the (IDAKLUSolver) and adjusted the default values to improve performance. (#4282)
  • Added the diffusion element to be used in the Thevenin model. (#4254)

Optimizations

  • Update IDAKLU tests and benchmarks to use adaptive time stepping. (#4390)
  • Improved adaptive time-stepping performance of the (IDAKLUSolver). (#4351)
  • Improved performance and reliability of DAE consistent initialization. (#4301)
  • Replaced rounded Faraday constant with its exact value in bpx.py for better comparison between different tools. (#4290)

Bug Fixes

  • Fixed memory issue that caused failure when output variables were specified with (IDAKLUSolver). (#4379)
  • Fixed bug where IDAKLU solver failed when output variables were specified and an event triggered. (#4300)

Breaking changes

  • Replaced have_jax with has_jax, have_idaklu with has_idaklu, and
    have_iree with has_iree (#4398)
  • Remove deprecated function pybamm_install_jax (#4362)
  • Removed legacy python-IDAKLU solver. (#4326)

v24.5

26 Jul 00:13
d026075
Compare
Choose a tag to compare

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.Qui...
Read more

v24.5rc2

12 Jul 13:52
Compare
Choose a tag to compare
v24.5rc2 Pre-release
Pre-release

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)

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)

v24.5rc1

11 Jul 20:54
Compare
Choose a tag to compare
v24.5rc1 Pre-release
Pre-release

Features

  • Added functionality to pass in arbitrary functions of time as the argument for a (pybamm.step). (#4222)
  • 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)

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](https://github.com/pybamm-team/PyBaMM/pull/...
Read more

v24.5rc0

25 Jun 16:37
d8745c8
Compare
Choose a tag to compare
v24.5rc0 Pre-release
Pre-release

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)

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)