LAMMPS 专题

LAMMPS 裂纹反力与配位分析

从实际dump提取约束前相互作用力、张开量和近邻变化,讲清二维OVITO设置与类型排除的区别。

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

本篇接续裂纹加载输入篇,两篇使用同一个完整操作包。先完成上一篇的 bash run.sh,本篇只读取已经生成的轨迹,不再次运行 MD。

1. 读取曲线和提交设置#

head -n 5 tables/p100-speed0.3-seed48001.csv
cat p100.slurm

每个 CSV 包含时间、顶部位移、最初缺口近邻对的平均额外张开、顶部原子间纵向力、外部加载力、总势能、动能和配位信息。grip_opening 是上夹持层相对初始位置的移动;notch_mean_extra_opening 是最初缺口跨面近邻对 y 间距相对初始值的平均增量。它们是不同测量量,不应互相替代。

2. 为什么直接输出夹持层 Fy 得到零#

输入中的次序很重要:

fix raw all store/force
fix constrained grips setforce NULL 0.0 0.0
compute reaction upper reduce sum f_raw[2]

先保存原子间作用力,再施加夹持约束。fy 是最后的约束后力,夹持层对应值被设为零;f_raw[2] 保存约束前 y 力。本例顶部 y 方向保持恒速,因此外部需要施加的纵向力为 −sum(f_raw[2])。每粒子和总反力都在轨迹与 CSV 中保留。

实际顶部粒子约束前后力与薄片的原子对相互作用维里

左图可看到顶部各粒子的原子间力分布,而约束后的 y 力为零。右图是 compute interaction all stress/atom NULL pair 产生的 Syy,只包含原子对维里,不含动能项。

原子 stress/atom 输出本质上是负维里,具有应力乘体积/面积的量纲;这里使用 LJ 单位,图中按 ε 显示,没有除以人为设定的粒子体积,也不是 GPa。二维材料若需要面内应力,应说明面积分配方法;三维材料还需要明确厚度。定义与顺序参考store/force和stress/atom。

3. 用 OVITO 终端脚本读取真实轨迹#

集群提供独立的 OVITO 3.16.1 Python 环境。运行:

module load ovito/3.16.1
python ovito_coordination.py work

脚本读取八组轨迹的初始和末帧,导出每个粒子的坐标、LAMMPS 配位数、OVITO 几何配位数及被排除的近邻数。它显式设置二维分析,关闭几何邻居分析中的三个方向周期性:本例 x、y 本来就是非周期自由边界,z 周期标记来自二维 LAMMPS 的盒子要求,不能被后处理当成重复堆叠的厚度层。

head -n 6 work/ovito-data/p100-speed0.3-seed48001-step0.csv

可按以下思路写自己的 OVITO 脚本:导入 crack.dump,用 Python modifier 设置 data.cell_.is2D=True 和 data.cell_.pbc=(False,False,False),再用 CoordinationAnalysisModifier(cutoff=1.4)。包内完整脚本保留了粒子 ID 排序和 CSV 导出,便于接入后续绘图。OVITO 单元格接口见官方 Python 文档。

几何邻居和参与相互作用的邻居为何不同#

OVITO 不会从原子坐标自行知道 LAMMPS 的 exclude type 2 3。初始缺口处虽然几何距离较近,却已经不参与设定的相互作用。实际初始态有 24 个粒子的两种配位数不同,几何配位数总共多出 46 个邻居计数,即 23 对被排除的近邻各贡献两次计数。

较快加载实例末态,这些缺口跨面粒子已经相距较远,在 1.4 σ 的几何截断内没有此项差异。该变化不能解释成程序恢复了原先被排除的相互作用;类型排除仍然有效。原生排除规则见neigh_modify 文档。

4. 怎样观察缺口附近的近邻变化#

本包跟踪最初跨越中面的近邻对。最初已经排除的缺口对单独标记;原先相互作用的对,如果当前间距超过 LJ 截断 2.5 σ,就记录为不再处于该对势相互作用范围。

跨面近邻超过截断的实际计数与末态缺口局部图

较快加载两种子末态均有 3 对原先相互作用的跨面近邻超过截断;较慢加载末态为 0 对。右图灰线是初始排除对,红线是原先相互作用、末态超过截断的对,绿线仍在截断范围内。该数值是明确的粒子对距离统计,不直接等于裂纹长度,也没有将 3 对转成临界裂纹扩展量。

5. 改图、导出和保留结果#

根据自己完成的计算重新导出并画图:

bash analyze.sh work

该命令读取已有 dump,运行独立数据整理及 OVITO,不重复 MD。想重画教程的原始示例时:

bash analyze.sh

这会用附带的 reference/ 数据覆盖当前 figures/ 与 tables/;要同时保留两套图,先复制保存。work/ 原生轨迹不会被改写。短时动态载荷中的波动、初始随机速度和有限尺寸效应都保留在输出中,不应为了曲线平滑而将其视为坏数据删除。

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

查看配图

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

100%查看原图 ↗