请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 1944|回复: 8

[量化理论] 优化长程校正泛函w参数的简便工具optDFTw

[复制链接]

1万

帖子

25

威望

1万

eV
积分
32351

管理员

公社社长

发表于 2016-9-21 00:02:29 | 显示全部楼层 |阅读模式
优化长程校正泛函w参数的简便工具optDFTw

文/Sobereva @北京科音   2016-Sep-20

1 简介

这几年优化长程校正泛函的w参数(其实是ω,为打字方便就写成w)的做法很火,文章接连不断,有兴趣者可以看看钟成等人的综述《最优化“调控”区间分离密度泛函理论的研究进展》(DOI: 10.3866/PKU.WHXB201605301)。对w进行调节的一种较好方法是使当前w下计算的HOMO轨道能量尽可能接近电离能。这么做的物理思想是对于精确的交换相关泛函,HOMO能量精确等于电离能,即Koopmans定理完全满足。这么调节w之后,长程校正泛函可以很好地计算激发能、(超)极化率、fundamental gap、单-三重态激发态能量差等问题(但也并非万能,比如有大小一致性问题、JPCB,119,1202发现有的体系的超极化率即便w经过优化还是算不好)。w对体系依赖性大,针对一个体系优化的w,对于另一个体系就往往很不适合,所以对每个被计算的体系都需要优化w,导致比普通泛函计算要多花不少代价。

这里提供笔者写的极其简单易用的优化w参数的工具optDFTw,以及附带的对w做扫描的工具scanDFTw。下载地址:http://sobereva.com/soft/optDFTw_1.0.zip。其中.exe的是Windows版可执行文件,没后缀的是Linux版可执行文件,.f90是Fortran源程序。

如果要自行编译,可以用比如gfortran optDFTw.f90 -o optDFTw。编译前注意要改源文件里isys参数,让程序知道用的是哪种操作系统。

若文章使用这两个程序,请引用:Tian Lu, optDFTw program v1.0, webpage: http://sobereva.com/346

这两个程序目前只支持Gaussian09程序。只支持中性体系的计算。Windows下运行之前需要在系统中添加GAUSS_EXEDIR环境变量指向g09.exe所在目录,使得能通过命令行方式顺利调用Gaussian。


2 optDFTw程序

此程序涉及两个量,J和J^2,都是衡量N电子态以及N+1电子态时HOMO能量与电离能的偏差之和。注意J^2不是J直接取平方


1.png

2.png

令J或J^2函数最小化就找到了最优的w。由于J^2对w更敏感,所以optDFTw优化的是J^2。这个程序是基于Brent算法来最小化J^2的。优化过程是迭代过程,令w收敛到0.0001就已经足够精确了,这一般只需要十来圈,如果收敛到0.001一般也就<=十圈。

使用optDFTw程序前首先要编辑一个Gaussian的长程校正泛函的单点任务文件作为模板,存到当前目录下template.gjf中,比如
%mem=60GB
%nproc=16
# LC-wPBE/6-311+G**

test

0 1
C                  0.00000000    0.00000000   -0.52710800
H                  0.00000000    0.93885600   -1.11413900
H                  0.00000000   -0.93885600   -1.11413900
O                  0.00000000    0.00000000    0.67386600

基组可以是混合基组,照常写即可。泛函可以是任意的长程校正泛函,比如LC-wPBE、LC-BLYP等,wB97、wB97XD等也支持。之后在optDFTw运行过程中,就会基于这个文件产生对应不同电子数的N.gjf、N-1.gjf、N+1.gjf,并调用Gaussian进行运算,然后从输出文件中读取计算J^2所需的HOMO轨道能量和体系总能量。在Gaussian中用长程校正泛函计算时,将IOp 3/107和3/108都设为MMMMM00000就相当于用了w参数为MMMMM/10000的范围分离泛函,所以每一步optDFTw都是靠这俩IOp来实现不同w下计算的。

在template.gjf准备好后直接启动optDFTw就可以进行对w的优化。Brent优化算法需要给定初始的w范围以及初猜,给得越合适越可能用较少步数收敛,范围一定要能够把实际的w值囊括在此范围中。默认的w下限是0.05(不能写0,否则Gaussian没法运行),默认上限是0.6(一般足够大了),默认的w收敛限是0.0001,默认的初猜值是上下限的中间值。如果要自己设这些参数,需要以命令行方式运行,即:
optDFTw [下限] [上限] [初猜] [收敛限]

没设的参数会自动用默认值。迭代次数上限是100,如果要改的话需要改源代码里的maxit参数。

下面是实际运行的输出例子(随便选的分子,和上面的示例输入文件不对应),可见每一轮对N、N+1、N-1体系分别算一次单点。经过14轮,最终优化的w是0.373547 Bohr^-1,之后在Gaussian中使用此范围分离泛函时就应当写IOp(3/107=0373500000,3/108=0373500000)了。

Lower limit: 0.050  Upper limit: 0.600  Init w: 0.325  Tol: 0.00010

The initial point:
Running: g09 N.gjf N.out
Running: g09 N-1.gjf N-1.out
Running: g09 N+1.gjf N+1.out
w:    0.325000   J:        0.0158995406   J^2:        0.0001837031

Iteration:     1
Running: g09 N.gjf N.out
Running: g09 N-1.gjf N-1.out
Running: g09 N+1.gjf N+1.out
w:    0.430041   J:        0.0179941437   J^2:        0.0001839521

Iteration:     2
Running: g09 N.gjf N.out
Running: g09 N-1.gjf N-1.out
Running: g09 N+1.gjf N+1.out
w:    0.219959   J:        0.0661930709   J^2:        0.0026101120

...略

Iteration:    13
Running: g09 N.gjf N.out
Running: g09 N-1.gjf N-1.out
Running: g09 N+1.gjf N+1.out
w:    0.373584   J:        0.0024404394   J^2:        0.0000039539

Iteration:    14
Converged!

The final w:    0.373547 Bohr^-1    J^2:        0.0000039466


3 scanDFTw程序

scanDFTw程序是在指定范围内按照指定步长对w进行扫描,对每个w会输出J和J^2值。运行前需要以和optDFTw同样的方式编写template.gjf放到当前目录下。默认从0.05扫到1.0,步长是0.05。如果自行调节设定,用命令行方式运行:
scanDFTw [下限] [上限] [步长] [iverb]

iverb默认为0,如果想同时输出每个w值的HOMO轨道能量和体系总能量则设为1。比如scanDFTw 0.3 0.5 0.02 1。下面是输出例子,可见最优的w在w=0.35附近。

w:    0.050000   J:      0.20647538   J^2:      0.02246148
w:    0.100000   J:      0.15601700   J^2:      0.01319407
w:    0.150000   J:      0.11338736   J^2:      0.00721878
w:    0.200000   J:      0.07836289   J^2:      0.00359102
w:    0.250000   J:      0.04967293   J^2:      0.00151705
w:    0.300000   J:      0.02609101   J^2:      0.00045375
w:    0.350000   J:      0.00661196   J^2:      0.00004245
w:    0.400000   J:      0.00958336   J^2:      0.00004770
w:    0.450000   J:      0.02312111   J^2:      0.00031436
w:    0.500000   J:      0.03450162   J^2:      0.00073904
w:    0.550000   J:      0.04413207   J^2:      0.00125304
w:    0.600000   J:      0.05233264   J^2:      0.00181038
w:    0.650000   J:      0.05936051   J^2:      0.00238061
w:    0.700000   J:      0.06541519   J^2:      0.00294496
w:    0.750000   J:      0.07066110   J^2:      0.00349063
w:    0.800000   J:      0.07522949   J^2:      0.00400930
w:    0.850000   J:      0.07921135   J^2:      0.00449682
w:    0.900000   J:      0.08271471   J^2:      0.00495013
w:    0.950000   J:      0.08577732   J^2:      0.00536856

评分

参与人数 4eV +18 收起 理由
cgchen + 3 谢谢
小范范1989 + 5 看过很多这样的文章,确实很方便,谢谢老师
zsu007 + 5 GJ!
kulaomega + 5 谢谢

查看全部评分

北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

2309

帖子

9

威望

3698

eV
积分
6187

Level 6 (一方通行)

首席卖萌官

发表于 2016-9-21 08:29:50 | 显示全部楼层
抢沙发,估计日后能用得上
为雪国耻身先去,重整河山待后生。

38

帖子

0

威望

393

eV
积分
431

Level 3 能力者

发表于 2016-9-21 08:41:43 | 显示全部楼层
嗯 好物 收藏

612

帖子

2

威望

2269

eV
积分
2921

Level 5 (御坂)

发表于 2016-9-21 09:37:28 | 显示全部楼层
终于可以抛弃自己祖传的定间隔扫描w来确定最佳值了。。。能有optDFTw  确实方便很多,不然 定间距扫描w很耗时……
Stand on the shoulders of giants

29

帖子

0

威望

425

eV
积分
454

Level 3 能力者

发表于 2017-5-30 09:10:21 | 显示全部楼层
老师  我想问一下 我调参对两个不同的 但类似的体系  得到了相同的参数 精度是0.01 是巧合 还是 有什么物理背景么   我该如何解释一下 谢谢老师

29

帖子

0

威望

425

eV
积分
454

Level 3 能力者

发表于 2017-5-30 09:18:32 | 显示全部楼层
TTF-TCNQ   Benzene-TCNE 分子间距离都是3.5A
图片2.gif
图片1.gif

1万

帖子

25

威望

1万

eV
积分
32351

管理员

公社社长

 楼主| 发表于 2017-5-30 10:25:59 | 显示全部楼层
LL5312 发表于 2017-5-30 09:10
老师  我想问一下 我调参对两个不同的 但类似的体系  得到了相同的参数 精度是0.01 是巧合 还是 有什么物理 ...

巧合。
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

29

帖子

0

威望

425

eV
积分
454

Level 3 能力者

发表于 2017-5-30 10:30:11 | 显示全部楼层

哦 好的  谢谢

80

帖子

0

威望

491

eV
积分
571

Level 4 (黑子)

发表于 2018-6-22 18:36:17 | 显示全部楼层
本帖最后由 guoy14iccas 于 2018-6-22 19:17 编辑

有经验师弟给出解决方案是:在PCM下优化w会出现这种情况。改写程序中的优化区间,可以得到解决。
删除不了回复,所以贴出一种解决方案。

捕获.JPG
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2018-7-19 17:51 , Processed in 0.206716 second(s), 27 queries .

快速回复 返回顶部 返回列表