[QE-users] Calculating U parameter for Ni in LiNiO2 using hp.x

Lorenzo Paulatto paulatz at gmail.com
Wed Sep 16 10:48:47 CEST 2020


>> By changing the threshold values you mentioned, nscf calculation finished (no "cholesky" error)...
This is a common problem and maybe would require an upstream fixing:

when doing an SCF calculation, the diagonalisation threshold is set to a 
relatively loose value at the beginning, then tightened.

      IF ( iter == 2 ) ethr = 1.D-2
      ethr = MIN( ethr, 0.1D0*dr2 / MAX( 1.D0, nelec ) )
      ! ... do not allow convergence threshold to become too small:
      ! ... iterative diagonalization may become unstable
      ethr = MAX( ethr, 1.D-13 )
(from electrons.f90)

On the other hand, in an NSCF calculation, the threshold for 
diagonalisation is proportional to the input convergence threshold.

IF ( ethr == 0.D0 ) ethr = 0.1D0 * MIN( 1.D-2, tr2 / nelec )
(from setup.f90)

The latter can turn out to be much tighter than the former, and even 
impossibly tight sometimes which makes the algorithm fail. Maybe adding 
a minimu of 1.d-13 also for NSCF would fix this kind of problems, but 
I'm not 100% sure this is exactly how it is done, as there are several 
places where ethr is set.

cheers



-- 
Lorenzo Paulatto - Paris


More information about the users mailing list