Skip to content

GSoC 2021 Projects

Agriya Khetarpal edited this page Feb 29, 2024 · 14 revisions

Tip

This is an obsolete version of this document. For an updated version of this page, please visit: https://pybamm.org/gsoc/

PyBaMM

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.

Getting started

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.

Projects

ExperimentalData class

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.

Expected outcomes

  • [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

Potential mentors

Twitter bot to run simulations

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.

Expected outcomes

  • [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.

Potential mentors

Printing formatted equations

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.

Expected outcomes

  • [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

Potential mentors

Electrochemical Impedance Spectroscopy (EIS) modelling

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

Expected outcomes

  • [Medium] Generation of a Nyquist plot from any PyBaMM model
  • [Hard/Stretch goal] Integration with existing EIS modeling packages, such as impedance.py or pyEIS, to fit experimental data

Desired skills

  • This is the hardest of the projects, and contributors will benefit from understanding of university-level mathematical concepts such as the Laplace transform

Difficulty

  • Hard

Potential mentors