Page 1 of 1

Divid by zero in matrix inverse

Posted: Tue Jan 19, 2016 1:05 pm
by L. Matthes
Dear developers,

recently I used your new Beta version 0.95, basically to check out your new weight method with VASP.
However, already before I could try I encountered a strange new error, which did not occur in version 0.28.
The error message is:
Divid by zero in matrix inverse

Some details about my system:
HBC (isolated) molecule (large vacuum), kind of a snowflake molecule
Reading in the charge densities is no problem
I have no clue what part of the program causes this issue

Best regards
Lars

Re: Divid by zero in matrix inverse

Posted: Tue Jan 19, 2016 2:12 pm
by graeme
Ah, thanks for the note. If you can post or send me the charge density file, I'll see if I can fix this asap. There is some matrix math related to calculating the cross-sectional area between Voronoi cells. I suspect either (i) a bug or (ii) a special case that needs to be specifically considered.

The weight method was developed some time ago by Yu and Trinkle [J. Chem. Phys. 134, 064111 (2011)]. It just took us a while to implement it.

Re: Divid by zero in matrix inverse

Posted: Tue Jan 19, 2016 5:02 pm
by L. Matthes
Thank you for your reply. The files are comparable large. I'll send the files asap.

Best regards
Lars

Re: Divid by zero in matrix inverse

Posted: Wed Jan 20, 2016 2:38 pm
by L. Matthes
Here are the files. I usually use my own program to sum the charge densities AECCAR0 and AECCAR2. My program also led to another minor "bug" in v0.28 which occurred due to the usage of atomic coordinates in double precision, which could not be read correctly by your Bader analysis tool.

https://upload.uni-jena.de/data/569f7cf ... AR0.tar.gz
https://upload.uni-jena.de/data/569f7d1 ... AR2.tar.gz
https://upload.uni-jena.de/data/569f7d2 ... CAR.tar.gz
https://upload.uni-jena.de/data/569f7d2 ... sum.tar.gz

Best regards
Lars

Re: Divid by zero in matrix inverse

Posted: Thu Jan 21, 2016 1:23 am
by graeme
Looking at your files I can tell that the immediate problem is the formatting of the lattice vectors in your CHGCAR_sum file. Both VASP and our bader code use the same fortran fixed-format interpretation of those values. Specifically, the expected format for the lattice vectors in a CHGCAR are given by:

READ(100,'(3F13.6)') (ions%lattice(i,1:3) , i=1,3)

When I read a CHGCAR_sum generated by our script (chgsumf.pl) into the bader analysis program I see a correct set of lattice vectors:

21.650625000000002 21.650625000000002 0.0000000000000000
-12.500000000000000 12.500000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 15.000000000000000

When I read the lattice vectors from your file I get:

21.650500000000001 21.650500000000001 0.0000000000000000
125000.00000000000 125000.00000000000 0.0000000000000000
-12.500000000000000 12.500000000000000 0.0000000000000000

Before we try to sort out any problems regarding the weight method, I think we need to have lattice vectors written the format the vasp writes them. You can use our chgsum.pl, or for a more accurate fortran formatting, our chgsumf.pl script to generate the CHGCAR_sum file.

Re: Divid by zero in matrix inverse

Posted: Fri Jan 22, 2016 8:40 am
by L. Matthes
Well, I guess you are right. Using the script chgcarsum.pl seems to work and I get the charges with the old and new method.
Thank you for your efforts and hopefully the weight method overcomes the slow convergence with repsect to the number of grid points, which is quite painful for isolated molecules.

Best regards
Lars