Skip to content

Commit

Permalink
Issue 3339 dead lithium (pybamm-team#3485)
Browse files Browse the repository at this point in the history
* fixed tests

* Added graphite half-cell parameter files

* Revert "Added graphite half-cell parameter files"

This reverts commit 78001e8.

* Revert "fixed tests"

This reverts commit cf53ff1.

* ruff

* changelog

* coverage

* Fixed minor error in example notebook

* Removed duplicate entry from changelog
  • Loading branch information
DrSOKane authored Nov 22, 2023
1 parent 6851496 commit 2ee8da2
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 9 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

- Fixed bug that made identical Experiment steps with different end times crash ([#3516](https://github.com/pybamm-team/PyBaMM/pull/3516))
- Fixed bug in calculation of theoretical energy that made it very slow ([#3506](https://github.com/pybamm-team/PyBaMM/pull/3506))
- The irreversible plating model now increments `f"{Domain} dead lithium concentration [mol.m-3]"`, not `f"{Domain} lithium plating concentration [mol.m-3]"` as it did previously. ([#3485](https://github.com/pybamm-team/PyBaMM/pull/3485))

# [v23.9](https://github.com/pybamm-team/PyBaMM/tree/v23.9) - 2023-10-31

Expand Down
4 changes: 2 additions & 2 deletions docs/source/examples/notebooks/models/lithium-plating.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,8 @@
" axs[0,0].set_ylabel(\"Voltage [V]\")\n",
" axs[0,1].set_ylabel(\"Volumetric interfacial current density [A.m-3]\")\n",
" axs[0,1].legend(('Deintercalation current','Stripping current','Total current'))\n",
" axs[1,0].set_ylabel(\"Plated lithium capacity [Ah]\")\n",
" axs[1,1].set_ylabel(\"Intercalated lithium capacity [Ah]\")\n",
" axs[1,0].set_ylabel(\"Plated lithium capacity [A.h]\")\n",
" axs[1,1].set_ylabel(\"Intercalated lithium capacity [A.h]\")\n",
"\n",
" for ax in axs.flat:\n",
" ax.set_xlabel(\"Time [minutes]\")\n",
Expand Down
22 changes: 15 additions & 7 deletions pybamm/models/submodels/interface/lithium_plating/plating.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,18 +115,26 @@ def set_rhs(self, variables):
]
L_sei = variables[f"{Domain} total SEI thickness [m]"]

# In the partially reversible plating model, coupling term turns reversible
# lithium into dead lithium. In other plating models, it is zero.
lithium_plating_option = getattr(self.options, domain)["lithium plating"]
if lithium_plating_option == "partially reversible":
if lithium_plating_option == "reversible":
# In the reversible plating model, there is no dead lithium
dc_plated_Li = -a_j_stripping / self.param.F
dc_dead_Li = pybamm.Scalar(0)
elif lithium_plating_option == "irreversible":
# In the irreversible plating model, all plated lithium is dead lithium
dc_plated_Li = pybamm.Scalar(0)
dc_dead_Li = -a_j_stripping / self.param.F
elif lithium_plating_option == "partially reversible":
# In the partially reversible plating model, the coupling term turns
# reversible lithium into dead lithium over time.
dead_lithium_decay_rate = self.param.dead_lithium_decay_rate(L_sei)
coupling_term = dead_lithium_decay_rate * c_plated_Li
else:
coupling_term = pybamm.Scalar(0)
dc_plated_Li = -a_j_stripping / self.param.F - coupling_term
dc_dead_Li = coupling_term

self.rhs = {
c_plated_Li: -a_j_stripping / self.param.F - coupling_term,
c_dead_Li: coupling_term,
c_plated_Li: dc_plated_Li,
c_dead_Li: dc_dead_Li,
}

def set_initial_conditions(self, variables):
Expand Down

0 comments on commit 2ee8da2

Please sign in to comment.