Agent skill

lammps

Use when working on classical materials simulations with LAMMPS, especially interatomic-potential selection, shock or deformation setups, thermodynamic runs, and structure analysis for solids or nanomaterials.

Stars 332
Forks 44

Install this agent skill to your Project

npx add-skill https://github.com/ZimoLiao/scholaraio/tree/main/.claude/skills/lammps

SKILL.md

LAMMPS 材料科学模拟

用 LAMMPS 做材料科学分子动力学模拟:晶体构建、势函数选择、形变/冲击、结构分析、可视化。

本 skill 故意保持轻量

  • 它负责告诉 agent 什么时候该用 LAMMPS、该遵守什么科学规范、完整工作流长什么样
  • 承担完整接口手册的职责
  • 具体命令、参数、语法、package 限制,统一去查 scholaraio toolref

Agent 默认协议(toolref-first)

对 LAMMPS 问题,agent 默认按这个顺序工作:

  1. 先判断问题属于哪类对象:pair_stylefixcomputedumpregionboundaryrun 流程
  2. 写输入脚本前,优先查高风险命令页,而不是凭记忆拼装
  3. 命令名和用户说法不一致时,优先用 search 找主入口,再用 show
  4. 如果 toolref 已能回答,就不要在 skill 里重复写手册
  5. 如果 toolref 命中不好或某个 package 页面缺失,agent 应先完成任务,再把它标记为维护层缺口,而不是让用户自己补

这意味着:

  • 用户不该自己去打磨 fix / pair_style 的映射关系
  • agent 应自己消化 fix npt -> fix_nhpair style eam -> pair_eam 这类入口差异
  • 只有反复出现的缺口才进入正式 onboarding

前置条件

bash
# 安装(含 GPU 支持)
conda install -c conda-forge lammps
# 可视化
pip install ovito

验证:lmp -h 应显示已安装的 packages(需包含 GPU、MANYBODY、EXTRA-COMPUTE)。

GPU 加速:package gpu 4 在输入脚本开头启用,suffix gpu 自动为支持的 pair_style 加 /gpu 后缀。

并行运行约束:

  • 启动 MPI 作业时,优先使用 LAMMPS 所在环境自带的 mpirun/mpiexec
  • 不要默认混用系统里的另一套 MPI launcher;如果 lmp 链接的 libmpi 与 launcher 不一致,可能出现“进程活着但无日志输出”的假启动挂起
  • 需要绑核或做 rank pinning 时,先用小规模 MPI 诊断确认启动和绑定语法,再放大到正式规模

何时使用

适合:

  • 金属、陶瓷、半导体、纳米材料的经典 MD
  • 力学性质、相变、位错/缺陷演化、冲击波、热输运
  • 已有合适经验势函数的体系

不适合:

  • 需要显式电子结构精度时,优先考虑 DFT / Quantum ESPRESSO
  • 势函数没有可靠文献依据时,不要直接开算

Toolref 优先

当 agent 不确定命令、参数、限制、输出字段时,先查 toolref,再写输入脚本

常用查法:

bash
scholaraio toolref search lammps "nose hoover thermostat"
scholaraio toolref show lammps fix_nh
scholaraio toolref show lammps pair_eam
scholaraio toolref show lammps compute_cna_atom
scholaraio toolref show lammps fix_deform

推荐习惯:

  • 写脚本前先查 pair_style / fix / compute / dump
  • 遇到 package 依赖时先用 toolref show 看 Restrictions
  • 遇到模糊概念先用 toolref search,确定候选命令后再 show

如果遇到覆盖缺口:

  • 先用官方 LAMMPS 文档继续完成任务
  • 明确说明这里是 toolref 覆盖/排序缺口,不是用户操作错误
  • 不要让用户为了当前任务先停下来维护文档层
  • 如果官方手册没有解释清楚实际运行异常、MPI 启动问题、版本兼容或绑定语法,继续上网检索官方文档、社区讨论和已知问题,不要猜

核心流程

知识库协作模式

  1. scholaraio usearch "<材料/现象>" 检索相关论文
  2. 从论文提取:势函数选择、晶格常数、实验基准值(相变压力、弹性常数等)
  3. 在输入脚本注释中标注参数来源
  4. 计算完成后与文献数据定量对比

建议按这个顺序思考:

  1. 体系是否适合经典势函数
  2. 选择哪类势函数
  3. 选择边界条件、加载方式、温压控方式
  4. 选择结构分析与输出
  5. 跑小体系/短步数 smoke test
  6. 正式运行后和文献/实验做定量对比

参数出处规则:

  • 严格复现任务里,先查库内已入库论文和补充材料
  • 如果关键参数仍然缺失,需要别的论文或 supplementary 才能定死,应直接向用户明确索取,不要猜
  • 只有当文献明确允许范围选择时,才可以做工程性取值,并要说明这是“派生设置”而不是“严格复现参数”

势函数选择(最关键决策)

势函数类型 适用场景 LAMMPS pair_style
EAM/FS 金属(Fe, Cu, Al, Ni...) eam/fs, eam/alloy
Tersoff 共价半导体(Si, C, SiC) tersoff
ReaxFF 反应性体系(燃烧、氧化) reaxff
AIREBO 碳纳米材料(CNT, 石墨烯) airebo
SW Si, GaN sw
MEAM 多元合金 meam

势函数文件来源:

科学规范:势函数选择必须有文献依据,不能随便选一个"能跑"的。

典型任务

  • 冲击波 / 爆轰 / 高应变率:重点看非周期边界、活塞施加方式、空间剖面输出
  • 拉伸压缩:重点看 fix deform、应力应变提取、应变率合理性
  • 温度驱动相变:重点看升温速率、平衡充分性、结构识别
  • 缺陷与位错:重点看结构分析和可视化,不只看总能量

常用结构分析:

  • cna/atom:区分 BCC/FCC/HCP
  • ptm/atom:更稳健的局域结构识别
  • centro/atom:缺陷检测
  • voronoi/atom:局域环境统计

这些命令的准确接口、参数和限制请直接查 toolref

可视化(OVITO)

OVITO 是 LAMMPS 的标准可视化工具。

python
from ovito.io import import_file
from ovito.modifiers import CommonNeighborAnalysisModifier, SliceModifier
from ovito.vis import Viewport, TachyonRenderer

pipeline = import_file("dump.shock.*", sort_particles=True)
pipeline.modifiers.append(CommonNeighborAnalysisModifier())

# 按结构类型着色
def color_by_phase(frame, data):
    import numpy as np
    colors = np.zeros((data.particles.count, 3))
    cna = data.particles["Structure Type"]
    colors[cna == 3] = [0.3, 0.5, 0.8]   # BCC → 蓝
    colors[cna == 2] = [0.85, 0.15, 0.15] # HCP → 红
    colors[cna == 1] = [0.2, 0.8, 0.2]    # FCC → 绿
    colors[cna == 0] = [0.7, 0.7, 0.7]    # Other → 灰
    data.particles_.create_property("Color", data=colors)

pipeline.modifiers.append(color_by_phase)

vp = Viewport(type=Viewport.Type.ORTHO, camera_dir=(0, -1, 0))
vp.zoom_all(size=(1920, 1080))
renderer = TachyonRenderer(shadows=False, ambient_occlusion=True)
vp.render_image(filename="snapshot.png", size=(1920, 1080), renderer=renderer)

推荐输出:

  • 结构类型着色快照或动画
  • 应力/温度/速度的空间剖面图
  • 与文献基准的对比图,而不是只给一张原子图

性能参考

体系大小 势函数 GPU 配置 预期性能
~500k 原子 EAM 4×A100 ~50 ns/day
~2M 原子 EAM 4×A100 ~15-20 ns/day
~100k 原子 ReaxFF 4×A100 ~1-2 ns/day

科学规范

检查项 正确做法 常见错误
势函数 有文献验证的 EAM/Tersoff 随便选一个 LJ
体系大小 足够消除有限尺寸效应 太小导致伪周期
平衡 先 NPT 平衡再施加载荷 直接拉伸未平衡体系
时间步长 metal 单位下 0.001 ps (1 fs) 步长太大导致能量不守恒
边界条件 冲击方向用 s(非周期) 全周期导致冲击波自干涉
截断半径 根据势函数要求设置 用默认值不检查

Agent 行为准则

  • 不要凭记忆瞎写 fix / compute / pair_style 细节,先查 toolref
  • 不要因为“能跑”就默认模型合理,必须说明势函数和参数依据
  • 不要只汇报温度/能量曲线,要给结构、相分数、应力或波前等材料学指标
  • 不要把 LAMMPS 当黑箱;结果解释必须回到材料机制

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results