This example requires external dependencies and cannot be run in the browser.

Electrothermal Coupling with an External Thermal Model

CellElectrical uses PyBaMM's isothermal electrochemistry and exposes heat generation as an output. Wiring it to LumpedThermal creates a closed electrothermal feedback loop directly in PathSim — useful for pack-level thermal networks or custom cooling models.

Model

LumpedThermal implements a single-node energy balance:

MATHDISPLAY0ENDMATH

CellElectrical outputs total heat generation [W], which LumpedThermal accepts directly — no unit bridging needed.

Python
Loading...
/opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm

Simulation: 1 C Discharge with Electrothermal Feedback

Python
Loading...
18:22:06 - INFO - LOGGING (log: True)
18:22:06 - INFO - BLOCKS (total: 5, dynamic: 2, static: 3, eventful: 0)
18:22:06 - INFO - GRAPH (nodes: 5, edges: 7, alg. depth: 2, loop depth: 0, runtime: 0.140ms)
18:22:06 - INFO - STARTING -> TRANSIENT (Duration: 1800.00s)
18:22:18 - INFO - --------------------   1% | 11.8s<18:33 | 0.17 it/s
18:22:27 - INFO - --------------------   2% | 21.0s<10:57 | 0.20 it/s
18:22:33 - INFO - --------------------   4% | 26.7s<09:00 | 0.19 it/s
18:22:37 - INFO - #-------------------   6% | 31.0s<05:52 | 0.20 it/s
18:22:42 - INFO - #-------------------   9% | 35.6s<03:58 | 0.21 it/s
18:22:47 - INFO - ##------------------  13% | 41.1s<02:50 | 0.20 it/s
18:22:52 - INFO - ####----------------  20% | 45.7s<01:38 | 0.21 it/s
18:22:56 - INFO - ######--------------  32% | 49.9s<47.2s | 0.21 it/s
18:23:03 - INFO - ###########---------  56% | 56.4s<20.3s | 0.20 it/s
18:23:06 - INFO - #################---  88% | 59.7s<2.7s | 0.23 it/s
18:23:10 - INFO - #################### 100% | 01:03<--:-- | 0.24 it/s
18:23:10 - INFO - FINISHED -> TRANSIENT (total steps: 13, successful: 13, runtime: 63257.10 ms)
Python
Loading...

Effect of Cooling Conditions

Sweep of MATHINLINE0ENDMATH from adiabatic to liquid-cooled to show the impact on voltage and temperature.

Python
Loading...
18:23:11 - INFO - LOGGING (log: True)
18:23:11 - INFO - BLOCKS (total: 5, dynamic: 2, static: 3, eventful: 0)
18:23:11 - INFO - GRAPH (nodes: 5, edges: 7, alg. depth: 2, loop depth: 0, runtime: 0.134ms)
18:23:11 - INFO - STARTING -> TRANSIENT (Duration: 1800.00s)
18:23:24 - INFO - --------------------   1% | 12.8s<19:04 | 0.16 it/s
18:23:33 - INFO - --------------------   2% | 21.3s<08:24 | 0.24 it/s
18:23:34 - INFO - #-------------------   6% | 22.5s<43.7s | 1.2 it/s
18:23:34 - INFO - ####----------------  20% | 23.2s<4.9s | 3.6 it/s
18:23:40 - INFO - ###########---------  56% | 29.0s<3.5s | 2.0 it/s
18:23:42 - INFO - #################---  88% | 30.4s<0.8s | 1.6 it/s
18:23:45 - INFO - #################### 100% | 33.9s<--:-- | 1.2 it/s
18:23:45 - INFO - FINISHED -> TRANSIENT (total steps: 13, successful: 13, runtime: 33894.33 ms)
18:23:46 - INFO - LOGGING (log: True)
18:23:46 - INFO - BLOCKS (total: 5, dynamic: 2, static: 3, eventful: 0)
18:23:46 - INFO - GRAPH (nodes: 5, edges: 7, alg. depth: 2, loop depth: 0, runtime: 0.133ms)
18:23:46 - INFO - STARTING -> TRANSIENT (Duration: 1800.00s)
18:23:51 - INFO - --------------------   1% | 4.7s<02:43 | 1.1 it/s
18:23:56 - INFO - --------------------   2% | 9.4s<03:10 | 0.77 it/s
18:23:57 - INFO - --------------------   4% | 10.9s<02:29 | 0.74 it/s
18:24:00 - INFO - #-------------------   9% | 13.7s<01:06 | 0.81 it/s
18:24:03 - INFO - ##------------------  13% | 16.4s<59.3s | 0.68 it/s
18:24:08 - INFO - ####----------------  20% | 21.5s<55.9s | 0.54 it/s
18:24:13 - INFO - ######--------------  32% | 26.9s<40.3s | 0.43 it/s
18:24:19 - INFO - ###########---------  56% | 32.8s<18.0s | 0.35 it/s
18:24:22 - INFO - #################---  88% | 35.4s<2.2s | 0.36 it/s
18:24:24 - INFO - #################### 100% | 37.3s<--:-- | 0.41 it/s
18:24:24 - INFO - FINISHED -> TRANSIENT (total steps: 13, successful: 13, runtime: 37323.93 ms)
18:24:24 - INFO - LOGGING (log: True)
18:24:24 - INFO - BLOCKS (total: 5, dynamic: 2, static: 3, eventful: 0)
18:24:24 - INFO - GRAPH (nodes: 5, edges: 7, alg. depth: 2, loop depth: 0, runtime: 0.116ms)
18:24:24 - INFO - STARTING -> TRANSIENT (Duration: 1800.00s)
18:24:33 - INFO - --------------------   1% | 8.4s<12:43 | 0.25 it/s
18:24:38 - INFO - --------------------   2% | 13.7s<05:52 | 0.39 it/s
18:24:41 - INFO - --------------------   4% | 16.5s<04:37 | 0.38 it/s
18:24:46 - INFO - #-------------------   6% | 21.9s<04:25 | 0.32 it/s
18:24:49 - INFO - #-------------------   9% | 24.6s<02:35 | 0.34 it/s
18:24:50 - INFO - ##------------------  13% | 25.8s<57.8s | 0.48 it/s
18:24:53 - INFO - ####----------------  20% | 28.6s<44.7s | 0.44 it/s
18:24:55 - INFO - ######--------------  32% | 30.3s<19.8s | 0.49 it/s
18:24:58 - INFO - ###########---------  56% | 33.7s<9.5s | 0.43 it/s
18:25:02 - INFO - #################---  88% | 37.6s<2.1s | 0.38 it/s
18:25:05 - INFO - #################### 100% | 41.1s<--:-- | 0.35 it/s
18:25:05 - INFO - FINISHED -> TRANSIENT (total steps: 13, successful: 13, runtime: 41069.24 ms)
Python
Loading...

Summary

  • CellElectrical + LumpedThermal form a closed electrothermal feedback loop; PathSim resolves the coupling at each step.
  • CellElectrical outputs total heat [W], which connects directly to LumpedThermal's input — no unit conversion needed.
  • Stronger cooling keeps the cell cooler and slightly raises the discharge voltage.
  • For DAE models (e.g. DFN), see notebook 03.