用户工具

站点工具

本页面的其他翻译:
  • zh

adf:optimizeff

使用分子体系DFT计算数据优化ReaxFF力场

本教程仅适用于AMS2019.1及其以下版本。

ADF软件集成了使用蒙特卡洛方法优化力场参数的脚本。目前已经可以较为方便的使用,脚本经过测试,可以正常工作,但大都是在命令行下工作。用“优化”的方式,也可以创建一些新的力场:一般在相似力场的基础上,对力场中的元素进行修改,使用DFT计算这些新元素体系的一些结构的能量,然后使用MCFF对力场参数进行优化。

工作过程分为如下几步:

  1. 使用DFT方法计算一系列结构(可以调整键长键角等参数,得到不同的结构)的能量,这些结构点的能量是否具有代表性,是否是化学反应中的关键结构,直接影响到力场优化的结果的好坏,所以一般根据反应发生的时候的进攻方向、位点,使用DFT进行势能面扫描,得到一系列的结构和能量;
  2. 使用脚本从t21文件中抽取信息自动生成geo、trainset.in文件;
  3. 准备ffield文件:该文件是力场的初始猜测(如果是要创建新力场可以找到相似力场,直接修改元素符号得到),如果是优化现有的力场(例如CHO.ff),可以直接拷贝过来,改名为ffield即可,参考:力场文件在哪里?
  4. 使用脚本自动生成ffield_bool文件,并可以进行修改,这个文件是定义哪些参数需要优化,其中为0的位置,表示ffield这个位置的参数不需要优化,里面的值只有0和1两种,1表示需要优化。
  5. 设定力场文件里面,需要优化的参数的数值的区间:ffield_max、ffield_min这两个文件与ffield格式一致,只是分别给出的是优化力场的时候,ffield中对应的参数的可能的上限和下限。优化过程中,程序会不断调整力场里面需要优化的参数的数值,但这些参数的数值都将保持在这个上下限区间内。区间需要设置的尽量合理一些,可以提供成功率,提高力场的质量;
  6. mcff.run文件可以直接拷贝过去使用,但需要注意修改几个参数:
    • mcbeta=1/KbT。注意该温度和实际ReaxFF模拟时使用的温度没有关系,只是参数空间的“温度”;
    • mcdbet是蒙特卡洛逐渐降温的速率(每步mcbeta增大多少);
    • mcffit是进行多少步蒙特卡洛拟合;
    • mcmxst是允许运行的最大步数,这个参数需要改大,否则默认值为0,只运行一步。

本文以<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,并且该文件夹的完整路径中不包含中文字符、空格等。

1. 一系列结构的DFT计算(可以通过势能面扫描,也即Linear Transit得到)

为了方便起见,我们可以使用ADF模块,进行一个线性过渡(Linear Transit)计算,对结构变化过程进行势能面扫描。参数设置:

注意上面Relativity选项实际上应该选择Scalar,因为Br已经属于重元素了,使用相对论方法,能够更好地计算体系的能量,但这里为了节省计算量,因此没有使用相对论。

设置用户关心的键长变化范围(选中两个原子之后,右边窗口点击后面括号里面有distance的那个➕,即可设置键长的变化范围):

更详细的势能面扫描教程,参考:如何进行势能面扫描

2. 从*.t21抽取geo、trainset.in文件

下面的命令行操作,要求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中的运行方法:

  • 双击运行adf201*.*/adf_command_line.bat打开命令行
  • 输入sh或bash回车,之后就可以像Linux一样使用脚本了
  • 输入:
$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

3. 准备ffield文件

相似的力场本例中用了CHOSFClN.ff,直接将其拷贝到当前目录(和前面生成的geo、trainset.in文件在同一个目录中),并修改名字为ffield。将Cl元素修改为Br元素。并修改一些其他的参数,比如原子价、有效质量、范德华半径、价电子个数等(具体参数的含义可以参考手册)。具体如下(彩色的项目可能需要被改动):

4. 生成ffield_min、ffield_max、ffield_bool

在工作目录中,命令行执行如下命令:

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)

5. mcff.run文件

注意根据实际需求,灵活修改(参数的含义在本文前面已经进行了说明):

  • mcbeta可以用默认值;
  • mcdbet设置的越小越好,降温越慢,蒙特卡洛模拟效果越好,但所需的步数就越多,默认值实际上已经比较小了;
  • mcffit原则上,步数越大越好;
  • mcmxst可以改到比较大,配合mcffit。

到这里为止,所有文件都齐全了,都放在当前目录里面。

6. 优化力场

在命令行运行:

chmod 700 mcff.run
./mcff.run

生成的summery.txt列出了蒙特卡洛的过程,比较重要的数据是能量误差(Current error这一列数据),当然误差越小越好。生成的ffield_best是优化得到的力场,修改成自己希望的名字,例如CHOSFBrN.ff即可。同时也给出了最后一个被“接受(蒙特卡洛认为较优的力场)”蒙特卡洛生成的力场,名为ffield_last_accepted.1,供参考。

adf/optimizeff.txt · 最后更改: 2022/09/14 11:14 由 liu.jun

© 2014-2022 费米科技(京ICP备14023855号