Ex75 过渡态的计算(六)
过渡态计算INCAR的设置
vasp的过渡态任务所需要的五个文件:INCAR, KPOINTS, POSCAR, POTCAR以及脚本。我们已经学习了三个,还差INCAR和脚本,这一节,我们主要介绍INCAR中参数的设置。很多读者都没有接触过渡态的计算,总是幻想着过渡态是如何地高大上,令人可望而不可即。其实很简单,记住前面我们说的那句话,过渡态的计算无非就是优化一个特殊的结构而已。既然是优化结构,那么我们就可以在前面结构优化的INCAR基础上稍加修改,让它变成过渡态的INCAR即可。
修改一共有以下几个重要的部分:
第一部分
LCLIMB = .TRUE.
告诉vasp你要开始使用CI-NEB方法算过渡态了。
注意1: LCLIMB = .TRUE
这个写法是错的,因为TRUE后面少了个点!LCLIMB = T
这个写法是可以的。
第二部分
IMAGES = 8
告诉vasp,你插了8个点。VASP不是智能的,根据目录下文件夹的数目自动帮你数一下插点的个数,我们要自己设置一下。
注意2:INCAR中IMAGES的数目和实际的不符,这是很多人常犯的错误。比如插了8个点,INCAR中却是IMAGES= 4
,这会导致VASP只读取00到05的结构,从而05到08文件夹中没有输出文件。
第三部分
过渡态计算的优化器(Optimizer)
CI-NEB是基于Force 也就是力来获取能量最低的反应路径。优化的方法有2个选择,一个是VASP默认的。一个是VTST中自带的。
3.1)VASP默认的优化方法:
IBRION =1 (quasi-Newton) 和3 (quick-min) 是基于力的优化方法。一般来说,如果你感觉自己插的点基本上就是反应的路径了,可以使用IBRION= 1。如果你的初始和末态结构不是很理想,插的点也是马马虎虎,那么3则是一个很好的选择。IBRION选择完了,我们还要设置一个合理的POTIM。个人经验0.1-1.0之间都是可以接受的。
所以:使用VASP自带的优化器:
IBRION = 1 或者3
POTIM = 取个合理的数值。
3.2)VTST中也自带了一些基于力的优化方法。
http://theory.cm.utexas.edu/vasp/optimizers.html#optimizers
使用VTST自带的优化方法,我们先要关闭VASP自带的,加下面2个参数。
1 | IBRION = 3 |
然后你就可以通过IOPT来选择自己喜欢的了。下面红色部分是官网的介绍:
1 | Optimizer input parameters |
注意:如果你已经打算用VTST自带的优化器,那么IOPT =0 不要选。
因为0对应的是VASP自带的。使用VTST的这个前提是我们把VASP的优化器给关掉了。但你关掉后,又设置IOPT=0,这是一个自相矛盾的选择,会导致计算过程中,你的原子纹丝不动,因为POTIM= 0.
所以,使用VTST自带的优化器:
IBRION = 3
POTIM = 0
IOPT = 1,2,3,4,7 有5个选择,官网建议使用1或者2。
第四部分
SPRING = -5 (这是默认值)
这个参数是干嘛的? 查阅一下VTST的官网,链接如下:
http://theory.cm.utexas.edu/vtsttools/neb.html
The nudged elastic band (NEB) is a method for finding saddle points and minimum energy paths between known reactants and products. The method works by optimizing a number of intermediate images along the reaction path. Each image finds the lowest energy possible while maintaining equal spacing to neighboring images. This constrained optimization is done by adding spring forces along the band between images and by projecting out the component of the force due to the potential perpendicular to the band.
什么意思呢?打个比方,这8个IMAGES就是一条绳上的8只蚂蚱,这些蚂蚱只能在一个方向上跳,在优化的时候,蚂蚱跳的太远,或者太偏就会被拉回来。拉回来的这个力就是通过SPRING这个参数来设置的。而我们之前的优化优化计算中,一条绳上只栓一只蚂蚱,该蚂蚱则比较自由,前后左右可以随便跳,并且没有人往回拽,这也是过渡态计算和普通优化所不同的地方。具体的理论部分,大家自行查阅NEB相关的参考文献。
如果你算的一个基元反应,两个原子之间的键很强,那么我们就需要将SPRING这个参数设置的更负一些,比如SPRING= -10,-15 或者-20。(不一定是-5的倍数,也可以是-6,-11 等。)如果你不知道怎么设置,一般来说默认值-5就足够用了。
第五部分
收敛相关的参数(粗算中的芝麻部分):
当然,粗算的时候,还要设置电子步以及以及离子步的收敛标准。
EDIFF = 1E-4 完全够用,不放心可以设置成-5;
NELM = 60 或者使用默认值40;
EDIFFG: 由于我们这一步是粗算,不用那么精确,EDIFFG = -0.05 完全够用了;
NSW: 个人经验,一般跑个50-60步左右就可以大体看个样子出来了,不用非得等计算达到EDIFFG设置的收敛标准。所以,前面的EDIFFG只是个形式罢了,这里我们先让这个参数占个坑,避免下一步提高精度计算的时候忘记这个参数。
小结一下:如果我们使用VASP自带的优化器,过渡态计算相关的参数如下:
1 | LCLIMB = .TRUE. # 用CI-NEB方法算TS |
如果你粗算了一下,跑了60步没有收敛,自己查看下各个IMAGES中的CONTCAR结构,感觉差不多就可以继续提高精度继续算了。如果感觉结构不是很好,那么就把各个IMAGES中的CONTCAR复制成POSCAR,然后继续再跑。后面大师兄会带着你一步一步跑,这个先不用着急。
总结:
这一节我们主要学习了过渡态计算中INCAR的一些基本设置。插点算过渡态时必须要有的参数如下:
1)告诉程序给我们要开始算过渡态了,并且指定插点的数目(这两个参数必须要写!!!)
LCLIMB = .TRUE.
IMAGES = 8
2)选择优化器(optimizer)
有VASP自带的和VTST自带的两种,大家选一种即可。
3)使用多大的劲控制蚂蚱不乱跳:
SPRING = -5 (默认值)
4)其他的参数跟前面结构优化的基本一致。
在准备工作中:第1)个是最关键的,不设置就不给你算。后面的2-4)由于都有默认的参数,即使不设置也不会导致VASP罢工的情况。但它们是一些经验性很强的参数,需要结合自己的体系具体设置。不过,经验性再强,目的也只有一个,就是过渡态要算准,所以一定要将能量和结构结合起来分析。尤其是结构,Linux用户多多使用类似
I) p4v 0*/CONTCAR
II) ase-gui 0*/CONTCAR
的命令将所有的结构一次性打开,分析结构变化和能量变化之间的关系。如果是在Windows下进行计算,自行搜索办法,或学习下一节中VASPkit + VMD
的可视化办法。