|
本帖最后由 hebrewsnabla 于 2022-4-26 23:00 编辑
写了一个自动生成某斯(非内置)双杂化泛函iop的小程序(原理见 http://sobereva.com/344 )。并且,鉴于某斯不能对双杂化泛函的SCF部分做stable=opt(内置的也不行),此脚本还支持只生成SCF部分的iop。
程序地址
https://github.com/hebrewsnabla/dh_helper 或 https://git.nju.edu.cn/wsr/dh_helper
用法
执行以下命令可以看到help信息
- > python3 dhhelper -h
- usage: dhhelper [-h] -t type -f functional [--version]
- Generate Gaussian iops for doubly hybrid functionals
- optional arguments:
- -h, --help show this help message and exit
- -t type, --type type scf: for SCF only (useful for stable=opt)
- dh: for full functional (include SCF and PT2)
- -f functional, --fun functional
- supported: B2PLYP MPW2PLYP PBE0DH PBEQIDH
- PBE02 B2GPPLYP LS1DHPBE DSDPBEP86
- DSDPBEP86D3 revDSDPBEP86D3 DSDPBEPBED3
- DSDBLYPD3 DSDPBEB95D3 B2PLYPD3
- Attention: No hyphens in functional name
- --version show program's version number and exit
复制代码
注意泛函名称均不含'-',大小写不敏感。
例如,想要获得revDSDPBEP86-D3的SCF部分,可以这样操作
- > python3 dhhelper -t scf -f revDSDPBEP86D3
- #p PBEP86
- # iop(3/76=1000006900, 3/77=0310003100, 3/78=0429604296)
- # em=gd3bj iop(3/174=0437700,3/175=-1,3/176=0,3/177=-1,3/178=5500000)
复制代码 加上基组和stable=opt就可以获得稳定波函数了。
未尽之处
- range separate 双杂化泛函?
据笔者所知,wB97X-2在高斯中使用是没戏的,wB2GP-PLYP倒是可以,参考 http://sobereva.com/550 可以知道iop如下
- #p B2PLYP IOp(3/76=1000010000,3/77=1000010000,3/78=0640006400) IOp(3/107=0270000000,3/108=0270000000) IOp(3/119=0350000000,3/120=0350000000) IOp(3/130=06500,3/131=06500) IOp(3/125=0360003600)
复制代码
但是此类泛函不是很多,暂时还没有在脚本里支持。 - XYG3型泛函?
不必使用这个脚本,有更方便的 xDH4Gau和 ORCA脚本 可以使用。使用 PySCF扩展的话支持的功能就更多了。
wB97M(2)也是XYG3型泛函,但是和wB97X-2一样,没戏。 - 对ORCA的支持?
ORCA的双杂化泛函远比某斯多,而且其中的大部分可以直接检测稳定性。确实有一部分不支持,但是在不支持的这一部分中,PWPB95是没法用自定义的方式来做stable的,其他的泛函可能不是很重要,或者很快就会被官方支持stable。所以此脚本暂时没写ORCA自定义的功能。 - 若有其他泛函需要支持,可以在此处或github留言。也欢迎指出bug。
Note
撰写此脚本的目的主要是方便结合stable=opt来获取双杂化泛函的稳定波函数,并不提倡用某斯做完整的双杂化计算——使用不能开RI-MP2的程序算双杂化都是浪费机时。
感谢@冰释之川 的建议和帮助。
|
评分 Rate
-
查看全部评分 View all ratings
|