示例 06-1:Si 的 HSE06 自洽与能带(零权重 k 点法 + KPOINTS_OPT 法)¶
目的¶
- 从 PBE 波函数出发完成 HSE06 自洽,读取 HSE06 带隙;
- 用两种正确方法计算 HSE06 能带:零权重 k 点法(所有版本)与 KPOINTS_OPT 法(VASP ≥ 6.3);
- 体会杂化泛函的计算代价,以及
HFRCUT = -1、PRECFOCK、NKRED的作用。
对应教程:第6章 杂化泛函与 meta-GGA(§4–§6)。
文件说明¶
| 路径 | 说明 |
|---|---|
POSCAR |
Si 原胞(a = 5.47 Å,建议换成你优化得到的值) |
0-pbe-scf/INCAR, KPOINTS |
PBE 自洽,Γ 中心 6×6×6,NBANDS=16,写出 WAVECAR 和 IBZKPT |
1-hse-scf/INCAR, KPOINTS |
HSE06 自洽:LHFCALC、HFSCREEN=0.2、ALGO=Damped、PRECFOCK=Normal、HFRCUT=-1,从 PBE WAVECAR 开始 |
2-hse-band-zero-weight/INCAR.pbe, INCAR.hse, KPATH, make_zero_weight_kpoints.py |
零权重法:脚本把 0-pbe-scf/IBZKPT 与 KPATH 中的路径(每段 12 点,权重 0)拼成 KPOINTS;先用同一 KPOINTS 跑 PBE,再跑 HSE06 |
3-hse-band-kpoints-opt/INCAR, KPOINTS, KPOINTS_OPT |
KPOINTS_OPT 法:规则网格 + 路径(每段 30 点) |
job.slurm |
依次运行步骤 0–3,可用 STEPS 变量只运行其中几步 |
POTCAR |
不提供,在本目录生成一次 |
运行步骤¶
cd VASP/examples/06-hse06-band-si
cat $VASP_PP_PATH/potpaw_PBE/Si/POTCAR > POTCAR
sbatch job.slurm # all steps 0 1 2 3
# or only PBE + KPOINTS_OPT method:
sbatch --export=ALL,STEPS="0 3" job.slurm
手动运行零权重法的关键命令:
cd 2-hse-band-zero-weight
cp ../POSCAR ../POTCAR .
python make_zero_weight_kpoints.py --ibzkpt ../0-pbe-scf/IBZKPT --kpath KPATH --out KPOINTS
cp INCAR.pbe INCAR && mpirun -np 16 vasp_std > vasp_pbe.out
cp INCAR.hse INCAR && mpirun -np 16 vasp_std > vasp_hse.out
也可以用 vaspkit -task 251 或 sumo-kgen --hybrid(目录中需有 IBZKPT)代替 make_zero_weight_kpoints.py。
预期结果 / 如何检查¶
grep -A12 "Band structure" 1-hse-scf/OUTCAR # HSE06 gap on the 6x6x6 mesh (VASP >= 6.4.3)
grep -c "F=" 1-hse-scf/OSZICAR # should be 1 (single point)
grep "FFT grid for exact exchange" -A2 1-hse-scf/OUTCAR # grid chosen by PRECFOCK
作图:
import py4vasp
calc = py4vasp.Calculation.from_path("3-hse-band-kpoints-opt")
calc.band.plot("kpoints_opt")
print(calc.bandgap.fundamental())
零权重法的结果需要剔除有权重的网格点后作图:vaspkit -task 252、sumo-bandplot 或本仓库 python ../../scripts/plot_band.py -h。
- HSE06 的 Si 间接带隙应在约 1.1–1.3 eV(文献量级;实验约 1.17 eV),明显大于 PBE 的约 0.5–0.6 eV。
- 两种方法得到的能带应基本重合(零权重法每段点数较少,曲线更粗糙)。
注意事项¶
- 不要对杂化泛函使用
ICHARG = 11。 - PBE 与 HSE 计算的
ENCUT、NBANDS、k 点集合必须一致,WAVECAR 才能复用;这也是零权重法要在本目录先跑一次 PBE 的原因。 - 零权重法不要从已收敛的 HSE WAVECAR 开始(自洽可能在零权重点收敛之前停止)。
- 打开
NKRED = 2前先比较带隙变化;金属与掺杂体系不要用。 - 6.6.x NVIDIA GPU 版本上杂化泛函 +
ALGO = Normal有随机崩溃的已知问题,本例使用ALGO = Damped。 - 计算代价:步骤 1/3 比 PBE 慢一到两个数量级,步骤 2 更贵(零权重点每个电子步都要计算)。