Page 1 of 1

9.2.1 scf error: Attempting to invert real(8) 3x3 array

Posted: Sat Oct 10, 2020 9:57 am
by Gang Tang
Hi Abinit users,
I try to perform a scf (ionmov=2;optcell=2;ntime=1) using abinit 9.2.1 but it crashes when it try to invert the array. The following message is given:

--------------------------
--- !BUG
src_file: m_symtk.F90
src_line: 233
mpi_rank: 0
message: |
Attempting to invert real(8) 3x3 array
0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00
==> determinant= 0.00000000E+00 is zero.
...
--------------------------

The corrreponding run.abi input file is

Code: Select all

#---------------- cell and system ----------------
natom         40

ntypat        3

# Species     
#             Sr  Ti  O   
znucl         
              38  22  8   

typat         
              1   2   3   3   3   1   2   3   3   3   
              1   2   3   3   3   1   2   3   3   3   
              1   2   3   3   3   1   2   3   3   3   
              1   2   3   3   3   1   2   3   3   3   

acell         1.00000000000000e+00   1.00000000000000e+00   1.00000000000000e+00

rprim         
              1.46862679921000e+01   0.00000000000000e+00   3.45014581000000e-02
              3.45900653000000e-02   1.46861780640000e+01  -3.45030548000000e-02
              0.00000000000000e+00   0.00000000000000e+00   1.46863111825000e+01


xred          
             -0.00000000000000e+00   0.00000000000000e+00   0.00000000000000e+00
              2.50000000000000e-01   2.50000000000000e-01   2.50000000000000e-01
              2.63361000000000e-01   0.00000000000000e+00   2.63364000000000e-01
              2.36646000000000e-01   2.36635000000000e-01   0.00000000000000e+00
              0.00000000000000e+00   2.36638000000000e-01   2.63354000000000e-01
              0.00000000000000e+00   0.00000000000000e+00   5.00000000000000e-01
              2.50000000000000e-01   2.50000000000000e-01   7.50000000000000e-01
              2.36639000000000e-01   0.00000000000000e+00   7.36636000000000e-01
              2.63354000000000e-01   2.63365000000000e-01   5.00000000000000e-01
             -0.00000000000000e+00   2.63362000000000e-01   7.36646000000000e-01
              0.00000000000000e+00   5.00000000000000e-01  -0.00000000000000e+00
              2.50000000000000e-01   7.50000000000000e-01   2.50000000000000e-01
              2.36639000000000e-01   5.00000000000000e-01   2.36636000000000e-01
              2.63354000000000e-01   7.63365000000000e-01   0.00000000000000e+00
             -0.00000000000000e+00   7.63362000000000e-01   2.36646000000000e-01
             -0.00000000000000e+00   5.00000000000000e-01   5.00000000000000e-01
              2.50000000000000e-01   7.50000000000000e-01   7.50000000000000e-01
              2.63361000000000e-01   5.00000000000000e-01   7.63364000000000e-01
              2.36646000000000e-01   7.36635000000000e-01   5.00000000000000e-01
              0.00000000000000e+00   7.36638000000000e-01   7.63354000000000e-01
              5.00000000000000e-01   0.00000000000000e+00  -0.00000000000000e+00
              7.50000000000000e-01   2.50000000000000e-01   2.50000000000000e-01
              7.36639000000000e-01   0.00000000000000e+00   2.36636000000000e-01
              7.63354000000000e-01   2.63365000000000e-01   0.00000000000000e+00
              5.00000000000000e-01   2.63362000000000e-01   2.36646000000000e-01
              5.00000000000000e-01   0.00000000000000e+00   5.00000000000000e-01
              7.50000000000000e-01   2.50000000000000e-01   7.50000000000000e-01
              7.63361000000000e-01   0.00000000000000e+00   7.63364000000000e-01
              7.36646000000000e-01   2.36635000000000e-01   5.00000000000000e-01
              5.00000000000000e-01   2.36638000000000e-01   7.63354000000000e-01
              5.00000000000000e-01   5.00000000000000e-01   0.00000000000000e+00
              7.50000000000000e-01   7.50000000000000e-01   2.50000000000000e-01
              7.63361000000000e-01   5.00000000000000e-01   2.63364000000000e-01
              7.36646000000000e-01   7.36635000000000e-01   0.00000000000000e+00
              5.00000000000000e-01   7.36638000000000e-01   2.63354000000000e-01
              5.00000000000000e-01   5.00000000000000e-01   5.00000000000000e-01
              7.50000000000000e-01   7.50000000000000e-01   7.50000000000000e-01
              7.36639000000000e-01   5.00000000000000e-01   7.36636000000000e-01
              7.63354000000000e-01   7.63365000000000e-01   5.00000000000000e-01
              5.00000000000000e-01   7.63362000000000e-01   7.36646000000000e-01

#------------ electronic ground state ------------
kptopt 1
ngkpt 4 4 4
nshiftk 1
shiftk 0.0 0.0 0.0
ecut 30.0
#pawecutdg 30.0
nstep 50
tolrff 0.01
#toldfe 1.0d-7
chkprim 0.0
#occopt 3  tsmear 0.0001
nband 165
diemac 12.0
#nsppol 2
#spinat
#0 0 1
#0 0 1

### XC 
#ixc 11

#------------ structural optimization ------------
optcell 2
ionmov 2
tolmxf 1.0d-06
ntime 1

ecutsm 0.5
dilatmx 1.1

#-------------- pseudopotentials --------------
pp_dirpath "/home/ulg/phythema/gtang/workdir/abinit/pseudo"
pseudos "Sr.psp8, Ti.psp8, O.psp8"

#-------------- parallelization ---------------
#autoparal 1
#max_ncpus 24
paral_kgb 1
#npband 1
#bandpp 1
npfft 4
npkpt 12

#------------ options for printing ------------
prtden 0 #otherwise _DEN file printed at each Broyden step
prteig 0
prtwf 0
Could someone help me indicating some way to proceed?
Best wishes!

Re: 9.2.1 scf error: Attempting to invert real(8) 3x3 array

Posted: Tue Oct 13, 2020 3:59 pm
by ebousquet
Dear Gang,
Strange indeed, could it be because you put "chkprim 0.0" instead of "chkprim 0"?
Best wishes,
Eric

Re: 9.2.1 scf error: Attempting to invert real(8) 3x3 array

Posted: Tue Oct 13, 2020 9:48 pm
by Gang Tang
Thank you for your reply.

I have tried to change "chkprim 0.0" to "chkprim 0" but it still fails. So I guess this error is related to the atomic position (xred) or lattice constant (rprim) in the input file. Because I have prepared a lot of structures (the only difference is the xred and rprim keywords in the input file), some structures can run successfully, but some have the above errors.

Re: 9.2.1 scf error: Attempting to invert real(8) 3x3 array

Posted: Wed Oct 14, 2020 2:44 pm
by ebousquet
Dear Gang,
I made a test on my local machine and it was strangely crashing when reading chkprim, but it is not the problem...

Now it sounds like the rprim you use is indeed the problem, how did you generate it?
It looks like that your rprim does not respect some symmetry of the system, if I invert the two first diagonal terms like that:
1.46861780640000e+01 0.00000000000000e+00 3.45014581000000e-02
3.45900653000000e-02 1.46862679921000e+01 -3.45030548000000e-02
0.00000000000000e+00 0.00000000000000e+00 1.46863111825000e+01
Then it goes through...

Best wishes,
Eric

Re: 9.2.1 scf error: Attempting to invert real(8) 3x3 array

Posted: Wed Oct 14, 2020 9:40 pm
by Gang Tang
I use qAgate https://github.com/piti-diablotin/qAgate software to generate these structures (trainingset used in Multibinit). If I switch the abinit 9.2.1 to 8.10, then the problem can be resolved. So I think this issue is only related to this latest version.

Re: 9.2.1 scf error: Attempting to invert real(8) 3x3 array

Posted: Fri Oct 16, 2020 7:03 pm
by gonze
Dear Gang Tang,
The problem was that the symmetrization of lattice, occuring when the symmetries are not respected
at the level of 10e-8, was not working with non-primitive unit cells (those for which chkprim 0 is required).
The fix was easy. The ABINIT run with your system is working with this fix.
This bug fix has been implemented in v9.2.2, that should be available at the end of this month.
By the way, it was working with v8.10 because in this older version, the default value for the recognition of symmetries was much more stringent (default tolsym was 1.0e-8), now it is tolsym 1.0e-5, so that more symmetries are recognized by v9.2.2, even if slightly inaccurate). It seems that qAgate does not generate very accurate lattice vectors - or perhaps qAgate generates slightly distorted geometry on purpose ? Then v9.2 resymmetrizes the unit cell ...