@@ -60,6 +60,9 @@ def get_coupled_variables(self, variables):
60
60
+ i_boundary_cc / sigma_eff
61
61
)
62
62
variables [f"{ Domain } electrolyte current density" ] = i_e
63
+ variables [
64
+ f"Divergence of { self .domain } electrolyte current density"
65
+ ] = pybamm .div (i_e )
63
66
64
67
phi_s = variables [f"{ Domain } electrode potential" ]
65
68
phi_e = phi_s - delta_phi
@@ -91,8 +94,8 @@ def get_coupled_variables(self, variables):
91
94
92
95
# Update boundary conditions (for indefinite integral)
93
96
self .boundary_conditions [c_e_s ] = {
94
- "left" : (pybamm .BoundaryGradient (c_e_s , "left" ), "Neumann" ),
95
- "right" : (pybamm .BoundaryGradient (c_e_s , "right" ), "Neumann" ),
97
+ "left" : (pybamm .boundary_gradient (c_e_s , "left" ), "Neumann" ),
98
+ "right" : (pybamm .boundary_gradient (c_e_s , "right" ), "Neumann" ),
96
99
}
97
100
98
101
variables [f"{ Domain } electrolyte potential" ] = phi_e
@@ -111,6 +114,34 @@ def get_coupled_variables(self, variables):
111
114
variables .update (self ._get_standard_current_variables (i_e ))
112
115
variables .update (self ._get_electrolyte_overpotentials (variables ))
113
116
117
+ # save boundary conditons as variables
118
+ if self .domain == "negative" :
119
+ grad_c_e = pybamm .boundary_gradient (c_e , "right" )
120
+ grad_left = - i_boundary_cc * pybamm .boundary_value (1 / sigma_eff , "left" )
121
+ grad_right = (
122
+ (i_boundary_cc / pybamm .boundary_value (conductivity , "right" ))
123
+ - pybamm .boundary_value (param .chiRT_over_Fc (c_e , T ), "right" ) * grad_c_e
124
+ - i_boundary_cc * pybamm .boundary_value (1 / sigma_eff , "right" )
125
+ )
126
+
127
+ elif self .domain == "positive" :
128
+ T = variables ["Positive electrode temperature" ]
129
+ grad_c_e = pybamm .boundary_gradient (c_e , "left" )
130
+ grad_left = (
131
+ (i_boundary_cc / pybamm .boundary_value (conductivity , "left" ))
132
+ - pybamm .boundary_value (param .chiRT_over_Fc (c_e , T ), "left" ) * grad_c_e
133
+ - i_boundary_cc * pybamm .boundary_value (1 / sigma_eff , "left" )
134
+ )
135
+ grad_right = - i_boundary_cc * pybamm .boundary_value (1 / sigma_eff , "right" )
136
+
137
+ if self .domain in ["negative" , "positive" ]:
138
+ variables .update (
139
+ {
140
+ f"{ self .domain } grad(delta_phi) left" : grad_left ,
141
+ f"{ self .domain } grad(delta_phi) right" : grad_right ,
142
+ f"{ self .domain } grad(c_e) internal" : grad_c_e ,
143
+ }
144
+ )
114
145
return variables
115
146
116
147
def _get_conductivities (self , variables ):
@@ -146,41 +177,20 @@ def set_boundary_conditions(self, variables):
146
177
if self .domain == "separator" :
147
178
return
148
179
149
- param = self .param
150
-
151
- conductivity , sigma_eff = self ._get_conductivities (variables )
152
- i_boundary_cc = variables ["Current collector current density" ]
153
180
c_e = variables [f"{ Domain } electrolyte concentration" ]
154
181
delta_phi = variables [f"{ Domain } electrode surface potential difference" ]
155
182
156
- if self .domain == "negative" :
157
- T = variables ["Negative electrode temperature" ]
158
- c_e_flux = pybamm .BoundaryGradient (c_e , "right" )
159
- flux_left = - i_boundary_cc * pybamm .BoundaryValue (1 / sigma_eff , "left" )
160
- flux_right = (
161
- (i_boundary_cc / pybamm .BoundaryValue (conductivity , "right" ))
162
- - pybamm .BoundaryValue (param .chiRT_over_Fc (c_e , T ), "right" ) * c_e_flux
163
- - i_boundary_cc * pybamm .BoundaryValue (1 / sigma_eff , "right" )
164
- )
183
+ grad_left = variables [f"{ self .domain } grad(delta_phi) left" ]
184
+ grad_right = variables [f"{ self .domain } grad(delta_phi) right" ]
185
+ grad_c_e = variables [f"{ self .domain } grad(c_e) internal" ]
165
186
166
- lbc = (flux_left , "Neumann" )
167
- rbc = (flux_right , "Neumann" )
187
+ lbc = (grad_left , "Neumann" )
188
+ rbc = (grad_right , "Neumann" )
189
+ if self .domain == "negative" :
168
190
lbc_c_e = (pybamm .Scalar (0 ), "Neumann" )
169
- rbc_c_e = (c_e_flux , "Neumann" )
170
-
191
+ rbc_c_e = (grad_c_e , "Neumann" )
171
192
elif self .domain == "positive" :
172
- T = variables ["Positive electrode temperature" ]
173
- c_e_flux = pybamm .BoundaryGradient (c_e , "left" )
174
- flux_left = (
175
- (i_boundary_cc / pybamm .BoundaryValue (conductivity , "left" ))
176
- - pybamm .BoundaryValue (param .chiRT_over_Fc (c_e , T ), "left" ) * c_e_flux
177
- - i_boundary_cc * pybamm .BoundaryValue (1 / sigma_eff , "left" )
178
- )
179
- flux_right = - i_boundary_cc * pybamm .BoundaryValue (1 / sigma_eff , "right" )
180
-
181
- lbc = (flux_left , "Neumann" )
182
- rbc = (flux_right , "Neumann" )
183
- lbc_c_e = (c_e_flux , "Neumann" )
193
+ lbc_c_e = (grad_c_e , "Neumann" )
184
194
rbc_c_e = (pybamm .Scalar (0 ), "Neumann" )
185
195
186
196
# TODO: check why we still need the boundary conditions for c_e, once we have
0 commit comments