Skip to content

Commit

Permalink
Add table
Browse files Browse the repository at this point in the history
  • Loading branch information
NicolaCourtier committed May 1, 2024
1 parent 1768d2a commit 47027fd
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 3 deletions.
16 changes: 16 additions & 0 deletions joss/paper.bib
Original file line number Diff line number Diff line change
Expand Up @@ -113,3 +113,19 @@ @article{Verbrugge:2017
title = {Thermodynamic Model for Substitutional Materials: Application to Lithiated Graphite, Spinel Manganese Oxide, Iron Phosphate, and Layered Nickel-Manganese-Cobalt Oxide},
journal = {Journal of The Electrochemical Society},
}

@article{Tranter2022,
doi = {10.21105/joss.04051},
url = {https://doi.org/10.21105/joss.04051},
year = {2022},
publisher = {The Open Journal},
volume = {7},
number = {70},
pages = {4051},
author = {Thomas G. Tranter and Robert Timms and Valentin Sulzer and
Ferran Brosa Planella and Gavin M. Wiggins and Suryanarayana V. Karra and
Priyanshu Agarwal and Saransh Chopra and Srikanth Allu and Paul R. Shearing
and Dan J. l. Brett},
title = {liionpack: A Python package for simulating packs of batteries with PyBaMM},
journal = {Journal of Open Source Software}
}
31 changes: 28 additions & 3 deletions joss/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ affiliations:
index: 2
- name: Head of Research Software Engineering, University of Oxford, Oxford, UK
index: 3
date: 26 April 2024
date: 1 May 2024
bibliography: paper.bib
---

Expand All @@ -35,7 +35,7 @@ bibliography: paper.bib
`PyBOP` provides a range of tools for the parameterisation and optimisation of battery models, offering
both Bayesian and frequentist approaches with example workflows to assist the user. `PyBOP` can be
used to parameterise various battery models, including the electrochemical and equivalent circuit
models provided by the complementary open-source package `PyBaMM` [@Sulzer:2021].
models provided by the popular open-source package `PyBaMM` [@Sulzer:2021].

# Statement of need

Expand All @@ -53,14 +53,39 @@ and the computational cost of parameter estimation. `PyBOP` reduces the barrier
costs by providing an accessible workflow that efficiently connects battery models with numerical
optimisers, as well as explanatory examples of battery parameterisaton and design optimisation.

This package complements other tools in the field of lithium-ion battery modelling built around
`PyBaMM` such as `liionpack` for simulating battery packs [@Tranter2022].

# Architecture

The PyBOP framework consists of 4 main classes of Python object, namely the Model, Problem, Cost,
and Optimiser classes, as shown in \autoref{fig:objects}. Each of these objects has a base class
and example subclasses that combine to form a flexible and extensible codebase. The typical workflow
would be to define an optimisation problem by constructing the objects in sequence.

![The main PyBOP classes and how they interact.\label{fig:objects}](PyBOP_components.drawio.png){ width=80% }
![The main PyBOP classes and how they interact.\label{fig:objects}](PyBOP_components.drawio.png){ width=100% }

The current options for each class are listed below, in which evolution strategy is abbreviated to ES.

: List of current, preset subclasses for each PyBOP class. []{label=”subclasses”}

| Battery Models | Problem Types | Cost Functions | Optimisation Algorithms |
| :---------------------------------- | :-------------- | :----------------------------- | :------------------------------------------- |
| Single Particle Model (SPM) | Fitting Problem | Sum of Squared Errors (SSE) | Covariance Matrix Adaptation ES (CMA-ES) |
| SPM with Electrolyte (SPMe) | | Root Mean Squared Error (RMSE) | Particle Swarm Optimization (PSO) |
| Doyle-Fuller-Newman (DFN) | | Maximum Likelihood (MLE) | Adaptive Moment Estimation (Adam) |
| Many Particle Model (MPM) | | Maximum a Posteriori (MAP) | Improved Resilient Backpropagation (iRProp-) |
| Multi-Species Multi-Reaction (MSMR) | | | Exponential Natural ES (xNES) |
| Equivalent Circuit Models (ECM) | Observer | Unscented Kalman Filter (UKF) | Separable Natural ES (sNES) |
| | | | Gradient Descent |
| | Design Problem | Gravimetric Energy Density | Nelder-Mead |
| | | Volumetric Energy Density | SciPy Minimize |
| | | | SciPy Differential Evolution |
| | | | (pending) AdamW |
| | | | (pending) Cuckoo Search |

The cost functions are grouped by problem type, while each of the models and optimisers may be selected for any problem-cost
combination.

# Background

Expand Down

0 comments on commit 47027fd

Please sign in to comment.