From 4ee530592148342b6b054f3bf3b7ee44f15cc736 Mon Sep 17 00:00:00 2001 From: Suhak Lee Date: Fri, 22 Nov 2019 12:58:21 -0500 Subject: [PATCH] #744 add distributions into variables --- .../compare_lithium_ion_particle_distribution.py | 15 ++++++++++++++- .../particle/fickian/fickian_many_particles.py | 16 ++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/examples/scripts/compare_lithium_ion_particle_distribution.py b/examples/scripts/compare_lithium_ion_particle_distribution.py index 6712312885..be75165818 100644 --- a/examples/scripts/compare_lithium_ion_particle_distribution.py +++ b/examples/scripts/compare_lithium_ion_particle_distribution.py @@ -59,6 +59,19 @@ def positive_distribution(x): for i, model in enumerate(models): solutions[i] = model.default_solver.solve(model, t_eval) + +output_variables = [ + "Negative particle surface concentration", + "Electrolyte concentration", + "Positive particle surface concentration", + "Current [A]", + "Negative electrode potential [V]", + "Electrolyte potential [V]", + "Positive electrode potential [V]", + "Terminal voltage [V]", + "Negative particle distribution", + "Positive particle distribution",] + # plot -plot = pybamm.QuickPlot(models, mesh, solutions) +plot = pybamm.QuickPlot(models, mesh, solutions,output_variables=output_variables) plot.dynamic_plot() diff --git a/pybamm/models/submodels/particle/fickian/fickian_many_particles.py b/pybamm/models/submodels/particle/fickian/fickian_many_particles.py index 2742c81312..28caf204ef 100644 --- a/pybamm/models/submodels/particle/fickian/fickian_many_particles.py +++ b/pybamm/models/submodels/particle/fickian/fickian_many_particles.py @@ -46,6 +46,16 @@ def get_coupled_variables(self, variables): N_s = self._flux_law(c_s, T_k) variables.update(self._get_standard_flux_variables(N_s, N_s)) + + if self.domain == "Negative": + x = pybamm.standard_spatial_vars.x_n + R = pybamm.FunctionParameter( 'Negative particle distribution', x) + variables.update({"Negative particle distribution":R}) + + elif self.domain == "Positive": + x = pybamm.standard_spatial_vars.x_p + R = pybamm.FunctionParameter( 'Positive particle distribution', x) + variables.update({"Positive particle distribution": R}) return variables @@ -54,13 +64,11 @@ def set_rhs(self, variables): c, N, _ = self._unpack(variables) if self.domain == "Negative": - x = pybamm.standard_spatial_vars.x_n - R = pybamm.PrimaryBroadcast(pybamm.FunctionParameter('Negative particle distribution',x), 'negative particle',) + R = pybamm.PrimaryBroadcast(variables['Negative particle distribution'], 'negative particle',) self.rhs = {c: -(1 / (R**2 * self.param.C_n)) * pybamm.div(N)} elif self.domain == "Positive": - x = pybamm.standard_spatial_vars.x_p - R = pybamm.PrimaryBroadcast(pybamm.FunctionParameter('Positive particle distribution', x), 'positive particle',) + R = pybamm.PrimaryBroadcast(variables['Positive particle distribution'], 'positive particle',) self.rhs = {c: -(1 / (R**2 * self.param.C_p)) * pybamm.div(N)}