LAMMPS 碳体系AIREBO实操
64原子碳片的完整建模输入、LJ和扭转开关、真实能量分解、原子力与短时动力学。
阅读本篇目录
下载完整输入、势文件、实际轨迹和绘图脚本,解压进入目录,先查看已有结果:
bash run.sh
输出 analysis/ 和 figures/。重新计算时先核对脚本里的分区适合自己的账户,再提交:
sbatch submit.slurm
这套脚本申请1个P100和1个CPU,依次运行普通计算路径、适用的GPU/Kokkos路径,再分析自己的结果。已有 work/analysis/figures 时请另解压一份,不要覆盖。直接执行 bash run.sh compute 或文中的 lmp 命令时,必须已经处于分配好的计算资源中。
实际软件为 LAMMPS 30Sep2026,GCC 13.3、OpenMPI 5.0.10、CUDA 12.8;GPU包采用Mixed Precision,Kokkos 5.2.1采用双精度。程序链接现有PLUMED 2.9.4,但本文不使用偏置。数据后处理使用ASE 3.29环境中的NumPy与Matplotlib。普通路径的数值对照在同一P100计算资源的CPU上完成,不是Intel Xeon 8173M性能测试。
1. 建立碳片并选择正确后端#
本例为64个碳原子的周期碳片,面外留30 Å空间,并加入很小的可复现坐标扰动,方便看到非零力和能量项。它不是已经完全优化的石墨烯结构。
**AIREBO在这套软件中使用普通计算路径。**这里没有宣称存在 airebo/gpu 或 airebo/kk;在有GPU的节点上运行,也不自动成为GPU加速。包中SW/Tersoff/ReaxFF的加速选择不能套到AIREBO上。需要单独做AIREBO时,应选适合自己账户的CPU作业资源,而不是为了这个势无条件申请GPU。
2. 完整输入#
inputs/airebo-scale-1p0-cpu/in.lammps:
newton on
units metal
atom_style atomic
boundary p p p
lattice custom 2.46 a1 1 0 0 a2 0 1.73205080756888 0 a3 0 0 12.1951219512195 basis 0 0 .5 basis .5 .166666666666667 .5 basis .5 .5 .5 basis 0 .666666666666667 .5
region box block 0 4 0 4 0 1
create_box 1 box
create_atoms 1 box
mass 1 12.011
displace_atoms all random .02 .02 .05 20261031 units box
pair_style airebo 3.0 1 1
pair_coeff * * potentials/CH.airebo C
compute parts all pair airebo
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
compute pea all pe/atom
compute pesum all reduce sum c_pea
timestep 0.0001
thermo 100
thermo_style custom step time temp pe ke etotal press vol c_pesum c_parts[1] c_parts[2] c_parts[3]
thermo_modify norm no format float %.16g
run 0
write_dump all custom final.dump id type x y z vx vy vz fx fy fz c_pea modify sort id format float %.16g
print "$(pe:%.16g) $(vol:%.16g) $(c_pesum:%.16g) $(c_parts[1]:%.16g) $(c_parts[2]:%.16g) $(c_parts[3]:%.16g)" file energy.dat screen no
lattice custom 定义四原子的矩形碳单元,沿面内两个方向各重复4次,得到64原子。a3只用于设置面外空间;不能把含任意真空厚度的三维压力直接当作二维材料面内应力。
pair_coeff * * potentials/CH.airebo C 将type 1对应为C。AIREBO参数针对C/H体系,文件名里有CH不代表所有元素都能使用。单元素碳计算不需要额外给不存在的H建立类型。
3. LJ与扭转项如何开关#
pair_style airebo 3.0 1 1
pair_style airebo 3.0 0 1
pair_style airebo 3.0 1 0
pair_style airebo 3.0 0 0
这四行表示四个独立输入中的选择,不要连续粘到同一个输入里以为得到四套结果。第一个参数3.0控制LJ截断尺度;后两个0/1分别控制LJ与扭转项。不能把它与以Å为单位的通用两体截断直接混为一谈。
compute parts all pair airebo 输出REBO、LJ、扭转三部分。对完全相同的这份扰动坐标,实际全胞结果为:
| LJ / 扭转 | REBO / eV | LJ / eV | 扭转 / eV | 全胞总势能 / eV |
|---|---|---|---|---|
| 1 / 1 | -497.63342134 | -1.07649237 | 25.34329991 | -473.36661380 |
| 0 / 1 | -497.63342134 | 0.00000000 | 25.34329991 | -472.29012143 |
| 1 / 0 | -497.63342134 | -1.07649237 | 0.00000000 | -498.70991371 |
| 0 / 0 | -497.63342134 | 0.00000000 | 0.00000000 | -497.63342134 |

能量项有正有负,图中LJ项相对很小,具体数字请看表或下载CSV。关闭某一项是在比较不同模型选择;不能把这种开关当作在同一物理模型中任意删除“不好看”的能量。
4. 先读单点,再做短时动力学#
在已分配资源中单独查看这个输入:
module purge
module load lammps/30Sep2026-p100-gpu
cd inputs/airebo-scale-1p0-cpu
cp -r ../../potentials .
lmp -in in.lammps
cat energy.dat
本例全胞能量与三个分量的和一致,能量差分与实际非零原子力一致。analysis/forces.csv 可查看对应数字;原始坐标、力和每原子能量在 final.dump 中。
airebo-md-0-cpu 另以0.0001 ps时间步做1000步NVE,总长0.1 ps,初始温度100 K。它演示轨迹与能量检查,不用于声称碳材料已经热平衡或计算出热输运系数。需要继续做拉伸、缺陷或热导时,先针对目标结构和势函数检查尺度、边界、时间步和统计长度。
官方参考:AIREBO及REBO族。需要Si势看SW/Tersoff/COMB,可变电荷反应势看ReaxFF/COMB3。