VTST相邻帧速度与单位
从真实200帧H2轨迹提取199组前向差分速度,解释采样间隔、周期边界、动能和约束自由度。
阅读本篇目录
xdat2vdat.pl用相邻保存坐标的差计算速度。这适合学习轨迹文件与单位,但它不等于积分器保存的瞬时速度;做动力学谱时需要分清两者。
1. 下载并读取已有结果#
下载完整输入、原生输出、CSV与绘图脚本,保存为example.zip:
python3 -m zipfile -e example.zip .
cd vtst-real-trajectory-tools
module load ase/3.29.0
bash read.sh
bash plot.sh
这一步读取本包保存的数据,在analysis-read/生成结果表、在figures/生成图片。新运行后处理时使用bash run.sh,输出写入新建的work-new/;它不运行VASP,也不提交新作业。
2. 单独运行原生速度工具#
在本包根目录:
module load vtstscripts/1040
mkdir velocity-copy
cp inputs/XDATCAR inputs/OUTCAR velocity-copy/
cd velocity-copy
xdat2vdat.pl
head -n 20 VDATCAR
脚本从XDATCAR读晶胞和分数坐标,从OUTCAR读取POTIM与POMASS。本例为固定10 Å立方盒、POTIM=0.5 fs、每个H的实际质量参数1.000 amu。不能看到元素H就把文件中的质量自行换成另一数值。
核心计算是:
相邻分数坐标差 -> 周期最小位移 -> 晶胞转换为Å -> 除以帧间隔fs
因此输出速度单位是Å/fs。200帧产生199个相邻帧区间,每个区间有两个原子的三个速度分量。
3. 看实际速度和动能#

图中时间相对第一条保存记录定义,速度画在两个记录之间的中点;不是在图上重新拼接另一段MD。速度与独立坐标差分逐分量一致,最大差约5×10⁻¹⁶ Å/fs。
cd ..
head analysis-read/VTST-H2-forward-difference-velocity.csv
kinetic_eV按同一差分速度和文件质量计算;它不是从恒温器日志直接复制的瞬时动能。
4. VDATCAR里的温度为什么要另看#
原生脚本使用3N−3个自由度换算TEMP EFF。对两个原子是3,但本例还固定了一条H–H键,在扣除整体平移后仅有2个相对运动自由度。
因此,文件中的TEMP EFF不能直接当作本例约束体系的真实恒温器温度。CSV同时给出按2自由度换算同一差分动能的数值,用于说明这个区别;实际MD温度仍应结合REPORT、OSZICAR和使用的约束定义阅读。
5. 换成自己的轨迹前检查三件事#
- 脚本直接用OUTCAR中的
POTIM作间隔。本例每步保存;若隔多步才保存一次,实际帧间隔更大,不能照搬该结果,应在自己的分析中使用正确采样间隔。 - 本例固定晶胞,且相邻帧没有超过半个盒长的位移。变胞轨迹或采样过稀时,简单的分数坐标最小位移可能不足以还原运动。
- 速度相关函数、扩散和频谱需要合适的采样长度、系综与统计。本篇短H₂轨迹不用于拟合材料扩散系数。
需要了解原生MD保存的速度可继续看py4vasp动力学速度,结构抽帧见XDATCAR与XYZ。