Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add new esoh variables from dVdQ paper #2807

Merged
merged 2 commits into from
Mar 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## Features

- Added new variables, related to electrode balance, for the `ElectrodeSOH` model ([#2807](https://github.com/pybamm-team/PyBaMM/pull/2807))
- Renamed "Terminal voltage [V]" to just "Voltage [V]". "Terminal voltage [V]" can still be used and will return the same value as "Voltage [V]". ([#2740](https://github.com/pybamm-team/PyBaMM/pull/2740))
- Added "Negative electrode surface potential difference at separator interface [V]", which is the value of the surface potential difference (`phi_s - phi_e`) at the anode/separator interface, commonly controlled in fast-charging algorithms to avoid plating. Also added "Positive electrode surface potential difference at separator interface [V]". ([#2740](https://github.com/pybamm-team/PyBaMM/pull/2740))
- Added "Open-circuit voltage [V]", which is the open-circuit voltage as calculated from the bulk particle concentrations. The old variable "Measured open circuit voltage [V]", which referred to the open-circuit potential as calculated from the surface particle concentrations, has been renamed to "Surface open-circuit voltage [V]". ([#2740](https://github.com/pybamm-team/PyBaMM/pull/2740))
Expand Down
7 changes: 7 additions & 0 deletions pybamm/CITATIONS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -526,6 +526,13 @@
doi = {10.1006/jcph.2002.7041},
}

@article{Weng2023,
title={Differential voltage analysis for battery manufacturing process control},
author={Weng, Andrew and Siegel, Jason B and Stefanopoulou, Anna},
journal={arXiv preprint arXiv:2303.07088},
year={2023}
}

@article{Xu2019,
title={Evolution of Dead Lithium Growth in Lithium Metal Batteries: Experimentally Validated Model of the Apparent Capacity Loss},
author={Xu, Shanshan and Chen, Kuan-Hung and Dasgupta, Neil P and Siegel, Jason B and Stefanopoulou, Anna G},
Expand Down
21 changes: 21 additions & 0 deletions pybamm/models/full_battery_models/lithium_ion/electrode_soh.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class _ElectrodeSOH(pybamm.BaseModel):
"""Model to calculate electrode-specific SOH, from [1]_.
This model is mainly for internal use, to calculate summary variables in a
simulation.
Some of the output variables are defined in [2]_.

.. math::
Q_{Li} = y_{100}Q_p + x_{100}Q_n,
Expand All @@ -34,6 +35,7 @@ def __init__(
self, param=None, solve_for=None, known_value="cyclable lithium capacity"
):
pybamm.citations.register("Mohtat2019")
pybamm.citations.register("Weng2023")
name = "ElectrodeSOH model"
super().__init__(name)

Expand Down Expand Up @@ -80,6 +82,7 @@ def __init__(
self.initial_conditions[x_100] = pybamm.Scalar(0.9)

# These variables are defined in all cases
Acc_cm2 = param.A_cc * 1e4
self.variables = {
"x_100": x_100,
"y_100": y_100,
Expand All @@ -90,6 +93,18 @@ def __init__(
"n_Li": Q_Li * 3600 / param.F,
"Q_n": Q_n,
"Q_p": Q_p,
"Cyclable lithium capacity [A.h]": Q_Li,
"Negative electrode capacity [A.h]": Q_n,
"Positive electrode capacity [A.h]": Q_p,
"Cyclable lithium capacity [mA.h.cm-2]": Q_Li * 1e3 / Acc_cm2,
"Negative electrode capacity [mA.h.cm-2]": Q_n * 1e3 / Acc_cm2,
"Positive electrode capacity [mA.h.cm-2]": Q_p * 1e3 / Acc_cm2,
# eq 33 of Weng2023
"Formation capacity loss [A.h]": Q_p - Q_Li,
"Formation capacity loss [mA.h.cm-2]": (Q_p - Q_Li) * 1e3 / Acc_cm2,
# eq 26 of Weng2024
"Negative positive ratio": Q_n / Q_p,
"NPR": Q_n / Q_p,
}

# Define variables and equations for 0% state of charge
Expand All @@ -113,10 +128,14 @@ def __init__(
self.initial_conditions[var] = pybamm.Scalar(0.1)

# These variables are only defined if x_0 is solved for
# eq 27 of Weng2023
Q_n_excess = Q_n * (1 - x_100)
NPR_practical = 1 + Q_n_excess / Q
self.variables.update(
{
"Q": Q,
"Capacity [A.h]": Q,
"Capacity [mA.h.cm-2]": Q * 1e3 / Acc_cm2,
"x_0": x_0,
"y_0": y_0,
"Un(x_0)": Un_0,
Expand All @@ -128,6 +147,8 @@ def __init__(
"Q_p * (y_0 - y_100)": Q_p * (y_0 - y_100),
"Negative electrode excess capacity ratio": Q_n / Q,
"Positive electrode excess capacity ratio": Q_p / Q,
"Practical negative positive ratio": NPR_practical,
"Practical NPR": NPR_practical,
}
)

Expand Down