Dear developers,

we are studying how the oscillators strengths are implemented in the yambo code.

As pointed out in your Com.Phys.Commun. (A2 appendix), the matrix elements are defined as:

rho_{nm} (k,q,G) = Int_dr psi*_{nk} ( r) e^{i (q+G).r } psi_{mk'} ( r)

where k' = k - q - G_0, k' and k are in the 1BZ, q is in 1QBZ. Int_dr denote an integration in the real space over the unit cell. psi are the Bloch wavefunctions:

psi_{nk} ( r) = e^{i k.r} u_{nk} ( r)

so that

rho_{nm} (k,q,G) = Int_dr u*_{nk} ( r) e^{i (G-G_0).r } u_{mk'} ( r)

by applying symmetries on k and k' : k= R k_{IBZ} and k' = R' k'_{IBZ}

the periodic function u transforms as : u_{nk} ( r) = u_{n R k_{IBZ}} ( r) = u_{n k_{IBZ}} ( R^{-1} r)

as a consequence we have

(*) rho_{nm} (k,q,G) = Int_dr u*_{n k_{IBZ} } ( R^{-1} r) e^{i (G-G_0).r } u_{m k'_{IBZ} } ( R'^{-1} r)

----------------------

The procedure is implemented in Scatter_Bamp.F as follows:

Step #1 :

Load the wavefunctions in real space: u_{n k_{IBZ} } ( r) and u_{m k'_{IBZ} } ( r)

Step #2 :

Use symmetries in real space to evaluate the product :

u*_{n k_{IBZ} } ( R^{-1} r) u_{m k'_{IBZ} } ( R'^{-1} r)

where complex conjugate operations can be removed or added depending on the presence of Time-Reversal (litr and lotr variables)

Step #3 :

Perform a Fourier transformation of this product

Step #4 :

Rotate the G-space using symmetry qs and shift the whole rotated space of a G_0 vector.

- Code: Select all
` isc%rhotw(1:isc%ngrho)= rho_tw_rs(fft_g_table(g_rot(qs,1:isc%ngrho),iGo),1)`

Comparing this procedure with eq. (*), we don't understand the meaning of rotation qs, which as far as we know is defined as:

q_{QBZ} = R_{qs} q_{QIBZ}

Are we omitting something?

Thank you in advance.

Sincerely,

Marco Govoni and Ivan Marri