Bethe-Salpeter-equations calculations: Difference between revisions

From VASP Wiki
No edit summary
No edit summary
Line 1: Line 1:
VASP offers a powerful module for solving time-dependent DFT (TD-DFT) and
time-dependent Hartree-Fock equations (TDHF) (the Casida equation) or the
Bethe-Salpeter (BSE) equation{{cite|albrecht:prl:98}}{{cite|rohlfing:prl:98}}.
These approaches are used for obtaining the frequency-dependent dielectric
function with the excitonic effects and can be based on the ground-state electronic
structure in the DFT, hybrid-functional or GW approximations. 
__TOC__
__TOC__


== Bethe Salpeter and Casida equations: a first look ==
== Solving Bethe-Salpeter and Casida equations ==
To take into account the excitonic effects or the electron-hole interaction,
one has to use approximations beyond the independent-particle (IP) and the
random-phase approximations (RPA). In VASP, it is done via the algorithm selected
by {{TAG|ALGO}}=BSE or {{TAG|ALGO}}=TDHF, which essentially solves the same equations
(Casida/Bethe-Salpeter) but mainly differ in the
way the screening of the Coulomb potential is treated. The TDHF approach uses
the exact-correlation kernel <math>f_{\rm xc}</math>, whereas BSE requires the
<math>W(\omega \to 0)</math> from a preceding GW calculation. Thus, in order to
perform  TDHF or BSE calculations, one has to provide the ground-state
wavefunctions ({{FILE|WAVECAR}}) and the derivatives of the orbitals with
respect to <math>k</math> ({{FILE|WAVEDER}}). In addition, the BSE calculation
requires files storing the screened Coulomb kernel produced in a GW calculation,
i.e. {{FILE|WXXXX.tmp}}.
 
Both TDHF and BSE approaches require a preceding ground-state calculation,
however, the TDHF does not need the preceding GW and can be
performed with the DFT or hybrid-functional orbitals and energies.
 
== Time-dependent Hartree-Fock ==
The TDHF calculations can be performed in two steps: the ground-state
calculation and the optical absorption calculation. For example, optical
absorption of bulk Si can be performed with a hybrid-functional electronic
structure, where the number of bands is increased to include the relevant
conduction bands:


{{TAG|System}}    = Si
{{TAG|ISMEAR}}    = 0
{{TAG|SIGMA}}    = 0.05
{{TAG|NBANDS}}    = 16      ! or any larger desired value
{{TAG|ALGO}}      = D      ! Damped algorithm often required for HF type calculations, {{TAG|ALGO}} = Normal might work as well
{{TAG|LHFCALC}}  = .TRUE.
{{TAG|AEXX}}      = 0.3
{{TAG|HFSCREEN}}  = 0.2
{{TAG|LOPTICS}}  = .TRUE.  ! can also be done in an additional intermediate step


VASP offers a powerful module for solving time-dependent DFT (TD-DFT) and time-dependent Hartree-Fock equations (TDHF) (by solving the Casida equation) or the Bethe-Salpeter<ref name="albrecht1998"/><ref name="rohlfing1998"/> BSE equation. The routines determine the optical response function (i.e. frequency dependent dielectric function) including excitonic effects on top of standard DFT calculations, [[:Category:Hybrids|hybrid functionals]] or the GW.
In the second step, the dielectric function is evaluated by solving the Casida equation
We will first introduce a typical calculation steps for timedependent DFT
and then report on the required flags in more detail.


To calculate spectra beyond the independent particle approximation and beyond the random phase approximation (RPA) the flag {{TAG|ALGO}} needs to be set to {{TAG|ALGO}}=''TDHF'' or {{TAG|ALGO}}=''BSE''. Internally {{TAG|ALGO}}=''TDHF'' and {{TAG|ALGO}}=''BSE'' use identical routines to calculate  the frequency dependent dielectric function (essentially
{{TAG|System}}   = Si
the Casida equations), however, the electron-hole ladder diagrams are either approximated by the the exchange correlation kernel <math>f_{xc}</math>, exact exchange, or by screened exchange <math>W(\omega\to 0)</math> calculated in a preceding GW calculations.
{{TAG|ISMEAR}}   = 0
{{TAG|SIGMA}}     = 0.05
{{TAG|NBANDS}}    = 16   
{{TAG|ALGO}}     = TDHF
{{TAG|AEXX}}     = 0.3
  {{TAG|HFSCREEN}} = 0.2


The first case, {{TAG|ALGO}}=''TDHF'' is simpler. The calculations need to be done in two steps. The first step is a standard DFT or hybrid functional calculation, where the number of bands is increased to include the relevant conduction bands in the calculation:
THDF/BSE calculations can be performed for non-spin-polarized, spin-polarized,
as well as noncollinear (spin-orbit) cases. There is, however, one caveat. The
local exchange-correlation kernel is approximated by the density-density part
only. This makes predictions for spin-polarized systems less accurate than for
non-spin-polarized systems.


{{TAGBL|System}}  = Si
== Time-dependent DFT ==
{{TAGBL|NBANDS}} = 16 ! or any larger desired value
Within the TD-DFT approximation, the Fock exchange is not included in the exchange-correlation
{{TAGBL|ISMEAR}} = 0 ; {{TAGBL|SIGMA}} = 0.05
kernel and the ladder diagrams are not taken into account. Hence, only the local
{{TAGBL|ALGO}} = D  ! Damped algorithm often required for HF type calculations, ALGO = Normal might work as well
contributions in <math>f_{\rm xc}</math> are present
{{TAGBL|LHFCALC}} = .TRUE. ; {{TAGBL|AEXX}} = 0.3 ; {{TAGBL|HFSCREEN}} = 0.2
{{TAGBL|LOPTICS}} = .TRUE. ! can also be done in an additional intermediate step


If course, it is also possible to start from a standard DFT calculations, by omitting the entire
{{TAG|System}}    = Si
line starting with {{TAG|LHFCALC}} (in that case, of course {{TAGBL|ALGO}} = NORMAL can be used).
{{TAG|ISMEAR}}    = 0
In the second step, the dielectric function is evaluated by solving the Casida equation
{{TAG|SIGMA}}    = 0.05
{{TAG|NBANDS}}   = 16   
  {{TAG|ALGO}}     = TDHF
{{TAG|LFXC}}      = .TRUE.
{{TAG|AEXX}}      = 0.0
 
Since the ladder diagrams are not included in the TD-DFT calculation,  
the resulting dielectric function lacks the excitonic effects.
{{NB|warning| Currently, in the local <math>f_{\rm xc}</math>, the correlation contribution is not taken into account and only the exchange terms are included in the LDA approximation.|}}


{{TAGBL|System}}  = Si
== Bethe-Salpeter equation ==
{{TAGBL|NBANDS}} = 16
The BSE calculations require a preceding GW step to determine the screened
{{TAGBL|ISMEAR}} = 0 ; {{TAGBL|SIGMA}} = 0.05
Coulomb kernel <math>W_{GG'}(q,\omega \to 0 )</math>. The details on GW
{{TAGBL|ALGO}} = TDHF
calculations can be found in the practical guide to GW calculations. Here, we
{{TAGBL|LHFCALC}} = .TRUE. ; {{TAGBL|AEXX}} = 0.3 ; {{TAGBL|HFSCREEN}} = 0.2
note that during the GW calculation, VASP writes this kernel into the following
files


In this case the exchange kernel, as selected in the fifth line, should be identical to the previous ground state calculations (if the ground state calculation was not including exact exchange, again omit that line). The present implementation can be used for non spin-polarized, spin-polarized, as well as non-collinear (spin-orbit) cases. There is, however, one caveat. The local exchange-correlation kernel is not exactly included and approximated by the density-density part only. This makes predictions for spin polarized systems less accurate then for non-spin polarized systems.
W0001.tmp, W0002.tmp, ..., W{NKPTS}.tmp


To summarize, {{TAGBL|ALGO}} = TDHF allows to calculate the frequency dependent response function
and  
after a corresponding ground state calculation. This is done by solving the Casida equation.
Compared to {{TAG|LOPTICS}}=.TRUE., these calculations go beyond the independent particle
approximation and include exchange correlation effects.


WFULL0001.tmp, WFULL0002.tmp, ..., WFULL{NKPTS}.tmp.


The second case, {{TAG|ALGO}}=''BSE'' is in general more accurate, but requires a preceding GW step (GW+BSE) to determine the screened Coulomb kernel <math>W_{GG'}(q,\omega \to 0 )</math>. To this end, VASP writes this kernel into the following files during the GW run
The files {{FILE|W000?}}.tmp store only the diagonal terms of the kernel and are
fairly small, whereas the files {{TAG|WFULL000}}?.tmp store the full matrix. It
is important to make sure in the GW step that the flag {{TAG|LWAVE}} = .TRUE.
is set, so that the {{FILE|WAVECAR}} stores the one-electron GW energies and the
one-electron orbitals, if the GW calculation is self-consistent.


W0001.tmp, W0002.tmp, W0003.tmp, ...
For the self-consistent GW calculations the following flags should be added


and
{{TAG|LOPTICS}}  = .TRUE.
{{TAG|LPEAD}}    = .TRUE.


WFULL0001.tmp, WFULL0002.tmp, WFULL0003.tmp, ...
in order to update the {{FILE|WAVEDER}} using finite differences ({{TAG|LPEAD}}
= .TRUE.). The type of GW calculation is selected with the {{TAG|ALGO}} tag,
which is discussed in great detail in  the practical guide to GW calculations.


The files {{TAG|W000}}?.tmp store only the diagonal elements of the kernel and are fairly small, whereas the files {{TAG|WFULL000}}?.tmp store the full matrix (the integer corresponds to the q-point index). A GW calculation in VASP consists of two steps.
Once the GW step is completed, the BSE calculation can be performed using the following setup
The first one is a self-consistent DFT step similar to above but with significantly more bands, e.g.


  {{TAGBL|System}} = Si
  {{TAG|System}}   = Si
  {{TAGBL|NBANDS}} = 64  ! large number of bands
  {{TAG|NBANDS}}   = same as in GW calculation
  {{TAGBL|ISMEAR}} = 0 ; {{TAGBL|SIGMA}} = 0.05
  {{TAG|ISMEAR}}   = 0
  {{TAGBL|ALGO}} = Exact ! exact diagonalization
{{TAG|SIGMA}}     = 0.05
  {{TAGBL|LOPTICS}} = .TRUE. ! write derivative of wavefunction
  {{TAG|ALGO}}     = BSE
{{TAG|NBANDSO}}  = 4      ! determines how many occupied bands are used
  {{TAG|NBANDSV}}   = 8      ! determines how many unoccupied (virtual) bands are used
{{TAG|OMEGAMAX}}  = maximum excitation energy


After the {{TAG|WAVECAR}} and {{TAG|WAVEDER}} files are written the actual GW calculation can be executed with
Considering that quasiparticle energies in GW converge very slowly with the
number of unoccupied bands and require large {{TAG|NBANDS}}, the number of bands
included in the BSE calculation should be restricted explicitly by setting the
occupied and unoccupied bands ({{TAG|NBANDSO}} and {{TAG|NBANDSV}}) included in
the BSE Hamiltonian.


{{TAGBL|System}}  = Si
VASP tries to use sensible defaults, but it is highly recommended to check the
{{TAGBL|NBANDS}} = 64  ! large number of bands
{{FILE|OUTCAR}} file and make sure that the right bands are included. The tag
  {{TAGBL|ISMEAR}} = 0 ; {{TAGBL|SIGMA}} = 0.05
{{TAG|OMEGAMAX}} specifies the maximum excitation energy of included
{{TAGBL|LWAVE}} = .TRUE. ! update wavefunction
electron-hole pairs and the pairs with the one-electron energy difference beyond
{{TAGBL|ALGO}} = select GW flavor
this limit are not included in the BSE Hamiltonian. Hint: The convergence with
respect to {{TAG|NBANDSV}} and {{TAG|OMEGAMAX}} should be thoroughly checked as
the real part of the dielectric function, as well as the correlation energy, is
usually very sensitive to these values, whereas the imaginary part of the
dielectric function converges quickly.


Make certain that in the GW calculation, the flag  {{TAG|LWAVE}}=''.TRUE.'' is set, so that the {{TAG|WAVECAR}} file is updated to store the one-electron GW energies and possibly the one-electron orbitals as determined in scGW calculations.  
At the beginning of the BSE calculation, VASP will try to read the
For scGW runs
{{TAG|WFULL000}}?.tmp files and if these files are not found, VASP will read the
{{TAG|W000}}?.tmp files. For small isotropic bulk systems, the diagonal
approximation of the dielectric screening may be sufficient and yields results
very similar to the calculation with the full dielectric tensor
{{TAG|WFULL000}}?.tmp. Nevertheless, for molecules and atoms as well as
surfaces, the full screened Coulomb kernel is strictly required.


{{TAGBL|LOPTICS}} = .TRUE. ; {{TAGBL|LPEAD}} = .TRUE.
Both TDHF and BSE approaches write the calculated frequency-dependent dielectric
function as well as the excitonic energies in the {{TAG|vasprun.xml}} file.


should be added in order to update the {{TAG|WAVEDER}} using finite differences ({{TAG|LPEAD}}=.TRUE.). A specific GW type is selected with the {{TAG|ALGO}} tag in the fifth line. For more information see [[GW calculations]].
== Calculations beyond Tamm-Dancoff approximation ==
The TDHF and BSE calculations beyond the Tamm-Dancoff approximation (TDA){{cite|sander:prb:15}} can be performed by setting the
{{TAG|ANTIRES}} = 2 in the {{TAG|INCAR}} file


The actual BSE calculation is initiated using:
{{TAG|System}}    = Si
{{TAG|NBANDS}}    = same as in GW calculation
{{TAG|ISMEAR}}    = 0
{{TAG|SIGMA}}    = 0.05
{{TAG|ALGO}}      = BSE
{{TAG|ANTIRES}}  = 2  ! beyond Tamm-Dancoff
{{TAG|NBANDSO}}  = 4
{{TAG|NBANDSV}}  = 8


{{TAGBL|System}} = Si
The flag {{TAG|LORBITALREAL}} = .TRUE. forces VASP to make the orbitals <math>
{{TAGBL|NBANDS}} = same as in GW calculation
\phi({\bf r}) </math> real valued at the Gamma point as well as k-points at the
{{TAGBL|ISMEAR}} = 0 ; {{TAGBL|SIGMA}} = 0.05
edges of the Brillouin zone. This can improve the performance of BSE/TDHF
{{TAGBL|ALGO}} = BSE
calculations but it has to be used consistently with the ground-state calculation.
{{TAGBL|NBANDSO}} = 4 ; {{TAGBL|NBANDSV}} = 8 # determines how many occupied and virtual bands are used
{{TAGBL|OMEGAMAX}} = desired_maximum_excitation_energy


It is strongly recommended to set the flags {{TAG|NBANDSO}} and {{TAG|NBANDSV}}: in GW calculations usually a very large number of bands is included. For the BSE, it is advantageously to restrict the number of bands when solving the Cassida/BSE equations (the computational cost grows very steeply with {{TAG|NBANDSV}}). {{TAG|NBANDSO}} controls how many occupied bands (below the Fermi-level) are included,
== Calculations at finite wavevectors ==
whereas {{TAG|NBANDSV}} determines the number of virtual (unoccupied) bands included above the Fermi-level. VASP tries to use sensible defaults, but it is always wise to check the {{TAG|OUTCAR}} file whether these agree with what the user desires. The tag {{TAG|OMEGAMAX}} can be used to reduce the number of excitation pairs further. VASP will include only those valence and conduction band pairs,
VASP can also calculate the dielectric function at a <math>{\bf q}</math>-vector
that have an one-electron energy difference (excitation energy) smaller than the supplied threshold. Make sure to perform tests with respect to  {{TAG|NBANDSV}} and {{TAG|OMEGAMAX}}, the real part of
compatible with the k-point grid (finite-momentum excitons).  
the dielectric function as well as the correlation energy is usually very sensitive to these values, whereas the imaginary part of the dielectric function converges quickly with respect
to both parameters.
During the BSE calculations, VASP will first try to read the {{TAG|WFULL000}}?.tmp files and then, if these are missing, the {{TAG|W000}}?.tmp files. For small isotropic bulk systems, results with the more approximate files {{TAG|W000}}?.tmp are usually very similar to the results obtained using {{TAG|WFULL000}}?.tmp, however, for molecules and atoms as well as surfaces it is strictly required to use the full screened Coulomb kernel.


In both cases, {{TAG|ALGO}}=''TDHF'' and {{TAG|ALGO}}=''BSE'', the frequency dependent dielectric function, as well as the calculated pair-excitation energies can be found in
{{TAG|System}}      = Si
the file {{TAG|vasprun.xml}}.
{{TAG|NBANDS}}      = same as in GW calculation
{{TAG|ISMEAR}}      = 0
{{TAG|SIGMA}}       = 0.05
{{TAG|ALGO}}         = BSE
{{TAG|ANTIRES}}      = 2
{{TAG|KPOINT_BSE}}  = 3 -1 0 0  ! q-point index, three integers
{{TAG|LORBITALREAL}} = .TRUE.
{{TAG|NBANDSO}}      = 4
{{TAG|NBANDSV}}     = 8


== Calculations beyond Tamm Dancoff approximation ==
The tag {{TAG|KPOINT_BSE}} sets the <math>{\bf q}</math>-point and the shift at
The VASP BSE code can perform calculations beyond the Tamm Dancoff approximation (TDA) <ref name="sander2015"/>, by setting the  
which the dielectric function is calculated. The first integer specifies the
{{TAG|ANTIRES}} =2 in the {{TAG|INCAR}} file e.g.
index of the <math>{\bf q}</math>-point and the other three values shift the
provided <math>{\bf q}</math>-point by an arbitrary reciprocal vector <math> \bf
G</math>.  The reciprocal lattice vector is supplied by three integer values
<math> n_i</math> with <math> {\bf G}= n_1 {\bf G}_1+n_2 {\bf G}_2+n_3 {\bf
G}_3</math>. This feature is only supported as of VASP.6 (in VASP.5 the feature
can be enabled, but the results are erroneous).


{{TAGBL|System}}  = Si
== Scaling of the BSE equation ==
{{TAGBL|NBANDS}} = same as in GW calculation
The scaling of the BSE/Casida equation strongly limits its application to
{{TAGBL|ISMEAR}} = 0 ; {{TAGBL|SIGMA}} = 0.05
large systems. The main limiting factor is the diagonalization of the BSE/TDHF
{{TAGBL|ALGO}} = BSE
Hamiltonian. The rank of the Hamiltonian is
{{TAGBL|ANTIRES}} = 2  ! go beyond TDA
{{TAGBL|LORBITALREAL}} = .TRUE.
{{TAGBL|NBANDSO}} = 4 ; {{TAGBL|NBANDSV}} = 8


This also works for TDHF calculations. Furthermore, it is recommended to perform all preceding calculations using the flag {{TAG|LORBITALREAL}} =''.TRUE.''. This forces VASP to make the orbitals <math> \phi({\bf r}) </math> real valued at the Gamma point as well as k-points at the edge of the Brillouin zone.
<math>N_{\rm rank} = N_k\times N_c\times N_v</math>,


== Calculations at finite wave vectors ==
where <math>N_k</math> is
For {{TAG|ANTIRES}} =2, VASP can also calculate the dielectric function at a q-vector compatible
the number of k-points in the Brillouin zone and <math>N_c</math> and
with the k-point grid (finite momentum excitons).  
<math>N_v</math> are the number of conduction and valence bands correspondingly.
The diagonalization of the matrix scales cubically with the matrix rank, i.e.
<math>N_{\rm rank}^3</math>. Despite the fact that this matrix diagonalization is
usually the bottleneck for bigger systems, the construction of the BSE
Hamiltonian also scales unfavorably and can play a dominant role in big
systems, i.e.


{{TAGBL|System}}  = Si
<math>N_k\times N_q\times (N_v\times N_v\times N_G\times N_c\times N_c)</math>,
{{TAGBL|NBANDS}} = same as in GW calculation
{{TAGBL|ISMEAR}} = 0 ; {{TAGBL|SIGMA}} = 0.05
{{TAGBL|ALGO}} = BSE 
{{TAGBL|ANTIRES}} = 2
{{TAGBL|KPOINT_BSE}} = 3 -1 0 0  # k-point index, three integers
{{TAGBL|LORBITALREAL}} = .TRUE.
{{TAGBL|NBANDSO}} = 4 ; {{TAGBL|NBANDSV}} = 8


In the {{TAG|KPOINT_BSE}} line, four integer values must be supplied. The first one specifies the index of the q-point
where <math>N_q</math> is the number of q-points and <math>N_G</math> number of G-vectors.
at which the polarizability is supposed to be calculated. The other three
values allow to shift the supplied q-point by an arbitrary  reciprocal vector <math> \bf G</math>. The reciprocal lattice vector
is supplied by three integer values  <math> n_i</math> with <math> {\bf G}= n_1 {\bf G}_1+n_2 {\bf G}_2+n_3 {\bf G}_3</math>.
This feature is only supported in vasp.6 (in vasp.5 the feature can be selected, but the results are erroneous).


== Consistency checks ==
== Consistency tests ==
In the following we highlight three ways to check BSE results for consistency.  
In order to verify the results obtained in the BSE calculation, one can perform
a number of consistency tests.


First, the BSE code can be executed to reproduce the independent particle spectrum by adding the lines
=== First test: IP dielectric function ===
The BSE code can be used to reproduce the independent particle spectrum if the
RPA and the ladder diagrams are switched off


  {{TAGBL|LADDER}} = .FALSE. ; {{TAGBL|LHARTREE}} = .FALSE.
  {{TAG|LADDER}}   = .FALSE.  
  {{TAG|LHARTREE}} = .FALSE.


This should yield exactly the same dielectric function as the preceding calculation using the {{TAG| LOPTICS}} = .TRUE.
This should yield exactly the same dielectric function as the preceding
We recommend to set the complex shift manually in the BSE and preceding optics calculations e.g. {{TAG | CSHIFT}} = 0.4. This should yield absolutely identical results.
calculation with {{TAG| LOPTICS}} = .TRUE. We recommend to set the complex
shift manually in the BSE as well as the preceding optics calculations, e.g.
{{TAG | CSHIFT}} = 0.4. The dielectric functions produced in these calculations
should be identical.


Second, one can use the RPA/GW routines to compare the dielectric function at the level of the RPA. In the
=== Second test: RPA dielectric function ===
BSE calculation simply add
The RPA/GW dielectric function can be used to verify the correctness of the RPA
dielectric function calculated via the BSE algorithm.  The RPA dielectric
function in the BSE code can be calculated by switching off the ladder diagrams
while keeping the RPA terms, i.e., the BSE calculation should be performed with
the following tags


  {{TAGBL|ANTIRES}} = 2
  {{TAG|ANTIRES}}   = 2
  {{TAGBL|LADDER}} = .FALSE. ; {{TAGBL|LHARTREE}} = .TRUE.
  {{TAG|LHARTREE}} = .TRUE.
  {{TAGBL|CSHIFT}} = 0.4
  {{TAG|LADDER}}   = .FALSE.
  {{TAG|CSHIFT}}   = 0.4


and run the BSE calculations. The exactly same dielectric function can be obtained from the GW code
The same dielectric function should be obtained via the GW code by setting these
flags


  {{TAGBL|ALGO}} = CHI ; {{TAGBL|NOMEGA}} = 200
  {{TAG|ALGO}}     = CHI  
  {{TAGBL|CSHIFT}} = 0.4
{{TAG|NOMEGA}}   = 200
  {{TAG|CSHIFT}}   = 0.4


Just make sure that a large {{TAG|CSHIFT}} is selected (the GW code calculates the polarizability only at few
Make sure that a large {{TAG|CSHIFT}} is selected as the GW code calculates
frequency points). Note that the GW implementation does not use the TDA (so ANTIRES=2 is required
the polarizability at very few frequency points. Note that the GW
for the TDHF/BSE calculation). In our experience, the agreement can be made practically perfect provided sufficient frequency points are used and all available occupied and virtual orbitals are included in the BSE step.
code does not use the TDA, so {{TAG|ANTIRES}}=2 is required for the TDHF/BSE
calculation. In our experience, the agreement can be made practically perfect
provided sufficient frequency points are used and all available occupied and
virtual orbitals are included in the BSE step.


Third, the TDHF/ BSE code calculates the correlation energy via the plasmon equation.
=== Third test: RPA correlation energy ===
This can be compared with the [[ACFDT/RPA calculations|RPA contributions]] to the correlation energies for each q-point (see {{TAG|OUTCAR}} from
The BSE code can be used to calculate the correlation energy via the plasmon
{{TAG|ALGO}} = ''RPA''):
equation. This correlation energy can be compared with the [[ACFDT/RPA
calculations|RPA contributions]] to the correlation energies for each <math>{\bf
q}</math>-point, which can be found in the {{FILE|OUTCAR}} file of the ACFDT/RPA
calculation performed with {{TAG|ALGO}} = RPA:


  q-point correlation energy      -0.232563      0.000000
  q-point correlation energy      -0.232563      0.000000
Line 156: Line 259:
  q-point correlation energy      -0.176976      0.000000
  q-point correlation energy      -0.176976      0.000000


For instance, if the second q-point is selected in the BSE calculations
For instance, if the BSE calculation is performed at the second <math>{\bf q}</math>-point  


  {{TAGBL|ANTIRES}} = 2
  {{TAG|ANTIRES}}   = 2
  {{TAGBL|LADDER}} = .FALSE. ; {{TAGBL|LHARTREE}} = .TRUE.
  {{TAG|LADDER}}     = .FALSE.
  {{TAGBL|KPOINT_BSE}} = 2 0 0 0
  {{TAG|LHARTREE}}   = .TRUE.
  {{TAG|KPOINT_BSE}} = 2 0 0 0


exactly the same correlation energy should be found in the {{TAG|OUTCAR}} file of the BSE calculation:
the same correlation energy should be found in the corresponding {{FILE|OUTCAR}} file:


  plasmon correlation energy        -0.5716670828
  plasmon correlation energy        -0.5716670828


For exact compatibility, {{TAG | ENCUT}} and {{TAG | ENCUTGW}} should be set to the same
For exact compatibility, {{TAG|ENCUT}} and {{TAG|ENCUTGW}} should be set to the same
values in all calculations and the head and wings should not be included in the RPA calculations, e.g. rm {{TAG|WAVEDER}} prior to the RPA calculation (removal is not required in the BSE calculation).
values in all calculations, while the head and wings of the dielectric matrix should not be included in the
Furthermore, {{TAG|NBANDS}} must be identical to {{TAG|NBANDSO}} plus {{TAG|NBANDSV}}, so that the same number of excitation pairs are included
ACFDT/RPA calculations, i.e. remove the {{FILE|WAVEDER}} file prior to the ACFDT/RPA
in the calculations, and avoid setting {{TAG | OMEGAMAX}} in the BSE calculation.
calculation. In the BSE/RPA calculation removing the {{FILE|WAVEDER}} file is not
required.
Furthermore, {{TAG|NBANDS}} in the ACFDT/RPA calculation must be identical to
the number of included bands {{TAG|NBANDSO}} plus {{TAG|NBANDSV}} in the BSE/RPA, so that the same number of excitation pairs are included
in both calculations. Also, the {{TAG|OMEGAMAX}} tag in the BSE calculation should not be set.


== Common issues ==
== Common issues ==
If the dielectric matrix contains only zeros in the {{TAG|vasprun.xml}} file, the {{TAG|WAVEDER}} file was not read or is incompatible to the {{TAG|WAVEDER}} file. This requires a recalculation of the the {{TAG|WAVEDER}} file. This can be achieved even after GW calculations using the following intermediate step:
If the dielectric matrix contains only zeros in the {{FILE|vasprun.xml}} file,
the {{FILE|WAVEDER}} file was not read or is incompatible to the {{FILE|WAVEDER}}
file. This requires a recalculation of the {{FILE|WAVEDER}} file. This can be
achieved even after GW calculations using the following intermediate step:


  {{TAGBL|ALGO}} = Nothing
  {{TAG|ALGO}}     = Nothing
  {{TAGBL|LOPTICS}} = .TRUE. ; {{TAGBL|LPEAD}} = .TRUE.
  {{TAG|LOPTICS}}   = .TRUE.
{{TAG|LPEAD}}     = .TRUE.


The flag {{TAG|LPEAD}}=''.TRUE.'' is strictly required and enforces a "numerical" differentiation of the orbitals with respect to <math>k</math>. Calculating the derivatives of the orbitals with respect to <math>k</math> analytically is not possible at this point, since the Hamiltonian that was used to determine the orbitals is unknown to VASP.
The flag {{TAG|LPEAD}} = .TRUE. is strictly required and enforces a
"numerical" differentiation of the orbitals with respect to <math>k</math>.
Calculating the derivatives of the orbitals with respect to <math>k</math>
analytically is not possible at this point, since the Hamiltonian that was used
to determine the orbitals is unknown to VASP.


== Related Tags and Sections ==
== Related tags and articles ==
{{TAG|ALGO}},
{{TAG|ALGO}},
{{TAG|LOPTICS}},
{{TAG|LOPTICS}},
Line 188: Line 304:
{{TAG|NBANDSV}},
{{TAG|NBANDSV}},
{{TAG|NBANDSO}},
{{TAG|NBANDSO}},
{{TAG|OMEGAMAX}}
{{TAG|OMEGAMAX}},
 
{{TAG|LFXC}},
 
{{TAG|ANTIRES}}
See also: {{sc|BSE|Examples|Examples that use this tag}}, [[Time Evolution]]


== References ==
== References ==
<references>
<references/>
<ref name="albrecht1998">[http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.80.4510 S. Albrecht, L. Reining, R. Del Sole, and G. Onida, Phys. Rev. Lett. 80, 4510 (1998).]</ref>
<ref name="rohlfing1998">[http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.81.2312 M. Rohlfing, S.G. Louie, Phys. Rev. Lett. 81, 2312 (1998).]</ref>
 
<ref name="sander2015">[https://doi.org/10.1103/PhysRevB.92.045209 S. Tobias, E. Maggio, and G. Kresse, Phys. Rev. B 92.4 (2015).]</ref>
</references>
 
 
 
----
----


[[Category:Many-Body Perturbation Theory]][[Category:BSE]][[Category:Howto]]
[[Category:Many-Body Perturbation Theory]][[Category:BSE]][[Category:Howto]]

Revision as of 08:00, 7 April 2022

VASP offers a powerful module for solving time-dependent DFT (TD-DFT) and time-dependent Hartree-Fock equations (TDHF) (the Casida equation) or the Bethe-Salpeter (BSE) equation[1][2]. These approaches are used for obtaining the frequency-dependent dielectric function with the excitonic effects and can be based on the ground-state electronic structure in the DFT, hybrid-functional or GW approximations.

Solving Bethe-Salpeter and Casida equations

To take into account the excitonic effects or the electron-hole interaction, one has to use approximations beyond the independent-particle (IP) and the random-phase approximations (RPA). In VASP, it is done via the algorithm selected by ALGO=BSE or ALGO=TDHF, which essentially solves the same equations (Casida/Bethe-Salpeter) but mainly differ in the way the screening of the Coulomb potential is treated. The TDHF approach uses the exact-correlation kernel , whereas BSE requires the from a preceding GW calculation. Thus, in order to perform TDHF or BSE calculations, one has to provide the ground-state wavefunctions (WAVECAR) and the derivatives of the orbitals with respect to (WAVEDER). In addition, the BSE calculation requires files storing the screened Coulomb kernel produced in a GW calculation, i.e. WXXXX.tmp.

Both TDHF and BSE approaches require a preceding ground-state calculation, however, the TDHF does not need the preceding GW and can be performed with the DFT or hybrid-functional orbitals and energies.

Time-dependent Hartree-Fock

The TDHF calculations can be performed in two steps: the ground-state calculation and the optical absorption calculation. For example, optical absorption of bulk Si can be performed with a hybrid-functional electronic structure, where the number of bands is increased to include the relevant conduction bands:

System    = Si
ISMEAR    = 0 
SIGMA     = 0.05
NBANDS    = 16      ! or any larger desired value
ALGO      = D       ! Damped algorithm often required for HF type calculations, ALGO = Normal might work as well
LHFCALC   = .TRUE. 
AEXX      = 0.3 
HFSCREEN  = 0.2
LOPTICS   = .TRUE.  ! can also be done in an additional intermediate step

In the second step, the dielectric function is evaluated by solving the Casida equation

System    = Si
ISMEAR    = 0 
SIGMA     = 0.05
NBANDS    = 16     
ALGO      = TDHF
AEXX      = 0.3 
HFSCREEN  = 0.2

THDF/BSE calculations can be performed for non-spin-polarized, spin-polarized, as well as noncollinear (spin-orbit) cases. There is, however, one caveat. The local exchange-correlation kernel is approximated by the density-density part only. This makes predictions for spin-polarized systems less accurate than for non-spin-polarized systems.

Time-dependent DFT

Within the TD-DFT approximation, the Fock exchange is not included in the exchange-correlation kernel and the ladder diagrams are not taken into account. Hence, only the local contributions in are present

System    = Si
ISMEAR    = 0 
SIGMA     = 0.05
NBANDS    = 16     
ALGO      = TDHF
LFXC      = .TRUE.
AEXX      = 0.0 

Since the ladder diagrams are not included in the TD-DFT calculation, the resulting dielectric function lacks the excitonic effects.

Warning: Currently, in the local , the correlation contribution is not taken into account and only the exchange terms are included in the LDA approximation.

Bethe-Salpeter equation

The BSE calculations require a preceding GW step to determine the screened Coulomb kernel . The details on GW calculations can be found in the practical guide to GW calculations. Here, we note that during the GW calculation, VASP writes this kernel into the following files

W0001.tmp, W0002.tmp, ..., W{NKPTS}.tmp

and

WFULL0001.tmp, WFULL0002.tmp, ..., WFULL{NKPTS}.tmp.

The files W000?.tmp store only the diagonal terms of the kernel and are fairly small, whereas the files WFULL000?.tmp store the full matrix. It is important to make sure in the GW step that the flag LWAVE = .TRUE. is set, so that the WAVECAR stores the one-electron GW energies and the one-electron orbitals, if the GW calculation is self-consistent.

For the self-consistent GW calculations the following flags should be added

LOPTICS   = .TRUE. 
LPEAD     = .TRUE.

in order to update the WAVEDER using finite differences (LPEAD = .TRUE.). The type of GW calculation is selected with the ALGO tag, which is discussed in great detail in the practical guide to GW calculations.

Once the GW step is completed, the BSE calculation can be performed using the following setup

System    = Si
NBANDS    = same as in GW calculation
ISMEAR    = 0
SIGMA     = 0.05
ALGO      = BSE
NBANDSO   = 4       ! determines how many occupied bands are used
NBANDSV   = 8       ! determines how many unoccupied (virtual) bands are used
OMEGAMAX  = maximum excitation energy 

Considering that quasiparticle energies in GW converge very slowly with the number of unoccupied bands and require large NBANDS, the number of bands included in the BSE calculation should be restricted explicitly by setting the occupied and unoccupied bands (NBANDSO and NBANDSV) included in the BSE Hamiltonian.

VASP tries to use sensible defaults, but it is highly recommended to check the OUTCAR file and make sure that the right bands are included. The tag OMEGAMAX specifies the maximum excitation energy of included electron-hole pairs and the pairs with the one-electron energy difference beyond this limit are not included in the BSE Hamiltonian. Hint: The convergence with respect to NBANDSV and OMEGAMAX should be thoroughly checked as the real part of the dielectric function, as well as the correlation energy, is usually very sensitive to these values, whereas the imaginary part of the dielectric function converges quickly.

At the beginning of the BSE calculation, VASP will try to read the WFULL000?.tmp files and if these files are not found, VASP will read the W000?.tmp files. For small isotropic bulk systems, the diagonal approximation of the dielectric screening may be sufficient and yields results very similar to the calculation with the full dielectric tensor WFULL000?.tmp. Nevertheless, for molecules and atoms as well as surfaces, the full screened Coulomb kernel is strictly required.

Both TDHF and BSE approaches write the calculated frequency-dependent dielectric function as well as the excitonic energies in the vasprun.xml file.

Calculations beyond Tamm-Dancoff approximation

The TDHF and BSE calculations beyond the Tamm-Dancoff approximation (TDA)[3] can be performed by setting the ANTIRES = 2 in the INCAR file

System    = Si
NBANDS    = same as in GW calculation
ISMEAR    = 0
SIGMA     = 0.05
ALGO      = BSE  
ANTIRES   = 2   ! beyond Tamm-Dancoff 
NBANDSO   = 4 
NBANDSV   = 8

The flag LORBITALREAL = .TRUE. forces VASP to make the orbitals real valued at the Gamma point as well as k-points at the edges of the Brillouin zone. This can improve the performance of BSE/TDHF calculations but it has to be used consistently with the ground-state calculation.

Calculations at finite wavevectors

VASP can also calculate the dielectric function at a -vector compatible with the k-point grid (finite-momentum excitons).

System       = Si
NBANDS       = same as in GW calculation
ISMEAR       = 0 
SIGMA        = 0.05
ALGO         = BSE  
ANTIRES      = 2 
KPOINT_BSE   = 3 -1 0 0  ! q-point index,  three integers
LORBITALREAL = .TRUE.
NBANDSO      = 4 
NBANDSV      = 8

The tag KPOINT_BSE sets the -point and the shift at which the dielectric function is calculated. The first integer specifies the index of the -point and the other three values shift the provided -point by an arbitrary reciprocal vector . The reciprocal lattice vector is supplied by three integer values with . This feature is only supported as of VASP.6 (in VASP.5 the feature can be enabled, but the results are erroneous).

Scaling of the BSE equation

The scaling of the BSE/Casida equation strongly limits its application to large systems. The main limiting factor is the diagonalization of the BSE/TDHF Hamiltonian. The rank of the Hamiltonian is

,

where is the number of k-points in the Brillouin zone and and are the number of conduction and valence bands correspondingly. The diagonalization of the matrix scales cubically with the matrix rank, i.e. . Despite the fact that this matrix diagonalization is usually the bottleneck for bigger systems, the construction of the BSE Hamiltonian also scales unfavorably and can play a dominant role in big systems, i.e.

,

where is the number of q-points and number of G-vectors.

Consistency tests

In order to verify the results obtained in the BSE calculation, one can perform a number of consistency tests.

First test: IP dielectric function

The BSE code can be used to reproduce the independent particle spectrum if the RPA and the ladder diagrams are switched off

LADDER   = .FALSE. 
LHARTREE = .FALSE.

This should yield exactly the same dielectric function as the preceding calculation with LOPTICS = .TRUE. We recommend to set the complex shift manually in the BSE as well as the preceding optics calculations, e.g. CSHIFT = 0.4. The dielectric functions produced in these calculations should be identical.

Second test: RPA dielectric function

The RPA/GW dielectric function can be used to verify the correctness of the RPA dielectric function calculated via the BSE algorithm. The RPA dielectric function in the BSE code can be calculated by switching off the ladder diagrams while keeping the RPA terms, i.e., the BSE calculation should be performed with the following tags

ANTIRES   = 2
LHARTREE  = .TRUE.
LADDER    = .FALSE.
CSHIFT    = 0.4

The same dielectric function should be obtained via the GW code by setting these flags

ALGO      = CHI 
NOMEGA    = 200
CSHIFT    = 0.4

Make sure that a large CSHIFT is selected as the GW code calculates the polarizability at very few frequency points. Note that the GW code does not use the TDA, so ANTIRES=2 is required for the TDHF/BSE calculation. In our experience, the agreement can be made practically perfect provided sufficient frequency points are used and all available occupied and virtual orbitals are included in the BSE step.

Third test: RPA correlation energy

The BSE code can be used to calculate the correlation energy via the plasmon equation. This correlation energy can be compared with the [[ACFDT/RPA calculations|RPA contributions]] to the correlation energies for each -point, which can be found in the OUTCAR file of the ACFDT/RPA calculation performed with ALGO = RPA:

q-point correlation energy      -0.232563      0.000000
q-point correlation energy      -0.571667      0.000000
q-point correlation energy      -0.176976      0.000000

For instance, if the BSE calculation is performed at the second -point

ANTIRES    = 2
LADDER     = .FALSE.
LHARTREE   = .TRUE.
KPOINT_BSE = 2 0 0 0

the same correlation energy should be found in the corresponding OUTCAR file:

plasmon correlation energy        -0.5716670828

For exact compatibility, ENCUT and ENCUTGW should be set to the same values in all calculations, while the head and wings of the dielectric matrix should not be included in the ACFDT/RPA calculations, i.e. remove the WAVEDER file prior to the ACFDT/RPA calculation. In the BSE/RPA calculation removing the WAVEDER file is not required. Furthermore, NBANDS in the ACFDT/RPA calculation must be identical to the number of included bands NBANDSO plus NBANDSV in the BSE/RPA, so that the same number of excitation pairs are included in both calculations. Also, the OMEGAMAX tag in the BSE calculation should not be set.

Common issues

If the dielectric matrix contains only zeros in the vasprun.xml file, the WAVEDER file was not read or is incompatible to the WAVEDER file. This requires a recalculation of the WAVEDER file. This can be achieved even after GW calculations using the following intermediate step:

ALGO      = Nothing
LOPTICS   = .TRUE.
LPEAD     = .TRUE.

The flag LPEAD = .TRUE. is strictly required and enforces a "numerical" differentiation of the orbitals with respect to . Calculating the derivatives of the orbitals with respect to analytically is not possible at this point, since the Hamiltonian that was used to determine the orbitals is unknown to VASP.

Related tags and articles

ALGO, LOPTICS, LHFCALC, LRPA, LADDER, LHARTREE, NBANDSV, NBANDSO, OMEGAMAX, LFXC, ANTIRES

References