专栏名称: 研之成理
夯实基础,让基础成就辉煌;传递思想,让思想改变世界。“研之成理科研平台”立足于科研基础知识与科研思想的传递与交流,旨在创建属于大家的科研乐园!主要内容包括文献赏析,资料分享,科研总结,论文写作,软件使用等。科研路漫漫,我们会一路陪伴你!
目录
相关文章推荐
募格学术  ·  师范大学,冲刺申博! ·  2 天前  
国际新闻界  ·  《国际新闻界》2025年第1期目录 ·  4 天前  
51好读  ›  专栏  ›  研之成理

理论计算干货:自洽计算的K点选取 和 KPOINTS 文件生成

研之成理  · 公众号  · 科研  · 2019-12-02 07:00

正文

1. VASP的KPOINTS文件


在 VASP 5.1.12 以上版本中,KPOINTS 文件可以缺省,k 点信息写在 INCAR里,但是不建议这么做:


一是因为 INCAR 里的 K 点只能设置每个 K 点之间的间距,不好直接指定 K 点的个数。二是数年来人们已经习惯了在 KPOINTS 里设定K点,一些 VASP 的插件有完善的生成 KPOINTS 的功能,用起来很方便。

在 INCAR 中设置 K 点是 KGAMMA,和 KSPACING 这两个关键词,一般用不到,(因为用 VASPKIT 也可以做同样的事情)。 KGAMMA 是控制生成 gamma 中心 K 点,KSPACING 是控制倒空间的K点和间隔距离,单位是 Å -1

K 点是 VASP 计算中的关键参数,一般计算要在第一布里渊区均匀撒点,能带计算在高对称点连线路径上取值。K 点的密度由 KPOINTS 决定,KPOINTS 取点越多,包含到计算里的信息越多,计算结果就要准确。VASP 提供的自动取 K 点的方法有两种:

1. Monkhorst-Pack grids
2. Gamma centered Monkhorst-Pack grids
https://cms.mpi.univie.ac.at/vasp/vasp/Automatic_k_mesh_generation.html

原子分子体系有孤立的确定的能级结构。 而晶体在不同的 k 点上有不一样的能级结构。 晶体在不同的方向上的势能是不一样的,且周期性无限重复。 所以才有了 band structure (能带图),就是由一个一个的 k 点的能级信息拼接成的,比如 Γ 点计算得到的就是图中红线一条线上的数据,要计算其他k点的数据也要在其他的 k 点上解 Kohn-Sham 方程。



2. KPOINTS文件形式


1
2
3
4
5
Automatic mesh
0 ! number of k-points = 0 ->automatic generation scheme
Gamma ! generate a Gamma centered grid
4 4 4 ! subdivisions N_1, N_2 and N_3 along recipr. l. vectors
0. 0. 0. ! optional shift of the mesh (s_1, s_2, s_3)
一共 5 行, 需要改的只有第 4 行
第一行,名字可以随便写,但是必须有。
第二行,0 代表 VASP 根据我们的要求自动产生 K 点。
第三行,Gamma 中心的 Monkhorst-Pack grids。
第四行,在倒格矢的三个方向上取 K 点的数目。
1 1 1 # 1×1×1 意思是在倒格矢a,b,c方向上都只取一个k点,一共1个k点
3 3 1 # 3×3×1 意思是在倒格矢a,b方向上都取3个k点,c方向上取一个,一共 9 个
8 8 8 # 8×8×8,一共 512 个 k 点。
第五行,shift 的值,Gamma center 的 K 点就相当于 MP 方法 shift 了 0.5 0.5 0.5。


实际计算由于晶体的对称性会减除一大部分K点,比如算 GaAs 的 primitive cell 计算,在输出文件 IBZKPT 的第二行可以看到实际计算的 K 点数 共 29 个。这些 K 点称为 irreducible kpoints (不可约 k 点)。每个不可约 K 点的权重是相同对称性 K 点的个数。


KPOINTS 的建议取值下图, 每个晶格矢量的长度乘以这个方向上的 k 点数。 注意要测试收敛性。

比如我要算一个绝缘体,a,b的晶胞长度为 5 Å,c 的长度为 15 Å,则 K 点取 3 3 1。


d区金属, ka ~ 30 Å
普通金属, ka ~ 25 Å
半导体, ka ~ 20 Å
绝缘体, ka ~ 15 Å


以上建议是要严格遵守的嘛? 不是!


读文献会发现,一些高水平文章诸如 Science,Nature 上仍然用着很糙,不精确的计算标准。一是因为计算机水平达不到,二是催化计算中我们关心的是相对能量,只要保持计算精度一样,往往可以误差抵消,定性勉强能用。

举例:对于正交的晶系(a=b=g= 90 o )用 POSCAR 中的晶格矢量,也就是下图中红框内的值,每一行代表一个基矢,取模,然后取倒数。这三个倒数的比值 就是三个方向上 k-points 密度的取值。



所以这个时候 k-points 有几种选择,
3 3 2,
4 4 3,
6 6 4,
7 7 5,
都是可以的,根据晶体的类型和所需要的计算精度选择。


3. 更方便的取K点的方法,VASPKIT


我们只提前需要准备好一个 POSCAR 文件,运行

1
2
3
4
5
VASPKIT
1
102(产生自洽计算所用的KPOINTS文件功能)
2 (1:用MP方法;2:用Gamma中心的MP方法)
0.04 (倒格子中k点间距,单位是Angstrom-1,一般计算使用0.04,精确计算0.03或0.02)


这时候就自动生成 KPOINTS 了,还顺带生成了 POTCAR 和 INCAR 文件。比如:

1
2
3
4
5
K-Mesh Generated with KP-Resolved Value … : 0.030
0
Gamma
12 12 1
0.0 0.0 0.0


再举个例子:
primitive cell 的 θ ">θ -Al 2 O 3 a = b = 6.14 Å , c = 5.67 Å 。底心单斜。

这个 非正交体系 ,倒格矢长度和实空间晶格常数不满足反比关系,所以要保证 K 点密度在各个方向长度相等,计算 ka, kb, kc ~ ** 埃的规则在这里就不完全适用了。


这个时候最好的做法是用 VASPKIT 产生 KPOINTS,在第一布里渊区均匀撒点,或者是在 INCAR 里设置 KSPACING 让 vasp 自己调整 a b c 方向上 k-points 密度。

1
2
3
4
5
6
7
Al4 O6
1.0
6.1415114403 0.0000000000 0.0000000000
-5.4373541295 2.8554058978 0.0000000000
-1.3346698477 0.3291362294 5.5013695377
Al O
4 6

a = 6.14151, b = 6.14151, c = 5.67052 按照 k a ~ 15 埃的规则,算出来 k 点大约取 3 3 3 即可。 但是用 VASPKIT 真正的算倒空间倒晶格矢量比例得到的推荐值是 7 7 4。

注意事项:
  1. 该 KPOINTS 文件里面,共有 5 行,  # 或 !后面为注释。
  2. 第三行,VASP 只认第一个字母 g, 大小写均可。也可以写成 Gamma,Google。这是 VASP 关键词的一个特点,后面我们还会碰到好多关键词,只需要些首字母即可。
  3. 第四行,为生成对应数目的K点,建议使用 VASPKIT 生成。
  4. 第五行是,k 点的 shift 值,一般不需要调,0 0 0 即可。
  5. 对于原子或者分子的计算,K 点取一个 gamma 点(1 1 1)就够了,多的 K 点是能提高周期性镜像分子间的相互作用精度,这部分能量是我们不想要的。即:对于含有真空层的体系,在真空层的方向上永远只使用一个 K 点。多余的K 点只会增加真空层两边体系的相互作用的精度,而这一部分是我们不想要的。
  6. Gamma 点在 VASP 计算中非常重要,建议是,永远用 gamma centered,也就是第三行保持G不变。比如 ISMEAR=-5 或者六方晶系只能用 Gamma center 的方法,不能用 MP。(有文献报道对于计算孤立缺陷体系用 MP 方法,不包含 Gamma 点可以减少 defect-defect interaction)
  7. 在文章计算说明部分应该给出所使用的 k 点数量,因为如果不这样做,就很难对这些结果再现。
  8. 增大超晶胞的体积减少了达到收敛时所需要的 k 点数量,因为实空间体积的增加对应于倒易空间体积的减少。只含有一个gamma 点的计算可以使用vasp_gam 版加速计算。
  9. 如果计算中涉及不同体积的超晶胞,并需要对其结果进行比较,则在倒易空间中选定k点时,需要使不同超晶胞倒易空间中的k点密度大体相同,这是使这些计算在k空间中具有类似的收敛精度的有效方法。说白了,a×ka ≈ b×kb ≈ c×kc,或者让 VASPKIT 均匀撒点。


4. 倒易空间与布里渊区



由此可见,在夹角一定的情况下,***a*** 1 和***b*** 1 的模成反比关系。(** 也就是说在实空间某一个边很长的晶体,相应在该方向上取得 K 点数就应该越少;反之越多。**)


每个晶体结构都将由两套晶格与之相联系:一套是正晶格(或称正格子),另一套是倒晶格(或称倒格子)。第一性原理计算程序在做计算的时候通过傅里叶变换,在倒易空间中运算

一般解 Kohn-Sham 方程在倒空间完成,KS 方程里并不是所有项都在倒易空间求解,电子动能和 hartree 势能更容易在倒空间算,交换相关能更容易在实空间算。VASP 提供了一个选项可选赝势的非局域项在实空间投影还是倒空间投影(LREAL = .FALSE. 或者 Auto)。


5. 布里渊区


布里渊区是倒格子空间中的 Wigner-Seitz primitive cell (维格纳塞茨原包)。第一布里渊区将中间格点和其所有相邻格点连接起来,在这些连线上做垂直平分面所围成的最小的体积。

二维体系的第一布里渊区例子:


三维体系的第一布里渊区的例子:


第一布里渊区包含了体系的所有性质,要精确求解体系的性质,需要在布里渊区中对倒空间简约波矢 k 做积分。


但是,在倒易空间中不同的 k 点需要独立求解,所以,比较实际的做法就是在第一布里渊区均匀撒点,然后对 不可约的 k 点做权重加和 即可。


VASP 中所谓的取 k 点 (KPOINTS),就是指这一过程。显然,k 点取得越密,包含的倒易空间中的信息就越多,结果也越精确。


征稿启事:
研之成理 将对理论计算知识专栏进行大规模的扩充 理论计算模块征稿的内容多元化,其中包括名师志和理论计算小知识。 名师志 所介绍的对象主要针对国内外活跃的科研工作者,研究领域不限; 为避免重复,研之 成理已经推送过的学术名人不再接受投稿(查询已推送内容,请在公众号回复关键词:名人堂)






请到「今天看啥」查看全文