VTST专题

VTST:一次生成全部振动模式动画

用真实NH3的DISPLACECAR、modes.dat和freq.dat生成12组XYZ动画,并解释振幅、帧数和原始模式边界。

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

dymmodes2xyz.pl 可以根据位移自由度、modes.dat 和参考结构,一次生成多个模式的 XYZ 动画。本例使用真实 NH₃ 原生动力学矩阵输出的 12 个原始模式,不重新计算电子结构。

1. 解压并查看图表#

下载输入、12组动画、CSV 和绘图脚本,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd vtst-matrix-tools
module load ase/3.29.0 vtstscripts/1040
bash read.sh
bash plot.sh
ls reference-results/movies/movies

其中有 mode001.xyz 到 mode012.xyz,每个文件 8 帧。模式编号从 1 开始,对应 modes.dat 的列,不能把矩阵的每一行误认为一个完整模式。

2. 准备四类文件#

  • POSCAR:四原子的参考结构,原子顺序 H、H、H、N。
  • DISPLACECAR:指明哪些笛卡尔自由度参与模式,每个原子一行。
  • modes.dat:12×12 模式矩阵,每一列为一个模式。
  • freq.dat:12 行频率和虚频标记,行数与模式数一致。

本例 DISPLACECAR 为:

0.01 0.01 0.01
0.01 0.01 0.01
0.01 0.01 0.01
0.01 0.01 0.01

脚本使用其中的正值分量建立自由度映射,所以应使用正的位移标记;不要自行用负号表达振动方向。原子顺序、自由度顺序和模式矩阵必须对应。

3. 实际生成动画#

mkdir movies-new
cd movies-new
cp ../inputs/POSCAR .
cp ../inputs/DISPLACECAR .
cp ../inputs/modes.dat .
cp ../inputs/freq.dat .
perl "$VTSTSCRIPTS_ROOT/dymmodes2xyz.pl" \
  POSCAR DISPLACECAR modes.dat movies freq.dat 8 0.1
ls movies
cd ..

参数依次为参考结构、位移文件、模式矩阵、输出目录、频率文件、每个模式的帧数和全模式幅度。这里 8 是帧数,0.1 是按输入模式向量缩放的 Å 幅度;不是每个原子都移动 0.1 Å。

脚本按正弦函数生成帧,第 0 帧为参考结构,第 2/6 帧接近正/负振幅极值。原始模式向量已归一化时,全体位移范数的峰值约为 0.1 Å。输入的幅度只影响可视化,不改变频率或重新求解本征模式。

4. 用终端打开动画#

安装有 ASE 图形界面的个人电脑上可执行:

ase gui movies-new/movies/mode012.xyz

从集群下载 XYZ 后也可以用 OVITO 打开,并切换时间帧播放。集群命令行直接生成文件即可,不要求在登录终端启动图形窗口。

XYZ 保留元素和坐标,普通 XYZ 不保留晶胞,当前脚本还会把坐标折回周期晶胞;跨边界运动可能出现视觉跳跃。显示分子键时需要自行检查连接关系。

实际NH3模式向量及不同模式的动画位移

5. 不把动画当成新的频率计算#

本例保留完整 12 个原始模式,包括分子平移/转动方向和它们的有限位移数值误差。动画中出现虚频标记,不足以证明又找到了一个鞍点;也不能把原始 12 个频率全部代入分子振动热力学或跃迁前因子。相应处理见刚体模式与频率检查。

bash run.sh
bash read.sh work-new analysis-new
bash plot.sh analysis-new

analysis-new/mode-movies.csv 逐模式、逐帧记录频率标记与总位移范数;图表读取指定的结果目录,便于比较自己的新动画。

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

查看配图

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

100%查看原图 ↗