Frequency dependent tddft kernel calculation in Yambo 5.1.1

Deals with issues related to computation of optical spectra in reciprocal space: RPA, TDDFT, local field effects.

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

Post Reply
hongtang2023
Posts: 45
Joined: Thu Mar 16, 2023 7:02 am

Frequency dependent tddft kernel calculation in Yambo 5.1.1

Post by hongtang2023 » Fri Sep 22, 2023 3:58 am

Dear Yambo masters,

I am using Yambo 5.1.1 and trying to put into a frequency dependent tddft kernel (home made).
I have a basic question about the subroutine TDDFT_ALDA_G_space(E,k).

1. As I understand, the subroutine TDDFT_ALDA_G_space(E,k) is frequency independent. It only calculates the F_xc_gspace(i1,i2,1) for the one frequency point (which is zero). Since F_xc_gspace is allocated as " YAMBO_ALLOC(F_xc_gspace,(FXC_n_g_corr,FXC_n_g_corr,1)) ".
Is this understanding correct?

2. the subroutine TDDFT_ALDA_G_space(E,k) is also q independent. Although we can input different q by using " % QpntsRXd
1 | 1 | # [Xd] Transferred momenta
% " ,
however, subroutine TDDFT_ALDA_G_space(E,k) will calculate and get the same F_xc_gspace(i1,i2,1) for different q.
Is this understanding correct?

3. if I modify subroutine TDDFT_ALDA_G_space(E,k) as subroutine tddft_alda_g_space(E,k,iq,wv) ,
where iq for the index of q, and wv for the frequency. iq is just an integer, for optic calculations, iq=1.

for wv, I use " type(w_samp) :: wv ".
then I do " allocate(F_xc_gspace(FXC_n_g_corr,FXC_n_g_corr,wv%n_freqs)) " to make F_xc_gspace includes all the frequency points.

I understand iq and wv will get values from the subroutine who calls " tddft_alda_g_space(E,k,iq,wv) ". However, in order to be easy to do the calculations for F_xc_gspace in subroutine tddft_alda_g_space(E,k,iq,wv), I read the " % EnRngeXd " and " ETStpsXd= " from the input file, and let the real (not complex) frequency points be calculated in the subroutine tddft_alda_g_space(E,k,iq,wv), then I calculate the F_xc_gspace for each real frequency point in the subroutine tddft_alda_g_space(E,k,iq,wv).

Then, once the call for subroutine tddft_alda_g_space(E,k,iq,wv) is done, I got the needed F_xc_gspace(FXC_n_g_corr,FXC_n_g_corr,wv%n_freqs) for all frequency points.

Then, the rest code will calculate the optic properties (such as eels) with the frequency dependent tddft kernel.

Is the above processing correct?

Please help me!

I appreciate your help very much!


Best,
Hong
Dr. Hong Tang
Tulane University
New Orleans, LA
70118, USA

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

Re: Frequency dependent tddft kernel calculation in Yambo 5.1.1

Post by Davide Sangalli » Fri Sep 22, 2023 2:30 pm

Dear Hong,
I'd say all you wrote is correct.

After you generate your frequency dependent Fxc you just need to change the call inside X_redux, and put the proper frequency index.
You might need to pay attention to the parallelization in case the code is parallelized over frequencies.

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/

Post Reply