这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版上一修订版两侧同时换到之后的修订记录 | ||
atk:li-s电池的开路电压_reaxff方法分子动力学 [2020/04/29 22:06] – [Li-S 电池的开路电压:ReaxFF 方法分子动力学] xie.congwei | atk:li-s电池的开路电压_reaxff方法分子动力学 [2020/04/30 00:07] – [参考] xie.congwei | ||
---|---|---|---|
行 18: | 行 18: | ||
===== 开路电压的理论定义 ===== | ===== 开路电压的理论定义 ===== | ||
+ | 忽略焓和熵对能量的贡献,OCV 根据总能量差计算得来: | ||
+ | $$\textrm{OCV} = -\frac{E_{\textrm{Li}_x \textrm{S}} | ||
+ | - nE_\textrm{Li} - mE_\textrm{S}}{n} ,$$ | ||
+ | |||
+ | 在这里,$n$($m$) 是 Li< | ||
===== 概要 ===== | ===== 概要 ===== | ||
+ | |||
+ | 我们首先考虑 Li< | ||
+ | |||
+ | * <color # | ||
+ | * <color # | ||
+ | * <color # | ||
+ | |||
+ | 然后利用 ATK 的 Python 脚本自动模拟更多范围的 Li< | ||
+ | |||
+ | * <color # | ||
+ | * <color # | ||
+ | |||
+ | |||
+ | <WRAP center tip 100%> | ||
+ | === 提示 === | ||
+ | 本教程提供了所有可供下载的 QuantumATK Python 脚本。您也可以在此处下载压缩文件:[[https:// | ||
+ | </ | ||
+ | |||
+ | <WRAP center important 100%> | ||
+ | === 注意 === | ||
+ | 这是一个高级教程,因此不会详细地介绍如何操作 **ATK-ForceField** 计算器和 **QuantumATK** 分析工具的相关基础知识。如有需要,请参阅教程 [[https:// | ||
+ | </ | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
===== 无定形 Li0.4S 化合物 ===== | ===== 无定形 Li0.4S 化合物 ===== | ||
+ | 在电池工作条件下,阴极材料不会如期待的保持完美的晶相;它最可能是无定形的。QuantumATK 提供了多种用于生成非晶结构的工具,例如 **Amorhpous Prebuilder** 和 **PackMol** 工具。本教程中我们使用后者。 | ||
+ | 打开 QuantumATK,创建一个新的项目,最好放在硬盘驱动的新目录中。然后打开 {{: | ||
==== PackMol ==== | ==== PackMol ==== | ||
+ | |||
+ | |||
+ | 我们使用 **PackMol** 生成无定形 Li< | ||
+ | |||
+ | * 在 **Stash**,点击 Add {{: | ||
+ | * 选中氢原子,利用 {{: | ||
+ | * 重复上述两个步骤,创建锂原子。 | ||
+ | * 分别将 Stash 中的两项重命名为 “sulfur” 和 “lithium”。 | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 转至 Builders {{: | ||
+ | |||
+ | * 将 **Stash** 中的硫原子和锂原子拖放到 **PackMol** 程序。构型将会被添加到 “Molecule type” 的列表。 | ||
+ | * 将硫原子的数目增加到 2048,锂原子的数目输入为 819(由2048 × 0.4 = 819)。 | ||
+ | * 其他设置保持默认,点击 **Create**。 | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 无定形 Li< | ||
+ | |||
+ | {{ : | ||
+ | |||
行 32: | 行 96: | ||
==== 结构优化 ==== | ==== 结构优化 ==== | ||
+ | **PackMol** 产生的无定形结构可确保在所有混合实体之间具有最小距离(默认为 2 Å),但该结构可能仍远未达到平衡。因此,在使用 MD 将系统加热到高温之前,最好对原*子坐标和晶格矢量进行优化。 | ||
+ | |||
+ | * 将 “Li04S” 构型发送到 {{: | ||
+ | * 打开 calculator 模块,选择 **ATK-ForceField** 计算器。自动选择的力场为 // | ||
+ | * 打开 geometry optimization 模块,设置 force tolerance 和最大优化步数分别为 0.5 eV/Å 和 1000。然后勾选 //Save trajectory// | ||
+ | |||
+ | 保存 QuantumATK Python 脚本为 '' | ||
+ | |||
+ | <code python> | ||
+ | atkpython Li04S.py 2>&1 | tee Li04S.log | ||
+ | </ | ||
+ | |||
+ | 您也可以在此处下载脚本:[[https:// | ||
+ | |||
+ | <WRAP center info 100%> | ||
+ | === 重要 === | ||
+ | 相较于 MPI,使用 **OpenMP** 线程可以最有效地在多个物理内核上进行 ATK-ForceField 并行计算,请参阅教程中关于使用 Job Manager 仅通过线程进行[[|https:// | ||
+ | |||
+ | 如果从终端运行 QuantumATK,则应取消设置环境变量 '' | ||
+ | </ | ||
+ | |||
+ | 结构优化现在已经结束了,输出数据应在保存在 QuantumATK 的 **LabFloor**: | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 您可以利用 {{: | ||
===== 模拟退火 ===== | ===== 模拟退火 ===== | ||
+ | 无定形 Li< | ||
+ | |||
+ | 计算流程: | ||
+ | |||
+ | - 让系统在 1600 K 达到平衡。 | ||
+ | - 让系统缓慢地从 1600 K 冷却至 300 K。 | ||
+ | - 让系统在 300 K 达到平衡。 | ||
==== 在 1600K 达到平衡 ==== | ==== 在 1600K 达到平衡 ==== | ||
+ | |||
+ | 在 **LabFloor** (保存在 '' | ||
+ | |||
+ | 首先,设置默认输出文件名称为 '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 打开 MD 脚本模块,调整一下设置: | ||
+ | |||
+ | * 设置 MD 类型为 NPT Berendsen。 | ||
+ | * 增加 MD 步数至 50000。 | ||
+ | * 增加 log interval 为 1000。 | ||
+ | * 将 Reservoir temperature 和 Final temperature 都设置为 1600 K。 | ||
+ | * 将初始粒子速度 Maxwell–Boltzmann 分布的温度也设置为 1600 K。 | ||
+ | * 选项:不勾选 //Save trajectory// | ||
+ | * 点击 **OK**,保存设置。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 保存脚本为 '' | ||
+ | |||
+ | 您也可以在此处下载 QuantumATK Python 脚本:[[https:// | ||
+ | |||
+ | 一旦计算完成,最终的 MD 轨迹应在 **LabFloor** 上弹出。可以使用 **Movie Tool** 将 MD 模拟进程可视化。如果需要,您可以使用鼠标右键单击启用 //Show bonds// 选项。请注意,在整个模拟过程中温度和能量如何大致保持恒定,且晶胞在开始时会明显膨胀,但随后原子在内部移动时保持相当稳定。因此构型在恒定温度下保持平衡。 | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
==== 从 1600K 冷却至 300K ==== | ==== 从 1600K 冷却至 300K ==== | ||
+ | |||
+ | |||
+ | Li< | ||
+ | |||
+ | 添加 {{: | ||
+ | |||
+ | * 设置 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 模拟时间内(10< | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 保存脚本为 '' | ||
+ | |||
+ | <WRAP center alert 100%> | ||
+ | === 警告 === | ||
+ | 如果在单个内核上执行该计算可能需要一整天,所以建议在运行此作业时使用线程。 | ||
+ | </ | ||
+ | |||
+ | 一旦完成计算,所得的 MD 轨迹应就显示在 **LabFloor**。再次使用 **Movie Tool** 将 MD 模拟进程可视化。请注意温度是如何从 1600 K 线性降低到 300 K,系统的能量也会随之降低。此外,如从头到尾运行轨迹影片,可以很明显的观察到 Li< | ||
+ | |||
+ | {{ : | ||
+ | |||
==== 在 300K 达到平衡 ==== | ==== 在 300K 达到平衡 ==== | ||
+ | |||
+ | |||
+ | 最后一步是将无定形 | ||
+ | |||
+ | 添加 {{: | ||
+ | |||
+ | * 设置 MD 类型为 NPT Martyna-Tobias-Klein。 | ||
+ | * 增加 MD 步数至 100000。 | ||
+ | * 增加 log interval 为 100。 | ||
+ | * 将 Reservoir temperature设置为 300 K。 | ||
+ | * 将初始粒子速度 Maxwell–Boltzmann 分布的温度也设置为 300 K。 | ||
+ | * 选项:不勾选 //Save trajectory// | ||
+ | * 点击 **OK**,保存设置。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 保存脚本为 '' | ||
+ | |||
+ | 计算结束后,您可以使用 **Movie Tool** 检查计算是否符合预期(恒温等)。 | ||
+ | |||
+ | 下图显示了 MD 平衡过程中每个原子的总能量和体积的变化。能量和体积均达到稳定的平均值(黑色虚线),因此在经过 1000 MD 步长后已达到很好的平衡。脚本 [[https:// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 图2 随着 MD 平衡的进行,每个原子的总能量(上图)和体积(下图)的变化。黑色虚线表示最近 100 张 MD 图像的平均值。 | ||
+ | |||
===== 开路电压 ===== | ===== 开路电压 ===== | ||
+ | OCV 是根据引言中讨论的总能量差异计算得来的。每个总能量对应一个几何优化的结构。为检验计算出的 OCV 是否不显著地依赖于所选平衡的 MD 图像,您应该先对最后几个平衡图像做固定晶胞体积的几何优化,然后计算相应的 OCV 值。使用脚本 [[https:// | ||
+ | 您还需要纯 //BCC// Li 和 //ORTH// S< | ||
+ | |||
+ | 然后使用脚本 [[https:// | ||
+ | |||
+ | {{ : | ||
===== 完整的开路电压图 ===== | ===== 完整的开路电压图 ===== | ||
+ | |||
+ | |||
+ | 到目前为止,我们已经获得了 Li< | ||
+ | |||
+ | ATK Python 脚本非常适合将上面针对 Li< | ||
+ | |||
+ | * 采用 **PackMol** 生成所需化合物的结构,将每个结构保存在名为 '' | ||
+ | * 运行每个 Li< | ||
+ | |||
+ | |||
+ | <WRAP center important 100%> | ||
+ | === 注意 === | ||
+ | 即使使用 OpenMP 线程在 16 个内核上执行作业,富 Li 化合物的计算也可能需要几天的时间。 | ||
+ | |||
+ | 冷却的 MD 模拟花费了大部分的工作时间。您可以通过降低从 1600 K冷却到 300 K 的 MD 步数(从而提高了冷却速率)减少获得结果的时间,但您需要注意,因为冷却速率可能会影响您的结果。 | ||
+ | |||
+ | 而且,事实证明,富锂结构的平衡收敛速度通常比低锂浓度的收敛速度快,因此对于这些模拟,也有可能减少 MD 步骤的数量。 | ||
+ | </ | ||
+ | |||
+ | 最后,利用脚本 [[https:// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 图3 硫阴极锂化过程中的开路电压曲线。 | ||
+ | |||
+ | 该图显示了完整的 OCV 曲线,与 [IOB + 15] 中的图 3 几乎相同。通常,取决于电解质,用于 Li-S 电池的实验放电电压曲线可表现出两个或三个还原阶段。本例中,ReaxFF 分子动力学计算可以预测出初始的下降、平坦的区域和再次的电压下降,都与实验一致。 | ||
+ | |||
+ | 最初的下降可能是由高阶多硫化物的形成引起的,即 S< | ||
+ | |||
行 53: | 行 275: | ||
===== 径向分布函数 ===== | ===== 径向分布函数 ===== | ||
+ | 分析不同 Li< | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | 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 吸收中占主导地位。 | ||
===== 参考 ===== | ===== 参考 ===== | ||
+ | * [IOB+15] (1, | ||
+ | * 英文原文:https:// | ||