LAMMPS ADP与MEAM Kokkos实操
Al–Cu和Ni完整输入、势文件格式、元素映射、Kokkos启动、质量与固定晶胞应力。
阅读本篇目录
下载完整输入、势文件、实际结果与绘图脚本,在一个新目录解压后,先查看已有结果:
bash run.sh
得到 analysis/ 和 figures/。重新计算时先核对 submit.slurm 的分区适合自己的账户,然后:
sbatch submit.slurm
模板申请1个CPU核、1个P100,顺序计算76个小体系条件,再分析自己的结果。直接运行 bash run.sh compute 或文中的 lmp 命令时,必须已经处于分配好的计算资源中。已有 work/analysis/figures 时请另解压一份;只有 work 而没有分析/图目录时可用 bash run.sh analyze 继续后处理。
本例使用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。普通CPU计算路径在同一P100计算资源上完成,不是Intel Xeon 8173M性能测试。
1. 两类势分别用于什么#
本例补充Al–Cu ADP和Ni MEAM。两者都含局域环境/角向描述,输入格式及参数来源不同。Al–Cu使用原配套 AlCu.adp;Ni使用 library.meam 中的 Ni 项,本例不叠加额外MEAM参数文件。
| 模型 | 本例结构 | 普通路径 | 本例GPU加速路径 |
|---|---|---|---|
| Al–Cu ADP | 108原子FCC,a=4.05 Å,5个组成 | adp |
adp/kk |
| Ni MEAM | 108原子FCC,参照a=3.52 Å,5个尺度 | meam |
meam/kk |
本例不使用 adp/gpu 或 meam/gpu。一个编译环境中存在普通样式,不代表该普通样式正在GPU上求力;要看实际调用的后缀、启动方式和运行输出。
2. Al–Cu ADP的完整Kokkos输入#
inputs/alcu-composition-0p5-kk/in.lammps:
package kokkos neigh half
newton on
units metal
atom_style atomic/kk
boundary p p p
lattice fcc 4.05
region box block 0 3 0 3 0 3
create_box 2 box
create_atoms 1 box
group copper id <= 54
set group copper type 2
pair_style adp/kk
pair_coeff * * potentials/AlCu.adp Al Cu
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
compute pea all pe/atom
compute pesum all reduce sum c_pea
thermo 1
thermo_style custom step atoms pe vol press c_pesum
thermo_modify norm no format float %.16g
run_style verlet/kk
run 0
write_dump all custom final.dump id type mass x y z fx fy fz c_pea modify sort id format float %.16g
print "$(pe:%.16g) $(vol:%.16g) $(press:%.16g) $(c_pesum:%.16g)" file energy.dat screen no
Al Cu依次对应type 1和type 2。ADP文件不能直接交给 eam/alloy 读取。本例按ID把54个原子换成Cu,保持固定晶胞,没有把它当作充分优化的合金结构。
单独运行这份输入时,在已分配计算资源中执行:
module purge
module load lammps/30Sep2026-p100-kokkos
cd inputs/alcu-composition-0p5-kk
cp -r ../../potentials .
lmp -k on g 1 -in in.lammps
cat energy.dat
-k on g 1为本MPI进程启用分配到的1个GPU;配套 atom_style atomic/kk、pair_style adp/kk 和 run_style verlet/kk。默认仍遵守作业的CUDA可见设备,不另选未分配的卡。
本例等原子数Al–Cu普通路径的全胞能量为 -346.71585864 eV,压力约−30.57 GPa。这么大的应力提示该固定FCC晶胞与组成未处于平衡,正式物性计算前需要结构/晶胞优化与适合的相模型。这里保留原值,演示如何及时识别它。
3. Ni MEAM的完整Kokkos输入#
inputs/meamni-force-0-kk/in.lammps:
package kokkos neigh half
newton on
units metal
atom_style atomic/kk
boundary p p p
lattice fcc 3.52
region box block 0 3 0 3 0 3
create_box 1 box
create_atoms 1 box
pair_style meam/kk
pair_coeff * * potentials/library.meam Ni NULL Ni
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
group probe id 1
displace_atoms probe move 0.03 0 0 units box
compute pea all pe/atom
compute pesum all reduce sum c_pea
thermo 1
thermo_style custom step atoms pe vol press c_pesum
thermo_modify norm no format float %.16g
run_style verlet/kk
run 0
write_dump all custom final.dump id type mass x y z fx fy fz c_pea modify sort id format float %.16g
print "$(pe:%.16g) $(vol:%.16g) $(press:%.16g) $(c_pesum:%.16g)" file energy.dat screen no
pair_coeff 的结构为 library.meam Ni NULL Ni:前面的Ni从库中选条目,NULL表示本例不读取第二份附加参数文件,最后的Ni映射唯一原子类型。多组分MEAM需选对应元素和适合的交叉参数,不能把单元素示例机械扩展成任意合金。
在已分配计算资源中:
module purge
module load lammps/30Sep2026-p100-kokkos
cd inputs/meamni-force-0-kk
cp -r ../../potentials .
lmp -k on g 1 -in in.lammps
这份输入把1号原子沿x移动0.03 Å,用来获得非零力。下载包还包括参照晶格常数乘0.98、0.99、1、1.01、1.02的五个固定晶胞条件,以及普通CPU路径的逐项对照。

曲线中CPU与Kokkos几乎重合,是相同势、相同坐标下的数值比较;五点扫描没有代替完整的结构/晶胞优化与收敛研究。
4. 质量、输出与后续检查#
原势文件中的Al质量为26.982、Cu为63.546;本份MEAM库中的Ni为58.71,与Cu–Ni EAM文件中的Ni 58.689略有差别。脚本按实际势文件读取和核对,没有用一组通用原子量强行覆盖所有势。
在包根目录查看:
head analysis/conditions.csv
head analysis/forces.csv
head analysis/pressures.csv
实际逐原子输出是 final.dump,含类型、质量、坐标、力及逐原子势能;energy.dat含全胞势能、体积、压力和逐原子势能求和。需要判断差分值和单位时,继续看能量、力与压力的独立检查。完整势文件作者、参数来源和日期保留在下载包头部,另见LAMMPS ADP官方命令和MEAM官方命令。