To main content


BattMo is an open source simulation code for continuum modelling of electrochemical devices written in Matlab and Julia

Contact persons

BattMo logo

BattMo is a framework for continuum modelling of electrochemical devices. We target both flexibility and efficiency. The code is open source, written in Matlab and Julia, available on GitHub.

Lithium-ion PXD simulations

  • The initial development features a pseudo X-dimensional (PXD) framework for the Doyle-Fuller-Newman model of lithium-ion battery cells.
  • Fully-coupled thermal simulation.
  • Multi-dimensional models (1D-3D).
  • Support for large 3 dimensional models
    • The difficulty of solving large systems is overcome by the use of taylored preconditioners. We use open-source AMGCL.
    • We can handle general geometries. A set of parameterized geometry is readily available, such as coin-cell, jelly roll, see here for an overview.
    • BattMo is built upon MRST

High-quality open source code

  • Extensive documentation on GitHub
  • Continuous integration for robust testing and documentation updates.

Design optimization and material characterisation using adjoint-based computation

  • Support for adjoint-based optimization, which brings order of magnitude gains in the computation of the gradients or sensitivities, when the number of design parameters is large.
  • Reuse existing adjoint-based optimisation module from MRST.
  • Example in Inteligent project: Compute the electrode sizes and porosity that optimizes the specific energy of a cell (energy with respect to mass), given the other material properties.
  • Fully differentiable grid: All the grid properties (centroids, volumes) and the resulting discrete differentiation operators (half-transmissibilitie) have AD support, meaning that they can be differentiated, with respect to node coordinates.

Flexible framework for prototyping and integration of new physics

  • Built upon open-source MRST simulator.
  • Native automatic differentiation support.
  • Flexible 3D grid structure.
  • Robust Newton solver for evolutionary partial differential equations.
  • Graph-based model design
    • Model is setup as a composition of sub-models
    • A sub-model corresponds to a computational graph where the nodes are the variables and the edges the functions
  • Fully differentiable models
    • Includes also fully differentiable grids
  • Examples of included physical processes/models
    • Degradation mechanisms
    • Composite materials : two particle models
    • Sea-water batteries
    • Electrolysis

Julia version: BattMo.jl

  • Open source code available as a julia package via GitHub.
  • Order of magnitude gain in computation speed for small models.
  • Uses Jutul, a shared platform with Julia resorvoir simulation tool (JutulDarcy)
  • Support for fully differentiable models.

Electro-chemical systems beyond Lithium-Ion batteries

  • H2/NH3 production electrolysis
    • Physical system
      • Anion Exchange Membrane
      • Protonic membrane (high temperature, work in progress...)
      • Protonic membrane (low temperature, work in progres...)
    • Physical processes
      • Electrochemical processes as in battery : Mass, energy and charge conservation with solid and electrolyte diffusion, migration.
      • SEI growth (deposition), Lithium plating, cracking, mechanics, thermal degradation, hysteresis
      • Multiphase flow in electrodes (Electrolyser and fuel cells are open systems)
  • Sea water battery

Used in several EU projects

Working directions

  • Hybrid models (Physic-constrained AI models)
  • More battery chemistry
  • More degradation processes such Lithium plating
  • Composite material
  • Hysteresis
  • Cracking
  • Mechanics
  • Thermal induced degradation

Development team