LAMMPS 剪切数据提取:热运动温度、应力与轨迹重放
LAMMPS 30Sep2026 剪切流的终端操作、完整输入、速度分箱及温度与应力数据提取。
阅读本篇目录
本篇配合剪切流完整算例,解释用户拿到轨迹后怎样读温度与压力,以及如何利用已有轨迹补提取速度分箱。配套下载完整资料包。
1. 先确认轨迹里保存的是什么速度#
进入解压后的 lammps-SLLOD 目录,查看已计算输入中的关键命令:
grep -E 'nvt/sllod|temp/deform|stress/atom|ave/chunk|fix deform' reference/p100-kokkos-rate0.10-s32001/in.lmp
对于本例 xy 剪切,仿射流速是 vx_stream = rate × (y − ylo)。采用 peculiar no 时,vx_thermal = vx_stored − vx_stream,vy、vz 保持不变。该体系使用 3N−3 个温度自由度;质量和玻尔兹曼常数在当前约化单位下都为 1。
在源算例的速率 0.1、种子 32001 中,初始热运动温度约 0.889245,直接用保存速度计算约 0.966852;3000 步时分别约 1.307415 和 1.377432。温控目标为 1.2,但目标不等于每个瞬时输出值。

图中每点均由保存轨迹计算,没有平滑。右图还给出 peculiar yes 对照。原图。
2. 使用 peculiar yes 时不要再扣流速#
该选项让积分器直接演化热运动速度。配套改变是:
fix deform all deform 0 xy erate 0.1 remap none units box
fix flow all nvt/sllod temp 1.2 1.2 0.2 peculiar yes kick yes integrator reversible psllod no
compute td all temp
此时 remap none 与普通 temp 对应保存的热运动速度;kick 对 peculiar 模式不产生同样的初始流速添加作用。不能照抄实验室速度模式的 temp/deform 再扣一遍。更多边界见 SLLOD 官方说明 与 temp/deform。
包中还包含 legacy 积分器、p-SLLOD 与不添加初始 kick 的短轨迹。它们帮助理解参数,不能只因曲线不同就判定某个算法或硬件错误,也不能据此断言长期输运系数相同。
3. 从逐原子应力得到整体 Pxy#
输入中用同一个热运动温度定义:
compute pp all pressure td
compute sa all stress/atom td
c_pp[4] 是 xy 压力分量;c_sa[4] 是每个原子的 xy 应力乘体积,其定义带负号。将所有原子的 c_sa[4] 求和,再取负并除以当前盒体积,应与整体 Pxy 对应。不要把单个原子条目直接当成已经除过体积的压力。
本例同时从 LJ 粒子对重新求力与 xy 维里,并加上热运动速度的动能项核对压力。能量平移只改变势能零点,不改变截断内的力。周期边界采用真实三斜盒,不能当成普通正交盒直接逐轴裁切。

左图两个随机种子的瞬时 Pxy 起伏明显;右图列出各组真实轨迹中最大的能量/力误差,不是加速比。图中的微小误差保留原值,没有为好看截断为零。原图。公式及符号见 LAMMPS stress/atom。
4. 不重跑动力学,也能从旧轨迹补提速度分箱#
本资料包的参考速度分箱就是读取已保存的 x、y、z、vx、vy、vz 后,由原生 rerun 重新输出。该步骤不积分新轨迹,只处理已有的 31 帧。先查看完整重放输入:
cat reference/p100-kokkos-rate0.10-s32001/reprofile.lmp
units lj
atom_style atomic
boundary p p p
read_data final.data
pair_style zero 2.5
pair_coeff * *
compute layers all chunk/atom bin/1d y lower 0.1 units reduced
fix profile all ave/chunk 1 1 100 layers vx vy vz file velocity.profile format " %.16g"
thermo 100
thermo_style custom step atoms
rerun shear.dump dump x y z vx vy vz box yes
在对应计算目录、已有资源分配且加载 LAMMPS 模块后,可用 mpirun -np 1 lmp -in reprofile.lmp 执行;本例原始 velocity.profile 会被替换,先备份需要保留的结果。这里采用 pair_style zero,因此这次重放仅用于速度分箱,不用于补算 LJ 能量与压力。若要补算能量和力,必须恢复真实势函数及全部必要输入。
轨迹必须保存所需速度并保留完整周期盒。本例每 100 步一帧,对应 ave/chunk 1 1 100,可以逐帧重提;它不能恢复未保存时间点的细节,也不能把这些稀疏帧当成每一步都有数据的时间平均。见 LAMMPS rerun。