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