Battery simulation blocks for PathSim
Documentation • PathSim Homepage • GitHub
PathSim-Batt extends the PathSim simulation framework with battery cell blocks backed by PyBaMM. All blocks follow the standard PathSim interface and can be wired into any simulation diagram.
Install
pip install pathsim-batt
Quick start
import pybamm
from pathsim import Connection, Simulation
from pathsim.blocks import Constant
from pathsim.solvers import ESDIRK43
from pathsim_batt import CellElectrothermal
cell = CellElectrothermal(initial_soc=1.0) # defaults: SPMe + Chen2020
I_src = Constant(5.0) # 5 A discharge
T_src = Constant(298.15) # 25 °C ambient
sim = Simulation(
blocks=[I_src, T_src, cell],
connections=[Connection(I_src, cell["I"]), Connection(T_src, cell["T_amb"])],
dt=1.0,
Solver=ESDIRK43,
)
sim.run(3600)
print(f"V = {cell.outputs[0]:.3f} V T = {cell.outputs[1]:.1f} K SOC = {cell.outputs[3]:.3f}")
Choosing a block
Two decisions determine the right block: thermal ownership and integration strategy.
| Block | Thermal | Strategy | Use when |
|---|---|---|---|
CellElectrothermal |
PyBaMM (internal) | Monolithic ODE | Single cell, coupled electro-thermal, ODE model |
CellElectrical + LumpedThermal |
PathSim (external) | Monolithic ODE | Pack-level, custom cooling, ODE model |
CellCoSimElectrothermal |
PyBaMM (internal) | Co-simulation | DAE models (DFN, lead_acid.Full), mixed solvers |
CellCoSimElectrical + LumpedThermal |
PathSim (external) | Co-simulation | DAE models with external thermal network |
LumpedThermal is a single-node thermal block (mass, Cp, UA, T0) that receives Q_dot from a CellElectrical block and feeds back cell temperature.
PyBaMM model compatibility
Thermal sub-model and heat-source options are injected automatically — pass the bare model class with no options=.
| PyBaMM model | Default parameter set | CellElectrical |
CellElectrothermal |
CellCoSimElectrical |
CellCoSimElectrothermal |
|---|---|---|---|---|---|
lithium_ion.SPM |
Chen2020 |
✅ | ✅ | ✅ | ✅ |
lithium_ion.SPMe |
Chen2020 |
✅ | ✅ | ✅ | ✅ |
lithium_ion.DFN |
Chen2020 |
❌ DAE | ❌ DAE | ✅ | ✅ |
lead_acid.LOQS |
Sulzer2019 |
✅ ¹ | ✅ ¹ | ✅ ² | ✅ ² |
lead_acid.Full |
Sulzer2019 |
❌ DAE | ❌ DAE | ✅ | ✅ |
equivalent_circuit.Thevenin |
ECM_Example |
✅ | ✅ | ✅ ³ | ✅ ³ |
¹ PyBaMM < 26.7 only — from 26.7 on LOQS is a DAE, use a CellCoSim* block instead.
² PyBaMM < 26.7 only — pass pybamm_solver=pybamm.CasadiSolver(mode="safe"); the default IDAKLUSolver errors on LOQS. Fixed in 26.7.
³ initial_soc=1.0 fails because PyBaMM requires event values to be strictly positive at t=0; the "Maximum SoC" event is zero exactly at full charge. Any value below 1.0 (e.g. initial_soc=0.99) works.
import pybamm
from pathsim_batt import CellElectrothermal, CellCoSimElectrical
# Custom chemistry / parameter set
cell = CellElectrothermal(
model=pybamm.lithium_ion.SPMe(),
parameter_values=pybamm.ParameterValues("Mohtat2020"),
)
# Lead-acid via co-simulation (DAE model)
cell = CellCoSimElectrical(
model=pybamm.lead_acid.Full(),
parameter_values=pybamm.ParameterValues("Sulzer2019"),
dt=1.0,
)
# Equivalent circuit model
cell = CellElectrical(
model=pybamm.equivalent_circuit.Thevenin(),
parameter_values=pybamm.ParameterValues("ECM_Example"),
initial_soc=0.9,
)
License
MIT
Release files for pathsim-batt 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pathsim_batt-0.2.2.tar.gz | 49.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pathsim_batt-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.7 kB
Release files / pathsim_batt-0.2.2.tar.gz
| Download URL | pathsim_batt-0.2.2.tar.gz |
|---|---|
| Size | 49.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8df9b8f91fca1f78cbfa79347d1454db670b3902e8d69b99e576d31af77a061c
|
|
BLAKE2b-256 checksum How to use checksums |
480d00b3b954fe1687d156996904533142827eb32a4b77caf8a9df9a58616a77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 21, 2026.
Transparency logRelease files / pathsim_batt-0.2.2-py3-none-any.whl
| Download URL | pathsim_batt-0.2.2-py3-none-any.whl |
|---|---|
| Size | 13.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
51929104bd02f9a8ad59df4952e4ead980af57d2ed0cfc468334ff82b8e7803c
|
|
BLAKE2b-256 checksum How to use checksums |
40b0104d12a1c9ff0da36ae1bc0c63f86fdd4261fa9c7b64b9cba6aae0022ce2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 21, 2026.
Transparency log