总能收敛到1 meV/atom以内了,K点测试就算通过了——这是VASP用户中最普遍的误解之一。能量对K点密度的收敛速度比电子结构快得多,当总能还在1 meV量级漂移的时候,能带可能还在0.1 eV量级变化。对于需要报告带隙到0.01 eV精度的项目来说,这个差距不容忽视。

一个简单的测试就能说明问题。用Si的PBE计算,从5×5×5的K点网格逐步加密到15×15×15:
| K点网格 | 总能 (eV/atom) | 带隙 (eV) |
|---|---|---|
| 5×5×5 | -5.4218 | 0.61 |
| 7×7×7 | -5.4230 | 0.58 |
| 9×9×9 | -5.4234 | 0.55 |
| 11×11×11 | -5.4236 | 0.54 |
| 13×13×13 | -5.4237 | 0.53 |
| 15×15×15 | -5.4237 | 0.53 |
总能从7×7×7开始就基本收敛了(变化<1 meV),但带隙从7×7×7到13×13×13还在持续变化,直到11×11×11以上才趋于稳定。如果只看总能收敛就停下,你的带隙可能差了0.04-0.05 eV——对Si来说这是约10%的相对误差。
金属体系更敏感。体心立方Fe的费米面附近态密度(DOS)对K点密度的要求在金属体系中出名的严格——用15×15×15可能还不足以精确描述费米面的细节。有些文献用了21×21×21甚至更高密度来保证磁矩和电子比热的收敛。
VASP 5.4之后引入了KSPACING参数,自动根据倒格矢长度生成K点网格。它的优势是:不管你的晶胞是立方还是斜方,KSPACING都能给出密度均匀的网格。对比之下,手动设置KPOINTS文件时如果只写一个K×K×K,对于a≠b≠c的晶胞实际上采样密度在三个方向上是不均等的。
KSPACING的推荐取值:
| 体系类型 | KSPACING (Å⁻¹) | 对应K点密度 |
|---|---|---|
| 绝缘体/大带隙半导体 | 0.4-0.5 | 低 |
| 常规半导体 | 0.25-0.30 | 中 |
| 窄带隙半导体 | 0.20-0.25 | 中高 |
| 金属 | 0.15-0.20 | 高 |
| 磁性金属 | 0.10-0.15 | 很高 |
但KSPACING也有局限。对于需要精确控制K点在倒空间分布的场合(比如计算能带时沿特定高对称路径),手动指定KPOINTS仍然不可替代。同时,KSPACING生成的网格在某些奇数网格(如1×3×5)可能不对称,需要在OUTCAR里检查最终生成的K点分布。
折中方案是:SCF计算用KSPACING做收敛测试确定最佳密度,能带/态密度计算手动写KPOINTS沿特定路径。
不是把K点从3×3×3一路加到21×21×21,那是暴力计算。有效率的做法是:
第一步:从KSPACING=0.5开始,每步除以√2。 序列是0.5 → 0.35 → 0.25 → 0.18 → 0.13 Å⁻¹。这个等比递进保证每次变化量递减,不会浪费计算资源。
第二步:监测总能和带隙两条收敛曲线。 单独看总能收敛不够。带隙(或费米能级处的DOS值)是更严格的判据。
第三步:确定收敛判据。 对于常规能带计算,带隙变化<0.02 eV即可接受;对于金属,费米能级处DOS变化<5%即可接受;对于需要报告带隙精度到0.01 eV的工作,带隙判据收紧到<0.005 eV,对应K点密度可能需要翻倍。
第四步:对收敛的网格做一次+1验证。 比如你认为11×11×11已经收敛,就用13×13×13验证:如果总能差<1 meV/atom且带隙变化<0.01 eV,确认收敛。
低维材料(2D/1D): 真空层方向的K点只需设为1——没有必要在真空方向采样。KPOINTS写成N×N×1(2D)或N×1×1(1D)。这个看似简单的规则被忽略的频率超乎想象——很多算石墨烯和MoS₂的文章,真空方向K点写成了和面内一样密,白白浪费了几倍的计算量。
超胞计算: 做了2×2×2超胞后,K点可以从原胞的8×8×8降到4×4×4——超胞的倒格矢缩小了对应倍数,K点密度的绝对分辨率保持一致。但如果超胞后仍然用原来的K点密度,问题也不大(精度更高),只是计算量不必要地增加了。
六方晶系: 对于hcp、wurtzite等六方结构,Gamma-centered网格(KPOINTS首字母为G)比Monkhorst-Pack(首字母为M)更适合——因为六方布里渊区的高对称点和Gamma-centered网格的分布更一致。选错的话能带收敛会慢一个数量级。
K点密度的选择在很大程度上决定了计算结果的可信度。科研学术网(https://www.keyanxueshu.com)VASP计算的标准化参数库和收敛测试模板,覆盖从晶体到低维材料的常见计算场景。