使用LAMMPS FIX PLUMED实现基于分子动力学的增强采样
增强采样与MetaD的基本原理
Metadynamics用于增强分子动力学模拟中的采样,并将自由能表面重构为几个选定自由度的函数,通常称为集体变量(CVs,Collective Variables)。在Metadynamics中,在CV空间中自适应构造的与历史相关的偏置势可以加速采样,从而对对原始算法进行了显著的改进,高效、灵活和准确等优点使其在多个科学领域发现了许多成功的应用。
事实上,在使用原子经验力场的典型MD模拟中,需要使用飞秒级的时间步长来正确地积分运动方程。而感兴趣的过程往往发生在更长的时间尺度上。从这些考虑来看,MD明显受到时间尺度问题的困扰。人们提出了各种各样的方法来解决这个问题,这些通常被称为增强抽样技术。
Metadynamics属于这样一类方法,通过引入作用于选定自由度的附加偏置势(或力)来促进抽样,通常称为集合变量(CVs)。同时,能够增强采样并重构自由能面(FES)。许多方法也可以被认为属于这一类,最为熟知的是伞形采样。
对于Metadynamics,其偏置势形式为
即高斯函数形式。
经过长时间后,自由能可由如下等式估计:
由
我们就可以作出作为CVs的概率密度分布
通过LAMMPS+PLUMED插件实现增强采样
不会详细介绍LAMMPS安装,教程一抓一大把,请参见LAMMPS官方文档
1.我们获取最新版LAMMPS 和 增强采样软件PLUMED 2.4.0的压缩文件
PLUMED一直在更新,但不是每个版本都能顺利装的上,盲目选最新版可能会因为莫名其妙的报错浪费大量时间
2.解压LAMMPS的压缩文件,进入<解压出的文件>/lib/plumed 目录,把PLUMED压缩文件复制进去并解压, 并且创建个文件夹用来安装,命名为plumed2
3.安装
1 | cd plumed-2.4.0 |
如果能找到plumed 成功安装的提示就成功了
4.回到LAMMPS解压出的文件夹,进入src目录
1 | make lib-plumed args="-p <PLUMED安装位置的绝对路径>" |
再把要用的包 (molecule,rigid,kspace,manybody,extra-dump,extra-fix) 全 make yes
一遍,就能编译 make mpi
了
5.使用时,在LAMMPS方面,只需要在.in文件中加上一行fix plumed command,详见LAMMPS官方文档
在PLUMED方面,需要创建plumed.dat脚本文件,以下是一个用局部熵与焓作为CVs,实现Metadynamics的示例
1 | LOAD FILE=../../PairEntropy.cpp |
其中PairEntropy.cpp为PLUMED官方没有放入官方库中的一个变量脚本,用于生成局部熵。
其余指令不再赘述,见 PLUMED2官方文档
万事俱备后,将你的lammps通过mpi run起来,就可以实现增强采样了。
通过plumed内置的sum_hills程序,就可以计算自由能了。
1 | nohup plumed --no-mpi sum_hills --hills ../HILLS --stride 1000 --mintozero --bin 200,200 & |