这是本文档旧的修订版!
ADF软件集成了使用蒙特卡洛方法优化力场参数的脚本。目前已经可以较为方便的使用,脚本经过测试,可以正常工作,但大都是在命令行下工作。用“优化”的方式,也可以创建一些新的力场:一般在相似力场的基础上,对力场中的元素进行修改,使用DFT计算这些新元素体系的一些结构的能量,然后使用MCFF对力场参数进行优化。
工作过程分为如下几步:
本文以<chem>CH3</chem>-Br为例,以DFT计算一系列<chem>CH3</chem>-Br的结构,用来优化含有Br、C、H的力场。本文中,扫描了Br从近远离甲基的势能面,因此优化得到的力场,应该能够较好地描述Br进攻甲基的反应过程。
下文生成的geo、trainset.in、ffield、ffield_min、ffield_max、ffield_bool、ffield、mcff.run文件必须在同一个目录下,优化力场的过程也是通过命令行,在该文件夹进行。因此要确保在该文件夹下,可以直接运行*.run,并且该文件夹的完整路径中不包含中文字符、空格等。
为了方便起见,我们可以使用ADF模块,进行一个线性过渡(Linear Transit)计算,对结构变化过程进行势能面扫描。参数设置:
注意上面Relativity选项实际上应该选择Scalar,因为Br已经属于重元素了,使用相对论方法,能够更好地计算体系的能量,但这里为了节省计算量,因此没有使用相对论。
设置用户关心的键长变化范围(选中两个原子之后,右边窗口点击后面括号里面有distance的那个➕,即可设置键长的变化范围):
更详细的势能面扫描教程,参考:peswithlineartransit
下面的命令行操作,要求ADF的环境变量生效。用到的命令,都是ADF的内置命令,例如startpython就在adf201*.*/bin目录内。所以Linux、Mac较为便利。Windows需要用户自行测试。
将LT_to_trainset.py LT.t21放到同一个文件夹内,在该文件夹内,命令行执行:
startpython LT_to_trainset.py LT.t21
注意,其中startpython是ADF内部命令,只要环境变量生效即可运行。LT_to_trainset.py文件见前面下载链接。LT.t21是前一步Linear Transit计算得到的输出文件。这个命令生成geos_LT文件,这个文件就是geo文件,直接改名为geo即可。生成的geo文件见前面的下载链接
Windows中的运行方法:
$ADFBIN/startpython LT_to_trainset.py *.t21
后面其他的命令,也需要在前面加$ADFBIN,但是像cp、chmod这样的命令,并不是ADF的命令,而是系统的基本命令,前面不需要加ADFBIN,和Linux一样即可,用户需要自行尝试。
执行命令:
adfreport geo -rxtrainset > trainset.in
adfreport是ADF内部命令,只要环境变量生效即可运行。该命令将生成trainset.in文件。本例生成的trainset.in文件见前面的下载链接。
如果用户希望增加一些其他的结构点、其他体系的DFT计算结果,可以在得到这些计算的*t21文件之后,将其包含的信息放入geo、trainset.in中:
分别对得到的每个*.t21文件进行如下处理:
adfreport [filename].t21 BGF >> geo
其中»符号表示将这些结果“追加”到geo里面去,如果使用>符号,则会覆盖掉之前的geo的信息。都处理完毕之后,执行:
adfreport geo -rxtrainset > trainset.in
这里使用>符号,因为geo已经包含了所有信息,所以用这个最新的、最完整的geo生成trainset.in是没有问题的。
注意,所有命令,都是在同一个文件夹下的命令行之行。
Trainset.in文件有四列,其中第二列是“权重”,关于“权重”,参考《使用块体材料DFT计算数据优化ReaxFF力场》:3.生成trainset.in文件
Trainset.in文件格式,参考:https://www.scm.com/doc/ReaxFF/trainset_descrp.html
相似的力场本例中用了CHOSFClN.ff,直接将其拷贝到当前目录(和前面生成的geo、trainset.in文件在同一个目录中),并修改名字为ffield。将Cl元素修改为Br元素。并修改一些其他的参数,比如原子价、有效质量、范德华半径、价电子个数等(具体参数的含义可以参考手册)。具体如下(彩色的项目可能需要被改动):
在工作目录中,命令行执行如下命令:
adfreport ffield -ffield-min > ffield_min adfreport ffield -ffield-max > ffield_max adfreport ffield -ffield-bool > ffield_bool
这三个命令分别在当前目录下,生成ffield_min、ffield_max、ffield_bool文件。
这三个文件原则上修改的越符合实际情况越好。本例中,只包含C-Br的数据,因此只能优化Br的原子参数、C-Br(在力场文件中编号为1、6)的键参数,具体的field_bool见下载文件。
ffield的格式、参数的具体含义,参考英文手册(page 16)
注意根据实际需求,灵活修改(参数的含义在本文前面已经进行了说明):
到这里为止,所有文件都齐全了,都放在当前目录里面。
在命令行运行:
chmod 700 mcff.run ./mcff.run
生成的summery.txt列出了蒙特卡洛的过程,比较重要的数据是能量误差(Current error这一列数据),当然误差越小越好。生成的ffield_best是优化得到的力场,修改成自己希望的名字,例如CHOSFBrN.ff即可。同时也给出了最后一个被“接受(蒙特卡洛认为较优的力场)”蒙特卡洛生成的力场,名为ffield_last_accepted.1,供参考。