[Pw_forum] G vector used to represent wfcs
dario rocca
roccad at gmail.com
Thu May 12 16:14:02 CEST 2016
Dear Ryky,
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
In gereral the G vectors are determined with the condition
G^2 * hbar^2 / (2m_e) < E_cut(density)=4*E_cut(wfc) (without the k point;
inside QE Rydberg atomic units are used)
This is a sphere in reciprocal space centered in (0,0,0).
Concerning each orbital corresponding to a specific k point you apply the
condition
(G+k)^2 * hbar^2 / (2m_e) < E_cut(wfc)
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.
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).
For example the kinetic energy corresponding to a given k-point ik is
g2kin(1:ngk(ik)) = ( ( xk(1,ik) + g(1,igk(1:ngk(ik))) )**2 + &
( xk(2,ik) + g(2,igk(1:ngk(ik))) )**2 + &
( xk(3,ik) + g(3,igk(1:ngk(ik))) )**2 ) * tpiba2
where tpiba2 = (2\pi/a)^2
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
Best,
Dario
On Thu, May 12, 2016 at 1:38 PM, Ryky Nelson <nelson.ryky at gmail.com> wrote:
> Hello QE users and developers,
>
> 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?
>
> abs(G+k)^2 * hbar^2 / (2m_e) < E_cut
>
> 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?
>
> Thank you!
>
> Ryky Nelson
> Institut für Anorganische Chemie
> RWTH Aachen University
>
> _______________________________________________
> Pw_forum mailing list
> Pw_forum at pwscf.org
> http://pwscf.org/mailman/listinfo/pw_forum
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/users/attachments/20160512/80ae96e1/attachment.html>
More information about the users
mailing list