Skip to content

Commit a4f0d0c

Browse files
#1456 changed variable, need to resolve order
1 parent e025ced commit a4f0d0c

File tree

3 files changed

+65
-18
lines changed

3 files changed

+65
-18
lines changed

examples/scripts/compare_lithium_ion.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
#
44
import pybamm
55

6-
pybamm.set_logging_level("INFO")
6+
pybamm.set_logging_level("DEBUG")
77

88
# load models
99
models = [
10-
pybamm.lithium_ion.SPM(),
10+
# pybamm.lithium_ion.SPM(),
1111
pybamm.lithium_ion.SPMe(),
12-
pybamm.lithium_ion.DFN(),
13-
pybamm.lithium_ion.NewmanTobias(),
12+
# pybamm.lithium_ion.DFN(),
13+
# pybamm.lithium_ion.NewmanTobias(),
1414
]
1515

1616
# create and run simulations

pybamm/models/standard_variables.py

+27
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,33 @@
3131
bounds=(0, np.inf),
3232
)
3333

34+
# Electrolyte porosity times concentration
35+
eps_c_e_n = pybamm.Variable(
36+
"Negative electrolyte porosity times concentration",
37+
domain="negative electrode",
38+
auxiliary_domains={"secondary": "current collector"},
39+
bounds=(0, np.inf),
40+
)
41+
eps_c_e_s = pybamm.Variable(
42+
"Separator electrolyte porosity times concentration",
43+
domain="separator",
44+
auxiliary_domains={"secondary": "current collector"},
45+
bounds=(0, np.inf),
46+
)
47+
eps_c_e_p = pybamm.Variable(
48+
"Positive electrolyte porosity times concentration",
49+
domain="positive electrode",
50+
auxiliary_domains={"secondary": "current collector"},
51+
bounds=(0, np.inf),
52+
)
53+
eps_c_e = pybamm.concatenation(eps_c_e_n, eps_c_e_s, eps_c_e_p)
54+
55+
eps_c_e_av = pybamm.Variable(
56+
"X-averaged electrolyte porosity times concentration",
57+
domain="current collector",
58+
bounds=(0, np.inf),
59+
)
60+
3461
# Electrolyte potential
3562
phi_e_n = pybamm.Variable(
3663
"Negative electrolyte potential",

pybamm/models/submodels/electrolyte_diffusion/full_diffusion.py

+34-14
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,38 @@ def __init__(self, param):
2525
super().__init__(param)
2626

2727
def get_fundamental_variables(self):
28-
c_e_n = pybamm.standard_variables.c_e_n
29-
c_e_s = pybamm.standard_variables.c_e_s
30-
c_e_p = pybamm.standard_variables.c_e_p
28+
eps_c_e_n = pybamm.standard_variables.eps_c_e_n
29+
eps_c_e_s = pybamm.standard_variables.eps_c_e_s
30+
eps_c_e_p = pybamm.standard_variables.eps_c_e_p
3131

32-
return self._get_standard_concentration_variables(c_e_n, c_e_s, c_e_p)
32+
eps_c_e = pybamm.concatenation(eps_c_e_n, eps_c_e_s, eps_c_e_p)
33+
34+
variables = {
35+
"Electrode porosity times concentration": eps_c_e,
36+
"Negative electrode porosity times concentration": eps_c_e_n,
37+
"Separator electrode porosity times concentration": eps_c_e_s,
38+
"Positive electrode porosity times concentration": eps_c_e_p,
39+
}
40+
41+
return variables
3342

3443
def get_coupled_variables(self, variables):
3544

45+
eps_n = variables["Negative electrode porosity"]
46+
eps_s = variables["Separator porosity"]
47+
eps_p = variables["Positive electrode porosity"]
48+
eps_c_e_n = variables["Negative electrode porosity times concentration"]
49+
eps_c_e_s = variables["Separator porosity times concentration"]
50+
eps_c_e_p = variables["Positive electrode porosity times concentration"]
51+
52+
c_e_n = eps_c_e_n / eps_n
53+
c_e_s = eps_c_e_s / eps_s
54+
c_e_p = eps_c_e_p / eps_p
55+
56+
variables.update(
57+
self._get_standard_concentration_variables(c_e_n, c_e_s, c_e_p)
58+
)
59+
3660
tor = variables["Electrolyte tortuosity"]
3761
eps = variables["Porosity"]
3862
c_e = variables["Electrolyte concentration"]
@@ -58,7 +82,7 @@ def set_rhs(self, variables):
5882
param = self.param
5983

6084
eps = variables["Porosity"]
61-
deps_dt = variables["Porosity change"]
85+
eps_c_e = variables["Electrolyte porosity times concentration"]
6286
c_e = variables["Electrolyte concentration"]
6387
N_e = variables["Electrolyte flux"]
6488
div_Vbox = variables["Transverse volume-averaged acceleration"]
@@ -67,20 +91,16 @@ def set_rhs(self, variables):
6791
source_terms = sum_s_j / self.param.gamma_e
6892

6993
self.rhs = {
70-
c_e: (1 / eps)
71-
* (
72-
-pybamm.div(N_e) / param.C_e
73-
+ source_terms
74-
- c_e * deps_dt
75-
- c_e * div_Vbox
76-
)
94+
eps_c_e: -pybamm.div(N_e) / param.C_e + source_terms - c_e * div_Vbox
7795
}
7896

7997
def set_initial_conditions(self, variables):
8098

81-
c_e = variables["Electrolyte concentration"]
99+
eps_c_e = variables["Electrolyte porosity times concentration"]
82100

83-
self.initial_conditions = {c_e: self.param.c_e_init}
101+
self.initial_conditions = {
102+
eps_c_e: self.param.epsilon_init * self.param.c_e_init
103+
}
84104

85105
def set_boundary_conditions(self, variables):
86106

0 commit comments

Comments
 (0)