[CP2K-user] A question about a formula in CP2K source code

Junting yjthya8... at gmail.com
Mon Sep 14 03:13:01 UTC 2020


Dear CP2K users and developers,

I am reading the source code of CP2K, and I have got lots of insights about 
formulas and algorithms from it. However, I have encountered a question 
when reading the aobasis/ai_verfc.F file in src directory.

The ai_verfc module is used for calculating the matrix <a|erfc(r)/r|b> in 
all-electron calculation. This term is divided into a nuclear term 
<a|1/r|b> and an error function term <a|erf(r)/r|b>. In the code prefactors 
corresponding these two terms are calculated by 

fnuc = 2.0_dp*pi*zetp*f0
ferf = 2.0_dp*SQRT(pi**5*zetw)*zetp*zetq*f0

and the basic s-orbital integrals are calculated by prefactors and 
incomplete gamma function

t = rcp2/zetp
CALL fgamma(nmax-1, t, f)
vnuc(1, 1, n) = fnuc*f(n-1)

t = -f4*rcp2/zetp
CALL fgamma(nmax-1, t, f)
verf(1, 1, n) = ferf*f(n-1)

Then the integrals over p or higher orbitals are calculated by a recursion 
procedure as is discussed in the literature: S. Obara and A. Saika, J. 
Chem. Phys. 84, 3963 (1986).

My question is that according to my derivations, my result for fnuc is 
consistent with the code, but my ferf is 
ferf = 2.0_dp*pi*zetp*f0*(-f4)**(n-0.5)
which is not consistent with the code, and is dependent on the parameter n 
in the incomplete gamma function f(n).

And it is reasonable that on the limit of zetc going to infinity, the error 
function term <a|erf(r)/r|b> should be the same as the nuclear term 
<a|1/r|b>. But according to source code, it seems not to be the case.

Therefore I want to ask, is this a potential mistake in the source code, or 
did I miss anything else in the derivations? I really appreciate it if 
someone could help me solve this question.

Best wishes,
Junting
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cp2k.org/archives/cp2k-user/attachments/20200913/7683bbde/attachment.htm>


More information about the CP2K-user mailing list