Skip to content

Commit 12818f1

Browse files
add new esoh variables from dVdQ paper
1 parent 9d06ea3 commit 12818f1

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

pybamm/CITATIONS.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,13 @@
526526
doi = {10.1006/jcph.2002.7041},
527527
}
528528

529+
@article{Weng2023,
530+
title={Differential voltage analysis for battery manufacturing process control},
531+
author={Weng, Andrew and Siegel, Jason B and Stefanopoulou, Anna},
532+
journal={arXiv preprint arXiv:2303.07088},
533+
year={2023}
534+
}
535+
529536
@article{Xu2019,
530537
title={Evolution of Dead Lithium Growth in Lithium Metal Batteries: Experimentally Validated Model of the Apparent Capacity Loss},
531538
author={Xu, Shanshan and Chen, Kuan-Hung and Dasgupta, Neil P and Siegel, Jason B and Stefanopoulou, Anna G},

pybamm/models/full_battery_models/lithium_ion/electrode_soh.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class _ElectrodeSOH(pybamm.BaseModel):
1111
"""Model to calculate electrode-specific SOH, from [1]_.
1212
This model is mainly for internal use, to calculate summary variables in a
1313
simulation.
14+
Some of the output variables are defined in [2]_.
1415
1516
.. math::
1617
Q_{Li} = y_{100}Q_p + x_{100}Q_n,
@@ -34,6 +35,7 @@ def __init__(
3435
self, param=None, solve_for=None, known_value="cyclable lithium capacity"
3536
):
3637
pybamm.citations.register("Mohtat2019")
38+
pybamm.citations.register("Weng2023")
3739
name = "ElectrodeSOH model"
3840
super().__init__(name)
3941

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

8284
# These variables are defined in all cases
85+
Acc_cm2 = param.A_cc * 1e4
8386
self.variables = {
8487
"x_100": x_100,
8588
"y_100": y_100,
@@ -90,6 +93,18 @@ def __init__(
9093
"n_Li": Q_Li * 3600 / param.F,
9194
"Q_n": Q_n,
9295
"Q_p": Q_p,
96+
"Cyclable lithium capacity [A.h]": Q_Li,
97+
"Negative electrode capacity [A.h]": Q_n,
98+
"Positive electrode capacity [A.h]": Q_p,
99+
"Cyclable lithium capacity [mA.h.cm-2]": Q_Li * 1e3 / Acc_cm2,
100+
"Negative electrode capacity [mA.h.cm-2]": Q_n * 1e3 / Acc_cm2,
101+
"Positive electrode capacity [mA.h.cm-2]": Q_p * 1e3 / Acc_cm2,
102+
# eq 33 of Weng2023
103+
"Formation capacity loss [A.h]": Q_p - Q_Li,
104+
"Formation capacity loss [mA.h.cm-2]": (Q_p - Q_Li) * 1e3 / Acc_cm2,
105+
# eq 26 of Weng2024
106+
"Negative positive ratio": Q_n / Q_p,
107+
"NPR": Q_n / Q_p,
93108
}
94109

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

115130
# These variables are only defined if x_0 is solved for
131+
# eq 27 of Weng2023
132+
Q_n_excess = Q_n * (1 - x_100)
133+
NPR_practical = 1 + Q_n_excess / Q
116134
self.variables.update(
117135
{
118136
"Q": Q,
119137
"Capacity [A.h]": Q,
138+
"Capacity [mA.h.cm-2]": Q * 1e3 / Acc_cm2,
120139
"x_0": x_0,
121140
"y_0": y_0,
122141
"Un(x_0)": Un_0,
@@ -128,6 +147,8 @@ def __init__(
128147
"Q_p * (y_0 - y_100)": Q_p * (y_0 - y_100),
129148
"Negative electrode excess capacity ratio": Q_n / Q,
130149
"Positive electrode excess capacity ratio": Q_p / Q,
150+
"Practical negative positive ratio": NPR_practical,
151+
"Practical NPR": NPR_practical,
131152
}
132153
)
133154

0 commit comments

Comments
 (0)