Page 1 of 1

Dielectric function computation

Posted: Tue Apr 25, 2023 12:02 pm
by MarinT
Dear all,

Thank you for welcoming me on this forum.

I am using yambopy to post-process a Yambo simulation on an 2D semiconductor.
The source Yambo program, parametrized as independent particle (Chimod= "IP") produces the "o.eps_q1_ip" file where the imaginary dielectric function appears.

But I want to identify the contributions of the inner terms of the dielectric function. For this, I use the YamboDipolesDB.ip_eps2() from yambopy, that is using the DIP_iR elements for its computation. However the dielectric function from Yambo is not reproduced. They are quite similar, but the y scale does not match.

Yambo py seems to use the following equation: eps2 = 1/nkpoints * |DIP_iR|^2 * ( g/pi * 1/ ((Ec - Ev - freq)^2 * g^2) ) for a Lorentzian broadening
However it does not match equation (1) from Yambo guide https://www.yambo-code.eu/wiki/index.ph ... heatsheets.

Would you have a formula to compute the imaginary dielectric function from the DIP_iR elements?

Thank you for your help,
Best regards,

EDIT: I should add that trying to implement equation (1) at hand did not work, neither the experimental shape nor the scaling was good.

Re: Dielectric function computation

Posted: Fri Apr 28, 2023 8:32 am
by palful
Dear Marin,

As for the dipole types, we have that i*<v| p |c>/(Ec-Ev) = <c|r|v> (apart from some constants that are accounted for), so the formula used in yambopy (iR) should match that of the yambo cheat sheet (P).

However, the y-scale problem may be due to the use of the 2D Coulomb cutoff in yambo. If you are using the rim_cut runlevel with CUTGeo, then the scale of the absorption spectrum changes due to the truncation of the Coulomb cutoff.

At present, yambopy does not take this into account in the independent-particles case (only in the BSE case this is accounted for). I need to patch this.

In the meantime, if this is indeed the problem, then it's just a scaling factor that does not change anything in the spectrum except for its magnitude. You can still do the analysis as normal. You can also find the scaling constant by just rescaling the yambopy plot until it coincides with the yambo output (it should coincide exactly).

Cheers,
Fulvio