g_psi multiplies the correction vector by an approximation of the inverse of (H-eS), typically just the inverse of the diagonal .

regterg is the real version of the routine: that is appropriate the one for k==Gamma

in this case psi is real in real space which means that the Fourier components at G and -G are complex conjugate of each other.

the normalization is as usual

1 = \sum_G psi(G)^* psi(G)   when summing over all G

but only half of them (the "positive" G) are stored and the normalization is computed as

1 = psi(0)* psi(0) + 2.0 \sum_G/=0 psi(G)* psi(G)   or rather

1 = 2.0 \sum_G psi(G)* psi(G)   -  psi(0)* psi(0)

the processor with gstart==2 is the one for which the first component is G=0

HTH

stefano

On 29/07/19 15:59, carlossiero siero wrote:
Dear Users,

I have been digging in the regterg.f90 subroutine and I was wondering if somebody could tell me what the calling to g_psi (line 286) is doing?

                |     CALL g_psi( npwx, npw, notcnv, 1, psi(1,nb1), ew(nb1) )

I thought the correction vectors, |psi> = (H - e*S) |psi>, were already stored in psi, so there is no need to do any inversion or anything else.

Also, running a 1processor calculation, the normalization goes through line 299:

                |      IF ( gstart == 2 ) ew(n) = ew(n) - psi(1,nbn) * psi(1,nbn)

What is the purpose of substrating the psi product of the first element on each of the new vectors?

Thanks so much for your help!

Carlos

_______________________________________________
Quantum ESPRESSO is supported by MaX (www.max-centre.eu/quantum-espresso)
users mailing list [email protected]
https://lists.quantum-espresso.org/mailman/listinfo/users
_______________________________________________
Quantum ESPRESSO is supported by MaX (www.max-centre.eu/quantum-espresso)
users mailing list [email protected]
https://lists.quantum-espresso.org/mailman/listinfo/users

Reply via email to