本教程演示如何使用 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 原子,作为 NEB 计算的初始结构。 1,打开 VNL,并点击 Create New 创建一个新的 Project,将其命名(这里命名为Pt_Pt100_NEB),选择文件夹用来存储该 Project 相关信息。点击 OK,并点击 Open 开始这个 Project。
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 轨迹的末态结构的时候,需要选取 “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 计算。直接跳跃扩散过程与此类似。
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.589eV 和 0.928eV,这是与实验一致的[1]。与更精确的 DFT 计算结果 [2]也是一致的。本例中力场模拟得到交换扩散过程在能垒上优于直接跳跃过程 0.334eV。
注意:通过 AKMC方法 计算得到得到的结果精确地与此一致,该方法并不需要知道体系的势能面的任何信息。
通过本文的演示,学习了使用ATK-Classical和VNL图形界面设置、计算分析了Pt吸附原子在Pt(100)表面的两种不同扩散路径。结果与DFT计算一致[2]:力场计算预测交换扩散过程在能量上优于直接跳跃扩散的方式。如果希望使用DFT模块重复本案例,可以直接与文献报道的DFT结果[2]对比。