You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LAMMPS中删除指定坐标的特定原子?

解决LAMMPS中按坐标删除指定原子的问题

delete_atoms和group命令确实不支持直接通过x/y/z坐标选中原子,但可以通过**区域(region)+组(group)**的组合实现需求,具体两种实用方法如下:

方法1:为每个原子创建极小区域(推荐)

针对每个已知坐标的原子,创建一个足够小的球形/立方体区域,确保仅目标原子会被包含,再将这些原子归入同一组后删除。

示例代码(假设三个目标原子坐标为(1.0,2.0,3.0)、(4.0,5.0,6.0)、(7.0,8.0,9.0)):

# 创建三个极小球形区域,半径设为远小于体系原子间距的数值(如0.1)
region delete1 sphere 1.0 2.0 3.0 0.1 units box
region delete2 sphere 4.0 5.0 6.0 0.1 units box
region delete3 sphere 7.0 8.0 9.0 0.1 units box

# 将三个区域内的原子加入同一个组
group to_delete region delete1
group to_delete region delete2 add
group to_delete region delete3 add

# 删除组内所有原子
delete_atoms group to_delete

注意事项:

  • 半径值需根据体系原子间距调整,避免误删其他原子;
  • 若体系为周期性边界,需先确认目标坐标在盒子范围内,必要时用unwrap命令处理原子坐标。

方法2:自定义变量筛选(适合复杂条件)

通过自定义变量判断原子坐标是否匹配目标值(考虑浮点精度,用范围判断更稳妥),再通过group的variable选项选中原子。

示例代码:

# 定义变量,判断原子坐标是否在目标值的极小范围内
variable del1 equal (abs(x-1.0)<0.1) && (abs(y-2.0)<0.1) && (abs(z-3.0)<0.1)
variable del2 equal (abs(x-4.0)<0.1) && (abs(y-5.0)<0.1) && (abs(z-6.0)<0.1)
variable del3 equal (abs(x-7.0)<0.1) && (abs(y-8.0)<0.1) && (abs(z-9.0)<0.1)
variable to_del equal ${del1} || ${del2} || ${del3}

# 选中满足条件的原子加入组
group to_delete variable to_del

# 删除原子
delete_atoms group to_delete

注意:不要直接用x==目标值判断,浮点精度问题可能导致筛选失效。

内容的提问来源于stack exchange,提问作者lzzard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:34:58