Category:Bethe-Salpeter equations

From VASP Wiki
Revision as of 13:03, 18 October 2024 by Tal (talk | contribs)

The formalism of the Bethe-Salpeter equation (BSE) allows for calculating the polarizability with the electron-hole interaction and constitutes the state of the art for calculating absorption spectra in solids.

Theory

Bethe-Salpeter equation

In the BSE, the excitation energies correspond to the eigenvalues of the following linear problem[1]


The matrices and describe the resonant and anti-resonant transitions between the occupied and unoccupied states

The energies and orbitals of these states are usually obtained in a calculation, but DFT and Hybrid functional calculations can be used as well. The electron-electron interaction and electron-hole interaction are described via the bare Coulomb and the screened potential .

The coupling between resonant and anti-resonant terms is described via terms and

Due to the presence of this coupling, the Bethe-Salpeter Hamiltonian is non-Hermitian.

Tamm-Dancoff approximation

A common approximation to the BSE is the Tamm-Dancoff approximation (TDA), which neglects the coupling between resonant and anti-resonant terms, i.e., and . Hence, the TDA reduces the BSE to a Hermitian problem

In reciprocal space, the matrix is written as

where is the cell volume, is the bare Coulomb potential without the long-range part

and the screened Coulomb potential

Here, the dielectric function describes the screening in within the random-phase approximation (RPA)

Although the dielectric function is frequency-dependent, the static approximation is considered a standard for practical BSE calculations.


Scaling

The scaling of the BSE equation strongly limits its application for large systems. The main limiting factor is the diagonalization of the BSE 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, respectively. 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.

Exact diagonalization

The diagonalization of the BSE Hamiltonian can be perform using various eigensolvers provided in ScaLAPACK, ELPA, and cuSolver libraries. The advantage of this approach is that the eigenvectors can be directly obtained and used for the analysis of the excitons. Using the eigenvalues and eigenvectors of the BSE Hamiltonian, the macroscopic dielectric which accounts for the excitonic effects can be found

The following features are currently supported:

Time evolution

Alternatively, it is possible to use the time-evolution algorithm which applies a short Dirac delta pulse of electric field and then follows the evolution of the dipole moments. The dielectric function is found via a Fourier transform [2]

,

where and are the dipole moments.

The solution found this way is strictly equivalent to the same solution as the exact diagonalization and can be used for obtaining the absorption spectrum, but does not yield the eigenvectors, which can be limiting for the analysis of the excitons. The advantage of this approach is the quadratic scaling with the size of the BSE Hamiltonian .

The time-evolution algorithm can be selected by setting IBSE = 1 in a BSE calculation. The required number of steps in the time-evolution calculation depends on the broadening CSHIFT and the maximum energy OMEGAMAX. The precision can be selected via tag BSEPREC.

Mind: The required number of steps does not depend on the size of the Hamiltonian

The following features are currently supported:

  • Calculating the dielectric function
  • Calculations beyond the Tamm-Dancoff approximation

Performing BSE calculations on GPU

As of VASP 6.5, the BSE and TDDFT (Casida) calculations can be fully run on NVIDIA GPUs. To be able to offload the BSE calculations to GPUs one has to compile VASP with the cuSOLVERMp and cuBLASMp libraries provided with NVHPC-SDK 24.7 or newer. The easiest way to add these libraries in your environment is loading the NVHPC-SDK module:

module load nvhpc-hpcx-cuda12/24.9

To enable these libraries in VASP, make sure to include the following lines in your makefile.include

CPP_OPTIONS+= -DCUSOLVERMP -DCUBLASMP
LLIBS      += -cudalib=cusolvermp,cublasmp -lnvhpcwrapcal

To be able to perform the BSE calculation on GPUs, VASP needs to store the full BSE Hamiltonian in the GPU memory, which is often the limiting factor. The memory required to store the BSE Hamiltonian can be estimated as in Gb for ANTIRES = 0. In the case of exact diagonalization IBSE = 2, the eigensolver requires an additional scratch space.

Mind: In NVHPC-SDEK 24.7 one has to set the following variable to avoid hangups in the eigensolver export CAL_UCC_TLS=^nccl

How to

  • Practical guide for solving the Bethe-Salpeter equation via diagonalization BSE calculations
  • Practical guide for solving the Casida equation via diagonalization TDDFT calculations

References