Skip to content

GSoC 2023 Projects

Valentin Sulzer edited this page Feb 2, 2023 · 15 revisions

PyBaMM

Improving battery technology is critical 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 paper.

Getting started

We mostly communicate via Slack, so you should start off by joining our Slack workspace and heading to the #gsoc-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 some.

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

Documentation

Our documentation is currently fragmented across several different locations:

  • The readme on GitHub
  • Our website, pybamm.org, contains generic information about the project
  • API docs + a fledgling user guide on readthedocs
  • Example notebooks on GitHub
  • Some information here on GitHub Wiki

The goal of this project is to consolidate all of the information together under a single location.

  • Create a new website using Hugo's scientific python theme (see #2639). This should contain the same content as the current version of pybamm.org (the pybamm.org URL will be reassigned to this page)
  • Link docs.pybamm.org to our readthedocs API docs and user guide (it might make sense to move the user guide out)
  • Move information from this wiki page to the website
  • Use nbconvert (or other) to run and display static versions of the jupyter notebooks on the website

As a stretch goal, the student will be expected to survey other popular python packages for ideas on how to improve our documentation infrastructure. Some ideas are:

  • Using sphinxcontrib-bibtex to print references from bibtex instead of hardcoding them in docstrings as we currently do
  • Dependency trees
  • In the API docs, link to examples where various functionality is used (scikit-learn)

Note that the focus of this project is not on writing documentation but on improving the infrastructure around it.

Expected outcomes

  • All documentation in one place
  • As much automation as possible to make maintaining and updating documentation easy

Desired skills

  • Basic python and markdown knowledge
  • Basic web development knowledge would be helpful but not required (html + css)
  • Hosting documentation on Sphinx
  • Git version control, CI, testing

Difficulty

  • Medium. This project could be suitable for a 175h project, but can also be extended to a 350h project.

Potential mentors

Techno-economic analysis

While PyBaMM goes deep into advanced models of batteries, much can be done with simpler "back-of-the-envelope" calculations for the capacity, energy, mass, and cost of a battery. The goal of this project will be to create a library for techno-economic analysis that can be combined with existing PyBaMM functionality. This project will draw inspiration from existing libraries (https://github.com/mjlacey/cellmodels, https://github.com/ndrewwang/BotB). See those repositories for more detail on what the outcome might look like.

Expected outcomes

  • A library for techno-economic analysis that can be combined with existing PyBaMM functionality

Desired skills

  • Strong python skills, particularly ability to construct user-friendly APIs
  • Knowledge of basic battery concepts (capacity, resistance, energy, electrodes, etc)
  • Git version control, CI, testing

Difficulty

  • Medium. This project could be suitable for a 175h project, but can also be extended to a 350h project.

Potential mentors

Clone this wiki locally