# ABINIT, BSE input variables:

## List and description.

This document lists and provides the description of the name (keywords) of the "BSE" input variables to be used in the main input file of the abinit code.

##### Copyright (C) 1998-2017 ABINIT group (DCA,XG,RC,YG,FJ)

### Content of the file : alphabetical list of "BSE" variables.

A.
B. bs_algorithm bs_calctype bs_coulomb_term bs_coupling bs_eh_cutoff bs_exchange_term bs_freq_mesh bs_hayd_term bs_haydock_niter bs_haydock_tol bs_interp_kmult bs_interp_m3_width bs_interp_method bs_interp_mode bs_interp_prep bs_interp_rl_nb bs_loband bs_nstates

bs_algorithm
Mnemonics: Bethe-Salpeter ALGORITHM
Executable: abinit
Mentioned in topic: BSE.
Moderately used: [16/907] in abinit tests, [4/136] in tuto abinit tests. Tuto test list: {tutoparal:[mbt_5],tutorial:[bs_2,bs_3,bs_4]}.
Variable type: integer
Default is 2
Only relevant if optdriver == 99

The bs_algorithm input variable defines the algorithm employed to calculate the macroscopic dielectric function. Possible values are 1, 2 or 3:

- 1 => The macroscopic dielectric is obtained by performing a direct diagonalization of the excitonic Hamiltonian. Advantages: It gives direct access to the excitonic eigenvalues as well as to the oscillator strengths. Drawbacks: It is a very CPU- and memory-consuming approach as the size of the Hamiltonian scales as (nk*nc*nv)**2. where nk is the number of k-point in the FULL Brillouin zone, and nc and nv are the number of conduction and valence states, respectively. Pros: It can be used both for resonant-only and resonant+coupling calculations (non Tamm-Dancoff approximation).
- 2 => Haydock iterative method. The macroscopic dielectric function is obtained by iterative applications of the Hamiltonian on a set of vectors in the electron-hole space. Advantages: It is less memory demanding and usually faster than the direct diagonalization provided that zcut is larger than the typical energy spacing of the eigenvalues. Drawbacks: It is an iterative method therefore the convergence with respect to bs_haydock_niter should be checked. It is not possible to have direct information on the exciton spectrum, oscillator strengths and excitonic wave functions. For the time being bs_algorithm=2 cannot be used for calculations in which the coupling term is included (Tamm-Dancoff approximation).
- 3 => Conjugate-gradient method. This method allows to find the few first excitonic eigenvalues. Only available for resonant calculations (Tamm-Dancoff approximation).

Go to the top | Complete list of input variables

bs_calctype
Mnemonics: Bethe-Salpeter CALCulation TYPE
Executable: abinit
Mentioned in topic: BSE.
Moderately used: [16/907] in abinit tests, [4/136] in tuto abinit tests. Tuto test list: {tutoparal:[mbt_5],tutorial:[bs_2,bs_3,bs_4]}.
Variable type: integer
Default is 1
Only relevant if optdriver == 99

Possible values are 1,2,3.

- 1 => use the KS eigenvalues and wave functions stored in the KSS file to construct the transition space
- 2 => The transition space is constructed with Kohn-Sham orbitals but the energies are read from the external GW file
- 3 => QP amplitudes and energies will be read from the QPS file and used to construct H_ex. Not coded yet because <\psi|r|\psj>^QP should be calculated taking into account the non-locality of the self-energy in the commutator [H,r].

Go to the top | Complete list of input variables

bs_coulomb_term
Mnemonics: Bethe-Salpeter COULOMB TERM
Executable: abinit
Mentioned in topic: BSE.
Moderately used: [16/907] in abinit tests, [4/136] in tuto abinit tests. Tuto test list: {tutoparal:[mbt_5],tutorial:[bs_2,bs_3,bs_4]}.
Variable type: integer
Default is 11
Only relevant if optdriver == 99

This variable governs the choice among the different options that are available for the treatment of Coulomb term of the Bethe-Salpeter Hamiltonian. bs_coulomb_term is the concatenation of two digits, labelled (A) and (B).

The first digit (A) can assume the values 0,1,2:

- 0 => The Coulomb term is not computed. This choice is equivalent to computing the RPA spectrum but using the representation in transition space instead of the more efficient approach based on the sum over states.
- 1 => The Coulomb term is computed using the screened interaction read from an external SCR file (standard excitonic calculation).
- 2 => The Coulomb term is computed using a model screening function (useful for convergence studies or for reproducing published results).

The second digit (B) can assume the values 0,1:

- 0 => Use a diagonal approximation for W_GG' (mainly used for accelerating convergence studies).
- 1 => The Coulomb term is correctly evaluated using the truly non-local W(r,r').

Go to the top | Complete list of input variables

bs_coupling
Mnemonics: Bethe-Salpeter COUPLING
Executable: abinit
Mentioned in topic: BSE.
Moderately used: [16/907] in abinit tests, [4/136] in tuto abinit tests. Tuto test list: {tutoparal:[mbt_5],tutorial:[bs_2,bs_3,bs_4]}.
Variable type: integer
Default is 0
Only relevant if optdriver == 99

The bs_coupling input variable defines the treatment of the coupling block of the Bethe-Salpeter Hamiltonian. Possible values are 0,1.

- 0 => The coupling block is neglected (the so-called Tamm-Dancoff approximation). The code runs faster and the Hamiltonian matrix requires less memory (factor 4). It is a good approximation for the absorption spectrum which only requires the knowledge of Im(\epsilon). The reliability of this approximation should be tested in the case of EELF calculations.
- 1 => The coupling term is included (non Tamm-Dancoff approxmation).

Go to the top | Complete list of input variables

bs_eh_cutoff
Mnemonics: Bethe-Salpeter Electron-Hole CUTOFF
Executable: abinit
Mentioned in topic: BSE.
Rarely used: [0/907] in abinit tests, [0/136] in tuto abinit tests.
Variable type: integer(2)
Default is [-inf, inf]
Only relevant if optdriver == 99

It is used to define a cutoff in the e-h basis set. Only those transitions whose energy is between bs_eh_window(1) and bs_eh_window(2) will be considered during the construction of the e-h Hamiltonian.

Go to the top | Complete list of input variables

bs_exchange_term
Mnemonics: Bethe-Salpeter EXCHANGE TERM
Executable: abinit
Mentioned in topic: BSE.
Moderately used: [16/907] in abinit tests, [4/136] in tuto abinit tests. Tuto test list: {tutoparal:[mbt_5],tutorial:[bs_2,bs_3,bs_4]}.
Variable type: integer
Default is 1
Only relevant if optdriver == 99

- 0 =>The exchange term is not calculated. This is equivalent to neglecting local field effects in the macroscopic dielectric function.
- 1 =>The exchange term is calculated and added to the excitonic Hamiltonian.

Go to the top | Complete list of input variables

bs_freq_mesh
Mnemonics: Bethe-Salpeter FREQuency MESH
Executable: abinit
Characteristic: ENERGY
Mentioned in topic: BSE.
Moderately used: [15/907] in abinit tests, [4/136] in tuto abinit tests. Tuto test list: {tutoparal:[mbt_5],tutorial:[bs_2,bs_3,bs_4]}.
Variable type: real(3)
Default is [0.0, 0.0, 0.01]
Only relevant if optdriver == 99

bs_freq_mesh(1) defines the first frequency for the calculation of the macroscopic dielectric function.

bs_freq_mesh(2) gives the last frequency for the calculation of the macroscopic dielectric function. If zero, bs_freq_mesh(2) is set automatically to MAX(resonant_energy) + 10%.

bs_freq_mesh(3) gives the step of the linear mesh used for evaluating the macroscopic dielectric function.

Go to the top | Complete list of input variables

bs_hayd_term
Mnemonics: Bethe-Salpeter HAYdock TERMinator
Executable: abinit
Mentioned in topic: BSE.
Rarely used: [7/907] in abinit tests, [0/136] in tuto abinit tests. Test list: {v67mbpt:[11,14,31,32,33,34,35]}.
Variable type: integer
Default is 1
Only relevant if optdriver == 99 and bs_algorithm==2

Defines how to terminate the continued fraction expression for the dielectric function. The terminator reduces the number of iterations needed to converge by smoothing the oscillation in the high energy part of the spectrum

- 0 => No terminator. The contribution given by the terms missing in the Lanczos chain are set to zero.
- 1 => Use the terminator function. The particular expression depends on the type of calculation: In the resonant-only case, the a_i and b_i coefficients for i > niter, are replaced by their values at i=niter. Even the coupling block is included, the terminator function described in D. Rocca, R. Gebauer, Y. Saad, S. Baroni, J. Chem. Phys. 128, 154105 (2008) is used.

Go to the top | Complete list of input variables

bs_haydock_niter
Mnemonics: Bethe-Salpeter HAYDOCK Number of ITERations
Executable: abinit
Mentioned in topic: BSE.
Moderately used: [13/907] in abinit tests, [4/136] in tuto abinit tests. Tuto test list: {tutoparal:[mbt_5],tutorial:[bs_2,bs_3,bs_4]}.
Variable type: integer
Default is 100
Only relevant if optdriver == 99 and bs_algorithm==2

bs_haydock_niter defines the maximum number of iterations used to calculate the macroscopic dielectric function. The iterative algorithm stops when the difference between two consecutive evaluations of the optical spectra is less than bs_haydock_tol.

Go to the top | Complete list of input variables

bs_haydock_tol
Mnemonics: Bethe-Salpeter HAYDOCK TOLerance
Executable: abinit
Mentioned in topic: BSE.
Moderately used: [11/907] in abinit tests, [4/136] in tuto abinit tests. Tuto test list: {tutoparal:[mbt_5],tutorial:[bs_2,bs_3,bs_4]}.
Variable type: real(2)
Default is [0.02, 0]
Only relevant if optdriver == 99 and bs_algorithm==2

Defines the convergence criterion for the Haydock iterative method. The iterative algorithm stops when the difference between two consecutive evaluations of the macroscopic dielectric function is less than bs_haydock_tol(1) . The sign of bs_haydock_tol(1) defines how to estimate the convergence error. A negative value signals that the converge should be reached for each frequency (strict criterion), while a positive value indicates that the converge error is estimated by averaging over the entire frequency range (mild criterion).

bs_haydock_tol(2) defines the quantity that will be checked for convergence:

- 0 → both the real and the imaginary part must converge
- 1 → only the real part
- 2 → only the imaginary part

Go to the top | Complete list of input variables

bs_interp_kmult
Mnemonics: Bethe-Salpeter INTERPolation K-point MULTiplication factors
Executable: abinit
Mentioned in topic: BSE.
Rarely used: [4/907] in abinit tests, [0/136] in tuto abinit tests. Test list: {v67mbpt:[32,33,34,35]}.
Variable type: integer(3)
Default is [0, 0, 0]
Only relevant if bs_interp_mode > 0 and bs_algorithm==2 and bs_coupling==0

bs_interp_kmult defines the number of divisions used to generate the dense mesh in the interpolation. ngkpt of the dense mesh = bs_interp_kmult(:) * ngkpt of the coarse mesh.

Go to the top | Complete list of input variables

bs_interp_m3_width
Mnemonics: Bethe-Salpeter INTERPolation Method3 WIDTH
Executable: abinit
Mentioned in topic: BSE.
Rarely used: [1/907] in abinit tests, [0/136] in tuto abinit tests. Test list: {v67mbpt:[34]}.
Variable type: real
Default is 1.0
Only relevant if bs_interp_mode==3 and bs_algorithm==2 and bs_coupling==0

Defines the width of the region where divergence treatment is applied for BSE interpolation

Go to the top | Complete list of input variables

bs_interp_method
Mnemonics: Bethe-Salpeter INTERPolation METHOD
Executable: abinit
Mentioned in topic: BSE.
Rarely used: [4/907] in abinit tests, [0/136] in tuto abinit tests. Test list: {v67mbpt:[32,33,34,35]}.
Variable type: integer
Default is 1
Only relevant if bs_interp_mode > 0 and bs_algorithm==2 and bs_coupling==0

bs_interp_method selects the method of interpolation:

- 0 => Interpolate using Y. Gillet technique with 8 neighbours (see Comput. Phys. Commun. 203, 83 (2016))
- 1 => Interpolation using Rohlfing & Louie technique (see above-mentioned article and Phys. Rev. B 62, 4927 (2000))

Go to the top | Complete list of input variables

bs_interp_mode
Mnemonics: Bethe-Salpeter INTERPolation MODE
Executable: abinit
Mentioned in topic: BSE.
Rarely used: [4/907] in abinit tests, [0/136] in tuto abinit tests. Test list: {v67mbpt:[32,33,34,35]}.
Variable type: integer
Default is 0
Only relevant if bs_interp_mode > 0 and bs_algorithm==2 and bs_coupling==0

bs_interp_mode selects the mode of interpolation:

- 0 => No interpolation. Standard Bethe-Salpeter computation is performed
- 1 => Simple interpolation
- 2 => Treatment of the divergence on the whole set of dense k-points
- 3 => Treatment of the divergence along the diagonal in k-space and simple interpolation elsewhere.

Go to the top | Complete list of input variables

bs_interp_prep
Mnemonics: Bethe-Salpeter INTERPolation PREParation
Executable: abinit
Mentioned in topic: BSE.
Rarely used: [1/907] in abinit tests, [0/136] in tuto abinit tests. Test list: {v67mbpt:[31]}.
Variable type: integer
Default is 0
Only relevant if bs_interp_mode > 0 and bs_algorithm==2 and bs_coupling==0

bs_interp_prep allows to trigger the preparation of the interpolation with method 2 or method 3. It generates the decomposition of BSR in a,b,c coefficients used for the interpolation.

Go to the top | Complete list of input variables

bs_interp_rl_nb
Mnemonics: Bethe-Salpeter INTERPolation Rohlfing & Louie NeighBour
Executable: abinit
Mentioned in topic: BSE.
Rarely used: [1/907] in abinit tests, [0/136] in tuto abinit tests. Test list: {v67mbpt:[35]}.
Variable type: integer
Default is 1
Only relevant if bs_interp_mode > 0 and bs_algorithm==2 and bs_interp_method == 1 and bs_coupling==0

Gives the index of the neighbour that is used for Rohlfing & Louie method

Go to the top | Complete list of input variables

bs_loband
Mnemonics: Bethe-Salpeter Lowest Occupied BAND
Executable: abinit
Mentioned in topic: BSE.
Moderately used: [16/907] in abinit tests, [4/136] in tuto abinit tests. Tuto test list: {tutoparal:[mbt_5],tutorial:[bs_2,bs_3,bs_4]}.
Variable type: integer(nsppol)
Default is 0
Only relevant if optdriver == 99

This variable defines the index of the lowest occupied band used for the construction of the electron-hole basis set. For spin polarized calculations, one must provide two separated indices for spin up and spin down. An additional cutoff energy can be applied by means of the bs_eh_window input variable.

Go to the top | Complete list of input variables

bs_nstates
Mnemonics: Bethe-Salpeter Number of STATES
Executable: abinit
Mentioned in topic: BSE.
Rarely used: [4/907] in abinit tests, [0/136] in tuto abinit tests. Test list: {v67mbpt:[11,16,29,50]}.
Variable type: integer
Default is 0
Only relevant if optdriver == 99 and bs_algorithm in [2,3]

bs_nstates defines the maximum number of excitonic states calculated in the direct diagonalization of the excitonic matrix or in the conjugate-gradient method. The number of states should be sufficiently large for a correct description of the optical properties in the frequency range of interest.

Go to the top | Complete list of input variables