LAMMPS 教程:移动原子演示

LAMMPS 代表 Large-scale Atomic/Molecular Massively Parallel Simulator。

LAMMPS 是一种经典的分子动力学仿真代码,专注于材料建模。它旨在在并行计算机上高效运行,并且易于扩展和修改。LAMMPS 最初由美国能源部机构桑迪亚国家实验室开发,现在包括来自许多机构的许多研究小组和个人的贡献。LAMMPS 的大部分资金来自美国能源部 (DOE)。LAMMPS 是根据 GNU 公共许可证版本 2 (GPLv2) 的条款分发的开源软件。

本教程将通过 3 种不同的方式:velocity、fix move、fix setforce 分别移动 3 个原子

  1. 3 种原子运动控制方式(velocity、fix move、fix setforce)的具体设置
  2. 模拟系统的基本参数(边界、区域、单位等)如何定义
  3. 输出文件的配置方式
  4. 各原子运动规律的理论依据

教程链接: go.openbayes.com/GdLQk

该教程将在云平台 OpenBayes.com 上使用 RTX 4090 进行演示,使用下方邀请链接注册即可获得 4 小时 RTX 4090 免费使用时长:

openbayes.com/console/sig...

一、输入文件说明

in.txt 输入文件

文件解析

csharp 复制代码
#3 个原子运动演示

#设置模拟单位系统为 Lennard-Jones(LJ)单位
#LJ 单位是分子模拟中常用的无量纲单位,便于不同体系间的比较
units           lj
#设置原子样式为atomic(仅包含原子类型和位置信息,无分子结构)
atom_style      atomic
#定义边界条件:3 个方向均为固定边界(f = fixed)
#固定边界意味着原子无法穿过边界,也不会从另一侧周期性出现
boundary        f f f  
#定义模拟区域的几何范围
#格式:region <区域名> block <x起始> <x结束> <y起始> <y结束> <z起始> <z结束>
#此处创建一个名为「box」的长方体区域,X 方向 0-150,Y 方向 0-300,Z 方向 0-10
region          box block 0 150 0 300 0 10  
#基于定义的区域创建模拟盒子
#格式:create_box <原子类型数量> <区域名>
#此处创建包含1种原子类型的模拟盒子,边界由"box"区域定义
create_box      1 box
#在模拟盒子中创建 3 个原子(均为类型1)
#格式:create_atoms <原子类型> single <x坐标> <y坐标> <z坐标>
#3 个原子初始 Y 坐标均为 10.0,X 坐标分别为 30.0、70.0、110.0(横向分开便于观察)
create_atoms    1 single 30.0 10.0 5.0   # ID=1(用于演示 velocity 命令)
create_atoms    1 single 70.0 10.0 5.0   # ID=2(用于演示 fix move 命令)
create_atoms    1 single 110.0 10.0 5.0  # ID=3(用于演示 fix setforce 命令)
#设置原子类型 1 的质量为 1.0(LJ 单位下)
#质量会影响由 fix setforce 产生的加速度(a = F/m)
mass            1 1.0
#设置原子间相互作用势类型为 none(无相互作用)
#关闭原子间作用力,避免相互干扰,使每种运动方式的效果更纯粹
pair_style      none  

---------------- 原子 1:使用velocity命令控制运动 ----------------

bash 复制代码
#1. 创建原子组vel_group,仅包含ID=1的原子
group           vel_group id 1
#2. 使用 velocity 命令设置原子的初始速度
#格式:velocity <组名> set <vx> <vy> <vz>
#此处设置 X 和 Z 方向速度为 0.0,Y 方向速度为 50.0(沿 Y 轴正方向运动)
#velocity 命令设置的速度会通过后续的积分器更新位置,保持匀速运动(无外力时)
velocity        vel_group set 0.0 50.0 0.0  

---------------- 原子 2:使用 fix move 命令控制运动 ----------------

bash 复制代码
#1. 创建原子组 move_group,仅包含 ID=2 的原子
group           move_group id 2
#2. 先将原子初始速度设为 0.0(确保初始静止)
velocity        move_group set 0.0 0.0 0.0  
#3. 使用 fix move 命令强制原子运动
#格式:fix <ID> <组名> move linear <vx> <vy> <vz>
#此处设置 X 和 Z 方向速度为 0.0,Y 方向强制速度为 30.0
#fix move 命令会直接按指定速度更新位置,不受动力学方程影响(强制匀速)
fix             2 move_group move linear 0.0 30.0 0.0  

---------------- 原子 3:使用 fix setforce 命令控制运动 ----------------

python 复制代码
创建原子组 force_group,仅包含 ID=3 的原子
group           force_group id 3
#2. 先将原子初始速度设为 0.0(确保初始静止)
velocity        force_group set 0.0 0.0 0.0  
#3. 使用 fix setforce 命令施加恒定力
#格式:fix <ID> <组名> setforce <fx> <fy> <fz>
#此处设置X和Z方向力为 0.0,Y 方向力为 20.0
#力会产生加速度(a=F/m=20.0/1.0=20.0),使原子做匀加速运动(速度随时间增加)
fix             3 force_group setforce 0.0 20.0 0.0  
#添加时间积分器,用于更新原子位置和速度
#fix nve 表示使用 NVE 系综(微正则系综),守恒粒子数、体积和能量
#积分器会根据牛顿运动方程,结合速度、力等参数计算每一步的位置变化
fix             1 all nve  
#设置轨迹输出参数
#1. dump 命令:每1步记录一次所有原子的位置信息,输出到 trajectory.xyz 文件
#格式:dump <ID> <组名> atom <输出频率> <文件名>
dump            1 all atom 1 trajectory.xyz  
#2. 调整轨迹文件格式:按原子 ID 排序输出,使结果更易读
dump_modify     1 sort id  
#设置模拟时间参数
#1. 设置时间步长为 0.01(LJ 单位下的时间)
#时间步长是模拟中最小的时间单位,决定计算精度和效率
timestep        0.01  
#2. 设置热力学信息输出频率:每 10 步输出一次
thermo          10  
#3. 设置热力学输出内容:步数、温度、动能、势能、总能量
thermo_style    custom step temp ke pe etotal  
#运行模拟:总步数为 500 步
#总模拟时间 = 步数 × 时间步长 = 500 × 0.01 = 5.0(LJ 时间单位)
run             500   
#各原子 Y 方向运动预期结果(初始 Y=10.0):
#- 原子 1(velocity):匀速运动,位移=速度×时间=50.0×5.0=250.0 → 最终 Y≈260.0
#- 原子 2(fix move):强制匀速,位移=强制速度×时间=30.0×5.0=150.0 → 最终 Y≈160.0
#- 原子 3(fix setforce):匀加速运动,位移=0.5×加速度×时间²=0.5×20.0×5.0²=250.0 → 最终 Y≈260.0

二、操作步骤

  1. 克隆并启动容器

登录 OpenBayes.com,在「公共教程」页面,点击「HPC 高性能计算」栏目,选择「LAMMPS:移动原子演示」教程。

页面跳转后,点击右上角「克隆」,将该教程克隆至自己的容器中。

选择「NVIDIA GeForce RTX 4090」以及「lammps」镜像,OpenBayes 平台提供了 4 种计费方式,大家可以按照需求选择「按量付费」或「包日/周/月」,点击「继续执行」。可以使用下面的邀请链接,获得 RTX 4090 使用时长!
openbayes.com/console/sig...

待系统分配好资源,当状态变为「运行中」后,点击「打开工作空间」。

2. 运行 lammps

首先打开「终端」,输入以下命令运行 lammps。

arduino 复制代码
mpirun --allow-run-as-root -np 2 lmp -sf gpu -pk gpu 1 < in.txt 

3. 文件输出

待模型运行完成后,得到一个输出文件「trajectory.xyz」,这是原子轨迹文件,可通过 VMD、Ovito 等软件可视化拉伸过程中的晶体结构演变。我们将该文件下载到本地并载入到 Ovito 软件中,即可得到原子运动模拟视图。

相关推荐
聚客AI3 小时前
⭐超越CNN与RNN:为什么Transformer是AI发展的必然选择?
人工智能·llm·掘金·日新计划
快手技术3 小时前
可灵AI数字人来了!快手重磅发布Kling-Avatar,面向多模态指令理解与控制的数字人长视频生成新范式
人工智能
算家计算4 小时前
PDF解析神器——MinerU本地部署教程,一键去除页眉页脚,精准提取公式表格,支持84种语言,让文档转换更简单!
人工智能·开源
逛逛GitHub4 小时前
面壁「小钢炮」最新开源!0.5B 的声音克隆神器。
人工智能·github
后端小肥肠5 小时前
Coze 一键生成 AI 星座漫画,从 0 到 1 拿捏 10w + 流量!,小白可学
人工智能·aigc·coze
canonical_entropy5 小时前
AI的集体反思:我们为什么未能预见到"可逆计算"的演进方向?
人工智能·低代码·aigc
mortimer7 小时前
Python 文件上传:一个简单却易犯的错误及解决方案
人工智能·python
IT_陈寒7 小时前
Vue3性能优化实战:这5个技巧让我的应用加载速度提升了70%
前端·人工智能·后端