|
本帖最后由 sky 于 2017-12-8 13:47 编辑
这算是一篇新手教学贴,简单谈一下做过渡态的经验,方便各种萌新入门。
NEB具体算法原理可见sob老师的帖子:过渡态、反应路径的计算方法及相关问题 - 思想家公社的门口:量子化学·分子模拟·二次元
最好使用vtst tool版本的vasp,里面有很多好用的算法,比原版vasp好用。编译方法见官网:Transition State Tools for VASP
以下NEB计算的方法只介绍vtst tool版本的vasp
NEB计算步骤如下:
1. 准备好初末构型的vasp文件: is.vasp,fs.vasp,以及脚本:nebmake.pl(来源:Transition State Tools for VASP),然后输入命令:
- > nebmake.pl is.vasp fs.vasp 8
复制代码 最后一个8代表生成8个image,如果运行成功,会在当前文件夹生成编号为00-09的十个文件夹,每个文件夹包含一个POSCAR。编号00和09的文件夹对应is.vasp和fs.vasp。
之后把配置文件INCAR,KPOINTS,POTCAR放到当前文件夹。INCAR文件需要有以下字段:
IMAGES代表有8个image,LCLIMB是是否开启climbing image方法,详见官网。
nebmake.pl会用线性插值的方法在is.vasp和fs.vasp之间插入若干个image,这会导致其中某些image的构型极度不合理,比如某两个原子重叠在了一起,需要调整。可以自己把01-08文件夹中的POSCAR文件下载下来,调整后再上传,但比较麻烦。推荐使用我写的脚本nebinfo(来源:Mabinogiysk/VASP-script),输入image的数量之后,会生成一个压缩包NEBINFO.tar.gz. 里面包含有每个image的vasp格式文件,gjf格式文件以及xyz格式的动画文件(可用VMD观看)。
调整好image之后在当前文件夹执行vasp命令就可以开始NEB计算。
刚开始算的时候,由于构型不合理,因此选用最速下降法会比较快,也不容易出错。此时选择IOPT=7,跑个二三十步之后再换用IOPT=1,当然也可以从头到尾只用IOPT=1.
对于复杂的过渡态,NEB计算需要非常多的image才能收敛。因此我一般只跑个五六十步,根据经验来看,后面基本不会有太大变化了。
之后可以采用vtst tool中的脚本来输出最后一步NEB的信息,如能量、切线力等,用法请到官网查找。也可以使用我脚本仓库中的nebvtst.pl脚本:
该脚本将输出NEB计算每一步每个image的信息:
- steps: 60
- images: 1 -314.70152 -0.20180 0.07899
- images: 2 -314.66766 -0.10107 0.08997
- images: 3 -314.21920 -0.03095 0.06242
- images: 4 -314.82366 0.36034 0.08089
- images: 5 -315.02908 0.17184 0.10215
- images: 6 -315.14834 0.10812 0.06171
- images: 7 -315.21699 0.05799 0.05365
- images: 8 -315.25374 0.02400 0.12696
复制代码 三列数字从左到右分别是能量,切线力和受力最大的原子所受的力(都小于EDIFFG时NEB计算就收敛了)。
其中最重要的是切线力,切线力为零的点就是过渡态。正常的NEB计算切线力应该是从负值到正值或者从正值到负值,并且能量应该先升高再下降。不满足这两个条件时意味着计算很可能出错了。
对于上面这个计算,可以看到image3的切线力很接近0了,也就意味着这个image跟过渡态很接近了,可以把它单独拿出来做个优化(IBRION=1),有可能就收敛到过渡态了。
如果所有的image的切线力都比0差很多,如下面这样:
- steps: 42
- images: 1 -314.71090 -0.19732 0.67034
- images: 2 -314.68128 -0.10245 0.18674
- images: 3 -314.22095 -0.23067 0.47518
- images: 4 -314.80703 0.24911 0.40551
- images: 5 -315.01767 0.16162 0.27819
- images: 6 -315.13853 0.10266 0.38136
- images: 7 -315.21270 0.04747 0.28035
- images: 8 -315.25231 0.02491 0.24664
复制代码 就只能把零两边的image,即image3和image4拿出来重新用nebmake.pl插值再跑NEB,直到找到切线力接近零的点。这是原始版本的vasp做过渡态的方法,如果编译了vtst tool工具,采用climbing image方法,即设置LCLIMB = .TRUE. 基本上跑一遍NEB之后都会有一个image的切线力接近零,避免了重复插值。因此用vasp做过渡态一定要编译上vtst tool.
另外经常遇到的情况是切线力接近零的image拿出来做优化之后,发现力总是降不下去。此时NEB方法就无能为力了,需要另一个强大的过渡态搜索方法Dimer上场了。这就留做下一篇帖子来说了。
|
评分 Rate
-
查看全部评分 View all ratings
|