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

Total energy, geometry optimization, DFT+U, spin....

Moderator: bguster

Locked
Gang Tang
Posts: 6
Joined: Mon Dec 02, 2019 10:43 am

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

Post by Gang Tang » Sat Oct 10, 2020 9:57 am

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!
Attachments
abinit.out
the output file of abinit 9.2.1
(6.59 KiB) Downloaded 380 times

ebousquet
Posts: 469
Joined: Tue Apr 19, 2011 11:13 am
Location: University of Liege, Belgium

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

Post by ebousquet » Tue Oct 13, 2020 3:59 pm

Dear Gang,
Strange indeed, could it be because you put "chkprim 0.0" instead of "chkprim 0"?
Best wishes,
Eric

Gang Tang
Posts: 6
Joined: Mon Dec 02, 2019 10:43 am

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

Post by Gang Tang » Tue Oct 13, 2020 9:48 pm

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.

ebousquet
Posts: 469
Joined: Tue Apr 19, 2011 11:13 am
Location: University of Liege, Belgium

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

Post by ebousquet » Wed Oct 14, 2020 2:44 pm

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

Gang Tang
Posts: 6
Joined: Mon Dec 02, 2019 10:43 am

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

Post by Gang Tang » Wed Oct 14, 2020 9:40 pm

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.

gonze
Posts: 412
Joined: Fri Aug 14, 2009 8:29 pm

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

Post by gonze » Fri Oct 16, 2020 7:03 pm

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 ...

Locked