优化长程校正泛函w参数的简便工具optdftw | 宜武汇-ag真人国际厅网站

优化长程校正泛函w参数的简便工具optdftw

文/sobereva @
first release: 2016-sep-20  last update: 2019-jul-12 

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。
用于gaussian09版的下载地址:
用于gaussian16版的下载地址:
其中.exe的是windows版可执行文件,没后缀的是linux版可执行文件。

这两个程序目前只支持gaussian程序。只支持中性体系的计算。windows下运行之前需要在系统中添加gauss_exedir环境变量使之指向g09.exe或g16.exe所在目录,并且在path环境变量里也添加这个目录,使得能通过命令行方式顺利调用gaussian。
 
 

2 optdftw程序

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

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

使用optdftw程序前首先要编辑一个gaussian的长程校正泛函的单点任务文件作为模板,存到当前目录下template.gjf中,比如

基组可以是混合基组,照常写即可。泛函可以是比如lc-wpbe、lc-blyp等标准长程校正泛函,wb97、wb97xd等近程hf成分不为0的泛函可能也能用但结果未必可靠(数据自行负责)。之后在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)了。

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附近。

原文链接:http://sobereva.com/346

网络摘文,本文作者:15h,如若转载,请注明出处:https://www.15cov.cn/2023/08/27/优化长程校正泛函w参数的简便工具optdftw/

发表评论

邮箱地址不会被公开。 必填项已用*标注

网站地图