VTST:沿路径方向投影原子受力
用nebforces提取实际CI-NEB结构的切向受力,解释固定原子、方向符号和力的单位。
阅读本篇目录
下载完整输入、原生输出与绘图资料包,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd vtst-path-seeds
module load ase/3.29.0 vtstscripts/1040
bash read.sh
bash plot.sh
本例调用 VTST scripts 1040 的 Perl 工具,NumPy/ASE 3.29.0/Matplotlib 用于读取和绘图。输入沿用Al(100) CI-NEB 实算的最终结构及 OUTCAR,未重新计算 VASP。体系为 13 个 Al 原子,底部 8 个固定;00、01、02 依次为初态、中间点、末态。
1. 选出定义方向的两个结构#
nebforces.pl 的前两个参数是定义构型方向的结构,第三个是提供受力的 OUTCAR。三者原子顺序、原子数和晶胞应一致:
mkdir projection-new
cd projection-new
cp -a ../inputs/* .
perl "$VTSTSCRIPTS_ROOT/nebforces.pl" \
00/POSCAR 02/POSCAR 01/OUTCAR > projection.txt
cat projection.txt
cd ..
实际输出约为 4.34848×10⁻⁹ eV/Å。本例使用已收敛、对称跳迁路径的中间点,沿所选方向的投影接近零,不能据此认为所有原子总力都等于零。
2. 明白方向与约束#
脚本使用周期最小像坐标差,并转为笛卡尔位移;随后对全部原子组成的 3N 向量统一归一化,计算 F·t。本版本的方向约定为“第二个输入结构指向第一个输入结构”;调换前两个文件会翻转符号。
固定原子的受力会按结构中的 Selective dynamics 标记屏蔽。本例底部 8 个 Al 固定,因此不能把它们的反作用力直接加进投影。请保留 T/F 标记,并让两份结构使用一致的约束。
输出是一个有符号的力投影,单位 eV/Å。它不是能量差、势垒、最大原子力、NEB 收敛误差,也不是对某个原子的单独 x 方向受力。
3. 对照 CSV 和原始数据#
cat analysis-read/force.json
grep -n 'TOTAL-FORCE' inputs/01/OUTCAR | tail
资料包保留实际中间 OUTCAR,读取脚本独立解析最后的原子受力、屏蔽固定原子并计算同一笛卡尔投影;force.json 同时记录工具值和独立计算值。
使用自己的数据时,不要只复制终端最后一个浮点数:先核对最后一步、原子数、周期最小像和约束。需要完整离散能量与路径曲线时,继续使用NEB 结果提取工具。
4. 重读自己生成的结果#
bash run.sh
bash read.sh work-new analysis-new
cat analysis-new/force.json
该流程只操作数据副本,不重新启动路径优化。