pybamm-team / PyBaMM

Fast and flexible physics-based battery models in Python
https://www.pybamm.org/
BSD 3-Clause "New" or "Revised" License
1.13k stars 549 forks source link

Technical roadmap #3839

Open brosaplanella opened 9 months ago

brosaplanella commented 9 months ago

In our last developer meeting we agreed to hijack the next one (18th of March 4pm UK time, link will be available on the PyBaMM Slack channel) to discuss the technical roadmap for PyBaMM.

The motivation is that for the past few months we have been focusing mostly on infrastructure and smaller issues, and there are some major projects to undertake that would benefit of a more structured vision (e.g. refactoring). The goal of this upcoming meeting is to discuss what this priorities should be and choose a coordinator/lead for each one. Then, the various people/teams interested in working on each priority can discuss and work on the arising issues.

This issue is to collect any thoughts regarding the technical roadmap both before and after the meeting.

valentinsulzer commented 9 months ago

Model entry points

We don't have as many contributors adding models to PyBaMM as we'd like. There are a few reasons for this

We propose "model entry points" as a solution to this. Using entry points, contributors can create models in their own repositories and make them easily available to the rest of the community, without the models having to be added to PyBaMM itself. This will enable a community for battery models that use the PyBaMM infrastructure but are not owned by the PyBaMM team.

Advantages

How to start

Later changes

After this is done, we will be in a much better position to consider fully separating the model code and PDE code

valentinsulzer commented 9 months ago

Parameter refactor

Refactor parameter values to use the BPX format by default. Using nested dictionaries allows cleaner definition of negative / positive and also different components of the battery. This is a big breaking change so we should add a conversion class from legacy parameter sets to new ones, and legacy parameter sets should still work for a while.

valentinsulzer commented 9 months ago

3D simulations

@tlroy has been working on some 3D electrochemical models in firedrake (a python-based finite element code similar to FEniCS). This provides a pathway to allow full 3D simulations in PyBaMM. Very early stage / exploratory at this point

TomTranter commented 9 months ago

I'd be interested in 3d models and it aligns with what I've done on jellyrolls

brosaplanella commented 8 months ago

Tidy up sumbodel structure

The current submodel structure is getting a bit messy, especially with degradation models. Allowing for model entry points (https://github.com/pybamm-team/PyBaMM/issues/3839#issuecomment-1966614301) will certainly facilitate the code. We should also enable (or publicly advertise if already possible) a way to assemble models as a dictionary of submodels and reduce the number of options to the most standard models (leaving edge cases to be defined as dictionaries).

In my opinion, the new structure should be designed generic enough to allow new chemistries (e.g. solid state electrolytes, lithium-sulfur...) if we wish to include them in the future.

brosaplanella commented 8 months ago

Refactor backend to be model agnostic

The core of PyBaMM should be model agnostic (i.e. not assume that the models implemented are for batteries) but in some places the battery assumptions have leaked in. These assumptions are sprinkled over various part of the codes but a good place to start would with the processed variables.

martinjrobins commented 8 months ago

Refactor backend to be model agnostic

As well as processed variables I think the Experiment class should have a base class that is not battery specific (see https://github.com/pybamm-team/PyBaMM/issues/3834). Same with Simulation class probably...

martinjrobins commented 8 months ago

Parameter refactor

Refactor parameter values to use the BPX format by default.

Isn't the BPX format for DFN models only? I would have thought that the set of parameters that pybamm uses is much broader than what BPX defines. Then there is non-battery models as well, equivilent circuit models etc.

martinjrobins commented 8 months ago

Parameter Inference

I'd like to continue making pybamm easier to work with for the parameter inference libraries like PyBOP (https://github.com/pybop-team/PyBOP). At the moment I think this includes:

brosaplanella commented 8 months ago

Summary of roadmap meeting 18/03/24

The main outcomes of the meeting were that we will initially work on the following areas:

This does not mean we are dropping the other areas above, just leaving them for a later stage.

I will now create separate issues for each area so people can continue the discussions there and organise themselves. I will keep this issue open to collect other suggestions that arise.