VTST专题

VTST:原生动力学矩阵实操

从已优化的NH3最小点和鞍点出发,使用ICHAIN=1和DISPLACECAR收集力并提取Hessian。

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

本篇演示 VTST 的原生动力学矩阵入口 ICHAIN=1:逐个移动选中的笛卡尔自由度,收集力,再用 dymmatrix.pl 生成质量加权矩阵和频率。它与 VASP 内置的 IBRION=5 频率入口是两种不同的执行方式。

1. 先准备已优化的结构#

下载完整输入、原生结果、CSV 与绘图脚本,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd vtst-native-dynmat
module load ase/3.29.0
bash read.sh
bash plot.sh

默认读取附带的实际结果,CSV 在 analysis-read/,图片在 figures/。需要重算时运行 bash submit.sh,等待作业结束后执行 bash read.sh work-new analysis-read 和 bash plot.sh。

本例调用 VASP 6.6.1 + VTST,编译环境为 NVHPC 25.3、配套 OpenMPI 与 MKL 2023.2。两组原始实算分别使用 P100 和 V100 16G,每组 1 张 GPU、1 个 MPI 进程、1 线程;包内模板在 P100 上顺序计算两组。POTCAR 不放进下载包,提交脚本在集群读取 PAW64/PBE 的 H、N 文件并按 POSCAR 顺序组合。

本例使用之前已优化的 NH₃ 最小点及翻转鞍点,四个原子放在 12 Å 立方盒中。此前结构优化的力标准为 0.02 eV/Å;本篇只收集有限位移力,不再优化结构和晶胞。

最小点 inputs/minimum/POSCAR:

H  N                                    
    1.000000000000000     
    12.0000000000000000    0.0000000000000000    0.0000000000000000
     0.0000000000000000   12.0000000000000000    0.0000000000000000
     0.0000000000000000    0.0000000000000000   12.0000000000000000
   H    N 
     3     1
Direct
     0.5000000000721657    0.5591616300961801    0.4838419542058191
     0.5681915934809153    0.4410526811637319    0.4838403610398243
     0.4318084079056659    0.4410526818880980    0.4838403616372904
     0.4999999985412533    0.4804220901853165    0.5161192397837309

鞍点 inputs/saddle/POSCAR:

H  N                                    
    1.000000000000000     
    12.0000000000000000    0.0000000000000000    0.0000000000000000
     0.0000000000000000   12.0000000000000000    0.0000000000000000
     0.0000000000000000    0.0000000000000000   12.0000000000000000
   H    N 
     3     1
Direct
     0.4999999993207838    0.5640506507416372    0.4991386256267992
     0.5724328585054330    0.4386033291705689    0.4991388281979632
     0.4275671293526156    0.4386033229234896    0.4991388289624208
     0.5000000128211661    0.4804317804976301    0.4992503838794862

顺序均为 H、H、H、N。替换体系时必须让 POSCAR、POTCAR、位移行和后处理的原子顺序一致。

2. 写入计算参数#

最小点的完整 INCAR:

SYSTEM = NH3 VTST native dynamical matrix minimum
ENCUT = 550
PREC = Accurate
EDIFF = 1E-6
EDIFFG = -1E-8
IBRION = 3
POTIM = 0
ICHAIN = 1
NSW = 13
ISIF = 2
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
LWAVE = .FALSE.
LCHARG = .FALSE.
NELM = 150
ALGO = Normal
ISYM = 0
NWRITE = 2

ICHAIN=1 让 VTST 控制位移序列,配合 IBRION=3、POTIM=0。电子收敛使用 1E−6 eV,与本系列其他操作算例一致。

这里 EDIFFG=-1E-8 是为避免有限位移收集提前停止而设置的执行控制;它不是把前面的结构优化力标准改成 1E−8。NSW=13 对应本例一次参考力计算,加 12 个非零笛卡尔位移;换成其他自由度数量时,需要相应增加步数。

完整 KPOINTS:

Gamma
0
Gamma
1 1 1
0 0 0

3. DISPLACECAR怎样写#

0.015 0.015 0.015
0.015 0.015 0.015
0.015 0.015 0.015
0.015 0.015 0.015

每行对应一个原子,三列依次选择 x、y、z 方向。非零数值是实际位移量,单位 Å;0.015 0.015 0.015 的含义是依次计算三个独立方向,不是把三个方向同时移动一次。

本例四行全非零,因此共有 12 个位移方向。原生实现使用参考点加单边位移,本例实际产生 13 组力;不要把它与中心差分的正负位移数量混淆。

4. 提交与查看结果#

在资料包根目录:

bash submit.sh
squeue -u "$USER"

待作业完成后:

ls work-new/minimum
head -15 work-new/minimum/freq.dat
bash read.sh work-new analysis-read
bash plot.sh

模板已经顺序运行 VASP 和 dymmatrix.pl。如果需要对自己现有的 OUTCAR 单独提取,进入保存了正确 DISPLACECAR 的目录再执行:

module load vtstscripts/1040
dymmatrix.pl DISPLACECAR OUTCAR

它读取 OUTCAR 中 VTST 写出的 HIPREC TOTAL-FORCE,生成 freq.mat、eigs.dat、freq.dat、modes.dat。普通静态 OUTCAR 或内置频率 OUTCAR 不能直接假定包含相同数据。

freq.mat 是质量加权矩阵,单位对应 eV/(Ų·amu);eigs.dat 是其本征值,不能直接当作 Hz。freq.dat 给出 cm⁻¹,末列 1 表示虚频、0 表示实频。下一篇说明为什么分子的原始 12 个模式不能直接全部拿来计算前因子。

5. 本例实际得到什么#

实际结构及内部振动方向

两组原生计算正常结束,每组实际收集 13 组力。去除整体平移、转动后,最小点有 6 个正的内部振动,鞍点有 1 个虚频和 5 个正频率。图中箭头由本次矩阵的内部模式换算为笛卡尔位移并放大展示,不是 MD 轨迹。

继续阅读整体模式与频率检查,查看原始频率、内部模式和中心差分对照。

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

查看配图

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

100%查看原图 ↗