Skip to main content

Available Parameter Sets

All built-in sets are registered as Python entry points under the pybamm_parameter_sets group and are accessible via pybamm.parameter_sets.
NameChemistryReference
Ai2020Lithium-ionAi et al., 2020
Chen2020Lithium-ionChen et al., 2020
Chen2020_compositeLithium-ion (composite)Chen et al., 2020
Ecker2015Lithium-ionEcker et al., 2015
Ecker2015_graphite_halfcellLi-ion half-cellEcker et al., 2015
Marquis2019Lithium-ionMarquis et al., 2019
Mohtat2020Lithium-ionMohtat et al., 2020
NCA_Kim2011Lithium-ion (NCA)Kim et al., 2011
OKane2022Lithium-ion (degradation)O’Kane et al., 2022
OKane2022_graphite_SiOx_halfcellLi-ion half-cellO’Kane et al., 2022
ORegan2022Lithium-ionO’Regan et al., 2022
Prada2013Lithium-ionPrada et al., 2013
Ramadass2004Lithium-ionRamadass et al., 2004
Xu2019Lithium-ionXu et al., 2019
Sulzer2019Lead-acidSulzer et al., 2019
Chayambuka2022Sodium-ionChayambuka et al., 2022
ECM_ExampleEquivalent circuitExample set
MSMR_ExampleMSMR lithium-ionExample set

Loading a Parameter Set

By name string

Pass the name directly to pybamm.ParameterValues:
import pybamm

param = pybamm.ParameterValues("Chen2020")
print(param["Reference temperature [K]"])  # 298.15

Listing all available sets

for name in pybamm.parameter_sets.keys():
    print(name)

Inspecting a set before loading

# Access raw dict without constructing ParameterValues
raw = pybamm.parameter_sets["Marquis2019"]

Searching Within a Parameter Set

param = pybamm.ParameterValues("Chen2020")

# Print all parameters whose name contains "electrolyte"
param.search("electrolyte")

# Print all parameters whose name contains "diffusivity"
param.search("diffusivity")

Overriding Values

You can override individual entries after loading:
param = pybamm.ParameterValues("Chen2020")

# Override a scalar
param["Current function [A]"] = 2.0

# Override with a Python function (temperature-dependent diffusivity)
def my_diffusivity(T):
    return 1.5e-10 * pybamm.exp(-500 / T)

param["Electrolyte diffusivity [m2.s-1]"] = my_diffusivity

Creating a Custom Parameter Set

A custom parameter set is a plain Python module that exposes a get_parameter_values() function returning a dict.
# my_parameters/MyCell2024.py

def get_parameter_values():
    return {
        "chemistry": "lithium_ion",
        "Cell capacity [A.h]": 5.0,
        "Reference temperature [K]": 298.15,
        "Current function [A]": 5.0,
        # ... all required parameters
    }
Register the entry point in your package’s pyproject.toml:
[project.entry-points."pybamm_parameter_sets"]
MyCell2024 = "my_parameters.MyCell2024:get_parameter_values"
After installing your package (pip install -e .), you can use it like any other set:
param = pybamm.ParameterValues("MyCell2024")

Loading from a BPX File

The Battery Parameter eXchange (BPX) format is an open standard for sharing battery parameters. PyBaMM can import BPX files directly:
param = pybamm.ParameterValues.create_from_bpx("cell_parameters.json")

# Set initial state of charge
param = pybamm.ParameterValues.create_from_bpx("cell_parameters.json", target_soc=0.8)
BPX support requires the optional bpx dependency: pip install pybamm[bpx].

Build docs developers (and LLMs) love