LAMMPS温度加速动力学实操
原生TAD自动调用NEB、识别候选事件、选择低温事件和核对时间换算。
阅读本篇目录
本组使用LAMMPS30Sep2026的原生REPLICA功能:四个粒子中,1号粒子沿x跨越解析双阱,另外三个局域谐振子作为陪伴自由度。所有粒子还在各自的y/z势阱内运动。使用LJ约化单位,图中X是占位标签,不代表某种真实元素;能垒1不是1 eV。
模型为1号粒子的 U=(x²−1)²+5(y+3)²+5z²,其他粒子为 U=5(x+1)²+5[y−(2id−5)]²+5z²。初态x=−1,另一稳态x=+1,解析能垒为1。这里用来学习输入、事件和时钟;材料扩散率还需要适合材料的势函数、事件定义、去相关和统计收敛。
下载原生输入、实际输出、CSV和图片,解压到个人目录:
mkdir prd-tad-demo
cd prd-tad-demo
curl -fL https://yuansuan.top/assets/downloads/full-function/lammps-rare-event-wave83-877009b7a3cb.zip -o examples.zip
unzip examples.zip
sbatch submit.slurm
提交脚本会依次运行各个小算例,然后自动提取数据、导出结构和画图。使用 lammps/30Sep2026-p100-gpu 基础模块,原生GCC13.3、OpenMPI5.0.10、CUDA12.8构建;后处理用 ase/3.29.0。这些命令走CPU/MPI路径,并不因模块名字含gpu而自动使用GPU力计算。脚本申请5个MPI进程和一个P100配额;PRD/TAD各自使用所需的分区数。
完成后,在解压目录运行:
module purge
module load ase/3.29.0
python analyze.py work
python export_events.py work
python plot_results.py work
已有实算结果位于 reference/,想先读图时可把后处理参数work换为reference。新计算请重新解压到新目录,保留自己的既有结果。
1 TAD比PRD多做什么#
TAD在高温寻找候选跃迁,用内部NEB求能垒,再按谐振过渡态近似换算低温等待时间。同一稳态下,高温最早出现的事件未必是低温最早事件,因此程序会反射回原稳态继续搜索,达到停止条件后才选择事件。
本例高温0.30、低温0.15;五个分区主要为内部NEB的五个图像服务。不能把它理解为五条同时运行的独立高温MD:当前实现的高温动力学在第一分区运行。
2 完整输入与内部NEB#
inputs/tad-5/in.lammps:
variable replica uloop 5
units lj
atom_style atomic
atom_modify map array sort 0 0.0
boundary f f f
region box block -5 5 -8 8 -5 5 units box
create_box 1 box
mass 1 1
create_atoms 1 single -1 -3 0 units box
create_atoms 1 single -1 -1 0 units box
create_atoms 1 single -1 1 0 units box
create_atoms 1 single -1 3 0 units box
pair_style zero 2.5
pair_coeff * *
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
variable dy atom y-(2*id-5)
variable active atom id==1
variable U atom v_active*(x*x-1)*(x*x-1)+(1-v_active)*5*(x+1)*(x+1)+5*v_dy*v_dy+5*z*z
variable Fx atom -v_active*4*x*(x*x-1)-(1-v_active)*10*(x+1)
variable Fy atom -10*v_dy
variable Fz atom -10*z
fix field all addforce v_Fx v_Fy v_Fz energy v_U
fix_modify field energy yes
compute physicalT all temp
compute_modify physicalT extra/dof 0
thermo 1000
thermo_style custom step c_physicalT pe ke
thermo_modify norm no format float %.16g
velocity all create 0.3 32613 mom no rot no dist gaussian temp physicalT
fix integrate all nve
variable bathseed equal 12341+17*v_replica
fix bath all langevin 0.3 0.3 0.2 ${bathseed} zero no
compute event all event/displace 1.0
timestep .005
min_style cg
dump trajectory all custom 100 trajectory-${replica}.dump id type x y z vx vy vz fx fy fz
dump_modify trajectory sort id format float %.16g
tad 100000 20 .15 .3 .05 5.0 event min 0.0 1.0e-8 500 1000 neb 0.0 1.0e-6 2000 2000 20 neb_style fire neb_step .02 neb_log neb-events.log
unfix bath
run 0
write_dump all custom final-${replica}.dump id type x y z vx vy vz fx fy fz modify sort id format float %.16g
print "COMPLETE ${replica} $(step:%.0f) $(pe:%.16g)" file complete-${replica}.dat screen no
这里 atom_modify map array sort 0 0.0 保留ID映射并关闭原子排序,满足当前TAD/NEB要求。addforce给出的坐标力与势能必须一致,否则淬火和NEB失去意义。
主命令是:
tad 100000 20 .15 .3 .05 5.0 event min 0.0 1.0e-8 500 1000 neb 0.0 1.0e-6 2000 2000 20 neb_style fire neb_step .02 neb_log neb-events.log
依次是步数预算、事件检查间隔、低温、高温、delta和tmax,以及事件compute的ID。delta=.05 对应停止判据中的置信设置;tmax=5 是所假定最低前指数因子的倒数,使用约化时间单位,不能照搬到任意材料。后面的min控制淬火,neb控制内部路径优化,neb_step为NEB步长,不会把MD步长0.005改成0.02。
3 单独运行与观察#
在已分配的计算资源中:
module purge
module load lammps/30Sep2026-p100-gpu
mkdir manual-tad
cp inputs/tad-5/in.lammps manual-tad/
cd manual-tad
mpirun -np 5 lmp -partition 5x1 -in in.lammps
cd ..
整包结果可以直接读:
cat work/cases/tad-5/launcher.log
head -12 work/cases/tad-5/neb-events.log
head -8 work/analysis/tad-5-events.csv
D表示检测到的候选事件,DF表示当时最早的低温候选,E表示真正选择执行的事件;Step可能因反射、回退而变小,不能把整份日志Step直接拼成连续MD时间。
4 本次实际结果#
100000步预算内检测4个候选事件,最终选择执行1次;四个候选的原生NEB能垒均为1。五图像路径长度2,能量与解析双阱一致。

第一次候选在高温Step37780被发现。原生输出的低温等待步数为1059034.789;乘dt=0.005,得到约化等待时间5295.173945。它采用的关系为:
delta_low = delta_high * exp[barrier * (1/T_low - 1/T_high)]
这里LJ单位的kB=1。真实metal单位要保留kB和单位,不能直接套此数值表达式。

本例四个候选能垒相同,因此最早的高温事件也最早发生于低温;这不是所有体系的普遍结论。程序继续搜索到Step68940时达到停止条件,随后选择Step37780对应事件。最终E行的低温累计时钟是方法给出的估计值,不是实际跑了这么长的低温MD。
5 保存结构和后续使用#
python export_events.py work
head -8 work/analysis/tad-5-events.xyz
head -6 work/analysis/tad-neb.csv
XYZ只导出初态和已执行事件的实际稳态,两帧均来自原生输出。被检测但未执行的候选在事件CSV中,不能把所有D行都当成真正发生的低温轨迹。要将本流程换为真实材料,还需要验证势函数、过渡态近似、低温/高温范围、最小前指数因子和事件判据。
见 LAMMPS TAD说明、NEB操作实例 和 输出与结构工具。