Dear Fan,

On 22/11/2015 23:59, Fan Zheng wrote:
Dear all,

I have a question about the electron phonon coupling calculation in the subroutine "elphel" (in the file elphonon.f90).

This subroutine computes <n,k|dV|m,k+q>. |n,k> is the wavefunction for band "m" with wavevector "k".

First, the program computes <n,k|dV.  Then, it is multiplied by |m,k+q>

If q=0, it only needs to read to evc as:
...
        IF (lgamma) THEN
           CALL get_buffer(evc, lrwfc, iuwfc, ikk)
        ELSE
           CALL get_buffer (evc, lrwfc, iuwfc, ikk)
           CALL get_buffer (evq, lrwfc, iuwfc, ikq)
        ENDIF
...
My question is in the q=0 case, array "evq" is used to multiply the computed <n,k|dV instead of evc. (line 401-406 in version 5.2.1)

Can anyone explain why "evc" array is not used in q=0 case for these line (401-406)?


because in allocate_phq there is the following bit
 if (lgamma) then
     !
     !  q=0  : evq and igkq are pointers to evc and igk
     !
     evq  => evc
     igkq => igk
  else
     !
     !  q!=0 : evq, igkq are allocated and calculated at point k+q
     !
     allocate (evq ( npwx*npol , nbnd))
     allocate (igkq ( npwx))
  endif

therefore in the lgamma case evc and evq (and igkq and igk) are the same.

best
 stefano


Thanks,
Fan


_______________________________________________
Pw_forum mailing list
[email protected]
http://pwscf.org/mailman/listinfo/pw_forum

_______________________________________________
Pw_forum mailing list
[email protected]
http://pwscf.org/mailman/listinfo/pw_forum

Reply via email to