VTST几何工具:居中、真空、拉伸与随机扰动
用实际NH₃结构逐步操作center、stretch、rattle,提供Python3私有兼容入口和完整终端命令。
阅读本篇目录
准备吸附、团簇或过渡态初始结构时,常需要先居中、加真空、稍微拉长一个原子间距或增加微小扰动。本文用一个12 Å盒中的NH₃结构演示VTST scripts1040;只处理几何,不进行电子结构计算。
1. 看结构与实际结果#
下载完整输入、原生结果和绘图包,保存为example.zip:
python3 -m zipfile -e example.zip .
cd vtst-python-geometry-paths
bash results.sh
bash read.sh
bash plot.sh
这些命令直接读取随包实算结果;reference-results/存原生输出,data/存CSV,figures/存图片。read.sh和plot.sh默认使用集群ASE环境的Python,无需重新计算。自己的Python须安装NumPy、ASE和Matplotlib,可用YS_ANALYSIS_PYTHON指定解释器。

本例POSCAR元素顺序是H H H N。脚本的原子索引从0开始,因此0、1都是H,N的索引是3。先查看输入:
cat inputs/POSCAR
H N
1.0000000000000000
12.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 12.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 12.0000000000000000
H N
3 1
Direct
0.5000000000000000 0.5587331666666666 0.4838209583333333
0.5678192500000000 0.4412668333333333 0.4838209583333333
0.4321807499999999 0.4412668333333333 0.4838209583333333
0.5000000000000000 0.4804222499999999 0.5161790416666666
2. 准备能在当前Python运行的工具副本#
VTST1040中部分脚本沿用Python2语法或旧NumPy接口。资料包只在当前目录生成私有副本,原安装保持原样:
py=/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python
export PYTHONDONTWRITEBYTECODE=1
"$py" prepare.py
prepare.py先核对安装脚本版本,再用Python3.11自带的lib2to3转换旧语法;compat-run.py补充旧脚本用到的np.product和collections.Callable别名。rattle.py副本显式固定随机种子42。换到别的集群时,要重新检查脚本版本;Python3.13已不含lib2to3,可使用Python3.11准备这些副本。
3. 先居中,再加真空#
不要直接操作唯一一份POSCAR。在示例根目录准备两个独立子目录:
mkdir -p manual/center manual/vacuum
cp inputs/shifted.vasp manual/center/POSCAR
cp inputs/POSCAR manual/vacuum/POSCAR
root="$PWD"
cd manual/center
"$py" "$root/compat-run.py" "$root/.private-scripts/center.py" POSCAR
cd ../vacuum
"$py" "$root/compat-run.py" "$root/.private-scripts/center.py" POSCAR 2.0
cd "$root"
无第二参数时,把原子包围盒中心移到原晶胞中心,保留原晶胞;本例专门使用平移过的结构,能看到实际移动。有2.0时,按三个方向的原子跨度重新生成晶胞,两侧各留2 Å真空。它不是在每条原晶胞边上简单增加2 Å,也不是按质量中心居中。
这里使用正交盒中的孤立分子。周期体相或斜晶胞不要照搬这一真空处理;先确认跨周期边界的分子已经展开。
4. 拉长指定间距#
mkdir -p manual/stretch
cp inputs/POSCAR manual/stretch/POSCAR
cd manual/stretch
"$py" "$root/compat-run.py" "$root/.private-scripts/stretch.py" POSCAR 0 1 0.15
head POSCAR_stretch
cd "$root"
本例把第1个H沿0→1的方向移动0.15 Å,输出POSCAR_stretch。这是H–H几何控制,用于说明索引和位移,不表示优化出的化学键长。只移动指定原子,其他坐标不变。
5. 添加可复现的小扰动#
mkdir -p manual/rattle
cp inputs/POSCAR manual/rattle/POSCAR
cd manual/rattle
"$py" "$root/compat-run.py" "$root/.private-scripts/rattle.py" POSCAR 0.01
cd "$root"
0.01是每个笛卡尔分量高斯位移的标准差,单位Å;不是每个原子一定移动0.01 Å。种子固定后,包中的结果可以逐坐标复查。
head data/VTST-geometry-transformations.csv
6. 一次执行整套演示#
在新解压目录运行:
bash run.sh
bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work
脚本顺序完成几何、格式和路径操作,输出到work/。这是秒级前后处理,无需启动VASP;真正的优化、NEB力计算应另行通过Slurm提交。
工具来源:VTST Tools。