VTST扩胞与坐标转换实操
用斜晶胞演示扩胞、分数坐标平移和XYZ导出,说明旧格式与约束处理。
阅读本篇目录
扩胞、整体平移、导出坐标是三种不同操作。本篇保留同一结构的实际输入与输出,便于逐步对照。
下载输入、实际输出、CSV和脚本,先查看已完成的结果:
python3 -m zipfile -e vtst-geometry-cube-modes-wave968-*.zip .
cd vtst-geometry-cube-modes
bash read.sh
bash plot.sh
这两步只读取和绘图,不重新执行工具。版本为VTST scripts1040;Perl模块由vtstscripts/1040提供,数据读取使用ASE3.29.0与NumPy。结构是可公开重建的Si₂斜晶胞教学例,没有新增DFT能量计算。
需要自己重新执行整套小例子时,使用新的解压目录:
module load vtstscripts/1040
python3 setup_cube.py
python3 prepare.py
bash run.sh
bash read.sh work-new
bash plot.sh
setup_cube.py在个人目录生成匹配版本的三次Cube取样脚本,不改变公共安装。已有work-new时保留结果、换新目录。本例为小规模文件处理,大网格处理应按集群规则申请CPU资源。
1 输入结构#
cat inputs/double/POSCAR
Si
1.0000000000000000
5.4299999999999997 0.0000000000000000 0.0000000000000000
1.0000000000000000 5.4299999999999997 0.0000000000000000
0.5000000000000000 0.3000000000000000 5.4299999999999997
2
Selective dynamics
Direct
0.2000000000000000 0.2000000000000000 0.2000000000000000 T T T
0.4500000000000001 0.4500000000000000 0.4500000000000000 T T T
这是旧脚本使用的VASP4格式:元素名在标题中,晶格后直接是原子数。本例保留Selective dynamics与Direct两行,即使所有原子可移动也保持这一布局。
2 沿第一晶格矢量扩胞#
在独立工作目录中,实际命令为:
double.pl POSCAR doubled.vasp
询问方向时输入1。本例体积和原子数均变成原来的2倍,Si₂变为Si₄;副本沿原来的第一晶格矢量平移。该工具使用tmp.con与tmp2.con中间文件,应在独立目录处理副本。
head -n 15 work-new/double/doubled.vasp
3 整体平移Direct坐标#
pos2pos.pl POSCAR 0.2 -0.4 0.1
输出POSCAR.out。第一原子由(0.2,0.2,0.2)变为(0.4,0.8,0.3),负方向越界后回到周期晶胞内。
此旧入口按Direct坐标处理,并把选择性约束统一写成T T T。本例保留了固定原子的输入对照;处理有约束的真实结构后,应重新设置需要的约束。它只作单次越界回卷,本例平移小于一个周期。
4 导出XYZ#
pos2xyz.pl POSCAR
输出POSCAR.xyz,位置单位Å。工具会创建并移除同名.con中间文件,因此使用新目录。普通XYZ不保存本例的周期晶胞,原POSCAR与晶胞应另行保留。

head -n 12 analysis-read/VTST-native-tool-geometry.csv
CSV保留三维位置;图片只画xy投影。完整晶胞与原子顺序以资料包内结构文件为准。