目录

CVHD:加速分子动力学模拟中的裂解反应发生

Collective Variable-driven HyperDynamics (CVHD)原理

化学的动力学过程中,很多的重要问题,例如化学反应(催化、工业、酶)或物理过程(扩散、相变),都是由“罕见事件”驱动的,即发生该事件不太容易,以至于观察到该事件所需时间超出分子动力学可模拟时间范围之外(目前实际能模拟的时间尺度仅在纳秒级别)。

因此需要fbMC、REMD、Bond Boost等加速反应过程的方法,这些方法各有适合的范围,例如Bond Boost对于形成新键的反应非常适合,REMD对于有足够计算资源的情况下比较适合,fbMC往往在表面催化方面有很好的效果。而CVHD对于裂解反应,有很好的加速效果。

CVHD是一种“基于bias”的分子动力学,首先修改运动相关的势场/运动方程,以达到加速的效果(增大稀有事件发生的概率),然后从结果中去除“bias”的影响。

自由能法需要记录在每一步中添加的“bias”情况,需要定义合适的集合变量(CV)以降低这种方法的维数。一般而言,最多可以定义2~3个CV是可行(使用伞型采样、Metadynamics、自适应偏置力等方法),也可以使用NEB或String法沿一维反应路径取样。

无论是哪种形式,建立好的CV对结果非常重要,好的CV应该满足这些条件:

因此CV通常不容易构造,不适合研究许多独立的同时过程。拿Metadynamics作为自由能采用方法为例来说明:bias通常为高斯函数,在当前CV值ξi处周期性地沉积。它逐渐填充能量值,直到没有剩余的能垒。

从而真实自由能就是填充完毕(即所谓“收敛”)之后填充函数Vbias的相反数,其中(g指Gaussian函数):

形象的说,一个坑的形状是什么?我们往里面倒入融蜡,之后取出蜡的形状取相反数,即坑的形状。

基于轨迹的“有偏采样”,可以作为自由能采样的替代方法,例如过渡路径采样或动态过程中的“实时无偏”,后者得到Hyperdynamics。“实时无偏”会丢失自由能信息,但时间可以从模拟中恢复。在修改后的势场上运行模拟时:

“hypertime clock”由下式确定:

简单地说,hypertime会告诉你“在无bias的模拟中需要多长时间才能到达这里?”。因此,为Hyperdynamics选择合适的bias(Vbias)困难且容易出错。

一种可能的补救方法是使用自学习bias,即CVHD。在这种方法中,使用Metadynamics及合适的CV η实时构建Vbias,但与Metadynamics相反的是,一旦检测到过渡(过渡态区域、反应发生),bias就会被重置,CV只需要对单个转换有效。

全局CV的η值由原始局部CV的χi构成(由最高χi控制):

此时只有某断键相关的局域CV生效 (参考文献:Bal and Neyts, J. Chem. Theory Comput. 2015):

Bias应用于接近过渡(态)时,通过键长rimax和rimin来定义过渡态特征(rimax值对应过渡态键长,rimin对应平衡态键长)。这样的CV构造,意味着当所有键在接近平衡态时,整体CV的η值接近于零。随着bias的增加,将η推向更高的值,这反过来又将系统中当前拉伸幅度最大的键进一步推向解离。一旦CV的η值达到1并在指定时间内保持该值,该算法即认为完成了过渡(反应),进而重置bias并更新键的情况。其中指数中的p是由用户设定的一个控制常数。

注意:

HyperDynamics与MetaDynamic的差别与联系

优势

HyperDynamics的优点:它是针对复杂系统的,目标是探索反应性,bias总是沿着一个特殊的CV设置,而CV是系统中总键数,因此系统倾向于断键。因为bias很具体,所以比MetaDynamic需要的用户输入参数要少。另一个优点是可以从中恢复出动力学信息,MetaDynamic则不能。

MetaDynamic的优点:如果要模拟单个反应,MetaDynamic通常效果最好。它能返回自由能表面,但没有动力学信息(至少不能直接得到动力学信息)。通过沿一组CV添加bias来加速模拟。在MetaDynamic中,CV必须由用户根据其对反应的了解来构造,因此MetaDynamic需要用户在这方面拥有专家级知识。

适用范围

AMS的PLUMED中也有MetaDynamic的接口,PLUMED有一个相当不错的CV库。CV是原子坐标的函数,PLUMED开发了一种语言来构造更复杂的CV。

下面是一个实例,在AMS分子动力学作业的MolecularDynamics字段中,添加了简单的PLUMED MolecularDynamics设置,用于展示脚本格式:

MolecularDynamics
  InitialVelocities
    Temperature 300
  end
  NSteps 1000
  Plumed
    Input 
        COORDINATION GROUPA=1 GROUPB=2-6 R_0=0.18 NN=6 LABEL=cv1
        COORDINATION GROUPA=2 GROUPB=7-12 R_0=0.12 NN=6 LABEL=cv2
        METAD ARG=cv1,cv2 SIGMA=0.02,0.02 HEIGHT=0.1 PACE=200 LABEL=restraint
        PRINT ARG=cv1,cv2,restraint.bias STRIDE=1 FILE=COLVAR
    end
  end
  Thermostat
    Tau 10
    Temperature 300
    Type NHC
  end
  TimeStep 0.5
end

使用的CV是:

模拟将生成一个名为HILLS的文件,从中可以读取2D自由能曲面(需要AMS的脚本工具)。

本文主要介绍HyperDynamics的应用。

CVHD加速方法适用于AMS中ReaxFF、ADF、BAND、DFTB、MOPAC、机器学习势的分子动力学模拟

本文介绍基于ReaxFF的分子动力学中,如何调用CVHD达到加速热解反应的效果,在AMS中,也支持其他模块如BAND、DFTB、MOPAC、机器学习势的分子动力学调用该方法进行加速,除去各个计算引擎本身的方法参数设置之外,分子动力学参数、CVHD参数的设置与本文完全一致(图像界面是一致的)。

本文选取了一个简单的例子:模拟实际条件下(1000k,50kg/m3)十二烷的低温热解。这是一个具有挑战性的模拟反应,因为烷烃的热解产物取决于温度,导致以下趋势:

因此,不能仅仅通过提高模拟温度来模拟低温热解的动力学。此外,考虑到键断裂反应的罕见事件性质,依靠延长动力学模拟时间的蛮力方法是不可行的,如下文所示,十二烷断裂发生的时间尺度在毫秒级。

本文模拟结果参考文献:

与一般的反应分子动力学模拟不同的是,CVHD要求步长更小(例如0.1fs)从而精度更高,本文为了更快得到结果,使用了0.2fs步长,体系仅包含几百原子。因此可以估计各种反应发生的时间尺度,但诸如速率常数等则因为样本数太少而缺乏统计平均的意义。

这种加速方法,适用于中等规模的体系:CV相关的键的数量最好在1000个左右,或者更少一些,当然略多一些问题也不大,数量太大CVHD的加速效果就不明显了,因为会太频繁地触发事件,从而限制bias累积速度,进而限制裂解加速效果。

ChemTrazYer2.0支持基于CVHD模拟的结果的基元反应分析。

分子动力学参数设置

模型

AMSinput → Edit → Builder,修改Cell的晶格常数味25*25*50,并添加6个十二烷分子:

一般性参数设置

选择力场CHO(不同模块,例如ADF、BAND、DFTB、MOPAC,分子动力学参数设置区别仅在此窗口,后面的分子动力学参数设置、CVHD参数设置与本教程所示完全一致)

设置总步数、步长(如上所述比一般MD偏小,这里设置为0.2已经偏大,建议设置为0.1)、轨迹文件保存频率(如果不关心轨迹本身,则该值可以设置很大例如1000,如果关心轨迹本身,例如需要通过轨迹观察反应的路径,则需要设置的较小例如100)、checkpoint保存频率一般都设置的比较大,例如10万步:

设置温度为实验温度1000K,Damping Constant必须设置大于0的值(100fs以内),但一般对结果没有太大影响:

CVHD参数

这里是热解反应,因此涉及到C-C、C-H键的断裂,因此设置两个局域CV:

注意最小值对应平衡键长,最大值对应过渡态键长。设置如下:

Model → Collective Variable-Driven Hyperdynamics

其中

点击Collective Variables前面的➕两次(对应两个CV),并增加如下参数设置: 其中

保存作业并运行。

结果查看

如果不启动CVHD,其他参数与条件保持不变,则无法观察到任何反应。但启用的情况下,发生了多次裂解反应。

HyperTime

如前面所述,HyperTime是无bias时的“真实”时间尺度,即在没有CVHD的情况下一个进程需要多长时间。SCM - Movie - Graph - delete Graph去掉默认显示的能量变化曲线,然后MD Properties - HyperTime,可以看到纵坐标为HyperTime,横坐标为帧。可以把横坐标改为MD时间:MD Properties - time - Graph - Curve on X,则x轴变为了MD的时间。

双击纵坐标,也可以修改y轴的单位:

组分分析

在分子动力学模拟运行过程中,您可以使用AMSmovie检查模拟过程。例如,可以通过Max Bias Energy图,查看CVHD的bias是如何逐渐形成的,以及事件发生时如何的重置:

delet键删除之前的Graph,然后

可以看到一个反应有效发生的时候,就存在一次Max Bias Energy的突变——清零。

bias沉积图

用户可以在命令行,用Python脚本生成。命令行打开方式:

用户输入命令:

$AMSBIN/amspython $AMSHOME/scripting/standalone/reaxff-ams/cvhd-hills.py */*.results回车

注意:

回车后将生成一个名为cvhd-hills.csv的文件,并由AMSgraphs自动打开。修改显示方式(不要以曲线的方式,而改为以分散点的方式显示):Plot → Options → Curves,去掉Curve的勾选,并勾选Data Points:

图中横坐标是Step,纵坐标是CVHD的全局CV的η值。每个点代表一个的Gaussian bias峰,但η=1处的点仅表示系统访问了过渡区,CVHD方法不会在η>0.9的区域有bias。

为了更深入的理解CVHD,我们可以详细看看上图中,第一次反应事件的部分:

最初,系统保持在η=0左右(所有键处于平衡值附近)。随着偏压的增大,η逐渐被推到越来越高的值(键被拉伸得越来越长),在42500步左右η达到1.0,但随即返回到较低的值。这意味着在指定的等待时间内没有完成过渡(即没有发生反应)。最后,约90万步左右,η在1.0处停留了足够长的时间(对应我们在参数设置里面的Wait Steps),表明键已解离。

对上图的跟踪观察,有助于诊断、改善CV的设置:

每个局域CV单独测试调整,然后组合一个模拟作业中,通常会很有帮助。全局CV包含局域CV的加权和,从而产生一个最佳Rmin,一般,体系越大,Rmin也需要设置的略大。

分析反应时间的时间尺度

同样地,需要在命令行使用Python脚本生成一个时间图:

$AMSBIN/amspython $AMSHOME/scripting/standalone/reaxff-ams/cvhd-hypertime.py */*.results

回车后,AMSGraph将自动打开时间图,我们可以将图的y轴更做对数,从而显示比例会更好看一些:

x轴显示Step,y轴显示自上次事件以来的HyperTime(以秒为单位)。每条曲线都显示了随着bias的加入,时间逐渐加速,直到检测到事件(键分离)。该图中,不同时间尺度,可能对应了不同类别的反应过程:

该曲线一般而言比较平滑,否则CVHD的参数(Rmin、Rmax、Frequency等)设置可能需要改进。

讨论

为了提高计算效率,本教程使用了一个小示例系统以及最少的步骤。直接后果:

为了克服这些限制,需要更大的系统和更长的模拟时间。这里选择的时间步长0.2 fs,对过渡期间而言可能导致结果不准确,可能使用较短的时间步长(0.1 fs)更好。本例中的C-H键的Rmin/Rmax参数,是通过检查bias沉积图,进一步调整得到的。

本文参考SCM官网英文教程:https://www.scm.com/doc/Tutorials/MolecularDynamicsAndMonteCarlo/CVHD.html