A missing factor of 4pi in NEQ_GW of Yambo

Questions and doubts about features of real-time Yambo (yamb_rt)

Moderators: Davide Sangalli, andrea.ferretti, myrta gruning, andrea marini, Daniele Varsano

Post Reply
clin
Posts: 14
Joined: Fri Sep 17, 2021 10:27 am

A missing factor of 4pi in NEQ_GW of Yambo

Post by clin » Thu Jan 09, 2025 4:04 am

Dear developers,

I want to obtain the screened Coulomb interaction matrix elements like the ones in BSE kernel with the generalization to all bands, not limited to electron-hole states. I used the so-called non-equilibrium (NEQ) GW implemented in real-time Yambo as explained in Dr. Andrea Marini's paper. However, I found the output matrix elements are too small (around one magnitude smaller) compared to those from BSE kernel calculations. By comparing these two calculations and looking into the codes:
https://github.com/yambo-code/yambo/blo ... W_static.F
https://github.com/yambo-code/yambo/blo ... rnel_std.F
I realize a missing factor of 4pi in NEQ GW calculations, while there is an additional factor of 4pi at the line of 90 in the file

Code: Select all

K_correlation_kernel_std.F
which seems to be the factor of Fourier transform of Coulomb potential.

After adding this 4pi into NEQ GW calculations and removing the line 172 of the file

Code: Select all

COLLISIONS_NEQ_GW_static.F

Code: Select all

if (iqibz==1) EM1s(1,1)=X_mat(1,1,1)*sqrt(isc%gamp(1,1)/DL_vol/real(q%nbz,SP))
I can obtain the exact same values for certain matrix elements that can be found in both NEQ GW and BSE calculations. This should confirm that there is a missing factor of 4pi in NEQ GW calculations, but perhaps this factor is introduced in another place of real-time Yambo that I didn't notice.

My question is: what is the role of the line 172?

Code: Select all

if (iqibz==1) EM1s(1,1)=X_mat(1,1,1)*sqrt(isc%gamp(1,1)/DL_vol/real(q%nbz,SP))
It seems to set the long-wavelength limit (q=0) of screened Coulomb potential to certain limit value, however there is no such action in BSE code. Could you explain the difference and why it is needed in NEQ GW calculations?

Thanks a lot,
Changpeng
Changpeng Lin
Doctoral Assistant, EPFL

User avatar
Davide Sangalli
Posts: 631
Joined: Tue May 29, 2012 4:49 pm
Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
Contact:

Re: A missing factor of 4pi in NEQ_GW of Yambo

Post by Davide Sangalli » Fri Feb 07, 2025 12:07 am

Dear Changpeng,
the NEQ_GW collisions are not used very much. I'm not sure about the factors you mention.

I'd suggest to instead use the HXC_collisions with the approximation H_potential=SEX (subroutine compute_MBPT_XC_collisions)
https://github.com/yambo-code/yambo/blo ... IONS_HXC.F

In this branch I coded the possibility of reading the BS_kernel to be used for the collisions (subroutine map_BSE_to_HXC_collisions)
https://github.com/sangallidavide/yambo ... IONS_HXC.F

Best,
D.
Davide Sangalli, PhD
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/

clin
Posts: 14
Joined: Fri Sep 17, 2021 10:27 am

Re: A missing factor of 4pi in NEQ_GW of Yambo

Post by clin » Wed Feb 12, 2025 6:48 pm

Dear Davide,

Many thanks for your help. Since I have spent lots of time to interface and map the matrix elements from NEQ_GW calculations of Yambo to our in-house code, at present I think I won't perform the calculations using the another module you pointed out. After adding 4pi into NEQ_GW calculation and removing the line of code I mentioned in last post, I have obtained the exact same matrix element values for those electron-hole transitions compared to the BSE kernel calculations. I feel this should validate the obtained matrix elements are correct.

Since the long-wavelength behavior is important in our simulation, I still want understand what's the role of this line:

Code: Select all

if (iqibz==1) EM1s(1,1)=X_mat(1,1,1)*sqrt(isc%gamp(1,1)/DL_vol/real(q%nbz,SP))
If I understand correctly, it translates into the following math equation and it sets the long-wavelength limit value. Unfortunately, it doesn't look same as the expression I know for screened interaction.
eq.png
I wonder if you know what this line of code does?

PS: do you have any example input for HXC_collisions and how to generate such input directly using Yambo, so that I can adapt it to my case? If it is easy to use also the matrix elements from HXC_collisions, I will try.

Best,
Changpeng
You do not have the required permissions to view the files attached to this post.
Changpeng Lin
Doctoral Assistant, EPFL

clin
Posts: 14
Joined: Fri Sep 17, 2021 10:27 am

Re: A missing factor of 4pi in NEQ_GW of Yambo

Post by clin » Thu Feb 13, 2025 7:17 am

Dear Davide,

I had a look into the subroutine compute_MBPT_XC_collisions you mentioned. To me, the whole procedure looks quite similar to the NEQ_GW calculations. I have one question: why is there no the following line in the subroutine compute_MBPT_XC_collisions?

Code: Select all

forall(i1=1:X%ng) X_mat(i1,i1,1)=X_mat(i1,i1,1)+1._SP
This line does exist in NEQ_GW calculations. The dielectric matrix elements stored in ndb.em1s_* database only contain the v * \chi part, right? If so, a one should be added to the diagonal dielectric matrix elements.

Also I find the line in NEQ_GW that I have doubt does not exist in compute_MBPT_XC_collisions. It seems to make sense to remove that line in NEQ_GW calculations.

Thanks a lot,
Changpeng
Changpeng Lin
Doctoral Assistant, EPFL

Post Reply