Bethe-Salpeter-equations calculations: Difference between revisions
No edit summary |
|||
(20 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
VASP offers a powerful module for solving | VASP offers a powerful module for solving the Bethe-Salpeter (BSE) equation{{cite|albrecht:prl:98}}{{cite|rohlfing:prl:98}}. The BSE can be 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. | ||
Bethe-Salpeter (BSE) equation{{cite|albrecht:prl:98}}{{cite|rohlfing:prl:98}}. | |||
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__ | ||
== Solving Bethe-Salpeter | == Solving Bethe-Salpeter equation == | ||
To take into account the excitonic effects or the electron-hole interaction, | 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/ACFDT: Correlation energy in the Random Phase Approximation|RPA]]). In VASP, it is done via the algorithm selected by {{TAG|ALGO}} = BSE. These essentially solves the same equations (Casida/Bethe-Salpeter) but 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 orbitals ({{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}}. | ||
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 | |||
(Casida/Bethe-Salpeter) but | |||
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 | |||
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| | |||
In summary, 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. | |||
however, the TDHF does not need the preceding ''GW'' and can be | |||
performed with the DFT or hybrid-functional orbitals and energies. | |||
== Bethe-Salpeter equation calculation == | |||
The BSE calculations require a preceding ''GW'' step to determine the screened Coulomb kernel <math>W_{GG'}(q,\omega \to 0 )</math>. The details on ''GW'' calculations can be found in the practical guide to [[Practical guide to GW calculations|''GW'' ]] calculations. Here, we note that during the ''GW'' calculation, VASP writes this kernel into the following files | |||
== Bethe-Salpeter equation == | |||
The BSE calculations require a preceding ''GW'' step to determine the screened | |||
Coulomb kernel <math>W_{GG'}(q,\omega \to 0 )</math>. 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 | W0001.tmp, W0002.tmp, ..., W{NKPTS}.tmp | ||
Line 90: | Line 17: | ||
WFULL0001.tmp, WFULL0002.tmp, ..., WFULL{NKPTS}.tmp. | WFULL0001.tmp, WFULL0002.tmp, ..., WFULL{NKPTS}.tmp. | ||
The files {{FILE| | The files {{FILE|Wxxxx.tmp}} store only the diagonal terms of the kernel and are fairly small, whereas the files {{TAG|WFULLxxxx.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. | ||
fairly small, whereas the files {{TAG| | |||
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. | |||
For the self-consistent ''GW'' calculations the following flags should be added | For the self-consistent ''GW'' calculations the following flags should be added | ||
Line 101: | Line 24: | ||
{{TAG|LPEAD}} = .TRUE. | {{TAG|LPEAD}} = .TRUE. | ||
in order to update the {{FILE|WAVEDER}} using finite differences ({{TAG|LPEAD}} | 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. | ||
= .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. | |||
Once the ''GW'' step is completed, the BSE calculation can be performed using the following setup | Once the ''GW'' step is completed, the BSE calculation can be performed using the following setup | ||
Line 118: | Line 39: | ||
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. | 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. | ||
VASP tries to use sensible defaults, but it is highly recommended to check the | VASP tries to use sensible defaults, but it is highly recommended to check the {{FILE|OUTCAR}} file and make sure that the right bands are included. The tag {{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 {{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. | ||
{{FILE|OUTCAR}} file and make sure that the right bands are included. The tag | |||
{{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 {{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. | |||
At the beginning of the BSE calculation, VASP will try to read the | At the beginning of the BSE calculation, VASP will try to read the {{FILE|WFULLxxxx.tmp}} files and if these files are not found, VASP will read the {{FILE|Wxxxx.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|WFULLxxxx.tmp}}. Nevertheless, for molecules and atoms as well as surfaces, the full-screened Coulomb kernel is strictly required. | ||
{{ | |||
{{ | |||
approximation of the dielectric screening may be sufficient and yields results | |||
very similar to the calculation with the full dielectric tensor | |||
{{TAG| | |||
surfaces, the full screened Coulomb kernel is strictly required. | |||
Both TDHF and BSE approaches write the calculated frequency-dependent dielectric | Both TDHF and BSE approaches write the calculated frequency-dependent dielectric function as well as the excitonic energies in the {{TAG|vasprun.xml}} file. | ||
function as well as the excitonic energies in the {{TAG|vasprun.xml}} file. | |||
== | == Model BSE (mBSE) == | ||
BSE calculations can be performed using a model dielectric function{{cite|bokdam:scr:2016}}{{cite|tal:prr:2020}}. In this approach the calculation of the screened Coulomb potential is not required. Instead, the model dielectric function can be used to describe the screening of the Coulomb potential by setting the tag {{TAG|LMODELHF}} with parameters {{TAG|AEXX}} and {{TAG|HFSCREEN}}. | |||
{{TAG| | |||
Model BSE calculation can be performed the following steps: | |||
# ground-state calculation | |||
# GW calculation (optional in model BSE calculation) | |||
# optical absorption calculation via model BSE | |||
For example, an optical absorption calculation of bulk Si can be performed using a model dielectric function as described in Ref. {{cite|tal:prr:2020}}. | |||
{{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|LMODELHF}} = .TRUE. | |||
{{TAG|AEXX}} = 0.083 | |||
{{TAG|HFSCREEN}} = 1.22 | |||
{{TAG|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 | |||
{{TAG|SYSTEM}} = Si | {{TAG|SYSTEM}} = Si | ||
{{TAG|ISMEAR}} = 0 | |||
{{TAG|ISMEAR}} = 0 | |||
{{TAG|SIGMA}} = 0.05 | {{TAG|SIGMA}} = 0.05 | ||
{{TAG|ALGO}} = BSE | {{TAG|NBANDS}} = 16 | ||
{{TAG|ANTIRES}} | {{TAG|ALGO}} = TDHF | ||
{{TAG|NBANDSO}} | {{TAG|IBSE}} = 0 | ||
{{TAG|NBANDSV}} | {{TAG|NBANDSO}} = 4 ! number of occupied bands | ||
{{TAG|NBANDSV}} = 8 ! number of unoccupied bands | |||
{{TAG|LHARTREE}} = .TRUE. | |||
{{TAG|LADDER}} = .TRUE. | |||
{{TAG|LFXC}} = .FALSE. ! local xc kernel is disabled in mBSE | |||
{{TAG|LMODELHF}} = .TRUE. | |||
{{TAG|AEXX}} = 0.083 | |||
{{TAG|HFSCREEN}} = 1.22 | |||
== 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 | |||
{{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|LORBITALREAL}} = .TRUE. | |||
{{TAG|NBANDSO}} = 4 | |||
{{TAG|NBANDSV}} = 8 | |||
The flag {{TAG|LORBITALREAL}} = .TRUE. forces VASP to make the orbitals <math> | The flag {{TAG|LORBITALREAL}} = .TRUE. forces VASP to make the orbitals <math> \phi({\bf r}) </math> 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 should be used consistently with the ground-state calculation. | ||
\phi({\bf r}) </math> 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 should be used consistently with the ground-state calculation. | |||
== Calculations at finite wavevectors == | == Calculations at finite wavevectors == | ||
VASP can also calculate the dielectric function at a <math>{\bf q}</math>-vector | VASP can also calculate the dielectric function at a <math>{\bf q}</math>-vector compatible with the k-point grid (finite-momentum excitons). | ||
compatible with the k-point grid (finite-momentum excitons). | |||
{{TAG|SYSTEM}} = Si | {{TAG|SYSTEM}} = Si | ||
Line 172: | Line 112: | ||
{{TAG|NBANDSV}} = 8 | {{TAG|NBANDSV}} = 8 | ||
The tag {{TAG|KPOINT_BSE}} sets the <math>{\bf q}</math>-point and the shift at | The tag {{TAG|KPOINT_BSE}} sets the <math>{\bf q}</math>-point and the shift at which the dielectric function is calculated. The first integer specifies the 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). | ||
which the dielectric function is calculated. The first integer specifies the | |||
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) | |||
== Consistency tests == | == Consistency tests == | ||
In order to verify the results obtained in the BSE calculation, one can perform | In order to verify the results obtained in the BSE calculation, one can perform a number of consistency tests. | ||
a number of consistency tests. | |||
=== First test: IP dielectric function === | === First test: IP dielectric function === | ||
The BSE code can be used to reproduce the independent particle spectrum if the | The BSE code can be used to reproduce the independent particle spectrum if the RPA and the ladder diagrams are switched off | ||
RPA and the ladder diagrams are switched off | |||
{{TAG|LADDER}} = .FALSE. | {{TAG|LADDER}} = .FALSE. | ||
{{TAG|LHARTREE}} = .FALSE. | {{TAG|LHARTREE}} = .FALSE. | ||
This should yield exactly the same dielectric function as the preceding | This should yield exactly the same dielectric function as the preceding 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. | ||
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 test: RPA dielectric function === | === Second test: RPA dielectric function === | ||
The RPA/''GW'' dielectric function can be used to verify the correctness of the RPA | 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 | ||
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 | |||
{{TAG|ANTIRES}} = 2 | {{TAG|ANTIRES}} = 2 | ||
Line 230: | Line 133: | ||
{{TAG|CSHIFT}} = 0.4 | {{TAG|CSHIFT}} = 0.4 | ||
The same dielectric function should be obtained via the ''GW'' code by setting these | The same dielectric function should be obtained via the ''GW'' code by setting these flags | ||
flags | |||
{{TAG|ALGO}} = CHI | {{TAG|ALGO}} = CHI | ||
Line 237: | Line 139: | ||
{{TAG|CSHIFT}} = 0.4 | {{TAG|CSHIFT}} = 0.4 | ||
Make sure that a large {{TAG|CSHIFT}} is selected as the ''GW'' code calculates | Make sure that a large {{TAG|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 {{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. | ||
the polarizability at very few frequency points. Note that the ''GW'' | |||
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 test: RPA correlation energy === | === Third test: RPA correlation energy === | ||
The BSE code can be used to calculate the correlation energy via the plasmon | 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 <math>{\bf q}</math>-point, which can be found in the {{FILE|OUTCAR}} file of the ACFDT/RPA calculation performed with {{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 266: | Line 159: | ||
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, while the head and wings of the dielectric matrix should not be included in the ACFDT/RPA calculations, i.e., remove the {{FILE|WAVEDER}} file prior to the ACFDT/RPA 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. | ||
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 {{FILE|WAVEDER}} file prior to the ACFDT/RPA | |||
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 {{FILE|vasprun.xml}} file, | 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: | ||
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: | |||
{{TAG|ALGO}} = Nothing | {{TAG|ALGO}} = Nothing | ||
Line 285: | Line 168: | ||
{{TAG|LPEAD}} = .TRUE. | {{TAG|LPEAD}} = .TRUE. | ||
The flag {{TAG|LPEAD}} = .TRUE. is strictly required and enforces a | 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. | ||
"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 articles == | == Related tags and articles == | ||
{{TAG|ALGO}}, | {{TAG|ALGO}}, | ||
{{TAG|LOPTICS}}, | {{TAG|LOPTICS}}, | ||
{{TAG|LPEAD}}, | |||
{{TAG|LHFCALC}}, | {{TAG|LHFCALC}}, | ||
{{TAG|LRPA}}, | {{TAG|LRPA}}, | ||
Line 302: | Line 182: | ||
{{TAG|OMEGAMAX}}, | {{TAG|OMEGAMAX}}, | ||
{{TAG|LFXC}}, | {{TAG|LFXC}}, | ||
{{TAG|ANTIRES}} | {{TAG|ANTIRES}}, | ||
{{TAG|NBSEEIG}}, | |||
{{FILE|BSEFATBAND}} | |||
== References == | == References == |
Latest revision as of 17:34, 7 February 2024
VASP offers a powerful module for solving the Bethe-Salpeter (BSE) equation[1][2]. The BSE can be 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 equation
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. These essentially solves the same equations (Casida/Bethe-Salpeter) but 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 orbitals (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.
In summary, 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.
Bethe-Salpeter equation calculation
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 Wxxxx.tmp store only the diagonal terms of the kernel and are fairly small, whereas the files WFULLxxxx.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 = desired_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 WFULLxxxx.tmp files and if these files are not found, VASP will read the Wxxxx.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 WFULLxxxx.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.
Model BSE (mBSE)
BSE calculations can be performed using a model dielectric function[3][4]. In this approach the calculation of the screened Coulomb potential is not required. Instead, the model dielectric function can be used to describe the screening of the Coulomb potential by setting the tag LMODELHF with parameters AEXX and HFSCREEN.
Model BSE calculation can be performed the following steps:
- ground-state calculation
- GW calculation (optional in model BSE calculation)
- optical absorption calculation via model BSE
For example, an optical absorption calculation of bulk Si can be performed using a model dielectric function as described in Ref. [4].
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. LMODELHF = .TRUE. AEXX = 0.083 HFSCREEN = 1.22 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 IBSE = 0 NBANDSO = 4 ! number of occupied bands NBANDSV = 8 ! number of unoccupied bands LHARTREE = .TRUE. LADDER = .TRUE. LFXC = .FALSE. ! local xc kernel is disabled in mBSE LMODELHF = .TRUE. AEXX = 0.083 HFSCREEN = 1.22
Calculations beyond Tamm-Dancoff approximation
The TDHF and BSE calculations beyond the Tamm-Dancoff approximation (TDA)[5] 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 LORBITALREAL = .TRUE. 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 should 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).
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 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, LPEAD, LHFCALC, LRPA, LADDER, LHARTREE, NBANDSV, NBANDSO, OMEGAMAX, LFXC, ANTIRES, NBSEEIG, BSEFATBAND
References
- ↑ S. Albrecht, L. Reining, R. Del Sole, and G. Onida, Phys. Rev. Lett. 80, 4510-4513 (1998).
- ↑ M. Rohlfing and S. G. Louie, Phys. Rev. Lett. 81, 2312-2315 (1998).
- ↑ M. Bokdam, T. Sander, A. Stroppa, S. Picozzi, D. D. Sarma, C. Franchini, and G. Kresse, Sci. Rep. 6, 28618 (2016).
- ↑ a b A. Tal, P. Liu, G. Kresse, A. Pasquarello, Accurate optical spectra through time-dependent density functional theory based on screening-dependent hybrid functionals, Phys. Rev. Research 2, 032019 (2020)
- ↑ T. Sander, E. Maggio, and G. Kresse, Beyond the Tamm-Dancoff approximation for extended systems using exact diagonalization, Phys. Rev. B 92, 045209 (2015).