3.29 TDDFT - linear response

In FHI-aims, linear-response time-dependent density-functional theory (LR-TDDFT), i.e., Casida’s equation, is implemented for non-periodic systems. Currently, the adiabatic LDA fxc kernel is supported and can be combined with different ground-state density functionals. Serial calculations can be carried out using linear-response time-dependent Hartree-Fock theory (LR-TDHF).

The original author of this functionality is Jan Kloppenburg, with significant help from Heiko Appel. The method, as well as reference data, benchmarks and basis sets, are published in Ref. [201] Please cite this reference when using the functionality.

Theory

The goal is to calculate excitation energies ωI and corresponding oscillator strengths fI from

𝛀𝐅I=ωI2𝐅I. (3.105)

Linear response theory (see [52]) is the basis for this calculation. We construct

𝛀ias,jbt=δi,jδa,bδs,t(ϵaϵi)2+2ϵasϵis𝐊ias,jbtϵbtϵjt (3.106)

with the coupling kernel

𝐊ias,jbt=φi(𝐫)φa(𝐫)[1|𝐫𝐫|+fxc(𝐫,𝐫)]φj(𝐫)φb(𝐫)𝑑𝐫𝑑𝐫. (3.107)

In this notation I refer with the indices i,j to occupied and with a,b to virtual orbitals, while s and t denote the spin. The input energies ϵ are obtained from either ground state Hartree-Fock or DFT calculations. Going by this rule we contruct the matrix 𝛀 which then is solved for eigenvalues and eigenvectors. The excitation energies ωI then follow from From the eigenvectors 𝐅I the oscillator strengths fI can be obtained from

fI=23ωI[|Ψ0|𝐗^|ΨI|2+|Ψ0|𝐘^|ΨI|2+|Ψ0|𝐙^|ΨI|2], (3.108)

with the 𝐗^ being the spatial operator for the X direction and the others respectively with Ψ0 being the all electron ground state wave function and ΨI being the all electron excited state wave function for the state I with excitation energy ωI.

For the TDHF calculation mode, the kernel 𝐊ias,jbt is modified to become

𝐊ias,jbt=(ias|jbt)+δs,t(ij|ab) (3.109)

that has only the bare Coulomb part (ia|jb) and the exact exchange part (ij|ab) from Hartree-Fock theory. This Hartree-Fock Kernel creates a non-Hermitian matrix 𝛀. Please not that this calculation mode is as yet only available for single processor runs due to the lack of a non-Hermitian parallel eigenvalue solver.

Available Kernels and libxc

As of now, only the pw-lda fxc kernel is available for TDDFT calculation in aims, as well as other LDA lernels from libxc [194]. 22 2 http://libxc.gitlab.io Additionally, for the full TDDFT calculation it is possible to choose functionals at will that are available from this libxc. Importantly, the initial DFT calculation that generates the input energies ϵ for 3.107 is not restricted to only the same XC functional as the subsequent LR-TDDFT calculation. Different ground state functionals can be employed, though we recommend careful benchmarking for any new combination. For example, it might come in handy to be able to mix different hybrid functionals or do a DFT ground state calculation with a functional that does not provide an fxc kernel and still be able to perform a TDDFT calculation on top of that using the supported LR-TDDFT fxc kernel.

Basis sets for LR-TDDFT

Reference [201] provides extensive benchmarks, identifying basis sets that are applicable both to LR-TDDFT and BSE@GW calculations for molecules in FHI-aims.

In particular, for light-element molecules, we recommend the “tier2+aug2” basis sets, currently found in:

species_defaults/non-standard/Tier2_aug2

for these calculations.

Tags for general section of control.in

 

Tag: neutral_excitation(control.in)

Usage: neutral_excitation type
Purpose: Triggers the calculation of neutral excitations.
type: String that defines the type of calculation to be performed.

  • tddft: Full TDDFT calculation

  • tdhf: Full TDHF calculation (Kernel from 3.109, serial CPU only)

  • rpa: random phase approximation only (set fxc=0 in 3.107)

With the keyword neutral_excitation the user can specify the calculation mode for the linear response theory.
Also the keyword empty_states should be set to 1000, or the keyword calculate_all_eigenstates should be used, to make sure the code generates all possible empty states provided from the basis set. This number will also be reduced automatically by the code to the maximum number that can be generated from the basis set.

 

Tag: tddft_kernel(control.in)

Usage: tddft_kernel string
Purpose: Specify the origin of the TDDFT kernel for 3.107
string: pw-lda/pz-lda or libxc

Both pw-lda or pz-lda are built-in options in FHI-aims. They are equivalent to the keywords defined in xc.
When using libxc, one must specify the desired kernels through keywords tddft_x and tddft_c. Note that libxc is only possible when the user has compiled aims with libxc binding.

 

Tag: tddft_x(control.in)

Usage: tddft_x string
Purpose: Set the desired exchange kernel to use from libxc. The definition is from libxc’s manual and can be found at the libxc33 3 https://libxc.gitlab.io website.
string: The name of the selected exchange functional, i.e. XC_LDA_X

 

Tag: tddft_c(control.in)

Usage: tddft_c string
Purpose: Set the desired correlation kernel to use from libxc. The definition is from libxc’s manual and can be found at the libxc website as well.
string: The name of the selected correlation functional, i.e. XC_LDA_C_PW

 

Tag: excited_mode(control.in)

Usage: excited_mode string
Purpose: Select which excitations will be calculated.
string: one of {singlet|triplet|both}. To calculate both singlets and triplets is set as the default when this keyword is omitted.

 

Tag: excited_states(control.in)

Usage: excited_states n
Purpose: Specify the number of excited state energies and oscillator strengths to be printed.
n: Integer number 𝚗,𝚗0

With the keyword excited_states the user can specify the number of excited states that will be printed in the output. The default for this is 50 if there are that many. Normal production runs will generally have many more (depending on the basis set and the number of electrons involved) that can easily reach beyond 10000. So to avoid a really huge output from this routine this defaut is set rather low. Feel free to choose any number of your liking, if it should be too large it will automatically be defaulting to all excited states. At the end of a calculation the file TDDFT_LR_Spectrum_(singlet/triplet).dat will be written into the directory the FHI-aims program was run in. It contains all computed excitation energies and the corresponding oscillator strengths.

 

Tag: casida_reduce_matrix(control.in)

Usage: casida_reduce_matrix boolean
Purpose: Set to .true. if you want to reduce the energy range for the Kohn-Sham eigenvalues to be included in the computation.
boolean: .true. or .false.

 

Tag: casida_reduce_occ(control.in)

Usage: casida_reduce_occ x
Purpose: Specify the energy in Hartree below which the occupied states are cut off.
x: Cutoff energy in Hartree

 

Tag: casida_reduce_unocc(control.in)

Usage: casida_reduce_unocc x
Purpose: Specify the energy in Hartree above which the virtual states are cut off.
x: Cutoff energy in Hartree