ATOMKIT 导入结构与 Wyckoff 建模
从常见格式读入结构,处理当前版本文件名限制,并从空间群生成 GaAs 晶胞。
阅读本篇目录
本例使用 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;原生错误文件保留用于比较,请先看对应限制再使用。
导入和导出编号不是同一张表#
先输入目标格式 175,再选择源格式与文件。例如:
module load atomkit/0.9.0
cp native-cases/import-cases/101/Si.STRU .
printf '175
101 Si.STRU
' | atomkit
得到 Si.vasp。导出菜单的 142 是 Octopus,而导入菜单的 142 是 Materials Studio XSD;导出 144 是 OpenMX,导入 144 是 MDL MOL。不要把两张编号表混在一起。
| 导入编号 | 源格式 | 实际操作说明 |
|---|---|---|
| 101 | ABACUS STRU | Si8 读入后晶胞与坐标一致 |
| 112 | CASTEP CELL | Si8 周期几何一致 |
| 113 | CIF | 前篇已完成;适合通用交换 |
| 123 | Elk | 本版对原生导出的 Elk 文件读出 0 原子、奇异晶胞;换标准名 elk.in 也未解决,改用 ASE→CIF |
| 134 | Gaussian | Si8 内部几何距离保留,程序重新放入包围盒;不能把新盒子当原周期晶胞 |
| 142 | Materials Studio XSD | ASE 写出的自有 Si8 XSD 实际导入成功 |
| 144 | MDL MOL | 本例读入程序要求文件名 Vancomycin_.mol;改名副本后可读水分子 |
| 149 | PDB | 本例原生导出再导入将 Si 识别成 S,规范列 PDB 也丢失元素;用 ASE 读再转 CIF |
| 156 | Quantum ESPRESSO | Si8 几何与晶胞一致 |
| 168 | SIESTA FDF | Si8 几何与晶胞一致 |
| 175 | VASP | 本批编辑操作反复使用的源格式 |
| 185 | XSF | 前篇已完成周期几何读取 |
| 189 | XYZ | 水分子三原子内部距离保留,读入后重新放到盒内 |
| 190 | 空间群与 Wyckoff 位置 | 下面给出完整 GaAs 实例 |
MOL 常见 V2000 文件会把坐标写成四位小数,PDB 常为三位小数;数值比较要与文件本身的精度匹配。分子重新居中后的绝对坐标可能变化,元素、键长和夹角才是这个转换的几何比较对象。XYZ/MOL 也不携带 VASP 计算的电荷态、自旋设置。
水分子 MOL 的本版文件名要求#
cp native-cases/import-cases/144/water.mol Vancomycin_.mol
printf '175
144 Vancomycin_.mol
' | atomkit
head -n 12 Vancomycin_.vasp
这只是当前安装版本的文件名兼容办法。输入仍是 3 个原子的水分子,并没有变成文件名所指的分子。输出盒长约 11.2214、10.9454、10 Å,原子重新居中;实际 MOL 中的分子距离保留。若不想采用这个文件名约定,可以用 ASE 将 MOL 写为 VASP,分子用多大的真空盒由自己明确设置。
从空间群生成一个 GaAs 常规胞#
下面的 INPUT 是本例完整输入。按示例保留说明行,当前解析器会读取这些记录;不能直接删成只有数字的几行。
mkdir -p gaas-build
cd gaas-build
cat > INPUT <<'EOF'
# Dimension of cell
3
# Space group number
216
# Lattice lengths and angles; cubic auto values
5.65 -1 -1 -1 -1 -1
# Number of independent sites
2
# Symbols and fractional coordinates
Ga 0 0 0
As 0.25 0.25 0.25
EOF
printf '175
190 INPUT
' | atomkit
head -n 16 INPUT.vasp
216 对应闪锌矿结构的空间群;晶格常数取 5.65 Å,立方晶系由程序补全其他长度与角度。两个不等价位点展开后得到 4 Ga + 4 As,共 8 原子,体积 180.362125 ų。这里只演示构造结构,5.65 Å 是输入值,并非本批重新优化的平衡晶格常数。
这套结构可以继续做优化;VASP 中还需要按 Ga As 顺序准备自己的授权 POTCAR,并自行选择方法、精度、k 点与优化方式。不要仅看到生成 POSCAR 就认为结构已达到平衡。
PDB 和 Elk 的可靠转换命令#
/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python - <<'PYCODE'
from ase.io import read, write
# 从工具包根目录执行,源文件均为本例的自有结构。
a = read('native-cases/import-cases/149-ASE-column-PDB/Si.pdb', format='proteindatabank')
assert set(a.get_chemical_symbols()) == {'Si'}
write('Si-from-PDB.cif', a, format='cif')
b = read('native-cases/format-exports/123/POSCAR.in', format='elk')
write('Si-from-Elk.cif', b, format='cif')
PYCODE
alternatives 保存了实际生成并重新读取的 CIF。然后可使用 175→113 Si-from-PDB.cif 这样的原生 CIF 导入。详细数值见包内 Atomkit-import-examples.csv;返回全部功能导航。
分子点群的补充操作#
资料包中还有实际GFN2优化的水分子,16 Å盒只是用于容纳分子。要看分子点群,用209,而不是周期晶体空间群201:
cp inputs/POSCAR-water POSCAR
printf '209\n175 POSCAR\n' | atomkit
本例输出3原子、C2v。周期跨边界或明显变形的结构应先处理,再解释对称性;完整菜单见功能导航。