LAMMPS 专题

LAMMPS 分组温度与MSD

实际比较去除质心后的动能、自由度、分组质心MSD,以及spread/reduce数据传递。

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

下载分组统计实例包,在已分配的兼容CPU资源中运行:

unzip lammps-chunk-observables-wave250.zip -d chunk-practice
cd chunk-practice
bash run.sh

使用ase/3.29.0提供Python绘图环境,计算模块为lammps/30Sep2026-8173m,CPU构建使用Intel oneAPI2024.2与Intel MPI2021.13。流程只用1个CPU线程,输出results-cpu/、analysis/与figures/。重新练习请用新解压目录,避免覆盖已有文件。

这是一个16个点粒子、4个分组的受控运动例子。采用LJ约化单位,粒子质量为1或2,分子ID为7、23、41、99;没有键约束、库仑相互作用,LJ势的epsilon特意设为0。电荷用于演示偶极统计。它帮助看懂命令、单位、数组与周期边界,不代表真实材料的相互作用模型,也不是扩散或温度平衡的生产计算。

1 为什么平移很快,不等于内部很热#

compute mols all chunk/atom molecule compress yes nchunk once ids once
compute temperature all temp/chunk mols temp kecom internal com yes adof 3 cdof -3

com yes逐组减去质心速度;adof 3 cdof -3给本例每个4原子组设置3×4−3=9个自由度。三个输出依次为内部温度、质心平移动能与内部动能。

head -n 14 results-cpu/free_neutral/temperature.dat

初始第7号组:T=0.02791667、质心平移动能0.1575、内部动能0.125625;第23号组:T=0.01794676、质心平移动能12.0375、内部动能0.08076042,均为LJ约化单位。后者平移快,但去除平移后的内部动能更小。

**去除质心平移不等于去除转动。**初始速度包含整体转动成分,这部分仍在内部动能中。真实刚性分子、SHAKE约束或不同维度体系应重新考虑自由度,不能无条件复制9这个数。

四个组的实际质心、形状、内部温度和MSD随时间变化

2 MSD追踪的是分组质心#

compute msd all msd/chunk mols
fix out_msd all ave/time 10 1 10 c_msd[*] file msd.dat mode vector format " %.16g"

四列分别是质心位移的dx²、dy²、dz²和总和,初始参考由首次调用保存。它不是组内所有原子MSD的平均。

head -n 14 results-cpu/free_neutral/msd.dat
tail -n 5 results-cpu/free_neutral/msd.dat

23号组以速度(2,0.05,−0.1)自由平移,时间1时COM总MSD=4.0125;7号组为0.0525。这里的MSD与t²成正比,是弹道运动,不能拟合成扩散系数。需要扩散统计时用足够长、平衡且进入扩散区间的真实轨迹,参考扩散教程。

重新定义compute会改变参考;连续续算时要考虑参考状态与chunk身份,不要把两段各自从零开始的MSD直接拼成一条。

3 将每组的值分配给组内原子#

compute com all com/chunk mols
compute gyr all gyration/chunk mols
compute spread all chunk/spread/atom mols c_com[*] c_gyr
dump trajectory all custom 10 trajectory.dump id mol type xu yu zu c_spread[*]

spread的4列是每个原子所属组的质心x/y/z和Rg。可以在可视化工具里按分子属性着色,也可再对空间网格平均。组值复制给每个原子后,直接按原子平均会按原子数加权;不同长度链之间比较时要特别注意。

head -n 20 results-cpu/free_neutral/trajectory.dump

4 将原子量归约成每组数值#

compute vel all property/atom vx vy vz
compute sum all reduce/chunk mols sum c_vel[*]
compute max all reduce/chunk mols max c_vel[*]

reduce/chunk接收per-atom compute/fix/variable。本例分别输出速度分量之和与逐分量最大值。

head -n 9 results-cpu/free_neutral/sum.dat
head -n 9 results-cpu/free_neutral/max.dat

速度之和不是质量加权的总动量,逐分量最大值也不是最大速度模长。要总动量,可先定义原子变量mass×vx等,再归约;要最大速率,先计算√(vx²+vy²+vz²),再求max。

包中analysis/chunk-observables.csv给出每个时刻、每个原始molecule ID的关键量,analyze_one.py展示如何读带块头的原生文件,不能直接把块头当普通数据行读入。

量的含义与自由度公式见官方temp/chunk、msd/chunk和reduce/chunk。

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

查看配图

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

100%查看原图 ↗