计算化学公社

标题: Multiwfn的轨道定域化和双正交化功能已支持从ORCA输出文件中读取Fock矩阵 [打印本页]

作者
Author:
sobereva    时间: 2020-10-14 07:54
标题: Multiwfn的轨道定域化和双正交化功能已支持从ORCA输出文件中读取Fock矩阵
有很多Multiwfn用户做轨道定域化(http://sobereva.com/380)和双正交化(http://sobereva.com/448)分析的时候是基于ORCA产生的.molden格式的波函数文件来做的,但之前的Multiwfn没法直接从ORCA输出文件中读取Fock矩阵,导致没法算轨道能量。为了便民,从2020-Oct-14更新的版本开始,在Multiwfn的轨道定域化和双正交化功能中,在要求输入含有Fock矩阵的文件的那一步的时候用户可以直接写ORCA的输出文件路径,相应的ORCA输入文件里必须加上%output Print[P_Iter_F] 1 end关键词来要求ORCA每轮SCF迭代都输出Fock矩阵,Multiwfn会读取最后一轮的。计算后就可以得到定域化轨道/双正交化轨道能量了。

PS:ORCA输出的Fock矩阵很特殊,P壳层的xyz顺序和一般习俗不同,而且由于用的归一化条件特殊,F、G、H壳层的一些矩阵元需要翻转符号。Multiwfn在读取的时候都已经考虑了,得到的定域化和双正交化轨道能量和用Gaussian的情况对比过,完全一致。

作者
Author:
ghifi37    时间: 2020-10-14 09:01
前两天才遇到这个问题,自己都没还来得及调整轨道,社长就把问题给解决了!没见过这么贴近用户的软件和开发者,大赞!
作者
Author:
wzkchem5    时间: 2020-10-14 12:38
实际上从molden也可以读出Fock矩阵,因为molden给了轨道系数和轨道能,用F=(C^(-1))^T*epsilon*C^(-1)就出来了,这样的有效数字位数应该比从orca输出文件读要多。
类似地,从molden也可以读出overlap矩阵,方法是利用C^T*S*C=I,推出S=(C*C^T)^(-1)。
此外还有很多trick,比如让orca做Hcore初猜,NoIter,然后读molden,用(C^(-1))^T*epsilon*C^(-1)可以得到Hcore矩阵,Fock矩阵跟Hcore矩阵一减可以得到F2e+Fxc
作者
Author:
sobereva    时间: 2020-10-15 05:38
wzkchem5 发表于 2020-10-14 12:38
实际上从molden也可以读出Fock矩阵,因为molden给了轨道系数和轨道能,用F=(C^(-1))^T*epsilon*C^(-1)就出 ...

牵扯到线性依赖基函数的时候会出现乱七八糟麻烦,所以我不考虑从轨道能量和组合系数反变换成Fock矩阵的做法。

重叠矩阵Multiwfn自身直接就会计算出来。

作者
Author:
wzkchem5    时间: 2020-10-15 10:03
sobereva 发表于 2020-10-15 05:38
牵扯到线性依赖基函数的时候会出现乱七八糟麻烦,所以我不考虑从轨道能量和组合系数反变换成Fock矩阵的做 ...

有道理,线性相关的情况下一部分MO会输出成0




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3