[QE-developers] [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 developers
mailing list