分子世界 · 探微寻幽
课程首页/ 阅读资料/ 第 1 章 · LAMMPS 入门
讲义 · 第 1 章
CHAPTER 01

LAMMPS 入门

分子动力学模拟:从牛顿方程到大规模并行计算
分子世界 · 探微寻幽  |  讲义 slide_01.html  |  阅读资料 doc_01.html
1.0 本章导读第 02 页

本章导读

本章不假设任何分子模拟基础,只需要高二已学的数学与物理。 目标只有两个:说清分子动力学模拟(MD)在算什么,以及 LAMMPS 这个工具怎么用起来

学习目标

内容地图

数学准备 · 1.1 MD
一个导数走到底:势能求导得力、离散化差分求解;MD 的三件套与输出
1.2 LAMMPS 是什么
出身、定位、并行能力与能力边界
1.3 势函数与单位
力从哪来;单位制如何决定一切数值
1.4 下载与安装
官方 Windows 安装包 · 五步安装 · MS-MPI 并行环境
1.6–1.7 输入脚本与算例
四段式结构 + 第一个 LJ 流体算例
1.8–1.9 输出与可视化
log.lammps、dump 文件与 OVITO
数学准备(一)第 03 页

数学准备(一):整门课只需要一个导数

本课程的数学门槛只有一件工具——导数,也就是人教B版数学选修第三册里的 「瞬时变化率」。它的全部含义可以压成一句话先算平均变化率,再让间隔取极限。

一、平均速度 → 求极限 → 瞬时速度

在一小段 $\Delta t$ 里位移了 $\Delta x$,两者相除就是这一段的平均速度。 $\Delta t$ 越小,「这一段」就越接近某一个瞬间;令 $\Delta t\to 0$,平均量就变成瞬时量:

$$\bar v=\frac{\Delta x}{\Delta t}=\frac{x(t+\Delta t)-x(t)}{\Delta t}\ \xrightarrow{\ \Delta t\to 0\ }\ v=\frac{\mathrm{d}x}{\mathrm{d}t}$$

二、平均加速度 → 求极限 → 瞬时加速度

对速度再做一遍同样的事——先平均,再取极限:

$$\bar a=\frac{\Delta v}{\Delta t}\ \xrightarrow{\ \Delta t\to 0\ }\ a=\frac{\mathrm{d}v}{\mathrm{d}t}=\frac{\mathrm{d}^2x}{\mathrm{d}t^2}$$

上标 2 只表示求导两次,没有别的意思。牛顿第二定律 $F=ma$ 是高中熟悉的式子; 分子动力学把它当成一条推进规则:已知力 → 算出加速度 → 更新速度 → 更新位置

先算的平均量取极限 $\Delta t\to 0$ 得在高中叫什么
$\Delta x/\Delta t$(平均速度)$\mathrm{d}x/\mathrm{d}t$瞬时速度
$\Delta v/\Delta t$(平均加速度)$\mathrm{d}^2x/\mathrm{d}t^2$瞬时加速度
ok同一套动作还要用第三次:把时间间隔 $\Delta t$ 换成距离间隔 $\Delta r$,得到的就是「势能 → 力」(见下一页)。三个导数,一个来源。
数学准备(二)插页 · 置于第 3 页之后

数学准备(二):从势能到力,再到一个微分方程

三、势能变化 → 取极限 → 力

两原子相对移动一小段 $\Delta r$,势能随之改变 $\Delta U$。把势能变化量除以位移变化量、 取相反数,再让 $\Delta r\to 0$,就得到力——读法就是 势能曲线切线斜率的相反数。高中已学过两个现成的例子:

$$-\frac{\Delta U}{\Delta r}\ \xrightarrow{\ \Delta r\to 0\ }\ F=-\frac{\mathrm{d}U}{\mathrm{d}r}$$
高中熟悉的势能求导 $\mathrm{d}U/\mathrm{d}r$力 $F=-\mathrm{d}U/\mathrm{d}r$物理含义
万有引力 $U=-\frac{GMm}{r}$$\frac{GMm}{r^{2}}$$-\frac{GMm}{r^{2}}$恒为负,指向 $r$ 减小方向 $\Rightarrow$ 引力
库仑 $U=\frac{kQq}{r}$$-\frac{kQq}{r^{2}}$$\frac{kQq}{r^{2}}$$Qq$ 带正负号:同号相斥、异号相吸

四、三个导数串起来,就是一个微分方程

把「力 → 加速度 → 速度 → 位置」合写成一条等式,就叫微分方程: 左边是未知函数的导数,右边也含未知函数本身,没有一步到位的公式解。 计算机把时间离散化、用差分代替导数,改写成右边这条能直接算的式子:

① 微分方程:写法最简洁
$$m\,\frac{\mathrm{d}^2x}{\mathrm{d}t^2}=-\frac{\mathrm{d}U}{\mathrm{d}x}$$
② 递推式:计算机真正在算的
$$x(t+\Delta t)\ \approx\ 2x(t)-x(t-\Delta t)+\frac{1}{m}F(x(t))\,\Delta t^{2}$$

于是它变成一条递推式:知道这一刻的位置,就能算出下一刻; 从 $t=0$ 推到 $t=N\Delta t$,轨迹就出来了——这就是分子动力学模拟,也是 LAMMPS 的全部工作。

ok整门课的数学到此结束:一个导数、一次取极限、一次离散化,不需要偏导数和梯度算子。
1.1 分子动力学模拟第 04 页

1.1 分子动力学模拟在算什么

MD 的核心假设极其简单:把原子(或原子团)当成经典粒子, 它们之间的相互作用由一个势函数 $U$ 描述,于是每个粒子的运动 就完全由牛顿第二定律决定。

$$m_i \frac{\mathrm{d}^2\mathbf{r}_i}{\mathrm{d}t^2}= \mathbf{F}_i = -\nabla_i U(\mathbf{r}_1,\dots,\mathbf{r}_N)$$

方程里有两个数学符号值得留意:$\mathrm{d}^2\mathbf{r}/\mathrm{d}t^2$ 是位置求导两次得到的加速度;$-\nabla U$ 是「势能对坐标求导、再取负号」, 一维情形就是上一页的 $-\mathrm{d}U/\mathrm{d}r$。

三件套缺一不可

势函数 $U$
把「化学」编码成一个能量函数:原子间怎么吸引、怎么排斥,全在这里。
受力 $F=-\mathrm{d}U/\mathrm{d}r$
力是求导得来的:势能曲线越陡,力越大;曲线最低处(斜率为零)力为零。
积分器
用 velocity-Verlet 等方法把 $t\to t+\Delta t$ 一步步推进,得到轨迹。
边界LAMMPS 只做经典分子动力学:它不解薛定谔方程。电子结构属于量子化学软件(Gaussian、VASP、BDF…)的职责——LAMMPS 要的是别人已经算好或拟合好的势函数
1.1 分子动力学模拟第 05 页

1.1 MD 的输出:从轨迹到宏观量

MD 的「原始产品」是一条轨迹——每个时刻、每个原子的位置与速度。 宏观量不是直接算出来的,而是由轨迹做统计平均得到的。

宏观 / 微观量从轨迹怎么得到
温度 $T$由原子动能统计:原子动得越剧烈,温度越高。$E_k=\frac{3}{2}Nk_BT$($k_B$ 为玻尔兹曼常数)
压强 $P$维里定理:动能项 + 原子间作用力项
总能量 $E$动能 + 势能,逐帧求和
径向分布函数 $g(r)$统计原子间距离的分布,反映液体/晶体结构
均方位移 MSD对时间拟合斜率得到扩散系数 $D$
弹性常数、应力由应力的涨落公式或直接形变模拟得到
ok各态历经假设:MD 用时间平均代替系综平均。这要求模拟时间足够长、体系足够大——这也是 MD 最需要算力的地方。
1.2 LAMMPS 是什么第 06 页

1.2 LAMMPS 是什么

LAMMPS 的全称是 Large-scale Atomic/Molecular Massively Parallel Simulator, 直译即「大规模原子/分子并行模拟器」。

项目内容
开发方美国 Sandia 国家实验室(Sandia National Laboratories)
首次发布1995 年,至今持续更新(每季度一个日期版本)
实现语言C++
许可开源,GNU GPL
定位经典分子动力学引擎:原子、粗粒化粒子、介观粒子
并行以 MPI 为主,同时支持 OpenMP 多线程与 KOKKOS 性能可移植层
官网https://www.lammps.org
info一句话记住:LAMMPS 的计算对象永远是「粒子 + 势函数」,而不是电子。它强在能把几百万到几十亿个粒子在超级计算机上跑起来。
1.2 LAMMPS 是什么第 07 页

1.2 LAMMPS 能算什么

维度LAMMPS 的覆盖范围
相互作用两体/多体势(LJ、EAM、MEAM、Tersoff、AIREBO、ReaxFF…);键合力场与专用水模型(CHARMM、AMBER、TIP3P、SPC/E…);并可外挂机器学习势(ML-PACE、ML-IAP)
尺度跨度原子尺度 → 介观尺度:粗粒化模型、耗散粒子动力学 DPD、SPH 流体
统计系综NVE、NVT、NPT、NPH、μVT 等,另含多种温度/压力控制方式
积分方法velocity-Verlet;多时间步 r-RESPA;刚体与 SHAKE/RATTLE 约束
边界条件周期性 p、固定 f、自由 s、收缩 m,可逐方向组合
外场与约束外加电场/磁场、固定原子、壁面、纳米压痕、拉伸形变
分析工具内置 compute / fix 直接给出 $g(r)$、MSD、应力、配位数等
扩展接口库接口可与 Python、量子化学程序耦合(如 QM/MM)
warn边界同样清楚:不能做电子结构计算、不能自动处理化学键断裂(除非用 ReaxFF 等反应性势)。选错势函数,结果再漂亮也没有意义。
1.2 LAMMPS 是什么第 08 页

1.2 并行能力与体系规模

LAMMPS 的名字里就有「Massively Parallel」。它自诞生起就是为并行设计的, 核心策略是域分解:把模拟盒子切成若干子域分给不同进程, 每个进程只管自己那一块的原子。

并行后端说明
MPI跨节点并行,主力方式;配合域分解与通信优化
OpenMP单节点多线程,可与 MPI 混用(每进程多线程)
KOKKOS性能可移植层,提供 Serial / OpenMP / CUDA / HIP 等后端
GPU通过 KOKKOS 的 CUDA/HIP 后端,或传统的 GPU 包实现
warnWindows 版注意:官方交叉编译的安装包虽然已包含 KOKKOS,但只启用了 serial 与 OpenMP 后端,GPU 后端因交叉编译限制不可用。桌面机上做教学与中小体系完全够用;大规模并行请在 Linux 集群上运行。
1.3 势函数与单位第 09 页

1.3 势函数:力从哪来

势函数是 MD 里最关键的输入。它决定了模拟「像不像真实材料」, 也决定了这套计算能不能用。

势函数(pair_style)适用对象特点
lj/cut惰性气体、粗粒化最简单,只有 $\varepsilon$、$\sigma$ 两个参数
eam、eam/alloy金属与合金(Cu、Al、Fe…)嵌入原子法,适合金属热力学与力学性质
meam金属、半导体考虑角度依赖,比 EAM 更接近真实
tersoff共价晶体(Si、C)显含键角,描述共价键
airebo碳氢体系反应性不强但速度快,适合碳材料
reaxff化学反应允许键断裂与生成,可模拟反应过程
TIP3P、SPC/E专用水分子模型,配合长程静电求解
ml-iap、ML-PACE任意体系机器学习势,接近 DFT 精度,但需要先训练
info单位制先行:LAMMPS 用 units 命令一次性选定单位制(ljrealmetalsi…),此后脚本里所有数值的含义都由它决定。本课程第一个算例用 units lj,即能量、长度、质量均为无量纲的约化单位。
1.4 下载与安装第 10 页

1.4 下载:官方 Windows 安装包

LAMMPS 官方为 Windows 提供预编译安装包,由 Fedora 上的 MinGW64 交叉编译器构建, 托管在官方软件源 rpm.lammps.org

本课程统一使用下面这个文件(64 位 + 图形界面版):

文件名怎么读

文件名片段含义
LAMMPS程序名
64bit64 位版本(自 2022 年起不再提供 32 位)
GUI附带图形界面:带语法高亮的输入文件编辑器,可直接运行脚本
Python附带完整 Python 运行环境,可从 LAMMPS 内调用 Python
MSMPI使用 Microsoft MPI 编译,支持多进程并行(需另装 MS-MPI)
latest / stable / 日期最新开发版 / 稳定版 / 指定日期版本
ok下载目录里还有 SHA256SUMS 文件,可用于校验安装包的完整性。同一目录也提供 PLUMED、ML-PACE 等插件安装包,本课程暂不需要。
1.4 下载与安装第 11 页

1.4 安装:五步完成

  1. 1运行安装程序
    双击 LAMMPS-64bit-GUI-latest.exe。若出现 Windows SmartScreen 提示,选择「更多信息 → 仍要运行」。
  2. 2跟随向导
    按提示选择安装目录(建议保留默认)、是否创建快捷方式,然后点击 Install。
  3. 3等待解包
    安装包会一并释放 PDF 手册、势函数文件、示例输入与基准算例,体积较大,需要等待。
  4. 4完成
    点击 Finish。安装是用户级的,不需要管理员权限,不会把文件写到系统目录之外。
  5. 5验证
    打开开始菜单里的 LAMMPS Shell,输入 lmp -h 查看命令行选项。
warnGUI 版不带 MPI:文件名含 GUI 的安装包不含 MSMPI,只能串行或多线程运行。需要多进程并行时,应改装 LAMMPS-64bit-latest-MSMPI.exe(无图形界面),并另行安装 Microsoft MPI——完整步骤见下一页
1.4 下载与安装第 12 页

1.4 并行运行:安装 Microsoft MPI

Windows 版 LAMMPS 只有文件名含 MSMPI 的包支持多进程并行,且必须搭配 微软官方的 MS-MPI——它是 LAMMPS 在 Windows 上唯一支持的 MPI 库。

装哪个文件

下载文件大小作用需要吗
msmpisetup.exe7.4 MB运行时:提供 mpiexec.exe 与并行通信库需要
msmpisdk.msi2.2 MB开发包:头文件与导入库,仅从源码编译 LAMMPS 才用到不需要
  1. 1下载
    在下载页勾选 msmpisetup.exe。当前版本 v10.1.3(10.1.12498.52,2024-07-15)。
  2. 2以管理员身份运行
    MS-MPI 是机器级安装:要写入 Program Files 并注册系统变量,UAC 提示时选择「是」。
  3. 3跟随向导
    保持默认路径 C:\Program Files\Microsoft MPI\,一路 Next 完成安装。
  4. 4重启终端
    环境变量不会自动刷新——关掉所有旧窗口,再重新打开。
  5. 5验证
    输入 mpiexec;出现 Microsoft MPI Startup Program 帮助信息即为成功。
ok两套安装各管一段:LAMMPS 包提供 lmp.exe用户级,不需要管理员),MS-MPI 提供 mpiexec.exe机器级,需要管理员)。此后并行运行只需:mpiexec -n 4 lmp -in in.lj
1.5 启动与验证第 13 页

1.5 安装之后:启动与验证

开始菜单会多出这些项

菜单项用途
LAMMPS Shell已配置好环境的命令行窗口,推荐从这里开始
LAMMPS GUI图形界面:打开、编辑、运行输入脚本,并查看 log 窗口
LAMMPS Manual (PDF)官方手册,随安装包一同发布
Benchmarks / Examples官方基准算例与示例目录(含参考输出)

验证安装

lmp -h

能打印出命令行选项列表,就说明可执行文件已在 PATH 中,安装成功; 若提示「不是内部或外部命令」,则说明环境变量没有生效,需要重装或手动添加路径。

版本号不必单独查询:任何一次运行都会在开头打印一行版本横幅, 形如 LAMMPS (2 Aug 2023)——看到它就知道程序正常启动了。

ok两个环境变量已自动配好PATH 指向安装目录下的可执行文件,LAMMPS_POTENTIALS 指向随包发布的势函数目录——因此写 pair_coeff 时可以直接引用势文件名,不必复制到工作目录。
1.5 界面速查插页 · 置于第 13 页之后

界面速查(一):File 菜单

LAMMPS-GUI 的 File 菜单(展开状态)

File 菜单:新建、打开、保存与查看

warn两处容易卡住:① View 在这里是查看文件内容,不是切换视角;② Save As 存到别的文件夹会连带切换工作目录,脚本里的相对路径(势文件名、dump 输出名)会跟着换地方。
1.5 界面速查插页 · 置于第 13 页之后

界面速查(二):Run 菜单

LAMMPS-GUI 的 Run 菜单(展开状态)

Run 菜单:启动计算、停止计算与可视化

info前两条只差一个词:Editor Buffer 是「编辑区里的」,File 是「文件里的」。改完脚本直接按 Ctrl+Enter 就能跑,不必先存盘。
1.5 界面速查插页 · 置于第 13 页之后

界面速查(三):View 菜单

LAMMPS-GUI 的 View 菜单(展开状态)

View 菜单:五个观察窗口

okView 菜单只负责显示或隐藏这些窗口,不影响计算本身。窗口默认开不开,可以在 Edit → Preferences 里改。
1.6 输入脚本第 14 页

1.6 LAMMPS 输入脚本的结构

LAMMPS 是「读脚本、按行执行」的程序。脚本语法上没有强制分段, 但惯例上分为四段,看懂这四段,就看得懂绝大多数输入文件。

代表命令作用
① 初始化units, dimension, boundary, atom_style, newton定义单位制、维度、边界条件与原子表示方式
② 定义体系lattice, region, create_box, create_atoms, read_data造盒子、放原子;或用 read_data 读入已有结构
③ 设置相互作用pair_style, pair_coeff, bond_style, kspace_style, neighbor, timestep指定力场与数值参数(截断、邻接表、时间步)
④ 计算与输出velocity, fix, compute, thermo, dump, run给初始速度、积分演化、采样统计、写文件
info命令的下划线也是线索:pair_style 定「用哪种势」,pair_coeff 给「这套势的参数」,dump 写「轨迹」,thermo 控「屏幕上的热力学输出频率」。
1.7 第一个算例第 15 页

1.7 第一个算例:LJ 流体

下面这份 22 行脚本是 LAMMPS 最经典的入门算例——Lennard-Jones 流体。 它没有真实材料对应,但只要这份能跑通,后面换势函数就只是替换第 ③ 段。

# ---------- ① 初始化 ----------
units           lj
atom_style      atomic
dimension       3
boundary        p p p

# ---------- ② 定义体系 ----------
lattice         fcc 0.8442
region          box block 0 10 0 10 0 10
create_box      1 box
create_atoms    1 box
mass            1 1.0
# ---------- ③ 设置相互作用 ----------
pair_style      lj/cut 2.5
pair_coeff      1 1 1.0 1.0 2.5
neighbor        0.3 bin
neigh_modify    delay 0 every 20 check no

# ---------- ④ 计算与输出 ----------
velocity        all create 1.44 87287 loop geom
timestep        0.005
thermo          50
dump            mydump all atom 100 dump.lj
fix             1 all nve
run             1000
info把脚本存成 in.lj,在 LAMMPS Shell 里执行 lmp -in in.lj 即可运行。四段式的好处在这里最明显:想让体系变成铜或水,只需替换第 ③ 段。
1.8 运行与输出第 16 页

1.8 运行与输出

LAMMPS Shell 里进入存放脚本的目录,直接运行:

cd D:\md\lj
lmp -in in.lj

也可以在 LAMMPS GUI 里打开 in.lj,点击运行。

会生成哪些文件

文件内容
log.lammps屏幕输出的完整记录:版本信息、体系规模、每若干步的热力学量
dump.lj轨迹文件:每 100 步一帧,含原子坐标与速度,供可视化使用
data.lj / restart只有脚本里写了 write_data / write_restart 才会产生

怎么读 thermo 表

列名含义
Step时间步序号
Temp瞬时温度(由动能统计得到;本算例第 0 步必定是 1.44)
E_pair / E_mol对势能 / 分子内能(键、角、二面角)
TotEng总能量 = 动能 + 势能
Press压强(动能项 + 维里项)
ok关键检查点:体系平衡后 TotEng 应只做小幅涨落。若它持续单调上升,通常说明时间步过大(能量不守恒)或体系尚未弛豫。
1.9 可视化与后处理第 17 页

1.9 可视化与后处理

LAMMPS 自己不做三维渲染,它把轨迹写成文本文件,交给专门工具显示。

OVITO Basic(免费)
最常用的分子可视化软件。直接打开 dump 文件,可按原子类型或坐标着色,播放多帧动画,导出图片或 GIF,并内置配位数、位移、位错分析等功能。下载与安装见下页。
VMD
老牌可视化与建模工具,Tcl 脚本能力极强,适合批量处理与高质量图像渲染。
info先看懂 dump 格式,再学软件操作:dump 文件本质是纯文本,每帧依次是 ITEM: TIMESTEPNUMBER OF ATOMSBOX BOUNDSATOMS 四个块。理解了这四个块,用任何软件、甚至自己写脚本读都轻而易举。
1.9 可视化与后处理插页 · 置于第 17 页之后

可视化工具:OVITO 的下载与安装

OVITO(Open Visualization Tool)是分子模拟领域最通用的可视化与后处理软件, 由德国团队自 2009 年起持续开发,已被两万余篇论文引用。它能直接读取 LAMMPS 的 dump 文件、无需格式转换,即可完成三维显示、多帧动画、 着色与导出图片,并内置配位数、位移矢量、位错分析等后处理功能。

两个版本,选 Basic

warn请认准 OVITO Basic:两版并排放在同一行里,文件名分别是 ovito-basic-…-win64.exeovito-pro-…-win64.exe,点错会下到需要许可证的 Pro 版。

装好之后:三步看懂轨迹

  1. 1打开轨迹文件
    菜单 File → Load File…,选中算例目录里的 dump.lj。OVITO 自动识别 LAMMPS dump 格式,不必填写任何参数。
  2. 2播放动画
    底部时间轴可拖动、可播放,每一帧就是一个快照——本例脚本里 dump 每 100 步写一帧,1000 步共 11 帧。
  3. 3换一个更有信息量的着色
    默认按原子类型着色。点右侧 Add modification 里的 Color coding,在其属性下拉里改选坐标 Z,层状结构立刻显现。
info想让颜色直接反映速度或势能?本算例用的是 dump … atom 风格,只输出 id type xs ys zs 五列,没有速度、也没有能量。把它改成 dump … custom … id type x y z vx vy vz,并在前面加一句 compute pe all pe/atom、再多输出一列 c_pe,就能按这些量着色——这也是后续章节做定量分析时的常规做法
1.10 本章小结第 18 页

本章小结

官方资源

资源地址
LAMMPS 官网https://www.lammps.org
官方手册https://docs.lammps.org
Windows 安装包https://rpm.lammps.org/windows/
MS-MPI 下载https://www.microsoft.com/en-us/download/details.aspx?id=105289
OVITO 可视化(选 Basic,免费)https://www.ovito.org/#download
NIST 势函数库https://www.ctcms.nist.gov/potentials/
1 / 1

幻灯片目录

← → 翻页 空格 下一页 F 全屏 O / Esc 目录 数字键 1-9 快速跳页