Problem with the Vxc matrix


Clicked A Few Times
Hello,

I am trying to interface a Gaussian based GW+BSE code, named FIESTA, to NWCHEM.
To do so, I only need to the eigenvectors, eigenvalues and the <G_i|Vxc|G_j> matrix
evaluated between the gaussian basis functions. I have already a working interface to
format the eigenvectors and eigenvalues to the FIESTA convention. Unfortunately, I have
encountered problems with the Vxc matrix.

In file nwdft/xc/xc_getv.F, I added the print statements:
      call ga_print(g_truevxc(1)) 
if(ipol.eq.2)call ga_print(g_truevxc(2))
after :
      call grid_quadv0(rtdb, g_dens, g_truevxc,
& nexc,rho_n, Exc, dbl_mb(itmat))

at line 363 of that file. This prints out what I thought was the matrix I needed.
But it is strange because for some test systems, it does not seem to have the proper symmetries.
Here is an example for a small test system of 4 helium atoms with only 1 s orbital that are
really far from each other:

   he  -0.00000000    -0.00000000     4.33012702
he 5.77350269 5.77350269 -1.44337567
he 2.11324865 -7.88675135 -1.44337567
he -7.88675135 2.11324865 -1.44337567

The outputed matrix is:

  global array: g vxc 1[1:4,1:4],  handle: -968 

           1           2           3           4  
----------- ----------- ----------- -----------
1 -0.41806 0.00000 0.00000 0.00000
2 0.00000 0.00000 0.00000 0.00000
3 0.00000 0.00000 0.00000 0.00000
4 0.00000 0.00000 0.00000 -1.25417
Fock_xc Build Time: 0.0s

It would seem that most are added together in the last element (-1.25417 = 3 * -0.41806).
I don't understand why this is the case. It would seem that some processing is needed to
extract the proper matrix. Unfortunately, I can't seem to locate where this is done.
Do you have some suggestions as to where I should move my printing?

Forum Regular
Hi, Can you send me your input file so that I can provide some suggestions ?

Best,
-Niri

niri.govind@pnl.gov

Clicked A Few Times
You will find below the rather simple input file, I was using as fast test.

start he
print high
title "Helium cc-pvdz SCF"
geometry
he 0 0 0
he 10.0 0 0
he 0 10.0 0
he 0 0 10.0
end
basis spherical
he s
0.32 1.00
end
dft
XC slater vwn_5
end
task dft

Forum Regular
Hi, If I remember correctly I think xc_getv.F does two things. In addition to the xc it also calculates the coulomb bit. We need to isolate the Coulomb from this. If you use a charge density fitting basis, then the Coulomb part is calculated separately from the xc. Try this out. I will take a look at the code and let you know. Can you try the following input file ?

Best,
-Niri

niri.govind@pnl.gov

start he

print high

title "Helium cc-pvdz SCF"

geometry
 he 0 0 0
he 10.0 0 0
he 0 10.0 0
he 0 0 10.0
end

basis "cd basis"
he s
  0.32   1.00
end

basis spherical
he s
  0.32   1.00
end

dft
 XC slater vwn_5
end

task dft

Clicked A Few Times
Yes, you are right, xc_getv.F does those two things. That is why I have printed g_truevxc and not g_vxc.
The problem does not seem related to the addition of the Coulomb bit but rather a unitary transformation which I have not found yet. I tried with your suggestions, and things did not change (except for some convergence issues of the auxiliary basis).

Forum Vet
Try noautosym
You may want to try this with "geometry noautosym". Looks like the matrix is the raw matrix before it is symmetrized based on the point group of the system. Setting "noautosym" turns of symmetry and should get you the matrix you think you should get.

Bert

Clicked A Few Times
Thanks Bert, that works fine!


Forum >> NWChem's corner >> General Topics