-
-
Notifications
You must be signed in to change notification settings - Fork 547
GSoC 2021 Projects
PyBaMM (Python Battery Mathematical Modelling) solves physics-based electrochemical DAE models by using state-of-the-art automatic differentiation and numerical solvers. The Doyle-Fuller-Newman model can be solved in under 0.1 seconds, while the reduced-order Single Particle Model and Single Particle Model with electrolyte can be solved in just a few milliseconds. Additional physics can easily be included such as thermal effects, fast particle diffusion, 3D effects, and more. All models are implemented in a flexible manner, and a wide range of models and parameter sets (NCA, NMC, LiCoO2, ...) are available. There is also functionality to simulate any set of experimental instructions, such as CCCV or GITT, or specify drive cycles.
A comprehensive set of example notebooks is available for becoming familiar with PyBaMM. Knowledge of battery physics or mathematical modeling is not required for any of the projects, but may be beneficial for the "EIS" project.
All coding will be done in Python, so contributors should have some proficiency in Python, or another object-oriented programming language. Each project will follow test-driven development, and also involve writing clear documentation (via Sphinx) and examples (mainly in the form of jupyter notebooks) alongside the code. New contributors should make themselves familiar with this workflow. Finally, new contributors should read the contributing guidelines and be familiar with the basics of Git and Github.
ExperimentalData
class- Twitter bot to run simulations
- Printing formatted equations
- Electrochemical Impedance Spectroscopy (EIS) modeling
While PyBaMM is a modeling package, the majority of battery research is performed through experiments, whose data (cell voltage, current, temperature, ...) can be generated in a wide variety of formats.
The goal of this project is to develop functionality to better interface PyBaMM with this experimental data.
In particular, the proposed ExperimentalData
class should import real data and behave like the existing Solution
class (generated by solving a model), so experimental data can be easily plotted and compared with simulations.
- [Easy] New
ExperimentalData
class fully integrated with the PyBaMM structure - [Medium] Ability to import data from common sources (e.g. BatteryArchive)
- [Hard/stretch goal] Tools for automatically fitting the parameters of a model to experimental data
Today, Twitter is one of the best and quickest ways to publicize new science, with a very active battery research community (#battchat). The goal of this project is to develop a bot that automatically generates PyBaMM simulations of battery degradation under various conditions. This will lead to: a) increased publicity and visibility for PyBaMM, showcasing its ability to simulate a wide range of degradation mechanisms b) improved understanding of degradation mechanisms with regular generation of new simulations that may match experiments As a stretch goal, the bot will be able to take requests from Twitter users: the user tweets to the bot with the specifications of the simulation and the bot then runs the simulation and tweets the results back.
- [Medium] A bot which automatically generates results of PyBaMM degradation simulations, with some randomly generated models and experimental conditions (a similar example is the LLC4320 Bot)
- [Hard/Stretch goal] ability to take requests from people tweeting to the bot. This is harder, since requests may be vague.
In PyBaMM, models are represented by expression trees. This allows the model to be defined independent of the user's choice of parameters, spatial discretization, numerical methods and so on, which are plugged in during model processing. The goal of this project is to implement a function that renders a given expression tree in a human-readable form (e.g. by using LaTeX to generate a pdf of the model equations).
- [Easy-medium] A function to print a LaTeX representation of any PyBaMM expression tree
- [Medium-hard/stretch goal] Automatic generation of the model equations in the documentation for each submodel
A common type of experiment in battery science is Electrochemical Impedance Spectroscopy (EIS), which is used to generate a plot known as the "Nyquist plot".
While this is typically modeled using simple "equivalent-circuit" models, the physical models implemented in PyBaMM could also be used to explain such experiments.
In this project, we will
a) Develop functionality to solve a PyBaMM model in the frequency domain to generate Nyquist plots
b) Integrate with existing EIS modeling packages, such as impedance.py
or pyEIS
, to fit experimental data
- [Medium] Generation of a Nyquist plot from any PyBaMM model
- [Hard/Stretch goal] Integration with existing EIS modeling packages, such as
impedance.py
orpyEIS
, to fit experimental data
- This is the hardest of the projects, and requires understanding of university-level mathematical concepts such as the Laplace transform
- Hard