-
-
Notifications
You must be signed in to change notification settings - Fork 549
GSoC 2021 Projects
Tip
This is an obsolete version of this document. For an updated version of this page, please visit: https://pybamm.org/gsoc/
Improving battery technology is criticial as we transition to a green economy. Battery modeling helps to achieve this by reducing costs and increasing reliability and safety. The PyBaMM package provides an open-source framework for physics-based battery models and simulations, with a growing focus on real-world experiments and battery degradation. While most of our development team works day-to-day on creating new models and better ways to solve them, the proposed projects (which do not require domain-specific knowledge) will be fantastic contributions to the general framework.
To find out more about PyBaMM, you can visit our website pybamm.org or read our preprint.
We mostly communicate via Slack, so you should start off by joining our Slack workspace and heading to the #gsoc2021-main
channel.
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). This will make it easier for users to see the equations of the model that they are using.
An existing issue with some ideas for this project can be found here.
- [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 contributors will benefit from understanding of university-level mathematical concepts such as the Laplace transform
- Hard