I am sorry I forgot to mention the value of 'eps', it is 1.d-8. Thanks, Manoj Srivastava University of Florida Gainesville, FL On Sun, 16 Aug 2009, Manoj Srivastava wrote:
> Dear Alexander and PWSCF users, > I have a question about an expression in the scatter_forw.f90 subroutine, > specifically about the following expression - > IF (ABS(AIMAG(zk(lam, kp))).LT.eps) THEN > f1(lam,iorb)=-ezk(lam)*CONJG(di(iorb,lam))*zk2(lam) > f2(lam,iorb)=-ezk(lam)*CONJG(ci(iorb,lam))*zk2(lam) > ELSE > f1(lam,iorb)=-CONJG(ci(iorb,lam))*zk2(lam) > f2(lam,iorb)=-CONJG(di(iorb,lam))*zk2(lam) > ENDIF > Why does this expression have if/else statement depending on imaginary > part of zk? I did some algebra and realized that f1 for (ABS(AIMAG(zk(lam, > kp))).LT.eps) is related with f1 for (ABS(AIMAG(zk(lam, kp))).GT.eps) by > changing zk to -zk. Same is true for f2. It is defined in previous > subroutine that > zk=sqrt(E-E_lambda) > where E is given energy and E_lambda is eigenvalue of 2D problem. > Square root gives us two solution, one would be zk and > another -zk, and I dont understand how do you choose which solution to use > in the expression for f1 and f2, depending on imaginary part of zk. > Would anyone mind to explain? > > Regards, > Manoj > >
