ReaxFF模拟的一些经验(更新中,欢迎贡献知识)
ReaxFF模拟新手比较多,因此希望写一点希望有所帮助,如果不对的地方,欢迎指正,也欢迎增加条目,帮助后来的新人(ams@fermitech.com.cn)。
分子用ADF优化好,还是ReaxFF优化好?没有区别。因为都会被最终MD模拟所采用的力场所同化。无论开始优化的多精确,在ReaxFF力场下跑几百步,都会成为该力场下的应有结构,之前优化的精度被完全清除。ReaxFF优化的结构是否可靠取决于具体使用的力场是否合适,如果结构优化误差很大,那MD误差也很大。
弛豫I:
为什么要弛豫?弛豫的作用,类似分子计算里面的结构优化。但在MD模拟中,原子个数多,导致自由度非常大,因此结构优化非常难以收敛,而存在范德华作用的体系里面,优化的收敛就更加困难,而且收敛与否,对后续MD模拟意义不大。因此在MD里面,更常用的是弛豫。
大分子的结构优化,对于分子动力学模拟来说,几乎毫无意义,因为结构优化只能得到离初始结构接近的能量最低点,而无法得到全局能量最低点。在分子动力学领域,人们往往使用反复退火,来寻求能量更低的结构。不过MD对于能量最低结构的追求,似乎也并不强。
另一个角度来说弛豫的必要性,是让初始结构合理化,避免“爆炸”现象,产生“假反应”。例如建模的时候,有的原子靠的太近,直接进行MD模拟,可能一下子就炸开了,从而很快与其他原子成键。
怎么弛豫?弛豫实际上就是进行一个“低温”的分子动力学模拟,所谓低温是相对反应温度而言的,为了确保弛豫过程不要发生反应,因此设置相对低温。在文献中,5K、50K、298K等等,根据不同的体系反应温度,这些都叫做“低温”。体系处于低温下热运动,因此结构会逐渐向低能量构型演化,这也是用弛豫代替优化的根本原因。
驰豫II:驰豫的时间长度以能量逐渐下降到较为稳定为止,不需要多严格。实际上大多数体系稍微弛豫,就可以避免不合理初始构型。
力场的检验:
在选择力场的窗口右侧的按钮,可以看到力场的来源,以及当初拟合该力场所用的体系,力场具有一定的迁移性,类似结构、体系,适应的可能性较大;
弛豫过程中,材料的结构变得不合理了(键长、键角与实际严重不符合),则表示这个力场不适用于这个体系
更进一步的检验力场是否适用于体系,就只能通过模拟结果来检验了。
-
系综:
系综本身是一个统计概念,因此原子个数较多的时候,结果数据的涨落才会较小。例如温度的涨落,几百个原子的体系,温度的涨落是相当大的,但如果是一两千个原子,温度的涨落就一下子小很多了。压强的涨落则可能需要一万原子的量级,才会达到我们需要的范围,因为这个原因,在模拟化学反应的时候,用NPT系综的情况没有NVT那么普遍,因为控压有点困难——这是材料物理内在属性决定的,不是算法的问题。
NVT、NPT的含义需要真正理解,否则就会问出“NPT系综模拟怎么Cell的形状变了?”这种问题。NPT系综会控制压强,样本数不大的情况下,Cell每个面的压力是不一样的,Cell的形状当然会发生改变。如果希望强行要求Cell等比放大或缩小,在Barostat设置窗口,Equal选项选择xyz即可,表示xyz等比变化。
步长:力场和精确是拉不上关系的,力场本身就不会精确。步长越短,只能说是在分子动力学框架内,越精细。但是越精细不等于越精确。但步长也不能太长,太长就会非常不精细以至于影响结果的可靠性。因此步长既不能太短也不能太长,0.25fs是一个比较适中的值,一般不需要改动。特殊情况,例如温度极高如10000K,或者molecule gun入射速度极快,例如10Å/fs,则需要将步长减小,避免每个step原子的运动距离太远,建议每step运动距离不要超过0.02Å。
任务不要投上去就不管了,直到任务结束才看看有没有结果,实际上在初期尝试过程中,要注意去看看被消耗的分子去哪里了,如何被消耗掉的,变化的趋向,是预期的吗?
提交任务的时候,可以同时设置多种反应条件,一起提交上去(当然要使用interactive队列,默认使用的Sequential队列每次只运行一个任务,多任务提交就需要排队),这样更节省自己的时间。一般每1000原子给它分配1核比较划算,例如有一个1500原子的体系,可以让这个任务使用2核。这样尽量节省核数,多提交几个任务。
键级:很多人纠结建模的时候,键级的设置,以及离子键共价键的设置,这是白费力气。ReaxFF与DFT、DFTB、Mopac计算时,都不会读取用户输入模型的键特征,只读取原子坐标。ReaxFF本身在计算过程中,会根据自身理论,根据元素和原子距离生成一套键级。
时间尺度问题:目前分子动力学模拟,限于计算机效率,一般最多只能模拟纳秒(ns)级别的时间长度。而宏观真实反应,自由基反应会很快,除此之外一般可能都会慢于纳秒尺度,例如毫秒、秒的级别,甚至小时、天、年的级别。那么如何在ns的时间尺度,就探索出宏观时间尺度中的规律呢?这是一个系统性的问题。
分子动力学过程多长时间观察到反应:对正常的分子动力学模拟而言在几百ps左右观察到反应是比较正常的。如果几ps就观察到反应了,要么是自由基反应、离子反应等非常活泼的反应,要么就是错了——力场不合适,或者初始模型不合适(没弛豫?)。
早期,研究者们一般采用升温的方式,加速反应发生,例如反应温度为1000K,则可能升温到4000K,除了少量的反应,不同温度区间产物不一样、机制不一样外,大部分反应的机制不太受温度影响,温度只影响其反应速率。因此升温就可以将原本宏观时间尺度才发生的反应,在ns级别就可以观察到。更严谨一些的做法,研究者们会利用尔伦尼乌斯公式,将结果反推到正常温度下。
后来人们开发出一些能够加速反应发生的特殊模型或方法,例如
CVHD,在ns级别的计算量下,得到对应的宏观时间尺度,以及宏观时间尺度的结果,不过这种方法主要用于裂解反应。
另外有
Bond boost,可以通过提高原子碰撞概率,加速反应事件的发生,这种方法主要用于键结合的反应。
REMD的效果则是通过增大算力,提高反应事件发生概率,呈现给用户实验温度下的结果,但时间尺度仍然在微观时间,即ns。
fbMC则通过在分子动力学中插入蒙特卡洛,增大随机性,从而增大翻阅能垒的概率,实现反应的加速,但缺点是时间尺度无法与宏观对应,因为蒙特卡洛没有时间概念。
-
影响反应发生的因素:
分子间距如果特别大,比如真实气体,分子间连碰撞的机会都极少的话,怎么去发生反应呢?(当然热解例外,因为不需要分子间碰撞),因此一般密度越高,或者压强越大,发生反应的速度就越快,这也是符合一般规律的。
发生化学反应,一般需要翻越能垒,温度越高,翻阅能垒的能力就越大,几率也越大,也会让反应速度变快。
加速化学反应的方法,例如CVHD可以对分解反应加速,Bond boost可以加速化学键结合,fbMC可以增大随机性而加速反应,Replica exchange、纳米反应器等,具体参考
分子动力学:ReaxFF & 机器学习势
-
周期边界条件是做分子动力学必须了解、理解的概念,参考:
周期边界条件
分子动力学的随机性与误差:
做分子动力学,必须理解热力学随机、统计分布的概念。宏观的热力学规律,只是因为样本数足够大,因此才体现出规律。在样本数越少随机性越大。拿温度来说,温度与分子平均平动动能通过一个公式可以精确换算,但在特定温度下,去测量每个分子的平动动能,会发现其实是完全随机的。这个动能均值,只有样本数逐渐趋于宏观的时候,才会等于温度公式计算出来的动能值。注意这种随机性是客观世界中本有的,与计算、计算方法无关,分子动力学的随机性是在尽量还原这种客观世界本有的随机性
由于分子动力学的随机性(蒙特卡洛的随机性更大),因此做多次相同条件的模拟,得到的定性结果应该具有一致性,但是定量上每次做结果都会不一样。分子动力学的随机性,也正是做分子动力学模拟所必要的一个特性。
反应力场除了热力学带来的随机性外,自身精度本身有误差,它只是尽量趋近于DFT的结果。ReaxFF与DFT之间存在误差,DFT与真实之间存在误差。
反应种类:
热解、聚合、燃烧等不同的反应,对ReaxFF来说并无区别,反应条件、反应物、准确的力场,决定出现这些不同类型的反应。
反应分子动力学的思想与实验相似:反应物放置于一定条件下,该发生什么反应,是这些分子的热运动以及分子的本身属性(更究竟而言,是原子的属性)决定的,而力场的作用是尽量精确地还原这些原子的属性。
催化剂:ReaxFF不区分反应物、催化剂,对ReaxFF而言,催化剂也是反应物。如果力场极为精确,则这种物质在参与反应的过程中,自然会表现出催化剂的特征。
与Lammps的区别:除了模拟模型、力场数量、结果分析功能方面的区别,在计算引擎方面已知的有如下区别:
外加电场时,Lammps不考虑电场对能量的影响,只考虑电场对原子受力的影响,AMS-ReaxFF两方面都考虑。
不检查不合理原子间距,例如原子距离0.1埃,也不会报错,但这是不合理的。AMS-ReaxFF在原子间距低于0.3埃时会报错中断作业。
对力场检查不严格,缺少某些参数也是可以“正常”运行的,AMS中如果缺少参数则不允许运行。
即使不使用 OpenMP,单纯使用 MPI,计算效率也比 Lammps 约高一个数量级。
暂时总结到这里,大家有其他经验欢迎、期待贡献出来。