ATOMKIT k 网格与高对称路径
生成匹配的VASP/ABACUS原胞、自洽网格和能带路径,附Si实际输入输出。
阅读本篇目录
本篇用 Si 的实际结构文件,演示 ATOMKIT 生成 VASP、ABACUS 的自洽 k 网格和高对称路径。重点是先把结构与路径统一到同一个晶胞,再准备相应计算输入。
1. 下载并先看图和数据#
下载结构、完整命令、实际输出和绘图工具,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd atomkit-kmesh-kpath
source ./env.sh
bash show-reference.sh
bash plot-results.sh
ls -lh plots/atomkit-primitive-mesh-kpath.png

采用 ATOMKIT Standard 0.9.0(2024-03-26)官方预编译程序,模块 atomkit/0.9.0,不是 PyPI 的同名项目。本篇运行的是结构与采样文件生成,不启动 VASP、ABACUS 或 DFT。独立结构/路径检查和绘图使用已有 ASE 3.29.0、spglib 2.7.0、SeeK-path 2.2.2、NumPy 2.3.5 环境;不需要额外安装软件。
输入 POSCAR-Si8 是晶格常数 5.43 Å 的 Si 常规胞,8 原子。原生路径流程识别空间群 227,并生成 2 原子的原胞:
Si primitive
1.0
0.000 2.715 2.715
2.715 0.000 2.715
2.715 2.715 0.000
Si
2
Direct
0.00 0.00 0.00
0.25 0.25 0.25
2. VASP:先生成路径和原胞#
下面用 here-document 提供菜单输入,相当于依次输入“375 → 3 → 175 POSCAR → 0.04”。在 375 子菜单中,0 是自洽网格,3 是三维结构路径;主菜单的 0 则是退出。
source ./env.sh
mkdir manual-vasp
cp POSCAR-Si8 manual-vasp/POSCAR
cd manual-vasp
atomkit <<'INPUT'
375
3
175 POSCAR
0.04
INPUT
cat PRIMCELL.vasp
cat KPATH.in
cp PRIMCELL.vasp POSCAR
atomkit <<'INPUT'
375
0
175 POSCAR
0.04
INPUT
cp KPOINTS KPOINTS.scf
cp KPATH.in KPOINTS.band
cat KPOINTS.scf
cd ..
这段流程得到:原胞结构 POSCAR、原胞自洽网格 KPOINTS.scf、与它使用相同倒格矢基底的路径 KPOINTS.band。
自洽与后续能带计算应使用一致的结构。 本例先将 PRIMCELL.vasp 作为工作 POSCAR,再为这个原胞生成自洽网格。不要将常规胞的电荷密度直接与原胞路径混用。准备好自己的 INCAR、赝势及提交脚本后,先使用 KPOINTS.scf 完成相应自洽,再根据计算方法传递必要文件,使用 KPOINTS.band 计算能带。
本例路径为 Γ–X–U | K–Γ–L–W–X,竖线表示 U 与 K 之间不连接。KPATH.in 第二行为 30,表示 VASP line-mode 中每段采用的点数;本例把输入间距改为 0.02 后,该值为 61。它由本次生成过程给出,不能和其他工具的默认点数混为一谈。可以编辑采样点数,但要保留路径端点、分段和晶胞的一致性。
3. ABACUS:使用匹配的 STRU 与 KPT#
source ./env.sh
mkdir manual-abacus
cp POSCAR-Si8 manual-abacus/POSCAR
cd manual-abacus
atomkit <<'INPUT'
301
3
175 POSCAR
0.04
INPUT
cp KPATH.STRU STRU
cp KLINES KPT.band
atomkit <<'INPUT'
301
0
101 STRU
0.04
INPUT
cp KPT KPT.scf
cat KPT.scf
cat KPT.band
cd ..
这里 101 STRU 表示读入 ABACUS 格式的原胞,而不是继续读最初的 8 原子 POSCAR。STRU 中示例赝势和轨道文件名是模板信息,应替换为你实际采用的文件;PW/LCAO、截断能、自洽和能带设置仍需按自己的计算要求准备 INPUT。
KPT.band 的路径行包含三个分数坐标和一个采样数,当前 0.04 示例为:
K_POINTS
8
Line
0.000 0.000 0.000 28 # GAMMA
0.500 0.000 0.500 10 # X
0.625 0.250 0.625 1 # U
0.375 0.375 0.750 30 # K
0.000 0.000 0.000 25 # GAMMA
0.500 0.500 0.500 20 # L
0.500 0.250 0.750 14 # W
0.500 0.000 0.500 1 # X
U 点的计数为 1,随后直接进入 K 点,保留了不连接的两段路径。不同程序对于路径点数、端点是否重复的约定不同,不应只把文件后缀改名就交给另一个程序。
4. 相同间距,为什么网格数不同#
| 输入结构 | 本次输入间距 | 原生 Gamma 网格 | 完整网格点数 |
|---|---|---|---|
| 8 原子常规胞 | 0.04 | 5×5×5 | 125 |
| 8 原子常规胞 | 0.02 | 9×9×9 | 729 |
| 2 原子原胞 | 0.04 | 8×8×8 | 512 |
两种胞的倒格矢长度和方向不同,所以相同输入间距并不意味着相同的网格整数。ATOMKIT 本例的网格取整也不是把 5 简单加倍为 10。比较计算量时,还需考虑每胞原子数和实际不可约 k 点数,不能只比较表中完整点数。
VASP 和 ABACUS 两条原生路线对上述结构给出了相同的网格尺寸。本篇同时核对原胞、空间群、每个高对称点、每一段路径和采样计数,并用 SeeK-path 独立确认这条 fcc 路径。
5. 一键重做本篇与格式对照#
bash run.sh
bash plot-results.sh
cat kmesh-kpath-summary.csv
ls -lh plots/
脚本运行 10 组 VASP/ABACUS 输入输出对照,另保留 6 个跨格式兼容性示例,随后生成数据表、路径转换片段和两张图。已有 work 时停止,重新解压到其他目录即可从头生成。
现有 ~/.atomkit 设置保持不变;首次使用时,官方集群入口会建立你自己的配置。附件不包含 ATOMKIT 程序或上游晶体数据库。其他程序的导出限制与显式转换见 跨程序路径检查。
相关操作:ATOMKIT 晶胞实操、ABACUS 工具、VASPKIT 输入准备。参考:ATOMKIT 官方介绍、SeeK-path 官方项目。