用户工具

站点工具


atk:li-s电池的开路电压_reaxff方法分子动力学

Li-S 电池的开路电压:ReaxFF 方法分子动力学

版本: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 的开路电压的所需步骤:

  • 无定形 Li0.4S 化合物
  • 模拟退火
  • 开路电压

然后利用 ATK 的 Python 脚本自动模拟更多范围的 LixS 化合物。然后计算得到完整的 OCV 曲线,并研究不同成分的径向分布函数:

  • 完整的开路电压图
  • 径向分布函数

提示

本教程提供了所有可供下载的 QuantumATK Python 脚本。您也可以在此处下载压缩文件:↓ scripts.zip

注意

这是一个高级教程,因此不会详细地介绍如何操作 ATK-ForceField 计算器和 QuantumATK 分析工具的相关基础知识。如有需要,请参阅教程 Molecular Dynamics: Basics

无定形 Li0.4S 化合物

在电池工作条件下,阴极材料不会如期待的保持完美的晶相;它最可能是无定形的。QuantumATK 提供了多种用于生成非晶结构的工具,例如 Amorhpous PrebuilderPackMol 工具。本教程中我们使用后者。

打开 QuantumATK,创建一个新的项目,最好放在硬盘驱动的新目录中。然后打开 Builder

PackMol

我们使用 PackMol 生成无定形 Li0.4S 化合物的初始结构,它可以将输入分子构型随机混合进一个合理的无定形块体构型。因此,您需要先向 Builder 的 Stash 添加硫原子和锂原子:

  • Stash,点击 Add New Configuration,在分子构型中添加一个氢原子。
  • 选中氢原子,利用 工具将 H 原子转变为 S。
  • 重复上述两个步骤,创建锂原子。
  • 分别将 Stash 中的两项重命名为 “sulfur” 和 “lithium”。

转至 Builders PackMol 插件并点击,然后将打开 PackMol 程序。然后按照以下步骤创建包含 2048 个硫原子的 Li0.4S 无定形晶体。

  • Stash 中的硫原子和锂原子拖放到 PackMol 程序。构型将会被添加到 “Molecule type” 的列表。
  • 将硫原子的数目增加到 2048,锂原子的数目输入为 819(由2048 × 0.4 = 819)。
  • 其他设置保持默认,点击 Create

无定形 Li0.4S 结构已被自动添加到 Stash。重命名为 “Li04S”。

结构优化

PackMol 产生的无定形结构可确保在所有混合实体之间具有最小距离(默认为 2 Å),但该结构可能仍远未达到平衡。因此,在使用 MD 将系统加热到高温之前,最好对原*子坐标和晶格矢量进行优化。

  • 将 “Li04S” 构型发送到 Script Generator,添加 New Calculator OptimizeGeometry 脚本模块。
  • 打开 calculator 模块,选择 ATK-ForceField 计算器。自动选择的力场为 ReaxFF_LiS_2005 —— 在参考 [IOB+15] 中生成。
  • 打开 geometry optimization 模块,设置 force tolerance 和最大优化步数分别为 0.5 eV/Å 和 1000。然后勾选 Save trajectory 选项,输入所保存弛豫轨迹文件名称为 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

您可以利用 Viewer 将弛豫轨迹可视化,您会看到,在最小化原子力和应力的作用下,晶胞膨胀了一点。

模拟退火

无定形 Li0.4S 化合物的室温结构(原子坐标和晶胞矢量)不是事先知道的,因此我们使用模拟退火的方法找到它。基本思想是将系统加热到 1600 K,然后使用分子动力学将其缓慢冷却至 300 K,所有这些过程都在固定压力下进行,但允许晶胞体积调整(NPT 动力学)。

计算流程:

  1. 让系统在 1600 K 达到平衡。
  2. 让系统缓慢地从 1600 K 冷却至 300 K。
  3. 让系统在 300 K 达到平衡。

在 1600K 达到平衡

LabFloor (保存在 Li04S.hdf5)标签为 BulkConfiguration_1 的块体结构即为优化后的。将其选中并拖放到 Scripter,会自动地添加适合的 ATK-ForceField 计算器模块,因此添加的是 MolecularDynamics 脚本模块。

首先,设置默认输出文件名称为 Li04S_eq-1600K.hdf5

打开 MD 脚本模块,调整一下设置:

  • 设置 MD 类型为 NPT Berendsen。
  • 增加 MD 步数至 50000。
  • 增加 log interval 为 1000。
  • 将 Reservoir temperature 和 Final temperature 都设置为 1600 K。
  • 将初始粒子速度 Maxwell–Boltzmann 分布的温度也设置为 1600 K。
  • 选项:不勾选 Save trajectory 选项。
  • 点击 OK,保存设置。

保存脚本为 Li04S_eq-1600K.py 并运行。取决于计算资源(即 OpenMP 线程数),该作业可能需要一个小时才能完成。

您也可以在此处下载 QuantumATK Python 脚本:↓ Li04S_eq-1600K.py

一旦计算完成,最终的 MD 轨迹应在 LabFloor 上弹出。可以使用 Movie Tool 将 MD 模拟进程可视化。如果需要,您可以使用鼠标右键单击启用 Show bonds 选项。请注意,在整个模拟过程中温度和能量如何大致保持恒定,且晶胞在开始时会明显膨胀,但随后原子在内部移动时保持相当稳定。因此构型在恒定温度下保持平衡。

从 1600K 冷却至 300K

Li下标S 构型现在已达到平衡,准备冷却至室温。在 Movie Tool,使用 按钮将 MD 轨迹中的最后一个 MD 图像转移到 Scripter

添加 New Calculator MolecularDynamics 脚本模块,再次选择具有合适力场的 ATK-ForceField 计算器。然后设置默认输出文件名称为 Li04S_cool-down.hdf5,按照以下调整 MD 模块的设置:

  • 设置 MD 类型为 NPT Berendsen。
  • 增加 MD 步数至 1000000。
  • 增加 log interval 为 1000。
  • 将 Reservoir temperature 和 Final temperature 分别设置为 1600 K 和 300 K。
  • 将初始粒子速度 Maxwell–Boltzmann 分布的温度也设置为 1600 K。
  • 选项:不勾选 Save trajectory 选项。
  • 点击 OK,保存设置。

这将导致在 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 晶胞在冷却时会完全符合预期的收缩。

在 300K 达到平衡

最后一步是将无定形 Li0.4S 平衡到室温。在 Movie Tool,,利用 按钮将最后一个 MD 图像从冷却 MD 轨迹转移到 Scripter

添加 New Calculator MolecularDynamics 脚本模块,再次选择具有合适力场的 ATK-ForceField 计算器。然后设置默认输出文件名称为 Li04S_eq-300K.hdf5,按照以下调整 MD 模块的设置:

  • 设置 MD 类型为 NPT Martyna-Tobias-Klein。
  • 增加 MD 步数至 100000。
  • 增加 log interval 为 100。
  • 将 Reservoir temperature设置为 300 K。
  • 将初始粒子速度 Maxwell–Boltzmann 分布的温度也设置为 300 K。
  • 选项:不勾选 Save trajectory 选项。
  • 点击 OK,保存设置。

保存脚本为 Li04S_eq-300K.py 并运行。您也可以在此处下载 QuantumATK Python 脚本:↓ Li04S_eq-300K.py

计算结束后,您可以使用 Movie Tool 检查计算是否符合预期(恒温等)。

下图显示了 MD 平衡过程中每个原子的总能量和体积的变化。能量和体积均达到稳定的平均值(黑色虚线),因此在经过 1000 MD 步长后已达到很好的平衡。脚本 ↓ evolution.py 可用于生成图。

图2 随着 MD 平衡的进行,每个原子的总能量(上图)和体积(下图)的变化。黑色虚线表示最近 100 张 MD 图像的平均值。

开路电压

OCV 是根据引言中讨论的总能量差异计算得来的。每个总能量对应一个几何优化的结构。为检验计算出的 OCV 是否不显著地依赖于所选平衡的 MD 图像,您应该先对最后几个平衡图像做固定晶胞体积的几何优化,然后计算相应的 OCV 值。使用脚本 ↓ Li04S_relax.py 可执行此操作。

您还需要纯 BCC Li 和 ORTH S8 晶体中每个原子总能量。脚本 ↓ Lithium.py↓ a-Sulfur.py 可执行所需的几何优化并计算总能量。运行这两个脚本。

然后使用脚本 ↓ ocv.py 计算并绘制所有 10 个选定的 Li0.4S MD 图像的 OCV。如下图所示,黑线表示平均 OCV,很明显即使从平衡 MD 模拟中选择不同的 MD 图像也会导致 OCV 值略有不同,但它们非常相似。对于每种 LixS 化合物,下面我们将使用 10 张 MD 图像的平均 OCV。

完整的开路电压图

到目前为止,我们已经获得了 Li0.4S 的 OCV。为绘制出完整锂化到硫阴极对应的 S8 到 LixS 还原路径的 OCV 曲线,您应针对一系列 Li 的浓度重复上述步骤。但是,这可能有点麻烦,但一定程度的自动化会很有用。

ATK Python 脚本非常适合将上面针对 Li0.4S 给出的不同 MD 脚本整合到一个脚本中,该脚本将针对给定的锂浓度运行所有计算。这个脚本 ↓ x0.40_full.py 对应的是 $x$ = 0.4。下载后将其作为一个模板使用,运行每个化合物需要的所有 MD 模拟。

  • 采用 PackMol 生成所需化合物的结构,将每个结构保存在名为 x#.##.hdf5 的单独数据文件中,这里的 #.## 表示 Li 的 含量,例如 0.40
  • 运行每个 LixS 化合物的独立脚本(复制 ↓ x0.40_full.py,编辑使其使用上文的生成的 hdf5 文件作为输入和输出的数据文件)。

注意

即使使用 OpenMP 线程在 16 个内核上执行作业,富 Li 化合物的计算也可能需要几天的时间。

冷却的 MD 模拟花费了大部分的工作时间。您可以通过降低从 1600 K冷却到 300 K 的 MD 步数(从而提高了冷却速率)减少获得结果的时间,但您需要注意,因为冷却速率可能会影响您的结果。

而且,事实证明,富锂结构的平衡收敛速度通常比低锂浓度的收敛速度快,因此对于这些模拟,也有可能减少 MD 步骤的数量。

最后,利用脚本 ↓ ocv_profile.py 绘制 LixS 化合物的 OCV 曲线图。

图3 硫阴极锂化过程中的开路电压曲线。

该图显示了完整的 OCV 曲线,与 [IOB + 15] 中的图 3 几乎相同。通常,取决于电解质,用于 Li-S 电池的实验放电电压曲线可表现出两个或三个还原阶段。本例中,ReaxFF 分子动力学计算可以预测出初始的下降、平坦的区域和再次的电压下降,都与实验一致。

最初的下降可能是由高阶多硫化物的形成引起的,即 S8 晶体中的富硫化合物。但它不够稳定,因此是一个快速的过程。至 2.1 V 的平稳阶段是一个缓慢的过程,包括进一步还原为低阶多硫化物,即富锂化合物。在这里我们仅考虑锂化的阴极,但实际上这些过程非常复杂,可能需要根据电解质组成进行更详细的了解。

径向分布函数

分析不同 LixS 成分中 S–S,Li–Li 和 S–Li 的径向分布函数(RDF)也很有用。您可以使用以下脚本获取下面给出的图:↓ rdf_lili.py, https://docs.quantumatk.com/_downloads/rdf_ss.py\↓ rdf_ss.py↓ rdf_sli.py

Li–Li、S–S 和 S–Li 距离的径向分布函数与 [IOB + 15] 中的图 5 吻合,并清楚地表明:1)在硫阴极的锂化过程中,锂的吸收会在距离为 3 Å 处形成 Li-Li 键。2)短的 S–S 键在吸收 Li 后消失,3)低 Li 含量时会同时存在短和长的 S–Li 距离,但短的 S–Li 键(2.5 Å)在大量 Li 吸收中占主导地位。

参考

atk/li-s电池的开路电压_reaxff方法分子动力学.txt · 最后更改: 2020/08/15 21:34 由 dong.dong

© 2014-2020 费米科技(京ICP备14023855号