云计算百科
云计算领域专业知识百科平台

LAMMPS输入文件(in文件)详解及案例分析

作者:海天一色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拉伸)入手,逐步尝试更复杂的聚合物、界面或反应力场模拟。

分子动力学是一门实践性很强的技术,多写、多跑、多分析轨迹,才能逐步积累经验。祝您的模拟之路顺利!

感兴趣的友友给博主点个免费的关注吧,后期会继续更新~


赞(0)
未经允许不得转载:网硕互联帮助中心 » LAMMPS输入文件(in文件)详解及案例分析
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!