8. 基础知识
此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples
目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。
8.1.通用基础知识
8.2. 设置入门
8.3. 分析入门
8.4. 力场入门
8.4.1. CHARMM、AMBER、COMPASS 和 DREIDING 力场
8.4.2. AMOEBA 和 HIPPO 力场
AMOEBA 和 HIPPO 极化力场是由华盛顿大学圣路易斯分校的 Jay Ponder 团队开发的。 LAMMPS 实现基于 Ponder 小组在其 Tinker MD software软件中提供的 Fortran 90 代码。
LAMMPS 中 AMOEBA 的当前实现(2022 年 7 月)与(Ponder), (Ren), and (Shi)中讨论的版本匹配。同样,LAMMPS 中 HIPPO 的当前实现与(Rackers)中讨论的版本相匹配。
当在水、有机分子和包括蛋白质在内的生物分子的模拟中需要偏振效应时,可以使用这些力场,前提是参数化(Tinker PRM 力场文件)可用于您感兴趣的系统。LAMMPS 势能目录中的文件可以使用带有“amoeba”或“hippo”后缀的。 Tinker 发行版和网站还有其他力场文件: https://github.com/TinkerTools/tinker/tree/release/params
请注意,目前,HIPPO 只能用于水系统,但 Ponder 小组正在准备各种小有机和生物分子的 HIPPO 文件。这些力场文件将包含在 LAMMPS 发行版中(如果可用)。
要使用 AMOEBA 或 HIPPO 力场,模拟必须是 3d 的、完全周期性或完全非周期性的,并使用正交(非三斜)模拟框。
AMOEBA 和 HIPPO 力场在其能量 (U) 计算中包含以下项。 AMOEBA 方程的更多详细信息在 (Ponder)中,HIPPO 方程的更多详细信息在(Rackers)中。
对于分子间项,AMOEBA 力场仅包括 、
、
项。 HIPPO 力场包括除
项之外的所有项。在LAMMPS中,这些都是由 pair_style amoeba 或 hippo命令计算的。请注意,对于 AMOEBA 和 HIPPO 力场,此公式中的
和
项不同。
对于分子内项, 、
、
、
项由 bond_style class2 angle_style amoeba, dihedral_style fourier, 和 improper_style amoeba 命令计算。 angle_style amoeba命令包括
键角交叉项,以及 IJK 角中 I、K 原子之间 Urey-Bradley 键贡献的
项。
项由fix amoeba/pitorsion 命令计算。它计算一对键合原子之间的 6 体相互作用,每个键合原子都有 2 个额外的键合伙伴。
项由 fix amoeba/bitorsion 命令计算。它计算两个重叠且具有 3 个公共原子的 4 体扭转(二面体)之间的 5 体相互作用。
这些命令文档页面包含有关它们计算的术语的更多详细信息:
要在 LAMMPS 中使用 AMOEBA 或 HIPPO 力场,请在输入脚本中适当使用如下命令。 AMOEBA 与 HIPPO 模拟所需的唯一更改是 pair_style 和 pair_coeff 命令,如下所示。有关 AMOEBA 和 HIPPO 的输入脚本示例,请参阅 Examples/amoeba。
units real # required
atom_style amoeba
bond_style class2 # CLASS2 package
angle_style amoeba
dihedral_style fourier # EXTRA-MOLECULE package
improper_style amoeba
# required per-atom data
fix amtype all property/atom i_amtype ghost yes
fix extra all property/atom &
i_amgroup i_ired i_xaxis i_yaxis i_zaxis d_pval ghost yes
fix polaxe all property/atom i_polaxe
fix pit all amoeba/pitorsion # PiTorsion terms in FF
fix_modify pit energy yes
# Bitorsion terms in FF
fix bit all amoeba/bitorsion bitorsion.ubiquitin.data
fix_modify bit energy yes
read_data data.ubiquitin fix amtype NULL "Tinker Types" &
fix pit "pitorsion types" "PiTorsion Coeffs" &
fix pit pitorsions PiTorsions &
fix bit bitorsions BiTorsions
pair_style amoeba # AMOEBA FF
pair_coeff * * amoeba_ubiquitin.prm amoeba_ubiquitin.key
pair_style hippo # HIPPO FF
pair_coeff * * hippo_water.prm hippo_water.key
special_bonds lj/coul 0.5 0.5 0.5 one/five yes # 1-5 neighbors
read_data 命令读取的数据文件应该由下面描述的tools/tinker/tinker2lmp.py转换程序创建。它将在数据文件中创建一个标题为“Tinker Types”的部分。必须在 read_data 命令之前指定数据的 fix property/atom命令。在上面的示例中,修复 ID 是 amtype。
同样,如果您正在模拟的系统定义了 AMOEBA/HIPPO 平扭转或双扭转交互作用,则数据文件中将存在这些交互作用的条目。它们需要定义fix amoeba/pitortion 和 fix amoeba/bitorsion命令。在上面的示例中,这两个修复的 ID 是pit 和bit。
当然,如果正在建模的系统不具有以下一项或多项——键、角度、二面角、不正确、底扭转、双扭转相互作用——则不需要使用上面相应的样式和修复命令。请参阅示例/amoeba 中水系统的示例脚本作为示例;它们比上面列出的更简单。
还需要两个带有 ID(在上面的示例中)extra 和 polaxe 的 fix property/atom命令来定义 AMOEBA 和 HIPPO 力场使用的内部每原子数量。
用于 AMOEBA 或 HIPPO 力场的 pair_coeff 命令采用 Tinker 力场文件的两个参数,即 PRM 和 KEY 文件。密钥文件可以指定为 NULL,并且将使用各种设置的默认值。请注意,这两个文件旨在允许按原样使用本机 Tinker 文件。但是,LAMMPS 不支持 Tinker PRM 或 KEY 文件中包含的所有选项。具体请参见下文。
需要带有一/五选项的special_bonds 命令,因为AMOEBA/HIPPO力场不仅定义1-2、1-3、1-4相互作用的权重因子,还定义1-5相互作用的权重因子。此命令将触发生成 1-5 个邻居的每原子列表。 AMOEBA 和 HIPPO 力场为 Tinker PRM 和 KEY 文件中的所有 1-2、1-3、1-4、1-5 项定义了自己的自定义权重因子;对于力场中的不同项,它们可能不同。
除了上面的列表之外,这些命令文档页面还有其他详细信息:
Tinker PRM 和 KEY 文件
Tinker PRM 文件由多个部分组成,每个部分有多行。这是 LAMMPS 知道如何解析和使用的 PRM 部分的列表。跳过任何其他部分:
-
Angle Bending Parameters 角度弯曲参数
-
Atom Type Definitions 原子类型定义
-
Atomic Multipole Parameters原子多极参数
-
Bond Stretching Parameters键拉伸参数
-
Charge Penetration Parameters电荷穿透参数
-
Charge Transfer Parameters电荷转移参数
-
Dipole Polarizability Parameters偶极子极化率参数
-
Dispersion Parameters 色散参数
-
Force Field Definition 力场定义
-
Literature References 参考文献
-
Out-of-Plane Bend Parameters面外弯曲参数
-
Pauli Repulsion Parameters泡利斥力参数
-
Pi-Torsion Parameters Pi 扭转参数
-
Stretch-Bend Parameters 拉伸-弯曲参数
-
Torsion-Torsion Parameters扭转-扭转参数
-
Torsional Parameters 扭转参数
-
Urey-Bradley Parameters 尤里-布拉德利参数
-
Van der Waals Pair Parameters范德华对参数
-
Van der Waals Parameters 范德华参数
Tinker KEY 文件由行组成,每行都有一个关键字,后跟零个或多个参数。这是 LAMMPS 知道如何以 Tinker 相同的方式解析和使用的关键字列表。任何其他关键字都会被跳过。如果未指定,或者将pair_coeff命令中的密钥文件指定为NULL,则括号中的值为关键字的默认值:
-
a-axis (0.0)
-
b-axis (0.0)
-
c-axis (0.0)
-
ctrn-cutoff (6.0)
-
ctrn-taper (0.9 * ctrn-cutoff)
-
cutoff
-
delta-halgren (0.07)
-
dewald (no long-range dispersion unless specified)
-
dewald-alpha (0.4)
-
dewald-cutoff (7.0)
-
dispersion-cutoff (9.0)
-
dispersion-taper (9.0 * dispersion-cutoff)
-
dpme-grid
-
dpme-order (4)
-
ewald (no long-range electrostatics unless specified)
-
ewald-alpha (0.4)
-
ewald-cutoff (7.0)
-
gamma-halgren (0.12)
-
mpole-cutoff (9.0)
-
mpole-taper (0.65 * mpole-cutoff)
-
pcg-guess (enabled by default)
-
pcg-noguess (disable pcg-guess if specified)
-
pcg-noprecond (disable pcg-precond if specified)
-
pcg-peek (1.0)
-
pcg-precond (enabled by default)
-
pewald-alpha (0.4)
-
pme-grid
-
pme-order (5)
-
polar-eps (1.0e-6)
-
polar-iter (100)
-
polar-predict (no prediction operation unless specified)
-
ppme-order (5)
-
repulsion-cutoff (6.0)
-
repulsion-taper (0.9 * repulsion-cutoff)
-
taper
-
usolve-cutoff (4.5)
-
usolve-diag (2.0)
-
vdw-cutoff (9.0)
-
vdw-taper (0.9 * vdw-cutoff)
Tinker2lmp.py 转换工具
这个转换工具可以在tools/tinker目录中找到。如示例/amoeba/README 中所示,这些命令生成在示例/amoeba 中找到的数据文件,并且还说明了可与tinker2lmp.py 脚本一起使用的所有选项:
python tinker2lmp.py -xyz water_dimer.xyz -amoeba amoeba_water.prm -data data.water_dimer.amoeba # AMOEBA non-periodic system
python tinker2lmp.py -xyz water_dimer.xyz -hippo hippo_water.prm -data data.water_dimer.hippo # HIPPO non-periodic system
python tinker2lmp.py -xyz water_box.xyz -amoeba amoeba_water.prm -data data.water_box.amoeba -pbc 18.643 18.643 18.643 # AMOEBA periodic system
python tinker2lmp.py -xyz water_box.xyz -hippo hippo_water.prm -data data.water_box.hippo -pbc 18.643 18.643 18.643 # HIPPO periodic system
python tinker2lmp.py -xyz ubiquitin.xyz -amoeba amoeba_ubiquitin.prm -data data.ubiquitin.new -pbc 54.99 41.91 41.91 -bitorsion bitorsion.ubiquitin.data.new # system with bitorsions
开关及其参数可以按任何顺序指定。
-xyz 开关是必需的,它指定输入 XYZ 文件作为参数。该文件的格式是 Tinker 为其输入定义和使用的扩展 XYZ 格式。示例 *.xyz 文件位于 Examples/amoeba 目录中。该文件列出了系统中的原子。每个原子都具有以下信息:Tinker 物种名称(被 LAMMPS 忽略)、xyz 坐标、Tinker 数字类型以及原子所键合的原子 ID 列表。
以下是有关 Tinker 定义和使用的扩展 XYZ 格式的更多信息,以及将标准 PDB 文件转换为扩展 XYZ 格式的程序的链接:
-
https://openbabel.org/docs/current/FileFormats/Tinker_XYZ_format.html
-
tinker/source/pdbxyz.f at release · TinkerTools/tinker · GitHub
需要 -amoeba 或 -hippo 开关。它将输入 AMOEBA 或 HIPPO PRM 力场文件指定为参数。这应该与输入脚本中的pair_style c命令使用的文件相同。
需要 -data 开关。它指定将生成的 LAMMPS 数据文件的输出文件名。
对于周期性系统,需要 -pbc 开关。它指定每个维度 (x,y,z) 的周期框大小。对于 Tinker 模拟,这些在 KEY 文件中指定。
仅当系统包含 Tinker bitorsion 交互时才需要 -bitorsion 开关。每种类型的 bitorsion 交互的数据将写入指定的文件,并由 fix amoeba/bitorsion命令读取。该数据包括样条线所拟合的二维值数组,因此与 LAMMPS 数据文件格式不兼容。
Ref:
(Ponder) Ponder, Wu, Ren, Pande, Chodera, Schnieders, Haque, Mobley, Lambrecht, DiStasio Jr, M. Head-Gordon, Clark, Johnson, T. Head-Gordon, J Phys Chem B, 114, 2549-2564 (2010).
(Rackers) Rackers, Silva, Wang, Ponder, J Chem Theory Comput, 17, 7056-7084 (2021).
(Ren) Ren and Ponder, J Phys Chem B, 107, 5933 (2003).
(Shi) Shi, Xia, Zhang, Best, Wu, Ponder, Ren, J Chem Theory Comp, 9, 4046, 2013.