在自己写量化程序或者验证量化方法的时候,需要使用到各种类型的电子积分。电子积分计算比较复杂,程序编写的门槛很高。而调用其他的程序(如PySCF)的时候也需要读懂程序的接口,这种方式也不是很方便,门槛也高。本文将介绍使用Amesp很方便地计算并提取多种类型的电子积分,帮助读者验证自己的方法以及对标自己程序的结果。
Amesp支持多种类型、不同中心的单、双电子积分。按照有几个中心分类,包括双中心的:重叠积分,动能积分,核吸引能积分,偶极矩积分,赝势积分,单电子SOC积分,双中心双电子电子排斥积分,双中心双电子反库伦积分(-(μ|r12|ν))。以及三、四中心的:四中心电子排斥积分,三中心电子排斥积分,三中心重叠积分,三中心反库伦积分(-(μν|r12|λ))等。想要输出其中的双中心积分,只需要在>ope模块中写out 3即可:
代码语言:javascript复制% npara 4
! hf sto-3g
>ope
out 3
end
>xyz 0 1
O 2.94823228 -0.42925614 -0.00561927
H 3.90823228 -0.42925614 -0.00561927
H 2.62777770 0.47567970 -0.00561927
end
输出文件中的与双中心电子积分相关的部分为:
储存上述矩阵的时候根据对称性只储存了一半,读取的时候根据对称性把另外一半补全即可。重叠积分、动能积分、偶极矩积分、核哈密顿积分等在HF/DFT级别下会默认输出,核哈密顿积分在非相对论情况下是动能积分和核吸引能积分的和,而在X2C下则是X2C的单电子哈密顿。赝势积分需要在使用赝势的时候输出,单电子SOC积分需要在使用SOC的时候输出。双中心双电子电子排斥积分需要在使用RICOSX时才能输出,双中心双电子反库伦积分则是使用dffile(用于产生aesp的输入文件,用来计算大体系的静电势)的时候才能输出。输出积分时Amesp也会附加输出波函数的信息,如下所示:
这部分包含了每一个序号对应的基函数信息,如所处的中心原子以及角动量,它可以用于对应电子积分。
三中心和四中心的积分需要在>ope模块中写out 4,此时上述的双中心积分也会同时输出,其中四中心电子排斥积分的输出例子为:
默认输出绝对值大于10^(-10)的电子积分,改变阈值可以使用>scf模块中的accint关键词。输出的时候利用了双电子积分的1/8对称性,即i>=j,k>=l,i(i-1) 2j >= k(k-1) 2l。在使用范围分离泛函(如CAM-B3LYP)的时候,除了输出1/r12的部分,还会输出erf(w*r12)/r12的部分:
四中心电子排斥积分默认输出的基函数数目不超过160个,想要输出更多则需要增大内存,但是这会导致输出文件巨大。在使用posthf(如MP2、CCSD)的时候,也会输出相应的MO下的四中心电子排斥积分,默认是冻芯的,可以使用>posthf中的fc off关键词关闭冻芯。三中心双电子电子排斥积分需要在使用RICOSX时才能输出,也是默认输出绝对值大于10^(-10)的电子积分,并且利用了三中心积分的1/2对称性,即i>=j。
除了上述的电子积分,Amesp还支持输出DFT数值积分的格点和权重,关键词为:
代码语言:javascript复制% npara 4
! b3lyp sto-3g
>ope
gridfile on
end
>xyz 0 1
O 2.94823228 -0.42925614 -0.00561927
H 3.90823228 -0.42925614 -0.00561927
H 2.62777770 0.47567970 -0.00561927
end
格点和权重会输出到.grd的文件中,可以读取这个文件来进行相关数值积分(如计算Hirshfeld电荷):