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