LAMMPS镍薄层球形压入实操
720原子Ni薄层的实际球形压入,包含Slurm流程、压头输入、载荷与接触能,以及OVITO局部结构分析。
阅读本篇目录
这篇用一个720原子的Ni薄层说明球形压头怎样定义、底部怎样固定、反作用力从哪里读取,以及如何用OVITO观察局部结构。实际计算采用Foiles等人的Ni EAM势,按0.5、1.0、1.5 Å三个名义压入位置依次最小化。
这是小体系准静态操作示例。有限薄层与三个浅压入点用于理解流程,不能直接当作已收敛的纳米压痕硬度或宏观弹性模量。
1. 一条命令运行完整例子#
下载镍薄层压入实例包,在新目录执行:
python3 -m zipfile -e lammps-Ni-indent-wave530-*.zip lammps-Ni-indent
cd lammps-Ni-indent
bash run.sh
程序通过Slurm依次提交一个P100任务和一个V100 16G任务,每个任务申请一张卡与2个CPU核心。CPU参考路径也在第一个已分配的P100主机内运行,随后比较四种加速构建;不是在登录节点执行模拟。完整流程为:
- 建立Ni薄层,固定底部,先在没有压头时松弛表面。
- 固定压头位置,先后压入0.5、1.0、1.5 Å;每一层从上一层实际结构继续最小化。
- 对同样的松弛坐标,运行P100和V100 16G的GPU、Kokkos势能与原子受力计算。
- 用OVITO做自适应CNA,汇总CSV并绘制结构、载荷与精度对照图。
run.sh 自动准备 work 目录并等待两个作业完成,作业是否排队取决于当时资源。只查看随包实际结果,用 bash analyze.sh;重做完整流程时请使用新解压目录。
2. 薄层、边界与固定层#
初始结构为FCC Ni,常规胞重复6×6×5,共720原子。xy方向周期,z方向非周期,盒子高40 Å留有真空;底部z≤2 Å的144个原子固定,其余576个可以松弛。
先看完整实际输入与结构数据:
cat work/cpu-depth-1.0/in.lmp
head -n 20 reference/initial.data
输入中的 boundary p p f 对应这些边界;group fixed id ... 使用初始结构确定的固定原子编号,随后用 fix hold fixed setforce 0 0 0 保持不动。固定层采用同一批原子,而不是每压入一次都重新按当前位置改变固定成员。
原子间采用:
pair_style eam
pair_coeff * * Ni_u3.eam
neighbor 2 bin
neigh_modify every 1 delay 0 check yes
Ni_u3.eam 是LAMMPS随带的Ni势,原始文件头的作者、引用和单位一并保留在包中;不要把它随意换成其他元素势却继续沿用Ni模型解释结果。

3. 球形压头怎样定义#
球半径为6 Å,中心xy坐标为(10.56,10.56) Å。名义压入深度以无压头松弛后的最高原子位置为参考:
压头中心z = 松弛表面最高z + 球半径 − 名义压入深度
本次表面参考高度为15.83094752017833 Å,因此压入1.0 Å时,关键输入为:
fix ind all indent 10 sphere 10.56 10.56 20.83094752017833 6 units box
fix_modify ind energy yes
thermo_style custom step atoms pe f_ind f_ind[3] c_fm
min_style cg
min_modify dmax 0.05
minimize 0 0.0001 2000 20000
units metal 下,位置和半径为Å,力常数K=10的单位是 eV/ų。球面进入原子位置时才产生排斥,力的大小随重叠距离的平方增加。
fix_modify ind energy yes 要保留。 这里进行的是包含接触作用的势能最小化,需要把压头相互作用能一起加入目标能量。每次最小化中压头位置保持不动;不能一边最小化,一边把迭代步数当成真实MD时间去移动压头。
本例是逐位置松弛,没有温控器和真实加载时间,不据此给出加载速率、温度效应或动态压入结论。
4. 载荷、作用力和接触能从哪里看#
cat work/cpu-depth-1.0/properties.dat
cat tables/indent-load.csv
每个 properties.dat 从左到右为:总势能、压头接触能、作用在压头上的Fx/Fy/Fz、自由原子最大残余力。f_ind 是接触能,f_ind[1] 到 [3] 是原子作用在压头上的反作用力;与压头对原子的合力方向相反。
| 名义压入(Å) | 压头接触能(eV) | 压头向上反作用力(nN) |
|---|---|---|
| 0.5 | 0.03661650 | 1.19852 |
| 1.0 | 0.37319784 | 5.61384 |
| 1.5 | 0.90573581 | 10.11507 |
换算使用 1 eV/Å = 1.602176634 nN。接触能与Ni内部EAM能量是不同部分,总势能还包含薄层本身的能量,不能把总势能直接当作压头接触能。

图中三点来自实际依次松弛结果,连线帮助阅读,不代表连续加载曲线已经充分采样。更大的模型、更多深度、侧向尺寸、固定层厚度和势函数适用性都应按自己的目标检查。
5. 用OVITO看局部结构#
后处理脚本实际调用OVITO3.16.1的自适应Common Neighbor Analysis,对每帧720个原子分类。查看结果:
cat OVITO-CNA.csv
head cna-data/cpu-depth-1.5.csv
未加载时有576个FCC标签、144个Other标签,Other主要对应自由表面。压入1.5 Å后,本例得到563个FCC、153个Other与4个BCC局部标签。
CNA描述的是邻域几何。少数强应变原子被标为BCC,不能单独证明薄层已经发生整体FCC→BCC相变;应结合结构、应变和更充分的物理分析。需要在本地交互查看时,可把 work/cpu-depth-1.5/final.dump 下载后用OVITO打开。
6. 得到哪些文件#
head tables/accelerator-errors.csv
bash analyze.sh work
work/unloaded 是无压头松弛;work/cpu-depth-* 是三个实际逐位置松弛结果。final.data 可以继续计算,final.dump 保留坐标与受力,in.lmp 为完整实际输入。CSV和图片位于 tables、figures,每个目录的 native.log 保留原生日志。
软件为LAMMPS30Sep2026,GCC13.3.0、CUDA12.8、OpenMPI5.0.10工具链;Kokkos为5.2.1,采用双精度/C++20构建,GPU包为混合精度。四种构建的调用和结果含义见压入模型的GPU与Kokkos对照。
物理定义与选项见官方fix indent,势文件格式见EAM说明。