本文以甲烷燃烧为例,燃烧过程中不断生成CO2和H2O,版本要求AMS2020,本文的范例使用ReaxFF模块完成,其他模块例如机器学习势、基于BAND模块则属于AIMD,除了Main的参数设置不同,其他设置完全一致。
AMSinput > Edit > Builder创建O2与CH4的混合物:
选择力场(对于ReaxFF来说,力场列表只显示包含模拟体系的元素的力场。如果此处什么力场都没有,表示没有力场支持你的体系,可以改为使用机器学习势模块,尝试使用M3GNet-UP-2022):
点击Task:Molecular Dynamics后面的 > 按钮,设置分子动力学模拟详细参数:
点击 Thermostat 后面的>按钮,设置温度。如果只设置温度则为 NVT 系综,如果设置温度的同时设置 Barostat 则为 NPT 系综。
NPT 系综,一般建议在原子个数非常多,例如几万原子的情况下才使用。否则压强涨落太剧烈,可以达到几千 MPa,原子个数越多,涨落越小,这本身也是符合物理事实的。
只需要设置系综实现的方案 Thermostat(实现 NVT 系综的算法)、Temperature、Damping constant。其中 Damping constant 表示震荡时间(在达到指定温度前,温度随机震荡),一般默认设置 100fs,也可以降低为 5fs,对结果影响不大,不过一般不修改,运行更正常一些。
恒温:温度如果只设置了一个,则不需要设置 Duration(s),整个模拟过程都是该温度
包含保温过程:Duration(s) 的数字个数比温度的数字个数少 1 个。如上图所示的设置,表示:起始温度 298K,经历 3000 步升温到1300K,然后保温 3000 步,然后经历 3000 步升温到 4300K,然后保温 20000 步,然后经历 3000 步降温到 298K,298K 直到结束。
在 Thermostat 设置的基础上增加 Barostat 的设置,压强的设置方式类似温度。不过 damping constant 的设置注意不能设置太小,否则有可能导致出现“singular lattice”的报错。
Thermostat 与 Barostat 均不设置,只设置 MD 参数中的 Initial Temperature,即 NVE 系综。
SCM - Movie - MD Properties - Temperature:
可以看到温度的变化如同设置的效果。温度曲线大致与能量曲线重合,这是因为温度的变化引起动能的变化。而高温区域不再重合,表示高温区域发生了反应,释放了热量,因此导致能量升高。这里的能量是总能量=动能(每一帧中,原子的运动速度决定)+势能(每一帧中,整个体系的构型决定)。 Graph - Delete graph可以删除该曲线的显示。
SCM - Movie - MD Properties - Molecules
例如:
此时横坐标是帧数,可以改为时间:MD Properties - Time在该窗口同时显示时间线(一条斜向上的直线),Graph - Curve on X Axes,时间被转换为X轴。
曲线的导出:Graph - Save as XY,可以保存为文本文件,包含XY两列数据。
这需要使用AdvancedWF模块的ChemTraYzer2.0。Movie → MD Properties → ChemTraYzer2.0:
点击 Run ChemTraYzer2:
点击第三部分列表中的一行,将弹窗左下角改为Bar,并设置合适的宽度,例如2000,将生成柱状图类似如下(相关反应次数、键变化次数柱状图:横坐标时间,纵坐标数量):
在AMSinput中的键级,未经计算,因此其键级是图形窗口根据简单的价电子规则而猜测出来的。在Movie中是经过计算的,因此鼠标选中两个原子,窗口左下角则会显示两个原子之间的键级。