DeePMD分子动力学输入与单位
用同一个真实量化训练的H2势模型,准备LAMMPS、ASE和GPUMD输入,理解速度和时间步长换算。
阅读本篇目录
本例使用H₂能量、力与Hessian教程中已经训练好的能量/力势模型,在LAMMPS、ASE和GPUMD中分别运行短程NVE。先整理输入,接着提交三套程序,最后检查能量和时间步长。所有示例均已在鸢算科技集群P100和V10016G实际计算。
1 下载并整理#
下载输入、两套势模型、原始轨迹数据和绘图程序,在普通账号的工作目录解压:
mkdir H2-MD
python3 -m zipfile -e h2-deepmd-three-md-interfaces-*.zip H2-MD
cd H2-MD
bash analyze.sh
得到 tables/native-MD-results.csv。这一步整理参考数据,不提交计算。实例包没有Gaussian程序、量化检查点或GPUMD可执行文件;H₂的真实HF/6-31G(d)标签及训练来源见前面的Hessian教程。
2 初始条件要完全一致#
初始H—H距离0.74 Å,两个H原子质量均为1.00794 amu,位置为(9.63,10,10)与(10.37,10,10) Å,20 Å立方周期盒。两原子沿键方向以±15.47 Å/ps运动,质心静止。这里是人为指定的对称伸缩,不是某温度下的随机速度分布。

采用0.05与0.1 fs两种时间步长,分别运行2000与1000步,总时长均为100 fs,每0.5 fs保存一次。训练键长范围为0.64–0.84 Å,本例实际轨迹约0.6946–0.7685 Å,处于该范围内。盒子大于模型截止距离并不自动意味着任意分子模型都能安全周期运行;本例另比较了起始结构的周期与非周期能量、力。
3 LAMMPS:metal单位#
cat reference/native-inputs/p100-lammps-dt005/in.lmp
units metal
atom_style atomic
boundary p p p
read_data atoms.data
pair_style deepmd ../models/p100.pth
pair_coeff * * H
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
timestep 5e-05
fix INTEGRATE all nve
thermo 10
thermo_style custom step time pe ke etotal
thermo_modify format float %.16g
dump TRAJECTORY all custom 10 trajectory.lammpstrj id type x y z vx vy vz fx fy fz
dump_modify TRAJECTORY sort id format float %.16g
run 2000
units metal 的长度是Å、时间是ps,因此0.05 fs写成 timestep 0.00005,初始速度直接使用±15.47 Å/ps。fix ... nve 执行积分;pair_style deepmd 读取冻结的 .pth 能量/力模型。不要把上一教程的Hessian .pt检查点与这里冻结的 .pth混为同一个接口文件。
4 GPUMD:速度使用Å/fs#
cat reference/native-inputs/p100-gpumd-dt005/model.xyz
cat reference/native-inputs/p100-gpumd-dt005/run.in
2
Lattice="20 0 0 0 20 0 0 0 20" Properties=species:S:1:pos:R:3:mass:R:1:vel:R:3 pbc="T T T"
H 9.630000000000001 10 10 1.00794 -0.01547 0 0
H 10.37 10 10 1.00794 0.01547 0 0
potential dp.txt ../models/p100.pth
ensemble nve
time_step 0.05
dump_thermo 10
dump_xyz 10 trajectory.xyz precision double velocity force mass
run 2000
另有 dp.txt,内容为 dp 1 H。GPUMD输入速度是Å/fs,所以数值是±0.01547,时间步长直接写0.05。当前5.9.1使用 dump_xyz 输出位置、速度和力。本包准备程序会为各设备和步长自动写好相应输入。

ASE采用自己的内部时间单位,脚本用 v_Aps / (1000 * units.fs) 设置速度,用 dt_fs * units.fs 创建VelocityVerlet。不能把LAMMPS输入数值不加换算地复制到ASE或GPUMD。继续提交计算;GPUMD接口见官方DP势说明。