Dear Alexander, Dont worry about the previous mail, I figured it out :) -manoj On Sun, 30 Nov 2008, Manoj Srivastava wrote:
> Dear Alexander, > Thank you very much for your answer. It has started making sense, but > unfortunately not a whole lot. I think I need to have complete > understanding of this subroutine in order to have the bigger picture. In > the other e-mail, copied and pasted as below - > > the expression - > > norm2=(((il+xyk(1,ik))*bg(1,1)+(jl+xyk(2,ik))*bg(1,2))**2+ & > > ((il+xyk(1,ik))*bg(2,1)+(jl+xyk(2,ik))*bg(2,2))**2)* & > > > > i believe is |G+k|^2. How do you get above expression in the code for > > this? > norm2 is indeed |G_perp+k_perp|^2, where G_perp=il*b_1+jl*b_2 and 2d > vector > k_perp=xyk(1,ik)*b_1+xyk(2,ik)*b_2 and you indeed select out those > G_perp+k_perp which satisfy (G_perp+k_perp)^2<Ecut2d. > > Why is K_perp in terms of b_1 and b_2? You can ofcourse take it > like that but is there any specific reason to do that? If we look at the > Fourier transform of wavefunction psi(r)=sum_{G}\psi(G)exp(i(K+G).r). > here in this expression do we always take K in terms of G. I dont think > so, K can be a label, which might be in terms of G vectors but not > necessarily. What do you think? > In the input file where we enter k_x and k_y, do we enter these in > terms of b1 and b2? or somewhere later in the code it gets multiplied with > b1 and b2, if yes where? I am having tough time figuring it out :( > Thanks for help. > > Regards, > Manoj Srivastava > Department of Physics, > University of Florida, Gainesville > > > On Fri, 28 Nov 2008, > Alexander wrote: > > > Dear Manoj > > Ngper is the total number of g_perp=G_perp+k_perp with |g_perp|^2<E_cut > > which are arranged into the shells. Each shell contains g_perp having the > > same > > norm which is very useful because many calculations with g_perp depend only > > on their norms. The number of shells is ngpsh. gnsh(ngpsh) is the norm for > > each shell, ninsh(ngpsh) is the number of g_perp in the shell. > > The array nshell is the auxiliary array used further to arrange the g_perp > > vectors in the shells. > > > > Hope this helps you, > > regards, Alexander > > > > and ngpsh is the number of shells > > > > On Thursday 27 November 2008 00:26, Manoj Srivastava wrote: > > > Dear Alexander, PWSCF users and developers, > > > I have a technical question in one of the subroutines used to calculate > > > complex band. The subroutine 'init_gper.f90' under PWCOND directory is > > > used to calculate number of G perpendicular vectors within the energy > > > cutoff by using [k_{\perp}+G_{\perp}]^2.le.E_{cut}. I understand the > > > counting of Gper, but i dont understand how do they construct the Gper > > > vectors. For example what is 'ngpsh'? It is defined as 'no. of shells for > > > G', but i really dont understand what this is. I dont understand after > > > line 50 of the code in init_gper.f90. Mainly what does the following > > > piece of code do > > > > > > do i=1,nrx > > > do j=1,nry > > > icount=0 > > > do iw=1, ngpsh > > > if (abs(norm2-gnorm2(iw)).gt.eps) then > > > icount=icount+1 > > > else > > > nshell(i,j)=iw > > > endif > > > enddo > > > if (icount.eq.ngpsh) then > > > ngpsh=ngpsh+1 > > > gnorm2(ngpsh)=norm2 > > > nshell(i,j)=ngpsh > > > endif > > > endif > > > enddo > > > enddo > > > I understand it is not a good way of asking question, but I am completely > > > lost. Any help will be appreciated. > > > > > > Regards, > > > Manoj > > > > > > _______________________________________________ > > > Pw_forum mailing list > > > Pw_forum at pwscf.org > > > http://www.democritos.it/mailman/listinfo/pw_forum > > _______________________________________________ > > Pw_forum mailing list > > Pw_forum at pwscf.org > > http://www.democritos.it/mailman/listinfo/pw_forum > > > >