Real part of the dielectric function is absolutely one
Moderators: Davide Sangalli, andrea marini, Daniele Varsano, andrea.ferretti, myrta gruning, Conor Hogan
 luonn
 Posts: 13
 Joined: Mon Nov 12, 2018 4:52 pm
Real part of the dielectric function is absolutely one
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] EPSIm[2] EPSRe[3] EPSoIm[4] EPSoRe[5] EPS`Im[6] EPS`Re[7]
#
0.000000 0.000000 1.000000 0.000000 1.000000 0.000000 1.000000
0.101 0.220E08 1.00 0.421E09 1.00 0.220E08 1.00
0.202 0.434E08 1.00 0.849E09 1.00 0.434E08 1.00
0.3030 0.7458E8 1.000 0.1292E8 1.000 0.7458E8 1.000
0.4040 0.1272E7 1.000 0.1756E8 1.000 0.1272E7 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
Yambo4.3.2 and 4.4.0 show the following problems when dealing with 2D materials using a Coulomb cutoff.
# E/ev[1] EPSIm[2] EPSRe[3] EPSoIm[4] EPSoRe[5] EPS`Im[6] EPS`Re[7]
#
0.000000 0.000000 1.000000 0.000000 1.000000 0.000000 1.000000
0.101 0.220E08 1.00 0.421E09 1.00 0.220E08 1.00
0.202 0.434E08 1.00 0.849E09 1.00 0.434E08 1.00
0.3030 0.7458E8 1.000 0.1292E8 1.000 0.7458E8 1.000
0.4040 0.1272E7 1.000 0.1756E8 1.000 0.1272E7 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
Nannan Luo
LowDimensional Materials and Devices Laboratory,
TsinghuaBerkeley Shenzhen Institute (TBSI), Tsinghua University
C27, iPark, Nanshan district, Shenzhen, Guangdong province, China 518055
Tel: (+86)18811369291
Email: luonn@sz.tsinghua.edu.cn
LowDimensional Materials and Devices Laboratory,
TsinghuaBerkeley Shenzhen Institute (TBSI), Tsinghua University
C27, iPark, Nanshan district, Shenzhen, Guangdong province, China 518055
Tel: (+86)18811369291
Email: luonn@sz.tsinghua.edu.cn
 Daniele Varsano
 Posts: 2719
 Joined: Tue Mar 17, 2009 2:23 pm
 Contact:
Re: Real part of the dielectric function is absolutely one
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
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
Dr. Daniele Varsano
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/
 luonn
 Posts: 13
 Joined: Mon Nov 12, 2018 4:52 pm
Re: Real part of the dielectric function is absolutely one
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 oBSE.eps_q1_diago_bse file show like this for a 2D semiconductor with the Coulomb cutoff:
# E/ev[1] EPSIm[2] EPSRe[3] EPSoIm[4] EPSoRe[5]
#
0.000000 0.000000 6.928600 0.000000 5.152546
0.2004E1 0.7855E2 6.929 0.2225E2 5.153
0.4008E1 0.1573E1 6.932 0.4451E2 5.153
0.6012E1 0.2364E1 6.936 0.6682E2 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 oBSE.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(epsion1)/(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
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 oBSE.eps_q1_diago_bse file show like this for a 2D semiconductor with the Coulomb cutoff:
# E/ev[1] EPSIm[2] EPSRe[3] EPSoIm[4] EPSoRe[5]
#
0.000000 0.000000 6.928600 0.000000 5.152546
0.2004E1 0.7855E2 6.929 0.2225E2 5.153
0.4008E1 0.1573E1 6.932 0.4451E2 5.153
0.6012E1 0.2364E1 6.936 0.6682E2 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 oBSE.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(epsion1)/(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
Nannan Luo
LowDimensional Materials and Devices Laboratory,
TsinghuaBerkeley Shenzhen Institute (TBSI), Tsinghua University
C27, iPark, Nanshan district, Shenzhen, Guangdong province, China 518055
Tel: (+86)18811369291
Email: luonn@sz.tsinghua.edu.cn
LowDimensional Materials and Devices Laboratory,
TsinghuaBerkeley Shenzhen Institute (TBSI), Tsinghua University
C27, iPark, Nanshan district, Shenzhen, Guangdong province, China 518055
Tel: (+86)18811369291
Email: luonn@sz.tsinghua.edu.cn
 Daniele Varsano
 Posts: 2719
 Joined: Tue Mar 17, 2009 2:23 pm
 Contact:
Re: Real part of the dielectric function is absolutely one
Dear Nannan Luo,
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.
Best,
Daniele
Yes, in the 4.4 we changed the output when the coulomb cutoff is used.Is there any difference of the output between the newer and older versions?
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.
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.Another question I want to know is can yambo deal with inversion symmetry?
Best,
Daniele
Dr. Daniele Varsano
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/
 luonn
 Posts: 13
 Joined: Mon Nov 12, 2018 4:52 pm
Re: Real part of the dielectric function is absolutely one
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
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
Nannan Luo
LowDimensional Materials and Devices Laboratory,
TsinghuaBerkeley Shenzhen Institute (TBSI), Tsinghua University
C27, iPark, Nanshan district, Shenzhen, Guangdong province, China 518055
Tel: (+86)18811369291
Email: luonn@sz.tsinghua.edu.cn
LowDimensional Materials and Devices Laboratory,
TsinghuaBerkeley Shenzhen Institute (TBSI), Tsinghua University
C27, iPark, Nanshan district, Shenzhen, Guangdong province, China 518055
Tel: (+86)18811369291
Email: luonn@sz.tsinghua.edu.cn
 Daniele Varsano
 Posts: 2719
 Joined: Tue Mar 17, 2009 2:23 pm
 Contact:
Re: Real part of the dielectric function is absolutely one
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:
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:
It is also printed in the report.
Similarly, in linear response calculations in reciprocal space, you can have a look to:
which essentially do the same stuff and maybe easier to follow:
Best,
Daniele
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
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
Similarly, in linear response calculations in reciprocal space, you can have a look to:
Code: Select all
./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
....
Daniele
Dr. Daniele Varsano
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/
 luonn
 Posts: 13
 Joined: Mon Nov 12, 2018 4:52 pm
Re: Real part of the dielectric function is absolutely one
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_2D1)*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 2Dmaterial thickness, right?
bests
Nannan Luo
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_2D1)*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 2Dmaterial thickness, right?
bests
Nannan Luo
Nannan Luo
LowDimensional Materials and Devices Laboratory,
TsinghuaBerkeley Shenzhen Institute (TBSI), Tsinghua University
C27, iPark, Nanshan district, Shenzhen, Guangdong province, China 518055
Tel: (+86)18811369291
Email: luonn@sz.tsinghua.edu.cn
LowDimensional Materials and Devices Laboratory,
TsinghuaBerkeley Shenzhen Institute (TBSI), Tsinghua University
C27, iPark, Nanshan district, Shenzhen, Guangdong province, China 518055
Tel: (+86)18811369291
Email: luonn@sz.tsinghua.edu.cn
 Daniele Varsano
 Posts: 2719
 Joined: Tue Mar 17, 2009 2:23 pm
 Contact:
Re: Real part of the dielectric function is absolutely one
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
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
Dr. Daniele Varsano
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/

 Posts: 10
 Joined: Wed May 20, 2020 7:25 am
 Location: University of California, Santa Cruz
Re: Real part of the dielectric function is absolutely one
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.yambocode.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
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.yambocode.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
Kejun Li
PhD student,
Department of Physics,
University of California, Santa Cruz
Email: kli103@ucsc.edu
PhD student,
Department of Physics,
University of California, Santa Cruz
Email: kli103@ucsc.edu
 Daniele Varsano
 Posts: 2719
 Joined: Tue Mar 17, 2009 2:23 pm
 Contact:
Re: Real part of the dielectric function is absolutely one
Dear Kejun,
yes, by looking in:
you can see around line 330:
The eps_2_alpha depends on the dimensionality of the system and it is defined in:
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)=1e5
Best,
Daniele
yes, by looking in:
Code: Select all
/src/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
333 alpha(:,2)=Epsilon_ii(:,3)*alpha_factor
Code: Select all
./setup/check_periodic_directions.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)=1e5
Best,
Daniele
Dr. Daniele Varsano
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/
S3CNR Institute of Nanoscience and MaX Center, Italy
MaX  Materials design at the Exascale
http://www.nano.cnr.it
http://www.maxcentre.eu/