请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 7096|回复: 16

[VASP] vasp做过渡态经验<一>:NEB

[复制链接]

95

帖子

5

威望

677

eV
积分
872

Level 4 (黑子)

发表于 2017-12-5 22:32:40 | 显示全部楼层 |阅读模式
本帖最后由 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),然后输入命令:
  1. > nebmake.pl is.vasp fs.vasp 8
复制代码
最后一个8代表生成8个image,如果运行成功,会在当前文件夹生成编号为00-09的十个文件夹,每个文件夹包含一个POSCAR。编号00和09的文件夹对应is.vasp和fs.vasp。

之后把配置文件INCAR,KPOINTS,POTCAR放到当前文件夹。INCAR文件需要有以下字段:
  1. IMAGES=8
  2. LCLIMB = .TRUE.
复制代码

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脚本:
  1. > nebvtst.pl 8
复制代码
该脚本将输出NEB计算每一步每个image的信息:
  1. steps: 60
  2. images: 1    -314.70152    -0.20180     0.07899
  3. images: 2    -314.66766    -0.10107     0.08997
  4. images: 3    -314.21920    -0.03095     0.06242
  5. images: 4    -314.82366     0.36034     0.08089
  6. images: 5    -315.02908     0.17184     0.10215
  7. images: 6    -315.14834     0.10812     0.06171
  8. images: 7    -315.21699     0.05799     0.05365
  9. images: 8    -315.25374     0.02400     0.12696
复制代码
三列数字从左到右分别是能量,切线力和受力最大的原子所受的力(都小于EDIFFG时NEB计算就收敛了)。

其中最重要的是切线力,切线力为零的点就是过渡态。正常的NEB计算切线力应该是从负值到正值或者从正值到负值,并且能量应该先升高再下降。不满足这两个条件时意味着计算很可能出错了。

对于上面这个计算,可以看到image3的切线力很接近0了,也就意味着这个image跟过渡态很接近了,可以把它单独拿出来做个优化(IBRION=1),有可能就收敛到过渡态了。

如果所有的image的切线力都比0差很多,如下面这样:
  1. steps: 42
  2. images: 1    -314.71090    -0.19732     0.67034
  3. images: 2    -314.68128    -0.10245     0.18674
  4. images: 3    -314.22095    -0.23067     0.47518
  5. images: 4    -314.80703     0.24911     0.40551
  6. images: 5    -315.01767     0.16162     0.27819
  7. images: 6    -315.13853     0.10266     0.38136
  8. images: 7    -315.21270     0.04747     0.28035
  9. 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上场了。这就留做下一篇帖子来说了。







评分

参与人数 7威望 +1 eV +24 收起 理由
wrtgcn + 5 赞!
hakuna + 5 赞!
1234bubble + 2 非常感谢
alwens + 2 谢谢分享
wangyj + 5 期待后续
muxijiao + 5 赞!期待下一篇
sobereva + 1

查看全部评分

243

帖子

4

威望

1273

eV
积分
1596

Level 5 (御坂)

发表于 2017-12-6 10:14:45 | 显示全部楼层
Can you add a working example for demonstration?

95

帖子

5

威望

677

eV
积分
872

Level 4 (黑子)

 楼主| 发表于 2017-12-6 10:16:06 | 显示全部楼层
smutao 发表于 2017-12-6 10:14
Can you add a working example for demonstration?

加例子太麻烦,以后有空再弄

32

帖子

0

威望

566

eV
积分
598

Level 4 (黑子)

发表于 2017-12-7 11:08:25 | 显示全部楼层
如果一个cineb过程没有收敛是否不能查看力的变换过程及最后一步力的值?

95

帖子

5

威望

677

eV
积分
872

Level 4 (黑子)

 楼主| 发表于 2017-12-7 15:47:00 | 显示全部楼层
ztchem 发表于 2017-12-7 11:08
如果一个cineb过程没有收敛是否不能查看力的变换过程及最后一步力的值?

可以

368

帖子

0

威望

1351

eV
积分
1719

Level 5 (御坂)

发表于 2017-12-8 08:47:37 | 显示全部楼层
写的挺好的!对初学者应该很有帮助!
通常大家都是neb到底,然后做个频率验证一下。
你这里有句话没讲清楚,
“.....对于上面这个计算,可以看到image3的切线力很接近0了,也就意味着这个image跟过渡态很接近了,可以把它拿出来跑一个IBRION=1,有可能就收敛到过渡态了。”
你把切线力接近0的那个image拿出来,再IBRION=1,这是要单独优化吗?优化的话,要限制某些自由度吗?

95

帖子

5

威望

677

eV
积分
872

Level 4 (黑子)

 楼主| 发表于 2017-12-8 13:48:04 | 显示全部楼层
hakuna 发表于 2017-12-8 08:47
写的挺好的!对初学者应该很有帮助!
通常大家都是neb到底,然后做个频率验证一下。
你这里有句话没讲清 ...

跟NEB一样就行了

368

帖子

0

威望

1351

eV
积分
1719

Level 5 (御坂)

发表于 2017-12-8 20:04:33 | 显示全部楼层
sky 发表于 2017-12-8 13:48
跟NEB一样就行了

呃,那就不存在把它拿出来了
IBRION=1的话,还原回到VASP内置的拟牛顿优化方法了,你觉得它比henkelmann的LBFGS好使吗?

122

帖子

1

威望

509

eV
积分
651

Level 4 (黑子)

发表于 2017-12-15 16:38:53 | 显示全部楼层
好帖子,顶一下
233

1

帖子

0

威望

113

eV
积分
114

Level 2 能力者

发表于 2018-6-17 14:00:00 | 显示全部楼层
想请教下,几个image中有个切线力接近零之后,但是每个image的受力都很大为1.0左右,这样的image也可以直接拿那个切线力为零的image做dimer吗

286

帖子

0

威望

1201

eV
积分
1487

Level 4 (黑子)

真 掘墓者

发表于 2018-6-18 10:04:04 | 显示全部楼层
再萌新也不能教人家用NEB,过渡态一律使用CINEB,用NEB会经常被审稿人质疑,需要解释为什么用NEB而非CINEB
圣诞刨坟忙

4

帖子

0

威望

47

eV
积分
51

Level 2 能力者

发表于 2019-3-16 19:45:04 | 显示全部楼层
个人观点,我用VTST搜过渡态结果会很奇怪,后来经过人指点还是用VASP自带的CNEB工具才有所改善,我觉得VTST对于无关基团旋转处理的不好,举个简单的离子有些CH3CO+H→CH3CHO的甲基会存在旋转然后就跑偏了

2

帖子

0

威望

11

eV
积分
13

Level 1 能力者

发表于 2019-6-29 17:33:17 | 显示全部楼层
你好,我使用你的github上的程序。比如:nebinfo,就显示
/bin/env: python3: 没有那个文件或目录
tar:./*vasp 无法stat: 没有那个文件或目录。
请问怎么回事?

24

帖子

0

威望

746

eV
积分
770

Level 4 (黑子)

发表于 2019-6-29 21:07:00 | 显示全部楼层
Marineking 发表于 2019-6-29 17:33
你好,我使用你的github上的程序。比如:nebinfo,就显示
/bin/env: python3: 没有那个文件或目录
tar:./ ...

机器上没有装python3。输入python3 -V,看看是否显示出正确的python3版本号。一般centos默认安装的是python2,自行安装一个python3。

2

帖子

0

威望

11

eV
积分
13

Level 1 能力者

发表于 2019-7-1 14:13:06 | 显示全部楼层
fallleave 发表于 2019-6-29 21:07
机器上没有装python3。输入python3 -V,看看是否显示出正确的python3版本号。一般centos默认安装的是pyth ...

我装了python3了,输入python-V 显示 python 3.7.3
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2019-7-17 17:35 , Processed in 0.202173 second(s), 25 queries .

快速回复 返回顶部 返回列表