ATOMKIT 二维结构:层位置、真空与标准朝向
用单层、双层和倾斜 hBN 说明二维结构处理的完整终端流程。
阅读本篇目录
本例使用 ATOMKIT 0.9.0 官方 Linux 预编译程序,属于 VASPKIT 团队的结构工具,与同名 Python 包不同。集群通过 module load atomkit/0.9.0 使用;二进制含 GCC 9.4 与 Intel Fortran 运行库标记,完整上游编译参数未公开,不能据此指定一套完整编译链。ASE 辅助操作使用集群 ASE 3.29.0。短小结构处理在个人目录执行,不会自动开始 VASP 等计算。
下载本篇共用结构、命令、数据与作图包。解压后进入 atomkit-menu-examples;原生错误文件保留用于比较,请先看对应限制再使用。
准备完整 hBN 输入#
原子层故意放到 z=14 Å,方便看出移动前后差别:
module load atomkit/0.9.0
cat > POSCAR <<'EOF'
hBN monolayer, offset
1.0
2.5 0 0
-1.25 2.1650635094610964 0
0 0 20
B N
1 1
Direct
0 0 0.7
0.3333333333333333 0.6666666666666666 0.7
EOF
本例面内 B—N 几何相同,主要观察 z 位置与晶胞高度。操作只改模型,不会优化原子或计算层间相互作用。
601:把层移到盒底附近#
printf '601
175 POSCAR
175
' | atomkit
head -n 12 POSCAR_REV.vasp
本次结果层位置为 z≈1 Å,并不是 z=0;c 仍为20 Å。底部偏移量是这个版本本例的实际行为,脚本中如果要求原子精确位于原点,需要另外明确平移。
602:将层居中#
printf '602
175 POSCAR
175
' | atomkit
结果层在 z=10 Å,c=20 Å。602 已在界面拼接教程使用。本例单层零几何厚度,居中不改变周期真空间隔。
603:调整真空间隔#
这项先问真空厚度,再问源结构:
printf '603
15
175 POSCAR
175
' | atomkit
单层输出 c=15 Å、z=7.5 Å。实际几何厚度为0,所以这里的真空值恰好等于胞高;不能由这个例子推广为所有二维结构都把c设为15 Å。
双层的实际例子在工具包中:
bash run.sh bilayer-vacuum
head -n 14 work/bilayer-vacuum/POSCAR_REV.vasp
输入有 2 B+2 N,共4原子,两层间隔3.3 Å。相同的 603、15 操作后:
| 项目 | 实际结果 |
|---|---|
| 几何层厚 zmax−zmin | 3.3 Å |
| 相邻周期层之间的真空间隔 | 15 Å |
| 晶胞高度 c | 18.3 Å |
| 两层位置 | 7.5、10.8 Å |
这里的15 Å是整个周期中的真空间隔,两侧各一半;不是上下各增加15 Å。一般有厚度的二维材料应按 c = 几何层厚 + 所需周期真空间隔 理解。真空是否足够仍取决于材料、电荷、偶极修正和目标性质,这个建模命令不替你完成真空收敛测试。

604:标准化二维结构朝向#
bash run.sh tilted-standardize
head -n 12 work/tilted-standardize/POSCAR_REV.vasp
该例把原 hBN 晶胞和原子整体绕 x 旋转37°作为输入,再运行604。输出重新落在标准面内朝向,两个原子的 z=10 Å;晶胞度量、面内面积和层结构保持。它与改变面内晶格常数的“正交化超胞”不同,后者见正交结构与随机合金。
手动操作就是:
printf '604
175 POSCAR
175
' | atomkit
604需要二维结构适合其处理约定;本例是正交真空方向的平整hBN,不代表任意弯曲、带倾斜真空方向或厚膜体系都能无条件套用。转向后若还需外电场、偶极方向、固定层或自旋方向,请同步检查后续计算输入。
看数据、画图,再交给计算程序#
bash results.sh
bash plot.sh
Atomkit-2D-examples.csv 记录双层和倾斜层的实际高度、层厚和真空间隔。把需要的 POSCAR_REV.vasp 复制为新计算目录的 POSCAR,再独立设置赝势、k点、交换关联与优化参数;二维体系通常保持真空方向晶胞不参与优化,具体 VASP ISIF 选择见结构优化相关教程。