Skip to content

Commit eeccaa9

Browse files
authored
Merge pull request #1022 from ferranbrosa/issue-718-cooling-area
Issue 718 cooling area
2 parents 8863c25 + 3c68bd0 commit eeccaa9

File tree

23 files changed

+136
-56
lines changed

23 files changed

+136
-56
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## Features
44

5+
- Added arbitrary geometry to the lumped thermal model ([#718](https://github.com/pybamm-team/PyBaMM/issues/718))
56
- Allowed `ProcessedVariable` to handle cases where `len(solution.t)=1` ([#1020](https://github.com/pybamm-team/PyBaMM/pull/1020))
67
- Added `BackwardIndefiniteIntegral` symbol ([#1014](https://github.com/pybamm-team/PyBaMM/pull/1014))
78
- Added `plot` and `plot2D` to enable easy plotting of `pybamm.Array` objects ([#1008](https://github.com/pybamm-team/PyBaMM/pull/1008))

examples/notebooks/models/spm1.png

-229 KB
Binary file not shown.

examples/notebooks/models/spm2.png

-6.2 KB
Binary file not shown.

pybamm/input/parameters/lead-acid/cells/BBOXX_Sulzer2019/parameters.csv

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,22 @@ Negative tab centre z-coordinate [m],0.114,Tab at top,
1515
Positive tab width [m],0.04,,Estimated value
1616
Positive tab centre y-coordinate [m],0.147,,Estimated value
1717
Positive tab centre z-coordinate [m],0.114,Tab at top,
18+
Cell cooling surface area [m2],1.54E-1,,
19+
Cell volume [m3],2.70E-4,,
1820
,,,
1921
# Electrical,,,
2022
Cell capacity [A.h],17,Manufacturer,
2123
Typical current [A],1,,
2224
Current function [A],1,default current function,
2325
,,,
2426
# Density,,,
25-
Negative current collector density [kg.m-3],11300, same as electrode,
27+
Negative current collector density [kg.m-3],11300," same as electrode",
2628
Positive current collector density [kg.m-3],9375,same as electrode,
27-
2829
,,,
2930
# Specific heat capacity,,,
3031
Negative current collector specific heat capacity [J.kg-1.K-1],130,CRC Handbook of Chemistry and Physics,
3132
Positive current collector specific heat capacity [J.kg-1.K-1],256,NIST Chemistry WebBook SRD69,
3233
,,,
3334
# Thermal conductivity,,,
3435
Negative current collector thermal conductivity [W.m-1.K-1],35,CRC Handbook of Chemistry and Physics,
35-
Positive current collector thermal conductivity [W.m-1.K-1],35,assume same as lead,
36-
36+
Positive current collector thermal conductivity [W.m-1.K-1],35,assume same as lead,

pybamm/input/parameters/lead-acid/experiments/1C_discharge_from_full/parameters.csv

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Negative current collector surface heat transfer coefficient [W.m-2.K-1],0,,
99
Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,,
1010
Negative tab heat transfer coefficient [W.m-2.K-1],10,,
1111
Positive tab heat transfer coefficient [W.m-2.K-1],10,,
12+
Total heat transfer coefficient [W.m-2.K-1],10,,
1213
Edge heat transfer coefficient [W.m-2.K-1],0.3,,
1314

1415
,,,

pybamm/input/parameters/lithium-ion/cells/Kim2011/parameters.csv

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ Negative tab centre z-coordinate [m],0.2, At top,
1515
Positive tab width [m],0.044,,
1616
Positive tab centre y-coordinate [m],0.137,,
1717
Positive tab centre z-coordinate [m],0.2,At top,
18+
Cell cooling surface area [m2],5.61E-2,,pouch
19+
Cell volume [m3],4.62E-6,,pouch
1820
,,,
1921
# Current collector properties ,,,
2022
Negative current collector conductivity [S.m-1],59.6E6,,

pybamm/input/parameters/lithium-ion/cells/LGM50_Chen2020/parameters.csv

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Positive electrode thickness [m],75.6E-6,Chen 2020,
99
Positive current collector thickness [m],16E-6,Chen 2020,
1010
Electrode height [m],6.5E-2,Chen 2020,Not needed for 1D
1111
Electrode width [m],1.58,Chen 2020,Not needed for 1D
12+
Cell cooling surface area [m2],5.31E-3,Chen 2020,cylindrical
13+
Cell volume [m3],2.42E-5,Chen 2020,cylindrical
1214
,,,
1315
# Current collector properties ,,,
1416
Negative current collector conductivity [S.m-1],58411000,CRC Handbook,copper
@@ -29,4 +31,4 @@ Positive current collector thermal conductivity [W.m-1.K-1],237,CRC Handbook,alu
2931
# Electrical,,,
3032
Cell capacity [A.h],5,Chen 2020,
3133
Typical current [A],5,Chen 2020,
32-
Current function [A],5,default current function,
34+
Current function [A],5,default current function,

pybamm/input/parameters/lithium-ion/cells/UMBL_Mohtat2020/parameters.csv

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Positive electrode thickness [m],67E-06,Peyman MPM,
99
Positive current collector thickness [m],2.5E-05,Scott Moura FastDFN,no info from Peyman MPM
1010
Electrode height [m],1,KOKAM SLPB78205130H,Not needed for 1D
1111
Electrode width [m],0.2050,KOKAM SLPB78205130H,Not needed for 1D
12+
Cell cooling surface area [m2],0.41,,pouch
13+
Cell volume [m3]3.92E-5,,pouch
1214
,,,
1315
# Current collector properties ,,,
1416
Negative current collector conductivity [S.m-1],59600000,LIONSIMBA,carbon

pybamm/input/parameters/lithium-ion/cells/kokam_Ecker2015/parameters.csv

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Positive electrode thickness [m],5.4E-05,,
99
Positive current collector thickness [m],2.5E-05,,
1010
Electrode height [m],1.01E-01,,
1111
Electrode width [m],8.50E-02,,
12+
Cell cooling surface area [m2],1.72E-2,,pouch (single layer)
13+
Cell volume [m3],1.61E-6,,pouch (single layer)
1214
,,,
1315
# Electrical,,,
1416
Cell capacity [A.h], 0.15625, 7.5/48 (parameter set for a single layer cell),

pybamm/input/parameters/lithium-ion/cells/kokam_Marquis2019/parameters.csv

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ Negative tab centre z-coordinate [m],0.137,,Need to find actual value for KOKAM
1515
Positive tab width [m],0.04,,Need to find actual value for KOKAM cell
1616
Positive tab centre y-coordinate [m],0.147,,Need to find actual value for KOKAM cell
1717
Positive tab centre z-coordinate [m],0.137,,Need to find actual value for KOKAM cell
18+
Cell cooling surface area [m2],5.69E-2,,pouch
19+
Cell volume [m3],7.80E-6,,pouch
1820
,,,
1921
# Current collector properties ,,,
2022
Negative current collector conductivity [S.m-1],59600000,LIONSIMBA,carbon
@@ -35,4 +37,4 @@ Positive current collector thermal conductivity [W.m-1.K-1],237,,
3537
# Electrical,,,
3638
Cell capacity [A.h],0.680616,,24 Ah/m2 * 0.137m * 0.207m
3739
Typical current [A],0.680616,,1C current
38-
Current function [A],0.680616,default current function,
40+
Current function [A],0.680616,default current function,

pybamm/input/parameters/lithium-ion/experiments/1C_charge_from_empty_Mohtat2020/parameters.csv

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,,
88
Negative tab heat transfer coefficient [W.m-2.K-1],0,,
99
Positive tab heat transfer coefficient [W.m-2.K-1],0,,
1010
Edge heat transfer coefficient [W.m-2.K-1],5,Peyman MPM,
11+
Total heat transfer coefficient [W.m-2.K-1],5,Peyman MPM,
1112
Ambient temperature [K], 298.15,,
1213
,,,
1314
# Electrical

pybamm/input/parameters/lithium-ion/experiments/1C_discharge_from_full_Chen2020/parameters.csv

+2-6
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,8 @@ Name [units],Value,Reference,Notes
33
,,,
44
# Temperature
55
Reference temperature [K],298.15,25C,
6-
Negative current collector surface heat transfer coefficient [W.m-2.K-1],0,default,
7-
Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,default,
8-
Negative tab heat transfer coefficient [W.m-2.K-1],10,default,
9-
Positive tab heat transfer coefficient [W.m-2.K-1],10,default,
10-
Edge heat transfer coefficient [W.m-2.K-1],0.3,default,
11-
Ambient temperature [K]," 298.15",,
6+
Total heat transfer coefficient [W.m-2.K-1],10,default,
7+
Ambient temperature [K],298.15,,
128
,,,
139
# Electrical
1410
Number of electrodes connected in parallel to make a cell,1,,

pybamm/input/parameters/lithium-ion/experiments/1C_discharge_from_full_Ecker2015/parameters.csv

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,Paper
88
Negative tab heat transfer coefficient [W.m-2.K-1],10,Paper does not consider thermal effects,
99
Positive tab heat transfer coefficient [W.m-2.K-1],10,Paper does not consider thermal effects,
1010
Edge heat transfer coefficient [W.m-2.K-1],0.3,Paper does not consider thermal effects,
11-
Ambient temperature [K], 298.15,,
11+
Total heat transfer coefficient [W.m-2.K-1],10,Paper does not consider thermal effects,
12+
Ambient temperature [K],298.15,,
1213

1314
,,,
1415
# Electrical

pybamm/input/parameters/lithium-ion/experiments/1C_discharge_from_full_Kim2011/parameters.csv

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,,
88
Negative tab heat transfer coefficient [W.m-2.K-1],25,,
99
Positive tab heat transfer coefficient [W.m-2.K-1],25,,
1010
Edge heat transfer coefficient [W.m-2.K-1],0.3,,
11-
Ambient temperature [K], 298.15,,
11+
Total heat transfer coefficient [W.m-2.K-1],25,,
12+
Ambient temperature [K],298.15,,
1213

1314
,,,
1415
# Electrical

pybamm/input/parameters/lithium-ion/experiments/1C_discharge_from_full_Marquis2019/parameters.csv

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ Name [units],Value,Reference,Notes
33
,,,
44
# Temperature
55
Reference temperature [K],298.15,25C,
6-
Ambient temperature [K], 298.15,,
6+
Ambient temperature [K],298.15,,
77
Negative current collector surface heat transfer coefficient [W.m-2.K-1],0,,
88
Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,,
99
Negative tab heat transfer coefficient [W.m-2.K-1],10,,
1010
Positive tab heat transfer coefficient [W.m-2.K-1],10,,
1111
Edge heat transfer coefficient [W.m-2.K-1],0.3,,
12+
Total heat transfer coefficient [W.m-2.K-1],10,,
1213
,,,
1314
# Electrical
1415
Number of electrodes connected in parallel to make a cell,1,,

pybamm/models/full_battery_models/base_battery_model.py

+30-4
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,25 @@ def options(self, extra_options):
181181
"current collector": "uniform",
182182
"particle": "Fickian diffusion",
183183
"thermal": "isothermal",
184+
"cell_geometry": None,
184185
"external submodels": [],
185186
"sei": None,
186187
}
188+
# Change the default for cell geometry based on which thermal option is provided
189+
extra_options = extra_options or {}
190+
thermal_option = extra_options.get(
191+
"thermal", None
192+
) # return None if option not given
193+
if thermal_option is None or thermal_option in ["isothermal", "lumped"]:
194+
default_options["cell_geometry"] = "arbitrary"
195+
else:
196+
default_options["cell_geometry"] = "pouch"
197+
# The "cell_geometry" option will still be overridden by extra_options if
198+
# provided
199+
187200
# Change the default for SEI film resistance based on which sei option is
188201
# provided
189-
extra_options = extra_options or {}
202+
# extra_options = extra_options or {}
190203
sei_option = extra_options.get("sei", None) # return None if option not given
191204
if sei_option is None:
192205
default_options["sei film resistance"] = None
@@ -213,6 +226,13 @@ def options(self, extra_options):
213226
raise pybamm.OptionError(
214227
"convection not implemented for lithium-ion models"
215228
)
229+
if (
230+
options["thermal"] in ["x-lumped", "x-full"]
231+
and options["cell_geometry"] != "pouch"
232+
):
233+
raise pybamm.OptionError(
234+
options["thermal"] + " model must have pouch geometry."
235+
)
216236
if isinstance(self, pybamm.lead_acid.BaseModel):
217237
if options["thermal"] != "isothermal" and options["dimensionality"] != 0:
218238
raise pybamm.OptionError(
@@ -273,6 +293,10 @@ def options(self, extra_options):
273293
raise pybamm.OptionError(
274294
"Unknown thermal model '{}'".format(options["thermal"])
275295
)
296+
if options["cell_geometry"] not in ["arbitrary", "pouch"]:
297+
raise pybamm.OptionError(
298+
"Unknown geometry '{}'".format(options["cell_geometry"])
299+
)
276300
if options["sei"] not in [
277301
None,
278302
"constant",
@@ -548,13 +572,15 @@ def set_thermal_submodel(self):
548572

549573
elif self.options["thermal"] == "lumped":
550574
thermal_submodel = pybamm.thermal.Lumped(
551-
self.param, self.options["dimensionality"]
575+
self.param,
576+
self.options["dimensionality"],
577+
self.options["cell_geometry"],
552578
)
553579

554580
elif self.options["thermal"] == "x-lumped":
555581
if self.options["dimensionality"] == 0:
556-
# With 0D current collectors x-lumped is equivalent to lumped
557-
thermal_submodel = pybamm.thermal.Lumped(self.param)
582+
# With 0D current collectors x-lumped is equivalent to lumped pouch
583+
thermal_submodel = pybamm.thermal.Lumped(self.param, geometry="pouch")
558584
elif self.options["dimensionality"] == 1:
559585
thermal_submodel = pybamm.thermal.pouch_cell.CurrentCollector1D(
560586
self.param

pybamm/models/submodels/thermal/lumped.py

+48-37
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,15 @@ class Lumped(BaseThermal):
1515
The parameters to use for this submodel
1616
cc_dimension: int, optional
1717
The dimension of the current collectors. Can be 0 (default), 1 or 2.
18+
geometry: string, optional
19+
The geometry for the lumped thermal submodel. Can be "arbitrary" (default) or
20+
pouch.
1821
1922
**Extends:** :class:`pybamm.thermal.BaseThermal`
2023
"""
2124

22-
def __init__(self, param, cc_dimension=0):
25+
def __init__(self, param, cc_dimension=0, geometry="arbitrary"):
26+
self.geometry = geometry
2327
super().__init__(param, cc_dimension)
2428

2529
def get_fundamental_variables(self):
@@ -49,46 +53,53 @@ def set_rhs(self, variables):
4953
T_amb = variables["Ambient temperature"]
5054

5155
# Account for surface area to volume ratio in cooling coefficient
52-
# Note: assumes pouch cell geometry. The factor 1/delta^2 comes from
53-
# the choice of non-dimensionalisation.
54-
# TODO: allow for arbitrary surface area to volume ratio in order to model
55-
# different cell geometries (see #718)
56-
cell_volume = self.param.l * self.param.l_y * self.param.l_z
57-
58-
yz_cell_surface_area = self.param.l_y * self.param.l_z
59-
yz_surface_cooling_coefficient = (
60-
-(self.param.h_cn + self.param.h_cp)
61-
* yz_cell_surface_area
62-
/ cell_volume
63-
/ (self.param.delta ** 2)
64-
)
56+
# The factor 1/delta^2 comes from the choice of non-dimensionalisation.
57+
if self.geometry == "pouch":
58+
cell_volume = self.param.l * self.param.l_y * self.param.l_z
59+
60+
yz_cell_surface_area = self.param.l_y * self.param.l_z
61+
yz_surface_cooling_coefficient = (
62+
-(self.param.h_cn + self.param.h_cp)
63+
* yz_cell_surface_area
64+
/ cell_volume
65+
/ (self.param.delta ** 2)
66+
)
6567

66-
negative_tab_area = self.param.l_tab_n * self.param.l_cn
67-
negative_tab_cooling_coefficient = (
68-
-self.param.h_tab_n * negative_tab_area / cell_volume / self.param.delta
69-
)
68+
negative_tab_area = self.param.l_tab_n * self.param.l_cn
69+
negative_tab_cooling_coefficient = (
70+
-self.param.h_tab_n * negative_tab_area / cell_volume / self.param.delta
71+
)
7072

71-
positive_tab_area = self.param.l_tab_p * self.param.l_cp
72-
positive_tab_cooling_coefficient = (
73-
-self.param.h_tab_p * positive_tab_area / cell_volume / self.param.delta
74-
)
73+
positive_tab_area = self.param.l_tab_p * self.param.l_cp
74+
positive_tab_cooling_coefficient = (
75+
-self.param.h_tab_p * positive_tab_area / cell_volume / self.param.delta
76+
)
7577

76-
edge_area = (
77-
2 * self.param.l_y * self.param.l
78-
+ 2 * self.param.l_z * self.param.l
79-
- negative_tab_area
80-
- positive_tab_area
81-
)
82-
edge_cooling_coefficient = (
83-
-self.param.h_edge * edge_area / cell_volume / self.param.delta
84-
)
78+
edge_area = (
79+
2 * self.param.l_y * self.param.l
80+
+ 2 * self.param.l_z * self.param.l
81+
- negative_tab_area
82+
- positive_tab_area
83+
)
84+
edge_cooling_coefficient = (
85+
-self.param.h_edge * edge_area / cell_volume / self.param.delta
86+
)
8587

86-
total_cooling_coefficient = (
87-
yz_surface_cooling_coefficient
88-
+ negative_tab_cooling_coefficient
89-
+ positive_tab_cooling_coefficient
90-
+ edge_cooling_coefficient
91-
)
88+
total_cooling_coefficient = (
89+
yz_surface_cooling_coefficient
90+
+ negative_tab_cooling_coefficient
91+
+ positive_tab_cooling_coefficient
92+
+ edge_cooling_coefficient
93+
)
94+
elif self.geometry == "arbitrary":
95+
cell_surface_area = self.param.a_cooling
96+
cell_volume = self.param.v_cell
97+
total_cooling_coefficient = (
98+
-self.param.h_total
99+
* cell_surface_area
100+
/ cell_volume
101+
/ (self.param.delta ** 2)
102+
)
92103

93104
self.rhs = {
94105
T_vol_av: (

pybamm/parameters/geometric_parameters.py

+4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
L_y = pybamm.Parameter("Electrode width [m]")
2020
L_z = pybamm.Parameter("Electrode height [m]")
2121
A_cc = L_y * L_z # Area of current collector
22+
A_cooling = pybamm.Parameter("Cell cooling surface area [m2]")
23+
V_cell = pybamm.Parameter("Cell volume [m3]")
2224

2325
# Tab geometry
2426
L_tab_n = pybamm.Parameter("Negative tab width [m]")
@@ -55,6 +57,8 @@
5557
l_y = L_y / L_z
5658
l_z = L_z / L_z
5759
a_cc = l_y * l_z
60+
a_cooling = A_cooling / (L_z ** 2)
61+
v_cell = V_cell / (L_x * L_z ** 2)
5862

5963
l = L / L_x
6064
delta = L_x / L_z # Aspect ratio

pybamm/parameters/standard_parameters_lead_acid.py

+5
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
L_y = pybamm.geometric_parameters.L_y
3333
L_z = pybamm.geometric_parameters.L_z
3434
A_cc = pybamm.geometric_parameters.A_cc
35+
A_cooling = pybamm.geometric_parameters.A_cooling
36+
V_cell = pybamm.geometric_parameters.V_cell
3537
W = L_y
3638
H = L_z
3739
A_cs = A_cc
@@ -315,6 +317,8 @@ def j0_p_Ox_dimensional(c_e, T):
315317
l_y = pybamm.geometric_parameters.l_y
316318
l_z = pybamm.geometric_parameters.l_z
317319
a_cc = pybamm.geometric_parameters.a_cc
320+
a_cooling = pybamm.geometric_parameters.a_cooling
321+
v_cell = pybamm.geometric_parameters.v_cell
318322
l = pybamm.geometric_parameters.l
319323
delta = pybamm.geometric_parameters.delta
320324
# In lead-acid the current collector and electrodes are the same (same thickness)
@@ -455,6 +459,7 @@ def j0_p_Ox_dimensional(c_e, T):
455459
h_tab_p = pybamm.thermal_parameters.h_tab_p
456460
h_cn = pybamm.thermal_parameters.h_cn
457461
h_cp = pybamm.thermal_parameters.h_cp
462+
h_total = pybamm.thermal_parameters.h_total
458463

459464
B = (
460465
i_typ

0 commit comments

Comments
 (0)