Page 1 of 1

TDDFT with hybrid functional

Posted: Wed Feb 26, 2025 3:46 am
by Shimin
Dear developers,

I am running the TDDFT with ALDA kernel upon the PBE0 functional. I try to run the calculation in both reciprocal space with linear response method, and in transition space.

My first question is does my input generating the two method equilibrium?

For the transition space i generate the input with

Code: Select all

yambo -F tddft.in -Q -optics b -kernel alda -Ksolver d -V par
, and this give me input:

Code: Select all

#                                                                     
#                                                                     
# Y88b    /   e           e    e      888~~\    ,88~-_                
#  Y88b  /   d8b         d8b  d8b     888   |  d888   \               
#   Y88b/   /Y88b       d888bdY88b    888 _/  88888    |              
#    Y8Y   /  Y88b     / Y88Y Y888b   888  \  88888    |              
#     Y   /____Y88b   /   YY   Y888b  888   |  Y888   /               
#    /   /      Y88b /          Y888b 888__/    `88_-~                
#                                                                     
#                                                                     
# Version 5.1.0 Revision 22561 Hash (prev commit) 785b4fd6f           
#                     Branch is 5.2                                   
#                 MPI+HDF5_MPI_IO Build                               
#               http://www.yambo-code.org                             
#
optics                           # [R] Linear Response optical properties
bss                              # [R] BSE solver
bse                              # [R][BSE] Bethe Salpeter Equation.
tddft                            # [R][K] Use TDDFT kernel
FFTGvecs= 30           Ry
NLogCPUs=0                       # [PARALLEL] Live-timing CPU`s (0 for all)
PAR_def_mode= "balanced"         # [PARALLEL] Default distribution mode ("balanced"/"memory"/"workload"/"KQmemory")
BS_CPU= ""                       # [PARALLEL] CPUs for each role
BS_ROLEs= ""                     # [PARALLEL] CPUs roles (k,eh,t)
BS_nCPU_LinAlg_INV=-1            # [PARALLEL] CPUs for Linear Algebra (if -1 it is automatically set)
BS_nCPU_LinAlg_DIAGO=-1          # [PARALLEL] CPUs for Linear Algebra (if -1 it is automatically set)
DIP_CPU= ""                      # [PARALLEL] CPUs for each role
DIP_ROLEs= ""                    # [PARALLEL] CPUs roles (k,c,v)
BSKmod= "ALDA"                   # [BSE] IP/Hartree/HF/ALDA/SEX/BSfxc
BSEmod= "resonant"               # [BSE] resonant/retarded/coupling
BSSmod= "d"                      # [BSS] (h)aydock/(d)iagonalization/(s)lepc/(i)nversion/(t)ddft`
BSENGexx= 30          Ry    # [BSK] Exchange components
BSENGBlk=5                Ry    # [BSK] Screened interaction block size [if -1 uses all the G-vectors of W(q,G,Gp)]
#WehCpl                        # [BSK] eh interaction included also in coupling
% BSEQptR
 1 | 1 |                             # [BSK] Transferred momenta range
%
% BSEBands
    1200 | 1280 |                       # [BSK] Bands range
%
% BEnRange
  0.00000 | 6.00000 |         eV    # [BSS] Energy range
%
% BDmRange
 0.020000 | 0.0200000 |         eV    # [BSS] Damping range
%
BEnSteps= 6000                    # [BSS] Energy steps
% BLongDir
 1.000000 | 0.000000 | 0.000000 |        # [BSS] [cc] Electric Field
%
BSEprop= "abs"                   # [BSS] Can be any among abs/jdos/kerr/magn/dich/photolum/esrt
BSEdips= "none"                  # [BSS] Can be "trace/none" or "xy/xz/yz" to define off-diagonal rotation plane
WRbsWF                        # [BSS] Write to disk excitonic the WFs

For the reciprocal space method i generate the input with

Code: Select all

$YAMDIR/yambo -F tddft.in -Q -o c -k alda d -V par
, and this give me:

Code: Select all

#                                                                     
# :   :::   :::     ::::    ::::  :::::::::   ::::::::                
# :+:   :+: :+: :+:   +:+:+: :+:+:+ :+:    :+: :+:    :+              
#  +:+ +:+ +:+   +:+  +:+ +:+:+ +:+ +:+    +:+ +:+    +:+             
#   +#++: +#++:++#++: +#+  +:+  +#+ +#++:++#+  +#+    +:+             
#    +#+  +#+     +#+ +#+       +#+ +#+    +#+ +#+    +#+             
#    #+#  #+#     #+# #+#       #+# #+#    #+# #+#    #+#             
#    ###  ###     ### ###       ### #########   ########              
#                                                                     
#                                                                     
# Version 5.1.0 Revision 22561 Hash (prev commit) 785b4fd6f           
#                      Branch is 5.2                                  
#                  MPI+HDF5_MPI_IO Build                              
#                http://www.yambo-code.org                            
#
optics                           # [R] Linear Response optical properties
chi                              # [R][CHI] Dyson equation for Chi.
tddft                            # [R][K] Use TDDFT kernel
NLogCPUs=0                       # [PARALLEL] Live-timing CPU`s (0 for all)
PAR_def_mode= "balanced"         # [PARALLEL] Default distribution mode ("balanced"/"memory"/"workload"/"KQmemory")
X_CPU= ""                        # [PARALLEL] CPUs for each role
X_ROLEs= ""                      # [PARALLEL] CPUs roles (q,g,k,c,v)
X_nCPU_LinAlg_INV=-1             # [PARALLEL] CPUs for Linear Algebra (if -1 it is automatically set)
Chimod= "ALDA"                   # [X] IP/Hartree/ALDA/LRC/PF/BSfxc
FFTGvecs= 30 Ry
FxcGRLc= 7                 Ry    # [TDDFT] XC-kernel RL size
NGsBlkXd= 5                Ry    # [Xd] Response block size
% QpntsRXd
 1 | 1 |                             # [Xd] Transferred momenta
%
% BndsRnXd
    1 | 3000 |                       # [Xd] Polarization function bands
%
% EnRngeXd
  0.00000 | 5.00000 |         eV    # [Xd] Energy range
%
% DmRngeXd
 0.0200000 | 0.0200000 |         eV    # [Xd] Damping range
%
ETStpsXd= 5000                    # [Xd] Total Energy steps
% LongDrXd
 1.000000 | 0.000000 | 0.000000 |        # [Xd] [cc] Electric Field
%
~                     
I notice that the reciprocal space is way more expensive than the transition space calculation, especially in memory cost. Is this normal?

My second question is that does the LADA kernel have the hybrid functional correction? I know it use the wave function from hybrid function, but does it have the hybrid kernel?

Best,
Shimin

Re: TDDFT with hybrid functional

Posted: Wed Feb 26, 2025 7:29 am
by Daniele Varsano
Dear Shimin,

The first input files seem correct.
In the transition space you have variables as BSENGBlk that are not used and probably appear because of previously genereated input.
I notice that the reciprocal space is way more expensive than the transition space calculation, especially in memory cost. Is this normal?
In general, in transition space is faster, but if you need many bands you can face problems in diagonalizing huge matrixes.

Please note anyway that your inputs are not equivalents, in e-h space you are including 80 bands while in G space 3000. Also, the G vectors in the Hartree part are different and so on...
My second question is that does the LADA kernel have the hybrid functional correction?
If you refer to ALDA, the answer is no, it is the Adiabatic Local Density Approximation.

Best,

Daniele

Re: TDDFT with hybrid functional

Posted: Wed Feb 26, 2025 9:53 pm
by Shimin
Dear Daniele,

Thank you for the response. But i am still confused about the relationship between these two approaches.

The BndsRnXd is defined in the Linear response (IP/RPA-NLF) in Yambo cheatsheet https://wiki.yambo-code.eu/wiki/images/ ... et-5.0.pdf , and it is used for constructing the dielectric matrix . This parameter is not appear in the TDDFT equation in the cheatsheet
AAA.png
.

My first question regarding BndsRnXd is that: where does it enter the TDDFT equation? Is it the c,v summation in chi_0 ?

On the other hand, BSEBands is defined in the BSE Hamiltonian. From what i understand, I shouldn't set it to be the same as BndsRnXd because they are completely different thing. The BndsRnXd should include bands from 1 to certain amount of unoccupied band, while BSEBands only need to include unoccupied and occupied band around the band gap. Is that correct?

The third question is that, i am trying to write the TDDFT equation solved in transition space: Is there any reference for the RPA or TDDFT solved in BSE formalism ?
BBB.png

Best,
Shimin

Re: TDDFT with hybrid functional

Posted: Thu Feb 27, 2025 3:56 pm
by Daniele Varsano
Dear Shimin,

1) BndsRnXd controls the number of bands entering in the Xo construction (nm) in Eq.1 of the Yambo paper: Sangalli et al. J. Phys.: Condens. Matter 31 325902 2019.

2)
On the other hand, BSEBands is defined in the BSE Hamiltonian. From what i understand, I shouldn't set it to be the same as BndsRnXd because they are completely different thing. The BndsRnXd should include bands from 1 to certain amount of unoccupied band, while BSEBands only need to include unoccupied and occupied band around the band gap. Is that correct?
Yes, It is a change in the basis set. If you are interested in the low energy spectrum, you can include bands across the gap until convergence.

3)
The third question is that, i am trying to write the TDDFT equation solved in transition space: Is there any reference for the RPA or TDDFT solved in BSE formalism ?
This is implemented in Yambo. For RPA you need to consider only the exchange part in the BSE matrix, TDDFT will include also the ALDA kernel projected on (cv,c'v') space, and it is calculated in real space. The ALDA kernel is defined e.g. here:
https://wiki.yambo-code.eu/wiki/index.p ... rd_kernel).
If you want, this is the Casida formalism of the TDDFT.

Best,

Daniele