示例 17-3:含空位的 Si 超胞能带反折叠(easyunfold)¶
目的¶
- 把 53 原子 Si 空位超胞的能带"反折叠"回原胞布里渊区,得到有效能带结构(EBS / 谱函数);
- 掌握 easyunfold 的
generate→ VASP 非自洽(保留 WAVECAR)→unfold calculate→unfold plot流程; - 认识带隙中的空位缺陷态在 EBS 中表现为几乎无色散、谱权重较弱的平带。
对应教程:第17章 高级电子结构(§5)。
文件说明¶
| 文件 | 说明 |
|---|---|
POSCAR_prim |
Si 原胞(a = 5.431 Å,实验值),也是能带路径所对应的晶胞 |
KPOINTS_band |
原胞的 L–Γ–X–U|K–Γ 路径(Line-mode,Reciprocal,每行最后一个记号是标签,easyunfold 可直接读取) |
make_vacancy.py |
用 ASE 生成 3×3×3 超胞并删去一个原子,写出 POSCAR_sc(53 原子);超胞矩阵为 diag(3,3,3) |
INCAR_scf / KPOINTS_scf |
超胞自洽,Γ 中心 3×3×3 |
INCAR_band |
ICHARG = 11、NBANDS = 144、LWAVE = .TRUE.、LORBIT = 11 |
job.slurm |
生成结构与 k 点 → 自洽 → 非自洽 → 反折叠与作图 |
POTCAR |
不提供:cat $VASP_PP_PATH/potpaw_PBE/Si/POTCAR > POTCAR |
运行步骤¶
cd VASP/examples/17-unfold-si-vacancy
pip install easyunfold ase
cat $VASP_PP_PATH/potpaw_PBE/Si/POTCAR > POTCAR
python3 make_vacancy.py # -> POSCAR_sc
easyunfold generate POSCAR_prim POSCAR_sc KPOINTS_band --matrix "3 3 3" # -> easyunfold.json, KPOINTS_easyunfold
grep -c . KPOINTS_easyunfold # 超胞需要计算的 k 点数(约等于行数)
sbatch job.slurm
后处理(作业脚本已包含):
easyunfold unfold calculate band/WAVECAR # 计算谱权重,写入 easyunfold.json
easyunfold unfold plot --eref <E-fermi> --emin -4 --emax 4 --out-file unfold.png
easyunfold unfold plot --help # 更多作图选项(色图、DOS 叠加等)
预期结果 / 如何检查¶
unfold.png中能带沿原胞的高对称路径展开,形状与完美 Si 原胞能带(第5章)基本一致,但谱线有展宽、权重小于 1;- 带隙中出现与空位相关的平坦、弱权重的态(具体能量位置依赖于是否弛豫、超胞大小和泛函);
- 若整张图几乎没有权重或形状完全不对,多半是超胞矩阵错误或 KPOINTS 没有用
KPOINTS_easyunfold。
注意事项¶
- 本例为节省时间使用未弛豫的空位结构;正式研究应先用
ISIF = 2弛豫原子位置(晶胞不变),弛豫后的 CONTCAR 作为POSCAR_sc; WAVECAR对 53 原子、数百个 k 点可达数 GB,算完反折叠后可删除,绝不要提交到仓库;- 用
vasp_gam或vasp_ncl生成 WAVECAR 时,unfold calculate需要分别加--gamma或--ncl; - 杂化泛函不能用
ICHARG = 11:用easyunfold generate ... --scf-kpoints IBZKPT --nk-per-split N生成带零权重 k 点的自洽输入; - 同样的计算也可以用 vaspkit 281–285(需要
KPATH.in与TRANSMAT.in)或 VaspBandUnfolding 完成。