Dear Stefano,

thank you so much. This is clear to me now.

Best,
Fan

On Sun, Nov 22, 2015 at 7:59 PM, stefano de gironcoli <[email protected]>
wrote:

> 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 
> [email protected]http://pwscf.org/mailman/listinfo/pw_forum
>
>
>
> _______________________________________________
> 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