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 toL_inner_0 / 10000
andL_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 forExperiment.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
inBaseSolver.solve()
to be constructed with contextfork
. Adds small example for multiprocess inputs. (#3974) - Lithium plating now works on composite electrodes (#3919)
- Added lithium plating parameters to
Ecker2015
andEcker2015_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 timet_eval
as an argument and deprecated use ofnpts
. (#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 inprint_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 byParameterValues.update({name:value})
andSolver.solve(inputs={name:value})
. Fixes parameter translation from old name to new name, with corrected tests. (#4072 - Set the
remove_independent_variables_from_rhs
toFalse
by default, and moved the option fromDiscretisation.process_model
toDiscretisation.__init__
. This fixes a bug related to the discharge capacity, but may make the simulation slower in some cases. To set the option toTrue
, useSimulation(..., 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 bothSimulation
andSolution
objects. Added new methods in bothSimulation
andSolution
classes for allow the syntaxsimulation.plot_voltage_components
andsolution.plot_voltage_components
. Updatedtest_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 internalxarray.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 underpybamm/input/parameters
have not been removed. (#4098) - Removed
check_model
argument fromSimulation.solve
. To change thecheck_model
option, useSimulation(..., 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
andJAX
) 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 thepybamm[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 thepybamm[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)