- 原始文档 GROMACS with QM/MM using DFTB3
- 2017年02月12日 20:52:46 翻译: 陈国俊; 校对: 李继存
分子动力学模拟软件GROMACS包含了QM/MM模块, 其中的量子化学计算需要通过外部程序来进行. GROMACS目前提供的量子化学接口包括: Gamess UK, Gaussian, Mopac和Orca. 详情请参阅GROMACS官方说明.
DFTB是基于密度泛函理论的参数化量子化学计算方法, 其最新版本DFTB3发展于2011年, 能够成功地用于描述有机和生物分子体系, 并比常规的DFT方法快100到1000倍. 对于DFTB的介绍, 可以参考DFTB2与DFTB3的原始论文.
我们已经在GROMACS 5中实现了DFTB方法. 这意味着所有计算都是在GROMACS程序中进行的, 运行QM/MM模拟时不再需要借助外部程序. 实现方法可参考我们发表的论文:
T. Kubař, K. Welke and G. Groenhof: New QM/MM Implementation of the DFTB3 method in the Gromacs Package, J. Comput. Chem. DOI:10.1002/jcc.24029 (2015)
DFTB方法不能描述London色散作用. 不过, 对能量进行经验的post-SCF校正可以弥补这个缺陷. 目前, 我们已经实现了D3色散校正. 需要使用时, 请参考D3和D3-BJ的论文.
获取并安装程序
首先, 从GROMACS官方网站上获取GROAMCS 5.0版本.
同时, 我们需要将GROMACS与PLUMED联用, 所以你还需要获取PLUMED 2.1或2.1.x版本.
安装PLUMED, 但先不要为GROMACS打补丁.
获取实现DFTB的BGROMACS补丁, 最新版本于2015年10月30日发布.(请通过电子邮件告知我们, 你的姓名及地址, 何时下载了我们的程序. 我们会为你的信息保密, 并不会将其透漏给第三方. 谢谢)
使用刚刚下载的文件为GROMACS打补丁:
tar -xvzf gromacs-5.0-dftb-v6-plumed.patch.tgz
patch -p0 gromacs-5.0-dftb-v6a-plumed.patch
手动改正GROMACS主目录, Plumed.cmake
和Plumed.inc
文件中对libplumed.so
或libplumed.a
文件的引用, 使其与你的安装一致.
编译GROMACS. 选择dftb
作为GMX_QMMM_PROGRAM
的值, 并且关闭CUDA以及所有的并行选项(MPI, THREAD_MPI和OPENMP). 最好编译为双精度版本(GMX_DOUBLE=ON
). 当链接到MKL线性代数库时可能会遇到问题. 如果你解决了这些问题, 请告知我们.
获取参数集
DFTB方法涉及一些参数集, 请查阅原始文献获取更多信息. 在
从网站获得的参数文件不能被类似GROMACS的C语言程序直接读取. 所以, 要将其转换为合适的格式. 你可以下载一个脚本来完成这个工作. 不过需要注意的是, 需要在脚本中指定要处理的化学元素.
假如你需要在DFTB计算中应用D3色散校正, 还要下载必须的参数文件并将其解压到DFTB参数文件所在的文件夹.
进行模拟
由于使用了原始的GROMACS QM/MM接口, 所以你需要先了解这一部分的GROMACS官方说明. 需要注意的是, 进行QM/MM模拟时必须修改拓扑文件, 并且在目前的实现中, QM区域必须完全处于一个分子中(以拓扑的角度而言).
运行输入文件(.mdp
)中与QM/MM相关的选项总结如下:
QMMM = yes
QMMM-grps = QMsystem ; 需要在索引文件中定义
QMMMscheme = normal
QMmethod = RHF ; 需要但会被忽略
QMbasis = STO-3G ; 需要但会被忽略
QMcharge = 0 ; 整数
MMchargescalefactor = 1. ; 或更小值
使用DFTB运行QM/MM时, 还有一些额外的选项:
QMdftbsccmode = 3 ; 3对应DFTB3, 2对应DFTB2(也即SCC-DFTB)
QMdftb-telec = 10. ; 费米分布的"电子温度"
QMdftb-slko-path = /path/to/skf/ ; 参数文件的路径, 含最后的斜线
QMdftb-slko-separator = ; 元素名称间的可能字符
QMdftb-slko-lowercase = yes ; 或no, 文件名称中使用"Ca"还是"ca"
QMdftb-slko-suffix = -c.spl ; 文件名称
QMdftb-partial-pme = 1 ; 加速的PMF计算, 推荐使用(置零关闭)
QMdftb-dispersion = 1 ; 使用D3, 或者置零忽略色散校正
QMdftb-cdko = 0 ; 目前没实现
QMdftb-mmhub-inf = 1 ; 目前没实现
此外, 进行QM/MM模拟时需要注意下面的通用设置:
- 推荐使用
cutoff-scheme=group
, 因为我们并不确定Verlet算法如何用于QM/MM - 在一些模拟中, 如果没有明确指定
nstpcouple
变量, 进行NPT模拟时往往会得到错误结果. 我们推荐在运行输入文件中设置nstpcouple=1
, 或使用NVT模拟
运行mdrun
程序前, 可设置一些合适的环境变量以便使用扩展功能:
export GMX_DFTB_SLKO_PATH="/path/..." # 覆盖.mdp中的设置
export GMX_DFTB_SLKO_LOWERCASE=y # 覆盖.mdp中的设置
export GMX_DFTB_SLKO_SEPARATOR="-" # 覆盖.mdp中的设置
export GMX_DFTB_SLKO_SUFFIX=".skf" # 覆盖.mdp中的设置
export GMX_DFTB_TELEC=300. # 覆盖.mdp中的设置
export GMX_DFTB_QM_COORD=n # QM原子的坐标每 n 步输出一次
export GMX_DFTB_MM_COORD=n # MM原子的坐标每 n 步输出一次
export GMX_DFTB_CUTOFF=1 # 使用switched-force cut-off而不是PME处理QM/MM静电相互作用
export GMX_DFTB_RFIELD=1 # 使用reaction-field而不是PME处理QM/MM静电相互作用
export GMX_DFTB_SHIFT=1 # 使用shifted-force cut-off而不是PME处理QM/MM静电相互作用
export GMX_DFTB_SURFACE_CORRECTION=1 # PME中使用偶极校正而不是使用tin-foil边界条件
在模拟的过程中, 除了会生成常规的一些输出文件之外, mdrun
还会额外生成一个名为 qm_dftb_chargs.xvg
的文件, 其中包含了原子的Mulliken电荷.