Skip to content

Commit

Permalink
add new esoh variables from dVdQ paper
Browse files Browse the repository at this point in the history
  • Loading branch information
valentinsulzer committed Mar 24, 2023
1 parent 9d06ea3 commit 12818f1
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
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

0 comments on commit 12818f1

Please sign in to comment.