非键参数
[ atomtypes ]
;name at.num mass charge ptype V(c6) W(c12)
O 8 15.99940 0.000 A 0.22617E-02 0.74158E-06
OM 8 15.99940 0.000 A 0.22617E-02 0.74158E-06
.....
[ nonbond_params ]
; i j func V(c6) W(c12)
O O 1 0.22617E-02 0.74158E-06
O OA 1 0.22617E-02 0.13807E-05
.....
注意: GROMACS所包含的大部分力场也带有at.num.列, 但相同的信息位于OPLS_AA bond_type列. 参数V与W的含义取决于拓扑文件[ defaults ]段中选择的组合规则
键参数
键参数(如, 键长, 键角, 异常/正常二面角)都列在ffbonded.itp文件中. 这个数据库中的条目分别给出了相互作用的原子类型, 相互作用的类型, 与相互作用有关的参数. 在处理拓扑文件时, grompp程序会读取这些参数, 然后应用到相关的键参数中. 例如将bondtypes应用到[ bonds ]指令中的条目, 等等. 从相关的[ *type ]指令中缺失的任何键参数都会导致致命错误. 下面是从这些文件中摘录的例子。
[ bondtypes ]
; i j func b0 kb
C O 1 0.12300 502080.
C OM 1 0.12500 418400.
......
[ angletypes ]
; i j k func th0 cth
HO OA C 1 109.500 397.480
HO OA CH1 1 109.500 397.480
......
[ dihedraltypes ]
; i l func q0 cq
NR5* NR5 2 0.000 167.360
NR5* NR5* 2 0.000 167.360
......
[ dihedraltypes ]
; j k func phi0 cp mult
C OA 1 180.000 16.736 2
C N 1 180.000 33.472 2
......
[ dihedraltypes ]
;
; Ryckaert-Bellemans Dihedrals
;
; aj ak funct
CP2 CP2 3 9.2789 12.156 -13.120 -3.0597 26.240 -31.495
在ffbonded.itp文件中, 你可以添加键参数. 如果你想为新的原子类型增加参数, 请确保你已经在atometypes.atp中定义了它们.
分子内的对相互作用
分子中原子对之间额外的Lennard-Jones和静电相互作用可以添加到分子定义部分的[ pairs ]段中. 这些相互作用的参数可以独立于非键相互作用参数进行设置. 在GROMOS力场中, [ pairs ]仅仅用于修改1–4相互作用(相隔3条键的两个原子之间的相互作用). 在这些力场中, 1–4相互作用并不包括在非键相互作用中。
[ pairtypes ]
; i j func cs6 cs12 ; THESE ARE 1-4 INTERACTIONS
O O 1 0.22617E-02 0.74158E-06
O OM 1 0.22617E-02 0.74158E-06
.....
ffnonbonded.itp文件中原子类型的对相互作用参数位于[ pairtypes ]段. GROMOS力场显式地列出了所有这些相互作用的参数, 但对于OPLS这样的力场这一段可能是空的, 因为这些力场通过统一地缩放参数来计算1–4相互作用. 对于那些不在[ pairtypes ]段出现的对参数, 只能当forcefield.itp文件中[ defaults ]指令的gen-pair设置为“yes”时才能生成. 当gen-pairs设置为“no”时, grompp程序会对每个未设定参数的对类型产生警告。
普通对相互作用和1–4相互作用的函数类型为1. 函数类型2和[ pairs_nb ]特别用于自由能模拟. 当计算水合自由能时, 需要将溶质与溶剂去耦合. 这可通过添加一个B-状态拓扑实现, 其中所有溶质的非键参数, 即电荷和LJ参数, 都被设置为0. 然而, A状态和B状态之间自由能的差值并不是总的水合自由能. 我们必须通过重新引入真空中溶质分子内部的库伦和LJ相互作用来增加自由能. 当溶质内的库伦和LJ相互作用未修改时, 第二步可以与第一步结合起来. 为此, 引入了对函数类型2, 它与函数类型1完全相同, 除了B状态参数与A状态参数始终相同。
在[ pairtypes ]段搜索参数, 函数类型1和2之间并没有什么差别. 对相互作用段[ pair_nb ]用于取代非键相互作用. 它使用未缩放的电荷与非键LJ参数, 并只使用A状态的参数. 注意 要为[ pairs_nb ]中列出的所有原子对添加排除, 否则这些原子对也将在正常的邻区列表中结束。
作为替代, 通过使用couple-moltype, couple-lambda0, couple-lambda1, 和couple-intramol关键字, 我们可以不修改拓扑文件而获得同样的行为。
所有这三种对类型全都使用普通的库伦作用, 即便当使用反应场, PME, Ewald或移位库伦相互作用来计算非键相互作用时. 类型1和2的能量会写入能量和日志文件, 其中每个能量组对都有单独的“LJ–14”和“Coulomb–14”项. [ paisr_nb ]的能量会添加到“LJ-(SR)”和“Coulomb-(SR)”项中。
排除
grompp程序会对相邻直到一定数目键的原子生成非键相互作用的排除, 如在拓扑文件的[ moleculetype ]段中定义的那样. 当彼此之间以“化学”键([ bonds ]类型1到5, 7或8)或约束([ constraints ]类型1)连接时, 粒子被认为是键合在一起的. 类型5[ bonds ]可用于创建两个原子之间无相互作用的连接. 有一种不通过化学键连接原子的简谐相互作用([ bonds ]类型6), 也有一种不通过化学键连接原子而固定距离的第二类约束类型([ constraints ]类型2).分子内额外的排除可以手动在[ exclusions ]段中添加. 每行必须以一个原子编号开始, 后面跟着一个或多个原子编号. 第一个原子和其他原子之间的所有非键相互作用都会被排除.当需要排除原子组内部或彼此之间的非键相互作用时, 使用能量监测组排除会更方便和高效。
约束算法
约束的定义在[ constraints ]段中, 其格式为两个原子编号, 后面跟着函数类型和约束距离. 函数类型可以为1或2, 它们之间的唯一区别在于, 类型1用于产生排除而类型2不产生排除. 距离是通过在*.mdp文件中选择的LINCS或SHAKE算法进行约束的. 在自由能计算中, 通过增加第二个约束距离, 这两种类型的约束都可以进行微扰. grompp程序可自动将一些类型的键或键角转变为约束, 在*.mdp文件中有很多相关的选项.