作者:海天一色y
适用对象:分子动力学模拟初学者、材料计算研究者
一、引言
LAMMPS(Large-scale Atomic/Molecular Massively Parallel Simulator)是目前材料科学领域最广泛使用的开源分子动力学模拟软件之一。无论是金属材料、聚合物、生物分子还是界面体系,LAMMPS都能提供强大的模拟支持。然而,对于初学者来说,编写正确的输入文件(in文件)往往是第一道门槛。
本文将系统介绍LAMMPS in文件的完整结构,帮助您建立清晰的模拟流程框架。涵盖了LAMMPS分子动力学模拟的基础知识,包括in文件的基本结构、模型设置、系统建模、力场参数、温度初始化、弛豫设置、模拟设置、输出设置以及程序运行方法等核心内容。
二、in文件八大核心模块
一个完整的LAMMPS模拟输入文件通常包含以下八个部分,按执行顺序排列:
┌─────────────────────────────────────┐
│ 1. 模型基本设置 (Basic Settings) │
│ 2. 系统建模 (System Modeling) │
│ 3. 力场参数设置 (Force Field) │
│ 4. 温度初始化 (Temperature Init) │
│ 5. 弛豫设置 (Equilibration) │
│ 6. 模拟设置 (Simulation Setup) │
│ 7. 输出设置 (Output Settings) │
│ 8. 启动运算 (Run Simulation) │
└─────────────────────────────────────┘
三、模块详解与代码实例
3.1 模型基本设置
这是in文件的开头部分,定义模拟的基本物理单位和计算环境。
# 基本设置命令
units metal # 单位制:metal(金属常用,基于Å、ps、K等)
dimension 3 # 维度:3维体系
boundary p p p # 边界条件:周期性边界(p=periodic)
atom_style atomic # 原子类型:简单原子(无电荷、无分子键)
neighbor 2.0 bin # 邻居列表:截断半径+2.0Å,使用bin算法
neigh_modify every 5 delay 0 # 邻居列表更新频率
关键参数说明:
-
units metal:适用于金属、无机材料,能量单位为eV,距离为Å,时间为ps
-
boundary p p p:三个方向均为周期性边界;若使用s表示非周期性收缩边界
-
neigh_modify:每5步重新构建邻居列表,delay 0表示不延迟
3.2 系统建模
LAMMPS提供两种建模方式:读取外部数据文件或内部构建晶体。
方式一:读取现有结构文件
read_data Al.data # 读取包含原子坐标、类型、盒子尺寸的数据文件
方式二:内置命令构建晶体(推荐初学者)
# 以铝(Al)的面心立方(FCC)结构为例
lattice fcc 4.05 # 定义FCC晶格,晶格常数4.05Å(铝的晶格常数)
region box block 0 10 0 10 0 10 # 定义模拟区域:10×10×10个晶胞
create_box 1 box # 创建模拟盒子,包含1种原子类型
create_atoms 1 box # 在盒子内填充类型1的原子
建模技巧:
-
lattice命令支持sc(简单立方)、bcc(体心立方)、fcc、 diamond等结构
-
region可定义复杂形状:block(长方体)、sphere(球体)、cylinder(圆柱)等
-
可通过create_atoms的随机分布参数创建无序体系
3.3 力场参数设置
力场是分子动力学的核心,决定了原子间相互作用。LAMMPS支持多种势函数类型:
3.3.1 嵌入原子法(EAM)——金属体系首选
# 标准EAM势
pair_style eam
pair_coeff * * Al_mm.eam Al
# 或EAM/fs(更精确的多体势)
pair_style eam/fs
pair_coeff * * Al_mm.eam.fs Al
3.3.2 Lennard-Jones势——简单流体/惰性气体
pair_style lj/cut 11.0 # LJ势,截断半径11Å
pair_coeff 1 1 0.238 3.4 # 类型1-1相互作用:ε=0.238 eV, σ=3.4Å
势函数选择指南:
| 金属/合金 | EAM, MEAM | .eam, .eam.fs |
| 离子晶体 | Buckingham, Born-Mayer | 参数直接写入 |
| 有机分子 | OPLS, AMBER, CHARMM | 力场文件+拓扑 |
| 全原子水 | SPC/E, TIP3P, TIP4P | 内置或文件 |
| 粗粒化 | MARTINI, DPD | 自定义 |
3.4 温度初始化
为原子赋予初始速度,建立初始温度分布。
velocity all create 300.0 8989 # 为所有原子创建300K的初始速度
# 8989是随机数种子,保证可重复性
注意事项:
-
速度分布服从Maxwell-Boltzmann分布
-
相同种子产生相同速度分布,便于结果对比
-
通常在create_atoms后立即执行,确保体系有初始动能
3.5 弛豫设置(系综选择)
弛豫阶段让体系达到热力学平衡。LAMMPS通过fix命令实现不同系综:
NVE系综(微正则系综)
fix 1 all nve # 能量守恒,用于短时平衡或验证能量守恒
NVT系综(正则系综)——控温常用
# 恒温300K(温度窗口300-300K,阻尼系数0.1ps)
fix 1 all nvt temp 300.0 300.0 0.1
# 升温模拟:从300K升温到1000K
fix 1 all nvt temp 300.0 1000.0 0.1
NPT系综(等温等压系综)——控温控压
# 各向同性压力控制:300K,0压(单位bar)
fix 1 all npt temp 300.0 300.0 0.1 iso 0.0 0.0 1.0
# 单轴压力控制:仅x方向加压,y、z自由
fix 1 all npt temp 300.0 300.0 0.1 x 0.0 0.0 1.0
系综选择建议:
-
结构优化:先NPT达到目标密度,再NVT平衡
-
升温过程:使用NVT with 变温目标
-
力学加载:NVT或NVE(固定盒子尺寸,手动变形)
3.6 模拟设置
计算量定义(compute)
# 计算每个原子的应力张量(用于后续力学分析)
compute 1 mobile stress/atom NULL
# 计算特定原子组的温度
compute myTemp mobile temp
约束与操作(fix)
# 单轴拉伸:x方向以0.05/100的应变率变形
fix 1 all deform 100 x erate 0.05 remap x
常用fix命令:
-
fix nvt/npt/nph:系综控温/控压
-
fix deform:盒子变形(拉伸、剪切)
-
fix spring:原子约束(弹簧固定)
-
fix wall:添加边界墙
-
fix ave/time:时间平均计算
3.7 输出设置
体系变量输出(thermo)
thermo_style custom step temp pe ke press # 自定义输出:步数、温度、势能、动能、压力
thermo 100 # 每100步输出一次
原子轨迹输出(dump)
# 输出原子类型和坐标到xyz文件(可用OVITO、VMD可视化)
dump 1 all custom 100 tension.xyz type x y z
# 更详细的输出(包含速度、力)
dump 2 all custom 100 dump.lammpstrj id type x y z vx vy vz fx fy fz
输出文件格式对比:
| .xyz | 简单坐标 | OVITO, VMD, ASE |
| .lammpstrj | LAMMPS标准轨迹 | VMD(需插件), OVITO |
| .dcd | 紧凑二进制 | VMD, MDAnalysis |
3.8 启动运算
run 10000 # 运行10000步
四、完整in文件示例:铝单轴拉伸模拟
# 1. 基本设置
units metal
dimension 3
boundary p p p
atom_style atomic
neighbor 2.0 bin
neigh_modify every 5 delay 0
# 2. 系统建模
lattice fcc 4.05
region box block 0 10 0 10 0 20
create_box 1 box
create_atoms 1 box
# 3. 力场设置
pair_style eam/alloy
pair_coeff * * Al_u3.eam.alloy Al
# 4. 温度初始化
velocity all create 300.0 12345
# 5. 弛豫(NPT达到平衡密度)
fix 1 all npt temp 300.0 300.0 0.1 iso 0.0 0.0 1.0
run 10000
unfix 1
# 6. 拉伸模拟设置
reset_timestep 0
fix 2 all nvt temp 300.0 300.0 0.1
fix 3 all deform 100 x erate 0.001 remap x
# 7. 输出设置
compute peratom all stress/atom NULL
compute p all reduce sum c_peratom[1] c_peratom[2] c_peratom[3]
variable press equal -(c_p[1]+c_p[2]+c_p[3])/(3*vol)
thermo 100
thermo_style custom step temp pe v_press lx ly lz
dump 1 all custom 100 dump.tension.lammpstrj id type x y z
# 8. 运行
run 50000
五、程序运行方法
5.1 Windows系统
# 进入工作目录
cd d:
cd Cu
# 单核运行
lmp_mpi -in in.cu
# MPI多核并行(8核)
mpiexec -np 8 lmp_mpi -in in.cu
5.2 Linux系统
# 进入目录
cd Cu
ls # 查看文件
# 编辑文件(可选)
vim in.cu
# 按i进入编辑,ESC+:wq保存退出
# 运行
mpiexec -np 8 lmp_mpi -in in.cu # 8核并行
lmp_mpi -in in.cu # 单核
高性能计算(HPC)提交示例:
#!/bin/bash
#SBATCH -J lammps_job
#SBATCH -N 2
#SBATCH –ntasks-per-node=24
#SBATCH -t 24:00:00
module load lammps
srun lmp -in in.cu
六、调试技巧与常见错误
| Neighbor list overflow | 邻居列表半径太小 | 增大neighbor参数 |
| Bond atoms missing | 原子跑出盒子(非周期边界) | 检查边界条件或重新初始化 |
| Did not assign all atoms | 力场参数未覆盖所有原子类型 | 检查pair_coeff范围 |
| Temperature is NaN | 时间步长过大或重叠严重 | 减小timestep或重新建模 |
| Out of range atoms | 原子速度过大 | 检查力场参数单位是否正确 |
七、学习资源推荐
-
官方文档:https://docs.lammps.org/Manual.html
-
案例库:LAMMPS自带的examples目录
-
可视化工具:OVITO(推荐)、VMD、AtomEye
掌握LAMMPS in文件的编写逻辑是进行分子动力学模拟的基础。记住"八步走"流程:基本设置→建模→力场→初始化→弛豫→模拟→输出→运行。建议从简单的金属体系(如本文的Al拉伸)入手,逐步尝试更复杂的聚合物、界面或反应力场模拟。
分子动力学是一门实践性很强的技术,多写、多跑、多分析轨迹,才能逐步积累经验。祝您的模拟之路顺利!
感兴趣的友友给博主点个免费的关注吧,后期会继续更新~
网硕互联帮助中心





评论前必须登录!
注册