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...
10:55:20 - INFO - LOGGING (log: True) 10:55:20 - INFO - BLOCKS (total: 5, dynamic: 2, static: 3, eventful: 0) 10:55:20 - INFO - GRAPH (nodes: 5, edges: 7, alg. depth: 2, loop depth: 0, runtime: 0.153ms) 10:55:20 - INFO - STARTING -> TRANSIENT (Duration: 1800.00s) 10:55:34 - INFO - -------------------- 1% | 13.3s<20:22 | 0.15 it/s 10:55:45 - INFO - -------------------- 2% | 24.7s<13:40 | 0.16 it/s 10:55:51 - INFO - -------------------- 4% | 30.4s<10:11 | 0.17 it/s 10:56:00 - INFO - #------------------- 6% | 39.4s<08:49 | 0.15 it/s 10:56:05 - INFO - #------------------- 9% | 44.6s<05:05 | 0.16 it/s 10:56:14 - INFO - ##------------------ 13% | 53.1s<03:57 | 0.15 it/s 10:56:19 - INFO - ####---------------- 20% | 58.4s<02:02 | 0.16 it/s 10:56:25 - INFO - ######-------------- 32% | 01:04<01:05 | 0.16 it/s 10:56:31 - INFO - ###########--------- 56% | 01:10<22.3s | 0.16 it/s 10:56:35 - INFO - #################--- 88% | 01:14<3.2s | 0.19 it/s 10:56:37 - INFO - #################### 100% | 01:16<--:-- | 0.29 it/s 10:56:37 - INFO - FINISHED -> TRANSIENT (total steps: 13, successful: 13, runtime: 76725.92 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...
10:56:38 - INFO - LOGGING (log: True) 10:56:38 - INFO - BLOCKS (total: 5, dynamic: 2, static: 3, eventful: 0) 10:56:38 - INFO - GRAPH (nodes: 5, edges: 7, alg. depth: 2, loop depth: 0, runtime: 0.109ms) 10:56:38 - INFO - STARTING -> TRANSIENT (Duration: 1800.00s) 10:56:39 - INFO - -------------------- 1% | 0.5s<51.1s | 3.6 it/s 10:56:41 - INFO - -------------------- 4% | 3.0s<45.3s | 2.8 it/s 10:56:43 - INFO - #------------------- 6% | 4.7s<51.0s | 2.1 it/s 10:56:45 - INFO - #------------------- 9% | 6.3s<48.8s | 1.7 it/s 10:56:47 - INFO - ##------------------ 13% | 8.5s<45.1s | 1.3 it/s 10:56:51 - INFO - ####---------------- 20% | 12.6s<43.3s | 1.00 it/s 10:56:56 - INFO - ######-------------- 32% | 17.9s<33.9s | 0.75 it/s 10:57:01 - INFO - ###########--------- 56% | 22.6s<14.8s | 0.59 it/s 10:57:06 - INFO - #################--- 88% | 27.5s<3.0s | 0.47 it/s 10:57:07 - INFO - #################### 100% | 29.0s<--:-- | 0.54 it/s 10:57:07 - INFO - FINISHED -> TRANSIENT (total steps: 13, successful: 13, runtime: 29001.78 ms) 10:57:08 - INFO - LOGGING (log: True) 10:57:08 - INFO - BLOCKS (total: 5, dynamic: 2, static: 3, eventful: 0) 10:57:08 - INFO - GRAPH (nodes: 5, edges: 7, alg. depth: 2, loop depth: 0, runtime: 0.134ms) 10:57:08 - INFO - STARTING -> TRANSIENT (Duration: 1800.00s) 10:57:15 - INFO - -------------------- 1% | 6.6s<05:50 | 0.51 it/s 10:57:16 - INFO - -------------------- 2% | 7.9s<01:14 | 1.5 it/s 10:57:20 - INFO - #------------------- 6% | 12.1s<01:11 | 1.2 it/s 10:57:23 - INFO - #------------------- 9% | 14.5s<01:09 | 0.94 it/s 10:57:25 - INFO - ####---------------- 20% | 16.4s<21.5s | 0.99 it/s 10:57:27 - INFO - ######-------------- 32% | 18.4s<15.3s | 0.84 it/s 10:57:29 - INFO - ###########--------- 56% | 20.2s<6.1s | 0.75 it/s 10:57:30 - INFO - #################--- 88% | 21.5s<1.0s | 0.76 it/s 10:57:32 - INFO - #################### 100% | 23.7s<--:-- | 0.67 it/s 10:57:32 - INFO - FINISHED -> TRANSIENT (total steps: 13, successful: 13, runtime: 23662.84 ms) 10:57:33 - INFO - LOGGING (log: True) 10:57:33 - INFO - BLOCKS (total: 5, dynamic: 2, static: 3, eventful: 0) 10:57:33 - INFO - GRAPH (nodes: 5, edges: 7, alg. depth: 2, loop depth: 0, runtime: 0.128ms) 10:57:33 - INFO - STARTING -> TRANSIENT (Duration: 1800.00s) 10:57:38 - INFO - -------------------- 1% | 4.6s<07:16 | 0.42 it/s 10:57:40 - INFO - -------------------- 2% | 6.9s<03:17 | 0.64 it/s 10:57:42 - INFO - -------------------- 4% | 9.1s<02:58 | 0.59 it/s 10:57:44 - INFO - #------------------- 6% | 11.3s<02:25 | 0.54 it/s 10:57:49 - INFO - #------------------- 9% | 16.3s<02:24 | 0.44 it/s 10:57:53 - INFO - ##------------------ 13% | 19.7s<01:42 | 0.40 it/s 10:57:59 - INFO - ####---------------- 20% | 25.7s<01:25 | 0.33 it/s 10:58:04 - INFO - ######-------------- 32% | 30.6s<48.1s | 0.29 it/s 10:58:09 - INFO - ###########--------- 56% | 35.7s<18.0s | 0.26 it/s 10:58:11 - INFO - #################--- 88% | 37.8s<1.9s | 0.32 it/s 10:58:13 - INFO - #################### 100% | 39.9s<--:-- | 0.37 it/s 10:58:13 - INFO - FINISHED -> TRANSIENT (total steps: 13, successful: 13, runtime: 39894.27 ms)
Python
Loading...
Summary
CellElectrical+LumpedThermalform a closed electrothermal feedback loop; PathSim resolves the coupling at each step.CellElectricaloutputs total heat [W], which connects directly toLumpedThermal'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.