这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
adf:optimizeff_crystal [2019/12/10 15:48] – [使用块体材料DFT计算数据优化ReaxFF力场] liu.jun | adf:optimizeff_crystal [2022/09/14 11:15] (当前版本) – liu.jun | ||
---|---|---|---|
行 1: | 行 1: | ||
======使用块体材料DFT计算数据优化ReaxFF力场====== | ======使用块体材料DFT计算数据优化ReaxFF力场====== | ||
- | **提示:下面的操作,除了DFT计算之外,其他只在Linux、Mac系统测试过。** | + | **提示:下面的操作,除了DFT计算之外,其他只在Linux、Mac系统测试过。**本教程仅适用于2019.1以下版本。 |
ADF软件集成了使用蒙特卡洛方法优化力场参数的脚本。目前已经可以较为方便的使用,脚本经过测试,可以正常工作,但大都是在命令行下工作。用“优化”的方式,也可以创建一些新的力场:一般在相似力场的基础上,对力场中的元素进行修改,使用DFT计算这些新元素体系的一些结构的能量,然后使用MCFF对力场参数进行优化。 | ADF软件集成了使用蒙特卡洛方法优化力场参数的脚本。目前已经可以较为方便的使用,脚本经过测试,可以正常工作,但大都是在命令行下工作。用“优化”的方式,也可以创建一些新的力场:一般在相似力场的基础上,对力场中的元素进行修改,使用DFT计算这些新元素体系的一些结构的能量,然后使用MCFF对力场参数进行优化。 | ||
行 16: | 行 16: | ||
* mcmxst是允许运行的最大步数,这个参数需要改大,否则默认值为0,只运行一步。 | * mcmxst是允许运行的最大步数,这个参数需要改大,否则默认值为0,只运行一步。 | ||
- | [[https:// | + | {{ :adf:mcff.pdf |详细英文教程下载(点击)}} |
本文以石墨烯片层为例,DFT计算得到的层间距为3.355埃(如下图中所示,单胞内的两层石墨烯): | 本文以石墨烯片层为例,DFT计算得到的层间距为3.355埃(如下图中所示,单胞内的两层石墨烯): | ||
行 33: | 行 33: | ||
* <color grey> | * <color grey> | ||
<code bash> | <code bash> | ||
- | <color grey> | + | <color grey> |
=====1. 一系列结构的DFT计算===== | =====1. 一系列结构的DFT计算===== | ||
- | 这里我们使用ADF软件中,用于计算周期性体系DFT计算的BAND模块进行计算。改变两层石墨烯之间的距离,分别为3.913、3.718、3.416、3.355、2.992、2.618、2.316埃,计算了他们的能量([[https:// | + | 这里我们使用ADF软件中,用于计算周期性体系DFT计算的BAND模块进行计算。改变两层石墨烯之间的距离,分别为3.913、3.718、3.416、3.355、2.992、2.618、2.316埃,计算了他们的能量。如下图所示: |
{{ : | {{ : | ||
行 88: | 行 88: | ||
- 参考上面所示的geo的格式,略作修改: | - 参考上面所示的geo的格式,略作修改: | ||
- 将所有DFT计算的结果,类似地添加到geo文件中。 | - 将所有DFT计算的结果,类似地添加到geo文件中。 | ||
- | |||
- | 本例中,生成的geo文件下载,[[https:// | ||
=====3. 生成trainset.in文件===== | =====3. 生成trainset.in文件===== | ||
这个文件并不是geo文件相同的作用,而是对力场优化的过程进行一些权重设置,也就是用户可能特别要求某些参数更重要,权重就可以设置的很高,这样在优化力场过程中,就会更大程度地满足该参数条件。 | 这个文件并不是geo文件相同的作用,而是对力场优化的过程进行一些权重设置,也就是用户可能特别要求某些参数更重要,权重就可以设置的很高,这样在优化力场过程中,就会更大程度地满足该参数条件。 | ||
行 175: | 行 173: | ||
第一个结构1_reax就是DFT优化的最优结构。可以设置这个权重非常大,例如是其他条件的权重的10倍(即1.0)。但本例中,实际上并没有这样做。使用了默认的trainset.in文件。 | 第一个结构1_reax就是DFT优化的最优结构。可以设置这个权重非常大,例如是其他条件的权重的10倍(即1.0)。但本例中,实际上并没有这样做。使用了默认的trainset.in文件。 | ||
- | Trainset.in文件格式,参考:https:// | + | Trainset.in文件格式,参考:https:// |
=====4. 准备ffield、ffield_min、ffield_max、ffield_bool文件===== | =====4. 准备ffield、ffield_min、ffield_max、ffield_bool文件===== | ||
====生成ffield==== | ====生成ffield==== | ||
本例中,我们可以直接在CHO.ff的基础上修改,所以直接将其拷贝过来,改名为ffield即可。 | 本例中,我们可以直接在CHO.ff的基础上修改,所以直接将其拷贝过来,改名为ffield即可。 | ||
====生成ffield_min、ffield_max==== | ====生成ffield_min、ffield_max==== | ||
- | ffield的格式、参数的具体含义,参考[[https:// | + | ffield的格式、参数的具体含义,参考{{ :adf:reaxff-users-manual-2002.pdf |英文手册}}(page 16)。 |
我们这里可以只优化: | 我们这里可以只优化: | ||
行 211: | 行 209: | ||
因为只优化4个参数,所以只将ffield_bool文件中,四个参数对应位置的数字,从0改为1。 | 因为只优化4个参数,所以只将ffield_bool文件中,四个参数对应位置的数字,从0改为1。 | ||
- | [[https:// | ||
=====5. mcff.run文件===== | =====5. mcff.run文件===== | ||
- | [[https:// | + | 注意根据实际需求,灵活修改(参数的含义在本文前面已经进行了说明): |
* mcbeta可以用默认值; | * mcbeta可以用默认值; | ||
* mcdbet设置的越小越好,降温越慢,蒙特卡洛模拟效果越好,但所需的步数就越多,默认值实际上已经比较小了; | * mcdbet设置的越小越好,降温越慢,蒙特卡洛模拟效果越好,但所需的步数就越多,默认值实际上已经比较小了; | ||
行 231: | 行 228: | ||
生成的summery.txt列出了蒙特卡洛的过程,比较重要的数据是能量误差(Current error这一列数据),当然误差越小越好。生成的ffield_best是优化得到的力场,修改成自己希望的名字,例如CHO_modified.ff即可。 | 生成的summery.txt列出了蒙特卡洛的过程,比较重要的数据是能量误差(Current error这一列数据),当然误差越小越好。生成的ffield_best是优化得到的力场,修改成自己希望的名字,例如CHO_modified.ff即可。 | ||
- | |||
- | [[https:// | ||
使用该力场,在ReaxFF中优化,我们得到的层间距3.41埃,很接近DFT的结果3.355埃: | 使用该力场,在ReaxFF中优化,我们得到的层间距3.41埃,很接近DFT的结果3.355埃: | ||
行 239: | 行 234: | ||
注意,这里我们没有优化二面角参数,也没有在trainset.in里面限定二面角,所以为了保证层间距,优化键能的同时,二面角的结果变差了,石墨烯变得不是平面的了。 | 注意,这里我们没有优化二面角参数,也没有在trainset.in里面限定二面角,所以为了保证层间距,优化键能的同时,二面角的结果变差了,石墨烯变得不是平面的了。 | ||
+ | |||
+ | {{ : |