在这里,我们展示了一种“Biased”结构搜索方法,用于研究单原子团簇的结构演化和生长。该方法中:向一个最低能量结构(将其结构冻结)的 n 原子团簇的添加一个原子,获得最有利结合位点(具有最大结合能,即负得最多),这样得到 (n+1) 团簇全局最小结构的良好近似,或者说初始猜测,进一步优化即可该 (n+1) 团簇结构即可。
本教程使用 ReaxFF 的 Co.ff 力场以 Co$_8$ + Co → Co$_9$ 为例进行说明。
本教程分为两个部分:在第一部分中,我们通过使用 Basin Hopping 子任务获得 Co$_8$ 簇的全局最小值。在第二部分中,我们固定 Co$_8$ 全局最小值的坐标,添加 Co 原子并使用 Process Search 子任务来探索所有反应机制,以及相应的结合位点。与最高结合能相关的结构是 Co$_9$ 全局最小结构的最佳近似。观察结合位点的“格栅图”(手册中称为“Lattice”)特征,能够让我们深入了解其背后的生长机制。结合位点的逐渐增多,显示了此类簇的结构演变和生长模式。本文演示的是一个一个 Co 原子逐渐生长,也适用于一个一个小团簇生长,即将这些小团簇类似下文的一个Co原子(adsorbate分区)处理即可。
下文中,我们将在AMS 中使用 ReaxFF 引擎调用 PES exploration功能。其他模块例如机器学习势、BAND、DFTB也一样可以调用 PES exploration功能,区别仅仅在于各个模块自带的参数差异,例如第一性原理需要指定合适的泛函、基组等。
目前AMS2023的版本,每次作业,只能添加一个原子或一个分子、团簇,SCM 已经计划开发生长过程自动化,即自动重复下述过程,从Co$_8$ → Co$_n$
我们需要对 Co$_8$ 团簇的结构进行初步猜测。因此,使用 AMSinput 随意创建一个由 8 个 Co 原子组成的随机结构,不过需要避免创建成平面结构。然后使用窗口右下角的 Pre-optimize 按钮,来获得局部能量最小值。使用 Pre-optimize 按钮时,确保没有选择任何原子,否则只有选定的原子或原子才会被优化,示意图如下:
初始结构并不重要,但可能需要更多迭代才能获得相同的结果。对于本教程,我们建议从相同的局部最小值开始,以提高教程结果完全复现的可能性。因此用户,可以将下面的内容直接复制,在 AMSinput 中 Ctrl v 粘贴,这是我们优化得到的局部最优结构:
Co -0.57747929 3.09962106 -1.40010667 Co -1.94268805 1.60982864 -0.21835532 Co 0.68130178 -0.28713038 1.61855474 Co 0.41911715 1.21862699 -0.30327160 Co 1.35380790 3.40899190 -0.11445733 Co 1.88623229 1.82216225 1.57360827 Co 0.56876970 -1.15098318 -0.59251345 Co 2.52877908 0.02596128 0.06823723
其机制,就如同在一个地图上,派遣4个探险家,去寻找可能的结合点,每个探险家寻找10个点。探险家的数量、每个探险家寻找的点位数越多,对时间的消耗越大,当然能够得到更全面的结果,毕竟我们是在寻找全局最优结构。
有关不同设置的详细信息,请参阅 PES Exploration 手册。出于本教程的目的,我们将保留所有内容的默认值,除了探险次数和每次探险的探险家数量。
保存并运行作业。
计算完毕, SCM → Movie 即可得到不同结构的能量,双击坐标轴的 y 轴,可以将单位修改为eV:
如果运气好的话,最低能量状态应该在 -0.927817 Hatree,如果是这样,我们就成功获得了全局能量最小结构(将鼠标移到“态”上以验证能量的准确值)!
Basin Hopping 优化是一种使用随机扰动跳跃盆地的全局优化,并使用局部优化算法来优化每个能量极小点结构。因此,由于算法的随机性或数值精度的差异,结果可能会有所不同。可以考虑多运行几次,并比较结果,并采用能量最低那个结果。
下一步,我们将使用 Co$_8$ 全局最小值。
首先,我们需要上一节中获得的 Co$_8$ 全局最小值的几何结构。如果您跳过了上一部分,只需将以下坐标复制粘贴到 AMSinput 中:
Co -0.03403571 1.12611646 -2.08186475 Co -1.53717952 1.78357073 -0.30583453 Co 1.68546231 -0.17156299 1.49980432 Co -0.01541891 1.59507948 1.61007493 Co 0.67964989 2.82625193 -0.46130535 Co 2.34451750 2.13563230 1.20356390 Co -0.20262505 -0.26260499 -0.06462506 Co 1.99747005 0.71459565 -0.76811757
新的 AMSinput 窗口还不知道我们想要使用 ReaxFF 引擎执行 PES 探索。我们类似前面一样,设置 Basin Hopping 的引擎设置:
在 AMSinput 中,在团簇表面粗略地添加一个新的 Co 原子,并选中该原子,然后使用窗口窗口右下角的 Pre-optimize 按钮,快速获得附近的局部能量最小结构,如此原先的 Co$_8$ 结构将保持不变。
同样地,这第 9 个 Co 原子初始结构并不重要,但可能导致后续步骤需要更多次迭代才能获得与教程中相同的结果。下面的结构,是我们添加 Co 原子并优化得到的结构:
Co -0.03403571 1.12611646 -2.08186475 Co -1.53717952 1.78357073 -0.30583453 Co 1.68546231 -0.17156299 1.49980432 Co -0.01541891 1.59507948 1.61007493 Co 0.67964989 2.82625193 -0.46130535 Co 2.34451749 2.13563230 1.20356390 Co -0.20262505 -0.26260499 -0.06462506 Co 1.99747005 0.71459565 -0.76811757 Co 3.01465991 2.87039628 -0.97767612
用户可以直接复制,并粘贴到AMSinput中,以进行下一步的工作。
首先,我们要定义两个Region(创建Region如果不熟悉,请参考:如何创建分区):1)adsorbate,即新加入的Co原子,以及 2)cluster,即之前得到的 Co$_8$ 全局最有结构,并固定 Co$_8$ 结构:
在接下来的步骤中,我们将使用“Process Search”功能来探索添加第 9 个 Co 原子可能涉及的所有可能过程。“Process Search” 中的 Process 是指连接鞍点(过渡态)局部最小值的路径。“Process Search” 将从我们提供的局部能量最小点开始,尝试将“adsorbate”进行随机位移,找到附近的“鞍点”。如果找到鞍点,则执行结构优化,将原子推到鞍点的另一侧,以找到与原始状态连接的新局部最小点。从所有这些局部最小点开始,继续重复这个过程多次。
一旦获得势能面的图景,我们还将要求计算相关的“结合位点”的“格栅图”。“结合位点”的定义为:局部能量最小点时,adsorbate原子与Cluster中某个原子相邻。此外,如果满足以下两个要求,则认为两个结合位点相连接:
在这个过程中,为了结构之间具有可比性,程序会尽量将各种构型中 cluster 中的原子一一对应起来,而对于本例,Cluster 被冻结了,此事就没有任何问题、难度了。
设置 “Process Search” 如下:
以上参数的设置较为通用。
保存作业并运行。约几分钟后作业运行完毕,询问是否加载计算得到的最新结构时,点击“Yes”。在 AMSinput 中,我们将看到结合位点“格栅图”叠加到簇的初始几何形状上:
请注意,添加的原子仅仅位居所有结合位点中的某一个。这些用于表示结合位点的符号信息,包括近邻原子的数量(在 5 Å 的距离内,请参阅上面的Neighbors cutoff选项)以及结合状态的平均能量(不同颜色表达不同能量)。
在我们的示例中,只有一种近邻类型,所以只有一种符号,即三角形。这些结合位点在第一个配位壳层中有三个近邻原子,在第二个配位壳层中也具有三个近邻原子,因此,标签是N33。
它们的颜色分为两组: 红色代表最稳定的吸附位点,能量为 -1.0333 Hartree 左右 蓝色代表其余的结合位点,能量为-1.0321 Hartree
这些详细信息可以在 Details → PES Exploration Binding Sites 第二列中看到:
我们可以使用 AMSmovie 将探索的能量图景可视化:
右侧列出不同构型对应的能量,左侧为对应结构。局部最小值用黑色 level 显示,而过渡态用红色 level 显示。单击不同的 level 左侧显示对应结构。
最后:由于算法的随机性、数值精度的差异,您可能会得到不同的能量景观图。在我们的示例中,我们选择了100 个 expeditions ,以确保可以获得所有关键结构点:12 个局部最小值和 12 个过渡状态。