计算化学公社

 找回密码 Forget password
 注册 Register
Views: 122865|回复 Reply: 78
打印 Print 上一主题 Last thread 下一主题 Next thread

[VASP] vasp做过渡态经验<二>:Dimer

  [复制链接 Copy URL]

103

帖子

5

威望

1012

eV
积分
1215

Level 4 (黑子)

Dimer是vasp内置的另一个强大的过渡态搜索方法,而且与NEB联用的时候有奇效。Dimer算法和NEB有一点相似,NEB是在初始态和末态之间插入image,然后计算image之间的切线力来寻找切线力为零的点。而Dimer在某种程度上可以看作是使用了两个靠的很近的image,程序会计算出这两个image之间的曲率,并沿着曲率增大的方向爬升,直到到达鞍点(此时曲率一定为负)。详解请看sob帖子:过渡态、反应路径的计算方法及相关问题

由于有且只有两个image,Dimer占用的计算资源要比NEB小不少,在做大体系过渡态搜寻的时候很有优势。并且Dimer不会像准牛顿法一样会陷入到局部极小值,导致原子受力无法收敛,因此用来做过渡态的优化同样也有巨大的优势。

Dimer的问题只有一个,就是需要一个好的初猜,一个接近过渡态的初猜构型。对于有经验的人来说,可以直接猜出构型然后跑Dimer。但这对于初学者来说比较困难,因此比较好的方法是先跑一个NEB,然后选取一个切线力接近零的image来跑Dimer。根据我的经验来看,一找一个准,效率比纯用NEB高很多。

在阅读以下内容之前,请先按照vasp官方pdf手册里dimer计算的例子做一遍。是pdf手册,online手册里没有计算的例子:Documentation

做Dimer的方法如下:

1. 选取一个好的初猜构型,可以是自己猜的,也可以是用NEB找出来的。然后像做过渡态频率分析一样,对关键性的原子做频率分析(IBRION=5),频率分析的精度不需要太高,像这样的参数足够了:
  1. ENCUT = 200
  2. EDIFF = 1E-06
  3. IBRION = 5
  4. NFREE = 1
复制代码
频率分析完成后会有一个或多个虚频,提取出来做成动画观看,找到需要的振动方向(目标化学键断裂/生成的振动方向)。可使用我的脚本Mabinogiysk/VASP-script
  1. > imagefreq.py
复制代码
会输出:
  1.    --------------------Processing--------------------
  2.                           freq23
  3.                           freq24
  4.        --------------------Done--------------------
复制代码
表示有编号23、24两个虚频,然后使用脚本:
  1. > freqmov.pl POSCAR freq23 freq24  30 0.6
复制代码
会生成freq23.xyz、freq24.xyz两个文件,用VMD打开即可观看振动动画。其中30是动画的帧数,0.6是振动的幅度的缩放系数。

找到需要的虚频之后另外新建文件夹,然后把POSCAR文件和freq文件复制过去,比如找到的是freq24,就把freq24也复制过去。注意更改优化的原子范围,做频率分析的时候可以只做其中关键的几个原子,剩下的都固定住。做dimer的时候可以全部原子一起优化,不仅限于频率分析的那几个原子。然后在新的文件夹里执行:
  1. > modemake.py freq24
复制代码
会生成一个MODECAR文件,或者也可以自己创建这个MODECAR文件,然后手动把振动频率复制粘贴过去。该文件格式在vasp官方的pdf手册里有。

做Dimer计算时切记不能少了MODECAR文件,没有这文件程序不会报错,而是会随机初始化一个搜寻方向。最后发现跑了大半天跑错了。

再放入KPOINTS、INCAR、POTCAR文件,其中INCAR需要加入以下参数:
  1.   IBRION = 3
  2.   POTIM = 0
  3.   ICHAIN = 2
  4.   DdR = 0.005
  5.   DRotMax = 10
  6.   DFNMin = 0.01
  7.   DFNMax = 1.0
复制代码
参数的意思官网上写的很清楚,请仔细阅读。

使用vtst tool的vasp会额外生成一个DIMCAR文件,跑dimer的时候要随时注意观察里面的参数:
  1. Step         Force        Torque        Energy     Curvature         Angle
  2.     1      10.66425       7.30318    -313.00133      -8.31593       3.93420
  3.     1      10.66425       4.60136    -313.00133      -8.89013      10.49022
  4.     1      10.66425       4.28355    -313.00133      -9.56912       5.58496
  5.     1      10.66425       2.25775    -313.00133      -9.97084       1.47304
  6.     1      10.66425       1.42447    -313.00133     -10.01435       0.72662
  7.     1      10.66425       1.01984    -313.00133     -10.01417       1.35954
  8.     1      10.66425       1.25866    -313.00133     -10.04105       0.58905
  9.     1      10.66425       0.74732    -313.00133     -10.10158       1.33623
  10.     2       3.92046       6.15419    -313.53353      -2.28795      12.73724
复制代码
需要注意的是Torque、Curvature和Angle. Torque是旋转的力的大小,Angle是旋转角度,力越大,旋转角度越大,Curvature是曲率。

一个正常的dimer计算,在每一个step里,例如上面的step1中,Torque和Angle应该越来越小,Curvature为负且越来越大。到step2时,由于原子移动了,这些值会重新变大,但在每一步里最终都应该收敛到1以下。刚开始的时候可能Torque会比较大,Curvature也会为正值。但如果跑到step5之后Torque和Angle依然不收敛或者Curvature是正值,那这个构型肯定出错了。
  1. 16       0.30555       0.76073    -314.21155      -5.02730       1.05284
  2. 17       0.34635       0.70113    -314.21341      -5.06017       1.07320
  3. 18       0.19482       0.80455    -314.21545      -4.88598       0.82223
  4. 18       0.19482       0.51358    -314.21545      -4.87067       0.67008
  5. 19       0.17114       0.78338    -314.21625      -4.77814       1.06994
  6. 20       0.13178       0.99078    -314.21700      -4.76946       1.34724
  7. 20       0.13178       0.63770    -314.21700      -4.71167       0.66381
  8. 21       0.09606       0.76383    -314.21723      -4.84227       1.29235
  9. 22       0.09606       ---        -314.21723       ---           ---
复制代码
这才是一个正确的dimer,刚开始Torque比较大,需要旋转很多次才能移动原子。快要收敛的时候基本上只会旋转一两次。






评分 Rate

参与人数
Participants 29
威望 +1 eV +102 收起 理由
Reason
qq-great + 1 谢谢
xaver2010 + 5 牛!
XIEH + 5 谢谢
zqian + 4
温吞水 + 2 谢谢分享
zhangshu + 5 谢谢
博尔赫斯 + 4 谢谢
phoenix + 3 谢谢分享
jiajj + 1 谢谢分享
zxn113355 + 3 谢谢
含光君 + 5 谢谢
Dawenxic + 3 好物!
xlw + 1 精品内容
CJW + 4
Jiongci-21 + 2 好物!
丁枫祝 + 5 谢谢
abcdedg + 2 赞!
谪仙俊 + 3 好物!
yiningyi + 3
坚持就完事了 + 1 谢谢

查看全部评分 View all ratings

1

帖子

0

威望

172

eV
积分
173

Level 3 能力者

79#
发表于 Post on 2025-3-17 18:20:11 | 只看该作者 Only view this author
DFT搬砖工 发表于 2020-6-25 12:08
**** 作者被禁止或删除 内容自动屏蔽 ****

您好,遇到了和您一样的报错,请问解决了吗

59

帖子

0

威望

4567

eV
积分
4626

Level 6 (一方通行)

78#
发表于 Post on 2025-3-5 09:28:17 | 只看该作者 Only view this author
本帖最后由 DavyHou 于 2025-3-5 09:37 编辑
CHLllooll 发表于 2025-3-3 10:41
您好,请问在做过渡态搜索的时候能否只是用dimer,因为我做的大体系跑CI-NEB实在是太慢了;使用dimer跑出 ...

如果你的始、终结构比较简单的话可以。如果始、终结构差距比较大的话可能有问题。因为在用CI-NEB计算时,有可能发现局域最小值,将一步反应转换为两步甚至多步反应,这样就有多个过渡态。对于复杂体系,只用dimer计算的话,可能只发现其中的一个过渡态。对于大体系,推荐使用低精度跑CI-NEB,确保能量曲线类似于开口向下的二次曲线而不是M形状后再跑dimer。

63

帖子

0

威望

1066

eV
积分
1129

Level 4 (黑子)

77#
发表于 Post on 2025-3-3 10:41:57 | 只看该作者 Only view this author
DavyHou 发表于 2017-12-26 21:55
Dimer_test$ python imagefreq.py
imagefreq.py:26: Warning: 'with' will become a reserved keyword in ...

您好,请问在做过渡态搜索的时候能否只是用dimer,因为我做的大体系跑CI-NEB实在是太慢了;使用dimer跑出来的过渡态有且仅有一个虚频并且虚频振动方向是反应物和产物之间,这个过渡态结果能否直接使用呢

14

帖子

0

威望

263

eV
积分
277

Level 3 能力者

76#
发表于 Post on 2025-2-10 20:31:05 | 只看该作者 Only view this author
小徐不激动 发表于 2023-6-7 13:54
求助,为什么我点开链接之后没有上面所说的脚本

有的脚本名字不一样

14

帖子

0

威望

263

eV
积分
277

Level 3 能力者

75#
发表于 Post on 2025-2-10 20:25:22 | 只看该作者 Only view this author
pyscf 发表于 2019-4-21 22:40
请问老师 除了wxdragon之外 能用来查看振动模式的还有什么趁手的工具?
谢谢

jmol也可以

2

帖子

0

威望

11

eV
积分
13

Level 1 能力者

74#
发表于 Post on 2024-12-29 11:37:34 | 只看该作者 Only view this author
您好,用之前你写的NEB和这个教程,可以计算结构相变的NEB吗,比如石墨烯转变为金刚石

1

帖子

0

威望

11

eV
积分
12

Level 1 能力者

73#
发表于 Post on 2024-12-9 17:17:47 | 只看该作者 Only view this author
勇敢牛牛冲啊 发表于 2024-12-3 10:47
您好,DIMCAR文件始终不产生,怎么回事,谢谢大神

可能是没有安装VTST或者你的输入文件没有启用DIMER算法。

1

帖子

0

威望

9

eV
积分
10

Level 1 能力者

72#
发表于 Post on 2024-12-3 10:47:15 | 只看该作者 Only view this author
您好,DIMCAR文件始终不产生,怎么回事,谢谢大神

55

帖子

0

威望

669

eV
积分
724

Level 4 (黑子)

71#
发表于 Post on 2024-9-27 17:28:01 | 只看该作者 Only view this author
请问dimer计算完之后,应该怎么做呢?直接把dimer的结果当成过渡态吗?

4

帖子

0

威望

23

eV
积分
27

Level 2 能力者

70#
发表于 Post on 2024-9-19 18:06:34 | 只看该作者 Only view this author
Elden、Lord 发表于 2024-2-13 18:22
老师,您的imagefreq.py 脚本在网站里找不到了,您能发给我一份吗? 不胜感激

仔细翻看这个帖子,所有问题的内容基本都已经回答过了

42

帖子

0

威望

336

eV
积分
378

Level 3 能力者

69#
发表于 Post on 2024-8-30 15:40:03 | 只看该作者 Only view this author
Traceback (most recent call last):
  File "./freqmov.pl", line 79, in <module>
    freq_pos, vibration = readFreq(freq_file)
  File "./freqmov.pl", line 36, in readFreq
    dcoordinates.append(np.array([line[3], line[4], line[5]]))
IndexError: list index out of range
出现这种错误是为什么呢?请教一下各位大佬

30

帖子

0

威望

178

eV
积分
208

Level 3 能力者

68#
发表于 Post on 2024-6-3 19:54:21 | 只看该作者 Only view this author
DavyHou 发表于 2017-12-26 21:55
Dimer_test$ python imagefreq.py
imagefreq.py:26: Warning: 'with' will become a reserved keyword in ...

这个脚本您还有吗,已经找不到了

21

帖子

0

威望

251

eV
积分
272

Level 3 能力者

67#
发表于 Post on 2024-2-13 18:22:59 | 只看该作者 Only view this author
老师,您的imagefreq.py 脚本在网站里找不到了,您能发给我一份吗? 不胜感激

44

帖子

0

威望

660

eV
积分
704

Level 4 (黑子)

66#
发表于 Post on 2024-1-27 16:19:38 | 只看该作者 Only view this author
Yun_ZL 发表于 2023-7-5 18:53
我有一个困惑,Dimer每一个step中旋转的次数必须要保证Torque和Angel收敛到1以下吗?当我的RotMax参数使用 ...

不是必须。初猜很差的时候很可能好多步Torque和Angle都不收敛

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-16 13:12 , Processed in 0.183614 second(s), 29 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list