Skip to main content
PyBaMM includes a set of physics-based models for lead-acid batteries derived from the Newman-Tiedemann porous-electrode framework. All models are available under the pybamm.lead_acid namespace.
Lead-acid models use pybamm.LeadAcidParameters and default to the Sulzer2019 parameter set. Unlike lithium-ion models, there are no particles: the electrode active material is modelled as a solid reactant with no diffusion.

Available models

ModelElectrolyte diffusionSpatial resolutionUse case
FullFull (spatially resolved)Full 1DHigh-fidelity simulation
LOQSLeading-order (spatially averaged)0D / 1DFast simulation, parameter sweeps
BasicFullFullFull 1DEducation and model exploration

Models

Full model

The Full model is a porous-electrode model for lead-acid batteries based on the Newman-Tiedemann framework as described in Sulzer et al. (2019). It resolves spatial distributions of electrolyte concentration and potential, electrode potential, and porosity across the cell sandwich.When to use: High-accuracy simulations where spatial gradients in electrolyte concentration and porosity are important, including during high-rate discharge or charge.Reference: Sulzer, V., et al. (2019). Faster Lead-Acid Battery Simulations from Porous-Electrode Theory: Part I. Physical Model. Journal of The Electrochemical Society.
import pybamm

model = pybamm.lead_acid.Full()
print(model.name)  # 'Full model'

param = model.default_parameter_values  # Sulzer2019
sim = pybamm.Simulation(model, parameter_values=param)
sim.solve([0, 3600])
sim.plot()

Lead-acid specific options

Lead-acid cells produce oxygen at the positive plate during overcharge via electrolyte hydrolysis. Enabling this option adds oxygen diffusion and reaction submodels.
OptionValuesDefault
"hydrolysis""false", "true""false"
When "hydrolysis" is "true", "surface form" cannot be "false". Use "algebraic" or "differential" instead.
model = pybamm.lead_acid.Full(
    options={
        "hydrolysis": "true",
        "surface form": "algebraic",
    }
)
Gas evolution during charge drives electrolyte convection. This can be modelled with a uniform transverse or fully resolved transverse convection model.
OptionValuesDefault
"convection""none", "uniform transverse", "full transverse""none"
model = pybamm.lead_acid.Full(
    options={"convection": "uniform transverse"}
)
OptionValuesDefault
"thermal""isothermal", "lumped", "x-lumped", "x-full""isothermal"
model = pybamm.lead_acid.Full(
    options={"thermal": "lumped"}
)
Control how the external circuit condition is applied. The LOQS model supports callable operating modes via an algebraic constraint.
OptionValuesDefault
"operating mode""current", "voltage", "power", "resistance", "CCCV", callable"current"
model = pybamm.lead_acid.LOQS(
    options={"operating mode": "voltage"}
)

Example with options

import pybamm

# Full lead-acid model with oxygen evolution and uniform convection
model = pybamm.lead_acid.Full(
    options={
        "hydrolysis": "true",
        "surface form": "algebraic",
        "convection": "uniform transverse",
        "thermal": "isothermal",
    }
)

param = model.default_parameter_values  # Sulzer2019
sim = pybamm.Simulation(model, parameter_values=param)
sim.solve([0, 3600])
sim.plot()
Call pybamm.print_citations() after running a simulation to get the full citation list for the models and parameters used.

Build docs developers (and LLMs) love