目录

NEB方法研究Pt在Pt表面的扩散

前言

本教程演示如何使用 Nudged Elastic Band (NEB) 方法研究扩散反应及其能垒。作为范例,将计算 Pt 原子在 Pt(100) 表面两种不同扩散机制的能垒 [1][2]。尤其值得一提的是,VNL中提供了高质量的、方便易用的NEB初始反应路径创建工具,能够创建更合理的NEB初始路径,大幅减少NEB优化步数和时间,详见【更合理的NEB初始路径猜测】。 主要包含如下内容:

关于构建、优化 NEB 计算的参数的更详细信息,请参阅QuantumATK manual,尤其是关于NudgedElasticBand一节,以及OptimizeNudgedElasticBand功能。

注意

NEB 方法需要用户对初始结构、末态结构以及路径进行预先设定,这通常是必须的。不过,使用其他非常强大方法,比如 QuantumATK 内置的全新的 Adaptive Kinetic Monte Carlo (AKMC) 工具,即使不给定末态结构和猜测路径,通过计算也能获得与本例完全一样的信息。

在 Pt(100) 表面创建吸附 Pt 原子

本章中设置 Pt(100) 表面的吸附 Pt 原子,作为 NEB 计算的初始结构。 1,打开 VNL,并点击 Create New 创建一个新的 Project,将其命名(这里命名为Pt_Pt100_NEB),选择文件夹用来存储该 Project 相关信息。点击 OK,并点击 Open 开始这个 Project。

2,在 VNL 主窗口,点击图标打开 Builder

3,导入 Pt 的面心立方晶体结构:点击 Add ‣ From Database,并搜索 “Platinum”。之后点击窗口右下角的 图标,将其添加到 Stash

4,点击窗口右下角的图标,将 Pt 原胞从 Stash 送入 Script Generator

5,在 Script Generator 中将 Global IO 中的 Default output file 中的名字改为 “Pt_bulk.nc”

6,通过双击如下图所示的左边的 Blocks 中的对应图标,将其添加到 Script 面板中:

7,双击 Script 面板中的 New Calculator,并修改参数如下:

8,双击 Optimize Geometry,并修改参数:

Optimize Geometry 面板看起来应该如下图所示:

9,点击 图标,将生成的脚本送入 Job Manager,保存脚本名为:“Pt_bulk.py”

10,在 Select Machine 窗口,确保 Machine 的下拉菜单设置为 Local,之后按 OK

11,在 Job Manager 窗口中,确保 Pt_bulk.py 脚本被选中,之后点击 Run Queue 按钮(如下图)开始计算。计算大约需要几秒钟。

任务结束后,关闭 Job Manager 并回到 VNL 的主窗口。

12,在 VNL 主窗口,LabFloor 栏出现了两个新项目,分别对应着 Pt 晶体初始结构(gID000)和优化结构(gID001)。

13,将gID001拖入到 Builder 中。

14,在 Builder 中,选择这个最新导入的 Pt_bulk.nc 项,并点击 Builder ‣ Surface (Cleave)

15,在 Define the surface 面板,确保 Miller 指数为 $h=1,k=0,l=0$,并点击 Next。

16,在 Define the surface 面板,参照下图设置 5×5p 表面。

之后点击 Next。

17,参照下图设置 Finalize output configuration 面板中的参数,得到一个包含 5 层以及 10Å 真空层的板。

之后点击 Finish 将该结构添加到 Stash

18,在 Stash 窗口,右键点击 “Pt_bulk.nc (100)” 项,并选择 Copy。之后右键点击 “Pt_bulk.nc (100) (1)”,选择Rename 将其改名为 “initial.nc”

19,点击 按钮,打开 Camera 面板(如下图所示),选择 XY,从而将体系调整到 xy 方向。

调整好之后,关闭 Camera 面板,并使用鼠标滚轮可以放大、缩小视图。

20,按住 CTRL 键不放,使用鼠标左键分别选中 Pt(100) 最顶层的四个 Pt 原子。之后点击 ,在这些原子中间额外添加一个原子,如下图所示:

21,选择新添加的 Pt 原子,点击窗口右边 Coordinate Tools ‣ Translate

22,在 Translate 面板,定义平移矢量,如下图所示:

填好数字之后,点击 Apply,该原子即沿 z 方向向上移动 1.6Å。该结构作为作为 Pt(100) 表面吸附 Pt 原子模型的初始结构,用于本文中的两个 NEB 计算。

创建交换扩散过程的末态结构

在本章中,将会设置 Pt(100) 面吸附 Pt 原子的交换扩散的末态结构[1]

在交换扩散过程中,其中一个表面的 Pt 原子被吸附的 Pt 原子替换,而该表面原子沿 [010] 方向移动到下一个 4 原子包围的 Hollow 位,如下图所示:

该路径从能量上,比吸附原子直接跳到近邻的 Pt(100) 面 hollow 位(见下一章)更有优势[1][2]

1,在 Stash 中左键点击 “initial.nc” 项,并选择 Copy,之后左键选中 “initial.nc (1)” 项,并右键点击选择 Rename,将其改名为 “final_Exchange.nc”

2,选择 Stash“final_exchange.nc”,选择下图中所示的院子(原子编号为88),并点击 Coordinate Tools ‣ Translate

3,在 Translate 面板,使用下图所示的平移矢量移动选中的原子:

4,选择吸附 Pt 原子,使用下图所示的平移矢量进行平移:

5,通过这种方式,获得了 NEB 计算交换扩散过程的末态结构。

创建直接跳跃过程的末态结构

在本章中,将会设置另一个可能的 Pt(100) 表面的吸附 Pt 原子扩散过程的末态结构。在这种扩散过程中,吸附原子直接在两个相邻的 4 原子包围的 hollow 位间跳跃。

1,在 Stash 中再次 Copy “initial.nc” ,并重命名 “initial.nc (1)”“final_jump.nc”

2,选择 Stash 中的 “final_jump.nc”,选择窗口中的吸附 Pt 原子,点击 Coordinate Tools ‣ Translate

3,在 Translate 面板,使用如下图所示的平移矢量进行,对吸附 Pt 原子进行平移。

4,使用这种方式,得到 NEB 计算直接跳跃扩散过程的末态结构:

注意

这两种方法创建的末态结构看上去是一样的,但是原子编号的顺序是不同的。由于NEB初始路径创建时,即使对于同种的原子也要按原子编号追踪每个原子移动的路径,因此,使用这两种末态结构创建的路径是完全不同的。

构造NEB轨迹

本章演示如何产生沿着交换扩散反应路径的 NEB 各个构象.这也适合于直接跳跃的扩散路径,唯一的差别是在设置 NEB 轨迹的末态结构的时候,需要选取 “final_jump.nc”

1,点击 Builder ‣ Nudged Elastic Band,并将 “initial.nc”“final_exchange.nc” 分别拖到 Nudged Elastic Band 的左、右两个面板里面。

2,在 Nudged Elastic Band 面板设置参数如下图所示:

设置完毕之后,点击 Create,在 Stash 中创建一个名为 “NEB: initial.nc final_exchanged.nc” 项目,包括初始结构和末态结构以及 ATK 自动猜测出来的,沿着反应路径的各个结构(以下称为映像)。

注意

VNL 中的 image-dependent pair potential (IDPP)[4] 使用线性插值的方法,能够提供 NEB 反应路径的高质量初始猜测。对复杂的反应路径,在迭代次数和速度方面的改进非常显著。

注意

可以对NEB的各个映像直接进行操作,例如可以:

  • 选择特定映像并/或编辑特定原子
  • 删除一个或多个映像,通过右键点击选中的任意两个映像,重新计算整个路径或两个选定映像之间的路径
  • 将NEB映像中的某一个结构直接拖到 Stash 窗口
  • 将任何一个兼容的结构拖到NEB映像中
  • 使用Coordinate Tools 下面的 Mirror、Rotate、Translate 工具编辑选中的原子。该操作将应用到所有映像或者选中映像

设置并运行 NEB 计算

本章中学习如何设置并运行交换扩散过程的 NEB 计算。直接跳跃扩散过程与此类似。

1,点击按钮,将 “NEB: initial.nc final_exchange.nc” 送入到 Script Generator

2,在 Script Generator 中,将 Global IO 面板中的Default output file 名字改为 “NEB_exchange.nc”

3,将如下内容通过双击屏幕左侧 Blocks 面板里面对应的图标将其添加到 Script 栏:

4,双击 Script 面板中的 New Calculator,并修改如下参数:

5,双击 Script 面板中的 Optimize Geometry,并参照下图设置参数:

6,点击 按钮将生成的脚本送入 Job Manager,保存脚本名为 “NEB_exchange.py”

7,在 Select Machine 窗口,确保 Machine 下拉菜单选择的是 Local,然后按 OK

8,在 Job Manager 中,确保脚本 “NEB_exchange.nc” 被选中,之后点击 Run Queue 按钮启动计算。该计算只需要几秒即可完成。当计算结束后,关闭 Job Manager 并会到VNL 主窗口。

提示

为了快速得到演示结果,这里选择了使用经验力场 ATK-Classical 计算能量和力并进行结构优化。实际研究中可以根据体系的特性和大小选择ATK-DFT、ATK-SE(Slater-Koster)等其他方法。也可以将结构导出使用 VASP 进行计算。

分析结果

1,交换和直接跳跃两种扩散过程的 NEB 计算都完成之后,两个新的文件出现在 VNL 主窗口的 LabFloor 面板。本文中,二者分别名为 “NEB_exchange”“NEB_jump”

2,打开 “NEB_exchange” 文件,并选择 “gID001”,该文件包含优化之后的交换扩撒的 NEB 轨迹。之后点击屏幕右边的 Movie Tool

3,类似的打开 “NEB_jump”,选择其 “gID001”并点击屏幕右边的 Movie Tool

4,通过对比 Movie Tool 中的两个能垒(见下图),可以看到交换扩散到能垒和直接跳跃扩散能垒分别为 0.589eV0.928eV,这是与实验一致的[1]。与更精确的 DFT 计算结果 [2]也是一致的。本例中力场模拟得到交换扩散过程在能垒上优于直接跳跃过程 0.334eV

计算得到的交换扩散过程能垒

计算得到的直接跳跃扩散过程能垒

注意:通过 AKMC方法 计算得到得到的结果精确地与此一致,该方法并不需要知道体系的势能面的任何信息。

结论

通过本文的演示,学习了使用ATK-ClassicalVNL图形界面设置、计算分析了Pt吸附原子在Pt(100)表面的两种不同扩散路径。结果与DFT计算一致[2]:力场计算预测交换扩散过程在能量上优于直接跳跃扩散的方式。如果希望使用DFT模块重复本案例,可以直接与文献报道的DFT结果[2]对比。

参考文献