本文主要是介绍【VASP】KPOINTS文件介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【VASP】KPOINTS文件介绍
- 一、KPOINTS 的两种结构
- 第一种结构:(非对称)
- 第二种结构:(高对称)
- 二、关于KPOINTS设置的一些经验
- 三、KPOINTS的选取
前言
一、4个常用的输入文件INCAR、POSCAR、POTCAR、KPOINTS
INCAR: 计算任务类型是什么?怎么计算?
KPOINTS: 包含了倒易空间点网格的坐标和权重。
POSCAR: 包含元胞的原子坐标信息以及初始速度等信息。
POTCAR: 超软赝势或PAW势函数(有一个赝势库)。
一、KPOINTS 的两种结构
第一种结构:(非对称)
Auto
0
G
5 5 1
0. 0. 0.
- 第一行:注释
- 第二行:这个数字选项,按手册里提到的,可以认为0就是M-P方法,如果输入其他非零数字,就认为是选择其他的生成方法或者K点模式(即选几个k点)
- 第三行G表示的是以gamma点为中心生成网格,还有一种是原始的Monkhorst-Pack网格,又可以叫M点,二者的区别是M在G的基础上在三个方向平移了1/(2N)个单位,所以G点是M点的特殊情况;VASP只认第一个字母,大小写均可,所以Gamma可以写G,g,gamma,ga…,Monhorst可以写为M, m等。
- 第四行表示在xyz三个方向上生成对应数目的K点,本例是551,意思是在倒格矢a,b方向上都只取5个k点,c方向取1个k点,一共25个k点,441意思是在倒格矢a,b方向上都取4个k点,c方向上取一个,一共16个,K点的密度由KPOINTS决定,KPOINTS取点越多,包含到计算里的信息越多,但是经常有人拿不准K点数目怎么取,经常出错,所以在接下来会总结几个方法教大家怎么取K点
- 第五行表示shift的值, 即对所按网格分割产生的k点进行平移的量(这里不平移),一般都写成 0 0 0,一般不用改,Gamma center的K点就相当于MP方法shift了0.5 0.5 0.5。
第二种结构:(高对称)
line-mode generate k10 ! 10 intersections
Line-mode
rec
0 0 0 ! gamma
0.5 0.5 0 ! X0.5 0.5 0 ! X
0.5 0.75 0.25 ! W
Line1: 标题或注释行,无特别意义
Line2: 每对高对称点之间产生10个k点
Line3: 以字母L开头表示按line模式产生k点
Line4: 以字母R开头表示k点按倒格子坐标系
Line5: 每对高对称点的坐标。(共三对,表明沿着X-X-W计算能带)
二、关于KPOINTS设置的一些经验
第一是对称性。不同的晶体结构有不同的对称性,我们应该根据晶体结构选择合适的K点,这个在各种教材中已经给出了。不过手动选择K点只在能带计算的时候是必要的,在做优化和性质计算时我们通常选择自动撒点。
第二是K点分割,K点分割越密,计算的结果就越精确,而耗时也会更多,因此我们要寻找一个比较合适的分割。这个可以在你计算的时候做一个测试,就是从小到大选择不同的分割,然后比较静态计算时的总能变化,自己画一个曲线图,当总能变化范围小于0.2eV时,我们就认为不用再取更多的K点了。
一般来说,K点的选取跟晶胞的边长有关,边长越长,所需的K点就越少。如果是块体的单胞,K点的分割要取密一些,比如我们的TiO2单胞,K点分割121212就非常精确了。而如果我们将这个晶胞延xyz方向各扩展一倍,这时只要666足够。越大的晶胞,所需的K点数就越小。如果是表面,那么在某个方向有大于10A的真空层,那么这个方向上K点最多只须取2足矣。
“三个方向K点数和晶格常数乘积近似一致”,但一般乘积不要大于40,尤其是针对比较大的体系,否则会使得优化速度比较慢。
对于六角晶系 hexagonal 的结构,官网建议用 gamma centered,因为M平移之后,网格的对称性和晶胞的对称性会出现不匹配的情况,从而导致计算出错;
对于特别大的体系,也可以使用单Gamma点,只含有一个Gamma点的计算可以使用vasp_gam版加速计算
真空层一定不要加K点,用1即可,因为这个方向都没有结构,还加K点一来没意义,比如说二维体系在xy方向是周期性体系,z方向存在真空层,那么这个方向一定不要加K点,用1即可;
对于原子或者分子的计算,K点取一个gamma点就够了(1 1 1),也就是这个KPOINTS文件可以用于绝大多数的原子或者分子计算,不用再修改;但如果你要用 ISMEAR = -5 来计算,那么就需要把 1 1 1 改成 2 2 2或者3 3 3。
对于原子或者分子的计算,K点取一个gamma点(1 1 1)就够了,因为这些原子和分子不是周期性的,多的K点是能提高周期性镜像分子间的相互作用精度,但是这部分能量是我们不想要的。即:对于含有真空层的体系,在真空层的方向上永远只使用一个K点(真空层一定不要加K点,用1即可)。多余的K点只会增加真空层两边体系的相互作用的精度,而这一部分是我们不想要的。
三、KPOINTS的选取
- 方法1
使用官网建议的取值,每个晶格矢量的长度(a, b, c)乘以这个方向上的K点数目(k)。需要做收敛性测试,比如要算一个绝缘体体系, a,b的晶胞长度为6Å,c方向真空层15Å,K点就是3 3 1
-
方法2
把结构拖到MS里,点击CASTEP Tools图标,查看不同K点下,K点密度,一般密度在0.03附近最佳,对于正交晶系,晶格常数取模,然后取倒数。这三个倒数的比值就是三个方向上k-points密度的取值,例如,fcc Cu的KPOINTS则是7 7 7。
- 方法3
对于非正交晶系,倒格矢长度和实空间晶格常数不满足反比关系,所以用以上方法就不行了,这个时候用vaspkit可以产生所有体系的K点,vaspkit–102–1(M点),2(G点)–选择倒格子中k点间距,单位是Angstrom-1,一般计算使用0.04,精确计算0.03或0.02
- 方法4
一般晶格常数乘以K点数目大约在30~40之间即可,K点数目足够多的情况下,前面的问题都不是问题,但是不要过分大,导致撒点过于密集,浪费机时,过分小撒点过疏,计算不准;
注:正式计算前一定要做收敛性测试,测Kpoints和Ecut。
关于每个参数的详细含义可以参考VASP手册:
http://cms.mpi.univie.ac.at/wiki/index.php/The_VASP_Manual
这篇关于【VASP】KPOINTS文件介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!