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