Skip to content

Commit cd833d0

Browse files
Merge pull request #1317 from brosaplanella/issue-1063-tplus-temperature-dependent
Issue 1063 tplus temperature dependent
2 parents faa3167 + 17cbfb7 commit cd833d0

17 files changed

+33
-23
lines changed

CHANGELOG.md

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

33
## Features
44

5+
- Added temperature dependence to the transference number (`t_plus`) ([1317](https://github.com/pybamm-team/PyBaMM/pull/1317))
56
- Added new functionality for `Interpolant` ([#1312](https://github.com/pybamm-team/PyBaMM/pull/1312))
67
- Added option to express experiments (and extract solutions) in terms of cycles of operating condition ([#1309](https://github.com/pybamm-team/PyBaMM/pull/1309))
78
- The event time and state are now returned as part of `Solution.t` and `Solution.y` so that the event is accurately captured in the returned solution ([#1300](https://github.com/pybamm-team/PyBaMM/pull/1300))

pybamm/input/parameters/lithium-ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_TDF_EC_DMC_1_1_Landesfeind2019.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import numpy as np
33

44

5-
def electrolyte_TDF_EC_DMC_1_1_Landesfeind2019(c_e, T=298.15):
5+
def electrolyte_TDF_EC_DMC_1_1_Landesfeind2019(c_e, T):
66
"""
77
Thermodynamic factor (TDF) of LiPF6 in EC:DMC (1:1 w:w) as a function of ion
88
concentration and temperature. The data comes from [1].

pybamm/input/parameters/lithium-ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_transference_number_EC_DMC_1_1_Landesfeind2019.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import numpy as np
55

66

7-
def electrolyte_transference_number_EC_DMC_1_1_Landesfeind2019(c_e, T=298.15):
7+
def electrolyte_transference_number_EC_DMC_1_1_Landesfeind2019(c_e, T):
88
"""
99
Transference number of LiPF6 in EC:DMC (1:1 w:w) as a function of ion
1010
concentration and temperature. The data comes from [1].

pybamm/input/parameters/lithium-ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_TDF_EC_EMC_3_7_Landesfeind2019.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import numpy as np
33

44

5-
def electrolyte_TDF_EC_EMC_3_7_Landesfeind2019(c_e, T=298.15):
5+
def electrolyte_TDF_EC_EMC_3_7_Landesfeind2019(c_e, T):
66
"""
77
Thermodynamic factor (TDF) of LiPF6 in EC:EMC (3:7 w:w) as a function of ion
88
concentration and temperature. The data comes from [1].

pybamm/input/parameters/lithium-ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_transference_number_EC_EMC_3_7_Landesfeind2019.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import numpy as np
55

66

7-
def electrolyte_transference_number_EC_EMC_3_7_Landesfeind2019(c_e, T=298.15):
7+
def electrolyte_transference_number_EC_EMC_3_7_Landesfeind2019(c_e, T):
88
"""
99
Transference number of LiPF6 in EC:EMC (3:7 w:w) as a function of ion
1010
concentration and temperature. The data comes from [1].

pybamm/input/parameters/lithium-ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_TDF_EMC_FEC_19_1_Landesfeind2019.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import numpy as np
33

44

5-
def electrolyte_TDF_EMC_FEC_19_1_Landesfeind2019(c_e, T=298.15):
5+
def electrolyte_TDF_EMC_FEC_19_1_Landesfeind2019(c_e, T):
66
"""
77
Thermodyamic factor (TDF) of LiPF6 in EMC:FEC (19:1 w:w) as a function of ion
88
concentration and temperature. The data comes from [1].

pybamm/input/parameters/lithium-ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_transference_number_EMC_FEC_19_1_Landesfeind2019.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import numpy as np
55

66

7-
def electrolyte_transference_number_EMC_FEC_19_1_Landesfeind2019(c_e, T=298.15):
7+
def electrolyte_transference_number_EMC_FEC_19_1_Landesfeind2019(c_e, T):
88
"""
99
Transference number of LiPF6 in EMC:FEC (19:1 w:w) as a function of ion
1010
concentration and temperature. The data comes from [1].

pybamm/models/full_battery_models/lead_acid/basic_full.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ def __init__(self, name="Basic full model"):
244244
######################
245245
N_e = (
246246
-tor * param.D_e(c_e, T) * pybamm.grad(c_e)
247-
+ param.C_e * param.t_plus(c_e) * i_e / param.gamma_e
247+
+ param.C_e * param.t_plus(c_e, T) * i_e / param.gamma_e
248248
+ param.C_e * c_e * v
249249
)
250250
s = pybamm.Concatenation(

pybamm/models/full_battery_models/lithium_ion/basic_dfn.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,8 @@ def __init__(self, name="Doyle-Fuller-Newman model"):
258258
######################
259259
N_e = -tor * param.D_e(c_e, T) * pybamm.grad(c_e)
260260
self.rhs[c_e] = (1 / eps) * (
261-
-pybamm.div(N_e) / param.C_e + (1 - param.t_plus(c_e)) * j / param.gamma_e
261+
-pybamm.div(N_e) / param.C_e
262+
+ (1 - param.t_plus(c_e, T)) * j / param.gamma_e
262263
)
263264
self.boundary_conditions[c_e] = {
264265
"left": (pybamm.Scalar(0), "Neumann"),

pybamm/models/full_battery_models/lithium_ion/basic_dfn_half_cell.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -265,10 +265,11 @@ def __init__(self, name="Doyle-Fuller-Newman half cell model", options=None):
265265
######################
266266
N_e = -tor * param.D_e(c_e, T) * pybamm.grad(c_e)
267267
self.rhs[c_e] = (1 / eps) * (
268-
-pybamm.div(N_e) / param.C_e + (1 - param.t_plus(c_e)) * j / param.gamma_e
268+
-pybamm.div(N_e) / param.C_e
269+
+ (1 - param.t_plus(c_e, T)) * j / param.gamma_e
269270
)
270271
dce_dx = (
271-
-(1 - param.t_plus(c_e))
272+
-(1 - param.t_plus(c_e, T))
272273
* i_cell
273274
* param.C_e
274275
/ (tor * param.gamma_e * param.D_e(c_e, T))

pybamm/models/submodels/electrolyte_diffusion/composite_diffusion.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def get_coupled_variables(self, variables):
4646
param = self.param
4747

4848
N_e_diffusion = -tor_0 * param.D_e(c_e_0_av, T_0) * pybamm.grad(c_e)
49-
N_e_migration = param.C_e * param.t_plus(c_e) * i_e / param.gamma_e
49+
N_e_migration = param.C_e * param.t_plus(c_e, T_0) * i_e / param.gamma_e
5050
N_e_convection = param.C_e * c_e_0_av * v_box_0
5151

5252
N_e = N_e_diffusion + N_e_migration + N_e_convection

pybamm/models/submodels/electrolyte_diffusion/first_order_diffusion.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,12 @@ def get_coupled_variables(self, variables):
7474
]
7575
rhs_n = (
7676
d_epsc_n_0_dt
77-
- (sum_s_j_n_0 - param.t_plus(c_e_0) * sum_j_n_0) / param.gamma_e
77+
- (sum_s_j_n_0 - param.t_plus(c_e_0, T_0) * sum_j_n_0) / param.gamma_e
7878
)
7979
rhs_s = d_epsc_s_0_dt
8080
rhs_p = (
8181
d_epsc_p_0_dt
82-
- (sum_s_j_p_0 - param.t_plus(c_e_0) * sum_j_p_0) / param.gamma_e
82+
- (sum_s_j_p_0 - param.t_plus(c_e_0, T_0) * sum_j_p_0) / param.gamma_e
8383
)
8484

8585
# Diffusivities

pybamm/models/submodels/electrolyte_diffusion/full_diffusion.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def get_coupled_variables(self, variables):
4343
param = self.param
4444

4545
N_e_diffusion = -tor * param.D_e(c_e, T) * pybamm.grad(c_e)
46-
N_e_migration = param.C_e * param.t_plus(c_e) * i_e / param.gamma_e
46+
N_e_migration = param.C_e * param.t_plus(c_e, T) * i_e / param.gamma_e
4747
N_e_convection = param.C_e * c_e * v_box
4848

4949
N_e = N_e_diffusion + N_e_migration + N_e_convection

pybamm/models/submodels/electrolyte_diffusion/leading_order_diffusion.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ def set_rhs(self, variables):
6060

6161
c_e_av = variables["X-averaged electrolyte concentration"]
6262

63+
T_av = variables["X-averaged cell temperature"]
64+
6365
eps_n_av = variables["X-averaged negative electrode porosity"]
6466
eps_s_av = variables["X-averaged separator porosity"]
6567
eps_p_av = variables["X-averaged positive electrode porosity"]
@@ -84,8 +86,8 @@ def set_rhs(self, variables):
8486
"Sum of x-averaged positive electrode electrolyte reaction source terms"
8587
]
8688
source_terms = (
87-
param.l_n * (sum_s_j_n_0 - param.t_plus(c_e_av) * sum_j_n_0)
88-
+ param.l_p * (sum_s_j_p_0 - param.t_plus(c_e_av) * sum_j_p_0)
89+
param.l_n * (sum_s_j_n_0 - param.t_plus(c_e_av, T_av) * sum_j_n_0)
90+
+ param.l_p * (sum_s_j_p_0 - param.t_plus(c_e_av, T_av) * sum_j_p_0)
8991
) / param.gamma_e
9092

9193
self.rhs = {

pybamm/parameters/lead_acid_parameters.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def _set_dimensional_parameters(self):
225225
self.R_sei_dimensional = pybamm.Scalar(0)
226226
self.beta_sei_n = pybamm.Scalar(0)
227227

228-
def t_plus(self, c_e):
228+
def t_plus(self, c_e, T):
229229
"Dimensionless transference number (i.e. c_e is dimensionless)"
230230
inputs = {"Electrolyte concentration [mol.m-3]": c_e * self.c_e_typ}
231231
return pybamm.FunctionParameter("Cation transference number", inputs)
@@ -440,7 +440,7 @@ def _set_dimensionless_parameters(self):
440440
self.c_e_typ
441441
* self.M_e
442442
/ self.rho_typ
443-
* (self.t_plus(1) + self.M_minus / self.M_e)
443+
* (self.t_plus(1, self.T_ref) + self.M_minus / self.M_e)
444444
)
445445
# Migrative kinematic relationship coefficient (electrolyte)
446446
self.omega_c_e = (
@@ -700,7 +700,7 @@ def chi(self, c_e, T, c_ox=0, c_hy=0):
700700
"Thermodynamic factor"
701701
return (
702702
self.chi_dimensional(self.c_e_typ * c_e)
703-
* (2 * (1 - self.t_plus(c_e)))
703+
* (2 * (1 - self.t_plus(c_e, T)))
704704
/ (
705705
self.V_w
706706
* self.c_T(self.c_e_typ * c_e, self.c_e_typ * c_ox, self.c_e_typ * c_hy)

pybamm/parameters/lithium_ion_parameters.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -733,14 +733,18 @@ def chi(self, c_e, T):
733733
2*(1-t_plus) for Stefan-Maxwell,
734734
see Bizeray et al (2016) "Resolving a discrepancy ...".
735735
"""
736-
return (2 * (1 - self.t_plus(c_e))) * (self.one_plus_dlnf_dlnc(c_e, T))
736+
return (2 * (1 - self.t_plus(c_e, T))) * (self.one_plus_dlnf_dlnc(c_e, T))
737737

738-
def t_plus(self, c_e):
739-
"Dimensionless transference number (i.e. c_e is dimensionless)"
740-
inputs = {"Electrolyte concentration [mol.m-3]": c_e * self.c_e_typ}
738+
def t_plus(self, c_e, T):
739+
"Cation transference number (dimensionless)"
740+
inputs = {
741+
"Electrolyte concentration [mol.m-3]": c_e * self.c_e_typ,
742+
"Temperature [K]": self.Delta_T * T + self.T_ref,
743+
}
741744
return pybamm.FunctionParameter("Cation transference number", inputs)
742745

743746
def one_plus_dlnf_dlnc(self, c_e, T):
747+
"Thermodynamic factor (dimensionless)"
744748
inputs = {
745749
"Electrolyte concentration [mol.m-3]": c_e * self.c_e_typ,
746750
"Temperature [K]": self.Delta_T * T + self.T_ref,

tests/unit/test_models/test_submodels/test_electrolyte_diffusion/test_leading_order_diffusion.py

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def test_public_functions(self):
2424
"Sum of x-averaged negative electrode electrolyte reaction source terms": a,
2525
"Sum of x-averaged positive electrode electrolyte reaction source terms": a,
2626
"X-averaged separator transverse volume-averaged acceleration": a,
27+
"X-averaged cell temperature": a,
2728
}
2829
submodel = pybamm.electrolyte_diffusion.LeadingOrder(param)
2930
std_tests = tests.StandardSubModelTests(submodel, variables)

0 commit comments

Comments
 (0)