Page 1 of 1

Real part of the dielectric function is absolutely one

Posted: Tue Nov 19, 2019 8:25 am
by luonn
Dear Yambo developers:

Yambo4.3.2 and 4.4.0 show the following problems when dealing with 2D materials using a Coulomb cutoff.
# E/ev[1] EPS-Im[2] EPS-Re[3] EPSo-Im[4] EPSo-Re[5] EPS`-Im[6] EPS`-Re[7]
#
0.000000 0.000000 1.000000 0.000000 1.000000 0.000000 1.000000
0.101 0.220E-08 1.00 0.421E-09 1.00 0.220E-08 1.00
0.202 0.434E-08 1.00 0.849E-09 1.00 0.434E-08 1.00
0.3030 0.7458E-8 1.000 0.1292E-8 1.000 0.7458E-8 1.000
0.4040 0.1272E-7 1.000 0.1756E-8 1.000 0.1272E-7 1.000
......

The imaginary part of the dielectric function is too small and the real part is 1.00.
But when dealing with 3D semiconductors without the Coulomb cutoff, the results are right. I do not know why.
And another library related problem emerge:
file: error while loading shared libraries: libz.so.1: failed to map segment from shared object
file: error while loading shared libraries: libz.so.1: failed to map segment from shared object


Can you help me to solve them? Many thanks!

Bests!

Nannan Luo

Re: Real part of the dielectric function is absolutely one

Posted: Tue Nov 19, 2019 3:04 pm
by Daniele Varsano
Dear Nannan Luo,

This is due to the fact that macroscopic eps in 2D materials it is not well defined (see e.g. PHYSICAL REVIEW B 94, 155406 (2016)) and the presence of the cutoff correctly gives you the very small values of eps (ideally zero for infinite vacuum). Anyway, what you get it is essentially correct beside a normalization factor. This happens because your coulomb potential does not behave as 1/q^2 in presence of the coulomb cutoff.
The quantity you should look at is the polarizability (alpha) and from the polarizability extract the observables. In 4.4 release you should have also the alpha output.

About library related errors you should provide more details: in what situation it happens? Were you able to compile the code, and if not please post the config.log file (rename it as .txt before uploading).

Best,
Daniele

Re: Real part of the dielectric function is absolutely one

Posted: Thu Nov 21, 2019 1:16 pm
by luonn
Dear Daniele Varsano:
I am very grateful for the quick reply. I understant what you said. But using old versions of yambo (4.1.4 or 4.2.1), the obtained data in o-BSE.eps_q1_diago_bse file show like this for a 2D semiconductor with the Coulomb cutoff:
# E/ev[1] EPS-Im[2] EPS-Re[3] EPSo-Im[4] EPSo-Re[5]
#
0.000000 0.000000 6.928600 0.000000 5.152546
0.2004E-1 0.7855E-2 6.929 0.2225E-2 5.153
0.4008E-1 0.1573E-1 6.932 0.4451E-2 5.153
0.6012E-1 0.2364E-1 6.936 0.6682E-2 5.155
0.0802 0.0316 6.9410 0.0089 5.1561
0.10020 0.03967 6.94795 0.01116 5.15809
0.12024 0.04783 6.95653 0.01342 5.16053
0.14028 0.05610 6.96671 0.01569 5.16342
0.16032 0.06453 6.97853 0.01797 5.16677
0.18036 0.07312 6.99201 0.02027 5.17057
In my opinion, the real part of the dielectric constant can be expressed as:epsion_2D=1+L_z(epsion_3D - 1)/t, L_z is the Coulomb cutoff length and t is the effective thickness of 2D materials, epsion_3D is the obtained results from o-BSE.eps_q1_diago_bse.
The above results looks reasionable. Is anything wrong?
On the hand, using yambo4.4.0, and 4.3.2, the obtained dielectric function as a function of energy seems too small. Is there any difference of the output between the newer and older versions?
Besides, the polarizability (alpha) can be obtained from alpha_2D=L_z(epsion-1)/(4pi). what do you mean "In 4.4 release you should have also the alpha output"? The alpha can be obtained directly in a BSE calculations?

Another question I want to know is can yambo deal with inversion symmetry?

Best,
Nannan Luo

Re: Real part of the dielectric function is absolutely one

Posted: Thu Nov 21, 2019 1:57 pm
by Daniele Varsano
Dear Nannan Luo,
Is there any difference of the output between the newer and older versions?
Yes, in the 4.4 we changed the output when the coulomb cutoff is used.
eps=1+Vc X where Vc is the cutoff coulomb potential, while before the eps was calculated as
eps=1+X/q^2

The first expression is the one that is consistent and satisfies the relation between absorption and electron energy loss spectra.
Note that the difference between the results obtained by the two expressions for the absorption it is only a (large) constant.
Anyway, epsilon it is not meaningful for D < 3 as explained in the previous post.
In the 4.4 you should obtain the alpha, which is the quantity you should look at to obtain the observables.

If you do not get the alpha output, it means that you should update the source.
Another question I want to know is can yambo deal with inversion symmetry?
yes, it is taken into account if it is present. It is listed among the symmetries in the r_setup file see section [02.02] Symmetries.

Best,
Daniele

Re: Real part of the dielectric function is absolutely one

Posted: Sat Nov 23, 2019 4:34 am
by luonn
Dear Daniele:

Is there any tutorial about the polarizability (alpha)? I want to know is the obtained alpha in yambo4.4.0 is the 3D one or the 2D one? Since the 3D alpha is dependent on the vacuum length or the Coulomb cutoff length.

Best
Nannan Luo

Re: Real part of the dielectric function is absolutely one

Posted: Sat Nov 23, 2019 11:40 am
by Daniele Varsano
Dear Nannan,
unfortunately, we do not have yet a tutorial, probably we will prepare one soon.
Anyway, with just a bit of patience, you can have a look at the source code:

Code: Select all

./bse/K_output_file.F

Code: Select all

330    if(l_col_cut) then
331      alpha_factor=eps_2_alpha/4._SP/pi*bare_qpg(1,1)**2/q_norm(1)**2
332      alpha(:,1)=Epsilon_ii(:,2)*alpha_factor
It is essentially the epsilon you were obtaining in the old version of the code (as you can see the eps is multiplied for Vcut and divide for q0^2).
Then multiplied for the eps_2_alpha factor which depends on the dimensionality of the system, defined in:

Code: Select all

./setup/check_periodic_directions.F
It is also printed in the report.

Similarly, in linear response calculations in reciprocal space, you can have a look to:

Code: Select all

./pol_function/OPTICS_driver.F  
which essentially do the same stuff and maybe easier to follow:

Code: Select all

310    if (eval_alpha) then
311      !
312      ! alpha = -eps_2_alpha X(1,1) / |q|^2
313      !       =  (1 -eps_M^-1) eps_2_alpha/4/pi
314      !       =  (1 +eels    ) eps_2_alpha/4/pi
315      !
316      call of_open_close(alpha_file_name,'oa')
317      !
318      if(l_col_cut) then
319        alpha_factor=eps_2_alpha/4._SP/pi*bare_qpg(1,1)**2/q_norm(1)**2
320        Alpha(:,1)=(Epsilon_ii(:,1)-1._SP)*alpha_factor
....
Best,
Daniele

Re: Real part of the dielectric function is absolutely one

Posted: Wed Dec 11, 2019 12:29 pm
by luonn
Dear Daniele:

I am still confused about the alpha output of yambo4.4.0. As shown in the code (./pol_function/OPTICS_driver.F ),
CODE: SELECT ALL

310 if (eval_alpha) then
311 !
312 ! alpha = -eps_2_alpha X(1,1) / |q|^2
313 ! = (1 -eps_M^-1) eps_2_alpha/4/pi
314 ! = (1 +eels ) eps_2_alpha/4/pi
315 !
316 call of_open_close(alpha_file_name,'oa')
317 !
318 if(l_col_cut) then
319 alpha_factor=eps_2_alpha/4._SP/pi*bare_qpg(1,1)**2/q_norm(1)**2
320 Alpha(:,1)=(Epsilon_ii(:,1)-1._SP)*alpha_factor
....

Taking 2D semiconductors as an example, the output file alpha (the polarizability)
alpha=(eps_2D-1)*z/4pi *bare_qpg(1,1)**2/q_norm(1)**2, (eps_2D is the effective dielectric function, z is the cell length normal to the 2D plane, i.e. eps_2_alpha)
What is the factor "bare_qpg(1,1)**2/q_norm(1)**2" ? In other words, how can I get the eps_2D?
eps_2D=1+4pi*alpha/d , where d is the 2D-material thickness, right?

bests

Nannan Luo

Re: Real part of the dielectric function is absolutely one

Posted: Wed Dec 11, 2019 4:50 pm
by Daniele Varsano
Dear Nannan,

in Yambo alfa is defined as lim q->0 -X/q^2

as epsilon is eps=1+vX where v here is the modified Coulomb truncated cutoff.
This is expressed in Yambo as 1/qpg^2 where qpg=1/sqrt(Vcut).
So the term bare_qpg(1,1)**2/q_norm(1)**2 essentially restore the 1/q^2 limit.

Note that eps here it is not the eps_2D.

Best,
Daniele

Re: Real part of the dielectric function is absolutely one

Posted: Wed Jun 10, 2020 6:59 pm
by kli103
Dear developers,

In the fourth part of the post, you said that older versions of yambo use eps=1+X/q^2 and yambo 4.4 uses eps=1+Vc X for coulomb truncation, and the difference between the results obtained by the two expressions for the absorption it is only a (large) constant. I tried to look for the expression of the constant that you memtioned but did not find on http://www.yambo-code.org/wiki/index.ph ... al_systems. Could you tell me how to estimate the constant? I ask this question because I want to compare the dielectric constants (eps) that I obtained by using yambo 4.1 and polarizability (alpha) that I obtained by using yambo 4.4.

Best regards,
Kejun

Re: Real part of the dielectric function is absolutely one

Posted: Wed Jun 10, 2020 7:24 pm
by Daniele Varsano
Dear Kejun,

yes, by looking in:

Code: Select all

/src/bse/K_output_file.F 
you can see around line 330:

Code: Select all

330    if(l_col_cut) then
331      alpha_factor=eps_2_alpha/4._SP/pi*bare_qpg(1,1)**2/q_norm(1)**2
332      alpha(:,1)=Epsilon_ii(:,2)*alpha_factor
333      alpha(:,2)=Epsilon_ii(:,3)*alpha_factor
The eps_2_alpha depends on the dimensionality of the system and it is defined in:

Code: Select all

./setup/check_periodic_directions.F
The easiest way is to insert a write statement to print the alpha_factor in /src/bse/K_output_file.F

Other option is to extract the bare_qpg(1,1) value from the ndb.cutoff database (using ncdump) and evaluate the alpha_factor having in mind that q_norm(1)=1e-5

Best,
Daniele