ATOMKIT 结构转换:格式、单位与实操
用自建 Si 结构演示常见格式导出与 CIF/XSF 读回,说明 ASE、LAMMPS、PDB 的实际处理细节。
阅读本篇目录
ATOMKIT 是 VASPKIT 团队的结构工具,适合在软件之间传递晶胞与原子坐标。本篇先做格式转换,下一篇再做原胞、标准晶胞、超胞和对称性。
本例使用集群的 ATOMKIT 0.9.0 官方预编译版本,在 login01 的个人工作目录执行短小结构处理。没有重新编译该程序,不将二进制中的编译标记当作完整编译器配置。辅助读取和绘图使用 ASE 3.29.0、spglib。
1. 准备自己的结构#
下载:Si 结构、操作与绘图脚本。资料只含本站自编脚本和自建结构,不包含 ATOMKIT 程序或上游自带文件。
unzip atomkit-structure-wave194.zip -d atomkit-si
cd atomkit-si
module load atomkit/0.9.0
cat POSCAR
示例是晶格常数 5.43 Å、八个原子的常规 Si 晶胞,原始输入如下:
Si
1.0000000000000000
5.4299999999999997 0.0000000000000000 0.0000000000000000
0.0000000000000000 5.4299999999999997 0.0000000000000000
0.0000000000000000 0.0000000000000000 5.4299999999999997
Si
8
Direct
0.0000000000000000 0.0000000000000000 0.0000000000000000
0.2500000000000000 0.2500000000000000 0.2500000000000000
0.0000000000000000 0.5000000000000000 0.5000000000000000
0.2500000000000000 0.7500000000000000 0.7500000000000000
0.5000000000000000 0.0000000000000000 0.5000000000000000
0.7500000000000000 0.2500000000000000 0.7500000000000000
0.5000000000000000 0.5000000000000000 0.0000000000000000
0.7500000000000000 0.7500000000000000 0.2500000000000000
完整转换、晶胞处理、独立读取与画图可直接执行:
bash run.sh
程序在 cases/ 下为每个任务建立独立目录,避免同名输出混在一起。结果表为 analysis/formats.csv,图片在 figures/。
2. 交互操作的两个编号是什么意思#
atomkit
以导出 CIF 为例,先选择 113,再输入 175 POSCAR。第一行是目标导出格式,第二行是输入格式和输入文件名。
也可按实际交互顺序直接输入:
printf '113\n175 POSCAR\n' | atomkit
ls POSCAR.cif
本版导入列表和导出列表不完全相同。ABINIT 的102可用于导出,但不能据此拿102作为原生导入编号;导入时以实际弹出的列表为准。
3. 常用导出格式对照#
本例实际完成以下结构输出,并用 ASE、spglib 或对应结构字段的独立读者核对晶胞与原子坐标:
| 输出目标 | 编号或路线 | 示例文件 |
|---|---|---|
| ABACUS | 101 | cases/export-101/POSCAR.STRU |
| ABINIT | 102 | cases/export-102/POSCAR.in |
| ASE | 113→ASE | cases/export-105/POSCAR.py |
| CASTEP | 112 | cases/export-112/POSCAR.cell |
| CIF | 113 | cases/export-113/POSCAR.cif |
| CP2K | 114 | cases/export-114/POSCAR.inp |
| FHI-aims | 129 | cases/export-129/POSCAR.in |
| Gaussian | 134 | cases/export-134/POSCAR.gjf |
| LAMMPS | 136,补首行标题 | cases/export-136/POSCAR.lmp |
| ORCA | 146 | cases/export-146/POSCAR.in |
| PDB | 149 | cases/export-149/POSCAR.pdb |
| Quantum ESPRESSO | 156 | cases/export-156/POSCAR.in |
| VASP | 175 | cases/export-175/POSCAR.vasp |
| XSF | 185 | cases/export-185/POSCAR.xsf |
| XYZ | 189 | cases/export-189/POSCAR.xyz |
例如导出 VASP、XSF、XYZ:
printf '175\n175 POSCAR\n' | atomkit
printf '185\n175 POSCAR\n' | atomkit
printf '189\n175 POSCAR\n' | atomkit
Gaussian、ORCA 和普通 XYZ 在这里按有限原子坐标输出,不能把它们直接当作仍保留周期边界的 Si 晶体计算。本篇只转换结构,不计算这些有限原子模型的能量或其他性质。

PDB 坐标只有三位小数,本例最大匹配位置差约 0.000866 Å。它适合相应格式需求,不适合替代高精度优化结构。图中对数轴上的精确零误差仅为显示而放在 10⁻¹³ Å,真实数值保存在 CSV。
4. CIF 和 XSF 怎样读回 VASP#
printf '175\n113 POSCAR.cif\n' | atomkit
printf '175\n185 POSCAR.xsf\n' | atomkit
两条命令分别从 CIF、XSF 输入,选择175导出 VASP。最好放入不同目录操作,避免输出文件重名。本包相应目录为 cases/import-113、cases/import-185;读回结果保持本例八个 Si 原子、晶胞和周期坐标。
5. ASE 与 LAMMPS 的实用处理#
当前 0.9.0 在本例中使用原生105导出 ASE 时会改变部分坐标,因此本包采用 CIF → ASE 路线:
printf '113\n175 POSCAR\n' | atomkit
/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python - <<'PY'
from ase.io import read, write
atoms = read('POSCAR.cif')
write('Si.py', atoms, format='py')
PY
这里调用已有 ASE 环境,不需要另装一个与 ATOMKIT 同名的 PyPI 项目。本包把替代路线明确记录在 cases/export-105/ROUTE.json,不把它称作原生105导出。
LAMMPS 导出为:
printf '136\n175 POSCAR\n' | atomkit
本版输出缺少 LAMMPS data 文件需要的首行标题。手动使用时,可保留原始文本,再只补一行注释:
cp POSCAR.lmp ATOMKIT-RAW-LAMMPS.txt
sed -i '1i# Si structure exported by ATOMKIT' POSCAR.lmp
本包已自动完成这个步骤,坐标与晶胞不改动。LAMMPS 的类型号并不自动等于元素,实际计算还需设置对应的 mass、势函数和类型映射。
6. 导出的结构不等于完整计算输入#
ABACUS、CP2K、CASTEP、Quantum ESPRESSO 等输出中可能含赝势、基组占位符或不完整的控制段。先确认结构,再按照目标软件教程补齐其余输入,不要直接把文件名改成程序默认输入名就提交生产任务。
本篇覆盖常用格式路线,没有把全部菜单、所有材料或 GUI 都当作已经演示。程序与许可条件见集群 $ATOMKIT_ROOT/license 及 ATOMKIT 官网。
表面、缺陷与简单双层#
继续阅读Si薄层与表面、空位和替位、复制薄层与界面间距。给出自建输入、实际逐行终端操作、原生结构和高清示意图;建模后仍需选择计算参数并优化。