用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赝势。http://arxiv.org/abs/1212.6011 不过,NLCC赝势很不完整,只有B-Cl的元素有,且只提供了PBE泛函的赝势。
-
增大CUTOFF,使用600 Ry以上的CUTOFF。
-
在XC_GRID部分使用平滑参数SMOOTING。不推荐使用。
-
在XC_GRID部分使用USE_FINER_GRID。加上这个参数后,XC部分的格点的精度提高为4*CUTOFF
本文转载自zevan,转载目的在于知识分享,本文观点不代表V-suan云平台立场。
原创文章,作者:菜菜欧尼酱,如若转载,请注明来源华算科技,注明出处:https://www.v-suan.com/index.php/2023/12/01/747457ee5f/