LAMMPS近场动力学弹性与断键
用两个材料点演示PMB视界、拉伸、临界伸长和damage/atom输出,区分力密度与实际作用力。
阅读本篇目录
近场动力学用有限视界内材料点之间的相互作用描述连续体。本例采用PMB模型,只有两个材料点,目的是看懂弹性伸长、临界断键和损伤输出;它不是裂纹扩展或材料断裂韧性的预测模型。
1. 运行共同资料包#
下载完整输入、运行脚本和绘图包,解压进入 lammps-mesoscale,在已分配的CPU作业内执行:
bash run.sh
也可 sbatch job.slurm 提交。CPU分区按56核整节点分配和计费;本例只用一个线程,使用 lammps/30Sep2026-8173m 的普通CPU样式、oneAPI2024.2构建,绘图用 sisl/0.16.4。本例不是GPU加速测试。CPU队列处于维护时请待恢复后提交,不在登录节点做生产模拟。
脚本按输入逐项运行,在 raw/ 保留原生输出,在 results/ 输出全数组和汇总,在 plots/ 生成本次图片。三个教程共用一个包,完整运行一次后只读结果和重画即可。
2. 完整输入#
cat inputs/peri-stretch-break.lmp
units si
atom_style peri
boundary f f f
atom_modify map array
lattice sc 0.001
region box block -0.003 0.004 -0.003 0.003 -0.003 0.003 units box
create_box 1 box
create_atoms 1 single 0 0 0 units box
create_atoms 1 single 0.001 0 0 units box
set group all density 2200
set group all volume 1e-9
pair_style peri/pmb
pair_coeff * * 1e18 0.002 0.02 0
neighbor 0.0001 bin
group right id 2
compute damage all damage/atom
thermo 1
thermo_modify norm no
run 0
write_dump all custom initial.dump id type x y z fx fy fz c_damage modify sort id format float %.17g
displace_atoms right move 0.00001 0 0 units box
run 0
write_dump all custom elastic.dump id type x y z fx fy fz c_damage modify sort id format float %.17g
displace_atoms right move 0.00003 0 0 units box
run 0
run 0
write_dump all custom broken.dump id type x y z fx fy fz c_damage modify sort id format float %.17g
初始距离1mm,每个点的代表体积10⁻⁹m³、密度2200kg/m³;视界2mm。pair_coeff 中1e18是PMB微模量系数,并不是直接的杨氏模量。临界伸长设为0.02,最后参数0关闭与最小伸长相关的修正,方便看清阈值。此处几何下视界边缘体积修正因子为1。
3. 三个状态如何衔接#
先 run 0 建立初始材料点邻接关系,再把右点向外移0.01mm到1%伸长,读取弹性力与损伤;继续移0.03mm达到4%伸长,超过2%阈值后断键,再更新一次力。
cat raw/peri-stretch-break/elastic.dump
cat raw/peri-stretch-break/broken.dump
| 状态 | 伸长 | 每点损伤 | 原生力密度大小/(N/m³) |
|---|---|---|---|
| 初始 | 0 | 0 | 0 |
| 弹性 | 1% | 0 | 1×10⁷ |
| 断键后 | 4% | 1 | 0 |
这里原生 fx 是材料点的力密度。本例乘代表体积10⁻⁹m³后,对应作用力 0.01N;不能把原生1e7直接写成1e7N。

compute damage/atom 根据失去的材料点相互作用计算损伤。只有一个邻接伙伴时,断开它就从0变成1;真实三维模型中的损伤通常会有中间值。
4. 复查结果并重画#
module load sisl/0.16.4
python -B verify.py --reference
python -B plot.py
本例的位移通过 displace_atoms 直接施加、各状态用零步更新,因此没有加载速率或动态裂纹速度。做实际断裂问题时,需要建立足够大的离散材料、设置加载和积分器,检查点间距、视界、边界效应及材料参数。