mdp文件是能量最小化,NVT模拟,NPT模拟与MD模拟的必须文件。
mdp文件的详细解释可以参考官方文档http://manual.gromacs.org/online/mdp_opt.html
接下来我将使用四个文件为例子来解释mdp文件。
能量最小化minim.mdp
1 ; minim.mdp - used as input grompp to generate *.tpr 2 integrator = steep ; steep = steepest descent minimization 3 emtol = 1000.0 4 emstep = 0.01 5 nsteps = 50000 6 7 ; Parameters describing how to find the neighbors of each atom and how to calculate the interactions 8 nstlist = 1 9 cutoff-scheme = Verlet 10 ns_type = grid 11 coulombtype = PME 12 rcoulomb = 1.0 13 rvdw = 1.0 14 pbc = xyz
接下来我一行一行注解:
1.从";"到换行之间的字符将被视为注释。此文件用于能量最小化(例如蛋白质刚放入溶剂,或者单纯的蛋白质在真空中的能量最小化)
2.这不是积分,只是选项用了这个名字而已,采用最速下降法是因为这里我们想将能量最小化,而不是运行NVT模拟或者MD模拟。
3.当最大力小于1000kJ/mol/nm时停止模拟
4.能量步长
5.最大步数
7.下面的参数描述了如何搜寻近邻原子并计算相互作用。
8.临近列表与长程力计算更新频率,1代表每步都更新
9.截断方案:Verlet
10.临近原子确定方案:可分为grid格点搜索和simple简单搜索。grid即格点法,计算速度要比simple快很多。
11.计算长程库伦力的方法:PME
12:短程库伦力的截断距离
13:短程范德华力的截断距离
14:周期性边界条件,在XYZ三个方向上均采用周期性边界条件(Periodic Boundary Condition)
关于最速下降法:第2行
最速下降法不是最有效的搜索方法,但它很稳健并且容易实现。关于最速下降法可参考官方文档P51.最速下降法中需要定义最大位移,并且每一步都会用到Fmax。
关于近邻搜索:8-10行
配对列表的生成:只需要对一些粒子对 i,j之间的非键配对力进行计算, 在这些粒子对中, 粒子 ii和 j的最近映象之间的距离小于给定的截断半径 Rc. 如果彼此之间的相互作用已完全被键合作用
所考虑, 一些满足这一条件的粒子对仍然会被排除. GROMACS使用了一个 配对列表, 其中包含了那些必须计算彼此之间非键力的粒子对. 这个列表中包含原子 i, 原子 i的位移向量,
距离原子 i的这个特殊映象rlist
范围内的所有粒子 j. 该列表每nstlist
步更新一次, nstlist
的典型值为10. 有一个选项可用来计算每个粒子所受到的总的非键力, 这些力来源于围绕列表截断
值, 即距离在rlist
和rlistlong
之间的壳层中的所有粒子. 在更新配对列表时, 会计算这些力, 并在随后的nstlist
中保持不变.为创建邻区列表,必须找到与给定粒子相近(即在邻居列表截断内)
的所有粒子. 这种搜索通常被称为邻区搜索(NS, neighbor search)或对搜索(pair search), 涉及到周期性边界条件和映象的确定。
邻区截断方案: 原子组与Verlet缓冲
GROMACS支持两种不同的截断方案设置: 最初的基于原子组的方案和使用Verlet缓冲区的方案. 它们之间存在一些非常重要的区别, 这些区别可能会影响计算结果, 计算性能和某些功能的支持情况. 组方案(几乎)可以像Verlet方案一样运行, 但这将导致性能降低. 对在模拟中常用的水分子, 组方案特别快, 但在最近的x86处理器中, 这种优势消失了, 因为可以在Verlet方案的实现中使用更好的指令级并行. 在5.0版本中已经不再提倡使用组方案了, 将来的版本中将会删除此方案.
在组方案中, 近邻列表由至少含一个原子的原子对构成. 这些原子组最初是电荷组。
Verlet截断方案默认使用缓冲对列表. 它也使用了原子团簇, 但这些不像在组方案中是静态的. 相反, 团簇以空间定义, 包含4个或8个原子, 使用如SSE, AVX和GPU的CUDA等可方便地对此进行流计算. 在近邻搜索步骤中, 使用Verlet缓冲创建对列表, 即对列表的截断距离大于相互作用的截断距离. 在计算非键力的内核中, 只有当一个原子对在特定时间步处于截断距离之内时, 这个力才会被加入到近邻列表中. 当原子在两次对搜索步骤中移动时, 这确保了几乎所有处于截断距离内的原子之间的力都会被计算. 我们说, 几乎 所有的原子, 是因为GROMACS使用了一个固定的对列表更新频率以提高效率. 一个处于截断距离外的原子对, 在这样固定的步数中, 可能移动得足够多以致处于截断距离之内. 这种小概率事件会导致小的能量漂移, 而且概率的大小取决于温度. 当使用温度耦合时, 给定能量漂移的一定容差, 可以自动确定缓冲大小.
关于长程库伦力的计算:11-14行
参考手册4.8.1节。Ewald方法差不多是直接根据库伦力公式去计算长程力,速度很慢,计算量巨大。一般不采用Ewald方法,而是采用PME(Particle-Mesh Ewald)方法,该方法
可以提高倒易空间加和的计算速度,这种方法不直接对波矢进行加和, 而是使用内插方法将电荷分配到网格上.先使用3DFFT算法对格点进行傅里叶变换, 在k空间中利用对格点的单个加和就可以得到倒易空间的能量项.
以上能量最小化的一个典型mdp文件,其中的一些解释(近邻搜索与长程库伦力计算)在其他mdp文件中还能用到。