VTST专题

VTST几何工具:居中、真空、拉伸与随机扰动

用实际NH₃结构逐步操作center、stretch、rattle,提供Python3私有兼容入口和完整终端命令。

更新于 2026-11-13约 5 分钟阅读按任务与环境选择适用配置
阅读本篇目录

准备吸附、团簇或过渡态初始结构时,常需要先居中、加真空、稍微拉长一个原子间距或增加微小扰动。本文用一个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。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗