这是本文档旧的修订版!
版本:2017.1
硫是用于可再充电能量存储设备中较为有前途的阴极材料。电池放电期间,锂离子从富锂阳极迁移到硫阴极,并与硫反应(阴极锂化):
$$x \textrm{Li} + \textrm{S} \rightarrow \textrm{Li}_x \textrm{S}$$
开路电压(OCV)是该锂化过程中电化学驱动力。
在本教程中,我们将利用分子动力学(MD)模拟来计算电池放电期间的 OCV 曲线。我们采用了 ATK-ForceField 计算器和在参考文献 [IOB+15] 中提到并由伊斯兰教同事开发的 ReaxFF 力场。模拟退火法可用于模拟一系列成分为 x 的无定形 LixS 化合物,并将所得 OCV 曲线与参考文献 [IOB+15] 中的图 3 进行比较。
参考文献 [IOB+15] 中的图 3 是由采用混合了大规模典型的蒙特卡洛/分子动力学(GC-MC / MD)方法获得的数据制作而成,该方法目前在 QuantumATK 中尚无法实现。我们没有使用 GC-MC 将 Li 原子置于低能位,而是在这里使用了一种模拟退火的方法。
忽略焓和熵对能量的贡献,OCV 根据总能量差计算得来:
$$\textrm{OCV} = -\frac{E_{\textrm{Li}_x \textrm{S}} - nE_\textrm{Li} - mE_\textrm{S}}{n} ,$$
在这里,$n$($m$) 是 LixS 中锂(硫)原子的数量(如$x=n/m$),$E_\textrm{Li}$ 和 $E_\textrm{S}$ 分别为每个纯锂和硫晶体的总能量。
我们首先考虑 Li0.4S,并描述为计算纯 S 部分锂化到 Li0.4S 的开路电压的所需步骤:
然后利用 ATK 的 Python 脚本自动模拟更多范围的 LixS 化合物。然后计算得到完整的 OCV 曲线,并研究不同成分的径向分布函数:
本教程提供了所有可供下载的 QuantumATK Python 脚本。您也可以在此处下载压缩文件:↓ scripts.zip。
这是一个高级教程,因此不会详细地介绍如何操作 ATK-ForceField 计算器和 QuantumATK 分析工具的相关基础知识。如有需要,请参阅教程 Molecular Dynamics: Basics。
在电池工作条件下,阴极材料不会如期待的保持完美的晶相;它最可能是无定形的。QuantumATK 提供了多种用于生成非晶结构的工具,例如 Amorhpous Prebuilder 和 PackMol 工具。本教程中我们使用后者。
我们使用 PackMol 生成无定形 Li0.4S 化合物的初始结构,它可以将输入分子构型随机混合进一个合理的无定形块体构型。因此,您需要先向 Builder 的 Stash 添加硫原子和锂原子:
转至 Builders PackMol 插件并点击,然后将打开 PackMol 程序。然后按照以下步骤创建包含 2048 个硫原子的 Li0.4S 无定形晶体。
无定形 Li0.4S 结构已被自动添加到 Stash。重命名为 “Li04S”。
PackMol 产生的无定形结构可确保在所有混合实体之间具有最小距离(默认为 2 Å),但该结构可能仍远未达到平衡。因此,在使用 MD 将系统加热到高温之前,最好对原*子坐标和晶格矢量进行优化。
Li04S
。
保存 QuantumATK Python 脚本为 Li04S.py
并使用 Job Manager 或在终端执行以下命令运行:
atkpython Li04S.py 2>&1 | tee Li04S.log
您也可以在此处下载脚本:↓ Li04S.py。
相较于 MPI,使用 OpenMP 线程可以最有效地在多个物理内核上进行 ATK-ForceField 并行计算,请参阅教程中关于使用 Job Manager 仅通过线程进行https://docs.quantumatk.com/tutorials/job_manager_local/job_manager_local.html#job-manager-local-mkl本地和远程 QuantumATK 计算的部分。
如果从终端运行 QuantumATK,则应取消设置环境变量 OMP_NUM_THREADS
或将其设置为您打算使用的最大 OpenMP 线程数。我们建议将 MKL_DYNAMIC = TRUE
设置为允许 MKL 动态地更改线程数。
结构优化现在已经结束了,输出数据应在保存在 QuantumATK 的 LabFloor:
无定形 Li0.4S 化合物的室温结构(原子坐标和晶胞矢量)不是事先知道的,因此我们使用模拟退火的方法找到它。基本思想是将系统加热到 1600 K,然后使用分子动力学将其缓慢冷却至 300 K,所有这些过程都在固定压力下进行,但允许晶胞体积调整(NPT 动力学)。
计算流程:
在 LabFloor (保存在 Li04S.hdf5
)标签为 BulkConfiguration_1 的块体结构即为优化后的。将其选中并拖放到 Scripter,会自动地添加适合的 ATK-ForceField 计算器模块,因此添加的是 MolecularDynamics 脚本模块。
首先,设置默认输出文件名称为 Li04S_eq-1600K.hdf5
:
打开 MD 脚本模块,调整一下设置:
保存脚本为 Li04S_eq-1600K.py
并运行。取决于计算资源(即 OpenMP 线程数),该作业可能需要一个小时才能完成。
您也可以在此处下载 QuantumATK Python 脚本:↓ Li04S_eq-1600K.py。
一旦计算完成,最终的 MD 轨迹应在 LabFloor 上弹出。可以使用 Movie Tool 将 MD 模拟进程可视化。如果需要,您可以使用鼠标右键单击启用 Show bonds 选项。请注意,在整个模拟过程中温度和能量如何大致保持恒定,且晶胞在开始时会明显膨胀,但随后原子在内部移动时保持相当稳定。因此构型在恒定温度下保持平衡。
Li下标S 构型现在已达到平衡,准备冷却至室温。在 Movie Tool,使用 按钮将 MD 轨迹中的最后一个 MD 图像转移到 Scripter。
添加 New Calculator 和 MolecularDynamics 脚本模块,再次选择具有合适力场的 ATK-ForceField 计算器。然后设置默认输出文件名称为 Li04S_cool-down.hdf5
,按照以下调整 MD 模块的设置:
这将导致在 1 ns 的 MD 模拟时间内(106步×1 fs /步= 1 ns)出现线性的温度斜坡,并且冷却速率为1.3 K / ps。
保存脚本为 Li04S_cool-down.py
并运行。您也可以在此处下载 QuantumATK Python 脚本:↓ Li04S_cool-down.py。
如果在单个内核上执行该计算可能需要一整天,所以建议在运行此作业时使用线程。
一旦完成计算,所得的 MD 轨迹应就显示在 LabFloor。再次使用 Movie Tool 将 MD 模拟进程可视化。请注意温度是如何从 1600 K 线性降低到 300 K,系统的能量也会随之降低。此外,如从头到尾运行轨迹影片,可以很明显的观察到 Li0.4S 晶胞在冷却时会完全符合预期的收缩。
最后一步是将无定形 Li0.4S 平衡到室温。在 Movie Tool,,利用 按钮将最后一个 MD 图像从冷却 MD 轨迹转移到 Scripter。
添加 New Calculator 和 MolecularDynamics 脚本模块,再次选择具有合适力场的 ATK-ForceField 计算器。然后设置默认输出文件名称为 Li04S_eq-300K.hdf5
,按照以下调整 MD 模块的设置:
保存脚本为 Li04S_eq-300K.py
并运行。您也可以在此处下载 QuantumATK Python 脚本:↓ Li04S_eq-300K.py。
计算结束后,您可以使用 Movie Tool 检查计算是否符合预期(恒温等)。
下图显示了 MD 平衡过程中每个原子的总能量和体积的变化。能量和体积均达到稳定的平均值(黑色虚线),因此在经过 1000 MD 步长后已达到很好的平衡。脚本 ↓ evolution.py 可用于生成图。
图2 随着 MD 平衡的进行,每个原子的总能量(上图)和体积(下图)的变化。黑色虚线表示最近 100 张 MD 图像的平均值。