刚接触 LAMMPS 的新手,最先困惑的往往不是模拟参数怎么设,而是「模拟的输入文件到底长什么样」。LAMMPS 的输入体系大致分为两类:一类描述体系本身的结构信息,另一类描述模拟的控制逻辑。我们先从前者说起,也就是坐标与拓扑文件。
最常见的分子坐标文件是 PDB 格式(后缀 .pdb),它原本是生物大分子的标准存储格式,LAMMPS 也支持读取。
PDB 文件里每一行记录一个原子,包含原子序号、残基名称、残基编号、原子在三维空间中的 x、y、z 坐标,还有两个辅助量——占有率和温度因子。占有率表示这个原子在晶体中占据该位置的比例,温度因子则反映原子因为热运动而在平衡位置附近波动的程度。
PDB结构如下图所示:

data 文件是 LAMMPS 通过 read_data 命令读取的文本格式输入,它包含了模拟所需的所有基本统计信息:原子总数、模拟盒子的尺寸、每个原子的初始坐标、分子拓扑结构(如果存在键、角、二面角的话),还可以包含一部分力场参数。
文件整体分为两大区块:文件头(Header) 和 数据体(Body)。
位于文件最开头,第一行为标题行(LAMMPS 会忽略,可自由填写说明),后续为若干关键字声明行,比如 atoms 声明原子总数,xlo xhi 定义盒子 x 方向范围,ylo yhi、zlo zhi 同理,还有 mass 如果写在头里也可以。
关键字行顺序不做强制要求,但必须严格遵循「关键字 + 数值」的格式。典型的文件头示例如下:

有时候文件头后面还有力场参数等信息,类似下图所示:

文件头之后为数据体,各个章节以空行分隔,章节标题必须左对齐且首字母大写,如 Masses、Atoms、Bonds。
其中 Masses 和 Atoms 是必填章节,键、角、二面角、力场系数等章节按需添加,顺序无强制要求。
和 PDB 相比,data 文件更接近 LAMMPS 的底层逻辑:它直接定义每个原子的编号、类型、坐标与连接关系。无论初始结构来自 PDB 还是第三方建模工具,最终都必须生成规范的 data 文件,才能启动模拟。
data 文件的数据体里中最核心的是 Atoms 章节,每行对应一个原子,原子顺序可任意排列。每行的具体字段,取决于你在 in 文件中设置的 atom_style 决定。LAMMPS 支持数十种原子风格,新手最常用的是 atomic 和 full 两种。
最简单的原子风格,每行包含原子ID、原子类型、x/y/z 坐标共 4 类字段。 它适用于金属等只关心坐标和类型的简单体系,不支持分子ID、电荷这类额外信息。如果你的体系里有多个原子种类,类型就用整数 1、2、3 等表示。atomic 风格如下案例:

full 风格则是功能最全面的格式之一,每行有七个字段:原子ID、分子ID、原子类型、电荷、x、y、z。它适合聚合物、有机分子、生物分子等需要描述键连接和电荷的复杂体系,当然金属体系也可以用 full 风格,只是把电荷设成 0 就行。有了分子ID,LAMMPS 才能区分不同分子,并为后续的键、角、二面角定义提供依据。full风格如下案例:

如果体系包含分子内键合作用,还需在 Atoms 章节后补充拓扑定义,主要包括:
这些章节不是必须的,只有当你模拟的是有机分子、聚合物或生物大分子时才需要。而对于简单的金属或盐溶液,只有原子坐标就足够了。各个成键项如下图所示:

data 文件就是把你的模拟体系“数字化”:盒子多大、有多少原子、每个原子在哪儿、原子之间怎么连。制作 data 文件的方法很多,可以用第三方工具(如 Packmol、Moltemplate)生成,也可以用编程语言自己写。新手建议先用现成的工具或示例文件,熟悉格式后再尝试自己构建。
以下是一个完整有机小分子的 data 文件样例,可直观感受整体结构:
LAMMPS Atom File Created by AuToFF
16 atoms
16 bonds
30 angles
42 dihedrals
0 impropers
4 atom types
4 bond types
6 angle types
3 dihedral types
0 improper types
-1.83900 18.16100 xlo xhi
-2.02700 17.97300 ylo yhi
-1.72600 18.27400 zlo zhi
Masses
1 12.0100 # c3
2 14.0100 # n3
3 1.0080 # h1
4 1.0080 # hn
Pair Coeffs # lj/cut/coul/long
1 0.109400 3.399670
2 0.170000 3.249999
3 0.015700 2.471353
4 0.015700 1.069078
Bond Coeffs # harmonic
1 392.400096 1.020000
2 325.900096 1.460000
3 330.600143 1.100000
4 300.900096 1.540000
Angle Coeffs # harmonic
1 49.500000 109.880000
2 39.200048 108.460000
3 66.000000 111.040000
4 46.400096 109.560000
5 47.400096 109.290000
6 63.799952 112.350000
Dihedral Coeffs # fourier
1 1 0.299952 3 0.0000
2 1 0.155593 3 0.0000
3 2 0.299952 3 0.0000 0.479924 2 180.0000
Atoms
# atom mol type charge X Y Z
1 1 1 0.015500 -1.171000 -0.388000 -0.492000
2 1 1 0.016800 -0.050000 -1.272000 0.088000
3 1 1 0.017700 1.456000 0.596000 0.023000
4 1 1 0.019700 0.335000 1.480000 -0.556000
5 1 2 -0.567000 -0.583000 0.650000 -1.350000
6 1 3 0.058300 -1.839000 -0.992000 -1.069000
7 1 3 0.058000 0.489000 -1.734000 -0.713000
8 1 3 0.057400 2.124000 1.201000 0.600000
9 1 3 0.057200 -0.204000 1.942000 0.244000
10 1 2 -0.567000 0.867000 -0.442000 0.881000
11 1 4 0.301200 -1.310000 1.223000 -1.726000
12 1 3 0.057200 0.764000 2.235000 -1.181000
13 1 3 0.057400 1.995000 0.134000 -0.778000
14 1 3 0.058000 -0.479000 -2.027000 0.712000
15 1 3 0.058300 -1.710000 0.074000 0.309000
16 1 4 0.301300 1.595000 -1.015000 1.257000
Bonds
# NO. Type atom_i atom_j
1 1 11 5
2 2 5 4
3 2 5 1
4 3 12 4
5 3 6 1
6 3 13 3
7 3 7 2
8 4 4 3
9 3 4 9
10 4 1 2
11 3 1 15
12 3 3 8
13 2 3 10
14 3 2 14
15 2 2 10
16 1 10 16
Angles
# NO. Type atom_i atom_j atom_k
1 1 5 1 6
2 1 5 1 15
3 2 6 1 15
4 3 2 1 5
5 4 2 1 6
6 4 2 1 15
7 2 7 2 14
8 1 7 2 10
9 4 1 2 7
10 4 1 2 14
11 3 1 2 10
12 1 10 2 14
13 4 4 3 13
14 4 4 3 8
15 3 4 3 10
16 2 8 3 13
17 1 8 3 10
18 1 10 3 13
19 1 5 4 12
20 1 5 4 9
21 3 3 4 5
22 4 3 4 12
23 4 3 4 9
24 2 9 4 12
25 5 4 5 11
26 5 1 5 11
27 6 1 5 4
28 5 3 10 16
29 6 2 10 3
30 5 2 10 16
Dihedrals
# NO. Type atom_i atom_j atom_k atom_l
1 1 6 1 5 4
2 1 15 1 5 11
3 1 15 1 5 4
4 2 15 1 2 7
5 2 15 1 2 14
6 2 15 1 2 10
7 2 7 2 1 5
8 2 7 2 1 6
9 1 7 2 10 3
10 2 14 2 1 5
11 2 14 2 1 6
12 1 14 2 10 3
13 2 10 2 1 5
14 2 10 2 1 6
15 2 13 3 4 5
16 2 13 3 4 12
17 2 13 3 4 9
18 1 13 3 10 2
19 3 4 3 10 2
20 2 8 3 4 5
21 1 8 3 10 2
22 2 10 3 4 5
23 2 10 3 4 9
24 1 12 4 5 11
25 1 12 4 5 1
26 2 12 4 3 8
27 2 12 4 3 10
28 3 3 4 5 1
29 1 9 4 5 1
30 2 9 4 3 8
31 1 11 5 4 3
32 1 11 5 4 9
33 1 11 5 1 6
34 1 11 5 1 2
35 3 4 5 1 2
36 3 3 10 2 1
37 1 16 10 3 13
38 1 16 10 3 4
39 1 16 10 3 8
40 1 16 10 2 7
41 1 16 10 2 1
42 1 16 10 2 14
搞懂结构文件的底层格式,是排查模拟报错、自定义体系的第一步基本功。