Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
在PyBaMM中模拟电池析锂老化过程
老化机理
PyBaMM
老化机理PyBaMM
张蔚泓
更新于 2024-08-27
推荐镜像 :Basic Image:ubuntu:22.04-py3.10-cuda12.1
推荐机型 :c2_m4_cpu
1
1
DFN模型(P2D模型)
可逆析锂模型
不可逆析锂模型
部分可逆析锂模型
利用PyBaMM运行模型
三类模型的可视化与分析
充电后的静置过程的析锂情况
可逆析锂模型
不可逆的析锂模型
部分可逆析锂模型
充电过程的析锂情况
可逆析锂模型
不可逆的析锂模型
部分可逆析锂模型

使用方式
点击上方的 开始连接 按钮,选择 Basic Image:ubuntu:22.04-py3.10-cuda12.1 镜像及 c2_m4_cpu 节点配置,稍等片刻即可运行。
来源
本Notebook主要参考PyBaMM的教程和O'Kane等人发表的论文
共享协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

代码
文本

这里展示了PyBaMM[8]如何用于模拟可逆和不可逆的锂沉积。

代码
文本

Doyle-Fuller-Newman模型[3]升级为三种不同的析锂模型。模型1包含O’kane等[5]的可逆析锂模型。模型2包含相同的模型,但去掉了锂剥离能力,使析锂不可逆。模型3包含O’kane等[6]更新后的部分可逆锂层。参数取自Chen等人对LG M50电池的研究[2]

代码
文本

DFN模型(P2D模型)

为了清晰地表达析锂的机理,下面给出升级后的DFN模型的四个方程。

代码
文本

固相欧姆定律: 其中为固体颗粒在正极或负极上的电导率,分别用下标表示,为通过固体电极颗粒与电解质之间界面的单位体积电流。

液相欧姆定律: 其中为电解液的有效电导率,T为电池温度,R为通用气体常数,F为法拉第常数,为电解液中Li+离子的转移数。

液相锂离子浓度: 其中为电解质体积分数,也称为孔隙率,为电解质的有效扩散系数。

固相锂离子浓度:

电极颗粒中的扩散系数, 通常是高充放电率的主要限速因子,因此是一个关键参数。

代码
文本

通过电极-电解质的单位体积电流主要由Li+插入/脱嵌反应和Li电镀/剥离副反应贡献: 其中为电极的表面积体积比,分别为脱嵌层和剥离的单位面积净反应通量(负值对应于嵌层和电镀)。

主反应通量的Butler-Volmer方程是众所周知的:

其中是反应速率常数,是电解质平衡浓度, 是活性材料的最大Li+浓度, 是在电极粒子表面的Li+浓度。

反应超电势与开路电位关系:

代码
文本

可逆析锂模型

O’kane等[5]的可逆析锂模型用了一个简化的表达式:

无论使用何种形式的Butler-Volmer方程, 都是通过求解微分方程得到的。因此还需要一个额外的连续性方程:

可以额外提一下的是,利用Sikha, Popov和White的方法[9]可以计算了镀/剥离Li对孔隙率的影响:

代码
文本

不可逆析锂模型

与可逆析锂模型类似,但去掉了锂剥离能力,使析锂不可逆。

这里的模型去掉了可逆析锂模型中表达式的第一项,这是因为第一项里面是受锂金属浓度影响的,只有剥离的速度才会受到当前锂金属的浓度影响,而析出锂的浓度受液相锂离子浓度影响,也就是第二项。

代码
文本

部分可逆析锂模型

代码
文本

可逆析锂模型没有考虑到随后锂衰变成SEI和“死锂”。析锂、剥离和SEI形成之间的三方相互作用导致了一系列模型。这些模型都不是强耦合的,部分可逆析锂模型考虑电镀的锂随着时间的推移衰变成死锂。这个有时间限制的衰变增加了第二个项:

死锂的浓度由下面方程给出:

其中衰变速率的单位为。假设需要与电解质溶剂反应才能将电镀的Li转化为死锂,则不恒定。相反,它是扩散受限的, 就像SEI形成反应,使其依赖于SEI厚度。对这种依赖性进行建模的一个简单方法是:

式中为t = 0时SEI厚度,为拟合的参数。回到的Butler-Volmer方程,可逆析锂模型中的方程更新为含有变量和SEI过电位,得到:

其中

模型假设SEI层具有欧姆电阻率,导致电压降:

其中为DFN模型中的界面电流密度。

批注:关于的方程请查看SEI增长模型

代码
文本
[42]
!pip install "pybamm[plot,cite]" -q
import pybamm
import os

os.chdir(pybamm.__path__[0] + "/..")
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
代码
文本

利用PyBaMM运行模型

代码
文本
[43]
# 选择模型
plating_options = ["reversible", "irreversible", "partially reversible"]
models = {
option: pybamm.lithium_ion.DFN(options={"lithium plating": option}, name=option)
for option in plating_options
}

# 选取参数值
parameter_values = pybamm.ParameterValues("OKane2022")
parameter_values.update({"Ambient temperature [K]": 268.15})
parameter_values.update({"Upper voltage cut-off [V]": 4.21})
# parameter_values.update({"Lithium plating kinetic rate constant [m.s-1]": 1E-9})
parameter_values.update({"Lithium plating transfer coefficient": 0.5})
parameter_values.update({"Dead lithium decay constant [s-1]": 1e-4})
代码
文本

在Ren等人[7]的基础上,定义了一系列简单的快速充电实验。

我们首先通过执行C/20放电在0% SoC下初始化模型(请参阅文档有关如何从模拟中初始化模型的更多详细信息)。

代码
文本
[44]
# 指定实验
pybamm.citations.register("Ren2018")

s = pybamm.step.string
experiment_discharge = pybamm.Experiment(
[
(
s("Discharge at C/20 until 2.5 V", period="10 minutes"),
s("Rest for 1 hour", period="3 minutes"),
),
]
)

sims_discharge = []
for model in models.values():
sim_discharge = pybamm.Simulation(
model, parameter_values=parameter_values, experiment=experiment_discharge
)
sol_discharge = sim_discharge.solve(calc_esoh=False)
model.set_initial_conditions_from(sol_discharge, inplace=True)
sims_discharge.append(sim_discharge)
代码
文本

我们现在可以定义不同的实验以不同的速率充电。

高C-倍率(如2C或更高)下充电意味着更快的充电,但也会对电池造成潜在压力,这可能会缩短电池的使用寿命。而本实验就是探究充电过程以及充电后的静置过程中,电池的析锂情况。

代码
文本
[45]
C_rates = ["2C", "1C", "C/2", "C/4", "C/8"]
experiments = {}
for C_rate in C_rates:
experiments[C_rate] = pybamm.Experiment(
[
(
f"Charge at {C_rate} until 4.2 V",
"Hold at 4.2 V until C/20",
"Rest for 1 hour",
)
]
)
代码
文本

求解析锂模型。这里使用默认的CasADi[1]求解器。

代码
文本
[46]
def define_and_solve_sims(model, experiments, parameter_values):
sims = {}
for C_rate, experiment in experiments.items():
sim = pybamm.Simulation(
model, experiment=experiment, parameter_values=parameter_values
)
sim.solve(calc_esoh=False)
sims[C_rate] = sim

return sims


sims_reversible = define_and_solve_sims(
models["reversible"], experiments, parameter_values
)
代码
文本

三类模型的可视化与分析

代码
文本
[47]
colors = ["tab:purple", "tab:cyan", "tab:red", "tab:green", "tab:blue"]
linestyles = ["dashed", "dotted", "solid"]

param = models["reversible"].param
A = parameter_values.evaluate(param.L_y * param.L_z)
F = parameter_values.evaluate(param.F)
L_n = parameter_values.evaluate(param.n.L)

currents = [
"X-averaged negative electrode volumetric interfacial current density [A.m-3]",
"X-averaged negative electrode lithium plating volumetric interfacial current density [A.m-3]",
"Sum of x-averaged negative electrode volumetric interfacial current densities [A.m-3]",
]


def plot(sims,process):
import matplotlib.pyplot as plt

fig, axs = plt.subplots(2, 2, figsize=(13, 9))
for (C_rate, sim), color in zip(sims.items(), colors):
if process == "rest":
# 选取充电后的静置过程
sol = sim.solution.cycles[0].steps[2]
fig.suptitle("Rest status after a full charge ", fontsize=16)
elif process == "charge":
# 选取充电的过程
sol = sim.solution.cycles[0].steps[0]
fig.suptitle("Charging status until a full charge", fontsize=16)
# 电压与时间的关系图
t = sol["Time [min]"].entries
t = t - t[0]
V = sol["Voltage [V]"].entries
axs[0, 0].plot(t, V, color=color, linestyle="solid", label=C_rate)

# 电流与时间的关系图
for current, ls in zip(currents, linestyles):
j = sol[current].entries
axs[0, 1].plot(t, j, color=color, linestyle=ls)

# 负极副反应的析锂的容量与时间的关系图
Q_Li = sol["Loss of capacity to negative lithium plating [A.h]"].entries
axs[1, 0].plot(t, Q_Li, color=color, linestyle="solid")

# 负极参加反应的锂的容量与时间的关系图
Q_main = (
sol["Negative electrode volume-averaged concentration [mol.m-3]"].entries
* F
* A
* L_n
/ 3600
)
axs[1, 1].plot(t, Q_main, color=color, linestyle="solid")

axs[0, 0].legend()
axs[0, 0].set_title("Voltage variatoin at different charging rates")
axs[0, 0].set_ylabel("Voltage [V]")
axs[0, 1].set_ylabel("Volumetric interfacial current density [A.m-3]")
axs[0, 1].set_title("Three kinds of current variation over time")
axs[0, 1].legend(("Deintercalation current", "Stripping current", "Total current"))
axs[1, 0].set_ylabel("Plated lithium capacity [A.h]")
axs[1, 0].set_title("Participate in the capacity of lithium plating side effects of lithium metal")
axs[1, 1].set_ylabel("Intercalated lithium capacity [A.h]")
axs[1, 1].set_title("The normal reaction of lithium capacity")

for ax in axs.flat:
ax.set_xlabel("Time [minutes]")

fig.tight_layout()

return fig, axs


plot(sims_reversible,"rest");
代码
文本

充电后的静置过程的析锂情况

代码
文本

可逆析锂模型

代码
文本
[48]
# 绘制充电后静置的电池析锂过程
plot(sims_reversible,"rest");
代码
文本

结果与Ren等人[7]既有相似之处,也有差异。值得注意的是,与Ren等人不同,该模型使用的方程[5]导致在稳定状态下存在少量但有限的析锂。而且充电速率越大,析锂的量越大,即析锂副反应的程度越明显,这也可以从电池的电压看出来,电压下降越多。

代码
文本

不可逆的析锂模型

代码
文本
[49]
sims_irreversible = define_and_solve_sims(
models["irreversible"], experiments, parameter_values
)
代码
文本
[50]
plot(sims_irreversible,"rest");
代码
文本

与可逆情况不同,不存在稳定状态,容量退化很快。锂电池库存在一小时内减少了大约40毫安时,这是不现实的。在部分可逆析锂模型下,再次进行了低温快充模拟。

代码
文本

部分可逆析锂模型

代码
文本
[51]
sims_partially_reversible = define_and_solve_sims(
models["partially reversible"], experiments, parameter_values
)
代码
文本
[52]
plot(sims_partially_reversible,"rest");
代码
文本

部分可逆电镀模型同时具有可逆模型和不可逆模型的特征,这在结果中得到了体现。由于锂被可逆地剥离,析出锂的容量随着时间的推移而减少,但最终的析锂容量现在取决于充电速率,这表明一些锂在充电期间被不可逆地镀上。

代码
文本

充电过程的析锂情况

代码
文本

可逆析锂模型

代码
文本
[53]
plot(sims_reversible,"charge");
代码
文本

越高的充电速率下,达到4.2V的满电状态的所需时间越短,相应的充电电流的绝对值越大。充电过程中析出锂速度与充电速度成正比。值得注意的是,析出锂的最后容量并不是充电速度大或者充电速度小的时候大,反而是居中的C/2的时候副反应析出锂多。

代码
文本

不可逆的析锂模型

代码
文本
[54]
plot(sims_irreversible,"charge");
代码
文本

与可逆模型不一样的是,析锂速度相对平缓了许多,而且最后析出锂的容量是随着充电速度的下降而增多。

代码
文本

部分可逆析锂模型

代码
文本
[55]
plot(sims_partially_reversible,"charge");
代码
文本

同样的,部分可逆电镀模型同时具有可逆模型和不可逆模型的特征,这在结果中得到了体现。在这里,最后析出锂的容量最多的是充电速率为C/4。

代码
文本

参考文献

[1] Joel A. E. Andersson, Joris Gillis, Greg Horn, James B. Rawlings, and Moritz Diehl. CasADi – A software framework for nonlinear optimization and optimal control. Mathematical Programming Computation, 11(1):1–36, 2019. doi:10.1007/s12532-018-0139-4.

[2] Chang-Hui Chen, Ferran Brosa Planella, Kieran O'Regan, Dominika Gastol, W. Dhammika Widanage, and Emma Kendrick. Development of Experimental Techniques for Parameterization of Multi-scale Lithium-ion Battery Models. Journal of The Electrochemical Society, 167(8):080534, 2020. doi:10.1149/1945-7111/ab9050.

[3] Marc Doyle, Thomas F. Fuller, and John Newman. Modeling of galvanostatic charge and discharge of the lithium/polymer/insertion cell. Journal of the Electrochemical society, 140(6):1526–1533, 1993. doi:10.1149/1.2221597.

[4] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.

[5] Simon E. J. O'Kane, Ian D. Campbell, Mohamed W. J. Marzook, Gregory J. Offer, and Monica Marinescu. Physical origin of the differential voltage minimum associated with lithium plating in li-ion batteries. Journal of The Electrochemical Society, 167(9):090540, may 2020. URL: https://doi.org/10.1149/1945-7111/ab90ac, doi:10.1149/1945-7111/ab90ac.

[6] Simon E. J. O'Kane, Weilong Ai, Ganesh Madabattula, Diego Alonso-Alvarez, Robert Timms, Valentin Sulzer, Jacqueline Sophie Edge, Billy Wu, Gregory J. Offer, and Monica Marinescu. Lithium-ion battery degradation: how to model it. Phys. Chem. Chem. Phys., 24:7909-7922, 2022. URL: http://dx.doi.org/10.1039/D2CP00417H, doi:10.1039/D2CP00417H.

[7] Dongsheng Ren, Kandler Smith, Dongxu Guo, Xuebing Han, Xuning Feng, Languang Lu, and Minggao Ouyang. Investigation of lithium plating-stripping process in li-ion batteries at low temperature using an electrochemical model. Journal of the Electrochemistry Society, 165:A2167-A2178, 2018. doi:10.1149/2.0661810jes.

[8] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1):14, 2021. doi:10.5334/jors.309.

[9]G. Sikha, B. N. Popov, and R. E. White, “Effect of porosity on the capacity fade of a lithium-ion battery.” Journal of the Electrochemistry Society, 151, A1104 (2004).

代码
文本
老化机理
PyBaMM
老化机理PyBaMM
点个赞吧
本文被以下合集收录
锂离子电池石墨负极的老化机理与建模
xuxh@dp.tech
更新于 2024-09-02
4 篇0 人关注
电芯
bohrb060ec
更新于 2024-07-18
4 篇0 人关注
推荐阅读
公开
在PyBaMM中模拟电池颗粒开裂老化过程
老化机理PyBaMM
老化机理PyBaMM
张蔚泓
更新于 2024-08-27
公开
在PyBaMM中模拟电池活性材料损耗(LAM)老化过程
老化机理PyBaMM
老化机理PyBaMM
张蔚泓
更新于 2024-08-27