mirror of https://gitlab.com/QEF/q-e.git
U_projection_type = 'norm-atomic' will allow the normalization of atomic
Bloch function when they are not normalized in the pseudopotential. This is a quick and dirty fix to the problem (normalization of the atomic wavefunctions should be done in the atomic code) that produces meaningless occupations for LDA+U calculations. Explanation added in INPUT_PW git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4054 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
7dcbb3900d
commit
1e786410ff
|
@ -426,6 +426,13 @@ U_projection_type CHARACTER (default='atomic')
|
|||
Currently available choices:
|
||||
'atomic': use atomic wfc's (as they are) to build the projector
|
||||
'ortho-atomic': use Lowdin orthogonalized atomic wfc's
|
||||
'norm-atomic': Lowdin normalization of atomic wfc. Keep in mind:
|
||||
atomic wfc are not orthogonalized in this case.
|
||||
This is a "quick and dirty" trick to be used when
|
||||
atomic wfc from the pseudopotential are not
|
||||
normalized (and thus produce occupation whose
|
||||
value exceeds unity). If orthogonalized wfc are
|
||||
not needed always try 'atomic' first.
|
||||
'file': use the information from file "prefix".atwfc that must
|
||||
have been generated previously, for instance by pmw.x
|
||||
(see PP/poormanwannier.f90 for details)
|
||||
|
|
|
@ -71,6 +71,13 @@ SUBROUTINE orthoatwfc
|
|||
WRITE( stdout,*) 'Gamma-only calculation for this case not implemented'
|
||||
STOP
|
||||
END IF
|
||||
ELSE IF (U_projection=="norm-atomic") THEN
|
||||
orthogonalize_wfc = .TRUE.
|
||||
WRITE( stdout,*) 'Atomic wfc used for LDA+U Projector are normalized but NOT orthogonalized'
|
||||
IF (gamma_only) THEN
|
||||
WRITE( stdout,*) 'Gamma-only calculation for this case not implemented'
|
||||
STOP
|
||||
END IF
|
||||
ELSE
|
||||
WRITE( stdout,*) "U_projection_type =", U_projection
|
||||
CALL errore ("orthoatwfc"," this U_projection_type is not valid",1)
|
||||
|
@ -140,14 +147,14 @@ SUBROUTINE orthoatwfc
|
|||
#ifdef __PARA
|
||||
CALL reduce (2 * natomwfc * natomwfc, overlap)
|
||||
#endif
|
||||
! IF (.not.orthogonalize_wfc) THEN
|
||||
! DO i = 1, natomwfc
|
||||
! DO j = i+1, natomwfc
|
||||
! overlap(i,j) = cmplx(0.d0,0.d0)
|
||||
! overlap(j,i) = cmplx(0.d0,0.d0)
|
||||
! ENDDO
|
||||
! ENDDO
|
||||
! END IF
|
||||
IF (U_projection=="norm-atomic") THEN
|
||||
DO i = 1, natomwfc
|
||||
DO j = i+1, natomwfc
|
||||
overlap(i,j) = cmplx(0.d0,0.d0)
|
||||
overlap(j,i) = cmplx(0.d0,0.d0)
|
||||
ENDDO
|
||||
ENDDO
|
||||
END IF
|
||||
!
|
||||
! find O^-.5
|
||||
!
|
||||
|
|
Loading…
Reference in New Issue