CP2K入门教程-8:振动频率分析
用CP2K程序进行振动频率分析,首先需要设置RUN_TYPE为VIBRATIONAL_ANALYSIS。输入文件例子如下:&GLOBAL
PROJECT cp2k
RUN_TYPE VIBRATIONAL_ANALYSIS
PRINT_LEVEL medium
&END GLOBAL
然后,设置频率分析部分输入文件
&VIBRATIONAL_ANALYSIS
DX 0.01
INTENSITIES F
NPROC_REP 128
FULLY_PERIODIC T
&END VIBRATIONAL_ANALYSIS
CP2K计算频率使用的是数值算法,即对每个原子向+x, -x, +y, -y, +z, -z 6个方向分别进行移动,用数值的方法得到能量的二阶导(即力常数),然后计算频率。所以,如果有N个原子要进行移动,总共要进行6N+1次SCF收敛计算。
关键词
设置示例
解释
DX
0.01
每次移动原子时的步长
INTENSITIES
F
是否计算红外强度。如果设置为T,需要在DFT部分进行偶极矩的计算(关键词MOMENTS)。
NPROC_REP
128
并行计算频率时,每个REPLICA使用的CPU数目
FULLY_PERIODIC
T
避免从Hessian矩阵中消除转动模式。开启该关键词后,对于N个原子的体系会计算出3N-3个频率,其中包含了3个转动自由度。
要计算部分原子的振动频率,有两种办法。一种是直接在MOTION中使用CONSTRAINT对不需要进行频率分析的原子进行固定。一种是使用MODE_SELECTIVE模式。例子如下:
&VIBRATIONAL_ANALYSIS
NPROC_REP 16
DX 0.01
INTENSITIES T
&MODE_SELECTIVE
ATOMS 82 83
INITIAL_GUESS ATOMIC
EPS_NORM 1.0E-5
EPS_MAX_VAL 1.0E-6
&INVOLVED_ATOMS
INVOLVED_ATOMS 82 83
&END INVOLVED_ATOMS
&END &MODE_SELECTIVE
&END VIBRATIONAL_ANALYSIS
上面的例子中,对82 和83两个原子进行了振动频率分子。需要注意的是,使用这种方法计算频率,使用的REPLICA数目不能太少。REPLICA的数目是这样计算的:NREP=总CPU数目/NPROC_REP。上述输入文件,如果使用的总CPU数目为64,则共有NREP=4,即共有4个REPLICA。如果只使用一个REPLICA,使用MODE_SELECTIVE算法计算频率时,就会只跟踪一个频率,无法得到正确的结果。
另外,使用CP2K程序计算一个优化好的结构式的频率时,也常会出现多个虚频。这并非是几何优化出现了问题,而是CP2K计算使用GTH赝势时存在的一个问题。详细内容请参考:
https://groups.google.com/forum/?fromgroups#!topic/cp2k/DVCV0epl7Wo
解决方案有四种:
-
使用NLCC赝势。https://arxiv.org/abs/1212.6011 不过,NLCC赝势很不完整,只有B-Cl的元素有,且只提供了PBE泛函的赝势。
-
增大CUTOFF,使用600 Ry以上的CUTOFF。
-
在XC_GRID部分使用平滑参数SMOOTING。不推荐使用。
-
在XC_GRID部分使用USE_FINER_GRID。加上这个参数后,XC部分的格点的精度提高为4*CUTOFF。
评论