Skip to content

Commit

Permalink
#912 added cooling to 1D current collector
Browse files Browse the repository at this point in the history
  • Loading branch information
Scottmar93 committed Apr 17, 2020
1 parent 152d28f commit ac3fc95
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,30 @@ def set_rhs(self, variables):
# Account for surface area to volume ratio of pouch cell in cooling
# coefficient. Note: the factor 1/delta^2 comes from the choice of
# non-dimensionalisation
A = self.param.l_y * self.param.l_z
V = self.param.l * self.param.l_y * self.param.l_z
cooling_coeff = -2 * self.param.h * A / V / (self.param.delta ** 2)
cell_volume = self.param.l * self.param.l_y * self.param.l_z

yz_surface_area = self.param.l_y * self.param.l_z
yz_surface_cooling_coefficient = (
-(self.param.h_cn + self.param.h_cp)
* yz_surface_area
/ cell_volume
/ (self.param.delta ** 2)
)

side_edge_area = 2 * self.param.l_z * self.param.l
side_edge_cooling_coefficient = (
-self.param.h_edge * side_edge_area / cell_volume / self.param.delta
)

total_cooling_coefficient = (
yz_surface_cooling_coefficient + side_edge_cooling_coefficient
)

self.rhs = {
T_av: (
pybamm.laplacian(T_av)
+ self.param.B * Q_av
+ cooling_coeff * (T_av - T_amb)
+ total_cooling_coefficient * (T_av - T_amb)
)
/ (self.param.C_th * self.param.rho)
}
Expand All @@ -79,18 +94,43 @@ def set_boundary_conditions(self, variables):
T_av_left = pybamm.boundary_value(T_av, "negative tab")
T_av_right = pybamm.boundary_value(T_av, "positive tab")

# Three boundary conditions here to handle the cases of both tabs at
# the same side (top or bottom), or one either side. For both tabs on the
# same side, T_av_left and T_av_right are equal, and the boundary condition
# "no tab" is used on the other side.
# Tab cooling only implemented for both tabs at the top.
negative_tab_area = self.param.l_tab_n * self.param.l_cn
positive_tab_area = self.param.l_tab_p * self.param.l_cp
total_top_area = self.param.l * self.param.l_y
non_tab_top_area = total_top_area - negative_tab_area - positive_tab_area

negative_tab_cooling_coefficient = (
self.param.h_tab_n / self.param.delta * negative_tab_area / total_top_area
)
positive_tab_cooling_coefficient = (
self.param.h_tab_p / self.param.delta * positive_tab_area / total_top_area
)

top_edge_cooling_coefficient = (
self.param.h_edge / self.delta * non_tab_top_area / total_top_area
)

bottom_edge_cooling_coefficient = (
self.param.h_edge / self.delta * total_top_area / total_top_area
)

total_top_cooling_coefficient = (
negative_tab_cooling_coefficient
+ positive_tab_cooling_coefficient
+ top_edge_cooling_coefficient
)

total_bottom_cooling_coefficient = bottom_edge_cooling_coefficient

self.boundary_conditions = {
T_av: {
"negative tab": (
self.param.h * (T_av_left - T_amb) / self.param.delta,
total_top_cooling_coefficient * (T_av_left - T_amb),
"Neumann",
),
"positive tab": (
-self.param.h * (T_av_right - T_amb) / self.param.delta,
-total_bottom_cooling_coefficient * (T_av_right - T_amb),
"Neumann",
),
"no tab": (pybamm.Scalar(0), "Neumann"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,14 @@ def set_rhs(self, variables):
# Account for surface area to volume ratio of pouch cell in cooling
# coefficient. Note: the factor 1/delta^2 comes from the choice of
# non-dimensionalisation
A = self.param.l_y * self.param.l_z
V = self.param.l * self.param.l_y * self.param.l_z
surface_cooling_coefficient = (
-(self.param.h_cn + self.param.h_cp) * A / V / (self.param.delta ** 2)
) # cooling on the y-z surfaces
yz_surface_area = self.param.l_y * self.param.l_z
cell_volume = self.param.l * self.param.l_y * self.param.l_z
yz_surface_cooling_coefficient = (
-(self.param.h_cn + self.param.h_cp)
* yz_surface_area
/ cell_volume
/ (self.param.delta ** 2)
)

edge_cooling_coefficient = self.param.h_edge / self.param.delta

Expand All @@ -77,7 +80,7 @@ def set_rhs(self, variables):
T_av: (
pybamm.laplacian(T_av)
+ self.param.B * pybamm.source(Q_av, T_av)
+ surface_cooling_coefficient * pybamm.source(T_av - T_amb, T_av)
+ yz_surface_cooling_coefficient * pybamm.source(T_av - T_amb, T_av)
- edge_cooling_coefficient
* pybamm.source(T_av - T_amb, T_av, boundary=True)
)
Expand Down

0 comments on commit ac3fc95

Please sign in to comment.