这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
adf:optimizeff_crystal [2017/12/04 13:40] – liu.jun | adf:optimizeff_crystal [2024/06/04 11:01] (当前版本) – [使用块体材料DFT计算数据优化ReaxFF力场] liu.jun | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ======使用块体材料数据优化ReaxFF力场====== | + | ======使用块体材料DFT计算数据优化ReaxFF力场====== |
**提示:下面的操作,除了DFT计算之外,其他只在Linux、Mac系统测试过。** | **提示:下面的操作,除了DFT计算之外,其他只在Linux、Mac系统测试过。** | ||
+ | |||
+ | **请注意:本教程仅适用于AMS2019.1及其以下版本。新版软件请你不要看这个教程!!**当前最新版相关教程:https:// | ||
ADF软件集成了使用蒙特卡洛方法优化力场参数的脚本。目前已经可以较为方便的使用,脚本经过测试,可以正常工作,但大都是在命令行下工作。用“优化”的方式,也可以创建一些新的力场:一般在相似力场的基础上,对力场中的元素进行修改,使用DFT计算这些新元素体系的一些结构的能量,然后使用MCFF对力场参数进行优化。 | ADF软件集成了使用蒙特卡洛方法优化力场参数的脚本。目前已经可以较为方便的使用,脚本经过测试,可以正常工作,但大都是在命令行下工作。用“优化”的方式,也可以创建一些新的力场:一般在相似力场的基础上,对力场中的元素进行修改,使用DFT计算这些新元素体系的一些结构的能量,然后使用MCFF对力场参数进行优化。 | ||
行 16: | 行 18: | ||
* mcmxst是允许运行的最大步数,这个参数需要改大,否则默认值为0,只运行一步。 | * mcmxst是允许运行的最大步数,这个参数需要改大,否则默认值为0,只运行一步。 | ||
- | [[https:// | + | {{ :adf:mcff.pdf |详细英文教程下载(点击)}} |
本文以石墨烯片层为例,DFT计算得到的层间距为3.355埃(如下图中所示,单胞内的两层石墨烯): | 本文以石墨烯片层为例,DFT计算得到的层间距为3.355埃(如下图中所示,单胞内的两层石墨烯): | ||
行 22: | 行 24: | ||
{{ : | {{ : | ||
- | 而CHO.ff力场优化得到的间距是3.10埃([[https:// | + | 而CHO.ff力场优化得到的间距是3.10埃。 |
本文尝试通过优化CHO.ff的参数,使得新的CHO.ff力场也能优化出与DFT接近的间距。因此DFT计算主要围绕这一点,计算了平衡间距附近的一些结构的能量,用这些计算结果优化CHO.ff力场。如果用户关心其他方面,例如其他键长,也可以用DFT计算类似的计算。ReaxFF中有的晶体常数计算不准确,也可以通过调整不同的晶格常数来计算DFT能量,并以此优化对应的力场。 | 本文尝试通过优化CHO.ff的参数,使得新的CHO.ff力场也能优化出与DFT接近的间距。因此DFT计算主要围绕这一点,计算了平衡间距附近的一些结构的能量,用这些计算结果优化CHO.ff力场。如果用户关心其他方面,例如其他键长,也可以用DFT计算类似的计算。ReaxFF中有的晶体常数计算不准确,也可以通过调整不同的晶格常数来计算DFT能量,并以此优化对应的力场。 | ||
====注意==== | ====注意==== | ||
下文生成的geo、trainset.in、ffield、ffield_min、ffield_max、ffield_bool、ffield、mcff.run文件必须在同一个目录下,优化力场的过程也是通过命令行,在该文件夹进行。因此要确保在该文件夹下,可以直接运行*.run,并且该文件夹的完整路径中不包含中文字符、空格等。 | 下文生成的geo、trainset.in、ffield、ffield_min、ffield_max、ffield_bool、ffield、mcff.run文件必须在同一个目录下,优化力场的过程也是通过命令行,在该文件夹进行。因此要确保在该文件夹下,可以直接运行*.run,并且该文件夹的完整路径中不包含中文字符、空格等。 | ||
+ | |||
+ | <color grey> | ||
+ | * <color grey> | ||
+ | * <color grey> | ||
+ | * <color grey> | ||
+ | <code bash> | ||
+ | <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埃,计算了他们的能量。如下图所示: |
{{ : | {{ : | ||
行 81: | 行 90: | ||
- 参考上面所示的geo的格式,略作修改: | - 参考上面所示的geo的格式,略作修改: | ||
- 将所有DFT计算的结果,类似地添加到geo文件中。 | - 将所有DFT计算的结果,类似地添加到geo文件中。 | ||
- | |||
- | 本例中,生成的geo文件下载,[[https:// | ||
=====3. 生成trainset.in文件===== | =====3. 生成trainset.in文件===== | ||
这个文件并不是geo文件相同的作用,而是对力场优化的过程进行一些权重设置,也就是用户可能特别要求某些参数更重要,权重就可以设置的很高,这样在优化力场过程中,就会更大程度地满足该参数条件。 | 这个文件并不是geo文件相同的作用,而是对力场优化的过程进行一些权重设置,也就是用户可能特别要求某些参数更重要,权重就可以设置的很高,这样在优化力场过程中,就会更大程度地满足该参数条件。 | ||
行 168: | 行 175: | ||
第一个结构1_reax就是DFT优化的最优结构。可以设置这个权重非常大,例如是其他条件的权重的10倍(即1.0)。但本例中,实际上并没有这样做。使用了默认的trainset.in文件。 | 第一个结构1_reax就是DFT优化的最优结构。可以设置这个权重非常大,例如是其他条件的权重的10倍(即1.0)。但本例中,实际上并没有这样做。使用了默认的trainset.in文件。 | ||
+ | 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)。 |
我们这里可以只优化: | 我们这里可以只优化: | ||
行 203: | 行 211: | ||
因为只优化4个参数,所以只将ffield_bool文件中,四个参数对应位置的数字,从0改为1。 | 因为只优化4个参数,所以只将ffield_bool文件中,四个参数对应位置的数字,从0改为1。 | ||
- | [[https:// | ||
=====5. mcff.run文件===== | =====5. mcff.run文件===== | ||
- | [[https:// | + | 注意根据实际需求,灵活修改(参数的含义在本文前面已经进行了说明): |
* mcbeta可以用默认值; | * mcbeta可以用默认值; | ||
* mcdbet设置的越小越好,降温越慢,蒙特卡洛模拟效果越好,但所需的步数就越多,默认值实际上已经比较小了; | * mcdbet设置的越小越好,降温越慢,蒙特卡洛模拟效果越好,但所需的步数就越多,默认值实际上已经比较小了; | ||
行 223: | 行 230: | ||
生成的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埃: | ||
行 231: | 行 236: | ||
注意,这里我们没有优化二面角参数,也没有在trainset.in里面限定二面角,所以为了保证层间距,优化键能的同时,二面角的结果变差了,石墨烯变得不是平面的了。 | 注意,这里我们没有优化二面角参数,也没有在trainset.in里面限定二面角,所以为了保证层间距,优化键能的同时,二面角的结果变差了,石墨烯变得不是平面的了。 | ||
+ | |||
+ | {{ : |