<div dir="ltr"><div><div><div><div><div><div><div><div><div><div>Dear Ryky,<br></div>For more details about the G vector generation you can take a look in the ggen subroutine in Modules/recvec_subs.f90. Take a look also in n_plane_waves.f90<br></div>In gereral the G vectors are determined with the condition<br>G^2 * hbar^2 / (2m_e) < E_cut(density)=4*E_cut(wfc)  (without the k point; inside QE Rydberg atomic units are used)<br></div><div>This is a sphere in reciprocal space centered in (0,0,0).<br></div><br></div>Concerning each orbital corresponding to a specific k point you apply the condition <br>(G+k)^2 * hbar^2 / (2m_e) < E_cut(wfc)<br></div>In this case the G vectors are a subset of the vectors used for the density. In this case we have a sphere in reciprocal space shifted from the origin. Depending on k you can have a different set of G vectors included in the sphere and also their number could differ.<br></div><div><br></div>In order to menage the g vectors for each k-point, you can use the arrays ngk (number of G vectors for each k-point) and igk (index of G corresponding to a given index of k+G; basically an index that allows you to identify the G vectors corresponding to a given k and order them).<br><br></div>For example the kinetic energy corresponding to a given k-point ik is<br> g2kin(1:ngk(ik)) = ( ( xk(1,ik) + g(1,igk(1:ngk(ik))) )**2 + &<br>                   ( xk(2,ik) + g(2,igk(1:ngk(ik))) )**2 + &<br>                   ( xk(3,ik) + g(3,igk(1:ngk(ik))) )**2 ) * tpiba2<br></div>where tpiba2 = (2\pi/a)^2<br><br></div><div>There is only one FFT for the wavefunctions so the grid does not depend on the k-points; however, for a given wavefunction, only the components corresponding to a G vector that satisfy (G+k)^2 * hbar^2 / (2m_e) < E_cut(wfc) are different from 0<br></div><div><br></div>Best,<br></div>Dario<br><div><div><div><br><div><br><div><div><br><br><div><div><div><div><br></div></div></div></div></div></div></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 12, 2016 at 1:38 PM, Ryky Nelson <span dir="ltr"><<a href="mailto:nelson.ryky@gmail.com" target="_blank">nelson.ryky@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Hello QE users and developers,<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">I'm trying to figure out how G vectors in PWscf are selected to represent the corresponding wfcs. Could someone tell me if the following is the only criterion used to determine G vectors?<br><br>abs(G+k)^2 * hbar^2 / (2m_e) < E_cut<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">and does the code basically start from the origin (0,0,0) and scan through all grid coordinates (positive and negative) and check if the grid agrees with the above criterion? Also, does the number of G vectors (for each k) have relation to the FFT dimensions?<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Thank you!<span class="HOEnZb"><font color="#888888"><br><br clear="all"></font></span></div><span class="HOEnZb"><font color="#888888"><div><div><div dir="ltr"><div><div dir="ltr"><span style="color:rgb(0,0,0)"><span>Ryky Nelson<br>Institut für Anorganische Chemie<br>RWTH Aachen University<br></span></span></div></div></div></div></div>
</font></span></div>
<br>_______________________________________________<br>
Pw_forum mailing list<br>
<a href="mailto:Pw_forum@pwscf.org">Pw_forum@pwscf.org</a><br>
<a href="http://pwscf.org/mailman/listinfo/pw_forum" rel="noreferrer" target="_blank">http://pwscf.org/mailman/listinfo/pw_forum</a><br></blockquote></div><br></div>