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
